[
  {
    "path": "AutoEncoder/cfg/deepfashion3d/deepfashion3d.yaml",
    "content": "dset:\n  train_ids_file: none\n  test_ids_file: none\n  root: ./dataset/Deepfashion3D/udfs\n  split: \"train\"\n  name: \"deepfashion3d\"\n  exp_name: \"deepfashion3d\"\n\nnum_points_pcd: 10_000\nudf_max_dist: 0.1\nlatent_size: 32\nnum_points_forward: 20_000\n\ndecoder:\n  hidden_dim: 512\n  num_hidden_layers: 5\n\ntrain_bs: 8\nval_bs: 8\nlr: 1e-4\nnum_epochs: 6_000\n\nwatertight: False\nresolution: 512\n\nlog_dir: ./output/deepfashion3d"
  },
  {
    "path": "AutoEncoder/cfg/pix3d/pix3d.yaml",
    "content": "dset:\n  train_ids_file: none\n  test_ids_file: none\n  root: ./Dataset/pix3d/udfs\n  split: \"train\"\n  name: \"pix3d\"\n  exp_name: \"pix3d\"\n\nnum_points_pcd: 10_000\nudf_max_dist: 0.1\nlatent_size: 64\nnum_points_forward: 20_000\n\ndecoder:\n  hidden_dim: 512\n  num_hidden_layers: 5\n\ntrain_bs: 2\nval_bs: 8\nlr: 1e-4\nnum_epochs: 20000\n\nwatertight: False\nresolution: 512\n\nlog_dir: ./outputs/pix3d\n\n"
  },
  {
    "path": "AutoEncoder/cfg/shapenet/text2shape.yaml",
    "content": "dset:\n  train_ids_file: none\n  test_ids_file: none\n  root: ./dataset/ShapeNet/udfs\n  name: text2shape\n  split: train\n  exp_name: text2shape\n\nnum_points_pcd: 10_000\nudf_max_dist: 0.1\nlatent_size: 64\nnum_points_forward: 20_000\n\ndecoder:\n  hidden_dim: 512\n  num_hidden_layers: 5\n\n\ntrain_bs: 6\nval_bs: 8\nlr: 1e-4\nnum_epochs: 10000\n\nwatertight: True\nresolution: 512\n\nlog_dir: ./outputs/shapenet"
  },
  {
    "path": "AutoEncoder/data/__init__.py",
    "content": ""
  },
  {
    "path": "AutoEncoder/data/dataset.py",
    "content": "import pickle\nfrom pathlib import Path\nfrom typing import Tuple\n\nimport numpy as np\nimport torch\nfrom torch import Tensor\nfrom torch.utils.data import Dataset\nimport os\n\nT_ITEM = Tuple[int, str, Tensor, Tensor, Tensor, Tensor]\n\n\nclass UdfsDataset(Dataset):\n    def __init__(self, name: str, root: Path, split: str) -> None:\n        super().__init__()\n\n        self.root = str(root)\n        self.ids = []\n        self.npz_list = []\n        self.id2category = {}\n        self.training_idxes = []\n        self.name = name\n        \n\n        if name in ['shapenet', 'deepfashion3d']:\n            self.data_root = os.path.join(self.root, 'train')\n            ids = os.listdir(self.data_root)\n            print(split, len(ids))\n            for id in ids:\n                #print(id)\n                assert id.endswith(\".npz\")\n                self.ids.append(id[:-4])\n                self.npz_list.append(os.path.join(self.data_root, id))\n        elif 'text2shape' in name:\n            data_root_chair = os.path.join(self.root, '03001627', 'train')\n            ids_chair = os.listdir(data_root_chair)\n\n            data_root_table = os.path.join(self.root, '04379243', 'train')\n            ids_table = os.listdir(data_root_table)\n\n            for id in ids_chair:\n                self.ids.append(id[:-4])\n                self.npz_list.append(os.path.join(data_root_chair, id))\n\n            for id in ids_table:\n                self.ids.append(id[:-4])\n                self.npz_list.append(os.path.join(data_root_table, id))\n\n            self.ids = sorted(self.ids)\n            self.npz_list = sorted(self.npz_list)\n\n\n        elif name == 'pix3d':\n            cats = os.listdir(os.path.join(self.root, split))\n            for cat in cats:\n                ids = os.listdir(os.path.join(self.root, split, cat))\n                for id in ids:\n                    self.ids.append(id[:-4])\n                    self.npz_list.append(os.path.join(self.root, split, cat, id))\n\n\n    def __len__(self) -> int:\n        return len(self.ids)\n\n    def get_training_idxes(self):\n        return self.training_idxes\n\n    def update_training_idxes(self, new_idxes):\n        self.training_idxes = self.training_idxes + new_idxes\n        with open('./training_idxes.txt', 'w') as f:\n            for info in self.training_idxes:\n                f.write(f'{info}\\n')\n    \n    def val_del_idxes(self):\n        self.ids\n        self.npz_list\n\n    def __getitem__(self, index: int) -> T_ITEM:\n\n        item_id = self.npz_list[index].split('/')[-1][:-4]\n        npz = np.load(self.npz_list[index])\n        pcd = torch.from_numpy(npz[\"pcd\"])\n        coords = torch.from_numpy(npz[\"coords\"])\n        labels = torch.from_numpy(npz[\"labels\"])\n        gradients = torch.from_numpy(npz[\"gradients\"])\n\n        return index, item_id, pcd, coords, labels, gradients\n\n    def get_mesh(self, index: int) -> Tuple[Tensor, Tensor]:\n        npz = np.load(self.root / f\"{self.ids[index]}.npz\")\n        v = torch.from_numpy(npz[\"vertices\"])\n        t = torch.from_numpy(npz[\"triangles\"])\n\n        return v, t\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/Deepfashion3d/deepfashion3d_test.txt",
    "content": "234\n396\n221\n21\n569\n377-4\n518\n76\n20\n79\n112\n329\n3\n324\n224\n64\n48\n71\n37-2\n146\n19\n187\n36\n253\n333\n40\n568\n334\n596\n150\n322\n390\n60\n213-2\n29\n182\n90\n93\n563-2\n203\n328\n196\n195\n117\n216\n97\n294\n94\n278\n546\n495\n552\n543\n448\n415\n553\n423\n581\n308\n457\n579\n178\n418\n160\n436\n276\n268\n443\n430\n142\n529\n425\n548\n490\n460\n174\n379\n467\n483\n162\n400\n177\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/Deepfashion3d/deepfashion3d_train.txt",
    "content": "10\n15-19\n83\n223\n297\n364\n47\n115\n346\n247-5\n231\n505\n2\n110\n68\n521\n129\n4-18\n516\n58\n51\n354\n374\n522\n6-15\n30-2\n513\n519-4\n438\n157\n242\n13\n194\n251\n520\n357\n14\n23\n33\n207\n358\n109\n349-4\n230\n193\n368\n86\n225\n360\n67\n62\n102\n18\n1\n78\n114\n389\n45\n373\n375\n53\n66\n43\n49\n136\n376\n184\n55\n235\n507\n46\n523-5\n597\n170\n81\n147\n246\n332\n121\n292-5\n369\n305\n500\n85\n70-2\n348\n25\n301\n337-2\n502\n561-2\n123\n34\n256-2\n290\n220\n343\n291\n39\n499\n249-6\n84\n186\n42\n387\n105\n137\n504\n395-2\n138\n228\n152\n103\n141\n594\n498-2\n148\n38\n503\n592\n155\n171\n145\n218\n144-2\n394\n149\n238-2\n595\n288\n35\n287\n134\n61\n392\n213-2\n183\n509\n393\n120\n122\n26\n345\n363\n119\n118\n212\n28-5\n232\n299\n133\n351\n298\n289\n113\n340\n304\n24\n303\n222\n302\n168\n198\n140\n63\n353\n169\n355\n172\n567\n321\n197\n92\n565\n314\n89\n100\n564\n202\n571\n99\n27\n107\n215\n326\n128\n254\n108\n338\n320\n335\n342\n127\n116\n319\n217\n166\n91\n341\n88\n17\n156\n80\n327\n527\n538\n539\n535\n257\n537\n515\n514\n547\n453\n413\n419\n549\n411\n432\n417\n452\n550\n530-2\n261\n442\n454\n449\n406\n262\n551\n450\n444\n435\n416\n456\n540\n408\n494\n403\n414\n578\n577\n421\n459\n468\n179\n175\n462\n380\n584\n458\n590\n473\n266\n165\n434\n472\n476\n465\n585\n440\n599\n463\n164\n398\n589\n447\n480\n307\n159\n583\n422\n576\n433\n386\n426\n176\n455\n559\n429\n464\n575\n316\n487\n586\n378\n161\n477\n296\n591\n382\n427\n280\n282\n285\n424\n582\n402\n479\n469\n485\n281\n277\n347\n405\n412\n573\n587\n441\n420\n542\n295\n317\n471\n491\n481\n558\n437\n486\n318\n404\n330\n312\n272\n475\n284\n310\n283\n167\n401\n163\n484\n135\n399\n311\n275\n352\n428\n489\n388\n574\n488\n588\n431\n350\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/Pix3d/test.txt",
    "content": "img/bed/0255.jpg\nimg/bed/0256.jpg\nimg/bed/0257.jpg\nimg/bed/0258.jpg\nimg/bed/0259.jpg\nimg/bed/0260.jpg\nimg/bed/0261.jpg\nimg/bed/0262.jpg\nimg/bed/0263.jpg\nimg/bed/0264.jpg\nimg/bed/0265.jpg\nimg/bed/0266.jpg\nimg/bed/0267.jpg\nimg/bed/0268.jpg\nimg/bed/0269.jpg\nimg/bed/0270.jpg\nimg/bed/0271.jpg\nimg/bed/0272.jpg\nimg/bed/0273.jpg\nimg/bed/0274.png\nimg/bed/0275.jpg\nimg/bed/0276.jpg\nimg/bed/0277.jpg\nimg/bed/0278.jpg\nimg/bed/0279.jpg\nimg/bed/0280.jpg\nimg/bed/0281.jpg\nimg/bed/0282.jpg\nimg/bed/0283.jpg\nimg/bed/0284.jpg\nimg/bed/0285.jpg\nimg/bed/0286.jpg\nimg/bed/0287.jpg\nimg/bed/0288.jpg\nimg/bed/0289.jpg\nimg/bed/0290.jpg\nimg/bed/0291.jpg\nimg/bed/0292.jpg\nimg/bed/0293.jpg\nimg/bed/0294.jpg\nimg/bed/0295.jpg\nimg/bed/0296.jpg\nimg/bed/0297.jpg\nimg/bed/0298.jpg\nimg/bed/0299.jpg\nimg/bed/0300.jpg\nimg/bed/0301.jpg\nimg/bed/0302.jpg\nimg/bed/0303.jpg\nimg/bed/0304.jpg\nimg/bed/0305.jpg\nimg/bed/0306.jpg\nimg/bed/0008.png\nimg/bed/0397.jpg\nimg/bed/0398.jpg\nimg/bed/0399.jpg\nimg/bed/0400.jpg\nimg/bed/0401.jpg\nimg/bed/0402.jpg\nimg/bed/0403.jpg\nimg/bed/0404.jpg\nimg/bed/0405.jpg\nimg/bed/0406.jpg\nimg/bed/0407.jpg\nimg/bed/0408.jpg\nimg/bed/0409.jpg\nimg/bed/0410.jpg\nimg/bed/0411.jpg\nimg/bed/0412.jpg\nimg/bed/0413.jpg\nimg/bed/0414.jpg\nimg/bed/0415.jpg\nimg/bed/0416.jpg\nimg/bed/0417.jpg\nimg/bed/0418.jpg\nimg/bed/0419.jpg\nimg/bed/0420.jpg\nimg/bed/0421.jpg\nimg/bed/0422.jpg\nimg/bed/0423.jpg\nimg/bed/0424.jpg\nimg/bed/0425.jpg\nimg/bed/0426.jpg\nimg/bed/0427.jpg\nimg/bed/0428.jpg\nimg/bed/0429.jpg\nimg/bed/0430.jpg\nimg/bed/0431.jpg\nimg/bed/0432.jpg\nimg/bed/0433.jpg\nimg/bed/0434.jpg\nimg/bed/0435.jpg\nimg/bed/0436.jpg\nimg/bed/0437.jpg\nimg/bed/0438.jpg\nimg/bed/0439.jpg\nimg/bed/0440.jpg\nimg/bed/0441.jpg\nimg/bed/0442.jpg\nimg/bed/0443.jpg\nimg/bed/0444.jpg\nimg/bed/0445.jpg\nimg/bed/0446.jpg\nimg/bed/0447.jpg\nimg/bed/0448.jpg\nimg/bed/0449.jpg\nimg/bed/0450.jpg\nimg/bed/0451.jpg\nimg/bed/0452.jpg\nimg/bed/0453.jpg\nimg/bed/0454.jpg\nimg/bed/0455.jpg\nimg/bed/0456.jpg\nimg/bed/0457.jpg\nimg/bed/0458.jpg\nimg/bed/0459.jpg\nimg/bed/0460.jpg\nimg/bed/0461.jpg\nimg/bed/0462.jpg\nimg/bed/0463.jpg\nimg/bed/0464.jpg\nimg/bed/0465.jpg\nimg/bed/0466.jpg\nimg/bed/0467.jpg\nimg/bed/0468.jpg\nimg/bed/0469.jpg\nimg/bed/0470.png\nimg/bed/0471.jpg\nimg/bed/0472.jpg\nimg/bed/0473.jpg\nimg/bed/0474.jpg\nimg/bed/0475.jpg\nimg/bed/0476.jpg\nimg/bed/0477.jpg\nimg/bed/0478.jpg\nimg/bed/0479.jpg\nimg/bed/0480.jpg\nimg/bed/0481.jpg\nimg/bed/0482.jpg\nimg/bed/0483.jpg\nimg/bed/0015.png\nimg/bed/0741.jpg\nimg/bed/0749.jpg\nimg/bed/0863.jpg\nimg/bed/0864.jpg\nimg/bed/0865.jpg\nimg/bed/0866.jpg\nimg/bed/0867.jpg\nimg/bed/0868.jpeg\nimg/bed/0869.jpg\nimg/bed/0870.jpg\nimg/bed/0871.jpg\nimg/bed/0872.jpg\nimg/bed/0873.jpg\nimg/bed/0874.jpg\nimg/bed/0875.jpg\nimg/bed/0876.jpg\nimg/bed/0877.jpg\nimg/bed/0878.jpg\nimg/bed/0879.jpg\nimg/bed/0880.jpg\nimg/bed/0881.jpg\nimg/bed/0882.jpg\nimg/bed/0883.jpg\nimg/bed/0884.jpg\nimg/bed/0885.jpg\nimg/bed/0886.jpg\nimg/bed/0887.jpg\nimg/bed/0888.jpg\nimg/bed/0889.jpeg\nimg/bed/0890.jpg\nimg/bed/0891.jpg\nimg/bed/0892.jpg\nimg/bed/0893.jpg\nimg/bed/0894.jpg\nimg/bed/0895.jpg\nimg/bed/0896.jpg\nimg/bed/0897.jpg\nimg/bed/0898.jpg\nimg/bed/0899.jpeg\nimg/bed/0900.jpg\nimg/bed/0901.jpg\nimg/bed/0902.jpg\nimg/bed/0903.jpg\nimg/bed/0904.jpg\nimg/bed/0905.jpg\nimg/bed/0906.jpg\nimg/bed/0907.jpg\nimg/bed/0908.jpg\nimg/bed/0909.jpg\nimg/bed/0910.jpg\nimg/bed/0911.jpg\nimg/bed/0912.jpeg\nimg/bed/0913.jpg\nimg/bed/0914.jpg\nimg/bed/0915.jpg\nimg/bookcase/0002.jpg\nimg/bookcase/0003.jpg\nimg/bookcase/0004.jpg\nimg/bookcase/0005.jpg\nimg/bookcase/0006.jpg\nimg/bookcase/0007.jpg\nimg/bookcase/0008.jpg\nimg/bookcase/0009.jpg\nimg/bookcase/0010.jpg\nimg/bookcase/0011.jpg\nimg/bookcase/0012.jpg\nimg/bookcase/0013.jpg\nimg/bookcase/0014.jpg\nimg/bookcase/0015.jpg\nimg/bookcase/0016.jpg\nimg/bookcase/0017.jpg\nimg/bookcase/0018.jpg\nimg/bookcase/0325.jpg\nimg/bookcase/0327.jpg\nimg/bookcase/0328.jpg\nimg/bookcase/0329.jpg\nimg/bookcase/0330.jpg\nimg/bookcase/0332.jpg\nimg/bookcase/0335.jpg\nimg/bookcase/0340.jpg\nimg/bookcase/0341.jpg\nimg/bookcase/0344.jpg\nimg/bookcase/0345.jpg\nimg/bookcase/0354.jpg\nimg/bookcase/0356.jpg\nimg/bookcase/0034.jpg\nimg/bookcase/0035.jpg\nimg/bookcase/0036.jpg\nimg/bookcase/0037.jpg\nimg/bookcase/0038.jpg\nimg/bookcase/0346.jpg\nimg/bookcase/0357.jpg\nimg/bookcase/0045.jpg\nimg/bookcase/0046.jpg\nimg/bookcase/0047.jpg\nimg/bookcase/0048.jpg\nimg/bookcase/0049.jpg\nimg/bookcase/0050.jpg\nimg/bookcase/0051.jpg\nimg/bookcase/0052.jpg\nimg/bookcase/0053.jpg\nimg/bookcase/0054.jpg\nimg/bookcase/0055.jpg\nimg/bookcase/0056.jpg\nimg/bookcase/0057.jpg\nimg/bookcase/0058.jpg\nimg/bookcase/0059.jpg\nimg/bookcase/0060.jpg\nimg/bookcase/0061.jpg\nimg/bookcase/0062.jpg\nimg/bookcase/0063.jpg\nimg/bookcase/0064.jpg\nimg/bookcase/0065.jpg\nimg/bookcase/0066.jpg\nimg/bookcase/0067.jpg\nimg/bookcase/0068.jpg\nimg/bookcase/0069.jpg\nimg/bookcase/0070.jpg\nimg/bookcase/0071.jpg\nimg/bookcase/0072.jpg\nimg/bookcase/0073.jpg\nimg/bookcase/0074.jpg\nimg/bookcase/0075.jpg\nimg/bookcase/0076.jpg\nimg/bookcase/0077.jpg\nimg/bookcase/0078.jpg\nimg/bookcase/0079.jpg\nimg/bookcase/0080.jpg\nimg/bookcase/0081.jpg\nimg/bookcase/0082.jpg\nimg/bookcase/0083.jpg\nimg/bookcase/0084.jpg\nimg/bookcase/0085.jpg\nimg/bookcase/0086.jpg\nimg/bookcase/0087.jpg\nimg/bookcase/0088.jpg\nimg/bookcase/0089.jpg\nimg/bookcase/0090.jpg\nimg/bookcase/0091.jpg\nimg/bookcase/0092.jpg\nimg/bookcase/0093.jpg\nimg/bookcase/0094.png\nimg/bookcase/0095.jpg\nimg/bookcase/0096.jpg\nimg/bookcase/0097.png\nimg/bookcase/0261.jpg\nimg/bookcase/0262.jpg\nimg/bookcase/0265.jpg\nimg/bookcase/0270.jpg\nimg/bookcase/0274.jpg\nimg/bookcase/0281.jpg\nimg/bookcase/0284.jpg\nimg/bookcase/0290.png\nimg/bookcase/0296.jpg\nimg/bookcase/0298.png\nimg/bookcase/0301.jpg\nimg/bookcase/0306.jpg\nimg/bookcase/0310.jpg\nimg/bookcase/0314.jpg\nimg/bookcase/0318.jpg\nimg/chair/1548.jpg\nimg/chair/1549.jpg\nimg/chair/1551.jpg\nimg/chair/1553.jpg\nimg/chair/1555.jpg\nimg/chair/1556.jpg\nimg/chair/1557.jpg\nimg/chair/1559.jpg\nimg/chair/1560.jpg\nimg/chair/1561.jpg\nimg/chair/1562.jpg\nimg/chair/1563.jpg\nimg/chair/1564.jpg\nimg/chair/1565.jpg\nimg/chair/1567.jpg\nimg/chair/1570.jpg\nimg/chair/1571.jpg\nimg/chair/1572.jpg\nimg/chair/1574.jpg\nimg/chair/1575.jpg\nimg/chair/1576.jpg\nimg/chair/1579.jpg\nimg/chair/1580.jpg\nimg/chair/1581.jpg\nimg/chair/1582.jpg\nimg/chair/1583.jpg\nimg/chair/1585.jpg\nimg/chair/1589.jpg\nimg/chair/1590.jpg\nimg/chair/1593.jpg\nimg/chair/1594.jpg\nimg/chair/1595.jpg\nimg/chair/1596.jpg\nimg/chair/1597.jpg\nimg/chair/1598.jpg\nimg/chair/1601.jpg\nimg/chair/1602.jpg\nimg/chair/1603.jpg\nimg/chair/1604.jpg\nimg/chair/1605.jpg\nimg/chair/1607.jpg\nimg/chair/1609.jpg\nimg/chair/1611.jpg\nimg/chair/1612.jpg\nimg/chair/1617.jpg\nimg/chair/1618.jpg\nimg/chair/1619.jpg\nimg/chair/1620.jpg\nimg/chair/1621.jpg\nimg/chair/1622.jpg\nimg/chair/1623.jpg\nimg/chair/1624.jpg\nimg/chair/1625.jpg\nimg/chair/1627.jpg\nimg/chair/1628.jpg\nimg/chair/1629.jpg\nimg/chair/1630.jpg\nimg/chair/1631.jpg\nimg/chair/1632.jpg\nimg/chair/1635.jpg\nimg/chair/1636.jpg\nimg/chair/1637.jpg\nimg/chair/1638.jpg\nimg/chair/1641.jpg\nimg/chair/1642.jpg\nimg/chair/1646.jpg\nimg/chair/1647.jpg\nimg/chair/1651.jpg\nimg/chair/1653.jpg\nimg/chair/1654.jpg\nimg/chair/1655.jpeg\nimg/chair/1658.jpg\nimg/chair/1659.jpg\nimg/chair/1661.jpg\nimg/chair/1662.jpg\nimg/chair/1663.jpg\nimg/chair/1664.jpg\nimg/chair/1666.jpeg\nimg/chair/1667.jpg\nimg/chair/1669.jpg\nimg/chair/1671.jpg\nimg/chair/1673.jpg\nimg/chair/1674.jpg\nimg/chair/1675.jpg\nimg/chair/1676.jpg\nimg/chair/1677.jpeg\nimg/chair/1678.jpg\nimg/chair/1679.jpg\nimg/chair/1680.jpg\nimg/chair/1682.jpg\nimg/chair/1683.jpg\nimg/chair/1686.jpg\nimg/chair/1687.jpg\nimg/chair/1689.jpg\nimg/chair/1690.jpg\nimg/chair/1691.jpg\nimg/chair/1695.jpg\nimg/chair/1697.jpg\nimg/chair/1698.jpg\nimg/chair/1699.jpg\nimg/chair/1700.jpg\nimg/chair/1701.jpeg\nimg/chair/1704.jpg\nimg/chair/1705.jpg\nimg/chair/1706.png\nimg/chair/1708.jpg\nimg/chair/1711.jpg\nimg/chair/1713.jpg\nimg/chair/1714.jpg\nimg/chair/1715.jpg\nimg/chair/1716.jpg\nimg/chair/1717.jpg\nimg/chair/1718.jpg\nimg/chair/1720.jpg\nimg/chair/1724.jpg\nimg/chair/1728.jpg\nimg/chair/1729.jpg\nimg/chair/1730.jpg\nimg/chair/1732.jpg\nimg/chair/1734.jpg\nimg/chair/1736.jpg\nimg/chair/1737.jpg\nimg/chair/1740.jpg\nimg/chair/1741.jpg\nimg/chair/1743.jpg\nimg/chair/1745.png\nimg/chair/1746.jpg\nimg/chair/1747.jpg\nimg/chair/1748.jpg\nimg/chair/1749.jpeg\nimg/chair/1751.jpg\nimg/chair/1753.jpg\nimg/chair/1754.jpg\nimg/chair/1755.png\nimg/chair/1756.jpg\nimg/chair/1757.jpg\nimg/chair/1759.jpg\nimg/chair/1762.jpg\nimg/chair/1763.jpg\nimg/chair/1766.jpg\nimg/chair/1771.jpg\nimg/chair/1772.jpg\nimg/chair/1773.jpg\nimg/chair/1774.jpeg\nimg/chair/1781.jpg\nimg/chair/1782.jpg\nimg/chair/1784.jpg\nimg/chair/1785.jpg\nimg/chair/1786.jpg\nimg/chair/1791.jpg\nimg/chair/1794.jpg\nimg/chair/1795.jpg\nimg/chair/1800.jpg\nimg/chair/1801.jpg\nimg/chair/1802.jpg\nimg/chair/1807.jpg\nimg/chair/1808.jpg\nimg/chair/1809.jpg\nimg/chair/1810.jpg\nimg/chair/1811.jpg\nimg/chair/1813.jpg\nimg/chair/1814.jpg\nimg/chair/1815.jpg\nimg/chair/1817.jpg\nimg/chair/1818.jpg\nimg/chair/1819.jpg\nimg/chair/1822.jpg\nimg/chair/1823.jpg\nimg/chair/1827.jpg\nimg/chair/1828.jpg\nimg/chair/1829.jpg\nimg/chair/1830.jpg\nimg/chair/1831.jpg\nimg/chair/1833.jpg\nimg/chair/1834.jpg\nimg/chair/1840.jpg\nimg/chair/1841.jpg\nimg/chair/1842.jpg\nimg/chair/1844.jpg\nimg/chair/1848.jpg\nimg/chair/1850.jpg\nimg/chair/1851.jpg\nimg/chair/1854.jpg\nimg/chair/1855.jpg\nimg/chair/1856.jpg\nimg/chair/1858.jpg\nimg/chair/1859.jpg\nimg/chair/1860.jpg\nimg/chair/1862.jpg\nimg/chair/1863.jpg\nimg/chair/1865.jpg\nimg/chair/1866.jpg\nimg/chair/1869.jpg\nimg/chair/1870.jpg\nimg/chair/1871.jpg\nimg/chair/1872.jpg\nimg/chair/1875.jpg\nimg/chair/1876.jpg\nimg/chair/1879.jpg\nimg/chair/1881.jpg\nimg/chair/1884.jpg\nimg/chair/1885.jpg\nimg/chair/1886.jpg\nimg/chair/1887.jpg\nimg/chair/1888.jpg\nimg/chair/1889.jpg\nimg/chair/1890.jpg\nimg/chair/1891.jpg\nimg/chair/1892.jpg\nimg/chair/1893.jpg\nimg/chair/1894.jpg\nimg/chair/1895.jpg\nimg/chair/1896.jpg\nimg/chair/1897.jpg\nimg/chair/1898.jpg\nimg/chair/1899.jpg\nimg/chair/1900.jpg\nimg/chair/1901.jpg\nimg/chair/1903.png\nimg/chair/1904.jpg\nimg/chair/1905.jpg\nimg/chair/1906.jpeg\nimg/chair/1907.jpg\nimg/chair/1909.png\nimg/chair/1910.png\nimg/chair/1911.jpg\nimg/chair/1912.jpg\nimg/chair/1914.jpg\nimg/chair/1915.jpg\nimg/chair/1916.jpg\nimg/chair/1918.jpg\nimg/chair/1919.jpg\nimg/chair/1920.jpg\nimg/chair/1921.jpg\nimg/chair/1922.jpg\nimg/chair/1923.jpg\nimg/chair/1924.jpg\nimg/chair/1925.jpg\nimg/chair/1926.jpg\nimg/chair/1927.jpg\nimg/chair/1928.jpg\nimg/chair/1929.jpg\nimg/chair/1930.jpg\nimg/chair/1931.jpg\nimg/chair/1932.jpg\nimg/chair/1933.jpg\nimg/chair/1934.jpg\nimg/chair/1937.jpg\nimg/chair/1938.jpg\nimg/chair/1941.jpg\nimg/chair/1942.jpg\nimg/chair/1943.jpg\nimg/chair/1944.jpg\nimg/chair/1945.jpg\nimg/chair/1949.jpg\nimg/chair/1952.jpg\nimg/chair/1954.jpg\nimg/chair/1956.jpg\nimg/chair/1960.jpg\nimg/chair/1961.jpg\nimg/chair/1963.jpg\nimg/chair/1965.jpg\nimg/chair/1966.jpg\nimg/chair/1968.jpg\nimg/chair/1972.jpg\nimg/chair/1973.jpg\nimg/chair/1975.jpg\nimg/chair/1976.jpg\nimg/chair/1977.jpg\nimg/chair/1978.jpg\nimg/chair/1980.jpg\nimg/chair/1981.jpg\nimg/chair/1982.jpg\nimg/chair/1983.jpeg\nimg/chair/1986.jpg\nimg/chair/1987.jpg\nimg/chair/1988.jpg\nimg/chair/1989.jpg\nimg/chair/1992.jpg\nimg/chair/1993.jpg\nimg/chair/1994.jpg\nimg/chair/1996.jpg\nimg/chair/1998.jpg\nimg/chair/1999.jpg\nimg/chair/2000.jpg\nimg/chair/2001.jpg\nimg/chair/2002.jpg\nimg/chair/2007.jpg\nimg/chair/2009.jpg\nimg/chair/2011.jpg\nimg/chair/2014.jpg\nimg/chair/2015.jpg\nimg/chair/2019.jpg\nimg/chair/2020.jpeg\nimg/chair/2021.jpg\nimg/chair/2022.jpg\nimg/chair/2023.jpg\nimg/chair/2024.jpg\nimg/chair/2025.jpg\nimg/chair/2026.jpg\nimg/chair/2027.jpg\nimg/chair/2029.jpg\nimg/chair/2030.jpg\nimg/chair/2031.jpg\nimg/chair/2032.jpg\nimg/chair/2033.jpg\nimg/chair/2038.jpg\nimg/chair/2040.jpg\nimg/chair/2041.jpg\nimg/chair/2043.jpg\nimg/chair/2046.jpg\nimg/chair/2047.jpg\nimg/chair/2048.jpg\nimg/chair/2049.jpg\nimg/chair/2050.jpg\nimg/chair/2051.jpg\nimg/chair/2055.jpg\nimg/chair/2056.jpg\nimg/chair/2057.jpg\nimg/chair/2060.jpg\nimg/chair/2061.png\nimg/chair/2063.jpg\nimg/chair/2066.jpg\nimg/chair/2068.jpg\nimg/chair/2069.jpg\nimg/chair/2073.jpg\nimg/chair/2074.jpg\nimg/chair/2076.jpg\nimg/chair/2077.jpg\nimg/chair/2079.jpg\nimg/chair/2080.jpg\nimg/chair/2081.jpg\nimg/chair/2083.jpg\nimg/chair/2084.jpg\nimg/chair/2087.jpg\nimg/chair/2088.jpg\nimg/chair/2089.png\nimg/chair/2090.jpg\nimg/chair/2091.jpg\nimg/chair/2092.jpg\nimg/chair/2094.jpg\nimg/chair/2096.jpg\nimg/chair/2100.png\nimg/chair/2102.jpg\nimg/chair/2104.png\nimg/chair/2105.png\nimg/chair/2106.jpg\nimg/chair/2113.jpg\nimg/chair/2114.jpg\nimg/chair/2115.jpg\nimg/chair/2116.jpg\nimg/chair/2117.jpg\nimg/chair/2118.jpg\nimg/chair/2119.jpg\nimg/chair/2120.jpg\nimg/chair/2123.jpg\nimg/chair/2124.jpg\nimg/chair/2125.jpg\nimg/chair/2126.jpg\nimg/chair/2127.jpg\nimg/chair/2129.jpg\nimg/chair/2130.jpg\nimg/chair/2131.jpg\nimg/chair/2132.jpg\nimg/chair/2134.jpg\nimg/chair/2135.jpg\nimg/chair/2136.jpg\nimg/chair/2137.jpg\nimg/chair/2143.jpg\nimg/chair/2145.jpg\nimg/chair/2149.jpg\nimg/chair/2152.jpg\nimg/chair/2157.jpg\nimg/chair/2159.jpg\nimg/chair/2160.jpg\nimg/chair/2161.jpg\nimg/chair/2163.jpg\nimg/chair/2164.jpg\nimg/chair/2165.jpg\nimg/chair/2167.jpg\nimg/chair/2170.png\nimg/chair/2172.jpg\nimg/chair/2174.jpg\nimg/chair/2175.jpg\nimg/chair/2181.jpg\nimg/chair/2192.jpg\nimg/chair/2195.jpg\nimg/chair/2196.jpg\nimg/chair/2197.png\nimg/chair/2202.jpg\nimg/chair/2203.jpg\nimg/chair/2204.jpg\nimg/chair/2206.jpg\nimg/chair/2217.jpg\nimg/chair/2220.jpg\nimg/chair/0011.png\nimg/chair/2323.jpg\nimg/chair/2324.jpg\nimg/chair/2326.jpg\nimg/chair/2327.jpg\nimg/chair/2328.jpg\nimg/chair/2329.jpg\nimg/chair/2330.jpg\nimg/chair/2331.jpg\nimg/chair/2332.jpg\nimg/chair/2333.jpg\nimg/chair/2334.jpg\nimg/chair/2335.jpg\nimg/chair/2336.jpg\nimg/chair/2337.jpg\nimg/chair/2338.jpg\nimg/chair/2339.jpg\nimg/chair/2340.jpg\nimg/chair/2341.jpg\nimg/chair/2343.jpg\nimg/chair/2344.jpg\nimg/chair/2346.jpg\nimg/chair/2347.png\nimg/chair/2348.jpg\nimg/chair/2349.png\nimg/chair/2350.jpg\nimg/chair/2351.jpg\nimg/chair/2353.jpg\nimg/chair/2354.jpg\nimg/chair/2355.jpg\nimg/chair/2356.jpg\nimg/chair/2357.jpg\nimg/chair/2358.jpg\nimg/chair/2359.jpg\nimg/chair/2361.jpg\nimg/chair/2363.jpg\nimg/chair/2366.jpg\nimg/chair/2367.jpg\nimg/chair/2369.jpg\nimg/chair/2371.jpg\nimg/chair/2374.jpg\nimg/chair/2376.jpg\nimg/chair/2378.jpg\nimg/chair/2379.jpg\nimg/chair/2381.jpg\nimg/chair/2382.jpg\nimg/chair/2383.jpg\nimg/chair/2385.jpg\nimg/chair/2386.jpg\nimg/chair/2389.jpg\nimg/chair/2392.jpg\nimg/chair/2393.jpg\nimg/chair/2394.jpg\nimg/chair/2395.jpg\nimg/chair/2396.jpg\nimg/chair/2397.jpg\nimg/chair/2398.jpg\nimg/chair/2399.jpg\nimg/chair/2400.jpg\nimg/chair/2401.jpg\nimg/chair/2404.jpg\nimg/chair/2407.jpg\nimg/chair/2408.jpg\nimg/chair/2409.jpg\nimg/chair/2411.png\nimg/chair/2415.jpg\nimg/chair/2416.jpg\nimg/chair/2417.jpg\nimg/chair/2418.jpg\nimg/chair/2421.jpg\nimg/chair/2422.jpg\nimg/chair/2423.jpg\nimg/chair/2426.jpg\nimg/chair/2427.jpg\nimg/chair/2428.jpg\nimg/chair/2429.jpg\nimg/chair/2430.jpg\nimg/chair/2431.jpg\nimg/chair/2433.jpg\nimg/chair/2434.jpg\nimg/chair/2435.jpg\nimg/chair/2436.jpg\nimg/chair/2439.jpg\nimg/chair/2440.jpg\nimg/chair/2441.jpg\nimg/chair/2442.jpg\nimg/chair/2443.jpg\nimg/chair/2449.jpg\nimg/chair/2450.jpg\nimg/chair/2451.jpg\nimg/chair/2452.jpg\nimg/chair/2453.jpg\nimg/chair/2454.jpg\nimg/chair/2455.jpg\nimg/chair/2456.jpg\nimg/chair/2458.jpg\nimg/chair/2459.jpg\nimg/chair/2460.jpg\nimg/chair/2461.jpg\nimg/chair/2462.jpg\nimg/chair/2463.jpg\nimg/chair/2464.jpg\nimg/chair/2467.jpg\nimg/chair/2468.jpg\nimg/chair/2469.jpg\nimg/chair/2470.jpg\nimg/chair/2471.jpg\nimg/chair/2472.jpg\nimg/chair/2473.jpg\nimg/chair/2474.jpg\nimg/chair/2475.jpg\nimg/chair/2476.jpg\nimg/chair/2477.jpg\nimg/chair/2478.jpg\nimg/chair/2479.png\nimg/chair/2480.jpg\nimg/chair/2481.jpg\nimg/chair/2482.jpg\nimg/chair/2483.jpg\nimg/chair/2485.jpg\nimg/chair/2486.jpg\nimg/chair/2487.jpg\nimg/chair/2489.jpeg\nimg/chair/2490.jpg\nimg/chair/2491.jpg\nimg/chair/2494.jpg\nimg/chair/2495.jpg\nimg/chair/2496.jpg\nimg/chair/2497.jpg\nimg/chair/2500.jpg\nimg/chair/2501.jpg\nimg/chair/2502.jpg\nimg/chair/2504.jpg\nimg/chair/2505.jpg\nimg/chair/2507.jpg\nimg/chair/2508.jpg\nimg/chair/2509.jpg\nimg/chair/2510.jpg\nimg/chair/2511.jpg\nimg/chair/2513.jpg\nimg/chair/2514.jpg\nimg/chair/2515.jpg\nimg/chair/2517.jpg\nimg/chair/2518.jpg\nimg/chair/2519.jpg\nimg/chair/2523.jpg\nimg/chair/2524.jpg\nimg/chair/2525.jpg\nimg/chair/2526.jpg\nimg/chair/2527.jpg\nimg/chair/2528.jpg\nimg/chair/2530.jpg\nimg/chair/2532.jpg\nimg/chair/2534.jpg\nimg/chair/2535.jpg\nimg/chair/2536.jpg\nimg/chair/2539.jpg\nimg/chair/2540.jpg\nimg/chair/2541.jpg\nimg/chair/2542.jpg\nimg/chair/2543.jpg\nimg/chair/2545.jpg\nimg/chair/2546.jpg\nimg/chair/2547.jpg\nimg/chair/2551.jpg\nimg/chair/2553.jpg\nimg/chair/2555.jpg\nimg/chair/2556.jpg\nimg/chair/2557.jpg\nimg/chair/2558.jpg\nimg/chair/2560.jpg\nimg/chair/2561.jpg\nimg/chair/2562.jpg\nimg/chair/2563.jpg\nimg/chair/2564.jpg\nimg/chair/2565.png\nimg/chair/2566.jpg\nimg/chair/2567.jpeg\nimg/chair/2568.jpg\nimg/chair/2569.jpg\nimg/chair/2571.jpg\nimg/chair/2574.jpg\nimg/chair/2575.jpg\nimg/chair/2577.jpg\nimg/chair/2578.jpg\nimg/chair/2579.jpg\nimg/chair/2581.jpg\nimg/chair/2582.jpeg\nimg/chair/2583.jpg\nimg/chair/2584.jpg\nimg/chair/2585.jpg\nimg/chair/2587.jpg\nimg/chair/2588.jpg\nimg/chair/2590.png\nimg/chair/2591.jpg\nimg/chair/2592.jpg\nimg/chair/2593.jpg\nimg/chair/2701.png\nimg/chair/2703.jpg\nimg/chair/2704.jpg\nimg/chair/2705.jpg\nimg/chair/2706.jpg\nimg/chair/2708.jpg\nimg/chair/2709.jpg\nimg/chair/2710.jpg\nimg/chair/2711.jpg\nimg/chair/2712.jpg\nimg/chair/2714.jpg\nimg/chair/2715.jpg\nimg/chair/2716.jpg\nimg/chair/2718.jpg\nimg/chair/2719.jpg\nimg/chair/2721.jpg\nimg/chair/2722.jpeg\nimg/chair/2723.jpg\nimg/chair/2726.jpg\nimg/chair/2727.jpg\nimg/chair/2728.jpg\nimg/chair/2731.jpg\nimg/chair/2732.jpg\nimg/chair/2733.png\nimg/chair/2734.jpg\nimg/chair/2736.jpg\nimg/chair/2738.jpg\nimg/chair/2739.jpg\nimg/chair/2740.jpg\nimg/chair/2741.jpg\nimg/chair/2742.jpg\nimg/chair/2743.jpg\nimg/chair/2744.jpg\nimg/chair/2745.jpg\nimg/chair/2746.jpg\nimg/chair/2747.jpg\nimg/chair/2748.jpg\nimg/chair/2751.jpg\nimg/chair/2752.png\nimg/chair/0019.png\nimg/chair/0040.png\nimg/chair/0053.png\nimg/chair/0055.png\nimg/chair/0058.png\nimg/chair/0067.png\nimg/chair/0073.png\nimg/chair/2795.jpg\nimg/chair/2796.jpg\nimg/chair/2797.jpg\nimg/chair/2798.jpg\nimg/chair/2800.jpg\nimg/chair/2801.jpg\nimg/chair/2803.jpg\nimg/chair/2804.jpg\nimg/chair/2806.jpg\nimg/chair/2807.jpg\nimg/chair/2808.jpg\nimg/chair/2811.jpg\nimg/chair/2815.jpg\nimg/chair/2816.jpg\nimg/chair/2818.jpg\nimg/chair/2820.jpg\nimg/chair/2821.jpg\nimg/chair/2823.jpg\nimg/chair/2824.jpg\nimg/chair/2826.jpg\nimg/chair/2827.jpg\nimg/chair/2828.jpg\nimg/chair/2829.jpg\nimg/chair/2830.jpg\nimg/chair/2831.jpg\nimg/chair/0041.png\nimg/chair/0046.png\nimg/chair/0066.png\nimg/chair/0071.png\nimg/chair/0072.png\nimg/chair/0077.png\nimg/chair/0080.png\nimg/chair/0082.png\nimg/chair/0085.png\nimg/chair/0091.png\nimg/chair/0092.png\nimg/chair/0105.png\nimg/chair/0107.png\nimg/chair/0108.png\nimg/chair/0110.png\nimg/chair/0114.png\nimg/chair/0115.png\nimg/chair/2833.jpg\nimg/chair/2834.jpg\nimg/chair/2836.jpg\nimg/chair/2837.jpg\nimg/chair/2838.jpg\nimg/chair/2839.jpg\nimg/chair/2840.jpg\nimg/chair/2841.jpg\nimg/chair/2842.jpg\nimg/chair/2843.jpg\nimg/chair/2844.jpg\nimg/chair/2845.jpg\nimg/chair/2846.jpg\nimg/chair/2847.jpg\nimg/chair/2848.jpg\nimg/chair/2852.jpg\nimg/chair/2853.jpg\nimg/chair/2854.jpg\nimg/chair/2855.jpg\nimg/chair/2856.jpg\nimg/chair/2857.jpg\nimg/chair/2859.jpg\nimg/chair/2860.jpg\nimg/chair/2861.jpg\nimg/chair/2862.jpg\nimg/chair/2863.jpg\nimg/chair/2864.jpg\nimg/chair/2865.jpg\nimg/chair/2866.jpg\nimg/chair/2867.jpg\nimg/chair/2869.jpg\nimg/chair/2871.jpg\nimg/chair/2872.jpg\nimg/chair/2873.jpg\nimg/chair/2874.jpg\nimg/chair/2875.jpg\nimg/chair/2877.jpg\nimg/chair/2879.jpg\nimg/chair/2880.jpg\nimg/chair/2881.jpg\nimg/chair/2882.jpg\nimg/chair/2884.jpg\nimg/chair/2885.jpg\nimg/chair/2886.jpg\nimg/chair/2890.jpg\nimg/chair/2892.jpg\nimg/chair/2894.jpg\nimg/chair/2895.jpg\nimg/chair/2897.jpg\nimg/chair/2899.jpg\nimg/chair/2900.jpg\nimg/chair/2901.jpg\nimg/chair/2902.jpg\nimg/chair/2903.jpg\nimg/chair/2904.jpg\nimg/chair/2905.png\nimg/chair/2907.jpg\nimg/chair/2908.jpg\nimg/chair/2909.jpg\nimg/chair/2911.jpg\nimg/chair/2912.jpg\nimg/chair/2916.jpg\nimg/chair/2918.jpg\nimg/chair/2920.jpg\nimg/chair/2921.jpg\nimg/chair/2922.jpg\nimg/chair/2923.jpg\nimg/chair/2928.jpg\nimg/chair/2929.jpg\nimg/chair/2930.jpg\nimg/chair/2931.jpg\nimg/chair/2932.jpg\nimg/chair/2933.jpg\nimg/chair/2935.jpg\nimg/chair/2937.jpg\nimg/chair/2939.jpg\nimg/chair/2942.jpg\nimg/chair/2943.jpg\nimg/chair/2944.jpg\nimg/chair/2945.png\nimg/chair/2946.jpg\nimg/chair/2949.jpg\nimg/chair/2950.jpg\nimg/chair/2951.jpg\nimg/chair/2952.jpg\nimg/chair/2955.jpg\nimg/chair/2956.jpg\nimg/chair/2957.jpg\nimg/chair/2958.jpg\nimg/chair/2960.jpg\nimg/chair/2961.jpg\nimg/chair/2962.jpg\nimg/chair/2966.jpg\nimg/chair/2967.jpg\nimg/chair/2968.jpg\nimg/chair/2969.jpg\nimg/chair/2972.jpg\nimg/chair/2973.jpg\nimg/chair/2974.jpg\nimg/chair/2975.png\nimg/chair/2978.jpg\nimg/chair/2979.jpg\nimg/chair/2980.jpg\nimg/chair/2982.jpg\nimg/chair/2983.jpg\nimg/chair/2984.jpg\nimg/chair/2989.jpg\nimg/chair/2991.jpg\nimg/chair/2992.jpg\nimg/chair/2993.jpg\nimg/chair/2994.jpg\nimg/chair/2995.jpg\nimg/chair/2996.jpg\nimg/chair/2998.jpg\nimg/chair/2999.jpg\nimg/chair/3003.jpg\nimg/chair/3004.jpg\nimg/chair/3006.jpg\nimg/chair/3007.jpg\nimg/chair/3008.jpg\nimg/chair/3009.jpg\nimg/chair/3010.jpg\nimg/chair/3011.jpg\nimg/chair/3012.jpg\nimg/chair/3013.jpg\nimg/chair/3014.jpg\nimg/chair/3015.jpg\nimg/chair/3016.jpg\nimg/chair/3017.jpg\nimg/chair/3020.jpg\nimg/chair/3021.jpg\nimg/chair/3023.jpg\nimg/chair/3025.jpg\nimg/chair/3026.jpg\nimg/chair/3027.jpg\nimg/chair/3029.jpg\nimg/chair/3031.jpg\nimg/chair/3032.jpg\nimg/chair/3033.jpg\nimg/chair/3034.jpg\nimg/chair/3035.jpg\nimg/chair/3036.jpg\nimg/chair/3037.jpg\nimg/chair/3038.jpg\nimg/chair/3040.jpg\nimg/chair/3041.jpg\nimg/chair/3043.jpg\nimg/chair/3044.jpg\nimg/chair/3046.jpg\nimg/chair/3047.jpg\nimg/chair/3048.jpg\nimg/chair/3050.jpg\nimg/chair/3051.jpg\nimg/chair/3052.jpg\nimg/chair/3053.jpg\nimg/chair/3054.jpg\nimg/chair/3055.jpg\nimg/chair/3056.jpg\nimg/chair/3057.jpg\nimg/chair/3058.jpg\nimg/chair/3059.jpg\nimg/chair/3060.jpg\nimg/chair/3062.jpg\nimg/chair/3063.jpg\nimg/chair/3064.jpg\nimg/chair/3065.jpg\nimg/chair/3066.jpg\nimg/chair/3068.jpg\nimg/chair/3069.jpg\nimg/chair/3074.jpg\nimg/chair/3075.jpg\nimg/chair/3076.jpg\nimg/chair/3077.jpg\nimg/chair/3079.jpg\nimg/chair/3081.jpg\nimg/chair/3083.jpg\nimg/chair/3086.jpg\nimg/chair/3087.jpg\nimg/chair/3088.jpg\nimg/chair/3091.jpg\nimg/chair/3092.jpg\nimg/chair/3094.jpg\nimg/chair/3095.jpg\nimg/chair/3097.jpg\nimg/chair/3098.jpg\nimg/chair/3099.jpg\nimg/chair/3100.jpg\nimg/chair/3101.jpg\nimg/chair/3102.jpg\nimg/chair/3103.jpg\nimg/chair/3104.jpg\nimg/chair/3105.jpg\nimg/chair/3106.jpg\nimg/chair/3107.jpg\nimg/chair/3108.jpg\nimg/chair/3109.jpg\nimg/chair/3110.jpg\nimg/chair/3111.jpg\nimg/chair/3112.jpeg\nimg/chair/3113.jpg\nimg/chair/3114.jpg\nimg/chair/3115.jpg\nimg/chair/3116.jpg\nimg/chair/3119.jpg\nimg/chair/3120.jpg\nimg/chair/3121.jpg\nimg/chair/3123.jpg\nimg/chair/3124.jpg\nimg/chair/3126.jpg\nimg/chair/3128.jpg\nimg/chair/3129.jpg\nimg/chair/3133.jpg\nimg/chair/3134.png\nimg/chair/3135.jpg\nimg/chair/3136.jpg\nimg/chair/3137.jpg\nimg/chair/3140.jpg\nimg/chair/3142.jpg\nimg/chair/3143.jpg\nimg/chair/3144.jpg\nimg/chair/3145.jpg\nimg/chair/3146.jpg\nimg/chair/3149.jpg\nimg/chair/3150.jpg\nimg/chair/3152.jpg\nimg/chair/3153.jpg\nimg/chair/3154.jpg\nimg/chair/3155.jpg\nimg/chair/3157.jpg\nimg/chair/3158.jpg\nimg/chair/3161.jpg\nimg/chair/3162.jpg\nimg/chair/3164.jpg\nimg/chair/3165.jpg\nimg/chair/3166.jpg\nimg/chair/3168.jpg\nimg/chair/3169.jpg\nimg/chair/3170.jpg\nimg/chair/3171.jpg\nimg/chair/3172.jpg\nimg/chair/3173.jpg\nimg/chair/3174.jpg\nimg/chair/3175.jpg\nimg/chair/3177.jpg\nimg/chair/3180.jpg\nimg/chair/3181.jpg\nimg/chair/3182.jpg\nimg/chair/3184.jpg\nimg/chair/3185.jpg\nimg/chair/3186.jpg\nimg/chair/3187.jpg\nimg/chair/3188.jpg\nimg/chair/3189.jpg\nimg/chair/3191.jpg\nimg/chair/3192.jpg\nimg/chair/3193.jpg\nimg/chair/3194.jpg\nimg/chair/3197.jpg\nimg/chair/3198.jpg\nimg/chair/3199.jpg\nimg/chair/3200.jpg\nimg/chair/3201.jpg\nimg/chair/3202.jpg\nimg/chair/3203.jpg\nimg/chair/3204.jpg\nimg/chair/3206.jpg\nimg/chair/3207.jpg\nimg/chair/3209.jpg\nimg/chair/3211.jpg\nimg/chair/3212.jpg\nimg/chair/3213.jpg\nimg/chair/3216.jpg\nimg/chair/3314.jpg\nimg/chair/3315.jpg\nimg/chair/3316.jpg\nimg/chair/3317.jpg\nimg/chair/3318.jpg\nimg/chair/3319.jpg\nimg/chair/3320.jpg\nimg/chair/3321.jpg\nimg/chair/3322.jpg\nimg/chair/3324.jpg\nimg/chair/3325.jpg\nimg/chair/3326.jpg\nimg/chair/3328.jpg\nimg/chair/3330.jpg\nimg/chair/3331.jpg\nimg/chair/3333.jpg\nimg/chair/3335.jpg\nimg/chair/3337.jpeg\nimg/chair/3338.jpg\nimg/chair/3340.jpg\nimg/chair/3342.jpg\nimg/chair/3343.jpg\nimg/chair/0111.png\nimg/chair/3344.jpg\nimg/chair/3345.jpg\nimg/chair/3346.jpg\nimg/chair/3347.jpg\nimg/chair/3348.jpg\nimg/chair/3349.jpg\nimg/chair/3350.jpg\nimg/chair/3351.jpg\nimg/chair/3352.jpg\nimg/chair/3354.jpg\nimg/chair/3355.jpg\nimg/chair/3356.jpg\nimg/chair/3357.jpg\nimg/chair/3358.jpg\nimg/chair/3359.jpg\nimg/chair/3360.jpg\nimg/chair/3361.jpg\nimg/chair/3362.jpg\nimg/chair/3363.jpg\nimg/chair/3364.jpg\nimg/chair/3367.jpg\nimg/chair/3370.jpg\nimg/chair/3371.jpg\nimg/chair/3372.jpg\nimg/chair/3373.jpg\nimg/chair/3374.jpg\nimg/chair/3375.jpg\nimg/chair/3376.jpg\nimg/chair/3377.jpg\nimg/chair/3379.jpg\nimg/chair/0027.png\nimg/chair/3382.jpg\nimg/chair/3384.jpg\nimg/chair/3385.jpg\nimg/chair/3389.jpg\nimg/chair/3394.jpg\nimg/chair/3396.jpg\nimg/chair/3398.jpg\nimg/chair/3399.jpg\nimg/chair/3401.jpg\nimg/chair/3403.jpg\nimg/chair/3404.jpg\nimg/chair/3405.jpg\nimg/chair/3408.jpg\nimg/chair/3409.jpg\nimg/chair/3410.jpg\nimg/chair/3411.jpg\nimg/chair/3412.jpg\nimg/chair/3413.jpeg\nimg/chair/3414.jpg\nimg/chair/3415.jpg\nimg/chair/3416.jpg\nimg/chair/3417.jpg\nimg/chair/3420.jpg\nimg/chair/3422.jpg\nimg/chair/3423.jpg\nimg/chair/3424.jpg\nimg/chair/3425.jpg\nimg/chair/3426.jpg\nimg/chair/3427.jpg\nimg/chair/3429.jpg\nimg/chair/3430.jpg\nimg/chair/3431.jpg\nimg/chair/3435.jpg\nimg/chair/3437.jpg\nimg/chair/3439.jpg\nimg/chair/3440.jpg\nimg/chair/3441.png\nimg/chair/3446.jpg\nimg/chair/3447.jpg\nimg/chair/3450.jpg\nimg/chair/3452.jpg\nimg/chair/3453.jpg\nimg/chair/3454.jpg\nimg/chair/3457.jpg\nimg/chair/3460.jpg\nimg/chair/3461.jpg\nimg/chair/3463.jpg\nimg/chair/3466.jpg\nimg/chair/3468.jpg\nimg/chair/3469.png\nimg/chair/3472.png\nimg/chair/3475.jpg\nimg/chair/3476.jpg\nimg/chair/3477.jpg\nimg/chair/3478.jpg\nimg/chair/3479.jpg\nimg/chair/3480.jpg\nimg/chair/3481.jpg\nimg/chair/3482.jpg\nimg/chair/3483.jpg\nimg/chair/3484.jpg\nimg/chair/3485.jpg\nimg/chair/3488.jpg\nimg/chair/3489.jpg\nimg/chair/3490.jpg\nimg/chair/3491.jpg\nimg/chair/3492.jpg\nimg/chair/0083.png\nimg/chair/3494.jpg\nimg/chair/3495.jpg\nimg/chair/3496.jpg\nimg/chair/3498.jpg\nimg/chair/3499.jpg\nimg/chair/3501.jpg\nimg/chair/3504.jpg\nimg/chair/3506.jpg\nimg/chair/3508.jpg\nimg/chair/3511.jpg\nimg/chair/3514.jpg\nimg/chair/3515.jpg\nimg/chair/3517.jpg\nimg/chair/3518.jpg\nimg/chair/3524.jpg\nimg/chair/3525.jpg\nimg/chair/3527.jpg\nimg/chair/3529.jpg\nimg/chair/3530.jpg\nimg/chair/3532.jpg\nimg/chair/3536.jpg\nimg/chair/3537.jpg\nimg/chair/3539.jpg\nimg/chair/3540.jpg\nimg/chair/3542.jpg\nimg/chair/3543.jpg\nimg/chair/3544.jpg\nimg/chair/3545.jpg\nimg/chair/3546.jpg\nimg/chair/3547.jpg\nimg/chair/3549.jpg\nimg/chair/3550.jpg\nimg/chair/3552.jpg\nimg/chair/3557.jpg\nimg/chair/3560.jpg\nimg/chair/3561.jpg\nimg/chair/3562.jpg\nimg/chair/3564.jpg\nimg/chair/3567.jpg\nimg/chair/3572.jpg\nimg/chair/3573.jpg\nimg/chair/3574.jpg\nimg/chair/3577.jpg\nimg/chair/3579.jpg\nimg/chair/3580.jpg\nimg/chair/3581.jpg\nimg/chair/3583.jpg\nimg/chair/3584.jpg\nimg/chair/3585.jpeg\nimg/chair/3588.jpg\nimg/chair/3592.png\nimg/chair/3593.jpg\nimg/chair/3594.jpg\nimg/chair/3598.jpg\nimg/chair/3599.jpg\nimg/chair/3601.jpg\nimg/chair/3602.jpg\nimg/chair/3603.jpeg\nimg/chair/3605.jpg\nimg/chair/3606.jpeg\nimg/chair/3607.jpg\nimg/chair/3610.jpg\nimg/chair/3612.jpg\nimg/chair/3615.jpg\nimg/chair/3617.tiff\nimg/chair/3618.jpg\nimg/chair/3619.jpg\nimg/chair/3621.jpg\nimg/chair/3625.jpg\nimg/chair/3627.jpg\nimg/chair/3630.jpg\nimg/chair/3634.jpg\nimg/chair/3635.jpg\nimg/chair/3637.jpg\nimg/chair/3638.jpg\nimg/chair/3639.jpg\nimg/chair/3641.jpg\nimg/chair/3642.jpg\nimg/chair/3644.jpg\nimg/chair/3646.jpg\nimg/chair/3647.jpg\nimg/chair/3648.jpg\nimg/chair/3651.jpg\nimg/chair/3657.jpg\nimg/chair/3660.jpg\nimg/chair/3662.jpg\nimg/chair/3663.jpg\nimg/chair/3665.jpg\nimg/chair/3666.jpg\nimg/chair/3667.jpg\nimg/chair/3668.jpg\nimg/chair/3670.jpg\nimg/chair/3671.jpg\nimg/chair/3676.png\nimg/chair/0016.png\nimg/chair/0033.png\nimg/chair/0044.png\nimg/chair/0045.png\nimg/chair/0093.png\nimg/chair/3679.jpg\nimg/chair/3681.jpg\nimg/chair/3682.jpg\nimg/chair/3683.jpg\nimg/chair/3684.jpg\nimg/chair/3687.jpg\nimg/chair/3688.jpg\nimg/chair/3689.jpg\nimg/chair/3690.jpg\nimg/chair/3694.jpeg\nimg/chair/3695.jpg\nimg/chair/3696.jpg\nimg/chair/3697.jpg\nimg/chair/3698.jpg\nimg/chair/3699.jpg\nimg/chair/3700.jpg\nimg/chair/3701.jpg\nimg/chair/3702.jpg\nimg/chair/3703.jpg\nimg/chair/3704.jpg\nimg/chair/3705.jpg\nimg/chair/3707.jpg\nimg/chair/3709.jpg\nimg/chair/3710.jpg\nimg/chair/3711.jpg\nimg/chair/3712.jpg\nimg/chair/3713.jpg\nimg/chair/3718.jpg\nimg/chair/3719.jpg\nimg/chair/3720.jpg\nimg/chair/3721.jpg\nimg/chair/3722.jpg\nimg/chair/3723.jpg\nimg/chair/3725.jpg\nimg/chair/3728.jpg\nimg/chair/3729.jpg\nimg/chair/3730.jpg\nimg/chair/3731.jpg\nimg/chair/3732.jpg\nimg/chair/3733.jpg\nimg/chair/3734.jpg\nimg/chair/3736.jpeg\nimg/chair/3737.jpg\nimg/chair/3738.jpg\nimg/chair/3739.jpg\nimg/chair/3740.jpg\nimg/chair/3742.jpg\nimg/chair/3745.jpg\nimg/chair/3746.jpg\nimg/chair/3747.jpg\nimg/chair/3748.jpg\nimg/chair/3749.jpg\nimg/chair/3750.jpg\nimg/chair/3752.jpg\nimg/chair/3754.jpg\nimg/chair/3755.jpg\nimg/chair/3756.jpg\nimg/chair/3757.jpg\nimg/chair/3758.jpg\nimg/chair/3759.jpg\nimg/chair/3760.jpg\nimg/chair/3763.jpg\nimg/chair/3766.jpg\nimg/chair/3767.jpg\nimg/chair/3768.jpg\nimg/chair/3770.jpg\nimg/chair/3771.jpg\nimg/chair/3772.jpg\nimg/chair/3773.jpg\nimg/chair/3774.jpg\nimg/chair/3775.jpg\nimg/chair/3776.jpg\nimg/chair/3777.jpg\nimg/chair/3779.jpg\nimg/chair/3780.jpg\nimg/chair/3781.jpg\nimg/chair/3782.jpg\nimg/chair/3783.jpg\nimg/chair/3784.jpg\nimg/chair/3786.jpg\nimg/chair/3787.jpg\nimg/chair/3788.jpg\nimg/chair/3791.jpg\nimg/chair/3792.jpg\nimg/chair/3793.jpg\nimg/chair/3794.jpg\nimg/chair/3795.jpg\nimg/chair/3797.jpg\nimg/chair/3799.jpg\nimg/chair/3800.jpg\nimg/chair/3802.jpg\nimg/chair/3803.jpg\nimg/chair/3804.jpg\nimg/chair/3805.jpeg\nimg/chair/3806.jpg\nimg/chair/3807.jpg\nimg/chair/3808.jpg\nimg/chair/3809.jpg\nimg/chair/3810.jpg\nimg/chair/3811.jpg\nimg/chair/3812.jpg\nimg/chair/3813.jpg\nimg/chair/3814.jpg\nimg/chair/3815.jpg\nimg/chair/3816.jpg\nimg/chair/3819.jpg\nimg/chair/3821.jpg\nimg/chair/3822.jpg\nimg/chair/3823.jpg\nimg/chair/3824.jpg\nimg/chair/3825.jpg\nimg/chair/3826.jpg\nimg/chair/3827.jpg\nimg/chair/3828.jpg\nimg/chair/3829.jpg\nimg/chair/3830.jpg\nimg/chair/3832.jpg\nimg/chair/3833.jpg\nimg/chair/3834.jpg\nimg/chair/3838.jpg\nimg/chair/3839.jpg\nimg/chair/0118.jpg\nimg/chair/0119.jpg\nimg/chair/0120.jpg\nimg/chair/0121.jpg\nimg/chair/0122.jpg\nimg/chair/0124.jpg\nimg/chair/0126.jpg\nimg/chair/0127.jpg\nimg/chair/0129.jpg\nimg/chair/0130.jpg\nimg/chair/0132.jpg\nimg/chair/0133.jpg\nimg/chair/0134.jpg\nimg/chair/0135.jpg\nimg/chair/0136.jpg\nimg/chair/0137.jpg\nimg/chair/0138.jpg\nimg/chair/0141.jpg\nimg/chair/0142.jpg\nimg/chair/0143.jpg\nimg/chair/0144.jpg\nimg/chair/0145.jpg\nimg/chair/0146.jpg\nimg/chair/0147.jpg\nimg/chair/0148.jpg\nimg/chair/0150.jpg\nimg/chair/0151.jpg\nimg/chair/0152.jpg\nimg/chair/0153.jpg\nimg/chair/0154.jpg\nimg/chair/0155.jpg\nimg/chair/0156.jpg\nimg/chair/0157.jpg\nimg/chair/0158.jpg\nimg/chair/0159.jpg\nimg/chair/0160.jpg\nimg/chair/0161.jpg\nimg/chair/0162.jpg\nimg/chair/0163.jpg\nimg/chair/0164.jpg\nimg/chair/0165.jpg\nimg/chair/0166.jpg\nimg/chair/0167.jpg\nimg/chair/0168.jpg\nimg/chair/0169.jpg\nimg/chair/0170.jpg\nimg/chair/0171.jpg\nimg/chair/0172.jpg\nimg/chair/0173.jpg\nimg/chair/0174.jpg\nimg/chair/0175.jpg\nimg/chair/0176.jpg\nimg/chair/0177.jpg\nimg/chair/0178.jpg\nimg/chair/0179.jpg\nimg/chair/0180.jpg\nimg/chair/0181.jpg\nimg/chair/0182.jpg\nimg/chair/0183.jpg\nimg/chair/0184.jpg\nimg/chair/0185.jpg\nimg/chair/0186.jpg\nimg/chair/0187.jpg\nimg/chair/0188.jpg\nimg/chair/0189.jpg\nimg/chair/0190.jpg\nimg/chair/0191.jpg\nimg/chair/0192.jpg\nimg/chair/0193.jpg\nimg/chair/0194.jpg\nimg/chair/0195.jpg\nimg/chair/0196.jpg\nimg/chair/0197.jpg\nimg/chair/0198.jpg\nimg/chair/0199.jpg\nimg/chair/0200.jpg\nimg/chair/0201.jpg\nimg/chair/0202.jpg\nimg/chair/0203.jpg\nimg/chair/0204.jpg\nimg/chair/0205.jpg\nimg/chair/0206.jpg\nimg/chair/0207.jpg\nimg/chair/0208.jpg\nimg/chair/0209.jpg\nimg/chair/0210.jpg\nimg/chair/0211.jpg\nimg/chair/0212.jpg\nimg/chair/0213.jpg\nimg/chair/0214.jpg\nimg/chair/0215.jpg\nimg/chair/0216.jpg\nimg/chair/0217.jpg\nimg/chair/0218.jpg\nimg/chair/0219.jpg\nimg/chair/0220.jpg\nimg/chair/0222.jpg\nimg/chair/0223.jpg\nimg/chair/0224.jpg\nimg/chair/0225.jpg\nimg/chair/0226.jpg\nimg/chair/0227.jpg\nimg/chair/0228.jpg\nimg/chair/0229.jpg\nimg/chair/0230.jpg\nimg/chair/0231.jpg\nimg/chair/0232.jpg\nimg/chair/0233.jpg\nimg/chair/0234.jpg\nimg/chair/0235.jpg\nimg/chair/0236.jpg\nimg/chair/0238.jpg\nimg/chair/0239.jpg\nimg/chair/0240.jpg\nimg/chair/0241.jpg\nimg/chair/0242.jpg\nimg/chair/0243.jpg\nimg/chair/0244.jpg\nimg/chair/0245.jpg\nimg/chair/0246.jpg\nimg/chair/0247.jpg\nimg/chair/0248.jpg\nimg/chair/0249.jpg\nimg/chair/0250.jpg\nimg/chair/0251.jpg\nimg/chair/0252.jpg\nimg/chair/0253.jpg\nimg/chair/0254.jpg\nimg/chair/0255.jpg\nimg/chair/0256.jpg\nimg/chair/0257.jpg\nimg/chair/0258.jpg\nimg/chair/0259.jpg\nimg/chair/0260.jpg\nimg/chair/0261.jpg\nimg/chair/0262.jpg\nimg/chair/0263.jpg\nimg/chair/0264.jpg\nimg/chair/0265.jpg\nimg/chair/0266.jpg\nimg/chair/0267.jpg\nimg/chair/0268.jpg\nimg/chair/0269.jpg\nimg/chair/0270.jpg\nimg/chair/0271.jpg\nimg/chair/0272.jpg\nimg/chair/0273.jpg\nimg/chair/0274.jpg\nimg/chair/0275.jpg\nimg/chair/0276.jpg\nimg/chair/0277.jpg\nimg/chair/0278.jpg\nimg/chair/0279.jpg\nimg/chair/0280.jpg\nimg/chair/0281.jpg\nimg/chair/0282.jpg\nimg/chair/0283.jpg\nimg/chair/0284.jpg\nimg/chair/0285.jpg\nimg/chair/0286.jpg\nimg/chair/0287.jpg\nimg/chair/0288.jpg\nimg/chair/0289.jpg\nimg/chair/0290.jpg\nimg/chair/0291.jpg\nimg/chair/0292.jpg\nimg/chair/0293.jpg\nimg/chair/0294.jpg\nimg/chair/0295.jpg\nimg/chair/0296.jpg\nimg/chair/0297.jpg\nimg/chair/0298.jpg\nimg/chair/0299.jpg\nimg/chair/0300.jpg\nimg/chair/0301.jpg\nimg/chair/0302.jpg\nimg/chair/0303.jpg\nimg/chair/0304.jpg\nimg/chair/0305.jpg\nimg/chair/0306.jpg\nimg/chair/0307.jpg\nimg/chair/0308.jpg\nimg/chair/0309.jpg\nimg/chair/0311.jpg\nimg/chair/0312.jpg\nimg/chair/0314.jpg\nimg/chair/0315.jpg\nimg/chair/0316.jpg\nimg/chair/0317.jpg\nimg/chair/0318.jpg\nimg/chair/0319.jpg\nimg/chair/0320.jpg\nimg/chair/0321.jpg\nimg/chair/0322.jpg\nimg/chair/0323.jpg\nimg/chair/0324.jpg\nimg/chair/0325.jpg\nimg/chair/0326.jpg\nimg/chair/0327.jpg\nimg/chair/0328.jpg\nimg/chair/0329.jpg\nimg/chair/0330.jpg\nimg/chair/0331.jpg\nimg/chair/0332.jpg\nimg/chair/0333.jpg\nimg/chair/0334.jpg\nimg/chair/0335.jpg\nimg/chair/0336.jpg\nimg/chair/0337.jpg\nimg/chair/0338.jpg\nimg/chair/0339.jpg\nimg/chair/0340.jpg\nimg/chair/0341.jpg\nimg/chair/0342.jpg\nimg/chair/0343.jpg\nimg/chair/0344.jpg\nimg/chair/0345.jpg\nimg/chair/0346.jpg\nimg/chair/0347.jpg\nimg/chair/0348.jpg\nimg/chair/0349.jpg\nimg/chair/0350.jpg\nimg/chair/0351.jpg\nimg/chair/0352.jpg\nimg/chair/0353.jpg\nimg/chair/0354.jpg\nimg/chair/0355.jpg\nimg/chair/0356.jpg\nimg/chair/0357.jpg\nimg/chair/0358.jpg\nimg/chair/0359.jpg\nimg/chair/0360.jpg\nimg/chair/0361.jpg\nimg/chair/0362.jpg\nimg/chair/0363.jpg\nimg/chair/0364.jpg\nimg/chair/0365.jpg\nimg/chair/0366.jpg\nimg/chair/0367.jpg\nimg/chair/0368.jpg\nimg/chair/0369.jpg\nimg/chair/0370.jpg\nimg/chair/0371.jpg\nimg/chair/0372.jpg\nimg/chair/0373.jpg\nimg/chair/0374.jpg\nimg/chair/0375.jpg\nimg/chair/0376.jpg\nimg/chair/0377.jpg\nimg/chair/0378.jpg\nimg/chair/0379.jpg\nimg/chair/0380.jpg\nimg/chair/0381.jpg\nimg/chair/0382.jpg\nimg/chair/0383.jpg\nimg/chair/0384.jpg\nimg/chair/0385.jpg\nimg/chair/0386.jpg\nimg/chair/0387.jpg\nimg/chair/0388.jpg\nimg/chair/0389.jpg\nimg/chair/0390.jpg\nimg/chair/0391.jpg\nimg/chair/0392.jpg\nimg/chair/0393.jpg\nimg/chair/0394.jpg\nimg/chair/0395.jpg\nimg/chair/0396.jpg\nimg/chair/0397.jpg\nimg/chair/0399.jpg\nimg/chair/0400.jpg\nimg/chair/0401.jpg\nimg/chair/0402.jpg\nimg/chair/0403.jpg\nimg/chair/0404.jpg\nimg/chair/0405.jpg\nimg/chair/0406.jpg\nimg/chair/0407.jpg\nimg/chair/0408.jpg\nimg/chair/0409.jpg\nimg/chair/0410.jpg\nimg/chair/0411.jpg\nimg/chair/0412.jpg\nimg/chair/0413.jpg\nimg/chair/0414.jpg\nimg/chair/0415.jpg\nimg/chair/0416.jpg\nimg/chair/0417.jpg\nimg/chair/0418.jpg\nimg/chair/0419.jpg\nimg/chair/0420.jpg\nimg/chair/0421.jpg\nimg/chair/0422.jpg\nimg/chair/0423.jpg\nimg/chair/0424.jpg\nimg/chair/0425.jpg\nimg/chair/0426.jpg\nimg/chair/0427.jpg\nimg/chair/0428.jpg\nimg/chair/0429.jpg\nimg/chair/0430.jpg\nimg/chair/0431.jpg\nimg/chair/0432.jpg\nimg/chair/0433.jpg\nimg/chair/0434.jpg\nimg/chair/0435.jpg\nimg/chair/0436.jpg\nimg/chair/0437.jpg\nimg/chair/0438.jpg\nimg/chair/0439.jpg\nimg/chair/0440.jpg\nimg/chair/0441.jpg\nimg/chair/0442.jpg\nimg/chair/0443.jpg\nimg/chair/0444.jpg\nimg/chair/0445.jpg\nimg/chair/0446.jpg\nimg/chair/0447.jpg\nimg/chair/0448.jpg\nimg/chair/0449.jpg\nimg/chair/0450.jpg\nimg/chair/0451.jpg\nimg/chair/0452.jpg\nimg/chair/0453.jpg\nimg/chair/0454.jpg\nimg/chair/0455.jpg\nimg/chair/0456.jpg\nimg/chair/0457.jpg\nimg/chair/0458.jpg\nimg/chair/0459.jpg\nimg/chair/0460.jpg\nimg/chair/0461.jpg\nimg/chair/0462.jpg\nimg/chair/0463.jpg\nimg/chair/0464.jpg\nimg/chair/0465.jpg\nimg/chair/0466.jpg\nimg/chair/0467.jpg\nimg/chair/0468.jpg\nimg/chair/0469.jpg\nimg/chair/0470.jpg\nimg/chair/0471.jpg\nimg/chair/0472.jpg\nimg/chair/0473.jpg\nimg/chair/0474.jpg\nimg/chair/0475.jpg\nimg/chair/0476.jpg\nimg/chair/0477.jpg\nimg/chair/0478.jpg\nimg/chair/0479.jpg\nimg/chair/0480.jpg\nimg/chair/0481.jpg\nimg/chair/0482.jpg\nimg/chair/0483.jpg\nimg/chair/0484.jpg\nimg/chair/0485.jpg\nimg/chair/0486.jpg\nimg/chair/0487.jpg\nimg/chair/0488.jpg\nimg/chair/0489.jpg\nimg/chair/0490.jpg\nimg/chair/0491.jpg\nimg/chair/0492.jpg\nimg/chair/0493.jpg\nimg/chair/0494.jpg\nimg/chair/0495.jpg\nimg/chair/0496.jpg\nimg/chair/0497.jpg\nimg/chair/0499.jpg\nimg/chair/0500.jpg\nimg/chair/0501.jpg\nimg/chair/0502.jpg\nimg/chair/0503.jpg\nimg/chair/0504.jpg\nimg/chair/0506.jpg\nimg/chair/0507.jpg\nimg/chair/0509.jpg\nimg/chair/0510.jpg\nimg/chair/0511.jpg\nimg/chair/0512.jpg\nimg/chair/0513.jpg\nimg/chair/0514.jpg\nimg/chair/0515.jpg\nimg/chair/0516.jpg\nimg/chair/0517.jpg\nimg/chair/0518.jpg\nimg/chair/0519.jpg\nimg/chair/0520.jpg\nimg/chair/0521.jpg\nimg/chair/0522.jpg\nimg/chair/0523.jpg\nimg/chair/0524.jpg\nimg/chair/0525.jpg\nimg/chair/0526.jpg\nimg/chair/0527.jpg\nimg/chair/0528.jpg\nimg/chair/0529.jpg\nimg/chair/0530.jpg\nimg/chair/0531.jpg\nimg/chair/0532.jpg\nimg/chair/0533.jpg\nimg/chair/0534.jpg\nimg/chair/0535.jpg\nimg/chair/0536.jpg\nimg/chair/0537.jpg\nimg/chair/0538.jpg\nimg/chair/0539.jpg\nimg/chair/0540.jpg\nimg/chair/0541.jpg\nimg/chair/0542.jpg\nimg/chair/0543.jpg\nimg/chair/0544.jpg\nimg/chair/0545.jpg\nimg/chair/0546.jpg\nimg/chair/0547.jpg\nimg/chair/0548.jpg\nimg/chair/0549.jpg\nimg/chair/0550.jpg\nimg/chair/0551.jpg\nimg/chair/0552.jpg\nimg/chair/0553.jpg\nimg/chair/0554.jpg\nimg/chair/0556.jpg\nimg/chair/0557.jpg\nimg/chair/0559.jpg\nimg/chair/0561.jpg\nimg/chair/0563.jpg\nimg/chair/0564.jpg\nimg/chair/0565.jpg\nimg/chair/0566.jpg\nimg/chair/0568.jpg\nimg/chair/0570.jpg\nimg/chair/0571.jpg\nimg/chair/0572.jpg\nimg/chair/0573.jpg\nimg/chair/0574.jpg\nimg/chair/0575.jpg\nimg/chair/0577.jpg\nimg/chair/0578.jpg\nimg/chair/0580.jpg\nimg/chair/0581.jpg\nimg/chair/0583.jpg\nimg/chair/0584.jpg\nimg/chair/0585.jpg\nimg/chair/0586.jpg\nimg/chair/0588.jpg\nimg/chair/0589.jpg\nimg/chair/0590.jpg\nimg/chair/0591.jpg\nimg/chair/0592.jpg\nimg/chair/0593.jpg\nimg/chair/0594.jpg\nimg/chair/0595.jpg\nimg/chair/0596.jpg\nimg/chair/0599.jpg\nimg/chair/0600.jpg\nimg/chair/0602.jpg\nimg/chair/0604.jpg\nimg/chair/0605.jpg\nimg/chair/0606.jpg\nimg/chair/0607.jpg\nimg/chair/0608.jpg\nimg/chair/0609.jpg\nimg/chair/0610.jpg\nimg/chair/0611.jpg\nimg/chair/0612.jpg\nimg/chair/0613.jpg\nimg/chair/0615.jpg\nimg/chair/0616.jpg\nimg/chair/0617.jpg\nimg/chair/0618.jpg\nimg/chair/0619.jpg\nimg/chair/0620.jpg\nimg/chair/0621.jpg\nimg/chair/0622.jpg\nimg/chair/0623.jpg\nimg/chair/0624.jpg\nimg/chair/0625.jpg\nimg/chair/0626.jpg\nimg/chair/0627.jpg\nimg/chair/0628.jpg\nimg/chair/0629.jpg\nimg/chair/0630.jpg\nimg/chair/0631.jpg\nimg/chair/0632.jpg\nimg/chair/0633.jpg\nimg/chair/0634.jpg\nimg/chair/0636.jpg\nimg/chair/0637.jpg\nimg/chair/0638.jpg\nimg/chair/0639.jpg\nimg/chair/0640.jpg\nimg/chair/0641.jpg\nimg/chair/0642.jpg\nimg/chair/0643.jpg\nimg/chair/0644.jpg\nimg/chair/0645.jpg\nimg/chair/0646.jpg\nimg/chair/0647.jpg\nimg/chair/0648.jpg\nimg/chair/0649.jpg\nimg/chair/0650.jpg\nimg/chair/0651.jpg\nimg/chair/0652.jpg\nimg/chair/0653.jpg\nimg/chair/0654.jpg\nimg/chair/0655.jpg\nimg/chair/0656.jpg\nimg/chair/0657.jpg\nimg/chair/0658.jpg\nimg/chair/0659.jpg\nimg/chair/0660.jpg\nimg/chair/0662.jpg\nimg/chair/0663.jpg\nimg/chair/0664.jpg\nimg/chair/0665.jpg\nimg/chair/0666.jpg\nimg/chair/0667.jpg\nimg/chair/0668.jpg\nimg/chair/0669.jpg\nimg/chair/0670.jpg\nimg/chair/0671.jpg\nimg/chair/0672.jpg\nimg/chair/0673.jpg\nimg/chair/0674.jpg\nimg/chair/0675.jpg\nimg/chair/0676.jpg\nimg/chair/0677.jpg\nimg/chair/0678.jpg\nimg/chair/0679.jpg\nimg/chair/0680.jpg\nimg/chair/0681.jpg\nimg/chair/0682.jpg\nimg/chair/0683.jpg\nimg/chair/0684.jpg\nimg/chair/0685.jpg\nimg/chair/0686.jpg\nimg/chair/0687.jpg\nimg/chair/0688.jpg\nimg/chair/0690.jpg\nimg/chair/0691.jpg\nimg/chair/0692.jpg\nimg/chair/0693.jpg\nimg/chair/0695.jpg\nimg/chair/0696.jpg\nimg/chair/0697.jpg\nimg/chair/0698.jpg\nimg/chair/0699.jpg\nimg/chair/0700.jpg\nimg/chair/0701.jpg\nimg/chair/0702.jpg\nimg/chair/0703.jpg\nimg/chair/0705.jpg\nimg/chair/0706.jpg\nimg/chair/0707.jpg\nimg/chair/0708.jpg\nimg/chair/0709.jpg\nimg/chair/0710.jpg\nimg/chair/0711.jpg\nimg/chair/0712.jpg\nimg/chair/0713.jpg\nimg/chair/0714.jpg\nimg/chair/0715.jpg\nimg/chair/0716.jpg\nimg/chair/0717.jpg\nimg/chair/0718.jpg\nimg/chair/0719.jpg\nimg/chair/0720.jpg\nimg/chair/0721.jpg\nimg/chair/0722.jpg\nimg/chair/0723.jpg\nimg/chair/0724.jpg\nimg/chair/0725.jpg\nimg/chair/0726.jpg\nimg/chair/0727.jpg\nimg/chair/0728.jpg\nimg/chair/0729.jpg\nimg/chair/0731.jpg\nimg/chair/0732.jpg\nimg/chair/0733.jpg\nimg/chair/0734.jpg\nimg/chair/0736.jpg\nimg/chair/0737.jpg\nimg/chair/0738.jpg\nimg/chair/0740.jpg\nimg/chair/0741.jpg\nimg/chair/0742.jpg\nimg/chair/0743.jpg\nimg/chair/0744.jpg\nimg/chair/0745.jpg\nimg/chair/0746.jpg\nimg/chair/0747.jpg\nimg/chair/0748.jpg\nimg/chair/0749.jpg\nimg/chair/0750.jpg\nimg/chair/0751.jpg\nimg/chair/0752.jpg\nimg/chair/0753.jpg\nimg/chair/0754.jpg\nimg/chair/0755.jpg\nimg/chair/0756.jpg\nimg/chair/0757.jpg\nimg/chair/0760.jpg\nimg/chair/0761.jpg\nimg/chair/0762.jpg\nimg/chair/0763.jpg\nimg/chair/0764.jpg\nimg/chair/0765.jpg\nimg/chair/0766.jpg\nimg/chair/0768.jpg\nimg/chair/0769.jpg\nimg/chair/0770.jpg\nimg/chair/0771.jpg\nimg/chair/0772.jpg\nimg/chair/0773.jpg\nimg/chair/0774.jpg\nimg/chair/0775.jpg\nimg/chair/0776.jpg\nimg/chair/0777.jpg\nimg/chair/0778.jpg\nimg/chair/0779.jpg\nimg/chair/0780.jpg\nimg/chair/0781.jpg\nimg/chair/0782.jpg\nimg/chair/0783.jpg\nimg/chair/0784.jpg\nimg/chair/0786.jpg\nimg/chair/0787.jpg\nimg/chair/0788.jpg\nimg/chair/0789.jpg\nimg/chair/0791.jpg\nimg/chair/0792.jpg\nimg/chair/0793.jpg\nimg/chair/0794.jpg\nimg/chair/0795.jpg\nimg/chair/0796.jpg\nimg/chair/0797.jpg\nimg/chair/0798.jpg\nimg/chair/0799.jpg\nimg/chair/0800.jpg\nimg/chair/0801.jpg\nimg/chair/0802.jpg\nimg/chair/0803.jpg\nimg/chair/0804.jpg\nimg/chair/0805.jpg\nimg/chair/0806.jpg\nimg/chair/0807.jpg\nimg/chair/0808.jpg\nimg/chair/0809.jpg\nimg/chair/0810.jpg\nimg/chair/0812.jpg\nimg/chair/0813.jpg\nimg/chair/0814.jpg\nimg/chair/0815.jpg\nimg/chair/0816.jpg\nimg/chair/0817.jpg\nimg/chair/0819.jpg\nimg/chair/0820.jpg\nimg/chair/0821.jpg\nimg/chair/0822.jpg\nimg/chair/0823.jpg\nimg/chair/0824.jpg\nimg/chair/0826.jpg\nimg/chair/0827.jpg\nimg/chair/0828.jpg\nimg/chair/0830.jpg\nimg/chair/0831.jpg\nimg/chair/0832.jpg\nimg/chair/0833.jpg\nimg/chair/0834.jpg\nimg/chair/0835.jpg\nimg/chair/0837.jpg\nimg/chair/0838.jpg\nimg/chair/0839.jpg\nimg/chair/0840.jpg\nimg/chair/0841.jpg\nimg/chair/0842.jpg\nimg/chair/0843.jpg\nimg/chair/0844.jpg\nimg/chair/0845.jpg\nimg/chair/0846.jpg\nimg/chair/0847.jpg\nimg/chair/0848.jpg\nimg/chair/0849.jpg\nimg/chair/0850.jpg\nimg/chair/0851.jpg\nimg/chair/0852.jpg\nimg/chair/0853.jpg\nimg/chair/0854.jpg\nimg/chair/0855.jpg\nimg/chair/0856.jpg\nimg/chair/0857.jpg\nimg/chair/0858.jpg\nimg/chair/0859.jpg\nimg/chair/0860.jpg\nimg/chair/0861.jpg\nimg/chair/0862.jpg\nimg/chair/0863.jpg\nimg/chair/0864.jpg\nimg/chair/0866.jpg\nimg/chair/0867.jpg\nimg/chair/0868.jpg\nimg/chair/0873.jpg\nimg/chair/0874.jpg\nimg/chair/0875.jpg\nimg/chair/0876.jpg\nimg/chair/0877.jpg\nimg/chair/0878.jpg\nimg/chair/0880.jpg\nimg/chair/0881.jpg\nimg/chair/0882.jpg\nimg/chair/0883.jpg\nimg/chair/0884.jpg\nimg/chair/0885.jpg\nimg/chair/0886.jpg\nimg/chair/0888.jpg\nimg/chair/0889.jpg\nimg/chair/0890.jpg\nimg/chair/0892.jpg\nimg/chair/0896.jpg\nimg/chair/0897.jpg\nimg/chair/0898.jpg\nimg/chair/0899.jpg\nimg/chair/0901.jpg\nimg/chair/0903.jpg\nimg/chair/0904.jpg\nimg/chair/0905.jpg\nimg/chair/0906.jpg\nimg/chair/0907.jpg\nimg/chair/0908.jpg\nimg/chair/0909.jpg\nimg/chair/0910.jpg\nimg/chair/0911.jpg\nimg/chair/0912.jpg\nimg/chair/0913.jpg\nimg/chair/0916.jpg\nimg/chair/0917.jpg\nimg/chair/0918.jpg\nimg/chair/0919.jpg\nimg/chair/0920.jpg\nimg/chair/0921.jpg\nimg/chair/0922.jpg\nimg/chair/0923.jpg\nimg/chair/0924.jpg\nimg/chair/0925.jpg\nimg/chair/0926.jpg\nimg/chair/0927.jpg\nimg/chair/0928.jpg\nimg/chair/0929.jpg\nimg/chair/0930.jpg\nimg/chair/0931.jpg\nimg/chair/0932.jpg\nimg/chair/0933.jpg\nimg/chair/0934.jpg\nimg/chair/0935.jpg\nimg/chair/0936.jpg\nimg/chair/0937.jpg\nimg/chair/0939.jpg\nimg/chair/0940.jpg\nimg/chair/0941.jpg\nimg/chair/0942.jpg\nimg/chair/0944.jpg\nimg/chair/0945.jpg\nimg/chair/0946.jpg\nimg/chair/0947.jpg\nimg/chair/0949.jpg\nimg/chair/0950.jpg\nimg/chair/0952.jpg\nimg/chair/0953.jpg\nimg/chair/0954.jpg\nimg/chair/0955.jpg\nimg/chair/0956.jpg\nimg/chair/0957.jpg\nimg/chair/0958.jpg\nimg/chair/0959.jpg\nimg/chair/0960.jpg\nimg/chair/0961.jpg\nimg/chair/0962.jpg\nimg/chair/0963.jpg\nimg/chair/0965.jpg\nimg/chair/0966.jpg\nimg/chair/0967.jpg\nimg/chair/0968.jpg\nimg/chair/0969.jpg\nimg/chair/0970.jpg\nimg/chair/0971.jpg\nimg/chair/0972.jpg\nimg/chair/0975.jpg\nimg/chair/0976.jpg\nimg/chair/0977.jpg\nimg/chair/0978.jpg\nimg/chair/0979.jpg\nimg/chair/0981.jpg\nimg/chair/0982.jpg\nimg/chair/0983.jpg\nimg/chair/0984.jpg\nimg/chair/0985.jpg\nimg/chair/0986.jpg\nimg/chair/0987.jpg\nimg/chair/0988.jpg\nimg/chair/0989.jpg\nimg/chair/0990.jpg\nimg/chair/0993.jpg\nimg/chair/0994.jpg\nimg/chair/0995.jpg\nimg/chair/0996.jpg\nimg/chair/0997.jpg\nimg/chair/0998.jpg\nimg/chair/0999.jpg\nimg/chair/1000.jpg\nimg/chair/1001.jpg\nimg/chair/1002.jpg\nimg/chair/1003.jpg\nimg/chair/1006.jpg\nimg/chair/1007.jpg\nimg/chair/1008.jpg\nimg/chair/1009.jpg\nimg/chair/1010.jpg\nimg/chair/1011.jpg\nimg/chair/1013.jpg\nimg/chair/1014.jpg\nimg/chair/1015.jpg\nimg/chair/1016.jpg\nimg/chair/1017.jpg\nimg/chair/1018.jpg\nimg/chair/1019.jpg\nimg/chair/1022.jpg\nimg/chair/1023.jpg\nimg/chair/1024.jpg\nimg/chair/1025.jpg\nimg/chair/1026.jpg\nimg/chair/1027.jpg\nimg/chair/1028.jpg\nimg/chair/1029.jpg\nimg/chair/1031.jpg\nimg/chair/1032.jpg\nimg/chair/1033.jpg\nimg/chair/1034.jpg\nimg/chair/1035.jpg\nimg/chair/1036.jpg\nimg/chair/1037.jpg\nimg/chair/1038.jpg\nimg/chair/1039.jpg\nimg/chair/1040.jpg\nimg/chair/1041.jpg\nimg/chair/1042.jpg\nimg/chair/1043.jpg\nimg/chair/1044.jpg\nimg/chair/1045.jpg\nimg/chair/1048.jpg\nimg/chair/1049.jpg\nimg/chair/1051.jpg\nimg/chair/1052.jpg\nimg/chair/1053.jpg\nimg/chair/1054.jpg\nimg/chair/1055.jpg\nimg/chair/1056.jpg\nimg/chair/1057.jpg\nimg/chair/1058.jpg\nimg/chair/1059.jpg\nimg/chair/1060.jpg\nimg/chair/1061.jpg\nimg/chair/1062.jpg\nimg/chair/1064.jpg\nimg/chair/1069.jpg\nimg/chair/1070.jpg\nimg/chair/1071.jpg\nimg/chair/1072.jpg\nimg/chair/1073.jpg\nimg/chair/1075.jpg\nimg/chair/1076.jpg\nimg/chair/1077.jpg\nimg/chair/1078.jpg\nimg/chair/1079.jpg\nimg/chair/1080.jpg\nimg/chair/1081.jpg\nimg/chair/1082.jpg\nimg/chair/1083.jpg\nimg/chair/1084.jpg\nimg/chair/1088.jpg\nimg/chair/1089.jpg\nimg/chair/1091.jpg\nimg/chair/1092.jpg\nimg/chair/1093.jpg\nimg/chair/1094.jpg\nimg/chair/1096.jpg\nimg/chair/1097.jpg\nimg/chair/1098.jpg\nimg/chair/1099.jpg\nimg/chair/1100.jpg\nimg/chair/1101.jpg\nimg/chair/1102.jpg\nimg/chair/1103.jpg\nimg/chair/1104.jpg\nimg/chair/1105.jpg\nimg/chair/1106.jpg\nimg/chair/1108.jpg\nimg/chair/1110.jpg\nimg/chair/1111.jpg\nimg/chair/1112.jpg\nimg/chair/1113.jpg\nimg/chair/1114.jpg\nimg/chair/1115.jpg\nimg/chair/1116.jpg\nimg/chair/1117.jpg\nimg/chair/1118.jpg\nimg/chair/1119.jpg\nimg/chair/1121.jpg\nimg/chair/1122.jpg\nimg/chair/1123.jpg\nimg/chair/1124.jpg\nimg/chair/1125.jpg\nimg/chair/1126.jpg\nimg/chair/1127.jpg\nimg/chair/1128.jpg\nimg/chair/1129.jpg\nimg/chair/1130.jpg\nimg/chair/1131.jpg\nimg/chair/1132.jpg\nimg/chair/1133.jpg\nimg/chair/1134.jpg\nimg/chair/1135.jpg\nimg/chair/1136.jpg\nimg/chair/1137.jpg\nimg/chair/1138.jpg\nimg/chair/1139.jpg\nimg/chair/1140.jpg\nimg/chair/1141.jpg\nimg/chair/1142.jpg\nimg/chair/1143.jpg\nimg/chair/1144.jpg\nimg/chair/1145.jpg\nimg/chair/1146.jpg\nimg/chair/1147.jpg\nimg/chair/1148.jpg\nimg/chair/1149.jpg\nimg/chair/1150.jpg\nimg/chair/1151.jpg\nimg/chair/1152.jpg\nimg/chair/1153.jpg\nimg/chair/1154.jpg\nimg/chair/1155.jpg\nimg/chair/1156.jpg\nimg/chair/1157.jpg\nimg/chair/1158.jpg\nimg/chair/1159.jpg\nimg/chair/1160.jpg\nimg/chair/1161.jpg\nimg/chair/1162.jpg\nimg/chair/1163.jpg\nimg/chair/1164.jpg\nimg/chair/1165.jpg\nimg/chair/1166.jpg\nimg/chair/1167.jpg\nimg/chair/1168.jpg\nimg/chair/1169.jpg\nimg/chair/1170.jpg\nimg/chair/1171.jpg\nimg/chair/1172.jpg\nimg/chair/1174.jpg\nimg/chair/1176.jpg\nimg/chair/1177.jpg\nimg/chair/1178.jpg\nimg/chair/1179.jpg\nimg/chair/1180.jpg\nimg/chair/1181.jpg\nimg/chair/1182.jpg\nimg/chair/1183.jpg\nimg/chair/1184.jpg\nimg/chair/1185.jpg\nimg/chair/1186.jpg\nimg/chair/1187.jpg\nimg/chair/1188.jpg\nimg/chair/1190.jpg\nimg/chair/1191.jpg\nimg/chair/1192.jpg\nimg/chair/1193.jpg\nimg/chair/1194.jpg\nimg/chair/1195.jpg\nimg/chair/1196.jpg\nimg/chair/1197.jpg\nimg/chair/1198.jpg\nimg/chair/1199.jpg\nimg/chair/1200.jpg\nimg/chair/1201.jpg\nimg/chair/1202.jpg\nimg/chair/1203.jpg\nimg/chair/1204.jpg\nimg/chair/1205.jpg\nimg/chair/1206.jpg\nimg/chair/1207.jpg\nimg/chair/1208.jpg\nimg/chair/1209.jpg\nimg/chair/1210.jpg\nimg/chair/1211.jpg\nimg/chair/1212.jpg\nimg/chair/1213.jpg\nimg/chair/1214.jpg\nimg/chair/1215.jpg\nimg/chair/1216.jpg\nimg/chair/1217.jpg\nimg/chair/1219.jpg\nimg/chair/1220.jpg\nimg/chair/1221.jpg\nimg/chair/1222.jpg\nimg/chair/1223.jpg\nimg/chair/1224.jpg\nimg/chair/1225.jpg\nimg/chair/1226.jpg\nimg/chair/1227.jpg\nimg/chair/1229.jpg\nimg/chair/1230.jpg\nimg/chair/1231.jpg\nimg/chair/1232.jpg\nimg/chair/1233.jpg\nimg/chair/1234.jpg\nimg/chair/1235.jpg\nimg/chair/1236.jpg\nimg/chair/1237.jpg\nimg/chair/1238.jpg\nimg/chair/1239.jpg\nimg/chair/1240.jpg\nimg/chair/1241.jpg\nimg/chair/1242.jpg\nimg/chair/1243.jpg\nimg/chair/1244.jpg\nimg/chair/1246.jpg\nimg/chair/1247.jpg\nimg/chair/1248.jpg\nimg/chair/1250.jpg\nimg/chair/1251.jpg\nimg/chair/1252.jpg\nimg/chair/1253.jpg\nimg/chair/1254.jpg\nimg/chair/1255.jpg\nimg/chair/1256.jpg\nimg/chair/1257.jpg\nimg/chair/1258.jpg\nimg/chair/1259.jpg\nimg/chair/1260.jpg\nimg/chair/1261.jpg\nimg/chair/1262.jpg\nimg/chair/1263.jpg\nimg/chair/1264.jpg\nimg/chair/1267.jpg\nimg/chair/1268.jpg\nimg/chair/1269.jpg\nimg/chair/1270.jpg\nimg/chair/1271.jpg\nimg/chair/1273.jpg\nimg/chair/1274.jpg\nimg/chair/1275.jpg\nimg/chair/1276.jpg\nimg/chair/1277.jpg\nimg/chair/1278.jpg\nimg/chair/1279.jpg\nimg/chair/1280.jpg\nimg/chair/1281.jpg\nimg/chair/1282.jpg\nimg/chair/1283.jpg\nimg/chair/1284.jpg\nimg/chair/1285.jpg\nimg/chair/1286.jpg\nimg/chair/1287.jpg\nimg/chair/1288.jpg\nimg/chair/1289.jpg\nimg/chair/1290.jpg\nimg/chair/1291.jpg\nimg/chair/1292.jpg\nimg/chair/1293.jpg\nimg/chair/1294.jpg\nimg/chair/1295.jpg\nimg/chair/1296.jpg\nimg/chair/1297.jpg\nimg/chair/1298.jpg\nimg/chair/1299.jpg\nimg/chair/1300.jpg\nimg/chair/1301.jpg\nimg/chair/1302.jpg\nimg/chair/1303.jpg\nimg/chair/1304.jpg\nimg/chair/1305.jpg\nimg/chair/1306.jpg\nimg/chair/1307.jpg\nimg/chair/1308.jpg\nimg/chair/1309.jpg\nimg/chair/1311.jpg\nimg/chair/1312.jpg\nimg/chair/1313.jpg\nimg/chair/1314.jpg\nimg/chair/1315.jpg\nimg/chair/1316.jpg\nimg/chair/1317.jpg\nimg/chair/1318.jpg\nimg/chair/1319.jpg\nimg/chair/1320.jpg\nimg/chair/1321.jpg\nimg/chair/1322.jpg\nimg/chair/1323.jpg\nimg/chair/1324.jpg\nimg/chair/1325.jpg\nimg/chair/1326.jpg\nimg/chair/1327.jpg\nimg/chair/1328.jpg\nimg/chair/1330.jpg\nimg/chair/1331.jpg\nimg/chair/1332.jpg\nimg/chair/1333.jpg\nimg/chair/1334.jpg\nimg/chair/1335.jpg\nimg/chair/1336.jpg\nimg/chair/1337.jpg\nimg/chair/1338.jpg\nimg/chair/1339.jpg\nimg/chair/1340.jpg\nimg/chair/1341.jpg\nimg/chair/1342.jpg\nimg/chair/1343.jpg\nimg/chair/1344.jpg\nimg/chair/1345.jpg\nimg/chair/1347.jpg\nimg/chair/1348.jpg\nimg/chair/1349.jpg\nimg/chair/1350.jpg\nimg/chair/1351.jpg\nimg/chair/1352.jpg\nimg/chair/1354.jpg\nimg/chair/1355.jpg\nimg/chair/1356.jpg\nimg/chair/1357.jpg\nimg/chair/1358.jpg\nimg/chair/1359.jpg\nimg/chair/1360.jpg\nimg/chair/1361.jpg\nimg/chair/1362.jpg\nimg/chair/1363.jpg\nimg/chair/1364.jpg\nimg/chair/1365.jpg\nimg/chair/1366.jpg\nimg/chair/1367.jpg\nimg/chair/1368.jpg\nimg/chair/1369.jpg\nimg/chair/1370.jpg\nimg/chair/1371.jpg\nimg/chair/1372.jpg\nimg/chair/1373.jpg\nimg/chair/1374.jpg\nimg/chair/1375.jpg\nimg/chair/1376.jpg\nimg/chair/1377.jpg\nimg/chair/1378.jpg\nimg/chair/1379.jpg\nimg/chair/1380.jpg\nimg/chair/1381.jpg\nimg/chair/1382.jpg\nimg/chair/1383.jpg\nimg/chair/1384.jpg\nimg/chair/1385.jpg\nimg/chair/1386.jpg\nimg/chair/1387.jpg\nimg/chair/1388.jpg\nimg/chair/1389.jpg\nimg/chair/1390.jpg\nimg/chair/1391.jpg\nimg/chair/1392.jpg\nimg/chair/1393.jpg\nimg/chair/1394.jpg\nimg/chair/1395.jpg\nimg/chair/1396.jpg\nimg/chair/1397.jpg\nimg/chair/1398.jpg\nimg/chair/1399.jpg\nimg/chair/1400.jpg\nimg/chair/1401.jpg\nimg/chair/1402.jpg\nimg/chair/1403.jpg\nimg/chair/1404.jpg\nimg/chair/1405.jpg\nimg/chair/1406.jpg\nimg/chair/1407.jpg\nimg/chair/1408.jpg\nimg/chair/1409.jpg\nimg/chair/1410.jpg\nimg/chair/1411.jpg\nimg/chair/1413.jpg\nimg/chair/1414.jpg\nimg/chair/1415.jpg\nimg/chair/1416.jpg\nimg/chair/1417.jpg\nimg/chair/1418.jpg\nimg/chair/1419.jpg\nimg/chair/1420.jpg\nimg/chair/1421.jpg\nimg/chair/1423.jpg\nimg/chair/1424.jpg\nimg/chair/1426.jpg\nimg/chair/1427.jpg\nimg/chair/1428.jpg\nimg/chair/1429.jpg\nimg/chair/1430.jpg\nimg/chair/1431.jpg\nimg/chair/1432.jpg\nimg/chair/1433.jpg\nimg/chair/1434.jpg\nimg/chair/1435.jpg\nimg/chair/1436.jpg\nimg/chair/1437.jpg\nimg/chair/1438.jpg\nimg/chair/1439.jpg\nimg/chair/1440.jpg\nimg/chair/1441.jpg\nimg/chair/1442.jpg\nimg/chair/1443.jpg\nimg/chair/1444.jpg\nimg/chair/1445.jpg\nimg/chair/1446.jpg\nimg/chair/1447.jpg\nimg/chair/1448.jpg\nimg/chair/1449.jpg\nimg/chair/1450.jpg\nimg/chair/1451.jpg\nimg/chair/1452.jpg\nimg/chair/1453.jpg\nimg/chair/1454.jpg\nimg/chair/1456.jpg\nimg/chair/1457.jpg\nimg/chair/1458.jpg\nimg/chair/1459.jpg\nimg/chair/1460.jpg\nimg/chair/1461.jpg\nimg/chair/1462.jpg\nimg/chair/1463.jpg\nimg/chair/1464.jpg\nimg/chair/1465.jpg\nimg/chair/1466.jpg\nimg/chair/1467.jpg\nimg/chair/1468.jpg\nimg/chair/1469.jpg\nimg/chair/1470.jpg\nimg/chair/1471.jpg\nimg/chair/1472.jpg\nimg/chair/1473.jpg\nimg/chair/1474.jpg\nimg/chair/1475.jpg\nimg/chair/1476.jpg\nimg/chair/1477.jpg\nimg/chair/1478.jpg\nimg/chair/1479.jpg\nimg/chair/1480.jpg\nimg/chair/1481.jpg\nimg/chair/1482.jpg\nimg/chair/1483.jpg\nimg/chair/1484.jpg\nimg/chair/1485.jpg\nimg/chair/1486.jpg\nimg/chair/1487.jpg\nimg/chair/1488.jpg\nimg/chair/1489.jpg\nimg/chair/1490.jpg\nimg/chair/1491.jpg\nimg/chair/1492.jpg\nimg/chair/1493.jpg\nimg/chair/1494.jpg\nimg/chair/1495.jpg\nimg/chair/1496.jpg\nimg/chair/1497.jpg\nimg/chair/1498.jpg\nimg/chair/1499.jpg\nimg/chair/1500.jpg\nimg/chair/1501.jpg\nimg/chair/1502.jpg\nimg/chair/1503.jpg\nimg/chair/1504.jpg\nimg/chair/1505.jpg\nimg/chair/1506.jpg\nimg/chair/1507.jpg\nimg/chair/1508.jpg\nimg/chair/1509.jpg\nimg/chair/1510.jpg\nimg/chair/1511.jpg\nimg/chair/1512.jpg\nimg/chair/1513.jpg\nimg/chair/1514.jpg\nimg/chair/1515.jpg\nimg/chair/1516.jpg\nimg/chair/1517.jpg\nimg/chair/1518.jpg\nimg/chair/1519.jpg\nimg/chair/1520.jpg\nimg/chair/1521.jpg\nimg/chair/1522.jpg\nimg/chair/1523.jpg\nimg/chair/1524.jpg\nimg/chair/1525.jpg\nimg/chair/1526.jpg\nimg/chair/1527.jpg\nimg/chair/1528.jpg\nimg/chair/1530.jpg\nimg/chair/1531.jpg\nimg/chair/1532.jpg\nimg/chair/1533.jpg\nimg/chair/1534.jpg\nimg/chair/1535.jpg\nimg/chair/1536.jpg\nimg/chair/1537.jpg\nimg/chair/1538.jpg\nimg/chair/1539.jpg\nimg/chair/1540.jpg\nimg/chair/1541.jpg\nimg/chair/1542.jpg\nimg/chair/1543.jpg\nimg/chair/1544.jpg\nimg/chair/1545.jpg\nimg/chair/1546.jpg\nimg/chair/1547.jpg\nimg/desk/0001.jpg\nimg/desk/0002.jpg\nimg/desk/0003.jpg\nimg/desk/0004.jpg\nimg/desk/0005.jpg\nimg/desk/0006.jpg\nimg/desk/0007.jpg\nimg/desk/0008.jpg\nimg/desk/0176.jpg\nimg/desk/0177.jpg\nimg/desk/0178.jpg\nimg/desk/0179.jpg\nimg/desk/0180.jpg\nimg/desk/0181.jpg\nimg/desk/0182.jpg\nimg/desk/0183.jpg\nimg/desk/0184.jpg\nimg/desk/0185.jpg\nimg/desk/0186.jpg\nimg/desk/0203.jpg\nimg/desk/0204.jpg\nimg/desk/0205.jpg\nimg/desk/0206.jpg\nimg/desk/0207.jpg\nimg/desk/0208.jpg\nimg/desk/0686.jpg\nimg/desk/0687.jpg\nimg/desk/0321.jpg\nimg/desk/0322.jpg\nimg/desk/0323.jpg\nimg/desk/0324.jpg\nimg/desk/0325.jpg\nimg/desk/0326.jpg\nimg/desk/0327.jpg\nimg/desk/0328.jpg\nimg/desk/0329.jpg\nimg/desk/0330.jpg\nimg/desk/0331.jpg\nimg/desk/0332.jpg\nimg/desk/0333.jpg\nimg/desk/0334.jpg\nimg/desk/0335.jpg\nimg/desk/0336.jpg\nimg/desk/0337.jpg\nimg/desk/0338.jpg\nimg/desk/0339.jpg\nimg/desk/0340.jpg\nimg/desk/0341.jpg\nimg/desk/0342.jpg\nimg/desk/0343.jpg\nimg/desk/0344.jpg\nimg/desk/0345.jpg\nimg/desk/0346.jpg\nimg/desk/0347.jpg\nimg/desk/0348.jpg\nimg/desk/0349.jpg\nimg/desk/0350.jpg\nimg/desk/0351.jpg\nimg/desk/0352.jpg\nimg/desk/0353.jpg\nimg/desk/0354.jpg\nimg/desk/0355.jpg\nimg/desk/0356.jpg\nimg/desk/0357.jpg\nimg/desk/0358.jpg\nimg/desk/0359.jpg\nimg/desk/0360.jpg\nimg/desk/0361.jpg\nimg/desk/0362.jpg\nimg/desk/0363.jpg\nimg/desk/0364.jpg\nimg/desk/0365.jpg\nimg/desk/0366.jpg\nimg/desk/0367.jpg\nimg/desk/0368.jpg\nimg/desk/0369.jpg\nimg/desk/0370.jpg\nimg/desk/0371.png\nimg/desk/0372.jpg\nimg/desk/0373.png\nimg/desk/0374.jpg\nimg/desk/0375.jpg\nimg/desk/0376.jpg\nimg/desk/0377.jpg\nimg/desk/0378.jpg\nimg/desk/0379.jpg\nimg/desk/0380.jpg\nimg/desk/0381.jpg\nimg/desk/0382.jpg\nimg/desk/0383.png\nimg/desk/0384.jpg\nimg/desk/0385.jpg\nimg/desk/0386.jpg\nimg/desk/0387.png\nimg/desk/0388.jpg\nimg/desk/0389.png\nimg/desk/0390.jpg\nimg/desk/0391.jpg\nimg/desk/0392.jpeg\nimg/desk/0393.jpg\nimg/desk/0394.jpg\nimg/desk/0395.jpg\nimg/desk/0396.jpg\nimg/desk/0397.jpg\nimg/desk/0398.jpg\nimg/desk/0399.jpg\nimg/desk/0400.jpg\nimg/desk/0401.jpeg\nimg/desk/0402.jpg\nimg/desk/0403.jpg\nimg/desk/0404.jpg\nimg/desk/0405.jpg\nimg/desk/0406.jpg\nimg/desk/0407.jpg\nimg/desk/0408.jpg\nimg/desk/0409.jpg\nimg/desk/0410.jpg\nimg/desk/0411.jpg\nimg/desk/0412.jpg\nimg/desk/0413.jpg\nimg/desk/0414.jpg\nimg/desk/0415.jpg\nimg/misc/0007.jpg\nimg/misc/0008.jpg\nimg/misc/0009.jpg\nimg/misc/0010.jpg\nimg/misc/0011.jpg\nimg/misc/0012.jpg\nimg/misc/0013.jpg\nimg/misc/0014.jpg\nimg/misc/0025.jpg\nimg/misc/0030.jpg\nimg/misc/0034.jpg\nimg/misc/0036.jpg\nimg/misc/0038.jpg\nimg/misc/0043.jpg\nimg/misc/0049.jpg\nimg/misc/0051.jpg\nimg/misc/0054.jpg\nimg/sofa/0002.png\nimg/sofa/0003.png\nimg/sofa/0005.png\nimg/sofa/0014.png\nimg/sofa/0018.png\nimg/sofa/0019.png\nimg/sofa/0028.png\nimg/sofa/0042.png\nimg/sofa/0043.png\nimg/sofa/0048.png\nimg/sofa/0056.png\nimg/sofa/0071.png\nimg/sofa/0073.png\nimg/sofa/0074.png\nimg/sofa/0079.png\nimg/sofa/0080.png\nimg/sofa/0091.png\nimg/sofa/0092.png\nimg/sofa/0102.png\nimg/sofa/0103.png\nimg/sofa/0105.png\nimg/sofa/0106.png\nimg/sofa/0109.png\nimg/sofa/0110.png\nimg/sofa/0112.png\nimg/sofa/0115.png\nimg/sofa/0116.png\nimg/sofa/0117.png\nimg/sofa/0119.png\nimg/sofa/0121.png\nimg/sofa/0156.jpg\nimg/sofa/0157.jpg\nimg/sofa/0158.jpeg\nimg/sofa/0159.jpg\nimg/sofa/0160.jpg\nimg/sofa/0161.jpg\nimg/sofa/0162.jpg\nimg/sofa/0163.jpg\nimg/sofa/0164.jpg\nimg/sofa/0165.jpg\nimg/sofa/0166.jpg\nimg/sofa/0167.jpg\nimg/sofa/0168.jpg\nimg/sofa/0169.jpg\nimg/sofa/0170.jpg\nimg/sofa/0171.jpg\nimg/sofa/0172.png\nimg/sofa/0173.jpg\nimg/sofa/0174.jpg\nimg/sofa/0175.jpg\nimg/sofa/0176.jpg\nimg/sofa/0177.jpg\nimg/sofa/0178.jpg\nimg/sofa/0179.jpg\nimg/sofa/0180.jpg\nimg/sofa/0181.jpg\nimg/sofa/0182.jpg\nimg/sofa/0183.jpg\nimg/sofa/0184.jpg\nimg/sofa/0185.jpg\nimg/sofa/0186.jpg\nimg/sofa/0187.jpg\nimg/sofa/0188.jpg\nimg/sofa/0189.jpg\nimg/sofa/0190.jpg\nimg/sofa/0191.jpg\nimg/sofa/0192.jpg\nimg/sofa/0193.jpg\nimg/sofa/0194.jpg\nimg/sofa/0195.jpg\nimg/sofa/0196.jpg\nimg/sofa/0197.jpg\nimg/sofa/0198.jpg\nimg/sofa/0199.jpg\nimg/sofa/0200.jpg\nimg/sofa/0201.jpg\nimg/sofa/0202.jpg\nimg/sofa/0203.jpg\nimg/sofa/0204.jpg\nimg/sofa/0205.jpg\nimg/sofa/0206.jpg\nimg/sofa/0207.jpg\nimg/sofa/0208.jpg\nimg/sofa/0209.jpg\nimg/sofa/0210.jpg\nimg/sofa/0211.jpg\nimg/sofa/0212.jpg\nimg/sofa/0213.jpg\nimg/sofa/0214.jpg\nimg/sofa/0215.jpg\nimg/sofa/0216.jpg\nimg/sofa/0217.jpg\nimg/sofa/0218.jpg\nimg/sofa/0219.jpg\nimg/sofa/0220.jpg\nimg/sofa/0221.jpg\nimg/sofa/0222.jpg\nimg/sofa/0223.jpg\nimg/sofa/0224.jpg\nimg/sofa/0225.jpg\nimg/sofa/0226.jpg\nimg/sofa/0227.jpg\nimg/sofa/0228.jpg\nimg/sofa/0229.jpg\nimg/sofa/0230.jpg\nimg/sofa/0231.jpg\nimg/sofa/0232.jpg\nimg/sofa/0233.jpg\nimg/sofa/0234.jpg\nimg/sofa/0235.jpg\nimg/sofa/0236.jpg\nimg/sofa/0237.jpg\nimg/sofa/0238.jpg\nimg/sofa/0239.jpg\nimg/sofa/0240.jpg\nimg/sofa/0241.png\nimg/sofa/0242.jpg\nimg/sofa/0243.jpg\nimg/sofa/0244.jpg\nimg/sofa/0245.jpg\nimg/sofa/0246.jpg\nimg/sofa/0247.jpg\nimg/sofa/0248.jpg\nimg/sofa/0249.jpg\nimg/sofa/0250.jpg\nimg/sofa/0251.jpg\nimg/sofa/0252.jpg\nimg/sofa/0253.jpg\nimg/sofa/0254.jpg\nimg/sofa/0255.jpg\nimg/sofa/0256.jpg\nimg/sofa/0257.png\nimg/sofa/0258.jpg\nimg/sofa/0259.jpg\nimg/sofa/0260.jpg\nimg/sofa/0261.jpg\nimg/sofa/0262.jpg\nimg/sofa/0263.jpg\nimg/sofa/0264.jpg\nimg/sofa/0265.jpg\nimg/sofa/0266.jpg\nimg/sofa/0267.jpg\nimg/sofa/0268.jpg\nimg/sofa/0269.jpg\nimg/sofa/0270.jpg\nimg/sofa/0271.jpg\nimg/sofa/0272.jpg\nimg/sofa/0273.jpg\nimg/sofa/0274.jpg\nimg/sofa/0275.jpg\nimg/sofa/0276.jpg\nimg/sofa/0277.jpg\nimg/sofa/0278.jpg\nimg/sofa/0279.jpg\nimg/sofa/0280.jpg\nimg/sofa/0281.png\nimg/sofa/0282.jpg\nimg/sofa/0283.jpg\nimg/sofa/0284.jpg\nimg/sofa/0285.jpg\nimg/sofa/0286.jpg\nimg/sofa/0287.jpg\nimg/sofa/0288.jpg\nimg/sofa/0289.jpg\nimg/sofa/0290.jpg\nimg/sofa/0291.jpg\nimg/sofa/0292.jpg\nimg/sofa/0293.jpg\nimg/sofa/0294.jpg\nimg/sofa/0295.jpg\nimg/sofa/0296.jpg\nimg/sofa/0297.jpg\nimg/sofa/0298.jpg\nimg/sofa/0299.jpg\nimg/sofa/0300.jpg\nimg/sofa/0301.jpg\nimg/sofa/0302.jpg\nimg/sofa/0303.jpg\nimg/sofa/0304.jpg\nimg/sofa/0305.jpg\nimg/sofa/0306.jpg\nimg/sofa/0307.jpg\nimg/sofa/0308.jpg\nimg/sofa/0309.jpg\nimg/sofa/0310.jpg\nimg/sofa/0311.jpg\nimg/sofa/0312.jpg\nimg/sofa/0313.jpg\nimg/sofa/0314.jpg\nimg/sofa/0315.jpg\nimg/sofa/0316.jpg\nimg/sofa/0317.jpg\nimg/sofa/0318.jpg\nimg/sofa/0319.jpg\nimg/sofa/0320.jpg\nimg/sofa/0321.jpg\nimg/sofa/0322.jpg\nimg/sofa/0323.jpeg\nimg/sofa/0324.jpg\nimg/sofa/0325.jpg\nimg/sofa/0326.jpg\nimg/sofa/0327.png\nimg/sofa/0328.jpg\nimg/sofa/0329.jpg\nimg/sofa/0330.jpg\nimg/sofa/0331.jpg\nimg/sofa/0332.jpg\nimg/sofa/0333.jpg\nimg/sofa/0334.jpg\nimg/sofa/0335.jpg\nimg/sofa/0336.jpg\nimg/sofa/0337.jpg\nimg/sofa/0338.jpg\nimg/sofa/0339.jpg\nimg/sofa/0340.jpg\nimg/sofa/0341.jpg\nimg/sofa/0342.jpg\nimg/sofa/0343.jpg\nimg/sofa/0344.jpg\nimg/sofa/0345.jpg\nimg/sofa/0346.jpg\nimg/sofa/0347.jpg\nimg/sofa/0348.jpg\nimg/sofa/0349.jpg\nimg/sofa/0350.jpg\nimg/sofa/0351.jpg\nimg/sofa/0352.jpg\nimg/sofa/0353.jpg\nimg/sofa/0660.jpg\nimg/sofa/0661.jpg\nimg/sofa/0662.jpg\nimg/sofa/0663.jpg\nimg/sofa/0664.jpg\nimg/sofa/0665.jpg\nimg/sofa/0666.jpg\nimg/sofa/0667.jpg\nimg/sofa/0668.jpg\nimg/sofa/0669.jpg\nimg/sofa/0670.jpg\nimg/sofa/0671.jpg\nimg/sofa/0672.jpg\nimg/sofa/0673.jpg\nimg/sofa/0674.jpg\nimg/sofa/0675.jpg\nimg/sofa/0676.jpg\nimg/sofa/0677.jpg\nimg/sofa/0678.jpg\nimg/sofa/0679.jpg\nimg/sofa/0680.jpg\nimg/sofa/1378.jpg\nimg/sofa/1379.jpg\nimg/sofa/1380.jpg\nimg/sofa/1381.jpg\nimg/sofa/1382.jpg\nimg/sofa/1383.jpg\nimg/sofa/1384.jpg\nimg/sofa/1385.jpg\nimg/sofa/1386.jpg\nimg/sofa/1387.jpg\nimg/sofa/1388.jpg\nimg/sofa/1389.jpg\nimg/sofa/1390.jpg\nimg/sofa/1391.jpg\nimg/sofa/1392.jpg\nimg/sofa/1393.jpg\nimg/sofa/1394.jpg\nimg/sofa/1395.jpg\nimg/sofa/1396.jpg\nimg/sofa/1397.jpg\nimg/sofa/1398.jpg\nimg/sofa/1399.jpg\nimg/sofa/1400.jpg\nimg/sofa/1401.jpg\nimg/sofa/1402.jpg\nimg/sofa/1403.jpg\nimg/sofa/1404.jpg\nimg/sofa/1405.jpg\nimg/sofa/1406.jpg\nimg/sofa/1407.jpg\nimg/sofa/1408.jpg\nimg/sofa/1409.jpg\nimg/sofa/1410.jpg\nimg/sofa/1411.jpg\nimg/sofa/1412.jpg\nimg/sofa/1413.jpg\nimg/sofa/1414.jpg\nimg/sofa/1415.jpg\nimg/sofa/1416.jpg\nimg/sofa/1417.jpg\nimg/sofa/1418.jpg\nimg/sofa/1419.jpg\nimg/sofa/1420.jpg\nimg/sofa/1421.jpg\nimg/sofa/1422.jpg\nimg/sofa/1423.jpg\nimg/sofa/1424.jpg\nimg/sofa/1425.jpg\nimg/sofa/1426.jpg\nimg/sofa/1427.jpg\nimg/sofa/1428.jpg\nimg/sofa/1429.jpg\nimg/sofa/1430.jpg\nimg/sofa/1431.jpg\nimg/sofa/1432.jpg\nimg/sofa/1433.jpg\nimg/sofa/1434.jpg\nimg/sofa/1435.jpg\nimg/sofa/1436.jpg\nimg/sofa/1437.jpg\nimg/sofa/1438.jpg\nimg/sofa/1439.jpg\nimg/sofa/1440.jpg\nimg/sofa/1441.jpg\nimg/sofa/1442.jpg\nimg/sofa/1443.jpg\nimg/sofa/1444.jpg\nimg/sofa/1445.jpg\nimg/sofa/1446.jpg\nimg/sofa/1447.jpg\nimg/sofa/1815.jpg\nimg/sofa/1816.jpg\nimg/sofa/1817.jpeg\nimg/sofa/1818.jpg\nimg/sofa/1819.jpg\nimg/sofa/1820.jpg\nimg/sofa/1821.jpg\nimg/sofa/1822.jpg\nimg/sofa/1823.jpg\nimg/sofa/1824.jpg\nimg/sofa/1825.jpg\nimg/sofa/1826.jpg\nimg/sofa/1827.jpg\nimg/sofa/1828.jpg\nimg/sofa/1829.jpg\nimg/sofa/1830.jpg\nimg/sofa/1831.jpg\nimg/sofa/1832.jpg\nimg/sofa/1833.jpg\nimg/sofa/1834.jpg\nimg/sofa/1835.jpg\nimg/sofa/1836.jpg\nimg/sofa/1837.jpg\nimg/sofa/1838.jpg\nimg/sofa/1839.jpg\nimg/sofa/1840.jpg\nimg/sofa/1841.jpg\nimg/sofa/1842.jpg\nimg/sofa/1843.jpg\nimg/sofa/1844.jpg\nimg/sofa/1845.jpg\nimg/sofa/1846.jpg\nimg/sofa/1847.jpg\nimg/sofa/1848.jpg\nimg/sofa/1849.jpg\nimg/sofa/1850.jpg\nimg/sofa/1851.jpg\nimg/sofa/1852.jpg\nimg/sofa/1853.jpg\nimg/sofa/1854.jpg\nimg/sofa/1855.jpg\nimg/sofa/1856.jpg\nimg/sofa/1857.jpg\nimg/sofa/1858.jpg\nimg/sofa/1859.jpg\nimg/sofa/1860.jpg\nimg/sofa/1861.jpg\nimg/sofa/1862.jpg\nimg/sofa/1863.jpg\nimg/sofa/1864.jpg\nimg/sofa/1865.jpg\nimg/sofa/1866.jpg\nimg/sofa/1867.png\nimg/sofa/1868.jpg\nimg/sofa/1869.jpg\nimg/sofa/1870.jpg\nimg/sofa/1871.jpg\nimg/sofa/1872.jpg\nimg/sofa/1873.jpg\nimg/sofa/1874.jpg\nimg/sofa/1875.png\nimg/sofa/1876.jpg\nimg/sofa/1877.jpg\nimg/sofa/1878.jpg\nimg/sofa/1879.jpg\nimg/sofa/1880.jpg\nimg/sofa/1881.png\nimg/sofa/1882.jpg\nimg/sofa/1883.jpeg\nimg/sofa/1884.jpg\nimg/sofa/1885.jpg\nimg/sofa/1886.jpg\nimg/sofa/1887.jpeg\nimg/sofa/1888.jpg\nimg/sofa/1889.jpg\nimg/sofa/1890.jpg\nimg/sofa/1891.jpg\nimg/sofa/1892.jpeg\nimg/sofa/1893.jpg\nimg/sofa/1894.jpg\nimg/sofa/1895.jpg\nimg/sofa/1896.jpg\nimg/sofa/1897.jpg\nimg/sofa/1898.jpg\nimg/sofa/1899.jpg\nimg/sofa/1900.jpg\nimg/sofa/1901.jpg\nimg/sofa/1902.jpg\nimg/sofa/1903.jpg\nimg/sofa/1904.jpg\nimg/sofa/1905.jpg\nimg/sofa/1906.jpg\nimg/sofa/1907.jpg\nimg/sofa/1908.jpg\nimg/sofa/1909.jpg\nimg/sofa/1910.jpg\nimg/sofa/1911.jpg\nimg/sofa/1912.jpg\nimg/sofa/1913.jpg\nimg/sofa/1914.jpg\nimg/sofa/1915.jpg\nimg/sofa/1916.jpg\nimg/sofa/1917.jpg\nimg/sofa/1918.jpg\nimg/sofa/1919.jpg\nimg/sofa/1920.jpg\nimg/sofa/1921.jpg\nimg/sofa/1922.jpg\nimg/sofa/1923.jpg\nimg/sofa/1924.jpg\nimg/sofa/1925.jpg\nimg/sofa/1926.jpg\nimg/sofa/1927.jpg\nimg/sofa/1928.jpg\nimg/sofa/1929.jpg\nimg/sofa/1930.jpg\nimg/sofa/1931.jpg\nimg/sofa/1932.jpg\nimg/sofa/1933.jpg\nimg/sofa/1934.jpg\nimg/sofa/1935.jpg\nimg/sofa/1936.jpg\nimg/sofa/1937.jpg\nimg/table/0104.jpg\nimg/table/0105.jpg\nimg/table/0106.jpg\nimg/table/0119.jpg\nimg/table/0540.jpg\nimg/table/0541.jpg\nimg/table/0542.jpg\nimg/table/0543.jpg\nimg/table/0544.jpg\nimg/table/0545.jpg\nimg/table/0546.jpg\nimg/table/0547.jpg\nimg/table/0548.jpg\nimg/table/0549.jpg\nimg/table/0550.jpg\nimg/table/0551.jpg\nimg/table/0552.jpg\nimg/table/0553.jpg\nimg/table/0554.jpg\nimg/table/0555.jpg\nimg/table/0556.jpg\nimg/table/0557.jpg\nimg/table/0558.jpg\nimg/table/0559.jpg\nimg/table/0560.jpg\nimg/table/0561.jpg\nimg/table/0562.jpg\nimg/table/0563.jpg\nimg/table/0564.jpg\nimg/table/0565.jpg\nimg/table/0566.jpg\nimg/table/0567.jpg\nimg/table/0568.jpg\nimg/table/0569.jpg\nimg/table/0570.jpg\nimg/table/0571.jpg\nimg/table/0572.jpg\nimg/table/0573.jpg\nimg/table/0574.jpg\nimg/table/0575.jpg\nimg/table/0576.jpg\nimg/table/0577.jpg\nimg/table/0578.jpg\nimg/table/0579.jpg\nimg/table/0580.jpg\nimg/table/0581.jpg\nimg/table/0582.jpg\nimg/table/0583.jpg\nimg/table/0584.jpeg\nimg/table/0585.jpg\nimg/table/0586.jpg\nimg/table/0587.jpg\nimg/table/0588.jpg\nimg/table/0589.jpg\nimg/table/0590.jpg\nimg/table/0591.jpg\nimg/table/0592.jpg\nimg/table/0593.jpg\nimg/table/0594.jpg\nimg/table/0595.jpg\nimg/table/0688.jpg\nimg/table/0689.jpg\nimg/table/0690.jpg\nimg/table/0691.jpg\nimg/table/0692.jpg\nimg/table/0693.jpg\nimg/table/0694.jpg\nimg/table/0695.jpg\nimg/table/0696.jpg\nimg/table/0697.jpg\nimg/table/0698.jpg\nimg/table/0699.jpg\nimg/table/0700.jpg\nimg/table/0701.jpg\nimg/table/0702.jpg\nimg/table/0703.jpg\nimg/table/0704.jpg\nimg/table/0705.jpg\nimg/table/0706.jpg\nimg/table/0707.jpg\nimg/table/0708.jpg\nimg/table/0709.jpg\nimg/table/0710.jpg\nimg/table/0711.jpg\nimg/table/0712.jpg\nimg/table/0713.jpg\nimg/table/0714.jpg\nimg/table/0715.jpg\nimg/table/0716.jpg\nimg/table/0717.jpg\nimg/table/0718.jpg\nimg/table/0719.jpg\nimg/table/0720.jpg\nimg/table/0721.jpg\nimg/table/0722.jpg\nimg/table/0723.jpg\nimg/table/0724.jpg\nimg/table/0725.jpg\nimg/table/0726.jpg\nimg/table/0727.jpg\nimg/table/0728.jpg\nimg/table/0729.jpg\nimg/table/0730.jpg\nimg/table/0731.jpg\nimg/table/0732.jpg\nimg/table/0733.jpg\nimg/table/0734.jpg\nimg/table/0735.jpg\nimg/table/0736.jpeg\nimg/table/0737.jpg\nimg/table/0024.png\nimg/table/0994.jpg\nimg/table/0995.jpg\nimg/table/0996.jpeg\nimg/table/0997.jpg\nimg/table/0068.png\nimg/table/1082.jpg\nimg/table/1083.jpg\nimg/table/1084.jpg\nimg/table/1085.jpg\nimg/table/1086.jpg\nimg/table/1087.jpg\nimg/table/1088.jpg\nimg/table/1097.jpg\nimg/table/1098.jpg\nimg/table/1099.jpg\nimg/table/1100.jpg\nimg/table/1101.jpg\nimg/table/1102.jpg\nimg/table/1103.jpg\nimg/table/1104.jpg\nimg/table/1105.jpg\nimg/table/1106.jpg\nimg/table/1107.jpg\nimg/table/1108.jpg\nimg/table/1109.jpg\nimg/table/1110.jpg\nimg/table/1111.jpg\nimg/table/1112.jpg\nimg/table/1113.jpg\nimg/table/1114.jpg\nimg/table/1115.png\nimg/table/1116.jpg\nimg/table/1117.jpg\nimg/table/1118.jpg\nimg/table/1119.jpg\nimg/table/1120.jpg\nimg/table/1121.jpg\nimg/table/1122.jpg\nimg/table/1123.jpg\nimg/table/1124.jpg\nimg/table/1125.jpg\nimg/table/1126.jpg\nimg/table/1127.jpg\nimg/table/1128.png\nimg/table/1129.jpg\nimg/table/1130.jpg\nimg/table/1131.jpg\nimg/table/1132.jpg\nimg/table/1133.jpg\nimg/table/1134.jpg\nimg/table/1135.jpg\nimg/table/1136.jpg\nimg/table/1137.png\nimg/table/1138.jpg\nimg/table/1139.jpg\nimg/table/1140.jpg\nimg/table/1141.jpg\nimg/table/1142.jpg\nimg/table/1143.jpg\nimg/table/1144.jpg\nimg/table/1145.jpg\nimg/table/1146.jpg\nimg/table/1147.jpg\nimg/table/1148.jpg\nimg/table/1149.jpg\nimg/table/1150.jpg\nimg/table/1151.jpg\nimg/table/1152.jpg\nimg/table/1153.jpg\nimg/table/1154.jpg\nimg/table/1155.jpg\nimg/table/1156.jpg\nimg/table/1157.jpg\nimg/table/1158.jpg\nimg/table/1159.jpg\nimg/table/1160.jpg\nimg/table/1161.jpg\nimg/table/1162.jpg\nimg/table/1163.jpg\nimg/table/1164.jpg\nimg/table/1165.jpg\nimg/table/1166.jpg\nimg/table/1167.jpg\nimg/table/1168.jpg\nimg/table/1169.jpg\nimg/table/1170.jpg\nimg/table/1171.jpg\nimg/table/1172.jpg\nimg/table/1173.jpg\nimg/table/1174.jpg\nimg/table/1175.jpg\nimg/table/1176.jpg\nimg/table/1177.jpg\nimg/table/1178.jpg\nimg/table/1179.jpg\nimg/table/1180.jpg\nimg/table/1181.jpg\nimg/table/1182.jpg\nimg/table/1183.jpg\nimg/table/1184.jpg\nimg/table/1185.jpg\nimg/table/1186.jpg\nimg/table/1187.jpg\nimg/table/1188.jpg\nimg/table/1189.jpg\nimg/table/1190.jpg\nimg/table/1191.jpg\nimg/table/1192.jpg\nimg/table/1193.jpg\nimg/table/1225.jpg\nimg/table/1226.jpg\nimg/table/1227.jpg\nimg/table/1228.jpg\nimg/table/1229.jpg\nimg/table/1230.jpg\nimg/table/1231.jpg\nimg/table/1232.jpg\nimg/table/1233.jpg\nimg/table/1234.jpg\nimg/table/1235.jpg\nimg/table/1236.jpg\nimg/table/1237.jpg\nimg/table/1238.jpg\nimg/table/1239.jpg\nimg/table/1240.jpg\nimg/table/1241.jpg\nimg/table/1242.jpg\nimg/table/1243.jpg\nimg/table/1244.jpg\nimg/table/1245.jpg\nimg/table/1246.jpg\nimg/table/1247.jpg\nimg/table/1248.jpg\nimg/table/1249.jpg\nimg/table/1250.jpg\nimg/table/1251.jpg\nimg/table/1252.jpg\nimg/table/1253.jpg\nimg/table/1254.jpg\nimg/table/1255.jpg\nimg/table/1256.jpg\nimg/table/1257.jpg\nimg/table/1258.jpg\nimg/table/1259.jpg\nimg/table/1260.jpg\nimg/table/1261.jpg\nimg/table/1262.jpg\nimg/table/1263.jpg\nimg/table/1264.jpg\nimg/table/1265.jpg\nimg/table/1266.jpg\nimg/table/1267.jpg\nimg/table/1324.jpg\nimg/table/1325.jpg\nimg/table/1326.jpg\nimg/table/1327.jpg\nimg/table/1328.jpg\nimg/table/1329.jpg\nimg/table/1330.jpg\nimg/table/1331.jpg\nimg/table/1332.jpg\nimg/table/1333.jpg\nimg/table/1334.jpg\nimg/table/1335.jpg\nimg/table/1336.jpg\nimg/table/1337.jpg\nimg/table/1338.jpg\nimg/table/1339.jpg\nimg/table/1340.jpg\nimg/table/1341.jpg\nimg/table/1342.jpg\nimg/table/1343.jpg\nimg/table/1344.jpg\nimg/table/1345.jpg\nimg/table/1346.jpg\nimg/table/1347.jpg\nimg/table/1348.jpg\nimg/table/1349.jpg\nimg/table/1350.jpg\nimg/table/1351.jpg\nimg/table/1352.jpg\nimg/table/1353.jpg\nimg/table/1354.jpg\nimg/table/1355.jpg\nimg/table/1356.jpg\nimg/table/1357.jpg\nimg/table/1358.jpg\nimg/table/1359.jpg\nimg/table/1360.jpg\nimg/table/1361.jpg\nimg/table/1362.jpg\nimg/table/1363.jpg\nimg/table/1364.jpg\nimg/table/1365.jpg\nimg/table/1366.jpg\nimg/table/1367.jpg\nimg/table/1368.jpg\nimg/table/1369.jpg\nimg/table/1370.jpg\nimg/table/1371.jpg\nimg/table/1372.jpg\nimg/table/1373.jpg\nimg/table/1374.jpg\nimg/table/1375.jpg\nimg/table/1376.jpg\nimg/table/1377.jpg\nimg/table/1378.jpg\nimg/table/1659.jpg\nimg/table/1660.jpg\nimg/table/1661.jpg\nimg/table/1662.jpg\nimg/table/1663.jpg\nimg/table/1664.jpg\nimg/table/1665.jpg\nimg/table/1666.jpg\nimg/table/1667.jpg\nimg/table/1668.jpg\nimg/table/1669.jpg\nimg/table/1670.jpg\nimg/table/1671.jpg\nimg/table/1672.jpeg\nimg/table/1673.jpg\nimg/table/1674.jpg\nimg/table/1675.jpeg\nimg/table/1676.jpg\nimg/table/1677.jpg\nimg/table/1678.jpeg\nimg/table/1679.jpeg\nimg/table/1680.jpg\nimg/table/1681.jpg\nimg/table/1682.jpg\nimg/table/1683.jpg\nimg/table/1684.jpg\nimg/table/1685.jpg\nimg/table/1686.jpg\nimg/table/1687.jpg\nimg/table/1688.jpg\nimg/table/1689.jpg\nimg/table/1690.jpg\nimg/table/1691.jpg\nimg/table/1692.jpg\nimg/table/1693.jpg\nimg/table/1694.jpg\nimg/table/1695.jpg\nimg/table/1712.jpg\nimg/table/1713.jpg\nimg/table/1714.jpg\nimg/table/1715.png\nimg/table/1716.jpg\nimg/table/1717.jpg\nimg/table/1718.jpg\nimg/table/1719.jpg\nimg/table/1724.jpg\nimg/table/1731.jpg\nimg/tool/0024.jpg\nimg/tool/0043.jpg\nimg/tool/0044.jpg\nimg/tool/0045.jpg\nimg/tool/0046.jpg\nimg/tool/0047.jpg\nimg/wardrobe/0106.jpg\nimg/wardrobe/0107.jpg\nimg/wardrobe/0108.jpg\nimg/wardrobe/0109.jpg\nimg/wardrobe/0110.jpg\nimg/wardrobe/0111.jpg\nimg/wardrobe/0112.jpg\nimg/wardrobe/0113.jpg\nimg/wardrobe/0114.jpg\nimg/wardrobe/0115.jpg\nimg/wardrobe/0116.jpg\nimg/wardrobe/0117.jpg\nimg/wardrobe/0118.jpg\nimg/wardrobe/0119.jpg\nimg/wardrobe/0120.jpg\nimg/wardrobe/0121.jpg\nimg/wardrobe/0122.jpg\nimg/wardrobe/0123.jpg\nimg/wardrobe/0124.jpg\nimg/wardrobe/0125.jpg\nimg/wardrobe/0126.jpg\nimg/wardrobe/0127.jpg\nimg/wardrobe/0128.jpg\nimg/wardrobe/0129.jpg\nimg/wardrobe/0130.jpg\nimg/wardrobe/0131.jpg\nimg/wardrobe/0132.jpg\nimg/wardrobe/0133.jpg\nimg/wardrobe/0134.jpg\nimg/wardrobe/0135.jpg\nimg/wardrobe/0136.jpg\nimg/wardrobe/0137.jpg\nimg/wardrobe/0138.jpg\nimg/wardrobe/0139.jpg\nimg/wardrobe/0140.jpg\nimg/wardrobe/0141.jpg\nimg/wardrobe/0142.jpg\nimg/wardrobe/0143.jpg\nimg/wardrobe/0144.jpg\nimg/wardrobe/0145.jpg\nimg/wardrobe/0146.jpg\nimg/wardrobe/0147.jpg\nimg/wardrobe/0148.jpg\nimg/wardrobe/0149.jpg\nimg/wardrobe/0150.jpg\nimg/wardrobe/0151.jpg\nimg/wardrobe/0152.jpg\nimg/wardrobe/0153.jpg\nimg/wardrobe/0154.jpg\nimg/wardrobe/0155.jpg\nimg/wardrobe/0156.jpg\nimg/wardrobe/0157.jpg\nimg/wardrobe/0158.jpg\nimg/wardrobe/0159.jpg\nimg/wardrobe/0160.jpg\nimg/wardrobe/0161.jpg\nimg/wardrobe/0162.jpg\nimg/wardrobe/0163.jpg\nimg/wardrobe/0164.jpg\nimg/wardrobe/0165.jpg\nimg/wardrobe/0166.jpg\nimg/wardrobe/0167.jpg\nimg/wardrobe/0168.jpg\nimg/wardrobe/0169.jpg\nimg/wardrobe/0170.jpg\nimg/wardrobe/0171.jpg\nimg/wardrobe/0172.jpg\nimg/wardrobe/0173.jpg\nimg/wardrobe/0174.jpg\nimg/wardrobe/0175.jpg\nimg/wardrobe/0176.jpg\nimg/wardrobe/0177.jpg\nimg/wardrobe/0178.jpg\nimg/wardrobe/0179.jpg\nimg/wardrobe/0180.jpg\nimg/wardrobe/0181.jpg\nimg/wardrobe/0182.jpg\nimg/wardrobe/0183.jpg\nimg/wardrobe/0184.jpg\nimg/wardrobe/0185.png\nimg/wardrobe/0186.jpg\nimg/wardrobe/0187.jpg\nimg/wardrobe/0188.jpg\nimg/wardrobe/0189.jpg\nimg/wardrobe/0190.jpg\nimg/wardrobe/0191.jpg\nimg/wardrobe/0192.jpg\nimg/wardrobe/0193.jpg\nimg/wardrobe/0194.jpg\nimg/wardrobe/0195.jpg\nimg/wardrobe/0196.jpg\nimg/wardrobe/0197.jpg\nimg/wardrobe/0198.jpg\nimg/wardrobe/0199.jpg\nimg/wardrobe/0231.jpg\nimg/wardrobe/0232.jpg\nimg/wardrobe/0233.jpg\nimg/wardrobe/0234.jpg\nimg/wardrobe/0235.jpg\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/Pix3d/train.txt",
    "content": "img/bed/0042.jpg\nimg/bed/0043.jpg\nimg/bed/0044.jpg\nimg/bed/0045.jpg\nimg/bed/0046.jpg\nimg/bed/0047.jpg\nimg/bed/0048.jpg\nimg/bed/0049.jpg\nimg/bed/0050.jpg\nimg/bed/0051.jpg\nimg/bed/0052.jpg\nimg/bed/0053.jpg\nimg/bed/0054.jpg\nimg/bed/0055.jpg\nimg/bed/0056.jpg\nimg/bed/0057.jpg\nimg/bed/0058.jpg\nimg/bed/0059.jpg\nimg/bed/0060.jpg\nimg/bed/0061.jpg\nimg/bed/0062.jpg\nimg/bed/0063.jpg\nimg/bed/0064.jpg\nimg/bed/0065.jpg\nimg/bed/0066.jpg\nimg/bed/0067.jpg\nimg/bed/0068.jpg\nimg/bed/0069.jpg\nimg/bed/0070.jpg\nimg/bed/0071.jpg\nimg/bed/0072.jpg\nimg/bed/0073.jpg\nimg/bed/0074.jpg\nimg/bed/0075.jpg\nimg/bed/0076.jpg\nimg/bed/0077.jpg\nimg/bed/0078.jpg\nimg/bed/0079.jpg\nimg/bed/0080.jpg\nimg/bed/0081.jpg\nimg/bed/0082.jpg\nimg/bed/0083.jpg\nimg/bed/0084.jpg\nimg/bed/0085.jpg\nimg/bed/0086.jpeg\nimg/bed/0087.jpg\nimg/bed/0088.jpg\nimg/bed/0089.png\nimg/bed/0090.jpg\nimg/bed/0091.jpg\nimg/bed/0092.jpg\nimg/bed/0093.jpg\nimg/bed/0094.jpg\nimg/bed/0095.png\nimg/bed/0096.jpg\nimg/bed/0097.jpg\nimg/bed/0098.jpg\nimg/bed/0099.jpg\nimg/bed/0100.jpg\nimg/bed/0101.jpg\nimg/bed/0102.jpg\nimg/bed/0103.jpg\nimg/bed/0104.jpg\nimg/bed/0105.jpg\nimg/bed/0106.jpg\nimg/bed/0107.jpg\nimg/bed/0108.jpg\nimg/bed/0109.jpg\nimg/bed/0110.jpg\nimg/bed/0111.jpg\nimg/bed/0112.jpg\nimg/bed/0113.jpg\nimg/bed/0114.jpg\nimg/bed/0115.jpg\nimg/bed/0116.jpg\nimg/bed/0117.jpg\nimg/bed/0118.jpeg\nimg/bed/0119.jpg\nimg/bed/0120.jpg\nimg/bed/0121.jpg\nimg/bed/0122.jpg\nimg/bed/0123.jpg\nimg/bed/0124.jpg\nimg/bed/0125.jpg\nimg/bed/0126.jpg\nimg/bed/0127.jpg\nimg/bed/0128.jpg\nimg/bed/0129.jpg\nimg/bed/0130.jpg\nimg/bed/0131.jpg\nimg/bed/0132.jpg\nimg/bed/0133.jpg\nimg/bed/0134.jpg\nimg/bed/0135.jpg\nimg/bed/0136.jpg\nimg/bed/0137.jpg\nimg/bed/0138.jpg\nimg/bed/0139.jpg\nimg/bed/0140.jpg\nimg/bed/0141.jpg\nimg/bed/0142.jpg\nimg/bed/0143.jpg\nimg/bed/0144.jpg\nimg/bed/0145.jpg\nimg/bed/0146.jpg\nimg/bed/0147.jpg\nimg/bed/0148.jpg\nimg/bed/0149.jpg\nimg/bed/0150.jpg\nimg/bed/0151.jpg\nimg/bed/0152.jpg\nimg/bed/0153.jpg\nimg/bed/0154.jpg\nimg/bed/0155.jpg\nimg/bed/0156.jpg\nimg/bed/0157.jpg\nimg/bed/0158.jpg\nimg/bed/0159.jpg\nimg/bed/0160.png\nimg/bed/0161.jpg\nimg/bed/0162.jpg\nimg/bed/0163.jpg\nimg/bed/0164.jpg\nimg/bed/0165.jpg\nimg/bed/0166.jpg\nimg/bed/0167.jpg\nimg/bed/0168.jpg\nimg/bed/0169.jpg\nimg/bed/0170.jpg\nimg/bed/0171.jpg\nimg/bed/0172.jpg\nimg/bed/0173.jpg\nimg/bed/0174.jpeg\nimg/bed/0175.jpg\nimg/bed/0176.jpg\nimg/bed/0177.jpg\nimg/bed/0178.jpg\nimg/bed/0179.jpg\nimg/bed/0180.jpg\nimg/bed/0181.jpg\nimg/bed/0182.jpg\nimg/bed/0183.jpg\nimg/bed/0184.jpg\nimg/bed/0185.jpg\nimg/bed/0186.jpg\nimg/bed/0187.jpg\nimg/bed/0188.jpg\nimg/bed/0189.jpg\nimg/bed/0190.jpg\nimg/bed/0191.jpg\nimg/bed/0192.jpg\nimg/bed/0193.jpg\nimg/bed/0194.jpg\nimg/bed/0195.jpg\nimg/bed/0196.jpg\nimg/bed/0197.jpg\nimg/bed/0198.jpg\nimg/bed/0199.jpg\nimg/bed/0200.jpg\nimg/bed/0201.jpg\nimg/bed/0202.jpg\nimg/bed/0203.jpg\nimg/bed/0204.jpg\nimg/bed/0205.jpg\nimg/bed/0206.jpg\nimg/bed/0207.jpg\nimg/bed/0208.jpg\nimg/bed/0209.jpg\nimg/bed/0210.jpg\nimg/bed/0211.jpg\nimg/bed/0212.jpg\nimg/bed/0213.jpg\nimg/bed/0214.jpg\nimg/bed/0215.jpg\nimg/bed/0216.jpg\nimg/bed/0217.jpg\nimg/bed/0218.jpg\nimg/bed/0219.jpg\nimg/bed/0220.jpg\nimg/bed/0221.jpeg\nimg/bed/0222.jpg\nimg/bed/0223.jpg\nimg/bed/0224.jpg\nimg/bed/0225.jpg\nimg/bed/0226.jpg\nimg/bed/0227.jpg\nimg/bed/0228.jpg\nimg/bed/0229.jpg\nimg/bed/0230.jpg\nimg/bed/0231.jpg\nimg/bed/0232.jpg\nimg/bed/0233.jpg\nimg/bed/0234.jpg\nimg/bed/0235.jpg\nimg/bed/0236.jpg\nimg/bed/0237.jpg\nimg/bed/0238.jpg\nimg/bed/0239.jpg\nimg/bed/0240.jpg\nimg/bed/0241.jpg\nimg/bed/0242.jpg\nimg/bed/0243.jpg\nimg/bed/0244.jpg\nimg/bed/0245.jpg\nimg/bed/0246.jpg\nimg/bed/0247.jpg\nimg/bed/0248.jpg\nimg/bed/0249.jpg\nimg/bed/0250.jpg\nimg/bed/0251.jpg\nimg/bed/0252.jpg\nimg/bed/0253.jpg\nimg/bed/0254.jpg\nimg/bed/0003.png\nimg/bed/0004.png\nimg/bed/0006.png\nimg/bed/0009.png\nimg/bed/0013.png\nimg/bed/0034.png\nimg/bed/0040.png\nimg/bed/0307.jpg\nimg/bed/0308.jpg\nimg/bed/0309.jpg\nimg/bed/0310.jpg\nimg/bed/0311.jpg\nimg/bed/0312.jpg\nimg/bed/0313.jpg\nimg/bed/0314.jpg\nimg/bed/0315.jpg\nimg/bed/0316.jpg\nimg/bed/0317.jpg\nimg/bed/0318.jpg\nimg/bed/0319.jpg\nimg/bed/0320.jpg\nimg/bed/0321.jpg\nimg/bed/0322.jpg\nimg/bed/0323.png\nimg/bed/0324.jpg\nimg/bed/0325.jpg\nimg/bed/0326.jpg\nimg/bed/0327.jpg\nimg/bed/0328.jpg\nimg/bed/0329.jpg\nimg/bed/0330.jpg\nimg/bed/0331.jpeg\nimg/bed/0332.jpg\nimg/bed/0333.jpg\nimg/bed/0334.jpg\nimg/bed/0335.jpg\nimg/bed/0336.jpg\nimg/bed/0337.jpg\nimg/bed/0338.jpg\nimg/bed/0339.jpg\nimg/bed/0340.png\nimg/bed/0341.jpg\nimg/bed/0342.jpg\nimg/bed/0041.png\nimg/bed/0343.jpg\nimg/bed/0344.jpg\nimg/bed/0345.jpg\nimg/bed/0346.jpg\nimg/bed/0347.jpg\nimg/bed/0348.jpg\nimg/bed/0349.jpg\nimg/bed/0350.jpg\nimg/bed/0351.jpg\nimg/bed/0352.jpg\nimg/bed/0353.jpg\nimg/bed/0354.jpg\nimg/bed/0355.jpg\nimg/bed/0356.jpg\nimg/bed/0357.jpg\nimg/bed/0358.jpg\nimg/bed/0359.jpg\nimg/bed/0360.jpg\nimg/bed/0361.jpg\nimg/bed/0362.jpeg\nimg/bed/0363.jpg\nimg/bed/0364.jpg\nimg/bed/0365.jpg\nimg/bed/0366.jpg\nimg/bed/0367.jpg\nimg/bed/0368.jpg\nimg/bed/0369.jpg\nimg/bed/0370.jpg\nimg/bed/0371.jpg\nimg/bed/0372.jpg\nimg/bed/0373.jpg\nimg/bed/0374.jpg\nimg/bed/0375.jpg\nimg/bed/0376.jpg\nimg/bed/0377.jpg\nimg/bed/0378.jpg\nimg/bed/0379.jpg\nimg/bed/0380.jpg\nimg/bed/0381.jpg\nimg/bed/0382.jpg\nimg/bed/0383.jpg\nimg/bed/0384.jpg\nimg/bed/0385.jpg\nimg/bed/0386.jpg\nimg/bed/0387.jpg\nimg/bed/0388.jpg\nimg/bed/0389.jpg\nimg/bed/0390.jpg\nimg/bed/0391.jpg\nimg/bed/0392.jpg\nimg/bed/0393.jpg\nimg/bed/0394.jpg\nimg/bed/0395.jpg\nimg/bed/0396.jpg\nimg/bed/0484.jpg\nimg/bed/0485.jpg\nimg/bed/0486.jpg\nimg/bed/0487.jpg\nimg/bed/0488.jpg\nimg/bed/0489.jpg\nimg/bed/0490.jpg\nimg/bed/0491.jpg\nimg/bed/0492.jpg\nimg/bed/0493.jpg\nimg/bed/0494.jpg\nimg/bed/0495.jpg\nimg/bed/0496.jpg\nimg/bed/0497.jpg\nimg/bed/0498.jpg\nimg/bed/0499.jpg\nimg/bed/0500.jpg\nimg/bed/0501.jpg\nimg/bed/0502.jpg\nimg/bed/0503.jpg\nimg/bed/0504.jpg\nimg/bed/0505.jpg\nimg/bed/0506.jpg\nimg/bed/0507.jpg\nimg/bed/0508.jpg\nimg/bed/0509.jpg\nimg/bed/0510.jpg\nimg/bed/0511.jpg\nimg/bed/0512.jpg\nimg/bed/0513.jpg\nimg/bed/0514.jpg\nimg/bed/0515.jpg\nimg/bed/0516.jpg\nimg/bed/0517.jpg\nimg/bed/0518.jpg\nimg/bed/0519.jpg\nimg/bed/0520.jpg\nimg/bed/0521.jpg\nimg/bed/0522.jpg\nimg/bed/0523.jpg\nimg/bed/0524.jpg\nimg/bed/0525.jpg\nimg/bed/0526.jpg\nimg/bed/0527.jpg\nimg/bed/0528.jpg\nimg/bed/0529.jpg\nimg/bed/0530.jpg\nimg/bed/0531.jpg\nimg/bed/0532.jpg\nimg/bed/0533.jpg\nimg/bed/0534.jpg\nimg/bed/0535.jpeg\nimg/bed/0536.jpg\nimg/bed/0537.jpg\nimg/bed/0538.jpg\nimg/bed/0539.jpg\nimg/bed/0540.jpg\nimg/bed/0541.jpg\nimg/bed/0542.jpg\nimg/bed/0543.jpg\nimg/bed/0544.jpg\nimg/bed/0545.jpeg\nimg/bed/0546.jpg\nimg/bed/0547.jpg\nimg/bed/0548.jpg\nimg/bed/0549.jpg\nimg/bed/0550.jpeg\nimg/bed/0551.jpg\nimg/bed/0552.jpg\nimg/bed/0553.jpg\nimg/bed/0554.jpg\nimg/bed/0555.jpg\nimg/bed/0556.jpg\nimg/bed/0557.jpg\nimg/bed/0558.jpg\nimg/bed/0559.jpg\nimg/bed/0560.jpg\nimg/bed/0561.jpg\nimg/bed/0562.jpg\nimg/bed/0563.jpg\nimg/bed/0564.jpg\nimg/bed/0565.jpg\nimg/bed/0566.jpg\nimg/bed/0567.jpg\nimg/bed/0568.jpg\nimg/bed/0569.jpg\nimg/bed/0570.jpg\nimg/bed/0571.jpg\nimg/bed/0572.jpg\nimg/bed/0573.jpg\nimg/bed/0574.jpg\nimg/bed/0575.jpg\nimg/bed/0576.jpg\nimg/bed/0577.png\nimg/bed/0578.jpg\nimg/bed/0579.jpg\nimg/bed/0580.jpg\nimg/bed/0581.jpg\nimg/bed/0582.jpg\nimg/bed/0583.png\nimg/bed/0584.jpg\nimg/bed/0585.jpg\nimg/bed/0586.jpg\nimg/bed/0587.jpg\nimg/bed/0588.jpg\nimg/bed/0589.jpg\nimg/bed/0590.jpg\nimg/bed/0591.jpg\nimg/bed/0592.jpg\nimg/bed/0593.jpg\nimg/bed/0594.png\nimg/bed/0595.jpg\nimg/bed/0596.jpg\nimg/bed/0597.jpg\nimg/bed/0598.jpg\nimg/bed/0599.jpg\nimg/bed/0600.jpg\nimg/bed/0601.jpg\nimg/bed/0602.jpg\nimg/bed/0603.jpg\nimg/bed/0604.jpg\nimg/bed/0605.jpg\nimg/bed/0606.jpg\nimg/bed/0607.jpg\nimg/bed/0608.jpg\nimg/bed/0609.jpg\nimg/bed/0610.jpg\nimg/bed/0611.jpg\nimg/bed/0612.jpg\nimg/bed/0613.jpg\nimg/bed/0614.jpg\nimg/bed/0615.jpg\nimg/bed/0616.jpg\nimg/bed/0617.jpg\nimg/bed/0618.jpg\nimg/bed/0619.jpg\nimg/bed/0620.jpg\nimg/bed/0621.jpg\nimg/bed/0622.jpg\nimg/bed/0623.jpg\nimg/bed/0624.jpg\nimg/bed/0625.jpg\nimg/bed/0626.jpg\nimg/bed/0627.png\nimg/bed/0628.jpg\nimg/bed/0629.jpg\nimg/bed/0630.jpg\nimg/bed/0631.jpg\nimg/bed/0632.jpg\nimg/bed/0633.jpg\nimg/bed/0634.jpg\nimg/bed/0635.jpg\nimg/bed/0636.jpg\nimg/bed/0637.jpg\nimg/bed/0638.jpg\nimg/bed/0639.jpg\nimg/bed/0640.jpg\nimg/bed/0641.jpg\nimg/bed/0642.jpg\nimg/bed/0643.jpg\nimg/bed/0644.jpg\nimg/bed/0645.jpg\nimg/bed/0646.jpg\nimg/bed/0647.jpg\nimg/bed/0648.jpg\nimg/bed/0649.jpg\nimg/bed/0650.jpg\nimg/bed/0651.jpg\nimg/bed/0652.jpg\nimg/bed/0653.jpg\nimg/bed/0654.jpg\nimg/bed/0655.jpg\nimg/bed/0656.jpg\nimg/bed/0657.jpg\nimg/bed/0658.jpg\nimg/bed/0659.jpg\nimg/bed/0660.jpg\nimg/bed/0661.jpg\nimg/bed/0662.jpg\nimg/bed/0663.jpeg\nimg/bed/0664.jpg\nimg/bed/0665.jpg\nimg/bed/0666.jpg\nimg/bed/0667.jpg\nimg/bed/0668.jpg\nimg/bed/0030.png\nimg/bed/0037.png\nimg/bed/0669.jpg\nimg/bed/0670.jpg\nimg/bed/0671.jpg\nimg/bed/0672.jpg\nimg/bed/0673.jpg\nimg/bed/0674.jpg\nimg/bed/0675.jpg\nimg/bed/0676.jpg\nimg/bed/0677.jpg\nimg/bed/0678.jpg\nimg/bed/0679.jpg\nimg/bed/0680.jpg\nimg/bed/0681.jpg\nimg/bed/0682.jpg\nimg/bed/0683.jpg\nimg/bed/0684.jpg\nimg/bed/0685.jpg\nimg/bed/0686.jpg\nimg/bed/0687.jpg\nimg/bed/0688.jpg\nimg/bed/0689.jpg\nimg/bed/0690.jpg\nimg/bed/0691.jpg\nimg/bed/0692.jpg\nimg/bed/0693.jpg\nimg/bed/0694.jpg\nimg/bed/0695.jpg\nimg/bed/0696.jpg\nimg/bed/0697.jpg\nimg/bed/0698.jpg\nimg/bed/0699.jpg\nimg/bed/0700.jpg\nimg/bed/0701.jpg\nimg/bed/0702.jpg\nimg/bed/0703.png\nimg/bed/0704.jpg\nimg/bed/0705.jpg\nimg/bed/0706.jpg\nimg/bed/0707.jpg\nimg/bed/0708.jpg\nimg/bed/0709.jpg\nimg/bed/0710.jpg\nimg/bed/0711.jpg\nimg/bed/0712.jpg\nimg/bed/0713.jpg\nimg/bed/0714.jpg\nimg/bed/0715.jpg\nimg/bed/0716.jpg\nimg/bed/0717.jpg\nimg/bed/0718.jpg\nimg/bed/0719.jpg\nimg/bed/0720.jpg\nimg/bed/0721.jpeg\nimg/bed/0722.jpg\nimg/bed/0723.jpg\nimg/bed/0724.jpg\nimg/bed/0725.jpg\nimg/bed/0726.png\nimg/bed/0727.jpg\nimg/bed/0728.jpg\nimg/bed/0729.jpg\nimg/bed/0730.png\nimg/bed/0731.jpg\nimg/bed/0732.jpg\nimg/bed/0733.jpg\nimg/bed/0734.png\nimg/bed/0735.jpg\nimg/bed/0736.jpg\nimg/bed/0016.png\nimg/bed/0737.jpg\nimg/bed/0738.jpg\nimg/bed/0739.jpg\nimg/bed/0740.jpg\nimg/bed/0742.jpg\nimg/bed/0743.jpg\nimg/bed/0744.jpg\nimg/bed/0745.jpg\nimg/bed/0746.jpg\nimg/bed/0747.jpg\nimg/bed/0748.jpg\nimg/bed/0750.png\nimg/bed/0001.png\nimg/bed/0002.png\nimg/bed/0005.png\nimg/bed/0007.png\nimg/bed/0018.png\nimg/bed/0019.png\nimg/bed/0022.png\nimg/bed/0024.png\nimg/bed/0029.png\nimg/bed/0032.png\nimg/bed/0033.png\nimg/bed/0751.jpg\nimg/bed/0752.jpg\nimg/bed/0753.jpg\nimg/bed/0754.jpg\nimg/bed/0755.jpg\nimg/bed/0756.jpg\nimg/bed/0757.jpg\nimg/bed/0758.jpg\nimg/bed/0759.jpg\nimg/bed/0760.jpg\nimg/bed/0761.jpg\nimg/bed/0762.jpg\nimg/bed/0763.jpg\nimg/bed/0764.jpg\nimg/bed/0765.jpg\nimg/bed/0766.jpg\nimg/bed/0767.jpg\nimg/bed/0768.jpg\nimg/bed/0769.jpg\nimg/bed/0770.jpg\nimg/bed/0771.jpg\nimg/bed/0772.jpg\nimg/bed/0773.jpg\nimg/bed/0774.jpg\nimg/bed/0775.jpg\nimg/bed/0776.jpg\nimg/bed/0777.jpg\nimg/bed/0778.jpg\nimg/bed/0779.jpg\nimg/bed/0780.jpg\nimg/bed/0781.jpg\nimg/bed/0782.jpg\nimg/bed/0783.jpg\nimg/bed/0784.jpg\nimg/bed/0785.jpg\nimg/bed/0786.jpg\nimg/bed/0787.jpg\nimg/bed/0788.jpg\nimg/bed/0789.jpg\nimg/bed/0790.jpg\nimg/bed/0791.jpg\nimg/bed/0792.jpg\nimg/bed/0010.png\nimg/bed/0011.png\nimg/bed/0012.png\nimg/bed/0014.png\nimg/bed/0017.png\nimg/bed/0021.png\nimg/bed/0025.png\nimg/bed/0026.png\nimg/bed/0035.png\nimg/bed/0036.png\nimg/bed/0039.png\nimg/bed/0793.jpg\nimg/bed/0794.jpg\nimg/bed/0795.jpg\nimg/bed/0796.jpg\nimg/bed/0797.jpg\nimg/bed/0798.jpg\nimg/bed/0799.jpg\nimg/bed/0800.jpg\nimg/bed/0801.jpg\nimg/bed/0802.jpg\nimg/bed/0803.jpg\nimg/bed/0804.jpg\nimg/bed/0805.jpg\nimg/bed/0806.jpg\nimg/bed/0807.jpg\nimg/bed/0808.jpg\nimg/bed/0809.jpg\nimg/bed/0810.jpg\nimg/bed/0811.jpg\nimg/bed/0812.jpg\nimg/bed/0813.jpg\nimg/bed/0814.jpg\nimg/bed/0815.jpg\nimg/bed/0816.jpg\nimg/bed/0817.jpg\nimg/bed/0818.jpg\nimg/bed/0819.jpg\nimg/bed/0027.png\nimg/bed/0031.png\nimg/bed/0038.png\nimg/bed/0820.jpg\nimg/bed/0821.jpg\nimg/bed/0822.jpg\nimg/bed/0823.jpg\nimg/bed/0824.jpg\nimg/bed/0825.jpg\nimg/bed/0826.jpg\nimg/bed/0827.jpg\nimg/bed/0828.jpg\nimg/bed/0829.jpg\nimg/bed/0830.jpg\nimg/bed/0831.jpg\nimg/bed/0832.jpg\nimg/bed/0833.jpg\nimg/bed/0834.jpg\nimg/bed/0835.jpg\nimg/bed/0836.jpg\nimg/bed/0837.jpg\nimg/bed/0838.jpg\nimg/bed/0839.jpg\nimg/bed/0840.jpg\nimg/bed/0841.jpg\nimg/bed/0023.png\nimg/bed/0028.png\nimg/bed/0842.jpg\nimg/bed/0843.jpg\nimg/bed/0844.jpg\nimg/bed/0845.jpg\nimg/bed/0846.jpg\nimg/bed/0847.jpg\nimg/bed/0848.jpg\nimg/bed/0849.jpg\nimg/bed/0850.jpg\nimg/bed/0851.jpg\nimg/bed/0852.jpg\nimg/bed/0853.jpg\nimg/bed/0854.jpg\nimg/bed/0855.jpg\nimg/bed/0856.jpg\nimg/bed/0857.jpg\nimg/bed/0858.jpg\nimg/bed/0859.jpg\nimg/bed/0860.jpg\nimg/bed/0861.jpg\nimg/bed/0862.jpg\nimg/bed/0020.png\nimg/bed/0916.jpg\nimg/bed/0917.jpg\nimg/bed/0918.jpg\nimg/bed/0919.jpg\nimg/bed/0920.jpg\nimg/bed/0921.jpg\nimg/bed/0922.jpg\nimg/bed/0923.jpg\nimg/bed/0924.jpg\nimg/bed/0925.jpg\nimg/bed/0926.jpg\nimg/bed/0927.jpg\nimg/bed/0928.jpg\nimg/bed/0929.jpg\nimg/bed/0930.jpg\nimg/bed/0931.jpg\nimg/bed/0932.jpg\nimg/bed/0933.jpg\nimg/bed/0934.jpg\nimg/bed/0935.jpg\nimg/bed/0936.jpg\nimg/bed/0937.jpg\nimg/bed/0938.jpg\nimg/bed/0939.jpg\nimg/bed/0940.jpg\nimg/bed/0941.jpg\nimg/bed/0942.jpg\nimg/bed/0943.jpg\nimg/bed/0944.jpg\nimg/bed/0945.png\nimg/bed/0946.png\nimg/bed/0947.jpg\nimg/bed/0948.jpg\nimg/bed/0949.jpg\nimg/bed/0950.png\nimg/bed/0951.jpg\nimg/bed/0952.jpg\nimg/bed/0953.jpg\nimg/bed/0954.jpg\nimg/bed/0955.jpg\nimg/bed/0956.jpg\nimg/bed/0957.jpg\nimg/bed/0958.jpg\nimg/bed/0959.png\nimg/bed/0960.jpg\nimg/bed/0961.jpg\nimg/bed/0962.jpg\nimg/bed/0963.jpg\nimg/bed/0964.jpg\nimg/bed/0965.jpg\nimg/bed/0966.jpg\nimg/bed/0967.jpg\nimg/bed/0968.jpg\nimg/bed/0969.jpg\nimg/bed/0970.jpg\nimg/bed/0971.jpg\nimg/bed/0972.jpg\nimg/bed/0973.jpg\nimg/bed/0974.jpg\nimg/bed/0975.jpg\nimg/bed/0976.jpg\nimg/bed/0977.jpg\nimg/bed/0978.jpg\nimg/bed/0979.jpg\nimg/bed/0980.jpg\nimg/bed/0981.jpg\nimg/bed/0982.jpg\nimg/bed/0983.png\nimg/bed/0984.jpg\nimg/bed/0985.jpg\nimg/bed/0986.jpg\nimg/bed/0987.jpg\nimg/bed/0988.jpg\nimg/bed/0989.jpg\nimg/bed/0990.jpg\nimg/bed/0991.jpg\nimg/bed/0992.jpg\nimg/bed/0993.jpg\nimg/bed/0994.jpg\nimg/bookcase/0001.jpg\nimg/bookcase/0019.jpg\nimg/bookcase/0020.jpg\nimg/bookcase/0021.jpg\nimg/bookcase/0022.jpg\nimg/bookcase/0023.jpg\nimg/bookcase/0024.jpg\nimg/bookcase/0025.jpg\nimg/bookcase/0026.jpg\nimg/bookcase/0027.jpg\nimg/bookcase/0028.jpg\nimg/bookcase/0029.jpg\nimg/bookcase/0030.jpg\nimg/bookcase/0031.jpg\nimg/bookcase/0032.jpg\nimg/bookcase/0033.jpg\nimg/bookcase/0334.jpg\nimg/bookcase/0337.jpg\nimg/bookcase/0338.jpg\nimg/bookcase/0339.jpg\nimg/bookcase/0343.jpg\nimg/bookcase/0347.jpg\nimg/bookcase/0348.jpg\nimg/bookcase/0350.jpg\nimg/bookcase/0358.jpg\nimg/bookcase/0039.jpg\nimg/bookcase/0040.jpg\nimg/bookcase/0041.jpg\nimg/bookcase/0042.jpg\nimg/bookcase/0043.jpg\nimg/bookcase/0333.jpg\nimg/bookcase/0342.jpg\nimg/bookcase/0361.jpg\nimg/bookcase/0044.jpg\nimg/bookcase/0323.jpg\nimg/bookcase/0324.jpg\nimg/bookcase/0331.jpg\nimg/bookcase/0360.jpg\nimg/bookcase/0098.jpg\nimg/bookcase/0099.jpg\nimg/bookcase/0100.png\nimg/bookcase/0101.jpg\nimg/bookcase/0102.jpg\nimg/bookcase/0103.jpg\nimg/bookcase/0104.jpg\nimg/bookcase/0105.jpg\nimg/bookcase/0106.jpg\nimg/bookcase/0107.jpg\nimg/bookcase/0108.jpg\nimg/bookcase/0109.jpg\nimg/bookcase/0110.jpg\nimg/bookcase/0111.jpg\nimg/bookcase/0112.jpg\nimg/bookcase/0113.jpg\nimg/bookcase/0114.jpg\nimg/bookcase/0115.jpg\nimg/bookcase/0116.jpg\nimg/bookcase/0117.png\nimg/bookcase/0118.jpg\nimg/bookcase/0119.jpg\nimg/bookcase/0120.jpg\nimg/bookcase/0121.jpg\nimg/bookcase/0122.jpg\nimg/bookcase/0123.jpg\nimg/bookcase/0124.jpeg\nimg/bookcase/0125.jpg\nimg/bookcase/0126.jpg\nimg/bookcase/0127.jpg\nimg/bookcase/0128.jpg\nimg/bookcase/0129.jpg\nimg/bookcase/0130.jpg\nimg/bookcase/0131.jpg\nimg/bookcase/0132.jpg\nimg/bookcase/0133.jpg\nimg/bookcase/0134.jpg\nimg/bookcase/0135.jpg\nimg/bookcase/0136.jpg\nimg/bookcase/0137.jpg\nimg/bookcase/0138.jpg\nimg/bookcase/0139.jpg\nimg/bookcase/0140.jpg\nimg/bookcase/0141.jpg\nimg/bookcase/0142.jpg\nimg/bookcase/0143.jpg\nimg/bookcase/0144.jpg\nimg/bookcase/0145.jpg\nimg/bookcase/0146.jpg\nimg/bookcase/0147.png\nimg/bookcase/0148.jpg\nimg/bookcase/0149.jpg\nimg/bookcase/0150.jpg\nimg/bookcase/0151.jpg\nimg/bookcase/0152.jpg\nimg/bookcase/0153.jpg\nimg/bookcase/0154.jpg\nimg/bookcase/0155.jpg\nimg/bookcase/0156.jpg\nimg/bookcase/0157.jpg\nimg/bookcase/0158.jpg\nimg/bookcase/0159.jpg\nimg/bookcase/0160.jpg\nimg/bookcase/0161.jpg\nimg/bookcase/0162.jpeg\nimg/bookcase/0163.jpg\nimg/bookcase/0164.jpg\nimg/bookcase/0165.jpg\nimg/bookcase/0166.jpg\nimg/bookcase/0167.jpg\nimg/bookcase/0168.jpg\nimg/bookcase/0169.jpg\nimg/bookcase/0170.jpg\nimg/bookcase/0171.jpg\nimg/bookcase/0172.jpg\nimg/bookcase/0173.jpg\nimg/bookcase/0174.jpg\nimg/bookcase/0175.jpg\nimg/bookcase/0176.jpg\nimg/bookcase/0177.jpg\nimg/bookcase/0178.jpg\nimg/bookcase/0179.jpg\nimg/bookcase/0180.jpg\nimg/bookcase/0181.jpg\nimg/bookcase/0182.jpg\nimg/bookcase/0183.jpg\nimg/bookcase/0184.jpg\nimg/bookcase/0185.jpg\nimg/bookcase/0186.jpg\nimg/bookcase/0187.jpg\nimg/bookcase/0188.jpg\nimg/bookcase/0189.jpg\nimg/bookcase/0190.jpg\nimg/bookcase/0191.jpg\nimg/bookcase/0192.jpg\nimg/bookcase/0193.jpg\nimg/bookcase/0194.jpg\nimg/bookcase/0195.jpg\nimg/bookcase/0196.jpg\nimg/bookcase/0197.jpg\nimg/bookcase/0198.jpg\nimg/bookcase/0199.jpg\nimg/bookcase/0200.jpg\nimg/bookcase/0201.jpg\nimg/bookcase/0202.jpg\nimg/bookcase/0203.jpg\nimg/bookcase/0204.jpg\nimg/bookcase/0205.jpg\nimg/bookcase/0206.jpg\nimg/bookcase/0207.jpg\nimg/bookcase/0208.jpg\nimg/bookcase/0209.jpg\nimg/bookcase/0210.jpg\nimg/bookcase/0211.jpg\nimg/bookcase/0212.jpg\nimg/bookcase/0213.png\nimg/bookcase/0214.jpg\nimg/bookcase/0215.jpg\nimg/bookcase/0216.jpg\nimg/bookcase/0217.jpg\nimg/bookcase/0218.jpg\nimg/bookcase/0219.jpg\nimg/bookcase/0220.png\nimg/bookcase/0221.jpg\nimg/bookcase/0222.jpg\nimg/bookcase/0349.jpg\nimg/bookcase/0355.jpg\nimg/bookcase/0223.jpg\nimg/bookcase/0352.jpg\nimg/bookcase/0224.jpg\nimg/bookcase/0225.jpg\nimg/bookcase/0226.jpg\nimg/bookcase/0227.jpg\nimg/bookcase/0228.jpg\nimg/bookcase/0229.jpg\nimg/bookcase/0230.jpg\nimg/bookcase/0231.jpg\nimg/bookcase/0232.jpg\nimg/bookcase/0233.jpg\nimg/bookcase/0234.jpg\nimg/bookcase/0235.png\nimg/bookcase/0236.jpg\nimg/bookcase/0237.png\nimg/bookcase/0238.jpg\nimg/bookcase/0239.jpeg\nimg/bookcase/0326.jpg\nimg/bookcase/0336.jpg\nimg/bookcase/0359.jpg\nimg/bookcase/0240.jpg\nimg/bookcase/0241.jpg\nimg/bookcase/0242.jpg\nimg/bookcase/0243.jpg\nimg/bookcase/0244.jpg\nimg/bookcase/0245.jpg\nimg/bookcase/0246.png\nimg/bookcase/0247.jpg\nimg/bookcase/0248.jpg\nimg/bookcase/0249.jpg\nimg/bookcase/0250.jpg\nimg/bookcase/0251.jpg\nimg/bookcase/0252.jpg\nimg/bookcase/0253.jpg\nimg/bookcase/0254.jpg\nimg/bookcase/0255.jpg\nimg/bookcase/0256.jpg\nimg/bookcase/0257.jpg\nimg/bookcase/0258.jpg\nimg/bookcase/0259.jpg\nimg/bookcase/0260.jpg\nimg/bookcase/0263.jpg\nimg/bookcase/0264.jpg\nimg/bookcase/0266.jpg\nimg/bookcase/0267.jpg\nimg/bookcase/0268.jpg\nimg/bookcase/0269.jpg\nimg/bookcase/0271.jpg\nimg/bookcase/0272.jpg\nimg/bookcase/0273.jpg\nimg/bookcase/0275.jpg\nimg/bookcase/0276.jpg\nimg/bookcase/0277.jpg\nimg/bookcase/0278.jpg\nimg/bookcase/0279.jpg\nimg/bookcase/0280.jpg\nimg/bookcase/0282.jpg\nimg/bookcase/0283.jpg\nimg/bookcase/0285.jpg\nimg/bookcase/0286.jpg\nimg/bookcase/0287.jpg\nimg/bookcase/0288.jpg\nimg/bookcase/0289.jpg\nimg/bookcase/0291.jpg\nimg/bookcase/0292.jpg\nimg/bookcase/0293.jpg\nimg/bookcase/0294.jpg\nimg/bookcase/0295.jpg\nimg/bookcase/0297.jpg\nimg/bookcase/0299.jpg\nimg/bookcase/0300.jpg\nimg/bookcase/0302.jpg\nimg/bookcase/0303.jpg\nimg/bookcase/0304.jpg\nimg/bookcase/0305.jpg\nimg/bookcase/0307.jpg\nimg/bookcase/0308.jpg\nimg/bookcase/0309.jpg\nimg/bookcase/0311.jpg\nimg/bookcase/0312.jpg\nimg/bookcase/0313.jpg\nimg/bookcase/0315.jpg\nimg/bookcase/0316.jpg\nimg/bookcase/0317.jpg\nimg/bookcase/0319.jpg\nimg/bookcase/0320.jpg\nimg/bookcase/0321.jpg\nimg/bookcase/0322.jpg\nimg/bookcase/0351.jpg\nimg/bookcase/0353.jpg\nimg/chair/1550.jpg\nimg/chair/1552.jpg\nimg/chair/1554.jpg\nimg/chair/1558.jpg\nimg/chair/1566.jpg\nimg/chair/1568.jpg\nimg/chair/1569.jpg\nimg/chair/1573.jpg\nimg/chair/1577.jpg\nimg/chair/1578.jpg\nimg/chair/1584.jpg\nimg/chair/1586.jpeg\nimg/chair/1587.jpg\nimg/chair/1588.jpg\nimg/chair/1591.jpg\nimg/chair/1592.jpg\nimg/chair/1599.jpg\nimg/chair/1600.jpg\nimg/chair/1606.jpg\nimg/chair/1608.jpg\nimg/chair/1610.jpg\nimg/chair/1613.jpg\nimg/chair/1614.jpg\nimg/chair/1615.jpg\nimg/chair/1616.jpg\nimg/chair/1626.jpg\nimg/chair/1633.jpg\nimg/chair/1634.jpg\nimg/chair/1639.jpg\nimg/chair/1640.jpg\nimg/chair/1643.jpg\nimg/chair/1644.jpg\nimg/chair/1645.jpg\nimg/chair/1648.jpg\nimg/chair/1649.jpg\nimg/chair/1650.jpg\nimg/chair/1652.jpg\nimg/chair/1656.jpg\nimg/chair/1657.jpg\nimg/chair/1660.jpg\nimg/chair/1665.jpg\nimg/chair/1668.jpg\nimg/chair/1670.jpg\nimg/chair/1672.jpg\nimg/chair/1681.jpg\nimg/chair/1684.jpg\nimg/chair/1685.png\nimg/chair/1688.jpg\nimg/chair/1692.jpg\nimg/chair/1693.jpg\nimg/chair/1694.jpg\nimg/chair/1696.jpg\nimg/chair/1702.jpg\nimg/chair/1703.jpg\nimg/chair/1707.jpg\nimg/chair/1709.jpg\nimg/chair/1710.jpg\nimg/chair/1712.jpg\nimg/chair/1719.jpg\nimg/chair/1721.jpg\nimg/chair/1722.jpg\nimg/chair/1723.jpg\nimg/chair/1725.jpg\nimg/chair/1726.jpg\nimg/chair/1727.jpg\nimg/chair/1731.jpg\nimg/chair/1733.jpg\nimg/chair/1735.jpg\nimg/chair/1738.jpg\nimg/chair/1739.jpg\nimg/chair/1742.jpg\nimg/chair/1744.jpg\nimg/chair/1750.jpg\nimg/chair/1752.jpg\nimg/chair/1758.jpg\nimg/chair/1760.jpg\nimg/chair/1761.jpg\nimg/chair/1764.jpg\nimg/chair/1765.jpg\nimg/chair/1767.jpg\nimg/chair/1768.jpg\nimg/chair/1769.jpg\nimg/chair/1770.jpg\nimg/chair/1775.jpg\nimg/chair/1776.jpg\nimg/chair/1777.jpg\nimg/chair/1778.jpg\nimg/chair/1779.jpg\nimg/chair/1780.jpg\nimg/chair/1783.jpg\nimg/chair/1787.jpg\nimg/chair/1788.jpg\nimg/chair/1789.jpg\nimg/chair/1790.jpg\nimg/chair/1792.jpg\nimg/chair/1793.jpg\nimg/chair/1796.jpg\nimg/chair/1797.jpg\nimg/chair/1798.jpg\nimg/chair/1799.jpg\nimg/chair/1803.jpg\nimg/chair/1804.jpg\nimg/chair/1805.jpg\nimg/chair/1806.jpg\nimg/chair/0012.png\nimg/chair/0013.png\nimg/chair/0014.png\nimg/chair/0069.png\nimg/chair/0070.png\nimg/chair/0086.png\nimg/chair/1812.jpg\nimg/chair/1816.jpg\nimg/chair/1820.jpg\nimg/chair/1821.jpg\nimg/chair/1824.jpg\nimg/chair/1825.jpg\nimg/chair/1826.jpg\nimg/chair/1832.jpg\nimg/chair/1835.jpg\nimg/chair/1836.jpg\nimg/chair/1837.jpg\nimg/chair/1838.jpg\nimg/chair/1839.jpg\nimg/chair/1843.jpg\nimg/chair/1845.jpg\nimg/chair/1846.png\nimg/chair/1847.jpg\nimg/chair/1849.jpg\nimg/chair/1852.jpg\nimg/chair/1853.jpg\nimg/chair/1857.jpg\nimg/chair/1861.jpg\nimg/chair/1864.jpg\nimg/chair/1867.jpg\nimg/chair/1868.jpg\nimg/chair/1873.jpg\nimg/chair/1874.jpg\nimg/chair/1877.jpg\nimg/chair/1878.jpg\nimg/chair/1880.jpg\nimg/chair/1882.jpg\nimg/chair/1883.jpg\nimg/chair/1902.jpg\nimg/chair/1908.jpg\nimg/chair/1913.jpg\nimg/chair/0047.png\nimg/chair/0048.png\nimg/chair/1917.jpg\nimg/chair/1935.jpg\nimg/chair/1936.jpg\nimg/chair/1939.jpg\nimg/chair/1940.jpg\nimg/chair/1946.jpg\nimg/chair/1947.jpg\nimg/chair/1948.jpg\nimg/chair/1950.jpg\nimg/chair/1951.jpg\nimg/chair/1953.jpg\nimg/chair/1955.jpg\nimg/chair/1957.jpg\nimg/chair/1958.jpg\nimg/chair/1959.jpeg\nimg/chair/1962.jpg\nimg/chair/1964.jpeg\nimg/chair/1967.jpg\nimg/chair/1969.jpg\nimg/chair/1970.jpg\nimg/chair/1971.jpeg\nimg/chair/1974.jpg\nimg/chair/1979.jpg\nimg/chair/1984.jpeg\nimg/chair/1985.jpg\nimg/chair/1990.jpg\nimg/chair/1991.jpg\nimg/chair/1995.jpg\nimg/chair/1997.jpg\nimg/chair/2003.jpg\nimg/chair/2004.jpg\nimg/chair/2005.jpg\nimg/chair/2006.jpg\nimg/chair/2008.jpg\nimg/chair/2010.jpg\nimg/chair/2012.jpg\nimg/chair/2013.jpg\nimg/chair/2016.jpg\nimg/chair/2017.jpg\nimg/chair/2018.jpg\nimg/chair/2028.jpg\nimg/chair/0089.png\nimg/chair/2034.jpg\nimg/chair/2035.jpg\nimg/chair/2036.jpg\nimg/chair/2037.jpg\nimg/chair/2039.jpg\nimg/chair/2042.jpg\nimg/chair/2044.jpg\nimg/chair/2045.jpg\nimg/chair/2052.jpg\nimg/chair/2053.jpg\nimg/chair/2054.jpg\nimg/chair/2058.jpg\nimg/chair/2059.jpg\nimg/chair/2062.jpg\nimg/chair/2064.jpg\nimg/chair/2065.jpg\nimg/chair/2067.jpg\nimg/chair/2070.jpg\nimg/chair/2071.jpg\nimg/chair/2072.jpg\nimg/chair/2075.jpg\nimg/chair/2078.jpg\nimg/chair/2082.jpg\nimg/chair/2085.jpg\nimg/chair/2086.jpg\nimg/chair/2093.jpg\nimg/chair/2095.jpg\nimg/chair/2097.jpg\nimg/chair/2098.jpg\nimg/chair/2099.jpg\nimg/chair/2101.jpg\nimg/chair/2103.jpg\nimg/chair/2107.jpg\nimg/chair/2108.jpg\nimg/chair/2109.jpg\nimg/chair/2110.jpg\nimg/chair/2111.jpg\nimg/chair/2112.jpg\nimg/chair/2121.jpg\nimg/chair/2122.jpg\nimg/chair/2128.jpg\nimg/chair/2133.jpg\nimg/chair/2138.jpg\nimg/chair/2139.jpg\nimg/chair/2140.jpg\nimg/chair/2141.jpg\nimg/chair/2142.jpg\nimg/chair/2144.jpg\nimg/chair/2146.jpg\nimg/chair/2147.jpg\nimg/chair/2148.jpg\nimg/chair/2150.jpg\nimg/chair/2151.jpg\nimg/chair/2153.jpg\nimg/chair/2154.jpg\nimg/chair/2155.jpg\nimg/chair/2156.jpg\nimg/chair/2158.jpg\nimg/chair/2162.jpg\nimg/chair/2166.jpg\nimg/chair/2168.jpg\nimg/chair/2169.jpg\nimg/chair/2171.jpg\nimg/chair/2173.jpg\nimg/chair/2176.jpg\nimg/chair/2177.jpg\nimg/chair/2178.jpg\nimg/chair/2179.jpg\nimg/chair/2180.jpeg\nimg/chair/2182.jpg\nimg/chair/2183.jpg\nimg/chair/2184.jpg\nimg/chair/2185.jpg\nimg/chair/2186.jpg\nimg/chair/2187.jpg\nimg/chair/2188.jpg\nimg/chair/2189.jpg\nimg/chair/2190.png\nimg/chair/2191.jpg\nimg/chair/2193.jpg\nimg/chair/2194.jpg\nimg/chair/2198.jpg\nimg/chair/2199.jpg\nimg/chair/2200.jpg\nimg/chair/2201.jpg\nimg/chair/2205.jpg\nimg/chair/2207.jpeg\nimg/chair/2208.jpg\nimg/chair/2209.jpg\nimg/chair/2210.jpg\nimg/chair/2211.jpg\nimg/chair/2212.jpg\nimg/chair/2213.jpg\nimg/chair/2214.jpg\nimg/chair/2215.jpg\nimg/chair/2216.jpg\nimg/chair/2218.png\nimg/chair/2219.jpg\nimg/chair/2325.jpg\nimg/chair/2342.jpg\nimg/chair/2345.png\nimg/chair/2352.jpg\nimg/chair/0075.png\nimg/chair/2360.jpg\nimg/chair/2362.jpg\nimg/chair/2364.jpg\nimg/chair/2365.jpg\nimg/chair/2368.jpg\nimg/chair/2370.jpg\nimg/chair/2372.jpg\nimg/chair/2373.jpg\nimg/chair/2375.jpg\nimg/chair/2377.jpg\nimg/chair/2380.jpg\nimg/chair/2384.jpg\nimg/chair/2387.jpg\nimg/chair/2388.jpg\nimg/chair/2390.jpg\nimg/chair/2391.jpg\nimg/chair/2402.jpg\nimg/chair/2403.jpg\nimg/chair/2405.jpg\nimg/chair/2406.jpg\nimg/chair/2410.jpg\nimg/chair/2412.jpg\nimg/chair/2413.jpg\nimg/chair/2414.jpg\nimg/chair/2419.jpg\nimg/chair/2420.jpg\nimg/chair/2424.jpg\nimg/chair/2425.jpg\nimg/chair/2432.jpg\nimg/chair/2437.jpg\nimg/chair/2438.jpg\nimg/chair/2444.jpg\nimg/chair/2445.jpg\nimg/chair/2446.jpg\nimg/chair/2447.jpg\nimg/chair/2448.jpg\nimg/chair/0087.png\nimg/chair/2457.jpg\nimg/chair/2465.jpg\nimg/chair/2466.jpg\nimg/chair/2484.jpg\nimg/chair/2488.jpg\nimg/chair/2492.jpg\nimg/chair/2493.jpg\nimg/chair/2498.jpg\nimg/chair/2499.jpg\nimg/chair/2503.jpg\nimg/chair/2506.jpg\nimg/chair/2512.jpg\nimg/chair/2516.jpg\nimg/chair/2520.jpg\nimg/chair/2521.jpg\nimg/chair/2522.jpg\nimg/chair/2529.jpg\nimg/chair/2531.jpg\nimg/chair/2533.jpg\nimg/chair/2537.jpg\nimg/chair/2538.jpg\nimg/chair/2544.jpg\nimg/chair/2548.jpg\nimg/chair/2549.jpg\nimg/chair/2550.jpg\nimg/chair/2552.jpg\nimg/chair/2554.jpg\nimg/chair/2559.jpg\nimg/chair/2570.png\nimg/chair/2572.jpg\nimg/chair/2573.jpeg\nimg/chair/2576.jpg\nimg/chair/2580.jpg\nimg/chair/2586.jpg\nimg/chair/2589.jpg\nimg/chair/2702.jpg\nimg/chair/2707.jpg\nimg/chair/2713.jpg\nimg/chair/2717.jpg\nimg/chair/2720.jpg\nimg/chair/2724.jpg\nimg/chair/2725.jpg\nimg/chair/2729.jpg\nimg/chair/2730.jpg\nimg/chair/2735.jpg\nimg/chair/2737.jpg\nimg/chair/2749.jpg\nimg/chair/2750.jpg\nimg/chair/0006.png\nimg/chair/0018.png\nimg/chair/0023.png\nimg/chair/0030.png\nimg/chair/0035.png\nimg/chair/0038.png\nimg/chair/0043.png\nimg/chair/0049.png\nimg/chair/0064.png\nimg/chair/0079.png\nimg/chair/0088.png\nimg/chair/0103.png\nimg/chair/0112.png\nimg/chair/2794.jpg\nimg/chair/2799.jpg\nimg/chair/2802.jpg\nimg/chair/2805.jpg\nimg/chair/2809.jpg\nimg/chair/2810.jpg\nimg/chair/2812.jpg\nimg/chair/2813.jpg\nimg/chair/2814.jpg\nimg/chair/2817.jpg\nimg/chair/2819.jpg\nimg/chair/2822.jpg\nimg/chair/2825.jpg\nimg/chair/0001.png\nimg/chair/0002.png\nimg/chair/0003.png\nimg/chair/0004.png\nimg/chair/0005.png\nimg/chair/0007.png\nimg/chair/0010.png\nimg/chair/0017.png\nimg/chair/0020.png\nimg/chair/0021.png\nimg/chair/0022.png\nimg/chair/0024.png\nimg/chair/0025.png\nimg/chair/0029.png\nimg/chair/0034.png\nimg/chair/0036.png\nimg/chair/0037.png\nimg/chair/0039.png\nimg/chair/0042.png\nimg/chair/0050.png\nimg/chair/0054.png\nimg/chair/0056.png\nimg/chair/0057.png\nimg/chair/0059.png\nimg/chair/0060.png\nimg/chair/0061.png\nimg/chair/0062.png\nimg/chair/0063.png\nimg/chair/0065.png\nimg/chair/0068.png\nimg/chair/0074.png\nimg/chair/0076.png\nimg/chair/0078.png\nimg/chair/0081.png\nimg/chair/0084.png\nimg/chair/0090.png\nimg/chair/0095.png\nimg/chair/0096.png\nimg/chair/0097.png\nimg/chair/0098.png\nimg/chair/0099.png\nimg/chair/0101.png\nimg/chair/0102.png\nimg/chair/0104.png\nimg/chair/0106.png\nimg/chair/0109.png\nimg/chair/2832.jpg\nimg/chair/2835.jpg\nimg/chair/2849.jpg\nimg/chair/2850.jpg\nimg/chair/2851.jpg\nimg/chair/2858.jpg\nimg/chair/2868.jpg\nimg/chair/2870.jpg\nimg/chair/2876.jpg\nimg/chair/2878.jpg\nimg/chair/2883.jpg\nimg/chair/2887.jpg\nimg/chair/2888.jpg\nimg/chair/2889.jpg\nimg/chair/2891.jpg\nimg/chair/2893.jpg\nimg/chair/2896.jpg\nimg/chair/2898.jpg\nimg/chair/2906.jpg\nimg/chair/2910.jpg\nimg/chair/2913.jpg\nimg/chair/2914.jpg\nimg/chair/2915.jpg\nimg/chair/2917.jpg\nimg/chair/2919.jpg\nimg/chair/2924.jpg\nimg/chair/2925.jpg\nimg/chair/2926.jpg\nimg/chair/2927.jpg\nimg/chair/2934.jpg\nimg/chair/2936.jpg\nimg/chair/2938.jpg\nimg/chair/2940.jpg\nimg/chair/2941.jpg\nimg/chair/2947.jpg\nimg/chair/2948.jpg\nimg/chair/2953.jpg\nimg/chair/2954.jpg\nimg/chair/2959.jpg\nimg/chair/2963.jpg\nimg/chair/2964.jpg\nimg/chair/2965.jpg\nimg/chair/2970.jpg\nimg/chair/2971.jpg\nimg/chair/2976.jpg\nimg/chair/2977.jpg\nimg/chair/2981.jpg\nimg/chair/2985.jpg\nimg/chair/2986.jpg\nimg/chair/2987.jpg\nimg/chair/2988.jpg\nimg/chair/2990.jpg\nimg/chair/2997.jpg\nimg/chair/3000.jpg\nimg/chair/3001.jpg\nimg/chair/3002.jpg\nimg/chair/3005.jpg\nimg/chair/3018.jpg\nimg/chair/3019.jpg\nimg/chair/3022.jpg\nimg/chair/3024.jpg\nimg/chair/3028.jpg\nimg/chair/3030.jpg\nimg/chair/3039.jpg\nimg/chair/3042.jpg\nimg/chair/3045.jpg\nimg/chair/3049.jpg\nimg/chair/3061.jpg\nimg/chair/3067.jpg\nimg/chair/3070.jpg\nimg/chair/3071.jpeg\nimg/chair/3072.jpg\nimg/chair/3073.jpg\nimg/chair/3078.jpg\nimg/chair/3080.jpg\nimg/chair/3082.jpg\nimg/chair/3084.jpg\nimg/chair/3085.jpg\nimg/chair/3089.jpg\nimg/chair/3090.jpg\nimg/chair/3093.jpg\nimg/chair/3096.jpg\nimg/chair/3117.jpg\nimg/chair/3118.jpg\nimg/chair/3122.jpg\nimg/chair/3125.jpg\nimg/chair/3127.jpg\nimg/chair/3130.jpg\nimg/chair/3131.jpg\nimg/chair/3132.jpg\nimg/chair/3138.jpg\nimg/chair/3139.jpg\nimg/chair/3141.jpg\nimg/chair/3147.jpg\nimg/chair/3148.jpg\nimg/chair/3151.jpg\nimg/chair/3156.jpg\nimg/chair/3159.jpg\nimg/chair/3160.jpg\nimg/chair/3163.jpg\nimg/chair/3167.jpg\nimg/chair/3176.jpg\nimg/chair/3178.jpg\nimg/chair/3179.jpg\nimg/chair/3183.jpg\nimg/chair/3190.jpg\nimg/chair/3195.jpg\nimg/chair/3196.jpg\nimg/chair/3205.jpg\nimg/chair/3208.jpg\nimg/chair/3210.jpg\nimg/chair/3214.jpg\nimg/chair/3215.jpg\nimg/chair/3217.jpg\nimg/chair/3218.jpg\nimg/chair/3323.jpg\nimg/chair/3327.jpg\nimg/chair/3329.jpg\nimg/chair/3332.jpg\nimg/chair/3334.jpg\nimg/chair/3336.jpg\nimg/chair/3339.jpg\nimg/chair/3341.jpg\nimg/chair/3353.jpg\nimg/chair/3365.jpg\nimg/chair/3366.jpg\nimg/chair/3368.jpg\nimg/chair/3369.jpg\nimg/chair/3378.jpg\nimg/chair/3380.jpg\nimg/chair/3381.jpg\nimg/chair/0008.png\nimg/chair/0009.png\nimg/chair/0026.png\nimg/chair/0028.png\nimg/chair/0051.png\nimg/chair/0052.png\nimg/chair/0113.png\nimg/chair/3383.jpg\nimg/chair/3386.jpg\nimg/chair/3387.jpg\nimg/chair/3388.jpg\nimg/chair/3390.jpg\nimg/chair/3391.jpg\nimg/chair/3392.jpg\nimg/chair/3393.jpg\nimg/chair/3395.jpg\nimg/chair/3397.jpg\nimg/chair/3400.jpg\nimg/chair/3402.jpg\nimg/chair/3406.jpg\nimg/chair/3407.jpg\nimg/chair/3418.jpg\nimg/chair/3419.png\nimg/chair/3421.jpg\nimg/chair/3428.jpg\nimg/chair/3432.jpg\nimg/chair/3433.jpg\nimg/chair/3434.jpg\nimg/chair/3436.jpg\nimg/chair/3438.jpg\nimg/chair/3442.jpg\nimg/chair/3443.jpg\nimg/chair/3444.jpg\nimg/chair/3445.png\nimg/chair/3448.png\nimg/chair/3449.jpg\nimg/chair/3451.jpg\nimg/chair/3455.jpg\nimg/chair/3456.jpg\nimg/chair/3458.jpg\nimg/chair/3459.jpg\nimg/chair/3462.jpg\nimg/chair/3464.jpg\nimg/chair/3465.jpg\nimg/chair/3467.jpg\nimg/chair/3470.jpg\nimg/chair/3471.jpeg\nimg/chair/3473.jpg\nimg/chair/3474.jpg\nimg/chair/3486.jpg\nimg/chair/3487.jpg\nimg/chair/3493.jpg\nimg/chair/3497.jpg\nimg/chair/3500.jpg\nimg/chair/3502.jpg\nimg/chair/3503.jpg\nimg/chair/3505.jpg\nimg/chair/3507.jpg\nimg/chair/3509.jpg\nimg/chair/3510.jpg\nimg/chair/3512.jpg\nimg/chair/3513.jpg\nimg/chair/3516.jpg\nimg/chair/3519.jpg\nimg/chair/3520.jpg\nimg/chair/3521.jpg\nimg/chair/3522.jpg\nimg/chair/3523.jpg\nimg/chair/3526.jpg\nimg/chair/3528.jpg\nimg/chair/3531.jpg\nimg/chair/3533.jpg\nimg/chair/3534.jpg\nimg/chair/3535.jpg\nimg/chair/3538.jpg\nimg/chair/3541.jpg\nimg/chair/3548.jpg\nimg/chair/3551.jpg\nimg/chair/3553.jpg\nimg/chair/3554.jpg\nimg/chair/3555.jpg\nimg/chair/3556.png\nimg/chair/3558.jpg\nimg/chair/3559.jpg\nimg/chair/3563.jpg\nimg/chair/3565.jpg\nimg/chair/3566.jpg\nimg/chair/3568.jpg\nimg/chair/3569.jpg\nimg/chair/3570.jpg\nimg/chair/3571.jpg\nimg/chair/3575.jpg\nimg/chair/3576.jpeg\nimg/chair/3578.jpg\nimg/chair/3582.jpg\nimg/chair/3586.jpg\nimg/chair/3587.jpg\nimg/chair/3589.jpg\nimg/chair/3590.jpg\nimg/chair/3591.jpg\nimg/chair/3595.jpg\nimg/chair/3596.jpg\nimg/chair/3597.jpg\nimg/chair/3600.jpg\nimg/chair/3604.jpg\nimg/chair/3608.jpg\nimg/chair/3609.jpg\nimg/chair/3611.jpeg\nimg/chair/3613.jpg\nimg/chair/3614.jpg\nimg/chair/3616.jpg\nimg/chair/3620.jpg\nimg/chair/3622.jpg\nimg/chair/3623.jpg\nimg/chair/3624.jpg\nimg/chair/3626.jpg\nimg/chair/3628.jpg\nimg/chair/3629.jpg\nimg/chair/3631.jpg\nimg/chair/3632.jpg\nimg/chair/3633.jpg\nimg/chair/3636.jpg\nimg/chair/3640.jpeg\nimg/chair/3643.jpg\nimg/chair/3645.png\nimg/chair/3649.jpg\nimg/chair/3650.jpg\nimg/chair/3652.jpg\nimg/chair/3653.jpg\nimg/chair/3654.jpg\nimg/chair/3655.jpeg\nimg/chair/3656.jpg\nimg/chair/3658.jpg\nimg/chair/3659.jpg\nimg/chair/3661.jpg\nimg/chair/3664.jpg\nimg/chair/3669.jpeg\nimg/chair/3672.jpg\nimg/chair/3673.jpg\nimg/chair/3674.jpg\nimg/chair/3675.jpg\nimg/chair/0015.png\nimg/chair/0031.png\nimg/chair/0032.png\nimg/chair/0094.png\nimg/chair/0100.png\nimg/chair/3677.jpg\nimg/chair/3678.jpg\nimg/chair/3680.jpg\nimg/chair/3685.jpg\nimg/chair/3686.png\nimg/chair/3691.jpg\nimg/chair/3692.jpg\nimg/chair/3693.jpg\nimg/chair/3706.jpg\nimg/chair/3708.jpg\nimg/chair/3714.jpg\nimg/chair/3715.jpg\nimg/chair/3716.jpg\nimg/chair/3717.jpg\nimg/chair/3724.jpg\nimg/chair/3726.jpg\nimg/chair/3727.jpg\nimg/chair/3735.jpg\nimg/chair/3741.jpg\nimg/chair/3743.jpg\nimg/chair/3744.jpeg\nimg/chair/3751.jpg\nimg/chair/3753.jpg\nimg/chair/3761.jpg\nimg/chair/3762.jpg\nimg/chair/3764.jpg\nimg/chair/3765.jpg\nimg/chair/3769.jpg\nimg/chair/3778.jpg\nimg/chair/3785.jpg\nimg/chair/3789.jpg\nimg/chair/3790.jpg\nimg/chair/3796.jpg\nimg/chair/3798.jpg\nimg/chair/3801.jpg\nimg/chair/3817.jpg\nimg/chair/3818.jpg\nimg/chair/3820.jpg\nimg/chair/3831.jpg\nimg/chair/3835.jpg\nimg/chair/3836.jpg\nimg/chair/3837.jpg\nimg/chair/0116.jpg\nimg/chair/0117.jpg\nimg/chair/0123.jpg\nimg/chair/0125.jpg\nimg/chair/0128.jpg\nimg/chair/0131.jpg\nimg/chair/0139.jpg\nimg/chair/0140.jpg\nimg/chair/0149.jpg\nimg/chair/0221.jpg\nimg/chair/0237.jpg\nimg/chair/0310.jpg\nimg/chair/0313.jpg\nimg/chair/0398.jpg\nimg/chair/0498.jpg\nimg/chair/0505.jpg\nimg/chair/0508.jpg\nimg/chair/0555.jpg\nimg/chair/0558.jpg\nimg/chair/0560.jpg\nimg/chair/0562.jpg\nimg/chair/0567.jpg\nimg/chair/0569.jpg\nimg/chair/0576.jpg\nimg/chair/0579.jpg\nimg/chair/0582.jpg\nimg/chair/0587.jpg\nimg/chair/0597.jpg\nimg/chair/0598.jpg\nimg/chair/0601.jpg\nimg/chair/0603.jpg\nimg/chair/0614.jpg\nimg/chair/0635.jpg\nimg/chair/0661.jpg\nimg/chair/0689.jpg\nimg/chair/0694.jpg\nimg/chair/0704.jpg\nimg/chair/0730.jpg\nimg/chair/0735.jpg\nimg/chair/0739.jpg\nimg/chair/0758.jpg\nimg/chair/0759.jpg\nimg/chair/0767.jpg\nimg/chair/0785.jpg\nimg/chair/0790.jpg\nimg/chair/0811.jpg\nimg/chair/0818.jpg\nimg/chair/0825.jpg\nimg/chair/0829.jpg\nimg/chair/0836.jpg\nimg/chair/0865.jpg\nimg/chair/0869.jpg\nimg/chair/0870.jpg\nimg/chair/0871.jpg\nimg/chair/0872.jpg\nimg/chair/0879.jpg\nimg/chair/0887.jpg\nimg/chair/0891.jpg\nimg/chair/0893.jpg\nimg/chair/0894.jpg\nimg/chair/0895.jpg\nimg/chair/0900.jpg\nimg/chair/0902.jpg\nimg/chair/0914.jpg\nimg/chair/0915.jpg\nimg/chair/0938.jpg\nimg/chair/0943.jpg\nimg/chair/0948.jpg\nimg/chair/0951.jpg\nimg/chair/0964.jpg\nimg/chair/0973.jpg\nimg/chair/0974.jpg\nimg/chair/0980.jpg\nimg/chair/0991.jpg\nimg/chair/0992.jpg\nimg/chair/1004.jpg\nimg/chair/1005.jpg\nimg/chair/1012.jpg\nimg/chair/1020.jpg\nimg/chair/1021.jpg\nimg/chair/1030.jpg\nimg/chair/1046.jpg\nimg/chair/1047.jpg\nimg/chair/1050.jpg\nimg/chair/1063.jpg\nimg/chair/1065.jpg\nimg/chair/1066.jpg\nimg/chair/1067.jpg\nimg/chair/1068.jpg\nimg/chair/1074.jpg\nimg/chair/1085.jpg\nimg/chair/1086.jpg\nimg/chair/1087.jpg\nimg/chair/1090.jpg\nimg/chair/1095.jpg\nimg/chair/1107.jpg\nimg/chair/1109.jpg\nimg/chair/1120.jpg\nimg/chair/1173.jpg\nimg/chair/1175.jpg\nimg/chair/1189.jpg\nimg/chair/1218.jpg\nimg/chair/1228.jpg\nimg/chair/1245.jpg\nimg/chair/1249.jpg\nimg/chair/1265.jpg\nimg/chair/1266.jpg\nimg/chair/1272.jpg\nimg/chair/1310.jpg\nimg/chair/1329.jpg\nimg/chair/1346.jpg\nimg/chair/1353.jpg\nimg/chair/1412.jpg\nimg/chair/1422.jpg\nimg/chair/1425.jpg\nimg/chair/1455.jpg\nimg/chair/1529.jpg\nimg/desk/0009.jpg\nimg/desk/0010.jpg\nimg/desk/0011.jpg\nimg/desk/0012.jpg\nimg/desk/0013.jpg\nimg/desk/0014.jpg\nimg/desk/0015.jpg\nimg/desk/0016.jpg\nimg/desk/0017.jpg\nimg/desk/0018.jpg\nimg/desk/0019.jpg\nimg/desk/0020.jpg\nimg/desk/0021.jpg\nimg/desk/0022.jpg\nimg/desk/0023.jpg\nimg/desk/0024.jpg\nimg/desk/0025.jpg\nimg/desk/0026.jpg\nimg/desk/0027.jpg\nimg/desk/0028.jpg\nimg/desk/0029.jpg\nimg/desk/0030.jpg\nimg/desk/0031.jpg\nimg/desk/0032.jpg\nimg/desk/0033.jpg\nimg/desk/0034.jpg\nimg/desk/0035.jpg\nimg/desk/0036.jpg\nimg/desk/0037.jpg\nimg/desk/0038.jpg\nimg/desk/0039.jpg\nimg/desk/0040.jpg\nimg/desk/0041.jpg\nimg/desk/0042.jpg\nimg/desk/0043.jpg\nimg/desk/0044.jpg\nimg/desk/0045.jpeg\nimg/desk/0046.jpg\nimg/desk/0047.jpg\nimg/desk/0048.jpg\nimg/desk/0049.jpg\nimg/desk/0050.jpg\nimg/desk/0051.jpg\nimg/desk/0052.jpg\nimg/desk/0053.jpg\nimg/desk/0054.jpg\nimg/desk/0055.jpg\nimg/desk/0056.jpg\nimg/desk/0057.jpg\nimg/desk/0058.jpg\nimg/desk/0059.jpg\nimg/desk/0060.jpg\nimg/desk/0061.jpg\nimg/desk/0062.jpg\nimg/desk/0063.jpg\nimg/desk/0064.jpg\nimg/desk/0065.jpg\nimg/desk/0066.jpg\nimg/desk/0067.jpg\nimg/desk/0068.jpg\nimg/desk/0069.jpg\nimg/desk/0070.jpg\nimg/desk/0071.jpg\nimg/desk/0072.jpg\nimg/desk/0073.jpg\nimg/desk/0074.jpg\nimg/desk/0075.jpg\nimg/desk/0076.jpg\nimg/desk/0077.jpg\nimg/desk/0078.jpg\nimg/desk/0079.jpg\nimg/desk/0080.jpg\nimg/desk/0081.jpg\nimg/desk/0082.jpg\nimg/desk/0083.jpg\nimg/desk/0084.jpg\nimg/desk/0085.jpg\nimg/desk/0086.jpg\nimg/desk/0087.jpg\nimg/desk/0088.jpg\nimg/desk/0089.jpg\nimg/desk/0090.jpg\nimg/desk/0091.jpg\nimg/desk/0092.jpg\nimg/desk/0093.jpg\nimg/desk/0094.jpg\nimg/desk/0095.jpg\nimg/desk/0096.jpg\nimg/desk/0097.jpg\nimg/desk/0684.jpg\nimg/desk/0098.jpg\nimg/desk/0099.jpg\nimg/desk/0100.jpg\nimg/desk/0101.jpg\nimg/desk/0102.jpg\nimg/desk/0103.jpg\nimg/desk/0104.jpg\nimg/desk/0105.jpg\nimg/desk/0106.jpg\nimg/desk/0107.jpg\nimg/desk/0108.jpg\nimg/desk/0109.jpg\nimg/desk/0110.jpg\nimg/desk/0111.jpg\nimg/desk/0112.jpg\nimg/desk/0113.jpg\nimg/desk/0114.jpg\nimg/desk/0115.jpg\nimg/desk/0680.jpg\nimg/desk/0681.jpg\nimg/desk/0682.jpg\nimg/desk/0685.jpg\nimg/desk/0690.jpg\nimg/desk/0691.jpg\nimg/desk/0698.jpg\nimg/desk/0116.jpg\nimg/desk/0117.jpg\nimg/desk/0118.jpg\nimg/desk/0119.jpg\nimg/desk/0120.jpg\nimg/desk/0121.jpg\nimg/desk/0683.jpg\nimg/desk/0692.jpg\nimg/desk/0699.jpg\nimg/desk/0122.jpg\nimg/desk/0123.jpg\nimg/desk/0124.jpg\nimg/desk/0125.jpg\nimg/desk/0126.jpg\nimg/desk/0127.jpg\nimg/desk/0128.jpg\nimg/desk/0129.jpg\nimg/desk/0130.jpg\nimg/desk/0131.jpg\nimg/desk/0132.jpg\nimg/desk/0133.jpg\nimg/desk/0134.jpg\nimg/desk/0135.jpg\nimg/desk/0136.jpg\nimg/desk/0137.jpg\nimg/desk/0138.jpg\nimg/desk/0139.jpg\nimg/desk/0140.jpg\nimg/desk/0141.jpg\nimg/desk/0142.jpg\nimg/desk/0143.jpg\nimg/desk/0144.jpg\nimg/desk/0145.jpg\nimg/desk/0146.jpg\nimg/desk/0147.jpg\nimg/desk/0148.jpg\nimg/desk/0149.jpg\nimg/desk/0688.jpg\nimg/desk/0150.jpg\nimg/desk/0151.jpg\nimg/desk/0152.jpg\nimg/desk/0153.jpg\nimg/desk/0154.jpg\nimg/desk/0155.jpg\nimg/desk/0156.jpg\nimg/desk/0157.jpg\nimg/desk/0158.jpeg\nimg/desk/0159.jpg\nimg/desk/0160.jpg\nimg/desk/0161.jpg\nimg/desk/0162.jpg\nimg/desk/0163.jpg\nimg/desk/0164.jpg\nimg/desk/0165.jpg\nimg/desk/0166.jpg\nimg/desk/0167.jpg\nimg/desk/0168.jpg\nimg/desk/0169.jpg\nimg/desk/0170.jpg\nimg/desk/0693.jpg\nimg/desk/0171.jpg\nimg/desk/0172.jpg\nimg/desk/0173.jpg\nimg/desk/0174.jpg\nimg/desk/0175.jpeg\nimg/desk/0187.jpg\nimg/desk/0188.jpg\nimg/desk/0189.jpeg\nimg/desk/0190.jpg\nimg/desk/0191.jpg\nimg/desk/0192.jpg\nimg/desk/0193.jpg\nimg/desk/0194.jpeg\nimg/desk/0195.jpg\nimg/desk/0196.jpg\nimg/desk/0197.jpg\nimg/desk/0198.jpg\nimg/desk/0199.jpg\nimg/desk/0200.jpg\nimg/desk/0201.jpg\nimg/desk/0202.jpg\nimg/desk/0209.jpg\nimg/desk/0210.jpg\nimg/desk/0211.jpg\nimg/desk/0212.jpg\nimg/desk/0213.jpg\nimg/desk/0214.jpg\nimg/desk/0215.jpg\nimg/desk/0216.jpg\nimg/desk/0217.jpg\nimg/desk/0218.jpg\nimg/desk/0219.jpg\nimg/desk/0220.jpg\nimg/desk/0221.jpg\nimg/desk/0222.jpg\nimg/desk/0223.jpg\nimg/desk/0224.jpg\nimg/desk/0225.jpg\nimg/desk/0226.jpg\nimg/desk/0227.jpg\nimg/desk/0228.jpg\nimg/desk/0229.jpg\nimg/desk/0230.jpg\nimg/desk/0231.jpg\nimg/desk/0232.jpg\nimg/desk/0233.jpg\nimg/desk/0234.jpg\nimg/desk/0235.jpg\nimg/desk/0236.jpg\nimg/desk/0237.jpg\nimg/desk/0238.jpg\nimg/desk/0239.jpg\nimg/desk/0240.jpg\nimg/desk/0241.jpg\nimg/desk/0242.jpg\nimg/desk/0243.jpg\nimg/desk/0244.jpg\nimg/desk/0245.jpg\nimg/desk/0246.jpg\nimg/desk/0247.jpg\nimg/desk/0248.jpg\nimg/desk/0249.jpg\nimg/desk/0250.jpg\nimg/desk/0251.jpg\nimg/desk/0252.jpg\nimg/desk/0253.jpg\nimg/desk/0254.jpg\nimg/desk/0255.jpg\nimg/desk/0256.jpg\nimg/desk/0257.jpg\nimg/desk/0258.jpg\nimg/desk/0259.jpg\nimg/desk/0260.jpg\nimg/desk/0261.jpg\nimg/desk/0262.jpg\nimg/desk/0263.jpg\nimg/desk/0264.jpg\nimg/desk/0265.jpg\nimg/desk/0266.jpg\nimg/desk/0267.jpg\nimg/desk/0268.jpg\nimg/desk/0269.jpg\nimg/desk/0270.jpg\nimg/desk/0271.jpg\nimg/desk/0272.jpg\nimg/desk/0273.png\nimg/desk/0274.jpg\nimg/desk/0275.jpg\nimg/desk/0276.jpg\nimg/desk/0277.jpg\nimg/desk/0278.jpg\nimg/desk/0279.jpg\nimg/desk/0280.jpg\nimg/desk/0281.jpg\nimg/desk/0282.jpg\nimg/desk/0283.jpg\nimg/desk/0284.jpg\nimg/desk/0285.jpg\nimg/desk/0286.jpg\nimg/desk/0287.jpg\nimg/desk/0288.jpg\nimg/desk/0289.jpg\nimg/desk/0290.jpg\nimg/desk/0291.jpg\nimg/desk/0292.jpg\nimg/desk/0293.jpg\nimg/desk/0294.jpg\nimg/desk/0295.jpg\nimg/desk/0296.jpg\nimg/desk/0297.jpg\nimg/desk/0298.jpg\nimg/desk/0299.jpg\nimg/desk/0300.jpg\nimg/desk/0301.jpg\nimg/desk/0302.jpg\nimg/desk/0303.jpg\nimg/desk/0304.jpg\nimg/desk/0305.jpg\nimg/desk/0306.jpg\nimg/desk/0307.jpg\nimg/desk/0308.jpg\nimg/desk/0309.jpg\nimg/desk/0310.jpg\nimg/desk/0311.jpg\nimg/desk/0312.jpg\nimg/desk/0313.jpg\nimg/desk/0314.jpg\nimg/desk/0315.jpg\nimg/desk/0316.jpg\nimg/desk/0317.jpg\nimg/desk/0318.jpeg\nimg/desk/0319.jpg\nimg/desk/0320.jpg\nimg/desk/0416.jpg\nimg/desk/0417.jpg\nimg/desk/0418.jpg\nimg/desk/0419.jpg\nimg/desk/0420.jpg\nimg/desk/0421.jpg\nimg/desk/0422.jpg\nimg/desk/0423.jpg\nimg/desk/0424.jpg\nimg/desk/0425.jpg\nimg/desk/0426.jpg\nimg/desk/0427.jpg\nimg/desk/0428.jpg\nimg/desk/0429.jpg\nimg/desk/0430.jpg\nimg/desk/0431.jpg\nimg/desk/0432.jpg\nimg/desk/0433.jpg\nimg/desk/0434.jpg\nimg/desk/0435.jpg\nimg/desk/0436.jpg\nimg/desk/0437.jpg\nimg/desk/0438.jpg\nimg/desk/0439.png\nimg/desk/0440.jpg\nimg/desk/0441.jpg\nimg/desk/0442.jpg\nimg/desk/0443.jpg\nimg/desk/0444.jpg\nimg/desk/0445.jpg\nimg/desk/0446.jpg\nimg/desk/0447.jpg\nimg/desk/0448.jpg\nimg/desk/0449.jpg\nimg/desk/0450.jpg\nimg/desk/0451.jpg\nimg/desk/0452.jpg\nimg/desk/0453.jpg\nimg/desk/0454.jpg\nimg/desk/0455.jpg\nimg/desk/0456.jpg\nimg/desk/0457.jpg\nimg/desk/0458.jpg\nimg/desk/0459.jpg\nimg/desk/0460.jpg\nimg/desk/0461.jpg\nimg/desk/0462.jpg\nimg/desk/0463.jpg\nimg/desk/0464.jpg\nimg/desk/0465.jpg\nimg/desk/0466.jpg\nimg/desk/0467.jpg\nimg/desk/0468.jpeg\nimg/desk/0469.jpg\nimg/desk/0470.jpg\nimg/desk/0471.jpg\nimg/desk/0472.jpg\nimg/desk/0473.jpg\nimg/desk/0474.jpg\nimg/desk/0475.jpg\nimg/desk/0476.jpg\nimg/desk/0477.jpg\nimg/desk/0478.jpg\nimg/desk/0479.jpg\nimg/desk/0480.png\nimg/desk/0481.jpg\nimg/desk/0482.jpg\nimg/desk/0483.jpg\nimg/desk/0484.jpg\nimg/desk/0485.jpg\nimg/desk/0486.jpg\nimg/desk/0487.jpg\nimg/desk/0488.jpg\nimg/desk/0489.jpg\nimg/desk/0490.jpg\nimg/desk/0491.jpg\nimg/desk/0492.jpg\nimg/desk/0493.jpg\nimg/desk/0494.jpg\nimg/desk/0495.jpg\nimg/desk/0496.jpg\nimg/desk/0497.jpg\nimg/desk/0498.jpg\nimg/desk/0499.jpg\nimg/desk/0500.jpg\nimg/desk/0501.jpg\nimg/desk/0502.jpg\nimg/desk/0503.jpg\nimg/desk/0504.jpg\nimg/desk/0505.jpg\nimg/desk/0506.jpg\nimg/desk/0507.jpg\nimg/desk/0508.jpg\nimg/desk/0509.jpg\nimg/desk/0510.jpg\nimg/desk/0511.jpg\nimg/desk/0512.jpg\nimg/desk/0513.jpg\nimg/desk/0514.jpg\nimg/desk/0515.jpg\nimg/desk/0516.jpg\nimg/desk/0517.jpg\nimg/desk/0518.jpg\nimg/desk/0519.jpg\nimg/desk/0520.jpg\nimg/desk/0521.jpg\nimg/desk/0522.jpg\nimg/desk/0523.jpg\nimg/desk/0524.jpg\nimg/desk/0525.jpg\nimg/desk/0526.png\nimg/desk/0689.jpg\nimg/desk/0694.jpg\nimg/desk/0696.jpg\nimg/desk/0697.jpg\nimg/desk/0700.jpg\nimg/desk/0527.jpg\nimg/desk/0528.jpg\nimg/desk/0529.jpg\nimg/desk/0530.jpg\nimg/desk/0531.jpg\nimg/desk/0532.jpg\nimg/desk/0533.jpg\nimg/desk/0534.jpg\nimg/desk/0535.jpg\nimg/desk/0536.jpg\nimg/desk/0537.jpg\nimg/desk/0538.jpg\nimg/desk/0539.jpg\nimg/desk/0540.jpg\nimg/desk/0541.jpg\nimg/desk/0542.jpg\nimg/desk/0543.jpg\nimg/desk/0544.jpg\nimg/desk/0545.jpg\nimg/desk/0546.jpg\nimg/desk/0547.jpg\nimg/desk/0548.jpg\nimg/desk/0549.jpg\nimg/desk/0550.jpg\nimg/desk/0551.jpg\nimg/desk/0552.jpg\nimg/desk/0553.jpg\nimg/desk/0554.jpg\nimg/desk/0555.jpg\nimg/desk/0556.jpg\nimg/desk/0557.png\nimg/desk/0558.jpg\nimg/desk/0559.jpg\nimg/desk/0560.jpg\nimg/desk/0561.jpg\nimg/desk/0562.jpg\nimg/desk/0563.jpg\nimg/desk/0564.jpg\nimg/desk/0565.jpg\nimg/desk/0566.jpg\nimg/desk/0567.jpg\nimg/desk/0568.jpg\nimg/desk/0569.jpg\nimg/desk/0570.jpg\nimg/desk/0571.jpg\nimg/desk/0572.jpg\nimg/desk/0573.jpg\nimg/desk/0574.jpg\nimg/desk/0575.jpg\nimg/desk/0576.jpg\nimg/desk/0577.jpg\nimg/desk/0578.jpg\nimg/desk/0579.jpg\nimg/desk/0580.jpg\nimg/desk/0581.jpg\nimg/desk/0582.jpg\nimg/desk/0583.jpg\nimg/desk/0584.jpg\nimg/desk/0585.jpg\nimg/desk/0586.jpg\nimg/desk/0587.jpg\nimg/desk/0588.jpg\nimg/desk/0589.jpg\nimg/desk/0590.jpg\nimg/desk/0591.jpg\nimg/desk/0592.jpg\nimg/desk/0593.jpg\nimg/desk/0594.jpg\nimg/desk/0595.jpg\nimg/desk/0695.jpg\nimg/desk/0596.jpg\nimg/desk/0597.jpg\nimg/desk/0598.jpg\nimg/desk/0599.jpg\nimg/desk/0600.jpg\nimg/desk/0601.jpg\nimg/desk/0602.jpg\nimg/desk/0603.jpg\nimg/desk/0604.jpg\nimg/desk/0605.jpg\nimg/desk/0606.jpg\nimg/desk/0607.jpg\nimg/desk/0608.jpg\nimg/desk/0609.jpg\nimg/desk/0610.jpg\nimg/desk/0611.jpg\nimg/desk/0612.jpg\nimg/desk/0613.jpg\nimg/desk/0614.jpg\nimg/desk/0615.jpg\nimg/desk/0616.jpg\nimg/desk/0617.jpg\nimg/desk/0618.jpg\nimg/desk/0619.jpg\nimg/desk/0620.jpg\nimg/desk/0621.jpg\nimg/desk/0622.jpg\nimg/desk/0623.jpg\nimg/desk/0624.jpg\nimg/desk/0625.jpg\nimg/desk/0626.jpg\nimg/desk/0627.jpg\nimg/desk/0628.jpg\nimg/desk/0629.jpg\nimg/desk/0630.jpg\nimg/desk/0631.jpg\nimg/desk/0632.jpg\nimg/desk/0633.jpg\nimg/desk/0634.jpg\nimg/desk/0635.jpg\nimg/desk/0636.jpg\nimg/desk/0637.jpg\nimg/desk/0638.jpg\nimg/desk/0639.jpg\nimg/desk/0640.jpg\nimg/desk/0641.jpg\nimg/desk/0642.jpg\nimg/desk/0643.jpg\nimg/desk/0644.jpg\nimg/desk/0645.jpg\nimg/desk/0646.jpg\nimg/desk/0647.jpg\nimg/desk/0648.jpg\nimg/desk/0649.jpg\nimg/desk/0650.jpg\nimg/desk/0651.jpg\nimg/desk/0652.jpg\nimg/desk/0653.jpg\nimg/desk/0654.jpg\nimg/desk/0655.jpg\nimg/desk/0656.jpg\nimg/desk/0657.jpg\nimg/desk/0658.jpg\nimg/desk/0659.jpg\nimg/desk/0660.jpg\nimg/desk/0661.jpg\nimg/desk/0662.jpg\nimg/desk/0663.jpg\nimg/desk/0664.jpg\nimg/desk/0665.jpg\nimg/desk/0666.jpg\nimg/desk/0667.jpg\nimg/desk/0668.jpg\nimg/desk/0669.jpg\nimg/desk/0670.jpg\nimg/desk/0671.jpg\nimg/desk/0672.jpg\nimg/desk/0673.jpg\nimg/desk/0674.jpg\nimg/desk/0675.jpg\nimg/desk/0676.jpg\nimg/desk/0677.jpg\nimg/desk/0678.jpg\nimg/desk/0679.jpeg\nimg/misc/0001.jpg\nimg/misc/0002.jpg\nimg/misc/0003.jpg\nimg/misc/0004.jpg\nimg/misc/0005.jpg\nimg/misc/0006.jpg\nimg/misc/0015.jpg\nimg/misc/0016.jpg\nimg/misc/0017.jpg\nimg/misc/0018.jpg\nimg/misc/0019.jpg\nimg/misc/0020.jpg\nimg/misc/0021.jpg\nimg/misc/0022.jpg\nimg/misc/0023.jpg\nimg/misc/0024.jpg\nimg/misc/0026.jpg\nimg/misc/0027.jpg\nimg/misc/0028.jpg\nimg/misc/0029.jpg\nimg/misc/0031.jpg\nimg/misc/0032.jpg\nimg/misc/0033.jpg\nimg/misc/0035.jpg\nimg/misc/0037.jpg\nimg/misc/0039.jpg\nimg/misc/0040.jpg\nimg/misc/0041.jpg\nimg/misc/0042.jpg\nimg/misc/0044.jpg\nimg/misc/0045.jpg\nimg/misc/0046.jpg\nimg/misc/0047.jpg\nimg/misc/0048.jpg\nimg/misc/0050.jpg\nimg/misc/0052.jpg\nimg/misc/0053.jpg\nimg/misc/0055.jpg\nimg/misc/0056.jpg\nimg/misc/0057.jpg\nimg/misc/0058.jpg\nimg/misc/0059.jpg\nimg/misc/0060.jpg\nimg/misc/0061.jpg\nimg/misc/0062.jpg\nimg/misc/0063.jpg\nimg/misc/0064.jpg\nimg/misc/0065.jpg\nimg/misc/0066.jpg\nimg/misc/0067.jpg\nimg/misc/0068.jpg\nimg/sofa/0122.jpg\nimg/sofa/0123.jpg\nimg/sofa/0124.jpg\nimg/sofa/0125.jpg\nimg/sofa/0126.jpg\nimg/sofa/0127.jpg\nimg/sofa/0128.jpg\nimg/sofa/0129.jpg\nimg/sofa/0130.jpg\nimg/sofa/0131.jpg\nimg/sofa/0132.jpg\nimg/sofa/0133.jpg\nimg/sofa/0134.jpg\nimg/sofa/0135.jpg\nimg/sofa/0136.jpg\nimg/sofa/0137.jpg\nimg/sofa/0138.jpg\nimg/sofa/0139.jpg\nimg/sofa/0140.jpg\nimg/sofa/0141.jpg\nimg/sofa/0142.jpg\nimg/sofa/0143.jpg\nimg/sofa/0144.jpg\nimg/sofa/0145.jpg\nimg/sofa/0146.jpg\nimg/sofa/0147.jpg\nimg/sofa/0148.jpg\nimg/sofa/0149.jpg\nimg/sofa/0150.jpg\nimg/sofa/0151.jpg\nimg/sofa/0152.jpg\nimg/sofa/0153.jpg\nimg/sofa/0154.jpg\nimg/sofa/0155.jpg\nimg/sofa/0006.png\nimg/sofa/0009.png\nimg/sofa/0010.png\nimg/sofa/0047.png\nimg/sofa/0053.png\nimg/sofa/0067.png\nimg/sofa/0075.png\nimg/sofa/0076.png\nimg/sofa/0077.png\nimg/sofa/0082.png\nimg/sofa/0083.png\nimg/sofa/0093.png\nimg/sofa/0354.jpg\nimg/sofa/0355.jpg\nimg/sofa/0356.jpg\nimg/sofa/0357.jpg\nimg/sofa/0358.jpg\nimg/sofa/0359.jpg\nimg/sofa/0360.jpg\nimg/sofa/0361.jpg\nimg/sofa/0362.jpg\nimg/sofa/0363.jpg\nimg/sofa/0364.jpg\nimg/sofa/0365.jpg\nimg/sofa/0366.jpg\nimg/sofa/0367.jpg\nimg/sofa/0368.jpg\nimg/sofa/0369.jpg\nimg/sofa/0370.jpg\nimg/sofa/0371.jpg\nimg/sofa/0372.jpg\nimg/sofa/0373.jpg\nimg/sofa/0374.jpg\nimg/sofa/0375.jpg\nimg/sofa/0376.jpg\nimg/sofa/0377.jpg\nimg/sofa/0378.jpg\nimg/sofa/0379.jpg\nimg/sofa/0380.jpg\nimg/sofa/0381.jpg\nimg/sofa/0382.jpg\nimg/sofa/0383.jpg\nimg/sofa/0384.jpg\nimg/sofa/0385.jpg\nimg/sofa/0386.jpg\nimg/sofa/0387.jpg\nimg/sofa/0388.jpg\nimg/sofa/0389.jpg\nimg/sofa/0390.jpg\nimg/sofa/0391.jpg\nimg/sofa/0392.jpg\nimg/sofa/0393.jpg\nimg/sofa/0394.jpg\nimg/sofa/0395.jpg\nimg/sofa/0396.jpg\nimg/sofa/0397.jpg\nimg/sofa/0398.jpg\nimg/sofa/0399.png\nimg/sofa/0400.jpg\nimg/sofa/0401.jpg\nimg/sofa/0402.jpg\nimg/sofa/0403.jpg\nimg/sofa/0404.jpg\nimg/sofa/0405.jpg\nimg/sofa/0406.jpg\nimg/sofa/0407.jpg\nimg/sofa/0408.jpg\nimg/sofa/0409.jpg\nimg/sofa/0016.png\nimg/sofa/0020.png\nimg/sofa/0021.png\nimg/sofa/0023.png\nimg/sofa/0024.png\nimg/sofa/0025.png\nimg/sofa/0029.png\nimg/sofa/0030.png\nimg/sofa/0031.png\nimg/sofa/0032.png\nimg/sofa/0033.png\nimg/sofa/0034.png\nimg/sofa/0035.png\nimg/sofa/0036.png\nimg/sofa/0038.png\nimg/sofa/0039.png\nimg/sofa/0040.png\nimg/sofa/0041.png\nimg/sofa/0045.png\nimg/sofa/0046.png\nimg/sofa/0049.png\nimg/sofa/0050.png\nimg/sofa/0051.png\nimg/sofa/0063.png\nimg/sofa/0064.png\nimg/sofa/0066.png\nimg/sofa/0068.png\nimg/sofa/0070.png\nimg/sofa/0086.png\nimg/sofa/0087.png\nimg/sofa/0088.png\nimg/sofa/0089.png\nimg/sofa/0090.png\nimg/sofa/0096.png\nimg/sofa/0097.png\nimg/sofa/0098.png\nimg/sofa/0410.jpg\nimg/sofa/0411.jpg\nimg/sofa/0412.jpg\nimg/sofa/0413.jpg\nimg/sofa/0414.jpg\nimg/sofa/0415.jpg\nimg/sofa/0416.jpg\nimg/sofa/0417.jpg\nimg/sofa/0418.jpg\nimg/sofa/0419.jpg\nimg/sofa/0420.jpg\nimg/sofa/0421.jpg\nimg/sofa/0422.jpg\nimg/sofa/0423.jpg\nimg/sofa/0424.jpg\nimg/sofa/0425.jpg\nimg/sofa/0426.jpg\nimg/sofa/0427.jpg\nimg/sofa/0428.jpg\nimg/sofa/0429.jpg\nimg/sofa/0430.jpg\nimg/sofa/0431.jpg\nimg/sofa/0432.jpg\nimg/sofa/0433.jpg\nimg/sofa/0434.jpg\nimg/sofa/0435.jpg\nimg/sofa/0436.jpg\nimg/sofa/0437.jpg\nimg/sofa/0438.jpg\nimg/sofa/0439.jpg\nimg/sofa/0440.jpg\nimg/sofa/0441.jpg\nimg/sofa/0442.jpg\nimg/sofa/0443.jpg\nimg/sofa/0444.jpg\nimg/sofa/0445.jpg\nimg/sofa/0446.jpg\nimg/sofa/0447.jpg\nimg/sofa/0448.jpg\nimg/sofa/0449.jpg\nimg/sofa/0450.jpg\nimg/sofa/0451.jpg\nimg/sofa/0452.jpg\nimg/sofa/0453.jpg\nimg/sofa/0454.jpeg\nimg/sofa/0455.jpg\nimg/sofa/0456.jpg\nimg/sofa/0457.jpg\nimg/sofa/0458.jpg\nimg/sofa/0459.jpg\nimg/sofa/0460.jpg\nimg/sofa/0461.jpg\nimg/sofa/0462.jpg\nimg/sofa/0463.jpg\nimg/sofa/0464.jpg\nimg/sofa/0465.jpg\nimg/sofa/0466.jpg\nimg/sofa/0467.jpg\nimg/sofa/0468.jpg\nimg/sofa/0469.jpg\nimg/sofa/0470.jpg\nimg/sofa/0471.jpg\nimg/sofa/0472.jpg\nimg/sofa/0473.png\nimg/sofa/0474.png\nimg/sofa/0475.jpg\nimg/sofa/0476.jpg\nimg/sofa/0477.jpg\nimg/sofa/0478.jpg\nimg/sofa/0479.jpg\nimg/sofa/0480.jpg\nimg/sofa/0481.jpg\nimg/sofa/0482.jpg\nimg/sofa/0483.jpg\nimg/sofa/0484.jpg\nimg/sofa/0485.jpg\nimg/sofa/0486.jpg\nimg/sofa/0487.jpg\nimg/sofa/0488.jpg\nimg/sofa/0489.jpg\nimg/sofa/0490.jpg\nimg/sofa/0491.jpg\nimg/sofa/0492.jpg\nimg/sofa/0493.jpg\nimg/sofa/0494.jpg\nimg/sofa/0495.jpg\nimg/sofa/0496.jpg\nimg/sofa/0497.jpg\nimg/sofa/0498.jpg\nimg/sofa/0499.jpg\nimg/sofa/0500.jpg\nimg/sofa/0501.jpg\nimg/sofa/0502.jpg\nimg/sofa/0503.jpg\nimg/sofa/0504.jpg\nimg/sofa/0505.jpg\nimg/sofa/0506.jpg\nimg/sofa/0507.jpg\nimg/sofa/0508.jpg\nimg/sofa/0509.jpg\nimg/sofa/0510.jpg\nimg/sofa/0511.jpg\nimg/sofa/0512.jpg\nimg/sofa/0513.jpg\nimg/sofa/0514.jpg\nimg/sofa/0515.jpg\nimg/sofa/0516.jpg\nimg/sofa/0011.png\nimg/sofa/0015.png\nimg/sofa/0069.png\nimg/sofa/0085.png\nimg/sofa/0095.png\nimg/sofa/0517.jpg\nimg/sofa/0518.jpg\nimg/sofa/0519.jpg\nimg/sofa/0520.jpg\nimg/sofa/0521.jpg\nimg/sofa/0522.jpg\nimg/sofa/0523.jpg\nimg/sofa/0524.jpg\nimg/sofa/0525.jpg\nimg/sofa/0526.jpg\nimg/sofa/0527.jpg\nimg/sofa/0528.jpg\nimg/sofa/0529.jpg\nimg/sofa/0530.jpg\nimg/sofa/0531.jpg\nimg/sofa/0532.jpg\nimg/sofa/0533.jpg\nimg/sofa/0534.jpg\nimg/sofa/0535.jpg\nimg/sofa/0536.jpg\nimg/sofa/0537.jpg\nimg/sofa/0538.jpg\nimg/sofa/0539.jpg\nimg/sofa/0540.jpg\nimg/sofa/0541.jpg\nimg/sofa/0542.png\nimg/sofa/0543.jpg\nimg/sofa/0544.jpg\nimg/sofa/0545.jpg\nimg/sofa/0546.jpg\nimg/sofa/0547.jpg\nimg/sofa/0548.jpg\nimg/sofa/0549.jpg\nimg/sofa/0550.png\nimg/sofa/0551.jpeg\nimg/sofa/0552.jpg\nimg/sofa/0553.jpg\nimg/sofa/0554.jpg\nimg/sofa/0555.jpg\nimg/sofa/0556.jpg\nimg/sofa/0557.jpg\nimg/sofa/0558.jpg\nimg/sofa/0559.jpg\nimg/sofa/0560.jpg\nimg/sofa/0561.jpg\nimg/sofa/0562.jpg\nimg/sofa/0563.jpg\nimg/sofa/0564.jpg\nimg/sofa/0565.jpg\nimg/sofa/0566.jpg\nimg/sofa/0567.jpg\nimg/sofa/0568.jpg\nimg/sofa/0569.jpg\nimg/sofa/0570.jpg\nimg/sofa/0571.jpg\nimg/sofa/0572.jpg\nimg/sofa/0573.jpg\nimg/sofa/0574.jpg\nimg/sofa/0575.jpg\nimg/sofa/0576.jpg\nimg/sofa/0577.jpg\nimg/sofa/0578.jpg\nimg/sofa/0579.jpg\nimg/sofa/0580.jpg\nimg/sofa/0581.jpg\nimg/sofa/0582.jpg\nimg/sofa/0583.jpg\nimg/sofa/0584.jpg\nimg/sofa/0585.jpg\nimg/sofa/0586.jpg\nimg/sofa/0587.jpg\nimg/sofa/0588.jpg\nimg/sofa/0589.jpg\nimg/sofa/0590.jpg\nimg/sofa/0591.jpg\nimg/sofa/0592.jpg\nimg/sofa/0593.jpg\nimg/sofa/0594.jpeg\nimg/sofa/0595.jpg\nimg/sofa/0596.jpg\nimg/sofa/0597.jpg\nimg/sofa/0598.jpg\nimg/sofa/0599.jpg\nimg/sofa/0600.jpg\nimg/sofa/0601.jpg\nimg/sofa/0602.jpg\nimg/sofa/0603.jpg\nimg/sofa/0604.jpg\nimg/sofa/0605.jpg\nimg/sofa/0606.jpg\nimg/sofa/0607.jpg\nimg/sofa/0608.jpg\nimg/sofa/0609.jpg\nimg/sofa/0610.jpg\nimg/sofa/0611.jpg\nimg/sofa/0612.jpg\nimg/sofa/0613.jpg\nimg/sofa/0614.jpg\nimg/sofa/0615.jpg\nimg/sofa/0616.jpg\nimg/sofa/0617.jpg\nimg/sofa/0618.jpg\nimg/sofa/0619.jpg\nimg/sofa/0620.jpg\nimg/sofa/0621.jpg\nimg/sofa/0622.jpg\nimg/sofa/0623.png\nimg/sofa/0624.jpg\nimg/sofa/0625.png\nimg/sofa/0626.jpg\nimg/sofa/0627.jpg\nimg/sofa/0628.jpg\nimg/sofa/0629.jpg\nimg/sofa/0630.jpg\nimg/sofa/0631.jpg\nimg/sofa/0632.jpg\nimg/sofa/0633.png\nimg/sofa/0634.jpg\nimg/sofa/0635.jpg\nimg/sofa/0636.jpg\nimg/sofa/0637.jpg\nimg/sofa/0638.jpg\nimg/sofa/0639.jpg\nimg/sofa/0640.jpg\nimg/sofa/0641.jpg\nimg/sofa/0642.jpg\nimg/sofa/0643.jpg\nimg/sofa/0644.jpg\nimg/sofa/0645.jpg\nimg/sofa/0646.jpg\nimg/sofa/0647.jpg\nimg/sofa/0648.jpg\nimg/sofa/0649.jpg\nimg/sofa/0650.png\nimg/sofa/0651.jpg\nimg/sofa/0652.jpg\nimg/sofa/0653.jpg\nimg/sofa/0654.jpg\nimg/sofa/0655.jpg\nimg/sofa/0656.jpg\nimg/sofa/0657.jpg\nimg/sofa/0658.jpg\nimg/sofa/0659.jpg\nimg/sofa/0107.png\nimg/sofa/0681.jpg\nimg/sofa/0682.jpg\nimg/sofa/0683.jpg\nimg/sofa/0684.jpg\nimg/sofa/0685.jpg\nimg/sofa/0686.jpg\nimg/sofa/0687.jpg\nimg/sofa/0688.jpg\nimg/sofa/0689.jpg\nimg/sofa/0690.jpg\nimg/sofa/0691.jpg\nimg/sofa/0692.jpg\nimg/sofa/0693.jpg\nimg/sofa/0694.jpg\nimg/sofa/0695.jpg\nimg/sofa/0696.jpg\nimg/sofa/0697.jpg\nimg/sofa/0698.jpg\nimg/sofa/0699.jpg\nimg/sofa/0700.jpg\nimg/sofa/0701.jpg\nimg/sofa/0702.jpg\nimg/sofa/0703.jpg\nimg/sofa/0704.jpg\nimg/sofa/0705.jpg\nimg/sofa/0706.jpg\nimg/sofa/0707.jpg\nimg/sofa/0708.jpg\nimg/sofa/0709.jpg\nimg/sofa/0710.jpg\nimg/sofa/0711.jpg\nimg/sofa/0712.jpg\nimg/sofa/0713.jpg\nimg/sofa/0714.png\nimg/sofa/0715.jpg\nimg/sofa/0716.jpg\nimg/sofa/0717.jpg\nimg/sofa/0718.jpg\nimg/sofa/0719.jpg\nimg/sofa/0720.jpg\nimg/sofa/0721.jpg\nimg/sofa/0722.jpg\nimg/sofa/0723.jpg\nimg/sofa/0724.jpg\nimg/sofa/0725.jpg\nimg/sofa/0726.jpg\nimg/sofa/0727.jpg\nimg/sofa/0728.jpg\nimg/sofa/0729.jpg\nimg/sofa/0730.jpg\nimg/sofa/0731.jpg\nimg/sofa/0732.jpeg\nimg/sofa/0733.jpg\nimg/sofa/0734.jpg\nimg/sofa/0735.jpg\nimg/sofa/0736.jpg\nimg/sofa/0737.jpg\nimg/sofa/0738.jpg\nimg/sofa/0108.png\nimg/sofa/0120.png\nimg/sofa/0739.jpg\nimg/sofa/0740.jpg\nimg/sofa/0741.jpg\nimg/sofa/0742.jpg\nimg/sofa/0743.jpg\nimg/sofa/0744.jpg\nimg/sofa/0745.jpg\nimg/sofa/0746.jpg\nimg/sofa/0747.jpg\nimg/sofa/0748.jpg\nimg/sofa/0749.jpg\nimg/sofa/0750.jpg\nimg/sofa/0751.jpg\nimg/sofa/0752.jpg\nimg/sofa/0753.jpg\nimg/sofa/0754.jpg\nimg/sofa/0755.jpg\nimg/sofa/0756.jpg\nimg/sofa/0757.jpg\nimg/sofa/0758.jpg\nimg/sofa/0759.jpg\nimg/sofa/0760.jpg\nimg/sofa/0761.jpg\nimg/sofa/0762.jpg\nimg/sofa/0763.jpg\nimg/sofa/0764.jpg\nimg/sofa/0765.jpg\nimg/sofa/0766.jpg\nimg/sofa/0767.jpg\nimg/sofa/0768.jpg\nimg/sofa/0769.jpg\nimg/sofa/0770.jpg\nimg/sofa/0771.jpg\nimg/sofa/0772.jpg\nimg/sofa/0773.jpg\nimg/sofa/0774.jpg\nimg/sofa/0775.jpg\nimg/sofa/0776.jpg\nimg/sofa/0777.jpg\nimg/sofa/0778.jpg\nimg/sofa/0779.jpg\nimg/sofa/0780.png\nimg/sofa/0781.jpg\nimg/sofa/0782.jpg\nimg/sofa/0783.jpg\nimg/sofa/0784.jpg\nimg/sofa/0785.jpg\nimg/sofa/0786.jpg\nimg/sofa/0787.jpg\nimg/sofa/0788.jpg\nimg/sofa/0789.jpg\nimg/sofa/0790.jpg\nimg/sofa/0791.jpg\nimg/sofa/0792.jpg\nimg/sofa/0793.jpg\nimg/sofa/0794.jpg\nimg/sofa/0795.jpg\nimg/sofa/0796.jpg\nimg/sofa/0797.jpg\nimg/sofa/0798.jpg\nimg/sofa/0799.jpg\nimg/sofa/0800.jpg\nimg/sofa/0801.jpg\nimg/sofa/0802.jpg\nimg/sofa/0803.jpg\nimg/sofa/0804.jpg\nimg/sofa/0805.jpg\nimg/sofa/0806.jpg\nimg/sofa/0807.jpg\nimg/sofa/0808.jpg\nimg/sofa/0809.jpg\nimg/sofa/0810.jpg\nimg/sofa/0811.jpg\nimg/sofa/0812.jpg\nimg/sofa/0813.jpg\nimg/sofa/0814.jpg\nimg/sofa/0815.jpg\nimg/sofa/0816.jpg\nimg/sofa/0817.jpg\nimg/sofa/0818.jpg\nimg/sofa/0819.jpg\nimg/sofa/0820.jpg\nimg/sofa/0821.jpg\nimg/sofa/0822.jpg\nimg/sofa/0823.jpg\nimg/sofa/0824.jpg\nimg/sofa/0825.jpg\nimg/sofa/0826.jpg\nimg/sofa/0827.jpg\nimg/sofa/0828.jpg\nimg/sofa/0829.jpg\nimg/sofa/0830.jpg\nimg/sofa/0831.jpg\nimg/sofa/0832.jpg\nimg/sofa/0833.jpg\nimg/sofa/0834.jpg\nimg/sofa/0835.jpg\nimg/sofa/0836.jpg\nimg/sofa/0837.jpg\nimg/sofa/0838.jpg\nimg/sofa/0839.jpg\nimg/sofa/0840.jpg\nimg/sofa/0841.jpg\nimg/sofa/0842.jpg\nimg/sofa/0843.jpg\nimg/sofa/0844.jpg\nimg/sofa/0845.jpg\nimg/sofa/0846.jpg\nimg/sofa/0847.jpg\nimg/sofa/0848.jpg\nimg/sofa/0849.jpg\nimg/sofa/0850.jpg\nimg/sofa/0851.jpg\nimg/sofa/0852.jpg\nimg/sofa/0853.jpg\nimg/sofa/0854.jpg\nimg/sofa/0855.jpg\nimg/sofa/0856.jpg\nimg/sofa/0857.jpg\nimg/sofa/0858.jpg\nimg/sofa/0859.jpg\nimg/sofa/0860.jpg\nimg/sofa/0861.jpg\nimg/sofa/0862.jpg\nimg/sofa/0863.jpg\nimg/sofa/0864.jpg\nimg/sofa/0865.jpg\nimg/sofa/0866.jpg\nimg/sofa/0867.jpg\nimg/sofa/0868.jpg\nimg/sofa/0869.jpg\nimg/sofa/0870.jpg\nimg/sofa/0871.jpg\nimg/sofa/0872.jpg\nimg/sofa/0873.jpg\nimg/sofa/0874.jpg\nimg/sofa/0875.jpg\nimg/sofa/0876.jpg\nimg/sofa/0877.jpg\nimg/sofa/0878.jpg\nimg/sofa/0879.jpg\nimg/sofa/0880.jpg\nimg/sofa/0881.jpg\nimg/sofa/0882.jpg\nimg/sofa/0883.jpg\nimg/sofa/0884.jpg\nimg/sofa/0885.jpg\nimg/sofa/0886.jpg\nimg/sofa/0887.jpg\nimg/sofa/0888.jpg\nimg/sofa/0889.jpg\nimg/sofa/0890.jpg\nimg/sofa/0891.jpg\nimg/sofa/0892.jpg\nimg/sofa/0893.jpg\nimg/sofa/0894.jpeg\nimg/sofa/0895.jpg\nimg/sofa/0896.jpg\nimg/sofa/0897.jpg\nimg/sofa/0898.jpeg\nimg/sofa/0899.jpg\nimg/sofa/0900.jpg\nimg/sofa/0901.jpg\nimg/sofa/0902.jpg\nimg/sofa/0903.jpg\nimg/sofa/0904.jpg\nimg/sofa/0905.jpg\nimg/sofa/0906.jpg\nimg/sofa/0907.jpg\nimg/sofa/0908.jpg\nimg/sofa/0058.png\nimg/sofa/0099.png\nimg/sofa/0100.png\nimg/sofa/0101.png\nimg/sofa/0104.png\nimg/sofa/0111.png\nimg/sofa/0113.png\nimg/sofa/0114.png\nimg/sofa/0909.jpg\nimg/sofa/0910.jpg\nimg/sofa/0911.jpg\nimg/sofa/0912.jpg\nimg/sofa/0913.jpg\nimg/sofa/0914.jpg\nimg/sofa/0915.jpg\nimg/sofa/0916.jpg\nimg/sofa/0917.jpg\nimg/sofa/0918.jpg\nimg/sofa/0919.jpg\nimg/sofa/0920.jpg\nimg/sofa/0921.jpg\nimg/sofa/0922.jpg\nimg/sofa/0923.jpg\nimg/sofa/0924.jpg\nimg/sofa/0925.jpg\nimg/sofa/0926.jpg\nimg/sofa/0927.jpg\nimg/sofa/0928.jpg\nimg/sofa/0929.jpg\nimg/sofa/0930.jpg\nimg/sofa/0931.jpg\nimg/sofa/0932.jpg\nimg/sofa/0933.jpg\nimg/sofa/0934.jpg\nimg/sofa/0935.jpg\nimg/sofa/0936.jpg\nimg/sofa/0937.jpg\nimg/sofa/0938.jpg\nimg/sofa/0939.jpg\nimg/sofa/0940.jpg\nimg/sofa/0941.jpg\nimg/sofa/0942.jpg\nimg/sofa/0943.jpg\nimg/sofa/0944.jpg\nimg/sofa/0945.jpg\nimg/sofa/0946.jpg\nimg/sofa/0947.jpg\nimg/sofa/0948.jpg\nimg/sofa/0949.jpg\nimg/sofa/0950.jpg\nimg/sofa/0951.jpg\nimg/sofa/0952.jpg\nimg/sofa/0953.jpg\nimg/sofa/0954.jpg\nimg/sofa/0955.jpg\nimg/sofa/0956.jpg\nimg/sofa/0957.jpg\nimg/sofa/0958.jpg\nimg/sofa/0959.jpg\nimg/sofa/0960.jpg\nimg/sofa/0961.jpg\nimg/sofa/0962.jpg\nimg/sofa/0963.jpg\nimg/sofa/0964.jpg\nimg/sofa/0965.jpg\nimg/sofa/0966.jpg\nimg/sofa/0967.jpg\nimg/sofa/0968.jpg\nimg/sofa/0969.jpg\nimg/sofa/0970.jpg\nimg/sofa/0971.jpg\nimg/sofa/0972.jpg\nimg/sofa/0973.jpg\nimg/sofa/0974.jpg\nimg/sofa/0975.jpg\nimg/sofa/0976.jpg\nimg/sofa/0977.jpg\nimg/sofa/0978.jpg\nimg/sofa/0979.jpg\nimg/sofa/0980.jpg\nimg/sofa/0981.jpg\nimg/sofa/0982.jpg\nimg/sofa/0983.jpg\nimg/sofa/0984.jpg\nimg/sofa/0985.jpg\nimg/sofa/0986.jpg\nimg/sofa/0987.jpg\nimg/sofa/0988.jpeg\nimg/sofa/0989.jpg\nimg/sofa/0990.jpg\nimg/sofa/0991.jpeg\nimg/sofa/0992.jpg\nimg/sofa/0993.jpg\nimg/sofa/0994.jpg\nimg/sofa/0995.jpg\nimg/sofa/0996.jpg\nimg/sofa/0997.jpg\nimg/sofa/0998.jpg\nimg/sofa/0999.jpg\nimg/sofa/1000.jpg\nimg/sofa/1001.jpg\nimg/sofa/1002.jpg\nimg/sofa/1003.jpg\nimg/sofa/1004.jpg\nimg/sofa/1005.jpg\nimg/sofa/1006.jpg\nimg/sofa/1007.jpg\nimg/sofa/1008.jpg\nimg/sofa/1009.jpg\nimg/sofa/1010.jpg\nimg/sofa/1011.jpg\nimg/sofa/1012.jpg\nimg/sofa/1013.jpg\nimg/sofa/1014.jpg\nimg/sofa/1015.jpg\nimg/sofa/1016.jpg\nimg/sofa/1017.jpg\nimg/sofa/1018.jpg\nimg/sofa/1019.jpg\nimg/sofa/1020.jpg\nimg/sofa/1021.jpg\nimg/sofa/1022.jpg\nimg/sofa/1023.jpg\nimg/sofa/1024.jpg\nimg/sofa/1025.jpg\nimg/sofa/1026.jpg\nimg/sofa/1027.jpg\nimg/sofa/1028.jpg\nimg/sofa/1029.jpg\nimg/sofa/1030.jpg\nimg/sofa/1031.jpg\nimg/sofa/1032.jpg\nimg/sofa/1033.jpg\nimg/sofa/1034.jpg\nimg/sofa/1035.jpg\nimg/sofa/1036.jpg\nimg/sofa/1037.jpg\nimg/sofa/1038.jpg\nimg/sofa/1039.jpg\nimg/sofa/1040.jpg\nimg/sofa/1041.jpg\nimg/sofa/1042.jpg\nimg/sofa/1043.jpg\nimg/sofa/1044.jpg\nimg/sofa/1045.jpg\nimg/sofa/1046.jpg\nimg/sofa/1047.jpg\nimg/sofa/1048.jpg\nimg/sofa/1049.jpg\nimg/sofa/1050.jpg\nimg/sofa/1051.jpg\nimg/sofa/1052.jpg\nimg/sofa/1053.jpg\nimg/sofa/1054.jpg\nimg/sofa/1055.jpg\nimg/sofa/1056.jpg\nimg/sofa/1057.jpg\nimg/sofa/1058.jpg\nimg/sofa/1059.jpg\nimg/sofa/1060.jpg\nimg/sofa/1061.jpg\nimg/sofa/1062.jpg\nimg/sofa/1063.jpg\nimg/sofa/1064.jpg\nimg/sofa/1065.jpg\nimg/sofa/1066.jpg\nimg/sofa/1067.jpg\nimg/sofa/1068.jpg\nimg/sofa/1069.png\nimg/sofa/1070.jpg\nimg/sofa/1071.jpg\nimg/sofa/1072.jpg\nimg/sofa/1073.jpg\nimg/sofa/1074.jpg\nimg/sofa/1075.jpg\nimg/sofa/1076.jpg\nimg/sofa/1077.jpg\nimg/sofa/1078.jpg\nimg/sofa/1079.png\nimg/sofa/1080.jpg\nimg/sofa/1081.jpg\nimg/sofa/1082.jpg\nimg/sofa/1083.jpg\nimg/sofa/1084.jpg\nimg/sofa/1085.jpg\nimg/sofa/1086.jpg\nimg/sofa/1087.jpg\nimg/sofa/1088.jpg\nimg/sofa/1089.jpg\nimg/sofa/1090.jpg\nimg/sofa/1091.jpg\nimg/sofa/1092.jpg\nimg/sofa/1093.jpg\nimg/sofa/1094.jpg\nimg/sofa/1095.jpg\nimg/sofa/1096.jpg\nimg/sofa/1097.jpg\nimg/sofa/1098.jpg\nimg/sofa/1099.jpg\nimg/sofa/1100.jpg\nimg/sofa/1101.jpg\nimg/sofa/1102.jpg\nimg/sofa/1103.jpg\nimg/sofa/1104.jpg\nimg/sofa/1105.png\nimg/sofa/1106.jpeg\nimg/sofa/1107.jpg\nimg/sofa/1108.jpg\nimg/sofa/1109.jpg\nimg/sofa/1110.jpg\nimg/sofa/1111.jpg\nimg/sofa/1112.jpg\nimg/sofa/1113.jpg\nimg/sofa/0084.png\nimg/sofa/1114.jpg\nimg/sofa/1115.jpg\nimg/sofa/1116.jpg\nimg/sofa/1117.jpg\nimg/sofa/1118.jpg\nimg/sofa/1119.jpg\nimg/sofa/1120.jpg\nimg/sofa/1121.jpg\nimg/sofa/1122.jpg\nimg/sofa/1123.jpg\nimg/sofa/1124.jpg\nimg/sofa/1125.jpg\nimg/sofa/1126.jpg\nimg/sofa/1127.jpg\nimg/sofa/1128.jpg\nimg/sofa/1129.jpg\nimg/sofa/1130.jpg\nimg/sofa/1131.jpg\nimg/sofa/1132.jpg\nimg/sofa/1133.jpg\nimg/sofa/1134.jpg\nimg/sofa/1135.png\nimg/sofa/1136.jpg\nimg/sofa/1137.jpg\nimg/sofa/1138.jpg\nimg/sofa/1139.jpg\nimg/sofa/1140.png\nimg/sofa/1141.jpg\nimg/sofa/1142.png\nimg/sofa/1143.jpg\nimg/sofa/1144.jpg\nimg/sofa/1145.jpg\nimg/sofa/1146.jpg\nimg/sofa/1147.jpg\nimg/sofa/1148.jpg\nimg/sofa/0001.png\nimg/sofa/0004.png\nimg/sofa/0007.png\nimg/sofa/0008.png\nimg/sofa/0017.png\nimg/sofa/0022.png\nimg/sofa/0037.png\nimg/sofa/0044.png\nimg/sofa/0052.png\nimg/sofa/0055.png\nimg/sofa/0057.png\nimg/sofa/0059.png\nimg/sofa/0060.png\nimg/sofa/0061.png\nimg/sofa/0062.png\nimg/sofa/0065.png\nimg/sofa/0072.png\nimg/sofa/0078.png\nimg/sofa/0081.png\nimg/sofa/0094.png\nimg/sofa/1149.jpg\nimg/sofa/1150.jpg\nimg/sofa/1151.jpg\nimg/sofa/1152.jpg\nimg/sofa/1153.jpeg\nimg/sofa/1154.jpg\nimg/sofa/1155.jpg\nimg/sofa/1156.jpg\nimg/sofa/1157.jpg\nimg/sofa/1158.jpg\nimg/sofa/1159.jpg\nimg/sofa/1160.jpg\nimg/sofa/1161.jpg\nimg/sofa/1162.jpg\nimg/sofa/1163.jpg\nimg/sofa/1164.jpg\nimg/sofa/1165.jpg\nimg/sofa/1166.jpg\nimg/sofa/1167.jpg\nimg/sofa/1168.jpg\nimg/sofa/1169.jpg\nimg/sofa/1170.jpg\nimg/sofa/1171.jpg\nimg/sofa/1172.jpg\nimg/sofa/1173.jpg\nimg/sofa/1174.jpg\nimg/sofa/1175.jpg\nimg/sofa/1176.jpg\nimg/sofa/1177.jpg\nimg/sofa/1178.jpg\nimg/sofa/1179.jpg\nimg/sofa/1180.jpeg\nimg/sofa/1181.jpg\nimg/sofa/1182.jpg\nimg/sofa/1183.jpg\nimg/sofa/1184.jpg\nimg/sofa/1185.jpg\nimg/sofa/1186.jpg\nimg/sofa/1187.jpg\nimg/sofa/1188.jpeg\nimg/sofa/1189.jpg\nimg/sofa/1190.jpg\nimg/sofa/1191.jpg\nimg/sofa/1192.jpg\nimg/sofa/1193.jpg\nimg/sofa/1194.jpg\nimg/sofa/1195.jpg\nimg/sofa/1196.jpg\nimg/sofa/1197.jpg\nimg/sofa/1198.jpg\nimg/sofa/1199.jpg\nimg/sofa/1200.jpg\nimg/sofa/1201.jpg\nimg/sofa/1202.jpg\nimg/sofa/1203.jpg\nimg/sofa/1204.jpg\nimg/sofa/1205.jpg\nimg/sofa/1206.jpg\nimg/sofa/1207.jpg\nimg/sofa/1208.jpg\nimg/sofa/1209.jpg\nimg/sofa/1210.jpg\nimg/sofa/1211.jpg\nimg/sofa/1212.jpg\nimg/sofa/1213.jpg\nimg/sofa/1214.jpg\nimg/sofa/1215.jpg\nimg/sofa/1216.jpg\nimg/sofa/1217.jpg\nimg/sofa/1218.jpg\nimg/sofa/1219.jpg\nimg/sofa/1220.jpg\nimg/sofa/1221.jpg\nimg/sofa/1222.jpg\nimg/sofa/1223.jpg\nimg/sofa/1224.jpg\nimg/sofa/1225.jpg\nimg/sofa/1226.jpg\nimg/sofa/1227.jpg\nimg/sofa/1228.jpg\nimg/sofa/1229.jpg\nimg/sofa/1230.jpg\nimg/sofa/1231.jpg\nimg/sofa/1232.jpg\nimg/sofa/1233.jpg\nimg/sofa/1234.jpg\nimg/sofa/1235.jpg\nimg/sofa/1236.jpg\nimg/sofa/1237.jpg\nimg/sofa/1238.jpg\nimg/sofa/1239.jpg\nimg/sofa/1240.jpg\nimg/sofa/1241.jpg\nimg/sofa/1242.jpg\nimg/sofa/1243.jpg\nimg/sofa/1244.jpg\nimg/sofa/1245.jpg\nimg/sofa/1246.jpg\nimg/sofa/1247.jpg\nimg/sofa/1248.jpg\nimg/sofa/1249.png\nimg/sofa/1250.jpg\nimg/sofa/1251.jpg\nimg/sofa/1252.jpg\nimg/sofa/1253.jpg\nimg/sofa/1254.jpg\nimg/sofa/1255.jpg\nimg/sofa/1256.jpg\nimg/sofa/1257.jpg\nimg/sofa/1258.jpg\nimg/sofa/1259.jpg\nimg/sofa/1260.jpg\nimg/sofa/1261.jpg\nimg/sofa/1262.jpg\nimg/sofa/1263.jpg\nimg/sofa/1264.jpg\nimg/sofa/1265.jpg\nimg/sofa/1266.jpg\nimg/sofa/1267.jpg\nimg/sofa/1268.jpg\nimg/sofa/1269.jpg\nimg/sofa/1270.jpg\nimg/sofa/1271.jpg\nimg/sofa/1272.jpg\nimg/sofa/1273.jpg\nimg/sofa/1274.jpg\nimg/sofa/1275.jpg\nimg/sofa/1276.jpg\nimg/sofa/1277.jpg\nimg/sofa/1278.jpg\nimg/sofa/1279.jpg\nimg/sofa/1280.jpg\nimg/sofa/1281.jpg\nimg/sofa/1282.jpg\nimg/sofa/1283.jpg\nimg/sofa/1284.jpg\nimg/sofa/1285.jpg\nimg/sofa/1286.jpg\nimg/sofa/1287.jpg\nimg/sofa/1288.jpg\nimg/sofa/1289.jpg\nimg/sofa/1290.jpg\nimg/sofa/1291.jpg\nimg/sofa/1292.jpg\nimg/sofa/1293.jpg\nimg/sofa/1294.jpg\nimg/sofa/1295.jpg\nimg/sofa/1296.jpg\nimg/sofa/1297.jpg\nimg/sofa/1298.jpg\nimg/sofa/1299.jpg\nimg/sofa/1300.jpg\nimg/sofa/1301.jpg\nimg/sofa/1302.jpg\nimg/sofa/1303.jpg\nimg/sofa/1304.jpg\nimg/sofa/1305.jpg\nimg/sofa/1306.jpg\nimg/sofa/1307.jpg\nimg/sofa/1308.jpg\nimg/sofa/1309.jpg\nimg/sofa/1310.jpg\nimg/sofa/1311.jpg\nimg/sofa/1312.jpg\nimg/sofa/1313.jpg\nimg/sofa/1314.jpg\nimg/sofa/1315.jpg\nimg/sofa/1316.jpg\nimg/sofa/1317.jpg\nimg/sofa/1318.jpg\nimg/sofa/1319.jpg\nimg/sofa/1320.jpg\nimg/sofa/1321.jpg\nimg/sofa/1322.jpg\nimg/sofa/1323.jpg\nimg/sofa/1324.jpg\nimg/sofa/1325.jpg\nimg/sofa/1326.jpg\nimg/sofa/1327.jpg\nimg/sofa/1328.jpg\nimg/sofa/1329.jpg\nimg/sofa/1330.jpg\nimg/sofa/1331.jpg\nimg/sofa/1332.jpg\nimg/sofa/1333.jpg\nimg/sofa/1334.jpg\nimg/sofa/1335.jpg\nimg/sofa/1336.jpg\nimg/sofa/1337.jpg\nimg/sofa/1338.jpg\nimg/sofa/1339.jpg\nimg/sofa/1340.jpg\nimg/sofa/1341.jpg\nimg/sofa/1342.jpg\nimg/sofa/1343.jpg\nimg/sofa/1344.jpg\nimg/sofa/1345.jpg\nimg/sofa/1346.jpg\nimg/sofa/1347.jpg\nimg/sofa/1348.jpg\nimg/sofa/1349.jpg\nimg/sofa/1350.jpg\nimg/sofa/1351.jpg\nimg/sofa/1352.jpg\nimg/sofa/1353.jpg\nimg/sofa/1354.jpg\nimg/sofa/1355.jpg\nimg/sofa/1356.jpg\nimg/sofa/1357.jpg\nimg/sofa/1358.jpg\nimg/sofa/1359.jpg\nimg/sofa/1360.jpg\nimg/sofa/1361.jpg\nimg/sofa/1362.jpg\nimg/sofa/1363.jpg\nimg/sofa/1364.jpg\nimg/sofa/1365.png\nimg/sofa/1366.jpg\nimg/sofa/1367.jpg\nimg/sofa/1368.jpg\nimg/sofa/1369.jpg\nimg/sofa/1370.jpg\nimg/sofa/1371.jpg\nimg/sofa/1372.jpg\nimg/sofa/1373.jpg\nimg/sofa/1374.jpg\nimg/sofa/1375.jpg\nimg/sofa/1376.jpg\nimg/sofa/1377.jpg\nimg/sofa/0012.png\nimg/sofa/0013.png\nimg/sofa/0026.png\nimg/sofa/0027.png\nimg/sofa/0054.png\nimg/sofa/0118.png\nimg/sofa/1448.jpg\nimg/sofa/1449.jpg\nimg/sofa/1450.jpg\nimg/sofa/1451.jpg\nimg/sofa/1452.jpg\nimg/sofa/1453.jpg\nimg/sofa/1454.jpg\nimg/sofa/1455.jpg\nimg/sofa/1456.jpg\nimg/sofa/1457.jpg\nimg/sofa/1458.jpg\nimg/sofa/1459.jpg\nimg/sofa/1460.jpg\nimg/sofa/1461.jpg\nimg/sofa/1462.jpg\nimg/sofa/1463.jpg\nimg/sofa/1464.jpg\nimg/sofa/1465.jpg\nimg/sofa/1466.jpg\nimg/sofa/1467.jpg\nimg/sofa/1468.jpg\nimg/sofa/1469.jpg\nimg/sofa/1470.jpg\nimg/sofa/1471.jpg\nimg/sofa/1472.jpg\nimg/sofa/1473.jpg\nimg/sofa/1474.jpg\nimg/sofa/1475.jpg\nimg/sofa/1476.jpg\nimg/sofa/1477.jpg\nimg/sofa/1478.jpg\nimg/sofa/1479.jpg\nimg/sofa/1480.jpg\nimg/sofa/1481.jpg\nimg/sofa/1482.jpg\nimg/sofa/1483.jpg\nimg/sofa/1484.jpg\nimg/sofa/1485.jpg\nimg/sofa/1486.jpg\nimg/sofa/1487.jpg\nimg/sofa/1488.jpg\nimg/sofa/1489.jpg\nimg/sofa/1490.jpg\nimg/sofa/1491.jpg\nimg/sofa/1492.jpg\nimg/sofa/1493.jpg\nimg/sofa/1494.jpg\nimg/sofa/1495.jpg\nimg/sofa/1496.jpg\nimg/sofa/1497.jpg\nimg/sofa/1498.jpg\nimg/sofa/1499.jpg\nimg/sofa/1500.jpg\nimg/sofa/1501.jpg\nimg/sofa/1502.jpg\nimg/sofa/1503.jpg\nimg/sofa/1504.jpg\nimg/sofa/1505.jpg\nimg/sofa/1506.jpg\nimg/sofa/1507.jpg\nimg/sofa/1508.jpg\nimg/sofa/1509.jpg\nimg/sofa/1510.jpg\nimg/sofa/1511.jpg\nimg/sofa/1512.jpg\nimg/sofa/1513.jpg\nimg/sofa/1514.jpg\nimg/sofa/1515.jpg\nimg/sofa/1516.jpg\nimg/sofa/1517.jpg\nimg/sofa/1518.jpg\nimg/sofa/1519.jpg\nimg/sofa/1520.png\nimg/sofa/1521.jpg\nimg/sofa/1522.jpg\nimg/sofa/1523.jpg\nimg/sofa/1524.jpg\nimg/sofa/1525.jpg\nimg/sofa/1526.jpg\nimg/sofa/1527.jpg\nimg/sofa/1528.jpg\nimg/sofa/1529.jpg\nimg/sofa/1530.jpg\nimg/sofa/1531.jpg\nimg/sofa/1532.jpg\nimg/sofa/1533.jpg\nimg/sofa/1534.jpg\nimg/sofa/1535.jpg\nimg/sofa/1536.jpg\nimg/sofa/1537.jpg\nimg/sofa/1538.jpg\nimg/sofa/1539.jpg\nimg/sofa/1540.jpg\nimg/sofa/1541.jpg\nimg/sofa/1542.jpg\nimg/sofa/1543.jpg\nimg/sofa/1544.jpeg\nimg/sofa/1545.jpg\nimg/sofa/1546.jpg\nimg/sofa/1547.jpg\nimg/sofa/1548.jpg\nimg/sofa/1549.jpg\nimg/sofa/1550.jpg\nimg/sofa/1551.jpg\nimg/sofa/1552.jpg\nimg/sofa/1553.jpg\nimg/sofa/1554.jpg\nimg/sofa/1555.jpg\nimg/sofa/1556.png\nimg/sofa/1557.jpg\nimg/sofa/1558.jpg\nimg/sofa/1559.jpg\nimg/sofa/1560.jpg\nimg/sofa/1561.jpg\nimg/sofa/1562.jpg\nimg/sofa/1563.jpg\nimg/sofa/1564.jpg\nimg/sofa/1565.jpg\nimg/sofa/1566.jpg\nimg/sofa/1567.jpg\nimg/sofa/1568.jpg\nimg/sofa/1569.jpg\nimg/sofa/1570.jpg\nimg/sofa/1571.jpg\nimg/sofa/1572.jpg\nimg/sofa/1573.jpg\nimg/sofa/1574.jpg\nimg/sofa/1575.jpg\nimg/sofa/1576.jpg\nimg/sofa/1577.jpg\nimg/sofa/1578.jpg\nimg/sofa/1579.jpg\nimg/sofa/1580.jpg\nimg/sofa/1581.jpg\nimg/sofa/1582.jpg\nimg/sofa/1583.jpg\nimg/sofa/1584.jpg\nimg/sofa/1585.jpg\nimg/sofa/1586.jpeg\nimg/sofa/1587.jpg\nimg/sofa/1588.jpg\nimg/sofa/1589.jpg\nimg/sofa/1590.jpg\nimg/sofa/1591.jpg\nimg/sofa/1592.jpeg\nimg/sofa/1593.jpeg\nimg/sofa/1594.jpg\nimg/sofa/1595.jpg\nimg/sofa/1596.jpg\nimg/sofa/1597.jpg\nimg/sofa/1598.jpeg\nimg/sofa/1599.jpg\nimg/sofa/1600.jpg\nimg/sofa/1601.jpg\nimg/sofa/1602.jpg\nimg/sofa/1603.jpg\nimg/sofa/1604.jpg\nimg/sofa/1605.jpg\nimg/sofa/1606.jpg\nimg/sofa/1607.jpg\nimg/sofa/1608.jpg\nimg/sofa/1609.jpg\nimg/sofa/1610.jpg\nimg/sofa/1611.jpg\nimg/sofa/1612.jpg\nimg/sofa/1613.jpg\nimg/sofa/1614.jpg\nimg/sofa/1615.jpg\nimg/sofa/1616.jpg\nimg/sofa/1617.jpg\nimg/sofa/1618.jpg\nimg/sofa/1619.jpg\nimg/sofa/1620.jpg\nimg/sofa/1621.jpg\nimg/sofa/1622.jpg\nimg/sofa/1623.jpg\nimg/sofa/1624.jpg\nimg/sofa/1625.jpg\nimg/sofa/1626.jpg\nimg/sofa/1627.jpg\nimg/sofa/1628.jpg\nimg/sofa/1629.jpg\nimg/sofa/1630.jpg\nimg/sofa/1631.jpg\nimg/sofa/1632.jpg\nimg/sofa/1633.jpg\nimg/sofa/1634.jpg\nimg/sofa/1635.jpg\nimg/sofa/1636.jpg\nimg/sofa/1637.jpg\nimg/sofa/1638.jpg\nimg/sofa/1639.jpg\nimg/sofa/1640.jpg\nimg/sofa/1641.jpg\nimg/sofa/1642.jpg\nimg/sofa/1643.jpg\nimg/sofa/1644.jpg\nimg/sofa/1645.jpg\nimg/sofa/1646.jpg\nimg/sofa/1647.jpg\nimg/sofa/1648.jpg\nimg/sofa/1649.jpg\nimg/sofa/1650.jpg\nimg/sofa/1651.jpg\nimg/sofa/1652.jpg\nimg/sofa/1653.jpg\nimg/sofa/1654.jpg\nimg/sofa/1655.jpg\nimg/sofa/1656.jpg\nimg/sofa/1657.jpg\nimg/sofa/1658.jpg\nimg/sofa/1659.jpg\nimg/sofa/1660.jpg\nimg/sofa/1661.jpg\nimg/sofa/1662.jpg\nimg/sofa/1663.jpg\nimg/sofa/1664.jpg\nimg/sofa/1665.jpg\nimg/sofa/1666.jpg\nimg/sofa/1667.jpg\nimg/sofa/1668.jpg\nimg/sofa/1669.jpg\nimg/sofa/1670.jpg\nimg/sofa/1671.jpg\nimg/sofa/1672.jpg\nimg/sofa/1673.jpg\nimg/sofa/1674.jpg\nimg/sofa/1675.jpg\nimg/sofa/1676.jpg\nimg/sofa/1677.jpg\nimg/sofa/1678.jpg\nimg/sofa/1679.jpg\nimg/sofa/1680.jpg\nimg/sofa/1681.jpg\nimg/sofa/1682.jpg\nimg/sofa/1683.jpg\nimg/sofa/1684.jpg\nimg/sofa/1685.jpg\nimg/sofa/1686.jpg\nimg/sofa/1687.jpg\nimg/sofa/1688.jpg\nimg/sofa/1689.jpg\nimg/sofa/1690.jpg\nimg/sofa/1691.jpg\nimg/sofa/1692.jpg\nimg/sofa/1693.jpg\nimg/sofa/1694.jpg\nimg/sofa/1695.jpg\nimg/sofa/1696.jpg\nimg/sofa/1697.jpg\nimg/sofa/1698.jpg\nimg/sofa/1699.jpg\nimg/sofa/1700.jpg\nimg/sofa/1701.jpg\nimg/sofa/1702.jpg\nimg/sofa/1703.jpg\nimg/sofa/1704.jpg\nimg/sofa/1705.jpg\nimg/sofa/1706.jpg\nimg/sofa/1707.jpg\nimg/sofa/1708.jpg\nimg/sofa/1709.png\nimg/sofa/1710.jpg\nimg/sofa/1711.jpg\nimg/sofa/1712.jpg\nimg/sofa/1713.jpg\nimg/sofa/1714.jpg\nimg/sofa/1715.jpg\nimg/sofa/1716.jpg\nimg/sofa/1717.jpg\nimg/sofa/1718.jpg\nimg/sofa/1719.jpg\nimg/sofa/1720.jpg\nimg/sofa/1721.png\nimg/sofa/1722.jpg\nimg/sofa/1723.jpg\nimg/sofa/1724.jpg\nimg/sofa/1725.jpg\nimg/sofa/1726.jpg\nimg/sofa/1727.jpg\nimg/sofa/1728.jpg\nimg/sofa/1729.jpg\nimg/sofa/1730.jpg\nimg/sofa/1731.jpg\nimg/sofa/1732.jpg\nimg/sofa/1733.jpg\nimg/sofa/1734.jpg\nimg/sofa/1735.jpg\nimg/sofa/1736.jpg\nimg/sofa/1737.jpg\nimg/sofa/1738.png\nimg/sofa/1739.jpg\nimg/sofa/1740.jpg\nimg/sofa/1741.jpg\nimg/sofa/1742.jpg\nimg/sofa/1743.jpg\nimg/sofa/1744.jpg\nimg/sofa/1745.jpg\nimg/sofa/1746.jpg\nimg/sofa/1747.jpg\nimg/sofa/1748.jpg\nimg/sofa/1749.jpg\nimg/sofa/1750.jpg\nimg/sofa/1751.jpg\nimg/sofa/1752.jpg\nimg/sofa/1753.jpg\nimg/sofa/1754.jpg\nimg/sofa/1755.jpg\nimg/sofa/1756.jpg\nimg/sofa/1757.jpg\nimg/sofa/1758.jpg\nimg/sofa/1759.jpg\nimg/sofa/1760.jpg\nimg/sofa/1761.jpg\nimg/sofa/1762.jpg\nimg/sofa/1763.jpg\nimg/sofa/1764.jpg\nimg/sofa/1765.jpg\nimg/sofa/1766.jpg\nimg/sofa/1767.jpg\nimg/sofa/1768.jpg\nimg/sofa/1769.png\nimg/sofa/1770.jpg\nimg/sofa/1771.jpg\nimg/sofa/1772.jpg\nimg/sofa/1773.jpg\nimg/sofa/1774.jpg\nimg/sofa/1775.jpg\nimg/sofa/1776.jpg\nimg/sofa/1777.jpg\nimg/sofa/1778.jpg\nimg/sofa/1779.jpg\nimg/sofa/1780.jpg\nimg/sofa/1781.jpg\nimg/sofa/1782.jpg\nimg/sofa/1783.jpg\nimg/sofa/1784.jpg\nimg/sofa/1785.jpg\nimg/sofa/1786.jpg\nimg/sofa/1787.jpg\nimg/sofa/1788.jpg\nimg/sofa/1789.jpg\nimg/sofa/1790.jpg\nimg/sofa/1791.jpg\nimg/sofa/1792.jpg\nimg/sofa/1793.jpg\nimg/sofa/1794.jpg\nimg/sofa/1795.png\nimg/sofa/1796.jpg\nimg/sofa/1797.jpg\nimg/sofa/1798.jpg\nimg/sofa/1799.jpg\nimg/sofa/1800.jpg\nimg/sofa/1801.jpg\nimg/sofa/1802.jpg\nimg/sofa/1803.jpg\nimg/sofa/1804.jpg\nimg/sofa/1805.jpg\nimg/sofa/1806.jpg\nimg/sofa/1807.jpg\nimg/sofa/1808.jpg\nimg/sofa/1809.jpg\nimg/sofa/1810.jpg\nimg/sofa/1811.jpg\nimg/sofa/1812.jpg\nimg/sofa/1813.jpg\nimg/sofa/1814.jpg\nimg/sofa/1938.jpg\nimg/sofa/1939.jpg\nimg/sofa/1940.jpg\nimg/sofa/1941.jpg\nimg/sofa/1942.jpg\nimg/sofa/1943.jpg\nimg/sofa/1944.jpg\nimg/sofa/1945.jpg\nimg/sofa/1946.jpg\nimg/sofa/1947.jpg\nimg/table/0087.jpg\nimg/table/0088.jpg\nimg/table/0089.jpg\nimg/table/0090.jpg\nimg/table/0091.png\nimg/table/0092.jpg\nimg/table/0093.jpg\nimg/table/0094.jpg\nimg/table/0095.jpg\nimg/table/0096.jpg\nimg/table/0097.jpg\nimg/table/0098.jpg\nimg/table/0099.jpg\nimg/table/0100.jpg\nimg/table/0101.jpg\nimg/table/0102.jpg\nimg/table/0103.jpg\nimg/table/0107.jpg\nimg/table/0108.jpg\nimg/table/0109.jpg\nimg/table/0110.jpg\nimg/table/0111.jpg\nimg/table/0112.jpg\nimg/table/0113.jpg\nimg/table/0114.jpg\nimg/table/0115.jpg\nimg/table/0116.jpg\nimg/table/0117.jpg\nimg/table/0118.jpg\nimg/table/0120.jpg\nimg/table/0121.jpg\nimg/table/0122.jpg\nimg/table/0123.jpg\nimg/table/0124.jpg\nimg/table/0125.jpg\nimg/table/0126.jpg\nimg/table/0127.jpg\nimg/table/0128.jpg\nimg/table/0129.jpg\nimg/table/0130.jpg\nimg/table/0131.jpg\nimg/table/0132.jpeg\nimg/table/0133.jpg\nimg/table/0134.jpg\nimg/table/0135.jpg\nimg/table/0136.jpg\nimg/table/0137.jpg\nimg/table/0138.jpg\nimg/table/0139.jpg\nimg/table/0140.jpg\nimg/table/0141.jpg\nimg/table/0142.jpg\nimg/table/0143.jpg\nimg/table/0144.jpg\nimg/table/0145.jpg\nimg/table/0146.jpg\nimg/table/0147.jpg\nimg/table/0148.jpg\nimg/table/0149.jpg\nimg/table/0150.jpg\nimg/table/0151.jpg\nimg/table/0152.jpg\nimg/table/0153.jpg\nimg/table/0154.jpg\nimg/table/0155.jpg\nimg/table/0156.jpg\nimg/table/0157.jpg\nimg/table/0158.jpg\nimg/table/0159.jpg\nimg/table/0160.jpg\nimg/table/0161.jpg\nimg/table/0162.jpg\nimg/table/0163.jpg\nimg/table/0164.jpg\nimg/table/0165.jpg\nimg/table/0166.jpg\nimg/table/0167.jpg\nimg/table/0168.jpg\nimg/table/0169.jpg\nimg/table/0170.jpg\nimg/table/0171.jpg\nimg/table/0172.jpg\nimg/table/0173.jpg\nimg/table/0174.jpg\nimg/table/0175.jpg\nimg/table/0176.jpg\nimg/table/0177.jpg\nimg/table/0178.jpg\nimg/table/0179.png\nimg/table/0180.jpg\nimg/table/0181.jpg\nimg/table/0182.jpg\nimg/table/0183.jpg\nimg/table/0184.jpg\nimg/table/0185.jpg\nimg/table/0186.jpg\nimg/table/0187.jpg\nimg/table/0188.jpg\nimg/table/0189.jpg\nimg/table/0190.jpg\nimg/table/0191.jpg\nimg/table/0192.jpg\nimg/table/0193.jpg\nimg/table/0194.jpg\nimg/table/0195.jpg\nimg/table/0196.jpg\nimg/table/0197.jpg\nimg/table/0198.jpg\nimg/table/0199.jpg\nimg/table/0200.jpg\nimg/table/0201.jpg\nimg/table/0202.jpg\nimg/table/0203.jpg\nimg/table/0204.jpg\nimg/table/0205.jpg\nimg/table/0206.jpg\nimg/table/0207.jpg\nimg/table/0208.jpg\nimg/table/0209.jpg\nimg/table/0210.jpg\nimg/table/0211.jpg\nimg/table/0212.jpg\nimg/table/0213.jpg\nimg/table/0214.jpg\nimg/table/0215.jpg\nimg/table/0216.jpg\nimg/table/0217.jpg\nimg/table/0218.jpg\nimg/table/0219.jpg\nimg/table/0220.jpg\nimg/table/0221.jpg\nimg/table/0222.jpg\nimg/table/0223.jpg\nimg/table/0224.jpg\nimg/table/0225.jpg\nimg/table/0226.jpg\nimg/table/0227.jpg\nimg/table/0228.jpg\nimg/table/0229.jpg\nimg/table/0230.jpg\nimg/table/0231.jpg\nimg/table/0232.jpg\nimg/table/0233.jpg\nimg/table/0234.jpg\nimg/table/0235.jpg\nimg/table/0236.jpg\nimg/table/0237.jpg\nimg/table/0238.jpg\nimg/table/0239.jpg\nimg/table/0240.jpg\nimg/table/0241.jpg\nimg/table/0242.jpg\nimg/table/0243.jpg\nimg/table/0244.jpg\nimg/table/0245.jpg\nimg/table/0246.jpg\nimg/table/0247.jpg\nimg/table/0248.jpg\nimg/table/0249.jpg\nimg/table/0250.jpg\nimg/table/0251.jpg\nimg/table/0252.jpg\nimg/table/0253.jpg\nimg/table/0254.jpg\nimg/table/0255.jpg\nimg/table/0256.jpg\nimg/table/0257.jpg\nimg/table/0258.jpg\nimg/table/0259.jpg\nimg/table/0260.jpg\nimg/table/0261.jpg\nimg/table/0262.jpg\nimg/table/0263.jpg\nimg/table/0264.jpg\nimg/table/0265.jpg\nimg/table/0266.jpg\nimg/table/0267.jpg\nimg/table/0268.jpg\nimg/table/0269.jpg\nimg/table/0270.jpg\nimg/table/0271.jpg\nimg/table/0272.jpg\nimg/table/0273.jpg\nimg/table/0274.jpg\nimg/table/0275.jpg\nimg/table/0276.jpg\nimg/table/0277.jpg\nimg/table/0278.jpg\nimg/table/0279.jpg\nimg/table/0280.jpg\nimg/table/0281.jpg\nimg/table/0282.jpg\nimg/table/0283.jpg\nimg/table/0284.jpg\nimg/table/0285.jpg\nimg/table/0286.jpg\nimg/table/0287.jpg\nimg/table/0288.jpg\nimg/table/0289.jpg\nimg/table/0290.jpg\nimg/table/0291.jpg\nimg/table/0292.jpg\nimg/table/0293.jpg\nimg/table/0294.jpg\nimg/table/0295.jpg\nimg/table/0296.jpg\nimg/table/0297.jpg\nimg/table/0298.jpg\nimg/table/0299.jpg\nimg/table/0300.jpg\nimg/table/0301.jpg\nimg/table/0302.jpg\nimg/table/0303.jpg\nimg/table/0304.jpg\nimg/table/0305.jpg\nimg/table/0306.jpg\nimg/table/0307.jpg\nimg/table/0308.jpg\nimg/table/0309.jpg\nimg/table/0310.jpg\nimg/table/0311.jpg\nimg/table/0312.jpg\nimg/table/0313.jpg\nimg/table/0314.jpg\nimg/table/0315.jpg\nimg/table/0316.jpg\nimg/table/0317.jpg\nimg/table/0318.jpg\nimg/table/0319.jpg\nimg/table/0320.jpg\nimg/table/0321.jpg\nimg/table/0322.jpg\nimg/table/0323.jpg\nimg/table/0324.jpg\nimg/table/0325.jpg\nimg/table/0326.jpg\nimg/table/0327.jpg\nimg/table/0328.jpg\nimg/table/0329.jpg\nimg/table/0330.jpg\nimg/table/0331.jpg\nimg/table/0332.jpg\nimg/table/0333.jpg\nimg/table/0334.jpg\nimg/table/0335.jpg\nimg/table/0336.jpg\nimg/table/0337.jpg\nimg/table/0338.jpg\nimg/table/0339.jpg\nimg/table/0340.jpg\nimg/table/0341.jpg\nimg/table/0342.jpg\nimg/table/0343.jpg\nimg/table/0344.jpg\nimg/table/0345.jpg\nimg/table/0346.jpg\nimg/table/0347.jpg\nimg/table/0348.jpg\nimg/table/0349.jpg\nimg/table/0350.jpg\nimg/table/0351.jpg\nimg/table/0352.jpg\nimg/table/0353.jpg\nimg/table/0354.jpg\nimg/table/0355.jpg\nimg/table/0356.jpg\nimg/table/0357.jpg\nimg/table/0358.jpg\nimg/table/0359.jpg\nimg/table/0360.jpg\nimg/table/0361.jpg\nimg/table/0362.jpg\nimg/table/0363.jpg\nimg/table/0364.png\nimg/table/0365.jpg\nimg/table/0366.jpg\nimg/table/0367.jpg\nimg/table/0368.jpg\nimg/table/0369.jpg\nimg/table/0370.jpg\nimg/table/0371.jpg\nimg/table/0372.png\nimg/table/0373.jpg\nimg/table/0374.jpg\nimg/table/0375.jpg\nimg/table/0376.jpg\nimg/table/0377.jpg\nimg/table/0378.jpg\nimg/table/0379.jpg\nimg/table/0380.jpg\nimg/table/0381.jpg\nimg/table/0382.jpg\nimg/table/0383.jpg\nimg/table/0384.jpg\nimg/table/0385.jpg\nimg/table/0386.jpg\nimg/table/0387.jpg\nimg/table/0388.jpg\nimg/table/0389.jpg\nimg/table/0390.jpg\nimg/table/0391.jpg\nimg/table/0392.jpg\nimg/table/0393.jpeg\nimg/table/0394.jpg\nimg/table/0395.jpg\nimg/table/0396.jpg\nimg/table/0397.jpg\nimg/table/0398.jpg\nimg/table/0399.png\nimg/table/0400.jpg\nimg/table/0401.jpg\nimg/table/0402.jpg\nimg/table/0403.jpg\nimg/table/0404.jpg\nimg/table/0405.jpg\nimg/table/0406.jpg\nimg/table/0407.jpg\nimg/table/0408.jpeg\nimg/table/0409.jpg\nimg/table/0410.jpg\nimg/table/0411.jpg\nimg/table/0412.jpg\nimg/table/0413.jpg\nimg/table/0414.jpg\nimg/table/0415.jpg\nimg/table/0416.jpg\nimg/table/0417.png\nimg/table/0418.jpg\nimg/table/0419.jpg\nimg/table/0420.jpg\nimg/table/0421.jpg\nimg/table/0422.jpg\nimg/table/0423.jpg\nimg/table/0424.jpg\nimg/table/0425.jpg\nimg/table/0426.jpg\nimg/table/0427.png\nimg/table/0428.jpg\nimg/table/0429.jpg\nimg/table/0430.jpg\nimg/table/0431.jpg\nimg/table/0432.jpeg\nimg/table/0433.jpg\nimg/table/0434.jpg\nimg/table/0435.jpg\nimg/table/0436.jpg\nimg/table/0437.jpg\nimg/table/0438.jpg\nimg/table/0439.jpg\nimg/table/0440.jpg\nimg/table/0441.jpg\nimg/table/0442.jpg\nimg/table/0443.jpg\nimg/table/0444.jpg\nimg/table/0445.jpg\nimg/table/0446.jpg\nimg/table/0447.jpeg\nimg/table/0448.jpg\nimg/table/0449.jpg\nimg/table/0450.jpg\nimg/table/0451.jpg\nimg/table/0452.jpg\nimg/table/0453.jpg\nimg/table/0454.jpg\nimg/table/0455.jpg\nimg/table/0456.jpg\nimg/table/0457.jpg\nimg/table/0458.jpeg\nimg/table/0459.jpg\nimg/table/0460.jpeg\nimg/table/0461.jpg\nimg/table/0462.jpeg\nimg/table/0463.jpg\nimg/table/0464.jpg\nimg/table/0465.jpg\nimg/table/0466.jpg\nimg/table/0467.jpg\nimg/table/0468.jpg\nimg/table/0469.jpg\nimg/table/0470.jpg\nimg/table/0471.jpg\nimg/table/0472.jpg\nimg/table/0473.jpg\nimg/table/0474.jpg\nimg/table/0475.jpg\nimg/table/0476.jpg\nimg/table/0477.jpg\nimg/table/0478.jpg\nimg/table/0479.jpg\nimg/table/0480.jpg\nimg/table/0481.jpg\nimg/table/0482.jpg\nimg/table/0483.jpg\nimg/table/0484.jpg\nimg/table/0485.jpg\nimg/table/0486.jpg\nimg/table/0487.jpg\nimg/table/0488.jpg\nimg/table/0489.png\nimg/table/0490.png\nimg/table/0491.jpg\nimg/table/0492.jpg\nimg/table/0493.jpg\nimg/table/0494.jpg\nimg/table/0495.jpg\nimg/table/0496.jpg\nimg/table/0497.jpg\nimg/table/0498.jpg\nimg/table/0499.jpg\nimg/table/0500.jpg\nimg/table/0501.jpg\nimg/table/0502.jpg\nimg/table/0503.jpg\nimg/table/0504.jpg\nimg/table/0505.jpg\nimg/table/0506.jpg\nimg/table/0507.jpg\nimg/table/0508.jpg\nimg/table/0509.jpg\nimg/table/0510.jpg\nimg/table/0511.jpg\nimg/table/0512.jpg\nimg/table/0513.png\nimg/table/0514.jpg\nimg/table/0515.jpg\nimg/table/0516.jpg\nimg/table/0517.jpg\nimg/table/0518.jpg\nimg/table/0519.jpg\nimg/table/0520.jpg\nimg/table/0521.jpg\nimg/table/0522.jpg\nimg/table/0523.jpg\nimg/table/0524.jpg\nimg/table/0525.jpg\nimg/table/0526.png\nimg/table/0527.jpg\nimg/table/0528.jpg\nimg/table/0529.jpg\nimg/table/0530.jpg\nimg/table/0531.jpg\nimg/table/0532.jpg\nimg/table/0533.jpg\nimg/table/0534.png\nimg/table/0535.jpg\nimg/table/0536.jpg\nimg/table/0537.jpg\nimg/table/0538.jpg\nimg/table/0539.jpg\nimg/table/0596.jpg\nimg/table/0597.jpg\nimg/table/0598.jpg\nimg/table/0599.jpg\nimg/table/0600.jpg\nimg/table/0601.jpg\nimg/table/0602.jpg\nimg/table/0603.jpg\nimg/table/0604.jpg\nimg/table/0605.jpg\nimg/table/0606.jpg\nimg/table/0607.jpg\nimg/table/0608.jpg\nimg/table/0609.jpg\nimg/table/0610.jpg\nimg/table/0611.jpg\nimg/table/0612.jpg\nimg/table/0613.jpg\nimg/table/0614.jpg\nimg/table/0615.jpg\nimg/table/0616.jpg\nimg/table/0617.jpg\nimg/table/0618.jpg\nimg/table/0619.jpg\nimg/table/0620.jpg\nimg/table/0621.jpg\nimg/table/0622.jpg\nimg/table/0623.jpg\nimg/table/0624.jpg\nimg/table/0625.jpg\nimg/table/0626.jpg\nimg/table/0627.jpg\nimg/table/0628.jpg\nimg/table/0629.jpg\nimg/table/0630.jpeg\nimg/table/0631.jpg\nimg/table/0632.jpg\nimg/table/0633.jpg\nimg/table/0634.jpg\nimg/table/0635.jpg\nimg/table/0636.jpg\nimg/table/0637.jpg\nimg/table/0638.jpg\nimg/table/0639.jpg\nimg/table/0640.jpg\nimg/table/0641.jpg\nimg/table/0642.jpg\nimg/table/0643.jpg\nimg/table/0644.jpg\nimg/table/0645.jpg\nimg/table/0646.jpg\nimg/table/0647.jpg\nimg/table/0648.jpg\nimg/table/0649.jpg\nimg/table/0650.jpg\nimg/table/0651.jpg\nimg/table/0652.jpg\nimg/table/0653.jpg\nimg/table/0654.jpg\nimg/table/0655.jpg\nimg/table/0656.jpg\nimg/table/0657.jpg\nimg/table/0658.jpg\nimg/table/0659.jpg\nimg/table/0660.jpg\nimg/table/0661.jpg\nimg/table/0662.jpg\nimg/table/0663.jpg\nimg/table/0664.jpg\nimg/table/0665.jpg\nimg/table/0666.jpg\nimg/table/0667.jpg\nimg/table/0668.jpg\nimg/table/0669.jpg\nimg/table/0670.jpg\nimg/table/0671.jpg\nimg/table/0672.jpg\nimg/table/0673.jpg\nimg/table/0674.jpg\nimg/table/0675.jpg\nimg/table/0676.jpg\nimg/table/0677.jpg\nimg/table/0678.jpg\nimg/table/0679.jpg\nimg/table/0680.jpg\nimg/table/0681.jpg\nimg/table/0682.jpg\nimg/table/0683.jpg\nimg/table/0684.jpeg\nimg/table/0685.jpeg\nimg/table/0686.jpg\nimg/table/0687.jpg\nimg/table/0738.jpg\nimg/table/0739.jpg\nimg/table/0740.jpg\nimg/table/0741.jpg\nimg/table/0742.jpg\nimg/table/0743.jpg\nimg/table/0744.jpg\nimg/table/0745.jpg\nimg/table/0746.jpg\nimg/table/0747.jpg\nimg/table/0748.jpg\nimg/table/0749.jpg\nimg/table/0750.jpg\nimg/table/0751.jpg\nimg/table/0752.jpg\nimg/table/0753.jpg\nimg/table/0754.jpg\nimg/table/0755.jpg\nimg/table/0756.jpg\nimg/table/0757.jpg\nimg/table/0758.jpg\nimg/table/0759.jpg\nimg/table/0760.png\nimg/table/0761.jpg\nimg/table/0762.jpg\nimg/table/0763.png\nimg/table/0764.jpg\nimg/table/0765.jpg\nimg/table/0766.jpg\nimg/table/0767.jpg\nimg/table/0768.jpeg\nimg/table/0769.jpg\nimg/table/0770.jpg\nimg/table/0771.jpg\nimg/table/0772.jpg\nimg/table/0773.jpg\nimg/table/0774.jpg\nimg/table/0775.jpg\nimg/table/0776.jpg\nimg/table/0777.jpg\nimg/table/0778.jpg\nimg/table/0779.jpg\nimg/table/0780.jpg\nimg/table/0781.jpg\nimg/table/0782.jpg\nimg/table/0783.jpeg\nimg/table/0784.jpg\nimg/table/0785.jpg\nimg/table/0786.jpg\nimg/table/0787.jpg\nimg/table/0788.jpg\nimg/table/0789.jpg\nimg/table/0790.jpg\nimg/table/0791.jpg\nimg/table/0792.png\nimg/table/0793.jpg\nimg/table/0794.jpg\nimg/table/0795.jpg\nimg/table/0796.jpg\nimg/table/0797.jpg\nimg/table/0798.jpg\nimg/table/0799.jpg\nimg/table/0800.jpg\nimg/table/0801.jpg\nimg/table/0802.jpg\nimg/table/0803.jpg\nimg/table/0804.jpg\nimg/table/0805.jpg\nimg/table/0806.jpg\nimg/table/0807.jpg\nimg/table/0808.jpg\nimg/table/0809.jpg\nimg/table/0810.jpg\nimg/table/0811.jpg\nimg/table/0812.jpg\nimg/table/0813.jpg\nimg/table/0814.jpg\nimg/table/0815.jpg\nimg/table/0816.jpg\nimg/table/0817.jpg\nimg/table/0818.jpg\nimg/table/0819.jpeg\nimg/table/0820.jpg\nimg/table/0821.jpg\nimg/table/0822.jpg\nimg/table/0823.jpg\nimg/table/0824.jpg\nimg/table/0825.jpg\nimg/table/0826.jpg\nimg/table/0827.jpg\nimg/table/0828.jpg\nimg/table/0829.jpg\nimg/table/0830.jpg\nimg/table/0831.jpg\nimg/table/0832.jpg\nimg/table/0833.jpg\nimg/table/0834.jpg\nimg/table/0835.jpeg\nimg/table/0836.jpg\nimg/table/0837.jpg\nimg/table/0838.jpg\nimg/table/0839.jpg\nimg/table/0840.jpg\nimg/table/0841.jpeg\nimg/table/0842.jpg\nimg/table/0843.jpg\nimg/table/0844.jpg\nimg/table/0845.jpg\nimg/table/0846.jpg\nimg/table/0847.jpg\nimg/table/0848.jpg\nimg/table/0849.jpg\nimg/table/0850.jpg\nimg/table/0851.png\nimg/table/0852.jpg\nimg/table/0853.jpg\nimg/table/0854.jpg\nimg/table/0855.png\nimg/table/0856.jpg\nimg/table/0857.jpg\nimg/table/0071.png\nimg/table/0858.jpg\nimg/table/0859.jpg\nimg/table/0860.jpg\nimg/table/0861.jpg\nimg/table/0862.jpg\nimg/table/0863.jpg\nimg/table/0864.jpg\nimg/table/0865.jpg\nimg/table/0866.jpg\nimg/table/0867.jpg\nimg/table/0868.jpg\nimg/table/0869.jpg\nimg/table/0870.jpg\nimg/table/0871.jpg\nimg/table/0872.jpg\nimg/table/0873.jpg\nimg/table/0874.jpg\nimg/table/0875.jpg\nimg/table/0876.jpg\nimg/table/0877.jpg\nimg/table/0878.jpg\nimg/table/0879.jpg\nimg/table/0880.jpg\nimg/table/0881.jpg\nimg/table/0882.jpg\nimg/table/0883.jpg\nimg/table/0884.jpg\nimg/table/0885.png\nimg/table/0886.jpg\nimg/table/0887.jpg\nimg/table/0888.jpg\nimg/table/0889.jpg\nimg/table/0890.jpg\nimg/table/0891.jpeg\nimg/table/0892.jpg\nimg/table/0893.jpg\nimg/table/0894.jpg\nimg/table/0895.jpg\nimg/table/0896.jpg\nimg/table/0897.jpg\nimg/table/0898.jpeg\nimg/table/0899.jpg\nimg/table/0900.jpg\nimg/table/0901.jpg\nimg/table/0902.jpg\nimg/table/0903.jpg\nimg/table/0904.jpg\nimg/table/0905.jpg\nimg/table/0906.jpg\nimg/table/0907.png\nimg/table/0908.jpg\nimg/table/0909.jpg\nimg/table/0910.jpg\nimg/table/0911.jpg\nimg/table/0912.jpg\nimg/table/0913.jpg\nimg/table/0914.jpg\nimg/table/0915.png\nimg/table/0916.jpg\nimg/table/0917.jpg\nimg/table/0918.jpg\nimg/table/0919.png\nimg/table/0920.jpg\nimg/table/0921.jpg\nimg/table/0922.jpg\nimg/table/0923.jpg\nimg/table/0924.jpg\nimg/table/0925.jpg\nimg/table/0926.jpeg\nimg/table/0927.jpg\nimg/table/0928.jpg\nimg/table/0929.jpg\nimg/table/0930.jpg\nimg/table/0931.jpg\nimg/table/0932.jpg\nimg/table/0933.jpg\nimg/table/0934.jpg\nimg/table/0935.jpg\nimg/table/0936.jpg\nimg/table/0937.jpg\nimg/table/0938.jpg\nimg/table/0939.jpg\nimg/table/0940.jpg\nimg/table/0941.jpg\nimg/table/0942.jpg\nimg/table/0943.jpeg\nimg/table/0944.jpeg\nimg/table/0945.jpg\nimg/table/0946.jpg\nimg/table/0947.jpg\nimg/table/0948.jpg\nimg/table/0949.jpg\nimg/table/0950.jpg\nimg/table/0951.jpg\nimg/table/0952.jpg\nimg/table/0953.jpg\nimg/table/0954.jpg\nimg/table/0955.jpg\nimg/table/0956.jpg\nimg/table/0957.jpg\nimg/table/0958.jpg\nimg/table/0959.jpg\nimg/table/0960.jpg\nimg/table/0961.jpg\nimg/table/0962.jpg\nimg/table/0963.jpg\nimg/table/0964.jpg\nimg/table/0965.jpg\nimg/table/0966.jpg\nimg/table/0967.jpg\nimg/table/0968.jpg\nimg/table/0969.jpg\nimg/table/0970.jpg\nimg/table/0971.jpg\nimg/table/0972.jpg\nimg/table/0973.jpg\nimg/table/0027.png\nimg/table/0029.png\nimg/table/0030.png\nimg/table/0031.png\nimg/table/0055.png\nimg/table/0060.png\nimg/table/0078.png\nimg/table/0974.jpg\nimg/table/0975.jpg\nimg/table/0976.jpg\nimg/table/0977.jpg\nimg/table/0978.jpg\nimg/table/0979.jpg\nimg/table/0980.jpg\nimg/table/0981.jpg\nimg/table/0982.jpg\nimg/table/0983.jpg\nimg/table/0984.jpg\nimg/table/0985.jpg\nimg/table/0986.jpg\nimg/table/0987.jpg\nimg/table/0988.jpg\nimg/table/0040.png\nimg/table/0046.png\nimg/table/0989.jpg\nimg/table/0990.jpg\nimg/table/0991.jpg\nimg/table/0056.png\nimg/table/0992.jpg\nimg/table/0993.jpg\nimg/table/0006.png\nimg/table/0007.png\nimg/table/0008.png\nimg/table/0048.png\nimg/table/0050.png\nimg/table/0059.png\nimg/table/0072.png\nimg/table/0082.png\nimg/table/0085.png\nimg/table/0998.jpg\nimg/table/0999.jpg\nimg/table/1000.jpg\nimg/table/1001.jpg\nimg/table/1002.jpg\nimg/table/0001.png\nimg/table/0002.png\nimg/table/0003.png\nimg/table/0005.png\nimg/table/0009.png\nimg/table/0010.png\nimg/table/0013.png\nimg/table/0014.png\nimg/table/0015.png\nimg/table/0017.png\nimg/table/0019.png\nimg/table/0020.png\nimg/table/0025.png\nimg/table/0032.png\nimg/table/0035.png\nimg/table/0038.png\nimg/table/0039.png\nimg/table/0042.png\nimg/table/0043.png\nimg/table/0044.png\nimg/table/0053.png\nimg/table/0054.png\nimg/table/0062.png\nimg/table/0073.png\nimg/table/0075.png\nimg/table/0077.png\nimg/table/0079.png\nimg/table/1003.jpg\nimg/table/1004.jpg\nimg/table/1005.jpg\nimg/table/1006.jpg\nimg/table/1007.jpg\nimg/table/1008.jpg\nimg/table/1009.jpg\nimg/table/1010.jpg\nimg/table/1011.jpg\nimg/table/1012.jpg\nimg/table/1013.jpg\nimg/table/1014.jpg\nimg/table/1015.jpg\nimg/table/1016.jpg\nimg/table/0004.png\nimg/table/0011.png\nimg/table/0012.png\nimg/table/0016.png\nimg/table/0018.png\nimg/table/0021.png\nimg/table/0022.png\nimg/table/0023.png\nimg/table/0026.png\nimg/table/0028.png\nimg/table/0033.png\nimg/table/0034.png\nimg/table/0036.png\nimg/table/0037.png\nimg/table/0041.png\nimg/table/0047.png\nimg/table/0049.png\nimg/table/0051.png\nimg/table/0052.png\nimg/table/0057.png\nimg/table/0058.png\nimg/table/0061.png\nimg/table/0063.png\nimg/table/0064.png\nimg/table/0065.png\nimg/table/0066.png\nimg/table/0067.png\nimg/table/0069.png\nimg/table/0070.png\nimg/table/0074.png\nimg/table/0080.png\nimg/table/0083.png\nimg/table/0084.png\nimg/table/0086.png\nimg/table/1017.jpg\nimg/table/1018.jpg\nimg/table/1019.jpg\nimg/table/1020.jpg\nimg/table/1021.jpg\nimg/table/1022.jpg\nimg/table/1023.jpg\nimg/table/1024.jpg\nimg/table/1025.jpg\nimg/table/1026.jpg\nimg/table/1027.jpg\nimg/table/1028.jpg\nimg/table/1029.jpg\nimg/table/1030.jpg\nimg/table/1031.jpg\nimg/table/1032.jpg\nimg/table/1033.jpg\nimg/table/1034.jpg\nimg/table/1035.jpg\nimg/table/1036.jpg\nimg/table/1037.jpg\nimg/table/1038.jpg\nimg/table/1039.jpg\nimg/table/1040.jpg\nimg/table/1041.jpg\nimg/table/1042.jpg\nimg/table/1043.jpg\nimg/table/1044.jpg\nimg/table/1045.jpg\nimg/table/1046.jpg\nimg/table/1047.jpg\nimg/table/1048.jpg\nimg/table/1049.jpg\nimg/table/1050.jpg\nimg/table/1051.jpg\nimg/table/1052.jpg\nimg/table/1053.jpg\nimg/table/1054.jpg\nimg/table/1055.jpg\nimg/table/1056.jpg\nimg/table/1057.jpg\nimg/table/1058.jpg\nimg/table/1059.jpg\nimg/table/1060.jpg\nimg/table/1061.jpg\nimg/table/1062.jpg\nimg/table/1063.jpg\nimg/table/1064.jpg\nimg/table/1065.jpg\nimg/table/1066.jpg\nimg/table/1067.jpg\nimg/table/1068.jpg\nimg/table/1069.jpg\nimg/table/1070.jpg\nimg/table/1071.jpg\nimg/table/1072.png\nimg/table/1073.jpg\nimg/table/1074.jpg\nimg/table/1075.jpg\nimg/table/1076.jpg\nimg/table/1077.jpg\nimg/table/1078.jpg\nimg/table/1079.jpg\nimg/table/1080.jpg\nimg/table/1081.jpg\nimg/table/0081.png\nimg/table/1089.jpg\nimg/table/1090.jpg\nimg/table/1091.jpg\nimg/table/1092.jpg\nimg/table/1093.jpg\nimg/table/1094.jpg\nimg/table/1095.jpg\nimg/table/1096.png\nimg/table/1194.jpg\nimg/table/1195.jpg\nimg/table/1196.jpg\nimg/table/1197.jpg\nimg/table/1198.jpg\nimg/table/1199.jpg\nimg/table/1200.jpg\nimg/table/1201.jpg\nimg/table/1202.jpg\nimg/table/1203.jpg\nimg/table/1204.jpg\nimg/table/1205.jpg\nimg/table/1206.jpg\nimg/table/1207.jpeg\nimg/table/1208.jpg\nimg/table/1209.jpeg\nimg/table/1210.jpg\nimg/table/1211.jpg\nimg/table/1212.jpg\nimg/table/1213.jpg\nimg/table/1214.jpeg\nimg/table/1215.jpeg\nimg/table/1216.jpg\nimg/table/1217.jpg\nimg/table/1218.jpg\nimg/table/1219.jpg\nimg/table/1220.jpg\nimg/table/1221.jpg\nimg/table/1222.jpg\nimg/table/1223.jpg\nimg/table/1224.jpg\nimg/table/1268.jpg\nimg/table/1269.jpg\nimg/table/1270.jpg\nimg/table/1271.jpg\nimg/table/1272.jpg\nimg/table/1273.jpg\nimg/table/1274.jpg\nimg/table/1275.jpg\nimg/table/1276.jpg\nimg/table/1277.jpg\nimg/table/1278.jpg\nimg/table/1279.jpg\nimg/table/1280.jpg\nimg/table/1281.jpg\nimg/table/1282.png\nimg/table/1283.jpg\nimg/table/1284.jpg\nimg/table/1285.jpg\nimg/table/1286.jpg\nimg/table/1287.jpg\nimg/table/1288.jpg\nimg/table/1289.jpg\nimg/table/1290.jpg\nimg/table/1291.jpg\nimg/table/1292.jpg\nimg/table/1293.jpg\nimg/table/1294.jpg\nimg/table/1295.jpg\nimg/table/1296.jpg\nimg/table/1297.jpg\nimg/table/1298.jpg\nimg/table/1299.jpg\nimg/table/1300.jpg\nimg/table/1301.jpg\nimg/table/1302.jpg\nimg/table/1303.jpg\nimg/table/1304.jpg\nimg/table/1305.jpg\nimg/table/1306.jpg\nimg/table/1307.jpg\nimg/table/1308.jpg\nimg/table/1309.jpg\nimg/table/1310.jpg\nimg/table/1311.jpg\nimg/table/1312.jpg\nimg/table/1313.png\nimg/table/1314.jpg\nimg/table/1315.jpg\nimg/table/1316.jpg\nimg/table/1317.jpg\nimg/table/1318.jpg\nimg/table/1319.jpg\nimg/table/1320.jpg\nimg/table/1321.jpg\nimg/table/1322.jpg\nimg/table/1323.jpg\nimg/table/1379.jpg\nimg/table/1380.jpg\nimg/table/1381.jpg\nimg/table/1382.jpg\nimg/table/1383.jpg\nimg/table/1384.jpg\nimg/table/1385.png\nimg/table/1386.jpg\nimg/table/1387.jpg\nimg/table/1388.jpg\nimg/table/1389.jpg\nimg/table/1390.jpg\nimg/table/1391.jpg\nimg/table/1392.png\nimg/table/1393.jpg\nimg/table/1394.jpg\nimg/table/1395.jpg\nimg/table/1396.jpg\nimg/table/1397.jpg\nimg/table/1398.jpg\nimg/table/1399.jpg\nimg/table/1400.jpg\nimg/table/1401.jpg\nimg/table/1402.jpg\nimg/table/1403.jpg\nimg/table/1404.jpg\nimg/table/1405.jpg\nimg/table/1406.jpg\nimg/table/1407.jpg\nimg/table/1408.jpg\nimg/table/1409.jpg\nimg/table/1410.jpg\nimg/table/1411.jpg\nimg/table/1412.jpg\nimg/table/1413.jpg\nimg/table/1414.jpg\nimg/table/1415.jpg\nimg/table/1416.jpg\nimg/table/1417.jpg\nimg/table/1418.png\nimg/table/1419.jpg\nimg/table/1420.jpg\nimg/table/1421.jpg\nimg/table/1422.jpg\nimg/table/1423.jpg\nimg/table/1424.jpg\nimg/table/1425.jpg\nimg/table/1426.jpg\nimg/table/1427.jpg\nimg/table/1428.jpg\nimg/table/1429.jpg\nimg/table/1430.jpg\nimg/table/1431.jpg\nimg/table/1432.jpg\nimg/table/1433.jpeg\nimg/table/1434.jpg\nimg/table/1435.jpg\nimg/table/1436.jpg\nimg/table/1437.jpg\nimg/table/1438.jpg\nimg/table/1439.jpg\nimg/table/1440.jpg\nimg/table/1441.jpg\nimg/table/1442.jpg\nimg/table/1443.jpg\nimg/table/1444.jpg\nimg/table/1445.jpg\nimg/table/1446.jpg\nimg/table/1447.jpg\nimg/table/1448.jpg\nimg/table/1449.jpg\nimg/table/1450.jpg\nimg/table/1451.jpg\nimg/table/1452.jpg\nimg/table/1453.jpg\nimg/table/1454.jpg\nimg/table/1455.jpg\nimg/table/1456.jpg\nimg/table/1457.jpg\nimg/table/1458.jpg\nimg/table/1459.jpg\nimg/table/1460.jpg\nimg/table/1461.jpg\nimg/table/1462.jpg\nimg/table/1463.jpg\nimg/table/1464.jpg\nimg/table/1465.jpg\nimg/table/1466.jpg\nimg/table/1467.jpg\nimg/table/1468.jpg\nimg/table/1469.jpg\nimg/table/1470.jpg\nimg/table/1471.jpg\nimg/table/1472.jpg\nimg/table/1473.jpg\nimg/table/1474.jpg\nimg/table/1475.jpg\nimg/table/1476.jpg\nimg/table/1477.jpg\nimg/table/1478.jpg\nimg/table/1479.jpg\nimg/table/1480.jpg\nimg/table/1481.jpg\nimg/table/1482.jpg\nimg/table/1483.jpg\nimg/table/1484.jpg\nimg/table/1485.jpg\nimg/table/1486.jpg\nimg/table/1487.jpg\nimg/table/1488.jpg\nimg/table/1489.jpg\nimg/table/1490.jpg\nimg/table/1491.png\nimg/table/1492.jpg\nimg/table/1493.jpg\nimg/table/1494.jpg\nimg/table/1495.jpg\nimg/table/1496.jpg\nimg/table/1497.jpg\nimg/table/1498.jpg\nimg/table/1499.jpg\nimg/table/1500.jpg\nimg/table/1501.jpg\nimg/table/1502.jpg\nimg/table/1503.jpg\nimg/table/1504.jpg\nimg/table/1505.jpg\nimg/table/1506.jpg\nimg/table/1507.jpg\nimg/table/1508.jpg\nimg/table/1509.jpg\nimg/table/1510.jpg\nimg/table/1511.jpg\nimg/table/1512.jpg\nimg/table/1513.jpg\nimg/table/1514.jpg\nimg/table/1515.jpg\nimg/table/1516.jpg\nimg/table/1517.jpg\nimg/table/1518.jpg\nimg/table/1519.jpg\nimg/table/1520.jpg\nimg/table/1521.jpg\nimg/table/1522.jpg\nimg/table/1523.jpg\nimg/table/1524.jpg\nimg/table/1525.jpg\nimg/table/1526.jpg\nimg/table/1527.jpg\nimg/table/1528.jpg\nimg/table/1529.jpg\nimg/table/1530.jpg\nimg/table/1531.jpg\nimg/table/1532.jpg\nimg/table/1533.jpg\nimg/table/1534.jpg\nimg/table/1535.jpg\nimg/table/1536.jpg\nimg/table/1537.jpg\nimg/table/1538.jpg\nimg/table/1539.jpg\nimg/table/1540.jpg\nimg/table/1541.jpg\nimg/table/1542.jpg\nimg/table/1543.jpg\nimg/table/1544.jpg\nimg/table/1545.jpg\nimg/table/1546.jpg\nimg/table/1547.jpg\nimg/table/1548.jpg\nimg/table/1549.jpg\nimg/table/1550.jpg\nimg/table/1551.jpg\nimg/table/1552.jpg\nimg/table/1553.jpg\nimg/table/1554.jpg\nimg/table/1555.jpg\nimg/table/1556.jpg\nimg/table/1557.jpg\nimg/table/1558.jpg\nimg/table/1559.jpg\nimg/table/1560.jpg\nimg/table/1561.jpg\nimg/table/1562.jpg\nimg/table/1563.jpg\nimg/table/1564.jpg\nimg/table/1565.jpg\nimg/table/1566.jpg\nimg/table/1567.jpg\nimg/table/1568.jpg\nimg/table/1569.jpg\nimg/table/1570.jpg\nimg/table/1571.jpg\nimg/table/1572.jpg\nimg/table/0076.png\nimg/table/1573.jpg\nimg/table/1574.jpg\nimg/table/1575.jpg\nimg/table/1576.jpg\nimg/table/1577.jpg\nimg/table/1578.jpg\nimg/table/1579.jpg\nimg/table/1580.jpg\nimg/table/1581.jpg\nimg/table/1582.jpg\nimg/table/1583.jpg\nimg/table/1584.jpg\nimg/table/1585.jpg\nimg/table/1586.png\nimg/table/1587.jpg\nimg/table/1588.jpg\nimg/table/1589.jpg\nimg/table/1590.jpg\nimg/table/1591.jpg\nimg/table/1592.jpg\nimg/table/1593.jpg\nimg/table/1594.jpg\nimg/table/1595.jpg\nimg/table/1596.jpg\nimg/table/1597.jpg\nimg/table/1598.jpg\nimg/table/1599.jpg\nimg/table/1600.jpg\nimg/table/1601.jpg\nimg/table/1602.jpg\nimg/table/1603.png\nimg/table/1604.jpg\nimg/table/1605.jpg\nimg/table/1606.jpg\nimg/table/1607.jpg\nimg/table/1608.jpg\nimg/table/1609.jpg\nimg/table/1610.jpg\nimg/table/1611.jpg\nimg/table/1612.jpeg\nimg/table/1613.jpg\nimg/table/1614.jpg\nimg/table/1615.jpg\nimg/table/1616.jpg\nimg/table/1617.jpg\nimg/table/1618.jpg\nimg/table/1619.jpg\nimg/table/1620.jpg\nimg/table/1621.jpg\nimg/table/1622.jpg\nimg/table/1623.jpg\nimg/table/1624.jpg\nimg/table/1625.jpeg\nimg/table/1626.jpg\nimg/table/1627.jpg\nimg/table/1628.jpg\nimg/table/1629.jpg\nimg/table/1630.jpg\nimg/table/1631.jpg\nimg/table/1632.jpg\nimg/table/1633.jpg\nimg/table/1634.jpg\nimg/table/1635.jpg\nimg/table/1636.jpg\nimg/table/1637.jpg\nimg/table/1638.png\nimg/table/1639.jpg\nimg/table/1640.jpg\nimg/table/1641.jpg\nimg/table/1642.jpeg\nimg/table/1643.jpeg\nimg/table/1644.jpg\nimg/table/1645.jpg\nimg/table/1646.jpg\nimg/table/1647.jpg\nimg/table/1648.jpg\nimg/table/1649.jpg\nimg/table/1650.jpg\nimg/table/1651.jpg\nimg/table/1652.jpg\nimg/table/1653.jpg\nimg/table/1654.jpg\nimg/table/1655.jpg\nimg/table/1656.jpg\nimg/table/1657.jpg\nimg/table/1658.jpg\nimg/table/1696.jpg\nimg/table/1697.jpg\nimg/table/1698.jpg\nimg/table/1699.jpg\nimg/table/1700.jpg\nimg/table/1701.jpg\nimg/table/1702.jpg\nimg/table/1703.jpg\nimg/table/1704.jpg\nimg/table/1705.jpg\nimg/table/1706.jpg\nimg/table/1707.jpg\nimg/table/1708.jpg\nimg/table/1709.jpg\nimg/table/1710.jpg\nimg/table/1711.jpg\nimg/table/1720.jpg\nimg/table/1721.jpg\nimg/table/1722.jpg\nimg/table/1723.jpg\nimg/table/1725.jpg\nimg/table/1726.jpg\nimg/table/1727.jpg\nimg/table/1728.jpg\nimg/table/1729.jpg\nimg/table/1730.jpg\nimg/table/1732.jpg\nimg/table/1733.png\nimg/table/1734.jpg\nimg/table/1735.jpg\nimg/table/1736.jpg\nimg/table/1737.jpg\nimg/table/1738.jpg\nimg/table/1739.jpg\nimg/table/1740.jpg\nimg/table/1741.jpg\nimg/table/1742.png\nimg/table/1743.jpg\nimg/table/1744.jpg\nimg/table/1745.jpg\nimg/table/1746.jpg\nimg/table/1747.jpg\nimg/table/1748.jpg\nimg/table/1750.jpg\nimg/table/1751.jpg\nimg/table/1752.jpg\nimg/table/1753.jpg\nimg/table/1754.jpg\nimg/table/1755.jpg\nimg/table/1756.jpg\nimg/table/1757.jpg\nimg/table/1758.jpg\nimg/table/1759.jpg\nimg/table/1760.jpg\nimg/table/1761.jpg\nimg/table/1762.jpg\nimg/table/1763.jpg\nimg/table/1764.jpg\nimg/table/1765.jpg\nimg/table/1766.jpg\nimg/table/1767.jpg\nimg/table/1768.jpg\nimg/table/1769.jpg\nimg/table/1770.jpg\nimg/table/1771.jpg\nimg/table/1772.jpg\nimg/table/1773.jpg\nimg/table/1774.jpg\nimg/table/1775.jpg\nimg/table/1776.jpg\nimg/table/1777.jpg\nimg/table/1778.jpg\nimg/table/1779.jpg\nimg/table/1780.jpg\nimg/table/1781.jpg\nimg/table/1782.jpg\nimg/table/1783.jpg\nimg/table/1784.jpg\nimg/table/1785.jpg\nimg/table/1786.jpg\nimg/table/1787.jpg\nimg/table/1788.jpg\nimg/table/1789.jpg\nimg/table/1790.jpg\nimg/table/1791.jpg\nimg/table/1792.jpg\nimg/table/1793.jpg\nimg/table/1794.jpg\nimg/table/1795.jpg\nimg/table/1796.jpg\nimg/table/1797.jpg\nimg/table/1798.jpg\nimg/table/1799.jpg\nimg/table/1800.jpg\nimg/table/1801.jpg\nimg/table/1802.jpg\nimg/table/1803.jpg\nimg/table/1804.jpg\nimg/table/1805.jpg\nimg/table/1806.jpg\nimg/table/1807.jpg\nimg/table/1808.jpg\nimg/table/1809.jpg\nimg/table/1810.jpg\nimg/table/1811.jpg\nimg/table/1812.jpg\nimg/table/1813.jpg\nimg/table/1814.jpg\nimg/table/1815.jpg\nimg/table/1816.jpg\nimg/table/1817.jpg\nimg/table/1818.jpg\nimg/table/1819.jpg\nimg/table/1820.jpg\nimg/table/1821.jpg\nimg/table/1822.jpg\nimg/table/1823.jpg\nimg/table/1824.jpg\nimg/table/1825.jpg\nimg/table/1826.jpg\nimg/table/1827.jpg\nimg/table/1828.jpg\nimg/table/1829.jpg\nimg/table/1830.jpg\nimg/table/1831.jpg\nimg/table/1832.jpg\nimg/table/1833.jpg\nimg/table/1834.jpg\nimg/table/1835.jpg\nimg/table/1836.jpg\nimg/table/1837.jpg\nimg/table/1838.jpg\nimg/table/1839.jpg\nimg/table/1840.jpg\nimg/table/1841.jpg\nimg/table/1842.jpg\nimg/table/1843.jpg\nimg/table/1844.jpg\nimg/table/1845.jpg\nimg/table/1846.jpg\nimg/table/1847.jpg\nimg/table/1848.jpg\nimg/table/1849.jpg\nimg/table/1850.jpg\nimg/table/1851.jpg\nimg/table/1852.jpg\nimg/table/1853.jpg\nimg/table/1854.jpg\nimg/table/1855.jpg\nimg/table/1856.jpg\nimg/table/1857.jpeg\nimg/table/1858.jpg\nimg/table/1859.jpg\nimg/table/1860.jpg\nimg/table/1861.jpg\nimg/table/1862.jpg\nimg/table/1863.jpg\nimg/table/1864.jpg\nimg/table/1865.jpg\nimg/table/1866.jpg\nimg/table/1867.jpg\nimg/table/1868.jpg\nimg/table/1869.jpg\nimg/table/1870.jpg\nimg/tool/0001.jpg\nimg/tool/0002.jpg\nimg/tool/0003.jpg\nimg/tool/0004.jpg\nimg/tool/0005.jpg\nimg/tool/0006.jpg\nimg/tool/0007.jpg\nimg/tool/0008.jpg\nimg/tool/0009.jpg\nimg/tool/0010.jpg\nimg/tool/0011.jpg\nimg/tool/0012.jpg\nimg/tool/0013.jpg\nimg/tool/0014.jpg\nimg/tool/0015.jpg\nimg/tool/0016.jpg\nimg/tool/0017.jpg\nimg/tool/0018.jpg\nimg/tool/0019.jpg\nimg/tool/0020.jpg\nimg/tool/0021.jpg\nimg/tool/0022.jpg\nimg/tool/0023.jpg\nimg/tool/0025.jpg\nimg/tool/0026.jpg\nimg/tool/0027.jpg\nimg/tool/0028.jpg\nimg/tool/0029.jpg\nimg/tool/0030.jpg\nimg/tool/0031.jpg\nimg/tool/0032.jpg\nimg/tool/0033.jpg\nimg/tool/0034.jpg\nimg/tool/0035.jpg\nimg/tool/0036.jpg\nimg/tool/0037.jpg\nimg/tool/0038.jpg\nimg/tool/0039.jpg\nimg/tool/0040.jpg\nimg/tool/0041.jpg\nimg/tool/0042.jpg\nimg/wardrobe/0001.jpg\nimg/wardrobe/0002.jpg\nimg/wardrobe/0003.jpg\nimg/wardrobe/0004.jpg\nimg/wardrobe/0005.jpg\nimg/wardrobe/0006.jpg\nimg/wardrobe/0007.jpg\nimg/wardrobe/0008.jpg\nimg/wardrobe/0009.jpg\nimg/wardrobe/0010.jpg\nimg/wardrobe/0011.jpg\nimg/wardrobe/0012.jpg\nimg/wardrobe/0013.jpg\nimg/wardrobe/0014.jpg\nimg/wardrobe/0015.jpg\nimg/wardrobe/0016.jpg\nimg/wardrobe/0017.jpg\nimg/wardrobe/0018.jpg\nimg/wardrobe/0019.jpg\nimg/wardrobe/0020.jpg\nimg/wardrobe/0021.jpg\nimg/wardrobe/0022.jpg\nimg/wardrobe/0023.jpg\nimg/wardrobe/0024.jpg\nimg/wardrobe/0025.jpg\nimg/wardrobe/0026.jpg\nimg/wardrobe/0027.jpg\nimg/wardrobe/0028.jpg\nimg/wardrobe/0029.jpg\nimg/wardrobe/0030.jpg\nimg/wardrobe/0031.jpg\nimg/wardrobe/0032.jpg\nimg/wardrobe/0033.jpg\nimg/wardrobe/0034.jpg\nimg/wardrobe/0035.jpg\nimg/wardrobe/0036.jpg\nimg/wardrobe/0037.jpg\nimg/wardrobe/0038.jpg\nimg/wardrobe/0039.jpg\nimg/wardrobe/0040.jpg\nimg/wardrobe/0041.jpg\nimg/wardrobe/0042.jpg\nimg/wardrobe/0043.jpg\nimg/wardrobe/0044.jpg\nimg/wardrobe/0045.jpeg\nimg/wardrobe/0046.jpg\nimg/wardrobe/0047.jpg\nimg/wardrobe/0048.jpg\nimg/wardrobe/0049.jpg\nimg/wardrobe/0050.jpg\nimg/wardrobe/0051.png\nimg/wardrobe/0052.jpg\nimg/wardrobe/0053.jpg\nimg/wardrobe/0054.jpg\nimg/wardrobe/0055.jpg\nimg/wardrobe/0056.jpg\nimg/wardrobe/0057.jpg\nimg/wardrobe/0058.jpg\nimg/wardrobe/0059.jpg\nimg/wardrobe/0060.jpg\nimg/wardrobe/0061.jpg\nimg/wardrobe/0062.jpeg\nimg/wardrobe/0063.jpg\nimg/wardrobe/0064.jpg\nimg/wardrobe/0065.jpg\nimg/wardrobe/0066.jpg\nimg/wardrobe/0067.jpg\nimg/wardrobe/0068.png\nimg/wardrobe/0069.jpg\nimg/wardrobe/0070.jpg\nimg/wardrobe/0071.jpg\nimg/wardrobe/0072.jpg\nimg/wardrobe/0073.jpg\nimg/wardrobe/0074.jpg\nimg/wardrobe/0075.png\nimg/wardrobe/0076.jpg\nimg/wardrobe/0077.jpg\nimg/wardrobe/0078.jpg\nimg/wardrobe/0079.jpg\nimg/wardrobe/0080.jpg\nimg/wardrobe/0081.jpg\nimg/wardrobe/0082.jpg\nimg/wardrobe/0083.jpg\nimg/wardrobe/0084.jpg\nimg/wardrobe/0085.jpg\nimg/wardrobe/0086.jpg\nimg/wardrobe/0087.jpg\nimg/wardrobe/0088.jpg\nimg/wardrobe/0089.jpg\nimg/wardrobe/0090.jpg\nimg/wardrobe/0091.jpg\nimg/wardrobe/0092.jpg\nimg/wardrobe/0093.jpg\nimg/wardrobe/0094.jpg\nimg/wardrobe/0095.jpg\nimg/wardrobe/0096.jpg\nimg/wardrobe/0097.jpg\nimg/wardrobe/0241.jpg\nimg/wardrobe/0242.jpg\nimg/wardrobe/0243.jpg\nimg/wardrobe/0098.jpg\nimg/wardrobe/0099.jpg\nimg/wardrobe/0100.jpg\nimg/wardrobe/0101.jpg\nimg/wardrobe/0102.jpg\nimg/wardrobe/0103.jpg\nimg/wardrobe/0104.jpg\nimg/wardrobe/0105.jpg\nimg/wardrobe/0200.jpg\nimg/wardrobe/0201.jpg\nimg/wardrobe/0202.jpg\nimg/wardrobe/0203.jpg\nimg/wardrobe/0204.jpg\nimg/wardrobe/0205.jpg\nimg/wardrobe/0206.jpg\nimg/wardrobe/0207.jpg\nimg/wardrobe/0208.jpg\nimg/wardrobe/0209.jpg\nimg/wardrobe/0210.jpg\nimg/wardrobe/0211.jpg\nimg/wardrobe/0212.jpg\nimg/wardrobe/0213.jpg\nimg/wardrobe/0214.jpg\nimg/wardrobe/0215.jpg\nimg/wardrobe/0216.jpg\nimg/wardrobe/0217.jpeg\nimg/wardrobe/0218.jpg\nimg/wardrobe/0219.jpg\nimg/wardrobe/0220.jpg\nimg/wardrobe/0221.jpg\nimg/wardrobe/0222.jpg\nimg/wardrobe/0223.jpg\nimg/wardrobe/0224.jpg\nimg/wardrobe/0225.jpg\nimg/wardrobe/0226.png\nimg/wardrobe/0227.jpg\nimg/wardrobe/0228.jpg\nimg/wardrobe/0229.jpg\nimg/wardrobe/0230.jpg\nimg/wardrobe/0236.jpg\nimg/wardrobe/0237.jpg\nimg/wardrobe/0238.jpg\nimg/wardrobe/0239.jpg\nimg/wardrobe/0240.jpg\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/02691156_test.lst",
    "content": "521eab9363fdc2a07209009cfb89d4bd\n50da48c8e7644508fca1f1143bb6bc17\n43abe330362164e99be82ec29531a70f\n4ad92be763c2ded8fca1f1143bb6bc17\nd06105ee2a2ae27c51008e496c6cfd2e\nddec69970cbc4d29112a90660b187a10\n36d8c865f766e3e097872638b21438e3\nf9e80ce23d9536623fddedb0bf24c68a\nb1f08c51a098c43696d224195a988f09\n4a837740b388aa45d8ff6111270336a9\na56143efe74ee89ebbf3143b1cb6076a\n3c7e4628a9ea201bbf3143b1cb6076a\naa07239e9397cf189601fb40d0d298b9\n4635326bc4fdc3e9297cd7e2ef7dfa80\n427030abcc0f11a8947bbeb9022263b8\nd08471df3e76602427743256ca3834f\nb785b39d10c33b5de9f07d25f575b2d4\ne0385af10bddc6a0ca8607f540cc62ba\nb80bd34ab330babbc8727b27ee96a4b7\ne42443669339a6c1a5a118bd15e6e34f\nb4575e5e6161fd497b164268a44f7712\na6cbada42d1a30d0f5c7319b71bdce6e\n53eee66291c47a91bc0909d98a1ff2b4\ndb0c0fc7ce05d372311e3590f044c241\nb976a48c015d6ced5e9e2656aff7dd5b\n489d3e4cc3d790a0ca8607f540cc62ba\nd20e3ed9b3430672bbf3143b1cb6076a\need299b690be51ffbd931fcaa69140\nb092d523bdd320e4ca8607f540cc62ba\nd0ee4253d406b3f05e9e2656aff7dd5b\n3db61220251b3c9de719b5362fe06bbb\na1708ad923f3b51abbf3143b1cb6076a\ndfa36bffe436a98ee0534173b9189765\nfe0c4db38fb6399990b1d6deb98feec6\n545cadae487b55bbc46ba5100bcdc520\n57937c7ab42260ebf119374ee5d5f944\naa2af754642256c08699933784576e73\n350d12f5290908c7f446f92b52bbd82a\n48e9c61de4db838d84b83051fa0ae5d2\na9a7f21271b3efbaf446f92b52bbd82a\nff52c059efaca3c1ca8607f540cc62ba\n997cb29f544d6f2726360e1e29a956c7\n57fe8ad460bcb4929a4a28ef635593ce\nb1835836e541766882568aa50e4e5dba\nf12eefbbefabe566ca8607f540cc62ba\ncf0cdaa94220ee3f4c3a35cee92bb95b\na074750e28ed3818203936772104a82d\n45a4ec99ed13ed773c2498c4c2f13ca\nd72a483cf8a0cf2bbbf3143b1cb6076a\nc9aeb20d7cd1b3b45e9e2656aff7dd5b\n471ca950dbdf0c6c5f80f808704d6409\n9825919cffec79701944f01d3ab2091b\ne0cc4f538a8da2d65d3bbd70fc7759b7\n97d662e5e6345b46bd46d022fd7d80aa\n9ac292686a2fcebbe719b5362fe06bbb\nf2d4b8440d4bde5330afbcb38d77d0c3\n4c008f39378be18bc0909d98a1ff2b4\nadb3ea03d7b954255e9e2656aff7dd5b\nabc465975af79827dfb86dddee1d6ac3\n33faf711ed54a4d3db22b838c125a50b\n50755e616df58fe566cf1b4a8fc3914e\nf6ea6663b48bf78261f1ef59130c405d\n947d6b9cd1966e2e719b5362fe06bbb\nfc7387d630c84bb9c863ab010b80d9ed\nb6d61068ef2bf2d46059aeb39e538eb2\nb590adb6d3486f6e90b1d6deb98feec6\n9afe827a622d8ca28699933784576e73\ndacb447d7820e7f7ca8607f540cc62ba\nf57c74e194cd2b2bc8727b27ee96a4b7\nb31bbc50a0d3a4366cf1b4a8fc3914e\na5cd14be786fc8175e9e2656aff7dd5b\ne86fd13a49f0ee0a62b600da24e0965\na0a7e673a1e1bca78699933784576e73\nd4dac019726e980e203936772104a82d\n9bf3c126d5918c41f5c7319b71bdce6e\nb72804a8bd3dbbaca8607f540cc62ba\nb9fabfa6d5fedbc3a8e091cb544689d5\ndc7c5d12854b9467b96212c8f6cd06e\n9a8aecab136ce50db7ef47444625afb2\nb2b1c1d5c757af8a7209009cfb89d4bd\nda9d111e1175d318bbf3143b1cb6076a\ne8409b544c626028a9b2becd26dc2fc1\na805c30d4b09f11f62347b4731688b0f\nb3a59a941500e76535592b447835a16e\nfd41d04f1aabbaea3fddedb0bf24c68a\nab95a4e7f2d3cf9ca8607f540cc62ba\nd5a94c9f09d238c4c3a35cee92bb95b\n571cfb1da3d5b3704b5910188444efc8\naf696fc30a96a0c8bc0909d98a1ff2b4\n4ff50b9f815c58acca8607f540cc62ba\n9f5dda6f01bbe29bf810506e9ae2dcc2\nba662ec78231c493252b4f9439ef95a6\nacd8f367c36a3d84fc7a6d75b3d807ff\nd2e2e23f5be557e2d1ab3b031c100cb1\nf39985959d394f8c863ab010b80d9ed\n56ba815f883279b462b600da24e0965\n356a633ea047c549ca8607f540cc62ba\n9ba460913d86466f62347b4731688b0f\na04d10b24ede5e9a3de778e85611513b\nce827e4c857d553f71d03b466c72ce41\nca4ec545363b3b8e8c2814a4ead9cb90\necb4ae05d7dd135a619550d2af0b6117\n973df01cea43c7f690b1d6deb98feec6\nf13827d156628467b4cdad9a5bf52dd5\n1e0a24e1135e75a831518807a840c4f4\n2d3ecfb6d7ef2c45e08b03c50fd87acb\n9bd8d0fa75bc21c5e3375a6b96a1d765\n93ba822e84586999e3375a6b96a1d765\ncf61af3c52dae1e0651e8da9cf70afea\n5bc41589eba11a4e15477d594f1fbd99\n7e8be9c88e596b84198609c994ea801\n7805239ad1e40e07c69d7040c52664c5\n8951b4f9834869a6673a028ac04b7de3\nfe266c740580c102ff9ce0c50c2cd25a\nd844094b073a0452b04b2d1c5ce9783b\n79351c8f83f5a3abb2d09bc8d348e46b\n8f9fe8d7df1af4e057240bc6888ed016\n3255eb4c8ad868b3b378822897b79a81\n7eef160cf5e4188a5a8c25d312cc3c6a\nf9fc7fc23e62986fef6c510e24348d3b\n70f330ba02ad7a05bec2ed99cca9acdf\n52151d6a699ed1acecae07472b415b97\n92a83ecaa10e8d3f78e919a72d9a39e7\nbc58ff3369054fa68f52dc705c3109b9\n8700f6db654c5d2aca52e8e28cb200ce\n4c0f48d49805a37298a97ddfb532e08c\naeb10a6725afb1abc79f92df566f8c6b\n46d2373fa05a4876bc913a3935f0ae10\neffbe2683574dca2b37a6cf3f07b9ff4\n6c432109eee42aed3b053f623496d8f5\nf62ad267cdd1a00a34b1f3550986bd42\ncbf4dc1c144ce656ffa79951b9f955a3\n5e77ccd7794465dacbbcf57b22894cc3\naac4ceced7042e4c1a6d59f1fe711d12\n1c2e9dedbcf511e616a077c4c0fc1181\nd5e01850a9d1f3ac5fb48d488d5dfafd\n752d9a010346862551cfdb4c9f126c12\n396c8e232192a44be1a9c234926c21e2\n733db701650ed0d4651e8da9cf70afea\n14d9c576d06622198f52dc705c3109b9\nbddc2c1a4fae008947a1dbf5fd48a4dd\n5459029489f68030590874dcd9dc8481\n4a7b3bb0f7e4e13af7f031a34b185310\ncaa7e70beee4543f42c20743f866e1a6\n3b2a19d782234467f9cc1fc25372199f\n97066012fbca5983c74417871493eae8\n95cfdf728da16975c5f6fdebb053ab2f\n5aeb583ee6e0e4ea42d0e83abdfab1fd\n7790715d4bc226f8b569b36137d81c9b\nab7001e6d0321374b378822897b79a81\n5ac0cd21410b2a6a341877ff7a6c751f\n1af4b32eafffb0f7ee60c37cbf99c1c\na87c4bebcad260edc05997f3aeab04c6\na12179d6f8b753a934a446df7eff04e9\n914c308ac4a9156842c20743f866e1a6\nf66bf1a9b6d2d109a34fb3db6a11a22d\n4658a2fb7353f839643ae903098a314\n376e9480ebe635b1e98208adea7b4e8d\nad66ac8155a316422068b7c500584ade\nb26c50c3dd4a1cbb16b34c3751bc447d\n19b219dbd2e4467828d4f2ffc8f17f3a\n1e6a71e0cb436a88a3a1394d6e3d2c63\naf04f04964fc2f1b64a62403221fd59f\nfbf6917bdd86d5862df404314e891e08\n48b99ae8fbe0762a8ed04761eced33c6\na61bb94e08709f2bd0734afa0d357999\n885b7ba506c9d68ab6ecbbb2e4d05900\nb5130ad12f6db8d0c83b9fdce4d2e0e7\n8383e10a1d1faf89c7749c7e68c22ddc\na0c9b929b9a57fc8f0ea53ad10b4d47\n8fa9e2e8dbed43911f32208e53f871eb\nde9e093bb17848c3b2bd4a92202f8700\n369244d49f8f1308b858e64ff0fa8db3\na657a0dec941d40772fe60ad306aa5\n464a8718f0e81ffd9a6e43b878d5b335\n1adb40469ec3636c3d64e724106730cf\nbfa8e832618454c0a179137acc8d4437\nf9a8c5ae39362284d538ebc793e748b2\n4bca81eedcc3da52b8013668e30e23b0\n552d76fdb54e5d57cf7cf1e30e2f5267\nc087319ca6126c51c5b0cf694baa734f\n5c4095795aad447f7301f2b895d332ac\n8a84a26158da1db7668586dcfb752ad\nfc44636ad5fd9754927b6179bcc6e892\n84de1d44d8795d5876817284cd40c7c1\nc207db490c4acde27b5d32a85e1b7987\n65654b5c4e488e0c961fa14fc879444e\nb152548ae1a12bcb680558279a114842\n22e4e0210f80fae813940713146922c1\n3e0561d70c7fd4f51c6e4e20f2b76086\n3fd97395c1d1479b35cfde72d9f6a4cf\n257d7b5ccd3b5c7f7c5c969e221ece01\nad6e93a1db3e1da5977e4bb19a62128e\n218caa58819e10d1fe40308d822f996c\ne30e25fe047ce1ea10b08ceced9a0113\na73be4c48272735df64801ad2940cdd5\n3713302f0330f960970864f653fa080f\n98011d15300361e54f0e6f5b218145e\ne6363b1d63f6aad3c1006ed55bc1a3fc\n1fccf0064e0aebfeb179f2ac46747670\nb552a6155c5b340e70828dc2c11733e1\nb27de883a83409a86bd2a0f0614d73d\n536f5d8e46467566643c3c243d611069\nbd48d0beb5d1acf1d2106c9042f1bde9\nefbf3d4c8877e7dc7ce8c809505eca2f\ndb4e26b10e48f0202eb17a4a1756af76\n721eab5632f60887e72b7fd373921885\ncbc9d6ae9d22fcc57f3efc94c2d31dc5\nbb7d526405e9347b8f6810e1a2b6aa04\nf0d6c53d21ae5b5cd0c57f18e8d8830d\nd722973c75c85d93d0734afa0d357999\n789f032dccc6092977b7d0d4764c121d\n8a25b5ee4421f96a349a1add3c9c4a87\nf3e2df468c15795872517bb0a6b4d3ef\n9a5f4508a4337d195e48cdafd0101d9\n63ca41783e5d41f1651e8da9cf70afea\na374b0448461438ef3d4cc10d9776c62\n3d5354863690ac7eca27bba175814d1\n62c875c3db8bbc512842bbbd2f23c97c\nedc9fefa5fb82a0443a0c73d98327de8\n2a2caad9e540dcc687bf26680c510802\n8b0d9118e9e7dc3f95c9af648ce95367\nc6c525a71215dd5a459f73e379ceb540\n90612205109d7458e84aab2e1d454e3c\n9d292c07f1dff16e1304733e0af0907\ne1e7f3843b1fb876f5156bb441883fa\n1c798f3e8bcaaed6f34c3a85e57ba71c\na5021faf372fa2c48f329df3701cbb3d\n39ae262853031e42aedf20f7099e25c5\nf8647af0b1ad01445de04aad18bd94c3\neac2573ef637a0dbf31cac033b2c0831\nd276954441de1e878a3d2bbe7d58317e\n79d82d0db21dff48aedf20f7099e25c5\nf74cbd91e6fb40dfce5965228d7e8c9f\nb9ee9a1ed9296e8c598bfdaf1b614b1\n9441549e323552f2f001dddaf44c449b\n6aa1ef13aebb1935ebdda919ac927e5e\n3ad337dcef167024fe6302fece358e4a\n98168c1772b769c0ea1bd6f2443b43e7\nd1a8e79eebf4a0b1579c3d4943e463ef\n4def53f149137451b0009f08a96f38a9\n8325baeca433510f4e8c959f70e2c0d8\n48df2496242053da4ee0fb6a51564c3\n37ed9b767fb055959d61264e98b74348\nbf124ddeb1189a3cb312af71146176c8\na3fc9ef9f611a783525e60273896d30a\n12f3fb99c95c6a7357891d676f728bc0\nfc16704314dc71ee9a6e43b878d5b335\na14b262838529c2c81e1d9f6b27f1a92\n1deb997079e0b3cd6c1cd53dbc9f7b8e\nf4a5b28233523a4e588ed1d0f708d42f\n48cb2de06f46cde25ed29e0a9f14425\nb04ec55f4960b3b984b7ea000aa0a2b\nb34526d94a00ab55f5a25dd70eb863e0\ne416ba617d5388401b0d75a1d7e2d58\n3c2986906532a1c8cc36f752df32539d\na516f9a6947bd0d639cb1b92881e8e76\nc510e14ac20edee814a46d7ec44fc258\na93a20767d70220cd3b936925082270f\nb43ccbfd5e1d88bd780469afe5e05eb1\nb6a1b55eb79a383542086bcdee59b1cf\n9f9cc77c5e32664e6a8a5e39588ebf68\nf9c93ddc9b921d88a72ae0d8b7f98590\n55fabcb7e7c11560fa6bb68bdba0e663\nd12f7698698bbc8f9b10643ba761a774\n444d67950ff9a4cc1139bebb00fe5be8\n50342e9cb1a7e00e59c11002fedd14ce\nc8a7eab796be432d5de04aad18bd94c3\n5ae05c956af61890b58b3ab5dbaea0f7\n2c1fff0653854166e7a636089598229\n6cf339eb8c950ac5d556fc099c90ab45\n10aa040f470500c6a66ef8df4909ded9\nc1b5dc92221bcdad5fc84bf2b9ef981\nfac4af109beb0108b4f192eea1889928\n83ed7c81a011d72a179137acc8d4437\nea58a51483e3604897dec65c2238cb8a\ne033b6ad34586a86cc1c9e8218bfe7fc\nb9ba988dd9a6cf426e8b6dd39a855b69\na702da03d770f5096e2738fc9da60e6f\nc359e067e75cfa8693d4024985440d4c\nddd06628f3bfd0b64e1dedff94c67c76\ne79e9e1c8dae48888ee1ba57de3d34e0\n14762404f34eb050bf7a28999a707afd\n7a57a9b261f60dcb2296d88107d065f6\n85da8ecc055fc6cb58328b65a4733701\nf07028f2080aaf4e75b90b083ed202b\n9e998a06601e9f944b2bd73664dd1844\nb59a7cab8e95f6eaf3a7414a84b5637\nafc975c77f6d5a1bd23d6ce2c840685b\nbea43bda17ea2ec792e07599d5caede\n4f0bf26c62bb7c8b7e1c97634acf0214\n70295db03521e219a5be3c7b80fdc3d\nc5c726006697aa19b5666ac9dae008e8\n2a906a12b740afe2fe93207afde39a32\n737629e185f4c45f99f30106e678cab1\nfeb0bd0dcd155af4cc34b900bb2492e\n41fd618a15692db27359b134afde902\naa0802b8b940b7222296d88107d065f6\ne0df54a0990000035dde10d3d9d6a06\nb75575684fa8ffaeac7e7b41e1ebe3e4\nee0105d05a5007ab827afb33b6d5eec6\nde29a1335c332a5ef7bc9a344bb7bae5\nb46455f82ad28fb595ff232cd38210b4\na8773829298f492cbcb9a99298d16322\n6b69e4c1cceb6e0681fa1ee3c368532e\nf24daae76836e249f0878b58b4e887bf\n69d471ccfdf9e55cace8f9c62f7ef839\n58fcba9ef405277cfc8d2548f6ad75e\nabb19f2adc42aea2579c3d4943e463ef\n46829981c5c25285bfc0a2c490b4c222\ne0b5c450de6d7fe3d87c63d8b3018b58\n66e60b297f733435fff6684ee288fa59\n67dbb0de722cf5cd7a734abc5ba1db0f\nee92bc35ee989f59271b3fb2659dec56\nf5403d3ffcc6bb17adce4f2283adbdbd\n79c10c1d217b4e96ee2723567c7709e6\n461891f9231fc09a3d21c2160f47f16\ne9df546c1e54af0733d72ae4e2c33411\n5b5c4dc4bd29dc8166cf1b4a8fc3914e\nc2352a98200942e5b39b85af85a55aef\nea06bef342fbfd4236f3a2343a8221f2\n237b5aa80b3d3461d1d47c38683a697d\ne5c6ba3e7d4f2fde40acb87a6be88b3\ndc74cd06430b61f478d9c09d692f9057\n5b985bc192961c595de04aad18bd94c3\ncc0c7bf3f0f598db2a9ab3cbfdfd536c\n3ae96a1e1bb488942296d88107d065f6\n74a5f937c22aa08a3e70653c1b3170b5\nf1111840bde23096ee2723567c7709e6\ne3de366a0cfb59ed38294c37c250d7cd\na48676cfe44fd9bee40acb87a6be88b3\n76252e1b65ede02f889919e9428eee54\n7fce28d597b3137cf24f8f5f80968450\n1b90541c9d95d65d2b48e2e94b50fd01\n89f21747e6403735d9e1375411b582e\nd3f2dcf27000283799d9d900afe054b8\n861dbd415c83e12e67c647d96462f673\ne1e5cfcabcbe26a03087f84b199fd297\n12991e9529a2b2bf9ac9930d2147598f\n97ec5b82d9757b639cb1b92881e8e76\nefc9cda06afcd8c2354ab1decf4fe605\nb81339a2f1dbc0de9598ceb95c7f0752\n1cb757280b862ae52c7575c9089791ff\nb2b3fc16b9a676f5950bd071d87a18b3\n97eb9cf6c8a11a389967b23b351d6841\nebd96d07a7d68cf2fc7b6f7beb3a27ff\nbf5d6902e75fd8812296d88107d065f6\nd109c08886c2a3dabdf566b587d6b21\n7d226c520a29c7705e28caa3b26a73fd\ndaeb27ada93505b1e24e4b657f0a298\ncc80380c511ec8e2c91a9d486db717\nd6bf9fb6149faabe36f3a2343a8221f2\n715623df7ed5a6fc2296d88107d065f6\n4e2322d4f1c0d29df96e777471c18dbe\n94379090010cd6bb874c9ce092a813ef\n96ed9dcc355f3d34585be1dcf6e59170\nce682d7a2bbf77b6fc4b92d3d335214a\ne69631d34410f99ac4f72bf08dc79a6\nf134306ace70df3ac1006ed55bc1a3fc\n8b59ed9a391c86cdb4910ab5b756f3ae\nafd6b2789e486ad4663191fd557d3a61\nd24f2a1da14a00ce16b34c3751bc447d\nb94b4edc5e4701093ba0eea71939b1f2\nc31f5303997022c842c20743f866e1a6\n62bc52c204b738317dcda43eefa0ac02\nf691f2409e006d33f412783097373bdc\n4a3950ebb6fe6aca8afca43ae0909988\ndf25be12ae47d2517ef7776b3bf5815c\n33ddbeb13fecf7868405970680284869\n448bd2bcde027ca9e5d07633dda45110\n5de2cc606b65b960e0b6546e08902f28\nc237b4636625f1b0af8d9a7eb0a2bedf\n31a06c63b8932cac8bec85d7b4e1ee67\nd43b80dd95a2233a5ae839ffe09b9d31\n9dbab9e46b372e837645a27090729af6\n5d8583703889178a8bc354dd4eb23614\ndf68b8fb9f4531b42e690fa6dfd5d610\n70d9304de59792a9515d73fcb34092fc\n9c41b0040048581c32387cdb9b2a84d5\na4ea22087dec2f32c7575c9089791ff\nb8e4e4994d4674cf2023ec956848b741\n896508fa65b8a31c12b38b1d99376c0b\n9a266b3a734e374687bf26680c510802\nde519752147a225032387cdb9b2a84d5\n35ae2885a0e645fb7843a50f3dd2047e\necc50d702133b1531e9da99095f71c63\n5dd2324cd6ebf52e293fdbda4e7beec9\n4580804c798365a094a6f19fab16fe62\nadaadca2be822544d81b6465d8dc20b5\n167740d2a5f5cb6c7f4561609781d8c9\n6896058e4bc0be46bdf566b587d6b21\n7664f3809169e998a4ee0fb6a51564c3\n8ddc3bfd5a86d4be2e7c68eb5d1b9123\n879ebdd198cf4aa58f6810e1a2b6aa04\ne814190f683946b798b4e13cd6d24c30\ne115f4f824e28246becc132ee053f2fa\n87b4476ce2df563972459a40bb821ba6\n48a0d4cb43c961165de04aad18bd94c3\n563cef4df464ddb1e153dd90dac45a6d\n75705b82eb24f5ae23e79e99b949a341\nfbc429365ab7136be1a9c234926c21e2\n1a9b552befd6306cc8f2d5fe7449af61\n35bb733b13c48bbc839ab492b6143b9d\nc1c341e597c01d3814a46d7ec44fc258\ne3aff5ae3e8f2a7c4c2c88971423d0be\nad546b049b2246bd609e2d916fa0da27\n57c4a88a7b2e10f14c971d5c531b9d1c\n862d685006637dfef630324ef3baae90\n81e4cc88fc757ee220152153c3a56171\ndfe65f8a20df11c5d1df55cbe0874aa\n853dc1e740631bf2ffa79951b9f955a3\n68c61d42222863682296d88107d065f6\n8996445c6d2407c0fb5c1b0f759e2bc1\n26f8a11864fd6bf7b68211fcc7956ac6\ncda3cd7f140fe791ed137f17a6d8e3c8\n13f9eb29d699488a99eab31c7df6f5c3\n8c42e3042a4beaa7d5c40787c7bb7824\n9b5e193416d5b2c09d608d5eb8e56ba5\nd940f33afc01ff036da97d9f744f7e97\n213cdfff847f32135ae839ffe09b9d31\n895ae296f701f5e2ee7ff700fef7cd22\n7b1859e6b57bb6621c795eedd7ee6db0\n85a15c26a6e9921ae008cc4902bfe3cd\ne4b0599a9d06f7ae39cb1b92881e8e76\n99c0ee178c5a4dbd8d8a353a30b33dd\n6459a6977cce8f8789b0d69aba91f1ef\n1d0c128592385580e2129f6359ec27e3\n48c4e5e2c2dfccc7a68efacd2d601104\nbdfbf1c555dacd9d325212819caa597d\n8264f874bc7fa58ac3d9e92d9c33325b\nb51032670accbd25d11b9a498c2f9ed5\n76811819fc2bf7fbdbe9ce60b93b8bd5\nbff6cee515cdefa8a5effc03faf54012\ndd65065e6e2d31d62e350437b1fc5163\n5558a2511bd43caf2fc668af6d3ad0ad\n1998ee1bf3806b05818b286e41cc1a3f\nc7c5bb658cafcc7c67711f7c205c5b63\n123ac29b0aac8c8e5d07633dda45110\n343a607d1604335fb4f192eea1889928\n67c8fe06930cf8788762ebad71629f9b\nb5589ad89ceab860123d1d349cb8cfb9\nf6e6fd724a9eab24ba8e93696257b3fc\nbdfa5ff6aefd3fb8a57854d2ce086d65\n9a84ed39f9a2a3c0b3f2b01de37c0b29\n5294c39d2a57bd7e5cad6226edb8e82\n8c0c8307c5de1b65ac96c03d6280efb7\n51d6c3bf592a1fc16dfe8328adcc508e\n204f4e737fa14aef33ba31f6ad43c835\n723a86a2b266109d1fc43d5b32fa230f\ncd9f07bc1e5087b7f33a09c02bab9cc\n407135e4c3c7cf2523c853ced7da0343\n320e542b0b2f8afa248b612e49a6e572\n3bff0d84311470a357f53fe209e96fca\n6e25548ed9d2c7b597dec65c2238cb8a\naea5192a4a7bda94d33646b0990bb4a\n324304121b61339bc36cfeafa51d54fc\n3d23703a618ce7df1e569ed4e4cfe84\n3f9cab3630160be9f19e1980c1653b79\n5a4c3f3af30e42e057891d676f728bc0\n86c8e75179f00b725b7d3d0361fc611b\n87069f21b11c180799a771d197c7b487\n52a84fea7c314f4c3dfc741b4df74043\nb481294a2692419cba5f6626ebfdf87f\n2aec6e6096e640add00d52e62bf14ee9\nff6e377e8e5b3757cc34b900bb2492e\nc0375c2ce28292d9a179137acc8d4437\nbd698089021a4a58e23abb9b807b4cb1\nbbd8e6b06d8906d5eccd82bb51193a7f\nb8ce3803485b620b2c674305897e1782\ne3dd7fd80f9e53be6ec2a8147a044691\n27e6fe140e6e668a3881254c11db28\ne41c5719ad09055f1b880c747ee1f83\n3d6a8f8c27e465aac6747f7c9ffe9e32\n80b8f4da6b77eb66d208f79049825a82\nf6e6bab105ab890080be894a49cc4571\n4129199695b9344930813b40bae6f4cd\n1d396e76ecfd973575ffe5b08493cffc\n20865546e07ab8067c597cd12d99981b\ne110c699f2ed6511b53a02c8ab03ad65\ne2ddbf9e63bbf9cc4e99bd46be8e610a\n5d1d88958bd1c9c573328938c756eb4b\ne02485f093835f45c1b64d86df61366a\nfc0097a6ad81e5cc1c2daaaceea98731\n35892510dcd7cebb87bf26680c510802\n4fe7bcbeccf207a5a2a2a57a63160d60\n804821516ddb3203c6747f7c9ffe9e32\naff5f5ac9dbabebee5d07633dda45110\nda1acb401541235be4d2773f0358b43b\nd45809b73a371efd185b376619557c95\nb509fbbe99df854f0478431b5ad57db\nf337580024e8c36da5cec7cc83604181\n3069d990d52051eb3a34c2907e8f3f1f\n3921f5f454c5733e96e161ce7a956a8\na6b09752263b1de2296d88107d065f6\n6b6cb0c71731aacc277d303e3a640f98\nf390b1b28b6dda03dc57b3e43c28d486\naf73d05ac86369bf4ce863ea27e2b897\n3b5b8a2384e8850d185b376619557c95\n52ca6970fb09b561f9f7510373841dd9\nd4cc520929730248642fa8402286a797\nb702e35f4a59e81f64801ad2940cdd5\n20150c9c3038d08419bf31399c6e39e0\n4bfa5d948d9ca7ab7c5f0032facde6fe\ne805054e6b9b3666fcfb100fed3ed97a\ne9704a563a5a0a3f5a4b8d382b9decda\ne138a98d82f3aa692142bc26f72ae44c\n7f0c20bc26b08a163e2ffe63fcfe09ec\ne3f68fbd5d1629e238976998fb731b88\n3a3827f1a76c5230e24527abcb488f31\nd96f2b6990d0d79e247412be0e58d7d4\n882b5868ee1382ab1608512333cae245\n3209a02075cb9f0168023bcf4ba60aff\na1db8dcb7f1fcdd597190b73ffeacc5f\n3a54f2b6f9b053b759b859405dee3be8\n2e3c317357ecb038543941eaaf04581f\n6481eb70eb9a58cfb2bb87688c5d2f58\nfb9deec3a422b06b609e2d916fa0da27\nbfd606459cace196e7ee2e25a3cfaa4d\n330f797ebbc565e71560e45167753555\nb153004c293d4b151f32208e53f871eb\n3f387e8586f92b6b7d3b11085e75c7ad\n9cbbede82cf4f7e463a33dad5001f8d7\nc5e999752db444eb91a464c5de1b632b\nd6d84d05892a4f492e7c68eb5d1b9123\n7b1d4aff088fa3736e0f3d76ecf4a53f\n8277c0294461b76e8405970680284869\nb2960c2be8fad9dac140e34b6af37a1d\nedd9583988b62c90328f15e6c60d0e90\n7f6af37cd64377e1cabcecce1c335df1\ned1d51ac367d0fa5f830b2dc9bf63133\n70ed0fe305145f60e53236e6f2fbeb94\n83778fc8ddde4a937d5bc8e1d7e1af86\ncf6fa8a054ed7bce5de04aad18bd94c3\ned50758d8792491314777db9411e4949\ned4aaf81dc577bedac4f72bf08dc79a6\nc271badfb6842c882fd5ed7e39258c7\n2b5c0a38c754927d21abaaa81d1a4195\n2087ba820bd70001243402995adcdc4f\n700bc5991a46c1d53ddab476a0f5c5ee\n14cd2f1de7f68bf3ab550998f901c8e1\nf9db62e6a88f0d7129343faf3bbffb15\n398ff83ba75191f050405f236096897d\ne15f4c98857b67e41e287f9f679ab620\na359cd0297d4e655a871065f9ebc6ac5\n6341436b6a9df0c6683651cbc8e49e4f\ne75ce21b914ba565b4c6d1a32dc4f554\n7ce599765d4c11fe87bf26680c510802\n8b4309aac2f7f6b3b97c9314bd4647d5\nf6ec20afe98e37ef6e2a24768a2fccc\n556d2b99469e62e623a346a784afd6ba\na7394a6f2dcf8e9b3cbb132878a747df\nc47954200b78fc32f677dde7945cba25\n261093138afff514d8d7812d176664b2\nff6ab0fe13f58e22962a5697e98a94be\na57802c776ba1b69e44b1dd0f956e84\ncbb5ed444249f0a9e90916c8815b5c43\n2dcc844fe9c4d4d99b0fce6a4905cf2b\n6420a3ff5e526d59e16519c843f95ce0\n61e8e8a7ea726a03c79f92df566f8c6b\nd6c655a7c97cab8e9f5f802084bd1d73\na828cbaf4b3bd253e163b5a191403a0f\nd883e6e5622a0cab72351dbf9e0687e0\n9436273fc1a5e3ca7af159eaf7625abf\n9c0431249dd5a50dfaf7f0ef9aa8fd9e\n15898fef6fec88c53ada73811bb576de\n902cc09a60a494a278d0cdddb0c08062\n43d8125d940bb2ae850f318836ee7512\n29192f8c96264e3435fc197bbabcd5bd\n2c64c521c114df40e51f766854841067\nb2ceeee3c5b75962ac4f72bf08dc79a6\n240fd3c1fd804ec1b8cf782e8c539948\n5e9129782c45b26992e39b8eae3e6b15\n1284eb71b82f6794207f77cc6c79e3d5\n958c54f8da7a1359cea2c06142ecb1b3\nd83300deab42c100eb9db4e832a6dd82\n1e155559446469112e690fa6dfd5d610\nece25d89898c7d9090b1d6deb98feec6\nb22014408721ec314567cadca15fe337\n166d333d38897d1513d521050081b441\n4cee36a2e8dd3b24b87697d3904b168b\n3fa511e1882e41eeca8607f540cc62ba\n48706d323b9041d5438a95791ca4064d\n8ac8c21b63ff535fca8607f540cc62ba\n7bad9d15c0f0d3c03554ccf8c30febe7\ne36ce61195489a56c8da6d3458daff84\n829108f586f9d0ac7f5c403400264eea\ned7e1a38fe33830b87697d3904b168b\n4875318127182dbd15aba2f83720a298\nd70d648947c65b1eca8607f540cc62ba\ncaf92880cf63690188a7f6dddc29eab\n9daa49ab2f97fc14d85e5191b992b560\nd16405b7a4300014ef5bed0139d3780c\ne06c2333068e9bd0755d33896264181d\n21827b0be78dd3e17dd9ca9e282b9209\n494a1698eb82572c3df325aac2f73830\n8c746468d3dcb6d3ff3a35e90542981d\nbc8c26902e912b851a53b454324fd345\ne726c8e6897130439a6e43b878d5b335\ne8de6c58f4a772d771d03b466c72ce41\n5ac00867c7d78b1690b1d6deb98feec6\n7c6a2879e359f505467f6b8c6b1d352f\nf1b9ff223b5a13719a6e43b878d5b335\n3feeb5f8ecbfcb4ba8f0518e94fcfb22\n13370c42b8ea45cf5e8172e6d9ae84ff\ne812f54386acd072d44f37c9e0fb10d0\n87348bdeb8bc74139ebd7d1067b13a\nbe080a797406422843afdb9c81ff2967\n37b1f7f02c4b87dbca8607f540cc62ba\n59f258b7aa7c1f7aa7d0c1e4eb8db7dc\n2176fa9f69e5e1dcca8607f540cc62ba\n971ef250f2d0cb389a6e43b878d5b335\n72aee7d0e998a68aca8607f540cc62ba\n7fedb48b457ee9f31629b98cc1b1b992\ne0058b4948f87d3b87697d3904b168b\nc0bb4f92d12f4504d65766fd3c4f994c\nbabf58c69501ae6b9b46c030f642fc41\n49660fd24e5c2fbab87697d3904b168b\n28d719b73b1fcd2f5de04aad18bd94c3\n123ba1ebe2ee533ef0c45eff2a917cc9\n25bd1569261bc545e8323edc0fe816a8\n8add45a11c9fcb446eb5821e78d8898a\n57f1dfb095bbe82cafc7bdb2f8d1ea84\nea9eece7f2c45a2a82e4c37374fbdce\na00c0bdf007689619ebe905ef4009f84\n86b11ae736659136ca8607f540cc62ba\n54e926e12382808b66cf1b4a8fc3914e\n1678946724380812de689e373096b0e3\n90769434f2b588c1b675ec196a869fe5\nd0614abb68caa5ddac7f1a00b76bd166\n917694a71164f2148e8405d6c51a908\nd74767519393a937f73e5bc170b7e2be\n4008286f2fe8b6a97c44cd1ce3d402d0\n66ae19841350ac2d4ba2821676102936\nbc7ead8b45952ab8822054a0a020bf4a\n508fa09e7df177e7fee8021c81c84603\n44c0cb6571f6f000ca8607f540cc62ba\nd63daa9d1fd2ff5d575bf8a4b14be4f4\n7385f1416e93f1c14ba2821676102936\n757c47e20a37647431e38f024b7ad042\n934dd5529c22cd05bc0909d98a1ff2b4\ne25e3dc95243a92c59bcb260e54d3785\nf009f3112625ee00b8cf782e8c539948\nd59bb0ad79371634f3d7c71ae132007d\na2712db5540766cdf6a602e459585636\nc494f446954523a8a32748a9f843a0bf\ne59c4f290d8585a862b600da24e0965\n167250e2014c72dbb87697d3904b168b\n118e8142a8cb1fe19a4a28ef635593ce\nbefcb95d80e0e49119ba010ddb4974fe\nde5807cb73bcbbf18587e940b916a22f\n452c18f8997c53741adbb4c4e06ad649\n1e2de00cf19a0a33554ccf8c30febe7\n959f28c6724979ef9a6e43b878d5b335\nca11efc8928c10908b96ae1a0a8b84ec\nf46df635ac669a9818b14db3b83de9ff\nfd9f1cdaa381599bca8607f540cc62ba\n692797a818b4630f1aa3e317da5a1267\nd81042a53dd1cc5bd90bfc986bc4c94d\n130422d62194cf026c8067e570d6af71\n9fb60716f0f5a2b84408eb298433d643\nc9be9f07f5ae7c375d7629390efe0a2\nc1b5fd196374203d772a4b403daac29b\n123bd9e948881939c38a1d3458dafa1b\nf7110ecac70994a83820d8f180caa23a\n18e6f319062ccb49ca8607f540cc62ba\nc6e4d12318bc4a3b262daac8a0882e96\n319cf93077118d19f64801ad2940cdd5\n26e10058cf9835aaca8607f540cc62ba\nedc185566c1df89c35fc197bbabcd5bd\n5fb64e3fc0abe449ca8607f540cc62ba\nf7739764eb1c78a053f370d353cea84\n4ee48907120e261c3df16180af9974ee\n265f5348ab2320b2148672750a1a335\n2066f1830765183544bb6b89d63deb6f\n1e9ef313876bfba7d02c6d35cc802839\na7a0e7eddf4ffb8c19378fd691582500\nfddcb2b3d45ce98e641c309f1fd7e183\n4bdb2c4fc6701174ca8607f540cc62ba\na1848a4a69b14704ca8607f540cc62ba\n4cdd238ccf9002344f59c2a67aa8473b\nd7a2512d9d8ad4c8a18e0889038e4fb6\ncaf80ecbad22a7384e1799d9d4d697c3\n2229bc4e646f506679f56e78e8640bfb\nf31be358cb57dffffe198fc7b510f52f\nfcfa1a67f34e7f2fbb3974ea29d1d642\n75d162523d703917b87697d3904b168b\n6a75658fb8242b9c590874dcd9dc8481\n144070f63941362bd1810447902e2904\n77ee6ccca238ceec5144962e2c20b832\nd615a8217b70af06bc0909d98a1ff2b4\n85cf5445f44a49f5cf35fd096a07bc43\n94ce3a5ad2576e73a5cac89017eae8d1\n77c9fd0f0c6b0e9fca8607f540cc62ba\nc4111dbb21e1f17043afdb9c81ff2967\n23eed87ac79f1b152f9c405cf0817830\ne3fd510add7b1aa3c19eb6ab3736de88\n6f72a0d86494b551a834b9c8bfc8647a\n2c49289098e4492bca8607f540cc62ba\n9b1fc3881a5335cb44012f72ba1e15a8\n560b4af718f67902ac4f72bf08dc79a6\ne283e3825d66a985b87697d3904b168b\nc581942f40cbb60819ba010ddb4974fe\n9b687f9cff46d43d89c2da356f872ebc\nb812c2df636aa0218b96ae1a0a8b84ec\n4a11239139c5f81762b600da24e0965\nae4a9574248395b671d03b466c72ce41\necbb6df185a7b260760d31bf9510e4b7\n59b8d36b0f96aa5cca649c0959202cf\n3b82e575165383903c83f6e156ad107a\n8341ff3b44ed2e30473f10e6caaeca56\n345570c792fde290d49cdf0198aeb01e\nd3d788c1fb35227619ba010ddb4974fe\n92fb0d6a866fe7aca8607f540cc62ba\n75db11c354c6342aad01ec966c80ac91\n3a6d6534045b1895e8ed194c80e0b1ef\ncc60baa1a796f5c14c3a35cee92bb95b\n7de379891610f5feaf7dd1bfd65143a9\naebc4c46b3cb7c3bca8607f540cc62ba\ne9bae38bc2083d0bb4d73e4449062b04\n422105cd23178ebf333c61abffc4e1c4\nfd67c89ff247f9e7442ed26ceeb35a60\nf04fbc2423b13da170832200321e72bc\n37fbd275a734ec1b66cf1b4a8fc3914e\n8ff8f3c845e7ae8443afdb9c81ff2967\n975c00ab85218a05430355e13bc86b4e\n19ff8fce1658f864ca8607f540cc62ba\na0d63ee7fd87f93619ba010ddb4974fe\n8f40518bd30467151e5ae32cb9e3711f\ned738ba28cd73714bb0f4bdf8821663a\n6d93492543d1087eb87697d3904b168b\n6aeae52e38f892a7e0091ae06332b2d5\n576edc1da4e3fb47b627754c4259e985\nf95d8e86feb79b17cbebff57eecf0a64\n3cab1ffcff8b84cbcad035c2ab458\n2e389edb9a3c0496e1c255da0d1c1826\n8d5c3d38de9c3685f2e77d54f4da142\nf26ea1a00455f44fb88e2a19106395c2\nc5d748c352d8eeeb3d4e343a1ac21b93\n91d3479f5da120a9b4d73e4449062b04\n8b61ba80d9e487deca8607f540cc62ba\n4a552066ae1da546cc34b900bb2492e\ne00b89bc338348caa42c49797afd1f5c\n29fd29045703ff18b4a8b7176ed97248\nd13d131a649c5df38b96ae1a0a8b84ec\n4761e30dcb30471cf7d5cc24ec79e682\n6ea21a2265075beb9a2f7b9a6f4f875f\nfff513f407e00e85a9ced22d91ad7027\n618b433a97bc23acb1f09c4591ed2db9\ne954dc13308e6756308fc4195afc19d3\n9321ab235b82ca268c9bdb0f364cdad\nadeb5d68e8d65cc419ba010ddb4974fe\n329987191cce68bfe64acd170567d820\n5a1d4af1f417d28566cf1b4a8fc3914e\n52764ef0877372245ddb9958cad651ae\nf110a2ce31dee1b3c16ef5c633c71b56\neb658ff31f0becea1d0f8853f6d023e3\n74cbf170c5f2fb587d9c9c8a8ba32919\n81e6b629264dad5daf2c6c19cc41708a\n9d06f4ff9f1e7932941d71475449eb25\nf1295a30fd857249224c86fc0bbbbedc\ndd9c0622e873de43c752b66cc923fdb\n4374a3b4b98e247b398db3ebdf468ed7\nebd991666f177f8f575bf8a4b14be4f4\nce339f515469303979e13964f05c24f9\nc9a6dcf87d1f15bca8607f540cc62ba\n3fb7ceab42d7b17219ba010ddb4974fe\ne5610bbacaf098508b96ae1a0a8b84ec\n32e7224d196e5866bd564bd76cf3cbec\nd75a4d4d25863f5062747c704d78d4f8\ne16f9cc7dedcacdb9b0435532743fd43\n9818f0b88fed05b24b0a1bcf2fb497ec\n310f0957ae1436d88025a4ffa6c0c22b\nff7c22a964a5a54e3bb4b8f3758b3c41\n97bc5fffde64178f43afdb9c81ff2967\n32edb6ba5788dc12d8ff6111270336a9\nb0b164107a27986961f6e1cef6b8e434\n36a5bd4ca6a0b191532d23702363f9a5\n7442ad61d59fac8c7372dc0a2f1067b1\n916950e40ca7aabc8b96ae1a0a8b84ec\n384e72f69e6f24404cb288947cda4a2c\nd59d75f52ac9b241ae0d772a1c85134a\nfb402a36e91ab1b44e7761521d3c6953\n49917fb82beca4beca8607f540cc62ba\n4d6ec762d1583ded46555ee25941a22e\nff554f038a338ef322031be9b666aa96\n3265b621ca222d29d00d52e62bf14ee9\n1354e0acd354a3ddb6670e1d7042072b\n820ba20e5da8325f19ba010ddb4974fe\nd5f01e2aa54bbf28ca8607f540cc62ba\n64cb683afd5e9e559db1d21b460eacef\n3ab1e94b6c3a1730c56cc5a87f567365\nd8452d4fe51f2bab3554ccf8c30febe7\ncfb555a4d82a600aca8607f540cc62ba\n4f9b12d07dce21ac9d93a50cb0355558\ncd6a3584c3da1db4abcfca680e6d54ff\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/02691156_train.lst",
    "content": "a98038807a61926abce962d6c4b37336\n25ae9c70ded5640ac2a9d7232db0ed61\n89b6f678789287a3d3128304aa2279ec\n36d2cda57906072c1e08b6601b6fd998\nca91becbfaf5a094bba1aa1c98256342\ne8b4bac72559c097e8f5e45871fbc77c\nee562cc82d73ab212135f3a0e614f115\n3fb3fa76a2e67bae71d03b466c72ce41\nc6bcec892954942a83855ba2afe73b0b\n9550774ad1c19b24a5a118bd15e6e34f\n5763ed16cc79ce63dc0a4f5bab755bb6\ne380f6fa720e1c15560a4691498bd2fc\n351e24a503c49840cc0472b5df09bf08\nccf4e9c074c3395c26360e1e29a956c7\nf1b407dd7f610bb1a266a0298675ed53\n7b3bd63ff099f5b062b600da24e0965\na5639c976e677ce6e719b5362fe06bbb\n73f6ccf1468de18d381fd507da445af6\nb71bd3c61315abf9ad8a06dbee1d115\n8c2f2570e178823562b600da24e0965\n22831bc32bd744d3f06dea205edf9704\nb1f40266ad9da400d90bfc986bc4c94d\n9a3b5fa35243504124f575085333a65b\n8d847b813fa70470bc0909d98a1ff2b4\n98988dc4e5c62dfbc0909d98a1ff2b4\n88883a7ad39baf47bd46d022fd7d80aa\n4ea714b785e24f0d9a6e43b878d5b335\nc64e43e18b01fb5eca8607f540cc62ba\nb6fb57668129c4cd4c11ffe5517eef5a\nc85a76404b85d94e62b600da24e0965\n5b86cf0b988987c9fca1f1143bb6bc17\ne777a6a46ae240a7bd46d022fd7d80aa\n36dd57178402cdf2afd477f714c68df9\nfc9f6bc1ba1cb7c1c3fe7930fce05ded\nca6e0a1d5cfee53a8cbc4ababb61ad1\nade0163327c8c7f5847335355bf4459e\n1f08b579e153b2de313f9af5275b7c70\nda5fda29d2415fb09d92b4de623f5639\nc9ba5885f6ffc835a8cba409c4409ba9\nff2f975a23b78bc78caa71b1fbf7fb98\n4ee6a3030995dcd4bc0909d98a1ff2b4\n5d925e4748bb4ad155050237670e0ad2\n895e49f92ff5003032611f2edb791b8c\nfc5ca618ae253663d13ef00338ba8c52\n6fdf55a7ca1e64ff7d7b38cb4a2969ae\n4d885cb269ae88ccbc40166c69b12cc6\n24bbc1f5225969fb90b1d6deb98feec6\nbdcc8077771968d67c54439d6177032\n71bb720c33da689090b1d6deb98feec6\n91e3ab3e12059b4a9d92b4de623f5639\n7855e8ac604ae162bbf3143b1cb6076a\n2d43c1430df8194ace5721ccacba16\n9259906152f9d885a8cba409c4409ba9\na2f0c1bdfe1475bdc1a897657d9a1924\nb90571e8736a296c549b705aa127253d\n70ae0521d5ca428d7b3d3cfb30f2513e\naa0b34d9bc5b77e0d86ebdaa02a63c4b\n96291ea39a5c6eda203936772104a82d\n36ce6d61721805abbf3143b1cb6076a\n4ee420a617a2bb40bd4fd4a5b9107dc4\n498ea154c08d51abc863ab010b80d9ed\nb237bc484545cb46d8f63fb451ae8aba\nd2815b419e61dbb0b87697d3904b168b\n7b9bb6e42aa2191b58a458f7911d7423\na69edb40dbc1fc6c66cf1b4a8fc3914e\n2705c3edd082f0987f1f82f6fc8747b8\na153353168cd47869a6e43b878d5b335\n1c4b8662938adf41da2b0f839aba40f9\n827c877ebc70fd01faaf13445ab19dca\n96600318559071d48caa71b1fbf7fb98\ne00d7bd590ac129bbc0909d98a1ff2b4\n6e65a6f2b81fdea2282e76ed8cc73a69\ne0a8ae255ed47518a847e990b54bf80c\n7bd43965f17c25377209009cfb89d4bd\n66cd9502b63e8a97bbf3143b1cb6076a\nb4dbf6f6b0cc8ec5ce19d55bc5e6a406\na6b9d686a7b977035bae66e2c509821b\n256626ea73837e032625b83fa7422e2b\nf3cc7d5c4089b842df6e254b0245ddcb\n463834c3aa682c281883411175051361\ndba3ab64bab4ed3ed13ef00338ba8c52\nd221f607d5b5c553faac198e88c3dbb7\na4462b31326da9493ea703383c665f30\n2c89cc6eb008eaf5ca8607f540cc62ba\ncfd42bf49322e79d8deb28944f3f72ef\n62bd247f0e8081a171d03b466c72ce41\n89b42bde2332e5c067c5e3041553656b\nd28a3cd771b2bf1e71d03b466c72ce41\n6fd578ff0ad4f6e8203936772104a82d\nd2e99eeecebf0c77bd46d022fd7d80aa\nc18b1ed6e935b11bca8607f540cc62ba\n76b492b77a03882d431e5b4ad135fb8\n9dbc0aba1311e7b8663e90eaf6b4ca52\n151550551758af098b96ae1a0a8b84ec\n24968851e483feb237678474be485ca\n471f072ea9d51f639d92b4de623f5639\n98dd57d068c8de064c3a35cee92bb95b\n69121d9daf6d569fb96212c8f6cd06e\n56c79a936f57ef3f7b164268a44f7712\nb2c69aa6c8d78b59f119374ee5d5f944\n816f1a18692bca2abc0909d98a1ff2b4\n4fd9c86e43a1dea17209009cfb89d4bd\ncc23974115a8de15d13ef00338ba8c52\n69a7b9b7265a70f1a9b2becd26dc2fc1\na1784ead19fb7645b6dd6448cb8a70ee\ne2116e0b34db656dfca1f1143bb6bc17\n2c83e01a7a4423c74d4cb1c2a5e48b7a\n9e57a7d6a7f488dfbd46d022fd7d80aa\neb60d49fd5cdb809e6a2524c335c48f9\nd24e6c81b5261fe5ca2bd098b9203af\nbbd1b96d77b8dc08b96212c8f6cd06e\nbb7c6c397143f72fe0cfe7507a46f0c\n366b149545ba4df546ed10e8f7fe336e\n48a36df204cb05dde7fc8cd567dee096\n73934196c92ce472f4a5531fe6556d72\nf11d14402a759a1465f50257ecdfa5c7\ned95d9219432bbdbbf3143b1cb6076a\nd7e8b636d4a7dab67e697b0700f10b81\n6ba642ca477a73db4c3a35cee92bb95b\n54c13e95f07492a9e10e757961deca98\n5274742871cef1aca8cba409c4409ba9\nb522108c4c08430a71d03b466c72ce41\n34c669182c8c9a2623fc69eefd95e6d3\n3e0e8b37400e290125b57604d8b9519f\n1d269dbde96f067966cf1b4a8fc3914e\nfc6decc887f6d8a0bbf3143b1cb6076a\n5ad5fbe84d7d8ef790b1d6deb98feec6\nebedcd06f1770cd4bbf3143b1cb6076a\n875c4b43e35b6803a85b9ef94e886600\nc0edd36fbf8d63fa35fc197bbabcd5bd\n4385e4300e72e49e90b1d6deb98feec6\nd34eba7c2ce4db53adecb6fc00604132\n803fd1bf9b85da0aa79201593c1eb4b0\nb738666a0403a7fa6818e4a1f2613507\n4a9d28a5f272853fbbf3143b1cb6076a\ne4ac77fdf28116232fa725d7a62a02a\n52712e1c07ea494419ba010ddb4974fe\n31b75f20c64b03ff6b7bd17e458d0dcb\n26048b00f9227a9f8699933784576e73\n1c27d282735f81211063b9885ddcbb1\n43ddfbedbd6721fa828204947d78b9af\n5c7ef3d5de5ca9a1ca8607f540cc62ba\n5bd21df38ef89239ba4ae55719e5e195\nafa65aa66f7ca040873ec74c119307b9\nbf93f4dc64eff22b4d4cb1c2a5e48b7a\n5bdef9dfed852e26195688f8ce8acdb7\na487d7527a0d0c2076b0a025d05432d\nd1df81e184c71e0f26360e1e29a956c7\ncdccbb56939fcdafa266a0298675ed53\ne841e17e3256acf38699933784576e73\na3bafea9edc457463da2ae40e7681e7e\n3e5aa51d27e294a835fc197bbabcd5bd\n1667ab313638fb366cf1b4a8fc3914e\ndbee200cebd464779b0ed23034a67f7f\nfd528602cbde6f11bbf3143b1cb6076a\nc12362906beecc796059aeb39e538eb2\ncfc075c635df8a7a94b9c9a92aa36f8c\ne413c15ded9ba57a23fc69eefd95e6d3\nd21c556af88582754c3a35cee92bb95b\na36d00e2f7414043f2b0736dd4d8afe0\n4e67529b0ca7bd4fb3f2b01de37c0b29\n9873e280d91107fe9a55c6af6f4b2bb3\n9d7e431ebd35cdc2bd46d022fd7d80aa\n201e40e86acd7d34f4c1adce71073351\nb9e6298004d7d422bd46d022fd7d80aa\ndc8d9003cde43b66c8727b27ee96a4b7\n4209abb3ec319f85e5118a089c2a99af\n6db040a8d5c1d5c14d210d9468aedaf2\na2de53a5de7ea01dd01b5600c06c528d\n7f2d03635180db2137678474be485ca\n596cddf6fbdc9d6b96212c8f6cd06e\nb58058567bfe6976b30e3fbc7205ab54\nc1aa42594ad2d80e4c3a35cee92bb95b\n67d9607d84fb51435fc197bbabcd5bd\n91f8e08144218e2d23fc69eefd95e6d3\nc27b08dad98f802488a89a28f04ce622\ne523ba4e79a48d31bd46d022fd7d80aa\n41abfb4a9e8071754a40844f179aeca9\n9f7d4125c4b705208b96ae1a0a8b84ec\n98b163efbbdf20c898dc7d57268f30d4\nbd2a375de8c7374195adb59fcbb6489e\n3f6c0034bb278de4f446f92b52bbd82a\ne005d8b297850d483a99ba0078ef7bd1\n48e47a6e592cf635590b4d838791a67a\ndf990580230f0254d21176457f0be3a\n117861b9ebca4f17c69cb28fb4b4d257\n24db19ddb06fcd3f9a6e43b878d5b335\n9fe677b21938f6bfcc14f1e6f4f4f49b\n8b65813c6ab0c972ca2bd098b9203af\n5466493424ca47bbfca1f1143bb6bc17\n91f3ccba290da90671d03b466c72ce41\n124a579e0635b8eace19d55bc5e6a406\nb95510fb88096a208fc2d09ac4aa4e78\nf186d2998485c6ed5e9e2656aff7dd5b\nb82731071bd39b66e4c15ad8a2edd2e\n7cdbe41e6701c661bc0909d98a1ff2b4\nd068bfa97f8407e423fc69eefd95e6d3\nf0065f4f9e20d604521546825315c695\nb3c7044fcd6f15c24b0a1bcf2fb497ec\n9baf5b31d70e0d05e98d814cc4d9c5e3\n58d23c8bf0902cc590b1d6deb98feec6\nc1d8614b0e5e3f3bf5a498db2fc1d347\nc12d132ade345228d75cdfed9b20c6e7\n1e9acb74ad09ba97192ddbe75f0b85fe\n448b45ac858784e9b020e22bd5fe2e73\nc4ed630f9c0f728090b1d6deb98feec6\n299ec43108d7109113ae47e860a2333a\n9e617d72fabc718b90b1d6deb98feec6\n1fc2625479e798b11944f01d3ab2091b\n2ce94527ad7f57333bfdfb6cb363d727\nf0bd0660d9cec23cf2b0736dd4d8afe0\nad9059778f3e34ed4c3a35cee92bb95b\nb151573056013eaf71d03b466c72ce41\nde543fb92592aa48236a74f773a58aa\nb788ca6fc544c0aff3f3e17ace8695b\n376466b562217c2abc0909d98a1ff2b4\n157a81baeb10914566cf1b4a8fc3914e\n7e10d8f0457cb48219ba010ddb4974fe\nbf78d2e27a671fce4d4cb1c2a5e48b7a\nd84bb293898861ed9b2acbfd8323f804\ndbd74d18fa992eee7f1f82f6fc8747b8\nb53ea9af10f2a151bc0909d98a1ff2b4\n24c2cc372c63603137678474be485ca\n52747021197c7eeeb1a0518c224975f\n4bae467a3dad502b90b1d6deb98feec6\n79784107e5be61a562347b4731688b0f\n3e7e119508f0abf935fc197bbabcd5bd\nf7bf32d3aecd197360c9b6e4c75a092a\n8ce12b6b3b451b8ad0671652a4c42f7b\nd220ffb04a5ff31abd46d022fd7d80aa\ncf13bbe558f37bab4c3a35cee92bb95b\n75916f78e72f90984b70ddbaea6e513\n639d85cb4487bb0e3c326782eb2d380e\n9b285862ababfc3a68222c7df7dc40f1\ncdb17eb7b14c83f225e27d5227712286\n8f33d2c0c08befe48caa71b1fbf7fb98\n5785c8651893ca6b7209009cfb89d4bd\n1e4bb798f236f0b17f1f82f6fc8747b8\ne9dcdcd8963ba18f42bc0eea174f82b\neac05be6e7f3bfa99a6e43b878d5b335\n37cbf91baa58d6577dc01d89d8a05b74\na9e6abca0f6bf69416ee5e3e330ec691\n884adbb15fcb934051279f7b42f4d889\ndc7a703f94b3b17667c5e3041553656b\nd5ad529ad399086e4e9a6f7cd468e49d\nb87185699318f4b635fc197bbabcd5bd\n4710274bd87b099f19cd118ab9f114a4\nd6cc7ffd165de05e2e2de556c136fbc8\n5c8b6d47313dae4fca1f1143bb6bc17\na7d29332d98b7b8340a4a448803b06f7\nbe11ce096084bd784f95630cc18536e0\n617993bd3425d570ca2bd098b9203af\nce1d767436d9b289e8ac6b4e1f12f978\ndfa5d6ed898152d34210bb5f1b1324bb\n7b7ebc856120f97a1944f01d3ab2091b\ndd5310819d4f16d7b9fc567905a4b292\nf40fe7461dc4e3396b7bd17e458d0dcb\n4542b5cf23a95691ca8607f540cc62ba\n398fc0e717b0cd524c3a35cee92bb95b\nbd22bcf18a9c8163adecb6fc00604132\nc9063c31d7b42fa564ed556128c71bda\nc69c73793f459a2c3d4b1f38e3dfce4b\ncbc73e8bc866ecacf7f795409cb230c2\nc7e74cb0f2dcef904abea106683105f\n4cb1c851d4333d1c4c3a35cee92bb95b\n6ea7eb1ef18eabcf8699933784576e73\ndeefcd290f7f2f1a79201593c1eb4b0\n2988a7a566ea79797209009cfb89d4bd\ndfed744828fceb4d28cd0e56fe42c08\n7d19ed245331582c3fe7930fce05ded\n362af793b1d0084423fc69eefd95e6d3\ne9f39176973edd33a8cba409c4409ba9\n71ddef945e2ae8de7d64cad20089f027\n2bdf8800514abd05a7d2c4e7aae73d33\nd51bd83c27fc3167ba4ae55719e5e195\nfb2204e98090448ebbf3143b1cb6076a\n823de294a08784fc879e4d613e8d4e33\n3c1e298b4222f4d15d3bbd70fc7759b7\n7bd76c17b7194d571aa9d8d95b6740cc\na053f49d808b7b36c8db97d9bc169245\nd64caea6c332861bcc14f1e6f4f4f49b\n4eced94670d10b35e856faf938562bd0\na1c3287d5e847f866b7bd17e458d0dcb\n388c9b9f1cf24ff84e61a0c2eaaabe87\n5d6334ae2a0dbf70bd46d022fd7d80aa\n10e4331c34d610dacc14f1e6f4f4f49b\n92cf58c641a4e5af56a793e48de27b07\n3391c664149308cb4f95630cc18536e0\n20aec82ef5f61b0bbd46d022fd7d80aa\n62a72a5afc84ed54faa7ec7d870d2e09\nacb99bd964b1b23ad13ef00338ba8c52\n535dad1777edb67bbc0909d98a1ff2b4\n707cc578bfec0f671aa9d8d95b6740cc\ncccf4d96e0e3d728c93b40751084c22\nfc7c3ccb57f65337209009cfb89d4bd\na51d836a9349b2a1f42bc0eea174f82b\n66493aa4ae7dbe40b6b87e72ead132ed\n18f5265d553d72fb6b7bd17e458d0dcb\n7d89d64afbb5b24056dd1ba442ba87e2\n4f9a01d66d1de632f810506e9ae2dcc2\nc80e8a74a31c6156bac66f0bb664359f\n3d6b9ea0f212e93f26360e1e29a956c7\n78551e5fc01df70f77fd7318510b8627\n2a05d684eeb9c1cfae2ca9bb680dd18b\n62fa636e217a3db25a70c4e5328e0b9f\nb2235fbc13fc2ae0bbf3143b1cb6076a\nd281db2c631c0170991ade27bbcf967d\n54f0d46b866c1f714d4cb1c2a5e48b7a\nd3580448933d00fd90b1d6deb98feec6\n8504e370736b26604d210d9468aedaf2\n1930a979c7a9a2d662b600da24e0965\nde776175878f17d1f4c1adce71073351\ncf93f33b52900c64bbf3143b1cb6076a\n1c673748703c99207f1f82f6fc8747b8\ncb5fe2eaa25b2518afd477f714c68df9\nffccda82ecc0d0f71740529c616cd4c7\na1ca5014ee1048081e06124bec25a766\nd919249737749c36417568af9ae9577f\n642e481ed56874eb19ba010ddb4974fe\n420f92d84c88244b9a6e43b878d5b335\ncb8fb401a278fc36bbf3143b1cb6076a\n2d4c147d4d1cc40c582bf3113c3974ef\n63dda61ab3ccc4304a3b534252984039\n2103dcb213151791acf77e718d93f3e1\nb1696ffd98c753ccea88a0a7eb1222bb\n14d6bbabad3ad00dbbf3143b1cb6076a\n45a4b43dc4c77dea6818e4a1f2613507\n14bf5197d60d733f2a3ecc4a9713cabb\n8682729ee0259ceaca8607f540cc62ba\n82cd0676627c20b0879eac31511e27a8\nab0ab979406ed687a8e091cb544689d5\n1385305478499e6c1e06124bec25a766\na99ffd1b1fd121bcf2b0736dd4d8afe0\neb43db95d804f40d66cf1b4a8fc3914e\nd9f90f110ce30fbbadecb6fc00604132\n77ab8bb69221b13bbc0909d98a1ff2b4\n251313501093a024599faef54fd54e83\n1896f1f8724aff33b7ea0a7ab024f81e\nddf0e3053cb1ca8f5e9e2656aff7dd5b\nf2f779b4f12ea6d67209009cfb89d4bd\nfad346b02d91348bbbf3143b1cb6076a\n3dc5331ce579b2d0d8ff6111270336a9\n68ff153952368948b4eba5f9f157d8c8\nd07277bc3c95a365bd46d022fd7d80aa\nc7b1ae292fb3d011511e2f9385a386db\n446327ea5e2e50aebbf3143b1cb6076a\na50b4b0ac82a67d0bbb9a486df472172\n12b25b8de7aa37a0bd46d022fd7d80aa\ndeb9d02cd1eda25270c4138179d9ed97\n8d5ecf095e56cf8cca8607f540cc62ba\n7c67e8cce3f3eb3c89ba278a735b3c5a\ne0bb0ddf67462f4a8b686f76be476fe0\n999539f6290b7072ca2bd098b9203af\nd639c8d2f55982558b96ae1a0a8b84ec\n64211a5d22e8ffad7209009cfb89d4bd\nd6b4ad58a49bb80cd13ef00338ba8c52\nebda573deda43034f2b0736dd4d8afe0\n8fc553e3a88b7ad54e461d462a3ccbc4\n6693d4bd6edce2a7fd3f94e9ae089f96\n131db4a650873babad3ab188d086d4db\n45985e48353c65cfd14a90435b48593\n110f6dbf0e6216e9f9a63e9a8c332e52\n2c9d5fed0ebb4a544c3a35cee92bb95b\n47bf091a7c919d1c90b1d6deb98feec6\nb63f7eb03f91f8a7de04805f7d685d\n5f8fa607106199e7bd46d022fd7d80aa\n41d4250764619ff5bbf3143b1cb6076a\nf0b22be59432dc8bca8607f540cc62ba\n7bb1d2f8be9593b3cc14f1e6f4f4f49b\na6693555a4c0bd47434e905131c8d6c6\n154146362c18b3c447fdda991f503a6b\n688f4e273beef132f0daafcf2996daaa\n3cdb3a166a13e44dafd477f714c68df9\ne127b1f5ead603f9a5a118bd15e6e34f\n329a018e131ece70f23c3116d040903f\n4542d34685168ecf7a571401e6605fc2\n8e47730a471abb7f43afdb9c81ff2967\nb0fb094d1f0fc2a6766c6046535346e7\nc8143c3384690147d13ef00338ba8c52\n20bf5bba045e5a53fdd77aff53f4b7ba\n7e52ac52a2eb74ac26360e1e29a956c7\nc1e6d2235406d250e9ca68dea406967d\ne501a0327ab3731d0f859db45b95a2d\nd3dcf83f03c7ad2bbc0909d98a1ff2b4\n9a3cb94af2f2a5b826360e1e29a956c7\nf4b734236ec678d269e10d525d6df27\n2495267afeb60584c3a35cee92bb95b\ndd465efdee6a57e966cf1b4a8fc3914e\na9545fac33430c6062347b4731688b0f\nf6f2905883c49d179e0d0faf84afc607\n45c4867cd4554e7cc863ab010b80d9ed\n47821cd2309d5a3990b1d6deb98feec6\n7ae99c0cc14cdd97408827f71d73e45a\nc8ea73dddcd80d901b1cc145b0144991\n4100df683795dfa1f95dfd5eb5f06d19\na8471560d4dd5a31ebc34aaab30ca460\nae8073beb28788809f576466d21c96ff\n37d2da0de056f5045bb2b764fed1d166\n4a15b999378e1831dee83316225be271\n7934ca36e240e91d5e9e2656aff7dd5b\nb41f477cd3c6843094b9c9a92aa36f8c\nb19927db257219bb26360e1e29a956c7\n78a94b8bd2971595ca8607f540cc62ba\n6f0ad1fb7917fd9b50577cf04f3bf74a\nc5e04f903e3472c31883411175051361\n5dbe5dd200fc214951971f8370d9050\n1580c09f49bb438a7209009cfb89d4bd\n3572e3fa25911295922e63c830b776de\n6c87f8378066f8f171d03b466c72ce41\nac76572656c1e36ea79176d3c96ca1af\nab399dca637174fb9a4a28ef635593ce\n6705821a6b32fb3eca8607f540cc62ba\nda58b3e055132c9f6afab9f956f15ea\n880715a3ef69f47e62b600da24e0965\na6aa2281ebfd822e9b2acbfd8323f804\n863742f8e07f52ba4c3a35cee92bb95b\nfe0eb72a9fb21dd62b600da24e0965\n83cb2b58d88c0ae3f4fc64fb3aaf41d7\n3881241b81d379644d4cb1c2a5e48b7a\n304c2daaf96c79138cdbee8c4dbbdd7c\n513c955bb46d739683651cbc8e49e4f\n33fff5b8d113cca41b950a59358e57bd\nbaa972f48cde1dc290baeef8ba5b93e5\nce0c461237a21cefdb22b838c125a50b\ndd9e42969d34463aca8607f540cc62ba\nffc1b82bec23a50995b8d6bdd18d56e8\n81b67bd14fbcacefd67fc01cbf5eb7c4\n29f514bdcf72e779bbf3143b1cb6076a\n8d54e30dea0e2508bbf3143b1cb6076a\ne899c19c87245ac94c3a35cee92bb95b\ne161df613fc808b0d7ec54df5db5828c\nafc2efb530e899634d4cb1c2a5e48b7a\nb55748e796006e18b3f627c3cfda6efb\ne2612c366bd11e305e9e2656aff7dd5b\nd22521d217d89f8d5b1bb801ea1e2db7\n758b67f9af18602715aa5b227c027ee0\n19604020a86ab1790b1d6deb98feec6\n95a79d9ea571592bc3e5025cb598f546\n2117484d4ad547ae719b5362fe06bbb\ncf96229978efbb488b96ae1a0a8b84ec\n39ce355324ab4bc8b96ae1a0a8b84ec\ndbab9feed7e936cfa87372b03d6dc78b\nac0234f2b9f195e3cc1281a5f11b5a5b\n66a32714d2344d1bf52a658ce0ec2c1\n735466165c04f71f62b600da24e0965\n58e967e02a183d49bc0909d98a1ff2b4\n2e9c1c3d866c4b6ce2c6d8aa34a5d35b\n6c8275f09052bf66ca8607f540cc62ba\nd39075b8eb890a898deb28944f3f72ef\n94dffe91af2c8834fca1f1143bb6bc17\n3aa98ec8f8a1c1f44d210d9468aedaf2\n8da50272a54dee98d972c9dd75ed77d4\nf59470cae839ba0e9b2acbfd8323f804\n8af46946b9b2b3aacf0820a704ed425d\n6ad44d7abe7492b7d89ea85a4a66c0f9\ne9c78deefc2950be62b600da24e0965\n59209cb5ba7a34633e1e5609a53c0477\ne08402fb1e5953a2a93f0f952e72609\n3a72adcf14ccec9965f50257ecdfa5c7\n273e90f5c26654ea8b96ae1a0a8b84ec\n6110cd7e771f0ab3a847e990b54bf80c\n912219c657177b17774a720fca15e35b\n1066b65c30d153e04c3a35cee92bb95b\n79e924263f903feb35fc197bbabcd5bd\n68b5cf1b10331dfa77c1f99ed297e3ca\nea6ccb2dfb61484caaa29616be3e223b\n74797de431f83991bc0909d98a1ff2b4\n112ca5420188df4bd90bfc986bc4c94d\nb273c9007d1e364fca8607f540cc62ba\n9e8f908bc6c822ae3f6fe63822cb343c\nca88882d06ee5468c34c40f49da8010e\n9705e3c2d21106ced7f23cd024f22c12\n6cf5d850b55bc9f990b1d6deb98feec6\nf04b62deb7737c86d37636af9c7bcc34\ne712867dc4c1a4a6d016d0153a25a372\nbfa52c24ed71614f48a7b7802dc31138\n5011e352793d063f26360e1e29a956c7\n94d3a666d2dbc4385ff3feb917a6004b\n5e7952b2d1a495f24c3a35cee92bb95b\n73bef2b9747edffb8b96ae1a0a8b84ec\nc330992ccc6154d82b6925c3587009fe\n9d3eb87e69fba56890b1d6deb98feec6\na75977cd75acf0f05ff3feb917a6004b\nd1cdd239dcbfd018bbf3143b1cb6076a\n95fe3a31e4c084a128132d87f74ffe13\ned73e946a138f3cfbc0909d98a1ff2b4\nf9d30b24d9651ee476c772fd813166d\nb4e9ebb75081f146f6babb7d9ead7011\nf57caba2eed21f2998459325335edae9\n3a5aa99b9e9e37a6bbf3143b1cb6076a\n63c78352b218c01a995425f067333fd3\n9483e1b0e4222cb4f2b0736dd4d8afe0\nc2f3e3a227aee9ecca8607f540cc62ba\n22944fabf8a9763f28132d87f74ffe13\n7ef375680d89c711c8db97d9bc169245\nfcc94cf74fb886b7bbf3143b1cb6076a\n5c63ad3688c623b1a787d03c28977672\ndf9d8ab5ab6f50ed4d4cb1c2a5e48b7a\n152d35bcceab5592eb1a0518c224975f\n865f434c71d41326c9d5795160525060\nde3a0bb3f0ca87a5674fc9582804ad0a\n94351a82955a6136c3f40f6a57084ffb\na94057f15ca19a33fd98271adcb6e31a\n2ab4a5c3ca32ba9a4d4cb1c2a5e48b7a\n559f9a545b9b98a1d433b2698458193\n9634ed6dc8ecae0026360e1e29a956c7\n48c4b6bde824e987a8cba409c4409ba9\n6f96857e279a38793525b6164e3f382b\n4ae3924f14d2c0084c3a35cee92bb95b\n77410e47feee769deb1a0518c224975f\n3029b9f2174da4b0bbf3143b1cb6076a\ndae59259ed2a2951d13ef00338ba8c52\nc476ac72594e39ffbd46d022fd7d80aa\n6a861b7cf2552818181edaa32d7673d8\n404714cf775f5ceed32761b337f8b72a\ned709305e61acf6a9b017c80f62649a0\nd4aec2680be68c813a116bc3efac4e3b\ne5af05179ffeb8fcbd46d022fd7d80aa\n26950e05ed379413bbf3143b1cb6076a\n1d1244abfefc781f35fc197bbabcd5bd\nae857883c77d156b71d03b466c72ce41\n85c9fba37bb685d7ca8607f540cc62ba\ne49d1e1d176ec1dfbc0909d98a1ff2b4\n6d6b6777cf1c15106540a0ff73700634\n58fadbeceb7e239724f575085333a65b\n7e1646c0a04dc68f6ea66e6959004764\n90489d6f74296c88daf24b8b932d0212\n4c07126c6ecf5436b7bd17e458d0dcb\nb97900a7f44bd7dcca8607f540cc62ba\n72a74e13c2424c19f2b0736dd4d8afe0\nfac9c4f0d5f239e4f2b0736dd4d8afe0\nb7b657d7db3c3b8cd13ef00338ba8c52\na7751857e571d6bd3c326782eb2d380e\n2b1a867569f9f61a54eefcdc602d4520\n7462d130f9c7abcd5e9e2656aff7dd5b\n2a7c34d4f5aaea962b600da24e0965\n76a86e664e302f32fca1f1143bb6bc17\n788cd4e599b0ca1819ba010ddb4974fe\n7f4ceb12e48be00ea4642ec4b6f68a\n53d0eca7c8ab5e644c3a35cee92bb95b\n1f96a33a3a461544ca8607f540cc62ba\nb19771099e1d3cd4d86ebdaa02a63c4b\nc953df8a3f917663a9b2becd26dc2fc1\ndea43c46fdbe84511adbb4c4e06ad649\n317ac4d5ff597c9ae719b5362fe06bbb\n8baeb2c664b0bdf4ca8607f540cc62ba\nc489f0cb96399da63c326782eb2d380e\n642b46912529c6e57f1f82f6fc8747b8\n49131e925ef3349566cf1b4a8fc3914e\n892ae1180c58b3e671d03b466c72ce41\n640c9b76fd75aa94d13ef00338ba8c52\ne50f001069380884b87697d3904b168b\nd390f0246fd43cc8bd46d022fd7d80aa\n21a1049ee5b7f531bc0909d98a1ff2b4\n5515a62182afd357f2b0736dd4d8afe0\n7274be512ba47d837678474be485ca\ne761cf88524cf8f24c3a35cee92bb95b\nfb0f2907b977e7cb67c5e3041553656b\n1e358e70c047687a1a8831797284b67\n65166f18d4ee36a61cac9affde84fd21\naccb9ee4edf6af6ce4080dcedcbec993\n296c3ee559f87c9354eefcdc602d4520\n444a58c4c6bfcd6c7a571401e6605fc2\n9e30fc9f2d9ae56e3ec83bd6bef75c92\n55ce4fc0b3df0234bbf3143b1cb6076a\nc0c32558decf271df3ad4b0977199f23\nbf5d59729b0c0e336cec6e2299cb4a76\n65b3e612c00a65a6bc0909d98a1ff2b4\n84e45a6f079cfb9526360e1e29a956c7\n5f46b24028db58f490baeef8ba5b93e5\nca8e8a54b54b41eceb1a0518c224975f\n9bfd7f4ecdd8efd8bd46d022fd7d80aa\n2502fffc569075b152486b4487d562c1\n1c87b854cceb778615aa5b227c027ee0\nba1358d41ef026fbb87697d3904b168b\n8fe1c92c1c9ff33fbc0909d98a1ff2b4\nc5d0dd7a7b44b079a76ffc04f04676cb\n8200621d7b5cb84a6b7bd17e458d0dcb\n2c3df6a4d0ddc9a69725372054c2f091\n211cac5d62271583b85f0298cf43349d\n45145c5e7924dca8e991cc67fb9c11f\n16715d886ecf0a97ce2cec85ea6ae00d\n50e793fe39e527b245f31985fc702c6e\nbd91c1eca592312048464d2edba1bcf0\nd63bd140efa537dcf73e5bc170b7e2be\na69c25f93540eaed6370c33da8a7988f\nfdb87fe46a2dd5ae148cecac5cfe1090\n99b2ee98a16b3c0b1338b1079208569a\n2026699e25ba56c5fd6b49391fda17\nad98f06fa29c52eb23db3adbb2f1dce\nb1deb3638098e9c92a4947824596dce3\n2af93e42ceca0ff7efe7c6556ea140b4\ne52f809111bb75692b5a1d128057b6a4\na051219f3f444fadc5e2bf7b5a5f1c56\ne9bbeedf2681b8ad154c6bbaeb7d331f\n7279a912e89a6f00adcbeb54f3d014e9\n8ba22e93df58242b61c0a7e9e23d6288\nde72864008c4db8bdeadc9ca0263db5a\n206a4bec609b727566cf1b4a8fc3914e\n577ef32f6c313a5e4ca16f43c2716caf\n900771de03746670ca8607f540cc62ba\n3caf95d83fcccdcc28662498a294724\nf5a8cae96024e709c1ccec171a275967\nbf77987a13fc34b5b6c7da997b0e5e3\nfe00bf68a2cd32b6dd455eb19d4d269e\n5a6eb0f2a316f23666cf1b4a8fc3914e\ne52f08852429e6117dc01d89d8a05b74\n989da7f7bce36747c6c291015ab44100\n2997fa1441eb7bb735fc197bbabcd5bd\nf21a375ca5fd26994fb6540b6bb872e9\naca6b424287392cf3438e17bc657daf1\n37f251fbd5e094348139630c61d12904\n707da8b9f37fd990bde4f466a45d975a\nd3856a35d1fb8536d8e727806889c9b0\ncd9062c0065ee3a4727e0d1e650e3b69\n6af4383123972f2262b600da24e0965\n8df55e58da6c297b4c3a35cee92bb95b\n5f11d3dd6ccacf92de7a468bfa758b34\n86012cd0bb6727e9e80771be8faac585\nd532217c7fabf1d44e8b48a4c01e36f8\ne18b6350437cfe0d727249e8d9a90100\nbf448fcf33a5349619ba010ddb4974fe\nfd6210721415e4bb51a9048f9848535d\n2bdb44eece3409a5a18e0889038e4fb6\n63a2144cfae402149b30aa09067b7eef\n48fed12884533a5fe48f6bbab67fa514\nbc764c59e4bf4e9f508cfa5a106b05fe\na3bcd8767d2827626f5b49394e7f4cdb\n790e9d3a9e037d3efa86938af3fa9595\nb4a420a55d3db8aca89fa467f217f46\n1203825bf97bc3524722e1824a086fad\n67e8571eceec1ea44c3a35cee92bb95b\nbf57639c6735626282b3aeca5b3e7150\n29120728132e5dce42a2048a31b7df8c\n78c3a29d1153e68e5fa2a5df3ce5bc40\n4cbca5f95cd6cbc6e59552931a2cfd3c\n2f379576475cfba24c3a35cee92bb95b\ne88a8692a22d548e1ec438f11f5ea1c3\n5df7124460d8cd14fd17e1e0553418c6\n670d455bf1bdaafdf577ff4de1ac394c\n911e9f0246b26b309f789b924eaffb62\n641af2da275049936cc53f9d72e7fec3\n8615ac14d65e76efbde09007ce74853c\n5e34c340059f5b4b1c97b7d78f1a34d4\n22c11b2bab2cf93fc1ccec171a275967\ne08574959d2cb7c8f6cabb305f7d6d18\nafcb946d2d36a77abc0909d98a1ff2b4\nc398f78fb73ccf29751c7a6f15617f4\nb458bf7d57d211ee43bc2645d97a220e\n72aedca98ea4429c8ed4db287040dac1\nf2f6684e930651df3dffb45955223d25\n19e2864af4f6de438050e8e370967931\nd15e3519a61c5bad86442c51e82d8d69\nff6f81eba664481126360e1e29a956c7\nc2d5bd1215248f9c8b6c29bda2bc905a\n3a92789dfc5186dcfdbac8c3ccfc63c\n93e0290ab5eede3a883f7527225435dc\n1c16739bbf3fa7c44276157eea5f8676\n5b048655453b37467584cbfee85fb982\nd708c311bcd60e61c9ac656f0c2edc4b\ne521828113e1e0c45e28caa3b26a73fd\n945b33ed9d6844591596c26b5af806fe\n28add8a00a7bcb7318d508b491dafd46\n9d65814e1b252fb01636caafca838500\nf7298a13f6d1644472a4466eb772f128\nfbc7afa847c30a4c183bb3a05fac486f\nf144e93fe2a11c1f4c3a35cee92bb95b\ndd9ece07d4bc696c2bafe808edd44356\nfd3a9743e16d35e51fc210a07910eb2\n41c7470ce9ecb74b6f9423fcc87803f2\n6feb039c710277aabd10f71f04d299c\n91ad0ff431597651767529f9ae81ac0f\n6021cb206f3db880c57b4651eeb679eb\nd3ecaf6bb9395131d563154e026c3490\n7f1eaf37fb4e24de82cea33798fcd6b6\ned2aaca045fb1714cd4229f38ad0d015\nd59cd5f2012a1ca1aae46a5cc955c766\nb23e79036b214fd4ca27bba175814d1\nf5bb02c0df184488e0b6c670e0e97766\n6d3965fef2c63d37b3a197029fcc978f\nf2fda88e9688fd81d972c9dd75ed77d4\nfc5d7c28e254a0d84c3a35cee92bb95b\n71e9496397481233a8cba409c4409ba9\nc00b97813a9cbd72ec85c5551a78ef2b\nccca0685aa63308ed54e5c2e672a56dc\nd80afa36aeb72c552b5147716975ed8a\n7568400ccaa12eb9d972c9dd75ed77d4\nccfe789ebc77be87e71a4f02883f26bc\n315f523d0a924fb7ef70df8610b582b2\nb65ddb8f80d8fb562e38f6d9568202c7\n9a007813a38638c379a04281ec8c6618\n32a547e29d66132110b2a26d47842033\n72c28618e3273795f9066cd40fcf015\n106dfe858cb8fbc2afc6b80d80a265ab\nfaa361f642620bb72def37e9c0b35d0e\n6ca6c7920c62773073d96deff5ddb8e5\neb85e7d86e2ef861e7cb9c477e2b7be\nbc2c90ea00831423908b15214255bff9\n8f4c92227704fdf11c568754310e5f73\n7e75688f4b185d4193a78ffd70737098\n875d75a0aef86850b6b87e72ead132ed\n2c932237239e4d22181acc12f598af7\n85fd79b9fe5948ff62b600da24e0965\n7c7fe1664a1f36b8ad6a38fcc21e6e9e\ne5bb559c00276ad354eba1f1b35fb0c1\n4e85ef428689df5cede07437dedab44\na1d2c8b24476c8ee70d98a97e17b4da3\n90bd96c05c0208c642d1180c659735fe\n6f8e17cf5180fa96a911ef3962f7cae2\n72fcc9dfb927311935fc197bbabcd5bd\nd8719b491412ea0bb1cb87d703a74b6f\nff13be97bdfa45f8254dc1d04198881\n9fb0988ef701a11388170d426b6605b5\n2751a0d9a1effa41f0b8c8d7a19e0d9a\ncce565137003bb39b2da68ec42b2eaf6\n4f3f39ddde5874f2db73445864b72015\nda67955425ffe66071d03b466c72ce41\n5abba5b86814b98a9f4ab5ced9b9495\nf40467cbad9ca466eb7d375d58cb985e\n4f5fc434ebc03254fc7b1255b2e02e3f\nef20d432f2a7b1752c164e0c5ea74611\nc0796e38ea7a1d9fbc0909d98a1ff2b4\n265e6c77443c74bd8043fd2260891a82\n5793a442744f4bcf7af203abeca5ce86\n68a423eea131656b1e2b909763d0fd31\nf71028dac9b396fe80288501d9901d7b\n105f7f51e4140ee4b6b87e72ead132ed\n5213a6520cc225a0fb5c1b0f759e2bc1\nfc25e0cdcb2ecf1ca2bd098b9203af\n22795c32b54719dffaa7ec7d870d2e09\n16ef481509c64f845dcf422dd1ee66d9\n39d7e8e001e0234e8f721bc8b8155d7\n4f2830d3d566220be5dd38f670a033a8\nd5b78307fd9a0764bc97347c46fe15e1\nd56fba80d39bdff738decdbba236bc1d\n8b72934186e1d8b0f510cd52a5f27547\neb8fe6d82d195ab5bc8feea465aa74f2\naeb538b2f1c36a8d9e811b082458229e\n604392af2cbb7d1fe30ec10233e7931a\n6778c46aff633538c0676369cd1d063d\nb6dc4ddde769573df551b6c3f174499e\na02387f2b9d73a01a5cbab5aded19a14\nbdbc01a1bea50bdba6cb562d18000d3d\nc3454da26509937d4b4c1e25039af4c8\n2818edd47cbd2aa1afe30fe053f7a977\nfa5c740ca9192b708e8131a047a07ce1\nd984822941e7a768c231d70e1e0cc567\n329b62a63e882c7c71d03b466c72ce41\nf016679500a76fbd8badc4a9f1acc937\n18806a80387734b754c7b6e11bf7148d\nd64f391dee878277bd46d022fd7d80aa\n8a47b24f85a0eafa12234b062bc6c471\n6659e72d40cef80be07c29b23ef67611\n5d022668941c6559b0ed23034a67f7f\n2ba980d080f89581ab2a0ebad7754fba\nfe82a9934a38997866cf1b4a8fc3914e\n16f81f41ba16edebca8607f540cc62ba\n6296558889cbcba8faa7ec7d870d2e09\n5da145252e095024ee738cc95b5ae8e\nc2923f0931fa539f794f2d24bb38b7d1\n83b55a6e1677563d6ae6891f58c50f\nf88906b677e97695f4126163bc622a34\nd0b7060229617935d2a4e6ac398c976f\n4d0994838c31434cef5f09964a6a1f97\n33a4f9403600f29c281f657e8f8481a1\n39fce052e13f97a57a10aa3eec436422\n6baefb84d6e12a0c6bdb424f4ee7ff8b\n3576bf753aea3dcf661f0ad700067cc\n31fd02481a07471e4e8b48a4c01e36f8\nade3c4987f49895ff960bc420d751255\n8ef4637cb349584420c6a28228acb628\ne3f562bd552fbb14496e2f80fb255499\nfcbdaf6100aad67d5abb92fce0f1ced2\n66bdf712963b9a17efe0d4e1eba2e3af\n5efa09bee2cf193afaad157818f6ee1e\ncdbd857f25b1597c711d3e79ce66dfac\n7631caf6989bd17e4a51f4b900f5eb50\nb30bd72e684744c521b1ceea9c93aa79\nb644db95fe32d115d8d90babf3c5509a\n934b1ff5cf72b25c4310636931b68fdb\nf44c0e1e55a3469494f3355d9c061b5a\nb5b0dac4093a61cb3f2b01de37c0b29\n9de5723b085c9dd8f4fb6842b3610149\nf3cbfb52ea1c907a850e00840470903a\n5de885a47cf8aae2951971f8370d9050\n10af5de930178a161596c26b5af806fe\n5f73e503595094b783b772877a547745\n9d72d4ac799977bb71d03b466c72ce41\n3c109726e03fbac4ace5721ccacba16\n150cdc45dabde04f7f29c61065b4dc5a\n6fc4f30540b2fa9dbc0909d98a1ff2b4\n3826bf5c55ee469cec4dff11e684b695\n132fc603f8f69b08e816c75152573ee0\n122776d17b6a118086da73d36506db6f\n4d3fca1d1cacc27beeefea58691b769a\nf25ffb9cf92236fb9671f5163e7f6535\n5fcc974627fb15fbd1491f61ed5cc034\n5b3e534b2d022a9528be5258a76a8dcf\n862f246e54900f48ed4212b3ec7c4371\n17bc7631cbdaaa0c932e2c9d273ab571\n391b9c5bb875607c19ba010ddb4974fe\nba7d272a0ef0f06cd165fddf32a925f6\n46c259e87609c54fafc0cc47720c0ef4\n2f576be042897eae38f859e2bc79169c\nf5e271c3cb2edc1681209be1a5e8b10d\n1605bdb8709be6773c4d876662ed7ef0\n4f1fb7c062c50fb15a2c5766752aea65\na9bbba73d3fb7688b6b87e72ead132ed\n7bdf4816b61c0e1748766ee3c52f8ba4\n3a7e89dc355faac111f5789deac2dcac\nc1262e16d330f7a0231e16e03ac422a0\nfe0b8ab916cd568d749f4ec7f5556c32\nef6db5bcb6bb96ddd2f0cc036969ee4f\n9407c551466b346450e5128bacca96b5\n91948fbd89e316b9a1efa53c1b6b3c23\nc06b54fce5cc4961c9d5e99e50e5e709\n72e68e04a203c96d873ec74c119307b9\n3a7e396786751f544c3a35cee92bb95b\nb1f056090f81f992301e72365eacb45b\n6db64533897238af392d539dc5a47ed5\n40d6a54bb4f276afefe0d4e1eba2e3af\nb3c37b67cdcfd68571d03b466c72ce41\n99dc4702d20942da18e0889038e4fb6\nfcc2023fd98e157f2d99c69702933ca4\neaa0d465e9d0c16acfbf0f1430c86945\nd353b227b279804190b1d6deb98feec6\n6720352c366eba1a60370f16a3e15e76\ndbd0efc89242cc9318de900bee20377\n949acc63ad8f8816e816c75152573ee0\n60f99c0946c095e833b2a295000cb6fe\n296d0aa10bd7ddd87965b154b2af39d4\nce5310bbab4bc178d7a85b8b6dea0a54\n80b9b2807547a2d3ab94ae13bc67d41c\n5a399ad6696d587d5e37076261ed63\n525f3ec38c3baa7a4944d3c8bf9547cf\n8af65c495c966cd7c337e45399cf632\ne3c26c3920b93f36eb7fefaef8eada2b\n636dfe39d75701b6cc14f1e6f4f4f49b\n7ee2912263fa4bb36f14b7a660f4c864\na1bb5d1a075bf7fc37d1c8fcb5a639e2\nedd9f45c7c927032db5e5b1ef1010d8b\nc814a53c1538cdca4f7e1991902e92f7\n4e3e46fa987d0892a185a70f269c2a41\nd9dd8dd2c422dadaad70e50d5d7d02a5\ndbd589812bda0b1ebab624e35355496d\nd18592d9615b01bbbc0909d98a1ff2b4\nf8f4cccabf7ac33b199dff268d0aba38\n7608d7a5a3e3c2b13d4b1f38e3dfce4b\n78ceee44d207e826c87f6dba8af25d8b\nb831f60f211435df5bbc861d0124304c\nd0456644386d9149ce593c35f70d3f\ncbacce3a17e061251ab9df4be75138d0\nff12c3a1d388b03044eedf822e07b7e4\n8c6ec24418f0af1950e187c1fbdbf3ba\n5f0e7de6a86a694d3930849f1d75b1\nd777b1e4ba72cebac5353b0f3cdec54\n22ed115500e9648c5fabfc69ee61b28b\na1a58070ca1749d76abbb3e202b76402\n58e7f5046a0eb6474298cee0ed15ce9\nb9794f4722f565e319ba010ddb4974fe\n7af320cedd724bc89437816457a69b\nf8ceed6c984895079a6e43b878d5b335\nc7749c0a8b61f43bc9b9e28055202e3d\n351c9235749e398162147e00e97e28b5\nb76c6ef211d627efac8c46f8a114a34b\n77a81458ea729c62ace5721ccacba16\nce4b8076f8f9a5a05be07e24c1d3227d\ne7ff46a15ae32ede7480441c35610069\naa4df918db6c5973db6e67bf56014264\na162465f9664d92a94eaa56dbee38b5b\nafd43430bd7c689f251fe573763aebef\n2a06adfb446c85c9f9d3f977c7090b2a\n209bb7656231011d7965bced3a0d8967\nb63c554a915454b7a8481a97c910a7de\ncff4a52406b84da7aaeb49542c2cc445\n4c3b1356008b3284e42e14fe98b0b5\n313758cb2eacbb576d3e60add9f0d715\n276908a82ab3728e6283c6757ac506b9\nb7fd11d4af74b4ffddaa0161e9d3dfac\nc4433144c905ad0b71d03b466c72ce41\na9240313c39307574c3a35cee92bb95b\n541db123c3ae32cda91f7285bb2efb4d\n1de58c7eec71b438bbb26c14135f164e\n94c4ade39534d1902c13e5b9ca0fc656\n78edc61edc8835b5bc0909d98a1ff2b4\n38a8e07ed9b0da99fa7918e5874b2c16\n5cfdb557f5fedd51adb50624aa91e8c9\n5aec07305ba4bd3d66cf1b4a8fc3914e\n7ee59463dc17ac6e3e3f3c9608255377\n2677c3793143e75766cf1b4a8fc3914e\n22393fa9307224ec853c6f214c15e60f\nb55af8905ccc3b35102bb5032a53eed8\nbaa3e1edf8870f755f1a3e0b9f8002cd\nbfd02b9a1ad7ce73fe2d13a096d8b561\n3e9ff76da8ca4885d0635288642e63e\n7175100f99a61c9646322bce65ca3756\ned7eb0caa75661addc82b8fee1057b30\neeeb30213be73bd14c3a35cee92bb95b\na69d6f9ea766b9d1a13079850f677b69\na05cb1f091b01cc87aaa57326478bd1f\n4561def0c651631122309ea5a3ab0f04\ncc6041868bf2913312b981fe5abe4a07\na9b2d531e073113f9d1eb836604648db\nf8038d33c212f81fe99ea3c41458bc01\n530540dc968b396d7f3805c1aec66f00\n4b0f44a76ef66ec9491bc6c980bcf9e4\n136c2b868c5326dbba5db366aa3ac475\n9f525ad90573de3dccc19f6800e20c43\n63f4d6895e0de9079bd3f7086e6031a\n94981062a6f3748844750bbcfe7b8fee\n3844797c89c5e2e821b85e5214b0d6a7\n87cf8f265536d4369a6e43b878d5b335\n2764f43226260c94a5a118bd15e6e34f\nd1a887a47991d1b3bc0909d98a1ff2b4\n679d4f84caa5a1a8f019a51d1a3b2e07\n8eab40ab482a46f04369ac253fd9f7b2\nb65ac56abaecc35bedcd88be6151afb4\nb0f3f0f754c0129486faacd7b0ac262e\n8f39d2dbb98bce6057b643a522b3d830\nb1dfa9a6274688cd29ba25678ec45698\nec2ceb5d65007bacfbb51ecfb25331aa\n8b851217c2ef15b8eeb11afd6f15c99e\n7662fbb435dc1d0760bb9786c97a649e\nde5cade3966a1dad94946b454cd190d0\necd761d36abc0fb5250e498b1554a6f\n43e078c68d2fa3b4d5d30e1306d90d74\nb9168b74c6d459e65a73760c6feb254c\ndac25e0fbef7dabaf1692146d36a4a3d\n92497dcdab4d0a8de1e82eac4119b0b3\n5e0331eab3f051988f6810e1a2b6aa04\n224a8b6776a242f8adcbeb54f3d014e9\n35835c28f33d985fa18e0889038e4fb6\nee672fc1455b9fc43523242fdf9b75a7\n6187d076d53429aa67c54439d6177032\n40fefe66b018c17b4c2c88971423d0be\n2421f54274a5c237e8cef78f8179925b\n5c43f5436b308ed89a6e43b878d5b335\nff77ea82fb4a5f92da9afa637af35064\ne6e8f0e244efac73da2b0f839aba40f9\n76e66ae36d942c494c3a35cee92bb95b\n48c2f17fd1610cddf9b189ce48b45ae1\n1397f5bfd89673b21fc43d5b32fa230f\n172ac13acd9aa91f3df325aac2f73830\n47c7b3cb099b3212d1c83bc8b134e4d8\ne96cd99f545a4d22b0a339fc52929deb\nbad95673c40e3bbd66cf1b4a8fc3914e\neefb4a1fcc2ca4d8894e22af7ae821f8\n10cfc2090a2ade124c3a35cee92bb95b\neae845d4a7945ecaf2e466e56cb8c63f\n77dfe229aa38e70b3fdf1b3b0fe86dff\n3391b6520218cacbf27ebdfa602af873\n6044301c7b4c63ec90b1d6deb98feec6\n32a2723086f770e9233d80f3ecb7c6d3\nc8b848f32a850b15e816c75152573ee0\ne51bd7d434d1ee6622096c1bee7ddc7a\n50d2629e7e96c2883034111f96c5f617\n54984229a5e704f2941d71475449eb25\n7220043361fe9e50eb983188eb4e930b\ndd4da4309c12d47bc2c2c81e2232aa95\na73231f3d0342db94e8b48a4c01e36f8\n7edc7e17171b488bd33efe8cc2e2bf98\n395afa94dd4d549670e6bd9d4e2b211f\n253a1aead30731904c3a35cee92bb95b\nf214cf57d5d5634960e1e93111ad3e76\ne93a2143cbec37a173fac4529123dfb2\n9f21e660ba62b9c8ac055f4f708c624f\nc600de8c83303e6a441eeb748bfdabb4\n4244f171a6065c2f71e3a79f2415f19\n16d40e779903e77863b132896d8bc65d\nfe58e1c34a7fc8ac7f6b2c9a3874dfdf\n3fe365251b54087af0478431b5ad57db\n1f5537f4747ec847622c69c3abc6f80\n733afba7f61652e789850bc84e2ce90e\n3231fc366c6f4f3cca8607f540cc62ba\n2cc1ff07bcb27de4f64801ad2940cdd5\nff28d340bf0b5d9387b2a887422ab97\nd4849eddcd93569ac119f94203b4868c\nca0f8f701a042689331960c3710d952\naf69c8020fa9b68366cf1b4a8fc3914e\n78f32f279a50beea216b327569dd806e\n46791426a5b92fed6cc9876a2c35084c\nc950fc7d559f30016e86a8ae6e1f4d7e\n676e568ab8e286ad67c54439d6177032\n18d55087d052ecc86b7bd17e458d0dcb\n3af52163a2d0551d91637951367b1518\n83dd9dd45724d5fbbeb310a83b693887\n56616237ed5168f3a18e0889038e4fb6\n5aee97ad467ed9d75fe4b20a3aaa51a2\n6ea4e68428cba49f68557927e45c29cd\n23e30666530887e69a6e43b878d5b335\nf0e7808ee55510be1a7dd57f67482196\n697002e0242f331eca8607f540cc62ba\n95a6c003f5bd8a4acef4e20384a35136\n46d4d453ceac2f5c3c3b254d8683a766\n7b3ef304a0088b39112e53a423c9745e\n7a97d3dadc608b4350f01eb2b12b0a8\nd9c080cb6634a902ca9f0727e23831d9\n9465be8f818fbf94b01a0cb11141e033\n886942791e830bf1d32b1717fde97410\n1d6afc44b053ab07941d71475449eb25\n6dedeb5b87ee318b2154ead1f7ab03aa\n57f30880519c8270e58d21f41272cdad\n43beab0c1cc46ae641b5a73cd6c05ccd\n1f3fd9b2ce99e4ed164ee3a88aef3755\n8b3bccc84ac7d534d56132409b00c58b\n6456e87ff00e31a96efa61580a088aac\ncae48a376cb607547d3b11085e75c7ad\nd2842bc324b3dac5bc0909d98a1ff2b4\nbb976c45b6812b9254e2b6da60f72ab3\nb77aae4fdee662f487dedd9dfc0f1d4d\n12877bdca58ccbea402991f646f01d6c\n5869e6c3e9d2748e5ff3feb917a6004b\na18f4e4c291761fa7cebb3dd777c66be\ne2275ee8d6b175f2f446f92b52bbd82a\nc022461863cacb39a2872fda285c0d5f\n65d7ed8984d78a797c9af13aaa662e8e\n6f473d567942897b9908db9f2ff495fe\n5d0d3f54c5d9dd386a1aee7416e39fad\n675464537c846822aa7669713586004c\n783f3f72d5639597ba0d990ae229b477\n9e524a14078824b5cfe15db7c5db913\ncfaff76a1503d4f562b600da24e0965\n42dcf7058ed936fd22362be7f5226e91\n87d37c43f41871fb4dd260a1dd3357bc\nc6ab8acad9e61a3e48227c7754aae2a1\ne87902d01d40c71521b1ceea9c93aa79\n229c164fe2c80acc1ca2e8373597f711\n8f39cc306f68c89c8139630c61d12904\na0fd595fdbd3a85113a96c178eda1cb8\n56c605d0b1bd86a9f417244ad1b14759\neaccb2ca303223afc503a3776fc280fe\nf56cde19efc8d428b03f97f6dc2a21fd\n723c87de224355b69878ac4a791083c5\nad66ece988a63911643ae903098a314\naeaa3ef74dc4c60c95175320d65fc89b\n221c079c90d4d5779e9cd6cd13c91bb9\n5bd746709adf5b3ccffae3eeba6126e6\n759da7376ab2196a66df9c92bbd3d5c1\n3c6c4be95d2dad2937b25178f54477f4\n94056866a14b015a50c626aa72455dae\nbbb8ec10b86465356630654359fc97d0\ne0ad511aab31dfdb3e237dc81fd8be72\n99ee9ae50909ac0cd3cd0742a4ec7e9b\n8cf06a71987992cf90a51833252023c7\na55a46c1442470aeace5721ccacba16\n831171fab182f62eb115cf6cc3371017\nc7fe2215d41c2db3a45193285587808f\n572cae68af04663cb145cb2b20ac87f8\nb88fef1090e6d151b3f2b01de37c0b29\nfc5dade8622f686b4aba1f0cb15b1439\nc541b8c49b5d2d8e99ad3ba13045dc42\nfb110c5d01f1b3fc59dcf12563d8fce3\n1a963a929d9b1332290d63dca780cfb6\nf1b3408a3ba452d0c1ccec171a275967\ne8289fd7e6ab0df4d37636af9c7bcc34\ne4665d76bf8fc441536d5be52cb9d26a\n92e2aee5e86c0fc870d98a97e17b4da3\na922f408bb1b1ea1f2cb090f7f07d463\na281b2664e7e5b2fad9d7d48f3cddb17\nb2e86c7880a56b6f71c382fe82cf6e04\nefbb9337b9bd3cab56ed1d365b05390d\nea1aa637a6cbe7b4fce29e20147f9d9e\n33c9e81a88866451f4fb6842b3610149\n21adc93a24e86672f054f5e37c7ac323\n7fa1d1bd456f0fdf6e68e46a69a2d96d\n3693696a7d11f2a866cf1b4a8fc3914e\n8ceca54101f96a96d972c9dd75ed77d4\n9f18925334b6f37bd560687a81f263dd\n9cb21d68582e1c4ec1ccec171a275967\n8ec085a86e6d9425f4fb6842b3610149\n8e50f707e506f65f66cf1b4a8fc3914e\n20b91c5ceb005cc44947b319a9e09fd\n9f40666fcc14828abc2db24227b9dabf\n2af04ef09d49221b85e5214b0d6a7\nb07608c9c3962cf4db73445864b72015\n3b41c0837f22555871d03b466c72ce41\na331e93c3184742853a6ddb5892da51a\nf963bac7f45473cdb33bc7516e53285e\na63e9d5df0c56b3f099bfb561edad43\nd5189c00524f662c79f9bc8b647dba0\nfbe213adb802384db443c685f436f80e\n65278860c7d0f3704f59c2a67aa8473b\n16f67f87f414a5df26360e1e29a956c7\nd441a12b217c26bc0d5f9d32d37453c\n2993c233805d2718ad8912880b776dcf\ne25794343ee37d6fa8eeb11153b68d81\n751b1e75fcd7f1deffb814dfce3ab22e\n71a3c6e1c87c8b42233f6392bb87bbd4\nc62237ac28c4ed61efe0d4e1eba2e3af\nf3660119189d3eca4c3a35cee92bb95b\n18d994c4f8362cfaee9d01b4b18e1b2f\ne5c98b67c146cd61e816c75152573ee0\n6fe837570383eb98f72a00ecdc268a5b\n934d7c130fd419cdacffbc7889712a99\nffbc31352a34c3e1ffb94dfdd6ddfaf0\nf533dc37778c6f004c949161e83c47b5\na762fe69269fc34b2625832ae05a7344\n2980f6ac8412890548437f47a316427e\n7df1ad6363410383f3cc56bc9bfcde3\nf6f5efa1554038ce2154ead1f7ab03aa\na00f6bbbba234739b92527b70e93ee2c\n70e4200e848e653072ec6e905035e5d7\n17c2d3e052dfe73f9cc1fc25372199f\n617a3d4bb40402679c411d305417ef6c\n6d52412e798efdeab87697d3904b168b\n882c6bdea5fc5e82a3ee83e6cad78356\n909548225096784cd5cf6c89d6cfc357\nd54a694d514b1911844ac48bcfce34\n81bfc74dd037d1ea88d58cc5b9d401bb\nbfcdf2928e854d109b6724d4f3457e3e\nae8a5344a37b2649eda3a29d4e1368cb\nb7b8ffe2f07e4eff95dfd5eb5f06d19\nb2dd8a3e977d8e5f23c640e813cbc041\nb8fbf59025f18f1ccf5fcd318778a0ea\n34c656eeca31045724a182d01c698394\n56fbecc11e62071553a6ddb5892da51a\ndad83c903379cb9cfa585c96250561a9\nb3066d613364710797020a1f4453e3a4\n5903b9eeb53f1f05a5a118bd15e6e34f\n55d0772f003a362916c1ee83fd7a7f1a\nb7023a2bc0b1c28142edba76767f7bf5\nb02aa659514366aa2c6868c67da0489\n38884564ee0da15798494085d68ad6a0\n1bdeb4aaa0aaea4b4f95630cc18536e0\n4f7814692598ebdc7dadbbeb79fd1fc9\ne332fb3eb2c4016ec1f9d235878ff0a9\nf7f915160c0e1f6f42bc0eea174f82b\nc9620ae77d3eb16ea3123c495342b850\n64e36b948869a79683653a771e25099b\n67a6b5b12ba64c529a6e43b878d5b335\nab35aa631852d30685dfb1711fe4ff6d\ncb91205ac0f2f62429dc68c96bb3c4\n42d9f626ba4bc61516c4bdb2c8eca27b\nb501466a5a77f1173d2cc3e9d55f7579\n560e0890ae86aa7624a25a765a1075c2\n86e19045d9f27bfe269856bd6e519d10\ne58010dd5766e0ce78f081615c34707c\n7977f492ebf2c1d5ce78be835f7c74e3\neb7bf553e500b9b544bf3710e93f8cf7\n7a3da3c75d98e44d7d64cad20089f027\n7b485e11f80e0577bc0909d98a1ff2b4\n46f9b86c1292366fadc12de54d203570\n2f5c1ef50794aa92a55d095b876bb574\n28711664a9d08bae46322bce65ca3756\n688c6d406c789b8d71d03b466c72ce41\ndb5146b7695fafba78d7c0e1adfe122c\n3112ef52e6da5d6142320ab3b0c39c62\ne4bdcd6baad501ab2a8b9d468136b0a1\nf7160900b6ce7bc4e63e266a803d9270\nd7f71651e6571ee2f63894cf4226f14\n52b2c8f99319167c71d03b466c72ce41\nb3dd0a06e7f727449a55c6af6f4b2bb3\n7af2dfbf11201feac3ab86afd1c689\nea527508bb74f476f64801ad2940cdd5\n1d4fbbf681ba892ddeddb5c33cb2f8f3\n34e87dd1c4922f7d48a263e43962eb7\n6509073d1ff37d683d41f76be7f2e91f\n7af9fcb4a2c4079b873ec74c119307b9\n3a6f0d1cff0aa524567ab83a85d8a5a0\nd1b407350e61150942d79310bc7e47b3\n31d1cf39b807c856efe0d4e1eba2e3af\nbe5d2c935a36894c92cea77f96988ae6\n82e50255f14e7d9e60c9b6e4c75a092a\n2407711ff7759994101cacf58b339533\nd8a8e238987fed8dbc0909d98a1ff2b4\ne7158ecb09050b03873ec74c119307b9\neae958f99bad7dcb18b14db3b83de9ff\n926749549b15941e6455d739a5cbd8d7\na4ca564574e55f1a66cf1b4a8fc3914e\n79f0a9d3d78764ec19ef6dae2862f036\nf944c570191885e8ca8607f540cc62ba\nb29c650e4d7582d11ae96ac7591d0dc5\naa70737ddaede2e3368d7e7849f8df62\n6fe8da29821a60d75057515802db06ab\nb7bd7a753da0aa113ce4891c7dcdfb1c\n22eb91041de27ca4936b2c59e7c43ba\na849d4325008fbea85dfb1711fe4ff6d\na367bcfb5d26801a848c716e284f561f\nfb5e00c769fa06e7c277130bc8102991\n8463c1f30bcd9151b92527b70e93ee2c\n10155655850468db78d106ce0a280f87\n480ee59947a01283873ec74c119307b9\nd6ca5966c5ed5b86da2b0f839aba40f9\nf36ac9cdcf15ac8497492c4542407e32\n68303a007a6c8ab02d6ff44f79e93a89\nace4fe6e9c97150a35fc197bbabcd5bd\nf8fa93d7b17fe6126bded4fd00661977\nec531add757ad0fa9a51282fb89c35c1\n4204361e3781952a8e951223a21e1fc1\n60b5f5da40e0dd33579f6385fdd4245b\n8c2d5c6dd599a5bb68c7efc443fd2354\n8c3419a655600e5766cf1b4a8fc3914e\n35611fc0fecb7a795e02646e6b8fbe8e\n1367266dc0a07c925d4533028830a79b\nc05bb681e0ee27e2eea65ef742e4d989\n6826af6513566b12f4aab844bf68e35e\ncd846470dd7a135d29ca62020db7d733\n5c9b09738d7920f0546100d9c41f5274\n2b2cf12a1fde287077c5f5c64222d77e\n99e1961a72bb8ac46177b6d1ecbf989\n1b626fd06226b600adcbeb54f3d014e9\nc93f76888cf5a14c93421b5e4ff654e0\n42b71c3f82a845574c3a35cee92bb95b\n8a343fecfe2b8660d0fe0309648c1f07\nf858fdc6841407e6d4bf37afb4832e7b\n1dbcb49dfbfd0844a480511cbe2c4655\nfe3aa0ec747c12c0ca8607f540cc62ba\n76f949c39923b0778f297017462c6cb0\n7c96e824c287f684651713cd1e90c5f4\nfa27e66018f82cf6e549ab640f51dca9\n523f5360c3aa35b5e1c77ed807ff5c62\nf2171bb2d715140c8b96ae1a0a8b84ec\nc5ff8a911c2780efc03676083f8f4de6\n2be6cc069c95951a4304ffdb51711149\n18cd9dc7631ef3064c41882468413db8\n1a04e3eab45ca15dd86060f189eb133\nfc2d2df18182df8c82a2a8a82be86fd6\nfe4ad5664773074cb536c73c7d134340\naf3863d4ce7dd92ac6f6da58b133bae0\ncc630f80fc235ab360c9b6e4c75a092a\n195ca2eabbf7c735a8d66821ccb813fe\nd837b5228d9c010bbe584d85bf07b4ac\nf9209166fc259d8885e96081cfe0563b\na05347463ea86f1ecc777fcc6b5f19eb\nd54ca25127a15d2b937ae00fead8910d\nb7eefc4c25dd9e49238581dd5a8af82c\n10e0a7255d279a419751c7a6f15617f4\ne037cb87e6cdcd76df39601c41fbe0ba\nfbcc12c5530ab67cad659a74e36b6387\na0bca89b37e69d349f66d5781c13189\n674115a86dd196c142c20743f866e1a6\n9c916b72d9f9f93b9f2700a6b7be99ac\ne66996d97d9f553939e75b12f2e5480\n557429a274a21e1e6a257cd6bc529741\nca2a07b005ad4385ca8607f540cc62ba\n78646117554e23162c00431da4ecd526\n6f96517661cf1b6799ed03445864bd37\n1bba3fb413b93890947bbeb9022263b8\n1d5beedb73951ef68649ad8da70da1e\na224182f76e4a44fe1a65cde8802138c\n6ad89740605331aef5f09964a6a1f97\n322e8dccadea03d3340b9c9d10273ac\na6a27c5acbf70ebd3df325aac2f73830\ncf2bbaaebcadfb282933085759cb1f25\n912d89d2d910a81cadcbeb54f3d014e9\n7206b1f248826f2398b39d2f77aef0eb\nca16041e31078463afe21c1ae3d91b49\n4b4fd540cab0cdf3f38bce64a8733419\nb793e65c707e884262bbb378da4fdb53\n5fc53108f6bf2f45893f875739da1b24\n337e7f2c3745e07789d7e2c40a194e8\n30b5160e2870b7a0ac8be969b55649e0\n4377ea17eb17fa79216b327569dd806e\n94ee700c27e2c05f84fcdb4aed90c145\nfdcb11fa39661f0fb08f81d66e854bfa\nb008491b09894384451efd5041dc713\n32da9294ff0c3d8c7a40e1005054fac1\ndf0b14faa90bd4dce68b9e5f5c3d0eca\n32637024c9aad5289a6e43b878d5b335\n1d68bc47a558ec9b266eb575093ccace\nbd8c9f9442124cab5e64c90e34fc13b8\n902b39a955eeb2bf35569910818956dd\n6eb12144093da25e816e98a113f4d393\n697161441b9da2a7ca8607f540cc62ba\n1ea7a36e4f353416fe1f6e05091d5d9\nd7454b0e80d3236ff268234accd8cf4e\n4b623f70c9853080aac5531514d15662\n219fa6821c9240e42476c2e017302af2\ne4237061106f5df1dc82b8fee1057b30\na87cad03c8f717e230dd29e8b6a554b3\n58fe58e9f7431a1a428659c2b5124968\n494660cc290492218ac43fbf276bac06\n8bde5a00c3caf9771d03b466c72ce41\ne8e1b765fdf5edfa14c19f41d007670e\nb943b632fd36f75ac1ccec171a275967\na4c41dc85210c3a0ae049cb809622fee\nf88be1c8e93fbfecba0d990ae229b477\n2efa2cfc42f2ff481b27cd1681a3d0e7\nabbe69a6f94918c79eb9aa3111a82815\n2d33ee87ee5230c335fc197bbabcd5bd\n6946f7a2a5ef851215ea536736a1eb7e\n87fb26b8e56d25f2b87697d3904b168b\naa3a801045f6fea9afd51f67d3985e6e\n2893dc61be63a8a16d0ff49003c479bc\nfef1c15a5db21b00a67cc8f661e7890a\nc2be303f5abf0db7b3369733e21bbc63\n62bc07e9813d75ead46f37bdc1dd4b45\n4a6961377146f08cb45fd154bd3b6957\n8da05b28d9b2e2fddd01eabba9d45203\na4b26e08b6080277a47575cd04a1d851\nddb96cc263869979f446f92b52bbd82a\n93c3ce7904b3258b2285a9bad03a0ac7\n6ba7cad8fa7301f9c1ca96a73599ca7e\nbb785567f73903da2661ac6da30aefd\n440ac1b4ac3cbe114c3a35cee92bb95b\n6bc51a88f3c58469b00421d9df4746fa\n2c9797204c91e3a440975e4feec771f6\n24bdf389877fb7f21b1f694e36340ebb\nfca4c82b2c488d329554e5818acd6e12\na3a3a3d2ccc590eeaef99de91a3e555\n12e127c0416f94ca4c3a35cee92bb95b\n96ee3ab4413dca5a48d2ba4615e03b21\nbdc5360ff3c62ed69aa9d7f676c1fd7e\n6c2c84db10ba167e48464d2edba1bcf0\n260288918550573dc9eda6e157b92d90\n143326cbe409ca9f62048be44e1fa435\nac0d1320328f5636b819f3a4f3895504\n26210ec84a9c1c6eb1bb46d2556ba67d\nf3f3805b0f1c81e6f1218670339368db\n1abe9524d3d38a54f49a51dc77a0dd59\nf5cc091bacb338c6951971f8370d9050\n595556bad291028733de69c9cd670995\nd605a53c0917acada80799ffaf21ea7d\nb1021932b387da327f58a59a37266b2e\nc46336844aa275098b96ae1a0a8b84ec\n86a5bdbd8c0c70eea7de26672c5fab85\n6b15289a71312a5af8ea21a9397429b9\nd78a16856adad344670aaa01f77ae41a\nd2f8a99bbdc387c8c5552bebbfa48bd7\ne8c1e738997275799de8e648621673e1\nebb5a048015c13cd35fc197bbabcd5bd\n86f2c71ef3700ca2cca362d2a61f33e4\n22829f20e331d563dd455eb19d4d269e\nd2bf5f39131584c0a8cba409c4409ba9\n2636cc55f0bee49671d03b466c72ce41\n9b5a1706223b150613f6b7168403d0e9\n81440fcd51052844af7d907e4e1905dd\n551635d89144da64299a59bfd8e7d284\n189f045faacc1b5f9a8993cdad554625\nbc48b77452fd108adf8f666ba0e601ac\n6abe0099d2a6efc882401bb74114a99\n600f970e5d1032dda4642ec4b6f68a\nac463974cee5a8867bd1a5c452e6bb5f\ne5a7a353d5fa8df844b2fa2cac0778f5\nfbb2e9c15888afcaca504cdc40c452de\n262795bc8a994b11ba0d990ae229b477\n91bd6e91455f85fddcf9f917545742df\ncc7a48498e745baef828c8b5be2ff54\ne31da3ac74fa3c0c23db3adbb2f1dce\nb74369cf3556cc822fa1bda037a5a7fa\n9a29495f38c07b0526a6eb5f28c0aecb\n724be1fb093a31a1ac8c46f8a114a34b\nf6b96f56212f55363023a5c0cae3fffe\nb725f44502906a42dc5a5a67e94552af\n6e4570ef29d420e17099115060cea9b5\nb224e74c6de1185a6f498c6206a06582\n669060a91dc45dfd2ede7237ec38a80\n2e0c7d77c0b74e87c1ccec171a275967\ne8d5a3e98c222583d972c9dd75ed77d4\n71a3888c2229715b694188e21796efaa\n167a44b60adc37319ba010ddb4974fe\n25864172dcde70c6ace5721ccacba16\nd6db0815d8fbaad621967ef97204d18\n5c379a118ec80927febd4e8b843c95aa\n1d5708929a4ae05842d1180c659735fe\naa05bf3c5a7bb61bcacf204c07dae519\n8fe406a829c40c933b353a5057e248f5\n5abe1e80846dd485c3e7213e9e8493f0\n53c7a6b56afb63807222da102ac36d2b\ne27229a5f83b0ac96ece6611a5309fa2\n214d7c0720b860091f21e5fbc0306e3e\ncabce3320f119855a5131d38588a62b\nf9505b01e3ea959cf9700e397b8b4e4d\n84d5ab52436c832d36813a9f7d8d3045\na60b2775f1955153ca8607f540cc62ba\n551e8582c195944af1b991541832fbf8\n89175682a6cecf548966fecb9138dba7\n49f400e6574c75554c3a35cee92bb95b\ne6d6e9544e353f9f75e49fe23848bbe5\n2af529843a47df7aba0d990ae229b477\n361f57d736cfc14dc8bff13697c27fb\nfe23572aac36c84761cfaa00f7177470\nf1210d8f895e40b663c15773e7567372\n990431d8a1ef435bbc913a3935f0ae10\nddb9b552868e8c61334736c27ce16882\n89a697d339c01c19452b96e716decae1\n1d7eb22189100710ca8607f540cc62ba\n800334df5da57266a4642ec4b6f68a\n78c5137e361e02cb24624455c20aef91\n1bcbb0267f5f1d53c6c0edf9d2d89150\n6e324581dbbdfb5548e8405d6c51a908\n7006c5afe5175d76e69ef11112d71da4\n3aa2ba8ca2aede556d96f75c7a1666e5\nf96426f2392abb1d8d58389384d9812e\n2a895d17616bcae1f361e4786a4d3c00\n82a472004d00b288b4d569aa61960548\n5ea68e6edd123801ad75fc64c51fb188\n3902709d4b10903579995cc5afab9d5\nfabe8fdc617e3aca2bd098b9203af\ndaf0298bbe90dff19751c7a6f15617f4\na53846c68d0df55fbaa5dc5e42189b81\n76eaa5ea5f272c2f5986032c1ed37f74\nd47207e14e61db3f1436d436f198567c\n30acfedb688a62e72ce638efd383ace8\n66c37aeffd6e73f284306f3bf0a1f2d7\nff569b4018fc2640cea77fac5d58428e\nc4f22c879e8adbc6aaae11b67645c759\na2041f74f316e7b9585e3fa372e910b7\nfb62efc64c58d1e5e0d07a8ce78b9182\n260305219d81f745623cba1f26a8e885\n51f24c13e4af3e06b6e5b4d7b00c5b3\n8238cca88d753930a23a96b0250afc71\nac06ebedebe86a7b4c3a35cee92bb95b\nb1762428d609674598aeb62a3dfc01d8\n7fec4732aa03b54e7db7c8d619fa260f\n3b0efeb0891a9686ca9f0727e23831d9\ne7e73007e0373933c4c280b3db0d6264\n85396c57cdbf919f83467b3671ddaea2\nc6306d07f28bc5231309643a94d8a5f\n5454ef3f1e0367f38f92ff0dbc52d7eb\n953baa426dac775bbc8c4428ef1dffc7\nac3336c2f47b17d5acf77e718d93f3e1\n1d663e36e305fa8e2178120752ee7a07\n468e504d8c28d8c9b8b8dbe00be04f1d\na1947665b3f56b584f127ea45c2fea1c\n3f80ce1461f3dbfe16af5d7a0b735543\n5a0fe6557b4e2b9ea8e091cb544689d5\nafe6a70cc5fa98fbd93d05336f155bb9\n98c0c90dcce8f9ee3ba77af508a192c0\nec8ba88cdead53f336dafa9b6763ef3f\na20db17555286e06f5e83e93ffcfd3f0\n3bc8cebf08ac975dbd46d022fd7d80aa\n20dbfa169424bb8ed7b90ecb4a11cd32\neff5216d782684aa3c7aa3e4b8926c27\n12c66a0490b223be595dc3191c718398\nb54d9c1ccb737eb6d972c9dd75ed77d4\nf277fd1032f615ec2268dda5c324173f\n31af9b965002990e27e7e81f554f78b\n2da62d609cc59f9a10b920f84a47c477\ne3473fc8fffca7d4d972c9dd75ed77d4\ne3e6cbc295806a47cf0420e0d05f48de\nd199612c22fe9313f4fb6842b3610149\n5c74962846d6cd33920ed6df8d81211d\n521b82ced564aa2c8ee17de2c75c8e96\nac75db84aa4e72e28f21c6f032637775\n440e5ba74ac8124e9751c7a6f15617f4\n4a27a6276e748777bc0909d98a1ff2b4\nd25572a7c7bd40a72d716a8ba99beff8\n464879f87b67827af268234accd8cf4e\n7117ac29aef4f1c4951971f8370d9050\n6ed172205a9805b8dd9eb6c0ee8316a3\n580e54df8765aac1c1ca96a73599ca7e\ncc40acee83422fe892b90699bc4724f9\n47fe79cbf9d6ef36dc3607950feada54\ncbbf6ca6a621c5f9acf77e718d93f3e1\n144649df5a5f9c8b5e4cd38353d7ef05\n9196f5a53aa7756687bac2e90bbe10e8\n51ebcde47b4c29d81a62197a72f89474\n49aa625393dbd1a4d443895deb2f03aa\n4303c9458a723504d972c9dd75ed77d4\nfb06b00775efdc8e21b85e5214b0d6a7\n754d9b0f12e6c6104af5b53e1d2ec5b6\n6bfb3e84a0fe44c1bc6e7c82ab33ecb\nfb01b45a0659af80c1006ed55bc1a3fc\n6cdc9acb022b2d7d98aeb62a3dfc01d8\ne55224bb456066c618d508b491dafd46\nc54ca35ef1df558850ea677bbfebf3fb\n2b20176a59621b35497add46ccd9d60\nb848dca797986bd69d175f8055b49b9\n4c9214d70e0a00c6c1ccec171a275967\n796bb7d6f4d5ce8471d03b466c72ce41\nc94efebebb2eaefcedc8262267425d73\ne387c8d826cbbdd68a8dc9dc46f918a8\n6a59f581ea7f33a5700feb5468ed9746\nd8a037897d5d5b108130971b27e95927\nce3c18550fb997d1107e1ecf38d6ca93\n21c7cc3e5f27540be6553f96496649c9\nd1e81c9479eb1b7da9263338bcc7d067\n14c954d5d3c8e954b6b87e72ead132ed\nad10ae20ac2e87a2adcbeb54f3d014e9\nd23eecb0437107756c63b8b48495261a\nb6af488133a67825881b4ad693eafd3\n6db6f79bff14b883a0ff12a4a79c7c7b\nfb92c2e96fdf6c37595dc3191c718398\nac39424c7666c318cde5b07c0f09692a\n5a38f5eb63dd8b20ab9d1113aabc16f5\n71f718d82a865472bfa44fe936def6d4\nd0001af4b3c1fe3d6f675e9f2e677792\nca8c65b83038dddb17486544d154bb2\n655ea8d8c710cf98f3a69a6853df2d7b\n7bbe33ebb5429a0a7a9e881131950954\nc781fcd64271dc15224d7b1b956e1382\n23cb6abc0705de4ba5a118bd15e6e34f\nf1a917846d46b61f71d03b466c72ce41\ne1324a093b45645c5a5672eede2b271f\n80796b736f1d6bc78e8131a047a07ce1\n81596cc38eef8260ce9e5ac45c67ec22\n1492ab4cf7a345e34b6f686803e61ffd\n56c827003a2fdb16853d2b3113ecdbb6\ncc86a2ca41e279bc89b1c1fd829ec927\na2c2ad021c80f08c973e06016b069172\ncf17d0ce34f09f572722fc1bdd7e0e51\n7d180493022c01daace5721ccacba16\nfdc1a422b48a16f67341d39902b9e2e1\ndaedff5e78136a8b507c9a5cb0f72e1e\n769efbce0af867807456183f198fd1e9\nce6aef9846db6aa5c1a897657d9a1924\n196d35794f869816db6f03b6829a5891\ne4e1b542f8732ae1c6768d9a3f27965\nc14cb2e75415dba59a6e43b878d5b335\na7df65b30f1e6a3663d1bfc21cc05e4c\n83e4e523003294ab9a6e43b878d5b335\n7c76d7d8ecfca9c2b1bb46d2556ba67d\n1d09583e9236b8d149d860a48be37092\n9a847e8c8f9c0acbbb05fba9fce1c1e0\n65b12fc357604a2587b2a887422ab97\nfef935c1f862f4aa31309643a94d8a5f\n320e639572e8b9ceca504cdc40c452de\ne431f79ac9f0266bca677733d59db4df\n1d4f988b009edadf54a2210c7b2aa25\nc049dcd36058a87e75b7e61db54ffec7\nf613ace665da5e3e8b96ae1a0a8b84ec\nbc2deb55a1c952beca9f0727e23831d9\n7ecb807e2270606619ba010ddb4974fe\n9a5d4e2d21506f11c503a3776fc280fe\ne3bdca8304aa6593c503a3776fc280fe\na2491ac51414429e422ceeb181af6a7f\n50e6ab918250ac797a663d343339f8e\ned4aab2d41d62b49895ae53d16ed9e39\ne4d902abdf9481558caa71b1fbf7fb98\n11d2af04fad0a7e2ce19d55bc5e6a406\n4044d5954ef85af8279326882e8430cb\n6c613c1893bf7f9ffae8113cc147b3ae\ne160529ef50ae4dbb819cac660ba383c\nc2d90cc742f17ce828204947d78b9af\nb2bb5a56b3d805b298b8c800ae001b66\n17c86b46990b54b65578b8865797aa0\n8de793e2e964f40a26c713777861983a\na4678e6798e768c3b6a66ea321171690\naf55f398af2373aa18b14db3b83de9ff\n2d01483c696c0a1688be2a30dd556a09\nc353ad7ae6ad2b9df1cb19f636b1c2bd\nd8a43017132c210cc1006ed55bc1a3fc\n5f9b4ffc555c9915a3451bc89763f63c\n67eac921334c130c336fa8434b94be14\n43edf9f02a027ed162f11c7bf54cc1ed\n4de5861211ad5b95e7ef9fff09638f8e\nae4fff8877a5a64b3ae1361afc45ac52\n2f988bec20218fa19a6e43b878d5b335\nfd95b99d4699430a7395d58407f193ba\n7b134f6573e7270fb0a79e28606cb167\n393cfa7e090b972dce2cec85ea6ae00d\na9b95631bcbefe9ad225a1c252daae25\nce12e8c1a5f5ce1df58f507a9f1e3e03\n9a4bd6fa35e2e59689437db5f9b0a8a1\n8daba5f5c906b3b331fec775e1dce6b3\nb356ef92a2052648b8494b55ada518dc\n171f4e9ffda674f44f4fd7b0550f5bef\n57eaa54ff3e4d6f211f78b196c636566\na9dff753cf97f9c5354ab1decf4fe605\n37608404f9e224d4fd180252c91ed0f3\ne17a696c47d4292393db03f6b4e68f17\n40c730231c4da8f33c3bcafb5ffed4c0\nc3bd5ab4d3ac6a5a5c351e299b24e355\n166c9abfb0f5256bbf46baa68c6e37d4\n68537bfb054ee3802ffb52751fee2c0d\nd5f4e2228e3fadd2aa6a832b9db7452f\n68ac5704aefbe4f54e86b47976e55141\n3d2e10ca9a5db964dc398f7f89f37ee6\n460f2b6d8f4dc18d565895440030d853\nd9eaf9c7d58279dc9a6e43b878d5b335\n8c6ab402ad29ff5c3b9dffcb3e0245d9\n61bd590e917928f6b6ecbbb2e4d05900\ndca7f88e151f196b8179909e06795c03\ne0aec5757f7a907d647cd52f13caf24b\nbdf120e29b19f77b352526271bef32d2\nf25da5eca572f01bd8d90babf3c5509a\n9eef6307dc504b88392b84e3285cce39\ne6f0811f15286120cedbd07f4cf21a81\nd2c7b95823938833339bd6b570381585\n6422d4a9c5b5b8f350361148ac946a05\ne216667457193c729a6e43b878d5b335\nbc92b144ec7029782e7c68eb5d1b9123\n71dcfd1e5d1e261179febb7e11d3625\na726f95306ce6e1071616ead796bdece\n9b60b20ea5fe6f002a2fdfabfb4182ed\nf12b45a38f012a78ac4f72bf08dc79a6\nc78cbd0e53900a1ef34db3de24263f32\n6859dc976c0528a831fec775e1dce6b3\n8bb827904cd9acd36c1cd53dbc9f7b8e\n82a2a1830758bacba389345bd31e2871\n788548a68d7b46ec179febb7e11d3625\n37700819bf2af266f64801ad2940cdd5\n30d1974a29d95d8be8bfa4901aefcf8d\n67636e7d15d082089412a62cd6b1bf5\n64dbeac5250de2bfc5d50480246d2c40\n521916cfab629ce0b6ed9420d56b12a9\neb110db9bdd0463e5b7003ff580606fa\ne218bb755f35da1bb4cdad9a5bf52dd5\ne0df97dfc068e3664bf88973bd147a26\n47d958a8a781144b132a08135eefe76d\n240136d2ae7d2dec9fe69c7ccc27d2bf\n1f7a516fdf80dcdc1006ed55bc1a3fc\na361d82b2c510ca5208842e3d616cb23\naba51f26f4da1b44b785bc4e6e3fb739\ne452189bb7bd6617ef7cbef6334698fc\ncbdf611a2146031823a665a253ac8cae\n9378f4e9b3bc187e621c837076d6923a\n7cbd504262e2d17ee91114a141d25a9d\n359f69a030d69b3da8fcf7222eacb152\n3b9c905771244df7b6ed9420d56b12a9\n5bea928fa9b2255ca8cba409c4409ba9\ncb55e0710b727bf62e36a049ed2b7f88\nc235f2c6d1e8c80e7f436bc8bb8973a3\nbe96646f774c7d0e2a23d93958262ccc\n420f3bb771e8e75ed878249aca2571f\n4ed01f44e3e422dff64801ad2940cdd5\n486f1238321ffd2825eb6beb311c44e1\n3adbafd59a34d393eccd82bb51193a7f\n77f5111d348bf051368d7e7849f8df62\n69a46dafabb616191f9b3085a256a338\n220a911e2e303865f64801ad2940cdd5\n3764de22af04fd32a993db466b6d73d3\n4d13a1b180422efc2d0334ee3a22c9fc\n57575cb42132554af64801ad2940cdd5\n4bf0b3df529d5093551df482db927edc\n2b0a2bb1556c96b94f762cd8ae1b1c4b\n54885d5beee4e76ab63969f9f8d6f075\n21feae1212b07575f23c3116d040903f\n6058d6701a0ca4e748e8405d6c51a908\n6a868213168421c6f0985368fed75674\n647e76622faa22b626b85a24a73a298a\n1d4ff34cdf90d6f9aa2d78d1b8d0b45c\n3b3eb57af5f995c268aa0dbe2db661e2\n7f3446564689ac918f69a600441c970\n5fed73635306ad9f14ac58bc87dcf2c2\n5cd14216765393f18b96ae1a0a8b84ec\n22acc443fd007fce6e80138ae17d7d07\n4f8952ff04d33784f64801ad2940cdd5\n3daca58825ce2ff6dc82b8fee1057b30\n2628b6cfcf1a53465569af4484881d20\nd18f2aeae4146464bd46d022fd7d80aa\nbc33901245943313d6d949577c389a84\n40192d0e50b4d2c1f27a705edb2f9ba6\nb7c11baa48456c23149f1a143758cddb\n34ddff243ac3783521b85e5214b0d6a7\n3948ac8a29ae42c761f027f2a55df6ea\n776bd07271792d1b131c2ccc2e4397\n421f45774389984bea6586b61968eac\n69f1d9c3987d429e5e9e2656aff7dd5b\n4d223d7a0e8162cabd46d022fd7d80aa\n77fea5bd4008e5f09a6e43b878d5b335\n73bcbc2d147291451e7b1f533ce75\n5d2f0bdbd08be6fa3105bdad0abb9e24\n16689e54c884aa01639c7058eaf33ae\n4f3a64164fbe16f54c2c88971423d0be\nf771c5a1b9bbac21f4fb6842b3610149\n3a82056ea319a442f64801ad2940cdd5\n54711bb9127ddf7ef412783097373bdc\n61330ac001ced49f64801ad2940cdd5\n1ea8a685cdc71effb8494b55ada518dc\n3ecea45bfa541b8e4a4dd08ffc16eb81\n48e477d5904bb7bb1ad94eee1d03defc\n1c26ecb4cd01759dc1006ed55bc1a3fc\n4b4782c572fa8b11a20c7111a5d0d7fc\na4391c7977d990142c20743f866e1a6\n5f6b6f649b419cea71f4784575c35350\n67979ab8dc522028788e57551eae0744\n62ca091091053afd9a6e43b878d5b335\n2f4133664133746cf64801ad2940cdd5\n1f9b49f320eeb2f5d0226d12d397045\n32b6448c0864812729348d14ca881f7d\n538f0b5ee7c786e6d3b936925082270f\n35131f7ea7256373879c08e5cc6e64bc\n4653be69e215a1a4b378822897b79a81\n33b8b6af08696fdea616caf97d73fa02\n5963e4385e6e5c0925c10fa44a32fd7\n879a8f69cd931fe9f64801ad2940cdd5\n562a94308f7bf09b8aa0062ef5480a6d\n743670f7f3a8042e6ad6a28101cd3ecd\n844d36a369cdeed3ac4f72bf08dc79a6\n162ed8d0d989f3acc1ccec171a275967\n1628b65a9f3cd7c05e9e2656aff7dd5b\n5678fc24603d25cb74745e8fbb11e3df\n4d2d87e61a18760ff64801ad2940cdd5\n2c5bdd9a08122f9e2023ec956848b741\n6a3028e1c7205b22ad6a38fcc21e6e9e\n3bad4bd2c944d78391d77854c55fb8fc\n3c52f7f687ce7efe3df325aac2f73830\n445404a75a0ba2ab1fc43d5b32fa230f\n61fe19a62a786c96950d2b3eef73a70e\n6615bb23e68159c193d4024985440d4c\n273c9c0bd43443c3b4f192eea1889928\n8b594934c14ac5db66cf1b4a8fc3914e\n35f43f566f2f14651713426437a9f7cd\n1a6ad7a24bb89733f412783097373bdc\n16868a30ebe634053dc22b596edc161e\n24d4c063f7a361bacbc6ff5546f4ec42\n34a89777594d3a61b2440702f5566974\n4470a28f2dd0cca9d9fba06863881b8d\n68f26c36ba5340ede58ca160a93fe29b\na2c5e769f19c7e97b7d7aa9b9ebcccb0\n150fd58e55111034761c6d3861a25da2\n5cbe5be753b5c7faf389d19fad321c37\n5c10e37453733ddb46d83d16be057f3e\n5a37bc42a52130a18f52dc705c3109b9\n22d0561f06900e165140beb2199de2af\n4a21d3920b11cdbf1592d7a04a86fa53\n4bd5f77521e76e6a2e690fa6dfd5d610\n37f2f187a1582704a29fef5d2b2f3d7\na273a18b004c209c90b1d6deb98feec6\n1cfada8b8ad2428fcabcecce1c335df1\n3b31e28ac1eb36fe1eb4be4ad34a6dbd\n65cde29553fe7d763a63e8ba97b45ddc\n2d9a7863dcfb5663d208f79049825a82\nc00d38c09ac5e6b8405970680284869\naa780af4d9cc83c3669c7dec71cfc5b0\n24e79ed92be932e19bfb78d2af523ae\n372c95e7685363ca18e0889038e4fb6\n33d955301966e4215ebedace13b486c4\n556363167281c6e486ecff2582325794\n3f3cd5461f7ec6edfa8a0c9a1860ff01\n3636483aff4b7977b7d7aa9b9ebcccb0\n75e9e2d6970f5ee71927c29d6faf370a\n3ee352a759364cdfbd46d022fd7d80aa\n4d84619c0da53326e90916c8815b5c43\n59bbe6a07a5a68d5d96b332cac4e78f7\n66e0fbcab927f21a875d37e2f5bce5e8\n2c1f66380af03e4c5d1df55cbe0874aa\n740e79be16a92efbf1f2e10bfa81e2b\n3b86245a5cd388ccf12b4513d8540d7c\n31d40e6e24511386d6d949577c389a84\n457c12e05d0f5d15762c3bd1a2b3f377\n88af6c30339602c2c87c199a35aa58d6\nb3bfc198214215397b5fa2b5a4fdb00c\n7a794db8180858fe90916c8815b5c43\nd6c1cb09e27c3fbce8b8a0b16211ba77\na839884fba87173ce25031ee39d82b94\nffce3c994052ffea339b6c8cc24f619d\n6da4590bf9d7bb9698b8c800ae001b66\n7d928af41b7dd26e1d0f8853f6d023e3\na34a6611fd6b2451690ce339b831e7e2\nb80131dacfa19f77337e02e3502c7536\ncef4d41c07613b658168857903a9552b\n38edc8fad5a5c0f0ac4f72bf08dc79a6\nadee8f091d7cc677508af777f11ed409\n8e2e03ed888e0eace4f2488af2c37f8d\ndebd942c5fcdc9c84c2c88971423d0be\n5d7c2f1b6ed0d02aa4684be4f9cb3c1d\na26639a06e2ae1ede7d756565593b850\naf188ff4bc1ed0693faf1ff99e423b8\n9159a77918eb86cf408508ea36928b08\n4d139f21350f64d2425a06bba46b20dd\ncc113b6e9d4fbeb23df325aac2f73830\n794fe891e20800d37bbc9fbc6d1fd31d\n96430e8f2174428ecbc790a63192d2ab\nce2c4502b06c3c356abde8e1529c422f\nd9a92927192e9755702736225b32125\n41acaa4d19dbdca75ad6eb90e75c835d\n95e589163afd0a7a609e2d916fa0da27\n5fc63354b0156d113136bac5fdb5050a\n80da27a121142718e15a23e1c3d8f46d\n61159c0458d41ac8e341b5704aa568bd\nf39e0412290bcc714917e69390d054d0\ndae96d5eb7dd6fcd2863c6a2c8157d17\n8383c4706c60ea2fc1006ed55bc1a3fc\n687ebd7d2b1e1475459cbe66a12329e7\n775f06502261575c26b390daf74a4b00\n1eb1d7d471f3c4c0634efb708169415\nde1e70fefcabfb6f79be89de816ea2e6\n27317e8e93190374780ee0648cf79a36\n30b514b24624da4fc1ccec171a275967\nd405b9e5f942fed5efe5d5ae25ee424e\na1f740e10229b43a82401bb74114a99\nf680ee392bad2dca29348d14ca881f7d\nfc76d0a9da7cde0bef5ebf5f74916182\ne8ed294534ba18df4a29fef5d2b2f3d7\n5cd68dfe309e1f8317e5bbee411fa5d0\nec4a2a47f601397ea01e5c9f53f20fd4\n655dc5a5376e9c8152c3271e911ffe19\nb5cdecafe353e18ac1006ed55bc1a3fc\n4ae3b41081645ca3e70b97b9b33fd6d6\nb7b94613ab6076a2a959294e5fb80cf8\n9f25e4e0aa598c7fabda204c62559ac3\n22dd4b6a60e20112185b376619557c95\nde9564aeaa585a6ccbc790a63192d2ab\nc3600f9ede30352a663e90eaf6b4ca52\n6271b0016c5fb3bd59d2e83012533b47\n657439efe649f57f47f8deec944763f7\nc8db76f18f56c1344c2c88971423d0be\n536e1640461854957a86454b5377c47f\na9b808a446c498f475df24d58e852c90\nd3198154076f49a86f0778e65d2e88ad\n76851aaf721dcb63509012911cf74f29\nf8fb835bdc55ffffdc82b8fee1057b30\n46dcd7b89d67cc41a1398b9e7da33687\n3a3403fb14bdb46823e79e99b949a341\n40a828b10b1b092bd208f79049825a82\n9f90f3298d7b6c6f938204d34a891739\n9513fcab860b113795ff232cd38210b4\n4dfe2199fdd333d09837a3d08a6a1966\n947ac452f850e284082bf69673a94f\ne9ddadf335adac52e025e00c738da634\n9695d544e326baeaebc75cd68927f0b5\nc91e7b5681d8aeadb81009266e6622c4\n44dece8f8529374ee2199ec015f35ba2\n959044f10e27b89ee664ce1de3ddc8b4\nddd6c2a51c25036c8a43cd65b179a1ff\n33c5c1919425791de038c01d73511063\nf8d8b590a0dcd399718ac2a6ddb54499\n4508864390ae424d663e50e76f163b3\n51f51906f12681a1dc82b8fee1057b30\nd617ffca7890b33eeb9d949e4b90f4af\n65468fa9ca2f3e9e642566c028df23cd\n2d0945065aa2a427eec7473defebb526\n8675974f9f6ec91ceb3b5fc90bde085d\nb87cb85be0d8eedb44bf3710e93f8cf7\n89bc3fa2ecf1425f6c32d954b1c7f41e\nf485dcbd466f217286774cad40dd456a\nc624907ad60cb9348a69ce464571d8bc\nc9584d90a1da19f723a665a253ac8cae\nbd298d2907400418df8fc3a07f996293\n337658edebb67c301ce9f50324082ee4\nec9bfc810a015c3a446cb1ee5d43f75f\na3e15e215144dda0a03ebab0e8b8f7a0\n2c16ac865f06542381598514fe928082\na430ba73d3ee2c0fca9f0727e23831d9\n7932eddb8032b6f1e4d2773f0358b43b\n2d43bb802a8faf0bce15d210eb57e565\nfbee89bee5338798d4837a4534bf020b\na287dc5d0e28d3d3325212819caa597d\n876127a17b7285b3c1fbdb352261d023\n697b269a890237fe15796a932d10290d\n84b84d39581a6766925c10fa44a32fd7\na9cdbca070047fe61e9dc95dd6a9f6\nca45f5d7efba158ca35e371359a547\ne7fed0e0dbd871ce35ae6d8873b772f2\n7b39d993f6934a96b08e958a32ef3184\nf2975fde05d9d63eeea0c0561850e04e\n26830050c44b5a8f9cf081e9d8a0b57f\n764894168678b36efc1619e612ccfb0b\ne53547a01129eef87eda1e12bd28fb7\n4a559ef6547b685d8aed56c1a220a07d\nb11c03976f121b3537007500db3b770e\n584e076b6cee78addc3757fd1f4189a9\na799568755357be8a07b3b853565360b\n8d148580eda6994c2a8810071030bd25\nbc86e4461bd4c955a34fb3db6a11a22d\nefc2f4eb92871bb2b7a641946dd77b16\n5eff54a76d8ef89d7e1c97634acf0214\n8c344cf05ad1bcb7709f5d258bc9a906\n92306925325c9e8a3f3cc56bc9bfcde3\nb70b049cacaee0f210af2c858faa12b9\n5024341275a685bdecff69852469d7e3\n172764bea108bbcceae5a783c313eb36\n4c5b8babafbb7b5f937ae00fead8910d\n28402efe2e3435d124fbfb66ea1f14f7\n47a40ce42bb9077579dc7d843e2be5ed\n947a78a898b6aa81f19a675dcc5ca632\n1f672d2fd5e3f4e78026abe712c1ab05\n87d764f79c2f3af24c2c88971423d0be\nb46244d196a7f66635ae67400a94a6fe\ndbdca81a0f9079096d511e9563e4bbe7\ne06d3e6c1fb4b208cb7c15fd62c3982e\n2e961e38a039f1bc67711f7c205c5b63\n23fb92d8cc0f8ac4def547874c3364e3\ndb73a3c857949f469a6e43b878d5b335\naf6b292c7857c78abb0e5c1799dab683\n8615fe6e2a959ac1efe5f291bc2f5fd0\nf087be2dec869154acb63dc32be3cb01\n9a878c5f0bfbd964d470a0056f762381\n9a0f4dd21a4ca19bf1cb19f636b1c2bd\n8d2903595298549959bf29282ea7962d\n57b5666dfe2607ea1025c08d338b6d83\n1cc3ebbadfe69e8011f5789deac2dcac\nf47c5c54c4e49f62e0a768dae1badf69\nf97a48680d63a78a9751e413d5325f7d\naf71e72822241808a8ab13c300600dba\n6a8b9f82f1de022a9ea7c189c9a53081\n62ebb16b6b4ffd74df8fc3a07f996293\n1b0b1d2cb9f9d5c0575bd26acccafabd\necb0d8d1c592bcc11bee3078a673c2ae\n9595693b6c0f5157651e8da9cf70afea\na19a5a459d234919c1ccec171a275967\nce337df2f75801eeb07412c80bd835\n2a3d485b0214d6a182389daa2190d234\n918b46dfb239ee044a8d8b0dca1fd34\nd1b1c13fdec4d69ccfd264a25791a5e1\n93c38745ac281f6b8aeaf14658928f6\n910bd9a7d9ac4738d5c4dc314e25b351\ne88ce288726375ff87bf26680c510802\n6a47f4d30d54771e8782c935066e938\na675480b02f939424131d9ef9081c198\nf592e88114a240cc61a8d3163a0a75a7\n8cd5191c587341029aa2a8cabf259b68\n17ac3afd54143b797172a40a4ca640fe\nf97fa7329969bcd0ebf1d9fd44798b9b\n6da4668de7ccdd0d4d10a13d437fced6\nc5143d3be7f1d0eb27745e9b6b461e93\nf58a26c915e7a1dceae7a0fa074b4a2a\n8a050edf3d971a617b17a3f88bbfbb61\n5a815646537e3b39f51612c193433f02\nd8e8540acddacf98c1006ed55bc1a3fc\nfcd7a8834a7f26f15069db69b8c1c70\nd7f3d0503ee4ee1cc34b900bb2492e\ncdd4dc06cea48b5faae529ab4a75c4af\n72e1cdcb882b6993c1006ed55bc1a3fc\n8df8e2580639b093c1006ed55bc1a3fc\nec879d7360572a5db65bd29086fc2a67\n98480ee19ba4dc93ef5f09964a6a1f97\ne430f24c3125997339cb1b92881e8e76\nf894972de285088da0896c4491cb3db6\ncc9b7118034278fcb4cdad9a5bf52dd5\na660b01d17f929f54e61a0c2eaaabe87\n1856da25a85402ce63e266a803d9270\n23f911351a5801aa46555ee25941a22e\n4d50ff789e84e70e54eefcdc602d4520\nc8dcaeda94da8da962b600da24e0965\na211208ba6b752b1e75e6a02e772bcee\na231f85d38f2b52154eefcdc602d4520\n893c03e02dd0e1ad7d64cad20089f027\na00ed5d078c6244c37678474be485ca\nc57409c95dd4bafba5a118bd15e6e34f\n3e4b522e38ef9a781b5928ecfc4b0684\n520382dade7695c4906bca4ffd4af837\ne1a8e2f93abfc7d590baeef8ba5b93e5\na777672f17d3641f1aa9d8d95b6740cc\n9d230551c65af968b207f792ce9b3f25\n19f211f1dec98bbb82ea21d84574e1ef\n617259db5ef0b9f8bc0909d98a1ff2b4\nf4818cd7c0701fbe752556d244bfb42b\n602a71a251857294959a8a7d5a8a5077\nf405858991b190173af8c56bd4352c9\n10eeb119fd5508e0d6d949577c389a84\ndc6a2bdc4c3e630a43bc71474ad05fbf\n8406b2372f6e1478d62bfd1579f9a1c2\n30d8f7fe0da9d5d0c164bdcf3c9661ee\n439c0ad637f11af762b600da24e0965\n437de410d7c23cbb29b33c3ec58287c9\nf55390ed02c0b2b36aa3bf023a2b42a5\n26a29227d6326e20e63e266a803d9270\n57e135ae4fc03f2e6d06e36417078f\n56ec4638067cfccd3dd4ea7aa5ac3a5a\ndd48aa92170bdde04c3a35cee92bb95b\na8c4288e4027e6a319ba010ddb4974fe\nf1a4a370f9e50890686c25eb09ee7de5\n820c903c55d7a1908f0d19519a0ef908\n414f3305033ad38934f276985b6d695\n25668f59015af0de56a7f2952cdf4b81\n2599e47b04ea7a32d872dc56d048665c\n762e29f11597581d62b600da24e0965\n852e1b84dfa1f7e8e075f0bda7acfbe2\n41aafedd84a6fa7490baeef8ba5b93e5\n993599a55057f963ae7c0d0e12bd33da\n325f0b5ace799075bc0909d98a1ff2b4\na4cbb0489a3a680eca8607f540cc62ba\n73fb8c3c4530ed4bbf3143b1cb6076a\nd05cdbdddb68865d2dcd3faa5a0a5f24\n12c82319147385e7ef0e1705c5c9e361\n45c963d64b8ef3de37678474be485ca\n8a674703723db7a390baeef8ba5b93e5\n4457652c2853e0bea8cba409c4409ba9\n8af730a8f082af9167b9bb226efd81df\n52e27aecdd55c1bf5b03388497f76a9e\nbd46cedafa0568b070d98a97e17b4da3\nafa83b431ffe73a454eefcdc602d4520\na097428376f298abd872dc56d048665c\na20490d0ffcd3be6e0d6812cdcf8799b\nb4de0e888e562f40873ec74c119307b9\n5c3e308093e9f287f019a51d1a3b2e07\nb64f57298cf3e4328b96ae1a0a8b84ec\nb253d5dd187679c74a9ee9951c24bdb0\nc01746b173e0870b3a4cd082c6787017\nb3ac8c2c48af1c07ca8607f540cc62ba\nb3323a51c2c1af9937678474be485ca\n5676893c90ec0f6dab81b7399bdbb6e2\nab9e9045e6c7bc6537678474be485ca\n2e468cc6afe2da70bc0909d98a1ff2b4\n70bb20cf86fe6afe76b85a01edd4a109\n29b92db18649b64e959a8a7d5a8a5077\nfc9b408aee84f46d70c4138179d9ed97\n77dfd8d4ee3c54c3e99ea3c41458bc01\n9052a53f45d5f8487d64cad20089f027\n1e8adc1e176bc68571d03b466c72ce41\n97c12e6155fdf8ca90baeef8ba5b93e5\n525446bc8f55e629151f2df200a24ac\nf70e5f2568e927147d755f57c8fea340\n2018b7614e77d726c1ccec171a275967\n718b6f112f70146c62b600da24e0965\nb7b743834a6d78c2225a23c790f08fdd\na5ca77bfabfad028b56059027b9b30d2\n62ebe2dd7bceccd097f28f82dd9c77a2\na611fb88b28c3f2ec231d70e1e0cc567\ncb7c32bd7266daef37f38dedb2f1219\n34ffc5e29472358cae81a3776126c079\n72985b83dd9c31955dcafa83e2819ac7\n30b9882d1d75be3537678474be485ca\n93314e5d740a48049a6e43b878d5b335\nfa7cf8d11d1340ff9a6e43b878d5b335\nbc3b68407bba00d92756c2c914ecfebf\na931895438ae4502a9f468923d4ea2fd\n857350d3e780366537678474be485ca\n7584ab1da1ae2778300ca77569ad3884\nbb9ba5deec9e2a5fca8607f540cc62ba\na2661597dd2e8a2eb87697d3904b168b\n5739574537212a72b3f2b01de37c0b29\n68d3c213b16ee2a6b5f20f5912ee034d\ne09c32b947e33f619ba010ddb4974fe\n53789eb9419da78c19bf80b167cee3a3\naafb38ca8d8f27de350ef9fb5390c42a\ne0e0d713c8969b52ca8607f540cc62ba\n776c423005dbb55d354aed6327ff24db\nd0ab3ed71a4ac9319d1eb836604648db\n7f895411162624e92023ec956848b741\n59b851010f0aef7422b13c48c34706de\nf986604528abe35554eefcdc602d4520\nbbc645e0c0449532b3c7301213dfb7\nea29b3af190b00367d3b11085e75c7ad\n3fba2f3ea21abb4f8c1b0ccac3d04f1\ndadf41579d385b0aacf77e718d93f3e1\ncf71f5442c4120db37678474be485ca\n732ff6155a096fb0151f2df200a24ac\n2cd9e40d1ccb1917228c3c30d65cabe0\n35fcf4cfd91d7cb3e1211756a8e887aa\ne51b620853f2cc0137678474be485ca\nd3b9114df1d8a3388e415c6cf89025f0\n8259a1fdcb9bca7526360e1e29a956c7\na4d75675f0f871c96466a07aedd68378\n4e66465abe540ee326ccedfb0470de8f\n3fe8243b660d5e8fbc0909d98a1ff2b4\nec4f0bfd77978a1cca8607f540cc62ba\n92e445da194d65873dc5bf61ec5f5588\n6a54d956a8adb2d0e691625fb79e2c2\n35c8abfbabb0d8ea66b0983c7366318e\n1d96d1c7cfb1085e61f1ef59130c405d\ncf310fe73705eb85a099666f6cac75b0\n6812a13a1a99f0da2f20ac99f64093d\ndd949574a91719eb7ab25516d117381a\n44e08106211ff2596ed8c57a1980bb26\nb74611a3b3b3ac72ca8607f540cc62ba\n2c3ba3f35c5d2b0ce77e43d0a92bdc06\ne4e98f8654d29536dc858dada15498d2\n46ae88cad17edca7ae7c0d0e12bd33da\n8d84a34d5aac3bffc6f6da58b133bae0\ne70bd95ab764bc1b3465be15e1aa6a0c\n350d4b260bb18470f77959a47a1c16a8\n53958f924a50069090baeef8ba5b93e5\n55cdb0891d7a05fb2217d56276f279c\ndb758090dd739ee9ca68a659ecae961c\nca4443e9a37c4f0b16ade7bb280a6832\nda3ed25d281fc4c065fc5f76098aceb0\n828176e6eaee542ceb532c8487004b3c\nc7df0d3a924147a49a6e43b878d5b335\n1ba18539803c12aae75e6a02e772bcee\ndeb196087108dfbdbe4df22b15a36e0b\n69ed3801f4f6f4d1e1873a3963e0d14\n1e40d41905a9be766ed8c57a1980bb26\ne5fe5ed2cdc8b11d62b600da24e0965\ndb628662ba1cac04b627754c4259e985\n8c851663113c3f6790baeef8ba5b93e5\n125417c3fa9bc1b130f57e42c77d3894\n813927b25c3a0c6dff227f13dbef5a8d\n543412ccea0db2f8f37f38dedb2f1219\n5a5e4590c54a70c6322c168d7a7c32f4\nb3d034788411421019ba010ddb4974fe\nc9f91acaeea4136f2863c6a2c8157d17\n9ac7fb5963ae673f7d64cad20089f027\ne45d71c7afb3cb1c67629418bd553f95\n8855c5531c093275146f724acb952fba\n413a85d9cc7f19a8b6c3e7b944b34fa\n649a8f44ccc86f4843513dd632697ccb\naaefbfb4765df684cf9f662004cc77d8\n54066a3cdb79ac8fa5cbab5aded19a14\n9912e7eaab960bf0e3639a60ffa58b1e\n18d123aaef6b911954eefcdc602d4520\nab2f47cda3622573c231d70e1e0cc567\n86099a00dd63ac05aac413eef609e99b\n1caa02b831cccff090baeef8ba5b93e5\n9e75560008080a8529348d14ca881f7d\n9a04c7aa6e1655fc90baeef8ba5b93e5\n8adc6a0f45a1ef2e71d03b466c72ce41\nd3f93b6da62fae46a98ae8c73b190485\nd38922599bc74f6da30fd8ce49679098\nafd02e6d4cf0a342c1ccec171a275967\nc3733e626c07b9ff26360e1e29a956c7\n333278f95a359498e768735f27170bc4\ncda1206f9460ece9868255f726935f63\n19b6112991fb8e33f3f2af1b43965204\n7030044b49828f08b96ae1a0a8b84ec\n52e7f93d592622a9615ba7bf3620290d\n57a57f639a3e636d914c075742032f6\ne557af9d5aa40f424d210d9468aedaf2\na3c928995562fca8ca8607f540cc62ba\nc93d0663035962b01b1cc145b0144991\n371a609f050b4ed3f6497dc58a9a6f8a\n3427fa8e6ea160f1fd138baf628cf158\n9a58779da170911a7a571401e6605fc2\nf34a66147493f0633d5158710d6fb8\n8bfcf5618f2d169c9a6e43b878d5b335\nb10ab8efa0aed59e90baeef8ba5b93e5\nbe92048655bc5b001d4c061b53288f62\n3badd7765618bd66a532a2f6f060af39\n4fb69651d04e010554eefcdc602d4520\n3c80dde1fb615ff5ca8607f540cc62ba\n84a167f743ec4f4de6f558e7f4a68d3\n720d70482d13696277fd7318510b8627\ne5abd988cb34ed9cdc82b8fee1057b30\n62aecdd1266b27935fc197bbabcd5bd\n4fbdfec0f9ee078dc1ccec171a275967\n775120d01da7a7cc666b8bccf7d1f46a\n856a4d86ea105d97be13ce34aa7c0c1c\ndcb5bded8772135b4295343ee7255799\n729aa8cba8e1398a43afdb9c81ff2967\ne6908f525ab8e6823a562128d0cdc8f1\n1e7dbf0057e067586e88b250ea6544d0\nee461612837ce39eedd03f781ec3ebcf\nf58b4ed02fc2fd1d4e7648015fd29a1c\n29c0b705d6368b6ef0483511b875f0d2\ned0a9a32a8e35f21ca8607f540cc62ba\n845d7718879d26f9a45fa73059b12336\n8f4e31ee9912f54e77fd7318510b8627\n326e859d86a8078427eb9e7911a17418\nb174db77afdcdd055b2a16b1d9c48e6b\n24cc8816b384723510a7b8c5fa89c603\naad69c419b27d6744d8e7d3c15c98c3b\n870dc1667e957672c66e7238ddb322f4\ne9b29777e840e1fb63737f7c5d9fc39b\na1ce38065b93520335fc197bbabcd5bd\n78feacec03272b28854fbae23376cbfe\n4e1dfdfdd417479f49e1f7e01fe2ed1\nac026df0c0add322f37f38dedb2f1219\n208114e3aafd381ef27c5ff0af8b0e80\necd19c1f74064962c6603e997b54421a\n79e06d1fe2e217b2cf67c0b63878e138\n93da50dbee3d1f78a7d0c1e4eb8db7dc\ne805624480f632ebcc14f1e6f4f4f49b\n7f837b389e885af471b4c018296f73c7\n4982bea0a007c19593b2f224b3acb952\ne533a1a758a1752b187ea8c086d9f2c\nc1b9934ddbf4f29e77fd7318510b8627\n898b4899114d9bb890baeef8ba5b93e5\na991428cd388fa7278afdab27190395e\n541c19fe42806c4d26360e1e29a956c7\nae837be3456bd54f71d03b466c72ce41\n2a966a7e0b07a5239a6e43b878d5b335\n341f5b3c74970a618d0dbc7502fb16f2\neb5baf7bb88c1499873ec74c119307b9\n46c311894026d9a762b600da24e0965\n33c6568fd4de5aaf1e623da3c4e40c05\n52cd5876945106d154eefcdc602d4520\n5d81abbccc11935b4d4cb1c2a5e48b7a\n28448469f5bce47b4ddd8a480b571bd7\n7b4b931c5b6f8167295338c0e33a082c\ne6236c5ec784a48111dcece1819895c0\n791af615e17374d38eeaefe98ae26867\n10c7cdfdffe2243b88a89a28f04ce622\n62ea17b5f0d46e2288a89a28f04ce622\n951358ab93e7380c1ccec171a275967\nb4f41b2faeb528fbf37f38dedb2f1219\ne6ed2c677e158daa1059f490634fcf62\nab06b28f95e4c2caca8607f540cc62ba\nc3a03137955f65c5cf67c0b63878e138\nb3fbc7a0b0e3a821fd279055f27928f7\n5e44d38e88458ab1e1873a3963e0d14\n88c4ef9645eee90866876073bf7a9ab0\nbcaf04bfae3afc1f4d48ad32fb72c8ce\nc878cac87819f01490baeef8ba5b93e5\nb97b9cde30c23b4d71d03b466c72ce41\nd2faf50d6d88dd0690baeef8ba5b93e5\ncc1e143cf7da051a6a6dc7e2bbcd098\nfb48754430b17846e3375a6b96a1d765\n5e124107cb94b90218ad244e2cb2c6cb\n4e2769ec84c0bd0454eefcdc602d4520\ne594754cc2a264d63da2ae40e7681e7e\n157936971ef9b6bb858b20d410ebdb99\naad1733e7bc7152bcc14f1e6f4f4f49b\n9f75309b9744f1b54eefcdc602d4520\n967b1afce4221816cf67c0b63878e138\nd1e78f6226a9ac76fb2fba771d8219ff\n750000e25d4078f64e61a0c2eaaabe87\n965d457720def9a490b1d6deb98feec6\n4937396b74bc16eaf781741e31f0df4\n6e5810d6fc96e4a7db73445864b72015\ne8bd07a978ac82baef40e4c1c2686cd3\nf9cd8293c30f1aaab87697d3904b168b\nd1b28579fde95f19e1873a3963e0d14\nb98a46b40d030e8a26360e1e29a956c7\nded529516b4362c9f019a51d1a3b2e07\n7f4a0b23f1256c879a6e43b878d5b335\n2bfd3dc8b0630de9e1873a3963e0d14\nc6009ba1bf947303ca8607f540cc62ba\naabbf242aabd1af7766c6046535346e7\n4782920ddfdeef4ef6bd63e31c40dc1\nfdb107ea7a600f5fe3f3aec01b086ba\nd2daef39d1cb8d027089ddd41f4af842\nf1df46c588524ee76aa3bf023a2b42a5\n5d1594f792f3641583a1f09b027e5462\n575b8ec48c550f456252573e97057236\nd6749fad86648a9719ba010ddb4974fe\n4515ac65d312fdbdb63361ca9ddfc9ae\n5f7f0545eba4034965e692ae5160ef\nb9f486be9d0160349a6e43b878d5b335\n6df2cf3685456b4c2e78e1154b9a2647\nfb01f6b428d094ad3ec83bd6bef75c92\na42bfdd67b3fc9926b2f6b824c9990c0\n795e0051d9ce7dfe384d4ad42dbd0045\n52c9b1a9f8d3cbcb9a6e43b878d5b335\n3b9241e85d07de6a8b6c3e7b944b34fa\n53f0e2f6671346ae5ff3feb917a6004b\naafbf69ed97274cd462a084c3c6d8557\n9712035b78970ca71e623da3c4e40c05\na4f5ce5926123e472e78e1154b9a2647\n5c9e30bf0691c04d4c3a35cee92bb95b\nd9d39f688eb9ba58b3f2b01de37c0b29\n8615e879f5d72ed5860c8fc9227db68d\n91a00801903a1f64bc0909d98a1ff2b4\n455bcf19112ebab52e78e1154b9a2647\n300a0c78e402decd7e67bd3e242c324\n3c9d577c78dcc3904c3a35cee92bb95b\n8938ab05c9dd830cb422638f4c34a0ac\nccdec989c4ca289d9a6e43b878d5b335\n9e06044df59e7f9f953041d9e16fa262\n3039adb37c192644f8c6d04d97f8cf7\n365747560fafc7e847b5c8181a9fe9a3\na61a59a4c48154db37678474be485ca\n85738a291d67c649f019a51d1a3b2e07\nef0d51f895cee0e04485f82d9fa383bf\n9759b89377e9d3f454eefcdc602d4520\nd1119217281b8475fe755e3418b63110\ndb8ee29417ddae1bae6908c1ddfd8734\nba37c8ef604b675be1873a3963e0d14\n9a9f615801c2dfff4d210d9468aedaf2\n4992d4c425b3cb426e8204b21fc3574b\n5aca1a2ca9143638b129901f80d24b7b\n97a6bb84720f250122df1994a149e700\n3923b98b26a3c7865f50257ecdfa5c7\n6cf2f9112ffae7c3be54b70092ca256\n7336bffce72ea58b90baeef8ba5b93e5\n9cda097e69ef82beace5721ccacba16\nbed589371c324e896aa3bf023a2b42a5\nb4b1b113173a6ec6bbf3143b1cb6076a\n47006ce926cd5519b3f2b01de37c0b29\nc3408a7be501f09070d98a97e17b4da3\nd4ed7de4aa7799f066cf1b4a8fc3914e\ne1fbbf2ea1989b49fb2ad20449a93a60\n63f3edb47c67caa29a6e43b878d5b335\n6e66c96067f3c631ce58b9b5a8f9e3b2\n6dead775080763b94c3a35cee92bb95b\n20b6bc7d69902db4d3ccdbb72feef61f\n74b0d11834cd8ec258a4fbb6b625be1\naecd996b2ec3832771d03b466c72ce41\n33c8abb3658f2d4219e06ee1b2e7b1b4\nfc0dbd045c9391ce4a29fef5d2b2f3d7\ndfa310706fad49d873ec74c119307b9\nbb26678e5faaed16300ca77569ad3884\n830f3e14a8882ea0f4fb6842b3610149\n87ac28e0b2342ac19a6e43b878d5b335\nad2bebd9c3004b2e151f2df200a24ac\n7488f87b1e08bbabd00d52e62bf14ee9\n71a96b4e134ceaacbfacbd9a73055b6e\ned1a5c9fac829d17a6766282ea8c438f\n31d5be3944350915efde2c2b27dc1843\n17e66cd463ff0de126360e1e29a956c7\n483207a72a39129771d03b466c72ce41\ne41bbd12896cdc724d210d9468aedaf2\n7db10020f24a3232abf03860b8d62488\n1560968d05cd8887cc14f1e6f4f4f49b\nc6342ca5cf5c445cbd46d022fd7d80aa\n1ed9876ed48c145d663e90eaf6b4ca52\n47331e4c26dd1dbc66cf1b4a8fc3914e\nc854bf983f2404bc15d4d2fdca08573e\ne88e090caa1ccc5d187bd96066d7269e\n2269715ca42c218fe3921ab5df3d2707\n7bc46908d079551eed02ab0379740cae\nf258c40371334a4e90b1d6deb98feec6\n149702d4e275568c18b14db3b83de9ff\nc7ae9f9e3f95ce76adecb6fc00604132\nbad8f0b4602df33fbe4274edc10c1c8e\n408af35642971375be13ce34aa7c0c1c\n654a5b26c59c12e5d2c4ce8118ff5045\nd6edd8b0801a02baf7571913c73c0c78\nd80486b768083cd6ba0d990ae229b477\nc48af98d47f76002deed0e4a55ad5dd6\n399449fd9e6149de62b600da24e0965\ne74b8862468d887c6d9b5a419d9131\n78bd38a7282a73f8b184ba15dd506a2d\nc2ea74539ffe96f8be4274edc10c1c8e\n45bd6c0723e555d4ba2821676102936\nfbe788465e564e46bc0909d98a1ff2b4\ne66692f2ec8ea898874f1daffc45b57c\n15ce56898a636466afc526de59117398\n8c622c7e0b15a0243ec67cba9d24f2c9\n9267c510247327a2297d46b42718e32f\n222c0d99446148babe4274edc10c1c8e\n4cb164f1fce7849762b600da24e0965\n2fb78c8d2f27598826360e1e29a956c7\nc9ad8451915ebe6bbd46d022fd7d80aa\n76f142e62adc0f2ae768735f27170bc4\n46c07706f1bd10fcf9cf2c77edbc841c\nb2509e9f52a19466c1006ed55bc1a3fc\nbf54b050d092d1e35b5e900e37653d26\n97bd6259fd4dd69a90baeef8ba5b93e5\n6ad619600049376a4aa57d4816c68a3\n47bb2e8a53331a2f3554ccf8c30febe7\n15442b53631b7e88232438a710acf1da\nf6373cc88634e8ddaf781741e31f0df4\nd532a5abb756ebebcc14f1e6f4f4f49b\ndf7313e87ef2905d37678474be485ca\n78789e98f905fcdd9107f68a9cb8e3c\nf067fb1b12badf2b732bda87f2718525\n38efd4e4060d8b4ec231d70e1e0cc567\n18666bda4244d22ca7aff2c3136e8e59\n186ca7892ed6de2adb22b838c125a50b\n7a95a024f5616009ab21e26e992b2c94\n6615d159d2e250376969ef231a00a44b\n6b84749eaca0e657f37f38dedb2f1219\nd1e3bba19cb9447dcf6c095014f481a4\na0095db392a8b520884a857d19f7439f\ndc28756381ac019ac2912ef1a1302821\n14453b29e139d81f6d07c55cf995503e\n60232dad38a6ec709a6e43b878d5b335\n8f4416cb67c3807bcf155ddc002a8f77\nbb8c3e64da2788b98057ec2068d8fa1\nedb916c2cdc2d3b9ce2cec85ea6ae00d\ncc14512d5fe6e8489a6e43b878d5b335\n20f2a121d9dbbf9e98494085d68ad6a0\n14282db0ca4238429a6e43b878d5b335\n3fc25f2cd192f7d262b600da24e0965\nc1fd4eb9f911851f4352ea917328a5b\n71ad36bd32ad44a0c503a3776fc280fe\n7c4e1ab21e8d6549a46ec065c01b381\n723921d0060203a344d33ea02fa0f619\n7713f76f4ef99f19954990879891d2b\n228478022f30a2bef1f87579d4dedbb4\n3fa6a05b62169e0d2350d07acbcc057a\nddc14c7e0a228663796843908eee8f7d\n6adda4af6b2b7bf9f315217de00e37bb\nf27927b066b0696d1f95d2b537942ba5\nbb38d29611ba34572af1006be0f51835\nfbd800d43c5f0d74250cb4f7fcd9ec03\ndc03e743739c4f87c27f2d9f006d69eb\n7089929d7a778403e91b0867f5d9629f\nc7b2f5b125bc41056d07c55cf995503e\n194098fb0aefc4a0666bd6da67d3abc2\nd48064100e793155f56a7ca118af1bd1\nd1d308692cb4b6059a6e43b878d5b335\ned35478403ae873943cf31d2bcc8f4\n121e9fceb90440efed79d3bd546890bd\ndfdcc024d1043c73d5dc0e7cb9b4e7b6\n4ec2aff45e8c495a667f1f26ed74631c\n3fc5fb97d23b6bf111f78b196c636566\n5afdfdbb4161ce0a7456183f198fd1e9\n266ba93989037e6d48e8405d6c51a908\n51c0b132806335051592a2f89cfd307e\n1659db64bbf46bcdc1955ee4b5680e91\n5d5aefde5935fc9eaa5d0ddd6a2781ea\na1e5e9561b501f2a19e06ee1b2e7b1b4\ne2a6bed8b8920586c7a2c209f9742f15\nde7cc3442b1775d46559a92f80e3672e\nbb244dba6323f80a126bd036879e7101\ne559a626d0ef8b4f982014dd9aabdeeb\n3c98bc293d33375a9a6e43b878d5b335\n9facc516914dcfee6c32d954b1c7f41e\n228fcd24cea34febc0909d98a1ff2b4\n487c60f57489506d5d515fd83cfe3891\n739c8cadb1db6db39a6e43b878d5b335\n46c52edc6107d1a3505ae8d422ba349d\n6dd16a06f0e9a286bfc945be58e73eac\n6ca40d19374c9d735c5f85af1b625f04\n7edf83742bece6be7cc4b32c704a58d2\n6e7bc6995080fe6542ca265836030911\n79a62c385180cc51da67790f4274f014\ndb567b8afbaaa95060a762246a709d46\n48836d07312f930223e2b52fb0c019e0\ne1be99a614c85c3e2016648502c798bf\n395cb914880adc105b50b4451364cc2c\n688930b9d0e06ead9a6e43b878d5b335\nf50eba69a3be1a1e536cfc00d8c31ac5\n422700fbef58a0ee1fd12d3807585791\n515b1b36d9f7721a903a13c314c66013\nda7354a90e6596e6139336f03eb955d2\n2ebfd5fec5c0bc85a52a419d042ca7b5\nf0137228f926dd464f8327dbe71ce85c\n3b529633bdd49dc1e5dbe91fa3801c4c\nfb68077d405c233ef879f4163a3ec7b\n7201f2a0f410dd0ea79efb489d71d723\n7191b4709d5142a1f86c2bd4e090c60d\nd581b2e10f8bc6aecc1d733a19631a1\n95240a3e33d607bd88803e631d9fa455\nd438a4539d8068fd44601c64497858af\nadad9536c34c673862b600da24e0965\n23d5975dd63000eb4e901b3386f76d65\n7a3392340af9ec7b62b600da24e0965\n130d3f27fb083eebc0909d98a1ff2b4\n697b4a3b6a380443c503a3776fc280fe\n284e6431669d46fd44797ce00623b3fd\na28b92f0ed237d6d13256b8319a93100\nfbebcde2d8fbf81ee7cf320ab5761d45\n157bb84c08754307dff9b4d1071b12d7\ndc3bfc83bc2d1db643afdb9c81ff2967\n45251b4f76c9a840139336f03eb955d2\n960d086565fd36def0a9e4c23bc75c0\ncaab31ecfe961086bc0909d98a1ff2b4\n297316f1c8a6f59bd007e7980e2b01ba\n32d9fe9366da899b90b73cf2bf8fe3d1\n645b2bf682e865ab9a6e43b878d5b335\nff725af6df1b76207b164268a44f7712\n2c97e6b2c92913cac1ccec171a275967\nddfbeb997ef83cab884a857d19f7439f\n9c7395d87c59aa54a79f2ed56427c6e6\n1974f6955c36c2aece2cec85ea6ae00d\n89a6af782a025acc62b600da24e0965\nd172705764e25e20884a857d19f7439f\n2228845a400dbad30fb60bd5470eb25\n133937bd45f953748be6919d4632fec1\n1a74b169a76e651ebc0909d98a1ff2b4\nfd0e59013a16eb5184306f3bf0a1f2d7\nae3556f7151098b0f64801ad2940cdd5\n28da27a6bebc81df62b600da24e0965\na60cd34f71c3c0549288437ebbe47284\nb42620c214ca7cfc44deee06752bbfaa\n558d3d7e6e78f2d941756cc47b70ca20\n3390c5050cda83c09a6e43b878d5b335\na68e67e5fa7ae694d9a7daf2d70e57bd\n7628e525228e5a2d9a46ec065c01b381\ndab7d624889233a863dc0bc8d259b20e\nc85e3f6c572581de7d3b11085e75c7ad\n9b09169e0a2b8650dcadc22bf3c23ace\na3c1b9b0c75af9a65cbd1a70b5b90a8\n645cccbc057c79cdcc57882dfaef8a57\n60af3c930040c8b915d4d2fdca08573e\n9912b47f0efc512b8d548f89c1029ea3\n4afcc2cf695baea99a6e43b878d5b335\n49611834b200ece04c3a35cee92bb95b\nd130dd0c96152140bc0909d98a1ff2b4\n7b4b249f1d3400e488be2a30dd556a09\n634de14a7721145fb3f2b01de37c0b29\n1c93b0eb9c313f5d9a6e43b878d5b335\na1017765200c668c6ecd5ddc73f570a8\n2b8bcb6e208a69b16a3383b58c4a9330\n787d2fbb247c04266818a2bd5aa39c80\nb26d238e335c59b567b13a456b2224a6\n49e9aa7ffa2b1a25e9d8a35d7a1fb08d\n89a6407ce86efaeee1211756a8e887aa\n29925f23c2050efa7def3dd22d9ef72\nf5a667f5796b9a0b9a6e43b878d5b335\nb5b6f5ed2031f34cec7a415ac918303f\n4ba7b11cd496e3be69176f0174b7620c\n27c409ead0c4e34c9a6e43b878d5b335\n7feab568d879270dd8d90babf3c5509a\n480d027eea9830b511c04c8a3e94088\n5608c1b40a0c2fc9c2912ef1a1302821\nd37781e47470fa3d664a56105f5816ce\n7054f98cc8af397f9a6e43b878d5b335\n3a3d4a90a2db90b4203936772104a82d\n4fccf49d6356c756b833a96759a020e2\n76788a2758e938f435fc197bbabcd5bd\n45801aa10db0636d4694b8455e89054\n6b8bd13bb6c2589db61f9d3f64979662\ncdeb868930b32468f879f4163a3ec7b\n7401bcbb1a184bf548627a76b6268107\n5c6590461085c93ea91e80f26309099e\n987e67ef16969b93663e90eaf6b4ca52\n847bfe2bea87c55b2d49d91e9a282aa0\n65960aceecc9d6f88388594197e843d8\n4853e07c17127af7df92be10876fa000\n1850f4acdfb738bd7456183f198fd1e9\n49e21b81565a51e6493c5f51f14398c7\n1eb3af39d93c8bf2ddea2f4a0e0f0d2e\ncb744ec78dd320efd2c2bfa672ed621f\n4ed5983b7721f1da7f79d93424b708f0\nb9e1ba3782922bab6ad6a28101cd3ecd\n1914552110aa5a61c1006ed55bc1a3fc\nc88275e49bc23ee41af5817af570225e\n117830993cc5887726587cb13c78fb9b\n1bea1445065705eb37abdc1aa610476c\nda6faddc7079ce8ab6befd5df74fffa2\n1272dd98c66f13579a6e43b878d5b335\n1322a9cabb1517219a6e43b878d5b335\na96c1589731b06a1efbd0f357ff7c40a\nba0f83a82b18613d2350d07acbcc057a\n24fbe7a49fd786c5fb5c1b0f759e2bc1\n6a9b8fd1f4ddd87f152be1f5910e33df\n40dc09d726aa6325ce2cec85ea6ae00d\n1890f6391df25286394b1e418d5c594\na0d3a490ee1b74762a4947824596dce3\n56bb8130f49b481e230ac8907b9b7f90\n47a4ed133dd37264521546825315c695\na85dbb5bb889881419bf80b167cee3a3\n653665e9c401e7ce6b310cbbfd03b8ce\n9e8ab1862683399f570726399d67ccc3\n2aac22a33893fad8b96ae1a0a8b84ec\n62e29787d3623618575bf8a4b14be4f4\nf998bb1b62da4d06d3a1a47fb9b678\nb6d2c4beaec0520e9a6e43b878d5b335\n40b916f7c41ad451494ac047ec5b052e\n1021a0914a7207aff927ed529ad90a11\n6d119be1286c7b129a6e43b878d5b335\nba784e6de35a5c6b4f8a08a5e6b028e7\n5c306ddfcc08ea1b230ac8907b9b7f90\n7182efccab0d3553c27f2d9f006d69eb\n30c0995dcb7c10039a6e43b878d5b335\n80770c90ba84524e825b20c2472ad90a\n50040de261741893fb5c1b0f759e2bc1\n523f1c2392338cf2b7f9c6f6b7bee458\n45570756a871989cfb5c1b0f759e2bc1\nffef991d85e3136a9a6e43b878d5b335\n226e3f0a844a3b4a77fd7318510b8627\nf222d51d7c6fedc2db73445864b72015\n3692c62cd29c6f1378a64d47db225ea2\n142acab4424009a123fc69eefd95e6d3\ne3b06cf8bea9a6a5c1006ed55bc1a3fc\n4b20c1736440ff9d90dd6eb126f6cbbb\nf8bc6483dd3c87085df50a69f2f8e096\nd31a0f4f945775de5823df672991ed66\n3547cdf24eeabdc925194e2abdb4c403\n48996e27f430ce286f67a5681eaf4d9f\n18e86ba0172154f3bc0909d98a1ff2b4\naa5cdbe94abd2ee15042e5fc5b753f1\n2c4228b79cf44778b96ae1a0a8b84ec\n35e2eceef33804d8196c5820729d438f\n54d49185bcda732a91e8833d3c500d73\n36393e03ed11f78461f1ef59130c405d\n9618b78610150b53825b20c2472ad90a\n20d97069df784e19a80799ffaf21ea7d\n47e48c70040beb9c8db97d9bc169245\n13ea0a2ac279dbaa5e9e2656aff7dd5b\n7981eae34c05e8409a6e43b878d5b335\n14ec1da5f5499d83bc0909d98a1ff2b4\n3cb63efff711cfc035fc197bbabcd5bd\n2bc9a8aa5826f7335fc197bbabcd5bd\n1b171503b1d0a074bc0909d98a1ff2b4\n35055f849da2cf0ec3fe7930fce05ded\n103c9e43cdf6501c62b600da24e0965\n32e8412ce01e63c1a47575cd04a1d851\n3656c9bbd79f6e29f6439977935c2784\n2767994ce3078824f38bce64a8733419\n92b7d0035cefb816d13ef00338ba8c52\n6c3593d0cc398e715d058822e4c8a2a8\ndf6aae66a8c378ae9029a69fa5fc9ad\n7cabdedabd1d65bdfb86dddee1d6ac3\n177fadcfa6b4a8346aa3bf023a2b42a5\nb9c8536f91ec3bcd3aff44a57f77b39\n3cdf7ea70c5a8471f446f92b52bbd82a\nb5d0ae4f723bce81f119374ee5d5f944\na90230831ba263e5f7fe0727acb55c39\n47b409c5c80dd7c533de69c9cd670995\nf7f69ecc4ff199ec5e9e2656aff7dd5b\n52a1b6e8177805cf53a728ba6e36dfae\n5a12bc3a78c510cb366a5992755f2322\n5b76fbabde77889c99399ee63318a21b\n19fc1b9ff4b6456f1232236eecec447b\n7dc614fd957186cf216b327569dd806e\n14161a05a21cbd6f62b600da24e0965\nb8df5a1fb0fa198a9a162c818d22a620\n85d3691b7bde76548b96ae1a0a8b84ec\nb51c1bb30371852fa325f626d0051e24\nf9fb41a3b1f59bb027745e9b6b461e93\n2b62a8a0bcac6f22e1873a3963e0d14\n121b5c1c81aa77906b153e6e0582b3ac\n1304ef60fe9793f685e0a2007a11e92f\n4e67ea4fbcd0d9a4bfb056e4de687088\n6a242ce20c44e82bcc14f1e6f4f4f49b\nce9246d409f1c688bc0909d98a1ff2b4\n132111c575000a3c146e44cc99f07c52\n74ebf601d9c872a7828204947d78b9af\nb45e5b92bb4623ff151f2df200a24ac\n6d432caaa8eba4fb44b2fa2cac0778f5\ne2f91794c302f5c03221f63172285740\nbd066f14adf6c0a9f6639976815d96b\n4de653411d132abdf1e2558bb9cfc329\na5cdc19967a8f69fedf24d76037ce02d\neae54f8d47cf07c0aeec93871310e650\n2cf6583a74dc4d1e373ed874fe97420b\nee30cf94a209a45b91d43bb96e1bb0b1\n130934b3dd2fddfaaf4f36f817f09501\n98b5a3a8e2ab94ccce19d55bc5e6a406\n95f7a9754cba79469a6e43b878d5b335\n4396510f1346f13050586f69625e08a2\n6311138687290f8a505ae8d422ba349d\nede14aa589c68280216b327569dd806e\n16b2f62791bd9f003554ccf8c30febe7\n3ca058682dfe98f7f678b53750b6d181\nc68efb547224f1dbed4212b3ec7c4371\n816935cac027310d5e9e2656aff7dd5b\n1490a4ae04d453784f856435f28995af\n1345cd9d0da6d149c6f6da58b133bae0\n1e4fb40e5908f2bddf2f34e1100f0241\ncf4c2d7d836c781e5a59e179e114b9a7\n72d96bac651bc74c7af159eaf7625abf\n4e4ae13865bf47f41adbb4c4e06ad649\nec4cd947eb2ee3103554ccf8c30febe7\ndf411aa240fe48d5855eb7906a7a7a04\na3927542339a2c491b1cc145b0144991\n13daaef458d6bb11e1873a3963e0d14\n425619faec43ba86a000a5a61b867bca\n124062ccaeae95085e9e2656aff7dd5b\na5be00166e57ce5dd92de1e594e3dc28\n1f86a689ea6c35f0d9da70c3ab6dcf3b\n1b300fd9ad4050e6301fa0a0663ee996\n995d06b3afb755eef446f92b52bbd82a\n7826147390af0f9d1fbc781ac25c5c7a\neb4396ab17012b3c9a6e43b878d5b335\n5d7b52a58c667ca835fc197bbabcd5bd\nbce1b10c92fb9fc81b7a4091d85f2e8d\nd3b39374c97d39da7dc01d89d8a05b74\n12e6e5f07b3aad3c5b9f44d7cd72a051\n133b74393a3349aa70c4138179d9ed97\ndf8bb967a346ccc25e9e2656aff7dd5b\n688c645ad207773f5c3e79a10705422c\ne60b86c7a4015490e5a760ec65004efd\n29ff751f989bdcfc9bff604afc480b65\n3a18489f9615a350e768735f27170bc4\nde863b025e53c9a63554ccf8c30febe7\n6dfde67c8b905939bc0909d98a1ff2b4\n5b815e2726656685823df672991ed66\n146533404a778665c93b40751084c22\ndbc521b1d4c2d308303d346f4be7d4f\n596c6e1e27b102aedf9d17a71b5ddec2\n41afa42c77cd167c2b5147716975ed8a\n5ff1cd7d4fc48c864b6d6a3a20b9f7f\n24c499191b85dd55bf4fc6675b9d12fc\nad85ce4dde9fde14a13757cba42c461a\n5eb91263da1f0bf3e816c75152573ee0\n37d32db3143814fd9a55c6af6f4b2bb3\n647a8f5c79b54910f6c0d5cf01fdaf45\n5c7729a3c482d77542c20743f866e1a6\nc85079e83e463fac65f50257ecdfa5c7\nf16381a160f20bc4a3b534252984039\n40278c4bbf6c1f3d9642905e5096dbcb\na80a6ec94928f7dfe87d0cb113e517d2\na82400edb160c18fc8727b27ee96a4b7\n94b0675bb9f2a7fdf8a8bda5d07839b5\n43c5f85e9a10071cb1bb46d2556ba67d\n5958285db82a82cbc0909d98a1ff2b4\n48fc59725119ac1133de69c9cd670995\n561bab672a9e12352c1752d7966dcc0\n45574293b59c62ff301fa0a0663ee996\nfae6ae6ef62cfa107b164268a44f7712\n42b63c881861105ccc14f1e6f4f4f49b\n67b2e9282e92abe110ac482828ea39f\n4ce24828099fdb5e744ca709c13b7abe\nab8eadee08cba8d8303d346f4be7d4f\nc76f2214e133a81adbafc7250d0654e\nde45798ef57fe2d131b4f9e586a6d334\n2e235eafe787ad029a6e43b878d5b335\ne7c6e2f7c5fd372e8e9091d822257500\naa3a317001bb8617f7fe0727acb55c39\n1a29042e20ab6f005e9e2656aff7dd5b\n2de92a57e410020cc231d70e1e0cc567\n5f9707e5f6b820275823df672991ed66\n77a1744ee3c37f9b6aa3bf023a2b42a5\n137acaae47b50659348e240586a3f6f8\nf1ef7546cc85a1815823df672991ed66\n572d374ddb49e77a828204947d78b9af\nef26ad836cd29010f2acf00738ce9d0d\n34ef846a22c6a6ac5e9e2656aff7dd5b\n97e58a98eeee184565d73e2944dbef1d\n845364350601ca0cbdf0b44e2f8f4e6d\n98ca06c300ad5a6bdc9181d6fa468db3\n519f1ddcbf942a76a71b0c9b506dc672\n611c65a9a9099c6121e570d3da54bf9d\n48bcce07b0baf689d9e6f00e848ea18\n3cbc83ba49edeccebc0909d98a1ff2b4\n4063fb031d8fb78e505ae8d422ba349d\n46a1b199bd63c0b4505ae8d422ba349d\n16079ddc92f4c9efd677715e63c14038\n52a6ae9074397d5f65f50257ecdfa5c7\n48d03ffabd0399f4303510f9a56d94fe\n420eb46efaa81427b60ce16063f0788e\n1b3c6b2fbcf834cf62b600da24e0965\n589e5b24b3b0e30e2620819ddac40644\n18d0da47a238945abc0909d98a1ff2b4\n1597cbeb8266af206aa3bf023a2b42a5\n1de008320c90274d366b1ebd023111a8\n55b7a2661bffdf9d55a352cb563d3195\nc61f67c3f03b10537f3efc94c2d31dc5\n3998242c3442e04265e04abc9923b374\n2f7253f8fd1a6a999a6e43b878d5b335\n2494cb5facfe7b1f85e0a2007a11e92f\n96a69c2add6d55379a6e43b878d5b335\n380e9e8c3ef07372acd7e882b88d2b\n7a80f3950b5e31f6b0d51feef5761dce\n12a1ac26d29ed1083554ccf8c30febe7\n11def84f9fe8ab0acd726e804e5d7a\n472e6c2a77198432e1211756a8e887aa\n3cd1b98f12d2a22bf3ad4b0977199f23\n34d467fc26232f53f36024ed2c0874a7\ne409d714620161c132fa725d7a62a02a\n229cd78f9ac3e77c8b96ae1a0a8b84ec\n839a950d0264cbb89a162c818d22a620\n29b3b168322ac49448d2ba4615e03b21\na839663396fe378a896facc4c7b99761\n3b95867a47a8afafe593bc205a118b49\ne039c9760ca026cc6aa3bf023a2b42a5\n2ce02b8bb91ecd05c503a3776fc280fe\n86590fb6310cf7361f1ef59130c405d\n347d86d7001cef01232236eecec447b\n1482d7a9e529dde7340461a254c1a95\n1943ee06ecb139819330265a9fff38de\n84615b34a2c8a2868699933784576e73\n895939bb0da197f8303d346f4be7d4f\n5fe313e070d6fc4e2620819ddac40644\n842e5dcd452f34aa8caa71b1fbf7fb98\n96409ee8309b4c679c72d95bbb12b7e8\n85743f17e13271e0709eb7790ef48e0c\n61c804d4751079962df73a6189a3b87\n1a32f10b20170883663e90eaf6b4ca52\nb9006dadc7ae7f7d21afc48d963f897\n9ff7d7d71bcf50ff4fb6842b3610149\n1026dd1b26120799107f68a9cb8e3c\n122963149f6a04272620819ddac40644\n1e8c56bac4e66672e85e222f6559b47\n66b9ccf5842ed7f79330265a9fff38de\nefc7d4fb87937413dc13452e3008005b\n5f2f19cff434d86ceee9782f3a645bc4\n1954754c791e4571873ec74c119307b9\nd60ec60e091e9d7ade125dc914c4bb9c\n8def338aaf898d6c26479a182158bae5\n53c27d3031f6f97e402be9c8dff728f8\n12d15ac778df6e4562b600da24e0965\n1496504f42de2eef8b96ae1a0a8b84ec\n1e827425b289432e8b96ae1a0a8b84ec\n23616b4d03c5bac61232236eecec447b\n1825c91c5f2da4bab12962b43f188cbb\n75fd28838e0fc8cf5b1edf5d4f643136\n52ef4ccb24accbb295673ce3194af95e\n26bc67e3ecda6aa1adbb4c4e06ad649\nb3135ae5bad8cc23cbaac693398e53fa\n32fb1aca48b3a0d197eae247c9b1df47\n985e020b26adf663acd7e882b88d2b\n85462aa8b58d5a1ae753c4c9af8a19d7\n1f47381312c9bebc9bff604afc480b65\n420efeb902ba9c9f47f9199352b2dddb\neb2fbd46563e23635fc197bbabcd5bd\n2c77ff96a9b46996b963df94d2f21069\n3788ee24009c65cb4d210d9468aedaf2\n29374d5ffdb23451e1f2a1daf140ac9f\neee96e21bf51ee6ce719b5362fe06bbb\n3a756cbf87c9a6c64d210d9468aedaf2\nd629589ee52d48ee4d210d9468aedaf2\n6ba3a181a40ac7aa35fc197bbabcd5bd\nb0599ecbf78aa615a8e091cb544689d5\n4d97f6fcb6886f49cc14f1e6f4f4f49b\nda12fdb456d5fb588b96ae1a0a8b84ec\nfd7c74a05072d3befef192e05c55dcd3\n5a3344eee5b27e670da4e1131665650\n209e9845a482333c77c06b43df2749d\n552871abb864d06d35fc197bbabcd5bd\n3baa3ca477d17e1a61f1ef59130c405d\naf6cf1d2b6c00b1233de69c9cd670995\nf350f4836dcd13541b1cc145b0144991\nb4d64b689e870d1b828204947d78b9af\ne85cd06b4a14d3ffbc0909d98a1ff2b4\n3e8fc3155bbc4225c1ccec171a275967\nd583d6f23c590f3ec672ad25c77a396\n8bb8876d55433eed216b327569dd806e\n909f59399d056983a0a3307f8f7721fc\n1807d521bc2164cd8c4f5e741c2f9cdb\n873f4d2e92681d12709eb7790ef48e0c\nd4d61a35e8b568fb7f1f82f6fc8747b8\n84b396dde837c81994445a3e8b9de59d\n427240c0fde25a90e6901f9a264cdbc0\nbee504b4909890df1dfabee9ba27dc70\na5beb33ba75edd59485e40e44ec62786\nb6da5542f0a81fb5aae46a5cc955c766\n5aa22f8c52d2f777a80799ffaf21ea7d\n2a801b1918ef23f1121ca0b13e917b22\n460cf3a75d8467d1bb579d1d8d989550\n2d4a57a467307d675e9e2656aff7dd5b\nabb3c5d793e4c26d7aeb2194e56698b4\n1818597d398db8f7f1f82f6fc8747b8\n6047f2c5854dd38526cb540828830330\n23c8d6c73cf78ab23cf128905a10d59d\ne8ceb64406509714e5dcd47593c60221\nb4b21950f0627213fba066e52ee0e502\n94bb7abec5f1b984dd1c97b5ee3d49a6\n958cc8251e6f7d8fa9b2becd26dc2fc1\n7e1d4583f70c8583431589819e5ca60c\nb4cc2bdefd4f9ce13f4d6518603e8629\n2cc44e0f9fb1efdb85e0a2007a11e92f\n730edec9009f8cea615ba7bf3620290d\n22d9a4a9290e8f09112a90660b187a10\n1530400ceabc1d7145ec485f7da1d9e3\n735aad15a1d22ed3dc92eaa8f8f40f9f\n73945c1b294716e1d041917556492646\n6193ca8f5b4419bfd86ebdaa02a63c4b\nbb6bc2b0786734a79b2acbfd8323f804\n854c2f430e7aa00f4d210d9468aedaf2\n7cfb337744133ea1bd46d022fd7d80aa\n84b07419645a3418bbf3143b1cb6076a\nfc7fda7232bedd84bbf3143b1cb6076a\nd7287ce98d521db5ca8607f540cc62ba\n8eda6d2dcf9302d2d041917556492646\nd06035fb4ba89c91f119374ee5d5f944\n812111e3a4a545cbc863ab010b80d9ed\ne025a1fc1bd71c2aacf77e718d93f3e1\n7eff60e0d72800b8ca8607f540cc62ba\nbc16d2cf6420432cb87697d3904b168b\nd99ddce71988c822475045ea78b20eb7\n94843fffd7d2a8c0dfb86dddee1d6ac3\nfb2e4eb19ba19bde5fe6cff21a9e8496\ne1225308d6c26c862b600da24e0965\nbb91e932504e90ffcc14f1e6f4f4f49b\n4788f4d5afd92e151df8f3faa46a0206\ndf1c68e94259c6cf5c7319b71bdce6e\n2f4f38d774e0e941dcc75fd1795fa3a5\nc156719444d78942db73445864b72015\nc2e38200a238177ebbf3143b1cb6076a\n77a70f61dc0c6260e70eaaf99089d5f7\n8db0b83cee14e1e5eacd58bc9fc5db51\nbdeb0a21cf1d602962347b4731688b0f\n26e26e21438ed02990b1d6deb98feec6\nf1f12c4408b0b4ee445d150719ce97db\n298d674a14dcd356de6e2d41bcaaecbf\n881e02b2d5a2c306f7fe0727acb55c39\n4a9f55420d17c815d37636af9c7bcc34\nd004d0e86ea3d77a65a6ed5c458f6a32\nc380dfb1b098757ace19d55bc5e6a406\n5f2aa0bc5a7fc2beacf77e718d93f3e1\nf59a2be8fd084418bbf3143b1cb6076a\n92ffaa5ebef3c4025d85b5c95b248fc3\n89a5679cb03f30caf5c7319b71bdce6e\nd9a263d86ae0fa599751c7a6f15617f4\ncc68ac5b18674485475045ea78b20eb7\n89836a37ce10a26c8699933784576e73\n41fadd55b341e54ab87697d3904b168b\n5335e5be2619bbed8141b488a44e65e2\n67217ee1bb8443c8316b8b2265213f7a\n7078ad51c3c30972b310347ab50a9dea\na0359a8d86947a2049fe495b383f9f0a\nb8720c5fee3264f735fc197bbabcd5bd\na39940973102985635fc197bbabcd5bd\n2590dff7d8f19797bd46d022fd7d80aa\n47d677bf1dec3dca82cea33798fcd6b6\n53d8ce9573e361d990b1d6deb98feec6\n7e092d9460157e968b96ae1a0a8b84ec\ncf402c23d4ce807d847335355bf4459e\n8686ebc30c07b53126360e1e29a956c7\nc0f9c28c45e7c8354f95630cc18536e0\nbdb7294dc4742b33bc0909d98a1ff2b4\n19e531e6d0bd5ddd67c54439d6177032\n8b1b372c0ea200bd225a23c790f08fdd\n35c9e363ca3fa6f8e4fc4c6009ee9462\n17874281e56ff0fbfca1f1143bb6bc17\nf4453381943f6039eba96cf317eae721\n87edb38cd76e89f5996d31205aa7f7a\n6d752b942618d6e38b424343280aeccb\nd458335c758930c210b8e0008ef5faf6\n858c0e466deead2c66cf1b4a8fc3914e\ne94ad5f8e53a255a8fc2d09ac4aa4e78\n6c931227c1735c329df8dd4a2554378c\n65511fdb2afad900203936772104a82d\n9300dc1ca5f16b074f95630cc18536e0\n22d36043ad59ef026edd138a394f7c4d\nbc3f4d2bf11e1c6382328b5e05417037\n2d7aff5577ae7af0d8ff6111270336a9\n527975c6c0e1c426ca8607f540cc62ba\nac4774b7a9fd06d55e6724a7c6e30991\n4843a702815e8ab442ffb0c016ee58f9\ne090eb003856ed12ffbd931fcaa69140\n29c81ffc84f2f7ba1adbb4c4e06ad649\n8d62d327fb15c9b42ff26728ed9d7bc3\n7a1954799b5fbb438fc2d09ac4aa4e78\na72bf66e9213b313a9b2becd26dc2fc1\n707cb24ab99bff07e2aeeb16e93626f\n241648add391b8d54d210d9468aedaf2\nc0c49c529f1ac5d8ca8607f540cc62ba\nd0e517321cdcd165939e75b12f2e5480\n47319a4f6de68c2966cf1b4a8fc3914e\nca359fd1ed701d06f119374ee5d5f944\n5392580fe70da9043554ccf8c30febe7\n1df217928b39b927a8cba409c4409ba9\n807d735fb9860fd1c863ab010b80d9ed\n694da337c806f41a7209009cfb89d4bd\n973211dfe6bcc4ae90b1d6deb98feec6\n468831f7b19aaebabbf3143b1cb6076a\nc14ffb40a37074ed26360e1e29a956c7\nd2412f19d33572dc4c3a35cee92bb95b\n619f0ed9bd92778e1c6bce26aea93f68\nddf4aa5f68f89616bce962d6c4b37336\n52185f504ffa9b32ca8607f540cc62ba\n67b7039f53759e92f4fb6842b3610149\n542a1e7f0009339aa813ec663952445c\n22ce6f6d1adb08d7bbf3143b1cb6076a\n8c1d67bf88f34ac55823df672991ed66\n48a9b9c041d377b26012a714b05f25ca\nc641785e297cc8ef74008994fb1880b\na271ac76b0e6bbbbb87697d3904b168b\n9314289f486e58caa8cba409c4409ba9\nbb5844976bf8ec479e8d5aab043eeb56\n802cbaaf1a51cf38c863ab010b80d9ed\n605c79a4937e72aed0f4914f6d630bad\nf6b7f7695d091b9bc0909d98a1ff2b4\n8a6ab7486ecbecdb203936772104a82d\n74334440119b4225951971f8370d9050\n9e4c0840aeacbf10f119374ee5d5f944\n88771c5b02d6e267b02bf6205401969\n53011f6c40df3d7b4f95630cc18536e0\nb837c3b8eec02a4967c54439d6177032\n952c5b41a44f6f3166cf1b4a8fc3914e\nf73a8fa9c2859211f2b0736dd4d8afe0\n9aa371acc735844efdd77aff53f4b7ba\n1b7ac690067010e26b7bd17e458d0dcb\n5e31a194b02a286df8c6d04d97f8cf7\nf80343ac3064e74862347b4731688b0f\n22ced10a5d20b1c1fca1f1143bb6bc17\n9c9d6469ecdfc54fc2a9d7232db0ed61\na5d68126acbd43395e9e2656aff7dd5b\n64a0f304fa3c113bc817819d30841d0\ne28e5714139535e7a9b2becd26dc2fc1\nbc59a1d1f959b6f9b2acbfd8323f804\n7196ea15821ad2fdd8ff6111270336a9\n1a888c2c86248bbcf2b0736dd4d8afe0\nd709b3afd41a578ba03df56f69a35fcc\n1ac29674746a0fc6b87697d3904b168b\nfd8d7742ee03905df446f92b52bbd82a\n89e0a038b52184e04f856435f28995af\n7addd02b1c255edcc863ab010b80d9ed\n42b464affaa4b3f985e0a2007a11e92f\n77c52530ef9983c94c3a35cee92bb95b\n78a7cdbbb27dfb21bbf3143b1cb6076a\n8e2846178e2976fab96212c8f6cd06e\n25805c9f5b2812b6b7bd17e458d0dcb\ndb5fa6a73bbe6d35ca8607f540cc62ba\n2b99e54070c8b6d466cf1b4a8fc3914e\n9acef1e2e46120f8fdd77aff53f4b7ba\n95d0f4440a694e4a203936772104a82d\n2ef20ad4c579812571d03b466c72ce41\n236932c4f4b2f557f5c7319b71bdce6e\nacb398aa5605abe5a8cba409c4409ba9\n5f9d38e5e7fef49f7a571401e6605fc2\n7dfaa526d4b432e867c54439d6177032\n2c9331f57865a9d2bd34bbc5253f83f8\n448ff32981729dd38eeecfc1f147b56c\n3033e5dbbff674a55d3bbd70fc7759b7\nc9764fd84080da3f4fb6842b3610149\ne7c1bb596e9a1ce9ca8607f540cc62ba\n85a62cdab580058925149ab881d5692e\n5cf29113582e718171d03b466c72ce41\n1169d987dbbce76775f4ea0b85a53249\n8c11ef88dd944d00fca1f1143bb6bc17\n65f77283a392890aa8cba409c4409ba9\nc6d39a3c52f8beaf7f6c3adc89eef8e6\nfd425567d79a43d14f8a08a5e6b028e7\n17ad3ab1b1d12a7db26dc8ec64d633df\na5215569ae825265ff3feb917a6004b\n2dec9e7b1acf88fea8e091cb544689d5\n62d03831457b2fee62347b4731688b0f\n350110d2828b3b927370804727e72eb2\n31b201b7346e6cd15e9e2656aff7dd5b\n2ec4d9949f80154b7a571401e6605fc2\n4fb10ce02887e35efca1f1143bb6bc17\n8af350191d35e65cc3fe7930fce05ded\nc107063f573cbfb3ca8607f540cc62ba\n5face359ff1d4b4f8e8131a047a07ce1\nca91bc0603ac0b808303d346f4be7d4f\ne511258df02edf1046ed10e8f7fe336e\nb8ed32beb17c3cacafd477f714c68df9\n56c7e0b6f27cc498f3ad4b0977199f23\na07446a1799bdea7afd477f714c68df9\nbd6966d7d0beae75f5c7319b71bdce6e\n89887eb7413e51a55970a7489fd4b4fc\n1a54a2319e87bd4071d03b466c72ce41\n939f3dcf67a1e1adbe13ce34aa7c0c1c\n969455251a1ee3061c517f0fe59ec7ee\na39880327ac8815e62b600da24e0965\n6dccca8485094190be13ce34aa7c0c1c\na95734cb8f7511cb46ed10e8f7fe336e\n4a199b1c3c80c8823bfdf036d38c839b\n78a63dc99b3b68962b600da24e0965\n44ae568461e04dc2fb3831486f8b425d\nec03d76cbd50314f5c7319b71bdce6e\ndc344ae06e26aa55615ba7bf3620290d\n647576c71cff90b4ca8607f540cc62ba\nfc2c9fd0bbd77dac4d210d9468aedaf2\n5f46f3c62e353c7bb4f5fdc59ce06e88\n579187a52086b0a63690bd3a9fab7134\n22d0100fa46f20eb8699933784576e73\nbcf7743f0dc85517bc0909d98a1ff2b4\na4f5529edc990706e719b5362fe06bbb\ncbabb37711c06d4046ed10e8f7fe336e\nf9589c9b900fd33ef23c3116d040903f\n795894b9a1105df34d210d9468aedaf2\n817add33c6fdd1534d210d9468aedaf2\na61d4ad108af6eecca8607f540cc62ba\n71dad8605fbc699623fc69eefd95e6d3\n99656ff9d5a8a0fcbc0909d98a1ff2b4\n881a9dd186e1d5c3ca8607f540cc62ba\nb089abdb33c39321afd477f714c68df9\nbfcc89117315f3da90b1d6deb98feec6\n1db7bca33ba446aba5cac89017eae8d1\nffd13ca14b85fec66cf1b4a8fc3914e\n99c13d3c3f30c34dca8607f540cc62ba\n26237deeb192f83d3ada73811bb576de\n7526757d0fdf8acc14f1e6f4f4f49b\nc31bdeebd8d74a7dbbf3143b1cb6076a\n8448475504ba9fdeca8607f540cc62ba\n383d7574448bf7f235fc197bbabcd5bd\nda26509e7d1864a162b600da24e0965\n53edcc6832e776dcca8607f540cc62ba\n1d63eb2b1f78aa88acf77e718d93f3e1\n800ce26e517769dcb87697d3904b168b\n4b10780b9e0f93f1d32761b337f8b72a\n55036f6b22ddeeedca8607f540cc62ba\n68899f486f3a6015ca8607f540cc62ba\nebf8011ea1f4b4190b1d6deb98feec6\nde65da5cdc92b4aebc0909d98a1ff2b4\n9b62f887f1839e5f4c3a35cee92bb95b\n646b93aecb7b7011a9b2becd26dc2fc1\n2c9e063352a538a4af7dd1bfd65143a9\ncbe8994d1dea1bcb4c3a35cee92bb95b\n3794aa3159c10929da116749c2415b0f\nfe1d825ce462c3e7b96212c8f6cd06e\n55ed35a03b08a8f44f95630cc18536e0\n30bfb515f027be9a4642ec4b6f68a\nb7f6e94ddb5ecc2366cf1b4a8fc3914e\n88fe762bfda775f84c3a35cee92bb95b\na60569e3e80d24939bff604afc480b65\nc2e047aa11190a0f3523242fdf9b75a7\n2bc0d99cba39f7adbbf3143b1cb6076a\nd5b08d1355502d325f83a2299c09f64\n8b9a404737736ece774a720fca15e35b\n7aac10eb5b285098774a720fca15e35b\n6cfea839d3dfe358bc0909d98a1ff2b4\nc846ad445cc9acbb98427765723d5e48\ndb4079b8c7d3d674ca8607f540cc62ba\n79dba7fc4ba0829d62b600da24e0965\nb17142a2f2fee3d4e2c19eec35e842ff\n6bfee98d2078c3c4ca8607f540cc62ba\nd696c3119cae40323ada73811bb576de\nf1384d3fd2d59e63f4d6518603e8629\n2af24e1c7067533d50a05a17b2f9bc\n27acb1d0e8c808262347b4731688b0f\n3360b510b0408682bbf3143b1cb6076a\n4bf2c942aafb4a2cbd46d022fd7d80aa\nf79fce6480d9276facf77e718d93f3e1\nd01da87ecbc2deea27e33924ab17ba05\n6a7bcaa4c62779e45e6724a7c6e30991\n44836457aff60736e10e757961deca98\n728d58b27cd53a16c93b40751084c22\n352a8e4f2023b029dcc75fd1795fa3a5\n5ab5f03340921fc8b96ae1a0a8b84ec\n59043812c2139ea8bbf3143b1cb6076a\nf98964dc88c44a2c863ab010b80d9ed\n12f4778ebba781236b7bd17e458d0dcb\n940c9ed5d7610d915d3bbd70fc7759b7\ne028fd73515465da5e9e2656aff7dd5b\n7b553eabcfe3709f3d2b6eee5a74cb08\nc777a5b86424892c644d8182e9bdf4a3\n6db52e6917c80e5157b14532cc71431d\n2d255ec7a05b301a203936772104a82d\n75b151efa363c18d94b9c9a92aa36f8c\nbe02fd401a12d23822362be7f5226e91\n675a2332a973401f6376dff6c42ab2c2\n4d0898c7cac1199a4b0853084d4042f7\n5cd19fcc882cc769e8b0cab853748d53\n2349e4b9a4ccbd97bbf3143b1cb6076a\n9be01448f3b2b932828204947d78b9af\n64da2f66ccfb98c6c511571426f8b16d\ne33fbcf5b616d6f9f44f89e40af48618\nddd729a8623bcb6e8699933784576e73\na9668a32a91787a6be5437d0813f18f0\nf7c11b5e07e9ccab3a116bc3efac4e3b\n9469590435736800b87697d3904b168b\nccd448614257253cbc0909d98a1ff2b4\nd8d9de967255b4c562b600da24e0965\n71222607731812fa5e9e2656aff7dd5b\nb1998932482a6215a9b2becd26dc2fc1\nfd0262e95283727d7b02bf6205401969\n41dca8046b0edc8f26360e1e29a956c7\nde001f9e2311dffb7209009cfb89d4bd\na75ab6e99a3542eb203936772104a82d\n7ce6c64ab3a45504dcc75fd1795fa3a5\n4a9d3df03a7d41d77209009cfb89d4bd\n4fe076aa34c706b83d7edb3bb2d24b58\n56b44fdca08540da71d03b466c72ce41\n25f08a106a0eb00eca8607f540cc62ba\n10db820f0e20396a492c7ca609cb0182\n7578bae68447de8498427765723d5e48\n96168894d7331c75acf77e718d93f3e1\n5c72cc06d79edd1cbbf3143b1cb6076a\na2b758aa5d51642bd32761b337f8b72a\nc2f43dd2c483e0d86b7bd17e458d0dcb\n1beb0776148870d4c511571426f8b16d\n56ed0ef0864d18c2f5c7319b71bdce6e\n80af162c0c01f27c4f8a08a5e6b028e7\n77c86e12f27b2adff602d628e1c92113\nf0fb27f3a597838feb1a0518c224975f\n1887d7e3ec69fe06a5cac89017eae8d1\n46d334b92644b9c8445d150719ce97db\na211cfc04bf47039e933de2bdfbab002\n34da5dbfb4bead034c3a35cee92bb95b\nc798fdb5baef6b8be36e92960e9f090a\n1435b52348569ce1bd46d022fd7d80aa\nd9d282f79262ebd4c3a35cee92bb95b\n3716ed4fa80dbf5f41392ab7a601818b\n93a635370616538abc0909d98a1ff2b4\n9a84164528544d5690baeef8ba5b93e5\n86bba8b007786db7be00b7fbad2ca0e8\n67da7044f5bee4f65c6d168c6e7f59dc\n172e23ab5b4d189566cf1b4a8fc3914e\nf7c2edc1beeedd006e68e46a69a2d96d\n3aba99921e9e1c93ef40e4c1c2686cd3\n94cb05b56b89aa2223895f8c849f85e\n6c8b2544144c38d99e8d5aab043eeb56\n1280f994ba1f92d28699933784576e73\n6c36b0f84118a75cf9c41a0805a0d953\ndcded0031a71305c52d6957c59c3d213\n2d41a07991b546751702b97fc9845e5e\n21bf3d8201e3e41f93358ca8580664d1\nb97446f1c30c0ed7b13143dea57f5eda\na09773e513ca86ba8699933784576e73\nc47a2cb459ab849c493ab0b98cb45d3\n65bdf7b997087055ba30a078a973ced0\nf8d7d8331fe29f247209009cfb89d4bd\n8338cdc32688a863bc0909d98a1ff2b4\nacaccf2af6ed78925a25a01ca5b91f98\n443be81bfa6e5b5ef6babb7d9ead7011\n7315cd530e4858246ed10e8f7fe336e\nf9f4daf3015b5ece5e9e2656aff7dd5b\nf3463eac7325b600d01b5600c06c528d\ncf911e274fb613fbbf3143b1cb6076a\naff764398f14383eb87697d3904b168b\n7201e35e5062683571d03b466c72ce41\n9efbd65b09daf8358b96ae1a0a8b84ec\n72761d1c2c7e1418d86ebdaa02a63c4b\n4a300ea7cbe3ae58a42c49797afd1f5c\ne5f08a5e3dad6cdff810506e9ae2dcc2\n63ee010741ba665c35fc197bbabcd5bd\na6afd80fa3d70682ca8607f540cc62ba\n983cb909846f4e1bbd46d022fd7d80aa\nd75ce9ee8a64adfd98459325335edae9\n384da5cd806c436b35039158de2eb4b1\ndb02eb57817e4b4d22362be7f5226e91\n997539bb0a0d8cf852c3271e911ffe19\ndcbd333ef51b76862b600da24e0965\nbc140e3c54b27bfabe13ce34aa7c0c1c\n3b3b2777be8b6b31ca8607f540cc62ba\na591b49406ab0d2abbf3143b1cb6076a\n1f7dbc112b7375dae0cfe7507a46f0c\n593dbc303a7afed7f44f89e40af48618\n177ea8d43905b1646ee4da51ee0005c9\n19e6717acfa7d2bdca8607f540cc62ba\nd171967c6353177bb87697d3904b168b\nb7b0068ecf75d279afd477f714c68df9\n63c63aed97f15526bbf3143b1cb6076a\nd4a8134b2463a8bca8607f540cc62ba\nce00bc7519d595c525a407b55f350179\n2d7562f5bf2c7f2da1d85548168d6015\n8ac48eb3349098b535fc197bbabcd5bd\na49a75d2b22c9eeeb87697d3904b168b\n2f3bef6d679273d062b600da24e0965\n33e11a7dec64dd42d91ca512389cc0a0\n3ad6bdeed351f5a84e61a0c2eaaabe87\n7f4b166fba71407490b1d6deb98feec6\na1a419007c828bf290b1d6deb98feec6\n55f212ad58883877ca8607f540cc62ba\n7f09b3b11ae3f22dbe13ce34aa7c0c1c\nda9c541228a171b7ca8607f540cc62ba\n396312e9bec88c2590b1d6deb98feec6\n5413e0eca808b2601f17e8416b3322a8\nb2ae4acd6774f410833bb0b457d51a52\n6cd3028fe03d04fec6f6da58b133bae0\n1e44b99c8de5eb01ebc54ed98d6399b2\n30b317e256e9bfcb1f17e8416b3322a8\naa21bf2a545e710cf68a010d0fc56333\n5524fd6b35f47d5ba8cba409c4409ba9\n8d49b7496a2575d5146e44cc99f07c52\nf6a09cbb6d08feeec9d7d324d11034c9\nc7f6766e4e96ca0f444c0cf9e8ad6399\n213004db08a787a466cf1b4a8fc3914e\na2b6edd3f2f060c7ca8607f540cc62ba\ne3d197bfb47ec943c9d7d324d11034c9\nb3950d8c2c1da884e52afb4158d0847e\na34a2fa46d7a0a6390b1d6deb98feec6\n2f01cae5fb585d56ca8607f540cc62ba\n165c4491d10067b3bd46d022fd7d80aa\n7ba9eb4e8405371ca8607f540cc62ba\nc1e081e8b97b3fc7ca8607f540cc62ba\n72537a008bf0c5e09d1a1149c8c36258\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/02828884_test.lst",
    "content": "131edf0948b60ee6372c8cd7d07d8ddc\nc96afd58ad067a6871b66f80cfaa9877\ndd97603ce7538c15be5bbc844e6db7e\nc6dbedf2028735ccd2b12aa6a0f050b3\nd8c1f1b9bdbd697b849cf9ca1e2dcbed\n974668cad6e15520c955e5ed03ef3a2f\n866b0fab7a3e54053555de1e3169ac6e\nfb861f0e4e7f528fccda8d28b44378b7\n22031fe0420834a9ad5067eac75a07f7\n87c34f2d5d53a51768679c90b064f491\n373ae08d8903dc10ba929f7d2edd1706\ne6a3b8946b66b83065ba78ad9601cf1b\nb3974f214dd4af93601104cd2d998272\n9b5dfec7d45eeca94c8c340ea700916e\ndb4aeb6354f5bd0dd4d8765e3910f617\na5a9a0be36997bd82f549c6b85154162\n6df5b51b250a823b147d36b9f2f13116\nb4ae95fbb879bed0ee38cd6552dcaadc\n366db933a2c99444f4fb4dee5181bee\n9c9fc31bba4881794620a50068fc504d\naa2571b8067d6d5383c4907a93b0fbc1\n6b4e4125c1a680cd2cc92e3c03668ea8\n42ffe8d78c2e8da9d40c07d3c15cc681\neb038519c5ba87b663b2acb037dfbcde\nfc7785be580a926a3409d1e6da3f019\n23ce36288382e8285710c881d369ccb3\na8e987a6a6486b962d6c8e51365a5a87\n4647754b7c5b31cccb2a965e75be701c\n957596b8dc4cba37ad5067eac75a07f7\na4491b4a67356be5184c1614f4105c8b\n218b98805019ba7df11e0e33e4b1b85c\n2e2518a8a2f335ae76bc197b3a3ffc0\n1b78416210cbdcf1b184e775cf66758c\n89f810f17284aceb85ef4356ea4ff622\n2eea9c22b37967006e40121acd58a004\n94420ab399ce8a1561e51a63d5bc6e46\nb852e63ad5983f1a8ccde000e771fc1a\nb6b10e519fed3c9ea9d99888ae8a3eb5\n9fd5b67a2b20b5d1b19874039c8f3e05\n88440ae4e218fa6ed4d8765e3910f617\nddbcdce0db6aa00524b325c2195eaee5\n7b21980987b63b953e329950ec40f6dd\nf8ff2310c6b130d38aaa31e538081318\nfdf0f799b897b0c99917ad57402f53f1\n71ab9fd8db7ee09a59cbde03ded257fd\nf7ffdf91b66c0c989c9513cebb0fb44c\n459f90aa2162b1f1d46c340938e2ff1c\n7a8a8c523bcaa364a41bbb5eb703e15\nd74a990634bb4b98ad5067eac75a07f7\n2c6c50ead2551d51a0e159a720dabf7\n8f102661c3efbdd184f92715bac39b74\n7cab2809bcc7b73a141c96faecd80bdd\n498ef3fb51503dc36e07666ce67ff5a\n61ade658bb475cc6a992c1353f8a88ef\n7bbd4d3fed3c4255626d7e3d07da8352\n5d463e4412600a3213afadfff198a630\n2cb61abc0c2663ae8f0add668496d7a1\n8277bffcffda5c4edab3d510e4b89249\nc9ca9b7317ac41b82168e5dee0d7f21\naf79d505f2ef2223cb2a965e75be701c\nd7025b55fe15337ed7c5502d4a22edf5\n6752d9230ae82d1ce67de87b371d4c06\nea4740ede10b7620c09352f205bd9134\n8d074f177479ac42628516f95b4691f\n9e4c82a76b6aff2bbeedb4c8fd29e2d1\n557899ea369eedd4cb2a965e75be701c\n8a5a59ab999c03ccfb0eb7e753c06942\nd1f9f40f8f58394c91cb0beedee33fd\n14af4a9931635c75f4fb4dee5181bee\n35948e4d06a9b07e8ba8ff316aec8d3d\nd8b87f36fde3f2f3bc5996932c1238cd\n56a818c4e5891f1d39316df04169d12f\n3830a5b2eec789ac63b2acb037dfbcde\n85db4f1bf9e2b62c492d9da2668ec34c\n9de1b1608e6ffb9afde926512eb9d305\n1a55e418c61e9dab6f4a86fe50d4c8f0\nf0b85200702e4739391e4d6c585a697a\n84bb6a30b1c5a87be008ebe8273a693f\n14abcb14222adcd499b68520b875243\n95cbcdc64b28bbf396f61afd58e50ae2\ncad58af144b615b674a3201fd136f855\n3749b110a6f7895afdb310510a9dc39\na047cb14c22517e6f33e284fed03c3fc\n28b9f2908f0cbb179c21c139c0613648\n84efcf2796fad0d2917fe9209d09e56e\ne7bb6ef568db1c986dfe473551340375\n5d8f7c82a04943fed201085e80edb26a\n4d6b053f11e784e2a136ebdce43e4200\nd9c927569da63ff92ebeb1e6a8111f53\na7366461245f831ea764a25163affad1\nbeae527c550f5ce8e4ed7bd95fe664b\n2bfeb0ef0693823d1418b6bd61b3ca4\nb9fb64100372235adbbc9440457e303e\n19399a9aac37442359cbde03ded257fd\na380e75d8efcb4192f550a4f461edf6b\n8fc8fb14df48da05ad5067eac75a07f7\n1e039c5d86b061a593ebeeedbff73b\nad9a12cce63df1c9870f22c94729669b\nf264c4d430891732d97248c4337f8439\neb9938d81ec9005882db9fca4b68095\nefe997f288fdce2d985ef0bf52b97bf5\n550e62946d2f55554bce3147c41ec725\n26299b4f8e03f3ae9470a3e695aa4fae\n92f1fa8d3b5da497ad5067eac75a07f7\n18d0aff1a5eb486ae2be3aed8abfbbaf\n20222f467d257022c8bbbd98dee48cb\nc3d8c664906eb8e57b11ae648ea92233\n5a96b6b335bada106fa8ce57c8ec2e09\nea56c97ec123270c2d776d9e024e5deb\nabcb5dc91337f47682db9fca4b68095\n8a03039b614b41b319fb4103277a6b93\n2974b7f87eb2297ffebad4f49b26ec52\n3d470843f013f9d8c9fd4914d3d18461\n891b8a01ad71af2db7e843606969432b\n220ab2896e0b5d87dae58dd9656897ad\ne56b95381904bfd08ccde000e771fc1a\n717019a5d139874f44dfa7c5506ef235\nabf095439d2d7bdb57a8fa4c1cbcf3ea\ne8480e72fb656057656a19d1d18fdbac\n617fa8d6d65af35d71295682a9280b8b\ne1ce45ee8de4436655a9b4fa7594b177\nde00838284782bfe97fb25ec4f973add\nf7b5756c04e354a0c1c40d87de24d930\n552ab19eab47725cb2a965e75be701c\n84d0db8ad40017a195c500dedd6e2c23\ncff15ed24c45878b3567b82c74e275b4\n2346b4f87a4f683b92e6829c9c63f7e8\ne4b80a7e381c6ef0f4215050a7660e65\n9399c7769b01d4742591fa6348c25a73\n3e81e31d8cd99cdffae0a22d98098878\n8bb2354519a2ca276d9eb2ed02ef01ed\n106494f75125eea6adf66a6d73888234\nce23a5781e86368af4fb4dee5181bee\n3a60057b27f90ed64910664c4d1311f4\nc7fb65bd3bd09a852056b4bd5d870b47\n72b6c4e1d8b93b21c2bf98e7124e149\n6a237c1e61fe2bba8490246570868c8d\n25876fee744f8f8dd45380eb90f62b3f\n86059f6fa56a8c5e44175b4dddf5be08\n2d1ea225c279836cd67b3c7873295e75\nb95994218ee416f492d9da2668ec34c\nfa2f82cf9275c2078ccde000e771fc1a\n2731687dd460a263d8eae9bce48bbeed\n5b24beacd0385489a6ca26b5255a8e6\ncf873b381095c2d43cbc166debd211cf\n38e367e4421ec3cbba70cedf91706353\n9bb6f0077f91c613f155d75bbf62b80\n90a8b80aa2fa209ca936e2693dce34b6\nbfaad1f9dadac9b6a385f05be5d65f80\ne329a9a5e7422b0a43638dabe1eb5336\n9e4e83e67a901168febad4f49b26ec52\nf495bd67af8d9f0cadd1cf65e8dc4de\n5775bf637d14acf1eaa4526a35f01085\n50ef39d633520df0855931d119219022\n5a383d9a0e67caed4ea8cb420cbb292f\nd0c64a8b3fed1ba113736977841a6b9b\n2fe40aafbefd99a9d2b12aa6a0f050b3\n1c47c37d6c785d4fe7fd9a18c19837e5\n405d1666d90df2c139842e32fb9b4e4a\n3c7a0029ec98c965601104cd2d998272\n9b37a6d7c9f1800952dac0add839bf80\na76a3d33ac6c3c65d46c340938e2ff1c\na3e3c1bd2a644e2df4fb4dee5181bee\nca21ae1c48c020db1a7fdfcca5768f88\n87086d24c964f9524ee9546b7112f88f\n8afe9533153bb82b157f5033576317e1\n7d865d0774f34972814c9aa90ee14e\ne2cf4a7357cae6ed2dd04fa3e4c2a53f\nf5e4f9657ecc18efc862eec8232fff1e\n6fe6b24009d0ac4f19b647a92023d001\n4b00859dc8ce46eff4fb4dee5181bee\nd25262c74c8269a04c80535a28040aea\n1ac6a3d5c76c8b96edccc47bf0dcf5d3\nbd51deddfdcae18b3b8dea4a358cbf0d\n241f99f97083f685beedb4c8fd29e2d1\nb65f1141e4eb2529100a6411eafa7455\nc3f92e6a78ad156863b2acb037dfbcde\n5b50871735c5cce2d2b12aa6a0f050b3\nda39ee814b8e3c0387d7792ff13e9cd8\n80593a84e45e4345f51f77a6d7299806\n88f9fa58ee9ce3de1c863a93a9948fe0\n1c79aa69e4ec26b65dc236dd32108e81\nf56c78ba29d9f73e9bc72297235ac73c\nf5c6c9a4c5787dae19fb4103277a6b93\nadf284153a2a87208c9b655484c84004\n394563d19e157c126f2e3fcce6bbeeb5\n91e169ea3ceb587beff42b9e13c388bc\nc33b2dc4fca8fd178cca710901c2e97b\n56f65bffa385a635f4b6538438a0b930\n9ebca72c02d26886a6e82f4002a10be2\n486535f610428612cf078dc7b29022e6\nb2a585ba5f0b4a25e76bc197b3a3ffc0\n739d41c59dc387e575f9747ff6fb5e8\n98971eb747738a6880360680c1602c7d\n50a3b398b3a2e5979ec4bb690ca24962\n2eb289d5829907b9e6ad3e1a394e102\n901872a92ecdfa4863b2acb037dfbcde\na11caea04fcac4f5643a8f56e2ede6dc\ncf14c102e6da1a78e6d475a101a6dfca\na393945aad7a2cad5067eac75a07f7\na64965f10047f31db3ee3d0077feb1bd\n43cae409bde302d4c88fd5e1f2929cbf\n2aaf5fe631a855b4de9ff1d2442cc6d1\ncbf9773bfebd4321cb2a965e75be701c\n9a87c9d904851205bfcc4c7214610fe3\n6aae683396bc08eaa4b1640fdb2c85c0\n62ec527e6093cd007a9af08d0375df56\n444e7c5709eca2496f61afd58e50ae2\nebf5b387f119c51cad5067eac75a07f7\n605b2c687b73695c8da90b986150cc3b\n5f0e28d1324397d9c0b027ae5b223d6\nd2cd3e3cb4ed6ee4e7fbee941d13bb9f\n205b404cdee5d81cc624b11e153a6d87\nde80be770d51dbf53567b82c74e275b4\n397ac4bbb11796902d92929fa159facf\n567779d7087c75eead5067eac75a07f7\nf1f14399ac9684df835bac7bf872f771\nda52e5b3a29c06b1eb8ae9cf8e3a676c\n1acf34aa0cb8f06a19fb4103277a6b93\nee50d76492226837926fe0a4cdbf03\n5a86b8c93baf8ad0a9030dd33d75b731\n46a1e2560a1e96f3897fc31a9c059e16\n972e0e5717676e47d201085e80edb26a\nb2ab0b13c344132ec569803a3242d4b9\n57678bef578b487a738e43095496b061\naab92a965e310885d2b12aa6a0f050b3\n433253d0d97f814025444614eab3fc33\n88134efda194f8f422f9a913dd25c68a\nf13e44c93bca57d092f4c88fd91c6b1b\nd7d6a7fae6003dd6f4fb4dee5181bee\na5669fc418b91f9959cbde03ded257fd\nfeb6a23a5e25abe459af9a18ecf57ec3\n691480901ee9f047ad5067eac75a07f7\n77c2f1b7a7c0a4d15ca1f314f1afc186\n63a218005fa1bee7fd313061a14ce51c\n4e1acb893cafc1ea29c39f613cc72411\nd5fd97ad2620480c62cdb4b7b7821421\nf2a3ac936fcabeb8d1ccbd5d84e5bc86\ne6b0ac08a5326f23faf575cbae5008b8\n39d8fdb56b0e160dbcceec49967c0de7\nfa4d4e697d21ec65512d71be7dbf2d60\n9d47deb11cac29f089345002d2594e4c\n1b80cd42474a990ccd8655d05e2f9e02\n2c75963e304f490223ed665630afd1ce\nea96a04c68b969c5c35f34f09f11667\n38c4c2ddbdb502e162701a18243b45d3\n16549eea10c75d0f65d3152da5208307\nbcb4f576747e10bdd7f6e86d7d335698\n7acc1a370dfcd3a85ff6fe84f53e00a5\n758b78e2ad5dfdd1edecfa50e41e5c9b\nc02649dad5a5946dfcb04979ea30d7e8\n3bc45b4fea81c02463b2acb037dfbcde\n8417c3b75ce474d217b431cae0dd70ed\n52867aee1e2e137912a905e721b748f5\nd673c7ec4a08aa6db6f5e7b313e4eaae\ne5b1626359c609a59d297e74104d3ac3\n7f4f6fc801f4f957263e68b45fad1e64\n6b9b014c54423664a9bf865a81345d8e\n7e8caf5bf2eb1a61ecaa3c66b0328b42\nc0976144b3ec94381076bdfcbbc20a9d\n294613465801739b4739fd13bce14311\n3d92cb6fe0abdf9c4ab121f03cb11a77\n459cad806518f195ba6d436b28fcddfb\nf70fe48c38bda53282c132e825d0d08f\n8f52743c3cb564f149e6f7df978f3373\n1be0e167a93a1069acb4ead41419080a\n7a2ad24394c5d139d46c340938e2ff1c\nd87bd42b60591573c83f7280476c6eef\n522f8c069a76c21fad5067eac75a07f7\nd26818a4e62d931d2056b4bd5d870b47\n84d3224312b9630465826cf0dd1f6a6c\n327dcb9a47911686815bd25a546c8489\ncae6c2b329bbc12de5d5fc930770c792\n514ba7cb3392ca5ad5067eac75a07f7\n3fbbb64cce9b5fb681faebbdea6bd9be\n1422f82a72e0b7f48ae1c1abea367249\nbdce8b3475f59d38f4fb4dee5181bee\n6233b6cce0da0615d4cfbd0aef5a371\nade8119d5a30ba4bf1547b1668422ce3\n94df387a0b97302ad201085e80edb26a\nc293f2fbc66af3dbf4fb4dee5181bee\n870562aca7165d703c78f7fe78269073\na58e45ec5204f09559cbde03ded257fd\n52e921d1e558e6cda19b1c45fadaeb5f\nff8f8d280de66226d2b12aa6a0f050b3\n4504e203b67dd8e473f10e6caaeca56\naf264c02f69566cdf4fb4dee5181bee\n381317c1e4c91e87855931d119219022\ncb30a5a8df3007f6f4fb4dee5181bee\n2a9ad7f4e7ab564a5be2d177e843be47\n411f68beb7d27135d1dcc55e36186e4e\na12abb06ee3aa30ae074517a246f1e65\n77323ba74273cfe017b431cae0dd70ed\n248e0773a2a8d90879ba0a8466ed4e3b\nec3b32347c823f258c2b40655482a651\nfcfc935c2ff7c66c858699aaad4acee4\ndf31fdbbf7e3616b774561c9c1990536\nf5557538f4c6d755d295b24579cf55b8\n919f90e92283eff8febad4f49b26ec52\n44c720c5edf8942798cfd47a860803c5\n978e21e3ac24a83c17b431cae0dd70ed\n41fe326e3decebd1b40f0ac0fb9a650d\n1da4abf560002490391b7a189305050\n162550a8510464d97881b8f7aa99120f\n7c1cf879c84904a4e82028a475156419\n5f9d3dae06acf0e4e93e1127627b834\nc6885d073919e897de9de6d8a1c444be\n40279f85fc80e16edccc47bf0dcf5d3\n7f218ef91e835a90b515d1675be6b5d3\n5cbed790bc24fa22056b4bd5d870b47\nb1ac6f2ba106e8ec2250bf58700b4d8f\n88a00b80d432ed5a577e7964e0284adb\nfd359f64dda4e753870f22c94729669b\n3e4f4c54420bdcae75becd8a4c3f1866\n9d68ef4ac84c552819fb4103277a6b93\n97d009dc14e25080d83393768c99f441\n6152fd8b7b5b10df436455e65b78c0e3\n831955faf1c5eceb433fb7e44afbc69d\n818879b4a23c12bf575f9747ff6fb5e8\nf1fe8c6c1f9f28321739c3c7bfb786a5\n303c1519c700d19299e8bf807e902261\n36d1f0331d7f4ad2cf695c8970a97c29\nea518b89b8511916ac51268fdb437a9e\n8ea569854b8dfc8022b74f7ed4070ae0\n9ad5cab6ff1e45fd48113d3612de043b\ndd1a375db7015e0ad6983f351200ac6a\n7c40c1a2e4476afbaca9cc236210e91\n367cc7ed7b83b7c8fff16555386d173d\n4bc92bee14e81db06c262ba0bee45d20\n8b8b59fc52257bea58e51facd8ce1a25\n4eb3dc26aad9ace8f4fb4dee5181bee\n9f5ae162a075ec741e85d47a2a5461b3\n481885f3ffe14c40665f42dc26fed092\nf123b8da77f6d17e50f9fc0e2c94dd76\n27267209ed320cd271cf429728b349ba\n7c33a6f55768b7acb97ad864945165a1\ne0f7a559a6066203dacc0b57c47fa747\n991803aca7fca258b40f0ac0fb9a650d\n3b412429257bc1c34e437e844fb32a1e\ndd4d12077d16512d8ab9e8dd82b356fd\nb218e59af74f0be4ee9005feeed08b86\n23c874e54f1f9f152d07d128adae16ff\nab131feec69007a42250bf58700b4d8f\n8c942a8e196a9371a782a4379556c7\n93e43734f99c7ca6c42fa56863e48020\nd27d44b023a8ac1a54457eecf7344025\n137fdd05ae4e69c7a68359455a0ffe24\n6bc471eb8f212c9317b431cae0dd70ed\n53f19d1ab0828e3fcd3af3995946ed40\na064a3e9b537fd64818b16b10229b98\n1f239e55de52bb63eefaf3e79e3e3454\n3880be8744dc0ebaadab4c26397edfab\nec79d41034e8deabf4fb4dee5181bee\n87dfa3332d118867d0d69b51a45f7aff\na557114149ae934819420b7669e7265\n146934a1cb852afc1a1a2dbbd3d54d53\n192684f9de3adfe827ee88e8274f281e\n4e4b38efc9345bc3cc543a6b1ba2fd1d\n2af98dcf936576b155f28299c0ff52b7\nb54d0fbc33d125bb7a6d149f6c9151a9\n360d9cc763aa370320768660cf080d12\nca0a5a3a4c5e255b20768660cf080d12\nb1117a83ebf5a4c9c337a931444a5063\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/02828884_train.lst",
    "content": "b625936e3db6af6318df1fa50d2b64c\n17b7a0e3c70dbc3d90a6b1b2b5522960\na6947bdac4ebc97517b431cae0dd70ed\n96ab21db41e4da2d848b05feebb5193c\n838c48b41d513a2dd0992406ba4944f5\n1b0463c11f3cc1b3601104cd2d998272\n7a7ca24c50662907bb808757415d8a76\nab13fb5a4eb5897eaa9fc9f9a28d2718\n2356e0b210f85371f8fa66012789e652\n275249a603cf7f6df064889421ac8911\nc8298f70c094a9fd25d3c528e036a532\n8ed3f1b59a74ac71f155d75bbf62b80\n976636850849c3d6ffd996335233167\n447ad1f23f96171f8d9b3c3ef984857e\n6c1ca36830d54ca5c9736640ccf985f5\n10654ea604644c8eca7ed590d69b9804\nd34b04cb67bf2115c308e7dd57b5111a\n230a85ab57a15b90e074517a246f1e65\n531658856a6347b1f4b6538438a0b930\n83e19abeae8b157d3eb520ff7cd241f0\n6e29c6e045daf2a5d201085e80edb26a\n7cd1d8b686ac0059ad5067eac75a07f7\nb71a0cca7ac86498430b7446f9e1252\n32fe3c383ab3687c94c13f8f78a6d62\nc8802eaffc7e595b2dc11eeca04f912e\n7f418f4737d4a7339702fe80e90cab1c\n94ac417b7ec10bcc6420261eb2dfc717\nbeb4feca82b0082efd60059ad8523f1a\n81df1fcd6e2eec15f231d3622caa1150\n69f724fd745669fcda56795a6fbde1f\nb7d0a6ed347a549b278d386bfa54545\nd8a1d270154b70e2aa1bf88d515bc6b2\na8be828647ebc817abeb67a6e14a6d65\nbc6914d649379349ab3be97afdba4e8d\n7d79d398f56c13eb12185770c6bc35e3\nd7d7a6bada0ba7705fceaa39a8353bde\nd074449720d6b421e44204a7bf1b3ed6\nc2b940127ae286832d07d128adae16ff\n7ddf43b3b160ba10eee5b98d7c69f27\n10cfa696ba2259ccbbba142d6df53ce\nebc20661d9e103334b3c42e318f3affc\nb77813d8b4fb7c606919f8efc25fe2eb\naa88a7bb135e074e2056b4bd5d870b47\nc3531b822720720bf27f378f9a625c3\n9bd9483c8eeeb703cb2a965e75be701c\n7631a05d80484ad6d2b12aa6a0f050b3\n1ea895308f2aa98f966097adcefba56\n26240de6617ea89cc6c4a9ba1f33346c\nca85baab8740ffa198cd58ee93c42c40\n6d9c95a2409a8c90391e4d6c585a697a\n92f20bc7a09dfc1d19420b7669e7265\nd71d9473e08c108d2f210d96281fe860\n7c335945340c674cefacb264ebf1ec75\n602f39fc7534bc4a162bf7725b3fab02\n812665596d6c13b1adeb1694faeea26\n1d94afb9894bf975e76bc197b3a3ffc0\n8f25e1c5977cf1350f0339a8f91fdfe\na11db718438648a0ad5067eac75a07f7\nc1973b3aeb0e54df653ac91111db738b\nb60b9fe791be0f4b1191025061735ea3\n59a3fc2f98cc53cfa13c59d3c05ad9e1\n19f24754ceb9bc948598ced6ad25b3e2\n1480fa8916f31b6d3c77a85180cab6b6\n45c49b9d7cf74ed261477e162a5a4fa4\n8967e65c1541d1874aa7f42ef07f614e\n1d9fd401e86ab773d2b12aa6a0f050b3\n26b3257b2e094083af9ff91a3a02b5aa\n4e3d100672af00842dc02296076d8ee0\nd7eec9ea272f5fc9cb2a965e75be701c\nbe9a174af2b3a463f4fb4dee5181bee\na77b423dbe9f9a34beedb4c8fd29e2d1\n989c5de438050d9d6664ead1964339d\n22af1585e38e4e76ad5067eac75a07f7\n784e9add253365c15a7771962bfe7829\n89d15e96bdf725bfc955e5ed03ef3a2f\ne82eace9941d82f34ff3e3166b80bde9\n84d8530355cafc8fd838ae16242881dc\nd6580bbf1220d39ede270fc3c23d78b\nd63302230b1e358f24e2eef7547426c4\nd21839a3d4b5b30f55f46d55537192b6\nbe0b1cfa18356b5bcb8b82ec2ef44379\n1b77f2fbf17f28e726cd2499b0c05f5a\n71225307ddd5a772dc11eeca04f912e\nb2dc3053a4643c876ae68b11b0aa337e\n874577f61fe70621a1370c1659f8eb45\n4ed2e0a972432881ac3644c4bb0fb64d\n683ddfb4cf9c8f2883f21c04f5e0acd2\ne55f19a6d411966c6bf2e668f01c16f7\nb8eb131fb74aa39af7436fe692c24f3e\n18a3d4fa8abccfa7ff8d4c5a7727a428\n5856737e6fc90bbac1a25f36f85c3fd6\n64010fd77c10672dac3644c4bb0fb64d\n1ebdf871b03ae445f4b6538438a0b930\n76958ab9aa25d309c9eed7651b77d0f\n9663627be99d2e27d2b12aa6a0f050b3\nac4de7e08bc1f024c955e5ed03ef3a2f\n57ded7ea16600342639efb65b33fee62\nb990e2ecb2650ba548e7a83cf3fe93c5\n6b7e64a23106bc6ad81bfa7b5196f847\n61cb827012c745e0ba29d2aa241f8fc2\nad3c4c72cda4dcbd620ea05889322bef\nc57b336bd865c0907b20cb946bceb58f\n6a474cb5a494c1e6ad5067eac75a07f7\n72d098aad341ae4c436455e65b78c0e3\n2cdf972377f30d9485718c281d7fdf61\na5856a7738262b05738e43095496b061\n7a9a3abadf052b3bbc2f63672224bac8\nf1b8f4c4b2dc4a63c2dbf50c3528525\n1695ec4ee4d2e60b50039fe1590fc615\na4c8d232f7943e61af8dca8fa046a737\n7b58a3e5d7f4dddcad1d789f3b2120d0\n6f0723826537010c870f22c94729669b\n14688c10826a81933792407aee21900f\n4fb9527f357f37f99dac46bde4c69ef2\n9da3d1f848bb801c77ec6cec7835f07c\nbb020b7d9c7fca9cad5067eac75a07f7\n2a050ecb95f2a056593ebeeedbff73b\n729c336995af1f96955a1fc933a0f899\n7769891a8af54054bfde7937440ef438\n58e85d628f86aa897bd76190db9f54d7\n6b2caf6470d3dcb58ccde000e771fc1a\n5a6e7c4fb53f27925d3bb412062af8d4\nf5f8c8e5d2de751f63b2acb037dfbcde\n3a85b1fd831c15bbd2b12aa6a0f050b3\n7f7956f11a1fdfd0d81202a54291c0af\n54f33a7cb3621d5ced98cca8f0ccd5f7\n14b63361a48a9fffe4a048c146e8bd43\n80b20fdbf1183f37b7491f8d3451cded\nbbdc34eb50c32ff7c6e70747a64ccaed\nd0fa12d918d97314738e43095496b061\nabc01ead2541d73f97485073216729ca\n38ea17d177c4e872fd07832c54eb7e78\ncdb6ceae0102632fffc6e457221b9271\n60287e7894707cf9fd074351be80913b\nfb2627957d4cda1bda31ead4cf13511a\n5a074a3422d783cbad7b4c3c92e50b84\n8ff44d4849eeb577ad5067eac75a07f7\n4f44a4d47a8911c4f155d75bbf62b80\n826a100b907c3fc4edf84ea98391428\nea4e8de5b98a0463c955e5ed03ef3a2f\n50c0de8fb13d6421dbbc9440457e303e\n9bf1e702777f4f5292694c864c93195e\n7c3314a24702128d19fb4103277a6b93\n9edc26b719dfbd49121811fcf3127a22\n67bee18dec77f305e4af5827e8177766\nc50aa1c3da488573ba5342d638d0c267\n1f4ab55de315d6aa7d77abe0f9632d4\n87113624b71e8961e3e484fe1f0aa4c2\n35ac96f483e073faf515c76790f82ed4\n8d4693c04d684e61a3430e4fb40c91fe\n6b70f11a9baa59ade43f70c0a99fd544\n6d6143cd573920ba7251f1ec40392b93\n1042d723dfc31ce5ec56aed2da084563\n7139a01aa4fd148b7435838026088e5f\nb53a4b74b0c898ab615925cde06141be\n91a39f76430e6cca19420b7669e7265\n18000ed6034007caf4fb4dee5181bee\n11665c5093e85592b340344cde6e80c4\n54547a5cbc7cd402c955e5ed03ef3a2f\nfc3865756db954685896bab37ddebe7\n2edc5c32e3ca7242aa6d4fa3e14dc1ab\n5f3782702eb8f2d421b4fad85a658c\n501e374fc9a9e5c263b2acb037dfbcde\n7c5bebe21d2f9232af268f6180933aa3\n84e0619bd80f5455880e561fa6db53d8\n794573d3e6a2c4ddd845dc43591f551\ne8ed5a53c78744aa600895f6141c10ae\nbee41df71228b870593ebeeedbff73b\n38403c071594b1cc749694da9ceaed25\nf540ad990dbbd600f4fb4dee5181bee\n1b8e304a9c23fd4563b2acb037dfbcde\n4ddee322f191096a54e14b4b3de20526\ndb4f8c9f1c62e421efca4f7cb98e0c29\nb20a0209355ef6ddfe6460d8d9bd16c6\n76e5103be2d6199071998932c708d327\n7836a7015159442980360680c1602c7d\n564474f25a4400c5dc20930e6fc85682\n85034e80317e36d9a6c03a53cf0a14c9\nba8ce85fe8f294929126d89585a68a7d\n4651f5b75533042283bc207d8a5912e3\n65e7b3316245780bb5512a11bb8b2bf4\nc6ccf94d3e512ad510b3ff08c68acccf\n7462c18d6934c5a3a83826e22c7812a6\ne0777bc4f8e3c6db63b2acb037dfbcde\nd3b644f9eb32ec9cbe1fb1bc0addfcca\n15b3111c1611c2e5738e43095496b061\n613e9e33ebb303b0e9e2744369bf17a3\n9e429b7f77646b4ccc8f8e7f17e9d7b6\nc2365f1009f94814ece2872dbe44bfca\n1d6150ae91a07cf6f4fb4dee5181bee\naef0765eabe46794d2b12aa6a0f050b3\ncca18c7f8636606f51f77a6d7299806\nb8f462d89a31e95b777c3ba457301e8c\n7229a4c3b3146f74d838ae16242881dc\n9997397f29b90af470e359f3b1d0f6d1\ne79a991fbf64c2c771dde564c9e207fd\n7b7b25e8ab725feae76bc197b3a3ffc0\n704e4229c7f8a0771015feecec1fadc0\n5ab38425eb09fe33cac2a982f1c2a5b5\n38d4d7313a3698704bbe1e20736de8a2\n675f7c94f5422ebe9e4965f0106e00d9\nc3da9fd354b31502d6eefa796d2f261c\n1998e800a95bfd18edd7d0866499ad97\n6550c93bce51b9b4719088c8e42c6ab\n6d08f3c059e674dfcb2a965e75be701c\n7cc80dbf0cb6f4c6b8134b0fbf68257d\ncbe6101e5199ca2d88c88a4c0a3c4a21\n8450be279a0ea0b555839db883c17775\n8f64075972a1f7f3dc18af6f6bfce3ef\n2220c6ade811851cc13e020d985215e3\n3b7fc97192e483ebb0bf045ee98272fc\n65aa814b10f778b2056b4bd5d870b47\nf0c2b4f3e73873998cbb8bac2032149c\nfd2d7b385db7d186f9e8cd846ef13776\nb57079e504413f02ad5067eac75a07f7\n981fb231709d4d2cfebad4f49b26ec52\nd0c8a593361ab77d5c3d5e3801c5ac29\nffad1499a8bb6c7c19fb4103277a6b93\n7cbde340db4f4ee2cb2a965e75be701c\n783b224ec9a89638736ecce7d21f395e\nddd142d8dcd4e95bf4fb4dee5181bee\n7a3590d0abb36b49593ebeeedbff73b\n186da14db8a38403612d80eb7de76ff\n107eb4f1731b2466780bc2708a85ba9a\ne68f6dfeb7ceea7084663e651cb1f07e\ncf3821cfe979f0214d84fc9b190bb79a\nf133d3165d54e5b227d635628fe95db0\n5b5d3f675f8d0bfdd2b12aa6a0f050b3\ne01c283efd6a0d2120d53ceb96ec7d24\ndf6fd36040a5719662701a18243b45d3\n1e4c1fc02be62675f90c2728303e546a\n722458bd2a0eb811214a15a5a42c49c0\n756108c9b72e95aa57d85583f4ad07cf\n48a9e1be51e751eec4da326c9127fbbf\needc7453ee8b1cff9ca96b2737246fca\ne31212e9f9f5888effd5817f210f277d\n65470e16a5880d4dcb2a965e75be701c\n16ce0976d3bca243e6fe3612af521500\n595e48c492a59d3029404a50338e24e7\n5fa51bc60906cc548270ab5c6ee87257\naf5bec1a8ce2348663b2acb037dfbcde\ncd7689a92e0d39896812e49a5c99d0f3\n77aa33479c2ec92f610c2a68437007d6\nba4ffdf3eed29dea9f8c3d2002c77ddb\n64cf18fe86206f6e1b1a00a31bfed97b\na31ae6a0f58526af2056b4bd5d870b47\n696697545f8c8b9ff26d8e17374f38e2\n6953a491a4c74d42d5cec9a69bf229a3\n72d5a7338dd7ccffd7262b1b986920e7\n86980fcab93e60151f53db693ffe56c5\n8b19ea942987fd72eb753607b9a115b5\n99e759db1e01bc3196ca2abd33a2baef\n3776c500e1654d55c50517751ed5f28c\n9452149917cb2e27f4fb4dee5181bee\n3e16ff75bbe7ed27464e1d2ff524a75b\n644043e43b18d2fb4ae9e8fe36a5d4d7\n73a6a42f5e45b3e7a3879b7d5fe7c612\n6194e1897f8ebb17b40f0ac0fb9a650d\n988d4a7f08e66aa3d42b9650f19dd425\n4d24a0d4ed77db9f4b3c42e318f3affc\n2b065fc9d62f1540ad5067eac75a07f7\n34bbcc05fdaed2e437638a2ced7d0ba\nbd88f333baa6cdc723d95f4309ade30\n5b9261d3ab4192a4cacb7e48ba59c48a\n1d0dae2db37fcb6ab078c101ed808ecf\n5a52ec36c75fd3d87f502c4e1de97042\nd46ca28fe271ef7bc5a208307819a3a1\n442283366e5b20c7a136444fdcc3f2b1\n687efa006864f71d46c340938e2ff1c\n6d1883ed7f0cec103023dc1d1218bb2d\n4bd994f25cd3e1fd2b12aa6a0f050b3\na8a6aed819779d6b19fb4103277a6b93\nc32504d950d54881c3331c70c9cf7624\n24eac2668c9f241fd2b12aa6a0f050b3\n6f2fa876147a970c5acde0d39b1b9dba\nf934f89d094313362056b4bd5d870b47\n9c9aed95c76b4ecd80360680c1602c7d\n607414f33022aff2d2b12aa6a0f050b3\nc97683ce5dcea25ad1d789f3b2120d0\n6c5b4a90068a6b511fcbd85b6ac8926a\n9705540347025dec9c2dcf27153363c7\n807f68d665cf7b0cf4fb4dee5181bee\ne4d1d4714d5dff9b79fb1978bf47fafc\n3ef2e306aadb9f98dd1f70bbc27696f8\n33a40eba7b3382f5653e42b6d3d77b73\na3f987a1f22abe81c01b94c5b8c30315\n32563c1b8b31667bb6695fcbbfeb161b\n5dda4ef4ab9add9411ee8243f54292d6\n6eaa388bfa782df4392580629414747b\n1ffcb829779ad5942056b4bd5d870b47\n348c52c333d7a7953722bf980385c3c3\n36e1592e13b4f5ed569c11df1aea8ca4\n1bf5b1fa54aeec162701a18243b45d3\n802e7f3207fe4306175516c727777db1\n991c84609666c015da34af5fa7da2314\nd6075b23895c7d0880e85c92fa2351f7\ne14c754dab919df2ed647189c2f43b5f\nf3a44bf9a27f1446ae23680cee12f145\nc50e2c7a82ab0362c69be1660283647b\n7df3c8885b22900ec88ad71674956292\n4e3e67fa22620b82056b4bd5d870b47\n153116d4415ee016601104cd2d998272\n5c1dea3aaa34fee26c289bdcae73ee89\ne6f7d84750ac46b260bedcc07a9f285c\n17ebf60b6ba61ae949e6f7df978f3373\n691ca19f8a2324652056b4bd5d870b47\n7ef967a69c03c63dd3a0736b56eaf4aa\n79f02eae8c5b417d756b36dbe53a2798\n84cd6e96a464894af132460d3f8b116\n1147218db46702242056b4bd5d870b47\n16592a1467b7751fbb9faba74eec2c74\n1b9ddee986099bb78880edc6251fa529\n750cec373ccc38a3a3d37e70863d948e\n843cbbdda45de37970709281289b3745\nff71a0d33a3aa440565888a91a05d618\n1b1cffcc9435c559f155d75bbf62b80\n393bc2b638ed33fd201085e80edb26a\n5c76331c2d99f3e2fc9d3ea96a9a9d1\nd1caf5fd22c6c5083892cfdb72a66fb4\n17d8e07c30ff1657d201085e80edb26a\n8b9d37a08dc542f86f4e61e20a3631d1\nc65b1fe1cb4ec230262cc3347c0f3889\n49eda923afb7fd21456cbf78e1e89022\nf4b6526b744290ee5459024571014ce6\n6e045aac2c52c7c556f6ef8b6ca8f4cc\nf3ce6a320a9f2791b1a00a31bfed97b\n9f757c0acb5264f665ba78ad9601cf1b\n1dd7409c95d59d0da192483aa282f8e5\n515716e2bf805c088430b7446f9e1252\n1f19f93fc7d88529ad5067eac75a07f7\nd9432798bd2aa338ad5067eac75a07f7\n3feb79684658db043efeb398bf800e80\n82b8609a6b1dd9c1c1c1ff0fb1d59ad\n1ccab18605adebb15735dec4de5bdaeb\n3b2ef85bafb7669d35382c4d59d1fdb6\nc8a2ce0e65da4b817b11ae648ea92233\n79b66254a33c4a80e68b7becf68bd6d3\n92b9ca91ff514bc90658f68885fd5d0\n71b9976c657291772d07d128adae16ff\nba58fdaae9a5520b421b60451f2f74f3\n779907753183ea36601bea3dca268229\n7cc7a6e8e2aad387a6a7b6e78d8d5bcb\n807b854a7c35379af5779d217e69b7a8\n437167659b0b5a8fce8fba09dd640742\n852d65fcf7abec4a301cd89e7156530e\n319c099e8df5fcae2056b4bd5d870b47\n86341aada547727593ebeeedbff73b\nb2acbc0822c163fb491436340b3b4d18\ne2e528622ff47c32cb2a965e75be701c\n427df0fbd51ba54560f140e76bfa752a\n213e68b2abe5cf24bffe63c069324d61\necd56b7b86c4d94ad1f278e1513f3b7\nd6924af4f2849c8219fb4103277a6b93\n7a8dbe4a1ce3be987962800be79c6e52\na82c14ef1540d3abf4c42dc386169bd6\n28ccec6ab49631e4e0f41fcfea9716c3\nb179e972d13ffde523c05fdd9cf000c0\n55c97131574186c0d4d8765e3910f617\n15fd978b59889cdc30bbd4cddd04c77b\n19aa04605b1b00d0ad5067eac75a07f7\ne27ffabfdcd52e7dfa11d00fb25084c8\n8d1f361eb7a927d8907921e9162f6a43\n7b17313f2c00178b2a4d67a8ec314d2a\n2480c05ad2b4969971a782a4379556c7\n27fd962813feeb26be25fbd47cafc694\n6a3bc6b44ba974b69c0c9824ccd078be\n537a02eff282b33df58bc14da5676759\n916a6ff06a128851ed98cca8f0ccd5f7\n729650e08d4ddb97ed98cca8f0ccd5f7\n702cebffa33a19f019f079d1b712f46f\n18f57a3d41117140ed98cca8f0ccd5f7\n40cee2893781b47f50f9fc0e2c94dd76\n43d40b726c369eaaed98cca8f0ccd5f7\ne25c7c2469135e3fdd3adf3090c701f7\n48f517497df57a2c2056b4bd5d870b47\n3ef52655b95ea7828d1fe8cdc415f4c5\n6a78bd21ec72d396f155d75bbf62b80\nde305de253b7040aa4e9452025f4f1c1\ne0ecbe3b106f94dbd2b12aa6a0f050b3\ncb4389a968257a7dd2b12aa6a0f050b3\n5e0c9babeb535aa4718e797a380b813f\nf2916fe6d5f06678ad5067eac75a07f7\n7f1f873921ae0c63f155d75bbf62b80\n5d9880d63d54b9c442bdc91bf8c0f902\nae1adc589a37317b2056b4bd5d870b47\ne941e1929bdc87d5ad876645af0395fd\nb4584ca6fe22a0be599937922ec198cc\nd2193ef2753921aced98cca8f0ccd5f7\n2e5b449d584725dead5067eac75a07f7\n41e1774c1ad94df4ad5067eac75a07f7\n9d7a51641609efeb54db38a439aab3c3\n7047ed12851201138cc469a51e5a5cff\nf21333a7141e7fbdad5067eac75a07f7\n7aca4c47c6861f2122445e799be0f18\n4eb44cf234eb74dfcb2a965e75be701c\n323f0787810ef9a285a030bdc6cb9884\ndd9d0cfda54dfc30eda82e072f128485\nf8137efb3a8bf9c3d2b12aa6a0f050b3\n9159af619d9125ecf4fb4dee5181bee\n165cd9780f069ff31a546a81aa94b4a3\n4c26d27e41726d87f359d99f906f117a\nd55207728b14e543ad5067eac75a07f7\n324257d878597916bea0f59596aee501\nb90a642198dfd67ba6cf6cbb9f4c2bb\n272162e616a4e8e9ad5067eac75a07f7\n95e97cc6e2f7e2e1d5183890546dc397\n7ba9140b8e416d79601104cd2d998272\n8b4314a159d964fdcb2a965e75be701c\n5f355af51670666cfbf62ed378434fd1\n6798771442c7d473f336cb889fb7c819\n95b375118d800de7ad5067eac75a07f7\n5aa59235750d4dce9953235c64bd990\n31846b186cddba04554672356b2029e9\ncc08d4ced5931ed181faebbdea6bd9be\nabf250a01f526137a035c800c58595d9\n46bae1672b4d146993a6b3a551dcb739\n3a91034ceb33784b562fc21c99684e03\n263f629d385be2b1601104cd2d998272\n80ac9f2999087c868c0a51976aeebbec\n8d9903f1a197ea9af4fb4dee5181bee\n9c7527d5d1fe9047f155d75bbf62b80\ne70d19625546502bed98cca8f0ccd5f7\n170b01ba7fc575aaad5067eac75a07f7\n3a6ac28f247a30146d812a3e2aa98a91\n2fec2d7fdd169e28bb90acb1046227f8\nba363a93cf76f9a12056b4bd5d870b47\n61e3c4fcffab96b9ed98cca8f0ccd5f7\n9f51e1e44bd439f32a0697dbc1a34813\n10a66ce0a6b469d3b2cb19fcedc32ddd\n7536b671103f96e5b12a55dfcc392e26\n78c7cee6016d8dba2056b4bd5d870b47\n5d68fdf84dfdc4809f136629ee03397d\n80d62612758f74d4e8a5546ad55c2a41\n894f41b8e4e3231601104cd2d998272\n797d99a5ca291a2085fcf80cfce883fd\ndfb1e5e85b5892adf155d75bbf62b80\n9d01b7c51223f973f155d75bbf62b80\nc3ce87b94f493cba4ecb12161a6eb47c\n74983e99e7606eb114708467db3d00e2\na7588e794de38fd055a60d8737d1c0e9\n30d3152964e13201520d2a054af1eb24\n7a910c3d6878068ba653610be84c6d81\n12b3daecfb0eb7d2056b4bd5d870b47\n23b5a3c3d7d6057636ebcfdda999d232\n6accdfe97ecfa9952056b4bd5d870b47\nf343599b3eb41ae3f155d75bbf62b80\n9a7847726c939d86c267d7dba6c1d40c\necef040a94ab9e59928f4521e8b299ce\n5aa9a03af76807fa94f937d854219137\n14a73dd6b5d7ef35feea12256ad59f11\n6ccec23049ae42ce2056b4bd5d870b47\n1cbbb30e8e06e932ed98cca8f0ccd5f7\nfbf16da56e709e422056b4bd5d870b47\n2c47d12adb8437ed601104cd2d998272\na451f5d4b01cc78856f6fc4b4ce1db04\n55f637ec7432a97d1d677cb74bd6536a\nc0336b0471ca232bf155d75bbf62b80\ndb663d2bc7e398ad67a2f40ab335eb08\nf6219339c25b42fe81faebbdea6bd9be\n8bf63e9b3df32ff1e1aaa7ea27fc24bf\n3461cf51ad90f09ce3dcb92695647492\n86ab9c42f10767d8eddca7e2450ee088\n3e850a85b7c0f82cad5067eac75a07f7\n9f0a6e7c525c3c53d4d8765e3910f617\nef1a728572967942ad5067eac75a07f7\n5ed9651c928575aab719144d1cd30cfc\n4a5f9a0672cf3a1fad5067eac75a07f7\n9b41191a915c09bc669f4f2ecf8fba0\n58a09612c838e441e7b89654b68b9e5b\nc83b3192c338527a2056b4bd5d870b47\n3250f6d70feb1e77d2b12aa6a0f050b3\n99375af4e13f0b2f50f9fc0e2c94dd76\nc0e755071b467ac433faf2dd5a7ff771\n778ad8517a34927d2056b4bd5d870b47\n9fd13f28f9260e65ad5067eac75a07f7\n2b25e49c58ae0e292056b4bd5d870b47\nbf0b9b88be76628440126a5bcf48fc87\nc8fa692760ba875848d791284650e46d\n338fc00ee5b182181faebbdea6bd9be\n367e5ca5d5791739d4d8765e3910f617\n8325e5496a7ab8abd2b12aa6a0f050b3\n10bb5f29a8654f22ad5067eac75a07f7\n7b7e73cbc821d520f155d75bbf62b80\nac78c8b91417aa5bd2f4120f473fc3e4\n84aa911799cd87b4ad5067eac75a07f7\n5b45d3a1edd81a8f2056b4bd5d870b47\n616833ef9cfdacba583f5c4be082f8f6\n6ec0ed3fc05dc7b7ad5067eac75a07f7\n247227d258f2c239d4d8765e3910f617\n715e78fa6ac13a5ba5d322186fc10e9d\n4f4416c9c53cee10b3a46b931571f116\n7ec901eb9f5204739a6c869309041adb\ncb48fccedaee0e82368bd71100fb3a30\n7792b15f8c598763d2b12aa6a0f050b3\n89326f54e97f65d82056b4bd5d870b47\nc03e7f08edefc17a5b28ac1273e4dac5\n8bcf6b5dc0c19e6cad5067eac75a07f7\ne3fddd1e0ce63b65ad5067eac75a07f7\nc29ae4355b73ad302be4222736443739\n72dfdf42a06d55f61985df8e5a34361\n4cb196a794bb7876f4d63bd79294e117\nab1614b56ea09479d4d8765e3910f617\naec473af77a77008cdb14b1e0ff2c14e\n3a4ab482c4d344eb2fed5f7b90bc9e3c\n32bd91d61ad0824e2729c156998d6717\n9c95f498f2726883bdc8e7e780fbaa21\n969f830a531682cef155d75bbf62b80\n6ee844357bbc5bddd4d8765e3910f617\ne60121b8e4ef137bad5067eac75a07f7\n6ee8866fa7b253e8f4fb4dee5181bee\n648754d5b241b12e4886781cb92ae74e\n1f1f0cb43e65903d1d06bff8f83d7c23\ncc7ab68e97b381eead5067eac75a07f7\n1ee7b919637a2acecb2a965e75be701c\nedac7cf37d1d7a42c79156efeb6d05c4\nebdcd5f64e44ce0cb2a965e75be701c\nf35697e0ec1d35dd357ea07594f25728\nc4c9828b5c0e5db1ad5067eac75a07f7\na7096667d133db73cb2a965e75be701c\n4cd4797320eae6f90dac09d2827796c\n280553e975d6b79fd2b12aa6a0f050b3\n6e683e60075bff408f98ac7ca14e08ed\nbdc3a9776cd0d69b26abe89c4547d5f1\na001663b61ea6accf4fb4dee5181bee\n82b06455e41204e110df635c029b4e63\n13da7d4d1277574c64b7b850ea7b68a\nb859f6e61529db7b195c5c738f050b29\n98de2d75e89789a7d301ec101065cf10\n3c2ffb35d0b3d831e1aab65fbcc9b689\n2f34980683df2b47ad5067eac75a07f7\nb58a0307a86959bd564f6f5de611dfed\n388d83f25e045007efe85e37dd46e84a\n16e3d7f2b75cd67dd2b12aa6a0f050b3\n59cb1f3c7476a5712056b4bd5d870b47\n3824b040bd8906e0f155d75bbf62b80\n6c8d7faebd2ca60ef3b7873c9ffd02fd\n6a7ea728941d3f4f4fb4dee5181bee\n5121a485a7eebfec5674b1bb8d658d39\nfd2394a5f4d05d4c331bc7630c8705e8\n2ab2387e58cfd17ef155d75bbf62b80\ne86a2291d77b8ff9408623dbb138b966\n3e59aa33fcf672b8f4fb4dee5181bee\nfa51b43a7de98d0b7a7695d948d413b6\ndd86f9095341d19af155d75bbf62b80\n188a2c6c2add34399dcab1d3e38b3b70\nbc1261eb081cce07467f6a563eb9f7b2\n738e4ec61f69606bad5067eac75a07f7\n9b7b628bc8cc7463103d45b529610c5c\ncb4c2ef4e926f7c6d4d8765e3910f617\n92d4dbddae3f26772056b4bd5d870b47\n990c56d6ab64279c2056b4bd5d870b47\nf98b9721d2f5b3d7f4f81e1d4b32b45\n371e22e18f8e2fccad5067eac75a07f7\n2cdd25a716ab2ac12056b4bd5d870b47\n86ef2d2a38bde1ebad5067eac75a07f7\ncd08399f8fd8bd3bec6d7b771f3c56c6\n7a7c5ca50411d85f4fb4dee5181bee\n52d8b9703dfcf31f2056b4bd5d870b47\n243ac273ab2262b117b4e4e00788e093\n8256252192c60158c5449cfd4c0f0a4a\n17d085303d4c5121ed98cca8f0ccd5f7\n2c8435941798069d35580c572d992e6\n8c6057a5258539fef155d75bbf62b80\nc2e0cc96c3ae97932997d70e9237dd6b\n1d5d89cc3c83bef056f6fc4b4ce1db04\n1348e440934494f581faebbdea6bd9be\nb2394480df328a98ad5067eac75a07f7\nd290989e0cd0ef7acc546d806a30d5b\n5f8f2518fb850b544bf6fb242f907340\nfb9775e4ada511d7844283a0969502b7\nf2c542ed9750ee4668db2d7865d1f724\n117259de2f72887bad5067eac75a07f7\n5cbffd78e4cefc3038330212e10bdbc0\ncf4075a6207a77fad5067eac75a07f7\n34577ccdcbd46908ed98cca8f0ccd5f7\nd2d4d92195546a1ecac503d0f3cb1d7a\nfc0486ec53630bdbd2b12aa6a0f050b3\nc005e1da092925e5aa3e4791e7582e61\nf5ca026c6cb2b06b56be5749887a17a3\n8141d9182908d7288be87af3b9c7b4c7\n6887f90a83081b56a1ebafc9c1beded8\ndb8f61eb5dab7b26b7710a2fb1bf7a26\n48ea3558db137e87ad5067eac75a07f7\na0ffa64279a8c6f0f155d75bbf62b80\nefd2d13058330e49d7f638b2b2e0564\n5bb40ee2f4893358d4d8765e3910f617\ne929c571972b954981faebbdea6bd9be\nba8ca7cb2d3c265bdf535ea8b5cca766\n5dea347d55e0704d1992408f320d16dc\nf1515c5d78429613e80dd430e11432ff\n70edb39bb2710eebcb2a965e75be701c\n46b3e857b7faab0117f92404d4be5d8\nc79fc66b27a900ac842d08202a7fd76\nd25707cca23ab03ac8d56a266ac05b68\ne66730e74570d0016e90d42867af9dbd\n8ccb3bf7c49c24c0d4d8765e3910f617\n1ef8c3cabd16f7cbf155d75bbf62b80\nf98acd1dbe15f3c02056b4bd5d870b47\ne5af69132cc95133f155d75bbf62b80\n7540e6df58bf00ff13eaf3e3f6d466d9\n25d1aa23abd04998d4d8765e3910f617\n7e029f73e9cd98d2f155d75bbf62b80\nbd56c556d9514db3500cffceffd2bd2b\n287475ec16f5b7477b636e5c31038bd\neec9e185d9596e7ed2b12aa6a0f050b3\n95ee6234a1638f892056b4bd5d870b47\nf958d18643e7dffd99892aa9c57c2870\nc56c65eff860855def9373d49bf935b4\nba8e193569ea391efcd6646576d2dbbc\n7c49749ab1fa402a2056b4bd5d870b47\n575595ab81e657315b3aba3f0877c74f\n496f1d6cdd0a0aa247b74f4d1238a1fd\nc541d59409647408ad5067eac75a07f7\n1dfcce44c2f98d2c81e7c6cfefba0d68\n9bd3bcb173dc1fdd73141c5c444ce860\n96fb3569c007fec46dbc2b0ff6fd8e0c\n85ab526dead09ffd398e68bb81784a80\nbbd82d91a0b7fc12ad5067eac75a07f7\n31615e201e29cc11c7f46e918e672933\n7de0323af143c38bd4d8765e3910f617\ncb81ce8d2558935881faebbdea6bd9be\nb83b544f8536375ed00e4d1c6a5a3a74\ncd385ebe6cd0c1262acc546c71bed8c7\n51c60589bdd1ed73d4d8765e3910f617\nda92767c2e0fe6bad5067eac75a07f7\nc023275b1a68d6432056b4bd5d870b47\n646caeea9d317c9581faebbdea6bd9be\na219234ac9ffe2e012f133bc7efb2111\nf3e13747a652b96bf5fb97c1f9661c61\nd1d433ab6a289a568e95e8a3bb5a538a\na8ea7dc227b632edb88a2574e8fbb52\na2678cebeac0a8c9cb2a965e75be701c\n127dcb2e061ae07f155d75bbf62b80\n667305123da07968d2b12aa6a0f050b3\naad17ac8d5a1ccdfed98cca8f0ccd5f7\n143032619a82710b2056b4bd5d870b47\nca238683133f6a7f38f6614f37ed2984\ne2f79a5d9126b25aed98cca8f0ccd5f7\nb711e64c92fc594c18e830a47a552b39\nae2605e9e8c47cbfad5067eac75a07f7\nc70b020a21a7b2de67f2cdc0901bfcfe\n473655a56670e13dcb2a965e75be701c\n4ec290c73990a82aad5067eac75a07f7\nd9479cb37b782ce5b714422ef873ad34\n29fafe9d3b95e324535e3a87e2212e35\n87783e267a4db70044a8a9dc66c6c095\n578b801e35fd2defd4d8765e3910f617\n5207969c5c38875a6eca3a103e1326ab\n59c914e55665b02cf24b3c783ba45ac1\n7bcb67e77adbb19bed98cca8f0ccd5f7\n34a1d09b3ec2f05b2056b4bd5d870b47\n54c05e235c8d3a4cf09874e0e8a75195\n360d4f846b37b7fb5b9049c85f69b9b4\ne4f68fb5bdfb68e936a9515582552983\n1b40594ce6fa66ca35028a2641239f56\n748e447a5f7a698df155d75bbf62b80\nd7731559d5f485bcd2b12aa6a0f050b3\n84e95910bf6b0b3bb411c6406cd0f9e7\nef018d0bcb3d4c89601104cd2d998272\n3c40692f71e9b773c2c0fe12f0bcb343\ned8401565e207665f155d75bbf62b80\nac477aa3d54d0e06f9e4cc51c75c384e\n1e4eacc8dc69a40e414354bfb060c386\n4526eecda7ff1136ad5067eac75a07f7\n7f67934afc4f95b014bcc66f599f3e46\n909fcd9e329cd49581faebbdea6bd9be\n6718a5b3f89a5d8844c3e89e175ff663\n4b079b2e510fffb8cb2a965e75be701c\n6a9fb118c1501215f6459198cd03dd78\n161bd345833d982325953d410324c2ee\n3ff4401d898b488a601104cd2d998272\n56916be69d224f2a3569fd2bf3d0a41b\nb9535bf9b002a226d4d8765e3910f617\n9596592f31910b9684a9223b0abc0b3\n5f12f2a5d67a1e9fcb2a965e75be701c\n62cc45e9d704d87f155d75bbf62b80\n2cce7ee3c360abbad2b12aa6a0f050b3\n530b1267e70cf134d4d8765e3910f617\n632fbec93961015ccb2a965e75be701c\n26325f047537acd3f155d75bbf62b80\nc20409a88bc98bc8ad5067eac75a07f7\nb2596a0e14772bbad5067eac75a07f7\n9cd6dc2b9d11016c49b3ccbe36f67015\n2e016658e44247bd2056b4bd5d870b47\n78f68a5f65ef88482056b4bd5d870b47\n25f916e08a803ad5067eac75a07f7\n89e2eaeb437cd42f85e40cb3507a0145\n9ef2f740d6dc7cec8d01d636ec229b2\nd06cf2129d36dec7a4f92840428bbcfc\nd1190ac57a48b879413d0cdcf1f63207\ndd56a9259a0eb458f155d75bbf62b80\n759fbe8a3ffa3831a895774ea4e4686b\nc3feda2ac776a972b8962f874d138696\n8d40e13e8d27786b5a2cd0e0d44dc51\n8f6890cfdd98450f4f782ac57aea97b\n107c0b6b32282102493c8fb81dc7c4da\ne7a18e21f877b039f4fb4dee5181bee\nf3ec1b92140e1d80cb2a965e75be701c\n408ef9729c48dd40bb273d6b4d49877f\nab1c843def8b843bed98cca8f0ccd5f7\nc3f3565f0754f1c910917cc30262fb08\n13b28cea086fbf59585a7824ddda249a\n9787c8521ba8d46b5b83c5170da4c6c2\n7a500a01f5ade316ed98cca8f0ccd5f7\nf39401db6cc45a3ae3e15116d1de599a\n599dd0b655adc794ae143c6e852a4f2d\nb2b856a8e25eb566ad5067eac75a07f7\n1167fd85d3dc7c8df4fb4dee5181bee\n20ac7b1b285151789dce72832d2a77e5\nbd40921448838cbcb2a965e75be701c\nf0df158b0694ee1f2056b4bd5d870b47\nb6c745406a599dddad5067eac75a07f7\nba5e47b9a08c33d1ad1f278e1513f3b7\nedec9a4512b98f6f2056b4bd5d870b47\nb788370bde4ecd578a333b44b8649ff\n512511e994adef8c28eac72b6945b61\n2b90bed7e9960ba11e672888e1de63dc\nf1102a11687f3451f4fb4dee5181bee\n21409db44ac9db8b6f1234a0997684f\n3e0694b77418eb25d2b12aa6a0f050b3\n4273dca1b0184024b722a94c1cd50b0\n7d1e56ea7f32d634cb2a965e75be701c\nf197553928fccdd2b12aa6a0f050b3\n31f34cbd9385944181faebbdea6bd9be\n9e5a16d68611c57cb2a965e75be701c\n5c31950da8e2eb09929ce23741435ae\nf136c5515364f62ed98cca8f0ccd5f7\n6ec8ad28c96e49b588c2a8e73c840fb2\n702428ed9e72d74456f6fc4b4ce1db04\ne285e553a6879a5e2056b4bd5d870b47\n835086fd24eb283650f9fc0e2c94dd76\nce663a6430eb9523cb2a965e75be701c\n3b660f1b7f7f41be25ebd1cd0b422e32\nced678ceab87f6b6f4fb4dee5181bee\n41120a43b6b7c93210399d5a44e67cb5\ne3c1e31ca2a0247979dee05d9c95f934\nbdf722327e02a0f0ce7719c693f5802e\n1541e36e8dc2d84caed2201239784a35\n18926a71dd7f17eaac40ad047084c6e6\n2cd9593e8b7f0560d41e37baed87521d\n7e2433a3cd020f53588060c928db75ed\ndbb5cc73da4780feed98cca8f0ccd5f7\n6319038bd4748a03d2b12aa6a0f050b3\n65f6f33358b798892056b4bd5d870b47\nf11c39810334bc2a45bf743eed1481df\na8c8aca72463418581faebbdea6bd9be\n77597f34b5f37c5e7a403ae58647b271\n5a0f0d22870fc83b2056b4bd5d870b47\n146fb2790c11c7f1aaf6c17538652a1d\nfc6c2a011ba0997cdccf03d91dc58d38\nec7c3cb273f857ca785c8f27b37ec031\ncd1077a52f972810cb2a965e75be701c\nc930760585e923cbdeee898eeed8aea9\nb7fd9faa8c78806da9bd18a6c1eb0c1f\n3a93bccaa0b3161afca6ee915b120ce0\nc069553c08631597cb2a965e75be701c\n550b7b205e57c3b2315d0535381646e0\nab891fba7aa43f9df155d75bbf62b80\n9c8aba47e37b1eff155d75bbf62b80\n6d23e04807a5c840307005544420ecd4\n28530ebad05e63d9d9c2d24a3a0c74af\nfe5711dd4a51b102ed98cca8f0ccd5f7\nb4a9481e902d011ced98cca8f0ccd5f7\n38dff7c9994cda58f4273dc8988e4c4\n15cfe15285425b67bc96b70d50d39da4\n117f0ee18ed91ea2d4d8765e3910f617\n895563d304772f50ad5067eac75a07f7\na9aa868b77c3769ba873941124e3356f\n8c95e3b240f590c52056b4bd5d870b47\nf8aa82e7e4c58ce29d31c5ce17cce95d\nf5d5f659c9cda6d0ad5067eac75a07f7\n6d420bec5284eb43ad5067eac75a07f7\n616f9d109968982ced98cca8f0ccd5f7\n1c310698c57a3d378fd6b27be619556b\n8b677cef30fba873240c1f0f1e25335\n7e524d1958ca0348d6abb4efd157f402\n44085381e0708de48ee8b7b79b7a0cdc\nb29e0a7af1f8d51b5c50390adfa8881\nd8fe288f137ccddc1c57d18f89ad9dc3\n2c183b1b94d94d34ad5067eac75a07f7\n82071d0daa90cc15ed98cca8f0ccd5f7\nb6ab037942cf91c0601104cd2d998272\n95096288ad7e0777f155d75bbf62b80\necbc04934735cbc852dff9108cf86a17\n6e77b16c5463bf147756371b6ccc35f2\nad9f6cdc0cab11986bcd8c7601df5d35\ne2be5da815f914f22250bf58700b4d8f\nb2fa26eb323ee7e3697079d6fa35f34\n90a309f7ac2c947f155d75bbf62b80\nf95f1121136052bcd4d8765e3910f617\n36ac567cae9ab205d4cf0f8e55d6cb79\n7be476ad18fc7b40d201085e80edb26a\n6b05c22024088fa92056b4bd5d870b47\n69259c43d80d4815cb2a965e75be701c\n206904737710cfdded98cca8f0ccd5f7\nf57c2037fdae635b29a9b1ca9709749e\nc2c788ec4dc9f467d85a7a4d55e9b869\nae9c8421189f6590809b609a351bc774\n6512b58401c7ea51ad5067eac75a07f7\nbd39e9a5489f89c8d6d3866b78fd4902\nfbed7adcac3217912056b4bd5d870b47\n5b5be5419120ddbcb2a965e75be701c\n3dd362593be47490ad5067eac75a07f7\na31ab48a2b96574b9c3a7877712317b8\n23bb9c45796a28d4154e78d1322f3484\nd3a5134df6cd94e2e8db995f7899d418\n1aa15011153c5d6aa64b59533813e6d6\n6a5ba469761d03c0d60ded25865ac76b\n579e02140aa4c03edd67a519fc8b2283\n582ecc11367a2aca2056b4bd5d870b47\nd406968659ec5ab87d55717abcc7106d\n6f630f561e5ae2a5423efd8c02bd12f7\n1bdfb8796887adf92056b4bd5d870b47\n8e260916773769032b7072d8dd8cf43d\nddb2c6abe41b2063ad5067eac75a07f7\n69ab287543b3a04a7e3b0132a2f87650\n8b98dbc11c5d2fb7601104cd2d998272\n8ad57afa55cebfe0dad433a29cb627ea\n10b43623dbc8ab25ad5067eac75a07f7\n98d2e8dc90f050d52ef1844825af63f2\n6afb907e76102e222056b4bd5d870b47\na968b5d4ba65b1af155d75bbf62b80\nb358c31d1bcab88a26b5e3d0c65cd557\nbe7408f8b03d491145004a22a9d35958\n49704546a313b40781e404e60978a1dc\n745ce171571074decb2a965e75be701c\n50612adf11f22931d2b12aa6a0f050b3\ncad0a0e60708ab662ab293e158725cf0\n5125cca7f42b90b2ad5067eac75a07f7\n38e54a16698453baad5067eac75a07f7\na857f9d4838b885f2056b4bd5d870b47\n8def49409282ccd4d8d8ba9872cc7fb4\n9683f5ef9e032a8aad5067eac75a07f7\n4d1d28d15b19f9101e0e41d96d3d0a78\n4b715a1f611b30768b45d2a1081eca04\n110f199f516657c1473448e3f3f73bc2\n3f50c37f196c541e776d8bc79b9caa2c\nb628ddfe4d99a46021c74c368d3910fb\n135765739f0cb969f155d75bbf62b80\n6a6aba2dd0491b99cb2a965e75be701c\nf213ccec1e4c9dddcb2a965e75be701c\n83e7c29954256530e2c4291819b46f29\ne9a9c499e74c2989d4d8765e3910f617\n3a1915451880215e9bfbe8b02639d1e9\n2d238b5250ab9eb3c55f85313e3bbc89\nae6e6210e0280f24ad5067eac75a07f7\n754250f866079c2083f64069b9b28eab\n6150a9e7c5534dec50cdeffe12411e9e\nf397f583f459134030c983bcaf68f0ab\n9fe85429413af216cb2a965e75be701c\nb272113ac712ca012055e892b9798352\n41d8b7b9480fe27dad5067eac75a07f7\nb9263e32f3d7a9ff81faebbdea6bd9be\n68df3d5c8ef4cb307cd7dbf0f3d6d9cc\n44d2f4786d18667a86d0ad6addf83b07\n8d218bceb517f272f155d75bbf62b80\n122a480cfcdd742650c626aa72455dae\n504ad0bf35b2004dd2b12aa6a0f050b3\n5bccce74947b32e38a92622cf31f5cb9\n6b262d977ea93d23ba6cf6cbb9f4c2bb\n2f815697256fce5a155b270ed8c04b46\n11499e2fe78c7a6d73bc78c81dfbb18\nafaaadcde1146dc2ad5067eac75a07f7\n58eb1f7c59fda8271068f29f0b65163f\n2f2fb3e4f0d9c4fe9f8ae7ed6368949c\nbbf019371f76366b8fb2c146d92deb96\n1d9270d0708fb8a1262707c3863d044\n643cac07025f195750f9fc0e2c94dd76\n38441b4582f29c8cb2a965e75be701c\nd23ca8dad2064c4ad5067eac75a07f7\n40280757b447eb3cf4fb4dee5181bee\n8aabc6c97aeacae7ad5067eac75a07f7\n4be9494c9b476dbbd201085e80edb26a\n7cf981899878464e2056b4bd5d870b47\n4145da9aceda5bcc8b6ad894ae3d111\n3363d17303f69d7fad5067eac75a07f7\n132231578d6084cacb2a965e75be701c\n95db80660b4d979f601104cd2d998272\n7ac31f1da37aca5160ddc468fe733ed1\n21358aae456be5087e03aa42670e6f5e\n302c64b3f9d0e0a3961c690e3d679ac7\na3e6d02075732ca850f9fc0e2c94dd76\n8f99b25df578652ae37d4fb630545e64\n78585e161ee3e39acb2a965e75be701c\na6c3eea17a4b455d75b557dd77720f6d\n8553cd048bbdbc15ad5067eac75a07f7\nddaa540f004e7889d2b12aa6a0f050b3\n35686cf1e7db69d580be56c7b04dd6f0\n4ba9cbd97e4fb17a75e6bc7c944c5642\n4a3feda042d94e85319eead4390b3fcf\n190bc3dfbed8c9ad4e77259b0944c35b\ne7536c6b13e44b9df4fb4dee5181bee\nccc1d51eabbf589ad5067eac75a07f7\n873ce9c208428fd5ed98cca8f0ccd5f7\nb03c1ad073bf95cde9edcfa70ed557a\n7def648b4fd4d1e419eeae21e79bb898\n8d3e69ee2d0168a6d4d8765e3910f617\n9d7185edf0717575a6195e775546b04a\nddab02e0fc2921caf46518fccab79b6f\n5e1ef1b63216952dd2b12aa6a0f050b3\n94a2f3859ed66873d2b12aa6a0f050b3\n273c618c2d24a562ad5067eac75a07f7\nfa1b7b9630c840eff4fb4dee5181bee\n448010b6066f3da3b069944d084e877\nb3c8573a2d8b0a14c347936f40ef6857\n110d24908bd4f49b93d3c9c269b9b9e3\nd03199998c84839a844cd843a27223e5\n1f0c3038d2a9bb391b305ee09b6b9906\na0ee85921d1bcfbd81faebbdea6bd9be\n671cade486e88b3880d14ef4d993c2fa\nc19a1aeba4d90b4aad5067eac75a07f7\n2b529b43c73da6e92056b4bd5d870b47\n2a45727df039318ea46a4c5f3c2363fa\nfec8bee05108531cf7ad31381468cb01\n54650f6fee0e76b8b173657dabb4301e\na2a83603f38cffbbd2b12aa6a0f050b3\nabd7c6ee28e19480a00f752d8c024637\nc67c3e22b0c0f34e7db48c721db3fba4\nc064a0ebde53de5ad5067eac75a07f7\nf7fe4b70b7268f6cc118bd35b5372812\n597cb92a5bfb580eed98cca8f0ccd5f7\neb7cc5c0c5f8a289d2b12aa6a0f050b3\na0cadebde61910df98e8242d4a63e1e5\n38e8a36cdd879fd2d6f2f8f659863647\n702870d836ea3bf32056b4bd5d870b47\n80f9707a7e4a0cc856853064b332a2ae\ned9e22eeb11ee9669fc351f487d31208\n781eb96c0a6ef0b48a51001eb8d95d32\n8c387d5e8ca71237d2b12aa6a0f050b3\n81d5dd006f418712f4fb4dee5181bee\n258a52f3077d3ed56c342cf382162bc7\n77ed241c90b88a189f197237213064cd\ndc4857179ccd30ad5067eac75a07f7\nc2516123957e1cc42283e6cce5561adc\nea892969e4035e0fcb2a965e75be701c\n2f0cd28e2f8cdac16121178eafd002fd\nb1adfb9857fc98fc28fbd1dd69384cf9\n7ab9419e7bfdc80ac51268fdb437a9e\n77c25a03784c8ea4d4d8765e3910f617\n7ecd49fc95f8eafaf4fb4dee5181bee\naa7f8ad0e6108db92056b4bd5d870b47\nd014dd996cb7b8ba4f34c3dabeae093\n6ba417deb22dec19ff8d96709474c16b\n1bace34d2c1dc49b3b5ee89f1f802f5a\nafa7876470b8b7881d3a1f40308f8b8d\nb773f8d5af2c1087cb2a965e75be701c\n23931fb6b6c46da895f577622f465c85\nc9d456bacf459248930524909158355d\nb274f40cccd7e067f155d75bbf62b80\nafe3b299132016512056b4bd5d870b47\nf200a8b5882be096d104df3d337858a6\n3b18e32e6e0c5942d4d8765e3910f617\nb3b8b909ff02f03ead5067eac75a07f7\n6a11450577768f2747d4c7899ba36cd\n4814cb73a71235dbf155d75bbf62b80\n5ab786ce3a18e3a170387839208c8db\n445230afd5a0eda8714b6900bef4d88b\n66304c61af32ca5aad5067eac75a07f7\nb380b855aca5632dad5067eac75a07f7\n11e98db089a66426ad5067eac75a07f7\nc71738e3b314a72411afa9f5eb84a7ae\nb20fb19d75c00c9aad5067eac75a07f7\n39904b25a6d2f13ed4d8765e3910f617\n152617f1e955e8baf4fb4dee5181bee\n66adf182075ea88177f32db2e5e73311\n23672bcfaa06a86764ab399dbd3ef465\ncd49cc9aa0377a298fb953ed1ae534fa\na775a66a362089fdcb2a965e75be701c\n7a89313a148bf1bfcb2a965e75be701c\n3d5cf677f2aa9ad978d4d2afb777f33b\n8e25c33aafaade0ad5067eac75a07f7\n419f4ab8254c97a2056b4bd5d870b47\n49908190a4206224f28732697aa0af57\n516f47d7763d1db5ad55477d55e7af82\n92e7ed09c8d265e5cb2a965e75be701c\n9aafd6c69c331aef535e3a87e2212e35\n44facd26b66e6ec8cf0c8ab22c613984\n4f9e40b167665d793a0ed7b4771fe31\nbb07fac582a687f0828583ad97f853c7\n32b62bb2758b4c7fd2b12aa6a0f050b3\nbacb5f46add42da9a53649a80e5aff8c\neb940ba9c22e793f35f2c389ea4da425\n3db1d3904f058b574a9ca2c84bced0dd\ncd052cd64a9f956428baa2ac864e8e40\n1be83cdaf803fa3b827358da75ee7655\n1809f6221774f1b62d309335a9a8acb8\nec917ab14b06fe402056b4bd5d870b47\n17a7a1a4761e9aa1d4bf2d5f775ffe5e\n6b9d09fcf8998360a36fa9e07c662628\nedf14e0208ac61b570eb586f56eab45\n879fec928fbb6ff36b95ce378e386482\n6c47b6b082cdd9b684370b1677f53d8e\na762de549efd8f2899d9a264095450d7\n9ceab93b37b71c47c62ba64662b2626d\n6eb04c416f0e40565a3c5e32936a202c\n9790980a8ff823287ed9296ee19fa384\n9dde18e7a5ea2416cb2a965e75be701c\n3f2d311ddc3b6c19d4d8765e3910f617\n8b682ef98315c3be21349c674433e602\n9113be55eb8ddd8ead5067eac75a07f7\n22c5aed5cfd1ef997666aea996e0bd15\n48c9e1679ada2949fd8f87bd7d4c2514\n76efe392461139df80ac1d1d1048ad28\naec1143f9e7375846555a8578c9b250\n9c1a78d3846b8137d839166e2dcdb427\n35908dced5e46b32ad5067eac75a07f7\n208b5f58f4f45d63ad5067eac75a07f7\n3eba7b7b2b1d139956f6fc4b4ce1db04\nc327cf2527737f7ef155d75bbf62b80\n5a0468d7c5ce7af6948dd2bc2d391e57\n9dec54fbded3ed1767680982183b294\n9a58d783e013b051d87d55641461d6af\n55da2d1d9250d41b800e0abb10f41d36\n2355964634eba1da35eb9316401353ce\n9891e489f1f4dab52056b4bd5d870b47\n9c69b56c5867afdf5d65e445b951c79a\n76d029e29ac2bb69ad5067eac75a07f7\n2830e62e4c5fc707f155d75bbf62b80\nfefc87e051b4776a2d8a6d5087fd263\n8f24d2e90bbd5855b77d52b64ec9e9af\n27539b0c42068420cb2a965e75be701c\n8d28e56cf5d2bfc8c3deaacdfa0e1e8e\n55619caff40ba259601104cd2d998272\ne0cefe05e1244097b51974a280a6461\n213ddf647e36ce28c933c4a3701f5695\n7bdea368f85d9eb5b47a47f71cb78bc1\n516e288a1f609250d2b12aa6a0f050b3\na03c239b05374a837c8303a5f3977966\n4e512ab638542762d4d8765e3910f617\n50db85e4889831dff155d75bbf62b80\nb19e1c6ab766b09bcb2a965e75be701c\n77fd0def3c3469adf155d75bbf62b80\n3f49fe14826172dff155d75bbf62b80\nfb39d112f22db46616462411d4c2b1b9\n49d0d178976c81f52056b4bd5d870b47\nef1149155829a5175c7dbebb6c018341\nce9c518ef76b4974d56cc378741d37e8\n5ee7a51ae38eda6b26b7fce5a7fdd285\n756c2cbd2d42644052b192b5b7698446\na90115832bb80dc956f6fc4b4ce1db04\n7a0d913c66278596ad5067eac75a07f7\n7262d96c5817ab55ad5067eac75a07f7\na973a401412f5561cb2a965e75be701c\ne01f988796268414ad5067eac75a07f7\n26c48cae38ed374e786f181221f27278\n50184fbabd0ac41acb2a965e75be701c\nea6da848da3f603f81faebbdea6bd9be\n3c90d2eda6fdae1fbe1638d01f5577d9\n665eb42db0c44bdc81faebbdea6bd9be\n43e72408630a790181faebbdea6bd9be\n5cb40adcdfa5247681faebbdea6bd9be\n2902b377edd4b48aa3a0c1cc16d124ad\n22da6d7559e28ac9d2b12aa6a0f050b3\nf2bad48085f087dac95c21b3fa5ebf36\nec4733130fe285d03d23022ce06f940d\ne03e7aab2967929d3fdfe80ff0b57538\n733cae1ea9a85122d41f2c02e27f6d9c\nb3548e858e4fa7e0ff3245f22be4d221\n7abeb2903fa22d0fad974a50533b722\nb73da1e1a2f2f549d4d8765e3910f617\n4769720a332fd899d2b12aa6a0f050b3\nf8651ae6dc32338ff7010d9d85b1eb2b\nbe8fa5b70de21c9ff155d75bbf62b80\n21e7b25522c63209cb2a965e75be701c\n7d67ed4517c1d702ed98cca8f0ccd5f7\n2c76c171562f6bdfd4d8765e3910f617\n3f8d7d662c9cd90bd6abb4efd157f402\n9699995246fd521ca909cd1ba5751669\n99cd1d8970feddbaed98cca8f0ccd5f7\nf8a1b4d4b7813afe55cb90b2d132a49c\n9ff0e30c911ef3a3cb2a965e75be701c\n5bc75cb5c0270e60d2b12aa6a0f050b3\n1093ca7b44ac90cd902e30b4d3d9167d\n928fa92b9f25292f75a9709a8c0e1e6\n7807c68ed9963df7f4fb4dee5181bee\nf2390f9103195622ad5067eac75a07f7\n38d0cc28d4ff1ad0b604d999bdb46442\n690aa4622c4d3246ea1bc0d82403165c\n1b6a5fc808388138cb2a965e75be701c\n359c7abaf431a05181faebbdea6bd9be\n19d52509d16a9c2c81faebbdea6bd9be\n2b6ac3eb1232e99b3cf1509e0eed7683\n9f17577e34237f74c2f16c13e1941c0\n875b1307c76566c8d0d4e85a15f02eb4\nbff5fff9215b5c412056b4bd5d870b47\nc2c0a205bb318031ed98cca8f0ccd5f7\nfc301ae04efc46cfcb2a965e75be701c\n23325f47d2a812351165bc0a3b02b27f\n27c3e5b2656c50f7cb2a965e75be701c\n96d87da2fecf81ddd2b12aa6a0f050b3\n27eb79ddf26fd7ac7898580cb9d16864\n2d1e8858446d1a32d2b12aa6a0f050b3\n54197739c383e3b9ad5067eac75a07f7\n3a7b2f1220e7c13092ccafdeb0ce5a8a\n3a8490a38cd7f21929bffcef22233b9d\n77fac848d4c863b2cb2a965e75be701c\n219c0e465d55e89cad5067eac75a07f7\ncc5d0040931906ae81faebbdea6bd9be\ne30527e054c1bf2ed201085e80edb26a\n276195bc09970fdbec0de4d645145eaf\n682cb02cd40c9fa412b60d5939b55d61\nbe2bcc5a5ddedefa80065a186bd67f86\nab3260f85c28adc82056b4bd5d870b47\nab92e0151866e32a9ab1f232db58cef2\n24f090d8ee565dd1601104cd2d998272\n9897a75c64a369d458c73770090b865\n438f3246c29d69e73b67a26c84477b1a\n913cb50bf5d336238b0239afbed4a626\n210ca657d9a1b85cb2a965e75be701c\nfa259d97f0514af1814acb3be75bdbcf\ne28f8467945b5d526070f6b7b2547ecc\nd3b2e0d1482ead96f4fb4dee5181bee\nb4a8d71b840fa5f7b90be68f49e6aacf\nb5b52ba71f6c3c67ad5067eac75a07f7\n4b495cde98399a83d4d8765e3910f617\n15ed07a6b7265f802056b4bd5d870b47\nb695128faed7cffdad5067eac75a07f7\n32b74d6b08ea4603d2b12aa6a0f050b3\n98af453dfb3b2284cb2a965e75be701c\nc0d3d5f8941c8014ad5067eac75a07f7\nd5ef0f9bb990ffb3b2725423c902ba5d\n49989a15860936d6601104cd2d998272\n238825520fbdda8e6a4265f8860b466f\n8ec231441abe44a05e276f6574cfbdbd\n651141a1e0138b82ba6cf6cbb9f4c2bb\nc311a54150b7c64acb2a965e75be701c\nea577ade393dcaaacb2a965e75be701c\nd3eea79405a0c784f155d75bbf62b80\n45dc4d46a456d36c2056b4bd5d870b47\nca4bb0b150fa55eff3cd1fcb0edd1e8f\n9a3310c20959245b791985eda7619303\n9ddf92e8ab113b77a98ec10fab84d714\n68d603f0483f4f869bd9ce04b3b1fd54\n3b8d16dc796f667af155d75bbf62b80\n9b1ed4bd84562d3f406f2f420f742d6\n450fd49e69534ee6d5032aaea433efa4\ne9491a1e77cb2a65cb6a91bf3956b490\nb09f17c66d25a38cf155d75bbf62b80\nd94b57d9a5d0b3732056b4bd5d870b47\nb997659a319cae6369923f7b2ea9aba\n52c13c1c0812699120f85be7e9edc22b\n2ae355c406b7204e8c5da39cd0403824\nf48b666e87f0c31f43cda5120584006e\nd27d7e667c5ccd70cb2a965e75be701c\nae635fcb688b88c757411f16004b6df\n3b688abcaf09a495c62ae1031b767cea\nce2112fa16725a7aad5067eac75a07f7\ne8db4ae7ddd84627d4d8765e3910f617\n73cc1e9a8f666ad2d2b12aa6a0f050b3\nd73143a767890e26505bbba2c4eee722\n74d4dfa4709ef0b056f6fc4b4ce1db04\n8596664f3d7925cdfdeb515ad63cf4b0\nfa1ab735efa7255c81553c4a57179bef\n1d9fc51fa296bac9a1770107888e7eb8\n941c1bc0f10560a2310d80140e59b9e\n1bb14f4633ad52e3ae944a46a2846086\n26e3a9d86dc09155cb2a965e75be701c\nb8407ab7eeda1d261be4769a83930a08\nf44b93dcbf00d80acb2a965e75be701c\n3ee044d00523169dd4d8765e3910f617\na73601ecef6e3cf9f155d75bbf62b80\nc06a17f2c79d01949c8a0ee9a6d1d4b2\n7dd37767a253f98d56f6fc4b4ce1db04\n9e4391cde5446bded98cca8f0ccd5f7\nadaf1ba4acf51baa601104cd2d998272\nb8ae866a44a272bead5067eac75a07f7\n78ff35f4e229d1306f08940aa2c35d2c\n7e73d9c7082453987b019ecf3e106a55\n66af742be9a0c722b93fc2b66c6b86b6\n8fe23a363bf80c48f155d75bbf62b80\n8d7f97ef9187d6fff4fb4dee5181bee\n78243d42e55bf254d47bd31d526e1987\nf713433b5702975aad5067eac75a07f7\n89cb6473e1b3882af7436fe692c24f3e\n7a5ecec36bcb9eb24c080f2371a3ed2\n26f583c91e815e8fcb2a965e75be701c\n51197dd964f598fdcb2a965e75be701c\ndacfcd3de6bb08e4d2b12aa6a0f050b3\ne807cba7fec6d514bb5d4e2d93fefdc5\n69494ba3ad8569aded98cca8f0ccd5f7\n2fd70e9049377e22d4d8765e3910f617\n5d4fd92c09e3369256f6fc4b4ce1db04\n6ba411c181323fecea2b566ddae9e6f6\n6e27b6fc7769089f4fb4dee5181bee\nfd38474cc1c62274f155d75bbf62b80\ncbe802da10dcae19f155d75bbf62b80\n60757e398b7d51c5c143e86eb74c3988\ne9bf24b026df9624ef9a8aedf51bb497\nc89d4c95f1e7c950a805114916841d69\n7cccf8e8ebd9454fe42c56c78fb88524\neb245de64157afe8ad5067eac75a07f7\n7ac9bc04a2f8e59c7a19c607757a04b2\na2ee6b6eb6f94856c35213a917b76486\nb6410fb9ca3cad2170a97514aa270017\nf100d0524db0b12c2c031fa3f6d7bfc7\nff5c5895622d2123aa979e53c1a67c26\n3ca55ce22b40b8c2ad364a967d96b388\n1a40eaf5919b1b3f3eaa2b95b99dae6\nb9b708af97a57de481f502b2c7b6ba78\n6e84c668dcc028e6864f7d01926c6c64\n84caee0c9f3b03571c56cd199c0bfbf8\n88fa7d07abfcf9f03cbbdb20d4d80207\n137c82020b8dc458eafa2f074f6cbe37\n2e8f1b6cb9b4f568316a315354726289\n2d1e5eeb255e79dcab53bf7fa22f3636\n3b2f0fa67b29b6cd389a52d0b0203298\n943dde2754ddc7822e8ff3556a90169\nd0ae223012be978a49a531253b5beabf\n3d2ee152db78b312e5a8eba5f6050bab\n8893daaecc8c76048e53587ea99de59c\n85bfe701cf6398c69875b72c651247a3\n4a9a7e5b88cc4b79b985467c63dd34d8\n5d9dd008caf920b8c29a08a3db9fbe1\nc2b18cadd355a5f18aaae3d020f5ddf8\nf4a67224c61f79b1733ee41496c73429\n2a80c18fc2b4732bfb7c76304cb719f8\n4b4c1a775f9a49958cd4e3ad2fcaf039\n723138769c7c84eb5006d092e9ad4f03\nf560aae80e66f50585ef4356ea4ff622\n694681de16b492987170f3141eadbf9\nd9de3b770e53a41d5b7bc62e486d578c\n42be414abcd4f66113c01fa2f350f6d\nb6ed4377ece0567c78cf4e63fa47661\ncf24c6b52b12c56ced8d4f003c2a833\n9d4086be72fa427cd2b12aa6a0f050b3\na5befb3443b070f8d2b12aa6a0f050b3\n76976adc8a170036ae23680cee12f145\nec4317837dd247dcd2b12aa6a0f050b3\neb06da40812adaa9542357877f3143f8\n7a4a9c948c54de261dee989d1177ef4e\n2212ad7db1587578d2b12aa6a0f050b3\n6a2c354ed5212c77d2b12aa6a0f050b3\n49ab2a5a9005eab9d2b12aa6a0f050b3\ndc286270b2256b94d2b12aa6a0f050b3\n8a6f07f3d357fbfd2b12aa6a0f050b3\nb6da9b2fefbad3d9693697d8506b1c6d\nbf7342b225f836a9d2b12aa6a0f050b3\n554a52dd42ce558bd2b12aa6a0f050b3\n19bb2f65f3de8f5fbdc7943e19c9bdf7\nb51ae78137662b05d2b12aa6a0f050b3\n70612bccd74c969476c40ae77a98137f\ne3e3c49caf4b1885d661ff085a0f14b7\n961d59d3ba6c7e1bf174129a51bed83\naa27d1ed2ebb8ebdd2b12aa6a0f050b3\n23378697712a8dc2d2b12aa6a0f050b3\nd41ba8cd6a5b1071c1237601d86c1b5b\n229d510bace435811572ee5ddf1b55b\n35e62b9c23928bc57f5df2bc47846a54\nf1252c297d7ad9a47c51ec7d2716b33d\n272a4cf3cfff3eb1e173cee47fbaa88\n608af07bd357d605f155d75bbf62b80\n244955211c2f3b94b821b834431f4e0e\n868d86e47bcf7c9d1dd03d3141d85a03\n5ce636f716f8f11e601104cd2d998272\n5ce845f80b1d407282dde982679cd879\n4b6276df295b3967601104cd2d998272\n7c770e38383d59be279e896561802d26\neeb6784f5812bcebb281680297eb79f2\n7f6db7a3f529949601104cd2d998272\n95eed587c3728d22601104cd2d998272\n3e5f4d788fcc628f442b181d72d9d1e6\nee8c43b1ffc8e8cd7389336cf5b6aec6\nbbb448ee06bd6d83d838ae16242881dc\n2e78dad09566bdcecb2a965e75be701c\n8ad9910699d6a21781faebbdea6bd9be\na06d35db2ddc85e29656036c096710ba\n389f2aa083a7d732f4b6538438a0b930\n49a07e9db250cb5ea17702c02a7c3b1f\ne8403ea994ecb1cf855931d119219022\n5117dd16339a8b943ebaaaea70571daf\n3a271805da4a65e06a5d67b8fcb702fa\na4d107815780161ab7ea82317702e856\nae99771e1f77fd2fa9bdc22a1e02e82\n738f4ce6e01920e72e558e0eb05b86a4\nb7c366d9ad90bb8a847d09fbfad470bc\nda39c2c025a9bd469200298427982555\n31375f94c8739fdbb043c7d18f748c2e\n5cce62b38c0486d74201e10f9a6fb035\n3dec9b1439c42797815b2b467e8e2eac\n6f607a06c0d86895ad5067eac75a07f7\nabddca275435a7b987b6d520ce557b3f\ndbd0698df1623b0391da37ff8bdd2524\na2c53b2490e4151517a6e523c9595e10\n9c8a96bb95a62a6ae6e54a934c4318f1\n91c949736e4887002ea98d69e91ba870\ne0e2dfd6ed0880a6d6421fd2aa576b15\n5be09ade953eaf6ca6910e4922d61aa\n10db917982072df1739680f4e31f35e0\nc36cc90d01f21180c3c8317b7074dc0\n9c1310c5ab89888bd201085e80edb26a\n6d4fad5487a044249dc30bab479ad5d4\nc5625ef76473a5cc7c3efce71c4e8d70\nca04a1b1ff6701f8ad5067eac75a07f7\n12ae14d584758b4ee42c56c78fb88524\na58cb33e8aa8142af155d75bbf62b80\n133d46d90aa8e1742b76566a81e7d67e\n3bbca1223d18e2caad5067eac75a07f7\nf80f3251391f3cfccbfa849e0f7f0b10\n715445f1eb83b477b1eca275bb27199f\na1276733811a864b99cb1d062b75ee73\nf061967a9b5ab9b6fecb38606c52659f\n74a91aa0a8d9f2b5bef71ebb79d44440\nca6a1a938c160036a0f31147c37537e5\n57afec727772346f30bbd4cddd04c77b\nac1b9a34ed8450bb2644d7d4d7ea2c7\n456e373768179bf3f155d75bbf62b80\nd8dbfb0f58a2df0bf1eac5a8cd36b62b\n55ca4cb17b26110d3b160521ef1e85fa\n956be1b39e4bf1b963b2acb037dfbcde\nc3d4204f6f0613b1959f51f2c68b3ef\nf60378083ea9b7fa5e14e00a99d44acb\nd7293ad1c563e0ee318b348b36fba247\n53e3f4b35e8c992e954bfb4cc0842c46\naf06152e440a5224e23bd316353fa056\n8f824b462a2870fd98e0d1738edd4f19\nff7a08ac16701dcec0277fc71766d822\n4cd23aae912b7de019fb4103277a6b93\n28353d39cde416d0ed49e2c2d58fcee1\n6b47fc9f533618719c8ccc4e539799af\n90d6cf58f5e9ba30c175dd3be8577953\nf72eddac559ca6a6a51c26819f8dbb51\n5cb02fdcd0f1cf5d3d06403e6871e4f\n8ff9b4b57eb5a60daed1fc72009b42ac\n8861988f97b2e8c722da8c30c5c6c8ca\n5f21d3b66aa9b62d63b2acb037dfbcde\n9f27ed5d7877a38fd46c340938e2ff1c\nc0840a82cd05765c924bf081da6f024c\nbbe3d0864b95faca48d057884d36455c\n4e43690694133a65e5ef38e098c46afd\n54c5e4961c97527dcb2a965e75be701c\n722f3510b849c950beedb4c8fd29e2d1\n4aa87768e4e9c7639f7aad887e9e880f\n6e166423582d68bfd5b24cafb84903c7\n2c81dd5038d43eb7b11ae648ea92233\n3ecf8f8f3b24350bbd17a7d75b77705d\nba6348031c6f0a795213cec267286d18\n75ba60267a6c36af4b0780126e986ee\n6ef84eb436bf63de8e7865f75f64bf68\n33458d73568cfb62d201085e80edb26a\n98fe81af9b74e4c278d386bfa54545\n2edcb17b897706cf71a782a4379556c7\n9d56087c9f98bf90717cca22daef45e7\n5b4cc3097e79fd316c262ba0bee45d20\naecc04ab28ca258181dea46b799d4f46\nc104f4e4a21ef8d42c29915205c35b65\n2cd4fb6323fa2462edccc47bf0dcf5d3\ne108673170d8f781d40c07d3c15cc681\n6198e40d0055c59fc34a45b74d0027ff\n6466c201a664851de7b89654b68b9e5b\nf3db005b33b9f8916cd47ea628d8cef0\n66aade9f5d8c74ae924bf081da6f024c\nf5d370e9fe5b7452dbbc9440457e303e\n45d52d8c9b100eb54ebf9d56b42b3033\nfce4206a99792d47cfb87ab5efe3dc31\n6daa439badf26355593ebeeedbff73b\nf8dd3c18e0735bb4b2644d7d4d7ea2c7\nd58239c7178651ed1fb7397472fde3e9\n469235b1160c6df1bd44b6fcd3e363b9\nb023f42464e9591867c8e42cd3ac65ef\n410c1c5ae4e9d49f5ebcc146be902492\nef207b78de8277ec42fc59644ef58e22\ne18d11ff6f781d843d2dd82a57bb3bd7\nfaa74f8980fadf504777535b9098089a\n51d51b67faf16d3d2ea98d69e91ba870\n57fc8345fc8667a4d2b12aa6a0f050b3\n5d88fc00adb325e6f3a134eb65b35f7a\n931017bd80aa7a90edccc47bf0dcf5d3\ne223e77b8db4aea17d8864caa856253b\nfd355d06238853c7f0d9805ad6c2059c\n46cfcb7eb682d16d2b12aa6a0f050b3\nb9eb4b3d3ed564142427332fd13e1534\nc33adaafb71b0080582f9c2e887b930c\n66670424b72dc0beefe2ffb03223403f\n716fa6d69c22db83bc6fbe160acb5d0e\ne8ff891162fa20607572046550aace88\nbe9c2b70082503eb352fc7e973ba7787\n323ff904411c3d427c64e9314d548016\n9b15c79ea9ddff8d5065e2a2857d7fb3\n918507f83ae9eb64ad5067eac75a07f7\nc52f48c97868b7dfea8a406c7edcf3b4\nf0daa96d0eb986adcf729faf809733b6\n4ba13b996d6f1d3b286ea987ad5ffa18\neacb2a4fc51d03853c7e5bbf72a5f5ae\nd77f648c6df22a05c6510aa63622330c\n5870d0ad92321f8cad5067eac75a07f7\ndbacfce828f0598ad534c2812395a1c1\n3abf9811f26c9752a9b8d9d3b5cf54cc\n4a19288db84ea192871543ab797c3d2d\ne6063d88a2b192ab56f6fc4b4ce1db04\n6b894c1c57ba921c98d10ca8df5ecbe7\n29aa1d7505e08fb66706998a3e61629\n423a75018428cffd46c340938e2ff1c\n2f8bf1c9a8f70cb0f4fb4dee5181bee\ncedbe77bb857a16d3104206d774d39d1\nf9e7dcaf9b7a9eb3c9befbd10d7e29b\n3a8f4586fbd17e6d56f6fc4b4ce1db04\nbe125cab2902e0e163b2acb037dfbcde\n50cdaa9e33fc853ecb2a965e75be701c\n9920a0a8393494c59ec4bb690ca24962\n2d80f237dfa7e73e5b7bc62e486d578c\nbeece550c6a1bb1cef0add8da8532fa8\n9fc5473602fe0f595896bab37ddebe7\n2f340f2bd55d51e5c8cbe1805e7b8eb\nc63561b50109b27bd4d8765e3910f617\nab5f53ca60521a231aab721727b6a1b4\n2d1dda55020a0c4bad5067eac75a07f7\na37801a9289678201f8b303c0da5108d\n9787be3282d13a159a3528690d225ee1\n94bd6118c10de515d201085e80edb26a\n3e323c2a7e5ea5dcbd4364391061cfa2\n59b1ca3d780ed0381560641bf48464ff\n639dd737961f1806985ef0bf52b97bf5\nd9b39a2a427c17ed43d55fea640906fa\n8a541c1e735e834ad5067eac75a07f7\ndecfee8dff04ef84990a10a82d99ca57\n9d0eb5ca2d849ff01f9ede15ab569b5f\n9795c0ce0679cacdd201085e80edb26a\ncb1ce3240eec3fffd417c7a2ac331601\n35554b4c00816a08b50485c33b91d8c0\n4790c04ee2586772d0768f88bbc39dbc\n9027bc9728f006bb40f0ac0fb9a650d\nf4afba7266031dbbb62b272ea9e18d0a\n593251f67107e6b4db03e4f5c01cf109\n621c4fcded12fff2d07d128adae16ff\n28e12ef0e54e204830bbd4cddd04c77b\n4de8d632bae6b3719e76a83ca837d918\n4d38a3e7f051446a9b5ae2fb66e1e25c\nfd6ae258090bf95b693e50e46681af47\n76463803e8be994e6716685cf333d2c1\nc273ce2890d74ae18cca710901c2e97b\n54239ba1b945460ae4409e4832196128\n9c32648f1412d8a6db6e463bda4c63ae\n71970f9a11b0b5bcd7262b1b986920e7\n31af3758c10b5b1274f1cdda9579594c\n349e1bf46f54c4f267efa971ab69a8e9\na28d0dbb90413692d42b9650f19dd425\nd34e91db39030275fc94591f6f745953\n300781592a3dcc2313e9164feae00e7\n36583be1062e0f48c24b862f5ee36086\n30b57b828f961ca8f002715a08c57858\nb6e3891b9a761300b77f0c4f1c150c3f\n9a2d51fbd6b58048c955e5ed03ef3a2f\nd5bd619acad1bed3d2b12aa6a0f050b3\n634524d6d74142ecd2b12aa6a0f050b3\n23d1c6e2e35cb252bb85b5a298d72ac7\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/02933112_test.lst",
    "content": "115e4c9a9150fe8e99dd23ec22c4943b\n480a381b676003df4da5feafe6f1c8fc\n6b7123a3631583c612de5317fe5b354f\n63397b0df482d51ad7838dc22b16368e\n92aa3075799e275a3fe047712e43e185\n1a51237c9515ad0a4da5feafe6f1c8fc\n298dcf7bd982cf0712de5317fe5b354f\n4b80db7aaf0dff0c4da5feafe6f1c8fc\n8c1cd3c09ffef7efc59350d819542ec7\n140ec01582235e15c59350d819542ec7\n70ef5ad531624a24cb87a43f8f346ada\n59263293983a99d3de650492e45fb14f\n26dcf7a76c89d5aa4da5feafe6f1c8fc\n68bc79caeaf162a7ce5d6e9371bb5c33\n45553c754e1132533fe047712e43e185\ndfe503e6a4a86d4dc59350d819542ec7\n131992dab1550a7aec24cae3e129c189\n7b98e7b25bb83413c59350d819542ec7\na9bfa9259f31ef9fde650492e45fb14f\n6f679ca92bfaca984da5feafe6f1c8fc\n6a910ffe32ae2e575588a2543ef0b0b4\nc060caaa105890d74da5feafe6f1c8fc\n24c781a3aa6310a44da5feafe6f1c8fc\ncc9194f94951cd934da5feafe6f1c8fc\n39db396f57ec698cc59350d819542ec7\n3c2a50e5907b0fb64da5feafe6f1c8fc\n221d442d733de66144221bef0fa3c36b\n5ff7e1be775072e5824662341ce2b233\n24da7fd5e33513814da5feafe6f1c8fc\n886031ff2a514f86c59350d819542ec7\n3649b02bd61a337321730ef9c9d28bd1\n31a7cd3b7990834cde650492e45fb14f\n7d95374a9110157c7d8c689e1315827b\n60ac3a02f8c1116b5588a2543ef0b0b4\n4cee2825142a64acde650492e45fb14f\n467b66a6ed7b3cd24da5feafe6f1c8fc\n190cb7264781df604da5feafe6f1c8fc\n4c99fa08135a52d04c62bee40dcdc539\nf3bc5eb543bd852bb7ea82317702e856\n3b98711b877ae402824662341ce2b233\n2a3a3bf0878f1fa4c59350d819542ec7\nbb741a003e5ff46c59350d819542ec7\n2817480c23e4a106c59350d819542ec7\n13aeab12a8ccdb244da5feafe6f1c8fc\n48ad79b48a76fcec4da5feafe6f1c8fc\n180154895560cd0cc59350d819542ec7\naae9df5536cce166d5532c7891a349ad\n5feaee9848b44d44824662341ce2b233\n1ec5e12f2b5684a24da5feafe6f1c8fc\n2bdedc5d70cda02cc59350d819542ec7\n2cf4888579296377c59350d819542ec7\n15de6a77af2b4fccc59350d819542ec7\n45c91d543ef3c1a829a50a2b3c5e5b6\nbceca165030250f94da5feafe6f1c8fc\n30675877e822626e3fe047712e43e185\nc55eef8d5b4d3db563b3c67777442463\nd3257b1df741d9a099c549327bba1953\n8a7f0dd58fbf14a4c59350d819542ec7\n68f25e77ac6bdea7de650492e45fb14f\nda5d7b5dfa92abdace5d6e9371bb5c33\n23b7a3961eda17df4da5feafe6f1c8fc\n233612a657bbda534da5feafe6f1c8fc\n26a2132b719d226a86d53ab0fe94e911\n19dd35ef180808c38f1735145fdf5c5c\n6f03b6ab474c04a243e5ff23b077c03a\n973023bbf9c6a603c59350d819542ec7\na95f93b9da094471c59350d819542ec7\n7fbd264b7031c399d37a1bae74ee50a2\n1e40a4dfbd78455812de5317fe5b354f\n721c788bb55b083ae8a9bc001231a118\nd8cd6611c5f407cdbe81a9109a782712\nb572114b0944ac203fe047712e43e185\n83bb0c92d3ede1e8c59350d819542ec7\n67616bd629dbf7b3824662341ce2b233\n1cd80ed7f3ab7a5d4da5feafe6f1c8fc\nbc7973150ac25b1ce08dea88cca8641e\n1f336c9e48f1b54686d53ab0fe94e911\n47344f869d6c12e486d53ab0fe94e911\n11ee3844cf96c7194da5feafe6f1c8fc\n5b112266c93a711b824662341ce2b233\nd3ff3bd1badb62c2c59350d819542ec7\n2c6aee97b0325e92de650492e45fb14f\n3a2afbdc240a7f073fe047712e43e185\n1d61ca99924b13fc99dd23ec22c4943b\n90dd9ad1a74e25d53fe047712e43e185\nd7fe270a81b0f21c3fe047712e43e185\n6f56fdbf225247abcd8f3fe9ca2145e1\n29ce2b045bc6111912de5317fe5b354f\n88982fc3cdf5d2b212de5317fe5b354f\n54ea003ba0d36f34da5feafe6f1c8fc\n1252e89db37d786386d53ab0fe94e911\n139aeafbfbdd6bb64da5feafe6f1c8fc\nbdb118e2b6c9f4d712de5317fe5b354f\n1715965e2e1e33e1c59350d819542ec7\n6d448fdac1dc71f9c59350d819542ec7\n1c898677c5b4291c847857e42f50ec6e\n3167991b1c87967ac59350d819542ec7\n36bfa6f0a5897be786d53ab0fe94e911\n1c4e2879669e949e3fe047712e43e185\n3eddbe968ac08030c59350d819542ec7\n1971024c0cac65a824662341ce2b233\n7359539c1b62cf1e29a50a2b3c5e5b6\nea48a2a501942eedde650492e45fb14f\n14dff09acf069b63c59350d819542ec7\n902a342783278a9d824662341ce2b233\n228a83ea767bcab94da5feafe6f1c8fc\nd6242003931d0a27824662341ce2b233\n3cdabe258ed67a144da5feafe6f1c8fc\nd4a7b45abac7a39c59350d819542ec7\nfc5b7d19b1ab1e8bd0504a433b7a549\n5a2de91981d27ba3c59350d819542ec7\n40d4200a071b555c5588a2543ef0b0b4\n4205bc230382f663c59350d819542ec7\n1a9fa73ca819aa994da5feafe6f1c8fc\n203ef2b06c3ad6033fe047712e43e185\n1d973f05e870af4b4da5feafe6f1c8fc\n4298f678b53d370dc59350d819542ec7\n5b08e72cfe785f4912de5317fe5b354f\n21f3c0d4604587b4da5feafe6f1c8fc\n29c6f3ce118576724da5feafe6f1c8fc\na234f5b48a26fe1d12de5317fe5b354f\n285864fbee3a4038178e7d331e641179\nfdf32559c6b7a6643fe047712e43e185\n2ba392a70c40dac7c59350d819542ec7\n85ddbd698b3e7dfec59350d819542ec7\n1676f8b995b976e5824662341ce2b233\n1a1b62a38b2584874c62bee40dcdc539\n55bfa46d7b39f4dcc59350d819542ec7\n2e4184763139ff274da5feafe6f1c8fc\n3d2870c83ad35dfe86d53ab0fe94e911\n12cb11dbb135ca9ac59350d819542ec7\n1b212b67e5eb90f4da5feafe6f1c8fc\n4fd61ff0aa949a4486d53ab0fe94e911\nb0f329dc43af0fbd4da5feafe6f1c8fc\n5294d0d31a33e67912de5317fe5b354f\nb7be75d3cb83457a44221bef0fa3c36b\n4946c14a466fb5094da5feafe6f1c8fc\n6e2beb63c61144f54da5feafe6f1c8fc\nb6c1fd850c5b042c738e43095496b061\n5aee956ff28e337a44221bef0fa3c36b\n134055516ed892913ba1c51b82b58419\n23e3c2a2f61ddb2986d53ab0fe94e911\n6e75ca2b08fe53a344221bef0fa3c36b\n455a583e41579db14da5feafe6f1c8fc\n1aa76e87d7bcf5c0c59350d819542ec7\n6a121783609b4a18824662341ce2b233\n29b2a25804651a34c59350d819542ec7\n47f477a8b67d28028f1735145fdf5c5c\n16bc9f5821d887f2d7838dc22b16368e\na03797c4034be11ac59350d819542ec7\n9d0a9c46bb6768fbd37a1bae74ee50a2\n2bda2392d5715d16c59350d819542ec7\n2b6bd6e0b3c2565839d3717288022c20\n99ff3359d64f1f45ce5d6e9371bb5c33\n90ccd5fbb48ba3bdde650492e45fb14f\n19e444da148930154692707833167ca3\n3115a3a0a61aacac59350d819542ec7\n8cf41a94663c7fe24da5feafe6f1c8fc\n1a4ff09890565843c59350d819542ec7\nf6d2550b82c208b012de5317fe5b354f\n8415b7cd04f981d94692707833167ca3\n839393d59ef6c8cfc59350d819542ec7\nc2ac91973d449b18738e43095496b061\n3076e5d4a8078a0c59350d819542ec7\n1ff28690a2ba31e4da5feafe6f1c8fc\n8382308b895aa93286d53ab0fe94e911\nf939cc4fa30511963fe047712e43e185\n2036aaa68d164c373fe047712e43e185\n5f7e3d694d47fe6cde650492e45fb14f\n56031b004d5306954da5feafe6f1c8fc\n1e25501b8930873129a50a2b3c5e5b6\n7aca460dbd4ef77712de5317fe5b354f\n8dc8d2e0bdf870ec95d0ca3fdb30532a\n30cf0cedd661880e86d53ab0fe94e911\n21224eab2d099f5012de5317fe5b354f\n15d3297d200f8979c59350d819542ec7\n721bd0402e92e339c59350d819542ec7\n70b15dbfed77ad2d4da5feafe6f1c8fc\n9166a54bcb06b6c7c59350d819542ec7\n779cda069c3b6338824662341ce2b233\n98d963a9f353cd026b0f9e3b3feb2454\n583c242abdc4c08e4da5feafe6f1c8fc\n951377627e2fb20f86d53ab0fe94e911\n147e9d3591cb190829a50a2b3c5e5b6\n1fd36ae1d93b6f3fc59350d819542ec7\nc0d58499d2cecf07e1c245f9728d365\n146c3a9cbe3d8f703fe047712e43e185\n23aeb8fdc0d1ed4c4da5feafe6f1c8fc\n6a49166d5852d23044221bef0fa3c36b\nbd55f9190cb5c9ea3fe047712e43e185\n316bd800a04f14f0de650492e45fb14f\n19492e2263ea82e4da5feafe6f1c8fc\n20d00eeac9377d1212de5317fe5b354f\n595999124367c701de650492e45fb14f\n2b3f95e3a1ae1e3f824662341ce2b233\n14864858c05f52ec4da5feafe6f1c8fc\na247a4978888e6403fe047712e43e185\n1566915c8a69d58812de5317fe5b354f\n48b9fbf28fd33df5c59350d819542ec7\nb0f01584cbb37d2ff546596ce7364503\n4068c751d46ca222de650492e45fb14f\nd0421fb0b59291df7eee615e75bc3b77\na08aa6e386cd983c59350d819542ec7\n3cfebf4fdfa1384da5feafe6f1c8fc\n4e62d6e735b8bf2b90071898148dca0e\n68aa1ed740374787de650492e45fb14f\n3c28e4a1a5154ecc59350d819542ec7\nc817934380830ccb4da5feafe6f1c8fc\n12b0773858754105c59350d819542ec7\ncc843a4c31c60dec64cb4ed80bd76aed\n6fcae7f06d9f86b2ce5d6e9371bb5c33\n74c058f9f24fbb524692707833167ca3\nde23f702d6e8232f12de5317fe5b354f\n114b810af4a847ca99dd23ec22c4943b\n7eca681f6174f1ce12de5317fe5b354f\n720ee748eb25f010c59350d819542ec7\n7d9b7a4412d9f373c59350d819542ec7\nc8631f63ec5899a4a84a884e8267301c\n57dc5950f0a7304d4da5feafe6f1c8fc\n1a4d4980bbe2dcf24da5feafe6f1c8fc\nb592fe51cdda66394692707833167ca3\n4c94892ca2cd066e29a50a2b3c5e5b6\n4db0db06f86fe48f4da5feafe6f1c8fc\n403661cbfc8deb029a50a2b3c5e5b6\n9b34b5983bd64409e08dea88cca8641e\n1e694a1848b810ebc59350d819542ec7\n2cd6ee7e592939a9824662341ce2b233\n297684bcd05347cd86d53ab0fe94e911\ne619cf6aa221424cf80ff10f4838c137\nc4d17b681e7f3d8a1e1f137e13140387\n14a093126f5764bcf2792e4b1535c6c3\n8f39d603e733eb58fcbe4e14ff0c4707\n5523a90c230a1d0699bf8547ee35d38a\n643191e8ee56104e424f8f8e828c9ab9\n9dfac0132596ff09b13b0af4c7a59aa0\n11b8fd945de0ee99642f6fb37a230b5e\n6543e0c78675e6eb868fb986bc092533\n181cfc93cd44af805a0e5699b3040a35\nd7762b2997bb9e2aa70a592d6c8c9234\n809d5384f84d55273a11565e5be9cf53\n79a8b5fdd40e1b1d20768660cf080d12\n5366e82cfca7382729f1ce9399524695\na5d193fd45690070b93ba26740e73067\nfc3bb2eda6e061e9b50d0c6a0c254040\n875437f9f2bfdc3feadc9f074ecd1df1\nebc49b9b624dfb55f9913e822d5318\neea67da61b5477c7d4c6910fb477cd67\n422975f531854eeaf36ea1eb6542fe7e\nb28d1c49cfe93a3f79368d1198f406e7\n3bc232700d2ed20b89a68decc32d3e34\ndd6ebb99b2346757da8c66dd9a203cf0\neb2843ff62280f5320768660cf080d12\n5ff47fe4724d0c9320768660cf080d12\n84a374fd72bab291ccff75c3d7aff973\n895de6b9d3e0f1ad11b65536c08c170d\nbd7cae3c39773a4ed0a0c43e4971be14\n3e080e2b2556add4eabad247a05ad956\nc6e91d50e1bb3351a8851b4eb6161973\n9b33a5363695ebc3391e4d6c585a697a\n3b5d7b7fb89b178d50711e66b0db6ed\ndf0f03ac21921f02c868162258053ece\n1055dc4f3f2079f7e6c5cd45aa112726\n353dd8c418146de16c7d1f675f2a04a5\nb06b351b939e279bc5ff6d1af2135fc9\n5e61fc6946ed74c3532e8683617554c4\nc18a4772bcfbb98e85bc264270ae0601\n50c7e5dace1d5dffc6256085755e32ef\n906d1dc1a8e519868cb5d9909aeb1309\nfe8c34a5275804d451f8aaa850306632\nab072b1506cbfd921b7554913e3d38e6\n2544d05396cf1c91bc19762eaa7ba40f\n95ca7e79cf9b51cbb9a0f5d18f1ce54c\n544fbd4d4c1d445498a4820926b2a786\nc89a5482bb756c041d86c17c15247b0\nf0ebc33311b55d6b4e7d60def15dcb8b\nfe5f6a2aab0091438860c69ebde1e4b8\n727a4dbadbb74c33bf1b16662b6673df\neaf341c056c79bec1a2c782fdbf60db6\naa0280a7d959a18930bbd4cddd04c77b\n6e6801ca4a03a1adc672720c52b0e374\nf07668a627a039b87b79156a61ad4c01\n46bb63196198ffa2fc98aa4b97627df6\n6336b5516cc8bd50635469b95109803c\n367044e655cdce1f109be8beeb87a681\na631a1a99b21cd92b87eaf81a9afbbe\n5382680280ef5b57d0b36851d61b6fca\ne72235ca5b0f9b5de485c93908cf58c1\n4b2e20535d3ecd016b7154919b02cbec\n6bf0f5e06cb748bb9671c58246946ed6\n91ac5c074c7d137762646c8cd54d58b4\ndca4c8bdab8bdfe739e1d6694e046e01\na3a6f9e80956ec6f4035f93ab9531db\n8f7a277ae05da76c1bb088904f7cb154\n9f17f45a28d063e7391e4d6c585a697a\n39b51f3a6e8447c3c8a1a154de62786\n4e217d2ef816a08251c4deb11af7079e\n641e64902bb9f6a4aaca4b071fcc002c\na7e9a54cfae053aa20768660cf080d12\ne18f47b52ff3aa2452174f43a416bc6f\nb12fd3c4e5912a7dd8b510632cc84b8c\n92a1e771eb621c14c2a5a06bb7a05e87\n9eada38b3a65963e30bbd4cddd04c77b\nad86354fb5faf1c98a4820926b2a786\n1f0b5514d93f39ebd189eb81471216ad\n3931068c10d0a606ef37b256c10c21e4\n9fbb34244e00b2a9eacb155f400b9076\n3b3a1bfd87c87a184b499a9d711de5a7\ne0393e80702d9a698cbb8bac2032149c\n10c484963692d3c87d40405e5ee68b4f\ne5bd1675d43422bb61706e18472540d6\ne0f6e225c7f88db19ea59510032cbc74\n38def13ea098f098fb266533561ee98a\na49eec529b5c44eaac00fd1150223027\n941289c22ad19099a87002a4eeaf610\n634fe05a380adac585430ccbd2632877\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/02933112_train.lst",
    "content": "6ab14d89360d0a55ff3ea34d08547895\n97cfa011875acc33532e8683617554c4\nd410c925c5e8ebd65b7f630bf166b499\n4b2bedb7014636afd38913e96bbf2a5d\n148638f9a7c72ab55a0e5699b3040a35\naab180818ea51dbc7cd8de3984cc1e94\ne408c939829d0353a6490b68274665e\n2d0d55da9d8de4356e79c14dd16aa04b\nc00edc704ff4b133da27ece6ae88fff\n8316451b3959184963be0260dd648a5e\n84ef04bae77ca17d532e8683617554c4\n37b9ca6c1be7e6e7cddef51ecbec6f95\ndca6f5a582517758eab2bd7322386ffd\n2993b6f0fa043f2744b0bdbb4386e313\n76ee9167548caf224983f386c1ce1710\n1f674f735abb7b1d75869f989849123f\n44d195279a116e347eee615e75bc3b77\n8c60fe0d274ef76f6b983cbae7aad051\nbb9ac4b110f7ed3815dd7d7985e749c1\n4e0cc6a0dbeeb87df51f77a6d7299806\n1a658b76afedb342490ad276cd2af3a4\nc7418e21982dcb508c2f9e4176bfe555\n3b6042e3f223da66200ec3fc5b3ae5f4\n84f34a2d86cd4f0211926054acb73bec\n14e2319299a434b24b8710a3469971b1\n9a0d2ef1f31fee42b022c94235bc8601\n703a95f9e0f51654f51f77a6d7299806\na8725dd0e0eb8d7d492d9da2668ec34c\nd7ec3740a0c67d89f8c3d2002c77ddb\n7941cfe08a5288337a3bc7b2417286c9\n8928e0f1fdd7f107f975e70a1bde427d\n6d30a4d1ed6f4bdbf51f77a6d7299806\n462ee81a089208caf2f140388f79bf7c\n7bdeadcf72ee257dce5d6e9371bb5c33\n962de4481f2844aeba3e7e48acd3a1c6\ndefde3dac0ce562361c0d25e41396e8c\n2537e62a6495a46bc47fc2b7741fa\n9b2759851023fad7dedad3eee47fd556\n70424e9cde5be52e25194f3c5a4f307\n783ba337e5bf328abe81a9109a782712\n7f47c97fbda19b57490ad276cd2af3a4\n528ab24c6afd91c38aaae3d020f5ddf8\n6f2ce914b5d4db81e28993aa4d91dd77\n530d7817abf9b54e73f47577531a0b51\n72048f89b480cd411b17743c18fb63dc\n217d29a61745991f7aa75dfc74adc93f\n962b62d2b3823aff51f77a6d7299806\n737fc2d91572a9032ea98d69e91ba870\n66a82a157f4a1c9a22e05b27cb30bde\n910eec62d3cf0936ce5d6e9371bb5c33\n698debfccb32f7404c62bee40dcdc539\n26eb1d73803b2426ef46cffe4939fce1\n8e897603bc5217174b8710a3469971b1\n2b376f6dfed75d53684b7bc3f8a9aa55\n18a1c4eb2e4b31fce83221ad0d21775\n4caef9af7bd31f195588a2543ef0b0b4\n4dc45b86bdce7d96d37a1bae74ee50a2\n9edead26059cae09e3f7a74e12a274ef\n14590b6bdb425e80d8986c3ed6c52fe2\n86d1c6a6a2278e7e1b17743c18fb63dc\n7e6c0a7c630cce1d4702663c3b3faf8f\n1fe25f0be8d71d6ce2e1a0e8b25f573f\n7a051550f229c9a75588a2543ef0b0b4\n90f66de8ce581ee39aa778fe3a2080af\n8589e65944de365351c41225db8e334\n18798a19664ed14c14038d588fd1342f\n23108a41e40a49f6389b013bdebd5e94\nb74f87f4d4c7da7343638dabe1eb5336\n955a80162f342ab45d64ebd26708751e\n6e5ac40051b3e17b697129c0aef9e5f7\nb6fa01c7e28a4a777024462ecce15220\nd209aaa7fd4035a34c7384dbb75cab0d\ndf509063ec7b78ce8f7d9678498f2295\na8e160457848a8be3bba238110c3df2b\n373fc669fbead0bd1f8d8332ee17945a\nd77dd358b31497aae2f840a8b8c7384c\n8d3d624b37b4803c33110e4a1f22f6dc\n36223972cc8153718cd9445de76e734d\n54cbe81983534dc153b10fab8d9d7b30\n69544db102786237f51f77a6d7299806\nd4f4b5bf712a96b13679ccb6aaef8b00\n3ba62bcd5394d5504c62bee40dcdc539\n21185c06b8eafd1229426a0f57e4d15e\nabbb13b953629109d0b36851d61b6fca\nb31c1b94a2badecf43d2fa0a85ff9354\n2a5535f9e24338c7107bd4405fb99a1b\n4b6c7f81adcc5f7e4b8710a3469971b1\n33445d9d7f166d6c5588a2543ef0b0b4\n7910e29e5285fa1a178e7d331e641179\n9deca642cbf3e4ef49a734174fea032e\n2dbd6cb6a14805297812c3baf25c5bb\n4cede87a6ca6bb876a485daf2a997e28\n91b2bed2f4b87e615164a043915ac8c4\n836fc8edc0414fdd9925b11f2b3f86ba\nd17b46d9ad9378209c68640456c0e\n8b188db0cd8ecb909f076a53721d9427\n1624e80fb20e12741bf2b66b52bf6885\nb56494e8810764286739a7caa0c577bd\n4d79731efe402b0d635469b95109803c\nb404faa639b8600855f46d55537192b6\n9460ebcbd28a8cb7d5a4a04ac21f0578\n26979d498a0425b6f51f77a6d7299806\n1eed828f325b45bf5f960aba13b9c630\n81bef552e83476ad3da27ece6ae88fff\n57041ab17b34eba1f49237e570f62c8f\n61905b24b17eee756aea2f18ee404fd5\n1ef44fc1b4cac21af51fa0238791f5dc\n4b67001c30b3a68be4e346ee2650d150\n2a22566c3bad34a7d0b36851d61b6fca\nca0fd2a5d6aa32945aeac558fa5c869b\nbf57fe6a331137c2abaf316e4a957cb1\n2dddaf7774fd11efe4d4a3bf05a8b705\n2f2e54607ea04be4c93bb8ae72b9da71\n3475657660a798a155590b0eedbb2f18\n721f7a03a70b1107c0b2397831029b54\nb9967857b0419d44e7312e7851dc468c\n504949a3b05dd13e3f7a74e12a274ef\n6d5049bc983aa8b4a805114916841d69\ndd7e681525a458befbfd931924135513\ndfa0bf0f2b48ea33e3a031805ace4a99\n6e6a324c244158325761a0b53ed37cec\nda62a2f330280273896f268d8862011d\n9d2bf81532da5823b69348aaef501740\n533ca24b72a0552c5057ad0f363d6ddd\n3c855f2a52d5e3f63c8d0fdfb1cc2535\na38f20793fbbd3d3ff03fd9a67a9cdfc\n42c3c76c8c8912c61b17743c18fb63dc\ncb6ca53673e681797292641f4348a707\n7e0483b10eb6ae141620773c2aaaa465\n584de35ad1e27820365f491f6e3dbc3f\nd8d2e500860312bf98d5fc0473d00a1c\nac2f35da065a451c72ddb537ecda2719\nb45bae45ccfdd7b9824080f516909671\n275b26f0555e85acf858430284b28022\n4392ad03e7d769a6180dd1b6c5060a26\nab870b99f869186fd523772c66ed5bc5\n7b02f0d94886f66a121859336e292a5d\n9d59bf323b297b327885a2b9445961bb\n6c7a1a40e645c48e9c22f14c4b6aad23\n9a195ea2a21bc7511a4db721d603d852\n216096d5038c86a74c62bee40dcdc539\na46373d86967b3fce9aee4515d4383aa\ndd2325abe32870f5a99e0f0bf1de3bbf\nd7c671ead816afdda2aa7d89ba9aea43\n54f801646e066ce92afc25cef0918375\nb7f1176767b87b235c8607e33463027e\n273bd29d931bd255343edb005e0de5c\na09130501c18c324404449202e2d8881\n7f137684240ee0d62fb11210723490ee\n97902b0e2ce271ae60f16a92a4f24bcd\naa1077aff8bd9e44d8f27b2e727c3511\n7fadf6464f6ba381921dd903dd0b8b17\n5bcb725e26e521364c7384dbb75cab0d\nb184de34d988236464a7317444d5a8d\n61d42e7c7c16b2d53334fb6668ccd834\n676bf8a039a5937eeab2bd7322386ffd\nbfdb60bd61d083536739a7caa0c577bd\n74c692a9018b66592246f58eda789fa1\n9ebf23f2bcb8f334246300e1c662ce6d\nb649e3084819c7847445d25f394949d0\nbfb9eda1e7f92339800f2aaba8549124\n648bdbefbe72c6e596d5fa1ee6ada8d1\n9c8dff9a5f5cc6ab490ad276cd2af3a4\nb8e019587c8157041a3b39b07e4b3d0f\n5d0c82af3d799573eff860318f968925\ndc4affd586bafbc8d45f502ecff9e44f\n4edcf59d45bfff5a5b903ba10d2ec446\n7b97739140eebfefaf8acdb77a4cc720\n7f6d01dfa00872a26cf87f8460db3ae0\na6abf531780014f890a1391b3fdfda26\n975426b49f98bc1b4c62bee40dcdc539\n5c2d14889827e1fc14038d588fd1342f\n63465f2647384da7cf44224546cb0306\n85868e1440bec257a4bc7fdb4c84963\n634a4ad6496e20dbc3ea9e7b2ba79cb1\na64be5342dd3c9f782ef94da039e491f\n8e7dcefda14362f866f6836074ef23fa\na679e4fb660b3751f51f77a6d7299806\nd9e69e6cd318d34380d6227ff9b21190\na8cf3a04f848ff0e4c62bee40dcdc539\na66122ff2d0e4bac6ba14bfd91a75020\n4acadee1dadac64e4b8710a3469971b1\n7f416248bb57f1c0598f1102685df4cd\n4e31ddf3828a40f3cd525309aaf63a44\n227d258c1045acbe9e4965f0106e00d9\n484f3660bf095e6f2b8a1a2aaa466160\n1a7b9b946e797ce59f8c3d2002c77ddb\n2c1af98d2058a8056588620c25b809f9\ncac3d104981b47cd3d113b8340bd5029\n8b0411fcc2d48f9a4b8710a3469971b1\n66c38b5e6d9ad852307776da88d1350f\nac980e21cd4f41eed5076afb08856f4d\n9a24860d7ea8d54f109097154427f779\ncae4ad6aa7d0e49df160c00ab31497df\n88e89b29e8100f1c1bec2e8246842c2a\n52e92f372629cf356e8f1932e45c9faf\n76172d3f487ccc6cf4ab13f4b49ac318\n4a2848db82ae01f7490ad276cd2af3a4\n938d8ae0cdc787107bcb070cc655f13a\n12bb12017516f20d28b780bf7c8edf1d\n6c45346990283b7fa2e244117f013369\nb56505eeac0de779289f8cbfc8541c14\n83412e29d5978b101f6dfedaba98d5f9\n6ecb73ea5a117e3fc6647a321d32ae9a\nd06a1c6dc8a4dcdecb3bcacd97bbd8b8\ndf74daf1f96515bf9b849da658b46825\n8ee0fd1d620ac1ea974523dbdd88cc4e\n2620701a50216dbed0b36851d61b6fca\nbb0255c8582c74c6557f50690310ce8d\n11798e50090b6dcd0b36851d61b6fca\n1b92b53bdb962de337aa612844f43db0\n13dbeeacdabce3b694658a0201ba0367\n8057ca7c19a1457ee3f7a74e12a274ef\nac499f75479d2e372ad490d4d7fae486\n9a0013f4e6a0521b5670497a6e548500\n6098dfbdd0fc78a321e96d7b34bacdcf\n995a40846929e9753da27ece6ae88fff\n187f9c840611133b7fa41e06a7f4a88\n359fbb601801fa9b5588a2543ef0b0b4\nd7e4b6d1d9ae4336ef4e42d70375aed8\n4539b185db32eb4a533276a8c0b1c862\n6aebdfb1622324617eee615e75bc3b77\n382b6f8e93e1f576149dc0f3c5ce899e\n5ba1fc89122c13c5d4a147733422d301\n92ef2c5091a97df18a6e1efe1f5fc0a3\ncdf33719d80e3f1dadecb2bfe4fe7f60\n8093937b9072e92afab6e40cce6926d7\n8f55954a0b07a4b2bf64ff63662d244b\n39f7a4eb09dd695d46dbdd6b5b884b3a\n5217e7aa71d06df2921dd903dd0b8b17\ndc4e9bf3eaadf2544c62bee40dcdc539\n8fd43ffcc981f6eb14038d588fd1342f\n586cd9ce3d22685f2280e8623aad43f4\nbe1978696eddc1e980a88936375f2ef4\n860929843ad9e7e16ff961d84ac7046a\n37fbc4e7c9e46b602b5631520b7d94fe\n43ed2ac5e1836f5ef51f77a6d7299806\n429536832f2f4e1abfbd6f1ce8dfb216\n5edc6766196953a28f62bdf4e9082924\nc54828598efd80d78542f96306060db4\n90e6262b1713ab09fa3b6936d7879478\n964258d29263afdae76f0f0566cf10f2\n9304e9ad9853d1caf760390d600fe7fa\n7650fd61f3a162397ee0cb5488055ac\n2a3023853ebfeff5eb0fe7d6b5545a1a\n71aaeb4dc7a7d41ef51f77a6d7299806\n958fa3ccebcaa8246c4866b1c92b8a35\nba5e1671d26af2763c6c38b12db4d8f3\nd4e6002f0114461df879b7d55192442a\nac11c66661c8f95825b0a60e00f47d7d\n45342795c9bf86d94b8710a3469971b1\n3d21c18153474a0acf004563556ddb36\n493593c78a647030cbb5746221d658f3\n71d240b4e2e79be96a001de88d8cd8d9\n9b28e4f5c66daae45f29768b6bb620cb\n72105548b0e01be8659e37b49210f361\na0eb46b125a99e26473aef508bd8614e\n50f0ea68b77810121fbac718728a36d\n464e34455b49aa5c824080f516909671\nade25be3b1ee38bff51f77a6d7299806\n7822a30ec2e5c57f59f8e31ca87c470e\n33c47c4c9afeea5a4c62bee40dcdc539\nb50c25e6b5447714e90f8ac2c1271ce3\n230a987c4ff5f673921dd903dd0b8b17\nb99b7673b0927283b1732c7d45a02ba0\na21e3a21401f889defacb264ebf1ec75\n8bd6e4ce15468e1ad6eefa796d2f261c\nc5116cb158a5b4e6a0f23466c3c25e2e\nd68b1b0c95408b95380188eb80c957bc\n4ac617dbce5ab494985850bfaa8d58e8\n595a8444c362be66b8803f6649e6cb9b\nd917ca3f60dce05aaf31a22c7bed177d\nb9fd0cb66675dcc87c9ecef5753df626\n1ded292e60cf7f11178e7d331e641179\n78937816b70f990d8fe14b5c9bc18491\n6c2762c2c95d7a2063b3c67777442463\n7ed5c429313f20e079bb09dc5605a57\n283bf988df376b9786ac7f2dceaa530\n4e89985989c6a1936aedbd2a02b96953\n50492ac55ad27122e8990fccb12f2c29\n3724c3633a0db0c260a7085510f65cd6\n9a688545112c2650ca703e831bf56f93\nc7165635f2288945585ed17f54616d23\n30b75567780d84638ac5263758737a81\n4d690cd9d3b41f46ce5d6e9371bb5c33\n46304273699efb534b8710a3469971b1\ne47b9d0905d05d656fa63795f94c4d8c\nb30ee0cf13247fa7f51f77a6d7299806\n3d326cbd820a49443a9bf8c718fc345e\nbb5c331b32e39d0d3ec45bd2bc895504\n37d41aa1ab8e7318534f016fc3878f48\n85f41119ca2bbde1dc1f6c4cdb4bb9b3\n646fa7efaaef21a41d20b5ad5ef1cb1b\n4b06417d98fabe3b4c62bee40dcdc539\n7ef036a41e1b9e2aac00fd1150223027\n7415fc8bf90b3696bc08b7cef3268bb\nbbbd4de3e7ab25ad80d6227ff9b21190\ne22f10f551cac7fc6cb99ff1a702c4e9\n283fed24177526de7eee615e75bc3b77\n267545b2c6ec6ee1f51f77a6d7299806\n94cc8a8df8c78f5e14038d588fd1342f\nca15dd33a276b636d1fef881bd33f613\n452ef94b9cbd238dd869694b17a45f49\nd5058b014492f748220c986172788383\n3824d4b03e74afe0743d4e4333af43e6\nb56d8e21ac71f5d184296c7704cc40e8\nd0aee9e36e73a88a11fc2b865c2a185b\na81a218a06fa2cbabc78261b35f7ff55\nca89804bd77f770c4c62bee40dcdc539\nc4db384855e345009f8c3d2002c77ddb\n98003a902555e73adc6a693174c70feb\nd5c60b873643f0e99f0825ef57cf78df\n55b945bcc9d3525be005c5c244da3c48\n8d9fd58227bc92e41f3980612faf041b\nb399f7819e05c8bd492d9da2668ec34c\n9c87e3b439c20e177f1513678f5ee92\nca3c48798200a14050e21024808d3b59\n7dac6c932ca4f2fbb1cbe768f98549bf\nc6abd725ec744274b8710a3469971b1\n760d765845cfb99b770ba9dfcb1fabed\nbfec781e562e1dde3eec26c23f5bc80b\n6219b46946f62474c62bee40dcdc539\nde30133b2550826647d37c7945792fff\n62d67406fb239e21533276a8c0b1c862\n56253642219df29c37d43e094da89ace\n687a33b0fd4a906dc2185cc0ca1b306b\nd30e98009559150df27756ab62184cd0\n9cec9c8b65ec9e4f4c62bee40dcdc539\n97ff4614190d8cdfff05fff9845ac53e\n1411cbedcc428f73b76e29c9c43bc7aa\n8fcfa31d1df6e8ec9c2edb56a98b4be7\n426f7850e60a5447616fb9ab42452112\n1b32d878eeb305e45588a2543ef0b0b4\n3775c10b5502d12a1190e285a2cbc9c\n7ef23a05ff56687087cffb2975eab062\n2cb76d6aaac3c677bb60e56ad1645b95\n6478d877795d2214f51f77a6d7299806\na8a4fbca233fbadb7ef0119f8dd1f40b\n1ae6d530ee86ee9a4d87481e09b681b3\nb235be00006f3c03e6513d84422cefc4\n28e7fd7a7a5ee8787d3ced6148bd0a15\n76fa5df01e82242c684b7bc3f8a9aa55\n6db5a05080eb2480f863ead9331efd45\n6a36134591ec32cd37c7771ad8a91690\n36bd3f2daa4ed31a921dd903dd0b8b17\n9c87aebafdb4830ba5dc3fef8d22887b\n7d22aa2a9ce589b37ca94e8674788609\na5f28af83eb1dfbc3ffd072b23bde58\n2cfa88eb16cfd27b921dd903dd0b8b17\n321eb85037156544799b0b9a0d4a12cf\n4d3308cc92ffdab432b72c6a3d82ffd6\nba17ef05393844dfcb7105765410e2d6\n1ad4c572e0fd6a576e1e9a13188ab4bb\nc9576be714b6cf2d219113a79b8c092d\n131072b0a226f05f51f77a6d7299806\n90c2b07e831f5e7fc75178c2e93f5b68\nb7dc1e9a3949991747d7c2aae1e5c61\ne2de47fd0e63a280490ad276cd2af3a4\nb154cb1a8dedb14345ef69cff7e6d57d\n9ba333215be4d6654c62bee40dcdc539\n225905a8841620d7f6fe1e625c287cfa\nb6ec38384c0904a666023b6076341c23\n6059f5f009c40b814702663c3b3faf8f\nce9c5aa7a4016f138c2f9e4176bfe555\nbd89eb4a7407f07e54d8afaf6caac97c\nda57e1d30424771a14c06184923f6962\n54dfbf6333cf06dd652b6926f989dd09\n45039a5ac0912f8523d871b44977a702\n917de5653765673f8c2611a5a36e83b4\n9623560560cb59a3d37a1bae74ee50a2\n5906bfad8f6d794f490ad276cd2af3a4\n3d5ef34ce469b11c5af597c14b093f6\n53d1e4d3a815840b7753393bcfa5f775\naca4241639feb8f0921dd903dd0b8b17\n5ec805e8599196746be771595eade0e3\n3084dcbd0a28399170ad2e9733c71638\n1c87c14a44982206df3a1b0d597ce76e\n7b927d55b634c4aa178e7d331e641179\n9b1175f3e0b7f0938ab7e957399ebbf0\nb12af552392f92b476e9713f57a5fcb6\n2f12c90e2001a0bfd7bd133fd14c164d\n868509e96bb859bbfd5b2dc3df6521d5\n60d7e8aba1f692a8c2185cc0ca1b306b\na32e351352e1053ad124fd2a448c2915\nc01ecf4426f58beec3c7482d23c2379\nacba82ca76cb0201774bc00c294ec5e4\ne1ff64e53154ccfaf51f77a6d7299806\nb38a8896aa33692098605fee62c12dfb\n3f668a006192f1afffcdb54593f6ab3d\nc95634c0a44d6596e71fb4d3a412f2d0\n444ff46c1275b83fefead98a255f706f\n60508a8437c09eb2247353095dc395a2\n3efeb00eeba8a6fa2db3e9b673557fcd\n192caea21a57389265dbe89d2f371f01\n9935a1e91ef08470569e2e0d2caa039\n7f50a6bb1827b9f582bfcd34215ccfc7\n82f7946adba23f5f1c6beaa592f1b2c5\nd599d283cc1d2615a7547743355554a7\n1ee58b9b772b8807f51f77a6d7299806\nb1d8cd17d6c936392caaf8842dbb8ac2\n6ec7c811025a30a2e3a031805ace4a99\n265521e0fc7a663259f8e31ca87c470e\n27e65f34c3b8dd7f490ad276cd2af3a4\n4b006b7a2215db3d284f6213916dba67\n46a618f995c1019b15dd7d7985e749c1\n22d10cc8165d310a15dd7d7985e749c1\n92e421ce25931b6da5e3e028709e0474\n984c969b9948fea738e43095496b061\n90b901d37c751841c93205b4771d5663\nc4fc9ac6e45a8ebc90546f5d45015351\n34bc619e8ab3c0d2a93db6e4c0c75191\n9e53d5b34c4b403841b765d3dbd065f7\n484aac3c3f3ee4aadfcedefd655bc18c\n927ac18cb336cfe3df289a3ea5d3a440\nb34ed11766d80175f40dbe27bdacff57\n56676ff1d9f8a1e94c61a7cce317bfb7\n6ba512e07979da6ba3f4b1457e62c2b2\n626bba505f03233ef51f77a6d7299806\n13a42286f65c8b559f8c3d2002c77ddb\nd3829c7b8afd0d2ef51f77a6d7299806\nd4fe9416de5e2a95b022c94235bc8601\ndf55c6665781293cbe53b3b9f1274310\ncb4234b5106ee84dfba786d6c256035b\n9c245f01f94ae038413b3ddc4f2d9a06\nb6b378a05bf6982b70c33714b19283df\n8fe70b11448dfeef2369c46027bce7af\n6c7a2ca9ef6cf7a3ef4e42d70375aed8\n1175801334a9e410df3a1b0d597ce76e\n789ee42d2fc0c5e088c59e12e565eb6c\n9e1fb93dc979f8fb5f9734700aefae4e\n8ddd7f1e19ff809abe81a9109a782712\nac536462e72dea3211fc2b865c2a185b\n29dcadb19ddb448ad98e761e6d91dfc8\n6723be3b8435e27bb6146c7a77e1b943\n42689fe4a481168276e9713f57a5fcb6\n3d8183c2f6c0003bc59350d819542ec7\n786566b66299405a4da5feafe6f1c8fc\n606d50b144d8ca164da5feafe6f1c8fc\n98d2b95fc4f59c426ba8b3973e201d74\n4e02dea48a1bed6bc59350d819542ec7\nb2b89d3ec5918f69c59350d819542ec7\n4a4ae602159a711c824662341ce2b233\n14ed803c2251dfc1ec451f73f474981c\n315f29b2492f66a9c59350d819542ec7\n1e91ab0d6eb0053ac59350d819542ec7\n17d25c26485edcf94da5feafe6f1c8fc\n17ba4ef76444e74b4da5feafe6f1c8fc\n198cbe57b01bad9dc59350d819542ec7\n21ae39cf6ba8557f4da5feafe6f1c8fc\n1af4a1dfa4f94cd44da5feafe6f1c8fc\n2441395102a132354da5feafe6f1c8fc\n3b307c9b473270a1c59350d819542ec7\n19c79a42f68d7d444da5feafe6f1c8fc\n2cf613433894022dc59350d819542ec7\n33ec57af7f648994da5feafe6f1c8fc\n2950d1baed4dbd78c59350d819542ec7\n282f296a666fb63dc59350d819542ec7\n10c14b0cb76f87584da5feafe6f1c8fc\n19a0a48b2b908dafc59350d819542ec7\n4ae5df17829fb50799dd23ec22c4943b\n8a3f6cd19f3f92fe7242f2b1500945dd\nd7fe9a6bf2c5ad924c62bee40dcdc539\n27cfe222aec3463bc59350d819542ec7\n83a9e08664eeec09c59350d819542ec7\n2862558059dd584c59350d819542ec7\n152dd0a74ed08ef8c59350d819542ec7\n4c8e95fe5fdbb125c59350d819542ec7\n1548461b13adc0d0c59350d819542ec7\n56625ccb6e7dc3fdc59350d819542ec7\n1caaaa5c1da4dd2dc59350d819542ec7\n82c05fe4890a7f5112de5317fe5b354f\n4073ca6ce52b5d65ce5d6e9371bb5c33\n170be0087472182bc59350d819542ec7\n1fc8231114fa42a7c59350d819542ec7\n5413dbc1844cbed099dd23ec22c4943b\nd69d9de0c79ac6a9c59350d819542ec7\nc4802a2901dcd6e84da5feafe6f1c8fc\n5799c06f71bf6b88c59350d819542ec7\nc59d2a61caf94a97c59350d819542ec7\n29c7cd661bce3e50c59350d819542ec7\n247dfd279585b1b0c59350d819542ec7\n1e200d34c5555634c59350d819542ec7\n181716a7a34f2708c59350d819542ec7\n8e9a51408589448bc59350d819542ec7\n95bda55d633ca1824da5feafe6f1c8fc\n48e0fa8a06a163014da5feafe6f1c8fc\n46e31ba5963a89fac59350d819542ec7\nba6599d00e879e11c59350d819542ec7\n1257abde355da7ebc59350d819542ec7\n88fd3b8aa4280302c59350d819542ec7\n600d06bd779fbedfce5d6e9371bb5c33\n61b9d7c12ba7aed4c59350d819542ec7\n21eb0039185dd955c59350d819542ec7\n1834778d026108e0ce5d6e9371bb5c33\n688102337377c19d1d860ee2ad2a42e1\nc4fd6d64caa1e371c59350d819542ec7\n8f453f19fa9396a7824662341ce2b233\n1de9b71f35b51b56c59350d819542ec7\n494fd6deccdfb5cd5051fbeeb2dff27f\n10b54fe832a00c3ec59350d819542ec7\n23b8cec330bc7699c59350d819542ec7\n9bcfb450ed3046a74da5feafe6f1c8fc\n38c9f4bc9c5583d7824662341ce2b233\na01619556405ba3f2633ff66beb9cf31\n2175d15f93051f0bc59350d819542ec7\n429638b99d096c89c59350d819542ec7\n6bd87f32df22ffe2854a6619c08bff6d\n56f7c9a029b6b40d12de5317fe5b354f\n2d7bad601f84c83686d53ab0fe94e911\n48555a476cfcd222c59350d819542ec7\n40df2ce55ea8f002c59350d819542ec7\n21d4a168aa6fd6c74da5feafe6f1c8fc\n818043d8e0cc040cc59350d819542ec7\n28bd3151d50a4d78c59350d819542ec7\n295502bcb6d0c0f5c59350d819542ec7\n9a7263ce1cb720d7c59350d819542ec7\n3700aafc0160b162c59350d819542ec7\n3106e06eb594238c59350d819542ec7\n39d9512e482ef253c59350d819542ec7\nb4e35d962847fb8e86d53ab0fe94e911\n1819a4e03dd67e6c59350d819542ec7\n2d13507d53d201cfc59350d819542ec7\n158134028cc664b5c59350d819542ec7\n9dcc7002210e6660824662341ce2b233\n8914b82447db43a8c59350d819542ec7\n1aeff9aef2610ee1c59350d819542ec7\nc48151eb47f0e4ffc59350d819542ec7\n47b069b828d9fae54692707833167ca3\n14b5e16ba851e17ac59350d819542ec7\n76271327a3224e56c59350d819542ec7\nc07a52687cad81a4824662341ce2b233\n2b80c8d68550986bc59350d819542ec7\naee149ff795d5a7ac59350d819542ec7\n20d92bdc128be29c59350d819542ec7\n68257aab07479c64854a6619c08bff6d\n123994ddd751ef58c59350d819542ec7\n36d62d9dcba0e3ec4da5feafe6f1c8fc\n28195efc838cbb6a4da5feafe6f1c8fc\n9d75f1513c57e433c8f56fd282ce5ea1\n14c527e2b76f8942c59350d819542ec7\n636ca387c40fa8adc59350d819542ec7\nadb7c7229f4871c2c59350d819542ec7\n1222c37fc0c37124824662341ce2b233\n22e77a41cc388839824662341ce2b233\n3a0492e3892bb29f12de5317fe5b354f\n2bb2456b272a23dc59350d819542ec7\naa3e41a51b1aa79a4da5feafe6f1c8fc\n29832b9c3d644c744da5feafe6f1c8fc\n2fff20fe8b4b4a6cc59350d819542ec7\n391d1f98ffc6f8cf4da5feafe6f1c8fc\n920b27c2d3c83a0c59350d819542ec7\n1e73a722906872b64da5feafe6f1c8fc\n147eb60e7a6cadde4da5feafe6f1c8fc\n253c1fd3743c47234da5feafe6f1c8fc\n2f0a56c30e384642c59350d819542ec7\n29b34b5121639a65c59350d819542ec7\n953f545f33716fd01d860ee2ad2a42e1\nc28ae120a2d2829e50e9662c8e47fff\n77d1cf70e480af7e6a400d4015c42de\n365b6a92fc2f46294da5feafe6f1c8fc\n4d3df5ede83cd26e661673811de66400\n41472c96b430a1c44f03bfce55719739\naac3c6db20d3248579cea75b38cb7ce\na0dfc5cd7e2331e6166ddaef2c2c61ae\n87c85956b41a7fc541d86c17c15247b0\n4bda28b19b2f6f865cd4f7d5b0608a\n72d950ea1c029bf2369c46027bce7af\n154f41bbdd20cd9d8430b7446f9e1252\nd894ca00249da3fbecbb1f16dced7a99\nc7dd92386b9d18bac502b42dc3551a09\n36853ef4167300c86e5b9257c4084ca2\n1258a7bae01e349fa320e34dad7c78bd\nb29f2d0d278e938914038d588fd1342f\n3735e7c2bdcdcd7eebf9241bfabf12f1\na69a97674b732b6e951c1fffab4f5807\n94d10abadfa0d88bf51f77a6d7299806\n4f168576511489f91439869d172d3897\nb64d237b3718134b6e5b9257c4084ca2\n8504af8851175efd253d6f91951c4f58\n1cf9f1ead192b6c9824662341ce2b233\n8714a704af18d44b11a97ee9284a563\n23637357c4e5efb653c80c0a3ef7382\n5d765603dfb0f151e367f8f62a7e9398\n62e1a04718635c981c7fe5be55ca5cfd\n4d9152d6df9883529c75eb4326997fae\nbd0388dc8384961ccf004563556ddb36\n55d1668a7d33f8ebc0b2397831029b54\nb29de5206eb16c146ec91c2f4565a1ff\n31de44d559904485f51f77a6d7299806\nb12c3a046c326ca1d9b228d02c3319a3\nc129e7434b33f3cf1b17743c18fb63dc\nab096629bed6f8e0f51f77a6d7299806\nb278c93f18480b362ea98d69e91ba870\n4de45ae952657a45330a170e9ceed373\n8a758b29a751764d14038d588fd1342f\n6ff13af4d409fd25c3c22f38f0cbdf9f\n3297041a1a8de1d3d0f3f1f5f6accdb1\nd6523ff3e0acb768490ad276cd2af3a4\nb7a9d8b469cb06037824b732b006daaa\nda3a71168ea830dcc82d9accadcc9c9e\n39b50a129ff530efb4ba4a53b97265b\n74104e62e8fbcbeed0b36851d61b6fca\n34e80aa7b579469bb163e775a4d52465\n53e5fe30d92d6733e6c5cd45aa112726\n81cc63cbfa6e492154cd2a0ea6cb618b\na909c649ca19e9c9a45565492492fdbe\n7a48b295d6c3956fa96fd0f479def5ab\n150a5e3deaacaad4983f6ae6d409aac8\n515df524aefbb9c2376a431c347bc40a\n1d898bbd8bbad8f98430b7446f9e1252\nc0b055d5060f7f6b4470f9a1ecf7bbc\n11694171ff49a7521ee0429e004db48d\ncafb0ae07b0e2fb055f46d55537192b6\naba010c771d153069c7285ae7854d4b4\nd2dc852235fe39ca1112a51947cf2b61\n18d84c10a5068315fe5c8ffd0f5eba47\n407a485c7d711903ae25f6fe802a8997\n6eb88254824387bfc59350d819542ec7\n2e6c2878b005b5c8bd7feb85baf9225b\n29faa40d5c0a65a576e9713f57a5fcb6\nacbc349caf76e6b171337fa12bff07ad\nc0d2f9960e0db8957ed335507280450f\n4bbac921678eb957614319d7d997614c\nc031c55d7ff5bd7d824080f516909671\n24b3f8b6bf4a9a7391a3d45e8887248a\n3bb0b093c66b1af37a0a46ab3b36f780\nadece72df027acd6658fc1ad354006c7\n4c44e4124118a2521e4b67452ae5160\n6f113f2baf10463635836c728d324152\n575d99ba4197caf041ba999b450870a8\n8094a6efa5efa16776d812857a5be1ce\n7fd938d174a81474b4aed946870413c3\n4c4043756b3aac2ba80ff03f6dc10926\n86838c0e4486ee7a8369c37b40e82efa\n44e48c541b5466342f38c0d2792fb5e\n6adbd040ec2f9fb53f07ca1042ba5dfc\n3891210a28be585fb9ac96152ab66583\n5b6195448cbcfc04b8cac7fbb9e49985\n6b984c6b1e49d9dc59f8e31ca87c470e\n94bb7157062d59a5f51f77a6d7299806\n7c12c2a7a1957abc8bf788ad2aab0947\ncd781f0ec08ba028af232a5661e85835\ncdc3762d2846133adc26ec30fe28341a\nb4da5084ae0237fca4ab444e58fa9bdc\n31a142710610023cf51f77a6d7299806\nce85ce0eb106d409b8a453d61eaf046c\n9572162eb971e75dc7cb20726c4d6c81\nae20b4fa1b552b62614d87bbb5364f6a\na992c3b41cc3027a9e1c34656195f3c2\na2dcaeb9f64566672027cee422df2aa3\n8488c41b4c17d0a81a8dfe268f567c25\nc365225746f2eb94ce5d6e9371bb5c33\n851274c7a38bedb5f55057dede601621\nd6bd6fb5d0149227fa242b893d7c243a\nd347f6e236975a6b7c4767a4f4c46bba\n202ea0a26125f716ce5d6e9371bb5c33\nd4277bc8f1301983a77c359d9fe71e62\ncc198051642f31029a88326b888756d7\n25ed0233d292deb413cf34dbb0dd8875\n2de782c81c89f704c2b64c0adffbe398\na477a301e1e1a67fc2185cc0ca1b306b\nb5a6edf04474c327ded35d98d26f9668\n68220c134171d105f0fb3e3d2a0d34c9\n1074bdcb3c2032fe0f3f8b6e1796773\n1d7b35cda1bbd2e6eb1f243bab39fb29\nc99ec52d66a6e89c3c8d0fdfb1cc2535\nacd46f0b09a84c226b987ec2db2ce6b1\nc04c1766fcc28fe886c701087a194026\nbcee1a76f453723c4cc1952ae0d6e81a\n6de399f706f2972970365ad078f710ff\n49b69d5e4330ae2457b1c0b6d5084bcf\n40470660e2b7a9ad6fa0ab61d9f9d96d\n8c7cff4d76ceef7cff900d986c9dc4b4\n381d0eb848eaaa07eee615e75bc3b77\n5a3428f5690f57a7cf004563556ddb36\n7aee2d4c1e70d27c921dd903dd0b8b17\n510fa8653c10b0d1ccd0340812259a39\n7a9feaea9793b570fc9d1bd1b5b90d13\n785b58a111b0498b9572486e5a924845\na1f901768250762d4f60f15da4c665d0\n92c111f0456557c14da5feafe6f1c8fc\n5135a234fe18481235836c728d324152\na1daa27571e67bf7239d26686a11c3\n3105e7ff7fbf3e423e72cffee9fc75b0\n2c177b47d18940c735b355b56bb31701\n819a1fd8c7bea7f3984cd513e00e13ae\n152a850e5016fdd6e0771d4c079a0ec2\nb67d58cd774ebeaea480742f4529182b\nc52cc29136169ea014038d588fd1342f\na55b6196e3402ba340789cf33f2f1153\n56e1f35c70ad2859c59350d819542ec7\n429488f8be42c9ed73149e0cf45b2c4e\n575d4aa0c1b95b0836d8dd30a594b2af\n94883014b900c6d6647872b8585e132f\n5984042b95305aee4da5feafe6f1c8fc\n21a6906ec6cc806182db9fca4b68095\n5e6c95a93849d3a9cf004563556ddb36\n763d3c4ebccee884da5feafe6f1c8fc\n4fca24001a151a43d7bd133fd14c164d\n4aedc26af43f08d08f7d9678498f2295\n716b2e87f41b14cf48d22c298c611495\n5b04efb9a9e392f7f51f77a6d7299806\nc3dd5d3f16f231c7cb0c0d433974e32b\nc73ebca7db882f3ef26c21d3bbafae87\ne3f3d58fe3cd9746a485daf2a997e28\n26d924cab0c8e8f348d189f942cedc62\n14ef9da3809148601b17743c18fb63dc\n78d36740730c94a4490ad276cd2af3a4\n11224ef64e1702b412e0c474ff07001f\na746b71bbbb56c93c59350d819542ec7\n1459b403c084a33e7694593a26340e\n4a30aaec0e83f992c59350d819542ec7\n9a2c9e5bda713668674056261e8e6523\n956c437be87a2be5f51f77a6d7299806\n2375dfeeab7fd8678430b7446f9e1252\n87e7c6e590eaab04f42a90fe4baf4591\n740eb7316c76854ace5d6e9371bb5c33\n68d23effdc37ff8ab59213b4b43189c1\n4e33ef381f5be0e165b61ce1124a4806\n108295ef2f00c9aa9d886ab2fa5ee681\ncece5afa11b5ea16d2096b2fa6f98cc7\n248ff0771f1eb286f51f77a6d7299806\naa722d165b5ede74f8832716537767a4\nb1e2647ec67a6402d616724413b4089e\n1919dec93dff59e0ed3ffec8035a48e8\n221c831217721399ac043ebb2140dae\n9ea0005f3d702b4f6cc679ef84e06ad6\n8e2f81ceda8e42ee4b4e980f23aaee7\n28ad7242b0bd168ec59350d819542ec7\na0beaab9a8c2f0954e7d60def15dcb8b\n6e4407e2b40dac9eda9c49a653a829eb\nc700103d0294eb186c66754c2bdaefab\n2cd30f8ab084d274391fb969ff1ec5ce\n5fec62a43a64ecb6f51f77a6d7299806\n8d4833c24a4e983fcf004563556ddb36\n9bf9e8d47f7b996263d977b06bbd429d\n5ab3129036e7b69e278d386bfa54545\n4768d015c33de0acc6e4e9360ed1cfdb\nb6392ba0cc9448b353a5b360543fbe7\n14e612a7cd0311905b539ad6c08a7283\n47ffa354257d2e3b20f4d1b537b5ee90\n65dcdb468234c4f64e2e1b2af0cc59a7\n59d2e972374292c19dadd90fffe49008\nab7b9934fa7d4768c0f947750540fb22\n9166dfd18ac60504f0fb3e3d2a0d34c9\nc55498c03c913177d200faae04ce3f8\n225e398e99d98995b0c71e21a9386658\ncd3c926cf4ae4564a80ff03f6dc10926\n8b24699e1351a78ef8e7f2c38fe37243\n4ec97e83a1e9725c77a332e31ab74b68\na3407d2fdef7386c278d386bfa54545\n9402e5123bd831e276f1f48f36df7df4\n1b269019c7698355a8737fcf23389014\n70eddd0ddf5c9ba21c1b3b2ed8d13bf8\n1b6e680e76d452a097144612c70a9099\nc7c782fd5976ed7214038d588fd1342f\na6565be9e3fb8e1095bea7c29e873d16\n2f87d7d3c522f07b297936c81e7f6629\n94f4f2342f6335c5875c4d98e634f167\n985eb4a8f9914873738e43095496b061\n4c7cc0a0e83f995ad40c07d3c15cc681\n568a719ffacc4e12f648065fbcc749bc\nc66e77615d80399466e506c113d5d05e\n243cea3dfd6619944b8710a3469971b1\n932abcefa2fa0d5960e37b3f76995f8b\n817e119f087cf8f8f44880b8ee951142\n4dbf616f15f8818ba3f600c356573d21\n433b0fe363861867b25e7c54df7809b7\n4d97127bea831058b26ee99f2f592682\n93eaa414c043264910a7acb23a71a618\n61f79a63ee5315693fb45d07cfab7906\nc09fe6e32490f4511b17743c18fb63dc\n763c7a6a8821cc75ed40cf95f720995f\nd6138b5bee8f009ebd9c9454e3d4e73d\n580a7733e55e08be3c8d0fdfb1cc2535\n5a5e9a046d79bcc7859a7164d38b0d13\n4a007c5263b36c35f51f77a6d7299806\nc33ab47f610b64e6ccab809eba079ca0\n370608d5fd4f39745e7493df1bf8fac5\n98a1211469f6c6a7c7ac935603e09651\n43552fecbd07876acac27d617fa518f5\ncb506ccfb07faa60f51f77a6d7299806\n132185edbe4f2c5fb4c161851ed2b4e4\naf99a90272d8f5d7776cc3eef7148ace\naac417d5df45cfd7605de7eae9f0b0f4\n8b35178a614ee2f462023490a1e05c18\n86905b35aca5a3f11f8d8332ee17945a\n3e858a898accc14132f8567794723a79\nc1f419412a6960a27775562146ecea9\nb92e2c18c0eeb8cba80ff03f6dc10926\n165c00d292773865ae6eaa32356aaf3b\n7227b96bff4e94a86f9e9f74beb7c348\n9ffc432bb61dff9f339797c21e8801b1\n1a146144063c778cd0d447e37edd880d\na8bb33c995207084bed1bd9593e318c\ncb75de930881a633f51f77a6d7299806\n4dcec5b89f1e9e4915dd7d7985e749c1\n12de47490769694e490ad276cd2af3a4\n65f11f7cb5c5106eac00fd1150223027\nd707228baece2270c473585373fc1fd0\nd88116de5721301298fc1d0403f6ad0\ne2d06603fba3bf3310af74324aae27f\nc08dacfd5dd248374e9bcf25298f80d\n8f30bc2f3ae12300a4669f677ccd56a9\na53a96efb6b9f29a490ad276cd2af3a4\nc5aa72cca5cafd3f842982c980a38094\n7e06d12a3db817df7f07552c1b0b212\n3c1f9b42e848c740c59350d819542ec7\naff3488d05343a89e42b7a6468e7283f\ncb84d931a90fbb8e91ea3afb2749822f\n5893f6c94b15ba204f3443b22038d340\na593528259cf4d78c0f947750540fb22\n386bf465df74b1321d860ee2ad2a42e1\nd8bf8dcbd5cae04094beb1f48b8b494b\na640e7214f7c5393a5b7c9f0974d595e\n25c3964cf7a607b1f51fa0238791f5dc\n278d1992a0aa9116ce8f46fabe978829\n1f822298caef0302143802691fd0e33f\n7eecf98d3b8f93a684c210032662e046\nd15097b4c6fdd9001b6eef8565b06678\na9ade7de80ee8cc8ae25f6fe802a8997\n736e810b71d009bbd40c07d3c15cc681\ne4523c675fb6a103d08b0f17fdc8a28\nb4130f8f597c8f38986f688b80d667f0\n31ab6947975f5747c62ff677c806df30\n22cc22fa33c8203ef1bd05634b542a1a\n3483076cc008fff0d9826d0ff198257e\nd30f01d6e50f128d2822b5101b06e070\n12f1e4964078850cc7113d9e058b9db7\n3aabe5c704cf7a6d1db624f8d6f26a7e\n18d94e539b0ed30d105e720ebc569399\nb261964d7c920a4cd8a45f471fe2ac0\n8994e11588b62bdfed208c42f7ada5c4\n1ceaae0aaeeeaa1e5a8eba5f6050bab\n5f55127e04171d6435836c728d324152\n4cbb978cef36a5b9c60fe2650bbe2bf8\nd08027b0f50619ef5c2f6ec7d4720d0b\n1f1484649f0b2d9f6820cc0e7030e15e\na248de70fda12c5af27383fc5a5a711c\n5584ec27aa657c65ad329b1997e89fc7\n63f3ea0c41eedd19f51f77a6d7299806\nc55a7e2cb3ab9aea8ca4aeb5e3b33af7\n4d0ee9779956b74490a9ce3e4b15521e\n7b7067ed1bfcfb62377b9297f3055210\na5b61e473c6ceef9f51f77a6d7299806\nc7a7a1254c5d98b8449f1c29830da6c6\na2dc947048077f4bd0b36851d61b6fca\n919591b27262702ad0b36851d61b6fca\n3e4d14a8716d2418999b33727fe6db14\n6d54014c7e0847376bad80b4002b9511\na2dcea3f88c397f487d0ef3f1f8b9c07\n931fcaa08876700e788f926f4d51e733\nca6712dace1e32a548d8ff57878739ca\n2856634c4c0551a814038d588fd1342f\n69949f47106c9140391e4d6c585a697a\n962d112db5d7c687e82effbd6750a761\n9ffdd44e709142551b4e9ccf27cd840d\n4dabd28be1615419546a56a24fdd418a\n97c6b3099a406960d3dad974dc098fa1\n267aa08f20a000a3b15194162f658e87\ncb70b087e5bc5e9522e46d8e163c0f81\n2e38fe7e4cd74bec76e9713f57a5fcb6\nacee69c7c5517899af4d0096b3f9aa03\na71fa3fbcd132c39cf44224546cb0306\n6ee01e861f10b1f044175b4dddf5be08\n548996207fe62d4a89ecd28750d46ac\n5c80714fa7f21981bf2e25c697250b54\n7238faf31667078b2ea98d69e91ba870\n1e18f136798cb3f0c59350d819542ec7\n6754e64c37f7318c824662341ce2b233\n13bae5728bec802034ea40f5d8767c57\n19127cb1f535bf2c62c9e7b595148d6a\n64f02390a1487f791e4b67452ae5160\n24eb9773fec0eb609e4965f0106e00d9\n4669d272f690a18dc016d21df34cd8ce\n60d8c707c5f8278e3c8d0fdfb1cc2535\n4eb789e7b91d1c7374fd54817454ba03\nd5fc42532aac8ea8ad046fea8c3e99d0\naa28deb4dd304d12f51f77a6d7299806\nd22fae260519b9cc52051c3ad59857ed\n3a910cc1f575b08339d3717288022c20\n77ead277434621b5343087e1efdee691\n1838f9b62a102d704c7384dbb75cab0d\n35faa6d255a474f3dde9018a607defc5\nb8880afd2b1038c8ea7cdfccad65e7e9\n7e2e24fed142bb20310af74324aae27f\n77342f11ba666144d71237b3923fc09\nc8f5521a1f0ddac6c59350d819542ec7\n696c0051a5d5db993bd5bed2701d5593\nb60bf64c7402978555a060c097fa68cc\n3761d6523fb9d7a73f7e27638e63d848\n6e765437962f4c578e51433393e177c0\n863deff7bdee8cdff51f77a6d7299806\n47e09607098c43b5768049e7324c832a\n5a6715ef95a99bf59856fa70a578baeb\nc21853b4876b7078684b7bc3f8a9aa55\nbcf7688f64a642e3fb266533561ee98a\n74126116f42f09e2e6e130a30b5ed875\n51d9a60e0654e3622ea98d69e91ba870\n1ee6393153a3146ebc19762eaa7ba40f\n7aa00b5d006a7e8de6860aa648421493\n850bd3a9b96e3ac67d3aa3bae1f7b494\n15d7f54338bcca35e82e35fa57516a45\n73c2405d760e35adf51f77a6d7299806\n89ddbdf6366df2a93c2e50348f23d3d\n740f399fea35db05490ad276cd2af3a4\n584b055cbd62b8572d7ead8d9eea29b1\n6352c69907b70c0480fa521a9c7198a\n31590e22b5abce1191c352d02061b3f7\n2726971c1ed929eaa733727fd41bdb33\n832fa486c60335f66ca64288cf1b7ee0\na874dcff3bcf8a802aca02f099166182\n8317fd220232e3be11fc2b865c2a185b\nbd0a87c4356e53d4630bc2b026b477b8\n93ee050394f3b15e3c8d0fdfb1cc2535\n54d9053622deb8866ffe0f6a1d92eb85\n19a0d9e5e036290bfe9e4fbec1f7cb98\nd6a55d2dece36ca0e3f7a74e12a274ef\n2d2ce6dc51aa6c7a9856fa70a578baeb\ncd251287fd34d7e0e3f7a74e12a274ef\n64b8884bcd36c6fef94d7e6d8577c8ff\n4417497ef6af4cad74555f58f0503de3\nca6d108120fa949163d977b06bbd429d\n47fa0f6c9b9f019742cc639a26c5af8c\n70c0c5438f0da757307c5c16466b10c6\nc6a306867328d90fe42c2d012c73c412\nd6724f5b2761dd49ffd5817f210f277d\n25cd31f334358e0260bec33edd014356\nd56ac97208393d54bc8967b0321bd9d2\n2018d0713d4c22df480fa521a9c7198a\nbc1298b1c55849b14e82b8d74b98baba\n906d4fb94d86c4f0f0c255b2dfb0a92a\n5abaee58835d67975f9f6f4c95ed18d0\n576170f154143ff2de421c2ab5cfb52\n3216246565768e2fa716f601854e234e\n5d8c63fce0f30a46f251828d7c328331\na6d90c5628a598a1598a453fd9fbd988\n62a332e54cca36f547b925ad5d9d8738\na80ad4eafdb304edb6b975d10a10702\n9990d6c43d95c521c4df475ad1a6d009\n9f07ee5bcf6a4b11151b305e5243d9f8\nd89866af0e191e40c4ac7545c4775b33\n247ef69bd111e8f026cd8d83e7ef5b6d\n28b381915e04c62934b6da227fd64942\n49485d1e98629d0c1c76f329bc4666d1\nbabe716e40b3aa81a54c1b71c072d546\n54a7817fcd0919697753725ea42159e8\n9d7338e6d5da1acd353a90f87b8ecab5\n1dcd59ab33d275705ac7b7ceda74ec30\n975884e7d9cb74ff39974e6e2bbe1adb\ne05be650930e7eadab9ab77fc8888129\n54daf9093eabf27a34d6aa31914c287d\n34850728ad9af669490ad276cd2af3a4\nbde4addb689c2ba55841240ed5c62c36\ndbcf0d09a1cef0aecfaf287992b2065b\n87708c9ebd845c21854c6e2381cc9350\n5c306efe5d4409c31190e285a2cbc9c\n7470935c77e340f31781dae1261f1d28\n557cf522ec6be06ffc5195fbc9cb6806\n7155c1f2abcd7dd2e3f7a74e12a274ef\n75c26ffff01ea7063ab3dfa44f5fab01\n2f0fd2a5e181b82a4267f85fb94fa2e7\na46d947577ecb54a6bdcd672c2b17215\n37ba0371250bcd6de117ecc943aca233\nbd2bcee265b1ee1c7c373e0e7470a338\n8a2aadf8fc4f092c5ee1a94f1da3a5e\n654c0a2db749c63a56b67b833e192171\n97b415cd78587de5fa29682ba98e856d\n3e52f25b8f66d9a8adf3df9d9e46d0\n3fcb5eaa202513bd2f815a05dcd7ddb5\n743366dfb72897be1ba9fd11dc8bf457\n75c4595a4d1c3bf9fd2b139960f72a73\ne16c0191973a25f02d63c890dc92b5\n3332c4ac1fd931d01586ac387fea1cf9\nab7ad8afde03897aa52fef6f94fcc8a\n8390466432e2c364298a4bdd07dbdc0\ne0c8d4f4c31b26f6d295b24579cf55b8\n1d442f753e2d7d3cb90e13b20a8dfddb\nab9e20f3f9d2f1d1d77c088a902d8fa1\nc11449b64486b4df4240b2500b599345\n1f6d5268afb826c38b424343280aeccb\n73789bb6c0286415db823df37b893ef4\n40209ed0c2a718bd82ef94da039e491f\n7cb7d54954caa7a2d3cedcecf1ed3b27\n7728f0ae18c58d067e427098d75ece6a\n77aff49eccafcf2726831803d0b48347\nb8be007c703f1a9eb336215553415709\n948709ebfb6cd6ff6f2222642bd41c09\nb3328bd358d7ace07c68e936cd219e1b\n623c347d2d5cd6b4a66c900acb409285\nabcac243e3ed325b34943af333340cd2\nb1bb6113dcdc8a65ffa51bfffbc09ebb\n443a726ba9fa8d04d99265061a435799\n3aa643b4eb4a165675a4e003752c1044\nd4c4d991f9fdf0b654affd783a718eb\ncaa4f65053f07a64548804f91c2c5c3d\n9fe8af4bc8683818579c9a60a6b30a2a\nbc1bca3cce664ab11fc2b865c2a185b\n8238404daa0a13bfce5d6e9371bb5c33\n5556112e5f36cf2755f46d55537192b6\n37e5fcf70007bc26788f926f4d51e733\n178529522942bd9e11fc2b865c2a185b\n9702a1fa518b960784db07849359372d\n2af2279b9331aa9916c6f599d5622764\n46629a0cff77972aa47e6c0a5f3e8240\n8e46f3a871f86befdb955a8e38fc7dc8\ncb9c0c90b5c6cc9c189d4f3a6cc879f7\nc5212968cd5ef1dc3c6e7539caf3791c\na268283b0fab6092eb835f4eccb92a70\n26657a42d9ec207ee30ec6a0c7ae873f\n41d9c4bc97447c4530ed3cf7f7e32c4a\n4293fa9040a1790f5e30943bb32d54af\n7f60f68c48e67cfb422ac19d4a83319e\nd0af907a612856e964b62a9cc93b56f5\nbe4c2bb409fb8374b5f72e2923ab992\n77df125bac962fbe4c5470734f591843\n55f08c36c20f161be186198f40d88f09\nb37d269e1ec64992ee71ee29c2167097\n9524af09747661fbe0f91080da8431d7\n59e0e7f6eaa54e359cf7640f6c7f518b\n1d7b04fd768eccb5f838a2212356e267\nc3755418f2df9369e7e684d25d4dcaf0\n9178722c21d03d3ca12fd542784d2033\n695002fbea3c5e4a9a6b496c6e9f4c2\n552b14104b7add4049cca13fb3e44bf\n323c85aa6d1949abaec7b0e2cd000db4\n63c195f60442eb5a32cdc35a3ef7141\n6ed6e797fbb6f0c9b4979bfe197a8c89\n7759a26614f6c4fdf815c17ff5624f52\n1f319101d3c05a16886a4b751e0cc0b5\nd6a58b80b6f1a4f9a14bb1d7e401bf06\na9bc0de459504729eca1c556848f5db1\n636c4d449f17b6a8b47cc2471d9dd7e6\n992e569c61916848e26ab56647fa5b85\nccf5eb1023d22445762406157deca112\n3d21c803cfa3bf504c96d44e0e286fe7\n8697ab2a0da98ba65588a2543ef0b0b4\n6d42969890762ef2ec8eb53ffeeadc85\n5a639987ce024c8223dd83e725809894\nc5eb5577e728c4c1ab4753fa80886181\n878383dee814d727fd2b139960f72a73\ne0d37d661f26e9eb4b8710a3469971b1\ncf57b6a6baeb421c8c180d5d98aa66c6\nc184edddd3530a8161e1dc6d433ab6c3\n5f2f90d83db6bcafe7e684d25d4dcaf0\n64af194c4c53040e492d9da2668ec34c\n94b497f0a8606eb96dc1f81f95db52d6\n8fcaa6e3a07bcf5038169f16cecf9bd\n7bbdaeb0633738e611fc2b865c2a185b\n169d64acd930adb12871cc0b3cc1a485\na82276d1ca28e11a4d87481e09b681b3\nd4be807e568ae84d7b386db5665a1b3\nba6c211ed08d5c1b292e33b9f44edab7\n8e1a1e2879cfa2d6fe395915d44df772\nb1bdcc7bcb3148aaa23949c21eddef76\n7261f3eee6d5cac0e7ae87d20a4fdaa5\n7664b9208a84674926a555721514c9d0\n534d0386ab0bb650ae96150e4aa362f9\n3fc6e2baf40f4377f5afb395b99ae069\n7abc6f3fcabd914157d513bbf87f8d1a\n71c2c44dd20ae153353a90f87b8ecab5\n6343efcc64b331b3e3f7a74e12a274ef\n63cb49d18eef102a5c910a98e42d23d\n740392e1c6522664c20c4293bea04a44\nc9ead211b387ce0c5c59c6146ff01de4\nbe7d2a1a7fa7ce0b11fc2b865c2a185b\n350be7f9f7eaf2667dcf5135889d9f2\n8b23fc57517a57d0523cc82298d77b36\n8e42a0d11784c74fc6a5c971c030877d\n4116f2d56897d9ec1bc4df4f6291380a\na58e77d8a9b37e0280b9485fe431cb14\n1b3d4f2291545e472dc6c96daf8fd5ea\nc86f009c4d1e1d2941e1a63759e8b225\n622dadb90004f49fb84959963148f2a2\n2ce5e1eb83f4510319f778c7a8b12264\n243284bf14a193771f6fe06b2fa3ab21\n7328b4c001a249ca39d3717288022c20\n718f8fe82bc186a086d53ab0fe94e911\n433082675f5505c3c59350d819542ec7\n3f51197359289bf839d3717288022c20\n1767bd876a8b8c6e4da5feafe6f1c8fc\n4e2d3dee0f6c8e18754e8957cd76ff02\n140c308db70cd2674da5feafe6f1c8fc\n87b62cc2f0368983824662341ce2b233\n83db7fe5bdd2df12824662341ce2b233\n1700d057c9e0c88cc59350d819542ec7\n88a1a68c64ef85394da5feafe6f1c8fc\n5f7b88ac9256976cc59350d819542ec7\n195b0fd745df898d86d53ab0fe94e911\nbbdaeb32d4229d70c59350d819542ec7\nac8cdb6289d3d446c59350d819542ec7\n40f90a159f03321cc59350d819542ec7\n10798ccb7072393e86d53ab0fe94e911\n59b0ac376af08592824662341ce2b233\ndfb5415f3bb999a4c59350d819542ec7\n96969d7adc540bf686d53ab0fe94e911\n2d1b4c33c0a40653c59350d819542ec7\n226873c8d34e38286d53ab0fe94e911\n3b577e2c7bbb8ca4c59350d819542ec7\n329f11a156aee39ac59350d819542ec7\n587315cfb22617a1d37a1bae74ee50a2\n31c94abeda52273286d53ab0fe94e911\n18efc77e6837f7d311e76965808086c8\n932ae6a9eaca65a03f4b30b8df1dd26b\n663cf5c8c88a187b6fa3ef67a69ab460\n513cc5132f0543d0b47cc2471d9dd7e6\n475907f4b97bc1da25ae8e5e777da782\nbf4aed04442c31e4f759a9b042055cc\n7aac04fa0361f0da2f8bc0d6e7c6775\n62f5c85919a21aee7868105076bde789\nb4cb08749e099f0a899736e5d685d0c2\na4c79586ed938b5ecd81cf227afdf993\nb5a0f4e52687b87ea5cbb6810d19a105\n7324733dbe394447e78cc773ba5d9e52\n9c15e8897adce40c963aff3ec12fdcb\n33ad208b1b1468bc558ef7f77265c6c3\n88a30428b822f8ad630e9aba042fe4f\n1f4ccbdbd0162e9be3f7a74e12a274ef\n401960cb8526894f4b8710a3469971b1\n891e56eed3fe1debeca22c501ad0a77a\nb0709afab8a3d9ce7e65d4ecde1c77ce\n3e881be7e5289fcb77a8ecb4b9a890c5\n329f80229edd920a82ef94da039e491f\n85b82499e3ce7aea3a5893ad04c930a0\nd33e54d1880f70c310cd758d9b7cf\n6686c3a7dc39cb59d2f1945599cd5176\n8f8a2633debaeb96c2b64c0adffbe398\ncc492f2749d63136504721639e19f609\n8b63c8e0d3959c961e1dc6d433ab6c3\n6c6e14968b5e951de7e684d25d4dcaf0\n2df3eafe6c699c1a6baba085b51d97\n4bd1e17e8bfe8d5622309d9bc2301ff1\n7177dc5922252f1311fc2b865c2a185b\n7fbb7a6e017d3bd1921dd903dd0b8b17\n70d390b1e9b3053a22ca415af010d9a2\n80a3b5b036021b8e404dc8be84d677e3\n4f9b95af6720c7fc11fc2b865c2a185b\n21dcc3c0485b43136473d8f2b21437da\n6c4fa2f9e7e938a15cc8912051dd9ae3\n274b2b7de6654d7ce6619119a89ba92d\n7f726fa36a428c0e11fc2b865c2a185b\n9705e66769fe130add7092ed47061a36\na4caf30bbf028b63713f083e39bce318\nac7935b217aeb58e19ca41cdb396f36\n9b885f40e2d36819e4e346ee2650d150\nccf7d017b67b51b7b9349bb36676bc81\nc35d287217403cf3236641942dd4b3c\n11f59587596e3bf1a9958063063ce065\na62c9f6091337b5cd5382f3f8f33a9f4\n7e881ebf38366c6b5c91aedc71c80652\n54c4eb19c59440128f7c4148465d43b6\n9029a5f19440d04e6b19a27bc4c01b1d\n45bb41433302f3f5490ad276cd2af3a4\n69932a9f53ce20bbe4e346ee2650d150\ncdc2c14b62e110fbf8bf793ac0a3a901\n6788de26abc86a8480fa521a9c7198a\n22cbdf59fb7fdae277b4d8470453cb5\nb539b0bdf5c760b1c0eeb4326d5ba9e6\n4d36c59bd32fd885aadbf8208284c675\nba1230fc38050b1bbf1d236bec6d905\n53b396d2ff7af087d01673c7c57450c9\nbae2eb7c426570752c91206be77753e3\n5f44807953f9babdaf31a22c7bed177d\na256bf234c60a150c226a4421a1fedeb\nac4e80d4ad2d0ce98060a555dcc63fd1\n5b2201c133876813f8333d818f5f80e1\nb4d82c9706931d29d1d193a59606317a\naa249df1e594036f730fe631274bee9c\n8af204f53bc871a2c05575120a46cd3b\na65df9374a1492d7fff2ea4466fc1c5e\n18f41e91af76c77de25f00a04866d020\ncb12bf5a4429ed4c4639ab25a6c4afd9\n346419b6e2131dda5785f58f071c8c43\nca9e248cdcca240f11a59b122fb65ee9\n9140ef4099eadf73887c1a82cf8c6eea\n3bb80aa0267a12bed00bff798ed59ff5\n68582049d02c7c979ebcda765f4eafa1\n3e662f9afbe62838f0f8b2d752b1c7a1\n71bca48ccefa3cd080f94e6470f7d263\n8fa86c85b7985962598f1102685df4cd\n98e47ed9746cbc88ef9b1f19ef4b8cc0\n21ffe8bb21951feb5c8adc541f88498\n8cfbb0ecb20361e8a7cb178ec63a7c4a\n768564ef92377d886549bee1ee0ae3d0\n5fc881594598fd937eee615e75bc3b77\n7bd5510b4451cb651d6ac856ecde9eb2\n9f88eb11fd20541b4f759a9b042055cc\n4b75b3d199523a91f8d6a4359d6a181b\n663c290dd2e02f03e3f8b005c90fbce8\n25d7aeb2970030371733347bc72de5f9\n3763bd1d86776ac397022448220c7d6a\nd3759f1bd6dc9652f51f77a6d7299806\n148180c71c8ad4e3a1bfe809f99d2951\n7c68771e303eddc16adc061043e7c712\n2988d5b3d61d80c276555d27f71ae823\nb8300f2e4a8adf9b31de0931bd5b560c\n1a2c199d7c8cb7f83d724fd1eb6db6b9\n2f2a87c3626ff6fe1aae34e8209c4d10\n2b45de8320e0b2ca55d7f0828042fbd\n1a9a91aa5e3306ec5938fc2058ab2dbe\n5172c96ea99b9f5fde533fa000314311\n6c01e409fb522789b664d1885442ba70\n85502157d9e253d411fc2b865c2a185b\n238e8b7747e7a2503c4f66791e25960f\n1f610516a159e0ce8916d0991ded06e\n124cd036611b65b514038d588fd1342f\n5bfc4cb92e9d3b1f79b0363dd1368699\n83ce531fdc507e34f51f77a6d7299806\n580add3e9e4bd75939a06c149bd5b5b3\n33ebdfbed1aff9fb12d532e9deb7e02b\n17ad636e45c233bef79e00aae9a7dcf8\na07f3b931238a5c3fe618e12c7f65698\n17e3997117f88d921ba9fd11dc8bf457\nb1f23b772bfe59c2f766c600156dc40b\n9c802e8971c1b25f480fa521a9c7198a\n11beea78b1d558d4b246c4171f2c393b\n9e6434ba1ad59fa611fc2b865c2a185b\nb13778ff6594e980605de7eae9f0b0f4\n731733f855e5ec4ae4c30caf4bfa735e\n942e67160b47dee1b27fe5b4f7a28eec\nc65b640e9a3838f91d76d38b3dec9476\n9aedc18053d412048ca998f0f87d0c84\n6e03d2f837cfeb8ee75ac485a81d5fa9\n594128786d7aacf26f2c2a3461eaa93\ne2716932c4739645e0958c0e3fc3eaab\n45679a0d39b500533dd5cc05646564a4\na5ce16faa5ecbc4bc6a5c971c030877d\nd6edc4c02e38c7dda5737ca21e62ad39\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/02958343_test.lst",
    "content": "71a1122469df0bb8cc8ad0deed05da5c\n323c9dc2a8911e146f2f07de403e98d8\n125a4780c2d5095d19454008aa267bf\n1be075751d7cfbf9ee8e9bd690a19ec1\n1d82451a55d19cdd711f9e3a79a13dcf\nbd8654fbca233e41ddb8f37b1865d989\nf3760c5e8b97149163b803b494079757\n36190ce6fe041e452d647b1c17442c93\n42f45d024ab3309eff673973a435017f\n604d915e7bf91cbca22cf2b42142a7ea\na72134cd499fd1c4f79e091fa09130a\nf66180e68fb1c98469f2880702ff1c7d\n36cf21268838ce6011718baa6d4afc0b\n383f8d508b6f25f565d21723f535417\nf850f5ddc42bdc3a117db354abf0d721\n31389308f2b032ddf09fb258eb4b1e60\n1f8aee726cbf44c23d27832ab9ea6d92\n1e987cad6ca8a97a7a24dbc42a104ca8\n7c5e0fd7e8c62d047eed1e11d741a3f1\n4d1dc1ad555807559b0a29632c8d0005\n12410830e8a5067c69576518bd9bfe48\nd86119f06459e996897844133a297d65\neaf664eaf6b27cd1905f30c879d154be\naeac711326961038939aeffada2c0c5\n9f3c463272d13d39eb7780cdb3ece367\nf04f2fa810b6a66994abc9429888948c\ncfac6b6374bc4fedeb7780cdb3ece367\n381332377d8aff57573c99f10261e25a\naa78d4465ae18312711f9e3a79a13dcf\ncba0b54cd104c411e9d8921ebe6d5b8e\n1710ff46ca275e171df27141dea8c9a\nabb2cf2ed0d8679e9cace18601e5d3b5\naa9f41bc3925ffc4be9358e8c18dc481\n265f0587e4018f7aff6fa400d1cc4c85\n8e05e4f955eaf140ff673973a435017f\n99311deac352b9a5873751b4c304dae7\nb50f9931670e25ef44ccce632b473b8c\n72d4deb3b797c03dd4f6529a209c5dc0\nc8fd6ee4bdbfa5cfbda3e4f05af7d436\n4a5bd025a2500b3b3967c36b4916b4de\n219a0021526791d18bb5c0bf5eec83fc\nd482029701573b9a43fb5689d5ce14d3\n346917af7c9659e3814085552234c955\ncfb4626f879c8355b4d8ed7f5558a6a6\n751a2e8afd998768fb8f6150ea0ae369\nd63110386a6bbd52d647b1c17442c93\n2c6b14bcd5a5546d6a2992e9465c023b\nc896260b935971fc65d21723f535417\n8478439998e4af846602d94d941a9c9\n9609eee1c5f60dcd610425baad975046\n49b67421f1aecb54619e733243629008\n1cf14b4004e1d2e22c6ce678c9114ba5\n457ef8db81db726909e2381adbddb4b\n5f2ae8bd2d571e7c6436916a86a90ed7\n56332360ecedaf4fb095dfb45b5ad0ce\nf7f7b1b4021be11afaeea7738551d104\ncd8956854d515c47374462542bf2aa29\n156d4748560997c9a848f24544821b25\n1d82316d98f620513b86a9df4269733\na5a6c94b8a93c11b679506fe2f937c34\nc916164d0e5c667a75ef328fc121b1c5\ned2e4dafc745bdd661fd7e090d4d0d45\n318eaf9f125d8296541e8704b64e3884\n3469d3ab2d353da43a3afd30f2e86bd7\na0a1b0377d72e86bab3dd76bf33b0f5e\nacdb7b476fc5a1ca96f65931c8819eb\n3ea2b72ba08a2e8097df6383472cc5b6\n2830f11dbd7172222214ff09b39580e9\nacf64e44b021fd4613b86a9df4269733\n2359486974efded33121f82ae456ac81\n817bb8c69e4ac23ec81ddeca50aa3117\n92f697d036addb55ed576c2966428f\nd142c919254dba0e41ab8016efaf0266\n4dbf4e0654d0c234e811106a82796d20\n73df85f3bb763fcf148474f05635eadd\n6d714f7b7170a581da8e502a3c6cb4fb\n405cb7dcad3d6f2f65af93d4326737fe\na8d3020b33543bdce64131b695068ec5\neea7f5d02088d49dfdb3c05088c091ae\n68f06cde1b907c44e9e6d625d754e501\n34211d29d94cbd52b7c4f0665aafbacd\nfa234addf8fe4f7fbda733a39f84326d\n232a1bf61d6d80ffab0e638d7c0cfd7b\n8320c70894c3cdfdff1370452e3a0154\n7a756a1c54cd3a5a1b3611fc576bceff\n18f6df600df7341ab0bbc6f39febba97\nd04fd72c36fbc71731d383b4a9dce77c\n5a9a67bb92fbfca3b1bb46d2556ba67d\n4359a0878f823f5b96e24f86f1144c52\naf2f10112f943f54c730b513773cf286\n6bbcd5608ddf871a4cdd04162f008888\n1f191e0327ce54474cdd04162f008888\n9c827e532de4967285089a13cc567dbd\n5be0fa6b0bb7a281a170b3adf3b6f220\n667f7509425dbc60c43644e93a8d03ff\n61348ed95aac6b3799cbdd78ced2546\n92c882d35dfca864acee48fc4abca0f4\nae0058d9ae9bd33d51a95aaa6caba1d3\ne24f388736f4e6fd2cdd250493632937\ne27019b4147f868dbda733a39f84326d\n3ec7f0347638f7a891eea2fc80d4a25f\n8212b62591234c743a0daf3e5400b95c\n74b73c2cca45cf483c1d9add3a87bd2d\n8269284992bbd0c886dad8a79e570561\nc6e3d9cf26016b5752aa494042b7c9db\n56b6c950f4c5de80ce27281f3b76d1f5\nbae4b861b5cf87275b182da8c76b7238\nf48dcef252683ce552aa494042b7c9db\ncb19594e73992a3d51008e496c6cfd2e\nba0ac1d1e25d3fad63f2c3a55558a78f\neface8341d001e9ceb01ae4a4788bd4f\n7b0ed2e4d59ad5261d5011bbe723eeee\n648ceaad362345518a6cf8c6b92417f2\n81c52d54f9719736ce27281f3b76d1f5\n936702a0367e95185b03bc28c642bc\n8545a6862135379c813e8e6859b9f2f6\n5c542cd5371a631d6436916a86a90ed7\n988108a7536d686824065b218dc1b5b9\neadebe4328e2c7d7c10520be41d00de2\n86b488c74b27d70ace27281f3b76d1f5\n588c2d2567fd900aefe5f291bc2f5fd0\nfe6749c82c57137b28044fe9244db50a\n6b642c1c62ae5b49247a5be450795511\n82a783a1ea4e34b8d7755e7baabe8a6f\na5dcd1196a1ffa9739f20966eb25504f\nb1f75a8e8b9e921a8a6cf8c6b92417f2\n7b067be3aa39b1a124853ec273f6c1d2\nccca16b8302bc8bd13ded1857c15b5b6\n30c86c4764df9f795686045783681fbc\ndd35ef6632cf507804272696dc83193\ne213d976734431773a3afd30f2e86bd7\nabc42e7c5ffaa41d1466737d5c4b4246\n8f715205d2e70c1ebda733a39f84326d\n3ef7cfbc172840b2393bf61b30c528bb\n3c310afdf363201cefe5f291bc2f5fd0\n3cad25b218e0cd506436916a86a90ed7\n30f4617775480bcce27281f3b76d1f5\nef3ed9f139571826ce27281f3b76d1f5\nb5a25bcf42cdfb15523270fc16562838\ncd67376cac9f989151008e496c6cfd2e\n83e537cd6bb435e91d1a964dea8a7aab\nc48a804986a819b4bda733a39f84326d\nced56d51c144b40373dc6d54075665ea\nc8d8089dade71547d2350421a9405ba\ndb8eb94d24f5d8a2350dd0b332d84c76\ndf34c25a1e1abe9428044fe9244db50a\nca0f99974520bde12776450c3e3bf20a\nbf37249fc8e16fd8f9a88cc63b910f3\nedb2ab8a1d7e20f36436916a86a90ed7\n99cc91ea3f0b646be79303516c6edeef\n188621bbfc7d9477ce27281f3b76d1f5\n12243301d1c8148e33d7c9e122eec9b6\n91440448603dffb62c8b6ee41d7d5d62\n707d1e19b465d075adbfb30d8d1b297e\n4c1504f3463445dbbda733a39f84326d\nb5b6b09711cbee6daa44bfa127abe4bb\n174f1a421f652029d577c0ac53e96823\nbafacc7f28509d4157abc6fa0d632bc7\nc1186d49101dcd513a0daf3e5400b95c\n84498085850b19d11673e1c313348a01\n57f592c3ec49318661c6c61410fc904b\n6026684ab31d567328044fe9244db50a\na358931939481311bda733a39f84326d\na6d494af391a97686436916a86a90ed7\naf94283a61eafc7183a0f773f3852fbf\n86d9b82220d7ba342e56818be5fde856\n3c685bf24a135262e88791d6267b8a1a\n7751f6695ce5013bbda733a39f84326d\ndecdf28e46edc632bda733a39f84326d\n4f17af1ca7ae689d409b2c4484d833cc\n6bf75ddeac192594bda733a39f84326d\n4bb89ac11d478c0a71fc473170b0a51b\n3e2c3cb4f4c65b9cde9d4070fcdfa604\na5dc2526c9ef78b96212c8f6cd06e\n67c229c70e64a25e69c2e0a91b39f742\n26cc3a9cc0c28174ae30cad08127b470\n4ff291758d03aab8d935b10ea652d50e\n7203130a35ab20a4b1bb46d2556ba67d\n23bfcd49917919006a34aa94ca8a3355\n78c0bec338fa1c01d6b98bf27ff43caf\n355e7a7bde7d43c1ace5721ccacba16\nded68cb3b5318425bb164ad50a9faee3\nfee1c13922c07e8711b978ff9450f61b\nbc86f6cdcac3e6a5afe1d4530f4c6e24\n3d3a1207dac28b9340d2ba94749368ce\ne4cd5b3cbe9082f536699018d15f07da\n2acbb7959e6388236d068062d5d5809b\n3476290a1220338ffa975bcfd21f6dfb\n5768ae99da7499feadca4990256df2c6\ne729c1d5c3cccfb3bda733a39f84326d\nc6a7b37a33b5eef728af9bd424dcd6fa\n30feb9f00597aa2a3781057335c8a2e8\na81d28a70bb06e18bda733a39f84326d\ne673f203b40ef869567880160b3acb12\n42e6ce03b361102ab86e0633bb69faea\n270b0846304e3d66bda733a39f84326d\n9f4bbcf9f51fe1e42957c02bdefc95c8\n65e3e2893669a09cc7b48e36e31209b9\nafb36ab0a7bb906bd95840a0da458be0\n12941cb870df79b9815337ac44abb964\n6f3887b3b8253284de541e973ae662b5\n650238554cb16926bda733a39f84326d\nb67af8c92198eab432e9b7d6df5ccd43\n5b7985f5dd37dec2c2509a0026f2a07d\n2ccc8183090b97cb21a66e8dfcce514a\ne5a3ffca76415acc33529abacbef3013\nea7d39fcc3cf045dfc73a41845471b0e\n891b06955bdd04a7909e2381adbddb4b\n2c3a5d170774da5ae4a44d0583e1bb01\nf723dd6b7a95e230c75bcb366ed55ad8\n26c2c91d8eb660ecbeaa545f7f633287\n970ebe02365dd05bfd7e1079f2e4956b\n2999f005f1eba724bda733a39f84326d\n39279457a4bc87285e717a211c863fc6\ne624da8cd22f6d289bc0c5b67eaafbc\nb3f1ad55fa401c35e8c505ac322336cc\n900c32b154c0dced994a3466f8481f8a\ne75846320e6aa623960b997a49ac99a7\nf36ce0c0cd0cfacba7742c4ce47c2229\nc487e9850891e1ec2d15396b7bcc6366\nbbc4f08aacdff9c7a8ed0bb390c8ebb7\n5d353140bc7569a48772afa45900d07f\n59e01fab310fa8c49c9f1f5abaab90a7\n30ad4418703c8cd2f1da888faee23fa4\n67aebe9ff1f103e18d1e606155667e23\n613bf2e7f987553220d9307ef0bda318\n1079efee042629d4ce28f0f1b509eda\n88fc7d197310ea4b961b666ad9ed1438\n505ab718b8083f02ff1370452e3a0154\n3b41ffcb4bec60cc21a66e8dfcce514a\n45ff3c9bc849f2e33a2844e8778fdc6\nfdb16a8648016157994a3466f8481f8a\na471cdae8ec5df5c9e317a6cc797b629\n38f9aa4c68327bec760191d847b7480\nff3c8e21a48ed17cc1bcae9def1986da\na2fa9237519db867f606d4ef0b8dbe5b\n39d161909e94d99e61b9ff60b1be412\n6af177bc78ee06a0e8acba6ad3725ca8\n26569f96aa6c4ed880af23b535873bb9\n600ab6a1f116a5ac994a3466f8481f8a\n37a75534a7a006ffbda733a39f84326d\n6a737d71a4c4d81958943aeb17f0d326\nc6ca5b48d1e5f5ab89442e34f9143192\n510df40932e79779a324deea8acbeebe\n4f31142fb24b4814ff1370452e3a0154\n36c2770d00fdd0bdf1ee968c9039cc3\ne56749ccdc861495b9e97c7f06f23bd5\n29fc55965346a53733d7c9e122eec9b6\nf60f11a1a8c8f89992691fb966926839\nddea3123599a628ebecf71e2e014ff6f\nef15b938dcfa9893c4d922e8a1141322\n1523402e11400b75becf71e2e014ff6f\n54514b3e6ea7ad944361eef216dfeaa6\n60d8d7776789b4b1fe11eeaa72c8aa36\na166f97f10557feae7a7d875eac9a93\nf7b61de5d6d919a8953536e7c905b301\n943be90f18274083becf71e2e014ff6f\n33f95e59143938ddb490a9cf145bf702\n5c997a7c241190937cbd61b2affd051d\n86f1cbcda59640594dde7b6e74a2cede\nf10f279643fbb3276a78cd0552215cff\n9698be0fd3516f01fbeda5389ab05f5f\nf24129eb2169197c203f35d9b3b48203\n1ae530f49a914595b491214a0cc2380\nda92c8d35fabe4093a67185d75524e9c\n705840df46a582e2ac826a3c82da491\na50a46d3423e7dcad1eb2a2149d13665\n74f7b559d6af926012f2e446484bbaf7\n65c225fae513a6dbe7b23463fd9b0ba1\n6333b9c777384ad14362be10a3fc8255\nc6978e2a0ef9f0df866f1a483075a782\n8242b114695b68286f522b2bb8ded829\n4d0115d72892d27531780fdd33037c9d\nd32cd105c2dd79259d959a8bee08198a\n259bf3c89b0b2152c1f18a2d53a6674a\nb61b7103e8d8af91fe21694bd5f519d1\nc6038e4cf08de1a7c805dfe4ca9f2fdb\na836fc66c01eccca58c27e607f6e2d4c\nc35ebd98decdebb9db7706d93442f2a7\n928a5f0e95e7aae5780bcccc86c008c3\n5057c9dbf72e0352728fa2df514c65d4\n69aaf42f0b8d0e2da37127a27e431e39\n90ba6416acd424e06d8db5f653b07b4b\n5351646fca246bc989c6f1079da7a8d4\na57e65f0c8f21ebc31780fdd33037c9d\ndb216ae493f303f35b4953d8add91f\n37ad66d0433beb633df8f4ac45647158\n8fc3cde1054cc1aaceb4167db4d0e4de\nc6441f127d51e478f0fb72d24c42a39\n11a96098620b2ebac2f9fb5458a091d1\nc907a6cb1b178999c805dfe4ca9f2fdb\n8053e014516531ddc3f500d7b182f6\n2c407d592623011eda2ff65a113288d\nb44b09bdef8fa2209473806fbdf65cb6\ne4886a4d0c6ea960fe21694bd5f519d1\ndb392da8d05ec4d4f6d01abc93dc7d8d\n97831a753d80d66dfd24692312e9de8c\nbbf84d45735af3314dde7b6e74a2cede\n6d493677c8dfb9d8321338b7ef756ea5\n8bd6b3e216ac44d2d1e34356c50bf8\nd22a2d20acbdca70c972ff3f74d38438\n6c339c89246fe6a651db49e653372c20\n3aa2614f69105d0f31780fdd33037c9d\n1e3f494626a24badf35b4953d8add91f\n863f9284eec4a256e9d8921ebe6d5b8e\n7b2ad420c7829e881cae32f43c09c982\n7046566750f129126aa0f1550c0a545d\nd34b0494fc4d756ab927782fc69a1fbb\n52f2a2472411fe2e6b418c7d9fedcaa9\n19042f5a90290859441c11ab4641b257\n5bab0881b7a18b12733269057ed164db\n2131d5bcea38ce3a68bdb39538968e8e\neb59c9376d1e04ab49352dd33f95cb9e\n9e4380de95fea34a11718baa6d4afc0b\n9c4a3879c71df693af0f25977186b501\n167a645149efed1fdca2ca2624f821d9\nc887bed724f4a30c31d6c59225b395cb\n56e0fef0632aed0f1d27be7764701cfe\nf9fbc58e3692c4d5583d20ad0a6b981d\n6ddb807414fa23e0d9f8911ce020a037\n1abeca7159db7ed9f200a72c9245aee7\nb4250be25fbd19a994abc9429888948c\n294331fc6c86a51ec805dfe4ca9f2fdb\nff5ad56515bc0167500fb89d8b5ec70a\ne93f88a9beb9ddbeaff90a85d875467\ne66bbdf57fa6f7f575f257e5fe0a71cb\n2fb5fe84c28b8b35cc02882a83047172\n511962626501e4abf500cc506a763c18\ndca8ed788347b28c171cf359a50c99bc\n3ac664a7486a0bdff200a72c9245aee7\ndfa6c32dec07727ee9d8921ebe6d5b8e\n420d1b7af7ceaad59ad3ae277a5ccc98\n31055873d40dc262c7477eb29831a699\n39ec376b0df877986483e7894702b192\n1714b6e57c8c4983fb1aad5dae793ff4\n97bcc7a1f73bfba93e5399147a5b4763\n49e8bd4cf55ea566d97f019cb91636fd\n55e0897c0ac089a6da5cb3be8feeaadc\n530234273d5e31a57c7baeeaa3dedfc\nfcd90d547fdeb629f200a72c9245aee7\n9e5faa247753ad479289f0a3d35e8de4\nf51555db645f14468bac13e007a6e9\n4a1b48e1b53cb6547a3295b198e908bf\n20649c88556a7e7a113ef105f1affa3f\n91c12a0bdf98f5d220f29d4da2b76f7a\n6976cc9f5982474e9aae70753d127b0b\n83fb99fe62dab5308b55a52bfd1cce7a\nf4498022df553505c35f22936e5aea5c\n48debbfd63725a743978555bf44cfc9a\nf9c2bc7b4ef896e7146ff63b4c7525d9\n1ae184691a39e3d3e0e8bce75d28b114\nd1acd4916d3d3b57c48db2ed8f5e994c\ncdc8453c63ffc13e20f29d4da2b76f7a\nb55112c3c09949846a0cf750aa55c4f3\n43874d4b5154b6a0e3a6d6259addf247\nc3a1e04f49e80d22a10cf495b6dc4ef\n7448f1cba230298fcd61ab83ca5e9957\ne1d2157def9f3ff469856ab03b318817\n36a5117c64d8ca6ca10cf495b6dc4ef\n787a38da42c2026ec29f776eec462c6d\n1e0ada2b1891ea39e79e3bf25d5c768e\n5686e48a700bf4c989439bf55b857b9\nc6b98edfbb65320654b49557f8ea8b42\nd47353fc60390df85d918097f81825e3\ne703fadeba32d912452ffe4552686849\neafa5935e963b0035e875676652081cd\n15f605c6fffea827e7436c0fba14b4d2\na78990822fd4836a12615f8be9c552d\nd2e1dc21db9b45df6436916a86a90ed7\ne2ceb9bf23b498dda7431386d9d22644\n5ad845ccc1a5795ecc19d582c2bc11b6\n2a82a66ce6273dce601c8ebc794de3f4\na8f2c3adc0671c15c64e95fc6a597455\n9702eb7f07f013532764cfba57a5de73\n1ae9732840a315afab2c2809513f396e\n46adf74e07a86c55e370ad7734071a37\n16ba461c0d7c8435dd141480e2c154d3\nd373922da2a6c73b616f13ee256019e3\n25c292692638406620f29d4da2b76f7a\n8922c6c3435f16fee694960c91796f38\n4270f4f3372a1b24546b7395fb17f97e\nbd188c1db4c52a2ac35f22936e5aea5c\nd8f813278a49463db203f960004c7382\n6246696b7db8ab34eeae8bcbf655eede\n2180046932174984a10cf495b6dc4ef\n8decf42b145f98d148d2ba4615e03b21\nf49155170c175dff176be984cf2a7f4e\n8e308d28d463427f43f0e92e826556b8\n47716b1acaae5b8083653a771e25099b\n4b092065568af127d64c207b9313bbaf\n76680f2bc0d53c6e3112e33afb0a091c\n3d0308da43d52e3ef56f8ea3d9016e55\n3dab4ef100f906c2bda733a39f84326d\n6f7ba033fc5c0784468bac13e007a6e9\n43319fbb378083669d5b1db3ffcc1210\n8141677722f680076a2345809e2bb169\n4a8aaa19c413328d2557e2b5350c7e1f\ned4fb30733bd0979b1bb46d2556ba67d\n1328a95d69cefe32f200a72c9245aee7\n965000959c53a8612fdbcd3e1b829315\n86fa16c6da908e6b44221994b043fd86\n3ab98667cabf774e3343f5fadc4a2136\nb809864c779761ab7ac2a2313c9e8844\nd9838c0fcfd30659d9f8911ce020a037\n8d78c8489dc927dcb07f27f3519a9cd4\nddc63b22552ef13b734650590bacf709\nc8bd4d0ac34266ffaaa232d0915adae9\n598f0aea814b1d0f8db98a39370e7faf\n38e30aa86d7bd4e0574fbf5e869a42b6\n7c4aa4b3f916d26c9cdc71dce6a3b485\n4b841ea5b31090fe2bc9f17412005422\n2ccaaa66525d7f095473e57e894e0ef5\n488fc8215ab4e5e02edf5935f10637d1\nafeb58fbf8c45924cdf21e49b4ebfe68\n5785192c95cdd67b704715417c0f83c1\n1d234607fafd576b6dede2eec861f76\ndd1bc8c4063a6521456a647a9e7d914e\nc8fb314a1866d1d2428df271ebc70bc0\n189c2b53ef76d02978a20fe14185667\n4b7b3b54dc04df53c19f1e8ed99ac2fa\n8c0fd2f204d6008da1b543d55837199\n6165a435160e69bef997a8fb55b67177\n5e014eb2bd03daab9fbe97de4a41d527\n17bfc66c6bc0a99d68c415156b102065\n8590a6c8270375e34b5a812ecf553410\nb09f4d5af99be6c5f5f45e906b41d1f0\n4d24f5e0f3f394c030e91498c0369393\nafa0436d9cb1b19ec8c241cb24f7e0ac\nac488b046b024bdc3aa029ace5323fc1\nbb9109ffb1789e98e55e3289e5df0916\n9aec89a595e4682fbc5845a373118df7\na49107f738b26379428df271ebc70bc0\n56d5921f58898cbc56e8a11c9bc9a7f\n7c44aa72f314ee8e634b31c394824611\n4489a777dd90ebcce28605e174815eef\n3bb3b6b85e4e42873680ae1a67758160\ne1c16a07b6e974b951a95aaa6caba1d3\n6dbae14e481e8fb9333e0bf0b765fa12\nb70d970f8020c25dd141480e2c154d3\n998f600899c76e4583653a771e25099b\n974c3d82f8726f086b418c7d9fedcaa9\n695bc26f67e001e65bcdedfa3370f5e1\n45189b11f0524a85e921d7ca67acd2a\n61b40cc1d7e054cfaeea7738551d104\n9c35f00f81110738783854950b26f0d3\nd3d121f2e2d57b5cc5903e2355330295\na1c337c71f246f0b1d1a964dea8a7aab\nee1d28a50a2b71e129348d14ca881f7d\n552233e882a65b6431f5c3d8b8dbfe3\na75ff576da012340468bac13e007a6e9\nad1d30f2294f40dc622ac2f50deaba1f\nfe860c6a74a86905468bac13e007a6e9\n3d85915d8726cc1845aa033a20004998\nfd50bc89fc1c1cfb7041f1c5e7744b16\n5316fab78a6732f0428df271ebc70bc0\nb782800ed15ae74c6227cba038bf7c95\nb3aea199d8f8945d3c8089ca2f2a9299\nf7c84d18011f76fe5e18329bdc55fc9\nd3f5e04481e69974d1521952154c90ff\n35e4f3bca48aad294361eef216dfeaa6\nc08d4483e70f02e5322b377b3e7c8ad8\na242c0446b186585852e57cec5098e60\nd09039d34746615fbb164ad50a9faee3\nd810d7f83632da71556235a31d374eb5\nca7202152b84a70fc6a4281cffc3c014\n34ab29cea66952f16f48edd113a40fce\na49df2707037f82a94ce9d7b04676231\n144d0880f61d813ef7b860bd772a37\n625861912ac0d62651a95aaa6caba1d3\n6b44be4025c966d4672601793664460d\n1cd4a2c1b3b4a9661487189ebf835715\naa7f127bb8cd9db73755eb267a6f3b6b\n9e0eb55ae7af7f8a61fbb658aa965606\n3b56b3bd4f874de23781057335c8a2e8\nf1b928427f5a3a7fc6d5ebddbbbc39f\n28bdade3806ef2f328044fe9244db50a\ne20b8a9c388eeb012c8b6ee41d7d5d62\n3980afb8f986988daf285e0d3f56d074\n247de29743ed24c5e61b9ff60b1be412\n35d8d94bdd379556a37f3fc191551700\n85e54cec1c6808009bc0c5b67eaafbc\n29e9a4beeaeea1becf71e2e014ff6f\n88ad6f5df57cf8ea16abce8cb03e7794\n88fda6df0a162605e52943dcb52313c\n2ba7ea78b9b6e2a6b420256a03f575c0\n7bf6249a031b5095ddd41159baaa3ad5\nfd7741b7927726bda37f3fc191551700\n60963ce07aa742382a9eb0f146e94477\n430941674faedcff6436916a86a90ed7\nc6762641f741acc2a19bced881c9e641\ne7e94f8dbbe8c1e9784da3853aae78cd\n312cfe616ce515be5826faa473422ba6\n2cbcc226b4f952f29e1c4d21c8ecae7d\nf8ccef3ebeaac7c0539e4d34a3035bd8\nd0cf2f187acda5736be7348aa770e4ca\n48723bca810f80cf7c84d27684eb86f7\n844a5b7af9b67510b1bb46d2556ba67d\n8dcccd3d9221f9a0d61b6a34f3fd808c\n3c6d7c6ce950917b3a93df79ef2b80ef\n5dbed4f17ebc271a3aac79fb478fb6b\nc20ff7778ca2b8ca86ac29addefc0f11\n3ca3c91dae8d2cbdf56f8ea3d9016e55\n192fdf42f5a2623d673ddeabdcc8c6e\n3ff887eaebf0bc7e9d2b99af43da16b3\n48f5446e6ac9c1b51f1446551412bde4\na13fa4cf0dfdd5b58f7f0d2c9c57704b\nd513c968e5bfefd2516624d6e93a68b\n768ea3241699f663f1cb19f636b1c2bd\na990f6d75c669f4351a95aaa6caba1d3\nec42bd73d57580a85b48f89d50b1db79\n9c10e71c06558c3b1bb46d2556ba67d\n189cffefcdd5cb071a126804ae24042\n354c1c380911fd2f4fa6b747e2cb679\n37c5ac3d5b34761add75f724c0ccbe00\n468780ef4ace9a422e877e82c90c24d\n7486c73293cb8af3175a3b42530b4c51\n58dfa36440ada6cf2a9eb0f146e94477\n718c595ae03a78208b58723318e7adc2\n6c449b92891754c6b8b6b17d4ce17d67\n35f6b9780e173878a8c38723d07b122f\n9f69ac0aaab969682a9eb0f146e94477\n86c8a3137a716d70e742b0b5e87bec54\nc1aef2e67a9608511c4ba4758a592406\n32e6ee437b8fa3fb5e52943dcb52313c\n35d473527fa9bd8cbdb24a67dc08c308\n12909f5d613953b8b3c9b3f81618206b\n82c6851526bf7350b5554d042286b030\n9eaafc3581357b05d52b599fafc842f\n92a718b74a2e5e84fd2d6c7ed5a8dbd\n63a4e46bbbd855fc2b63d3b2a8c4e8b\n7a5eba46ba4cfac35aa429db266f0c30\nffbb51fcc3955d01b67c620b30c63392\n4a30d2147d0e27d13ded1857c15b5b6\ne920afce255de6ee3781057335c8a2e8\ndb45ce3926c3ac69e8d8ad3bdef6aca2\n39201299cf83ec2577763486d77d1cb\n3d2fbd9bfdfe08573a93df79ef2b80ef\n5621ebf65ffd38468772afa45900d07f\nd2efbf5a3b7ddbf94c0aa7c1668459cf\n167df2c10c116eb5d61b6a34f3fd808c\n5135ad38043cfe64eb766e5a46fceab\n5ec7fa8170eee943713e820becfd99b\n19d35f3e0c0b402125ddb89f02fe6cc0\n27d42437168ccd7ddd75f724c0ccbe00\neb1bd7389854311c14f284ebe538e531\n8bbbfdbec9251733ace5721ccacba16\n94cfcfb74e246f938acb0ff76f4aec7d\nb0c2225ab347e28f1a48cf85d161a723\na421aeec78440e40d3a3ff116860ca63\n2cb6de89f5b6e702b626f6a649199824\n9446a1c34cc06eb518b1741f84b73b\n49930a07ed003273fbeda5389ab05f5f\n1552f1a6521bb54a4bb135bcd06914d\ne1c7c7fad8802d67fd6539c5080c830b\n876d92ce6a0e4bf399588eee976baae\nf18093ac0242d439f500cc506a763c18\nfad616172dbd52649f06afd991af5139\n244a8476648bd073834daea73aa18748\n7521398f7ab70a073c1d9add3a87bd2d\n6a81b52d03080172ea7256175786076\n33211aabfefa14603b05c2ad25b4380f\ncd7feedd6041209131ac5fb37e6c8324\n90917495a9603208c368040825ed335\ncf32af5869fee4d34eb766e5a46fceab\n8aacf6e90bfa4610becf71e2e014ff6f\na17d5aa16a529a88cbc76a30015552a\ndf72f352c7fedcfad9951d9ecda74409\nb28d1b3e81f407571c02ebb3dd0baeb1\n4c60f32b6efdc7217dfb1ee6a4b12bf8\n4e2ca20091449636599389919f6522e6\nd164a37bffeb5a83f04c8b6c3407554\n704e60e6e5be85e1f500cc506a763c18\n5130947e5f18e73a8321b7d65a99d2a\ne9b2aebf673e516d1f0d59cde6139796\nadd26d8f4f91ba04c84b95bddf75b22d\nfce2b933f93d132f4f45033b2f001552\n2a9b4308929f91a6e1007bcfcf09901\n93bb1cd910f054818c2e7159929c406f\n5357fd81d212951a1c64dffb0265c4d6\nd953bbe38edbc6f4ea999fe4ffdc2504\n441d0b3f687e3721fed6082009db27d\n8c2430564a8e3a2354277bd8a941f068\n7f42d57ca7041f2df43d27ed950b5659\ne9bccdd7a52f13329b3f352e6fa9112e\n33395dcb83b43eee21e570d3da54bf9d\n9fbcae2f132db088b09b4c3b88665c4c\n8d1ef0a2c958b23f22aa128014a842c4\n263e3ee9f0182cc48e35db9103756ad5\nc3858a8b73dcb137e3bdba9430565083\n3f18c23d7628966848368c1a2f71c5f3\nf03a4533fe681a155b48f89d50b1db79\n5d756a52f6f361abf500cc506a763c18\nccac541c0db2044736815730d7fe4119\n1cb102a066270f79db1230abb5fc0167\ne23ae6404dae972093c80fb5c792f223\ne042d636cfca46f56436916a86a90ed7\nc1192c946a99ee529bdb511fb702b5ae\nd2592adba4e8e62648368c1a2f71c5f3\nfe3dc721f5026196d61b6a34f3fd808c\nef77d2e622786026d32bfc7a837f790\n9a22505d1e6221533c35e65001c8c258\nf84ba2039d0a4ec5afe717997470b28d\n7f198a2357dec222f98feeb6b46f3cac\n85f3dc3318f5200c8672c9b355cd2075\n77d9a23f45c888e595551e0d9e50cb0d\n1790131f5f74b1ed973aff268eb6b00c\n73140624a636925ada37be44e2d84539\nb6749c2b917d4aad949b12cf3977a48b\n81fad64b8fd8f010b17445a1c29f6d34\n28b5cb11ead4c878fd988235de2147e\n783f141774ea26e259d587c4b86a22ea\nde683c906ed97d7456ca31471168385\n65ccd33df41999496d6573f48a06281\ndee6d83ec808d673c4e77c640c2391c7\n90a59a473e9d110ae13bf7a39e9b5432\na295d3ca78e2fa9a6a2345809e2bb169\n515492715a04d8756a2345809e2bb169\n158a95b4da25aa1fa37f3fc191551700\neec2ea5ac4e048836a2345809e2bb169\nc59c26c90a724e84ce27281f3b76d1f5\n7015c7c8ee74f69313ded1857c15b5b6\n787ba4e958f1bbe88ec77d0d80815cf8\n554bfeff3c44a3d6425b2c354eccabaf\ne9c2c31da871e0d6c203986ffbbb5e4a\ncbe2dc469c47bb80425b2c354eccabaf\nee975a7e62edc7996a2345809e2bb169\nab7eaf660f1bf4db23fa56f2e03fa992\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/02958343_train.lst",
    "content": "a53c3515eff9f3bc2f732d6dce34e9b3\n70b8730b003c345159139efcde1fedcb\n78c3bf6ae1bdf75419b43924bf120208\nb0801e9d8e004e7758dbdf2b5c6acfca\n20a3df3de67f309d8e35db9103756ad5\n6fcd4ab4d968a975715e04edb8af9c53\n1a30678509a1fdfa7fb5267a071ae23a\nfe9c6862f758ee056ce6bb1d0811960f\n5fc83a88645b1869514e3d96995c555d\n40313368870df2c0df59ad08996c77e8\nb1736379a44bc475352a2541f8b4515a\n66d4d1f28cdbe97559139efcde1fedcb\n3ea68e00dff2847f1f0fdc8ac183f8b\n4e9a489d830e285b59139efcde1fedcb\nd6786ef05af6127d58e7058c5c570964\n83731bad1b7d6ec531fde3a1e19a4940\nb06c5da878580bec3c0146ad3ea2d7d\n9907db7f1b96ee9a8b55a52bfd1cce7a\n4a423ae9a28afe3588cf40718544e7cc\nc9b956006607a48c75dadc997718614d\nbacc3c08f58dd96152c6e8b4fe0351e5\ne8745e2d659061ee4a15d27f5dbfc7ba\ne64dd4ff16eab5752a9eb0f146e94477\n19d0843797b8b2216abce8cb03e7794\n67a3dfa9fb2d1f2bbda733a39f84326d\n586da8cf648767222a9eb0f146e94477\nf10e32c6daaf237f13ded1857c15b5b6\n74cf231265731c2f8a1aed4fb5fe5280\n25de320e58cb3898f43db49cede9f847\ned6bf649ad5b3d82b1bb46d2556ba67d\n63b0fcfb7a1ac7efe8d8cc304201f02\n9f08e434ad95c4bbbc37558785e0529e\nbebfba98a5e97c6180360680c1602c7d\n1355f3aa779b599b16abce8cb03e7794\nddd17a0d7ca713f2291ea03049d40375\nee9b3f31f40a0161b1fa0b2eada93a95\n1104f0924e03f2b6fc5886e868449015\nd695f936edcc28d497df6383472cc5b6\n145e18e4ec54ed5792abb3e9ac4cd40c\n82ede85c805bd5a85af609a73d2c2947\nd79f66a4566ff981424db5a60837de26\n875bc6efc7f33c052e877e82c90c24d\n2521a90182ccc29c253c03b7df20edd5\n8cc9aaf75a2fb056dcff2899f073ea9d\n985763be7e2b18ec16abce8cb03e7794\n2b0207d7f6a6f23bf0ff8cc77ea4c273\n5343e944a7753108aa69dfdc5532bb13\ne7c4b54fe56d9288dd1e15301c83686f\nf45268c928a4b3fc8bc584bb94b0b13b\n550d6c4149699f4f93de227e8a339990\n3ed07ff8b46b2bdcb1bb46d2556ba67d\n792a93f2b8dcfe7116abce8cb03e7794\n73e977c312f8628b1d65faadf0df8f28\n6ad0379c2f24581a1c0f83a9278e7dbc\n74b37c2f88e0ef7a469bb3d27ee3bc4e\nfea2f9ae1e25b74c12f962c15d41de4d\n31ae8e03d831a85cafe1d4530f4c6e24\n338eb8e836639e09f8f1f8fdb364ff3c\n2f0ca88dc76e39a7ff1370452e3a0154\n1336353d15efdf010f6f717db02df67\nc769d45be62178f516abce8cb03e7794\nbfa0a0a7862c2cf3c2179f10f381de6d\n792e31b0bc8415a13ded1857c15b5b6\na9876012922192273a8cad69dd295a56\n21b8d0946135481a8772afa45900d07f\nd2064d59beb9f24e8810bd18ea9969c\n9fc18cf33ac91041425b2c354eccabaf\nfb97ee1707f495bbdcff2899f073ea9d\nbad0a52f07afc2319ed410a010efa019\n8efced0ecbd1dd99713391d1ea8d388\n344eb3613a1100634591011e8f7af9ba\n9539149f41e453052a9eb0f146e94477\n46c504c9760fcf0e7540f431cab4686\n5fe9cca902d8135aa36fba949f601317\n8c710a2319c1a5683f86d898378e5d97\na944ae569bbff87716abce8cb03e7794\n414ae320397821af8bf92e87e504146a\nfffb1660a38af30ba4cf3601fb6b2442\n746765dbc0106bfabda733a39f84326d\n9e52d425db48a33bbda733a39f84326d\n9c846ae63f5fbd9a16abce8cb03e7794\n26e2b2920a2330b2cdb8ce1e61248143\n84f258f2969c02de6f94a44ce504367\n985082c9239527ed728fa2df514c65d4\n2ec9a7479a8ece30ebe23ea7d95f2a30\n2f503625718536ad5d9d397842621b7\ne9573675928b6f1c2a9eb0f146e94477\ncd2ac3225eb36c0e1a04a94f2d5fba0a\n73dd68fb65a4f4d25d9d397842621b7\n12b5e4f52c22b348d8499d8846cb4c3b\na3d0bbca6bf8a565dc90bfc1d450ece8\n1e12573f2d8ffca667789dfcc3262f70\n40f160e49a6d0b3b3e483abd80a2f41\n5410d4faab53ce49e9d8921ebe6d5b8e\nb1c6a021c1c47884c9463ecce7643e8e\nfe0c5b57b5cf4226bda733a39f84326d\na0fe4aac120d5f8a5145cad7315443b3\n95d18b69c9624a05473f10e6caaeca56\nea37a9b97e092552b927782fc69a1fbb\n8ceb581fe28a6496510c6353f9f7a5e3\n7d7af9263109f8aed4fdf31cc2d78fd0\n98d4f1e36d400acf5fd7e9b026930cd3\n1a1de15e572e039df085b75b20c2db33\n9375ded98380ccc77bbf13cb42ad9d73\n1a56d596c77ad5936fa87a658faf1d26\n6a13836c3bc23bf316d7d2293315a234\n4773cf28df771861b112e5ac235c21b7\n6dbb3c5d7ce105243afcf7df86a03c60\n453164c9199ebec7e80b7eb39c475065\n93486febc6ffc1aa7f04cab89c8d2959\na36c53acb3255d1e84b1aa0ed7e58be1\nb2e36774150b580e21f6e2b0f75cf9c4\n2655a48c8867146bf63ee8a34069b7c5\n12f2905dc029f59a2479fbc7da5ed22b\ne3cf84131f9293a5ea0b6fe51a588e07\n97128412dfd802be2a9eb0f146e94477\n9bc421a5b0bd481b4e76a17e357a8d36\n2b08d1ac4111542f3a2b1a2e5e169910\ne0f1de19f0f65ce09123224ebaa118d3\nab7b5025c9e9c1921cb81cb1632a5e\n36bc228a8722bf27473f10e6caaeca56\nfdd3f02c294518341944f01d3ab2091b\n6a758f23f6dbf27923978edad4629e6d\n286ce4a8390b317f93680c5a9a367b4a\n3d693af6fbae47f9cfb661f69a0dfbbd\nc3e49f8c560ccc216108f064aff2426d\nf60779c934ee51eddd1e15301c83686f\n92ff3c7b2b8b1f65e2693f33cdca907b\ncaa7b1a7dabd0fd3be0e4b4a1a900aa0\na86655c0ca05c2646d3e11439c6c22c8\nfa563c2b77839dafc0e3666c7d0ec7d0\n61f70557b8bda7422ee0f9a97b71d505\nc16bafa65123cddfce29c905218d4398\neb144af0fef08314f00cd8c386c592fe\na262c2044977b6eb52ab7aae4be20d81\nd5f1637a5c9479e0185ce5d54f27f6b9\nfe29b245be45318c80e6a7abc49befc7\n2dd2a5154bcf52c2aeebd3372dbf7ae6\n93c56f05dfcd4248274334f2451a8eb\n6e76975ba073f2a89ba83e6d08a84f26\n3344ba7f18d9623d549733b112275285\n6bfc2bf0e72a0f66f500cc506a763c18\n7f2b01a53684e72154b49557f8ea8b42\na532b61524432d454ed192f2298faac\n690609438d922525ff1370452e3a0154\n62b14fc115d98999f0776ca5816850f0\nb41bb2a3159a9506977b27045b1d8055\nc43b1ebad0ba016a7fd25564c2e888e\n7c651c4f55c5ca57d76439fb95cdd2ed\nac56c7527df057173c5d25c30835eee9\n67e2f8985a28e895a592cf90fabddd34\nd5d47fe322179a83473f10e6caaeca56\n83c31a4085063873dc2afbe43bc71afa\n885a8852bda6bad7774c883319711a53\ne15f9acabfa0adc5470d3ca356fc4190\n9cdd8cd41303cbdc650bba674124a73b\n65f0321c5aa8c303a1936d27bf774e9\nf9584908ada1c74bc2b93f7e42be3ac1\n97d0903cf8912c3ee9d790a68c844819\n75bb1fc144e6d17a6d00e450aa03077c\n840f98dcf50b48f9a7fd25564c2e888e\n5b925881cf8678cabda733a39f84326d\nd83fd4f79f16a1313c9d2d3d4dc0edb0\n435d3d83b7511e39f44e15caa8fd94b4\n42af1d5d3b2524003e241901f2025878\n831a3689b2f48664473f10e6caaeca56\n425db95a3377f4d6e62a01eefce42a80\n17600a4881b1ff6a5c14de0cb75f4d3e\n359841936db476cc8cf4cf458d5ff7b\nc46a940147e6da66ca92a4cdad802b45\nd3869e2527ff032623276041d0efb3cb\nb30efada80553a1d202258c0423dde73\n41b4832983f44aa3a7fd25564c2e888e\nd4434de782382a47a7e7e5ea49ad8e45\nf1d902e502f474313fdffa7a79289f65\n10e99b1475098c0aaa69dfdc5532bb13\n89c7e63c3d3d14aa17b597d473206848\nbb3c68db5dc0052e98b54df7430097ce\n9aec898631a69b6b5da1f915cad9a74\n6c39e401487c95e9ee897525d11b0599\nbbc2f2ffeec425a38eac574d099cd5d2\n1d2c5ee3b5ef205164bd4e0c23ded276\nd4abda76f4db60086d07c55cf995503e\nd4512a374073ae95199f3841b86452c3\n3a7e096d05d688548413778731d6cd28\n1b94aad142e6c2b8af9f38a1ee687286\ne4be3f3bc271ff71c805dfe4ca9f2fdb\ndf1d1694cb98584cc23e2024862e7f3\n6aa8f648cc8df63ab2c17ece4015d55\n15c785a7505992c3a9be8fd09fb14f4f\nec07cd8db8f2bea851f021b9ed69c58\n4fd6fe1f81a83dcee6513d84422cefc4\n26bc52b1307fca053e5ddfb0ef6345db\na77879318434261612725caceb9cca76\n66be76d60405c58ae02ca9d4b3cbc724\n62499fa5041de142707223ebf2d3b38\n425ba801e904cb50f3aaed7e86215c7b\n96e3179460185d889130d420a26edb84\n4e009085e3905f2159139efcde1fedcb\n1137cd58d6a45c6659a47b1880958de9\n634b6b50c7e8912f2ce3f1cb66884331\n66baad4c6e4bfa08cfd826dd468a5497\n7f09e6522f212f94512af8eced68fa8\n903b043072a209ba8290d32865eb3245\n7b00e029725c0c96473f10e6caaeca56\n62eda45907bcb75c320fa6e2cd857828\n5aac7e6813771b2f22cd6c209adfc63b\n50f4fff3a26ea3518b3ab49d2e0e41ab\ndf8000281bcfdf0754f3692df239bb9b\nbd29875d6aa7be1b2a80b185a779af6c\n9b4324a33b1dbad5a7fd25564c2e888e\nba89184f58f21ff63343f5fadc4a2136\nda5ee2c950a848f0af8a2e210ebd5168\n40c05e511efd3fa96945ae93118ea9d6\n63069a0c741a4d228b7c308bd543da59\n7dfe2b1451449501588556e812e00901\nca44101f11f4346a34e8e5a47ae999\n82bd66a7ffcb351c1527e35a652f449\n12cf05b9f5f2d2c195c8d3a7db4dbe65\nf1c277f7fc421492fbe59dad8284dc0\n198d8e274c59511b36a1a31af8f59\nebe05fb264a56628d7ef29ade0716b6c\n6dd48d74d8bc67e7a7fd25564c2e888e\ncdef1867e841d4bfafdee870abc9eca\ndb14f415a203403e2d7d789814cae761\nb12e8616bb73f5daccaf7041f92bc85b\nfc86bf465674ec8b7c3c6f82a395b347\nf605c1f4d1be8d00f63ee8a34069b7c5\ndb86af2bec3e48d7beda80d430b92891\nfaeda504709a7af489d347432ecb438c\n7219c2a7e7e04850374462542bf2aa29\ncc7f51159a1a12fea7fd25564c2e888e\n89eb1c5370b80567473f10e6caaeca56\n5da4c0cd066b7d0889d347432ecb438c\nb7f957411c3353432fedd0aa3d156746\n2cccdc287a5329c2ca92a4cdad802b45\nb17d638e7def9adbc8a6c4a50ada6f9f\n15cc37ac9b3b756acfd826dd468a5497\n72a35a471514d6299e317a6cc797b629\n2881a09fc1f3d2be9dab4604fbb1a7b4\n79d4876cf799516b977b27045b1d8055\n2dbfe9c041fc6b3a94ce9d7b04676231\n2dbbd2bec94e4a7440eaf79934ff53b6\n63f6a2c7ee7c667ba0b677182d16c198\n2f7cf2c2d170e3c936f37029483b3e41\ne9233510c6e0f2672a9eb0f146e94477\n44559a87bc7a0bb3121f82ae456ac81\nf6ed076d16960558e6748b6322a06ee3\n40f0bac5bcb4f8686ff5dbbe822945fd\na238facc26681bac8efc69f75162eba1\n40f2f3962e360a3c16abce8cb03e7794\n212685bfc2a32cd9fe8cfdfb3bfc3376\nfd3b75f7f1e9172fb6f657757c95f74e\na7bc9db453e66329abc6b562f9bbf76\nd6e27c6523a3f2b58b8cd97e9d1c6a86\n9ec59185338edfde4cb9bf7caeb24dd3\n52a1d23a09e38c4d50577cf04f3bf74a\n22654a0cc1ba382c4eace6243432632\na5b7cc1a5ab2828b28b0b7b876595fb8\n72122bdcd4ddcb96a0c0a4b1a1c1a4ad\n4b67e004d83d62bca1aea50fbc4b17d\n66bdbc812bd0a196e194052f3f12cb2e\nd569a1b7066ce775b738b317b28286f9\nc4744d66623e04b7518f93fcf50bd8df\n2f13fc44e7e06816a134736201a79843\nbf652fdb40c4cb3696ab9df3b3d7537e\nedbace6013d1c12ae9e1016860f17753\n38b80589a780fc3af63ee8a34069b7c5\ne61dadc02535e6e44b6e62b17dc78f70\n832a8f6cfe462e48402013bef9b89b74\n37887931377037621f71e734a2d317fb\n99a7f916d137e69bf2cdad303f49c9f9\n8bb2ae81ca9e9a4ed14ae991e75ee782\n5bb83a60fb8d5f45a1089359fc10d7fb\n1f416598fe329a88b1bb46d2556ba67d\ndd37570a8876c4a4a513de4eb79b310d\na44fb2514e9ab51f79138cc3f6db7577\n485df8eb9c410c132a9eb0f146e94477\n1cde62b063e14777c9152a706245d48\n3b95f46c0133167b80e98029b8cda1b\n7e4667d837e39d0945e930a0b8a8cbc8\nf60955dcc1d1c48687dc1da2515df8f7\n6ee1f28244a72fcadad3ef3f3ebed150\nebb3c22708c9ad3a55064a110bff2f03\n13d090612aec3d80ca92a4cdad802b45\nbb7fec347b2b57498747b160cf027f1\ne5aae7748aac94086228d448ae07dd2b\n719912031bd692fbd02bf342687ad381\n2fe7e3fc47dad6c7afe1d4530f4c6e24\n8d6de65bee9c269bf222d93492cfe0b9\n49defa8dd73d03f1a7fd25564c2e888e\n2401f097228fdc1348b30181b0729b3\n46726bf3daab9d14b1bb46d2556ba67d\n6f1888091dcf4ca550577cf04f3bf74a\n6ee7fc93288d678e3ab3dfa44f5fab01\na4aede8e488db95220363e2561dd589a\ndd5eceae670f164ca134736201a79843\n80e839edb7aeae0bc54427e2c0943fd5\neee2c0e2912f27b15a49026b22f63b06\ne9c5e6d46c47129c5b72003cd427d0c1\n8e145be3c332199dd6821061f4432a0\n1687b77b048d1aaf635b88185c42637a\n7eeebaaf4df31022aaafd94b9f216ef6\ncdfe4dc408f4ca84aaafd94b9f216ef6\nf9cbd331bd475e07dc1fa1f50eb490cc\n2d817a6f23d35494d991a658ca89186\n2c8e9ae34ce33a40ab2c2809513f396e\n3bfa196d1b48f1e0c5dccef20baf829a\naefcbac53b05ed5a27404deef339faa\n8c01303b68d30be5b9ad5039d820c924\n9aaf299edeecc76e7dfb1ee6a4b12bf8\nea58938dca17f3853c9cf79df3851b10\nf37c7ab91bef514b4125854591376336\nae1c1141ce4bfde9d66a73de5847ea37\nbe1929020e6bb4c9c2920de4c5efc2ee\n4c3b9ecbafc80b9cd485372bb746f3c7\n8db161338795c215b1bb46d2556ba67d\n924e1a54fad65f4de74f89cd7bde93ef\ndf672140efe7b8ca89e9a9eee39907f\ne66cb97aabb79193da5cb3be8feeaadc\n119033fe083145e22f31600ac759c763\ne57092f6c51ed37dafa781871c8b9ebb\n75b8fc64f98a71969d69712f9d08c005\nfbe6ff98196a8ddf1992fbc3c9e8b937\n7275ca45638f16041899a3ad18d10126\n3093f587c5660c7a473f10e6caaeca56\n55c545ac0d94ea16becf71e2e014ff6f\n8824c06f737f2888e35db9103756ad5\nc29ff3df2cb0139f635939ef1a7d59b4\nd21ffd4838ff2ca75a30f4aa03635c5a\ne6643b95e245410b8efc69f75162eba1\n9ab8a24e82568c598c2c132c71e94f7c\n72d4244540e81c671d9826a79afd9186\n5876e90c8f0b15e112ed57dd1bc82aa3\n924599eb8b6aa6429ed410a010efa019\n25a44213579e75782e877e82c90c24d\n24d7494c6b92c6e7c1bbb501b1d87871\n9f7b4a82becac9cd5568b8cbf53329df\nea6d538fb5cf3c0bacdcbcbaae0ea58b\nc54dbefca6290ee8a3b392b986583\nd224a01422266fc51b3c1c9f0ad4025\n8997065fe94841771ef06e9b490109d8\n2fc27dad23406a2a7ae33d942430658c\n535f244d5b6043e8cbc76a30015552a\n93942ab3fc970415c596a26318046886\n45bbe9d4f12433cf4f2af69a26c97402\n1641efa5c92514d86c4f4dbcda5f2fc0\n5c8f71dcfe980f714f3a54559bf4cbcb\n7c46bfff2f90f11044592db9be5db5c8\n2228a428bfa91e4f771592b49641a847\ndbd67f5f505a795161c6c61410fc904b\n72b2c7b2a49d46ac2a9eb0f146e94477\n60c6194b6f164cdc30276fff5ca3093a\na2179820a01ca67f1a144f5cf9567bf5\ndb1e6a78a84615b83c9d2d3d4dc0edb0\nd4e7286d53a7236374b5e1a654a4b1fc\nbf1893badd1c6bef59a47b1880958de9\n43cb6a878cf18fd92a9eb0f146e94477\neebc48c480032e45473f10e6caaeca56\na4d535e1b1d3c153ff23af07d9064736\n29b714c4aee36c9d6108f064aff2426d\n4024c9fccd9fce80bda733a39f84326d\n90f85f62885afeec65ca154580c5c7a\n7be86bfa8edd04fdced2b3ef33cc51ac\n637a26dc6b1a3f47e7540f431cab4686\n82b9bbf2c5c630d9acc1f3191aab65d4\n6d89098a33908cbd77b59844decf6d46\n911029433b8ff0f1afe1d4530f4c6e24\n4bdcae58e18e4c94c1bbb501b1d87871\n9909e197f7383a976d07c55cf995503e\ne1c3687f400be151cd21a68c6dc7b5e3\n2df4b1797723b140419bf2f84339ec5c\nbfa01c632be2eb06e8a3b392b986583\n6d7472ea15dd5c18433f1e7c64b884cb\n21eba3c73a705597db2c2b0116c82e56\nbb39689b3e6568e85ea174ca141ad66c\n2ecbacde09270d49cbf57aaa2ef6598c\n30f4b931145acc98a3049d0dcf503cdf\nfab45f900797908bbda733a39f84326d\nef7f623beb7260287b5adf84ce6f7865\n3da0d2ecb594ceae348b30181b0729b3\na74c1aa71334c6af20363e2561dd589a\n4a6dea7ffa04531cf63ee8a34069b7c5\n6dda1440d653d0c3bc5845a373118df7\n411d95c06a7e9456b3b0f00a15b90e0a\nd894c407d7fcca0d36294458115cf41c\n77a170eab59d866d8a1aed4fb5fe5280\ndcdee01d7fe6e1a76ad064d1c5fdd7c\n36c4d31969a8c1111a31578ee9a364cd\n6615a61a799c144e84306f3bf0a1f2d7\n324434f8eea2839bf63ee8a34069b7c5\nd4e611a541a5b01473f10e6caaeca56\n7bd15f738bf2a402d4fdf31cc2d78fd0\nb0945cdea946d1a363c65629bee30ef9\n360cc5c25fd6bf20ea50ea60f77ab4cb\nd474f5971b5e8ecae9795e5d56b7e9f\n115170b8b44f9e2e5b2bb28aa7453162\n721ef3846535bfad179005454847728d\n83f26e6b8298c3a0a134736201a79843\n298e8c0d9ce547b4e1e2aee44e822aa9\n32f458e413dfce699cf7b84b43bdd8f\nd0bf09ffa93ba912582e5e3e7771ea25\ne39215e03ab8e65e68428aabd2c41ee8\n40e7559b88089f4ba7fd25564c2e888e\nf882454f6fe1c5bcc0e3666c7d0ec7d0\n492f36ac59d2d3eb450d7227edc25975\n1c351358afff1cc582e5e3e7771ea25\n490812763fa965b8473f10e6caaeca56\n62128b128c9a54c6389cb55d070b61d3\n406ff3d73672bb2b21669bcdba443569\n7fb5dcec8e6745554ddfff13f461e46e\nb790d70257a8191a29984c4afd2e98a4\n2e37a9a6abbdf6cf25d175f53644eac1\n94edffd805dc965ca5626f7e1b38f05f\ndd240a8334032434bda733a39f84326d\nb216e194c572e9ff99ef493efb31e54\na16ff37768fe676473d32960f279a9cb\nc8b196595745bbd241c181f4a7e1bfa5\nff809d58a66fb4e85174ee1075ae80c1\n42ccff0d88276152e341b5704aa568bd\ncde88b5900e8dfba725a7749daae1afa\n21205bdb7ca9be1d977e464a4b82757d\n46a71fe0e651986fcfd826dd468a5497\ne7b9a6485b15921d51a95aaa6caba1d3\nf643555dde0f0838346c6b68550f2695\nde1564379b1315a3efadfa67efa023c\n61ff6beffb91b6a82a9eb0f146e94477\nc9d53c90471eeb06ed3696d854eee1ec\n86736cf3dc841eafde5db5d0d11befd1\n9648aaf755e6556e2a9eb0f146e94477\n7112c1cb9b6461c9a551e6372afde900\n64ee682c9dd2ee467cfc46ae22f84c92\nec994111db1da0d6927e12317acf49e7\n373cf6c8f79376482d7d789814cae761\nd55179fa8bec81799779c759176b96e3\ncac12f8e291f3d1fe43409f9be327bbe\n570a9903fc7fa557d0a4f72b67c7f064\n9fb89a485c814f7e18f8769175b6766b\n6d3d67957e1ca228ca92a4cdad802b45\nf4b86f895a221f353b0907d01b34682a\ne7141fa81a2828841e8bd72b0feca0a8\n9fa56c19e4d54cca99c8d14f483ffc82\ndc3c6748e5f96cee9b3f352e6fa9112e\n63599f1dc1511c25d76439fb95cdd2ed\n8b22da6bba6c81452af3f274e91bb46f\ndd184b3f41891cd317c40808ff7018fc\n9e2e375fd5fd55b02a9eb0f146e94477\n18d9ac72442260e0e97c6bb243ef67d\nad6572f7ac90b9bf2949d5274e5ab643\n6af0ad6553d3f42f21f6e2b0f75cf9c4\n2076be423fa5bb9f9e908ecb03b3d6fb\n7b57af1bd2d83363ea1216357e7f0768\ncaa26e8b5033be6ac02f176e44f0fcec\nc911f8a7084e7929593b8de380af24a3\na8f7a7271a02fd56afe1d4530f4c6e24\ncb5fd4e2c29b9193a134736201a79843\ne7f94161bd90444f8cf4cf458d5ff7b\nb5367bf3cb07b8ea593fee7ac9114e04\ne90b0381a7c8841c1c65421fe734e7bc\n7c85e6cf9c4f46e91cc13e432d5756b8\n26b7a9c6c7e74829eabc798aaf5f039f\nb21bc9621960f418c330b66f68c70be2\n4e42e2b6986a3d86a20249b45c17a5c9\na3672e5ee27e389ab19dbf7b5aff7ec6\n52f592a68c828a1e190cf42afcf85660\nbcc3a1e280cb9153618e9d35559b7aa\n2254e63f695a1cccbbae182929bb7dd\n785cb635a01fb7ab2a9eb0f146e94477\n193ec1089f0a98a36518e6cd1fbc5fab\nf94003409831db21f2cdad303f49c9f9\n82b9ce9740bfd28fe9fab7ec4b8a907e\ndc8aef6a8c88997a582e5e3e7771ea25\n793a8675d7a5fecd653effc8a32f84f1\n381bf84829066031a134736201a79843\n85cb3207e15a1bf8582e5e3e7771ea25\ncb5a320fbd846fac28e9ca8e8fb04e0a\na4017ff2cc8b9150f4d6a46019767b57\n884014d60de73249af551becaeca18e5\n4cecc9df9c777804816bd8f64e08b2bc\nf2a990659efa05c5452d05118c2bf489\na3d77c6b58ea6e75e4b68d3b17c43658\n9a63aef0a99f7bfab2c2809513f396e\n354274e1c27653a318d9ca1acf6633f6\n14330011009dacfed49701eac14326ae\nbca97563f170ff4ad2bcce019eeaafbe\n272791fdabf46b2d5921daf0138cfe67\ne09c2528f56f04d03e241901f2025878\nba0fa0e807fd275e0445fc6d980dd5c\na51b3b0cbd9c24f3a7fd25564c2e888e\na2c9c1b4bf918cf6d2dcdf586ee56d5a\n6fce36e4df1eac4fa7fd25564c2e888e\ne97d26f05a68f833cd89498c213958c8\n8a28abfb5751e767b9f455b31f6fc3b6\neb5e956c2dbd44248bb11dbc05ffaa74\ncb0bffd770644cebcfd826dd468a5497\nd6dab47acb946364f0cf9a4b3162f487\nfd765ab34e7907db186bed5098d348af\n15d6cd7877c6601d9ed410a010efa019\n25378c7370a06c497ef186a2ac298b0c\n22428fd70b02b83ffc567bb1bd08c1ae\nb5a6e71a63189e53e8a3b392b986583\ne01a56af0788551e7aa225b44626f301\n42134787c805fffe1ab9df4be75138d0\n702edad0d2fa9eda2a9eb0f146e94477\nf0d16187cae178e7e9d8921ebe6d5b8e\n5ebe8c53a7b1f554f445715e3bbcd7d0\nbeef4a450e0d42db6436916a86a90ed7\nde6b2f1796b1887d84e2301109bd5b05\n9a0365ab56ae57ffdf6ad3edb04a4bc5\n4e488242b665d85f40bc3b36a331b786\n86ab1c2ea989fda9ab15905beabd3f20\n206e39a5f67f4a4a81d0c86cc18e6647\nffe0a5b165461eb66a2345809e2bb169\n6a8058611e45e7d243ff4cf09319bd2\nce375f51744396e52a9eb0f146e94477\n28fe2af4fd6ab3848772afa45900d07f\nee63549013035c385e28caa3b26a73fd\n6265f0745d3f40546bcd32c43682e841\n7db943b676cd86d5729c04438af8eabf\n8fadf13734ff86b5f9e6f9c7735c6b41\n7e65e7db2b227946631a8860374e7eed\nd07300cbf12c42c3c427f8508e3d634b\n296c92e4e7233de47d1dd50d46b1e3d1\nf90ffde4e5ac04bcc627f7f719e1032\n66828747e0e7671021c7b87f47c77e12\na1b7a3cc11b25b3a82c0a051a54c0e33\n8498fb254e1669faaaafd94b9f216ef6\n755717e2f9edd1e36782fc9cb2c37844\n8d560e44c4eb588d4fdf31cc2d78fd0\n1782558e47730989b96212c8f6cd06e\n5c5908b7a19d8df7402ac33e676077b1\n1cd50bde9a3e711637b0898eccd7168\n9ff9c8287fdb49be8b55a52bfd1cce7a\n584a78bbf7932674d4fdf31cc2d78fd0\n4271d0c8cdad6a84e572d3df5e4fc85f\nbf0e8d944ba4843e94e7e8e27399daf7\nda59928c982bc34a2a9eb0f146e94477\n293c7cf5fdde18258acb0ff76f4aec7d\n2cbe6850de4fa5a34a6a7ab072f22d7d\n99606d5346d6b958b96244559b61fdc2\n62fa029fb8053560a37f3fc191551700\n49e4cffd7736c34362b21e1bf23b9ba8\nba03db3866faadf0dd27b2ba4335b978\nf9cad36ae25540a0bb20fd1bc4860856\n3363bde33b9abfbf7c5640de9da0cd4\n9d5c0108ce2c848e977b27045b1d8055\n73723a79817b594098c11e8f05368fe\nac85727971fe63dd2c67ef33d7521ade\ne5247d798b4538094046e8fe9dfc34b5\n8ee2dfd1460eded9473f10e6caaeca56\nb61f6554d83c50684fa22c482c32995d\n90f2e2d8f9b89074425b2c354eccabaf\n2e6a9622bf83f04c38ee77d0178bbf4a\n59ed9bf99fd1262fd77312c90516c805\nea76015145946dffc0896a3cd08800fe\n425431f166ea35bdbfed25440ee4185e\n2650ad9e7a1d0ebf6df8cb2765f8ec95\n85d04dc3f455bc56ceb5044e1e1e9739\nf4da249169898dd915212cd62adf957e\nc18c78cf54b60f078e62780ddf14e62c\nbccf69e2dd7de293ab2c2809513f396e\ncc8b44ddf6ec80fffd8e7b05498794b9\n28c83c5adf799340f2cc18e077b7ba53\n7fc1cbdf81a1edf5bda733a39f84326d\nee2b541ccee732254c938921b509ee11\n536b6629c4f60d07e78002a96f52ef26\n2b800f158324986ab6f657757c95f74e\na9aea98c1e79a2e6e99225f2edcc7982\n6f2e76e362ba6c73c0e3666c7d0ec7d0\n5d0e79c02907bb8f5cde8c99e4b182f9\nb2f06baf5851e7a36df8cb2765f8ec95\n7e3349b2d3e833b0364d334d86d85d\n29487596941c12dd99f6b4f86609dd6a\n5c960f83d0eab69cc9463ecce7643e8e\nceb561c72a407ddfdc50a691c68014fd\n8b2f030e604925c92a9eb0f146e94477\n76f35efa4083dc6a4d31b03e74c723a3\na42b6210fa2682adeb4ea3744b7acd6c\n55785c5e30e293e03146b856dc99bd62\n9752827fb7788c2d5c893a899536502e\n99dd952f49606ba01669695e4df59de\n7b01d9b011361e82a7fd25564c2e888e\nb866d7e1b0336aff7c719d2d87c850d8\ndd06b4149a6f876341ca08f10af9385b\n48260abd4ff73f99473f10e6caaeca56\n2bfea38242ba63cce77aa0b62eed1492\n2894449c2f1992bc3a65ca10b9ee2981\n139df45393b6847838805e546aa28d99\ne7b500cc55c8f13b4512af8eced68fa8\n11d1fdaedf3ab83b8fb28f8a689c8ba3\nc4bad2da39f8021b3554e683803baa4c\n19541db644551287ee0112963a7e11e3\n6c08a180a3437f316dea32b07f945478\n9f2721257bcbfc70dc1fa1f50eb490cc\n21999849a6a8aad752470de2774d6099\n3a5ce33bac316d8f6379c5e421c1d27\n60458c0d233ccf9daa69dfdc5532bb13\n797804cd4594553156b22cefbc2dcb87\n361f3fa1f09d25f07a5533ecb7691f17\na2d1b78e03f3cc39d1e95557cb698cdf\n4dc19314aab40eb83a93df79ef2b80ef\n7bb54d802ac6156ab96212c8f6cd06e\nc5f77a00c9cae334cfd826dd468a5497\n3c1ecfc2dc88c1919214bcda3ade39f4\n8ed0533fb22f972cd76439fb95cdd2ed\ncfd7228f455912dd9618aa9e2febbf80\n1fb16b5399a4b3a710bd1697bfc4e3eb\n48863925f0e70aafdf8e4da0a37cb43e\nd443e86ae023ceeb16abce8cb03e7794\n68b62b9b9d49f262b12ea83455b0f44\nb0f1e8e11aea5f622fdea40a56b4c57d\n41f087af6d5af9e1c05a03162270a7ea\n3163c8037d5782365688db6590f826c8\na56dca5eab44489ca7fd25564c2e888e\n2205a3f2c102f180a134736201a79843\n9e3a69fc219ef73d37c910d2f91b3d73\n9497f33086b582b7473f10e6caaeca56\nd22cec9b9f500ade28e9ca8e8fb04e0a\n54b10fd57a55e249ad07230f53fe98be\nb9ae3fb6b027dc4294a553cca1043426\n1d4eaafea3ae8303ce94fde2d6224f79\n8b177994dc29a707e363d824c14767b2\nfa9897315ee8b6ba67789dfcc3262f70\nba7a583467ff8aee8cfac9da0ff28f62\n9e3a2cfb3c8a25909b2ccdf5f1fe9097\n6eba2ec65e8e44ed5545896d1a9ff5d3\n4d12d72baa7641a1d1debe6139d9c454\nf2422eb6b55e8fb0ef3ecc8551d2c1fa\n9e44269655ec3df9afe1d4530f4c6e24\ne7add7a018da8056bda733a39f84326d\n7cd83953000adce622cd6c209adfc63b\nfa8ecf7278bb320bb7ecd40416f4e39\n9c06490e82e122093f599d94ae17ce2b\n54473bc01457b7291b3636ad9ef344ff\ncf39999d7c9e2b4788ea3c115b90ce56\n45563d97886d68eb12d484f58f506441\n186646b16a670b7d69a949ac99a843c4\n4836466e85175a462c4cef95ae3d6c50\n30774e3218da1f793eccc98914b46c47\n808e19aed606f10cf919864ecec729ac\nbf7efe509caf42cb7481cee66aa2b2f4\nf92aab09a6a1c6556c23793d085f1519\n279adb2c37867b3a18d9ca1acf6633f6\n57ce5193c3ecd067c05c2f3d0d461abf\ncea62d812396c31a88ed7b6315c3b4a\n51d9af66315d76f9e6b335b85df4d203\nd20990638711f55967bf54a1f364120\naff67f837a958d2329984c4afd2e98a4\n728f6f29382b70053ce4e6f97016bd5a\n88161acf1ef955c5d76439fb95cdd2ed\nd0e68e14e8012b497d6d702dc488f23a\n3b1ad5c98cd92726b60a292fcb118b54\n64f940ade3f61f976a106c3e1a10b659\n1ee4f19fa617ec5949493d905c02fa86\nf478cd5a04d2220a25af19d380ae3a\n47aa50eef6b59ddbc552d162ae439d98\n4510559f5587f601147d1b898220921a\n96bf8cb730f728414a383db4764d5432\n8976e05f72b43a742a9eb0f146e94477\n9cea9b79ea255dde56ffccfd33efbc84\n397d2e2b3e0988a2d3901a534bc610d8\n9d3fd293f6b9e46f28044fe9244db50a\nb6abe0f00fd452fa4101e38beb790a92\n216d910f71942f205df3c6413d40ccb2\ne859ef0e793c43dc159a969baa659ca7\n30e84a2b779b0e89473f10e6caaeca56\nf1eb3f6c5a5313564c7d8ebbbb68f5\nb9786e1b059a1712ca92a4cdad802b45\n4618489fc34c3367323a23bddac1281c\n75c4085b3315688aca92a4cdad802b45\n813bedf2a45f5681ca92a4cdad802b45\n5ebc7e111e9d0b5d473f10e6caaeca56\ne00169580fda5461473f10e6caaeca56\ne06082fd22dbd3d425da9962b829b47\nf2e433cab0ddc755ca3ba83abff10be\n2996a60389105deb649a971570be83d\n543a6562ae746ed45daf03c341f7f599\n21a1f2a7b7e671826405999d829064fa\n4d39e6f28ce8970530515cb6d98a6c44\n5efb2b4cda03da10e047028ded406033\ne9ae93e6ddd5bc1e6047f64eee8fcb68\n202648a87dd6ad2573e10a7135e947fe\n9eef7b2c492bc1181f4a259ef9bb479d\n7bf415dbff028a3d4470fce578e2b84c\n42147d774e08199564c7d8ebbbb68f5\nf2f62db1a9e5823a7aaf6e2fd8453e07\n65ea0311528b1e5f16abce8cb03e7794\n30456a19dc588d9461c6c61410fc904b\ndff1f351bb34fbbabecf71e2e014ff6f\n7a12f058a0474559a7fd25564c2e888e\n7d4fd8ed77355364fa98472c1d231070\n1089cbe82dc0e72133d7c9e122eec9b6\n61251733434b9b0c15a23f2b45e10de5\na89dd60aadccd84be04e0c24d5a9d818\n17bf28a8d9b5a7ccb5e3401710af905a\n4dca2e572dc278d563f2c3a55558a78f\n4571e0fbe9cfb5f8fd52c8b6dd37752d\n6ca41d6e48d8cda0e7c0978ffb411d3f\na37a9d8847ca3b90e6052439e5a76d12\nd43dc96daed9ba0f91bfeeca48a08b93\n5cad9a0e7e69c6dfc427f8508e3d634b\n5d851496c2acbd8cd03e665be0237104\n70048a705ad4363642db06daf723ec44\nc07bbf672b56b02aafe1d4530f4c6e24\n4b6e6fa36c1e6f865cb51d79fcf5dad4\nd0552c332fd0182df3cf3d2cc3dcb043\n20b03fde0d55a99fbecf71e2e014ff6f\nbf523e37ff88cb10e23d60a1b706b44f\nac3585c59a80b822b4d8eb72d337b2e3\n52abca690cceb7c634a65e2e5c663c7e\n3cdb021c923034c68bb386c7dede359e\n2a844013c66dd19d32e3a970ba4fb82b\nc24892528799ccf486b4d991d5310067\ndfc08488e2ec687d1c64dffb0265c4d6\n40a30a8e56fa4a6c7b48e36e31209b9\n63959ab016687a50618e9d35559b7aa\n36f17730152ac28116abce8cb03e7794\ne2d98e5fa33b5b0daf8a2e210ebd5168\n7bf95b4dad8c1244d928f30a3aa85f67\n202fbaeffaf49f4b61c6c61410fc904b\nc631ec6f38a5e1d7fdc1d9a76d31d55\n58f2baf01b8a3baf24da76692f3228e0\nd4f910cd784c38dc90b4e3bfacd1b5e3\nb9e20b751d869418ce2714c5fa8be19d\n1a4ef4a2a639f172f13d1237e1429e9e\n993bd3b6fe7c6e32cbb047938846b5c7\nfe16b8e790f23ab8c6fcb4b4f04936c2\nf378404d31ce9db1afe1d4530f4c6e24\n78f9e32385dd7db27996cb12b5662363\naf0a12fa33b063ee38ceb1581969287d\n4fd5c18c1536d65be129fc90649e41d3\n1f43243b81df21277925d1ea63246010\n1d5872004edf12038644d87f4c93cda7\nc72e9ce6c6f16bb83b8642d7bb5bef13\n476a54545e873ddf6cfecb6c9c824fc6\naeeb2fb31215f3249acee38782dd9680\n44f30f4c65c3142a16abce8cb03e7794\n80b5df2ecf1051fd61c6c61410fc904b\nb12841de144ea6fbee3362a8d2d8318f\n494e45d11299de95c571e4850ce1413\n4458ed2a746e61a3b11647ffa4306609\n84e4dd1c6306a582a97e62e669e9544d\n94a78fc51f84fa839ea5c205086e2a63\n54d525937d9c6921afe717997470b28d\n8648667e03bde366b17445a1c29f6d34\n8202d2165aaff4c05fb2da48d9c8120d\n23ae5d6c60ab3f60ee3362a8d2d8318f\n4c2412cf0f720bb9618e9d35559b7aa\n35a32cbdfd9e7ba460ed0d611ab79ae0\n15a5e859e0de30e2afe1d4530f4c6e24\nf934155d32f9ed5b4101e38beb790a92\nac3f9387cd4319592a9eb0f146e94477\n355e2c8d8d10e8227541c0a826e78e18\n180d1e3463c29355bda72093f9b5aa73\nf4c4bc930957be4951e9a28466112d97\n7e63db420468e1b1bda733a39f84326d\n2e27309be42276bebecf71e2e014ff6f\neef8e5bd46755164eb2d90cf3f6fcb8c\n9b0d7aac4500546911718baa6d4afc0b\n127b9ba77b54ba59bda733a39f84326d\n7a226f6c9c37c8f7253c03b7df20edd5\n65332c9a15126b924b3ff698267962d8\n3ef364afe692557edd344a2b29517bb\ne1c6002b98b4cb2c32f56cbc65681ab5\nd80658a2f50c753cf1335b4fef92b83f\n2485b755d54f95b17461dc7993bb5c2a\na387407d49e209fdeea60824a43a0b\nd679b2dd7a7d6b1da71ed5958a35c6\n31cfc24310109174b11647ffa4306609\n175a289947f549b0e088606e38104b2\nee5e6649db524dc2eb22840c40c3154b\n148ba646cf954b9249352dd33f95cb9e\n53a604e4037c650beedcafe524c3dc4c\nde78fc3652596d3e9ceaa43540dc0e9a\nb4a0711a46f9e2bdba3e2415e22cd45c\n919b95beccb25d2eaa3fe7369efb56d4\na83c45069b2925efa7e7e5ea49ad8e45\na1d85821a0666a4d8dc995728b1ad443\n2861ac374a2ea7f997692eea6221681c\n854bb96a96a4d1b338acbabdc1252e2f\nbb5264bf7306327abecf71e2e014ff6f\n953531696c554fb275dadc997718614d\n3044f0bf0ab7fd8d476502dcb0dc5465\nddb4ad84abca0edcdb8ce1e61248143\nea7ce310216a5a64a1bc65068a7d3cef\n51ae6558e6914920253c03b7df20edd5\nb8cee2711b84bebb425b2c354eccabaf\n18244d93dbd2afbebda733a39f84326d\n5dcbc04a1ce783eb73f41773bda9db5c\n1acfbda4ce0ec524bedced414fad522f\nebc59fa7d366b486122181f48ecf7852\n7376511fb191429eff1370452e3a0154\n53328de5c7e18b752350d856e276adb8\ne914040a57618eb6d3e11439c6c22c8\nd776d298be6bfe88e78002a96f52ef26\nd1a54cb41a88702b1e8e2692714b2614\n306f684fa89eb73ee151bdef07e713a2\n4c2c33070c6597ca9004afc0d5dfd164\nf87f654f056b3679f4103381793c29f7\nd3f0b077f7134654e20af544ce47dd47\nb12bcd0ba039b8d09362b924f11fb193\nefe74cae23f8061382fe9569faf087db\nc004e655af0b35e3bda72093f9b5aa73\nc951be855f20a1bfb2a29f45da811562\n90b4f0d3187ad88c26a3125b78368401\nc8bc71dadbdaa890becf71e2e014ff6f\n9dd5fb440759181035fea498c4ba7c5a\nb72355cdbf1127f4becf71e2e014ff6f\ne05680db6f028c15bda733a39f84326d\nb8f6994a33f4f1adbda733a39f84326d\nc00e0066715c2226921cb81cb1632a5e\n488e4530f2b157c2e877e82c90c24d\n2bbea02b59ed2bab944bfc22204b55bb\n3ef0d561be7aeb3080275d4a88484513\n1c66dbe15a6be89a7bfe055aeab68431\nc2adec4dfc0dd05b2e877e82c90c24d\nf21bd46dced01bd835da01f298003d56\n3e36e7b04fbd55a0f691b4bfa2a7ff4e\nf21188e5f1a6468050bb0437668bebb7\nce63abf6d78ea5bf4f39b2731f699e34\ndc9bb9540228dbd4a8977f240035577b\nf82b9a21855ef3feb1bb46d2556ba67d\n80cae0cc66dcb8a88acb0ff76f4aec7d\n56478692749392a19dfd5136ef0f2af\n641a0da53609ee3028920f0e0293b366\n14d47aa57151ae4baa93570ec0c0afff\nd922b4f3ba23cf43780575af49bfeda6\nf7362613dfd3772faa69dfdc5532bb13\n614d683fa574cd817fea5423f91210c9\nbc75e8adfee9ad70bda733a39f84326d\nd8c7f76320624fef02d716c401defb1\n93c647af0338e9f35a06092d926a13ca\n92cc3ad1d3da26955fcb05674109534a\nd014af11d76dbf667aaf79c2db0c7371\n7e7cc90bb7f265d2b3cf5236f651a8e6\nc73e146596486bdac427f8508e3d634b\n9c0f4c3c72190a6ebda733a39f84326d\ne885df5686133eeef43db49cede9f847\n40953c3fd24e9d65ecf689885b7c1e59\n415c24869f57fec9d9e74b7f1cf9cf3c\nef686b06e51b00601c9427735f8d544f\na6a1c91c92f86c463a93df79ef2b80ef\n7c13a71834d2b97687cc3b689b9b258d\n79b99595059c53108540dd23f35aa602\n8fc2691025a48e21381a9e1cee6d0b00\n1ab80bc91a45b7d0a31091d2234b9f68\nee5839537440f8b6f2e4b4084cb7a07d\ne3d7957c7a9b95382e877e82c90c24d\n89026c748b9cf721bda72093f9b5aa73\n1d4b2404a00ef4bb627014ff98c41eb1\n52ee842db08cd881979ef391885ee5d2\nf78bf954495be532afe1d4530f4c6e24\n96762f5d7f7e93343f9daeef6b843610\n9ee32f514a4ee4a043c34c097f2ab3af\n9586fcdd105347123ed4cb179e56ad61\n846f4ad1db06d8791e0b067dee925db4\n1a1dcd236a1e6133860800e6696b8284\n3973846825fc4d857cb2a55fa21392b7\n7dac31838b627748eb631ba05bd8dfe\n3cd83324de4a2fecbecf71e2e014ff6f\n2d096d5dc0e0eeb370a43c2d978e502e\n26eb9c499fe0ff9edc10f9c1726304b1\n7e3237619d96b6e551a95aaa6caba1d3\n35fc22147c160f501636a25380d820df\nc44111ca55c697117fbfaeeb4819ffd2\n37f9b2735bc9e80eeebdc06b146e1752\nd72ffa185738bccd10b75223b5be6dbb\nc06a5f0315b3784dcece4698ae3579cc\n8577f3f82d5ce3ecc2fe329dd557eb52\n4036332be89511e31141a7d4d06dc13\n909422a9d1b42e1380360680c1602c7d\n14121abc9e2a868e52ab7aae4be20d81\n38326e6ede45e5ab7b1fe308bc94d4e0\n8aeeed96e4597ca6853c6f214c15e60f\nccdd144f89a78f5c554ecfc23d9fc570\n2ab27beb8a37ba37ac00fd1150223027\n1dc58be25e1b6e5675cad724c63e222e\n7240a21ee34bef83dd141480e2c154d3\n2bfcb2381581c05a95551e0d9e50cb0d\ncf9e82b3235f62c949956811ccd3041\na476444d87bc7aeb1699b1ed8dbb7ad7\ndb86af2f9e7669559ea4d0696ca601de\n4cabd6d81c0a9e8c6436916a86a90ed7\n7bdcd746432bf123416a3426987b1133\nf31eae8f1f64638c2a9eb0f146e94477\n5bb7b111a3835592531e940de4b7770d\n8601cca4ddfd28af18bc22abef3f86ce\nec11fb287c9a68475de701ebc922ac2c\nd2ec7caaf8cc7a9fbda72093f9b5aa73\n90573f5d0156d6e23ffe0e5069bf1eb5\n2fc99d3fe3f1f3b3b5e3401710af905a\n21fcf7b6cfcd2c7933d7c9e122eec9b6\n10247b51a42b41603ffe0e5069bf1eb5\nb8599e22b152b96e55e3ad998a1ecb4\n3d358a98f90e8b4d5b1edf5d4f643136\n27e267f0570f121869a949ac99a843c4\nd28ad2ed7b1ba665b1bb46d2556ba67d\n20a967d68b6d291512da0dbf3c68e847\n9e136de952f33de0a1830153974050c\n139718b631cbca546a36136419d55d5c\n2c8e9ff5fd58ff3fcd046ccc4d5c3da2\n2f03e5379f3e9b6857652684714945f\n70899bf99412a69db38722563212fa4b\nc1ac2aee4851937c8e30bdcd3135786b\n7de59e150d4712b7b3cf5236f651a8e6\n83491cab81e3a330bda733a39f84326d\n50ba203c086c496df43db49cede9f847\n6b0238b41337365a3330c5ee7577e4de\nb16a147485ec40b25a70c4e5328e0b9f\n53e7ed598e9c3a09405f29f7fa3f25df\nfdcc09ad608e95b4b631b59d5abd1cf8\nb31c2984546d2746becf71e2e014ff6f\nd306a61faada97eda43f80a4a74d521b\n2e1178d969bdb3849ea5c205086e2a63\n5e5d7901f587c39726d36807b4d406ea\n52ff21d1ba10add4bda72093f9b5aa73\n691bf14434c590f212a6200f1680863\nc53256341ac5693c66d89345e534c861\nb56bfe0649294ebecb02238be5da228\n78c5d8e9acc120ce16abce8cb03e7794\n12cd99c20b1a5a932e877e82c90c24d\n7d099ac5bcc09250e61b9ff60b1be412\n2be8bd6b150a9fee97df6383472cc5b6\n492a339ce5da3fe8e4b68d3b17c43658\n5c04452276a26b80d97e5ba4dc9a93c3\n1f8fc7a787f254e6428df271ebc70bc0\n4db6c644912bfbb3e0445fc6d980dd5c\nfe78ad3863e25cb3253c03b7df20edd5\n63316c4cff51de417fb21fb4ec0d8d1b\nc34f37b1bdd6fd62247035fb6ff31a15\n2dd174957a2053345fcb05674109534a\na5476137d0f2f930425b2c354eccabaf\nd1bf2bf3302c0ec0e21186de41a0101\nc5079a5b8d59220bc3fb0d224baae2a\n7000274ad11a419715ed2279a90f8f38\n99fce87e4e80e053374462542bf2aa29\n99f9ab439e890e79aff8ec395bcde91f\n2a0a53917dde654c3196f09f71403d35\n30e971ea6fceac68f5cb3ca022cf045c\n5b4243556369155858c383066ceeaaec\n2a2a1822fcf96394ed3696d854eee1ec\n3373140534463359fc82e75321e09f82\nbf8c14637ee36251ae3e053f6a533410\n68e733f38f957332afe1d4530f4c6e24\na03c7c73c067afa9e5bf84cdd88910df\n3d681ed2a7eef0df28f46021c78a3723\na7b76ead88d243133ffe0e5069bf1eb5\n5ec3322293a39816ad7e7cea4034d226\nae54e2952eae6ce4473f10e6caaeca56\nc59e3f28f42e6ca3186fee06ae26176f\n37249c6f16b203de2e877e82c90c24d\n8c264b10c4ec3e91fdeea60824a43a0b\ndee6c7e696048330ccd4ba9035439a85\na17bdad065a0e008a2e48b029cec5d4b\nde0cbca344b9de834f36122a581b2941\nc41fc68f756437b2511afe12ef4fe731\nc31891b69780886ffb907109397a6c7a\nc23a65ae787245248580e2c19c4f9aaf\n6291f064e64c6eb9d18a5bd35f0d115b\n8cbc8e27e885eb763ffe0e5069bf1eb5\n8e72ff1064eef473714e6c6511843d28\ne3dff7195a2026dba4db43fa521d5c03\na077e24f8983d3d3476c231adfa21265\ne607a20da6c5132dd141480e2c154d3\ncd3db50308c852a02630fc4a206fe3d7\n15fcfe91d44c0e15e5c9256f048d92d2\n70e27da90dec2de49604bf8c981ad1eb\n96e164d8347ff4d8d61b6a34f3fd808c\n7887e8306742cf844ca84d60642ec7e8\nc4f6540454e65939921cb81cb1632a5e\n35d1938e4ab14fa79ea5c205086e2a63\n151bebc457224c2733d7c9e122eec9b6\nbeedf39c8f5709bea9fe1734a6086750\n52cff656189850a2546b7395fb17f97e\n56dafc275ef1367d307cb03f4c762959\nb35117b7e025a012bda733a39f84326d\n3154c3dce06ae7e216abce8cb03e7794\n3232d99c41dd949a8b257f8b62755068\n83cbe72c4b5e9268ec89747d864c8515\n597c9eee5a5ba96b313436e774fa02eb\n368583768dbe789980360680c1602c7d\n3d81e36e5252c8f0becf71e2e014ff6f\n50af70a51a2db34d777b3c68b2536729\n8364ea0a27342c9d16abce8cb03e7794\ncdd00143a3e1e33bbecf71e2e014ff6f\n10716a366de708b8fac96522b26f7fd\n2d1718bda87f59dc673ddeabdcc8c6e\nb27c818401f48e5220453276fad563e4\nabd0aa2e0ca4fc4793249f89773e858\n25480875a6be8e11afe1d4530f4c6e24\n8df9feeed8678aa6bdc56c6b6d74b51a\n1ef8f98842f2a388a4dbb766064f8bbf\n44c7a7a13fdc673abda72093f9b5aa73\nb688cde1a09ea5d3b1bb46d2556ba67d\nefd9059d23b9c01f46f8ee02bd8f9824\n2cbd461545e71ffcd3b83549e73dc79d\n7478183ebde9c6c2afe717997470b28d\nfda43d663587c7a9caf180c847b8b75\n43553b5efc2674cee4b68d3b17c43658\nfb6c92a80dd9af59b528c0abff96f586\n300c1f29d253f94a97e6e890ac2fb198\n96c404939bdba58331ec7db1bc2ab2b4\n149978eefad83cbafd8e7b05498794b9\nbbf01f037b55306f8c2fb4d10f176f65\nbf52cda8de7e5eff36dfef0450f0ee37\nce93ae42d9cba64c8dcad5127c74b8e0\ndfec37059dcbf6e64819e00d73fd49e1\nfc620f7906f444f1ec403de85b47bd60\n6c5c45f7a474daa9a134736201a79843\n9698778dc63d5874eee70745894f83bc\n2650c2325b7a8d0c811f8dcd8963ced5\nb2f412545dce6e8266ff862bad2bb0ba\na19d008c68e9c942a78cb4f1b66f009e\ne6846796e15020e02bc9f17412005422\n5b1f078a81df862ec2c2c81e2232aa95\n292f6606c6072b96715e04edb8af9c53\n372ceb40210589f8f500cc506a763c18\n481999bad4bfe8bd3dc7f272b20d8426\nbe86ce7f7aec3ad4f9e07ddc212a2f71\n5a5f53455c2b400579206bf213559607\n24b9180ac3f89ba4715e04edb8af9c53\nd4919d3f70b699152b12ea83455b0f44\na6fe523f0ef082a2715e04edb8af9c53\n12a034b6be9afb50ae983613a2e0a741\n29c0b746704727593030e8e3910d2b3b\ne0901a0a26daebea59139efcde1fedcb\nace409d84c89d7258a0683934fae3156\na70703613b83063d27c34dcc9b552d03\n1a7125aefa9af6b6597505fd7d99b613\n18ff13d7f181e7625fa21635eac9e4ed\n9511b5ded804a33f597505fd7d99b613\n45e69263902d77304dde7b6e74a2cede\nfc6f6309eefa5178590462ce3bd1e59f\n67ec617aa2352596ce6bb1d0811960f\n78471673cb8ef99f78ae9714eeb937af\n5fc2334bf83f4c0e3505c0c7d5679ae2\n6a348343b90f8f06a78cb4f1b66f009e\n40c2b97577b43161aaafd94b9f216ef6\n6acb271397e6f9b9e858db1dc3499392\nea0d722f312d1262e0095a904eb93647\n857a3a01bd311511f200a72c9245aee7\ne13ea26b1b229e74bbc8d784a25de148\n3a3d23c4d325252aaaafd94b9f216ef6\n86aedfff061c5b96f500cc506a763c18\n5389c96e84e9e0582b1e8dc2f1faa8cb\n85f6145747a203becc08ff8f1f541268\n890e61bfb197190e6382e1684e46349f\n7492ced6cb6289c556de8db8652eec4e\n24c46b3a467bb4954b1bdab82d834140\n4c456e47a09ec8c96c13d41607812b45\n479f89af38e88bc9715e04edb8af9c53\nad45b2d40c7801ef2074a73831d8a3a2\nece361a95a2ede4e629cf5743e29cdb3\ndf00eb409d4e8fcec07224da8e53476\nbbca92f53f04d80d8bb5c0bf5eec83fc\nca85286b0ff3b33b16abce8cb03e7794\n1eb3cb637ccffd14597505fd7d99b613\nf88b4156c5e8d35ff500cc506a763c18\n4af41048861594b4897e805df74453bf\na2d50ee31621c3e059139efcde1fedcb\n664b8ab637c1fb54a78cb4f1b66f009e\ne28490350bdbdf679ad3ae277a5ccc98\n25d92177ec6bd745deadc9ca0263db5a\n4de80d6104368f4be194052f3f12cb2e\ne90a136270c03eebaaafd94b9f216ef6\n341b474e01e039af59139efcde1fedcb\n37fb762e57f343a7aaafd94b9f216ef6\n84bc3155bc5c95bfaaafd94b9f216ef6\nc234638891f21417ec5e3fe5c33367cf\n8a2d335efbf40060481c5c74462bb8fa\ndda10fc985eea0868c368040825ed335\n79aafe31e4f2677b1f0fdc8ac183f8b\n39b307361b650db073a425eed3ac7a0b\nef2655aecd7d8f2b6fca0ec9a39d7a9\n2a1523ee15233761d9f8911ce020a037\nabcabe3968a64d4f16abce8cb03e7794\n2cd119ce9ec61f1af63ee8a34069b7c5\n732ed918e2bca89ae6e1c83427eed339\n3428307ad66c58c53a0daf3e5400b95c\n98fa551211d228ef6a089bd459bbc1be\n3c059c7851eafc192a9eb0f146e94477\neb5f04670263d8bd075955b404dedb5\n894e186c1224c14f86590219e6a70ff0\n3027a9d3b70435416abce8cb03e7794\n69126951b42485ff88cf40718544e7cc\n854881671316e926f63ee8a34069b7c5\n95d8510258f7f919c9be4fc52f26b7f5\n1548f5fb0684d08c63155b8ebc275bd1\nb619910e7e51d8e176ad064d1c5fdd7c\n99c2ddb7e6169412cb9ff477a2867fc\n1ebb7511feac4d62381a9e1cee6d0b00\n4d2daaa14ab2f051bbfdd95a15649dec\ne5ba98879f06d013b2d3f2371f6b0762\na61488f91b2837f8473f10e6caaeca56\nb8de49dd963c0669afe1d4530f4c6e24\n97b9c8ae37e6480e1912cbd26ffcad1c\n53c118280e60df0bd2350421a9405ba\n3db560d20e40c3b835ac1a825225d411\nf55e967e8617484fe565b03326f48ebc\n657ea4181e337213fa7c23b34a0b219\n94b52d2fb55004d5ab2c2809513f396e\neb471949c658f39eca736b1d30b87e32\nafc23aacd3e166d9f513bf8e198d377a\n36d0b6beaffc68ceafe1d4530f4c6e24\n709ebbf3588849b88b55a52bfd1cce7a\n9f703e578b4b36295b74572d48ff6382\n30c2364393514c5b1c685cd768514e67\nbcf0b18a19bce6d91ad107790a9e2d51\n80bdcb908765eb9ec349f2dfac43a4cf\n3b578ddeae9eeb9ffb8de648691848ea\nb7909c8d862ac27a82c3507e44bb5d92\n963a4fdf819cc5ab3174b45571ecff3d\n18c7b5644290ce2caf0c754abe32de\n3f702ea027037a5c4d18baf048fb19eb\n6b79cfceb6f614527e7afb83f93db294\n45c88ab8a670797a134736201a79843\n8b090b8ab3172dad2d7a27ffaafaaddb\n88a476c48a4cb5e72d0c578824da8af5\n7fee48354a144b5604a60621dcde9e6\n1a48d03a977a6f0aeda0253452893d75\n2faff2861e87020a4d9558e8f1b57178\n6cc0924f1ad64faf8c2e7159929c406f\n7edb40d76dff7455c2ff7551a4114669\n95ea282dbee00d45ffe141441005acc5\naaa54ba9345b6784967bf54a1f364120\n5dc3ec70f394965368d733072f36728\nc5758de60af178a11922758510ef0672\nae6827651ce624f6f5a0534aa77bf2\n1f5e1b0661b340fc81dcc09cafd93d2e\n8f7520f908ee54e2391da6d66c78fad2\n9c65624c5d94aa29801b0db1d49ea10c\nfe7c536197065436b3030c76de18d16a\nf48659c519f422132d54e7222448a731\n9a556cde3d153c6230e527480f210909\n12097984d9c51437b84d944e8a1952a5\n6cd6f11fe76058089ed785be4fd72d3\n8c1664cc8771aa3fce95c44a0ed1e01b\n911d8dad65dd79948e35db9103756ad5\nf2e1db1997b5e2568926f812d9083f89\nc5bdc334a3df466e8e1630a4c009bdc0\n301d1c48d321d29f5d2921c9c16f3c69\n788612c1f9b2efccb1bb46d2556ba67d\n7e7f0637d6798113ddb4014f0e8d0dac\nb38361e0d9eace2fcf2b292150d31034\nbfc1822c1d6a529d531e940de4b7770d\nd43eae16d1c14f48788f2ee06c24b7b1\ndf5a4ebff89f02cc25508ed649b952cb\n56d463162ff5352cbd835ce3c63f4d10\n4c53afe560e36d8380ba2a9340bf2d77\ne4b1de221f2d66352638397725e10cf9\n72ba2195087f80d8b7e8c57d131d2ca7\n41d317b520eec9d38d3d01fa03326bb0\n9d2b7938d426633b28044fe9244db50a\n579bc3731a8a25f7c639b4cb04d4d746\nd94f5345be1d81a751a95aaa6caba1d3\n7f6031f1738d52546436916a86a90ed7\n9dee0ea5da388102e6d91d458fe44a15\nae852f7f30bfdbcdf9d73bbb584eaa42\n282293948b21262769416db9b743e50b\n5c3fe4057ef12b6886ac29addefc0f11\n5a56285761f2d6cf261c731730128248\ncc0c058e2eca523051fb05589f6b0d0e\ned91b2509171fdc1c48492b454f1615a\nf296f3a83e09de75afe1d4530f4c6e24\nb11c0c16e0eed1f4b8671dc42cc45273\n9d77d4c959974035fab60fc805223a73\n1c7ddd2735778013ce50f18f6100cef6\n8402d2237afac94a1cf6f8e565096a1e\n9676e8250cdd90307d5394224a6aa067\n2df225b8df2633c231141a7d4d06dc13\n2f1001870f90e06bc48492b454f1615a\n5a5b0e1cbb38bdb12d08a76380360b3b\n5ce9ef613933a245538f2c6e5c51cc7e\nfb8adbcf67d858fc28044fe9244db50a\n55181c34dadb4f032db09455d18fca0\ndd0817b9757b74c75d3a87a5c4dd9ce4\n7c7e5b4fa56d8ed654b40bc735c6fdf6\ndb432e9f280ffb1e3dd4bdc1dbab98bd\ne46d79a5d356436f23a5d95daeb50835\n88c884dd867d221984ae8a5736280c\n957a686c3c9f956a3d982653fc5fd75b\nd05aa55f9e5b4d10afe1d4530f4c6e24\nbc9c588a00ae179fa2645d665a7d8fa\n7c768295f93290391d0ca8334e014176\n19c25429d34ce9748c844a5e3a5e1a93\nc30bf6d1ae428497c7f3070d3c7b9f30\nf1b97d671bb93ad928044fe9244db50a\n30045ee0751d6ee88b3ab49d2e0e41ab\nb4d258dc5a12f9f7ade7f700b19bcf4a\n56dc27e4374cf87132eaaf3b7c9989f6\n501ac8493044eff04d44f5db04bf14b8\n781b45d3eb625148248a78e10a40d8eb\ndc8765720d8d3828b3cf5236f651a8e6\nc0aeb1f7a3fa4e2aea914417bf582f8a\nc9b49f7b355528e5632dc979097a3ec0\n3586f47af775e5158aa8c3cca6f13406\n96ca20dd7caff0bb851f021b9ed69c58\nff564f7ec327ed83391a2a133df993ee\nd5c046451e5bd6826a9c18480b4632cb\ne0978173fcfc5203510556e7c3123591\n36b211593bfa7c2f7f33a9b0659de0d7\ne17065d11b36ab37f9d73bbb584eaa42\nac7e674eb67488dcafe1d4530f4c6e24\ne2e9b87d7aba1dfb28044fe9244db50a\nca93e4d0ca75ab1bafe1d4530f4c6e24\na3e7603c0d9ef56280e74058ee862f05\na5d32daf96820ca5f63ee8a34069b7c5\n982448cbcbe56bb78f89cf8d2f8a85b0\n4ef6af15bcc78650bedced414fad522f\n45186c083231f2207b5338996083748c\nba9097cf9c836c0f2a9eb0f146e94477\n498e4295b3aeca9fefddc097534e4553\nd41c66c7b1ff1f57979ef391885ee5d2\n20ece5093ff8da0bbda72093f9b5aa73\nc0b9eb823b9fff9a2764cfba57a5de73\n1e17510abe8f98bea697d949e28d773c\n1dc757e77f3cfad0253c03b7df20edd5\n95a6e03656bdff26f69bc9777f9c3c39\nbaa1e44e6e086c233e320a6703976361\nb40c9e44350f95aa1b9234e4ab67a3eb\n1cf17a1e1841d10c9e6a3356df3f3d9a\nc7205c6c657daed1ecabc5c9d5c21b7f\nb6525d69681e4f56813498cc26c2aee\na9a86444fd7402cac69ef68baeaf5d49\n325ce7d1af0e0621221f497d46720397\n10f158d2f43926ac80360680c1602c7d\n5e236dc6f4381ed37af61b3a12bec0aa\nc558c64b6b97a529658e57fd275f6bed\n7ff4c1fdfd0e9bc7b99adc532ba20916\n100715345ee54d7ae38b52b4ee9d36a3\na88c4427e1f0e871d7755e7baabe8a6f\n5a9cb2d24a3591aa27fda8a7465c0e0b\n673ee096916a5440a96c7d9d13cfe9b4\n12a445770f7d6f2b70a43c2d978e502e\nec5c003421112630f53148c8cdf6fc9b\nf9b9b12c6061d32ab910dc0e33e50abd\nbaa424fcf0badeedd485372bb746f3c7\n1b85c850cb4b93a6e9415adaaf77fdbf\nd67f5ba8950be214aa69dfdc5532bb13\n1254c6ad2b420879d7622e6da48b19e5\n17e146cb10c72fcfa2b80c598d71bf14\n64ea044763ab4d742a9eb0f146e94477\nbfae73d79c066a1fcc0c0cae12126488\n432efbe7784cba3ba65b1575070b0b4a\n4eb276926f620fa831354a729b0d6b5c\n9c7cbe5b36b7ae9216abce8cb03e7794\nce8dae15de55bc57ec96068985a57399\n45e9059c3ac5825661c6c61410fc904b\n96905400f6122662473f10e6caaeca56\n4dca3760ae9748b6b0aa56928723eca5\nfe61764c0552c837d76439fb95cdd2ed\n7483c242d7feb3a5b9da62c54efcb32b\n9f610a7b0be81dfa3a0daf3e5400b95c\n7c72e179b251171d4d1780ed2b3fe073\n6f7cc4940eee83e57bcd1993e004117a\n536477e0842580e0c3c4805a61e06841\nff267b1a6d986426c6df82b90873315e\n1836f75baa094cd9372ca62e6806c5c3\n2181653ec5313196d2c8600344d8bfab\ncd24768b45ef5efcb1bb46d2556ba67d\n2307ced410b955a8cf1e58caa15acb49\nffb4d9920493f1e5c29076ad43b687b5\nbf493207165e9359492225f5fc55e666\n99f49d11dad8ee25e517b5f5894c76d9\n51b8011a2eaaed85cde8c99e4b182f9\n33e897abe9e7df46a9aa61915b4add2d\n3df6230b2382ec12473f10e6caaeca56\n53502c15c30d06496e4e9b7d32a4f90d\n19cd3489f05d203f9ed410a010efa019\n862a345b6328d641ef3ecc8551d2c1fa\n5503658520e08b519b58a6529594c9d\n913b747502e92aa34d1780ed2b3fe073\n609f09c6ce74d6c44c06afea25f8c085\n4eb9dbe42616e407b112e5ac235c21b7\n9aaeb0852a4cca28471ac7b6a0462075\nc6eebcd03aaa9060e7a6de039856f1eb\n28151fb21f5a3c94887b6e2409779132\nf76b9a9455b20cd875a45359f7e88a3d\na74409e07d1a9e1a2925dcb663974b0\na4548c56bea7f927ad02214e86fd5091\n879121a1bb623324eb79f1a2fb4e869b\n9c27cdc4feb2fa5d4244558fce818712\nb963de806d271377935310097e7751\n12796524ffbadb755400f0dc3171dfcd\ndadcc1200b43a12be8b7f81712644c1e\nb4f06573afbb3c1d9a997e8df355a668\nd28d00d6488ad1a78079d5a13e411210\n7f2acaeb45b72793ce6183244062e7c\n9031339141bad8608f89f9805dc3c90e\n7121e0332f0c2e0551a95aaa6caba1d3\n3af1559045965b6f1f1bf16cb0b58c6d\n783bafaa18e8e5a0bda72093f9b5aa73\n4b339f645507508aa83aa2c84a424148\nced46f74119cdb36a7fc8832cd5fa42b\n51062ec9b0dadf971c65421fe734e7bc\nf9e91a22776f3d8be9415adaaf77fdbf\nb15c72a5ce982b9ddc90bfc1d450ece8\n9fe68c848c1385a2a9733fa2ac6b95bc\n685f2b388b018ab78cab9eeff9aeaee2\nf73858d58e6371f7d76439fb95cdd2ed\n1f0d149b320aa4faafe1d4530f4c6e24\n3587079f3146273faf8b8a34d449f60b\nef8e257ca685d594473f10e6caaeca56\nfd5a6dd153a455bdb112e5ac235c21b7\n84ffded0ab4b499588ed7b6315c3b4a\n94c75ba9c6747f1bb491214a0cc2380\n83f205b7de8e65e517f9d94e6661a9ab\n5c29bf38845b4ecbea0f3fb9c87b9c6a\nc38cba0ec9d1a74f38f3979791e64082\nec0555ccba700387b45e6d6d9af21f30\n616279642d73621812f039db97ce1ef\nabda34ccba30a7dd80360680c1602c7d\n7ccdf7bc2af0b068e43ab89cb5563740\n885207d4e9d28f317bcd1993e004117a\n1a87a329781b15763820d8f180caa23a\n1284876ac0e2371aa4dbb766064f8bbf\nd838c8cb52c92df3b112e5ac235c21b7\nc849164176944e08e39b6a0d304ab967\n712826b933a6818c7e003129afd0cbfe\nc4d49c0625be70c417da7541f1b2fa76\n8aa1b368270797bdca92a4cdad802b45\n719487aa97fd9af513345bcbe0ee623d\na5c969e3401228d2c92e66330b5ca173\ne297de736f8f0b3f67738c2420579616\nfeefd0978ed8e256bc050b2495b2b4ff\n1ca64f9d6e008fb35fcb05674109534a\n641e43fc49e754edbcfa8eb5a2d224d7\n5ff285283e8ec610434fdb742d7e0cea\n491df319c52dccdafb5c1b0f759e2bc1\nba1b8956b1d84856369912a1ddf80ef7\n8b7b6c2a5c664ca6efe5f291bc2f5fd0\n5523a6798194043146810e868f84ab51\ne0b9bb886c578be86e9dcc2d1ea2784d\nfa1b3bcdbda309a439cc19d48e3f4f5\n312da43baca104262c98dffdf7adc4e3\n1be81460e620aea65cde8c99e4b182f9\n82d37fceb984256bf200a72c9245aee7\n1724ae84377e0b9ba6c2c95b41a5446d\n4b94cdc9c703d00fef3ecc8551d2c1fa\n287f4c8f87099957473f10e6caaeca56\n1213742aa7815fd0e23d60a1b706b44f\n2d730665526ee755a134736201a79843\nf45022f442368e60c038d3a33427a80e\ne3181dcc6b60432f658e57fd275f6bed\n10d388f6f578e4e8851f021b9ed69c58\n57ad55aefd13445c94a5ecac47d28f09\n7d4c3d9795570647657231d17e42d06f\ncf698011f90ac05f253c03b7df20edd5\n923007b377bb1cab473f10e6caaeca56\nb098f1db2f190a71d61b6a34f3fd808c\n8fc220461ea512f3abeba927b56dd398\n525c1f2526cf22be5909c35c7b6459c6\n9c686d6ec470f280473f10e6caaeca56\naee2d4cae2954ffde51212f97a7d9486\nd9034b15c7f295551a46c391b387480b\n6482b8e8c8516a3b473f10e6caaeca56\ne19292592dd67f1f5400f0dc3171dfcd\n6ee6fa5c8d664f1349314ffcec1f2f7f\n626738526152dd13d76439fb95cdd2ed\nf9eaaf5abb238c22851f021b9ed69c58\n348fe55c1976b64c45aa033a20004998\n4c427f14f21f128ffa38d2670ab5169c\na88baf98bc73649fdd61bedeefabbeb6\n187b002f0af1ab5a473f10e6caaeca56\n53b6f9eb4337276473f10e6caaeca56\ndb79ceb1bf94fd81851f021b9ed69c58\nb52486fac51d119110c18c6084937a7\nfa37419c844e77076489e70b7c61a054\n5d2e0f8fa5d5bc1496bb71fec38e082d\n65b9b2df0985821463e6a626b8b4d07a\n107a17c6f2dd9c488924120dfad0e290\n3844e637bc560e6298a55e96872d31f\n2f839e1e2072a11be55e3ad998a1ecb4\nea529cacc239f82989a8ac0e4c77f4d2\nb36c9481f71c2428ca92a4cdad802b45\n2e5dbf98157a53a55cde8c99e4b182f9\n73a58e58e26e7e20e55e3ad998a1ecb4\n7d343bbf3265164fb2d2900ee0ae7e0\ndc5c1b1d9bf826b8851f021b9ed69c58\na52f704da0d3c947ca92a4cdad802b45\n7a228c811e7e18ad18e1879dc4ad8784\nd9cfad911b26b2ae5690f18c88ad5b9e\n3ea856c52fbb213fe151fba1241f1efa\nbe28d4b681ab04ecca92a4cdad802b45\n80642f8965edbc51ba01f2d8d5d9ff0\n59a8ea75a9c70f51a0e1f1086c88ba71\n709d6b2cf528e10296d1882ee61d6c58\n21e028eacc690c9de13f97dcb961e16\n75221b7668e145b549415f1fb7067088\n6e25d6cd4b112d0654ed192f2298faac\nf044724a6fb07ec73b294ac02412e874\na0ba66028d22cef6975be43df8325f3d\n38ddc240001c3bd147a34c33abd32f7e\ncd5223d35c9cf611ea7efa739175072\n18a9275b78be4b9ec6d3267fc5334296\n631aae18861692042026875442db8f4d\nf7cca46c4c8efdc6fa5eb13ccb8cd2c6\n300f9c418d6ec9f6473f10e6caaeca56\nd9ee9de8527d309cc0c0cae12126488\n30776fb35aa99150ee3dd0c47654345b\n95d36965fc6d1f7de2d4c157e5bf1dde\n1b1a7af332f8f154487edd538b3d83f6\nbeec9297d087a1677e19c609c6e24294\n8e0572912893a657c697c8c1c6e09e0\n664473a5493912f4650bba674124a73b\n204b1b3e35df174859fcf77704d7f1e8\nd98b63a9e35f50b46a835a8530f31f70\n9901e5d7520df242c61cbe35764dfac1\nf1f78226ed08465f801b0db1d49ea10c\n395d86efa3a1a55a49ddf31673a8d73d\n9a3bf26f461a1973b8013668e30e23b0\nc54586fc90acb4d0a46498323e7a9af5\nd6b7bb6c6203fd9590f0aa5ae25c9b7e\n41bd68dd23107cc4b0aa56928723eca5\n92c4d4bcb122509aafe1d4530f4c6e24\ne0bf76446d320aa9aa69dfdc5532bb13\nd0ea101dad5bc464a134736201a79843\ne7f40f595169f1b44a383db4764d5432\nd8879578d668b458cf899c77ac8ff2f4\nfd98badd65df71f5abfee5fef2dd81c8\nc34ef43ef8ccc3a701a8678a1e8d9e5\n692a66739b9ed5e14c88b7369bd6883d\nc4d4de90ce7839107dcee93b87532f65\n2696ef55dc264b8cbba9b483d5f3874e\n8549c4948c7285f438acd89c0735f4f7\n3b3a3b0d9082236cba77eb053523da42\n3ba5bce1b29f0be725f689444c7effe2\n6b896508bdd231887c3c6f82a395b347\n7e5b55d43322de49295eb8d2a941a3e1\n5cf1f82c6fd31a73e0445fc6d980dd5c\n1c3c8952b92d567e61c6c61410fc904b\nafd73137221d690761c6c61410fc904b\n8606a6353a2c0f7a453660f3d68cae6e\na3e1cb03e1af7c6161c6c61410fc904b\n7323fab0a83b9598f11a194d0ae1bf8\n69e99923c3cbcbcca9fe1734a6086750\nebbbc8673928ad37308fb27494afe372\nc975716963b72b72236804c5ee26a2ab\n402d1624e1c28422383a5be3771c595c\n50840e502ec2a45aafe1d4530f4c6e24\nccccf7342390d139ff1370452e3a0154\n4fa9b14789c8af5e3781057335c8a2e8\n17c08a4bf8224f47473f10e6caaeca56\n1c86d4441f5f38d552c4c70ef22e33be\n9e1e61f67c4a41e09783918b4b55c30a\n6e5340cfe979238998ff545c3abe3e44\nb51d8c15d8f603c350937622ac92802\nc6709eb00a557c9785af3668c1cb30b\n687253f72301b508c9c0a46cc4ca6589\nc179735c4d9f65d7d1521952154c90ff\n6e1d942233917ae996c458818630d123\n7b2dcc7c4c879e9116f7ad0d1093bd39\n596bbe4864580ded5833b7f8c91b5b48\n3c97b002e510db11e23d60a1b706b44f\n4c36e3b0210fb9e899232e04f9a28249\n8c04413559b71fccbda72093f9b5aa73\nf1a20b5b20366d5378df335b5e4f64d1\n368c8d09c88404999be54f79e28fa49d\n6b2766e55b6de7779d34b5c385de0e34\n2ef03b91692d6dae5828087fef11ba9b\n43be650d6fd7468fd9952f9e00a53f0e\n8bf8a7694267756e3ab3dfa44f5fab01\nc3d23ea4f3d1e18180360680c1602c7d\nf5a54f0cf2b575fa9fe1734a6086750\na5047d31a855ffd1f339a7f0f377393e\n51e74bc165f2cb21e2a6bd02594b7cd0\n57e16ac1b026db4e350d065ac10959e0\n709774861793cca453da660a6567c5ff\nb47070a91102db1abe40bb45ea25a041\n1c7a2752e1d170e099399ee63318a21b\n3587008282540864673ddeabdcc8c6e\nfff64da26715b520e40201fea1ad0f1\n6c28f87aebb33c294386e619c2d3f83e\n269676546548fba38e271c56304de147\n4ac021653126a29e98618a1ba17f086b\n97119a85ec049e1df59757e1209f2c7\nef6b9ea0fbba6af828ea89475d3a158d\n7e6da78c8dde0479f30da7304391ba9f\n5b1c430ced749ac3897e805df74453bf\n654bf6800566c8ed95b02c654da6c998\nb25bd03ac3b1ce39d5238b9ecc7822b0\na8ee57eddfe30b35553fca48ce732862\n445185842d893b6978fe949fc1419876\n71ea237c598aad1becf71e2e014ff6f\n5ef8eeb5ba5d2c6ff6efcf1cf084a608\n7076464b3733aa38d2c2bfa672ed621f\n6c7ed2d306fc7cfa4ccaa6b556a5ccc5\n4ebf1a8cbbd4a05228044fe9244db50a\n147889b73fa491d82e877e82c90c24d\nb4715a33fe6d1bb7f63ee8a34069b7c5\ncce33c56b1c83237c7b48e36e31209b9\ncd85df142f1999e5f38ed4497f2c53c\n3f6e9baa4657276f97df6383472cc5b6\n1e6ba139bec5e49dd9f9c2955f462abf\nc5ef2eaae2b2d8673cd3add5aad1c863\n90c4864afa329be1fac5c51be36c9fa6\n39e10c5d24fee4a6311f5d9a1681aa3b\nbe348430ab5fa5cfb1bb46d2556ba67d\ne915bd270032eb0cafb617f7e8ac7576\nd2b847baf4a6d1a5ff1370452e3a0154\n2cc4573bb9441493d12568d09c2fba02\n6c5a34971e2bd518d571d7357468d0a2\n6782126a676ca77d7a04ba129c539b64\nb7707e9f69d6c0ec6c23793d085f1519\nfe1ec9b9ff75e947d56a18f240de5e54\n513e2ad82336f56bc0e3666c7d0ec7d0\nb2f3ab0b028eaabe443ea0e3853eed5d\nb40436b4639e80b8d61b6a34f3fd808c\n8a5b15ec0ed8e9aaba44b506f43666fc\nc5b67d87b22583dc13ca2951bd3ea3d2\n8c346443d2feeaf916abce8cb03e7794\n57a2d812153fa225c740046119b36696\n9757fd5be93ee0fc82b157e7120744ea\n56a3f3d118f350a516abce8cb03e7794\na08b151ac5254df184bf231ea6363fab\nefd87861810e35ca921cb81cb1632a5e\ndbe713c83afe559316abce8cb03e7794\n36ba5d46f034ec58236804c5ee26a2ab\n2e8c4fd40a1be2fa5f38ed4497f2c53c\n51c957fc4a2690ea7af49dac67ce8f\n2e5ab446d0767e1aa6dd909dc6fc8d4\n19245fb8ee79038fcd059a326bfe20ef\n365af82203c96fbca92a4cdad802b45\n4fea9b67188b830f6a2345809e2bb169\n7f7bec6423847a583002e98d41e915cd\n8fe901ed95e115ed70a5d1d8432b5405\n63428e5fb6fb627aea5698f3cf7b2f4b\n3dddc113e114b64a63b716db3275cef8\n47fcc0e1aee36584b1bb46d2556ba67d\n9cd875a215c8806731b76be6623555e0\n846e6c678f53bf422e877e82c90c24d\n4c8280d581df259716abce8cb03e7794\n2a554a704a27618ea37f3fc191551700\n18e16129375e723e6f8f8c736fcc7940\n371c5e74c66d22d451973ec97171fea3\n7b8bcc3cafd34efa8b7227eb0fb9adaf\n86d5ba5d14672ae7becf71e2e014ff6f\nbb1afdd76bd9555abf3af70ab74680f8\n36d0591781587d9fb1bb46d2556ba67d\n8feac5dae8852d2e175f8ba1fccc4d0a\n88aae5646dcad7062a9eb0f146e94477\n5e93dfb8e4d59a0630714334794526d4\n8680d89294724815d9976212be28e1b\n4d52395f788af7e5a413908c0e169330\nbc803cea33d77530a5038167d6f08983\n4c3fe644e76bb94fb3cf5236f651a8e6\n5caad0d7bc6524531e51722eeef6dfef\n48071634bdeb66e271a126804ae24042\n7cdfcbaec700fb98d230ef808f13e7a9\nf3dc4ff3cecb4eaf8ee29572addd5275\n2a5df4956f694efe829e2483ba27ce0a\n2928f77d711bf46eaa69dfdc5532bb13\n6710c87e34056a29aa69dfdc5532bb13\nb4d7ad07dbcefefaafe1d4530f4c6e24\nca5236a5d06b9bb13fcfdd465734daf8\ne92786612a9d60455dca6305fb9f97ca\n413fcc9afd53136a16abce8cb03e7794\nc92ef17bef6471f72a9eb0f146e94477\n215da971831129bf63ee8a34069b7c5\n8109ca22dd6b5772bb54d0b0194b4764\n74b4d0c4ba72eba8473f10e6caaeca56\n39957ba700c2461d6b6786771012aae1\n8e7475bb6c54d39f398bc3e9fa82bf3\n9aca55eb91a9b348ab7ba9bb57593f51\n1736b8494abf38ba4eb766e5a46fceab\n633dd9755319ce369dfd5136ef0f2af\ne333b5c405fbbb98457cfef9186c20c7\ne84eb770bb6cedf3bda733a39f84326d\naebaeaf0dfeb9fbe13ded1857c15b5b6\n7c35cd27ae8d673bb1bb46d2556ba67d\n11e5b7d67058e1d75f67208653687b70\n6c1568ee8807fb73aa69dfdc5532bb13\n97970b4b0f351f5a9697635485e4aab7\nc4a2e92c4b79ef3140273d3a78e6b502\n330a8f1243e7bf8b2ca8bf2993ca245b\na7065cc33270e551a3049d0dcf503cdf\nd849e0fee026c98aeece2324fbbe339\n114b662c64caba81bb07f8c2248e54bc\nc2467fec08734fc81e1473be174fcabe\naf08f280395cd31719f6a4bcc93433\n4f2ef861d32a6f0b45594023db7cd10b\n54dfce0866b65c4778254b98f5b75eb\naebd98c5d7e8150b709ce7955adef61b\n6188f5bafcd88523215d73d375c978d5\n6be5a91bdd709a42634d30cd3ecea7e5\nc6191031c1d685d580360680c1602c7d\na53f8a03871fd1d1c4e15ee0eb85afd9\n86c31c04c436f5932e877e82c90c24d\naaa31209c049647d190d02a746694d92\n47638c9573ee7ba3d8a1849b0098a5e7\n7cfd1dad90b79cadfe2e8ee5c450bb81\n7197ec7776d4e23f10a4b3894aadc04\n3b800720bd8d41657810f4dc287137e0\n558404e6c17c58997302a5e36ce363de\n163786646ae2578749a5fc144a874235\n7ed6fdece737f0118bb11dbc05ffaa74\nb481b928be9f2bb0e71f141b16973142\n79f4f7378074d3478e42313717d27982\n620e8aac415e9805ea752ba39dde460\n8bd0d26352ea9de9becf71e2e014ff6f\n1c1bd2dcbb13aa5a6b652ed61c4ad126\n44eb9496921072b6e5f9082491d52810\n647faf34f7fdb50c16abce8cb03e7794\n4ceeed48d1a48d4ce09e4fc69d1a2697\n47748464909a5af473f10e6caaeca56\nc7c3736ad5f3b252e56947f054952694\n3bf15c48eb9110d16abce8cb03e7794\n7da7ba42dbd0a0f9be40bb45ea25a041\n933b88ebf7eff4c095551e0d9e50cb0d\n6cbadb3a39216f12ac6dec6f3725ccf\nb67d3833e6991de8dd141480e2c154d3\n9167cb083368cc6be3d59d595daeefd7\n6d61759c3f8636f816abce8cb03e7794\n5a728c7371f8fa3f1e0401312b984eca\n2a07432c2860b54becf71e2e014ff6f\n780d41c78c60794a6a2345809e2bb169\n6208166202d795a2272523adb0c9ecd0\n93f298a78be6883916abce8cb03e7794\n470fc68779da0f923d68b6d025852738\n6df1aadb0dbc696cf568f785e33a81d8\n330645ba272910524376d2685f42f96f\nd4d7d596cf08754e2dfac2620a0cf07b\n4244e025c4a5de67ad411f846a866947\n3335fb305afa0494d3c820a40c219fa9\n380e0c29c9ea00e9ce158c6cc0278580\n7bce50c36d8166608e35db9103756ad5\n6c85063bf5e983a3d14b144052416695\nbc9cd53b74743dcc8772afa45900d07f\n679a25d96d21cae4a7feb903e89a6153\n6ee9f222a540a905e4b68d3b17c43658\n4212ae43231ba858b1bb46d2556ba67d\n2fcec17ab09a42782a9eb0f146e94477\nf8857237df1717e3aa562f24645e326\ne0762bd3cd381408bda72093f9b5aa73\n67e1b04f88c88a5c6d07c55cf995503e\n87918f9d328b535befe5f291bc2f5fd0\ned799c077fdf7dc47e5246097b57ccd\n2668f2d9b8a2daad95551e0d9e50cb0d\n6355bc126ff0c2d9ef923467520bd6ef\n7337679ad4bb8f4016abce8cb03e7794\nc83458f94ae8752f63ee8a34069b7c5\n82fdfc4ecc49072c3ffe0e5069bf1eb5\n6ee903e016ebbd66921cb81cb1632a5e\nb811c3c5ac8eeeb2f63ee8a34069b7c5\n651497ec47e9d1182e877e82c90c24d\n239783ded35d9a4e9f40394aed156c70\n8fdc090f498ddb39f63ee8a34069b7c5\nd060adfab4c02ec616abce8cb03e7794\n868af17aaa07b069bda72093f9b5aa73\nf655d1adac9c96d53b05c2ad25b4380f\n828c32ae594a5409b1bb46d2556ba67d\nfe2e5f0993bbd4726fadd0e0ad926818\n910ba017e13a2220473f10e6caaeca56\nfd3c767468a825ba860800e6696b8284\n3462d5da3654b52d4a47c09276b7f6b1\n42ad4b456bb964e1d57c4849288ce494\n70d46fce66801e0f16abce8cb03e7794\n508b9f9da70d70dc809a9c98ca4d300a\ncf3a2894431c55f43b5ec9bc4ed9097\nea954837920f94e6f58ff156bb8fae0c\n165aec174bb93968a114c8c036e29a08\nd862b3766583ace6c2aae5fbcd555ab4\n707c8930b987b1f3a6c0381be0943b0e\nc3cfbe068adab0579583ff717105f70d\n2d4ccc24a821360f8acb0ff76f4aec7d\n89431ed41e43bbc816abce8cb03e7794\na2f658d639f46d95c6d2c2010c35d0b9\n1bb6b1ff46096f592dfac2620a0cf07b\ne2a4635c392e750abecf71e2e014ff6f\n28009514ec0e2b4ebda733a39f84326d\n5f148a8b824ed7e72a9eb0f146e94477\n3261855155346979473f10e6caaeca56\n59c39dc0b47f338c25a535f4350429ed\neebbce8b77bdb53c82382fde2cafeb9\n3302dbdd74d978eeb1bb46d2556ba67d\nca9a4a00209632808acb0ff76f4aec7d\n6d03ff05596201e6d8df13fb69e08d76\nd157bd15ee2d92b0bda733a39f84326d\nb370e4c0d05df8eaf48062edccab3fbd\n5ac9d85db6c0d396249cfd7cdcfe814e\nca6baf5768bc105ace827f20895c88ad\nc0b2a4cec94f10436f0bd9fb2f72f93d\ne0a8ac5ece3222ea16abce8cb03e7794\ndab0cd8adac9404780575af49bfeda6\n46befc634315de3f1ccbd9e5bb82dd04\n5f742b43bd5884c6a352068a7fd7afee\nd1f100f660eae4548acb0ff76f4aec7d\nbe7fe5cfda34ba052e877e82c90c24d\n8ffc484a850350f916abce8cb03e7794\n11b09de6631b3b3ad997cda1a938a10d\na26b62fa78e9d6e016abce8cb03e7794\n53a031dd120e81dc3aa562f24645e326\n4d8a4808e9bf605b11647ffa4306609\n2e0051c6acf7798d2c581ef6c05d52ce\n3339caa48a18e4c358db0ef36af1d3c5\n9232d8834704e5f9dd141480e2c154d3\n572edac8bce600c56f2b832ee4c8c232\n5e87b04efd58cc8922412d2a728de1d5\n3a0c0927ed24090355f11dda63ed3832\n398a791990b106dda5a4c80d90b70728\nc8849755b29ad49b9af07fbc15eb8427\n60aadbf4a0a42360ab62a01524fcb1ec\n38b2bb3bf698f38ac2920de4c5efc2ee\n605be4facdcdfb194dcb1867559ba976\nf578a26ffc6771b21767453ad70570c6\n7cba7b4a6e106bfa2bc5065d4094ca0a\n7f4dbefeaeda54628ccbb4eb8965b05\n2468ceab72b4be041d9cc9d194c8533\nb812523dddd4a34a473f10e6caaeca56\n24c0a08cf0f7421d979ef391885ee5d2\n996354bbe7baa2b2f24437126510c3c7\n7f0f750d6ca959b6ac5eab1f4e9b0f1a\nd6390f62d9e036efb1bb46d2556ba67d\n45953aa831508fb51e0d92ae9d1b10cb\n952160c39258af7616abce8cb03e7794\n4e7d91a6e2300d88a3049d0dcf503cdf\nc09c9e2d85df1abf6a3f171e9d98eb02\ne899ede8bbc146278746a6bea8ba48d\n6d296f7fae3f7f34981c1fca8c617850\n28d7a23b2311b1029dce0c74b747947\n96c84869cb3c6657e49167a1ad5be1be\ne67e3e3a21393927df59757e1209f2c7\n18aad9d102afbca57ba2273581c30cb\n303bbfd0c5862496ec8ca19d7516cb42\n69986baabb9cfdd1b1bb46d2556ba67d\n12d7c4013415ea147f5b0cb87a91de52\n791e45f93e9ba58071a126804ae24042\n6aef84dbaa69dfd8becf71e2e014ff6f\n37954fb8bb9a7e351076d1567fc9aa51\n7a2cb890271a361799b92ac6181b3e5e\n19f52dd4592c3fb5531e940de4b7770d\n3500ccddade6926233307cdc293a210c\nf374adc8c35b9a0b3eb5f91920765edb\n44108b58784ea6a1b5c12c7484d0ec31\n949f6240e1a760992dc53e2d2dfd58d0\nc12a701bbdcb3df7473f10e6caaeca56\nf4822aa5b83b28cb35840786ceee5cd2\n8f8bd59f17f122a163739f01ec1d22b0\n45d94dee6634efd516abce8cb03e7794\n8df7178ab0f02bd7a795ba688a0bfdb4\n6749e5a1458ead5abda733a39f84326d\naebcf0140cd6206ed6dec0e17c3e2971\n2854a948ff81145d2d7d789814cae761\ndd84236f0ef27765a134736201a79843\na55f4932b0f8a212402257734064a917\n3ada93d04b72256df63ee8a34069b7c5\n15c3b923c85d22796d8b9531f93cc8de\n98a1a92a94a025aed28935fb3c99dc7e\n363ddd7ab72bd485be40bb45ea25a041\n33ce4837f282443258c27e607f6e2d4c\n3671b83524f48dc5801b0db1d49ea10c\ncded640727157c18c6142312719d87cf\n51048ab1eeca5e8dee79ed7216eaef91\n3776e4d1e2587fd3253c03b7df20edd5\nec18723333333a6e2fb4628a7a8b337f\ne738466fb6cc90530714334794526d4\n7e12d83df581424ee61b9ff60b1be412\n63e0df089d6c1442f3aed64053e21b3c\na8ab20351c2e7542912749d867981a40\n9171272d0e357c40435b5ce06ecf3e86\n504e8dbdccd8beea7e488037e176d2f0\n233ac4ee75d1ff0c6d111cf7e70d924e\nb6f76fc67324911616abce8cb03e7794\n2490227846d06e5a2387c64d55d0b4e5\na015b428cf628af3522dcdfaad316d22\n7cb387de84bfd2f5fcf949f5ffa7ff6\n57e91b50c5420cbb4628d74a95bb7fe\nc033fb1c91079242ed3696d854eee1ec\n5ad82d706e57607ce4b68d3b17c43658\n29b558ed31fcbb48a2cf64b275615f0b\n28093822cc7fe487ed3696d854eee1ec\n7272b7e028737097f200a72c9245aee7\nb1ad30609c2fa8a2d63b3823877bfa70\nbc36588d4095dc0975c67b3b1e763fcf\nd01a821c8b2c43cea0061ac8d975ad8\nef966d85be54c98ab002e5b0265e7e9d\n706671ef8c7b5e28a6c2c95b41a5446d\nd153b871182b8b3df6aa1413413c923\nf2b28cd6e6eaa9679393793f9cf3dbea\ne6ec389325de7ae5becf71e2e014ff6f\n385d82108ff7ee1be2720e351c87b6fe\n606c0050a2ed4e19d834dead2eb68d68\n932363431a35b189898b91227342b00c\nde58645e0e00e6be73905da0c7336cf4\n777365016f4b7febb623d8d239f6c6ae\na7f8cb46717528edace5721ccacba16\n3905d1dcfd5e702333d445f141c62a67\nf4532b1f55191eb7b9ad5039d820c924\nf1bcdbe16690a985ca92a4cdad802b45\ne1a694f11100ace082d20fd7268a10a\n8e9f7699e30cdd8c247a5be450795511\n171c20ce4de5ee8730f65ce13e7c1910\nab8b6d39057d2f6cc86779a6788ad464\n1c53bc6a3992b0843677ee89898ae463\n6fd6bb6ccf11968c5242705df8faa8e5\n3a6a1feb338c884a8079d5a13e411210\nad00611d36e535f266d77f2d6fcbca33\n347ffb0b0761c6ba8514fc08fc0d2ea6\n8058b048fcc7730ffaf9aa0fdafb5e7c\n4f9db143aa853e69b207e9cc82f7c858\n6979a814a64f6da8becf71e2e014ff6f\n1f5a6d3c74f32053b6163196882ac0ca\n1f604bfb8fb95171ac94768c3754c895\n523673c5b3c12ffcf2c89d2df097ef4\ne8a8d47957d15bbf8079d5a13e411210\n34080e679c1ae08aca92a4cdad802b45\ncf4c819d9deb6533108499aad0a89b28\n6f61af12304781b1297cfecdd0d5b071\ne4d1edc4cda4a6445fb81d6394b59c19\ne5da1a1fa675c704a2edbcbb0bd69bcb\n713b7eaeea5580af1f71b98bc1f8bb06\n3a98adfdc309cca9cec94038e2141ac1\n6d79f2cde0340b5fbecf71e2e014ff6f\n83afcd8ba9cf63cba7094e4ecf18eecd\nb10794a03c59e42d32a4e3dd3a89488f\n60066a5369f1354e631a23fef2ba638b\nb059f09a0b26d4b5cfc78902445ccff8\n3ffd5155eaeab76bb17445a1c29f6d34\nd255a6f670c3ec18d12568d09c2fba02\n3ed25ebb78e48a84ca92a4cdad802b45\n1d700f9bfc275cd23681114f72c10d56\n2fceea2bce91439ca26fdd1a1e470de9\n7825218160564f137039b7b9eba2e0f7\nb8d3a079edbc04fe51a95aaa6caba1d3\n48aaa1fcf8da645c68925c742a212a74\ne4c4167bc6b8e77dccdeba95a15fc6d1\n1100f9eac1ca426a3dc399576707b67\n9dd02330c7c4ec88ec455839e63f83dc\n5fb19e8ecfe42bd170bc1eaaf2d60138\n999007a25b5f3db3d92073757fe1175e\n52c0adae9be5dba12e877e82c90c24d\n642b4f6a2ce0e388284432ce2f42f498\n4de61edaa8e41c3a53c5346b68828e77\n18927999d0c5a9687ba2618ede0d52ff\ne625eb804f2fb6caa26598ab726b7540\n77065a7bc997bae82d5feb260eec50c\n292ade37cba7f109e5eb989e223f7e7e\n1dbb24dedcb23beab1bb46d2556ba67d\n7e7e5752ce2aebd46034a921cc85e098\nb2b2f4952e4068d955fe55d6e406ecd4\n87a7ebcb0dc2285d77471d13a466f5f7\ne8c48b9ed916910ec800bf2938639a70\ncf176e853cc739bbca92a4cdad802b45\n83c21f0f383524e9bdd7ac383509f04c\n389cc4b8b1e28d1770905bc56bbeab9f\n9a92ea1009f6b5127b5d9dbd93af5e1a\n6b7f573997bc6f8c953536e7c905b301\n1bef8891f35535ac2e877e82c90c24d\n6f1c766eeafc7740e5424e4e99c9576\n4b7f9ec47ede386222f104fd8dca95f6\ncf88ac755b07beb2becf71e2e014ff6f\nec9f938ad52f98abbda72093f9b5aa73\n5d62b276cf9582e2473f10e6caaeca56\ndd0b595b15a7203e185ce5d54f27f6b9\naa9cb692a7ca1070b2d2900ee0ae7e0\n6fd9b065c795d915473f10e6caaeca56\n3870022ab97149605697f65a2d559457\nb18e5aaa86cd8716a7fd25564c2e888e\ncadd53fdbf69727721f6e2b0f75cf9c4\n1f167c74bca9ec83622a8f038ee88042\n72ad8ebcd7dfbc87368990af61c704f7\n18d2959d79af059e476502dcb0dc5465\n22c0b90fbda00bb9a3a61aa922ccc66\n58a500adc776ffd5a9655fa3e976d18a\n43a723b6845f6f90b1eebe42821a51d7\na07227a41b866d26473f10e6caaeca56\n5db9380876853a6eb690ce0453406d16\n6208c5fcc94fb6ddafec9b6a5ecfd79d\n27f7336ff6ace6d460c94cf1a48e53cb\n1aef0af3cdafb118c6a40bdf315062da\nfe8850296592f2b16abce8cb03e7794\n3fefe1e60f5683db247a5be450795511\nb47d993a5e2dd15e3a3aa1d2d3319a4\n8c835911f332db4ca92a4cdad802b45\nedc9a70958a17433b1bb46d2556ba67d\n5721c147ce05684d613dc416ee51531e\n575266906372ef117cc922af3684d251\ndedd7ee03210ff8a1ccbd9e5bb82dd04\n5a2d4ea15ef5c18abab6b34711b43bed\n4493638824352150940e51eee9dd2409\na9e8123feadc58d5983c36827cbbba97\n29043510fd903bae457cdd14086d7361\n666beb2570f33c64f64801ad2940cdd5\n7b2c86b542f822b1b8cf782e8c539948\ndca1e82e7d39edcbc2c2c81e2232aa95\n863d6f24aa1a478e569564f61ef539e3\n9d82d5874349f623d834dead2eb68d68\ne4bc9cf3aaff441f19d740e0f6a9a113\n83db7e16a49191e5ed3696d854eee1ec\n8aa9a549372e44143765ee7ffdfef49f\n44c278891ddcab2dc0e3666c7d0ec7d0\n2f369806f69ba9cb55048eb8b7ed14b6\n1dbb02c20bb93af81c1b3b2ed8d13bf8\n6a06a8905edb576edb976bf16d451bb2\n8e1e365bb6202682f43c51e53897fea\ncdec84be0cc9364eecfe83f5db813c4f\n9472d19187081c62fce798408476568b\n7af4a575dc3883afab355379ede04b04\nad4b1cd62d72089e200c039929e0446f\n73beb19621b7547af8a3d805c6a10776\na26d63de878b28fd52980f173b56924f\n10fda5aa525f6232be8100817bfe3c8a\n30f96aa701d4e088becf71e2e014ff6f\ne1197a4adc50d16abecf71e2e014ff6f\n31546074e22ec0b69ce1b0be9ab0ab75\n881cf849fb2d003514d92936db4784c4\n555a48617127033c25ad20bb66839d61\nbf506399c934c6b3c3eedd6d54e2a52\na1e3c4be68cfe110d9e74b7f1cf9cf3c\n556ec1ccfcb79f08a7fd25564c2e888e\n4415ef6ca1d9a6a3ed734d5df4ac741\n41175e2053fb636852e23117ce8d150e\nd17acdc9dd449748ca92a4cdad802b45\n528fffd59eee9bc5851f021b9ed69c58\n84dc5b9d1a60419b7cbc6cda01aaca49\n44f4bebe8b14badf314b3b3dfd6337f4\nea3561150f4f2790253c03b7df20edd5\neb575f66bedfeaf629ebc23acefb248a\n98aa3b11abac3d73b7e1a37f8df80928\nb05d651c17e9e626ca92a4cdad802b45\n11dba0c2ec8127356c2fe9dcfa1ee2f8\n1c6591c3fc686bf24132f89b3e69f40f\ndf037c72470d33217fbbc45f009914a6\nc2d2e3f46f7cc1e8ba69e14689f7b974\nac813039f9a4468ccc777d23edf2f8d8\nb6bcc1b1ccbf0ea0996e71cb10be68ac\naa5fac5424a05c6be092951e627bdb8b\n84394f62a86ddab875c67b3b1e763fcf\n5662d48de15dcacee1c2519ec6f06d41\n58da19fef63348a56b6ef877dc525506\n7dbf6379da9fc6c3a4ee0fb6a51564c3\n9a58eccb0ab51d2fa790ab932daff416\n1bfe2cb495f63c8f6bd865f153842b49\n4e384de22a760ef72e877e82c90c24d\ne3d7833469729b2024da76692f3228e0\ne1134a7e936b516fb1bb46d2556ba67d\nbd33b9efe58ebefa99f8616cdb5dd27c\nc7bd3c33967a3f80d292079a67d9d7f4\n7c0bad8b2b62cb7c673ddeabdcc8c6e\n71304f56bb1165e7f42b5c72b4901f94\n37e8db361d61971b184a07a6c7fa882a\n238c6d6da1c8ce2970097c1b40e1ea6\nc1daf553ebba8c07e4b68d3b17c43658\n36b28d2fd1085c53b6581f6f0cdd370e\n6c6254a92c485787f1ca7626ddabf47\n8c6c271a149d8b68949b12cf3977a48b\n752a3ce746670be176ad064d1c5fdd7c\nb2e13c37cfaba983321ad52c1815971d\n22bc49837550bed21e570d3da54bf9d\n1eae4fcec701c176e742b0b5e87bec54\n4eb5fe734f4eee71c6fc5b6f6b2a70c\nf6a93b95e10a8b2d6aea15d30373dbc0\n4856ef1e80d356d111f983eb293b51a\n8fac42d0e74f5b454ca84d60642ec7e8\nbb7ca919b59a3a2e6b418c7d9fedcaa9\n527d52b26bc5b397d8f9dd7647048a0c\nfc1840952ac878c99b63159808b36877\ndfe114950aa726f1cfd826dd468a5497\ne5c45e408595abe2bfff0ff366de48fe\nd45b86de9175d1c8becf71e2e014ff6f\n5695a98b66b2b9a9c81ddeca50aa3117\n437f3ed08c32f2b9092ea6b09901598\nf70df58949dcb108b682148e4ffe282d\n49da37115bf906a7548ac25911d2130a\nd0cd9b6ca511c6b9920355ae987b66f1\n1d0a46cfc2799eefdeea60824a43a0b\n9ec13da6190ab1a3dd141480e2c154d3\ndf7c767eba9455f651a95aaa6caba1d3\n26f20ab8033f6937ea859f774de0c90c\nab2759c8e0cf3b8da9d243597c4c2c2e\n554a04784b2f0eccbc513bbf92336c2a\neeac3253fc4c0b429092ea6b09901598\n6e651b2230b8474c2de77cee5dfe5031\nf16194da236b7c595264a3f45260d821\n53d9995a0b94fd37428df271ebc70bc0\n77a759df0166630adeb0f0d7312576e9\nd471c4f43f008df5c1bcae9def1986da\nc41580019d43348d3a3afd30f2e86bd7\ncb9577139b34703945e8a12904b50643\n8aa5d1c7ca4e3f2e61b9ff60b1be412\nf3e467dba61ebb972a84c9dfab949065\n5823e5205bc7eb46cebc874b6631de1\n2a0dad4f32251b353ffe0e5069bf1eb5\n2b5a333c1a5aede3b5449ea1678de914\n9ca127580ac4f9712aba37016d02e162\n34d28083d9f0c31fa2e586b3e41e79ff\n2f2ed1fa349d50f3bb15a692385994d1\n1e2f9cb6b33c92ea82381b04bbe0ce6d\n886246c286351bc6cc010a80df5d3c87\nabbd90920a240df2ed3696d854eee1ec\n836c3205338292d3a696fea828ec5eef\n81bb9f249771d31ac675ce607c2b4b5f\nc8fa4fd7fc424121932abeb6e2fd4072\n4b1227b5dbf1cad92e877e82c90c24d\na3881c3f4e8c807f2a9eb0f146e94477\naf814b4b43fd826a3a0daf3e5400b95c\ne97af5444370eaa95fae7711b4095f8\nfc521be0cb604c1aee4687e8f2543e\n66d89101c69cd1fc1e4f5422b970bb55\ne2ea542d46c76a002a025f627835d975\n63dceacb54c3c170fc7fcf88dfdc47f1\nbc8e978655bb60c19fec71e8f4aac226\nd10226fc9aee707972a38ac2b8f5cd48\n260f0644b293fccbfbc06ad9015523cf\n49a114b29a54300e51a95aaa6caba1d3\neb46e6071b4f72659bc0c5b67eaafbc\nba1a26acae4b773431141a7d4d06dc13\n1159faf9bf78998493680c5a9a367b4a\neb1d1ac801d6bafbf949c235bf4afe6e\nfc2b81391e185db9f1335b4fef92b83f\nb18899d2b002ce0f80360680c1602c7d\nd6f8cfdb1659142814fccfc8a25361e\n5b74aff38b82c58f453226473c9b5a05\n85abcf26aa761e9b21e570d3da54bf9d\nac6977ed53e041392b03387fa8b1d3d5\n9025ac13eac31cccf5cb3ca022cf045c\ned6780486efd79a9fc3898548dce2392\n274bb81c9dd9420b748999a5d81a158c\n4baaabaced0c9e0ac0e3666c7d0ec7d0\nb4f385b36ef0918d9393793f9cf3dbea\n1cff510c0630c3cc673ddeabdcc8c6e\nfed8994632223d52afe1d4530f4c6e24\nf8dc466677c26ac6f63ee8a34069b7c5\n173669aeeba92aaec4929b8bd41b8bc6\n37a049a9e32c17b2afe1d4530f4c6e24\n27645458fec3d7ed514e3d96995c555d\ndf741c5b5cf87b16c85067e81ba6deda\n335b3ad6f7a96bf251a95aaa6caba1d3\n77e3ac704a2933d0921cb81cb1632a5e\ndee83e7ab66cd504d88da0963249578d\ne9bdc6c0a9e4675bbecf71e2e014ff6f\n2c08c221f7c6ccdcca92a4cdad802b45\nf4814bc5063ee3a95f0ad3f281ff385b\n1b5b5a43e0281030b96212c8f6cd06e\n5042d8f781a58c4c9be457a8c6fa099b\nda73c98813b82014d94cee2a22cdfdd2\n61abf78387c84ab67bc163a1196fba48\n6cd11fccae408795a99406d7384c870d\n91b636d0c4729cda1d9cc9d194c8533\n2236a1b9cde71eff13d31c5a107f3c4\n6283a8fcea4976fe47bff85f09fd66b\n42dae5b435c27851b11647ffa4306609\n2e8a1ae108dd0d89e8a3b392b986583\nf9f50e199b706caaa148ed368ea0303\nad1db5ce98d385fdd1e15301c83686f\n19d49c8015948b742d60c8689a64d7a0\n2c3e7991d4b900ab35fea498c4ba7c5a\nd9b2fc71e809140bbe40bb45ea25a041\n51f4aebb148459a45fae7711b4095f8\na6acea161250379aba3e2415e22cd45c\n76cd991287a5aac9acc9e84c45e9a610\nb3047118a9b0d7b7e858db1dc3499392\nc778e4d590417da82205cec171865d70\n50e3333f66829c8fbe40bb45ea25a041\n16bd0438de54fc91b1bb46d2556ba67d\n7611c8605cb47d74b11647ffa4306609\n261f4a30328cd40960a676833b21afd4\ne21ff1f90750ab24b8085998d32fb54\n8bf2d0d0b01f6476c3fe7930fce05ded\nfabcb04fc015f822ca8bf2993ca245b\n30f0ba361010ea11e66cabd11ba41eae\n372b1a139379f5198e42313717d27982\nb659b096b9cd0de093532d4a06abe81\n2b246a989e9e8be151db49e653372c20\n128ad72f92a3e96db96212c8f6cd06e\n1151e7cd24f5bd21ccbd9e5bb82dd04\n62032b070c02c6b1570673441ebdaf2b\n1feeeaeb8b56e46d2dfaf88f42097063\n3f16d6ac013aa946977e464a4b82757d\n2961e679a651dd5ad95ed6bb7181c98f\n1f6ce6dd6720436642534f02c8e8b5ac\n618e8b78bfa803dab1bb46d2556ba67d\nf7da98a59900ab60becf71e2e014ff6f\n85bb9748c3836e566f81b21e2305c824\na86ab6f8af60c6afe1d4530f4c6e24\n868a5166e31428b16d8aac72cf093e59\n100c3076c74ee1874eb766e5a46fceab\n5edaef36af2826762bf75f4335c3829b\n1660d6b7221223708a49a62fbc70ff9a\nc58db3209e58872556f3b9566f5b3b77\nff794bcc5ffe460169e495ca617c20a7\n1768f55a3c29cd483337cb9d908ce86e\na838af854310e283e8d78fb938bac492\n69c6599f55cbe2474eb766e5a46fceab\n47a0e5448c4a3bcbb1bb46d2556ba67d\n532070461b869aa7468dbcd58a793b1\n5b0710d5e9467e847d80f0c0ccad8837\ne6b8fe458aba5b0da86ce1de1d1e7ff6\n1c5a350ea0f55f793fbce9ec40e1f047\n2525b83c84bd3afbde2d51ea8231791\n9a2854600f24017949b12cf3977a48b\n4bb61e5a72bea4506ca2b6e5474aad11\n676ea229aaf8f90858c27e607f6e2d4c\nc8ab7f11ecdbf873921cb81cb1632a5e\n3975b2350688e38c65552c4ac8607d25\n1e54527efa629c37a047cd0a07d473f1\n1a64bf1e658652ddb11647ffa4306609\n383a4d1ee8022e9a61fd7e090d4d0d45\n4e201189ae860008bc1bdcb65bf3d926\n6056451a4b65a12858dbdf2b5c6acfca\n109567d7d55b8fe515a520abec2f04dd\nbacf0105f617a750becf71e2e014ff6f\nf61888bca4392106bc790478b4a84bf2\n470f53291d23cf0abecf71e2e014ff6f\nbd3130013af1d709be95cf6cfd2d0f0e\nb2b22a1454f2c88bf63ee8a34069b7c5\nec67edc59aef93d9f5274507f44ab711\n4e6131bad4ae8b6c91af0bf49336b8c6\nb57bdd19852e0084f7a5eccf728c3b75\n498b7c799350d1f7c4acded0fc8a9118\n332ac5346c7d3c0f8e35db9103756ad5\n676e3e6067fc1b065552c4ac8607d25\n3220cc9f67cd763af63ee8a34069b7c5\n2dd397a57b35e57f2c6000457712c234\na6842a04cef3e5ce69a949ac99a843c4\n8b049c92888475f67c3c6f82a395b347\n5822af4cda46d8c2f952aa5aa5267659\n3264f78bfc3bc58c9213ea6cb12e4e3c\n72502c40fc59b62f4fb68b983a4df738\n872e01a1c34494b737fd267fe4b3a5ee\n22abdb50fcc189d58a1aed4fb5fe5280\nd000ef0c691489c9801b0db1d49ea10c\n41c5c3955dc6525a402257734064a917\n6a23da6a9ab0771caa69dfdc5532bb13\nd0aa115eb63f6f0c97df6383472cc5b6\n8df83b28d786ccfc10f2ef3071342a2e\nb8c8758f8ee058182a9eb0f146e94477\na5464210795a915f9aa6f213afdff14d\nd691906c87bb2850a9733fa2ac6b95bc\nf64f81f7cfcb74033a2b1a2e5e169910\n8e2f0f7f5ca505b56227cba038bf7c95\nf795a928e1c7136f94d732a98738804e\nb0fa729f031a97d2c3c561b608f78503\n7db6c18d976e52e451553ea674d2701f\n40b272e537fae1418277d1ad96e14e9a\n718bfae0c87ad9fdb04112587bd2b79\nbef5b9686c2f93f46a2345809e2bb169\nf120085da70b2913627279ad10ae805a\n38f323fd119d14ed2a9eb0f146e94477\ndbded0816afdfcf776ad064d1c5fdd7c\n783577d449be4ded3121f82ae456ac81\n49a93fdbcaa0302ae434963ea517a487\nd6089d1b75c35945b7e8c57d131d2ca7\nd4251f9cf7f1e0a7cac1226cb3e860ca\n730608de801837b495b02c654da6c998\n29793366c4b45bf6f43c51e53897fea\n3a735f1a5fe8906cab0fd77f2e9aa584\n1b25c745164e53b822d2fb8fec68f2a1\n94c0575659c6cdf2091b4cb93147ff9\n7022a37dd7fc841ce98e65cfc071e8a0\nc21cb9575910e30bf0174ad879a5b1cc\n3645fce32715e0a4bda72093f9b5aa73\n53895830484cd75d9a68e1b6bb3d1631\nc9e555bb1a17cfbc5d918097f81825e3\n3bd66fc2782bd2019766e05e7d6c9088\na111cef175177b3cd89cde5d5f759ea7\nc52a2f6396ad8d5f97df6383472cc5b6\nf91d1032b7cfae618e4e882feb9b406a\n5c4bb9e23c6cd8511371f3c322b54f2c\nc4941d6a2266813c3a2b1a2e5e169910\nee0232b37ee6265bda72093f9b5aa73\ne6581335186f5f6d8f01b3789ded1e40\ndfa6e60e478d5053705278f93079331\n7d59691881b13cc5702956de1b65c053\n137f67657cdc9da5f985cd98f7d73e9a\nb6755cab505f437375cad724c63e222e\n72d1eb25d911b6d8913eef1194316fef\n209c79dbd4f7ad944ee32d005103a21a\n26d201a532879a60a7fd25564c2e888e\n1963641a15916c03709ce7955adef61b\nf2b350b6c36eb73d1fac59b924f395d9\ncab3b584786dda8c85c68dc758ce6c5\n5d385a0a87d0df4a51a95aaa6caba1d3\n816f9a529bf7b14817d5c90faf553cc9\n663bec87ecf2e0adad0e351bfd714e3b\n5dd97775bf24ffa2283aaea3c1a7dc36\n61f4cd45f477fc7a48a1f672d5ac8560\n7dda382210dd768680e74058ee862f05\n94b3689f899c8cfbd575863af568c85\n57aa7560dcfecea81edf5a868fdffb8d\n77d884ef56bc97a8b7ddd670a53fb311\n58d9741ad324623e9872e22d6b8eb647\n43fc65dfe952a7f4cf6923c08156107b\n5e857724d62912969acee38782dd9680\n491653e537f1a701697b84068abf146c\n5dde5594b4e9e86ce60ff101126e254\ne98955e5d46a492c036e20efe5e5ca8\n744f3661d9030c059cc32a851e7d6f32\n58569e7feac27d3e5da8146fec888d45\n52a988b361f6cefd685753e73124c6e8\n1bace29924c0ae42226fc3902f16303f\n8d14c94dd325400d93b973d059f27e65\na3e8a28918af7b07e3857ce739e6606f\n1399eab8ad7262eb7f3efc94c2d31dc5\n906e2e532b7156b612be63c74304797c\nba0c32b3feba49b0b40adee184c371d0\n63cc90709837d314a0b2db16370345f0\nd18817af1a2591d751a95aaa6caba1d3\n9e6156aea0c7e60ff7d6fd2038bf9a11\n5ea6bb423b1600141d225d751745cd28\n528c01214da6d4bca7fd25564c2e888e\nf34c03711c3fc44ac10e9d4ee4bae4f4\n26c382bda051376daebb91b7dc4caa91\n98b30f0a29fe2a1ba7fd25564c2e888e\n98a4518ee8e706c94e84ac3ac08acdb2\n69492fdcd530eb3da6ce6972f601a2e9\ndc2c49d8617d400daa44bfa127abe4bb\n5d2e6410d4fb760befdff89bf9a96890\n8798825a3c68e5c7e0470509f60266ee\ne717bcb56d012a48b1bb46d2556ba67d\naf834c760bf3c75043f0e92e826556b8\n34412b56217de1112b12ea83455b0f44\nb9c0f9dbfb5a1c0f99684c8184952917\na39ed639d1da66876d57cf36a7addb49\nf81db986082fd0562ac826a3c82da491\n95844f86f4f0a6b58a6cf8c6b92417f2\n6f793e0f29f6b0b4da82e7357e8ee170\n48862b67f5932cd4473f10e6caaeca56\nd0a906517e0ec98589fc8cf5232ee9c\n2d41d907b7cb558db6f3ca49e992ad8\n6c22203e5ed35df9ca4aeb694e04f8df\nd652c35de82c3f3141fd6622cb2ed89d\n30964e51b5218487577fbd27130e143\nec469722be9d015c1ef32d215d1c8df5\n1ec1c4aa9190e767da5421a736792418\nef0703db8a04f8c0c0e3666c7d0ec7d0\na34dc1b89a52e2c92b12ea83455b0f44\n6d01a15517fcec07a546b0c1c6a4821\ne128a506f2e29a6796cceb824e3c56b0\n8fedb0c03a49bddaa8c38723d07b122f\nc7ce82b4b1e795b0cfd826dd468a5497\n22d57b895b9cd22137ca7da637f7c918\naadf8736528b0f46857652684714945f\nf414e36d6daba864d9bd5ae694086d5\nbaa2f488ec67a0a7c66e38c3984e156f\n2262d8b1d5fc79b67211919686015200\nfa997987367ed84ef15cbb7bb6511cb8\nb4ea44416a06834af200a72c9245aee7\n2c304c54a6141d214ff3c6764341833\n52c589e86fd500cd4a42886683bb52d2\n3d6e798bed67ab81f00cd8c386c592fe\nc12424d1cb48ce0fd0a4f72b67c7f064\naa41aa1837c809e1e12eceaa46673a5d\nc683e8e57b20ceeab927782fc69a1fbb\n6c50a9b8e01fbca27dfb1ee6a4b12bf8\ncfc8e5925bbec93de20af544ce47dd47\nd07c8208ad9dc35780e74058ee862f05\n9807c1d0bcec85fcc3c0146ad3ea2d7d\nf045547c7c6e5d0ae74479f4823fa2bd\n1c14ef4c48b7d95d61c6c61410fc904b\nb0a659083ec6e936ca92a4cdad802b45\n95ebb3fd80f885ad676f197a68a5168a\n12498dd65e8d65ac3b6f5204eb590354\nda34cb394fb3caa58dcad5127c74b8e0\n61645b21c344e22a65dc1e664bdf2e6b\ne999dfb757ddca4830e7f6cd6fb3f1b9\nffbebc7c9a32a6f88ec8762dea278247\ne95d4b7aa9617eb05c58fd6a60e080a\nccc6b5ace9f5164d26068f53fe0ecf07\n3026dc837dc5dd7a157e36ecb370d387\n7434c137695be0eaf691355a196da5f\n85914342038de6f160190e29962cb3e7\n1f7393970917e558b4a20251cec15600\n6ae21b4b5aa92db4c79d3cf109867c13\n1f37a6fbdf7c807e7d439639178556bc\n477ffb061f40e10e148f8c864a546424\n706083fa2a8c2b50bc97decb713a2619\n24dc3903b254fe41b448bf2dc92c4fab\ncdd58286e3e428ec1fabf3cbd0fc77bc\n9009d75263e350ffb3b0f00a15b90e0a\n72f6c3c3078ef567dfb1ee6a4b12bf8\n3c02c18d64d3f13b8c988ea512260358\n791885fd798b1981c1006ed55bc1a3fc\n9abfdc63aa88be60733269057ed164db\n9240401e750395b456fd4619a315629d\na281de4b24f5500d4c40f34de8f3bdb8\na54ce961d973443a0daf3e5400b95c\n1176dff7f0ec879719d740e0f6a9a113\neb40501934995e1a6560c47a91b4db1\n5d8476a9aecbbe1e9ec9fbf723f60ac0\na583ea14f9da98936436916a86a90ed7\na59c142ed6850a26ad4bd5fc1269475a\nd1dcddb5b1d7404dd9b0c189eb588ce6\n79d9cd9a0cc2184ffcc96966174e5650\nbaf3415a57e6f282b23c333ee1a445e\n88a814d2107f882d3d30c6f269d07627\n9e4a79d30930cc2fcefa74f1d0bc6e6\nf15ba529063317d241b8aedea2034739\nd4cec810b46292ff1f759e96682e340e\n9de10b4469cdc435afe1d4530f4c6e24\n7faf7e8c2f383eafca92a4cdad802b45\n7aff83bed75b6778e5e8ebca62d4509c\n350be6825c19fb14e0675251723e1e08\nfc99fdfd71b5662a669a6bfc71569d\na495bebb2ebd72f3dd7cb6e3ad90d3ea\nae9b244f9bee122ba35db63c2ad6fc71\na886262ac3be5ca7c126a452758c84e7\n13d0f68f32a86bdfe3857ce739e6606f\n5e4a1ac9bdce2766473f10e6caaeca56\n167ec61fc29df46460593c98e3e63028\n70d31e0100cab3fd77954285e7764e1b\n1713a1ac8aedcc522b12ea83455b0f44\nac482136fc30fd5ad8f405c5ec4e8cb0\n23e8adb3bf1961f85332d3b92481b499\n819b98c138192c88e5e79d9024e2fcae\n5801f9eb726b56448b9c28e7b121fdbc\n4dd97a6805c2797d18d95feceda870ca\n93d49d2e5e4ab1b7ae33d942430658c\n2b043f3cae45d4937cbc6cda01aaca49\n431ca41fdf0897c628ccbb4eb8965b05\n6ea4111bb47039b3d1de96b5c1ba002d\n7ee2193b072afa652935bed12a852dcf\n79db6e5fa70b39467df67c910758dfc1\n36b23cc38786599285089a13cc567dbd\n1b2ef0809ca1abc7ca92a4cdad802b45\n37e781aa8ae8933a61c6c61410fc904b\n38334022b922a9d4e7540f431cab4686\n752d240eb33f328cbf95baecbc060806\nf8c4bfc065e35555aa44bfa127abe4bb\nb554614b14148e4ec0ed6ec757ca50f5\n471673f3f062abd473f10e6caaeca56\n4fcf76fa7f07a0008bb11dbc05ffaa74\nf6e0b8a0746d36d74eb766e5a46fceab\nd5c4532a34ba10e6f9798a883006064f\n4c6aa3e7a8130295b528c0abff96f586\n8b74a58c28cac774753d1d86ac1bdfce\n3b2e74068fee2458dd1e15301c83686f\n90902c72c195d3ce8256c497dfca7529\n8b722405131e569db927782fc69a1fbb\n545abd37dd50dad953536e7c905b301\n3ddda21d4496fbc693680c5a9a367b4a\nee0edec0ac0578082ea8e4c752a397ac\n2e37013195d95f494470fce578e2b84c\nbc7ca9eec356ce21ad32396cbf7f43dc\n35155f8cacf6d72471fc7d1bbf34b979\n34762df3ff8961188bb11dbc05ffaa74\n95ddaba8142bb8572b12ea83455b0f44\n3dd52c850785a6ebbaf1745483a8b34a\n692001fd91d8328ef421855cd210fbe9\n1e6e7bfb08b6b44d615949fb78ffe44f\nd76c9eb102316ac631a8860374e7eed\nda82ba81a8fb0737d06f1bbd2acc051\n870086475e8af25bae57d337a2e5e53\n3831ed7bc22100f7c3c8fbe62717803d\naec393b8c73d3a8ae4bee94a37836d67\ne337e9940356e866b82298c7ee2fcc7\n575ac5c53ab9fe21a26fdd1a1e470de9\na49041daedac3ecf2fdea40a56b4c57d\nb0810f509a3c4cf895cad68eb5eb0e38\n1ad321f067ffbe7e51a95aaa6caba1d3\n662cd6478fa3dd482d7d789814cae761\na720d17573022d9ac00fd1150223027\n9748063440a449ab3db642d8dff7fbe6\n7a8f5c085be36a8052aa494042b7c9db\n2c1c8c4aee1e79d52aa494042b7c9db\nbbca0e2391217de71e95a82bd2f5907a\n9fda50a84e042ff1a7e7e5ea49ad8e45\n8c1b20c4c37dc679301fa882a9655049\n3ef041182cc1d037a9d3767c58267708\nc6dbb4874805a2c6c2998c73c3c35adb\nb76bdcfc277f54007f3efc94c2d31dc5\n2cc413c3ea9800b3cf1e58caa15acb49\nbc533f9881b0775c3a0daf3e5400b95c\n62393db2dee065956e28ffc6e1f368fe\n9f5d5b655ebbbb9c4d31b03e74c723a3\n87ee241d3d0d1dda4ff3c6764341833\n7a0f252961e5bffad95840a0da458be0\n8361aa7ae1f7dcb582ea71649733f2a6\nf7b9529fb166ee56ac922d597da8f180\n20e01ed9c14d4659e61b9ff60b1be412\nf238821689b42db5d95840a0da458be0\naffba519865b72fc2c95ae1829869305\na34260b8cdb1ec95b63de680261b9e1b\n15e52e44cdcc80ed13ded1857c15b5b6\n24c0c6d558d4d01d8772618b7452025\n12d463649ed6c176ab98a7077c964a60\n5ad4cc3f8e191c61d31d4c555d4c5a0\n3ac08e66bd7da4c35da01f298003d56\ne4b5734836d9519aa8a84951596cc1\nb87ae16029527cf3fa87597d91a3e9a2\ncfb6c8867c6dd84c80e74058ee862f05\nf8b92a0ea7f4705c9fec71e8f4aac226\n8e39ba11949027ce14914b7641b2fd67\nb990ae1858bb82c133f84f942f9a2bf5\ne4d396067b97f3676dd84bc138e22252\n5f32aca282eb9167ff1370452e3a0154\n17f89c25a3142ee09d2b99af43da16b3\ne67509fb6192be6a7e7e5ea49ad8e45\n6482e3afc2664e32d30f2d8d219e111c\nc2283d62367d637249b991141ee51d9a\n420519a0f7390564f500cc506a763c18\n87020c25b9166cf11d27be7764701cfe\n56cca58a4f37323bd0889537a7d54003\n56c056544a2fba1614d5081e13f5a1db\nb48b8791a3b09753b8d3554bd033ee9b\n3c103561d9a29ae7ddacb20b6a591772\ndb91e70ebe09d5edf446f92b52bbd82a\ncc7dfb5ecdf370a178c14a9d99ecf91\n49f3932e6fe0828951cc889a6330ab15\nd8b50ce6cbfb56a4786993ccbbbff425\n1a0bc9ab92c915167ae33d942430658c\nc2d2eae7ef1a34e1f500cc506a763c18\n2ef61a1083304211d27be7764701cfe\nfc5d8e25052fb713f559279c88cd9a37\nfb20b20452ef661f500cc506a763c18\n6c85bbbbbea160bd81bcd6355b440fd5\ne2bdf01abc79a8d054b49557f8ea8b42\n358ddbe8b39125e9e81913b1de19c3f7\nd967be366b99ac00bac978d4dc005d3\n5881807902ace2dc7d26edf2a8ffb68\n936eb7eec6b76e4b421c2195de5e56c4\n5a841a8269d3560d756e18912340de0e\n481c55b1fa36f6c7d834dead2eb68d68\nffbf897d9867fadff9a62a8acc9e8cfe\nc721c1e89e68e01fec4be884ee173bab\n35de0d0cc71179dc1a98dff5b6c5dec6\n626a407fd0fa17d3aa1fca93ac59c77e\n9cabc9b21a7c5fcab02964031d37f87\n3134927c492c39e241d7734b73edc062\n2fe4a878e34bd3bab8013668e30e23b0\n62a7e17ce83e2f9cc0ed6ec757ca50f5\n7f701224ca471b2ab8013668e30e23b0\n23e7ae83601f893b575116d39d0ffbba\n70cf106dd369bf3ac427f8508e3d634b\nbbaef5a610b0b4d5368f3995546e59c8\n10555502fa7b3027283ffcfc40c29975\nfdf2a756a86b2946c427f8508e3d634b\n4eb5ec5502561124875fb780d36841f\n79c9b9b6e2cb15a2dc1f7c6230f38f00\n468be6b80d1c7dd655ac255cda83e91\nddd5e2bb26c82862b41ac95a0a9b3aa0\na2fa0bfd39718f1688a610ac9b7aaa40\n921f87f3d9a4cb8ddb37d391409760c4\n93357732c6306cb51673e1c313348a01\nfcbf9e1dd55ab172ce27281f3b76d1f5\n9a806af16e5a102786d01a5629641c74\n107699ca67fcdf3fea999fe4ffdc2504\n3a46c9b9e8b18d6a61c6c61410fc904b\n2d1adb247cc7a1e353da660a6567c5ff\n42ca4f6a7d7a39712a9eb0f146e94477\n38f403b915d950d3ce8f4a5eeb103d2\n27495a8836ead3d55c5dd9508493909b\nd13d0612c64c1c872457c273ba02ebf\n6201a29763c2256a2bb5796f842ca661\n49d6a631f23a324cde361784b4e1f04\n8b8f4f12e5b142c016abce8cb03e7794\ndda0d7e01642f399d4118745f38eac76\nba817f535c2668081f757787330d376f\n61c4db4cd886250f473f10e6caaeca56\n31998170afc1a0b9d13bda570aea1f6d\n24819ffdc34b28efe4bee94a37836d67\n191f9cd970e5b0cc174ee7ebab9d8065\nc8c51e709d1cdbe0673ddeabdcc8c6e\n7b74eb8f053aabe64eb766e5a46fceab\n4dad98955a47e81a8b3877a62f2cbe1d\n307e83044ed81f6c473f10e6caaeca56\n5089b134ef31941edacf4de272c1e30\n8e8da02ac0168a47ec5e3fe5c33367cf\n3efdb762f2663a014c9dc258dd1682ab\n5fe3753b18cb01ae1b581e1887fa67b\n1feaf720692bdacc27a1a7fdc1941283\n4eeac6360031021b8141ca5f94f1242d\nd9867d92edba3d0cb96212c8f6cd06e\n794fc3e07d3c5954514e3d96995c555d\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/03001627_test.lst",
    "content": "ed751e0c20f48b3226fc87e2982c8a2b\nd72f27e4240bd7d0283b00891f680579\n5fa533f71e7e041efebad4f49b26ec52\n8bb332c5afe67f8d917b96045c9b6dea\n9a82269e56737217e16571f1d370cad9\nd9159a24fb0259b7febad4f49b26ec52\ne642ac79a2517d0054f92a30b31f64e\ncaa330f85a6d6db7a17ae19fa77775ff\n4171071eb30dcb412dd4967de4160123\n1d9dbebcbb82682bf27a705edb2f9ba6\ndf51cb83f0e55b81d85934de5898f0b\n7fe08cd7a9b76c1dcbde89e0c48a01bf\n33c4f94e97c3fefd19fb4103277a6b93\n764866604b035caacd0362ae35d1beb4\n6bd633162adccd29c3bd24f986301745\ned7b1be61b8e78ac5d8eba92952b9366\n4719c75b8ce30de84b3c42e318f3affc\n6b32d3a9198f8b03d1dcc55e36186e4e\ned953e5d1ce7a4bee7697d561711bd2b\neb04d1bffae6038c4c7384dbb75cab0d\n64f6991a3688f8a0e49fc3668cb02f74\n5ee976518fc4f5c8664b3b9b23ddfcbc\n72da95dd6a486a4d4056b9c3d62d1efd\n18bf93e893e4069e4b3c42e318f3affc\n92e6546c4aca4ed14b96b665a8ac321\nc520bc9dde7c0a19d2afe8d5254a0d04\n875925d42780159ffebad4f49b26ec52\n953a6c4d742f1e44d1dcc55e36186e4e\n64ef0e07129b6bc4c3bd24f986301745\nb3a9c49a1924f99815f855bb1d7c4f07\n73b7d6df845221fa9a2041f674671d05\n6a00357a35d0574b8d7d306df70cbb46\nff8921eb06e95b9cfebad4f49b26ec52\n9b902b5c6570acb314b96b665a8ac321\n8176364215748b23490ad276cd2af3a4\n6dfb7b5b4bd0d5f9febad4f49b26ec52\nb9d60d124e24849d37b2bb75885cfc44\ncf24fc2d10f8da31283b00891f680579\nc709aa613431c0538a653a9f65a410f6\n5141e8716b98a16d632786b910371d31\n4a329240c6a9d2547b11ae648ea92233\n25196058a95b4fc3359e362142e70c8d\n6d78523e939aedd482e23b5f9fd46e1e\n60c0c32187f4e2ddf51f77a6d7299806\n7facccfa81369078a8930422448288ea\n55eeb952519ceb87c3bd24f986301745\n2499541ace317cbb8cb5d9909aeb1309\n9979c8433d92fd80d1dcc55e36186e4e\nb72342e210414024e3e472a115551ec9\n8a5d60067de905336c183a120a388982\n776c1d1857a4ea3d853c3fc864dd58b7\nbc76dfa9e0a91e131e06124bec25a766\na094ba480568333819fb4103277a6b93\nd621bfa4a44a98e3829e1f3c4926c485\n97da84d5d78d84cc2360e5e238139587\na1e6226c3a23ec808a653a9f65a410f6\n1e53d84e48bb7d25febad4f49b26ec52\n106a0dbaead5066519fb4103277a6b93\n22ada577361ed0374b3c42e318f3affc\na4d7c8b97066cb74f63e8e405d49b8ce\n5623d0ec9efedbc9d4da89766e80607a\na2824df0ddb58c0617b431cae0dd70ed\n9b4d530487df4aa94b3c42e318f3affc\n8f0deb6b599006a22cc460e9d064e57d\n2718b1d46ca52df052bfb1d5ec273240\n2403b6769a03c8a466ab323d8f805a57\na345ea2820d2f4af7ff6ace05b36a5\n1f501c5ed6423e259c89c86daa5af59d\ne440059fcf6f36496ebf11292bdb9130\nb1add8182311f2a9f71e06115e9c3b3e\ne4a890f2330ebd7e4a11872aa986426d\n9d0b25421c13008e35836c728d324152\n7661a325724ae00acd0362ae35d1beb4\nf551bf7431e0fd7cf937a9747c26991f\n7727d0eef3eeb3ba73b2b620da30da86\n5607b02869c1f8a019fb4103277a6b93\n6dddf2b95ca09bf5febad4f49b26ec52\n77e7660d71c6f3befebad4f49b26ec52\n8affc6302970a589febad4f49b26ec52\n47cd848a5584867b1e8791c225564ae0\n7f2f8dd929421cd130e6a28391d443c5\n97326604c5fdff1febad4f49b26ec52\n8ec79ed07c19aa5cfebad4f49b26ec52\nc0c823f094d972c94b3c42e318f3affc\n780aec25d416fa07ca9b40e76e725878\n317a2cc9f3b54a48283b00891f680579\n77fbfd2f194ed73975aa7f24a9b6003a\n4246c8c293c56ea34b3c42e318f3affc\n9b12d223347d4bdd4a11872aa986426d\ncc3d9160369d09845e61ef8e2af97499\ne69e032ca0bd60a4febad4f49b26ec52\n9dac39c51680daa2f71e06115e9c3b3e\n31a3884f500d9fa2025d98fb9de28cb\n19ce953da9aa8065d747a43c11e738e9\nfdef0425d385c1cadef295ef48e5307c\nd48dac046436a29ec3bd24f986301745\nc65cd2f7588764872b70eac6546e93fd\n1e6f06d182094d4ffebad4f49b26ec52\n695a02a5620aae6e78eec18a8a3356a2\nbd0918d75e22cbf9febad4f49b26ec52\ncfb40e7b9990da99c2f927df125f5ce4\ncc5b5e367ad8eaf19fb4103277a6b93\nd0894aed032460fafebad4f49b26ec52\n650d540bac31f56ffebad4f49b26ec52\n88bdfdfb2a8b94ca1b17743c18fb63dc\nfb794b0b3260794bfebad4f49b26ec52\nc1e8b1bd34874c83febad4f49b26ec52\nfd8c375d0a267d20283b00891f680579\n8c0a0360a7353ec26dd3cca80cedd415\n1e68489b0dc2bfc3327289c00b6dc9ca\n689f7ad63ed9a7baa75d03186a0409e2\n46d7e85d80411f50a094848ea4d06501\nea5c19a6ea9b13719fb4103277a6b93\n325bf2aee84a1fcdfebad4f49b26ec52\n59fd3d1409c0ee2e47bc3701b998a7d5\n8707cf0c311ba8f34b3c42e318f3affc\nc9dc5d85ea3bf4d8a1088e4f586b1246\nb1c221e3ec7fe34782b50ea5cffa80bd\ne4a93adf5399b23419fb4103277a6b93\n453a678dec4e9d40f36ea1eb6542fe7e\n9a91a491a9e74ab132c074e5313866f2\nd04d854533d618fbfebad4f49b26ec52\na5df9c511f51228f19fb4103277a6b93\n6af8d7bfa508b8d23759750e8db40476\nce474d7c415941acfebad4f49b26ec52\n46c8f742ae31294cb4a4ddb21cda79e5\nde3e082195346ca419fb4103277a6b93\n5d3060a3470d853dfebad4f49b26ec52\n5a3ac1ba6f751bed79368d1198f406e7\ndfeb8d914d8b28ab5bb58f1e92d30bf7\n810cac0d137efb1d21bdbc0445d9f748\nfb912528e642f6ea7c7cfdf5546967dd\nd3a38afe0a0341cefebad4f49b26ec52\nfb369c50dc8fdcc5ff2c92c2a4f65876\nbf52432c9b1b5e11f98c0761af40e04\nbb04dc0b336abf4b263915c09bc4854f\nc394dfc3c8573d1b19fb4103277a6b93\n94b39e206f1bd77c69e31bb722067900\na58f8f1bd61094b3ff2c92c2a4f65876\nfb4e388b57e36e7ceca29403b7226aa1\n56fd0fa3863cd4c17d63360731b4227a\n250e0d866303abedfebad4f49b26ec52\n90e67facc9af413abc19762eaa7ba40f\n44ddb3d46266bb0ffebad4f49b26ec52\n990d8c0c0008081fff2c92c2a4f65876\nfdb00b6e3c3a8c6e9e7154e1e649e020\n60ec0611befb7102dbca69f936e89647\n699fb3293e219808599dcc439b161a52\nfdf0fd3b18066cd7e8b2b8dc0c816caf\ncbc76d55a04d5b2e1d9a8cea064f5297\n96e83c79e8d76d4519fb4103277a6b93\n935f5e58e9e15231febad4f49b26ec52\nfee36ec8c8ae503fc68456e8da5b9a30\n3421ad5a45b85f7a4b3c42e318f3affc\n9b42da9217caaed8f51fa0238791f5dc\nd71d9d23d786cc8dfebad4f49b26ec52\nd4b4d348cfdc2aa5f99372bbf9c0b8a8\n311c07b96ce39f82c70d3fe6f2ca143f\n5f355e2a9fa2f0db4b3c42e318f3affc\ncc6d6035bb5074261f98c0761af40e04\ndff768695c3013aaee3907b60a74e8f8\n4a9d3ce54c09a2da696b74614952b2d0\n60a5795c905f3bb157f5033576317e1\n46a6c470367cb57ec5facc3cc8dc041e\n103b75dfd146976563ed57e35c972b4b\nb60fb4126e9e7c2aee3907b60a74e8f8\n6eebd118abb1b4146d60aef5fe7e2185\nebf1982ccb77cf7d4c37b9ce3a3de242\n632a5ea290b0730c6ad8177a9d42d3c9\nda6cbcac794d377df9111ef49c078dbe\n247dd48e4b6c029e4b3c42e318f3affc\n225ef5d1a73d0e24febad4f49b26ec52\nb8bf7e161cbff74066ab323d8f805a57\n4abbd2b632d3aeae4b3c42e318f3affc\n44ce5f9acd418c7dfebad4f49b26ec52\nb2f125cba550eb8bfebad4f49b26ec52\n69e6f0a5e903cda466ab323d8f805a57\nc0e667218359978d94ba68807fec4bf4\n9a0571ae6169a6ebfebad4f49b26ec52\n6897c2665267cca39eea64ae4d2b4158\n3f36e261cc87648ac3bd24f986301745\n9aece6c6436cde6fd9ac1bf1eddffd24\n367dc1e6752cabbcc34bba142e6e15e6\nd7b8189fe69cebedc41b07b1627c4b43\n4a672cf09d7fdb7c83b06dcdd869d9ac\ne30b412be565a1026efe57da6d3d385e\na565a80b093f12005481bf9052f50100\n1c17cc67b8c747c3febad4f49b26ec52\n1cc3513e4d81516267510d684b7bfd11\nbcadc00cd1bdc19494db33559ec0df30\nba56f02dee485974c242632b2a8c3129\n32b7f9324c56d6131b02cde7e81f0fc3\n662f95ed8d41a24bf63bf7d908efc575\n9191445d1c215cf09a8ef44e1d2c5b75\nu481ebf18-4bbb-4b49-90c9-7a1e9348b647\n3936ef166d22e60ff7628281ecb18112\n4b01dfb6fa24eb4c4b3c42e318f3affc\nd1e9d5b534c77a2a14b96b665a8ac321\n1aeb17f89e1bea954c6deb9ede0648df\nc7da2d72f9927f1881dff5c2e57ad46e\ne41e8329ed0c0b88d93768e7b9b1eabf\n9c499d86350d32a28639ef683ea7ed9b\ne6c7e75046f8946b27bf2eac25b523a6\nd2304054a8dc7ea4febad4f49b26ec52\n858e512945d4544644175b4dddf5be08\n67713c9a313ece7226f51cb1aef0ea9c\n939383f36692508afebad4f49b26ec52\nc51937167dd0db45f7628281ecb18112\nc31a206ddb92909e84f0c4075db76b7c\nf46ccdbf92b738e64b3c42e318f3affc\ne4114b81f793628fe8f8c11a24c52ebb\na38cfc9d2003117e19fb4103277a6b93\n3aad9ca0d7fa80d76beba0439e85fb62\n9231ef07326eae09b04cb542e2c50eb4\n7eb4a453070b3f090d1267f8054d8a8\n4a19f4e47476ee654b3c42e318f3affc\nc91eb95b40e4b6f8e83221ad0d21775\nc0e5edb2602a7bbbab3d781e4dcb85cd\n75716acbe4ace649854cb2d2b60c3da8\nd57c9aac973c3722197c43c7dc584772\n4f7523a3d276bfae4b3c42e318f3affc\n80415f427a9368227678f114ae956b82\n62f442aaa230eb34e7697d561711bd2b\nbc184c3cbe3349b19fb4103277a6b93\n3c8864b07a5c0718861df5a407858f2\n27ea798c55699b6d2c528d33bca1ac2\n1da29597f89c2b004b3c42e318f3affc\nee2ea12a2a2f8eb71335bcae6f5543ce\ncc2639f8c584001a922dfe32810651d0\ncc30a723aeba69a139e0f39f5249b0ba\n4372b33dfc84c2f56a9ab6fc87e1604e\nbfbc5e6ebe1813a5d9fad8aba2c312b7\nd9bbd1a1eaf6d2259d3ea1c6b57a0095\n6634fdee517153e7e8523833000f615\n72669be1815b2bb81e4fe86c4ad3ec90\n8b3619396de4df10db8860d0872e9c55\ne6b77b99ea085896c862eec8232fff1e\ned47d02d4518fb5d9cc2d4308810279e\na93aac9ad86008e69fc01fb65ca37d30\n39911f927331db1c8687ff9b0b4e4ac\na3e4639ff201f69b22a3043dcd383f68\n2742c0a5e984d92fa0dcc52ca811e565\nffdc46ab1cfe759ce6fe3612af521500\n40168f46019eb867be7e1d42d63ca9f0\nd3302b7fa6504cab1a461b43b8f257f\nb8e4dfe08a43badabaed5cf8a752d243\n8654342caec219e07cbc6cda01aaca49\nb3e4c494a862986b9226550f5173ae53\ncd939609247df917d9d3572bbd9cf789\nd274fc14092387c1e17e1cb731e2fa4f\nc24ac9257d6392bcf284804023c6c8a\ne8fcc8054e445a0c20768660cf080d12\n1b05971a4373c7d2463600025db2266\nf51ab8433184dfd2c8687ff9b0b4e4ac\n3e8ad99691e8ea4c504721639e19f609\n8ff4ba87d700054546992ce9fde1b2c2\n2bbf00f0c583fd8a4b3c42e318f3affc\n47b37ce8f304dd0bbababe11fcea8796\n2b55385a63cf62f6bababe11fcea8796\nb97dc64d0406c07259d43b06ede1b24\n5e44499940fc3dbe57a847db7547c1f3\nfeab80af7f3e459120523e15ec10a342\n19666f52289092a3394a3bbfc81460\n4f5639e943b60edc600515ec9ccc96a4\ncbfa51dd6b795262774ba10f0bcc178a\nbe9d5105e48ae27e713decb1a0563b12\nbd41ed35fcfc0ab7b5e2296ee51ed515\n3df44d30265f697e7e684d25d4dcaf0\ned56af61297594bf1c4300651205adf3\n8bce3b7b7f0f48ad28a1548e344f0e2e\naa80259311e2a8c0d8bd0a659ff7eef6\n5b68a6c2baf0ad61d0de9c949c366777\n37235898ebd06b3b504721639e19f609\n9fae8d94a028e9ec2818b21315fe1bde\nff2223a085d32243696b74614952b2d0\n701300d51960efc8932a5c2746cd09a4\nf2b2448978785cf5fb63369d5dd85d25\n30378faa6bf5b245fdef1c01cbd4ae0c\n4e358c2dc0513971f98c0761af40e04\n3d67836a3bff5f733aaa67d66207f5e3\n871243bc93615a758df4f3f615062e0\nffa1e25f499e586694e98ee4fdfd7464\n52c32b187590e8f3bba5aaac798c64af\n7fcde5fc8e023dd2a6fee8e2140acec9\n5a60c649a221293d72ed554eb3baedcc\nc8265e04c94bcb5a1346e336f65f96f6\nf68ecc9ec512915f36d8dd30a594b2af\n2ce61518f138b7f75d009c98a5b96836\n748957972cae6b03c56be62b05937331\n6a3d2feff3783804387379bbd607d69e\n6e1e73e14637a28da1c367d7a459a9b7\n5d4252d082ae613a2fa77440dcb93214\ne68bb6f55e2454fac7f1f7c0570e288d\n2de04227fae28e70b6eb6f056d511fe1\n3fa1eeed2e8e2534febad4f49b26ec52\n895be5f65513a7d09a8ef44e1d2c5b75\nd32fafb61e1e4a5bb0d5741be7de64b1\n49b38e22f104005ecbde89e0c48a01bf\n808fa82fe9ad86d9f1cc184b6fa3e1f9\n3b788994cd578990c35131da26f8061a\nb7a04fb7a5fb790d96626c84a010ee5c\n70aaed71e394259c87a0ca36e3a00f4e\nfe31beab802cfc56c2bcda262700befe\na48e359faed3da88d3519c62a8100783\nec5d90a37ec99980e2b417d08f69e019\nc48014610839bde3b8e687cbf40e9e47\n184b4797cea77beb5ca1c42bb8ac17a\n97cd4ed02e022ce7174150bd56e389a8\na8b5f5b6bf0cb2d6876b399a99a15c0f\n103d77d63f0d68a044e6721e9db29c1b\nd619fd50c4d0fb46dea83bbf303af433\n76919a456a23b9779368d1198f406e7\n7a1de77ca204eaf28a514cac7cb18507\nb13a4df698183bf9afb6676a5cd782b6\nd2c465e85d2e8f1fcea003eff0268278\n86199aed92fa1f68fd60059ad8523f1a\nbc21c95f766502a78b03575bb54dfd4\n2f0a94efe6d1da7f8616812464c86290\nf9bb302961c91d7220160736f02bc9e4\n91f867d862e6c96c3ea242d1c18c3489\n355fa0f35b61fdd7aa74a6b5ee13e775\nee4858f78dc33591100e9bd5c4b0af54\n3b1b0186ebeb8ea579bb09dc5605a57\n6e46e4cce527abc114d449899f34bd9d\nd1b2d8868ca506f2a248097aeae36abc\nc552529c54b0612e53041c49040be3d5\n8a9af7d8a83d90fcd53e36731300f5b4\na8f6ca4151f966f5c2e24dd3e5cf2d2f\n2ca371de1093a3867c9386abeb61de4d\nd990c996a67bab91d9233930731da67\n519d19f3adebd20aba49014d9a3afe99\nb1f4b2c32f8a2fa77ee217c21e683487\n2b85487133b04a543f86d4a1692234ec\n587ebb2aa71acfe644dd3aaee16d3f4c\nca4900c42b8016ef8397cd720acaa508\nc7e590c0390e8d5debe67d9b32c3ddf8\n81b27636162e148bb3fb065fa3089331\ne0a0d5c2ba6fdca215b55266697a17be\n3ae022522800685c610195e4fb10d1de\n80fab0c55a60abb7dafb0be26f6b45d5\nfdac1f9c0b030841c8687ff9b0b4e4ac\nf19e8da9d8f369c531e63f1270e2b445\na9a1147eae9936f76f1e07a56c129dfc\ne325f573905ff945b8183a4a81361b94\n6abdb0b46d2a3fd02813aa30be7ebdbc\n3af90da238ac4ddbf91663a74ccd2338\n63da17eda9d415b5319c5e90e9cc9126\n9a54daea9071a536bf80985a99195eb8\ncff9e23014880e20b2e8bfcc2dfe93cd\na09a88c11d0b27368821ad3452f1c8c9\n90b181de9005fbd04cd0eccf52b625bc\n8df0910897498e764d183b64817fa09d\n42140baad25c8598baa1a4ff2c45ffc9\n734ac9809aada180d18df440db206fb1\nbd0b06e158bcee8ac0d89fc15154c9a2\n6678f63c9b584a549d9e5580ae9f8738\n51f4ea68be319fe8990e5087098e19c\nf1d6552ca66b2e37713decb1a0563b12\n9e6b834449ed2db86199d6fe090be061\n499c4b519c708ae84cd08aa7c510fb85\n80784cc9f549e4abc3bd24f986301745\ne3d23dc47ddd9620c9be65dfbd21428b\nf1a1bb6ad29d703078d928ba1c4a6f75\ne3adf2e6b3c3b015b63c025d1a57d1e5\n3466b6ecd040e252c215f685ba622927\n6de012f3ce256e9930c7810cba6da248\n8f4c2a7243b571f3b21450114b9ae3a\n2b454a3d18d5efba615debb484b4c30\n41ce60d5443c203eb31c248b8665b2e7\n95fe1f3dec357704e27790b0ec8671f7\n5490efbdadce792f524f4eb395a8604\na682c4bf731e3af2ca6a405498436716\n87e11c9e61442510b21450114b9ae3a\ne682c43e2f4e7463d0ad32b8d8cec005\n51c8f249e778e84a5bae8923b29985ad\nc12da8acb2c7973597e755dddca14449\n3f04adffb69b5ebee95cd0dc8c2f0e83\n9ab18a33335373b2659dda512294c744\ncc5dea482768651ed0e93cdb469eb63\n3aab16309520fb21dc0a8cba62d9a78a\nec78623a598fb6d67fa68300c57bff0a\n9d395454d6de675d2025ebfdd95f4ba7\ncff9a523a9e20eaeb40f0ac0fb9a650d\n52240b141c70e6d8a5901d93c937a07e\n513686d6d63a1d8e577b5d737869717e\n3774a2b8c71e70b9f18a36d57b7cced0\nfee248777c9c4807f8bc1f8036e08e44\nd454f99b99248bf337c99625b0c170be\nc9d8573a048c0e959c0ca344f487323e\nb6c9495629c00419940806ade53ef2f\n9ee4b9c97bcf4b3715dec43ae6a12831\n68b88c0be088c21d5e0096fb2d3266a\n2641f174d2d240ea788a5c6586b10c59\n5edfec789343e0c3319f1c1eee46f332\nc66a19f08d86386430bbd4cddd04c77b\n8d2a4106de2e0e9f952334e469766710\n7f5d8154877887727efcd98cd5f24de\na598b87a9e37a438617c72672c86a49\nd2992fd5e6715bad3bbf93f83cbaf271\nccfc857f35c138ede785b88cc9024b2a\nd9558dccfe8e3381e45ef4135c266a12\neac5ffc4c4a7da80b13f3ad708be4bf6\n5107542cfbf142f36209799e55a657c\nf1787517791764e74b3c42e318f3affc\n9a42cff883cbd358106f706dac6c58f0\n5516e76a34984182b6f6d1d58b7b1311\n49aa713bec70ee1f1104b8f54582c707\n25d40c79ac57891cfebad4f49b26ec52\n80c1f7ee486e7b5aa61649b05d63e9bb\ned948a3d2ece4b3b71a782a4379556c7\nefc684ff4dc6ff49ccd42a2d6eea63ed\nf444df40dadd83e22cedd65b2f6d1fdf\ndf2b7e697ab6ca0f155d75bbf62b80\n8c8efbe62a1547942b90a0fb76278f6f\n951fb0d7ad8ab2bec5b5bea66ef4576d\nd0fad7458cdb5178d3f6d823f04dd65\n11e0f0dfd3d0b22130ddb6ead95f49cc\n8a232028c2b2cfad43649af30eba8304\n5d02aed0e9c93e829b9f2eb77f5e247e\nce2d77c8b0436db4f5d0dadcce96e179\nc826c65111c867ab45a1df43bcd9e471\n81628a0b5f7f9ad7ba94feecf6f7a200\ne8126f9e2d106620d2f33aaf794b5932\nd3f31fd0fc99f45e8b3f6b4a44a70e52\n20fbab2b8770a1cbf51f77a6d7299806\n4702e6196503ff84f1c0e03f321d0b20\na0654bdfc12e9e1ac64aef1ba2bec54e\n4519d91ba59f0267cc0484ea4f50062\n43897195d7f893d759c257be4c612509\nf495c500ef468ea781a172d69c52a28a\nc47f71319ead4eb8a4fb72f4f3b0e317\n28bdf067b9fea968f17e3402958be9f\n8cb44a50906b827615e7ec87bf4cc5ab\n43d38ad2f5d103adf9b9977a2406713a\nd2b9e98373e96afec8d65ca96e6b18ef\n38afa26a419ea3abed040525648fc6d7\n8ec16015c0956f847acc6457762e6ee6\n3853339519aca1bdfcd4910413c446d9\n6a01eed3a575987211e48e4bcdc4a2a3\nd417795442cb0f75593ebeeedbff73b\nb631b78c2dcc748cba5342d638d0c267\ne2c16ac7606317b3e85a21e38833ddcd\n74c06950e3f8d25157f40ff86fe708ff\nd0fa70e45dee680fa45b742ddc5add59\n3cc90d903e0ec7aa61e11d707ecb7fa0\n117bd6da01905949a81116f5456ee312\neb51e814c3f44a07914ced7dab3536b9\n3f7808c221b01668b4d174e5c61f344\n183974726abab0454aa6191ddaf4b676\n5f7615668d2a7b313b8d5c0ebdd194c8\na8dd9990ecd74c45435897641a7ee684\nd50a49368f5d0e7c284432ce2f42f498\nc67a255a26e30abb6b9f3980da0b1dff\nb07c1560f5c3bf20525319ccc5eeb31d\n9a6061dc962c0480ec2a7a1f5fe7365d\n6015aaa9ef170d9bfdef1c01cbd4ae0c\n1b81441b7e597235d61420a53a0cb96d\n94371ddd6d62f7b762ec387b772e9e1\n97d75ad96c2c08268cbb8bac2032149c\ne052eaa1d5bbe795ded10515704c9720\nd13eb19745344ae5fb0eb7e753c06942\n2b6cbad4ba1e9a0645881d7eab1353ba\ne476879972230ca719d8721fec72f0c\n20eebdb573142c4eb0a9829865a5e240\nf36e83dff72cba53ba9ae5e8f97b3d4\nb2ba1569509cdb439451566a8c6563ed\n9c3d7b65c739a618285330f26226f8fb\nbf236db6dfa517aa456cbf78e1e89022\nb021f7d705c4113ac7bed72580dc30f\n71c83afeb7e203e1bb7d8446afd650f5\ne89689500a1e3b95fa935eb36a2e89fe\n688af6f43377f16bc3bd24f986301745\nc6409b289ef9aa2176f028c3dd1719d5\n9a864d5de972a8c7cb686b8b855fed61\n6df1ecffaa0abdbf327289c00b6dc9ca\n735b16d075ad6ce3d197f67767b32741\ne35d7d19dcdc9e5c30e06a011e63236a\nc9d68e1e5309ac25ac57e7d566628472\na5a2d09e5384237869513d0907f19c8f\n986e49bd8314d7424addf6a5f8726274\nb65c3e0800f1c67cf70828d0af10edf3\nb16f1858c1a7c0a65001cb19c4a0eee4\nc98b7e1952c2c7bb85f6153ed2033a1c\n5563067c7c05518415aea01a869de65\n671d34c27cc0f1bf2deeb5ec76cf103b\n4a24652fbf2bed7e93583c67df8faf1\n445d6cef46b853ee713decb1a0563b12\neeaac38269e8f591e55fdfa049133df8\n6e71bcc876af0e319b75b6346baf0c12\nd5360f2b0b0299c29b9f2eb77f5e247e\n7e2ef2a1256f2dc1ebe13e25a6ad0d\ne8788e6f0292f503f4b6538438a0b930\n5d959b0f79a22e8c67c9124d122355ab\nc2956c43f763e135c9bfaa062f2e9d4c\n7293291b3fe8233fdef1c01cbd4ae0c\n5c9d582488732ee0d7f7a4c4609b0913\nb3fd987b330d0d2acda56795a6fbde1f\n5a61caff5d5b3e22424f8f8e828c9ab9\n78e1977bc5f0f4041552c6ecbda964b\n4bc5a889b3ef967b9de7cc399bc9b2b3\ne84b5bbe91e0636cb21bc3cf138f79e\nuca24feec-f0c0-454c-baaf-561530686f40\n48b257f80c7434cb56f6fc4b4ce1db04\n34d3960d35d8d5219b9f2eb77f5e247e\n6ecec258a1b6fe2a6fee8e2140acec9\n328df096e089c4eafebad4f49b26ec52\ne93649e36377a12050e52c25df21b57b\ne6ea5e70c2f29d881e8fd793667dc14f\ne2c7903ad9e8f497a7be81e6de3c404c\n8031478c3fe31ddcc337647acafe65f0\nb30517fab8b8300bfed6ad7429dd8443\n4428b7dc4b6696812905b6e26038a78\nf3fa7bd00b76f6a87a8a6b9421844d96\n3aaa59b19eebcb5f41552c6ecbda964b\n44a2a3952ea2315ff51f77a6d7299806\n4a0b61d33846824ab1f04c301b6ccc90\n9ec08262ef59d69d6412cccabcef91eb\n4c97f421c4ea4396d8ac5d7ad0953104\ne00b802d5b93172741052e43309393de\nc8938f54fecab41e77cd061c90fcdb44\n43f762270b438fe618a36258eabc2b9c\n5ef73c9bee1b4adcd019a8a03d4a2a3\n56b171b1f1521d27291d12adef12641b\n89dd53d0377c28207f7114254c4286d2\nd4edd167061dac5f52a3901fa1436b1a\nd9156f5552178de2713decb1a0563b12\nbf7e8e0dc4f4038cc2567be77cb7ab45\nfb00ea443c74c00617c72672c86a49\n795f38ce5d8519938077cafed2bb8242\n8a845bb67ee8486d6199d6fe090be061\n61b984febe54b752d61420a53a0cb96d\nd1ec6e9b8063b7efd7f7a4c4609b0913\ne6a5c9fdb609d00a5ff6fe84f53e00a5\nc8daa8e9496580667b9c6deef486a7d8\n4647b2b982deda84217ad902ee02afb5\n813be9a8485050571563f0911e3e5fc0\n3622d983fd6d7b98e3a73d090627e9ba\n564f5f96bc718194166420d06689fcf\n862f70e73fa70c9b1a719e2a845bdada\nc67b7b62e529295dfc30525e763ef5eb\nec41d22862df4aa7eca29403b7226aa1\nd7b22da1174eade770bc652a18e29c3d\n77f5b356fa515f1f396bfe08dd5ca134\n5bb5b15807158f71504721639e19f609\n2d44744a7ea0bf724b3c42e318f3affc\n9ef3323c6ced7dfef313a0fb5fd4d79\nd6e0a95f00c7af6fbae0ffb97058b7cc\n672e20cc6ffa29d41c6aa36e5af1449\n1d6faeb6d77d1f2cf95cd8df6bebbc3a\n951f1376751fc7294b87db09ac4cfa73\n1de733a48e5607b22d9c1884c92fce12\n6272c21e439e0205c8687ff9b0b4e4ac\n670b6b7d3fe6e4a77c5a5393686fdcfc\ne31d71ed32273fede42ac999db581f5e\nb899182610c12c78ed88a55f92d81d7d\nc53fa6829ec9a947d13b7d13ee32497\n6419887905d9d67b7d3115a956c20163\n21fb308ca737174e22f2f93459bd863e\nb39ebd5957397e6a5dca6305fb9f97ca\ne09466e9c122dbfdf51f77a6d7299806\n5510d5af1ab5714b3c42e318f3affc\n9d443b06a03742b9bf6931cd2a81bae5\n9a35f15e924e19db637adadafee6f182\n39825fb4341ebd1ccb002c1e2b5fc68b\n2c14e910ad4173a898d5fc0473d00a1c\neeebe3fe14ee4d3aebefe6b1d594ad2e\ncbaca6a6edfa2d512b520984c067934c\n873c017f35957717b56a13a4b2372aa4\n884a239f3dc6a91cad484915511ccff6\n1ee92a9d78cccbda98d2e7dbe701ca48\n3c3b33293af7459f2677042d71d00b91\n93556cf01e19f638bf80985a99195eb8\n88cb38c612cf60dfab50b8ae6c38666\n2ed8d45343a442097869557127addfc0\nbd1787066323c7a64424fc4d3c9cb157\nd9a1f2e7290cd2c3baab0c7159046dc4\n69d6d2835bdf709b6df61a30cc649b07\n73828d9eba46266c4b2e4a0ad7c25461\n284463280e6a4d003719086e0b4ab8be\n283e59109ef763ba2168ec2d80dee966\nfb847cd696ec711197f2016c3d6097c9\nd4f194efb445914e4b3d6a0fb5682cc4\ne175bc785390e8f6c05575120a46cd3b\n47a45ce9fb219083411e8b42940aba04\nc4cab2a416a4537e2871cc0b3cc1a485\nfa7347547e290732bf65e1af50b5b7d4\n5283a98b5c693e64ebefe6b1d594ad2e\n5a95f4fbfbfc55bd93768e7b9b1eabf\ne4931ffa06d7b05cb04cb542e2c50eb4\n27c476533e66bc04b21bc3cf138f79e\n3c786ff99885e95c685d4893e4ba8951\nd15c94b08b5d92e57962800be79c6e52\n9c88f3031c4a660da6fee8e2140acec9\n35d62c8a02fc15b1a2c5a50ad2499011\n404bfa75a054791920e791c9b6d759b2\n477dfe89f1d5df337fa68300c57bff0a\n9682d28e03acd2e3735013f3db728e20\n6621723f7af35f2dcd344c2b2cefcda6\n374bec02e71fe06528b4c5ec471dc963\n38bba5755f7d97ee70205dfbbf1e6bb6\n6d6e634ff34bd350c511e6b9b3b344f3\nfd43278c60023763d4da89766e80607a\n8c76176c82e3e42d283b00891f680579\na7d124f0c0d9b27479b3e1be3524f72f\ndfd92aab082e4915e3d9492680c47206\nd97c5945e9449a58737e4e0df09d751\n1d828c69106609f8cd783766d090e665\nbc78aefe3bbceb4617b431cae0dd70ed\n249f3eb6a7236ff7593ebeeedbff73b\n95e5f6e550761aefe65b629e4a22f51e\na2441f03fed7c13def31f91fe6afc8fa\nc79532846cee59c35a4549f761d78642\n485831d92925bf03f3d7c13662c10792\n375aab9251b2df59b7a68845946bb67f\ndf23ca11080bb439676c272956dad3c2\nd2af105ee87bc66dae981a300c94a911\ne5ce55d61830cc017f1cdfc0a8f38f2e\n7ee09fdece7d9142afdb9a672b7d3b8a\n594d5b7f3e705a1ab3234e0da44b11e4\nbffe3e68857faf7f4d1242a685303c47\n5fc6b04623ae6a9963ed57e35c972b4b\nd36de0f850783d8fd6b3090036b71698\n483cfed0659965ed73c478529c40c4e6\n914c92a6b9d8e7956160139444912022\n3f8d0d53e2bd74124b3c42e318f3affc\nd5939ecbcb583dea9753496ba23f2183\n70f57047512c2eb84104b1c5cb7f9280\nd02eda9e00688d71d0c63a304a95442d\nb987a2ca54c6ddecb74697ced5978572\n7f6858bd9d4af9df97316612e1a4343a\n19c8189116dd7cd3e95c611687989498\n7e6b4a7b4dd60c40cc8bd7a04c9659f1\n79e5eb7be94f5479696b74614952b2d0\n9db73a6184c82d33f28699debac30ad6\n3ccc4efe519087c470ef1a9d40467de\nea572cc193b804399c66df0f068d2a36\n1d6f4020cab4ec1962d6a66a1a314d66\nb70600293bab55c0593ebeeedbff73b\na3688350b1556cbe65ba78ad9601cf1b\n1c758127bc4fdb18be27e423fd45ffe7\n731a357bca179804951c1fffab4f5807\n43e74f15a986eb626a90f735365ac29e\n2c76aaa00e55c26836c07750784b6bc6\n9c50878c91aeb8126bb6bc0db07c71e8\n3586ceeaea45b3598f5bccb3529a48d\nbdd29e651e5f6fb2b079317292bdc5d4\nfc3d4268406b396e71a782a4379556c7\n8e7714615a4b1e6f82390c5f604e0d9b\na578b0027e7d9ec7b2ca3ea77e53abe\n257deb231ce652169f2349486c570dd4\nea1bfe81b88395fcaa29e9f0529e8ef7\nd6f2d44c693d2e857062f2d72cde5c95\n94b779e6bdf6c3d171a782a4379556c7\nba9ce924d452795f519259b5fe9bdf5d\nce1237c5ad42dd7b737a00f007529fbf\nea7be2b97e78d5b35a4480134e0cdd21\n9e9dc51a4e0db2e4c3bd24f986301745\n3b2710b509c3df0ea5e8cf3aa1686d66\nd2597d18fdc3594e1dc59d2adbe5297d\n971539fb57b476d5c40593250b73d0c7\n5ce323f8499cf60ce51e3cd2b72fbf02\n6072a4739c12979baa69dfdc5532bb13\n37ea477f2b894c6ca72559fc4f86f700\na1133464132d65fcfce0ccdae30f97db\ne8eedd37cb054e37b59d74a7c956bd18\n6cd8056d4dd6b3c799b17588a5699c72\nef76b9cbf76bad40586ef70b3cee4240\n27f4207dce674969c3bd24f986301745\n5eaa2730f10054d0f6cabe1df6f4c9d9\n4e26eab28703c12bdd5f3f2440a93d21\na3aa7e473a8059133087f84b199fd297\n483d22dbbee32ee54e5c7d89bdfc49a3\n97bbc8970b05c4a3fcde6bcb709edd9a\n2a75b2bb82d7f77c3f9d6e0ade5188b0\n8778c23fd21bdebf8a80d99ff4e76c20\n9c8d3c5779871705d22218517e73100\n3a74e3d5172ee94fdef1c01cbd4ae0c\n4b79197258fad3363efeda73d60343e4\n1c9d7e56ae8c90c87ac6ce513ae497d3\nd7e26a070ee3b35cdf6cfab91d65bb91\nea281c9e968757dc351f7b956f3bf26a\ndf609533cd186278398c7598b0d2e5d5\n2dc5055b8d900ec7db4b0ee93cf61ed1\nfd2fbaa023b5e3a81718a174f9ac28ba\nfc2a1c4c332f7731e45ef4135c266a12\nca01fd0de2534323c594a0e804f37c1a\n312b3fc351fc0998660e7db8c993ec8\ndef03f645b3fbd665bb93149cc0adf0\n6caccdad9f8d4f0a7f1cdfc0a8f38f2e\nf4f1aba65ebe48eb70930286c914896b\n7f271ecbdeb7610d637adadafee6f182\n2621666fa21488a4e922ceea1248b9b0\n75d0664363f418efe461a9a9741d9415\nb33a3b1627ad61eb8ca4809dcf42fe1\nd915d2f1664bf76e71a70be9f12ce8b0\n804cc836409c921ea666d560e4dc80d2\n2bc587e0b4c0a0aa5a99858ad1805187\n56cc047440e7c999a23949c21eddef76\nff034050f7ca727ea64c9c407ff9dbfa\nf2dd3bc7d6c85a8f2813aa30be7ebdbc\na5898fefb1733333a82b0d8d157287f5\ncdf733e544e6646f9b75b6346baf0c12\n78c9204b2eac432b65b77a565916c7f\n17aeeadccf0e560e274b862d3a151946\ne6c11fed9469141ace8fba09dd640742\n738395f54b301d80b1f5d603f931c1aa\nb1adda06d8846afcb96f0049223adf04\ne803b31e2185d0405784b22e1081a3e1\n5ef3e4abd4386c8871bc6030acc85f1e\n74cc57ea0e2e06dbe4106b1d06dc89b3\nee665ce6679ac8cfb502ac2eb9128f9a\n2a05ae00b701fda36567137a59cb1a56\nf2e2993abf4c952b2e69a7e134f91051\ncce9ffdcc7ca8ddea300840c9d7bfa74\ne279758e8a5b6a8d492d9da2668ec34c\n17883ea5a837f5731250f48219951972\n956063d67b939431f56aa11cd5e0c3e\n6a9dce6566cd61652b339ec555ba3bfc\nbe0c5a0e91c99e804e1a714ee619465a\ne4b40369894a16ce6821a1e68ba5ebab\n525776b59266140381dff5c2e57ad46e\nbb0c057df2dff54fba4b91e89f6f35cb\n8ade914cd21b6e49656f29b05c68d39f\n273fe8996937648ac8744f5d8b9af88e\n31a77c04ac5df53e9429176ba100075f\nd2815e678f173616e6cfc789522bfbab\neafec1b145972dcd815b2b467e8e2eac\nec9f1fc13f2e4ae2c3bd24f986301745\nbb90094030f369e4305a3b2fd9173d6f\n5695fd37d1e673cebf964fc57f6a7d6d\n2f0318b23d899a84493f17f4fe9b9eb2\n3010d6ca1b1e8ce3bf54ca9b2f215141\nb80122c3a0543a7b7eaeab1f0c9120b7\n8f226d6b3089d3b7bca860dd9b04c52c\n2a98a638f675f46e7d44dc16af152638\n517880899d26080471a782a4379556c7\n815f436a40c28da51f56aa11cd5e0c3e\na3ce9ba74ab50352e6fe3612af521500\n80dabf9ddbdc92f681806e3880250dff\nb267d11790325e6cec7cbf3284585a40\ne4274fc2b9e4a5511882515d09f3979e\ncd5ad4afabaed0d3e762624dc3c8fa2a\nf595abef9bc7320944b2fa2cac0778f5\n9343df9a7ed6cbba1923501fcdd899bb\nb41aaea5754adae0444b41d6d7f557fa\n8c81ff18e04584547f409062bafc8e2\nd6da5457b0682e24696b74614952b2d0\nca1cfcf4d5060ead8610f0b48b38e644\nd7867d215f52107ba5e8cf3aa1686d66\n35053caa62eea36c116cc4e115d5fd2\n3b3a9f4e3aa9f2f4d39a194653571dfc\nfd5ca05b59b30241d838ae16242881dc\n40e73a326cf95d0361c93c4994c91bd1\n47c540c2e9c3483ce79a6b87656a120a\nfaef9e4cff5fa61987be36ce60737655\n6251b398004a02fffebad4f49b26ec52\n76d5bec920a9796a5e91295f1f8b2c67\n30fafef5c734f926781ba0fdb47276df\n2bd045838a2282ab5205884f75aba3a\nc5ee6b77f9f84adeed52100e321c9f3e\nb6457a76f24de9f67aa6f8353fce2005\ne1897a4391784bc2e8b2b8dc0c816caf\nb5877df9f111bb91222f2fee97f8bdcd\n948f1555282e27da190c615a2115d2f7\n3a5c8d46fdc6793b956abdbfba57903a\n18fd8342fa5d1d4f5268b70948af88b2\nef463d298bb401b3ce1493daf6a835b0\n7a79fdfdd72f06e9f8bc1f8036e08e44\n8b8fa92f9c677b0713decb1a0563b12\n4b3c381658cfe96d4db79ead79f57b22\n1d1c829a54f0ae426cdb122727dd360f\n6e98c5d61e008b4c2871cc0b3cc1a485\n54e9203b65ca4989bfac64b1ae78ad6e\n260768554aa1a64f2180a9964be89fad\nd4d9b991ff7d31e8c8687ff9b0b4e4ac\nf09af71bebd4bea8a2651abaf391628e\n3d3b7f63f5525b1ae37f5a622d383617\ne6f37dff25ec4ca4f815ebdb2df45512\nf23d3a85baabd7ae32d9baba75737e72\n2e0b6f6d19078424c3bd24f986301745\n7275cb0572b1c0042725cbc5586c6d7b\n1049953406c81b237eaeab1f0c9120b7\n6db2255a51caf84e823e7e244bf84209\nd51112040176efccd5cb6d178687b980\nc86cfe147872280463626070a93463cf\n3f4f1d18c61a07f134b707eb14b2a4a5\n408631c881e3b33cefb90719a33cc920\n98a1f8651c962402492d9da2668ec34c\n884341d10af51df9737a00f007529fbf\n8e5568ec663ae1b7e7526b618f37b43f\n758bc4143fceac844224ee0743294f79\n52a96a3c89305673504721639e19f609\nb0531a0d44fc22144224ee0743294f79\n46789c1fb150dfaf51f77a6d7299806\n4913388a4c94547a81806e3880250dff\n2e0beb3b6927a2b7e45ef4135c266a12\n5bc916f8b9d0a7c6b40f0ac0fb9a650d\nd49ce87d43cf4c8f1679065e1c457f94\n91819d15c2c044ebd47ffa500636d198\nbbe36f91f3f0de06fbbc7c456d85ce59\ne779cf261cf04a77acd8c40fddcf9ca\n708e7ef3c2afc842febad4f49b26ec52\n89d62702b266b20a58a2d0ecf7ace1c2\nf6810de4042cc5ce57bd4bc6eae9b341\nd7e4851fb3001a10f652f706160dc96d\nd38129a3301d31350b1fc43ca5e85e\nfbddac94cfa74a7b5c0228148b88226c\n93a6876247c7a015d84b8ba651dfb8ac\nb998016472e9dd7a9b9f2eb77f5e247e\n3dc252fd90d82b18c9be65dfbd21428b\n659a60740eb6bfa930bbd4cddd04c77b\neab859ac65d47f4e6412cccabcef91eb\nff8efd10f5e6c5c7c6c0380e62f2644\n2aacbdaf7dfbc5adb1a98fe8994d06b6\n892d8090f05c136dd93768e7b9b1eabf\n8c2a3ae39c683fde3ae7d83fae2b798\n366118e316f03a35327289c00b6dc9ca\n26e8033e59a3adf6bb53a6a5f5051240\n3ab3c9d99fcaa66bebd676e3a69dcf6\n88376e3d3a23d263de29d28278a34a18\n6c25ec1178e9bab6e545858398955dd1\nbdd57499bf64fab6bf80985a99195eb8\nc4a4710012ee39bd19f4b416b31c46e0\nbfbb19b74bb5973e14de2a9aaff52ac7\nd9aa42439dc6f1b1c63608961819b578\nf0ca6f9383ee9aae517376ab44a447e5\nc6cb59e7645dd14d661ff085a0f14b7\n64fcd1ba0df5d54d79b3e1be3524f72f\n893c689b192bbe33ebadcdfba7971b71\n487040c5fdc68fdfe6cfc789522bfbab\n400ae609e39ff49639d5fb08047c894e\n3c27660aacbcf99886327adaa986dff\n6b91f4fb8cdcd6f46fe24f5659031935\nccc4b5366a6dc7c4cffab2c8f8bf5951\n7228d43e00af4c1e2746490e2236e9a8\ne807c535765fbbbab40f0ac0fb9a650d\na20df07368113438ac59dcddec3b075\nca3670f77268f899febad4f49b26ec52\n6b7a74a6a77b0699c3bd24f986301745\nce463d63d8771c5ccf19858fd1963d10\n4fe20ed873d1a80e21d25a6a55757584\n4c513ea0804fc008c8687ff9b0b4e4ac\n85be4b6c37bd1e801d45bcf0f68506fa\ncc6840207c0cf55db30e42459dcb06f\ncee5c4ec2b284e7317b431cae0dd70ed\ned97d1c954fca49851ceffe90913a32\n2cf7ccf97b09187fcb7547c95fbdff26\n7ea38c936513f5df3772b104757a4809\na97e09489b46f7492933f312813ce997\n2c40da664d4e736b972d35c68e1bdca3\ne401be99c5a51d8bef8e9284f76f3024\n5ac8b44ff77e5490c8687ff9b0b4e4ac\n1e304b967d5253d5dd079f8cece51712\n85c2609fc7a511ece32cefe0e484fed3\n3895b96949fd81c5f07fee5fc5c45ee2\nc04660caf4670baed40fb6f8053555de\nec00ee8e8345be7a852028c7654a8ec8\ndf8440d8678f3a91c8687ff9b0b4e4ac\n74500999671b4c99d7bf6fb68df7f786\n1a8bbf2994788e2743e99e0cae970928\n1e283319d1f2782ff2c92c2a4f65876\n60622d74c0712934a5817f81a1efa3cc\nbc523df998d94c7223ac0bd64c9cb255\n2ae1dc95e09b858128fda76c378c923\nf29cbdb2c7bb10f9953d950bcd7de7a\n645022ea9ce898648b442b160bcfb7fd\nd324baae6630d7c8fb60456da917147\n92f79b8e45269847f0efa341b439d741\n2c03bcb2a133ce28bb6caad47eee6580\n3d32d89db2286377e63c6421b71f17c8\nb24ed89d85b74771216fff6094e6695c\n383ab6330284af461fc4ae93e00c18e5\ne02949c5e582d20682574dfd1b102fb6\nb38d05caee69c7ac8fc6229eb64e56a\n4a12589099b05c51e13b3410f3683610\n63b2f7846c561efc20768660cf080d12\n9253f198c06794cdc7689830acac6e59\n26aa22bd1da8b8c5b1a5c6ecbc81953c\n8fd6ca8f2d0ce46b846c0e4d54382ad6\n2783a969fa42cdecbe31379a5751d820\nbf3f14225e8f899db62f9fb4b7f0626\n95e1571acdd75922afdb9a672b7d3b8a\ne2a7604ce1b5e6c4c3c6a889ee0bd115\n1e44e3c128b667b4fdef1c01cbd4ae0c\nbe0890a6a0f3fcf841f91bc9e1dece3b\ne467cfa616850a4a990561fc34164364\n3dc8243b17bc790620768660cf080d12\n8e678a54f2ee4e5e492d9da2668ec34c\n1767c5e3771b0510f5225bf5a419e95\n1f83e49ecdf209ddd7f81f50826c13f0\n9225e57e34334ee019cb07ecb5b4102\n88042e6d331ffba0f63e8e405d49b8ce\nc535629f9661293dc16ef5c633c71b56\n6fd76577d0df60669b9f2eb77f5e247e\n1b4071814d1c1ae6e2367b9e27f16a71\nef3377832d90dbbacfe150564cb24aad\nbeb4c42cfa1c3b282811d30bba54859\n7f8d63acb7b4b5e84d2f52566c6c4e9\n8b39b501c9fa4d349b9f2eb77f5e247e\nec25a41ca233ed096e5a467428553af2\n3f41b4339ebd59c1c397356311cbeea4\nd554adc917b635c0fdef1c01cbd4ae0c\nfc97c771d058556f593de14e4664635a\n5822ae77b06bea3091da37ff8bdd2524\na3ba5f8fdc8f17ee95bea7c29e873d16\nd58df0968070bf3b4b3c42e318f3affc\n9c3e53d9d1e653c0bf80985a99195eb8\n3b1f1913f2bc0dc171dbe96559c7bcae\nc4ebef05a72fc4f39d62eb3fdc2d3f8a\n4bdbecfbc925219157915a20ae9ec6b6\n49a3b0242c13f92da6fee8e2140acec9\nd4b5f8edc72b4676f4175ee3a177350a\n6829ec525eab85671f2351826b1ffa67\nefd0411eaf2396c4de7ed732f5aeea4\n7238d2ade707fd1e6c63b8b48495261a\n70f1f85d47c970bb78dd615a59de5f05\ndfae4f9155877a1ef57b53e86a4ec824\n577d1c446658fdc7ebc935c637c3e3a0\n403b4eb7194f563f79b3e1be3524f72f\n508306f8ddf1b54c41cc9e8c39b4e399\nfd5ac9b342fe518b9d3ea1c6b57a0095\n46f6a6e0f239282fc8687ff9b0b4e4ac\n8cb34663a9e42f95c3bd24f986301745\na1213da0e7efffcafebad4f49b26ec52\n8117c55b8bbdbbc54c5c5c89015f1980\nee5ee3f6759aabacf2f43e6f841bd32b\nb884ff155c4117a7508dd48e67ad44bc\nfe5310a3457bf0e5c4e8952b27b5f370\n55e1cde05a99f6c7d1d34366ca81fb3b\n3ffd794e5100258483bc207d8a5912e3\n5346017af72c1843169d299c5f567c18\n3126c6e9277b775b245ac1812a4e4d0c\n1f8e18d42ddded6a4b3c42e318f3affc\n2d711c85c60a0785c3bd24f986301745\n40e6fb27aeb9c9ab44f999802029a79a\n4b2ede169dcc83ce4591019e9d133858\nb360f2264526521f1dee989d1177ef4e\nc46eb7460be602b6bf80985a99195eb8\n271012d5de261d08101accd22c701b9\nd8e2bf1107567774504721639e19f609\na91b2c89e543a4b3aa3d970c5602cd4a\n2f6b0ddf12d1311795bea7c29e873d16\n40f188600cf8362b654ea6737b0d3597\nb34b1a7cd8b645829d0103304b799f18\nece1a921c1bfd44947f5e245ee376525\n20627f21d8681503f2aa3fc45e8202cf\n49795a9ebd9a9c6d2c697f0a1454869\n46bd3baefe788d166c05d60b45815\ne65d2f0ed75a786a37b2bb75885cfc44\nc1b64fef5f3efa0a129905ebfd12d5cd\n85ce56c719ed2a1df30b232143ef026b\n323fc7b1d2b44cb7ff2b8acf844d34d2\nd708c7ed9201ec45d29e20ec5f479208\n3fdef0a7606c397331ad067823a3f0ce\ncdc2a53559d3db78febad4f49b26ec52\n4ac17ecd78880859e302b6082b0ffc09\n5d3eff6a1b9a119da011ccf7cbabf68e\n6a28919186eb55ecf69d0cf4fdc89b12\n37e2b82d5e9dde21cbde89e0c48a01bf\nb8b5e172ee58899df2d9e72ba502035\n77ed9ca45b928542266f89139e159db9\n63e2d9ab50536799b2b9c1746713a87e\nf3573756e64259f2b29d280b4e59c527\nfc14c1aa7831f4cbcaef18b2fd3fb17c\n6f7a337878543c07c3bd24f986301745\n112cee32461c31d1d84b8ba651dfb8ac\n9b6f17ce2db29c4c9ae35d137ece64f9\nbd0fab2e72b445bd1e722bceee6e83aa\n52310bca00e6a3671201d487ecde379e\n4e1948cb03956c9079b3e1be3524f72f\n4206cdb567679c0dd197f67767b32741\nea87765cf9dbe2fe55f46d55537192b6\n3c81fab5678a3872327289c00b6dc9ca\na521fba02ca7f9aa822215026d1e8d82\n11a06e6f68b1d99c8687ff9b0b4e4ac\n4030ea84b560b857febad4f49b26ec52\nce2ff5c3a103b2c17ad11050da24bb12\n6534f04a1c349a3c8c6540fe6bc16d6f\n8e19d2ec95c45186a6fd617b2ff5d2d\n5d346bdb7db27accf3588493d5c284\nd90e76683d11f75fde11596dfa0db02e\ne20a22906784e3d08758c89c2f45caa8\n704179dd47a2282e676de9b6e111da8b\n9515e377c1ec86529b9f2eb77f5e247e\na7200578bd7bea065dc3653f8341633a\n2acd3a3e50e8e068fae61b8c1512b8af\nf23c1bb951fa8909bc01640b1b5116e7\n9582e42453da574f37bf42a4ca375618\n3ff879e891701079ea07bd8096c66582\n9c7b2ed3770d1a6ea6fee8e2140acec9\n98ac0106ad244505e04fc3fcc1c852e0\nd239d38424429a9a4626612b5d655dc\n5e706e87ca60bd19ecb01bc908e8cea6\n6844180c300bbf852edea1c2bfa3bc56\n18005751014e6ee9747c474f2e537e26\n984900a401b412368412406fac9aee\n5e5121cc58c4fea78ce66f12ba927a2b\n2343e2c4fa69f33a2ff834514c92e8fd\neea2622d5a8ad64bcb23db7a28593905\n3a1b54325b3565e72ca4b544d68c52\ne5b8d52826245f3937b2bb75885cfc44\n62d87dab8cb3fd16c050719ed29b64cf\n8cedc8e684d60ff42a06d8c81262ef96\nefa83c67ce47bfca304edcf7c4314468\n3eb60e6679d1df1dde7eedbb2790491b\n5d20adaf6d8f89fa2f1c10544d7d6f\ncbee0f33a45bc8231adfc48ece0d7031\na08ad49c281128ea53615647c93fc704\n428b77d0ffe6ab456e06155d245f15d6\nf5f18fccf9e16800dbd185de408ea209\n920af478601258e24762da3a3017ade\n285931af369b12c2ccd42a2d6eea63ed\n61d29e8133da0b58d1fd43e2bf80195\n45833f137eb7b1fb77591d1bf8931b62\n34898c36e711fbde713decb1a0563b12\neb8d2003087a27cf63e9f3319eb5ebb\n98e1936d3f25389bc3c6a889ee0bd115\n37ec57f6376fce6d19fb4103277a6b93\nd1b03eeb33fd441d8189e5e3786f2290\na128eda00983dd01fb7d9615be5ab4b0\n179b88264e7f96468b442b160bcfb7fd\n8e664a0bcaf9d2a45ca1aaa0789db621\ne0df9f745fe38b389bac1502ed0eb150\n8ddaa112e6ba36b5b1e23c7675c49239\n6b9c3d42724275cf7a5c8cd74a7bc29a\n43f222e3b4b0952c1a4cdca72ed38d39\n17e916fc863540ee3def89b32cef8e45\n5073d7a546b9a4d0e810eba61b778ebb\n697cfbe6e043136b737a00f007529fbf\n49c955a80749d2e1a5ffdf44ff86b795\n7ab99231f6a6cc282ca32e2623a35d99\nbce7ff621a5440bb34ee5c94ebdf7f1d\nbd6a8b133fa4d269491d6cee03fef2a9\n1ab8a3b55c14a7b27eaeab1f0c9120b7\ndf7735e2bce09a511f98c0761af40e04\n6b385a32489bab4abbc7a6acbd8f058b\n18052e6175456b9e7984fb9ec7e40829\nbd6a5c01b9c6f17a82db9fca4b68095\n3a52c8cd645f40b4670786463e520f4d\ne94089cce370e7d1aae894b47cf9777e\n36cb782fbc164ac312591a3ac05fadf1\nda5aa9fe015114731a1272c8e47f5670\n42d5b7df0524a3aaf785f45147f3e474\n22b8498e1ee46520737a00f007529fbf\n4362e715455f42ba9b9f2eb77f5e247e\n174019d47144a9462fa77440dcb93214\nbdfc3a43eccaac7e908cb3a44391b80\n66f18d05d960ffe0bcd12732b5a4b789\ncdea84a63ad8c44febad4f49b26ec52\nc2b898dd5601454d626d7e3d07da8352\n798a46965d9e0edfcea003eff0268278\n9233077bbe6926c239465fa20b0ba7fb\n631e102e9a689339b0ec386df15ab64f\n3885255ca5d75e69da2260dc4a1fc2c6\na6ab184a68bc67d179b3e1be3524f72f\n58ad100d70e436bece93f2bb0b6d036\n369caaf3ee33837ff2c0848478a667ca\nbb5791b1d4cb5fe81c1b3b2ed8d13bf8\n9850d225049f987e9b9f2eb77f5e247e\n7f73cc6c1c9121a9b9f2eb77f5e247e\n5b3fd3199d1bc950c1ae25a29e9d46d3\nfe99f16c2532cdd07ba99ad16fdc05cd\n507a5070cde81fd867936ca58e67cec6\na32febea4a0ac30171a782a4379556c7\n4275718494dd309bc7d25fde6b97816\ne696f4c7cd88b8b52ff834514c92e8fd\n3ea40a75f22515557dcf230d8b7d162e\ne45fb6b81247cef0ad312873b158ac49\nf5d8dd0309401ebac47a35332c17cce2\n6fd485a2345c3dd69233bf560301e53\nd73e46e07bdb3fe75fe4ecea39e8bd40\n1e276a016b664e424d678187b8261d95\n1e0580f443a9e6d2593ebeeedbff73b\nfc7d038dc7fe2911a75d03186a0409e2\n70cb8d70d961ca48b04cb542e2c50eb4\ne3479f55f5894bb3c7f1f7c0570e288d\n41896e1532fe1e63bda72093f9b5aa73\n3b4292989394ba62f51f77a6d7299806\na5f300f3975497fa9dcf2183c858e6e5\nd1237422881f4d22ff25b0c2db862d19\n5402eecc67e489502fa77440dcb93214\n4c0983329afcd06f730e89ca0d2d13c3\n1e1b70bdfafb9d22df2fa7eaa812363c\nb8f4ce34b44620cc9b9f2eb77f5e247e\nf229c56eca8c0ecdc3bd24f986301745\n58409b308683d908ca2bec46a3b47519\n46557f689f4cf5dd2acd2bb6205825cb\n71372c1f20b6a04c43c40c5aa3d5c5b7\n4019ee7cc7cc5f9e74dc49346c29fd4d\n421472e991acb24490267536df1b0cc6\n11506b96d41f7d3dd7c4a943f33e0384\n3776f058b918372899b00821ae388810\n3c8362c1e57c30d7e6c5cd45aa112726\n30beaf15d2d2beb1febad4f49b26ec52\n40d202afdcc49c6d35836c728d324152\n72da26fc9b49ecd3c3bd24f986301745\nd4f5c3e3eab52d0a3334fb6668ccd834\n9d28a066df22319cca2e16d6cd76503c\nc585ee093bfd52af6512b7b24f3d84\ne2ced471afce616454bfa32aa0766acb\nfd9e909b082d8175d319c38340319ae4\n8d458ab12073c371caa2c06fded3ca21\n197ae965385b8187ae663e348bd216d3\n30bbee7ab9026c5e4b3c42e318f3affc\nd5bd6ea417eba6ce456cbf78e1e89022\nca032d3b6dcbe1cea3056fa1e8da3997\n58867a00409c47c0813a1237d2827540\nf4b6bf9253918b52944d8f8e13d63fde\ne2dbad7996e7e13430c589758b4b5646\n9bb6d3d76d4f5ba94b3c42e318f3affc\n2af09bd8df40506c9e646678ef50aa3d\ncbc9014bb6ce3d902ff834514c92e8fd\nbe1ac2a0b4c75bb9940806ade53ef2f\nfa27c1b8dac76b6d1f285be552b78f9a\n3684490885c259e688235335f9e630b0\n3e1a5042dcff313971a782a4379556c7\n71b53a5f441d45b742b7e4c0136bdb7e\n2fed64c67552aa689c1db271ad9472a7\nfdfedb5bb8cd35374233148ffd345970\nbb9efb4912a018b3c329e2758ab09ecb\n550dd11407c28f9f3bd04286517a8395\ne6daa4f9485362aa37ecff2686b754f4\na6420c4ed13cf628945a77b945b7b70f\neb6e55bb557701e37df0e9a69c97c97d\nc0857de5101f704f3c5e1addd9922bf2\ncd238045ebff9be59186f15d520c12ad\nf0f04644e071d9348ca588a3264b9f86\nd095dd9f3dbf4083a7e870da1ab2a36d\nd8e2e2a923b372731cf97e154cc62f43\n4231883e92a3c1a21c62d11641ffbd35\nc166f67f391022d31205bd848315f04\n2a1184b04dd8f30e3e92f39ce48d644\n8eceb15a3c79b1b8719d8721fec72f0c\n597f2b2153af0c544aabcf2a7cb640f9\nf9e386d968653602d68fb8f5d99affa0\n79a3115a6f96eef7c151419181ef256\n2b110b833111b38c420adf24e49f74c8\n54a6748359055b5ae5e2f0eaeb6aa550\nf5caa9b5ada31a8b3cf15c77de45986\n8a9d8dad6800d55ff37af16b2893f1d4\n1b67a3a1101a9acb905477d2a8504646\n9d9d69e5f2bc80a867903707764646db\n657790bc7fd16326c132086242d50af2\n76fe7cf10c5dbf1edcb466b6f48b5810\n96c0ecd1ef80e818c8687ff9b0b4e4ac\nc7fe45610d10cb108ad3a7d07aac2767\n918145be863f7aeaf050758b903e6054\nbd504539074e453721a08935eb37d792\nb058cc77e628ac01c433ba3e0e025e8c\nece627bd883d9bbfb0eb7e753c06942\n1c173d970e21e9a8be95ff480950e9ef\ne6a4d6fbdf722dbcc6ec74cc40a0a09a\nb117b01ab380362db8134b0fbf68257d\n95317d46812e4ed4df5aea2392d894b4\n680eec559a71dcdba023804ba421cf6b\n807f08096308af5e28c0cecb7de2397a\n35bcb52fea44850bb97ad864945165a1\nbd98d493766949a8c05575120a46cd3b\n2bd6800d64c01d677721fafb59ea099\n99e4c4b39b75a06b30e06a011e63236a\n3d9dce1953180fe6f9c9f9697d1ec60\n8d2fd4b9c583e1e6a12cdfe22cdc2f5d\ne199b1f6a70c9f56df44d20a516c07b3\n9e0a0ad80be6df7789d2595edb5088ee\nc4912ddaf24ee0fe7ea88ba060407992\n76283716a2c6586e266d673a6188bf4c\n59f1f818fce72660ac285e4454a089f0\n31569815c88e79de4458bae25a4e518a\n28bbb851dd01a162a5615d35d4766b93\n47aca56ff3a7b8a71a782a4379556c7\n8be8093e99b94bd9cf320c31965db5a1\n40e5d8e71ee3902a31358207d42bcb21\n19d7da928d179a07febad4f49b26ec52\n93001617daca67ebc8687ff9b0b4e4ac\ne19214cabca496a3f7b54e04c7238d7\ne22e9f5088838675a72559fc4f86f700\nb1f50d8d41a8c53b6197fd390b16d14d\n86fed830cd355f591c0f52f4ec8b820b\ne53b07b648e8d041107a17cfae0b6df6\nb6b911aecb417295e8f8c11a24c52ebb\n595379651cc8199abf3c0fb77f1e5110\n548ab6b6e8b2dc505ff61a3a2a0e2484\n590d04438aeffbb58f447453fccbd9d3\nff5a945aef7a68ffcf9ff3ee543c2925\n7ebbce44a6001e71268677b0fbb8a262\n7929676e756dcd41577b5d737869717e\n80f9fb95252e6e535bc104fbace43d56\n26a6ce644504c5fa22963ea1e168015d\nfbc87a27b5691196bd3b190b59dd9fb7\n589cd6a1f4367fd834b707eb14b2a4a5\n475e2c8f7a2c1bbd9acf9a86c283d1a2\n70ac5cb405df84575e62305d14755686\nbcdcb4928e07e4174a623eb2e3317415\n51e14c516e45ec3b18ed59365c9648a7\nce242d5e5e3f4befb13cfeddf8d6bfe0\ne2dbe84030167f1ca5aad165050e534c\nbb7755090f984ba85dd1bba5b1310523\n226704c72560008421ceb39dc3069834\n975ea4be01c7488611bc8e8361bc5303\n7efeece3b5cf2853d706779c93538ee1\n1b5e876f3559c231532a8e162f399205\n75ceda9606ede8d2ea98d69e91ba870\n593f7c848e6246ad8c37cfe791015e2f\n9dc454ec0b5b7b50e45ef4135c266a12\nbcc4ea0133864bfe4d4c0769270d8651\n67d296fd51dddfd4bda72093f9b5aa73\nbf89775d876f6849f2b7580a739cd4d5\n63f6bb7487f81a03bdfa5e0753fa3240\n6c554635dcd6123a35fd8a41e49d8421\n2f282d5e4f140119e493511b69cc95d0\n1ac6531a337de85f2f7628d6bf38bcc4\nfa8f7c225d3b9f1def4a09e7eb872bd9\n9ea39b8f5a9b88d56eb9b08c8a74d159\n379f0efc898d7a7e9fe74a48bbc553d7\n434cee44934612a81f98c0761af40e04\n98d37b373c0207915dca6305fb9f97ca\n7eedcb6d76b8c23a9cdb421f6af95e5f\n7fb336186da77367962800be79c6e52\n22af872ac796ed26ff8d7c1096fae070\n4e4570768f981ca7b95617254e8005c0\nc80c0b8107583898c1956375af82917f\n61d313bb88532dcb74039aeb9f7d295\ncb8f3b4355d891514a87d579b680d4d6\n763bccb675b7439ab9afb6208cab1d\n4499729e53c858ae71a782a4379556c7\n1c45b266d3c879dab36dcc661f3905d\n3ce9a0301f36ecf4cb32c5fb502d0e18\n2ae4f1392d44ca24654a275ea978255\n9a711bb7070ae88de948e3d64826c640\nbd3941eb3bcca6ad9055f83d11955109\ndf8c98028d8ff2435dc3653f8341633a\ne158f7ba6828db5c654ea6737b0d3597\nf33b6f791e9d64387d01b77e04a0bc7b\ne93714e5553f63619215045784774049\n440e02f574afa478ac38b834d5dbcdb3\nb44d32061d313fc1b7a3c315f744bdd8\n9a41550ba7dd31e3bf80985a99195eb8\nf3f31db17715ee0c327289c00b6dc9ca\na42aa59fa23b4a4d9c0ca344f487323e\n1ec5a88141aefca9cf6e4dd7ee69d71f\n69709cb300ae3784ee72e5c46412e9a7\n66b7533af3449aa820b64028d2efc877\n458356b9c5a8d7bd7cc86734cb2f5062\nc6b6f0e604d6a5fe78a7b08b50e4d193\nd29445f24bbf1b1814c05b481f895c37\nfdd21f7f2ca9f0bcbdcbca499b446e89\n452115e132539be4daaaeef365d8f6e5\n81ba38f4d3b7eac1f82a35e8b19afa86\ncb7a4324fdfa690e96dd43aa0ec847c9\n93dc91115a9002e1663fcfd6703c85f3\nff02a89047d6eca2f95b04490c0648a1\n43c71ca7f9d3dceb8b0742c681b435de\nd29971cef754cc91cd8c5d1ba690a2c3\ne30bd575bbd6c68c9710e093c764abec\n6aaa9bd6e835eb0f9b9f2eb77f5e247e\n8191bad981637a71b356ab8b24c147\n66e37e1831d3e49843638dabe1eb5336\ned0d65c68a1fa5c485e2f8b1d3a373fe\n37607ea19e352af4fffc97a61124b1a9\n97b3a1b718278c09bababe11fcea8796\n3109a0b9f9bc5fecb4cd1bd556007aed\n195464ae11f6bfe1cba091e036bf65ed\n96e8a51b1680b756e99481ddc3bbddfb\n8b5f8b83715a378e473f10e6caaeca56\n56f9ae090d2fe856ad5067eac75a07f7\n4a89a789f817ab5414038d588fd1342f\n439418b35f600f4bb10dc0fca58d0b2c\n7a962a612d7cd0feb7611322d07bb05e\n85b16941984902f8facfa12c7d71c89f\n9fd6bb18dc21c70766ef9dd2f3ef27d3\ne56087cd55cce8b4f41a4361d0ca9bc8\n866e1be9f53830ed7a6617a3ecd0b52e\n6fcb8bf770b8606697e2a21b8bc2d948\n6870fbd4a7b733b0674f1c30a8cad95a\ncd06d0034224a701fb7c76304cb719f8\n48fb419e9273c10a936e8f01c80c6ffe\n67ce9e1ac8e41027bd16d4490a10a752\n9a8dfc7a6831749f504721639e19f609\n59155eb9123a9aa330bbd4cddd04c77b\n5a3228a34ec0572b4b3c42e318f3affc\n5555c24767e66a3384633b41c8a09fa0\neaf5428e15655d0b3c8d0fdfb1cc2535\nd7307a92178e74e055c774cb358c4539\nb92bfb13727f6659e45ef4135c266a12\n7114ef00fe68d053cccbd142483bf2e7\n3526528270d5f3f766268502c798b9af\n9fe840a156a5647c9ce67e77fac3db9\n43290694390ad1adfc735c9ceab0161a\ne14e8241e0bb563f64810cc21086da42\n758b4dd493ebb4b34ec0aa53d814a8cb\nd80ea722df716bd0b15194162f658e87\ne1623d4ae16bb17989e686021e3387cd\n1886b3e3f3d4af3ace522e6dda26fb51\n7f4f73ad1b3f882ba14472becb07b261\n47caca00f993bc4e4b3c42e318f3affc\n6ec4d5fa96861bcd70311dea98ba710d\n28b605f55e21acffaf88fb4321b22872\n60790035c8126a677645b4fdaedbc34\n99a4ced5a15438131ff008919d662aea\n465ea1eb1c76c1478d1fe8cdc415f4c5\n6c7a07030e673b0b9c9eed7651b77d0f\nff9915c51ece4848cfc689934e433906\n5fe56a4a9d5508c3b2373df00b89e5d\nd561ff6788ab46517b016084e2ae95e\n2df8d2af1bc4b9972056b4bd5d870b47\n490941bf4a532b62492d9da2668ec34c\ncdfa898eadf316122056b4bd5d870b47\n1fc918b0e5c7cf2da5c25aecef10278f\nf4b141ab64a6c4e771a782a4379556c7\n52d747ca443134da81dff5c2e57ad46e\n37b432326fecc8a1327289c00b6dc9ca\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/03001627_train.lst",
    "content": "c763d59c0b5c73394925bc492489de9c\n19f597c6dbff03c114038d588fd1342f\naa300965dead4fa33f09c790ddd20f8c\n86e15a077ee6f438910979f825490a99\n9978e73fef1857bcac6b8e58caf61f95\na4b32d26e0962bf74a4ab00b9639232\n5509f56ce625c42aff2b8acf844d34d2\n6def527e32885b7888dcbe86402c7c15\n5fe6b94dce63fc59d4589db494f55afa\n9b8c50f5b9e67dec35836c728d324152\n28844eb55fc82dc8f4b6538438a0b930\n26ece83dc8763b34d2b12aa6a0f050b3\n5b6a608c22d77fbcb04cb542e2c50eb4\nc3cfd2188fe7ae365fe4ecea39e8bd40\ne7aa94a2dd59a5ed492d9da2668ec34c\ne9f83e38241515a7438d8caa9ae106fa\n5cc0b0e0035170434733824eae5cd9ae\nc3ebc70a348051e1af7c7ad2549a1b15\ndf55d3e445f11f909a8ef44e1d2c5b75\n89a13017c0d517319fb4103277a6b93\n7d3b7916dc5325a9c862eec8232fff1e\n65a1f4ac3e5b57dffff16555386d173d\nce8f3a0c0c0bb0b9b20716e5484f7807\n6af67c2dcb4c38bc67f0a77fbca7cda2\nc571ff6f3231fe861e1a7bd9d68b88a6\nfc5f813d499cfd84d540c52e6ddbbebc\ndf59c2ab638e5bf47c4b9c3e153dc1c0\n2e079c4e7bb26dce9d1cedd9b694fb2\n9245c7a6d33320da7b707c797539b200\n4b95e968966fafc6e0675251723e1e08\n3f83565ed40f87c5593ebeeedbff73b\n4dcf1f64f70f22d7b4569422e5e8ba0\n928678562a6a57db698a862d11861eaa\ndf2b3ab36704f9e944ebbc705ad8c07\ne5ce7b150310f288b04cb542e2c50eb4\nf230308627e5edaa9d796919a8d71368\n2280197ac01a58912dbc66eac8105387\n878eee28ccc28b2e4c7384dbb75cab0d\n22fe855981e97ec5a1bada754e9e91\ne908c290fb506f2e19fb4103277a6b93\n736e9ee917f741193b908295ece2b069\n3b472a135aefdc2943a0e2e54f038a60\n323bae92774d8def78aac1ce4ecb73b6\n312df229ef2675c4492d9da2668ec34c\na89450b61d786e4d115013480320769f\n65b21a2af8709510f91663a74ccd2338\n49345c62f63818a036be1486373f076\nc2076591d588586719fb4103277a6b93\n9d151e778dd4a3f7f91663a74ccd2338\nbf1dce61ba47209189343fd44bd400d2\nce055b7a4cccc7e182db9fca4b68095\ndee24ea8622e2005dd0e1ff930f92c75\nfa263643fb3f45c7492d9da2668ec34c\neb3029393f6e60713ae92e362c52d19d\ndacbb2d9dad289b1492d9da2668ec34c\n9d05b0a242a5ee06639159c697a89e8c\nf4a2478ebfac3e56b0957d845ac33749\n5a52b62f564eb7e117b431cae0dd70ed\n27317a0db349369c8b74e4684f0d409d\n5e907bb5204ec4a9a16baf954c1d99bc\n11e521e41ff6a64922e4620665c23c97\ne07c55b60987e8fa4067a397c01042d9\n3823798ca4fe0b439710e093c764abec\n50faa1777b012058492d9da2668ec34c\n7e097351b98060b8a8dad913bb47fe00\n9a789be179253acd66c580e84dfb7998\n828d2c47bf56b15c49560f24b21df85\n9e65e8fdde35dcbef91663a74ccd2338\n8a38d65b4909e79d727e9f790cd597\n4b7cf20cac8f2344664b3b9b23ddfcbc\n29d5a6ae911ef708f51f77a6d7299806\n5cf7a44b8cd841d01f0ce9df23303cc0\n13e29ccc0722f4f958df8eeaf3dad1c\n9cabf21d12d271c5d295b24579cf55b8\n33bfe7ad9544eb93d7f25634a7c65cae\n4c30d612b8663402492d9da2668ec34c\n2bf1fdef16967a929753496ba23f2183\n1c2b230840baac57df3c82bbe2e3ca02\ndcfd665cdc0b01e7b04cb542e2c50eb4\n3186f9dd5179358b79368d1198f406e7\n3dd04235c696c117db6d2ff65cc5b310\ndec4d499ce2ff518dc732bd0305fe3a3\n63f6ff0ad9cf9d17adb532bf77da46c2\ne08add655395ce8df51f77a6d7299806\ne3079223f4714116ad484915511ccff6\n741db054bd52c8884733824eae5cd9ae\n8f668f18d84a6960b27c368aa9b96968\n47eff1e5c09cec7435836c728d324152\n866d6243ed67de2ee0a87b67b4933300\nc0689f191df5cfe1c785f06f424b9d06\neaa4ea82bc814005e6fe3612af521500\n486863b7fbd169fe67903707764646db\na49fc9bab5834df95b1f17dc9a05edeb\n9aa05f609e6731bbec19069e387c0327\n3b5364e2f1624ef992979c651b40698c\n428bd9c7c8a0a6bc7ff6ace05b36a5\n23e80d93926a45f7f7628281ecb18112\ne79b6815925c07acb0957d845ac33749\n4ef623a1f272c40019fb4103277a6b93\n18845d9336d8be637b11ae648ea92233\n408b8f2a75350af98ce66f12ba927a2b\n32f2998a16e477163c4f66791e25960f\nd8ea454fb35e38887b11ae648ea92233\nbc75933af4146bd3fdce5d02dd243c32\n5fb53dd1dc9453e77eaeab1f0c9120b7\nbb660ca2ed9e0155f51763a096bdff1e\nce23daa630833de7d9fad8aba2c312b7\n79780c35666f045d7ff7b6423ebfebc7\n4bd7a49e63e0e97936e3b2fa8d1eb4eb\n8becb5888c900f3a610c2a68437007d6\n8ce2e49ab9f58811610c2a68437007d6\nd1af84d4d2af1181c442c1fbb1afe9c5\nb56829d48d66fd0bf368f5bd754a08c3\ne64275c95e41605caf7c7ad2549a1b15\n72a40501ded8a8dd2c2f29cee8379a34\nb490ed3bdc9debe6cad73d9df5957ce\n3b2c9428da926e939ae03736d955651b\n9a83000e9128d677b04cb542e2c50eb4\nd2f844904a5cf31db93d537020ed867c\n680b3add007725792feb9fdea8e07927\nd8592dc28b9f0afa387379bbd607d69e\na67a09662c39430bc8687ff9b0b4e4ac\n997853f8fa3678df5ac8254dd793f590\n64d07a909361ccdd1a8a283df3396be6\nc5beb566f512bc8d9e989ccbad3213ca\n9b42dd8043ba84f7492d9da2668ec34c\na2e1ddca35161484f4b35f4029eb1ecf\n592cf5363737550cedee0bb2b729f22b\n2fe5d78dfd82bafbcec24f0586fc0928\n341fcdd8a40a2612456cbf78e1e89022\n7530bff8f0c2b45719fb4103277a6b93\nb8ca8a0c021d152887bcae7a654cc37\n128517f2992b6fb92057e1ae1c4cc928\ne984974d54645e8328c54e8f8953f499\n51c858aec859bafad1e274d497440a3e\n5eb6ad0960250dddffc127a39b3c57b1\n4a48b39219bb7d64457ba044c28858b1\naf7331f7b96ebed663b2acb037dfbcde\ncc2930e7ceb24691febad4f49b26ec52\nb510aa817f9aa6795906036a9b83f8d5\n2ac88058053d5c2671a782a4379556c7\n2f4b0d6e2faf22d68c18ac3fe1584a6\na12d6ad9561fd39bca2bec46a3b47519\n7aabc57856fc6659597976c675750537\nefc62fa0fd71d739d42ec7e303174a87\n2ac24756c1adbd62c1a25f36f85c3fd6\ndae6ba7440a71e5152470de2774d6099\n74346aabf555ee0295122b1ef21ee4c7\n31ab0936f07c21ba7b11ae648ea92233\naf0831d39fd8f794492d9da2668ec34c\nc2d0bea1edd835b6e874cd29a3bc467c\n663b17baebd39695398b2b77aa0c22b\n7824e41c86f9be776383f517a315e69e\n2a2e5ecd0ef6ab2f80360680c1602c7d\n8a26a4d0726014065a4867cafb45a61d\n7186f1e8dbcb3e8a116162acefe23592\n7e7e130acfcdf64b1dec8546fd5980a9\n69314c01e2b6ef2a95a4f7ae0be930ac\nd27be0741f13327efc66b92945eed242\nd20de927fd1b15ef104c86562c321749\n46c6dec63dd7c45854ca97f654da3901\n62d160f560c31e0ff1d6726679b21945\n3b88922c44e2311519fb4103277a6b93\n24a83977b422b081eedb66d04882750d\n198bd40d94930950df6cfab91d65bb91\n654ff4d929914b7ff91663a74ccd2338\n4179c276ee8dacfc8cbd400aa99bee96\n41fd861b4f4b8baf3adc3470b30138f3\na021adf9bdfdcff68d12adb6778d2a90\n412b79b2d0572c6afb76895427c01995\nfa0e922a339bc7dfeb9a9ca952f63e23\n20fd21021f3c8e5fcce6278f5ffb13a\n11d9817e65d7ead6b87028a4b477349f\n31d48d6b3951ea8e1191025061735ea3\nfd4cce51df6571ecd204c1ad14be926b\n82ac145a471e406f35836c728d324152\n1bcd9c3fe6c9087e593ebeeedbff73b\ne7b1407e16d9d644c681404257d94ad9\n44b317a5dc651210e76bc197b3a3ffc0\n5c427d9fe3c76b356c07fcbf2661d108\nbeb8876f47c5d4287eaeab1f0c9120b7\n7ee46c6f7c028fc6d661ff085a0f14b7\n1762c260d358a1751b17743c18fb63dc\n371ebb9ac02ecfd09710e093c764abec\n2f2da13322d30ccaf4b6538438a0b930\n465cb28961d2680bbda72093f9b5aa73\nf83f1cbaf6c41a5db04cb542e2c50eb4\n9e519ddc82bb9417813635269a32e293\n9e0a1e2857b13b5853353c404519f02f\n74b3e4fa65510952e6fe3612af521500\nf2d03c1b46ff3c387bb504f750cf6e27\n210115ebbbd9eefe5fdc736bcab9da58\nd2b334ad08ac9857c3cf9ae716575390\n384dc36226d1d4deb7f1aaa55af02518\ne82136f5c8b2c3156cdce1333d517d16\na1adf14b24469f8835acfdef2ece21c0\n878c70bddd336f6019fb4103277a6b93\n60763dc3cbf36974b0957d845ac33749\n268e15d6c73f3495f2c6f9bb81f9e3f6\nff2deccbef73ff5a349bb1cbbf9a4206\n53fc74fb69742cab20768660cf080d12\n4c775cfff4afba83b02c91492945da50\n3669c9b2954c730e492d9da2668ec34c\n54b6c08ddcd0762adbbc9440457e303e\n8cc5a1e56c814d86c3cbab763f583b3\n9e14d77634cf619f174b6156db666192\nd9af882ab6d1cbbd492d9da2668ec34c\n7fe64a3a70f8f6b28cd4e3ad2fcaf039\n614347b0e864cdc7492d9da2668ec34c\n2b5953c986dd08f2f91663a74ccd2338\nee1c0e545ab8dce862b3a719b353f115\n4d6c67174bdab63ff11cd7e1bac77b0e\n5421802bb8e6e9781ea54e1e7afcaee9\n73b96acec1ea41d1ad484915511ccff6\n6aba15a68e745c8d48fda83c10428379\nb2d91caf3615a9a7f51f77a6d7299806\nd10ed00430a61909793b1150bb246dc0\n5609756359a6dd2c1933ffef19678834\n87e11555e7233fb4a9bdc22a1e02e82\nd0500d229baf05b0e83221ad0d21775\n3d57e65ff4cc42df70a7748e958c62a2\n8a5b706a57166350bc3c6c80ccbccb1e\n720fd0a6c8cf65e772ee08e78374a212\n9e39c4ea1d69b2f19b1e9677d6cddea0\ndb86d16a95437f3898cfd47a860803c5\n570ee99e247c6cb0492d9da2668ec34c\nfb9f11f128e006d2498725b9a1405ebb\nfd3d59ad4d0ddb44e15475f0b1eb22aa\n6ac89c723fcd7a55467971b4d8320221\nbb380888cf0ac2e79c0b027ae5b223d6\n6dc02b1884fb578492d9da2668ec34c\ne9068bd3f1f5e59b3fa02fd212ba0e5f\n9281f52d6c5908987ca6caab209ed3be\n5f76562ab6c843cb575f9747ff6fb5e8\n7b4dc28c2d3268a09af25a2e608033f\nac9cb6f769bf90c824d8364776ff163c\n57a54d8b1594c399423a79096715f202\nf68b7c3a1ed7506bedd9ab1253e1a9c4\ne39308cd84103a47f4b6538438a0b930\n69a7ed6a13ef4b2edf6cfab91d65bb91\n32d67f875ead7f1eaf46128407fbd2a0\nfa041b0276dcaaaf98e0d1738edd4f19\nacbcfebf917e708b2b5bf1f191733d75\n73aeafc0af4f1a62e1c624539dfec6c4\n2d1f6e50aad6d88721fbac718728a36d\n1033ee86cc8bac4390962e4fb7072b86\n13d4fceabfda96c0bff8d8db0f9298ac\n2ed17abd0ff67d4f71a782a4379556c7\naaba865e99c23e7082db9fca4b68095\n2b66adf2ba9858eb19fb4103277a6b93\nd221f07c0921e4d2b9576c1fc1b047de\n646ce5490817ceef4b6538438a0b930\ne9df7789d02eb998c8687ff9b0b4e4ac\na18a82b239fc07cf433619555ecca8aa\n77d71ae4116844e02025d98fb9de28cb\n8a1187956642c3895331e304403f2050\ne015df603fbf0852f58087d377226538\n9189415b98c9981cc2b6cd34eca9d8c1\nfb8c3a832eec2ffe627fec6651ed13bb\nb10798977605fd017a4de8972b988aa\n5b38b467c20ac734f7c5e1744a5e6f5\n38d623b46d07a93fb7d9d23574a480ae\nd1291956cb0983ee7085b4353236aad\n7d4aff5680062f0b1143841839c8c312\n8b005a01cf4ae50dab49dceef0d15b99\n709204dcd233483f242f861207c6d189\n708fabd1e1a39a77aa6bb5920f533ce3\nfed8ee6ce00ab015d8f27b2e727c3511\neb7c48d1729fc4ceb04cb542e2c50eb4\n3af3096611c8eb363d658c402d71b967\n6ecc9a0b03cb8bc2d2b12aa6a0f050b3\n1953d62a63721f17df6cfab91d65bb91\nc1b312919af633f8f51f77a6d7299806\nfb5ba735ef95fe417ca68e217a316e15\n539ddc43afec160e57b8f616df7adf9a\n68b26c9353e65419c3e46f55b34610cf\n5f30af30db19dd23afd330d4b2aa45c9\ne7304e89fb763e45507243968c1db8f3\n11f1511799d033ff7962150cab9888d6\nae1650cc10002a69d65a961d7336a090\n314c04d32f9e42c5f91663a74ccd2338\nc6856ffc6e9afdaf680876614ed35a7f\n780441a4b2e033f2796c584ff1fcf56d\n49e3ef3939d7a6ec6bcd32c43682e841\n1d498876c8890f7786470a1318504fef\n9e145541bf7e278d19fb4103277a6b93\nb08dfb07c78a348b19fb4103277a6b93\n76fa373d984bd515504d5af97121b5f\n5bd08666f29e946c988a5637d6d8f36a\ndae8b3ac69d80cf1b94e60a139ac4b1c\n90fb9a742f5a0cedc9736640ccf985f5\n71a0fe77f0bc1cf94187eeeb0dea4986\n75f4282ca1df236ebf08050442fade6c\n2f1a67cdabe2a70c492d9da2668ec34c\n29827b7059783559febad4f49b26ec52\n9ee7a2dafbcc731319fb4103277a6b93\n545e984b290a7398e8b2b8dc0c816caf\n54e2aa868107826f3dbc2ce6b9d89f11\n6aa86c295de207dcedad5734e2d87ca2\n107ed94869ed6f1be13496cd332ce78f\n3a0e392db610f1a1504d5af97121b5f\na99285df8c6d4578b980c976a65c0d7f\n351705e42490c3506764a784715fb668\n31dbef39a3c46b07bb8e07e9ebf0b9cb\n57dfb295c3e699ab2875319f84a135b4\nc7739fa5e32a7218a5f9d52c12457194\ne18776689e00c8b84f871aa82358858b\n8e212bac2103bd626c518c577d808035\n17d4c0f1b707e6dd19fb4103277a6b93\n4dd46b9657c0e998b4d5420f7c27d2df\na1ee33aadb4754a492d9da2668ec34c\n447e5db7c84797272127b77d9c9dbf6a\n2b3da2a8773d2571c3bd24f986301745\nfe57bad06e1f6dd9a9fe51c710ac111b\n802c46001be93276283b00891f680579\ncb6ddcf169bb7a0aa9bdc22a1e02e82\nd66b701631851e7b4b19d2c99e22ffe0\n88c39cf1485b497bfbb8cbddab1c2002\n85f1b136e6935b7baec8a763854c53a1\n7fbdef802b9e160cc242632b2a8c3129\n2fa044df89ef13b0e5c1abd833032715\n23b0da45f23e5fb4f4b6538438a0b930\n2a39dbeb52262b975babe43b460dfe6e\ne1092c9dfe55273876f83644d71a31ee\n6aa1ba85285feb756306d83fc23a955a\n8eb33e21e03b8f84db039d8689a74349\nef1152b1660592d413f0924ccc9628e5\nd02f9ae175fa83d3e6fe3612af521500\nef10235a28cdf7cda16af3198c99de08\n2ad0943e70c0bd1481f667e2a25e0619\n5cf55d9c3a3c7907489452a0032ea575\n228d5702c588fc1cf7628281ecb18112\n13cdc9e018a811a3ad484915511ccff6\na272771d6e9a29c2f4eefa83fb709ec6\n96929c12a4a6b15a492d9da2668ec34c\n710a0a005ba7b0cd6a6b5838ef6b356\n1055f78d441d170c4f3443b22038d340\n5e89f5cc834553622acd2bb6205825cb\nf4de0c72715e193deb1f243bab39fb29\nf3e50f6d0b7b293035836c728d324152\n904ddb7762488b1b5dc3653f8341633a\n97c5ee9d477c82146c7e21b4ce9a4103\nbc80b0b638f8a4e61a54bcb8e47577d6\n5b69cc96d156f286e7c7920f6a65a54d\n4fa8eaacaaad472819fb4103277a6b93\nd490f77bed3bded5af7c7ad2549a1b15\n633110fedf1efac0f7628281ecb18112\nb467cd6baaaf5bf282db9fca4b68095\n5c8ea11840795cb5f1783a44a88d6274\neee8b6fafd8af9d1ea54e1e7afcaee9\n362f53ee8de161fac653c0205ce8ff57\n1997d5827caf81df67d783b4714d4324\ncef1f5c49e5de64f593ebeeedbff73b\n6281a6537c8c4bdce6fe3612af521500\nd987dc40c90907276bc601efa799c927\nbadfcd24d9b640fdf74aae127b28c047\n8617fc907ff8cb36597976c675750537\nd2fe67741e0f3cc845613f5c2df1029a\n474b82a849e5064fa9dea4db53ba3dd\nc2ad96f56ec726d270a43c2d978e502e\n59b79461f64a41c3d225e12279334514\ncd9e22cfd389e5d9d330ae3d046a415c\nc8cb59cef2f091e78a44b4d4aac56cc\n7250e86b4feb699aa08cd647a48e605d\ne12ac2c1c707b7b2f45a7a3d26bcb6ad\n460eef2b90867427d9fad8aba2c312b7\ncecbaaf284d32574e669ded0ef71cc0d\nb46361e53253c07b6fa2cfca412075ea\n484a7d924c952e51af7c7ad2549a1b15\n9d2cf09ddd9a05fa1f8b303c0da5108d\ne6b2017501b20ce1eff1a662025674bf\ned9a4172130d3d5baf1a85b857ec9afc\ne77d7eb8a4e8f1816f1e07a56c129dfc\nc106cbd7794c6b6868661782af60b711\n5ebe4b9a29d5c0274de7ed732f5aeea4\n7217176942b8fb42fa7b9a6c80e4e324\n39b1cdf79b58062dfff16555386d173d\n360b02dcfeabe768492d9da2668ec34c\n75acccc933a08ebd2afe8d5254a0d04\n48fd6cc3f407f1d650c04806fcb7ceb6\n64d535abf6fe5ec46874ce99dea28d5\nb04f736cd05361d1cf63f06c65fa88b2\n99ee0185fa2492859be1712545749b62\n8d5866194748bb3492d9da2668ec34c\n9dfaa9b599fced446f1e07a56c129dfc\n5ea01d852c88e30a6f2222642bd41c09\nbced50190a0b63cf19fb4103277a6b93\nff546450fb0bd81f6e7c5546c1dbd220\n74615c2f7098738ca9764f2d2db668a\n741ea721bf610a9b9225fc8da7ab1c1a\n64a585a441f2ffa336c8b9bf2576aca2\n52b667b2014bdf0482db9fca4b68095\n78952b099c650a85d42ec7e303174a87\n111720e8cd4c613492d9da2668ec34c\nff8efdd26382bb863769fe68c3ec842\n2669d4df8adda44571a782a4379556c7\n91e4eb92e010047d3fc7406e820e0781\n4b495abfcbcf4b76ad484915511ccff6\n9b9a114cfee79bfb492d9da2668ec34c\ne8c1417f4eec96d228a7992bee4d8cde\n2a56e3e2a6505ec492d9da2668ec34c\n1166b15756ed9b8897317616969032\na374415a1ccc05aa283b00891f680579\n6455bf241fcbe3a03adc3470b30138f3\nc3b6c4563e5f3dc4166ddaef2c2c61ae\n88ef1cc314d8dc0423500a5b036df62e\n68d41388f8a62fce19abd93be2967664\n5fe6b79e75130974e8f8c11a24c52ebb\n4353aa4950c32e12f1783a44a88d6274\nb2bfe0be6956fe34f51f77a6d7299806\na33c519a3d90184f504721639e19f609\nbe4c88a130e622a21961e650f3cfa396\n54bdda983ea87dc9d727e9f790cd597\ncebe4dbc363265ce46746f657ed598\nc93860b7f38bf628bda72093f9b5aa73\nd3ff300de7ab36bfc8528ab560ff5e59\n9adb6a665f99addc8a4fd70ea4c8b4d9\nf6096649f87c37f1af7c7ad2549a1b15\n7573185356240f5e2b4f3c9a4b815590\nc89a9a38e300cb502c10b2c975aee2eb\nbf9f2ecb581640bdf91663a74ccd2338\n9894e30c8c7f7e56eaf35c5a2cc7d71d\n2828b98d980480cec3bd24f986301745\n4c9b6e0823be25ae52bee19dc0453f5e\n5a94a4638e8d548cf7628281ecb18112\ndf487c3660e7030dc5ed74d70201d4c\n546c4449b8001f0815d1fabef5f236ab\nc4af5a5858b4f40082db9fca4b68095\ne118a2870622acaf65ba78ad9601cf1b\n74ae50b70108ca1118775c05a821f9ab\n1eb8558d0f6885a1268ecf2838ad6f15\n2b8e3e95616a5fedabf945c9a80683d1\n769df6463d9f566e1bdd2be5d322fe48\nb9a7bbf1e0b08853bed1bd9593e318c\n98dc530eeece9f0ac3d18d4b522a4e80\nc2180f4b2d79f55cee30e9904f2fffb0\nfd3759f684abe981d85b29704f5fc7f2\nbb4f5cd713a817727d4f8900c5174db0\n70bf905fc0d62ebcb1ab5f3e2ac4cb05\n85654bf43265664eca5d1f82257fb9d9\n4ed2bc57d5fcfbd82c37553db37ec752\n9de69e28a07c6e10592cc471d13e2037\n6ccd1ba0e0d4408e56c513edc77abd33\nd045654d572bc46f19fb4103277a6b93\na808d40b66123c7ae9602306ed19eab0\ncee98619dbdb0e34c5fc2b846c38d941\n90c8ae65e3ec4ef119fb4103277a6b93\n58a1e9909542abbae48dacf1789d97b\n2fc85613e0c1fd7c6ff6a1869fe2467f\n730a4d879380fc78990561fc34164364\nf112035c6413080a664b3b9b23ddfcbc\nbc722985df07090d51c4deb11af7079e\nf58ac8ac63d5a52d19fb4103277a6b93\n2c548222017955df4530ae9f1281950f\n2975a651cf06a21260902b587804b688\n4f188d1f92b859fc283b00891f680579\n2ae70fbab330779e3bff5a09107428a5\n97131916969631a379a212fc9db8be5e\n54fc8ae4211e121a55450780441af433\ne1ab1f421891fb01f302352a74d4e413\nd90b1021dc6e09b455369e3e5b79b017\ne5b6a3cf96b36a1613660685f1489e72\n2c149e5ab744616f60ac8f16dfbc3b59\nc06b5a7aa4557182f51f77a6d7299806\n324b0bc4363cf4e382db9fca4b68095\n2276d36a40335c19215045784774049\n9e03f57afb7bbfb21b356ab8b24c147\n94e5d7fb2ff59ff98a94168388287ad5\n41e5e9ecb83b9a45504d5af97121b5f\n736589cbc46fe6b059f8e31ca87c470e\nb81b9e3fe60a49bc55182f299fe41fdc\n866552d994de3a252ea98d69e91ba870\n5e94fe6e318670d310da6117f2797a4c\ne5da52f5d1ae95f75a8ae8f7c307d01c\n8d0c04c99429ba8919fb4103277a6b93\na5de4210ba131f0e6ac7817035f206f9\n24d3d4259b35fb93490ad276cd2af3a4\nd9346fab44b6308f40ef1c8b63a628f9\nfa172f7f09f785bb492d9da2668ec34c\n34ed902dfa2d8eec2cafe1b125cab8fb\n713d9d23bb3eccc17fb8cf8a85dcfe23\n70207d8482c135f8410594e2fa0c101\na734ccbcbd430e8c9eea64ae4d2b4158\nd43f7db89fe864691e046801e2748f1a\n9b82e2d4714b97827eaeab1f0c9120b7\n116a9cd5ac9a008ee8cb931b01d0a372\n4527cc19d2f09853a718067b9ac932e1\n9ab888a92d73e4d4a6ffec31b6fb775\ned5b718c4efc65f148ff063e62e02115\n4217f023367a28b06747dd1c5ab1ba16\n40db46d8496af369c605aeab73103431\nc5c90d3e84be70a11b17743c18fb63dc\n9ff6c78f309d55471449a39c0fb09f2f\n4f66b8a004a1515df33978a307b45373\nc472a815afff5ff0e6c5cd45aa112726\ned40add41826f68ab76e29c9c43bc7aa\nfbc560d04067a6b58ce66f12ba927a2b\n47ae91f47ffb34c6f7628281ecb18112\nf1a5a9aec0b63b91f487e71bd57b6e0c\n5752f7caf0dbbe4d94210977e5394f26\n3b25f03d2f7be870fff16555386d173d\n6f194ba6ba254aacf51f77a6d7299806\n8dccb87a61e565cfd4713685ae50fa13\nfcfb3a50acf5e83ecc0484ea4f50062\n4a1510e398260ba36b31862e09495f2\nd69aad24d253474dc984897483a49e2b\n13076ebf8b5cc457b8d6f69a14683de3\nedef00af1cdfbe1419fb4103277a6b93\n2df489b6a14404b3febad4f49b26ec52\n7a1515106a9dbd2bae4c6ed7474cdaa3\n9303d374253d8e7f377b9297f3055210\n4a54684f8ab00cf5a4e0cb207f311458\n4b9ccf80a846432095bea7c29e873d16\n28cace7066ffa9c2f4b6538438a0b930\n3aa81c6d6d7d7d66c08256cf85537e\n480d483b508469d1a42913f1450ecdb8\n380a5345fda8e97492d9da2668ec34c\n8914307dbc15a20387f0bafef1e13471\n8ad35dbc44f40be1492d9da2668ec34c\n5cc61516525325f55e0d6e917505f52f\n865551d21a4b2c09ad484915511ccff6\n96a03b164315d2b65dc3653f8341633a\nc6bdf057e1a5e900548360e92af6377\n8e77d0965bd1ebc598e0d1738edd4f19\nb98b73f29673d7fb6da16f7df2c9a5b0\n483308834b307b75d5f1108744f02f1\n790d554d7f9b040299513f98ce033426\n1b83311557e48d6328145ddc1e2c18e1\nfb0c9739b5bd880ec15f2f972dbc5c17\nccd5e24c9b96febd5208aab875b932bc\n2a79d429e9effa6de7c7920f6a65a54d\n28445d445cb8b3aa5de04aad18bd94c3\nc405857cd7d8aa04d225e12279334514\n10d5c2f88b60bbf5febad4f49b26ec52\nd4d18aea46db0b4d42e792292462a0ce\n8a2349fc21f48ca78ce66f12ba927a2b\nb19c970b2b8d6795492d9da2668ec34c\n4e294d057291c50fc8687ff9b0b4e4ac\n52f9bde46afeecc5dc3653f8341633a\n2d4efb02b4369af2473f10e6caaeca56\nbf37159b9ca55259e6fe3612af521500\n671a43756d51eb613d4c64859ad102f7\nf347f2a3d85c9a823fa92d98173c06f\n4a9ac9e0b3a804bc8fb952c92850e1dc\n6d4ce042f204e89db413bc67c6e4035a\n53d88f50e3abc2888dcbe86402c7c15\nfd726084724adeea492d9da2668ec34c\nc41ece3374d0e860e32cefe0e484fed3\n99d4e65625b32a1d151f08387c3363cb\n8bb74c3e07557ba9177f2a3a0c71fbcd\n6a72bf1b1ba3254c51c4deb11af7079e\n33aaad494817a6f4ab705559ec99536f\n39ac0b216df14eecd225e12279334514\n678ae2d4a386f4e4d0250aa1ac19fcf9\n49d6f3affe205cc4b04cb542e2c50eb4\n2b9ca6deb278a10cffc21cb5f21201cc\n1861715e59337785dd7092ed47061a36\n8f2e3c9cb5f25021492d9da2668ec34c\n1b7bef12c554c1244c686b8271245d1b\n94ef9a352eefe9455ac8254dd793f590\ne545ff0d2058b382c3bd24f986301745\na95df2063ec98e429e6aed0cfb3be6d6\nb9f80c27c118564a9a318f18e43edb72\n33fa27b08aee4432e8f8c11a24c52ebb\n5974ff38b45265bb352fc7e973ba7787\n46185164829c492c9dcf2183c858e6e5\n942a10a33418205819fb4103277a6b93\n3f23ed37910bbb589eb12cef6be5d578\n5df875e6f0cc0e37f838a2212356e267\n4aafa7600e0aacbf7b11ae648ea92233\n8ad1db95b5b9d60136d9cfd13835101\n77d48297d441c7f5bbc0e8a3b6521117\n73a7e497299da43885a2d2169cad3428\nbff224175aed2816597976c675750537\n1926843fb9da47ad8852b93498ca8c83\ne6778535d7fcbf6fff16555386d173d\nfad907934656c52ba1abaa6eee3840a6\n383b4dbf090a73dd597eda2e51f31317\n7252a2c022a1a3b21f285be552b78f9a\n35e8b034d84f60cb4d226702c1bfe9e2\nb7aabc0069ea63e096d5fa1ee6ada8d1\n2d6ec4afb0ef827e2c5b2f528cea9dd6\n91dbbc203e8562e6238f27554ec73a59\n4e9475fea6f3ca32c4cb3d6800567627\n5ef9991f0985302c2526940b0dd3ff94\n5229209bf66b6657b11ae648ea92233\n64c80a33436b8a84541e733f245fd038\n6e53d494768386ca8579483a049f2a91\na1734a851af178bee15475f0b1eb22aa\nacef669b784a4fec1b17743c18fb63dc\n36447db5cf7b5a27ab5c60fa85a57ffd\n352bfa764478b1602bc694a93134e562\n7f1164e82e3a975fcc1908493f380315\nfd9c60e969f83e6086debb0a33c851f8\n1b8c83552010440d490ad276cd2af3a4\n9e9e6025f821c2bdb6d6d1ff246c4885\n269698853d294f595761a0b53ed37cec\n1145248e1eba424d492d9da2668ec34c\n398c1d570b642b6cf91663a74ccd2338\n2952ec189e993eeb17e114a7b3c6fb1\n90bbf2bd1acca50fd684faddec3c0090\n5b2b23120a4607dff7628281ecb18112\n99c8513bc738a21d440d6814caa3115e\nb9415bc240e074837e76245c0a9e51ab\n29883092cdaabd09b41b7625e8c42dfa\n47fc279d7f0c2a492d9da2668ec34c\nf5b08ab02727922b738dd0d3509c7e47\n52621a97e5036dabba18ade30e563d37\n21f9dcdadcca16227ad11050da24bb12\nc7786437606ac263b04cb542e2c50eb4\nb78f64455e41db28341ebff340b2c71a\ndc182335876fbebbe6fe3612af521500\n8c1c53ff86f59a97d2f33aaf794b5932\ncf662e6564c5c3c5ce60514f9a637ce\n2de1c5525d24c1c988dcbe86402c7c15\ndf8374d8f3563be8f1783a44a88d6274\n2560232741878aa1ed0003a3eb88f6ca\ncbc47018135fc1b1462977c6d3c24550\n5a28539d01a0bbfa8ccbef2c1e41835e\na248417b6ba82801610c2a68437007d6\n5d92fd12417a9405cf004563556ddb36\n421746966acf9b175ecd29875b6f0d44\n7049a1875e1b82d71f8d8332ee17945a\nd0a3e48a84f68a9143dbb6421d614c0d\n4b785965d54454a4e82cbac5cad4b7d3\n7910a6262ad8fc113fa02fd212ba0e5f\nc465b7ee24741eea9edd9a0b28d406e9\n6f754a2c354b17642c0eb4a518e123ac\n1ad766f9e95ce308aa425ecb668e59de\nc5abc457162ec704bfffd5d6a62e360c\nbae3e35109b939cfe7c7920f6a65a54d\n3ea6a179fdc3c01daac8336231c53cd1\n9663b0a707ba9753983e0ae0e9b98f24\n17b558e72a4d76ef8517036a5ca6b1c7\nffcb8206f907e663eac685b1b2988af\nd81327c591d1a709377b9297f3055210\n47ad261baf9609ffc27c29012942420f\nb8db5d63c7042d447cbf7cf495477037\neee08ec7de613898567232766992241d\nb3ef1c8790d42507d0dd5269e5b9cc8\n1f8eaa7aededc7e637b2bb75885cfc44\neb8073ac89cf7b4181f667e2a25e0619\nbbef7baa438869dd52bee19dc0453f5e\ne4cc5cee7b011df316037b4c09d66880\n5f562c9c8f0df90fd2f33aaf794b5932\n45f9f54b9e7cf6897886c5f50906be82\n8fbf9ce2c9cb77bd9cb48411c757aef6\n4707a1494196ef829917ad57402f53f1\n6cfc437d8ec6ce7413d48601aed73697\nd388617a719f23a191d0dff7aea42471\n19319101e064eb1019fb4103277a6b93\na9e2b04bb60240d0febad4f49b26ec52\nb0b75045d06201f9329df33f4ef71f97\nbd50871647e3712f79121b38af0e3f47\n359331da71ed26eca6c03a53cf0a14c9\nc149718d89776eb5f71db1fd522c9a79\n6cf6140483ba1b347b11ae648ea92233\n2eaab78d6e4c4f2d7b0c85d2effc7e09\nef7d9ace8098733b8e80abc614a52973\n5fa5f75741e94598e6fe3612af521500\n7a2d21eddb89c8242058afcc28d23393\n4dbddd8f3f658821ad484915511ccff6\n8e55684da4fb8219d3f6d823f04dd65\ndf8311076b838c7ea5f9d52c12457194\n78393a855f214f387fdfb54d66251309\n8363376d07da8aebb76e29c9c43bc7aa\nc7f0d32287191563bf22a5ca4fa4678e\na08870dc5fc0c8aca19799a9cde9e06f\nfd5f6ed4a873c5ec300fe8666348bd38\n87cdc53aec65aa0ff51f77a6d7299806\nabe225081bec7d21c5a208307819a3a1\ndada2389e96606307aa7cd663df90f18\n63b84cdf260ab81b14b86d5282eb8301\nb63fb0d22a44ff698cbb8bac2032149c\ncb17f1916ade6e005d5f1108744f02f1\nbec075322d514fc9f51f77a6d7299806\n797df32cd5248558f779fe11f536ba12\n6673cc5f492f48a229404a50338e24e7\n5963e316d9015ff1785d41fe7f67162e\nfb22d2e3174ed0519fb4103277a6b93\n5aa2a53207ff556d473f10e6caaeca56\nfc131dfba15fafb2fdeed357dfbe708a\nb23cd3a93c8adbf56d33c8b6c0fec1f2\nce2982a9b05fef738a075f7da2b32df\n536dcddf1ca6cd76d7f81f50826c13f0\nc04c5b7d68b4e6481a68dda91fe5259\n20310d1bd22d8e28890eb7072fc1df21\n4fe3809c20606e5369d8d5b35c38db0d\nd29c14f180ce319f71271c0017c27c86\n4a9ed043cb91fd91b04cb542e2c50eb4\n6932261b5c17f0de4733824eae5cd9ae\n68dc37f167347d73ea46bea76c64cc3d\n66c791cf5f1e61a09753496ba23f2183\n1fb9ffbcd38f8ba63eec26c23f5bc80b\nb80e1766b45076ff492d9da2668ec34c\n6690683366993cb1d42ec7e303174a87\n1eab4c4c55b8a0f48162e1d15342e13b\nf854fa8ee2fb6d715936c7265c890fef\n41f3a12d9f29f204dbbc9440457e303e\na3ba66bb0fbded22c5beea20858a99d5\n39031caf2b11a7f665ea3fba7f481d97\nd661b52c3763eec020768660cf080d12\nd66de4cc1dc6cf5e8f8c11a24c52ebb\n6233ebe950c7d44df51f77a6d7299806\necbb4e4665c7fbb45613f5c2df1029a\naa05a0db9ab12c5e3e7d886a315f2350\n30074024ad3c581a19fb4103277a6b93\n30488c6d05b4848388df69d6c56c6047\n3d988ea2b68f48c7492d9da2668ec34c\n5da96a876b66cfeb922f1115ce03b77e\nbce6cb5f92247eb6844690e7ee348ec2\n44456e87be145a703c8d0fdfb1cc2535\nabf03d43cdf0825ff51f77a6d7299806\n6dccf79814289bca5a15b6547f08c8fe\n62257f79605faa66e6fe3612af521500\n2c8f57bf281dd31119fb4103277a6b93\ne4ac472d21d43d3258db0ef36af1d3c5\na037d4ba135bea9472a38ac2b8f5cd48\n48091b14719964986d075d8d4fe1141\n7e8b24aab1f2681e595557081060d0b\n79401adba0311d9b19fb4103277a6b93\n929ab79b4f45f747e6fe3612af521500\n3776ebfcc23e6d87cfab10986e008a3c\nf00c1688bd33aae28cbb8bac2032149c\n5912ba21e93d2c5b8bd10c3418cc648\n89c85a35c353ab4c9a037b4abf810691\na4d7d4203cdec5dffebad4f49b26ec52\n9c7c3478edebfc1031d38697be8abe58\n5a80c5a35dc1634db87028a4b477349f\neab716562b582538f2599a47b2a7e92a\n55c9891ac274e076492d9da2668ec34c\n46363a10e242999c69d8d5b35c38db0d\n473cbfa40ff731d92e75d78b4c7ea93\n1d2745e280ea2d513c8d0fdfb1cc2535\n26d0416a064d23f1f9aec59741c69cf7\n81397314ef43f59e98cfd47a860803c5\n67d9afec46e20fd279c4b4a860b67e81\n1a6f615e8b1b5ae4dbbc9440457e303e\n49f3a28d33c34838d74aae0eb2ddb027\n2475ead1cfa0a5a6490ad276cd2af3a4\n81ba974369a343d3946b850f0cd29857\n675e25ef07ef717cc8bd7a04c9659f1\n4978fcb47c15f96dce88197ffe0c21da\nd91457217673528ef91663a74ccd2338\n38ff18330fd5aace162bf7725b3fab02\n1c685bc2a93f87a2504721639e19f609\n58479a7b7c157865e68f66efebc71317\n4cec451d0ffae39b79e99a4e49de900\n7ae007a84e6e616d5781796ac0b9d597\ne0154380de563d2cd81aa8b56a36ec8\ncbb3ece285d9c48ee7e684d25d4dcaf0\n40ab45735f526717e25492f5f62d416f\ncbf18927a23084bd4a62dd9e5e4067d1\n2f296d487ade29fe770bec7a2461d9a3\n4a4c7abae3929595184740798d03a659\n7a7273d390ea180db857892c38c46c13\n8c76b1db0a08653ffebad4f49b26ec52\n5c92b3aad6c462514b3c42e318f3affc\n4f22f44c331ad407166390f4a0367453\n55740c07554a726257f40ff86fe708ff\nf0cbf508a2f27a16504721639e19f609\na40133bc1af575291bd0966183650a4\nb1d9c55bd4e8ded1c76575d5e6d323f2\na7f9e2612d0764a0656a19d1d18fdbac\n2a197b179994b877f63e8e405d49b8ce\n76ab50cc6491e518782f27684f3b650c\nefefba3f45a9e16dd64ad79e5981cc8f\ne159d82f67a5953b1fb41007d56c0ca1\ne0276adea0d4f4bf1783a44a88d6274\nf1c6c74053fe8888c5f49519e3caf51\n766d7892fbd7a9f58d6e12c39b2d5023\n701551efa4f1f4fe3e478b26cb10ebe4\nbc46b7460e4476d351e0e6ea07e9e2e4\n5cdf1e5cc2fdacedb01116e8ff585621\n24fdf6e5090bc3442370db05a58bf9c6\n3de9797fbf88fc35d97fd0ea4791ae93\na6d850761adf6003dc89a28b5e6678e0\na910a4447648af1a35133ba9028a8318\n57b043906feef78fbeae145d587f201e\ne8829b6a1601c109bebd676e3a69dcf6\n910bbf8701a4846c2993aa294808121b\n56c8c9cfb9e6b1b9fdef1c01cbd4ae0c\n9b275819a433a9c733e4fde2bc371944\n239a5029476b8a2adb6f46583a3903bd\n7fa5ce045ee0a286606aad310bc344b7\n1f571e244384bca736b0f2a1430e993a\n7309610420ae20c930ddb6ead95f49cc\n57406cae1c2978b40c306db1f141b05\n31423159297243ded65766fd3c4f994c\n586b90e4b5e0530935836c728d324152\nc15a1da769c1ffc5be1649add3e36e21\n1e7c8833d231178fdcddd0cba5e9fbec\nfdd7090f3ca12395a7ae19ac44244eae\nf0f9048f45eed1ab3a8888e78d004b3\n64ae981900a1c1a37753393bcfa5f775\n4841eb9b6b15d037dfd20491defa4a70\n8ef2d2d320e4f3479e3ca99089143c61\n110ad013a9ae7a1ab0f4eaf0533e82bb\nd1bef1cf465da3acdca30639ad4a20ca\n57263b7b778ac3a87c076cdc1de5871a\nc76b2d2e9b7cc59e82eddefc99ebacfd\ne594b1e2f7a7f677492d9da2668ec34c\nc98207781087c7c2995e7ab497adca70\nb90720eca9bff16c45c481d507018ba\n747d2db60ca6b98f3eec26c23f5bc80b\nf52c7425a47ff55f79c8c47a54f30eb\n8f2cc8ff68f3208ec935dd3bb5739fc\n17dee0cfe9a370b134bce1184e175df4\n68747a56aba6ee318677364bd64735c4\n6ddc64415a10f4b7debe318339eaf996\n4706461c517a755d4e6ea835fbc6facc\n8b38389cef61cf06fa675450a2f0c084\n7862b32132af278f45ce8baa9aaad5d5\ne66276c70cadd32a3eb520ff7cd241f0\ncef1883847c02458cf44224546cb0306\n11e6e58798ae5be83e5b5dbd84cdd0f8\n7a79745b6bba49114ee3d18ae9bb4bb\na3c1460f50bd470dd064b65ccd89778c\n92bad575037b0552d7bf6fb68df7f786\n602b7217c42d3d365eead856a4605937\nf5be22e0a737ca9f2c0658ad22a9a9b\n5e2d7d43431eea85364b7ec2e28b3bd\n4f58ebeb561bb94bb9e8bdc9c4a49aa2\nb7012b9baf6a71526cff9b44fdf0517e\n436be9df788b706fb40f0ac0fb9a650d\nfa89a0401873e5a6bbc7a6acbd8f058b\n5ab7fb2f11d26c1c291743ae4bc47673\n2a6b8437623a374e504721639e19f609\n7fc52894c0d1e26dc433ba3e0e025e8c\n540aaf05d1ff41c0c90a83871023986a\nc487441af8ac37a733718c332b0d7bfd\n4e5c18c87a10f050e7469a3f8248f48\nfb3cae311c16eae32b18cbea175ad66\n68e9a9ebe0475536194b666f21552cb8\nca9023f1c44aa7db82390c5f604e0d9b\n908de4d82bfb422ec43a4855019be9b5\n40747ff0ea92f134c409eaceb0331214\n5a643c0c638fc2c3ff3a3ae710d23d1e\n629117f474a4bd482d7c2f5a9f32d6bd\n9531ea3018e8bc70f81c330016997d42\n4b9278e9f2f4056d1f47fd90378714ec\nf2ef238e2e4615e92cf8e80367b40c9a\naa3e5b5828912c0b5d11e7d6920a72ce\n47a661b489119b764b3c42e318f3affc\n10709332176024ce9e47e7a22e24daa3\n29b3a8cb9595cbe63b7fe46c7c128390\n9b8f69874b502bc2742728b30848ed03\n529c0a3650d6a7be97e2a21b8bc2d948\ne2acc4d276fda3d77d70172a29ade99a\ncdd2c7251be91ca779b76fdb1a0daddd\n2b8c678b99f7b2807ea88ba060407992\ne1791ff04ab8348fdb63e6ea2fd66753\nb718fe66075a7c952af70677c0b21b90\nd57a11d2272f0d9f9c5c7365bb502b0d\n19ee0ca97ed377fb69fffd0daafdccbc\n8f9f59e023572749acdc3d668e7c804\n5f45bb76bdcf883d5adb3ef1dbe9e3b3\n307b8798217c08579e392c6acd0dd9b0\nda335ee36e78e24988dcbe86402c7c15\ne89c76bae2ce47bcf4b6538438a0b930\nf029adb6cdf37c402b339ec555ba3bfc\ne14803278dcc08c4af7c7ad2549a1b15\ndf7fc0b3b796714fd00dd29272c1070b\n98b698b0253d933b72dadd9292b51ceb\n94f5c52453dfea0b6606be97908355b5\n9c700bfbe8730e6db8f4af915220b65b\n5a7ad45fa4672684f63bf7d908efc575\na5a5d118118eb760fee31d33418a3c16\n3e5a18ae1c8d5fe068d1b9a1d97e2846\nc960ba7a781b6fb9fb7e1f95705d8fb1\n27700c06980561845c7f80200eb528f\ne8e586ccf4dcac74cad9a65dbad13fea\n71a52b54d732450bdd766137cdd5195c\nb7073426bf9332187c564a6b9ce2156f\n342d41101756553eb3ad032acba61b79\nf609378d4f5c755c9df2fbafa78e52d9\ne5ea39e2b4c28ea2a8df8437731d97b4\n658c983e6982f6a43b48a711df82173e\nc7bbb1dfcac15f43e33c1bced7bc2a7\na16b8de490656d03713decb1a0563b12\ne39df7339552595febad4f49b26ec52\n5ef54fa5d00dbdf8c8687ff9b0b4e4ac\n2aa122c56910bad8fb0eb7e753c06942\n906608e3146548e6a4e733e4e18a6d05\nd959b7666dc2fda41c691caf3fc2f46d\nfbe64bd927721467dff2bb0129eed40f\n717e28c855c935c94d2d89cc1fd36fca\n41ea9182aa12effef47265090d8660c7\n75ea5a697313a8c214c2f69de20984ee\n8cf71cf6f0bf6bb2b5af95b2c842e5a7\n6e6ab9da02b8e3bd9bcd01fc6568d728\n4ae919ca418d3625d30ba6a673002f3e\nfffda9f09223a21118ff2740a556cc3\na1296954d5190272327289c00b6dc9ca\ndfe0e22865575c43cda85f6a3e19b0a1\nc48bc68a100e8c24696b74614952b2d0\nffed7e95160f8edcdea0b1aceafe4876\nda1ef4e9ccbfab13b3234e0da44b11e4\nbdffe559220b8a561b01b8d225cb89ac\nd792c65f8b1710709b9f2eb77f5e247e\n9265413a74278fb5e45ef4135c266a12\n11740d372308f12185047f9f654ddc2e\n51ee5a84b4afc40be45ef4135c266a12\nb6cd2d8af74226a3cd8b5e03f65e1405\n3d697c411b8bf8a0df6cfab91d65bb91\nc6786aeee29edd1b2bca88fbd368f59a\n34bda4dba48231b97a90098a7525b367\n7eb7574764b397c3e87e9b3f41906a3d\nd1436d73b3060f2ffd6176b35397ccd5\n331e1247f5672328826fc8d57346a2e4\n19cbb7fd3ba9324489a921f93b6641da\n6a8e63f10bd6736e713decb1a0563b12\n9ce08b44810f03c963cf8719fe855f3e\n2c250a89e731a3d16f554fd9e81f2ffc\na3d1cc17aff08bc7eab55e294b4eea02\n4c1c81cc186dc50fd84b8ba651dfb8ac\nda918b121ca55feb9b9f2eb77f5e247e\n6344b2a2fce93cc3d2f33aaf794b5932\n3276361e9e651238ac4ed5495364a497\n91ffa0718376a4fb3f7e27638e63d848\n2abb64b16e61663ce99b044850de1b87\ne8f20141696f143cdb77753d44aa25f6\n7846afaf010913e4110b42f6d9481f5b\n510a6ee3bc0a0669c8101121c12c3f9\n65f065a51800eaa5cd476b195edd95d6\n6cc65de3b510406ba0c5548d84070f68\n426f02971983126daae8d1cc50964a7d\ned1816d4dee58c7ddc809959e304d48\n5aeefb539699524044b2fa2cac0778f5\ndf28bda265e0e5bd2d282edce951a03f\nf9c4baf01dbe6c488616812464c86290\ne7a0200c28cdfea7c3bd24f986301745\nc47b50988fef70c9220c18114ccfb3af\n9930f9ec8e2e94b4febad4f49b26ec52\n184007a6dee70847c2a9692bf3ba76d3\n9ad2ee3a38a3d0ce3b32c8e0ac22ac44\n6333b3de61610070cb443b1c1b54049e\nbd7566c32259e41b4c161851ed2b4e4\n458637d073cb6e9dc8687ff9b0b4e4ac\nf2af2483f9fb980cb237f85c0ae7ac77\n5128a385e9c90443febad4f49b26ec52\n6016c2e4f5d5c2ae181fb5b25ff8403e\n4e50015368a4f3ea4eb6addc0d23d122\ncd5cc7a5e50478e82b520984c067934c\nea3723766e96331ff91663a74ccd2338\n4ed0eb4f4e7ea0952efff55e0bb2e42d\nc69ddb5376e22cb8c4e8952b27b5f370\neb2fabae15f77882139d2c86c9e03ddb\na7caeaff5582f54f55f9913e822d5318\nc3778a3db3d7060bbb40b038e5e0b7f0\n1eeae84f10df85cd74984b9cd0997a52\n2b01a7501dd9780075e0fac069101b51\nb0849a1c01da76eeffa41024c63fa9db\neb039f6a86785f3a9e633556753261cf\n92450ce64f51c778f235ab3c41aeb5b6\n725184eebea99d42a49e2dd37ae1f85\nf268849e43f64861cb3a30f2c37c38a6\n20ead42180f1ba43ec7d59bee49bd15\n6f6191af40bfc07116f5e76c24d541f3\n995ecc9f34e0dc3bfa2cf126b85e1994\n64f03da6f61e5b99d858721c5f89c1b8\nbbdaf1503b9e2219df6cfab91d65bb91\n8e581e01a8b742214e3003b3c5dcc179\n939d97b226f11272217ffa735084910f\nbfa242a09f35dcaa38fba5f798d10731\n40bfad5f86a730b29f2349486c570dd4\n6e923ab0f28c3c2e7251f1ec40392b93\n22f7d658bf2d65da2933f312813ce997\nbb48377bba20a712a45aa09d68b87656\n73cf718c453779fe346b7e70ad2e57d8\n58b1c10a6e1d67b3b0cf2e642b746bfb\n297d3e472bf3198fb99cbd993f914184\n459bef9cabed55cc593ebeeedbff73b\n8aca9f9005d8a8bae36724f611fabaa4\n507a5974b24dce2ee1fc1bfd241d8d6a\n768acb4029f2d682bfad749b583f6a07\n1d0abb4d48b46e3f492d9da2668ec34c\nef4e47e54bfc685cb40f0ac0fb9a650d\nc7cd67d1a9def55aa192483aa282f8e5\n917e8fa5d1253398ca6a405498436716\n224775a0c7f8fec65780b8d333445e3e\nd5439bb962c3cc8579170a5f8beda902\nd0215a0b82661b82496d6322c763591\n42abcded68db4356352fc7e973ba7787\n68f1d9f63eae2b5123c1b1df1d480bd3\nfe8b246b47321320c3bd24f986301745\nf645f79d47e2df0f7dca29e186afcbcf\nd409dbda0a34a953c9020fbe6b2ff6\n9f7dd8cb949fb0971f6138b700829a47\n26908ca3183b5a4223500a5b036df62e\n9641c65e9a8f9a873f9d6e0ade5188b0\n8a87ac1748519dde2fbee880b9f634b4\n60a8c55e653a107ca192483aa282f8e5\ncca975f4a6a4d9e9614871b18a2b1957\n7726993e4b88223fedc32c5c9ec9f827\n383bac847e38daa0e8dd9b2c07157c63\n308b76aac4b518a43eb67d9fb75cc878\n5162651a4c6da72e8a5e49d8f4867e8f\n9d177c3174439ae1a48e53188865c070\n8fd87d4aac0153a26b28a4cbbb97a012\ncbcc5cd1aec9f3413aa677469bbdd68c\nd2a48ffb6d25f88dfb0eb7e753c06942\nefd07df34c1f73cae2367b9e27f16a71\n33f5c19e34d74fa97f07eeccaaddf1d0\neabdb3aa920b216820b64028d2efc877\n20c6158bbeb2735ed1dcc55e36186e4e\n482afdc2ddc5546f764d42eddc669b23\ne4c84068e4c56e53bf8b9d530de7a108\n3515073c473f4ec94b3c42e318f3affc\n2d8f0977b9c6592ffebad4f49b26ec52\n573a615f3496ff4b9b9f2eb77f5e247e\n6d6a92847f46d8e27b57eb4fc830f67b\ne1ca70ecc629eb46ca17c984d94453b4\nf59627a077dcc2566c63b8b48495261a\nfde8c87a485a33b78fa2f6eb9fb1de7c\n1d8d16c0750f22f5ece93f2bb0b6d036\n71eca23b5fc484cc59fe89a0706f1a71\n50e97407fe2f7ebaa8135ec53db502ee\nd94490f503e005cb9eeee305ab9432f0\n8e1d232ce609392ebd8eb8ad250e5135\n219c603c479be977d5e0096fb2d3266a\n489391452ccb38e4c8687ff9b0b4e4ac\na4ecc0a3d68dafd44925bc492489de9c\ne60f50cdb48c2626d61bb0c6c287d278\n2db8006b905b54abf88a016bc446405e\n6d5c6eee9e25b314b3c42e318f3affc\n6ac7b2ef38226e3d26c2e61baa2a8130\ne862a41f869a4274ac7f1a00b76bd166\n700b11e2ea3e941faffa8ecba9b9d6f4\n58ebbe670d03fb65cf19858fd1963d10\n96b4422833f806cecb092644051ec279\n6f84118b912eabbd4587e90e2fc67ac9\n9a28bffd582333ae2af4036e9c51cbc4\na1f46215051dec0871a782a4379556c7\nbfb93705c05ecd0d31e7ccd4db190c0d\n43849351a4da550b33d93f57729688db\n752edd549ca958252b4875f731f71cd\n2b82a928c4a81fe1df4cfe396cee719e\nd38a49a15715c46ec3bd24f986301745\nc5be3a0cd25402f0242f43e6bc9e11b1\n1f857fce279b761435fbe95f496199e\n22b287d232fd062bf51f77a6d7299806\n93e183f827d9361cd7c558b0724ffc9e\n858e98a193f0d82f1a5838237ecfb290\n9b40015761a54e18c29f8b0ac356b8ca\n3f0b0feb58008a663ec7ad443e0ae81e\n60c328c57efb2a69820018801b237b3d\n5bba0c3a964662a6881e525dd6501111\n32fcd056e1c474b84f5cfb5dea01f97e\ndf9eede2969408d0bd2b1bd66a734698\n5b185142b33f3e45c3bd24f986301745\n7e4e9703841f16194e045e9030a39002\nb54ae988f5bb6c6b3efeda73d60343e4\nc8963b0930306a61781cbff504e4168d\na92a13b4968d7780472349060cd3c236\naeb86d8354eaafa232acff7796d8c3b3\ncbdfedbf2dbeed3a91f6e3ed62ffa5d1\nea7e09260babc698983c05814b11dc86\nfc07472e4dd1b6698ae97f14e63e7e01\n2759711dbb8b66ce66e463776e370597\n98c78b59a5d97666dcad73f240f03a20\n1e92f53f3a191323d42b9650f19dd425\n38732a2b4c03e7a8b7a8bf5e3604ae72\n9505568d7a277c7bdd7092ed47061a36\n886c8d7538d9d7bde2d5f8333c552e26\nc18fd0dd722d164f41bb00bd5475793\nd5b9579151041cbd9b9f2eb77f5e247e\n70ef2b4c4b287c4e3c00c853d8b7ab22\n3a8b5f5a627bb2e199b439fff97886d6\n955ee3a20ba242414580ed619ae2daa1\n41396db6d7b550a411f7226d5cab1e9\n41d9bd662687cf503ca22f17e86bab24\nce50c6235cf3ad8855afe589a9f09982\nudf068a6b-e65b-430b-bc17-611b062e2e34\nd23682341fc187a570732116fb5f6e1\n325f9ca506317aeff2c0658ad22a9a9b\ncd9cd0ec7bc9400b559cb8a953a07d9\nc20a354161c28f6ed4da89766e80607a\n37b8604d852791651a648655355dc699\n2892ab19f2d3a88a3ee8e30b29f70dfc\n969730a19872b564fdb60f509d2616e0\n61f71cc002f6da561c81652b127a0ec9\n6684ddb2b7acc11e975d41ba8f947ac\nfef17c8f92673dd477b7d69aa83ab6dc\nb88d8b5e5fbee4fa8336a02debb9923b\nc7087db2f1ec6e62acd2bb6205825cb\n61a6a9dbd3d0efc2c3bd24f986301745\n113016635d554d5171fb733891076ecf\n896303208667c3e9713decb1a0563b12\n7788afe9baeb2410e8e9bfe58361d5c\n59879a7a34ee2ca840e8b85dbf5f349\nc1a0882e6e8f8b082b722fc42ccb4c6a\n80ca57536dfe8de971a782a4379556c7\nca764efc4e76a8b48d69616377752ecc\n917707ebea9dc26d7ee217c21e683487\nd0c287f11c6cc95012d6d1e9f6b5e761\ne4384c55342db206713decb1a0563b12\nf39d0db80cf41db9820bd717b66cebfc\n61bc4930719717a9492d9da2668ec34c\n8f4d7de6fef55f99232ca089ddf0305\nbdaaebf065b112da492d9da2668ec34c\nc6e46dc0afd8b9fdd722b8781cb9911\ne1e3796be1c4313f9a59e20336b93b69\nc04f515b688f9d97fff16555386d173d\n56eca3d859b5e8b4594cea63c14fa879\n450cd2f81b38b6fc7ec728abdd798547\n4344509d0442364d3f9d6e0ade5188b0\n5cf5615844b41442118bf3432a979b3c\n77f1880f07fc9805ce5f623508bcaa7e\n80bad2242183a77df69c1bc654d8fbbd\ncd47ea438a9387c0ee088de33038f12a\nd1caa22978e516655c31590a2627247\ne6ec608ccfb38d6247928239f46b6ef1\n8fbe7ef85a9c57db784a45ea6efa1d77\n36ce26e70eace0a3d9b53420a5458c53\n48f0c9b02587b5a8ea0588dd0d874b1e\nfaab798b13ecba08e9f0f0173ae2f184\na8d357344e421ff21e12bb4aebfe8421\n469d04bcf9576a8b8cbb8bac2032149c\n5d72fa9aea5383384a73e364671ba824\ne065edba45aee481490ad276cd2af3a4\nee6f7e45be30b0a5b9b8611336bc3051\nff969b22a8de5eac30e06a011e63236a\n297a74e1a658e231f51f77a6d7299806\n52cfbd8c8650402ba72559fc4f86f700\n21f2927b04e2f22830ddb6ead95f49cc\n3a96b4ac78928fadcfd33d85f931f6e8\nb85de1f567a654737f8769b595aa12b0\nbbe566c26d28ccfb504721639e19f609\n2592e69aaa2344292463e74275a0e3c\n3b342f2ef792ff6a6006cd11c597105f\n2edba114d2e9454295bea7c29e873d16\n308e56be04f6214e50ed95708c70cdfe\ne92bcd55d36a2b70ea934df7efd260bd\n463fe7f155dd7279a7635bec8b4f9183\nec0258c40ac29da083deefb07c367f12\n2ca6d10b1ba99fbd9784ddd96453bcc2\n6072ff799065609b6bc601efa799c927\n7b01e2a03e614eba4710269d4bc18736\ndf6157db2534b72a9a293c6471e6f319\ndf8bb7ecc402ede384a05e54516915de\nce95fa90122dd67e5935ba184b9bc177\n5afc95ed2a26ce548644074928ab3f32\n8e2b44ec14701d057c2b071b8bda1b69\n30e3af034e3dc084ddfd4f4b3d47049a\nf9e8a5547d89615dfcce6278f5ffb13a\n866e7248434968051cc7750d0afca796\nea6c45a1a6accfa7201a419fa3bbf2e4\n46cb1e740cf6e9ec7ea88ba060407992\n8ec247d0e133ad3ce922ceea1248b9b0\n797ad20122fb300659810674e1df4887\n7263fe53bb4601efa37f3fc191551700\n9e8e454c76cc6815dac5061520ffd33e\ncb714c518e3607b8ed4feff97703cf03\nf1dac1909107c0eef51f77a6d7299806\n20d01aedf15d4d1d23561140a396280f\n6df97f6b123be35b71a782a4379556c7\nf6988e6ca8ed9261492d9da2668ec34c\na5f8050192680e993e6a70f59cdd19a6\na77b1abaa28588bb926350348c58b8b2\n2f0bda4f2c225e0254141309938df7ee\n56fc424a89bb137bf2197da8dec8488d\n491eb8f7028d06152966622c3d8ee695\n3f194ed2680ac0f4f875094dbf5fec47\nf1a1c9f231d2db078a8a3348259a374\n23e726da58f115f69b9f2eb77f5e247e\nd4f38e40aedc67f779368d1198f406e7\n8f1e882bdc10f54955f46d55537192b6\ncf1e9c2ae3309c65d7bb55f118ea0541\nd2c93dac1e088b092561e050fe719ba\nbd6fcae754203396e34dfbaf829eddf7\nb932d245e5e9f98b504721639e19f609\n63fb3c970f0051c730bbd4cddd04c77b\n8748c7f2041761401fc5750ce9890422\n337050c0a5a7f965cc5cf3ad66086732\n6e06af0dba36d9d8f3f3ee5e8ea028d6\n6326e2f6e17cfc21d43c0a5e70f98227\n1e1151a459002e85508f812891696df0\n1a74a83fa6d24b3cacd67ce2c72c02e\n117c0e0aafc0c3f81015cdff13e6d9f3\n5748c2c222d1528deb0a72cc21af76ff\nd3f4ce51467fb777525211e12d56c55f\nbd0cdf88217ac15af9e0f15cc1c070db\n2724c02bc7797bd1486150a9b7f2cf18\n2207db2fa2e4cc4579b3e1be3524f72f\nb8e5ce05c382b9a3f51f77a6d7299806\n4019d848076af6157fee47aa19e2e28c\n3075380de1f28ced3d290591da43d03e\nea02e94e39a2fd3922963ea1e168015d\nb526dccbbe8417bd6cf45f1c1a3d29af\n5ffc415d0cd8bf1d86db7993cf8d36e1\nc976cb3eac6a89d9a0aa42b42238537d\n582c67ae4d746d121b356ab8b24c147\n3c83d6ad882270287ad11050da24bb12\n8d4efa9893f7e49b3a85b56ecd01e269\n2da97edb618f05a5b2ccd937df5da28f\n7f647aa4750640fdaf192dd05d69c7a2\nfd31b09de6b3a75666764c53f1bb4495\na5dc036f882fcbaaeb655fc642cef479\nef9f4de6ad345818b25f0e6fce03dcef\n498755187e526e5c1cbcc2e1b14b6d41\na9b75041c8ef8654f2b838d6025155d8\n3c408a4ad6d57c3651bc6269fcd1b4c0\n432138c30378b2a8e1b6c3a3e12d929a\nd9ce33c5f448815d7062f2d72cde5c95\nff5e8226b88c6b95741cdb62023d6a2f\na10370a1cf036ef82d4725b469da72d\n73374d8256f79089c308dc58cdbda034\nda7fd2dca5e9f29455f0f54ca9692531\nd04a1ec4ac9de6d6eab55e294b4eea02\n3171bae36693716126e4d5b5a8cad4da\n71dbb37c026cc338eff2e9bdfc79fa2\nebed17a73a2e9e981882515d09f3979e\nb5ae5354fe7c166319cb07ecb5b4102\n59ee0ee98def6f1e14b86d5282eb8301\n91534e0a3b0aea7526fc87e2982c8a2b\n901cab3f56c74894d7f7a4c4609b0913\ncd9702520ad57689bbc7a6acbd8f058b\ne29fb377ebf475c51b1a00a31bfed97b\n263cb748cb81e69cc329e2758ab09ecb\n89b05900bf1df4d8c8687ff9b0b4e4ac\n5a3fe2c1f1e2009e762ec387b772e9e1\n524bfc8159111e4571697d26793100d2\n5043b2deab10560fc458ea4eb61fea2b\nbc78f5fc9b614e357cee0fb3ce7bfbe\ne9e224bc0a0787d8320f10afdfbaa18\n99d5fabe3b8258ce9d4d5dcd2cc33826\n807c16e4f6f2c5852cf52ec1a1c9b69d\n8c629a89e570c8776a9cd58b3a6e8ee5\n9bdb034f30c404edba1028cd22cb8779\n48d2769e59e4c2b9febad4f49b26ec52\n8bc130dee1e488925a7b0949b519072\n67fd2b1f102f4f76ec89626a4213fd07\nd7da1c65f996cef2febad4f49b26ec52\n8c90c2739c56c5f0327289c00b6dc9ca\n40020a5e90c75d94a93412f1b60e6fba\n974afa9a51eb74245c26acfe9040fa59\n43fc49e4d4ff831b7df0e9a69c97c97d\n438e57bab04de55e8544f4ec4dad7a5a\n50477d125025879386855a8015309d66\nc7dcd3fdd4ccb7563dce8e6b691b2a29\n802c4ba91b2d1dde9d03faeacb82516f\n11fa9b044482814ef91663a74ccd2338\nd528a94f72c994f3e8e5fd5b1798c97\nb1b11a70a19492fa5242f8291aafac22\n7224a8114ee2daeb0c0a8b87064ef09\n3612bf5942858c5976ccfcabdd2d6349\n6b719f78721d1eb742559566b871c978\n2ad02c9ed22b03727f141968548cdc00\n364a43c9f94f315496db593b49da23e5\n1ab42ccff0f8235d979516e720d607b8\ndf91f68fcd968fd0e4f1a5bf17db27b1\nf515332dbceba51120768660cf080d12\n13c18609602e4ced37b2bb75885cfc44\ne62b187f6741283bd8f27b2e727c3511\nf215c608fe63e97d4aada2bcdc05aa43\n7f523cf6780aaeda2a691a30a5c88605\n8b016c4df0e139b660065f613e3a3cf\n624339070f8a749260c69156bdab9446\ne94befd51c02533b17b431cae0dd70ed\n86d77a9e22be4d5773fdbe4b39ff4036\n5a96894b5cde0551c8687ff9b0b4e4ac\nub5d972a1-de16-4d0a-aa40-85cd3a69aa8a\n6a2ae8bc01eef7b25e655c6c6e834498\n9eb0c534624408a6ca9b40e76e725878\n670c7df7c840f78bcb7547c95fbdff26\n877391ca125a5ad07a56985e287037f3\n4c1d6b12b48a80b0ebd10747ca93b13b\n6cf4bcb8a694242473ae2443c97a1733\n2787a03f47ffb80360cc99f89622808e\n3334213d3f378a7eacac9cf65380267d\n8e93fb99aaf17b9504ca5aa564aebd0\ne4214fa7a544e12a37b2bb75885cfc44\nf23ecf3348299cf743e99e0cae970928\nbc6ca247b19398b89c7dd675565aedce\na273d2fa5244c74f654ea6737b0d3597\ndd27edca07570d277ad11050da24bb12\n59126ed88bf7735b1817f13b030c6f32\ne6408c4be8e6502837a346dba83c013b\na113c1f24b803d37bc5a6eb75687367\n43a275d9bd008a64bb0085d0daabdaea\nf9fb36db323fb2d2df6cfab91d65bb91\nd75d41af68f4bf7f9af4053b8815b239\n47dcabdd8618e5c4b3c9a4ebefe3bae0\n35c3575340cc8234456cbf78e1e89022\nf69b87648aa2c6f52ef787234c3ff353\nc29f439d92c7ae8d6d26324fae5ec3af\n111cb08c8121b8411749672386e0b711\nffd9387a533fe59e251990397636975f\ne1f6a4f5c856ac07bf80985a99195eb8\ne352bba8524fdbd98f62bdf4e9082924\n6c72077d968519bc13e020d985215e3\n33e436e30da86f3bc5beea20858a99d5\nfbd890f1f0280b884b47ef9f38e7ab27\n38b5f764afc9d28f200ad3f421b6c3d0\n9884421ce028e9b1d2ad4916ac26e560\n58891b4cc3fcdd7622bad8a709de6e5\n28e147166eb68b2763ed57e35c972b4b\n90a7820e2391509835836c728d324152\nc44413bb705968bb71a782a4379556c7\n610b1621d1997ee1daf3c002be658861\na643edc1849558eba81634d14a6ca786\n4450887b9a8867e6d9b53420a5458c53\n51d151853d8d05db639e286420a03c3f\n5923697231e1bc86af38a3b0483df58\n18fe5de83a17c6b5876b399a99a15c0f\n432ec0e5f2a07ab8795bf1abcc63e867\n8979c1aaa6675009bf80985a99195eb8\n6b9dc32e4d278663c8687ff9b0b4e4ac\n787a4db5b3452fc357a847db7547c1f3\nbeae73bea87f36a8f797b840852566c8\n50016cf5a426bd63f9d384ecdcc090b1\n40e603e93818760fa7e431436fa7573e\n7e66472eb05cca212e77b4bab2489170\nd29bc9defb4f021cd1e6c0ed5832129d\n72beb9225a841cef24367084627d607d\n5eb38d4e556a893a3b832d9b48bc2dd3\nd36ecfec3f3c18a9a28fdea8831e592e\n3efa8030c71fab9055afe589a9f09982\n1959a7d986720364c8687ff9b0b4e4ac\nbb88bf9eb071f85bb232f4221eaa5610\n3569709b421075c730bbd4cddd04c77b\n594d1220c2c6df41b04bab4867aadedc\na9422478728741108e21d20fbef78328\nb3ced617a2923f674c9740802f05a1f4\n341a2d3df9800314fa260f4362cac599\n3fdc09d3065fa3c524e7e8a625efb2a7\nf3955fc72bd9f91e30e06a011e63236a\nb7a1ec97b8f85127493a4a2a112261d3\nb5a741e11438fb83d155b73c25b81001\n5987ae6521cfcc53877929062720130b\n5627a479e2e7373b11800282ad2afb09\n5539a4a9f2f1b45f3eec26c23f5bc80b\ne564f393acf979683c2e50348f23d3d\n3d5c94f748861bcf6038f78d0f44e587\nd9943f96dfbdf331b17743c18fb63dc\n6e3435d56d8f8465daeb838d0771f3b5\na0196df591bcb5f7e404848d22e4a58b\n6dadf2259bec12c6a51c26819f8dbb51\ne66ee381e20dec3a44f23566597ec464\na838d73a1ae66934b161f36d4e309050\ne3ada26cde5b4de01186ba196e9dda0b\n40e2ccbc74d0aae3b398a1cfd1079875\n8f6395e2451cafa6473f10e6caaeca56\n6fcdcbaa1cbcf217be8211d595eb405d\na4da5746b99209f85da16758ae613576\nd0255120e3351121c3bd24f986301745\nf413955a0f16ae18b76e29c9c43bc7aa\n8fe0e6780b3dabbbb098f5649ee97d24\neb32fa1ae8069d0998e0d1738edd4f19\n6ad86f428cd45b5b258d4ef9a9977ede\n18d391ede29e2edb990561fc34164364\n8e2b4f8e0a38d2cdfe74384b8bc69dda\n668aa5d430fd6d4e8f7d9678498f2295\n1b5fc54e45c8768490ad276cd2af3a4\ndfc2328946b2d54a29426a0f57e4d15e\n5ca5e3357e5a6d9b45c6cb69e0968783\n50d277986a78f9fc3eec26c23f5bc80b\nbe0b0a9b0a7108c6e4f106360437e8c0\n60b3d70238246b3e408442c6701ebe92\n40acea1827a81a774f7f6d1fb681883b\ned9d0bf4b699c2e86393e0168650b62f\nfa8860d6a0d45a4688dcbe86402c7c15\n954a964459d33b8a71a782a4379556c7\n71539c627eda703490ad276cd2af3a4\ncccc93857d3f5c9950504d983def56c\n5ecaad1f7575b3918ce66f12ba927a2b\nc5be8052dddf9e92283b00891f680579\n46c7367eede2d9c5ca2ed12df13a916a\n8f09ae17dedc43c6dd7640b87074419f\n1013f70851210a618f2e765c4a8ed3d\n2b7335c083d04862ca9c7c1ff5a28926\n4a45de600363af6bd5cba62773b8025b\n8a455c7acaef577824f0493013a8318f\n2d75f86921cb919b88dcbe86402c7c15\n5b27b7cc16d2b25231f8120b4da8e523\na7b9f9e341c74b8d57ddce8e42aa6e90\nd5d18ba694ad228346b9f3b6ee20ff4b\n3f5f14f6156261473b194e6e71487571\n91cf38c4b99d75374fa746d16faad4f5\n7b2d8c9f611071c7d810b14a81e12eca\n794e80fd66c833917d20e6f91e9b2f9\nd5c67068390ece634060d2cb099a78b3\n7f6bcacd96d3b89ef8331f5a5b032c12\nc69d5899d85eab9c173b9f28a2caa84d\n21da49c5fccfc3e68d861be5b561accd\n58f44c0057ae64b525633180ba767a60\n9f9c83f3014f19c79e4965f0106e00d9\n9c825b20d4e35eb595a6db6161d501d6\n6f70a7948c59b49943da6ec23cebe068\n63cce233e9e5c33cd8f27b2e727c3511\ne936176764be83d029426a0f57e4d15e\n6d270bd691a168f48fa2f6eb9fb1de7c\n99fcb202acf5d60950cf3715818ccfe8\n2be29f8ad81e2742eaf14273fa406ffc\nfb6c81cc88761a927cf3afd3f215c3ae\n2a2ef361fbe78f1e9f3cdee390cffc8e\n21ba49d0622c590c8a93d439b5823fb6\n7667d0da445e324bba600d75deaf8d3a\n9e19e66686ed019f811a574d57de824a\n7f14058e6bf50047ea1d47b7c8c17fea\n98cb91189f35e5f57c311bdc1462c34a\nbceab717048f35fea481048c76a35623\n226927edcf014278cb94e5b490ba717a\ne50f1b2d0835bb392764cfba57a5de73\n5566ad94be22e7b5d85141a9ad5b3597\n6c0b7ec41053d2e463860398b0d16872\n4960144353a6dd944c5483fab67d9a50\n6ecbaaaebb241ec34b3c42e318f3affc\n5bf38f7840d4c8fc8e9d341bc3648f0d\nc65f9af5b5a6cbfe5936c7265c890fef\n287bce5664e168fd744dcb8aae5f2395\na724a8b2ea1ef63954a8e7cfdf35a7ed\nf43eef7e3991f80346ebf4f1147c3f0f\n5b9ebc70e9a79b69c77d45d65dc3714\n4217f2ce7ecc286689c81af3a850d0ca\nfc723b936f8d8443492d9da2668ec34c\n2a87cf850dca72a4a886e56ff3d54c4\n33abfbb0993473bd71a782a4379556c7\n58b7e2dd5eb73b70dc742bd7c6fd1b27\n8d3ea5a8630be8c0f51f77a6d7299806\n6a5ee2ac74c81e9d470412e9b69c8933\ne2cef660d0d7a4629976735d0dd7540d\nc9d5ff677600b0a1a01ae992b62200ab\n7121296a75c725aee8f8c11a24c52ebb\nf10263256eeb840b732c9e6120e90cf8\n9c9f007599018973f51fa0238791f5dc\nfff29a99be0df71455a52e01ade8eb6a\n4dd8f21d05f7d9a99e48f9f4020457c3\n69aeeebc9a686862cbacd8aaf9fd8072\nce159c7d983d74136ba14bfd91a75020\n7fd10f44a20506ec1b17743c18fb63dc\n8b45782142fe42b02314deb821327685\nb46ad21b7126049842ca7cc070f21ed3\ne4602d2f261da4a314b029b11f36ab2d\nbe7ee770ad59ed0eb07bc9fe525caedf\n4ae3ee61ebfd4d7bc05575120a46cd3b\n780b18643b4cdd991df85a93cb67ce5f\n1da9942b2ab7082b2ba1fdc12ecb5c9e\ne5a8500223786886995e7ab497adca70\n60a1742f1cda02ecce5a69be7dc7d68a\n4dff2fded7130c631a8db2c23945f1fa\n434405216f00c9654b0375f3afdcad10\n671f35148ef1cb2fc0806ee26b689c99\n3e5e00868a2dfffa7a31dd5af93fdb5c\n13bc03eca6aad4b2d7bf6fb68df7f786\nce774c6584d282ce843ead12644a79bb\neb1019c438090004db6175ef18ad3f80\n3c02356c918f7365b82b2bbc752d3ebb\n751d61e1d2cbbeaebdcc459b19e43a6\n5d7b94584595d7a9118486d21a76684f\nd64a812bb87a822b8380de241b5e0725\nbdeb8ea8a146bf69e54cb890e8682c84\n4fad9d9b2c73cccccf0517eac2f2d331\n3fc616c2b603b333f3369bb203286e75\n9fae85a69532d03fda686a7d8e3d0692\nfb633f298fd5a44a9a8ef44e1d2c5b75\nbe50a399623910e1fd03f420a0b8656\n2b8380ed4b779be7af7c7ad2549a1b15\n8841a35812d5a95f98a4820926b2a786\na2fdf98f85cec8696ca407465d3c74d7\n3be2c90d1c2730fa14659d605ff53c6f\na6e3c2cecd4b6b6203c870f1209d6b9\n6f764c190cdf1629307776da88d1350f\n84d783ab90b79f8036b0f2a1430e993a\nc46ed3a68dcef72039b07b3056a2842b\n1f82011c2303fc7babb8f41baefc4b12\n66312d6c06a24772a8e75a1a0cf7490b\n8e87911087743bdb2314deb821327685\nab62680f067bf94dd6a6b5838ef6b356\n934d183065b149d784e40fd1beec9c4\n4a671498c6e96238bf8db636a3460ee5\nbbef67b2c3d3864e8adc2f75cf0a8389\nea91d70feb603421f74aae127b28c047\n3427d2276fb713e5864c004309dc898d\n96929d658ba1a01211ffd7c4e1c9d12b\n92d87019793c97c636c8b9bf2576aca2\n28673322a55c9935183d5461e0e1f71\na6507d76e88e9d68c28a12683f5d3629\n2a417b5a946ff7eb2a3f8f484e6c5c4f\n6fe690a6f597351162fd10b0938dcb5\n6a5be179ac61ab24b07017f7091028ed\ncec74855ee27972040a35da25154231f\n97febe7745f35b9183e0de42574c850a\n8114bc9ee0a7a093a094848ea4d06501\nc09cab69cc04378cff24fe90298ffa71\n8daeb5877bba8cf5936c7265c890fef\n6cf3b41688dfc4b4707cdefe012d0353\n67d86ed49b1bd1e7af802a9d0ab09410\n1b90394dae690dddb53be07817c1dd99\n933902ec014c6d487135fc51795b4038\n36ced137933c36a3ff085529822a7226\n90d35ca55b35d56dd5883ca9b41ac387\n7dc902a12843fa60e84c9243a4e577f\n8c4fea06a94d7ecffd61677456447e\n32e6139951627142a087337e55e3e2e\n6079b4aa115d08c28998b3b64a143d42\n6c1352ffa574e154ca2ed12df13a916a\ncc5e3fff3e1325dad67c0f41a0da9c74\nfa6636dfa85cd625f63376552552931f\n7bb5321d1e63d8bb36b0f2a1430e993a\nu45c7b89f-d996-4c29-aecf-4b760d1fb2b6\nef66111933d5cb32e46ed8e42660ff49\n6bcabd23a81dd790e386ecf78eadd61c\nc2430d27be01948ab8e1b99345a5afd4\ne50825b2477ba5a0dcc52ca811e565\n108b9cb292fd811cf51f77a6d7299806\n82979f3a00ca7b5b0003dd98e70da8e\na4684772b9356ba28fa2f6eb9fb1de7c\nu6028f63e-4111-4412-9098-fe5f4f0c7c83\ne425c1db44d1ec8ac73ddf48fc777dc\n4efc68a96296be2ac785f06f424b9d06\n6ddb87a44f7f68b89c0ca344f487323e\n8d7f0c67789caaa3f415ddcc43feede\n710441e3719c99e04b3c42e318f3affc\n681b792d7bc9fdf8305e886266e302e1\n2c03d0a4c83f0e89488017d48a7f7eb4\nda02c479d1284ad38727553325e63baf\na0436bbc1e00d9ce6aea2f18ee404fd5\n639e40029ef06d6f7e67c36deaaa271e\na50cf70c56091637e6fe3612af521500\n5faa205b9355a66579ae41e1ea899b06\n33319915ae51cbf33542091189dc62b5\n71372a09d0dec4f2e3837ef7356e7613\n893bc32a68f387b0b675b353faa5a26\ndbcea1998258b0fa6f500315ae356942\n57cc406d478167a6a6c03a53cf0a14c9\n4cc17e003a26a3d5eea9006d9d8918a7\n4365a4d98c9b979019149a7f35de06bd\n8bb9a20b7090c90bf2356faf7e20b90a\nd8e5d15cca97d3fcbda72093f9b5aa73\n32f007e84efcb9d12cba66dc6aeabcd4\n74e14880b5aab8e3490ad276cd2af3a4\n6e1e605da1c3d680f9b9977a2406713a\nf1fc7d26395549ba5ad8ce80f1a173ac\n215e557db4c4bb5d837b757304479228\ne6719610fd2c44c99295da7959c963a1\n9ee5eb90d1176e2547dcda54be6a23ae\nb7403875e1d7adea331fc18393f04d2a\nbf179410ad7f9f37af6595f7d3f20cf6\n6189b30ed01f7bfa5692a9640d6947fc\n682bbcd00c5287a39d365481aaba80e\n946f16a9bcc3c2be75aa7f24a9b6003a\n98f923c006fdd918e6d206b2ed87676\n2588ff9ade9f3c1dff2c92c2a4f65876\ne74035d3001deb876fb1d532bc5b4021\n4ce5a0d60fc942f2e595afbdc333be49\nfead8d07aa53de5871c3cf047830ec1f\n57583ba714a883ce71c3cf047830ec1f\n92db07d09bb110386bd0aad3d992cb54\nba074c9ff5e36f60e8b2b8dc0c816caf\n39fee081ec01fbae4b3c42e318f3affc\n6e965fc2145df32f4d678187b8261d95\ne905abdafadb48d4155b2bc3322563d5\ndb0925930500d67d7094f114e4783e96\n562e6354049ecbc19f8f9f2bcc40c84c\n4ad06cdc2f8929f44733824eae5cd9ae\n67bee683e394395d84ea893d074ffaa1\n9324b077e28980f3e3dec121245a30\nd298e7f6e0e335a0e4197c3ebc03326f\ne6355bbd9aad146a149098a193698017\n72cd991e81a34504d838ae16242881dc\n6b00fdf6062389ad738dd0d3509c7e47\nfb056f0260d4855d36c8b9bf2576aca2\n33fcb31af4c4d039fac1db559484b15b\na6bdde9da1322bd5116162acefe23592\nbf3c02f71de0260a8dfc31d0ab372d9c\n50afe00f341993ae7d63360731b4227a\nb6b426ede67febd4a413908c0e169330\nf3e0042ea11660d0ff2c92c2a4f65876\ne039a013f1877fbf42bd71dd667c95ad\n53316b8bdd729c87a516ad65be981ae\n94461b3e6212f63265b1b65ffcd737a9\n89f5cda510eea57a9917ad57402f53f1\nf3c0ab68f3dab6071b17743c18fb63dc\n3c17fe56ae05d51620768660cf080d12\nceec3aaa6ee72dee613f0dbd986ed6f8\n6bd131b9cc3e8b97b2ce8575669c9dbb\n31e59dcaa15f2599a52abcb0c06a3598\nbafb9c9602d00b3e50b42dfb503f5a87\ne9ccf4cc84c085f8c785f06f424b9d06\n3e427b76d051cb9ccdea755aedb6e3f3\nacfd2b0f06c128d72157d75d50a75b71\neda92b7bd76d8bb0b083574fdbdf0a98\n631671b636ab97d4da41a38d2e317241\na554d5e0eee3109762411d0498399c28\ne3d3b3e060ef84c93ed60220ff139f8a\na14c7700cfc99b03ca6910e4922d61aa\nc2e50f21663db36af8f5708c6c7585cb\n1007e20d5e811b308351982a6e40cf41\n53f01d977de993442ea98d69e91ba870\n4603969ca86e226affb3dd5191e9a4\n712415ce3f126dd921bdbc0445d9f748\neb7c250519101dc22f21cf17406f1f25\nf4427ee23d4d51fabbf98dcec5f11066\n6be6173e7eea5888a616caf97d73fa02\n668857eb0c18b0785dc3653f8341633a\n88382b877be91b2a572f8e1c1caad99e\n7aaf5573892cfe086e6e0f71258e961c\n294406eb0453d6a74aad3d2faf99eb1e\n79c9fdc6bba82709c8687ff9b0b4e4ac\ne388792a151735e57597e1f94410131a\n52c4af69336f4d6de9deec47d8412ee\n1e7bc7fd20c61944f51f77a6d7299806\na14880ecec87a82bf9b9977a2406713a\nce3b2722cdecb0f0b3272b4a93a044ba\n2a0f4fe08cec3d25680876614ed35a7f\na94eb852d2137621b38821f893bc10f9\n6a73ce89c4a941ac0f947750540fb22\n40567b0166658623b80ea7d1a9683df8\n81276e5b6c8871634af957103f4767ac\n52cc5e280c23ea9d490ad276cd2af3a4\n375dd87b163dc8a3a3c9394112c76917\n3de3774ea9a05f51585ed17f54616d23\n4b35795a0ba482cb4f3443b22038d340\n923bce0b230f5a1a2c919c0510a0815f\n323ab1a1a81ef0f51f77a6d7299806\ne5cb5334f18c13c15a7f6c1314f7ac2\n8dee8193a06525f51de495b75c95e5ad\n569500b7add934625090f949bc5dabd7\ncb867c64ea2ecb408043364ed41c1a79\n4d6107c32c75ad6b9f4b4145f6688869\nd3bf9df2360f0a56731dc97277e95217\n9d0ec3530b39e89640f4518b250404ee\n83649708d0f14dfb8367ecca203c14ae\n726996e3177354cf2095dce957a7a5d\n3a123ae34379ea6871a70be9f12ce8b0\n73fee38797aeced4de03ab2a27ba7531\ne5a65fb8c660ef96dbbc9440457e303e\nce387113cca9c0754d33a7fd9c37a7d2\n8cb521c0e96b349d65ba78ad9601cf1b\n89018ce4961c76cd5a8ae8f7c307d01c\nb192cda468f9390aa3f22b4b00de6dfb\n4a50449de8e26e82eacb498394990f0d\n55185010b0b6e42eb98f36033d4304b1\n33587d34aab902057add36d8e31831ec\nb559688f7af76ff5466127bf535bd761\n9d20e4d4637e66175836897f0d296c15\n7f820a5aef9899d5e2953fd13c76ba9\n3374905da20ad76f3c9c1464e55d580\n8d18fba375d0545edbbc9440457e303e\na8c0ceb67971d0961b17743c18fb63dc\n1769c3cf3391d5c1a1d7c136d0e341\nd62051da1ac1ef21faf575cbae5008b8\n75135e879341721c1cf9f632ab9ad62b\n7ad6cfc9aa35aa058573c953964a33bf\na4b690e66e3937c88b42931b6e108d6c\nc61e3ca5004f3e8667816b64852d28f\n88aea5f475654e491d77ac5988aa9265\n9f5add46af4a41a1305e886266e302e1\ndaabf4a2afac24c97eaf5bcc4a8beb17\n39d1a6007a4a29fe492d9da2668ec34c\n5e13ddf9fa4ecf53c62f0847fa177f8c\n7aacb2d4940e1af772ee08e78374a212\n6e1fbf46f1d0fb73d8cc7a9b2448f97\ne8c3582f0413179b47edf0d5b6459616\n2c351621045e25351385913bc50a0210\n3f0beaab92a08fd74138477d68528833\nbee929929700e99fad8a0ee9b106700e\nd460611ebc267961d838ae16242881dc\n4387affd3bc4509a36b41ce3eef1f5be\ne7316ceb5b944b6fd0a96520c31993ad\nca2294ffc664a55afab1bffbdecd7709\n69261d58214053d1e6c5cd45aa112726\nc8d6e4e789a0c6a7eaeab1f0c9120b7\nced9c5eee916cce089c398a8a379054a\n2ab159f83754a93ea6c03a53cf0a14c9\neacc4fa00a65e56e374f33ec97ba7ca2\n38141adb391a039ff3c330baa382ded9\n4552ab193b8566acea343d0d02e4d3bf\n4a89aad97f4c503068d1b9a1d97e2846\ne6b822bea1d5a5a9f7b783634bf3f92f\n20e1bdd54d4082097962800be79c6e52\n9bd5937be6aafe704c29eddba1f2e390\n6601d179e754149e2f710dc8afceb40e\nf9da1bdadc982c7f78ee935ba846606a\n406561a447d3f7787f4096327f1fb3a7\n842130b6eaaef7a4932471681ea5bcf2\n30b0196b3b5431da2f95e2a1e9997b85\ne3fba8a576d4d875e1d0950dd1aa903d\ne27cb29cc3df4d0330989b15eb158e03\n3bcbf7c8c8eef525c5b0fe224c67bd68\na7f911657d2ac259177faed93fef7451\nc5d58dd0119f0e49503aeac2cbb6e06a\n5857dfefaa1b6d071d9fd76961a98198\nfc66e46fe850a243f51f77a6d7299806\n4148f94098b428095dc3653f8341633a\ndddbd223b3bbfa8efd93c2ac42357c74\n44b0b359d2eab610c2a3b7c9bad24907\n2d74dcc00e449a5462a510b8f97c658e\nfa5dab91cbaecea8ce9a0998abec10aa\n632a722f9edbaf607b11ae648ea92233\nb960544cfd0ff09f26b2c6e6d8c1e1ab\n4c0d8f04f27f96284417bea8868af4d1\n2a8b0d30928d3161f7b783634bf3f92f\n42635d55c5905a682672e8af102e0b3c\n2cbbe7f1f1f75e34d28b52ade6c7e48\n26e85b84b3b6eeea21711c78ff413696\nc78a6f04268dd802cf004563556ddb36\n65b8c99a5ab7eb0492ea5a71c9e33093\na0e9606288d3ac22b61d9ed7bbbb5b3f\n956dec7d9cb7d078a9fe51c710ac111b\na469bcecc0a03db7d40dff3e049589e9\n5a5b11daa1b5344fb516c05d046e8e45\ne59cc0fed1520985b21bc3cf138f79e\ne04ceec8711a6027a6e27bc066049db5\nfaeb171add09f98cc8687ff9b0b4e4ac\n9da67fff6ae787b2eb0f0bdaf192ff28\na8bb7a8d6f2e1c5dbbe43d356df0e955\n3c1dc5c4b0c8db31d20c5daab0fdbf5e\n3297a632aee6ac55dbbc9440457e303e\nc5203dae464c264f4e41620d80d9e89c\ne6b80e51ceb5c2771a782a4379556c7\n38c67c695eb4cd819e179bac86183112\na004ad56474501f67eaeab1f0c9120b7\n91d84fd5e5ad5c09e63beedfeef0900b\n7786f1205337093d6051d49e4b21b83c\n40a9dd43155979e7c40cffb9454b27e\n3318f55fdfb9a132f83ac1589b0e94a6\n60512d74c623484bf27383fc5a5a711c\nc0f18b32a4124eccad9a0199a27b3d8\n2bb65d6612027f18591999955e20a6d0\nec7076f7f37a6e124e234a6f5a66d6d3\na5abf524f9b08432f51f77a6d7299806\n8e76d0002b592ef91663a74ccd2338\nec91b1b29b6bccd37eaeab1f0c9120b7\n6e50f19c52a760e3cc1159c3b443c932\n6cb3d99b20e7fbb5b04cb542e2c50eb4\ned6bc67f247a5aa3e43df8c9a38bf11b\nbc743137d2070eb1f51f77a6d7299806\n74c97be038139e9792d9ebeee84a8909\nca84b42ab1cfc37be25dfc1bbeae5325\n88ba4696c25632507b6a13c9370327f2\neb63908dde4b579e25d45769a218937\n96bccddaf0034be04e5cf15b26e670ad\nbc92651fd7cd9ca8cf68feb7ddf815ce\ndd0eecbd7ad89b2563e7eea06f1f07c8\n58b3e0d46af2019bdd7092ed47061a36\n88058de808184f3937b2bb75885cfc44\nbea846f692c8bdc8ce6fb1d4c6089968\n3ec25d235438258d815b20ced9d3b22a\nd16b62da42fa61f0cbce248a4e686c70\nc70c1a6a0e795669f51f77a6d7299806\n2ba1779986eb9546f51f77a6d7299806\n27559a7e2b0b839d75bd952b0c911144\nc2a7da6a1e1f896a301e9490bfb35bc0\na216d6a04494ef6a32485dc6e0b2347\n8bb3a13d45c5337d20e3ea5765d7edb\n4a2b8f9d13afb39f8f1abd08ebea3018\n4ed8015bdbd8c03d2f95e2a1e9997b85\nb58909919d9feea6976cd10355a74f40\n7fbde9d7cd67587712ad7c55c944504a\n746ec5c7c0ab8924fc1f58a995f231d1\n61950eabab269b5c530a9fedbeceb83\nc0720c8d54745ea8c8687ff9b0b4e4ac\nc5637356cfc865b33ad3591a780fa12b\n2bf69f0fa5be4c3f6ecea8cff53afe1a\ncc1dac5070d0bb7d5c43d2b61614d0d0\n4fae9528f1403fd0f9702e673573a443\nbf39672eec1e343284c6c80813d54fe5\n802f70c906274da08616812464c86290\nb16ae1856433e726786e4057cea53718\n37078d0597a05284b05550de345b6d0a\nf891816329ecee93774476b2e205b9b7\n33cd8045bfb42e53dca072a2e97c1839\n3795f02c9818a7213b407f4857c15d98\n98547d9147a58195f51f77a6d7299806\nffa6c1a509986a5676708f8dec712a28\n9af15c2a94ef79844aebea9384ce74e0\nba33781b222ca9346e23a4fabd87b2c\ne8dc06c3d01d6592f4b6538438a0b930\n659fdef8de4769079c251b4a7838829\n7f9733a6370440dcc8687ff9b0b4e4ac\n5d5e887b9479de0ea9bdc22a1e02e82\n95d83e52954e1ff2d19175e7d19b7cb\n606cb23f9a7f23ef51f77a6d7299806\n10dc303144fe5d668d1b9a1d97e2846\n5e259c1b8640f5b7dfe5fb64510022bb\n473afe27e45b37101c8d18742f91c015\n8763bc46c26ab19957b7bfa2b0e9620b\n9527b62eaae8f007259ae7b2899be714\n3309d6cdd3f30ece3eec26c23f5bc80b\n22bee1d9c6357b295493ccf8f26ab2c\nb83bebb013e4ddcabd1aeba6ff85928a\nff529b9ad2d5c6abf7e98086e1ca9511\nfd9b63c23342e57045b799df37b9f05\nbfe54fe90c7d99637fffc92abe94e907\nb6e662b81c62dc9b688f5a44034a346\n9e54053a1b16299153c5215ed09cc4b0\n90587a80c1e58a7ecd447b0bcf9cfb5\nd810a38ebae55007eaeab1f0c9120b7\nfcd25e25dfffff7af51f77a6d7299806\n797b37d3462592b9c8687ff9b0b4e4ac\n1b92525f3945f486fe24b6f1cb4a9319\n1cc6f2ed3d684fa245f213b8994b4a04\n947dfd74fc8b2e60643b321651a8f917\n69735def3b0f009eb098f5649ee97d24\n4e3cc3f6d2c25b904addf6a5f8726274\ncd5007a237ffde592b5bf1f191733d75\nca804e0f760537cac4545d2091e9ba5d\n96fb86091881d54724894811dd3e6d32\n2f42261a7f658407d12a1bc232f6622c\nc8ccac20f5cc12528ebcc1a99d4058f2\n79b65e898b52b197b11ae648ea92233\neae58f128191381de9efec56e07965d4\nb431161712ea348cdbbc9440457e303e\n2f7a68f4a75dabd41c8c7b57a94dbb2e\n55d147c5125f5043e1ddfae8bbce5fe6\n9fd0c95e0112f6f8dcbca12e02e87571\nfcfb7012968416679c0b027ae5b223d6\n3358536e8e7c416ea9ef8e11754eeede\n2ede0b0117e75a4315d50c1c4b796b2b\n4b1e09314ecc02d53c8d0fdfb1cc2535\n6e21df8cb8db3819899718fd4553951\nf5ef49d354efe6741cda53280488fc3f\n731d9114eecdeff93454e751432992d2\n9f6a7ac15495575f6672e04a03e08d1\n640f61579181aef13ad3591a780fa12b\n4cc4cb9b533e8b84b04cb542e2c50eb4\n6ff87a46571c52c4f4b6538438a0b930\n70e3e98efc6ec0dc611a1a85a9d58686\neb23621d7ac1094398e0d1738edd4f19\n30dc9d9cfbc01e19950c1f85d919ebc2\n8e945aa01bbacf7c3fbe480a485feffd\n4a367285ab5c22d07548800e3d70d83d\na7aafe44f64dd04dfc6afbc561d74a4e\n49110d0e41bb90b8b8e1b99345a5afd4\n65840c85162994d990de7d30a74bbb6b\nebd73aa8ec2fea5c36c26b54df360d91\ne0c76c1c82f12df4c1e1aceb66eee9be\n23d76c249645228d1e23e0195c502f30\n6b796faf03a2806f397aec0de5712401\n59f4a5d8390c3c3d5fce6078044eb87\nca53f7ce3b6951ad3991f56363dff980\nc658d1006595797e301c83e03ee59295\n71dfc2ea8bd6cfaca8e4e5c9426fb9cb\n1f65075818c1d832c05575120a46cd3b\n34fc767b72047d9ae97426e55fb77981\n5a4c550b1b41114c3d2617f9171b5ccb\nc06a8f95fc273106b0f4a0d43d1e4c23\n50e8ca681532bf195fa5d73d8d08a44f\n3e53710a62660c60c39d538df4c93695\nbfa5964a53730c783136fad73a1be67b\n39ac9a459a28e252763d2f5638da324e\ncffe40b41d0162c46b2befe83a0efe39\n2ff12e3a324071c0525a3d382a240768\n2ef1e7da7f2a124215d65204573ec4\n5c4e1a58eeb3171dad8af6714b643432\n19861e56a952fe97b8230112437913fd\n6214c8ab2dbae2517eaeab1f0c9120b7\n5c027016e14cac15ffff2fb60b0d6e6\n4b366b7995cd8d7fce4f274577283b16\nd7f35cad0f4ab17788dcbe86402c7c15\na8110dab06c9c72a2c528d33bca1ac2\n7710ecf956701938b40f0ac0fb9a650d\n21e0ce3ed3e9452c93271d2223fe04be\n5932d26671d104d76370a012706ac174\nd2771921272ad1536a69760cb58e50e8\ndfca4eae14e0bb541f6399f392c887ea\n321f8b85785f082685e443e0ea51d93\n175e2a8cd6e9866ab37303b6dde16342\n799de8b0527ea329c725388bb41d64e3\nc993ac723dbaf479a4929a32e32d23f3\n67fe832a22b91e6c54ddc93d2b7d3d65\n4138f85b00b53185dc3653f8341633a\nb518d19f55a1e15f5d714c9d7df1c4ed\nf1933161d8b49d8dfb266533561ee98a\na8641cd287bcaa2011fd5138fde4c9dd\n6a7050042fbc77d5635418e95eea8a17\n243ab0d808fae5b76f1d1c49624bcfed\n30d3b99aabb3ce1c4adcf948bcaafbd8\na59a49a0f9e8f4cda249f8489bc060dd\na18156a0e60e50391f4c17ff3c45b28e\naf96bf24c341e56436b0f2a1430e993a\nf0337929bdf10321d22730b0728b2fc9\n3dc79f23cd284bd8ece416489129c313\n76f2ead0035fdb2ff94d7e6d8577c8ff\n4966ef665c6ed17d4240438e2a9161a\ne967ee5f0790d685286e59f068d9cd0e\ne65ca690574bfca53ccbceb68fb352fd\n5f33a76ff2e4d25ea7c7a7d30ca93d68\n4facf9c7f5555b28c0f947750540fb22\n23c4d774910c9ce03c832f0140db42bc\n8a2a0cad888b871eaa84c578b771896d\n5ef0c3e89d51eda2d62069fe2138d0b8\n516c4adba7205cb43e9bdff70754d92c\n78f5b44157269f99fd60059ad8523f1a\n253ca5aa292b344b7e673473caa41d7f\n57d4b5a07e67c24af77e1de7c7a7b6e7\nea1566ac9fe1670d3b622c8598928cdb\n7715c9c229d80afaf487e71bd57b6e0c\n2a8bb463e116e51de58b00a9dd2403d\nd657236c764dabdf5de9b4b5ce85d50a\n45f32105a1d05455bc996a5f03fd7bf5\n983414e34ee6a7966aea2f18ee404fd5\n37a05e83e529a1e044f23566597ec464\n1016f4debe988507589aae130c1f06fb\n86c28989c2edf29a2bb396d08a9b621a\nb738a4aa965784abd86234e915108e6a\n1b7ba5484399d36bc5e50b867ca2d0b9\n8538245c2d93c60864c85287e21825c4\nba707bbbc56d1bc319620b61f6587b3e\n81c291ab8abc1d0172b24bdfca058442\nd609864ada7d0170278d386bfa54545\nc605d4742f68a00ece45069973024eb1\n43db37a72cbe0f5d4ef0f56ac2c64e7f\nb4bbc9d05c1872239abed18a788c862a\ne3b625f979f3a32fb591e8fb800990fa\n708cd72e15dfaab8a687729fda50af77\n48bb4afc8cf90b4664215ab2598fd5cd\n4adde89dd6db1c4845e13b6ba9ac0cd3\nce935c8e977b8c58aa53a70b14c57bcb\nc94f7f5ec96e10994231039830c7e1d1\n9012e4fff3cb71b57773c2e28f019f8a\nf39d429ab98d5323a1a6556bd50a3110\n22ff2267856b5d369158e0f216b27548\n40e9fdb477fc0c10f07ea52432becd0a\n7a7b08cf81cf358a8616812464c86290\nd3a958aa302f198b938da3ea2c9e0e4f\n749c3d0d59bf7aface4f274577283b16\n87a3ee7e68f360351db0d76a41d718a1\n9a6cf471cd7e26566acb4ace974ce36c\n26bee1a8ea71545c3a288f3e01ebe3\n3d7ebe5de86294b3f6bcd046624c43c9\nd375dfbaf1a2a3316b2befe83a0efe39\n2195099b0295f692afca3357bb07ab96\ne0badcef3c110ec6c4963b39d8846214\n825bd436471f47457ef29b55d8edde64\n86fc0fd9ed51dc11664b3b9b23ddfcbc\n6af354d0e86b1d5ed77c4541cb2e97a4\ncd9812c163ddfb3e83bcab979449e28e\ne3394ec3b63fdc255d59dae8d8b300a8\nc9817f6e253b7a93a5ac563ee2a0cd75\nbace9433ae54fcb3290d57214c8512a4\n6e9a3650b8ff39a02dae74041d029566\ndfdc94c658a98c79627fec6651ed13bb\n4608b290c2383d7c9730cb37c9a5f63b\na62bf8818c8aec7062a510b8f97c658e\nde9e40c346ad2779f8c3d2002c77ddb\na976138678aa74d0d9ed5cacfd88cef9\nb2a658572331c578340a1d09e918e861\n669a23c329080506d295b24579cf55b8\n397a5fd0a95a17e4dd2be59fe725394a\nb9e9eb2d09981218d3c5964623f1547a\nd3213947dec793de213c3458a0fe5598\n1803116582841b39a8ecfcf20e8cc0a\nd8d5829083c66bd4f4b6538438a0b930\n43c99f65e19e5c657746f1e767f87dbb\n81889ad00179daf8adb91c074e672e22\n981bbe2950bc9b188f1d1d7c3673dc3d\neb9851403aca75937d395837145ded71\n7dc91406f30074777b707c797539b200\n3f55885c27d84e5951ae1a6e89264401\n4042faba97a901aa08cd647a48e605d\n37b6df64a97a5c29369151623ac3890b\n4566839a362c5c223ec13b32c4d64f06\nbf8004c0d88210a291efd008fb89dc2f\n83839b89dd91996c7d910d51d878f708\n3115864130f4e8188f56c17c21b5509b\ncfe139c0e8b8cfdae342bce0d924820\n98ec1c46805977c33b48a711df82173e\n5eb67ecc35e39eb59753496ba23f2183\nc927b1352027fd6916d8d4903814cf37\nd02fc4ae6bc4278b68c4c9cb55925fb2\n2b90701386f1813052db1dda4adf0a0c\nbd6bc40b3327e5109501f2fa226917d0\n94ceeee26248a275e8e2378aa23e4253\n3799a4d787d31c0bc580fdeb5460f6d6\ncf09618aedde38febda72093f9b5aa73\n39d357d7ba9645d4647d4fd8d921152a\n4f0fc7761771d073fe2cac60a76c70a\ne78f25a1f66c19a38a63c123f2a561a6\nb541d3afd111d86f265d8abf3d2f9c3\n7e4025dcdad5415386c701087a194026\n87b576eaf04f1b62305e886266e302e1\n9b6d1c0f3a20783af51f77a6d7299806\n4133e9d231ca52c6a16baf954c1d99bc\nfedfc00265711f4193c1e619801da0a6\n8c4ffe44076e9d4a15f62f0f1afbe530\n2b2510922e763c2443b0708c694aaf46\nd30e58a2361785683fb0851e9bc87551\nd4c3dd37d27afa8e7c5910dd17778965\ncfd2b4a2c8398220731d11154716a6b8\n8be5b3b2c8c8f067a341228b21d337a9\n774b94fd956a6601194565c2f3f896dc\n89e6839589a9b450a3f6a82f1fd27077\n2972fd770304663cb3d180f4523082e1\n38f8b44fc8dac88ce3c886e48eaa6e2d\necfc0cf5081976323002761e7a3ba3bd\n59cc459b0e75c2ec1142c13b71507bca\n1cad298ed14e60f866e6ad37fee011e\n5ab67b30e17a2ed1c862eec8232fff1e\n600f6f126d0b6c046dbda90cc7f3517e\nce7cff543f8cd89f8d1dabf86742ec3c\nd13c7cdbaa6941c2f0f0b1b5588b0b7e\n387dc2c22bdf6d2a6df42853f67b5836\n280d49c0833e2dcecbdbd70308cc5247\n570527a5388977c878ba201e6a414b21\n5a2c6a6f832b14ed31251f4428012eaf\nd040157682f60a7ddf6cfab91d65bb91\n6398eb498fa1c291ca22b08889f6ea0c\n914f301fd07c20c840ef1c8b63a628f9\n250ffcc789426a255f46d55537192b6\naae036d8ebdc472535836c728d324152\n944a665e765a13ee6d7db84fa3ca3146\n3ff53879d12a2259cf004563556ddb36\n6ec9b7c65db28eb32342d056300eceae\nd350f40e5f04360565ba78ad9601cf1b\nc18cbe2537859ab6877a4d9f8fd3e241\n59c89dc89cf0d34e597976c675750537\nb0c70ce8427da34d98e0d1738edd4f19\nf619416ed17ca24a5dc688388b7d266\n776cdc2ed288076882eddefc99ebacfd\n7595d089aefd8ed5af7c7ad2549a1b15\nb16dceadabff3976dec8d69f9356ec51\n2e9e0711c4f8e6c6f51f77a6d7299806\n881e7a45e9f149d8283b00891f680579\n23af2a09ca2509f817dc12307fee9432\n934f911815518a12862ec27465061d4\nd1852e622204dbb0f4b6538438a0b930\na3c4bd89e7570dcc6204511a506beabf\n5edb33755a80aded3da27ece6ae88fff\n586984ccc3ea15676c441a62670bab86\na3e3eee0669bec82c9f016d57db96408\n8ade0afeb517ce00aab45a6fe87e3c10\n62aac1b94f2b98cb9f9a4edc4751ad63\n29656461b26f620ff3c9c1464e55d580\n51d67f7174881679f256a8c3e3396495\n533af4a6fa955f2e78cc773ba5d9e52\n5952c6c49ace76c5beea20858a99d5\n13fdf00cde077f562f6f52615fb75fca\n23951f57f090116141bac0aa0782f561\n840b73e5066afa12941584a3d730ae7c\n22575f5719f3eb3d23bd3a8c035c98ff\n98ef942e35e90be3de8d5f2cba401802\n236f75a784ed58d62b3e9b6eb52d35df\n8c9b2023ecdeb7b049d998127ea6baf9\nbd867ce1ff2dd281a0f7d9635ddf7a01\nd521a48317d0b14d7ac55d461d1984\n9a8e84b82ca17e3f2f21cf17406f1f25\n6d30eabb3b56d8f897842bde7f51d0cb\na7bc0f5b5d73df73f51f77a6d7299806\n5b43111740009e719159f4cd32e8e02d\n70230673214644cc7954eb05bbab463f\n76ee694df725b5b4664b3b9b23ddfcbc\n219c0f0f7ee5c3737f9dcf5672c2dd0f\nbf0ba9e2ebcfb431e6fe3612af521500\n288143f68d5b9f7462acff507939719\n923447d348ddd1ff3002761e7a3ba3bd\na147244346d84fe398e0d1738edd4f19\nc97f8f3d828173607301b41e73e277b0\n6ea2aabe267b519537b2bb75885cfc44\n75a2cfe5b82e03d2fb0eb7e753c06942\n268f73b8f57676a71732dfc96352c472\nba5911cd07d1eebb31475fd256bf1b7a\nb58f4a6b71759e59de1e664b0a22c4a8\ne3e76d624f1f855bcc8a9c365968620\n34b1b2ee54ea314486a1cb4b695edbd9\ncb87604cf146b4eee897810eac8c21be\n9ddec02fc7a03c19a8699b6183baa203\nb69401b412d9300454d7082b34825ef0\n719f6578bd1450cfe5b7031248b81d78\n4c1777173111f2e380a88936375f2ef4\n8ac2d831ebeab4896b7c7aa09852a4e0\n4e8d8792a3a6390b36b0f2a1430e993a\n5ca11d3f35d870e1b724bccd568c5fc1\n5c247c042e5fa6077b712dacb1db0737\n91b8fe4616208bd4cf752e9bed38184f\n26c9e85dfa18af9fcf004563556ddb36\n8f521c85697cfb73f51f77a6d7299806\nd323e6d19dc58526f2c0effc06a15c11\nbf9ea87a9765eed7d53b73fe621a84b4\n3896caf2057eed81589929e81650825e\n1e4fb9149de6be81f51f77a6d7299806\nfdd8b499294575175f1548797747d63\nd97a4a6f84f40854f51fa0238791f5dc\n7905bbf9abc0c264f3443b22038d340\n51e27bd3ee95338588d458757d655e0a\nfaa6255bb4de99d90606ee5fb3c339a\n2a28a1658e9b557062c658925896f75e\na0d662f047378406a39cf424b6103cce\nf913501826c588e89753496ba23f2183\n2a8d87523e23a01d5f40874aec1ee3a6\n10e523060bb5b51f9ee9f382b1dfb770\n6f8ce08e77bc27cedb4331c656714a1b\nf5e5ad69111b96646d6e68ce9f2601c6\n56184b3a4ea198af7e14b034d75254c9\ne8089df5cd0f9a573a3e9361d5a49edf\n6d5d42d1272467953b63c9ead28992f1\n522960d8c4a7b7f2e8f8c11a24c52ebb\nf35abb8246614d7ff38854b09cdc7cc5\nbafa7e4e50e0b2bec8687ff9b0b4e4ac\n9f3ff62527bf46f237b2bb75885cfc44\n6a254cc3d81881c91a3b39b07e4b3d0f\nbacdce8bc1974ff82c528d33bca1ac2\n72fe5266a93c1998dbbc9440457e303e\nf2440b15f3773299490ad276cd2af3a4\n711d131beebd279cf0102d4d10f82457\n51704a889ebcadb72cee4bf5d0f11ffe\n4f061233795740bb411c679938d00104\n329ec98f10af7214ac6962daa1b6ab91\n4178e43e2756f1d0af7a8f97983e7906\n564b9543fe715f9e1a4047c09ddc83bc\n8b886cf32f340c89a9e00c019d029152\n43bc4a978115d3f82ff27b24dc18a6e8\n8b6f776954e65e7ab05550de345b6d0a\n93ee27f70b593cee7b11ae648ea92233\neac0a44a4b4bf460f37e11038ce8fb27\n30d2d3c887f9592551ae1a6e89264401\nb78fb2778adeba267c26dd76207404f5\n1cd152cfd71cd314e2798a633e84d70b\n6b9149d69d3140da258ce5fdea186c4d\n48d44532ffcdd4a2fc30bf6907b3dbb9\ncb1986dd3e968310664b3b9b23ddfcbc\n3193949a635d8682648909df12856289\nb967ac98b1cbd8fe36a7a71199dc2cb3\n38f87e02e850d3bd1d5ccc40b510e4bd\nc9cc8df04240b27890907a4c1a185a7\nba1adc474cfa2f429ab926a7e944e795\n671d51da473849c7369a4f66bf103682\nc3bc47657b691c51e6fe3612af521500\n4efde5d7dfad17354f13c1c9631f2b03\nfc818d6fe03f098fd6f4cef762589739\n4dde5285971f0b73ba4ec8b7deb104ae\nc435de7be7f5bcba65ba78ad9601cf1b\n65122866840aaccce3d8061f5c8a6fca\nf6cb298705842600bd259faf16bdac27\naa5879b3f20ea90c36b0f2a1430e993a\neadb3d38d02343ba4d2a756b9ed2c425\nfc4d15c15c56aa7baab4888e25356418\na1e16e59abc3fa56bf0788e630e3deb\nd7dfcd99197d6ae7b6dbfb7eb145012e\n56e194146b9e584b3321831d2245cf06\n64ed01e4a892fa8e498bd5a555c21b1c\n8cebf6dde257cfc591a2a5174703986b\n3ea3cfa145794baec2454d017a7fc2b1\nbe373cf14b9f9b77bb01e8d0bddd5702\nd283b1073ceae03f35836c728d324152\n4d6f35e7eebab44e2c8a86aeeb3b996e\ned108ed496777cf6490ad276cd2af3a4\n45214e3010f8c3ddafa9c337f30be0ab\n6ae8076b0f9c74199c2009e4fd70d135\n573b3fed3942a148c681404257d94ad9\n8bdb589e5e0e7f57b04cb542e2c50eb4\n8ef2169d274aa2e9b16dca03855925bc\n2191f89e65241e7be04d00482f14a156\n9d36bf414dde2f1a93a28cbb4bfc693b\n668c488e900c2ede62a9eaa32bfe99c4\ne63546037077f0847dee16617fd6925f\n2e5e60f57621c1e7480c54eaada840a1\n26421cc00c639ee55a5324f7626af787\ne46d1c2bef1875e2ed30b335ddc8b66b\nefafddc93951b8fdc975d461b3f97726\n5f34521c634a4045c68e0b8b9ee8a0c6\ndbf235de67b39c2d25e2408bd7177733\nf3249612d067e120384f43a3132c17b6\nc3da3ae20c1f92650640e24a5497a2b\n8ea007bffdc9a27831aee04639d1b4e0\n41ab50680dfef43aba5342d638d0c267\n37754da896362bcf28c0cecb7de2397a\nd50b0c6c006936f8de03ab2a27ba7531\na13a7a1c82bafa56188f1f634a0f116e\nd24f623af8e7da479dbf298bdf3162be\n209a904959643d0eba7afe602821e0d0\n401e07ff01b1bfe64d85e9aeb23ad69a\n35d60ae4cb2e81979d9fad88e2f4c8ff\n6721f13f40f706c31b17743c18fb63dc\nc5e3ef17d1fc834b3c84e7f4f4c3d556\n1031fc859dc3177a2f84cb7932f866fd\n3c4ed9c8f76c7a5ef51f77a6d7299806\n73428fc75131e0a9d8dd12a67280079f\ncdfe4ea9d00ce861f77e1de7c7a7b6e7\nc5958d1f079b0be47b8e25a5db8c2573\n575eb48e4bf8f7b4cccc2bf504407f19\n534b0e6e2c53a8e1a7cdfd3874ed3723\nd1d9da0da16dbb1a765101d95c92a0e5\n1d37a7fbe0810f963e83b2d32ed5f665\n736630a749935489f78c99506bdaf97d\n2cf960825840947aa903b9ef0ae7fb14\nbfe3afaa774eab6e29e17f7efc5a2421\nd2a5b42cf29b753f71a782a4379556c7\ncc70b9c8d4faf79e5a468146abbb198\n681203ebfa280f5696d5b0735c6b5f03\nb773f81e938f95ed65ba78ad9601cf1b\n45c998547946bc4d6a88c250a18c2861\n11ff2e9f9b0993b7f51f77a6d7299806\n985b7e5b5fe997f0670cf6c75c1c5868\n9cd0529b7ce926017dbe6b236c44c533\n9ab4d3826bd2f07b51bb569b4bf0aada\n78fbcca91324c141ad2e2a7cbbc076b8\nefe76021aa616a41f51fa0238791f5dc\nc9dd1e508be23628d0176f9a144100cd\n1fccc2ac4bfd3da535836c728d324152\nf428a799c3185ee0c8687ff9b0b4e4ac\n7a783968f5b1f88ff50f16ba773dd73d\n2853ec74532f23f3670cf6c75c1c5868\nbf557411c41d07bbb38821f893bc10f9\n47dde30e987efc6c8687ff9b0b4e4ac\nd18f361e22f7626b707cdefe012d0353\nc1d4fcbf5bb6ad11c5beea20858a99d5\n497833f2073ba6ff70d45c28bef72613\nb29d302a87099d924d8777315ca26f7d\n59009d87f73ce9385dc3653f8341633a\n450b4a6b6afa6280d5a910bf1c23bf18\na990ac870ac807c4d838ae16242881dc\n86ec9c796a6c1789e792598ed58dd1cc\n7ff1b0ac88baea05dbbc9440457e303e\n56300f790763af1a872860b02b1bf58\nb67aacec8e98edded0b19424de5f7fe4\nd74870729fb3e3c5aa0a75782a86b0f3\naa1e9626e1e23038cc0b9bf177196e52\n60d11f54c4d3e1d856232348d1bf86cc\nbe1546c576c7c189edd7ee0476a331f6\n9e5e03508b204754c2b64c0adffbe398\n45dcb53af7bea0d091912372ddaeb001\n24b5d56b254cb1958b424343280aeccb\n77dcd07d59503f1014038d588fd1342f\n534c5f9ea1ae94b54644491844ed9566\n389ed34a0c989e325fceaa39a8353bde\nca05bd1afb0ffeaf6b9a484dedfb7d25\n5da5cc7b5a6a9d6f433334f7dfc6c30a\nd8f3c4bf9266150a579147ba03140821\nbea7cfa3c0e7e16e63b2acb037dfbcde\n50b4851d6e067f9bdfcd57c2094a665f\n1f1b07bf637b3a1582db9fca4b68095\nb8eaa2fca64d7e4da52ed1964df255d7\n4bc064672eb85023d84a8130bee3aae8\n5cb06ff2b420c24721711c78ff413696\n2b1af04045c8c823f51f77a6d7299806\nf497cbcc4895d5386b684500e5db87c2\n4fd20c1142b642221403e6cccbe91852\naa2242ae4ea1074bad0881e4ef1ff29c\n588bf81e78829fe7a16baf954c1d99bc\nd8358969dad764edbb6f5a9e4b6b8b34\n3d629d27b74fad91dbbc9440457e303e\n892381333dc86d0196a8a62cbb17df9\n77eb55272e3c00f2cb774aa5a7f9653\na3acfe6f313ab881bb088904f7cb154\n419698e72a0d4d75d8f2ca82d6e1c314\n3c3f70971f203c4d6ba836372832f055\ndcdb75ba399230bf98f5bccb3529a48d\n5d3cfbc8bae19e701f580a0f9153317f\n61fcffc9fa0995dcdeeecaed91450a4d\n1e6cfd4bfc6270f822b5697e1c26fdf8\nf3718bcd0e497868af7c7ad2549a1b15\n53675c4bbb33fe72bcc0c5df96f9b28e\nd504ebe36ddde74cb5e61088d6c054a1\n4ad85a7d1ebf49e3490ad276cd2af3a4\n8577be35989634fb925bf1713cfe05c\ne9c9d998f7b0de3ca6afe5903a01a59\n909244db9219fb7c5bb4f4519002140\n6223f3849d57154b5ecb3cc57fe87cee\n3981642f57a689276ef2faffa907bc32\n3ba15bab072af6ced014b923da2a041e\nb93d170448493717c2b64c0adffbe398\ncb711f2991feea1de6c5cd45aa112726\nc98e1a3e61caec6a67d783b4714d4324\n91de3157ea61d943f27383fc5a5a711c\nc13d5f3639f427587fa29a3ea424473\nd40e314fbb7f37199753496ba23f2183\n46acde1907c1ee378523e42ce157c5d2\nbb878313da4b02e3dbbc9440457e303e\nf9f55661e6437920c5a208307819a3a1\n3a4843e09b8dcafae6c5cd45aa112726\n3316a00869217c2632ed7dae08823495\nce074e18e988a481d082d95e9bd50b49\nbbe71bb58b7f8f74f51f77a6d7299806\ne9c344a392e311195b903ba10d2ec446\n99ae1b3f970c61fd5b56aadec5c0be6b\n8b22c3e3be1f8fd8b645b903fc5f4135\n33ec1e64a02ff718faaadcdc0221eb72\n7178731312819be3ecb14096838a20c5\n9d81bc691486a3c725bc9a8086ca05b8\nfe307b67739d9620d874a9fab241259d\n5bd3e7c9695af73cc8687ff9b0b4e4ac\n3757a60634d134da35836c728d324152\n64952439f8d9e1da9c0c9824ccd078be\n5c86904bdc50a1ca173c8feb9cba831\n4d7cb35d1d9f2434ccbcb819724fb563\ne3c79d6e34b1285e4580ed619ae2daa1\na9ee7abdaba4ed6c14817c31e6492a06\n319115572f7aa81d06ed06732b21e08\n86b6e539e72be6d46fa0ab61d9f9d96d\nd6dd3de6d6ea6d0b1931ace01cf1b948\nb37c77a90ba66c92564339cd0fd02849\nb6a89034b3da55b2cb79ea4974c73b2d\nc747e6ceb1a6faaa3074f48b99186254\ne4834c88847b288648d8ff57878739ca\n6be6d6ae38d8aca4dc2cbc0befb06e1b\n6aeaf646d526b41025a1c5ed6eeac95c\nba7dc0bb03a57732a9d30b145d59ff\n42df32ea024077732463600025db2266\n989c95491d7e823fa413908c0e169330\nf439a2db6341cd85f2b931201029bc76\nfae27953e0f0404ca99df2794ec76201\n685f2f19452cb973e98f4318c324e998\nb0f35e0dbfd5d75620fc2acf581b444e\n55e7251e672cd45e796c584ff1fcf56d\n586f09dd66df0beb2f45520e48bbfc3e\n52d41eb69bb764e784aeb682b234df80\n79c5542f068830463002bb98777d6df5\n25fe34942b619a2eaf7a219828cdb9da\n2ed972dad69431ab89f8949830ad07fd\n1d1641362ad5a34ac3bd24f986301745\n4a5332f5aaa3144836b0f2a1430e993a\n9695267b69d145dea14bb1d7e401bf06\n2433f576edbb538aae8c9d3b8c4b9bc3\n419520889432730a970d4dd67731c543\n6dc5a07a13fb7dc32ff27b24dc18a6e8\n9df79431f16cad05116162acefe23592\n37a79a0b617e2e711d172d0e1c97cfd4\na8a2f0865365b521c87106a609982130\ncf391bbecf5926ecfe51dc4aedc63243\nca5d7ee5cc56f989490ad276cd2af3a4\nb654fef8eb98e99d65ba78ad9601cf1b\n5e3cf3c40c6bfc0471a782a4379556c7\na27db3ddc9bab11a5fceaa39a8353bde\n894f033f10abba014038d588fd1342f\n4e37b83cc4f762a5f51f77a6d7299806\nac47b4d30b598978d5a4a04ac21f0578\n1bcec47c5dc259ea95ca4adb70946a21\n44c25bfcff4a4a4e4dea158f05aae320\n3adba11cee055363f51f77a6d7299806\nf1167a0c4bfc1f3fcf004563556ddb36\ne32ee21232d2d5604747ada1cb39a749\nbcced2f12f206a927eaeab1f0c9120b7\n2909a46120ca93afff16555386d173d\n317b404839dea88d827b401415ba9e3c\n30f4c4d94f4fcffaf51f77a6d7299806\n60328528e791d7281f47fd90378714ec\n63ac45ba2c2231d155f9a00acc25f137\n4b35fbf5df52938a76d876646d549aa0\n8d983a0adc059082b300c4ca2f51c01b\n9a75ecc1e677dfe755d57295806b2c59\na85ce69dd5aa852055dbece39a4b7905\n400a5dbd31db947b35836c728d324152\nd0d3585a2c4579bde290ca81b042ebb4\n6a878ab386c927e6d1a63a2e2039ff73\n86eeafeae817263414038d588fd1342f\nc9fa3d209a43e7fd38b39a90ee80e328\n32284e0d1700dc55e7c7920f6a65a54d\n2c67f62020ca22927297db8481c2b16b\n91be45a6b74f2fa283b00891f680579\n6393b49ccd72e8b312cef4e6ce7bea86\n98d20227789f5c9a5af29473330f42b1\n73b37c243cbf23e0b516c05d046e8e45\nae02a5d77184ae2638449598167b268b\nc4170208c9586eb63c2247b30d3fc073\n3d63ad34e3deca1982db9fca4b68095\n55192bc667582ebb83d21872be197422\n7ad134826824de98d0bef5e87b92b95e\n2c6fa3007e79013cc3cf9ae716575390\n51f1ea91a1cd7370b3fdb1a7c9a60207\n5c0d4cf28a71ad7296db593b49da23e5\n11d8814ed60b54002449009b96f8a6ed\nbc6499abd6192f128c605f8788f64de4\n9a37886efaa98354317e912dcf9f9b6\n8951c681ee693af213493f4cb10e07b0\nb9c0dcc854da8c7d60558e0a9a66f173\n63a1c3810119e2b660389b3f7b5c9026\n9ea7facf01e448f328a1548e344f0e2e\n74625aaed8902197f51f77a6d7299806\n29cd7fbcf6c7c33df51f77a6d7299806\n5aa3f60fb8fc208d488fd132b74d6f8d\n56262eebe592b085d319c38340319ae4\n5b51df75df88c639f51f77a6d7299806\n86e6ff997adb2a192c90ae7b7282b9f\n5d0a9fa5c8d9bef386f6991406b6a562\n432346a3345e3e5dd79b19c7c4f0e293\n2d51bd678668a0f182db9fca4b68095\n6e7455e21a6668a7f51f77a6d7299806\n5ad4512976afc746564eaedaeaa04f28\n7a5215c4f74afd1af7c7ad2549a1b15\nfa4155f8091689a273801486f0f205ad\nff3a6eb4556b2c0eb04cb542e2c50eb4\nc3fabb74405368a8c5f0b5eeb41fa897\n49e920c98895f90281a172d69c52a28a\n965f9b75de94d03aff74317afae0a323\n78386cc102c6dbb03430d3d86b335afc\nf2129c67cb55c6868779f85a8bc31fb\n89d2cbab56c5a1d7297056ac457c1c31\n3037c7d4d9dcb8f535b063aa516d32d0\ncc1b4eb1a9164e04f06885bd08de3f64\n51439579ad42e9cdb52d092517b6bea6\n357f1c031b1bdfb3efaf604fa2300241\n665bfb42a0362f71d577f4b88a77dd38\n61bcde763ccbfe520ab6214a789faf\n88dda281b3dddd57517c7e27988bea5f\na800bd725fe116447a84e76181a9e08f\nc8bd3d33ff8cd4abf189bc4b6aa309bf\n8ac35c25faa261ef4f3443b22038d340\n58d39cbcd842cf6eaa90ad3e0254ffab\n4ca29321dadaae90a516b539b31607a2\nff167d9f25fb6ede2419ec0765e66c90\nc043285da4600e168a5e49d8f4867e8f\n9897713e0efb2942f51f77a6d7299806\na54a6ee9263bc1eaf4b6538438a0b930\nf3f0238ae8d9ba8dc8687ff9b0b4e4ac\nce8e6c13899376e2f3c9c1464e55d580\n95c5a8897fa78d3883b06dcdd869d9ac\n861251082f0935c6990561fc34164364\n1d99f74a7903b34bd56bda2fb2008f9d\n3ab0a1dcb23aa0f620bea10952746d3\na7154b3c2b2a0641a9fe1734a6086750\n8ad5b0bd9f1297e5492d9da2668ec34c\n510fdcfcba1bc18ea1081ad712f6fb3\n8862fe77a7856db29a8ef44e1d2c5b75\nba747d0535cb7fdfbfb5bf9fe49f43af\n5c95a378674a05b313236fa00fce09e4\n507de496a9a77945e40b5e9eb4befc2\n31dacef35c2d68cd7d5059679be663cd\nf1c390f2a04d13f6742728b30848ed03\nd601777b8862bdc8b04cb542e2c50eb4\n75369f55718d5adba0bb10bfbc5d4718\nccabe6ab0816614dde03ab2a27ba7531\n11c7675a3dbc0d32f7287e3d21227e43\n35ee4bcad88ab50af6e44a01c524295b\n9961b26d1eb9170e98e0d1738edd4f19\nf0f9d29b3eb76fb7490ad276cd2af3a4\neeafc14e4e0db2ca3b481215325f1515\n8e779c0b252d4b5e118ddfdb81cc6068\n50415355dff6f4e0c2c1a442b53fa053\n2882587cd2fc021c168776226d349d71\n2608335ef22bcee1c97114870bb573\nb22405009444df73d27ba3fc43e70958\nd50c5777a2727679b247f6fe3b8f7af8\n79ed181ca18bf71dc8881577d38510\nc4a73db5b3503ffa86abe5555a3b447d\n384861155b7786fcb21bc3cf138f79e\n79fb74d29b9b772c36b0f2a1430e993a\n9b4e072fbf32d793e6c5cd45aa112726\n2bda2aa53c374ca665ba78ad9601cf1b\n8e9812ad9e12d467679c9e94dfb2276d\n941720989a7af0248b500dd30d6dfd0\n94d55392edad30d35192e08e628ef9a8\n1aa07508b731af79814e2be0234da26c\n1b8e84935fdc3ec82be289de70e8db31\n4ab439279e665e08410fc47639efb60\ne82fbdd4857adbd7bc0482e18ec51d0e\n226f38ce0d46fddef7a06a265fb36208\n270b86f1c341d7fc98d5fc0473d00a1c\nb197d9b353a923cfdbbc9440457e303e\n7bebd3cd1be32a0646f7430ae2c8ca51\n27680e1b7951526518694a7306254063\n106c7f10c5bf5bd5f51f77a6d7299806\n2936cfb442eeb0a32a673c8b84dfc32\n124117cdec71699850c2ec40da48fd9d\ne88b094644e1e80d8f2ca82d6e1c314\n4a2766bf63caa24a4abd5da3f5ea2512\n1c199ef7e43188887215a1e3ffbff428\n20cbe565f98b4dab40ef1c8b63a628f9\n9c563031f09dc2459a87002a4eeaf610\n11d4f2a09184ec972b9f810ad7f5cbd2\n19ff1d5665c1a68677b8fc2abf845259\nd3f393615178dd1fa770dbd79b470bea\n5fc3b7d677788b486cd47753062bdba4\n7144c29cc7038186d67fae5fccab266\n9183a9f6e6237492c90fb40095d2be6f\nd311e10015f19bb7482d5f087974fa09\n2a5abe261ad074f1c6fca4cd59d9149\nf979d2ead3517a67f20b781026d21763\na4942597dbfd1e683ee344f731525f3c\n31bc7f782eb3bd7de40a8ba0cba661fd\n9849c890f3bc80723a4642fe4c259750\n4abbf49c3177b32c9f613b70ec8c2f82\n348528e8d474a003cb481b0b11df1849\n537c7bd16e8a00adbbc9440457e303e\n9a68fc6d001c4ceadc75c30c88b2f7a9\n7b5b032a2cddeebc54d7082b34825ef0\n357e2dd1512b96168e2b488ea5fa466a\n8c4dd9891dc997b75a627be422951096\n304efa07923fc3c1c681404257d94ad9\n3d04cb63d2b1873fcf0dfe1797286ae\n6be3e544deece8441191025061735ea3\nf9b24a3b88f9037e4b5cae2ecfffe51c\n303a25778d48a0f671a782a4379556c7\n30e8a82eccb30369e3ca99089143c61\nc98c12e85a3f70a28ddc51277f2e9733\ndcc892f77239ace06b2befe83a0efe39\n92242be674537e3df6e4c3538272fb27\n2448d9aeda5bb9b0f4b6538438a0b930\n7a617f62ec5bb2075e7faf7f49c2907a\n90b6d8a730e9e17cc55161a63fbd109a\nd5424b7fdd031fcdd41c21de8af66e26\nf13d600a3c4515e220ccbe1c34ca182d\nd66cc87c717c15f57f0839ffd260627e\n76dd2d9f0183e09dd835cf838a2f2758\n2afcb7db7697d552f51f77a6d7299806\n46dfeffa91719044de2bbe257d2639e3\n8830f76c748f09ef3e870ba5db422375\n2e17502c7a131b4061962815e1518ae1\n85d0d147adcb6318b8e1b99345a5afd4\nae9e1ff1ae0b0a8f6ee473575a9f31bd\necb57b01c7ff75cd416e7824059e108\n791c488a167bd73f91663a74ccd2338\nf1f40596ca140cc89cfc48dba5c0e481\nc9288e09458ec0e9bbc45ba666751519\n1015e71a0d21b127de03ab2a27ba7531\n6a0bd5d9ec4567d9d42216b5daf41a39\n4a63afd1da7fd633e6c5cd45aa112726\na7d75c84027af5e7321f25048c6142\n45220c3f4fba09fc665309339296e85a\nbe43e61912136b5710f438ee952d42cc\n2b52cd0ffce12156ccbcb819724fb563\n4bcc7c4e4c0bfe47e8f8c11a24c52ebb\n117930a8f2e37f9b707cdefe012d0353\n9d63d69501b9ab9067994ca435825ef\n748d7e99a0ed4646f4b6538438a0b930\n27ef7dafe404bf424e83b37723b7fdca\n97c343e28e2b9ea4bf4414e655b3a4c\nff6e6b7b7c7f1c0f15f78c98555ab41\n523a54d33ce5fa9aadcbe68a4d5871f9\na33e91aea2b278e0c5ee4aa82bd336ce\nd8774646afed0312732375ced502498\ne18ea9d7ff87c3f86a97ad5f72cdc5d6\n2194e6394a31194962e682c9809bff14\n17352867f5661212c8687ff9b0b4e4ac\nb162f52f6a1ac00e519f3f3e6cd6d1a6\ndec5920f32fa546a6c518c577d808035\n1937193cf5079b623eec26c23f5bc80b\ne3bc0a03103cf84e7a471a654ffbc436\nc045514b5d4e4407b0ea0348afc5cb87\n81e60b07ea1090bf58e4244f8066a2ba\ne31c6c24a8d80ac35692a9640d6947fc\n295a3bb2aa43b691ed2d43425218e827\nb3194efdf2b8031e8f6e9f07be105c48\n5c9b4af9d0e9c132b161f36d4e309050\n5f0f17c97234b510b4bb271cfa904d13\nbe9ced795316066f38620af15fa7e604\nf1b1c92f91d0e52bc68ff00665267e32\nb2239339005b14c8d675cc466d0d6fbc\n54b7d484dbad29cdffc6e457221b9271\nfbd48960edc73ef0490ad276cd2af3a4\n84767939783aade4611ea9b20dcb5c83\n47db22433821989e35910b9c436db932\n932bb63e4525d57b3b8dea4a358cbf0d\n750bc77ca0328a29dbbc9440457e303e\ncef79d398ec49cb3d25229379db8f59c\nbcc73b8ff332b4df3d25ee35360a1f4d\n53653524f2ec502e8b2b8dc0c816caf\n74539775b5ff9bfdbd935a20ad27255f\n3ede0a86fff6f79632284c722d808bec\n7e190338d3f213c3f7b1230869d2b89c\nd94eeec9f2fc4d6c33fe87c69b83ce63\n7fe836b46890d24a65ba78ad9601cf1b\na58e894d520ebda28f94476574196c14\n5fd2483e98dc2ddef3c9c1464e55d580\n48c0684d1c5e279dc3bd0b373cb604dd\n9d9a0d778da758b043e03cfc9885bfb3\n3c58dc00cf251172c05575120a46cd3b\n9cf25518a8d3eecd9c48aa7bc7cbcce7\n8cc42bd1f681f126d0176f9a144100cd\n544aeccfe77f230a1cf10a36e3d0884\n4ed25bf015585031490ad276cd2af3a4\na750f7309fcc4b0473672ae855b8c82f\n4f24a67f85e71e144719088c8e42c6ab\n4159903eaecd9560fdac1e69603928f\nd64c618e8b0c7db73ded7580b6cd3bad\n4909c59d7326a2e6217eabb7c57f6292\n1bb81d54471d7c1df51f77a6d7299806\n1bdf0a0bb9db1db68998b3b64a143d42\n6e92bdda1bca7b72f9a4f3015fbf70\na6d282a360621055614d73f24792753f\n47c04fe5c1f850b784cb23b18bd34686\n697fc3fa4c36fe9b128d966a6d72dfea\n1f3591151aef17ab997a9cd87230da\n453be11e44a230a0f51f77a6d7299806\n979d210217f798d4f4b6538438a0b930\nad64210b56ed1bbf9096ff01c3d5022b\n98f42a66467c264377fe1aa9b41a89c5\n6744d53d1557cd2443dbb6421d614c0d\ne0efbc4e240b9cc235836c728d324152\n690f208bc221e05d6c891822a43c9279\n330dfd669062043f5e60ee22a227533\n13b6648bdc843b767b5f4d129cc2873d\n17ab0917e215e4fcfd300048280f015a\n30cc0df021a947e9706ce6d0dff37e85\n4460e0885d82b7b5d9987a7cd00eb98d\n36f4f54d500dfcec9969831eec1821d9\nc3c159a5a56614aad7b20fded0142d7a\n27c00ec2b6ec279958e80128fd34c2b1\n6fd7e0881e4148a238dcf62407724e73\n74518f7c342b49191030665054ebb2a9\n1fe33fe022779bf8b0957d845ac33749\n8dfb550d8fc07ebe490ad276cd2af3a4\n7740fa5979753c734209d14d674fb332\n46c7a2ad0abf4463bbc0e8a3b6521117\n8908ecf5c86377ba7b31e6c3fa42a7e\n6d54d175396e3a99b1aef914f6383f94\nc47bcffe3e74391af3c9c1464e55d580\nd7c9ad0bb877b0796c9d2c8251e6074b\n7720c68121497e555a28000e191ea2c9\nd334e5ab55188d62680876614ed35a7f\n49918114029ce6a63db5e7f805103dd\n7f79aba01e8c572b68d1b9a1d97e2846\ne767b27d6625f905e9af7c2087a87b0e\n60e8cbfd3cbf85d097b3b2f2bf40d247\n2db6c88145049555e6c5cd45aa112726\n4f520217376a00ac3e4dcc9f0008b73e\nfecb6b1159091d36d0176f9a144100cd\n554f63beeeaa1ca81acd2074f8939f43\n4ccc0a3cc38c41af666bebf1a1d4e946\nb3c503ee276ed0a75298386582afecd3\n3e34987bd5e7cf0e6c5cd45aa112726\n8afad2d7f30c9f02ebeb1e6a8111f53\n51adac207965e93559f8e31ca87c470e\n5c6c95a9a99d452e1d2651c636d3967d\n7e5a6a86dc490f7e7288e3849fb636ff\neea9a17689ef174ec14f867747674e73\n4eed9ad9465482d543b9eef399a0841d\nbb8d64bab582c3f324e55bc028ee0805\nff2333f528efd790fc93ece3545739c4\ne64630913e8b723c23ff850238a15b07\n522eef970fa6d87b7d9c441a2a657ea8\nff49ca82d7f8e2bef27383fc5a5a711c\nb19f85fcd46f456bd5cba62773b8025b\na56e201584ad5afb61ad1cb92b23bf5\n6440fcf4fd8214b7dd58412a5e38ff83\n56cf253d14abfeb92c528d33bca1ac2\nd343f06da03eccf34c7384dbb75cab0d\n2404a64c8736bcc37ef29b55d8edde64\n6dbe90994925f51c26fa92f330dec063\nc07c96f19ea1d431d4f67da0de6a1054\n5c61d56d4147e55d5213cec267286d18\n675c6c0c5c9a4a8a3bad033fffa5c327\n5bfb8edf221c7b0e84edfe802bb43dcd\n582b375411f6a4565ba78ad9601cf1b\n5b89de55ce0f464221f824bda064425c\nd487d3b9579762cb5dd170fd3a296ebf\n3190b19c1ae0aff9c5ff3a5f34406751\n9f1a83a9fe6ce47afe74f7508ff628ce\n7eabd19312bde1dc9335750905007562\nb779b6773ef480e8c3cf9ae716575390\n34d255abb83e8d7519abd93be2967664\n28a0b2a5afc96922ba63bc389be1ed5a\ncace287f0d784f1be6fe3612af521500\n96b2bf512fcb51b2af7a8f97983e7906\n20e71125748a11bc3c65ef99d4b819a4\n4dae16dcdfd7d10be6fe3612af521500\nc8f5189b54fb3fcc6c518c577d808035\n373089aa7a44565b7215a1e3ffbff428\nd93760fda8d73aaece101336817a135f\n89f8c12dafc877009f8c3d2002c77ddb\n9915f9247f671893b89b3e01b90fe955\n2fa2acd39067ee788f6e9f07be105c48\ne72bad036bcc04ea3f68fa735d443de2\n902a46f5caf6b1f7e38c7f0de498b8e5\nef1824754ae554af83b6e0255ae357be\n658602dd0da08614a1b6f261c8f1ae0b\n6acb045fe11f7a81f771b7c5ceefa9be\n30afd2ef2ed30238aa3d0a2f00b54836\n7ef4b16e0c38fe09b04cb542e2c50eb4\n741fa23c22d97ea81bd5f87ae5f3f83\na06114a07a68c995c8687ff9b0b4e4ac\nd7ea1356ef7664e2ad5067eac75a07f7\n7380789e95676518e7c7920f6a65a54d\n9a91fe80c2cd2f37f51fa0238791f5dc\n96eb2c84ab3b8df0c175a98f27dc2236\nb47e994452b71943bf30e5b4764cebc0\n35e77eed59e1113c22e4620665c23c97\necfcc42f2386ef37f51f77a6d7299806\n498e81334b1dfe98882ebc6f4e497cd2\nb8e4d2f12e740739b6c7647742d948e\n44689408a7d879a664d56d7ed347e929\n78cf0ebb875de8dfba18ade30e563d37\n18f2f833d95ad137111c729c2fe5f751\n54c9f96ffc35d0c2eec2ef73f04d4ff7\n56d06d2b12a40bebdbbc9440457e303e\n54f276860d9b00436370a012706ac174\nf350621fba76ee29e7b1367d085b7e66\n310c65506936cc5bbe5e5822eaa1366c\n1e15f238da6b4bc546b9f3b6ee20ff4b\n9b76a0424563e3f4dbbc9440457e303e\nc0f2673cb32574014e972edcee1ee23\n455829a425b5f919fc93c3b1c0fca400\n9619f0c887f8d879d79b19c7c4f0e293\n2fb9c50ebbd98075ba5342d638d0c267\n7ed9395ec6fa732248db5ebe0dbfb1d5\n2a3a847a3d4c39c1b17743c18fb63dc\n383a9a2c39332f7f50eb11cb3709022\n7aad83423b294c59f4b35f4029eb1ecf\ned53217c9a4443b8a4ad5308cbfec5eb\n53180e91cd6651ab76e29c9c43bc7aa\n3cf6db91f872d26c222659d33fd79709\n8d1616ada1d6f239d1f4836ba5ad2863\n9fd3f3034d3e867336587f5b4db3e782\n94cc9d6473258381171b03ec6def09f6\n94b55dcb770626d9c8687ff9b0b4e4ac\naccebea3a0e180f0812e3ecbeaae3980\n78b7f3cb97da38c41471b11f88c7b46c\n5472ab8df7cd3ecc1c1b3b2ed8d13bf8\n8cbf3d97df981d511fc6bd4aed49cc41\nfba62693a28b2e4c43f1c519d66bb167\nb7184dd450c5fc2e17c1e3c52889f7b\n52a8dd8b79ac85299d4d5dcd2cc33826\n6e1dd008531f95fc707cdefe012d0353\n697cb70c54a483f1f80ff10f4838c137\n566e4f05071e86bbf3c9c1464e55d580\n7035d480f6bda22938b39a90ee80e328\nb68180bfde45f5a7e450a02d8032dbb0\ne3eb5422bda98fa12764cfba57a5de73\ne3a838cb224367c59fce07ae6c046b8c\n96af52c34e42b546cd2c9316e943c316\na93d8aa9a17b9d07f5fc96890ba7d316\n6731a24561fe44839b92627dbcf8ae26\n3f12570d87da2383492664434c74d812\nd020eee9e094050ad776c08b6a3d0a38\nee445cf3710af7e21548fc89657a4fac\nd0e24e315e67bff2cd80b6234fc6097f\nc54a464d63efcab2c389b3ea958c8248\n3e973b624578fc89b76e29c9c43bc7aa\n68dc135cd4671aeaff74317afae0a323\nb1f311d5fd262efcbc47c7f012e5fa27\n61fb89fca404e37f598bcf8ac674b63d\n103c31671f8c0b1467bb14b25f99796e\nbda113bd71ea0352654ea6737b0d3597\n8bba3f2eac551ada2c0e1e24bb9eb3ab\n2d018e8c0a34a863ff59f04994ef1f0c\nf1f8e16d23d3a0ba95f2719038c22311\n8b0886f97f038a5fabbc3f24ddd185bc\nce9cedc58c77aab4b5a19b1840ec7af\na93853bdb9b378dd50c2ec40da48fd9d\nda7b1352978b35c1490ad276cd2af3a4\n4848f84b015f1360e8058cf23f6382c1\n591e310f3cea35a6d6134c153bee8ea0\neba001ddae2ce5eed5d673747c0e3adb\n55fc24bb7f0cab50a24ad2a1ad4f7142\n7db1b46aa2a337adf51f77a6d7299806\n23b52ffd037c95223704253c4a874401\nebf8166bacd6759399513f98ce033426\nda49d0ed41204ff65c0da4cac04adaed\n4623efb456cc6070820018801b237b3d\n59f7e527386ab08b7f0751100c225ea1\n9d7f79e306288aeac6bcadaedba80eee\n66a36dfe1cfd2d17b40f0ac0fb9a650d\n9958038b6d06278a68d1b9a1d97e2846\na63ceaceaaae4af9753496ba23f2183\n7a712ca74183d8c235836c728d324152\nb8f2712e8330ba6b3c9fe3a963c6d73b\na1ca000d08da97ae43b5d2063387bd6e\n8b4b176d9393676d5e1f306d831137e1\nf4e24cf8c5d0c5c31dbb0393636b3531\n90c6d1df1f83329fe1181b0e584cdf9b\n3c9747ff49d0da71f91663a74ccd2338\n81519481b3e24fd7b0957d845ac33749\nb8af96d9c542e1bab34e8f502d7c7e1a\n4f7e9b96404fe19af37f22e93a631b3a\n5fdb10483f79355581f5ac91b0c9e99b\nb2bb0eb5670296ed5acd449a2ae99009\n63249ce6d12ee0bc7b20cb946bceb58f\n7a755f08cba6e387ea8f932ecf29385f\nc19ff7d2a5a3d29aab966e32f5a3808\ncb74cf36ff8fcb8d61d7edc67034608e\n4a17e5189aafa9afc8687ff9b0b4e4ac\nf9dcf630e370f7d5a320e34dad7c78bd\nfa6a5806956d82aaad484915511ccff6\nb59735c72cf9af0c17b431cae0dd70ed\nebc5bd5566558b64af7c7ad2549a1b15\na8e5e4016c44f896b1b3c8adf02d88\nc9f5c127b44d0538cb340854b82a069f\ne1e7e66978b888703f146f1fbd99cb1a\nd8cb5a5707686c9295a391f7b991d876\ndd414923feefc1bd160139aa3ea05a51\ne505ab84808920d06031c9bf940ea7ea\n404d58ff6722e4a34014f1a5fb376d1\nb7fbbd8cdd2b0b27a37bacfe19b0d747\n61b76525022f44fa9f2fd5a6f642de3d\nf7626a4eb581bcd7140769279b0e5e15\nc59cdd1537bd75ddd0818327fc390a5\n5db74dcfc73a3ea2f2ca754af3aaf35\nd06c9ea39c0dade1d6b5d21cd4e3fbc\n50e3f09b7dc9fcb63fde2470c949bc26\n233009d4f30fb416dbbc9440457e303e\n502be527c054ebca6e0ad36e9a10bd13\n2a1d80a0aa67ee7585d33ad8f24c4885\n30fe29d73b410c3855efe429bf27a556\ne7be08b34dacaafc405e3e2b789a211c\n79f86911bc86222a4e5aa1f8c960ae63\n4ea3d680127a9fe91360172b4b6205b1\n600f028f0bd5e7c2c8e0227722a7d821\nb2b359d7ce583ce5ed105888ecf0e97d\n63e6c50e5435e35d822a33e080d0e71c\n7d7b3b8a1734154b3b8d5c0ebdd194c8\n7182f94bdd17c0ecd6bbf317cb591f56\n9b359e42a5bc98572085b87de8f7581b\n200597e4eaf96015a4fb72f4f3b0e317\ne50a97aa15d7cbc5972e15b580d9a5b3\ne7d4a3cca8edfde4829113e62386fd50\nd5200a27ca0d4a3ea4d56f1fc38d34cb\n9ce2ea550b049beee64d5cb52244df5\na691eee4545ce2fade94aad0562ac2e\nf14fd8433dc1b43efe9f0f410eddfda5\ndbfab57f9238e76799fc3b509229d3d\n62fb28b9a362fa0adf8d3197c3f0b3a6\nc953d7b4f0189fe6a5838970f9c2180d\nbbcdf9d0ecf02e7e9fce07ae6c046b8c\n1bda25dc158098f438f6f5a7dee76fde\n5e2003b18752e5f82f809039658ca52\nfc6129a9310ba34c645311c54e2f9bdc\n8c4d57109ce0f2f222659d33fd79709\n6cfe2f5ab1bb89022edea1c2bfa3bc56\nadfab5a4d020094f98cfd47a860803c5\n937bea562c1db4fe5ba41eea807f5d3c\n77e703a4baba613937f1b3cce66816ca\n72d0cbe861a7de2de4f382dec07f365b\na50b78207ec2256168d1b9a1d97e2846\nc12dc91e3564d8e3473f10e6caaeca56\nb7c8be9dbe5ff1d540332412c5d013fb\n58620941b03e46b6e718b2093cc8d7b1\n27574a49bb8055ace6fe3612af521500\nbec78ebd204764f637a0eda928b574d2\ne0311d577cff9d85f6ea7461c0aa61c3\n4438e29f9d3cf45bfe52ffd0e748a1ab\n95ff15679bc2d2bfab41e4eb455c2269\na996cc501faa4ec841c6494d29fffa82\n30d93191cb91f8ece6c5cd45aa112726\n8f70be87d6eeefdf213c3458a0fe5598\n88e514e71b48738bb022c94235bc8601\n5f5a3d412807984a27f9863535eba56c\nc877660e0ec15c0d22be63590e183603\nd25b6ce1b5ad6198dbbc9440457e303e\n59b45e83bf13e8e2374110224c1c4eb0\n7effccaa74122b5f2beec56b24479ed1\nf06d2963ad258feaf5adaa9eef900be3\n447a5eee395026fa8d09bc92d0fc6d3a\n648fc7caefda981543d890f2dbb65163\n6b38324cb8beedc5ca86e527b84d8854\nbd0ee3dbadfa724f6ff454af1e8947f3\nadc76ddfb1d619a25dc3653f8341633a\n5330a65bc54912ce35836c728d324152\n309674bdec2d24d7597976c675750537\nb4b2e315ec8e17c9a4f70fb45099ec30\n31ea40d2624b40a17b431cae0dd70ed\n336ec0b3142fec15aaf0ad030fc37d94\n653c0f8b819872b41a6af642cfc1a2bc\nd4326cd55ed8333f6a059e1fc701f06\n892529626a1710cf17ef8b7bd64bd7f2\n3d23d594355c65d9376f771510e6da27\nb34d40cf68d35685edd5830365d88456\n917f2800d9fa9fe8c862eec8232fff1e\n91645c82e357ec502744bf8869518694\n7c2bd3b26bff1d7568c981036afdae64\n5f8b70c628c7f6fcd4fd21ba7448467e\n1e40fef11894c4b9ce4f274577283b16\nfbafdfd16d929c715b52e74a988c7255\n5027bd5ab457e99068821642e9a54505\naf30cef615a3338599426e1733531ba\n3f55eca70a6ad5dfb4f2d409b6697059\n8ab6783b1dfbf3a8a5d9ad16964840ab\n94ae179dd1a1492d1191025061735ea3\n94645127bd4168e03e63b721c3743983\n821c88bc79af232bf2acefc3b3178108\n446430548f6ac25ef25f6a97c97019cf\nd52e7e39bed3ed954f62c7a282978009\n47ac4f73d91f8ff0c862eec8232fff1e\n1f5a2c231265aa9380b3cfbeccfb24d2\n3c4a33481f45cebb81f5ac91b0c9e99b\n61917c7f7953ee7fe6543556f230fe9c\n32a4ddf426cef33c323ad87fe7d4deee\naba6ab10f7ccd59f9f8c3d2002c77ddb\n3b513237d90a4cd1576d8983ea1341c3\ne54417646ad16604738a251b334366e\n74e6ecf3201874777954eb05bbab463f\n986058a64eb343c6781b8c940ab86a39\n77c4867b42d73d9bf24f05137699edbe\n4a86ad0d870a55e82058afcc28d23393\ne078876957aa6efbb0b0d46323bc2ae0\n63d92bf1f175a75a25ffbad401072b4d\n28d3e0a4e4201ddb19ed4d1541e44f14\n78261b526d28a436cc786970133d7717\n664eb477f8098678f1783a44a88d6274\nb5254b56addb692eb516c05d046e8e45\n5b5d0af8426e604df1783a44a88d6274\n981adc1bb90e7cab666bebf1a1d4e946\nbf8e44b58d2d95f45c6cb69e0968783\nc50976d44eac9f3cd7aac2535b43ae4e\n477fdfa65563f180f51f77a6d7299806\n26d98eed64a7f76318a93a45bf780820\n2f20894566c681e5922309b37ed10e7a\nb274fcf203b9ba7612c19a9a8d2be7d4\n4855971647f786b642e1bb4fe264125f\nee20e46c542e2268f51f77a6d7299806\ne916dfe829b5b3daf4b6538438a0b930\nd4d7607336810a548b95c9b52cba3b9d\n7fa4db28bd803691c91adfee365fdcaf\ned51660fd119dca819fb4103277a6b93\n800f60058f12a5243c2e0b170f2ad8bc\n6ae92754a0a90af09eb811e8e20749ae\n1e03b1793723dc25fbd332e3dd079259\ne76aad9a92f83d70bda72093f9b5aa73\n566df2b6ad0abb3198d5fc0473d00a1c\n39c629e6f9e752964c6ea7add0063fc3\ned6c9f6d77831e5cdf2b21995cbbbc4f\n34ce485c1fbb9af578785e24320d5ee9\n7af12c69626b5c1814038d588fd1342f\n478074fa4b2b604b6c0c723d8da50cff\n89509ce24bf62df0950baa3a522faef2\n1986eeb9bb594bf9a6d7a9f3c5f7bb41\n3457146f11dab7eff3c9c1464e55d580\n78505373e756b214a3af90debe5fa17f\n938c0560f25a6a9cb76982957f05710f\n5ce98a1c247f0a2d623ddc7262bf3bc6\n4e438ade91769be8c8687ff9b0b4e4ac\nf106bc80265faaabf78fc6de5952fb84\n662928421872897f489452a0032ea575\n9d9b5f5b3fd41136244d7c2690850fc2\n66aea803dc4a6c5390907a4c1a185a7\n462ef3bb97a88a753efde60c5bd5967e\n64139338cf8835515d6c0eb60be969cc\n997b0aaad2301a44b31fb46b2e6304f4\n2a445cdc8cac449271c43550cfb383a8\n6cf7fc7979e949c72dc9485cd94746f7\n1820138eca42749262e4024c69de065d\n7289d67cc454e7215790e40d47191474\n6b6507085db5a631f3c9c1464e55d580\n95ac07c8c517929be06a9b687d35bd76\n6ea4ccd680f3635b14038d588fd1342f\n31f5725faebb53aba1fb86e891f97aa\na7b82d009e29bafe705fef512417e4c9\nfb8b45151900e6e016a0c57b9ceb6d01\n5d681a38c0de5545205884f75aba3a\nff143c09dbfb0e8029e513fd785f7886\n328685b8dd3a7353bfde9cad2b5fdc64\n27e757d4ed3c929b75c39dc45570367\n5f2441ed2a9ec8fab5d55ded7962c792\n75b9ddc5017a5eb137f8f3a1ea8633a9\n5c70ab37293d81911b17743c18fb63dc\n5ef4db0419932fe12e5ebb32d8476df8\n64871dc28a21843ad504e40666187f4e\n7a5e63ee142a424c5f6d0af6de791c3\n76772a027634c747c8687ff9b0b4e4ac\n759d66c5dcf1cabfb99d75d512b660d0\n4c6c3346b5d0f071f4b6538438a0b930\n715530026c6459873e8366d7fa2c218f\n8d14cc01f39f2679a857215a199c2ecb\n2a2d705d0238396488422a4c20c0b1e6\n5b0dd54eced22552b283c8c7333d797\n6dff84a93b82c888486150a9b7f2cf18\n35d2e2a050336b78dbca69f936e89647\n6b881cd27826bd6b97a79b27e081b077\n287413404880403751e5a8425285015a\n674122da19a75d9bca86e527b84d8854\nf53cba4a288db2d58e1400f6db70a939\n99a9e829fd4bece8f5f520af1365ee71\n79053fcbcb68e2c31528cf73b8bd8799\n1e9004958eb935b2ef2777c7d8e09db2\n4edfd09b8d7717cc579600e6ae92ac5e\n5ca0b01dae9e3476f51f77a6d7299806\n4c6c364af4b52751ca6910e4922d61aa\n751b12c6e22386a49a195befe1c2db74\n48de3e38b0c5fb40b07fa14c34cd0728\n44fbc34ea7869e38e13a527279e951a2\n260f65e1b1baaf7c7b707c797539b200\nb251886df47a873eede14860b165d604\n92175cfac21b10e76e5b9257c4084ca2\n29876b641047897f9bbef973cc1034f9\n9e140d4e30a90721b459fd126141e9e6\n6730fb4ca7c90ddccd8b2a7439d99cc3\ncc811f0c28012f493c528a26a44a30b6\n501bf2a6d014d22ba169b9ecd9e046dc\n18e5d3054fba58bf6e30a0dcfb43d654\nbcf67dfcbd6c1fe7da8e9e0272759299\n3ac2da28e9a2f547ce4f274577283b16\ne1e2a1aa3a6cc913eab1a145ba6f6383\nb2c838917b9f0fb68a40e1421d6a3cbf\nc7ae4cc12a7bc2581fa16f9a5527bb27\n20ae4b27e86521a32efc7fb40a53aaac\n22f030ce09693f4c65c99f3aded15b93\n1b6c268811e1724ead75d368738e0b47\na3e985835e89c8b1498f847f9f26fae3\na96226408895c2685e3c4d3bc6ac3be0\nc5e3f6da9e818851618dd45f797b66b4\n56cb679a49a3568998d5fc0473d00a1c\n603351f3a2ae3259f2b931201029bc76\nc1c0b3d35cdef5e2f51fa0238791f5dc\n3f11833d3d9309bc9952c05a06935ddc\na54ac4580f151f89278d386bfa54545\n8da97531717192fc3215145fdcd9052\nfbca73a2c226a86a593a4d04856c4691\nd5e9eb9dbf9d30073321831d2245cf06\na36aa9aef138fdc1377b9297f3055210\nce10e4e0d04c33e7322ed2ef5fc90e25\n59bd57fe0389e7831f7c97814eaf956d\n37c5d67f97a2231cf51f77a6d7299806\n7004f4eb1a5b4a41a5e3e028709e0474\n124ef426dfa0aa38ff6069724068a578\n673c396b8989cd1971a782a4379556c7\nb2c35c8b748491a1684b7bc3f8a9aa55\nd07675c29d0bd535580b0de4af0eb56b\n81c481c1a0477555f0a61fe93fafdeec\n7139284dff5142d4593ebeeedbff73b\nc400749eaa4d10871a782a4379556c7\ne92063f7bf538df17eb00a494c61433f\n86c4bc3f46e1bf7bad179769eda42205\n43d13e139d0eb78668007dfca4077105\n2f249cbcbb122b85845e78b431e4d529\ndef8af022dceee892acbf58c0b138e50\n7d1a9d6a3297ab853e02e5116c35dcd3\nc833ef6f882a4b2a14038d588fd1342f\n83d3b40a6ff6a04af4b6538438a0b930\n276932e7bf229d37c8ad93869b52d215\n123305d8ccc0dc6346918a1d9c256af3\n9e8ba34b501945d1f4b6538438a0b930\n5392f55620f601471a782a4379556c7\n38c65f38e51df0746fd487bdb55ad0b9\n9db1302f2fd980cf3cca2657c9d0b9e4\n3a40eb7b9122bbfe2f066782346a992\n76de2f91710e9bd85f31725202dd5bbc\nc42bedf7a36202309056fd4a77b3a4bd\n2842701d388dcd3d534fa06200d07790\n4fd4cda3d713bb29c8687ff9b0b4e4ac\nea7337dbfced9674d2844b25962c000d\ne6328c1bb6b194f262e682c9809bff14\nd86158642391ea7a150a331b054ed006\n4a0f1aa6a24c889dc2f927df125f5ce4\n84f7061e038484492f8cdfb829e0f65d\n95d8553504c65fb4b770bfdf3ce10896\n264322794651490ec0d3c02f7e255b2b\nb4e30a512991aeba67903707764646db\n895099e136437cb799860e9353bb52a1\n59704fd0f662d7b4da986730050de1e8\n353707e135c889d2dbbc9440457e303e\nabbe727944da8cc55f0f8f79871ee942\nf128d707527eb10cb04cb542e2c50eb4\n3ab2563609476e089868adf0764f7fd9\nc7542e15626489adab4faba16579e3d8\nc16a1a47bf34a84d157e7edaf1e3e602\n74f246c1f7633eb31d1a08d58541ab5\n4aa70df1db0ff6ce2d19175e7d19b7cb\n3f60205b1eef5555a4bf007e7299d9cb\ndc0bc65e9181c2f698eb62961a525575\n103a0a413d4c3353a723872ad91e4ed1\n4ae645f3b724a7dcb83ea6cf8ac00397\nce12614d019f86e840ef1c8b63a628f9\n511c6fc6d3881b4ae43df8c9a38bf11b\nea389bc8d94f87ad95db811b45a94857\n432ed2387d4982a635836c728d324152\n502d0f698e20af83de03ab2a27ba7531\n9d229e34818effff07d3e3c7bfacb95\n8bd8c34158a3aa04f91663a74ccd2338\n11c9c57efad0b5ec297936c81e7f6629\n123b44b99e48eccb6960dc525de2f934\n4c3f452cd60df0efb0957d845ac33749\n387600bd541f7b502d7ee37bd88bacc0\n2282142b6b136a6f2ebeb1e6a8111f53\na770cb6ad4a97df84abd45348d17aaf8\n8c281caf626df58671a782a4379556c7\nb51e2ec95cb6ae33999b33727fe6db14\nc7f607892513a2f787bf0444104341d5\nfe47e7645f1080735f0277eebfd05be2\n32d243fc56b7b8658cbd400aa99bee96\nd30ecbe6cbe364e5c8687ff9b0b4e4ac\nf34fea2c05dc63d090984ccce1017e45\n5af850643d64c2621b17743c18fb63dc\na6009749fd05fed82d19175e7d19b7cb\na75e83a3201cf5ac745004c6a29b0df0\nf8c5604f39699e0fbbc2b2aef664ba29\n5ae7ef4cfaa6bd85b04cb542e2c50eb4\n1ef31b046039bf985c8a41baad250b1b\n3d66c60796d59662ea693790a1608aab\nbf41b418250959d0a8699b6183baa203\n764abaffc5872775f0dff71ec76b46f7\naed911c2849ce53b707cdefe012d0353\n79d7e50715b3b00cc2dd59754f61bab6\naa88b0f05470452f7ea323bc74055b8\na81795209ce65006ee0f4a6e5ea1d8c\n70a2b281cd8d59a52d19175e7d19b7cb\nd5b909ad5d7c793aa16baf954c1d99bc\n5019265bd6215c9ed54fd46ccb781717\nea06ed485ab0833a2ebeb1e6a8111f53\n1f3336163f11015c1a7069a11c22548c\n191360ba29f3d296ff458e602ebccbb0\n8cca53295cb61e878d3e8783b997c75\n595b9c165214bdf0b0b1b4239165b394\nf85f33b3f6cac48a512d71be7dbf2d60\n6fa2db75b28cc1375c728bbce49718a0\na497f206aa62e89c8ca0fe30c6caf3f4\ne777e42470ee9bf270ae142beb408e0\n67d3a3eceaada710e400ee8c5c49a7eb\n24465c99afde3b9782f320c67d1f2e15\n11c8f43ef796e23941e621b1a4bf507f\n9451cb35f46ec0f6f946fe2e431cd4fb\n3de9a7a40851ceb971a782a4379556c7\n58ef4177c711f38fe302d4da760c718f\nd9902456104543c898d5fc0473d00a1c\nc56bca4b7f353ad86debb0a33c851f8\n9b9cfaea2a7ba04c461ec9f1803b17a7\n49cbfde1ae92ee555706d1c54190f27a\n410146dc84b6196230fbe480cffda9d3\n2d204f50f33b3994fe52ffd0e748a1ab\n17d7a3e8badbd881fceff3d071111703\n6c5b15a19101456219cb07ecb5b4102\nc7da13238eb4a7e15128da2cbe23f6a\ndd0e48963b73476f7fa93550ab8061c2\nb371bb691811acae68d92632b2a01360\n3269630cf8dd9e87bfd5f349b1ab226\nf9b462997cb333dc7fbc060fd555478\n63c7b59dbb2876b4aa2ac8cb6992212b\n6d27c80c3da530d69b11da89c22111dd\nc5e6c2b4528c371378dd615a59de5f05\n421b11a26931160a492d9da2668ec34c\n62c3b6eea96337609ae676623bdd3284\n42ecccc972b45e38f4cccb2a97578c5d\n65ff1205a5f89150315ec3dc61760fd2\n9d7d7607e1ba099bd98e59dfd5823115\n238cd4b409ad9951f1d6726679b21945\nca9f1525342549878ad57b51c4441549\necb53ab8eeeb43d31246538126da07a8\n584ce0f244158b37de2b9bba503c21f\n8db4d399adc4d6148738e7290b6f3237\nfc99c80f588bc88d5a6be9e325f087ce\n63d45791c56483bb2662409120160a57\n643e55c58a248949b24e615f75a5a1bb\n2fd314d0a19433c62c37553db37ec752\n8945c698ec3e9d1ad9deb3f829cc2475\n249b40a630dd751f8023b347a089645c\ncea21726757b5253c3648f83bb1262ce\n808ba77745a0934586abe5555a3b447d\n8e7f354489bf4d9b65684b1827478535\n1e67e443849379fd6666a748bda83f67\nea762c2f1c6e966be464faca7dae7fdd\n662409af279f322eeb82005949031741\n60167ae64899f8ae966a40fb39b34846\n2576091d2540147a473f10e6caaeca56\n9518130aa4876f146ec0232dc7739bc0\n9dc77fb24cb14e5b3abfc4d0a5688916\nf05cdaa4f262ebfba16baf954c1d99bc\n77a4269a0d64d48336b0f2a1430e993a\n68fab23a050707213436bcb4a3bd19ad\n4a636d555b4f9492e27790b0ec8671f7\n7aa759758e3b0d5024ef48ae9e8e965f\n5a960456884d2a3b04cb542e2c50eb4\nfa277e2693cba669731d11154716a6b8\n738188ae01887d2349bb1cbbf9a4206\nb1a30ad2706247b53c5f24f851caaab7\nffd616229a97642c7ea8c9f2db0a45da\n8e9247a97fea8e0caab901f164e48538\n609d3b4977310957909e1fac9945adaa\n6549c13a4c96b926f51fa0238791f5dc\n49d4f5dc155b7b8a55f46d55537192b6\n8661c4d0ab5e3636490ad276cd2af3a4\n2620443433d2292ebed0f46f915a3980\n73970143d9af7218c8687ff9b0b4e4ac\n95d082c78ea0b1befe52ffd0e748a1ab\ndbf5ea40382c5efed30107faf024a18b\n9c339d9fd8068f81351d9ca36f76b95\n430f87764dc3f455ad484915511ccff6\nb2ded1854643f1451c1b3b2ed8d13bf8\n7348ec0e16e99fe1ad484915511ccff6\n27fef9fcdec5a001f8f60938be4e769\n7c7b4bdc2fc34ffdb398ef956214258e\n7a8b8bbd24974013327289c00b6dc9ca\n61943ed43201e59ed7f7a4c4609b0913\n589829ef4fb0390e492d9da2668ec34c\na88cdbcd4fe502c743f32dd9b833c1da\n994dccd2cb784510a6fee8e2140acec9\n4cfc78be98de1d2bd607f0b8430fb29a\n37ba94e29b7d21ee41fbc1e2da054acb\n1bec15f362b641ca7350b1b2f753f3a2\n313ba5c62a7e746d2974cfd5336a9b09\n94e289c89059106bd8f74b0004a598cd\n1d1b37ce6d72d7855096c0dd2594842a\nd67d52783e2ef9b76179a6634d17b74\n972355f42223e6199cd431573238602d\n7eaf212097293229fd3456bfc7553c94\nf7e1a17728ea76dbc6bcadaedba80eee\n6dd5e21ca65a9ff73c837ed50dd492e\n11525a18678f7ce6ae1e1181f20bb9c8\n4a0e7f1129a9172349bb1cbbf9a4206\ne6a8f28b36533f8239b3360f500ac52a\ne431c68fbfdf826d561dbc0c83a98a32\n185bcb9bcec174c9492d9da2668ec34c\n45a355545e7a807a492d9da2668ec34c\n60647c98b5fc96b13002761e7a3ba3bd\nb89952c6f2dbc1aea50b88953d263a42\n1bbe463ba96415aff1783a44a88d6274\ne462df8166441ffaeedb49f6d982d28\n33334eb57a9d7bbba19d006f28e25379\n88a7740602eb0d59cd431573238602d\n44c5b57d406c663403f064eb1ac2f31\n74391d05121df162492d9da2668ec34c\n374e87fdee7711491e046801e2748f1a\n6352d748b1843287921ea62370e5ffe0\nf73dde8df5d0e5c7f91663a74ccd2338\n97a4d1ab6d58bc2ef60f0f3341009abb\n7e9448da23c3387754e9211d1e7afbcf\n81910ec49fc4951330e06a011e63236a\ne955b63a4bd738857178717457aa5d20\n675aaa5b883e2398d7f7a4c4609b0913\n7d59399c37925cd7b1b9d9bf8d5ee54d\ncacaca67988f6686f91663a74ccd2338\n6b95ac6189a395d3fa8cf35dd917fad6\n131abb0b13d6c5b97f0b1e4f6d35b0ba\n44875441fe578186d35ac2e5000061ec\na564c8a43f6a7ba5199f2eca998ded6d\n2b783fe4230af5436a7b680929b3b0fb\n497f67c006770b9f94e98ee4fdfd7464\n7212bdfab35f72b23002761e7a3ba3bd\n8ddae5e2493ab76af91663a74ccd2338\n7932489d9aa9fb58492d9da2668ec34c\n92ebdd82509fd637593ebeeedbff73b\n64e77e9e5887ce95492d9da2668ec34c\n235c8ef29ef5fc5bafd49046c1129780\n639a10b856336f1fff2c92c2a4f65876\n6419d67905503bf7a09708b19d8be603\n961396e0e5e46a4a208462e8bafe70e8\nd04c2161f32a6499a6fee8e2140acec9\nc6811f115d89758f46fb9c38320df24e\n5ed72ca90351b0c4d5b24cafb84903c7\n92c176547858fd2cf91663a74ccd2338\n3928ff39e32dbddbf91663a74ccd2338\n4dd8862c73931cafeaf14273fa406ffc\nd670d3919c87c91cf1783a44a88d6274\nd66fe5dc263064a2bc38fb3cb9934c71\nc0b10448880dec62056b4bd5d870b47\ne3f1f899d63ab008492d9da2668ec34c\n308a3c347dd24ee4fa2713776d82bf59\n61eb0af11765544ef91663a74ccd2338\n6ebfa5329b0d1439d4ea3f4c41b1b9bb\n8a948db5f12d02af492d9da2668ec34c\na97a00bee5585e49f05defab1869a09\n1eb1a8acd4185f49492d9da2668ec34c\n30f077da43f30e64c862eec8232fff1e\na7fc36d1b5d29280ad484915511ccff6\n459a01afd2d5d4225267ac530b1d88dc\n9c5b246616974299f1783a44a88d6274\ne9e8f839c77a03498307335ef66226a6\n7f2854516404a3a7de03ab2a27ba7531\n5ceabffee1c333293002761e7a3ba3bd\n99120ec1daa4ae1bad484915511ccff6\ndc77b920bda118d54627f3cd8db22919\n85208e245c49fd72349bb1cbbf9a4206\n70eddfb0000447c637b2bb75885cfc44\nd32f32d76d7f53bf6996454765a52e50\nda443e90e376b024b0f7e9a1c9f6c90f\nedba8e42a3996f7cb1a9ec000a076431\n8f77a33dbdea3d19492d9da2668ec34c\ndb549976c0b7b960d42ec7e303174a87\n924f413e0a7a6ca8492d9da2668ec34c\n2320dab001320f69f91663a74ccd2338\nf8594a24176f732b4c7e2600dbaebf40\n12f395270a3316d01666e1246e760f82\n95d6aae8728a0aed70e95b2fd46626d\n8f1a661dc1048e36297936c81e7f6629\na99be8e57aea8592a38859fd71bee28c\ne9a8bc335a7faf78f91663a74ccd2338\nbc61ea1b9348f456492d9da2668ec34c\nef4f9cd2b498a10a614871b18a2b1957\nbae518da1e709e83596f70d1d7edd4bc\n4785c094e81a5f8e3002761e7a3ba3bd\n966aaab0434c950cd7f7a4c4609b0913\n60cbc688b57f8b5446407779dbd69b2d\n26ab589f6838edc99ae676623bdd3284\n903a14845425ca3176e30bf48cd56fcd\n511e6440fad9bfa81fc8b86678ea0c8b\nbaf3304f1352fae41c6aa36e5af1449\n49434684366778973002761e7a3ba3bd\nf441e4f7f123bde3cd7677199133326a\ne6c900568268acf735836c728d324152\na78d31c9dd3cea02f91663a74ccd2338\naf34090f13146fef15afaa91253fa857\n4447ee47cd2333f6349bb1cbbf9a4206\n10d174a00639990492d9da2668ec34c\n4c86a55673764f05597976c675750537\nb659a94c6643282f504721639e19f609\n49e265cf00ecff0f59d9b12c05c8f809\ne3b04359a3e9ac5de5dbcc9343304f4a\nbfca24444b46e75e492d9da2668ec34c\n92e2317fd0d0129bb910025244eec99a\nb8666dca76b418e04c9bf8fa5a14f3be\n2ac0a9cdbe7ab8a6ad484915511ccff6\n426ab868a6acc7c6492d9da2668ec34c\nb2d6c064af0c735f1783a44a88d6274\nce33bf3ec6438e5bef662d1962a11f02\n64a699cf5b2a43473f7e27638e63d848\nc570ee85ecb0e514492d9da2668ec34c\na7579c588d289fee4671d97b0fd17f51\n74636f18a539da1cab610b0c94236463\n9b52e73f96d181969cd431573238602d\n3bd437d38068f4a61f285be552b78f9a\neb59a4b8deddc6f659fe320c015eae2\ne4494542ab04c033e6fe3612af521500\nc58f6a35f86a1802e8f8c11a24c52ebb\n99fbc3ebabd3b83e54beec3b24722e27\n300d6a7505f24959492d9da2668ec34c\nb33e6d5d6bdab020af7c7ad2549a1b15\nabddac917b144928f91663a74ccd2338\n589e717feb809e7c1c5a16cc04345597\n9e9697da825cbe4b3002761e7a3ba3bd\nb405fa036403fbdb307776da88d1350f\na8756f91fe03b962492d9da2668ec34c\nb11c616a19d702cdd7f7a4c4609b0913\n7297ec6faebb50aa1f285be552b78f9a\n95db11e86efa7c3e8c6222d771a6c85a\nba45d6c491637dc5820018801b237b3d\ne98fc1a9b608a0c1a8760470bc8702f6\n3797290f1dc83a3ab0e5659877cf3f6c\ne71d05f223d527a5f91663a74ccd2338\n617f09d333443b8e91745c588e2e0fa\n7520005e70a54526c266013a269e5f81\ne5b0325d624a692467d783b4714d4324\n1e2e68813f004d8ff8b8d4a282992be4\n606bd97f7337bf39b40f0ac0fb9a650d\n3fae0625f3cf5e862678f553478310df\n7f11908f7ea9483c415dbfd895473b4f\n233cf8ec4019005ceaf288f952624966\nec454747a071b83291a302a171d24a87\n5e685e076287215be8f8c11a24c52ebb\na13fa904e05d60f176e9713f57a5fcb6\n2ca91e56bef8cb5034af953b663e921b\n42c27211881f1377d7f7a4c4609b0913\ned72205562ef8407d7f7a4c4609b0913\n2182398f0f8fdd81af7c7ad2549a1b15\nea04a5915e3982aad7f7a4c4609b0913\nf1f670ac53799c18492d9da2668ec34c\n77cf056c6beffa5e3b6eb1ba4e121206\n5b2cfa084b8cfe389753496ba23f2183\n3020942d1547cf562056b4bd5d870b47\n5874e2ea2c2b71471b356ab8b24c147\n2c4d7d33ecb486532569827d39fc0af3\nbdc892547cceb2ef34dedfee80b7006\n510b1295f70873e2f91663a74ccd2338\nbed17aaa6ce899bed810b14a81e12eca\n572cbd8b4cbdf7f1f91663a74ccd2338\n28d27f1204c1b3de6512b7b24f3d84\n341c9b0583d31770492d9da2668ec34c\n5008eca8deba6555ee229bc98ff4457e\nf34a4514f72a3a767c11a4098d0a0259\ne792a2d799d79bc1b249ecc7669d184f\n413a7b8c5de6dd4ebb7b779fe99ae983\n5eb42c663aa7c8afb05550de345b6d0a\n9368cd9028151e1e9d51a07a5989d077\n34160b90f6abd883c731e4cb72d7c0af\n5456ffcbb7bd6b3e4460d09678055ab5\n7b86f52727b40120e3f7a74e12a274ef\na551977f078f362c492d9da2668ec34c\necd46956b35523fd492d9da2668ec34c\n20b0a82068ae767c34cc22336880d45c\n9542f23e526bd7aa24adc0b4355a9827\n11358c94662a68117e66b3e5c11f24d4\n6f36520144753550f91663a74ccd2338\n473a9ac8376e5a15ae0b06ef692d1ec7\nd080bfadaee310d8a21e3ca11c5bc05e\nc2220851bf50eda931ecc34700496180\na7d178cd0dc051f25fceaa39a8353bde\n4422c64dffcd8662eaf288f952624966\n22ae801d650a1e3d492d9da2668ec34c\na09091780fcf3af2e9777a9dc292bbd2\nba9b35c49d861f7f4e994a4c55e56a4f\n61b94385426a74323002761e7a3ba3bd\n7b8e24c31b7509b6dec3f6fd3a03085e\nb06f26c5403c3e922e653f6e789d3d8c\n508450cc9ab2a5fa98cfd47a860803c5\n3ee094648665bc3fca15770f07fe3544\n5bb8457da2bbc722d810b14a81e12eca\n434512cad2c10e09e8b2b8dc0c816caf\n30f68a6304d6906c9bdca9b7303475c3\n90f124aab57c518eb866f4a999c2a978\n769b26b459617608b04cb542e2c50eb4\n6aa1ac5d377261d1c2fbfa4bf3252b56\na7f0f0dce71747624671d97b0fd17f51\n5a85b2ef58145949213c3458a0fe5598\n7a338e9b13ae5da3245e874042d8b8db\n6b64af50e21c0006f91663a74ccd2338\n37ed1b9ebaf4b92deca22c501ad0a77a\n95792c6761663652aece045e8bdac80f\n91b738d40201bf18a413908c0e169330\n590ae1748c5acdedb05550de345b6d0a\na1949183ec03f3ab2f6cf9c2cf79a5\nc8df724ce6f12ca2d86a257784298546\ne127ed243617eaf04904d89e9169817b\n655102add1989c1064fad3c7b88e6060\n5bdcd3d77e1c91f78e437a27fb25efdf\n2a0e0b51d919f030ad484915511ccff6\n6b4622c4e15b5cc9f91663a74ccd2338\n3919e93cc1f3bf5bd7f7a4c4609b0913\n8efb37e93b208234671d97b0fd17f51\nf7b52f9c95ebaf3ff91663a74ccd2338\n6fde09bdd613f6e6492d9da2668ec34c\ncd7674dec40cb30f30e06a011e63236a\n79850e4ff6e43e6b3dfa4373373135f6\n523269ef7703a120cf004563556ddb36\nbe305d2400194ef726e926172da61b44\n57c6cf844c09c5d8b40f0ac0fb9a650d\n68151e7a9fcd8545851e82fe58f53ce1\n9d9992f7da4c888c7d3c9de9415fb224\n9040047cab148e55e8f8c11a24c52ebb\nf9cdefd31b167f95e8f8c11a24c52ebb\ne8ef93ed45300501bfddc5b20c9212b4\n7885f87669b8fbc73f7e27638e63d848\n7228564fe629f578e8f8c11a24c52ebb\na559b02ec38b9995c5fdf6b0c2c57721\n4363eb3e65ada91ae3f7a74e12a274ef\n5ad3a3c3b67433174733824eae5cd9ae\n22740f20eddc5420492d9da2668ec34c\n353bbd3b916426d24502f857a1cf320e\n709a5038988a70f58e6803fc947043b9\n732e0abfbd4d09858d775f6f7c8f1b0d\n4c52204e49ce9449492d9da2668ec34c\nd2a1aaba7e047897492d9da2668ec34c\n34dc6c4e022b380cf91663a74ccd2338\n32b56fa66c73c450a86b76551c6a3b2b\n65c7a3d8fb95311c492d9da2668ec34c\n58f3e49e746363dcf91663a74ccd2338\nb9027939e6c71d844d256d962a5df83b\n77727bbfb22c57de492d9da2668ec34c\n2ae5f2290acacd7fd5b24cafb84903c7\n63b5ef650f1020eb7fa0ee8efe00d1ee\na69a2807ca667fd9492d9da2668ec34c\n9e6564dce4cc128efc24661f5f8d5d00\nfd244782842c611b6443e5551f9d3958\n66683c677e7b40593c2e50348f23d3d\nac041c720dc66c06d1c83bc8b134e4d8\n3a4d572dc16ac52e201e82f29479384c\nc08c39b6ae7a44ff3935ca98160cbcab\n9faecbe3bded39c4efed9665e3f75336\nbeccd4a6031f6a5a3eaabea23fed5ec2\n484f0070df7d5375492d9da2668ec34c\n4fa95ea95b42125be5c1abd833032715\n9ecd81b505ac3a175634c21965ee6bab\nd015bbb45833955537b2bb75885cfc44\n5893038d979ce1bb725c7e2164996f48\n8da91a953d645457456cbf78e1e89022\nef03458b97c8775b492d9da2668ec34c\n73f9aa75944ecf0b9debdd405104de8c\ne9592e2a4fc74bf0492d9da2668ec34c\n813f84c21a081253c02e349cb722a77a\n811c349efc40c6feaf288f952624966\n8c91c7c19c20bc4cf130e9cdbbb1cf40\n96419956c44757fe71a782a4379556c7\n61dfc04e60e3df4b4c350d7ea5fe2a3a\ne8187497dd464b62f91663a74ccd2338\n8086d53c2535511597976c675750537\ncbe006da89cca7ffd6bab114dd47e3f\ncbbbb3aebaf2e112ca07b3f65fc99919\n75d28a98c151cbe678d2ffcbbc0020d\n20e0e65d8a10a88f91b8ec332e6d93da\n71b3089481026a9e677db18592980bcc\nfb381061e67388ba80360680c1602c7d\nc41fe0605cfe70571c25d54737ed5c8e\n9aa80e9e5adc8084792de12ccdce67a\n8b54af871a3ac77c492d9da2668ec34c\n3b2d9328ab28f70122c4f7f8c92935f0\n3fc6ab5d3c52c128d810b14a81e12eca\n21a8b1ad63a8d19dd7f7a4c4609b0913\nf93bbb0ae5d66c075fb57c89160d1cb7\n329c2234d134dc89492d9da2668ec34c\n9069ccc5fcf22878564eaedaeaa04f28\n2bf05f8a84f0a6f33002761e7a3ba3bd\ncf88ae03d8cc2fabfcce6278f5ffb13a\n48f2c6ee2c8ea7538cb22acd3160c793\nbf91d0169eae3bfdd810b14a81e12eca\n40f1e0c4aa317c4d492d9da2668ec34c\nedb86d102237488ce8f8c11a24c52ebb\neeef39917dd113e053624ac0db0f7e5b\nc10b1973a0d692ef910979f825490a99\n9d0043b17b97ac694925bc492489de9c\n2f1bc92c53f359d759a6208793b9dfca\n8da327a8eea887fd492d9da2668ec34c\n24bbe7f32727901aa6fee8e2140acec9\nc64691882dd54d0eec1a944671ba8259\n1b938d400e1a340b17b431cae0dd70ed\n88aec853dcb10d526efa145e9f4a2693\na1555d448a9d6fa0666bc0b629562709\nd89e39192db6fa78492d9da2668ec34c\n4f6a5769aab5de542b848a53a7028d2e\ne854aa6a9c97d829cde6b082a301e49c\n4e1dae6ca4f220048ee0cd746086d989\n341e18eafb46f892a6fee8e2140acec9\n5d60590d192c52553a23b8cb1a985a11\n48106a12bdc3f7d8f5ee22e800bb9145\na2bfec12cf53f198d810b14a81e12eca\n59bbf4d0360e4cf733e5ff708bab9b06\n898dc475a4f36d0d35836c728d324152\n39c5291a2dd17d6430e06a011e63236a\n1093d35c2ac73bb74ca84d60642ec7e8\nc649c3e28d05e0877c65caaca24f3fa0\n9a3d7e6194b7a5bd3825a5bc524f67c9\n4c668aab2c49f9ac9bf4d6e8e41d9e5b\ne2c3729e9729b75f40ef1c8b63a628f9\n9efb86c07170d7e897ec301178d1c7e\na33fcf84726cd862d866e3aa112e4663\n740cc6d4d1c6901eadb91c074e672e22\n43569dc880494256b40f0ac0fb9a650d\n35c2de57ee36f652492d9da2668ec34c\n6ade3daff4827379492d9da2668ec34c\n4610136087e41261f1d6726679b21945\n41bb8be36df856eb847d4e46a1f9f05\n5008d5e0ddf1b3dfa37d17ad9e86b6bb\n551be68d484c8910f91663a74ccd2338\nf40332e31675a54d492d9da2668ec34c\n8f3c91049838cdf2b04cb542e2c50eb4\n8b6f6304674b1280d6cb6d27840b9d7d\nea577a1e9dffe7b55096c0dd2594842a\n53eea17c88e31519492d9da2668ec34c\n3869d2fda85428c4f91663a74ccd2338\ncb78334a5ad9517d7a31dd5af93fdb5c\n8b3d1c34753e095cb05550de345b6d0a\n78ba9e32a9a5c276f69d13812ce67f33\n30f862f46bd96da835836c728d324152\ne67c305a676930b123c95a77265c8dd\n3d267294b4a01900b04cb542e2c50eb4\nf3ece63fb46fb129eb71e9117b10dee6\ndfc9e6a84553253ef91663a74ccd2338\nbeeb89082b38c83c992640a67216b77\n925c06a5aea45ffbaf7c7ad2549a1b15\n357275196334dc4feaf288f952624966\nf4cec47ced59d95a3002761e7a3ba3bd\n5e5d9a681b53ee0d3b8d5c0ebdd194c8\n38bdba5f6455c5ff91663a74ccd2338\n79317a7ee8c26288ce265ed390193062\nd4e0707b680e61e0593ebeeedbff73b\n1be0108997e6aba5349bb1cbbf9a4206\nd19ab2197f8e8582f97cb7fd36f15198\n5c28b7d86cdf577c944bd645bf5a9d4f\n3211fc4f31b15964aee892adc836ce83\n1022fe7dd03f6a4d4d5ad9f13ac9f4e7\n30518e2d6fb5dff259d9b12c05c8f809\ncbbf0aacb76a1ed17b20cb946bceb58f\nf6d1ecef43ed4eeb907f4a296134a0cc\n4aa9b5829edec8ac4671d97b0fd17f51\nc42b305fdffad7c9cdc9f3b79a373ad4\n46323c7986200588492d9da2668ec34c\n36ee2823173fecc8d22730b0728b2fc9\n37e3b1b00196001160902b587804b688\na8febf7ef6ce1d8cf7d0fb681a992ad6\n4dc7fe6e98c4db21d79b19c7c4f0e293\nd794f296dbe579101e046801e2748f1a\nfe5951beafda9dc5b76982957f05710f\n611f235819b7c26267d783b4714d4324\n39311ad85e77d3b7492d9da2668ec34c\n7fbe0c40524fd37465ba78ad9601cf1b\n3469b7f0709ed90ac681404257d94ad9\n69e35c579a68fe146045fdc35419ee6c\n3db18530ff6bbb50f130e9cdbbb1cf40\n76389d102e3fb729f51f77a6d7299806\n39c2f4690aff8f049a45ed2554d2f93e\ne6e65bbad248c82c4c59782c74cbf5c7\n2acb11399d4d6cc335836c728d324152\n4b71f633ddb55c6e309160eb001312fe\nbf3c19bb6bf16aa8beedd4e6b38acced\n40fc53f1c111a19c7d3c9de9415fb224\n379f2db4f028cd7925e847faed0661b\n1c08f2aa305f124262e682c9809bff14\n5e6d8f9275fc311fb7c42e403b7689ad\n6f11d4ab55b7a63e261fd7080fd6f759\n1e2ddaef401676915a7934ad3293bab5\ne896f38e6b62f25ce030e064f3b8af2b\n6584413da69096db65ba78ad9601cf1b\n8a67fd47001e52414c350d7ea5fe2a3a\ndac4af24e2facd7d3000ca4b04fcd6ac\n452d2a10ecc96b34129a4a365910676\n5427106126c9851dc862eec8232fff1e\n43681f9356e330b36ac40071701c687\ndb812fdfacf4db8df51f77a6d7299806\n69e591a9769e03012c528d33bca1ac2\n51591397480eecccf58894a68fdb6cca\nd49ce68499ee980de6c5cd45aa112726\nb2dc781aae692b2555182f299fe41fdc\nbb3516732bcd45f2490ad276cd2af3a4\n588dc044970bc56f3a4a5c95fa1b0032\n6e12481d3158dd4e8f8c11a24c52ebb\n3024deb09ba519c517089ab023f65eee\n502116e5b87d1fbe69e92c4e191537ef\ne2809feb8c0b535686c701087a194026\nb1ef4c02ac7a0b28632c9ddc45ef4651\nea628b4568d4eb527085b4353236aad\n6ec02d7a508434f1b0957d845ac33749\ne26ac9cc4c44f8709531b4e1074af521\nd107532567ee3f316663d1953862c637\nb2968ca25d2e2fe0f51f77a6d7299806\n19d3ba04e165e67dcb4387db711dc078\n533650991ca60fbfdbca69f936e89647\n2dca240a3726c004a83826e22c7812a6\nbbba083270a2b0d031d7d27dc50ba701\n79397634d362eaded96cac5d008c9fc3\nd9bf326d8ae7a430a5a7dec3df261ad1\nf4a0767a3d7039c38a841ccdc50a763\nf14a2e78a93c559b253b862f13dd465\ncf0d80feb2f6f71d9df508b37e4a3518\n96885d760de5c5e174335c2737ecf4d\nfa33e83563fc2765e238f87ef5154562\n9ab690ed709e7131b1b2ecd73d1717a3\n8ca2c0a0eed4a31abb93315448664e1d\n977b3355b3f93b09e6fe3612af521500\n691b10e17ba828e2b161f36d4e309050\n2948af0b6a12f1c7ad484915511ccff6\ne5d285ad477a33a27eaeab1f0c9120b7\n65f3d57bd9c6911d492d9da2668ec34c\n3ae2857e04641093b0957d845ac33749\nef544a816432b0a78dabc11b24766ce2\n752102fb466042576a63d6c64bf6b56\nbdacb728b23fc758fc0035da39bd5e1\n85b73c87c4c73263a7c64d6a7060b75b\nb66ef4dd7cd2674f91663a74ccd2338\n32408a694ac56775ce62834dbceac22f\n1efb3d9f1cd2499c5339eb67f6086a2b\nb42953e6e55ba5d4d2bc32977ed52527\nbd4fb5e30bd993727eaeab1f0c9120b7\n2268d24a64c2b20b16222ba719ed2541\n2e291f35746e94fa62762c7262e78952\ne84d39ce475415399f165f18603a28b1\nc4c598c29a542a5f150539b40d03634f\n4f4d7ae825908e303a8be023e0f2e100\nf5490bd0c64cd42b9ca5a26dad9fbaa\nfe20f6a58ca6c84c914eb005afa6475b\ncd989e48c5348bb530e06a011e63236a\n2c795b27253f9ada336961c9971d866b\n8cfbde91dc175e2ea54b9afa882a89ed\nbcea72fa334f593bb41b7625e8c42dfa\n5a30a8edad307d8b04cb542e2c50eb4\nb9908906f1e1f65b8e800d2aff155191\n8d40dbf5ada2f6f662e4024c69de065d\n96c019b564eb9cfbf3c9c1464e55d580\n59907bb6aaa7afeec283ca2c9df7372d\n4bbd110ccfc81dd336b0f2a1430e993a\nb7d4357aa24126a227a7baff096e3087\n4b3ddc244c521f5c6a9ab6fc87e1604e\n436ed3a8e05baa0d492d9da2668ec34c\n54054535e70d9ca0f91663a74ccd2338\n758173c2c4630eab21f01d01c8c9dec6\na07b5b7014264e0330e06a011e63236a\n7dc1a66d228c8787e39e97231748e33\n7e298a6653f0febd1f30b807ae39b61d\ne05172ca06db0781a0a34f494d525bb7\n2b9fa5950d81d925cf004563556ddb36\n987770212e08392d2c528d33bca1ac2\ne344e50eb6754cf890ef7803f19df417\n6bff9667fa51178ce9930a50732a44eb\n3270016f24001d9f3149bb9ed65c73b1\na20760333defff73d2ef7d159eb54508\n8830354625df010037b71c02ebe8cb4d\n311e72dd86f0daa981a172d69c52a28a\n8027892aa03a3d2c907a5a34fd8df2f1\na0a01b87633d31061e6becdb5008d9af\n45039c59b957063e742728b30848ed03\n6409f917fdae612f492d9da2668ec34c\n990ae87d8fb108ee80bd85224f0b94aa\n381782d3562f2fe0302dea4b3acac371\n654b7415b53b5138fc5718d28351c534\n834af6ad2a1d5581492d9da2668ec34c\ne9c99b6af129c22cf91663a74ccd2338\n58919c88a1b5b0b65cc7bfbb0ffaa52\n7729d76b67931981f9111ef49c078dbe\n7f11f4251d2faee4492d9da2668ec34c\nf859a1ed07d088be920de219c00d1c3b\n7e81b5f79e6899cea570c6c691c987a8\nc31483b018ba90c30e62accf4408263\ne5d6c3d62f96e28db3d655d5fe021844\n516d94f2658b2258d79b19c7c4f0e293\n665511c6bccac090492d9da2668ec34c\na3260f0c8fddf11cf0f4992137d8f4a3\nbca76c4925b9a33177a7d775ec38a82c\ne28c5e90a01027bb4e83b37723b7fdca\n3baff0f05a4ac225b872c385efc13c74\ne6e00a7324357c7dbec105fec16416d7\n2de10784fa2655d6ad01ec966c80ac91\n1de49c5853d04e863c8d0fdfb1cc2535\n184c07776b38d92e35836c728d324152\n331bfb4cc56f09e201cbed672acdcde\n87991eba27985f3a417a8f1d2c94eaf6\naa4b1153a1c4248930e06a011e63236a\n6b70334926f7dac3f91663a74ccd2338\n1b80175cc081f3e44e4975e87c20ce53\n8bd75ffee48bb4b845fa198471a5a8a5\n7ae6518311bf2f66e1a0327ca4c4d5a5\n6190eb8be0f39ad782e3bf439621ac4d\n8b2949a4ab8f5a7d84c7dc40ac6d743\nc55077d0b8fd893fdc4d371eb87a65ca\n26638126794a48d9b0957d845ac33749\n78446e1cc15f757297936c81e7f6629\n9a8bab7a07a869d1ac822f8036859e60\n3c9bc4876a03093414b65ac180970edb\n66342d92d51f402d3f7e27638e63d848\nc5afaadb73323de9645a86b04c64b372\n6c0fb1806d66a9cc3002761e7a3ba3bd\n1028b32dc1873c2afe26a3ac360dbd4\n676287fd6b02428f2fe023c7dc3e5231\n69933c14a02d65166e28ffc6e1f368fe\n20964e03ef001d8910684e111251a45\n3dc39c34c37860da2ef1c225dc7772c5\n7792861e0bdb95a270a43c2d978e502e\nf7dec3c72af895884cafc8d32c041834\n4300fb717f89c832d42ec7e303174a87\n6dd44ada2f481c776dddf6f75fbd4a4c\nfe224defdf08a99a3002761e7a3ba3bd\n9144c2c7b7d9f733ad484915511ccff6\n97a87f40f5eb6f04af7c7ad2549a1b15\nf3f331e64d12b76d727e9f790cd597\n7f539a846e9e88f0d9fad8aba2c312b7\n2c052f5541d4d5689b2d7f86be5d0083\n77b457b102a9b82f5dca6305fb9f97ca\nb50529fcea40cea9e8f8c11a24c52ebb\n791c14d53bd565f56ba14bfd91a75020\n73abab8429d1694c82e3bf439621ac4d\nb10dd8cb211b26ba98d5fc0473d00a1c\n6730f663d0e012506f525e79a05bbcb3\n3aa41731c9bde97796d5112fb101f3ce\n2b70fe0b5669985c100bd20b85b3554\n4f51dd4fc61c41a27ad11050da24bb12\n54f13fbf4a274267a50b88953d263a42\nd46e16509b1c91b3933dc172307a6bb9\n6921b41c2f6916e2bea04b36c2ada3a3\n387a0509406a8653b40f0ac0fb9a650d\n3bb8e6e640c32a7c36b0f2a1430e993a\nbe8dbd9726372752412dfc90452742c7\n587ee5822bb56bd07b11ae648ea92233\ne76b4872f067395988dc0b76b0c63f53\n8ec95f15623085a7b11ae648ea92233\nd0cf0982f16e5d583178d91f48c2217\n668b9f6517f2bf501e54ac67f0143e13\n1db766ad516a6993f4b6538438a0b930\n5e191b9696ff301e821a29f3de4d7cce\n8b552c23c064b96179368d1198f406e7\nfb858b9e5f2b3e1043dbb6421d614c0d\nddb53381dfd0a2d7d2b12aa6a0f050b3\n3e2375ff9e7af8002861ed753d5b88a1\n5c233981556ff20fcaf36640a0c92faf\nb5833d19f6fbd9a78c67f98c135b5710\nfd2c754ca43457107d910d51d878f708\n1d7fdf837564523dc89a28b5e6678e0\n768ea32d8303095bfe6f9308e75765b1\nc04d0cf81d9d870a7aa0699f5d30fdef\n83f74ff9d96c4d77bc5804ffb7fec416\n25957008f839ef647abe6643657b8aec\n8abd5158ec94dfd8924bf081da6f024c\n903e861a95d6a2d5a6db47a0a040d0ff\nfd05e5d8fd82508e6d0a0d492005859c\n7212f652dd37232a80360680c1602c7d\n41bf66b762decaa42c6c98851414a9d8\n62127325480bec8d2c6c98851414a9d8\n8f6634a231e3f3ccdfe9cab879fd37e8\nc133c2af39e7d169b1a9ec000a076431\n69a6407f21509325a04c9785f6d4e317\nb94002e3a92ca65efdcf3d27ddf91f4c\ne57aa2d477a818ed2af6ec758865822\n550fa302257e193ec93d39652bbb58f\na7dbbe66942a7b7c40ef1c8b63a628f9\n3d029e681e0b4a0c12bdfd84d1dcaa33\nfaca91ff3f9e2b93a87dbaf229daf408\n2dbe453ba389adf5f91663a74ccd2338\nc12ea730ea29f8945914d57d976758c0\n850b424d90dbc66f4d68bade576979ab\n82b42b0f3ba76484e4fa0af6f7c25e58\n6beb16fbb2337f65936c7265c890fef\n7d0467dcbd13505f2314deb821327685\n2cb0ac27f1cdb3f0b2db0181fdb9f615\n963452f2fc2a74f62a3f8f484e6c5c4f\n674f8f89f68491ff38a7c518e9c1b4ce\nb8772904c25b61ac6b2befe83a0efe39\n5f1b45295c72cdf03a4a5c95fa1b0032\nee03232aacadee87d4266d69a5c6f129\naa93247a7fa69991e074517a246f1e65\n9c0c0e1a83243dde6f283df3449ca535\n6163793e4e973450a9b8d9d3b5cf54cc\n27a8827b0ba5d743169bfe841050f4a4\n95039795fd8db944608244cbb9b86bf5\n3503fedf43c99f0afb63ac4eaa5569d8\n8ec3459ab9fa3ce8738e43095496b061\n59f9d0acb4cbb1465611cca00f1f427d\n8cfc69d79fca89223a4a5c95fa1b0032\n54263fcf9d6380d343638dabe1eb5336\n7316e49785de77b9630abf945d2f3e0c\n3d5053323021b1babbaf011bdbf27c0e\ne9371c17042131d93506b420c6bcd44\n2d701c588b3bbbc458c88d30f502a452\n3026908df3400c1a11d9b84664f8595c\n8a9d6ef075d5a0721242c827d7f16c58\n993dfc1874d17acd08b731e9ce099e7\n94f9fa9f8a20f7d040ef1c8b63a628f9\n7fc8b858cad8f5849df6f10c48eb6cee\n808cd961edfc236c11794406b17d66b\n1825f6f71e68da9da36af77e45b32071\n4afe3d1ef68515bdd6a6b5838ef6b356\n5fd2d226435431976f283df3449ca535\n9570ea7fa3a0ef775436c76691cf3d3\n50aa55467c87774b7215a1e3ffbff428\nafaa508214b7515a161d68600952d375\n94c8b873c9214a726e18d8b0769ce75d\naa6f5bed94640d81c20bf61cb7d8cc34\n38d000cadbd439da63be0260dd648a5e\n79ef569979791f136f10b4c199f4a16d\n6da85f0549621b837d379e8940a36f92\n35f83268d4280532dc89a28b5e6678e0\n4acc9de888c0a73dca6910e4922d61aa\n30e8b5402898334ef4b6538438a0b930\n48dbd34c00d1a5ccc9daa743e958a401\n5d9906be39e2ee012f24668c019c448f\n3eb9c5fb2a7ab54d490ad276cd2af3a4\n5bfee410a492af4f65ba78ad9601cf1b\n8fa742589b47b596e8f8c11a24c52ebb\n732ee6a49bd6db06aed393947b9cb125\n21cd62313612a7a168c2f5eb1dd4dfaa\na235f7c4947aab15bf40bda9de89848a\n8e0832b4ee38c9743b8d5c0ebdd194c8\nc8420e434b1680edaf7c7ad2549a1b15\n6d619704ac0bed9827eb00c151c6f711\n6b8c5cd585ef8c67ff2b8acf844d34d2\n6a20911ef197f358efa66822a012535e\n7521f2a08fae96a7666933f2248e8d9\n9214670b7c1e36bc1b1e2ecfb322ccbd\ncd6d000df66f03368ce66f12ba927a2b\nfe6b3c001a86d844d5767a0de8dd037e\n554dbcee2b9ea7301c75d484f9069623\nd64b2ba9f1f35362cffd61677456447e\n663f02b2ed46f991480b0456bf1622f1\n99a16c86225e538d9e72cd13d3c26c66\n7e5dada1bee3e6dfca76c527f185435c\n48015ffd76a443f89f8c3d2002c77ddb\n515f8729b20cb3612412319d111a4961\n48190d05babcbe2c68b95f9576f01a6b\n65e770a8307a9332e68b0e385524ba82\n6cbed10088dfb841e2a5f8edb044130e\nb4827a7b42d68aadbeab82a04eef83b6\n73b369b9808bc2d0f6ba522682be8978\n562fe0ba05c24bdaa52abcb0c06a3598\n6f8dfc86a34548dfb0380c06db6e7e\na2eb6e2ab073dfb2e0340d230bdc7ee7\n8098750b6089a9d8ad3a7d07aac2767\n662ecf4b0cd1f3d61f30b807ae39b61d\n114b563de051057fcda85f6a3e19b0a1\n751342c7107c86f0fa9e9ca2723d9727\nc0cdfbbf3a80105fa8699b6183baa203\nccd49951295cb4cbe139cf2f6f121cad\nf90dab51bec2bcd1a3340564b56a7f70\n4fdcd44fd622400a97fe55e7ac43b9fd\n4959bcf3886dc907108366689dda0d5c\n8c3a4f26d6ea2c864a3bb1a89bb7ce84\n3a0e5dbb68e58cf543fad16a067ce812\na27818db3f288ac8473f10e6caaeca56\n2e28fe9594c48874a6eb1dae0394cf12\nac03fd26e5c499eafbe6ed8d24e16d28\n28a60e0e9adf7eb0a3340564b56a7f70\n57a20ffcc530b8693b48a711df82173e\n4360c9c8a22facffaac6edb721277502\nb239fa34b4cb5a8e9b75b6346baf0c12\n753452a3a8f44bd38b69f185154696a3\n3ef60b4e28c22b3bc7dd78af359f0fc6\ncc8fe2000b1471b2a85f7c85e000fc79\n52d687e4f4c59dd72535b68a1251d8a8\n87afe5137d675efb73418f9a8c25ad1a\n6bb6b27aa687d422d612b1f62c413c3\n56902e76cb4f1039c482eb499cc8fbcd\nc236deaff8c6fb0d29c9a7a92b0a566d\n2dd729a07206d1f5746cec00e236149d\n78abbfe9ab73729f56d13e757b0dc374\nb36ec4a65d474384629bdb3bad305eb4\nb8049c767cb298745dca6305fb9f97ca\n735df13871e3ab4edf6cfab91d65bb91\n5c4c50c0a987f8c2d9789e40093c1324\n37cea3ba8e5a146da6fee8e2140acec9\n126e65c55961e5c166f17d3ad78f5a62\nd712f92ffb883fe6fbe6ed8d24e16d28\nd01321ae63ae0b40ad1f278e1513f3b7\n38e672f611588c0546863a778f871cc\ne658d490aaad69d1746cec00e236149d\n7af9eb2ebacde5422a373b90044f1dbe\n490384776503eea9e2dee6f9fbe318ea\n37d7029722aa0d91904cae5fc41c2d5e\nb3ef15af53eff822423da7f4f4231bf7\n7bc3dbe5a36791cb451e78cdde0ba44f\n115b11a77b8d8c3c110a27d1d78196\nd5b132a3e903e8fc8ad3a7d07aac2767\ne4b0814cb9a34107efb405803527fdbb\nbe745a383ceccfe453fa79783efbc3bf\nd1f76ed6072b9332ee558d9fec5dbe41\n86e2424968b01e241b94efa300287e71\neda8edcd64072b0db784faac204319d9\nd0bb642e810bd2fea6fee8e2140acec9\n45127e6f4fb5cf568173979dc89222c7\n4bcf02d408a42fedc399b0e96597941f\nddfe96c6ec86b8752cbb5ed9636a4451\nb5b0a880ff4e26c1a48e53188865c070\nbb9bc0e6f8ec17bb7b07a77641318a82\n5c52a6b471eb82b64ccf4672ec1e7efc\n3baacc59dc30783a524dd35a546a4c2b\n376079d4c844328ad6eefa796d2f261c\n3a95602170ff3fa89c0f0342c78089af\n45fa737cbfa8a8b69b75b6346baf0c12\n3925bf96c05c49d362e682c9809bff14\n52e2b4be107a9d6495bea7c29e873d16\n2f24021efe2ccfcc2db431502a680805\n433c6c88f1a43ab73ebe788797b18766\ndfdb73c6bb358fec18c4d7ee5b83ed4\n9d472f3426868826c43cf68e273d1539\nf0fe5f6030e999be3b9dbfb07aa21fc\n3e1e1070ed7a0ba67484091a041fe77e\n41ceeeab52fd3ed3a341228b21d337a9\na0f6ec9aede1d9039bad36d0a57d0adf\na23e9e5ace917aa350ff3fe5a0fcba13\nd481cc9e7d6d7d64baf5b49ad7809302\n575cb36c87cd4896c5ae524fbf4f75e1\n730fc3ae87640d952c528d33bca1ac2\n2773ae187d1e9d3d504721639e19f609\n59dd7258a2a554c34671fddd657dec0a\n681f4302a8bd9698f4b6538438a0b930\n3a9de2db9d78546892979c651b40698c\n6b10b9f8b8f38cfadebf8d14d5516c20\n5840d369b3e0e40f7c4ed45ce654123\neb89f3b0af31bf40a97cde0b3996ce62\n63687e533c0b16b6868fb986bc092533\nff14d078e2f0f8c65242f8291aafac22\n5d6a45296fa6c1ff7c21c7b1e8b3e343\nc7cbed6203120aabe9a3ed4e7aae9cca\nfe1081843a08b7a64d8fdc4d7658fe42\n6ea006e5c76576b89753496ba23f2183\nba3b1064eddca7212d19175e7d19b7cb\n9cd5f64caf7077ec3266c035d8afd13b\n12a56b6d02a93c5c711beb49b60c734f\nb53373122c7964c531a0ecc0d5a7b3d5\n5a10fc10de7bd8cb8bd24d13dcc47e64\nba5054bd7c2598ed832fe5f29a662936\nb475d6f1cfb6eee21071105723d4cf63\ne6b9b5d8b55df575cee7fc32eb84f3e9\n2d80c89d4284b4db21f01d01c8c9dec6\n6a152238c2ae02faf7b2f235a439923e\ndf84087fe057385019e48122ff512ea5\n6501972156717723e8b2b8dc0c816caf\n64ac9e029c4c9eb1671565dae7014737\n79bd56e6a44e5bf1a3f600c356573d21\n44f6f1cadf8e788f90a9ce3e4b15521e\ncbc5e6fce716e48ea28e529ba1f4836e\n92b81e84090fdab2f027786820c3fec4\n4e0beb356493c9cbc862eec8232fff1e\n6033c5fa61cb7b79b50d0c6a0c254040\nbfb71bd97fdedc6c48ff063e62e02115\n813f2777195efc4e19fb4103277a6b93\n6f04104e178fb858f7628281ecb18112\nb1d4d7c5aa13b0642a3f8f484e6c5c4f\n3f7c81bc7eab161e19fb4103277a6b93\nc6898b62e82e61a8930422448288ea\n17b77403b80de623f1783a44a88d6274\n789daa82e0366966c862eec8232fff1e\n512905c0211b947edc6f96c9bb9e3ae6\ncf20398c0c3e0359fa2037e5e59ff423\n33dc06a8e0933b1efc385a284336f217\n72d7299f4a0a542c76f992c4dd795e91\n53a1b68bb05d5b1bf51f77a6d7299806\n28ea1d2d2ff08b1b551d2444ac95a3d\n72ba6d6bdc6aeb7d330a170e9ceed373\nfbd234dca7bb201c1bfa4cc8d66175d1\n6714df9bb34178e4f51f77a6d7299806\nf4a36a5ae5a596942d19175e7d19b7cb\n8d3817ad88a809524b9112ce9ce98204\nc05ed12b1bb79ef6d8e8a8a207ee5bd2\n72713f2b894ad2846d16cefc94cf3648\n805bb12faecf99a9bbc0e8a3b6521117\n37a273cab5c24d457e871e09a3769b30\n40d4acc240c458a970aa4d5182ecf167\n377fbf95d0d5e9eb90c9244ba8c4eaae\n5c2b9c31cf63b0b93724abdc4106b950\nc0e3582a0c8273653c4f66791e25960f\n2aa1d5cc784b0b65f51f77a6d7299806\na4ebefeb5cc26f7378a371eb63283bfc\na1a173788669c84befb94709f30ce0d2\n78779361a406474db516c05d046e8e45\nd4a2a7d81cef335cdf6cfab91d65bb91\n331ddb6fd9c333456cbf78e1e89022\n4fe364b3390d3e158afe76b3d612e00b\n43cc05f81df8307a4357a62465045ec4\nf678b1e737eb4d5c738e43095496b061\nb1f85c18b3ccbe3a8bc6f322a9608b07\n2dd12e29d36c2b5519fb4103277a6b93\n609746ebe63abc2c2f38c0d2792fb5e\neff6231acedae01c17103f9c0716a636\n26da81dbdf7784dddb984b8f0550fcd4\n9905ba0488b0471dbfb0f09ba9f2d99\n43f15ce32c7c97ef19cb07ecb5b4102\nd0d18af5959e613ed3040d716596ad68\nba40e15e28eeaabb9fad3726e97eca06\n37a0959115e6fb4ce7c7920f6a65a54d\n751667777ff0926ab03957cf6f6ea666\n720bc3f0677a75fb2f134420f7b0d7e6\n637b36b2e5db7f513f7e27638e63d848\n3b57aac4b7f4b9f52d19175e7d19b7cb\ncfc758bfe8a1cd478c159f8d5e761b17\nd0b06607653b1744a8ff3e07cfca4801\n453e8c067c8cb5d8f51f77a6d7299806\n3aa228edd648d1e1f51f77a6d7299806\n32c2fe641cc95e2d3ed2a8b3ea354e3b\n64e440b5350da101512d71be7dbf2d60\nf5fdaff0ac02f106e8f8c11a24c52ebb\n2a1f13b41192e80bf51fa0238791f5dc\na52e8bd8b570f268f19146fa01c25917\n10991b3b01cc6cc99982a4d6320875e\n4446234d12158c42b161f36d4e309050\n8aa597e8f5498bb0165de6c381540e39\ned3e73a2609bf304377b9297f3055210\nd5cadd520263753b65ae658fdfdd758d\n33ce7f85e65320ba9a404da609e2789f\nc8860d4563be0f34f2b7580a739cd4d5\nf550b5413eb040c29829306a513f9466\n5fe9ae9eb1ece960c423490470c47d79\n96a19b41f440040426f59f4497a464fc\nfb71fc8021c89cf342d8a8c5af8997e8\n4c8cb8be444fd405bed1bd9593e318c\n8f54c32d7097b753542dfd131ca455a\n3dac0fd995c747ab336e8bf2357c029a\n38e904bee502bd31e8b2b8dc0c816caf\nff3ca63c75482c31f51f77a6d7299806\n5f256dd64efba74a4316d3320fdfa899\n80e45b0a5fc1d3ed68bbb8e471856979\n58bd152fb816ad2f7f91c3974257b780\nc9913221819588b519fb4103277a6b93\n97df0e7773e51feb331fc18393f04d2a\n733b580501f3e25c21ede3e0ecf73091\n2f4fe1db48f0cac1db573653825dd010\na232eec747955695609e2d916fa0da27\nc56dcaf6b862a6329158e0f216b27548\n74d4b9b13cd160e6f51f77a6d7299806\n8757370fa33bc4e9419786e9c37fabbe\n553c6c2a186db82597976c675750537\n36d314f3b118caa9bb557fc9202b7772\n9aecd48a3af10deeee83c0324834f3fa\n5202edffd4882c252192179b64411b43\n47f0e1452ea20e4856c07129c79effea\na543f7e8114b19cd5397d07b571cbcb\n277fb4da6bea894c19fb4103277a6b93\n86a94d95c2aadcff1a1584303f0b5ee9\nd75d1c46cff08f4767c8e42cd3ac65ef\n7220dcc0f3f95da3a84d309c7a35a478\n9e08476e458e21519fb4103277a6b93\ne287403fb2f4234560b08e5f4e1f1a8f\n1c2caacac14dfa0019fb4103277a6b93\ne0a19f7c41d7489211fc2b865c2a185b\nd1c2afb3c53dc7c8c563fcc2752ece39\naac5882aff90763affa93170c5cc3d58\n8af939d95f201d17283b00891f680579\n64eb6d8212acb69fa094848ea4d06501\n79fd9633635ab7f6490ad276cd2af3a4\nefb0e98337c0554960257b24d454e22f\n3bb2201ba3b8709523f4da4464aa0c0b\nb69ce6bf8156deb155252a6eccfc24f4\n276a4e184b9d71c4d838ae16242881dc\n42db4f765f4e6be414038d588fd1342f\n181b65afaeca2ee1a6536c847a708e24\n52f0514f5c38bc96f51f77a6d7299806\n77105ec0251d92a8ba13aa51cc141639\n38dd3fee84698e5242ecda58458cd17\n100b18376b885f206ae9ad7e32c4139d\nf31f8722de9008c8c5aaa7f1cfa788b7\na9e72050a2964ba31030665054ebb2a9\nc88eb06478809180f7628281ecb18112\n7e433512ef8beb51b17743c18fb63dc\nb1f5b155f8e080c765ae658fdfdd758d\na86c5179fc3f7ae114038d588fd1342f\n22b48b577aab6201bb99d7af794753a2\ncf04f5b16aba20e3e3849910c5019154\n7139a30ff80da3a6b12dfa50fc9e07e6\nb11640431506c15489452a0032ea575\nf1fcbd856669e000118128b8b252e07b\n7ec876482b8d80ce5a8ae8f7c307d01c\n1079635b3da12a812cee4bf5d0f11ffe\n3427a6029f253860450621b513a975bb\n97f1121561e481a3a1f1563b05df75c6\n40a32b11861df98133ec62ad9f83dbff\nd6e5a8e9e0d5dfedb0957d845ac33749\n99867a25638b6809b91b871e750ca615\n854f3cc942581aea5af597c14b093f6\nef45086ec881cb657288e3849fb636ff\n4fd654bdc7fa4658b0957d845ac33749\nea62254f0a5650579a8ef44e1d2c5b75\n31d026a65b64c4d5f529761e946287b2\n11355c7f7ffa3c09737d107bffc3cd98\n6169073a194742c5a7de7deb16b90a60\na374da8227eca67b89014675a548cbb\n2c2fbe0622220e7cf51f77a6d7299806\n971a98d242991e2222ed3259ee7e608a\na7ae914aba9eb59d84498bc295cd5a4a\n661fcd8f87d948f2fff16555386d173d\n8e21f7a88cecf4ab5ef2246d39b30aec\n3b606ca14c5f968319fb4103277a6b93\n601cddae7aca083a2db431502a680805\ne2ed8de5542c5fcd215a29c5523c5fad\nf54c7cbbd49ec8eb429c1439cde9f6d2\n11040f463a3895019fb4103277a6b93\n5d5ea6ab578db7ad331fc18393f04d2a\n831ca4306245810435836c728d324152\n4d3bf8ef55b4e4fcdb66736e6592e424\n1dc63eb0c6b1102f5369e32fb818f337\n85f4e9037425401a191c3762b497eca9\n55bc1f325928f28c738dd0d3509c7e47\naa0ad3538d0d7b3be6fe3612af521500\n86a25532f255728fdaeb838d0771f3b5\n4b38f041ed60b99f7fe17e97940646fa\n402e47d9e3f825dcb9d7c2fc41e80228\ncadf69f5353039e8593ebeeedbff73b\n187222bc1f81d57b781d9dcb8ecbccc\ne605d3ea3be01ac3b11a97ee9284a563\n72827d33aa4e3f54d8ce2b7ddb5bbcea\n55b00797abf243c3cce5160f0c502ac3\n71656875081adda78b17d6d1965c2fb6\n5a460cb21fb55f639f73340130af944\n816d1c517ef6bf7890a9ce3e4b15521e\n331e7c7897b8243694887ea54f3cfb87\ncc8066a5107a2bf5926f2c1927eee8ee\n451458fe90bd0f4144f23566597ec464\n561d50862a2cb4aabc19762eaa7ba40f\nb6fcfd4f7af69e1ce8f8c11a24c52ebb\nc54aa12a3d8c34e2efacb264ebf1ec75\nef8b9243c75bdc93347805f93d32915b\n7df2443e976658b7cdfc3ede082b8a07\n2031dca3aaeff940f7628281ecb18112\n71e139bf13970c94492d9da2668ec34c\n71b1134533fb33f489452a0032ea575\n9f212a5127b4544bbe3ca6e34dba44de\n2364d6cbee1425fdc3bd24f986301745\n6a02133392afc96b40ef1c8b63a628f9\nfe53dcce9a30c5b5348fedb5a291187e\n1b5ab441fb8e3b1b450621b513a975bb\nc405457198f59d86492d9da2668ec34c\n535289ef7d9bdba8a69bcaf4198ba9da\n53ea833512f2235319fb4103277a6b93\nd645bf9037e7dabda341228b21d337a9\n8d9061d863268349db224de2961e777c\nbaee1a3918353466d1d10c27b779ddcc\n6ad7e3a8e6f3ed1dd068cfb43a81fc7\n320261e5f3835f6381f667e2a25e0619\n90eea7c7aa913fac57b8f616df7adf9a\nd0782d2afef19adf4733824eae5cd9ae\ne67d503940c1d95b73e5f839658fc536\n8c2e0684a98bd4f82553cc33364504d5\n38444677513af4e7bc41009043d88b0\nf31a13e903da7e865e61ef8e2af97499\n9ca1c0357c3033488cc413950b617e8f\na50887c625042b48c862eec8232fff1e\nc53054060b5fb91beb0fe7d6b5545a1a\nbd5eb0bfad19c8d9cd431573238602d\nf5643e3b42fe5144c9f41f411b2bb452\nf1645567130e99a878268642d8df40d1\n24082b0254dd180c490ad276cd2af3a4\n45e2cdf1708680822165c54dcecaacb4\n10de9af4e91682851e5f7bff98fb8d02\nced5a7469c77e651fff16555386d173d\nd85b661f2c9345f819fb4103277a6b93\n356fc758685e9054347185e772ead5bd\n9e1b32f73908cae7e8f8c11a24c52ebb\n779e4f9f044c71612f95e2a1e9997b85\nc4f9249def12870a2b3e9b6eb52d35df\nb1908805f05c6f47f51f77a6d7299806\n9058e82b6cd496891e481c46590219a6\n4e222d6b128a7af7b8fa4cb65e077db1\n809cd21e86d7caac3162de0102da9582\n3116d8714420cef4ba33c5b911977a18\n4c3f655507cc6aecdbe9c90af547c85d\ne23400a634c81fec3cc5c2b17dc81196\n32788564558e513f7628281ecb18112\n1c5d66f3e7352cbf310af74324aae27f\nb5350feacacdec9e1a4c9a8c5e7ae925\n7d0e6a5c10d2f97c62e682c9809bff14\ne00291d775c572f5e8f8c11a24c52ebb\n30083f20e81ba69b593ebeeedbff73b\n98a1d709dc51ba87870894bef54d428\n934ad9821e964219c3cf9ae716575390\n420ca6eac51267538a2d6a427829a3\n71b01320c8e9dd60f7628281ecb18112\n8ecb9191ec41785b351d9ca36f76b95\ncc03a89a98cd2660c423490470c47d79\n6a227aa2e1fb8ecf51f77a6d7299806\nfcc996c2c8ff394194887ea54f3cfb87\na02d2ef9789836981bb088904f7cb154\nbe5df38dc7877c13c681404257d94ad9\n72bc27a22e5f516e8aee1b6cfa0c3234\n4e0dcb9beee7bd3f3a11565e5be9cf53\na9cc6920422b9d9c2af8b1d491b7ebc\n7f3562432f02b8a897d3ea932731fd42\nd31ab2866270fb1c19fb4103277a6b93\n3f4f6f64f5ae57a14038d588fd1342f\nae3b4195dfa9779f89e49c5729fd5d6c\nd15543efce9acacc8687ff9b0b4e4ac\nde3e16703bf6581df050758b903e6054\n3021054d61c4862bf29666f384be6c43\nd571022446bdf81ee83221ad0d21775\n2ca81da56f941624191c3762b497eca9\n3837e94954187dbf93b0969ba78346b3\n6d199c744b17d85953735b417976bbf5\n73f16e230ac102536e07666ce67ff5a\n5bec8011c4042baf14038d588fd1342f\nea77c800bba6566aaf7c7ad2549a1b15\n5b1744a03be753cf3ccbceb68fb352fd\n6e9b9e6dbef7d1d219fb4103277a6b93\n7ff2f20512e7ce8e572f8e1c1caad99e\n87c742a186ef731b464bb3035358ab7a\n19dbb6cbd039caf0a419f44cba56de45\n4c9d9b37b13b0dc720211b71e9c4c8b0\nf2dae367e56200a7d9b53420a5458c53\n2fc2b897b6b131c4dc75a59e280f3bf8\n3730f9cc29006f4b65ba78ad9601cf1b\n7e2b07c0ebc5781a297936c81e7f6629\n3f04a08d840c0a9c18b14db3b83de9ff\nfc7e2126419f5a4cb84959963148f2a2\n59fa70f195fd4ac6ae8c9d3b8c4b9bc3\ncd4fa15a13d7448a14038d588fd1342f\n52469c47362e41e719fb4103277a6b93\nc70f8a49f26a012f876b399a99a15c0f\n90f8e6e1694039c0142c8d1dd30ee99a\nfbf085824e25d7c440ef1c8b63a628f9\nd7d709cd13cdca931afedc87fe387fe\n53a442e47743fa4f457ba044c28858b1\nd4e974b1d57693ab65ae658fdfdd758d\nfd1a87a399c1c82d492d9da2668ec34c\n31dad882e67008adab1b53c63e6e87b3\n3d0b161ef3c026a28a514cac7cb18507\n4ecb13c40d55bc24fbcb0345af819bcb\ne9a16aa9d2ffdbe174cc0d9ee0d1e8c8\ne76f7d88022a0bf91b17743c18fb63dc\n6df81788b1cdd1c3ab93f6188b226527\n3ebb8f29a7c44776f51f77a6d7299806\nfbee8c9e5b8c0c19492d9da2668ec34c\nd56da491d5dabacd4453212030cbb3c9\n32f918efaa64a4d9c423490470c47d79\n11e55ca087c74082feec1f13d2353f3\nc4d1ccacb82d854b5a395b344d6773ac\nea918174759a2079e83221ad0d21775\nd0d786244fc2d7a9ecf03af5e7a1277b\n533e0a52acd257bef27383fc5a5a711c\n79be636f7f6b66724fde46457697d80\n6c16024ad8f16d6c83c7ca617c7f7461\n1b3c286bce219ddb7135fc51795b4038\n7ee5785d8695cf0ee7c7920f6a65a54d\n64067f7029087ee07eaeab1f0c9120b7\n47d13a704da37b588fda227abcbd8611\na16c172406430b6af7628281ecb18112\n4848b62ac4a996b3f51f77a6d7299806\n537924063294eb5f46ed025f8f85e067\ndcbb15dad2001a0b8a4c763d71484708\n1ab4c6ef68073113cf004563556ddb36\n51375e5aaac17a8ef7628281ecb18112\n1d9bc60209572861473f10e6caaeca56\nbdbf18aefa5b980585b479b317175b55\n9027cd82cdc7da4d2541c4d6fdd1e35f\nafbd7d1e68be93ac35836c728d324152\n61de75e888e8727486debb0a33c851f8\naef0600be3f8f384f51f77a6d7299806\n3a51a83963c167c422e8a95d8ef092f\n6f37fb57f3da696265ba78ad9601cf1b\n5f4af72ed8cd633a14038d588fd1342f\n5c83457abb14f95768c2f5eb1dd4dfaa\nc523e86242af4b4ecf6d196856691e1b\n7824cba870f915ba2922dc9c4df31134\nd92f4a4f2faa545ed08f729a736c90d6\ncfbd835002da52be8f8c11a24c52ebb\n389db7fba32b71182165c54dcecaacb4\nbe67f51c3df7dd165b9ac5a4b39649c\n4f467dcef4a710a5911016bc0ad99a16\n6c36a5b107e83d331191025061735ea3\nda292ce4ccdcfb2c842c47c8032438a1\nf8b90f63fa9ed154e759ea6e37e5585\ne0b432f43a70aa4dc71dfa81bbc5b8ef\nc1841ecc1302f45be798c4323a137f09\n980feda55fe02c5868e9405ab8968607\n2d08a64e4a257e007135fc51795b4038\n7eb566a254731d8871a782a4379556c7\n89d510c94145f0e0f7628281ecb18112\n501b15f5ff2152e5f7628281ecb18112\n885bc048615523273eec26c23f5bc80b\n94bac9505cc503567085b4353236aad\ne967c4817872b637de03ab2a27ba7531\na8f21e581e687c0fa329355bc8cbc0b5\n4c5ae0ca12a5e8b3490ad276cd2af3a4\n9d6fdcf7fd47fb5af22166a43d725fc9\nae6770f159b2f7c868c51305d76b1f8\n3311f1cf612be98290a9ce3e4b15521e\nd9dc32f36e03d9f5ea65a95e759e03d9\n6367d64115d665ef51f77a6d7299806\n6fc581beb03eb73349c9c494c2fb14ce\n58a8f29ec056a19f71a782a4379556c7\ne922bbf8088552badd7092ed47061a36\nccf29f02bfc1ba51a9ebe4a5a40bc728\n116bcb3b43de74b9df9054bbcf5c6adc\nc24b79602fccaf603379c738ca193530\n35f94bf244a7fdc5f51f77a6d7299806\n55e4b862b56e873eb36dcc661f3905d\n78d3258e4664daa9e8f8c11a24c52ebb\na00f4f424b6b4c4c19fb4103277a6b93\n7b17a70aef82c51cb8fa4cb65e077db1\n87baf0c4bd11ebe7f771b7c5ceefa9be\n54237961055ef73782db9fca4b68095\n4607280c3a4286b7319c7c751f273141\n8844e3830bbc5610d5cba62773b8025b\n376b0c463a2bb625c036371d3ae886e1\ne507b4d0aedf8451504721639e19f609\n9a5b54e835c762e4f51f77a6d7299806\n8f248770aa0b4d41e6fe3612af521500\n70be8ecf5200fddd818fffcf4a59bbc9\n694d9c2e9e769ffe83221ad0d21775\nbccedf688d8e5536eaf288f952624966\n60637687ad5682ef2b93a65c5f642e3a\n76767a15f8de108975907ca70d2973a4\ne64562ae2925d5f3f58087d377226538\n7c467486ccea38ed9c3a7877712317b8\nc5d880efc887f6f4f9111ef49c078dbe\n7948f2715d32c813fd60059ad8523f1a\n1c6eb96eab5e75b67b79156a61ad4c01\n7508cbbffe5f2f95f51f77a6d7299806\n37645c4e5ddb142e89955e67129be104\n7fee792f0dc5d74cf2cf6a9bef44d625\n9a3a80065f75e33d822e11aea23332c0\n4b904e1d68d09dd3e15e36ac023c5182\n30526709beea1350c862eec8232fff1e\nf083f6f7e9770fb7b161f36d4e309050\n5194d56c118786fa1a4e0f13d375972f\n5158aa43b78b81a0f7628281ecb18112\nfacd3e432232c27f245ac1812a4e4d0c\n6498a5053d12addb91a2a5174703986b\nf2a4d96e77d1c92a3d6cc735e3493c99\na1ef57bc2563ec37dcadf30d9ccdd100\n77e84b5e6526be75490ad276cd2af3a4\ndfa7aa13ee696833593ebeeedbff73b\n796903c53c6de2025213cec267286d18\nf9c61b40d4f49158ca998f0f87d0c84\n2c6815654a9d4c2aa3f600c356573d21\nb4b65ad3117199a2e8b2b8dc0c816caf\n37e5a1f7f0409a3b81d7f282a3dff363\n689dce303ca3781c19fb4103277a6b93\n3e72bf47e31aa669f4b6538438a0b930\n59529dfd60b211a45277f07057e8ce87\n637606c1ca1ecd81b502160362bf1664\n2e8748c612c5d3519fb4103277a6b93\n98b003470034007f51f77a6d7299806\n196b9e195ccd4a0de03ab2a27ba7531\nb167632dc5c6c72b19fb4103277a6b93\ne821fb5eb1e21368c341afa383659322\n3bbcd9e945c6ceb8d3c29b715a9f3afe\nc375f006c3384e83c71d7f4874a478cb\n286c07abeb67b83bf7248d9dbed7a7b8\necb43e4b0fc96935664b3b9b23ddfcbc\nb5706706df77157627d4fc401a34f3de\n8a8c67e553f1c85c1829bffea9d18abb\nadcc6534d6db1ff9dff990aa66c50fe0\n5d8736041ded1ac7de03ab2a27ba7531\nd6edce467efdc48eba18ade30e563d37\n33e28d560bf1bbcc32db3218111111ed\n11dac7c4d7e4b32af9aec59741c69cf7\nd9061907b7b411dbe3db80a3cacc6e3\n756487465c12a5332165c54dcecaacb4\n24c0fc01144790be305e886266e302e1\n9e15b5ae461fe0318fcdb0fca07ec8af\n52afab7f974e7bdbac1ffe34fecf39b2\nc40ea8f03ae6407462e682c9809bff14\n25871aa50531fbfc741e88434245c899\n8e2c39986badb61e6fe3612af521500\n42f77dcefe75f7eb19fb4103277a6b93\nd7db1353551d341f149c35efde9de588\n39f5eecbfb2470846666a748bda83f67\n37475326277845dc1fefdc190019db13\n5cf26a5558580c8c75a82b88fe6e733f\ne5f381dd81cca6a36a348179d243c2c5\n352aae8597fc6ac679c251b4a7838829\n3789c5b85f49b21ef7628281ecb18112\n27efa956ccd86120464bf8a1dbad4432\n268304221a5717124a05fa063da00291\n2ba108b72aa4995814513156cf2b8d0d\n632bc741220bd52e51c4deb11af7079e\n583deb9e5cf939a9daeb838d0771f3b5\n267dcb267138fc92c242632b2a8c3129\n621c62aa667c4d3cfe2fba8e5d6db330\n95e2f1fb6be241b4742728b30848ed03\n3187a69dae9fd8dced403132b02528bd\n6b94ccd432d37555fc1390934d948e09\nb6985891e45b998e7181375a1be1d1c9\n223d0330466ac6bff7628281ecb18112\n3e80bf14b5e02aedeabde033450b7299\n6ed95ed3e89e09ac191c3762b497eca9\n9e3dba0e6fd3408bf382e154aede1b6a\nce2acc9d7aea91a0988fec2229ccf13f\nda160f272c6d77f571a782a4379556c7\n3cff2db42b3ba901e83221ad0d21775\n38abcd9d3157f7fe71a782a4379556c7\nf6f3c3f97b615a19fff16555386d173d\n58b8bc3981302103b78c56df3d6a2934\n12d7ca3c06faaadf17b431cae0dd70ed\n2c4719f6aa7b2c8a5a9f35e635b7e48b\nd8edf163d5f87b055369e32fb818f337\nb856a62e23ef65324b87db09ac4cfa73\nb6ff694af011b45f4f52551bb6d0494\n4f79d43b70f5bca3d082d95e9bd50b49\n1459c329e2123d4fe5b03ab845ae95c\n58ad41e336942bf3c5243a0ab191990d\n619d9f32db0780187c34f3963ae12156\n66e204998b6c4f06ffe5cbaf6252d67f\n741bf2e8b46b3082720f4a96fb7a3b3e\nbb9027dded04f7da2b3e9b6eb52d35df\n360a12c8666f5f764c6ca0d259b5e0f5\na27a04ccbe8d5c90b91fe758ff985f40\na0421aff56cad16790a9ce3e4b15521e\n3a885865c614a5a35510d59f3ab1ed64\n60d4a780abba84d20c5de2052b8e2de\n2137a8fcee12e72d19fb4103277a6b93\n41b90d1977ef7672b9b8f177284f45fc\nf1188bef2980d2c985b479b317175b55\n5043512b70a157835a15b6547f08c8fe\n92c068abecb15e1adcfd6ca2b952d624\n562b11f6f1fe56ce586a8827cb5b82bf\n8f268673d08240d34eb6dda9557ab0ce\n31fc10f348cdd2f77f754cef9da1323a\n665fc6411855306530221b1717636e3c\n11dba3a8d7b7210f5ff61a3a2a0e2484\n4e1c6dd1146ba848f71f1345a68ed387\na2eaec61c28670a459b42406a4cdc4b3\n6050ef2e6ac4ffae490ad276cd2af3a4\nbb13760fd1e2dc182d19175e7d19b7cb\ned3cc4a95e18b3fea19b492f7b035eac\n6986aa6ac96abebc71a782a4379556c7\nd14d1da1e682a7cfaac8336231c53cd1\n521f0ff0b1d7828337b2bb75885cfc44\nc790496caf5f2904f14c803eab703899\n1196ffab55e431e11b17743c18fb63dc\n2e37697d32d085415634c21965ee6bab\ne40d5fac8951692e3849910c5019154\ncb5f7944ec02defcc6a2b7fc00a47507\nd7e5de817d603fefa123ce0dff5bf4e6\n10c08a28cae054e53a762233fffc49ea\nc7a87dff6ab53f3b7490c34ba5d2779\ndab5b7b9df65d2e2cf0bcb121cf32b53\n8590bac753fbcccb203a669367e5b2a\n12c2b7080b07146a9d4d5dcd2cc33826\n818c483496ce96745eea3e3d89293379\nd93133f1f5be7da1191c3762b497eca9\n6e5c0ca5ee70c88b77dbab4c80b965e5\n2fa970b5c40fbfb95117ae083a7e54ea\n557542994c02cffce83221ad0d21775\n3fa2fccd96f3e5b5347185e772ead5bd\nf2934658407472a92ce025aebfea84a4\n8f13ac6499dfcc83f381af8194aa4242\n3b5eb8c85130476a38dc42f802aebe31\n6fd5a9839c5caa52e8f8c11a24c52ebb\n87f8fc2fdc88e4ca1152b86a40777b4c\n42836979b217e0535836c728d324152\n3fde6688ea2022cde0f6ee1aa6b96429\nfc0c6ce55282cb4dc8687ff9b0b4e4ac\n94464e51e6f3be07f9443c9263f2354b\n8f217a409c5407ade6fe3612af521500\n8e853d5bb145c11486c701087a194026\n67b082d174af9ab06acc27496f96b513\n26f798f908ef2908c7660a81296c2300\nff9b59e29b547dd504721639e19f609\n769f2cb98735158a2334de46509d60b\n70cfdbf8d22c8176f51f77a6d7299806\n5420d4699cf0125fd08f8c5dee475682\nb0cef14f184c10e14af957103f4767ac\nd581539aa6d5c2ec7709fbdff3d15bf9\n37044d4f5fbcbe9bae536f42ef59cec5\n4f81153b0a3d2fb25f5359f3b8f96a06\n6d83067056915f4dd2f15044a9418e0d\na6f280a490010a1d593ebeeedbff73b\n9c68011042990da3abe36bab1da1fa35\n4f243d655c40702ec772d43f7a27a1e\n19d7db03d81663394733824eae5cd9ae\necad3bef91aa032b6c1d9538813ca7b2\n6131ecb5a6fc9329f51f77a6d7299806\nc69069021b390de513232b7b9d3f985\nf8bf45e20bec7cbc9cf3f05539f5c4e3\n3aec502173e565d9f7628281ecb18112\nb58b8a4646d14b7c202339ec5396045d\nebaf425ea2c92f73a3bafec3b56382db\n341ecb71545d84835ecd29875b6f0d44\ne026adae39724b4ff5f913108da5d147\nfcd8163b26250f499fe49e672436bc45\n86fda548f0fde39328f80188b7c24dcb\n8999368504d4374ce4e346ee2650d150\nf2f0f205af792d3d40332412c5d013fb\nd607e86b83f628faeaf288f952624966\n12f4d8c20ef311d988dcbe86402c7c15\n8ce6f67b8683c0126db434563c7f5ea3\n50c446295496eca73542594e05cedc89\n2745c7d9f2027d605a9f35e635b7e48b\n4f4b6167ef11ae4e8f8c11a24c52ebb\nc1e03281b9f179c7620365f6656fe3\n36bfb3be47fd957e543087eec55f714\n490797c10b8cdfcdf4b6538438a0b930\n326a0c5116e410cfe6c1a071a4e8216c\n36c4421ff44218775510d59f3ab1ed64\n9c1ee97e493fa79ce83221ad0d21775\n2fa4a8a5848f9223a10fbdfc2fa57509\ne7ae6edc3fc6c92ac423490470c47d79\na1575aa70fbaab0fc05575120a46cd3b\nec637164befa6a016bba96a850a0781f\nd5d4dfb9e6901b66a3f22b4b00de6dfb\n9910380fedce395e80165d5b901b6e64\nacbc30795b9826ec283b00891f680579\n2b0f0f530011353d15eb60d655e596e9\n6d7a7f4660e49fd130cbbda41991e4d0\n209994649e7fdf052ff84f70e18e9c53\nccea874d869ff9a579368d1198f406e7\na6afbf5a5eaafec74ccf4672ec1e7efc\neb1d92be1e6bd84c4d9a43d557cf49de\n336e92c7c570250251c4deb11af7079e\n24c0e6a8b10abb77df2b21995cbbbc4f\nf66ea5e07a8ad9eb283b00891f680579\n6d866b3d22082b89191c3762b497eca9\ne9f36f74e22ca0897298e452825d1f0c\n56e51afd9d5c5fa38b7a92edf72424a7\n609cfbe0dd76c64042e1bb4fe264125f\nfca55be264355b1ac30ba10ebbf8ea21\n6893a0aac52e31a3578fec929fed235d\n3f4e88498f4e54993f7e27638e63d848\nf351b1725b288d8847df6165146d5bbd\n2e62d5829f60bd7758df8eeaf3dad1c\nd892a0fddeb963bdff4bb1e34fb13b70\n5e4552935979a7a1c25c8c68d88e274e\n5fc3bee56e8ceae26fa2cfca412075ea\n7ec2388fdc271fc4ef22b31268b1b7ab\n21e5fb7e2de735f490ad276cd2af3a4\n411291d56a967d9fe8b2b8dc0c816caf\nc109b45b290d4cacb161f36d4e309050\nd868b5e696c362b9ae23680cee12f145\n801fe0b3a0e555a937b2bb75885cfc44\n91bd85c70bf89da2a8737fcf23389014\nc3a3d9cdaf29cf6597c8d78b9aede742\n611a76dca411bf089579c5df0e7fa96\n3a16d7535d87d441d772e458a8f80cd2\nb09e3b329eb11c7dae659483f300cdd5\na8827a6013e06261e27790b0ec8671f7\nbbf89164385610221587835cde687661\n1063d4fcd366de4060e37b3f76995f8b\ne454cdb43a7118678162dd776d80e71f\n411a1a4ac8ade7da76e9713f57a5fcb6\n470ee88d9cabc6028be5ba60d0b948a6\n2d808b6451253b7e7c7920f6a65a54d\na896856650a288c0c05575120a46cd3b\ne93d141a3dd25b46219e03e23fb59d78\n468b7e16a29ce746bd08524bcb66a009\n635906aade1c775df6cfab91d65bb91\n82d8391c62e197161282d4d9178caa92\nd75a219d343d2469e22abcbea1db98d0\ne28a52d8864870b222ed3259ee7e608a\n4f1f4c4d1b2f6ac3cf004563556ddb36\ncd6a8020b69455dbb161f36d4e309050\n51ec0bdeb8bd9b8d60eb699207aa149d\n470d626518cc53a2ff085529822a7226\n66de742ac6ee931390a9ce3e4b15521e\n247353514479969ce6fe3612af521500\nd75b618231bf0815492a611633bf8558\n56ab99b69cbc1bb50d55c58aabe6e7b\n9c8685c65403dfba2f134420f7b0d7e6\n55e6d1251fc63e1f71a782a4379556c7\n2ab2ec342a3b2a45c242632b2a8c3129\nab4fd3bdd8c1dede578d107c71db28ac\n3ab838f55e56426b35836c728d324152\n3a3ddc0c5875bae64316d3320fdfa899\nc5479437882e03eb282d0900e186958f\n2a9cac5daa8e99cbd9b53420a5458c53\n92373022868b812fe9aa238b4bc8322e\n9d961de6d462a7619fb4103277a6b93\n7a427785ad85f0c771c3cf047830ec1f\na07ec767c0a395e53cc720af04c21ce8\n3dd8c11bc608441f1b17743c18fb63dc\n547ad86927566ed0f9111ef49c078dbe\n274189e25f44397f51f77a6d7299806\n1842797b090ce2ecebc1a7ae7c4c250d\n9e36380dfd1364f6d01673c7c57450c9\n8a26820faeecd40d4bf49568516d5f0e\na6a7b00de9ccce0816a5604496f9ff11\n975d6db745442a755634c21965ee6bab\n38a2b3491e8e8a0d490ad276cd2af3a4\n6124a2bebfa255719fb4103277a6b93\n2c2a5f5a8931fa0822f0b32ec619eee6\nf1563f3906ae14dd32b8e0971fc6a65a\n5875ca8510373873f51f77a6d7299806\na1cbd161f91e80eb450e3da30d6676cd\n25c61fb5c237767919fb4103277a6b93\n73d534b85a1416eefba3e6a55f280fd\ne8c8534a16d600ba20685b5a7e34b501\nb8c678c49e40ee5307776da88d1350f\n395868f297f01d2d492d9da2668ec34c\n9bda786a525b1ef93a11565e5be9cf53\n4918512f624696278b424343280aeccb\nffd3064cff5757695ecd29875b6f0d44\n420709f63a0b15ca35836c728d324152\ne193b0d75fa674142b3e9b6eb52d35df\nbfe64c93bf5c3858c4f202fffc87396\nde351bfde19253af54a7a6750196c608\nb0a0f58be9f5dc0d3825a5bc524f67c9\n99f02614707ce072e8f8c11a24c52ebb\nfd5492b732f41dc3f7628281ecb18112\n6cb6373befd7e1a7aa918b099faddaba\nf4e5698718f3d4494311a07b696e63e3\n8fed5abf598c5d113379c738ca193530\n17f9eb6c0d818d45d7b20fded0142d7a\nebaffb5ce608e7158d09bc92d0fc6d3a\n9ddbf01abee716b39b0530265e62c9b7\nb1cbca9a2646b6f1bf899e941ea0fe55\n8f4750616cc16a3f84633b41c8a09fa0\n93e72cd3140b32513b5ed5cb2d36de1e\nb971b6c16dded4fd44db5bc086b2ea47\ne102ff4df6f28b6cdb400c09abe26220\nf0b50b64918ef41b990561fc34164364\n374e76e8b8357e5f796d422781cbc933\n305589c1e37f32b821bdbc0445d9f748\n71aa917674beaa2926d044baef0e5df2\n90a15feb4f77c63e5e73882ba2654055\n34108b791e6bc4ec1bb7158ebaf7e1c8\n972d675d3ce3555d492d9da2668ec34c\n7bdc0aaca74cca86593ebeeedbff73b\na5d41f647e7ae9deeaf288f952624966\n108238b535eb293cd79b19c7c4f0e293\nc7c7079b7555bf075e994da5ba753c34\n4f136e2a90fc8ff63ac4c571779c5fb1\n8a2c1a7b282b9bf528ea9c4c28e5ce40\nac84a2eff5e6a64347598b39fd1f6465\n89208a619341d9fdb8c516ed5c4ce32\n70711d5a1aead05b90a9ce3e4b15521e\n38436cce91dfe9a340b2974a4bd47901\n4199756380f14898e8f8c11a24c52ebb\n908fd690e253f651f1783a44a88d6274\n9061324684c39682c2c449c0c0579ec3\nb6a0afcc2ad2db2b490ad276cd2af3a4\n2fca00b377269eebdb039d8689a74349\n63e184952df0f3698f5bccb3529a48d\n23218bd682d522d19fb4103277a6b93\nbec151e32bbc7e9b28c54e8f8953f499\nc22ce6ebc2b5bc9b59a44e6453790000\n226f096dbce49857bdfa5e0753fa3240\nb4c73f4772efcf69742728b30848ed03\nd57bbc72d1b2670e4209d14d674fb332\nf239fa77c7b8aa2e81f667e2a25e0619\nc9b0828029f0405c473f10e6caaeca56\nc47e364fbc29803b2c0eb4a518e123ac\n57b4898f5b94a5a89d297e74104d3ac3\n10a1783f635b3fc181dff5c2e57ad46e\n4003f4046a3a5ed9297936c81e7f6629\neb29a065b495dffc85528d560ddea455\nc5c4e6110fbbf5d3d83578ca09f86027\nf35645e0b1141804a57b3bec78e5d1b3\nff3581996365bdddc3bd24f986301745\nbb8fbbbb9925a376d1dcc55e36186e4e\na45477c29f71d4f37597e1f94410131a\n3fabddc7c0fa27f92bdc75f1ee88d8e0\nbd500b346c427b31f7628281ecb18112\n1c3f1a9cea91359c4c3e19c2c67c262f\ne0a473eb557c424320768660cf080d12\nc8aca0182d3e48add93768e7b9b1eabf\na203bbe3c9c1c676c3bd24f986301745\n1be38f2624022098f71e06115e9c3b3e\n2a643eaf143a779f7eeca6709b6a824e\n99e2f8ae1bef62dcb74c46f4848028ad\nbab30539155767a59f422d8258cbffab\n32a9329c11b5c35d4b3c42e318f3affc\n75d3fc4649a63ac13efeda73d60343e4\na66d78cbf3603e8bba9df3ea0397b1a6\n5f06664b4eb0af4c352fc7e973ba7787\n24b5aa5ca592ca5764945fb936667f89\n20a128166fc9ac939240a35c2a5f105d\n602ada3b41238c77b87028a4b477349f\n882f30dfcc94ccb5ee57043a0b4866cc\n78bb9f39d4251624a502e035aafd3af8\nd6ac690c293a492d2d2a5d4c4022b4c6\n106e9487a1d47ff1a09cb462b3e723e2\n6ffbc6f14a7257caffa41024c63fa9db\nd8b189ddc0ca5b8c681404257d94ad9\ncc665438c4f7baab137d9700e13a503f\n8e4269ac16e13433d701c68e1045b606\n2c251c2c49aaffd54b3c42e318f3affc\n3e28e0f5ca5e03df73227452e5016b6f\n32303484de7f1998f8d44451ec1ac05\n8d80cc5cdafc4b8929e17f7efc5a2421\n77cf4ff8297014faa6fee8e2140acec9\n36a2d17d63dc83f983c05814b11dc86\n225891ce27478eec54e404e041bdecdd\nf2c1f929f451753de4ee93147efa8cb1\ndfc85456795d943bbadc820495ddb59\n5457691268846b073ca87feffb4fd9a0\na1e414f0380b7b9e1fc1bfd241d8d6a\n80f96250bed47b4f52e9aa88ca53e944\nba2f3a0d2e90025bb3234e0da44b11e4\n3a141cf2f22fed0ffebad4f49b26ec52\n47a707b2804cc98f1a3c0af5880f464\nee8208e26cffa9f8ba208e534614d8c0\n9bbccaed652a88d0ad4feb1e0e9b77d9\ncdfd278e8b1c11bfc36d58d0f13497a0\n1e3fba4500d20bb49b9f2eb77f5e247e\n5b1d0dad82acd6e5893104fdda835c64\nd081ce6cdafa416c8687ff9b0b4e4ac\nf294980dc63731dcd0ad32b8d8cec005\n2581685a8aeff78b713decb1a0563b12\n6a8f1dd7e0642ca4b367a648e9b173ab\n66654548053c709ac3bd24f986301745\n66b5fd596ac18aa79c1db271ad9472a7\nb7e01301bb1eef41f92f3e7bff4c4ab0\n87de70c9f96dc7edf5fc96890ba7d316\nda264a41dd8fdd655357c338ec9641\n5482bda23163df4f30e916fac260c672\n98d1fb12c3354d341e67ee2399c63faa\n3b0ec945e7290c3a6a0677e97a0ab6ed\nb6d43a52bc2eb8504d5af97121b5f\n1eed5ebb2af372cb5438b83aba42ca46\nb60eb72661b2e56f7445d25f394949d0\n3ae4d69fc1f9b15d2f008cb82e08f24e\nf2075f1c3088a167cf513de9a02a2561\n45828c176099f3c3d2f92ecc75b4cb66\n89dba482df6fd02732e2044f695909a\nd3562f992aa405b214b1fd95dbca05\n33442081ed6e32c4504af6e1321617aa\n3289bcc9bf8f5dab48d8ff57878739ca\ne90f124b13901eabae8375def5e736d8\nd28423569bfd84708336a02debb9923b\n4e9d664144f4249d8957917d005717e7\n4b4773ef582c002b5bfd842976fb7956\ne9651bd689ba5c14713decb1a0563b12\n49e8ef75b5ca2a7c699012d4a63c792f\nb60546b326e585e03ac416718757a350\nd6203deed1b54c8279b3e1be3524f72f\ne3a7c517fbe992ddd493bfe20f94b6ab\nfc7b535acdde11f4aa3e869226c9586e\nd0c6af0d44cc068523c1b1df1d480bd3\n1cf77ee00faa6de7fa6450cce25dc4cb\na18b3364ce7ca94d5921d1ce0656232d\n99996ded94b8bf974cddca4ca9fe5080\ne9e7883a296587ed804722305621f918\ndfd7e14d25b81c1db5d9b03636b8bad3\n5c660775f1c7b202855c835f93769fb8\nf1cb7ac166e7f23fd9d3572bbd9cf789\nb81be96660f38a8c7543d7dbfecfffbe\n4011b7d293cbeae11890f3b4ec900fa\na0c17b34d677907e1f98c0761af40e04\n6a6f0168ce551ebf40d341bbe0ce6dc3\nf0bd1732f37da50c7000797f53fee6e4\n6446846bd5cc3cef5b4aea6c98f52b6e\n48ae43c032e9f89737f67f4322e8d3d0\nc67949ee2c241e8e9b9f2eb77f5e247e\n2acc2a87aef7cc559ca96b2737246fca\n541746ddb47aa2af4e186c8346f12e6\ne9a8c9067bc733ed95bea7c29e873d16\n72fd9c2f47db23987f377effd1f7ba9e\na39f54db298e53b035d20a1a3ca345\n46e1939ce6ee14d6a4689f3cf5c22e6\nd11ee4294daf6ebe492d9da2668ec34c\nee001ffa8483ae1b7f0e458a1629fd0a\n67e6503e7ab7e666e45ef4135c266a12\n969375970515e5f6492d9da2668ec34c\nf4268a28d2a837a1167c009da6daa010\nc97b5b80a24030ae70e99aac955544a0\n388ffdd2dd3c0dc0780672cae8ec94c\n36f85b1709a62c406daafc9da8386a39\n2afa06a01a0a15fc504721639e19f609\n1006be65e7bc937e9141f9b58470d646\n51670c355ece91abe24f4cc9bc86052a\n6534de9a07438b52ee3907b60a74e8f8\n2ed3b981a9827fb0392642605da2a1e7\n728fb292d234b43d49a71f577ceadcf5\na3e990cd563b7a57ea411f5a15742da6\ne34658debcd1644dc8687ff9b0b4e4ac\n885c83345016a120c02b229e9105ae6d\n6f0def5e832f3614c01e0156f398b4d2\n6d5207270292fa01c914a9f52c152c86\n23acbdfee13b407ce42d6c2ea750090e\n11d3fc4092e616a7a6fee8e2140acec9\n341e24df542e0676d42b9650f19dd425\nbdd51e6d7ff84be7492d9da2668ec34c\n59ca6d57ddd091c26eda1c7568601317\na65cd22689f14147f155d75bbf62b80\nbbadf45aa419015c7e4d369f13ed434e\n9dc1371b6989479c9c0ca344f487323e\na2b55fd7ab49da518a049f37ab48adf9\nfbfdc8eed6598437b2bb75885cfc44\n2016d09b261b09f05413c1f22a911d58\nb89cbb45476e94a5e65235d5580cc3e0\n6cc771aa1a807dea19fb4103277a6b93\ne017c5c8562ae50882eddefc99ebacfd\nca23c31de817db9b67981fccd6325b88\nfde328d91eee1480fc0035da39bd5e1\n4bb5877100a76cf5bee7d080c8f1e1fd\n2bfa0be90c15bfa0b82cf928f6ed5338\nb6689fb8b784c570cc514b26ccc20774\n518c58b170bf5847ff2c92c2a4f65876\n524e4a1041ae53154b3c42e318f3affc\n97396529412ab7602f81cb887dc35578\nad7a6efb5aa6c289810da4adc58441d\nfc557cf617e03564da733bb42d274ff9\n29483ee10e6c6e4c2c37553db37ec752\na631fb1b054697dcfd8aaf214a1df4be\n3968956c7bccc24c203eb08a0c3b4355\n780809a0d1b68f4a8ef4ac3a24abb05b\ne6b0b43093f105277997a53584de8fa7\n32d9f69ef8ebb1778a514cac7cb18507\nue639c33f-d415-458c-8ff8-2ef68135af15\nc04c13649c4cbc5ebed0f345f50b6a5\n39ba09c13d784741dcfbbf65ff959eb1\n1190af00b6c86c99c3bd24f986301745\nb9ac31cc001a0ab72a64ba172c1ba615\n6dfa9675d27b5fc134f6a34e269f5ec1\n605ebc9107c71d54d8f5adb469ca89d3\n457aed734b0a8619ff6d40d828e0167c\n103a60f3b09107df2da1314e036b435e\nb7316f361054c8501962281db2f162a0\n74bde5a0a8927f816e107e0a7fbbb723\n5b0e833cf2ea465e42bd82e95587d8af\nfac321238dc8637eaa7cb30470f3273c\nbb831481ea5166e318656877cdc36a54\nbd3e65b625c9d994b022c94235bc8601\na11592a10d32207fd2c7b63cf34a2108\n331f49270df51b2e5bfcb9d3e84d74f0\nc50c2887ba2b5535c32fd7e88552aa9\nf2aa3808b870ba95429b498f2f24a42\n3c363c3a75aa1daee8f8c11a24c52ebb\nf4e355f3c1acc9f01ec783b810d76c4a\na95b5ea73cf0c9bc8e72c17826417b99\nc95e8fc2cf96b9349829306a513f9466\n713d651528ade2516bbe7b731c00d0e5\nbe1e5985324b401be92225287f8225f7\n736ef1325209503533d93f57729688db\nb66a32bed74e203591f74997d435672d\n33990ef5ffde80fa83bc207d8a5912e3\n9f8708db66a4ff07f4b6538438a0b930\n1f343169e6948a2a5b7d8e48ecc58356\n798fc5fd5faf3a0580067e3fdc6db24c\n5cbd738436d0523d6996454765a52e50\n3aee7c282063723d8a17805dbfb751e2\n40ee8ed17f6ea51224669056e0d19a1\n9841030f427150567dbe6b236c44c533\n5f9fd9bf28da76ebed2eab6efdeec5f8\na749c31cee6965f33dc9e0e58bb697d3\n41fead15a9ade0f090492b0341436fe0\na339a318c8a40fd4eebb133aa4be217e\n431ca0621cab1313b0204d9cc6bc8619\n5f2d4c625595dc2499b025797420aa58\na4b14d0f3cf8a8d7b37a59fbad57ca4\nc20dcfe55ce58c055c10b08ea69398c3\n6b5edd2c4df6e85cf9b9977a2406713a\n2d0344ee62954b0afc4743bde9e89079\n3d442388af50f61138ae3771b1788e76\n677846a1d3777e90ffb9df6156f4114e\n68c7f82dd1e1634d9338458f802f5ad7\n22086876a4f3bba0504721639e19f609\n44aed693950b077d4f9691cdd5f8749\ne5f405ad8aeca327d9b53420a5458c53\na9053230c8e02442c8687ff9b0b4e4ac\n58616932b0e7ab6d78b03575bb54dfd4\nd374912c3a9fca96c141a04b2a487fd9\n3d800711f41284b519fb4103277a6b93\n93bb03379efddea148bc9dfced4f8d35\n4a45b026317349130e916fac260c672\n6bcba04c2e45150779368d1198f406e7\n1157d8d6995da5c0290d57214c8512a4\neee352c9cadd79cedb1051713db42252\n866aa287bde4cff9bfd324d8acaeb3f2\nd021835e503e575b4f7a7f19de079d1c\n90500d52ac30dca9f51f77a6d7299806\n7fb75b03d3ccd58c4710269d4bc18736\n2463439444134401815b2b467e8e2eac\nb709b41d6bafd77480cef45d94d1481b\nb8552f663f2a4f4d54e4f80955961143\na439465d2bd623a14cb9f394cda169eb\ncb8e63317e0ac998e6543556f230fe9c\n326352f7a20c31e2e19a0cc107ada7cd\n3d703ecc2358ea0ff51f77a6d7299806\n38201114b7f2c48d6c63709946cf3bde\n48429b3467c7185060fcaed6cc231482\nff793ca32407b2022a54a8462d1ffe9d\na31b0ccff3aba978c3bd24f986301745\n3cc6485ab499244360b0434449421de1\nd7ba3ad07551c886a2c9d2062eb4aba4\n41660fd9cba4d5b72f4413c96d686e51\ndf6a3bc55f86781218930ac69342cc5c\n3022c71659584118c62a9d560fc45fe6\n78f722590b0885a61efc6aa41666df08\n2060f4d31feb73dd7762ba3a489df006\nf4db2e2e90e83c759b9f2eb77f5e247e\n3f7417590f1bcfded5c89ecb06d1099b\na544d05ee3bf362d27e1ddec710c515b\n96cb0c919d3f379dd0a96520c31993ad\na873a489386dc825ed843e67f2e2e9d\nc0b45de1c0e8f80d4521562865ab775e\n38279fe5f442d95f458feb88086a534\ne4c866b5dd958cd0803d0f5bac2abe4c\nd5e1c6d3e6ce16ca8f5bf896c08c419f\n9eecb9726ab34ae0492d9da2668ec34c\n21a7166815b80f3f7fee47aa19e2e28c\n1eb2e372a204a61153baab6c8235f5db\nb8726f4ca171189ca858c901f3d90b5a\nd6579d7c278cb9a47f093285855bdfd7\n60cbca441e3f062444ac83b3e97ad658\n4af5131ebc2ffc25ec7cbf3284585a40\n511a03618c9bf2e7fa762d956b3074e4\ne9043a68f672c1f3a8699b6183baa203\n6831b0aaec44c01f5d0b6dbf2c4992eb\n488041c2e021e8e87b11ae648ea92233\n11b7c86fc42306ec7e7e25239e7b8f85\na85e81c62bed11ea7f4e21263a28c500\n58e6fa617a1bed1a20b64028d2efc877\n5e598a82d584211d2681d406cc3868fb\n239c363cbe7a650c8b1ad2cf16678177\ne9effe5159dc66673b93a3cd851adcaa\n25ad35439836dd7c8fc307d246c19849\n8fcff2582b55291389e2d345fb844f4b\nb4371c352f96c4d5a6fee8e2140acec9\n75b1bcb68c8344261a648655355dc699\n30cd71fcd7616421177b96a1e00762c3\n450d40600ed92c7de9ad5e44c87685c0\n46743849f0b01b1ca72559fc4f86f700\n8af802214afcb014bd15bdbf03199e85\n39de90c34ab1dd3f327289c00b6dc9ca\n32c35f86754c0b4847307542345b60c\nea8ace071a8ffc2a50a1e454933067\n49748c9b987b6bc8dbd60fb6b8607ea6\nb4ff370c931ce57d1705b902738021f\n313bfbd7bc2d516e14d782de5388fe8c\n45a0b8c6923f587e694253b740159af8\nc30813d1130b492e81b31fbac7146568\n25b55c1686d6114de0f3ac5d28aef4d9\n465c2cc6917e02fec681404257d94ad9\nd9fe499372f2156fc0d328376073b25\n5f5cb0520b70efce750821560ab1d243\nda7aeb7a73f298329940c34828c5731f\n5aea2a227125a81bccda8d28b44378b7\nf4c6c927df8edb62c7623e33dc7256f2\na1240606049c440edbf3c13c5c0e828e\n27923c3fde05f14b5ea23a116671b38c\n2a1124c7deb11176af42602f1636bd9\n3eef51c1ba49a32ef73a9267136cfb76\n195c379defdff8b81dff5c2e57ad46e\n22cc9b68e67339738d2d730aebe7865d\n8709db708ec617ec8b5d4279936d177a\n280fe2696faf0f3a53e14f34c202d656\n429319c0c5bddfccd26c2593d1870bdb\n8e6dcb9b3eadaf9ead885ade4bf3150c\n1c2cad4df1697103a5139737ddc33fc8\nd00a7550cf050fb3720daf9b94e7a5a\ncf32f38c2b6c58dce45ef4135c266a12\ncbf829a6c4df229dfebad4f49b26ec52\nb7af84a7e76dfb59b04cb542e2c50eb4\n3f95c370fb3871621f98c0761af40e04\n5f7152813631754bba07a29886846807\naa412e95e1f9c047d9b53420a5458c53\ncf975250fbeec5148b01ef724ff374fa\nc6c7820d5e2f0011c2bf2dcc31ba1713\n7eb842de7ad4cbad3e329950ec40f6dd\n56bd6bcf5034c7e2f9b9977a2406713a\n374b3757a04c6ab6b9569033586af233\ned7ed25d40b3c16b37bf42a4ca375618\na2bffa12e0737e66febad4f49b26ec52\n4304100faeef130337f67f4322e8d3d0\n67017c046fee2900d09b414c3d8c49bc\n294f11afc4b60827d3ddd69b7fa8d158\n539dd50ce4d5fd97febad4f49b26ec52\n79862d8abd869cf6b3a8888e78d004b3\n4e15234057b863dc659dda512294c744\nef2da724b16ae36654e404e041bdecdd\neaf231f17fccb96d81dff5c2e57ad46e\n64f885f39752807c6c63b8b48495261a\nbe7897b96b04a5d12aca5d156344f8d3\n2159af8011e13b81713decb1a0563b12\nb6843e186082096ebf80985a99195eb8\n5042005e178d164481d0f12b8bf5c990\n47c33af88f4926676213fd2f62884e62\neda9dd4d0d18c3f2296420d5ebe64c52\n1f0bfd529b33c045b84e887edbdca251\nbbf45d2d189dcd758e5f5b49c9f5b3f2\ncf62f90e75531ac63cf953ab4f77463\nef6c2cd0b8bb6e8720768660cf080d12\n976f1a2aa3224af329d2a9b1cf0c2446\n11e28120789c20abc8687ff9b0b4e4ac\nd76ec8373d0a8f0dbb44d2e3e3af4857\n19a3ac2ec0312e13c8687ff9b0b4e4ac\nc1b8c2f0c4f3cc43aff7c08b060f5ed6\n51c276e96ac4c04ebe67d9b32c3ddf8\n51aa5f1157cd456f9f9dd9e7d6540d50\nb9e93c2036f24661ae890f02c6b951ff\n90129d2f4a5cb57799982a4d6320875e\n2c7d258bd18de1c28f7b968097bdb0fd\n5c1c5dd72247cb6526428c7519676cd8\n92cae2e67b788eaa9dcc460592c0e125\n672a6459e7606b23532a8e162f399205\n98ee09de954fdab1843ead12644a79bb\nca1bf3f8bac2927cefda51b1bbd149fd\n314f567d460a88c7ad02e4a3aca566f\nbbe63bca5688ac6b7236a8143b10600f\n6c25a321d75405aafdef1c01cbd4ae0c\na8da22b87a249bc9c9bfaa062f2e9d4c\n326f74afbed5d727da8b0c70313fbbae\nbdedbb7887d2c1ac6a45b3b48c00378\na7e33746f41cd181e258d1c3e7302e7b\na10ee4a0964f4ef9e3b9dbfb07aa21fc\na592c3bf73afeb9294741031f62be2f6\nc967b1e07ef7fc0bebc740fe800c0367\nb79bc903ae820b5ffefccbce7fd86667\nc62a17ea91815a7a492d9da2668ec34c\n72a86c2fc8d5cb3713d2510999d0f1d2\n99848304f52de660a26aea0642029fc\naa154024474ad7d138a720835dbeef20\ne0a011619d6c9df19f1deb04fb8ae481\na06c4c2f4634ccb1ee928ba0d9f88258\nc0d25cd4481b3c2a365f491f6e3dbc3f\nu1e22cc04-7c4d-4ed5-bda3-8ff8067f22ee\n79030f846b4dee0f9d709998b2d6e774\nf1f69b9b2dbf7402c862eec8232fff1e\na3cb39c5271c3232feec1f13d2353f3\n696bafb55dc14fa4638f48a6603fb3ff\na69c999cd76e29862f8c68dc62edc38\nb7fd3cf7f37e22e6713decb1a0563b12\n7f70642500b9a3ce45881d7eab1353ba\n212e266cab46f1dd5b903ba10d2ec446\nbbab666132885a14ea96899baeb81e22\n9795162b409011c2a6fee8e2140acec9\n588ca1d34f93eddd8ee30571b0da74e4\na32e7b7b9e2ec5c351bcd597cb80c1f9\n20ec9403d616f96ee6cfc789522bfbab\ncd547b0ff5cd668a86c701087a194026\n5e338c489e940ab73aab636b8c7f0dd2\nc0739ef0c29f005ef1f5e7b74609d54c\n81158ce36c90c319740641939c9d6dc9\n26a5761e22185ab367d783b4714d4324\nb29f5c7c73908424685a4d2d2b5da82a\n2025aa3a71f3c468d16ba2cb1292d98a\n8b52303e5ee47ac617ffa9a4ab48724c\nec758c4557250ca79f2349486c570dd4\n60e36f3ad1dad5cf71f761119ebf0b45\n48fe63616e70f84778ae896933c670d1\n475cf49d3764f04ecc8bd7a04c9659f1\n5ab321d70991c94d780bc2708a85ba9a\nbd9137fb2f1151b23def89b32cef8e45\n2bcf0b0586570ffe6c63b8b48495261a\n9ee1b4fd18b040bb5445e46058840642\n8c7d2eab593269f8607566378b3d8827\nd761518bcbcefa4080067e3fdc6db24c\n953a46766108d4e01f60a203be892cf2\n95f8a62c031dbb8ff0f455e219813ed7\n67c866143e633daaa6fee8e2140acec9\ne488826128fe3854b300c4ca2f51c01b\nf12a3ffbe0f8b5076253bf0968762241\n3d390c6f1051295d9501f2fa226917d0\n4356ef46fbc859a0b1f04c301b6ccc90\nfdc7f288b8c65494a7101992f797b6a\n493b8b8eac5d3de978f8b40f4a2ae98a\n77c02e92d5628be59db8ad97fd392b59\n177849848dc83fb9cb85ba5866080618\n39fb5d3f557f64d4389f9a01d027a78\nc93113c742415c76cffd61677456447e\n68af43642fa145115029039df67c2549\nccc772dd462e8d2da6fee8e2140acec9\nfc369b19cfb50322492d9da2668ec34c\n58a7b826ed562b7bb0957d845ac33749\neee7f5138b978078fdef1c01cbd4ae0c\na487bfde2aa50faa6d7bcadc05e0f4c2\na5eea0cf3865da9749fb53621b8edde7\nb091984264b4600f3ba7aee980c3a0ca\n9b27e1b557a5e499b01c58badc8bbc39\nbce5c7402feef6d235fce1b314c89aa4\n20b36bbb42d36e0771dcb8deedb6c8d\n66e1329d6098499382e4e6b3ab10271\n75f32479a35f39e9f43d965e3ff9c5b6\nb203918276818529febad4f49b26ec52\n781677297ef4db1ab0b54dd2cf2a35d4\n631807f69f02f1785532b747eb9b3728\n269539368eeb8ba95d99e410bbfdd132\n30ba0d3e750dd7e0876b399a99a15c0f\n8b0174afa05ed3c2dcadbd99efe6967\n879ffa2150c4537d6afcce3b00733da\n7a5d539e3771a491ca6a405498436716\na98b128938b56846ee316b26c8d85c48\n6697a325ee92e17695e321e9c6480\nf04698af574cb9847edf3a3d7d1bacae\nba673ea75085e46cbfd72d7396bc040a\n85f56a4d68ff8d75c3bd24f986301745\n1f8dde91813456e87e777e4db5dc272a\nce35ada9c4a8de2fffc6e457221b9271\n107caefdad02cf1c8ab8e68cb52baa6a\na1a34c1d45d47c371519c64630268dcd\n1ee30d218c8c730ecb01bc908e8cea6\ncb68461343aa852772dadd9292b51ceb\nbea34ffef0c02f07492d9da2668ec34c\n23299a939a6ecacda5817f81a1efa3cc\n114f72b38dcabdf0823f29d871e57676\nf030f5181057ddf75622d7484764b58f\nf9d050a51da1f3ed30bbd4cddd04c77b\nbc4d7324d2438885f4b35f4029eb1ecf\n23babf1dd4209349def08b067722d9e5\n3452faac2f4ef4d1f89f4ae158f2441\n4178fab56c04a32ae8f8c11a24c52ebb\nd8c6c9fd4919e7f1c8d01774acf97a\n7729a6ad96985f4ed1ccbd5d84e5bc86\na122cf5d1e23e88d72a5c49c981e6593\n57285ae595c5cc67eea9006d9d8918a7\n9d7a3b2b7dad91fd611b2c263b5df599\n2aa2d2bb646fdc511b7ca0421af5a45e\n65da0b239837b0f3f3ee5e8ea028d6\nb455c3037b013d85492d9da2668ec34c\n804c35699b163b7756bc5724b6282816\n4a783b2ae8fba8b29dcf2183c858e6e5\n4e5e8af0880b0d98febad4f49b26ec52\n1ace72a88565df8e56bd8571ad86331a\nfb42c4a8cf7b6d36ec89626a4213fd07\ndf6ca774d390755cbd18e74cb7446915\nc8713376eb588f422c0e1e24bb9eb3ab\nee484fb2c1e4e611a0dcc52ca811e565\n1eb5613aa22df87b8ef9327f5d5c024d\n1fe0a612dfc3fc548be8b77157b819c9\na919152f07e9e0d0fdef1c01cbd4ae0c\nc93a696c4b6f843122963ea1e168015d\n265c564e26071961e27790b0ec8671f7\nd8f7e27824e61aaa81dff5c2e57ad46e\n33617cc89afcf169e6543556f230fe9c\nbe38dc611c4bdef7f1cdfc0a8f38f2e\n36843ea8984df5a63719086e0b4ab8be\na287b508914a00a6857b1bfbb80503\n3372fd42f389a36a762ec387b772e9e1\n89133468bce0e63f8101accd22c701b9\n6b74546be8d42c76b035d20a1a3ca345\n490cc736a3ffc2a9c8687ff9b0b4e4ac\nea19940c812803d1383b5acc757bd668\n8e1f9f4e3cd226bacb916d8f4f1ff996\n762e86b38d1428fe78e6c2bcdf90770f\n66c9a5aa7b4e528a290d57214c8512a4\n4bc5920f74bbf6412acd2bb6205825cb\ne51df025a8c64a483147d51c94487639\nb919250f54644e1e326e6d76fa066efd\n241d81f586925ea0fbdebca9f6788597\n372118e3595c328c713decb1a0563b12\n60186a5e4e1aee8daf8fee88d245152b\n6d63b89b904264a15fc64c97c5117aac\n42ceba8e460de1de820898ba01899de3\n42711692db3647394b3c42e318f3affc\n8a53c692453e7565c1fa182c22e95706\n4f1e026bc520de13d66f9962327b4367\na10e8dc1cc9522b67a80d424f0f4074d\n758a68f80f0754f14a8a0ee8b17f83bc\n206dcd879e5c3fe8df4cfe396cee719e\n6ed05dd2e39e06223b12a1486cdc4b7\nfc0e86a20a9606493cd6abbbeca4e2ad\nb944154f00e7cf1fad484915511ccff6\n234f40c665976a51dc1e30a57aedbe31\n22b40d884de52ca3387379bbd607d69e\n610ea34f683eaad58cbb8bac2032149c\n41852b57b492559eb36178084a593098\n37aa434da4ef00038b424343280aeccb\ne96c3df69c2a6fdee7e684d25d4dcaf0\n4eeef58f4015cf74d93768e7b9b1eabf\n28fad854838ac444e9920dbaf13176cb\n3fc1e991fee82e42713decb1a0563b12\n6434921f88bd48deb0957d845ac33749\n53eaa7cca72c84f6cacd67ce2c72c02e\na9eae610d9ab7c40a7d147d66b8f507d\nb9a88078b22a4485fdef1c01cbd4ae0c\ne07c7d5be62d7cd73ff4affcd321d45\na4bf3b34bf49c5aa799b0b9a0d4a12cf\n987122b945dcf1fef713f414dfd3c16\n33d8a82696afadcbc3e3d5df2a6ddacc\n6d3081bce72521e088e9c1fdc7b9075c\nb1da0d9aab6d2308608505d960f2a393\n469597794b28bb2bae5a95f4529b204a\n33774f1314ea9b504b3c42e318f3affc\nbf879252fc85aa936d838816bd35691f\n91283b7062407b7381806e3880250dff\n587d174c5f2b19c1d7e48afa5cc5db41\n608b46b0f8f9eba81b1a986f753a489b\n6abacfbb354818b1adda578d985c7034\nf3499b524c5dbbefa23949c21eddef76\n753c5b7f6ee56a77d73237b8afc2f0a9\ne275ae27990e21988d2d730aebe7865d\n9a522f446662bd23a07a1bace8cff15c\n9b94592fe0fdcc34492d9da2668ec34c\n1f576eefb36c3e189a6ba4499518ef95\n244eb71b1dd140dc6f64461f0eb7cd69\n74a8078a8e89872780360680c1602c7d\nbdc58ca6d411823cae786e8787e8886a\n2b4f2fc77c47056eaefb25a27e962525\nb24b70c9aaec3932cf577b918c6f725b\n96d9944f46bd330979414e04132a8bef\n4f42be4dd95e5e0c76e9713f57a5fcb6\n568050037ad958625ea33df4b8846880\na06c400e070343cfd8a56a98f4d239c3\n5390dede41d523f71a782a4379556c7\n4e3047842ba1a384d2b12aa6a0f050b3\na63d7b6e62333b23ddc809959e304d48\nb596b505cbeb456e763d8d4012bcdd98\nc92721a95fe44b018039b09dacd0f1a7\nf64aa038d1e21e0ad2ebe04c523a4739\n79d5977609f99087473f10e6caaeca56\n64ead031d2b04ef0504721639e19f609\nfe9467d48dc6b3491dfc750afa3f442\n7553af75b08b6a87eaac479593c9ad1a\n76710f51915396e0327289c00b6dc9ca\n2c5e32bb738a5306e27790b0ec8671f7\n21bfb150cfc23accb01c58badc8bbc39\ne71ad853f50ea7872acd2bb6205825cb\n7e7f1989e852eb41352fc7e973ba7787\n1ef99f4e735ceabad97996b11dc03f35\nb8fe0dd70bae3a9dba7a8c9ac8add14\n5067a76bac4fd7892665f68ebc337f05\nbca8b73b32108ad6d42ec7e303174a87\nc45ff54d4192633684cd6dc1b226aa5b\n41ef5dfaee26499afe0dc3bdfa883025\nbb4868c1026c04fd7df0e9a69c97c97d\nc666bd15aaebd5b02de0bc4fc4d02dd6\nbbd6bde216a2c18479368d1198f406e7\nffd258571807e6425b1205fcf56bb774\nb8e40ffe5c8e61ba3c8d0fdfb1cc2535\nb5699ce2511433f3b28ede0f9f5a31e9\n5a871d6613216ecebda72093f9b5aa73\n1fd7d0fe883059e355feea066cda8f9a\n584ab19b5df1fe697daabf84de73fb1d\nc0fa1417c0cf2f20593ebeeedbff73b\n2fc6eef6605be9a4550584dfc8970d11\n341bcae1e7f366a233d93f57729688db\n11347c7e8bc5881775907ca70d2973a4\n9c7a028edc97dcbc3012f749207726db\n55dadd6acaa2a0c0dab72035db8eafd\na366bbec303662a3ec545e4e9c852271\na1314dcd76f53519492d9da2668ec34c\n8b1af8f7f37c36bb4368753867df1156\ne867483a25b070ed89ccdb4a5b6b972a\nef89cc3901e27fe0c5cedfd70cc18cf1\n2c4e9d34472b4bccc16f7010a3b8fdee\n800dd8ed32104151a37f3fc191551700\n24445a532ce3e18f7b5f4d129cc2873d\n9f6b1b905ee5ee9ddacbd849c304f00c\nf199965dc6746de38b01ef724ff374fa\na801ccbf4985a57f17adebabcec6b7e\n4b7f260d832c2776a7b43f93c63d6e63\n7772a25ce35049881dff5c2e57ad46e\n8da6959dc59296c9f2f43e6f841bd32b\n2de1bd62aef66dc9bf65e1af50b5b7d4\nd54100efac3ab743626ced72908b525d\nb83c9e0fefbbd843e88e73357a673e34\n1bf710535121b17cf453cc5da9731a22\nf68c32ea1e6cecd3c48d90eef8384210\n9635dbdc4e34b7efffcd08faf4fccd0f\nfa7f42b395c3cfce520ab6214a789faf\n6895e7aa3c739623927045b355fe1fe3\nc8166f63964058199947cf98084faa8\n21bc90d659dbe28a71aa44dea7a6d383\n7fc00af759f4382c48d90eef8384210\n3e08f5809c2abe523ebc93db58e716e\na07f62023d3784839aab0d90d6455f4a\n92b332233da033e71d022067655f6c16\n8a21b853c8de77f0c8687ff9b0b4e4ac\n7aea8e52f24cd40c496c9cdc8d0a8c08\n182c47283b90d8b2d85934de5898f0b\n64d5bd4a6af3da16327289c00b6dc9ca\n747667ef89d03f0dc79b7c4f72055bcf\na241ab0fe7fbb1f41dea5e6084523ee\nce60636e30770f9d8193714e438a24d5\ne4ce4c2a3709855450064625270cfef\n8754831d577cca437c23ad67f25bcfd0\n90cae938e34b11a429823c412ca4576c\nbfa435c63b1e96d3492d9da2668ec34c\ncf80306fbfc886095213cec267286d18\n34722e50142652e53a5e6305a3a7adee\nc951e7bd4c0cbce17ec5a98b3b8c425f\n91cd85647eef236490e75b1cd0f0169\nbebd1aac01d747e82500a3366a96c301\n935093c683edbf2087946594df4e196c\n239bb149aa17d0ddc1c43efc967e5428\n7644e30dc0d88481a3d974b4624d6717\nb96452f41194937691a3aa674c7ec1a3\n51733b725532817ac8687ff9b0b4e4ac\n9dad5d3a04753f69febad4f49b26ec52\n90dddd5e4aa586bf14513156cf2b8d0d\na1d217ba806367cbc13a0d88b632af1d\n1f1a9120cba6c1ce177b3ebe695b7c2f\n308ba1f8c1eed4fbbf80985a99195eb8\n5142e809212f8c314500047017815f5f\n320b6f3ae2893d3c9f5d3fd8c90b27d2\n52a7930e87e75591a78e44eefea09073\na32e0ecf12641f34515e5383285f6afd\ncc25ba35b3f6e8d3d064b65ccd89778c\nb9382558b6b4e858ce5de6b2dd443a15\na64bc6079afa241f762ec387b772e9e1\n2b6c09e26719b256c5facc3cc8dc041e\n2249c62788a52c61613f0dbd986ed6f8\nbb296502226ae23475becd8a4c3f1866\n80544a1e0e443c7d5438b83aba42ca46\n7a9969fac794484c327289c00b6dc9ca\n786c20111b691c152b4875f731f71cd\nc447f8e63d691e6f44d8225a445f54eb\n212ad23c8afe1f9a9d297e74104d3ac3\n891f1cd440afa11517b431cae0dd70ed\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/03211117_test.lst",
    "content": "b9cc669597085c028766390809048ebc\n534d3c5dca2d44641af9a5a7008cc3ec\nd32688a505930c96e2c8e43c97ec5a85\nd10dcdae2d7645ebcfe78be5b7b99c8d\na4dd6c69ac130db6795284068bb430b2\na71826a92bedd8e1f3c3e7bb31acc31a\nffc9068c8de1fe46d9869786ff7f6a46\na87214036fbca69e84a172a28c2dc\ne5b50925213ade6a340d4ac30c6d322a\n63d4e03c4effa06d6845a0762dd07baf\ndd8cebcb4d0564059352b002a7d38daa\nb05a54988fb28d20d0b341c1c5648015\n2c4f9415edb358adb71a0e5ffd778fe\n195d9d0305fd1625679efbdc830f6d0e\nf8c22e6011567f655dee408cc1ce3ebd\nf2b3efb28b5f5d56fb4038701c4e8e29\n8440ff1637f2c6d7ebe17c8dfb911d2c\n3529cd0cb733596bc22a9d71e5721aa6\n459ea1db4ad52f3d7b7c888d3626712b\nf124d85da3ef5ee5fb51920a0179fa71\n3ee0923254671a1ef2bc9da1ba799c60\n676e65417cd3d59f3aabc01aa1c5608b\naa99cc4323af7144e7321f25048c6142\n31ea284fd46d2d6013d823b13369c182\ne6304d3bec856684d9c9f98900faca52\nf3004c5b38bbc0e445804144dab4dd66\n887fdc9a9940ea57bd59d5b2d356dfd7\n1c47397db49047b9d35d1c787a8f626e\n415b39d4f60a36d742274cb89cb6c841\nec190042ef2f7aaef925cd3fbd303c2c\nb569ba9d9d74e7d5184dd44a99578080\n58837198e067db4cde008fce66fdc56a\n15e7231a97ccf7953aeb14563b37e04a\nb47b05891c5161189722ef9ae1c74e1\n5305858e5ce441d65fabfc69ee61b28b\n3cb53b32b97c0a04c04cf0f68103eaea\n1ec7d9fe07b94f6e274d4393e80e99fa\n9740d1752c70a41350577cf04f3bf74a\n441c5d2f78e1100558ecbb7ebe658148\ne70f6a81158cfb213a762233fffc49ea\n8a87846412b40900ab610b0c94236463\ne51c13070dcd4ce25432e3a73fd1f7a9\nab2f9418c111cc6ddb965514105122a4\n87d4b97120598dc54e6185a07ec22996\nac81f325fbc993d3eb42617d0a1c53b\n30fc571d408b84cd6315023d0bef39b6\ndec6a8c1c01e148d20685b5a7e34b501\n73669f92851d3b28eb34db531a289b8e\nd3193b07bd166c0611e348ae03a757ef\nf675d7c91d540e6bb45df535caecae62\n5880abd2815da0492fc6a8cbc82a5bb1\n60bde4ebc37f9b31473f10e6caaeca56\ndaae6d7f0e8d7e208a8be3c02effecce\n3017481ad6a978393eb1d3da560687e9\na9432163d01a99f1d38b9064784c4b38\n4440935e5e566502250bf58700b4d8f\n89f3262d8e06acfdeb0ce5843fe6b264\n3d4079a37c8fb40e808951ff5fb582ac\nf5f5e872bf70f59983f551e0fd7d32ac\n9972709345d24fd31ee6305032661052\n6a743f7ae8deade97e0bbc356ce23758\n35003dc3d74527729a1d432cc80562d9\neab36391bd7fb745585e5281d7025178\ncc499148f0e031054b8def6cb3b321af\nd3f9fc10276d8922f7248d9dbed7a7b8\na9a2ec15d1223290916cd984b3abbf4d\n8c4cb4ea7cbd0ff5ad3833a4ccccd8ee\n80976fe087ec183f3de42699b619b796\n42fe49800a1e65d18a6b1cf8170af1b3\nd59cbf752abeeb17f1a5dd559b550d68\n8a4cbeb489904fe3083b551ec2a5aa3\nf4097db6ad343f90d551435517f7f18d\n3cbe9bb95e5004eb342398ca9dc32672\nd0959256c79f60872a9c9a7e9520eea\n95df08344f4737e078785e24320d5ee9\ndf81df82811b2b2fe2d8a7cb76d59615\n59580147939bcb7e8b296db8a8f00728\nfc314f1e3325a47af287ec53a469521\n76d351e5df26f91fb895bc5ff828fca\n286a7629b62426b5427c20e7fc0367ac\n52a7f3e36d09848ca63c1bd05197cc\n66a50da0551d36c9f13ece01395d269b\ndfbce5e6cca00c1448627a76b6268107\n8ce9fa1075039c8c63f4b01b3d592bed\n2979d8814a450f884b8894e5e467986b\n6e4c06e5dc03291bec77bb7db6eae005\na56c13025ec97af31ac04cb85e251041\n184a3f58220427c39fd28cfa9e6e405f\n9db1c375f76c8ac1db01c957364e77d0\n9716c06d43de24387103ae93fdb3bd5f\n233a7970efc2594b26735a5c7bb362c0\n6a1e4ab7debcb3f429426a0f57e4d15e\n9ff60c2ab8d5a15abad8372756ee3232\n73c5898bf63748ff110eeb6ed2bcbbc\n5ebad73554fd866830bcd442adebae0f\n2971f417b08961475a4cd9b26f359d36\n56dee4eb44b2f0e64a6b6d001599a1e5\n40c53f54e7fb0e3ff4c409c17e0a5165\n24f34f582f9072eedc3e7f8ad872247f\n2967a5504d5aef38bb3914fb474ebce4\n74a99b32b562fcea7fa29a3ea424473\n48b8290cb0dc0a6cc785f06f424b9d06\n34d998b1845880795b1895ac674412c5\n48c17189e6c58d619f4c3c326d704746\nd85f501bf76933c609d7d8d27dbba7f\ne46e45f94470b45ad1924b802935a37a\naf2f3c9c8fe90380c75516c7217fb218\n3c7ff78e8036b217d3923426933f698d\n58fceeffe91b7b1c20685b5a7e34b501\ne7b9c172059d23a6f12f3a2695789ca4\ne5dd90d78168e53741e88434245c899\ncf16012ae10b993bd15e5f70c1308761\n2bbf7f77d43b74338a331b18e58c6914\n77f4c991478ad1c26cd5a1d5c8bb85b9\nebc62d2dac989b7d8b71a158ed504795\nd1b3804c23311181f361255e85d5896f\nd911b390503a11f96436916a86a90ed7\n4f46683ad627700edb09a997c699dabd\n6e3fafd33a4683d1fb0a4dd466ef3d66\n722df1da5778d45b1e43523279c7f09f\n1a92363c2a155ed3c397356311cbeea4\n6f9ee2b839d3a03683fb187ab7c1f026\n600bb2a17b238a927f7954f9ba534b6d\n2fc578c8daf35023ef641b9022b66b97\ne5e5018fe96e414528d0f4c81cc1f1d8\naba93b2b9b45a30dab0b172d4dea80cd\n9d51ab35cca6288da8b55d3e40d96c08\ne09670b2d890f63d84e349450a5c51b2\nc62af9a75f8779b82b8499d50978754f\nbe89d32290b9dd4aba27b59766aaedd9\n96c87c372083e06e9ce9562d3c10079\nf2f41913123a7a7e4b87db09ac4cfa73\n2e5b9f616a0805dc3704a45f4027ebcb\na6ce00ec813199804e2b01a3e0fd3197\n4736b46f6cb97d091e02c9947dc6e279\n1d9f55b1651c5190a3f4a96ccd277d49\n64fe6e4480939c5e9b485b25e7417c6f\nea4b90cca359e2d38b9be827bf6fc77\ndfe2e7c66b4063f79a6b496c6e9f4c2\n198eebeca7243399ca5ca7089655f058\n4f598d41b30b28e84158c4db508f74e8\n92e757e989dab6225ad009ac944c169e\nbe2f04d1204c86d4db70fa8937c64733\n74e3d29a7e0d5bc48ce0f31e09d08e16\n76d87469c1fa3638577ed6878ebb1511\nf7effbc133537f0aa5d0c95600bf54cb\nfbec33bb92e066ade1f2a1daf140ac9f\n44f363137d006f3cf7fe2bde3ab894f\nafcacbd7078a3b4b70bb6bcb670ecdf5\nbba0cad6dbbef2589fb287620a60b403\n2f07cae4c7809f0bcf5a37a70014c623\n1dd8b03b590dc0ff9470c43f253f33ee\n62188618e7d0b2f23dabafedd9562ca6\n6f7bbbc83183a93daafac0c8d5992bd\na52e505fb03e2d8568292529fb38e524\n4116b08cd0e4e19ff799a4672edb216b\na8e109c66a0fcce7a87d866b539e4b68\n85240d0fdd8bc669ccf3727bc3da6c48\ne6bedde4571506491fde762a4c6848dd\nbca2b66a9ef701bf585db0bff5175f74\n68206e7d85afe3619d8d0b45bd2b5b8d\n15896858de30017d8e75bb5638d14ce9\n14add565ff90153855f9913e822d5318\na990477e9c1bcaf4a70518e25ed617a7\n6afc906811e9b40421d7ca6ede0e9373\n5530382ad4ea8b364abfe5850a7ebd07\ne912fab93eb63fef6b4897a481d7d16a\n8a7712d5c8614b97974e278a62ec98f\n1a5494c28b607f699263b5578aef09fa\nddd82fb23a12e2eb2c8bd51dc6fc05b\ndb4de4095a962680c951cf8670bfff6\n600fd2598fd5761eb9099be21c212692\nf4877a34163978f84efc7e7114f1b9c5\n7940b411f730cb767ba0766d8bbd9a5c\nfe75bacab7594206ab0b172d4dea80cd\n877cadd597775369ec059109909662d2\n49ad86b608403b8ce760531185a75b14\ndcd4d3d6bbbabdc6376c487287ae2b71\n90d97637c01fd05e59122da3e1ccb92c\n30e739ed4c65f67ab71158027becbea8\n751f46191d0baf99f541411dc07303c\nf47044b611046a7bf901627f525bf7a\nd4bffa0adec5f9a73387ebdfbbe050db\nfaf54bcb640753a28c6daa755196a36\n97870c19256a95acf5f79806bd65844f\nfb92cb1fa04c2ba6bf1c304f780914c6\n792002ca0c65b1dfaf7869e0a5920f2a\n26c4051b7dfbccf4afaac116abdd44e\nc2b4ffa6f1911d4cd1ecbd6620e3fd17\n538eebd970e4870546ed33fa3575cd87\n4302bce2d7e6594cab610b0c94236463\n3ad5eaabf85f4b5cc4d320644a1ff105\ncc7bac4f85cbd7d68a04632e06812aec\na568d8aaf2b587a2f27bd2175000097\nb8386207364e622d5e7087f2d9a278a9\nf464a98b2d4f598be8581b38259c3721\n34f6cff3e8fb6315fc2aaecaba21de51\n9536f9fd4795dc2d70ef2132a4b991a\n815060a9c109ff4659de6f0155fa4014\n777a8a1c887779f47ac59aba6f9a1449\nede70dc992195dc272e55f1aa85cc5f\n32be865d1baf7eb9ca4aaad7dc0e3a16\n70dacf62da510868a5ff93a193b16554\nb86af5698f9a04a4d0d1157c0bfa4669\nc906b5644fe468a2b61fb7ca6803b7a5\n9c23caf872048374ec8285b7fd906069\n3351a012745f53a7d423fd71113e0f1d\n246f0b722dff7f16fb7ec8bd3f8b241d\n88be1603c4e07fed6418651cc29befff\ne2787b2f0dd35fccf42a90fe4baf4591\n4ee8d3a617b574ee30582dab79e5c58d\nd9b7d9a4f7560f6ffa007087bf0a09\n2190a888d3f7ba6bd3ffd38a8449bde8\n5a440522b7df4cdf318d408ca5b702a3\n813b3e438a8fcb189d9f3b4d1ec94c69\n3ca0f34c03ddd760234c2f2e8f2fe6da\n61645237bf8de4df77525a753bdd4f00\nb11d7ae45f5a84de8641d137e7c33076\n2d0138ffe3eb25b9e23244d89a2e66d6\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/03211117_train.lst",
    "content": "ea7dc70f0ef4b04bcbe0b8af4aec5d6c\ne2cc0d50d6953e760a25ec0f32e89e3\n301148e373839ecc37ab55b97a5e9f9\n3bb7a8505b99216a53227dcd0d547ba6\na98035c0230649c79b95c928a1983150\nb68da827b6c8852ecd0f781bc45707bd\n8399366b1dbe22edcb349a60fd15aa15\nf35e818eba233a7734bb689093b9bebf\n795fab6a3c23c0779f8445dce6fc950e\n85d0ff09690c539cfc727671f5682283\n27e65dc223cc8bc0ec059109909662d2\n2772ad703e5d4b73cf6f327fca156fb\nff8418d110a5fd5211ab369e12343c13\n93b288efbbffff30c1dae5936fc55ce0\n7034d396585632ef5450caead37a1c9f\nc9a56fbe2d5d735f9daa2bf0c68f794f\naf56bcebf21951faefc87a91fe7ba1b0\n559bdf7d41b538f6290d1211e69c442c\nc257e38f51bb660447de0ecdff019da9\n9abd70906336af9c1c209b1cd3e81587\ne3d94861020f97eb37fe7bdc65e35547\n94001a0000497e8ae4b68d3b17c43658\n7f489cfe5174ea20c29a46091cf24cad\n7e53c694e5a223346989969642549931\nc9ff448d7dd7b271c7c51d4ea74651a7\n42c0246643c8ad0a2af8f68791a7d624\nfa7324388797a2b41143ab0877fec7c3\n95832db2feb0cc7ce441f5bb6f88ca61\n33c639831fef416957015074db1e51bc\n64abc0ca2670818e441f5bb6f88ca61\ned31aec87c045ebdebe17c8dfb911d2c\n78e3dd96ff1dab94e20f4d2769bff1e6\ncadc40a7bb182a40cc229b563d900f4b\n5a4add4da7414d11f2a521bdff0d8feb\n4731c3b756e3366958aeac7d536d442b\n42a81c2a4a261f1e1bb088904f7cb154\nfac8bc5420f9d472b36c473722d8f02c\nfdf3953c665c36fdeb47c06d7d8c2d65\ned9c1a4011d870c258d40d577ba17fc6\n5a66f2589c7df206e1f2a1daf140ac9f\n44d14268d1e961e02f653d2c3f9c5e62\n9b66be71bb69a85b3e6db88fd9485c19\n7dd5b5e5fbb63466ce4aeb2e2812e0bc\ndba7ecbb12fffaebbf61576316934f86\nd8b955cb8ef35cd22f2d2270d816bf3a\nd31610e1a17c5d31631465dbc2e64814\ndbcc94dbf216e37588bef8ce0a02fc04\n792839c9e28f5afe4edf4a0df1fbc500\nfb1ca7e50ec3013b493a838ac2ced544\nd1ff5895420a205dba1a3bdff265e174\n977da77136819715cf8a1b5af7e0bc1d\nf06cab8286ad4f7cecb44abbf263be08\n3057eaec13a196fd5b244f7c2ed32e73\n95244648a330b9c0330afa9b9b51085f\nf6515d1343e25bab8913de0e5cfdcafb\ndac4f4f039a9467f46d83d16be057f3e\n7c06bba1afa0553225a454369d791fb0\n8fde0d7ae62ae2c802b4057d350ec8\n8bf89a26f5e7824a8eb91f418e60b82e\n44651d91ab8b2851fbff60ddd047b071\n6c8f7736660f2e97e441f5bb6f88ca61\ned7e0817614b1c155e7087f2d9a278a9\n385b89320cb3db4b958a493036fc8628\nc356866299f4451cd3563af8dc07cd64\n762b30a37bb098ebe7db3cc5ece34048\naa73f1b28817376c6cf19e722198d69\ndf5e129b50eb2f253bec56bff764ba78\n28b6e44e37586fd797e8123bbbc761d8\na6fe1a137c076e51d404da78b2c36d5d\na47aaca6619252acc4f499be00229a55\n225d37286bed9bb9dbf53b03c847b004\nc65b30c8ec2833692d56866e214da3cf\n453b06180bcfd33a86b76551c6a3b2b\n2b2204a683efead6dfb0e2d6f3832f45\n437d1c161da1b9fc57e4c0b864012bb5\ncab3f094677c1070202380f1becb8a55\nf4955005fc3fa1bb64b3cbf502645c74\n9b7cab4099b2d1dcab29d5c9003deef\ncdede148ed40e40187cd01e4a414d87f\n2963a8a608ba6833b6709846a0e82dc3\ncfe8df98fcd4964d9d58cf21d5faaa2c\na1e844489abee455972d35c68e1bdca3\n3863575f24e6bbe3fe5c8ffd0f5eba47\n20476424cf10985610b144a5a224780\n29aaace957daebc982c69f261576200a\nd330d50a0255529d19ed6e1a590c9122\nd1718f74c964b34e234c2f2e8f2fe6da\ne4f34d5f5cc64a85f2e5d34c7b677bc4\n6272280e5ee3637d4f8f787d72a46973\n66d6590ce707340f1c7075c2bc313334\n8ef52dd9b307eebfa31cc7b61ec6561\n5ff51c478471d1f15468776e191863a2\nb72579335543691423c841f9d5051936\ne477ab5ea25f171172249e3f2c8f56f7\neaad54605e6dfee6d862787d0e1b892b\n32413d2f2103b3a5286e185ca42b30ee\nf8a23c22e76666a3d4ab0eed66631cfe\nb90e7ec58327059e20327f464fa1f012\nd854bf9f589e5a6e69a98c3ec2f88e7d\nc201c9ddb8493c15c3b69089417dba57\n4812245f2f9fa2c953ed9ce120377769\n2ddb8a9c6a81f7c1be7e1d42d63ca9f0\ne7409303fa52f74b98de02aebd38a1f0\nd6039aa6de8b5992af6cfa169befaf46\n3a9dfefa52a6d2643ed8be9ed4b2b6c8\n5f73ccba7af987789744d3b3ee0cc03\n4d74d8c3df7a85051d225d751745cd28\nbdf3dbf43ef2637f578d107c71db28ac\n70c042c5761072bda543b6c4e1dad166\nffbe714918d982594dea158f05aae320\nf82e94964e06f23fd6d49cce41472b6e\nabc4a3eb2c6fbe8064d221a686772b82\nf4a259b4778a77b37b2bb75885cfc44\nafda884544124320642ac1f4cab4f5b\n397644e58faef380e441f5bb6f88ca61\nff2664a07ecb6edceacb155f400b9076\nde66399eb8aaaad44913c6e8e05bb2fb\n421ad85cbba562878fc3447f3635506f\n717d3ef4c7000c5917a27c3fa1d3566d\nd5ae3a2aeb50a07e75e49fe23848bbe5\n34808bb66b2bfa07ab7f9d2da6fc61cf\n801812bb859e6c91f9786f6e93041cd8\nb2ec76ac8a5c7afa40ff33d80c1d7d1e\n2b70ecfd4dfd162d4a5f5cae871f39f9\na20887f46f9974d9a23949c21eddef76\n1063cfe209bdaeb340ff33d80c1d7d1e\n314bcf37588dac1ca802f44e0266ca93\n324ef9fa783f6fa3a70ed7ac6903e853\n41bfdff7b99c13703f7e27638e63d848\n31daffe57909195455357c338ec9641\nccd03d11c95554bae4aef3a037da6f67\nd9bac9c418667d2ba62bc668cb34e698\n5bd1493a07c13d675f1b26547b9ff327\n8bd568244e513b09c3a0fa8ea839ee26\n9557d54db1c95572e15527f70689f25a\ned00d5a47a7ddbd5e464ff83d36486e8\ncf7294db3c65ca5c945ef919ad31a7a6\nc47998c0a317c60611ea7f12f22c0e84\n7cff26e6dc84bd02c598d38a6a69ad2\nad3e62240370a4eab2c358fd992922e6\n9a64fd5e660a8725ae95d460d60954d6\n111f2a331b626935d82b15a1af434a9f\ncfdd661f4521ae0e331bde3212dc4d8\na0383e1388e74ad8b0851ce87f32a267\n61a81475b820a85aa73340dd35da57bc\nf1a3e41b45de104a810988cb5fefedde\n1e6d8cfd991e829ae441f5bb6f88ca61\nad0edcc0855d1218dab76ad0db1f9537\n3c4c7ec7ffdfec50f39105e1e4d2e270\n37ed0bdf52f2eaa83c5474c35497dc65\n6c49b516b04e89a15817e30de1dabac4\n1707d858ffaf146e640578ae55230ebc\n6c56f6063ceb2ba4de1b0b03ca051f02\n937190441ee0d2568b7ba679b8625927\n56a247c3688af350723edebb30e0215f\nb3ed6cea7ecd3f56e481cbc0aafd242a\n54ec97f055d68a78ea0068b966c5177\n25df40f2502c6bc2b2fee0e811c64fd3\nbc690122f4a3646047dd811b692e315a\n5fb06d76ec44a16bfa6dbbeb09c2f316\nd96ab618ee698f008eaad608e74402f5\necb96d46eca5724fef0411fcb48f0299\n5c79b27734380b011a9e831992816ab\n5e0fe73a4d919b1af5f79806bd65844f\nd7b87d0083bf5568fd28950562697757\nc19d616f13bb70d39306959137da47ca\na44dc3e6f574bcc942e76de3842fd93c\nb38d6f1025399725815b2b467e8e2eac\nab68830951b9a5a02ba94c8f6eceab22\n6f3c489407842f81c36ff2417ee947\n288a8917e51c57deb0957d845ac33749\n79f3ccc203ed18cc2b09e302847180f5\na536c6a5f1a118feac653254a68e1397\n909bd886fceb080a6facfc0053fedfbe\nb08085c7aad830e3f45db6a75d78cb47\n786f74cbab946ef78517036a5ca6b1c7\n691ed09923a0feb95adfd0d9df77c16d\n817aa43250590b38b3425db9d50d5dff\n3783ec2d4ac3b097a7f97cee360e8d0f\n4a2a1d7cf80d6031275d003e423c59ba\n75237ff4dabf0e9592552ad7302636b3\n144ab629198c837eeeb8d422649e5f2b\n2ca1353d647e5c51df8d3317f6046bb8\n6fcbee5937d1cf28e5dbcc9343304f4a\n68944f7b386310c2515fc0d40df6c5c1\n2ba6e0c4ea459f84f5f79806bd65844f\nd0e4da00e7f9db087bf393182f1ba834\ne17da83890fca0b8290273bda7ed0d31\n8a7b80310c1d8d1b3d5369d27421e60\ne6585f8ce05ee27cf8bee374511267d3\nfd19c9fe3d5e58549c4081063e213a15\nd3bd7aa1ebfa45fcfba7d64da57889bd\n5f0119e9c7f437ff83361808b78d50c3\ndac5376988db376b7700ed9200d31a49\ne2fab6391d388d1971863f1e1f0d28a4\n816eabad5c1ca552744107c67e903f9a\ne1eb75d031091e422616600cb9fa6226\n50934056d4c1735dc9d02d4e580c2722\n481a1dfe44babb3892b08e504d6ff5ca\n3592a95cd54f38599bb952e15a37e248\n4ee9c39b1f77a29a9d5e963395eec7e9\n830b29f6fe5d9e51542a2cfb40957ec8\n1df7bf502e4b0e8647dd811b692e315a\n65582f49b9191ea805062aaa3bb7665\n64c23d38d98f7529811348287b48cb45\na18316fe31d3e24ed113457aa21fa2cf\n2eb15877e9ae80d1d50505ee01b106d8\n1bd2a09a9057cbaa2b518e07b1fccf95\nb2257460f3465f76370c049e2352d133\n91db88d4d0956e92a9a12c50dc330a66\n3defd11d1a251becc2fd601ec7a8062b\naaded29a2283bb4c4920a74a78f531dc\n75617d66e4d82ea2318461dc09ee739c\n72b55fd0ec85d68164ac9dbe3ce7e6be\n42ad980a4102f1c1bac465483662a51d\nc61bc4cd473fe3326bd865f153842b49\na17e2808f0176f87f1f3662486c882e5\n7e1212c48c877b87eca8a38e13335285\nfb62e62c2b1584b45d32c81b99496e1d\n6fa8694a2b5dd0b9db768007c05f817\n3531ea4e850159dc43a6722dac94523b\nb163a1a49784d1b890da575a4a08834\n1405ccaff7fa9dbd51b711a0825fda5b\n542ea1fa89d51f12dbb15541d28bf6f1\nfe3e7a35b8a1c06d3bb4a1304fe504d3\n52387a90d9aa2fb019945cdf27c7de1b\n4b85feeead6313806329e8c7b28434da\n8a89e2085e5f8404da89bed86b8f9261\n402938797a9a63bee270f79b60ac4232\necd1641932584115fcea08a6f6e1c30a\n5fda7abf1b684ae8f464a4627ebb5e55\n882619bc31c4e4c88091986dc5b9a01e\n25a09a149d018bdcaa95bf474e195f02\na57682cb8ebc224eedb8bbed3955f432\n48f2b6c3c82635c119609759f8339ed9\nbae43dafa75f827f4375bc8943daa105\n8359589eb5c647a61f571c9e890db987\n800ca9956f66a22a23d94393165a64e3\n6437fc773d50e93b5c915b36bc455bdf\nba29aa5a87317ee09327b89c3431616a\n54f5393846bbdc64e34e21eb7fabb319\n5934ee46f6872adbf19c9a0272a2c26\nf480ab303b2b595eb9f9e1b0ade9a295\ndf35d335e76abf5618ba239e198ef2ba\n6f1c8a6b5d684a98e3d888a4f2b9ef73\n4bfa2e1e43d64c51cbdbc7635e6b79a5\na296a6d7957a8ce9eb752889d5199f9f\n901170b0a4cf30e746407779dbd69b2d\n536bbf9f697bbe881df9770149d6661b\ne85041124d09cb07318461dc09ee739c\nd72732ab9e03ca861d73f583f51a758d\n4a8e7bab0b1bcf77103e42d04ec345ab\ndf2f0bef5a669d6262c440075d5ed193\n31f688edc350505191cb6690cc7eb18e\nf6722edbe92ed28f37b2bb75885cfc44\n58eac12dcadab8bd6ff188b4687b7936\nc4c15ab5dace66f81ba1d2ff478f3057\nc57f3b53b19aec84713decb1a0563b12\nab69e803c34c6b8536871b478a4420ba\ncccbf9be5d578b49bfba6cd89592cf9e\n9994c527e9c39bc5b50d0c6a0c254040\n9852ad45bb14a66fce2fdea99c5936e8\n13c8048199d8063c6c6253deb0c008d9\n60e6ee2c3a2aa3fd6d07c55cf995503e\neaea42ae1a406492df8cce42a274b981\n46609dafc47fdf2b74b687cfa539ab78\n740c4c76185ae7ef91a491e8257bd6fe\n763d4754a37cdb953c491389420760\n880cec9f3dff564af81b347089add3de\n1f4b16094bd83af82d2d2896f4b277fc\n3c495b3a2c2af890acc9692a1d1e7dea\ne52ef251efe783ab9475cee1777b2299\n27107e057772be0d6b07917e9ad0834a\ndf8e098d4dbcb5b2ccc4d915989bc424\n3fc7b2412782b8e9964f7ff178873e82\n9de3c0365edd0c0b3e487c876d55197b\nf47b9fc9a55a731a7bc6032416bc8ae\nd58e51e184fcc1a2fc30525e763ef5eb\nf3a03a173932c42b4b9b715645ffbf22\n3209637ef61547c040feea836646b66e\n7e3d087ac72e46c2e53dd9bb27ba3c50\nfc0b4809f5a1a613496b87cefd345586\n9a8487c37ea68b49e5a14a547274f040\nb3f23358467f8c75dc974f7ff5ddbdee\n274acc511daf0161bbf0c65ae96423ae\n134c9a46684ab57271f27bd49a6cd214\nd965c9192e2ef568d36eadf9dfcb1300\n840dfd5a8a5ad3f31db54d45f574231f\nf800fbcdef1ac9038b5dbcd4be5ceef8\n5c53dd3bab676b6444ac2f2630483b52\ndae83168187a9ef8628fbfd12f0feda1\n444fe598a0ff9d7ebe24753b6321b5ca\nccff142a647e673dc24648b5216c0d5\n6011d9bbe9b04cf7b6b6751f39e7b3e5\nb8db7ada8acd039a3406f1378b19168e\na33702c33c345df57dee7bb3061fcbd3\nd6752674a181d04829c956de83176829\ne58344689760e33158aeac7d536d442b\n416674f64be11975bc4f8438441dcb1d\neb75ac8723230375d465c64f5322e86\n3b188e87ba5f109e377cf79903309074\nb95414b9723439a6fd28950562697757\n4b29b207acce575dafb07a946d621b3c\nf3d6470b3f4f5ad71c7075c2bc313334\n48edccab11f0698be441f5bb6f88ca61\necb3d57cc0e8018f3f6b4923416758fd\n26b26a5c4a8fad9e57145c11333eb62a\n47cc124678ef84c53bb4a1304fe504d3\n8bf7dbdae495ea9c9db805a3358d2d5\n2711433532f6d1fdd7426bda0fe4ebcb\nff9a428991106434b9e65df431a37c1\n3ebda8146a84d7e64fceb9938a41179f\n2be8c8104d0025ba74dedaf762719321\n93b69d3caf90a837e441f5bb6f88ca61\n15e411905cf8d7d455c2bf8f07989ec0\nd41ff8cc1f08db6341d8f14d547541e\n79c623657fc683a54112e839a470cf05\n132df41128e6b43356fd3a55668db806\ncc3adfb500c1d443b441e189e5a85c02\n94482409d0396dfa3f8f528a267748f\n93d0756b41670e89ce2fdea99c5936e8\n2d828dc0e75a47ab760433abc0037bf6\n3f4a2b59d82e0f353e72acd01188238a\nbfa95d845671c54c26d3b1eda72fa17b\n99ab7f145618ec841a1272c8e47f5670\nb7315a68691210ebb25884c97d065d99\ndc4b21d338c4b4d1bef7854be4daf5ad\n19a4584a4d29778a78585e33b915d9a5\n14a02f4475a5df5e337758c9d9c83ebe\nedfc3a8ecc5b07e9feb0fb1dff94c98a\n2bd7f9ea0c695a309c739d3276070b8b\n23f0e9274d835f2d75796bb36346e6ad\nff62121443345bf76cff78602fbd834e\n6856b84c3a8463e3d5f7c62c7dfe63f9\ne52a477d9b54dbd5672efd73ea104790\n3fa2125a637970e2dc43f1f9f0a849c6\n8dda338160076595234c2f2e8f2fe6da\n31f6f2b4bb6c524cab1a5567c60e2688\n4428b3a883f177c262f318360c3d0c75\n5a9951b9945e67566d260179aed5cd80\n28ec688f444eeb4a394b1e418d5c594\ndd6c708c87d7160fac6198958b06e897\ncebb35bd663c82d3554a13580615ae1\n318d349c03f0926e9b72ce7a99d3dedb\na0f10ade51e1adcd8b8d299c28ab08aa\n742705ebaa879604f2e5d34c7b677bc4\n12ea5095e96f9ed185d624cfcd9a37a7\n3f15446861936b20eb1a50f8f2ea3a88\ncdf8eff26c940d7fcd1272091a2a216\n45cae393b431f75e8873c005ead1ead8\n4f11144acd79460b120322eac6386b\nb3a975cb984a8fc6cc98452c8fce6b43\n5a20c7f723b42d2b74ff95ba57b167a8\ncd9d0c82b16aed01e4db95aedeacfd37\n849b58834fec864c34794e47f2eafa39\n9ec1a96e81e1e714fa6dbbeb09c2f316\nf3f21d06ff78f426aa444c25b73bbf6\ncde799eeb40e6e8524d1772907b17f1\n5e64913f2c74cb4825680a002b1d7d67\ncb8a39997ea5433b159fbcda62e85465\nc8d02bdfb32767648e4cc49dd8a5f1a\nff7333934e9ecd5f681c36c9abb1a31b\ne9466e872848075d3aeab48ed64c0fa4\na151ea6f6bf27e2c9a7c2b8fd801b3e8\n350da53c8b5dddcde2313f5ca29127ab\n9b764d286359e0f9cb84789183638105\nfdf5375eea4c3858498a04ba00344041\nbb01397739208d30d39a67ea53079d95\ndc73dee56c43fe018047f0f85f295702\n95d82c761a54684db3690a118770a184\n611a15a623643e12fab31d1a99fa2e\n182a5ccd3c0c9887c21c5d9d91c5c9b5\n1dccc6eee1ab6f942d692d2ec5374fbb\n5bf10196a11a166466ebaa8e9b491151\n736c5f322277bd99ff21f7d46312e751\n73895e2bed7007fb2df5ba101cd14a11\nbdb87409ff3ba876cfc4c39af557e76e\n6a08ffb169d2929cda4553545dd45630\n602570deed9cebea66ae7844c5fcdd1f\n62ac1e4559205e24f9702e673573a443\nf9acfb901156d3b7dfa29c60bc1700e1\n70c43793136021289261ff87472ba275\n4dfbb9a4ee89b5b29382b62c9161999f\n7c5b291091dd0a166acb8fbfb472b3a6\n2049436c2457a4203087f84b199fd297\nbf5a771386075e449b3250464ea24783\n64f6ac23636c5c2c8a17805dbfb751e2\n7185d52bc9a5425e2f84cb7932f866fd\nbdb7abf15b1a3f437483e5069dd82374\nc4b636e2c361be9dece694d60a812f12\nc16f53ea58244af7d5297776dd9015b5\n732dde95416888ac21d25a6a55757584\nbdea41fb7dc360b57639b23a4f342494\n3899bd2eb8f9e9d07e76a21e51d48a61\nb5f473b7fb7cb7a7cc12bab62e8ade64\n9be4d56513c06315a045e7ca381c39f6\n810fac004670692fe9d7a3dffbf25100\nf7623667b09f2737a10a38d9fc3b0d4e\nd2f37af28550950f4161e123a102b12b\n8fb07bba1524168f7f6853a06fdb3f45\n8b5a96b72767f7354fac5eaf08c4d9ce\n118083b82350b53cb23e7e4bd2944793\n96f01698d0446641ea6e0950aa8ac31b\n3de6f62a6faeb80933e9820fd7ca74b3\nd89d1059b23e8c60edd8d267b4d8ab38\n45406c697e4fcbced742faccfe08d94c\ncbf33a6fa0f21270fc88f15aa2f9c9d3\n9c8a2e3431b0b2dda2cc48a1579329e\n8ec017a94a41b097b1b11b582321dc3a\n2809c09ef575f34214618fe9321a9ffc\ndee129ab8c2f74944c58a7782e1dd690\n1a9e1fb2a51ffd065b07a27512172330\n37eab42757ae1545be36894b151eda76\nf0582a84c9f7f353ba24f8032b14b71c\n462ba756d3337b475f16c469ffeb982e\n4270cebd8ca0f2593dfb5aeeb86be115\nffd0fd5aa21b9c8fb441e189e5a85c02\nd24f05f573621080af70f0a098b23d33\n36ea450f5d479481c795085b4d203932\n3e1d0fb46bc7f84f9c4081063e213a15\n6e26dd3afa4eb0a889cc5332e945f058\ncd859f728ba259b0eb5d382c7eb13b28\n18371c836b01c024b41d52ced3f83dc3\ndbff3b6424b743f6ec7770a2628afd7b\n9b1362da6b7eef2b290d7f93e1252a27\n5c67f17ab9c9db50fcf74172442ff5b7\n64a769a9a884d63f802380d5ccf70dc\nf240248beae8d20661049a5d9182333f\nbfd57bdfa26cea8b5db5515d1151e20c\n1fa9b1a775b6fd32d8d030206053b340\nf155df0854fb33a11030e4efcf938b6b\n46c594660d9fd584c8ec06d23612ae6a\n14c9e39b05dd2cf2a07f2e5419bb2c4\n4714a692a7e425285d534b823e951083\n898073ee0a493fed4c58a7782e1dd690\nec77fd7cf6e4810ea0a7b8ecc42036d5\n5097aadb04ed3518f91a08212ded5334\ne1d73ee44f1d2422b5fb024f65f6da\n12c64d690700ecd2d25ca1a27cf9bdec\nf34958255486228cd174bb92d075f795\n16e6d2d5b895f04dd3e94baac7a5a368\nc2d39973237252e85e7087f2d9a278a9\nd5b088ccd7d1a7ba8e2d66cbf6a91063\nf6a08ec163a037c310b3ff08c68acccf\na5939f4fbe1009687f2411014f221968\nd5d6824b5115b3d65167d3ead22db5b1\n90502bbf33c05edb369cafe8a991ad4a\ne1eac12837bcadcf44d2fe7d13c65f0c\nfa48bff74086eb8ad69923e104170fc5\n41f428dfe76c1788957b752c832ca929\n45c66a24bf0851246e22e2d2f64c8cef\n6a5ff378aeb44691a3fc5ccb0f902d07\n87b093f1fa5495968cb623bbd4140197\n917142dae380e5591ae30faf8d21acd7\n4abc3db68398e2cf16eb1b6d0ba9133c\nbb6392ddfeb98b19822cf0bd2945d4dd\n1d1cd29446bff16090adfc5ef6476a6e\nbb2639fdd7ee85202f58405e4baaa2ed\n1e9d554d26d4195f37ec10b15648a127\ndd724473b5eba80421844676433a0aca\ned0975c0bfab1af75f17e2852ee16b0c\nfd2f94be1061ff2ac92f2f0063445de9\na3ada0a8bc0d4b8392ababf87635e60c\n1f76e392f49bc1cda6c7922fe9004961\nfc0d0287ea544c707c65e97bab3e4970\n3324b4a3f1440d7b4161e123a102b12b\na5269c81a3d7e8a01242824b4827fe77\n1d628bde22788cb74161e123a102b12b\nb097e8761c3cafe5a35a7666f0cfa5bb\nf89e49aa0058323d677ccd99bc42875d\n5282a5a7482b317ae81a51f0a8c4cae1\na5c6d3b9945df19dc534b4cdb1fd80d6\n98a4d71b85b581fec92f2f0063445de9\n5cb4fac8452906f66ba14bfd91a75020\n871dcd6740ed8d2891a7ac029a825f73\n23c99db82c910931e2c8e43c97ec5a85\nb9b01abf4d7c9458ed756341424d6b8e\n5ecf4a1f273ae695729e474769d21582\ne38a7ba01d45953ccb7547c95fbdff26\nf75d1962eb04669a164790a64bab08f0\n6a9dcf34fdfe8ba82d8b18d11bd45e6\nb6bb7bb5927798724161e123a102b12b\nbb284aaeb7ccb54b5c4dc8ac281ba59d\n3c475567446dc6b7d6f4cef762589739\nd5eaa13bf0dae2fee2e6b284e4b0319f\nb9ef07b9ea14f4fb1dc17d595f9add09\nad0b349657fb807d88d19ffcab9e20eb\n8dd161fa61bb651eaa95bf474e195f02\nf5b05e9eedcbaf9cf4d1910799b338b7\n52e60434725b8bf8f0975d5dbdd766e\n1a4216ac5ffbf1e89c7ce4b816b39bd0\n66a71f2cb778aa726321867cfa9ee57c\nc08e59a3d09cbabf6002a1da9aad9f4f\n68a4fc70bff1e1cc700fc5aa044d9995\nc28d66941e2005cd11ea7f12f22c0e84\n2e6204b4aa7ba83fbd28395acf9af65e\n2cfbaf480d94552c43c8f1cd479ffb1e\n7a2d9d3d185cff794b85c79082892df6\n4516c31dae48a0efbff4c0ca0d98b77\n9fc580b2097a1d3beaa3086aec501406\ned9d09a17e472e0acc9692a1d1e7dea\n38ecf0c5f3d5ee533fb0920a55a7e805\n529cf5ad63bd49c8ccbd9a558eb91a2f\n8893ff22c6dae8e3a276bea9ebd065c5\ned7d00e977de27e2bdfd4afbfb3ee4a\nd475b620ef72756f795284068bb430b2\n1a98ee5b62f49c95f64616b54f9ba882\n2bb72bc8157a2d8dd5f7c62c7dfe63f9\n6bf634a79cadc9851b02cde7e81f0fc3\n31ea65d446d980162a544c9c0bfe248c\n6ffb9e26f6d0ac61e4a4a1a686b4ec8d\n6a85470c071da91a73c24ae76518fe62\n2f3bdb6fbaaf9e60eeb8d422649e5f2b\nf17247f450ab313489d3a03b2edae972\n46cb55835a88ca85eba70eb27950150e\nf84f6c14852ddad1d06e6be4f8954ac\n241b26438e8523ee2846fa729d90e125\n36ac6a08317e2c618f533a7f52262bdd\n7422a1f42ebb1a1bea9ea4147227b8a3\n5286df5fdb7ab5cf403c2939fca0114\n941c16598b8fb4f92ddfcbe9b600cb8e\n700dca3a410b751551d078b27da66690\n3077837de566c236a42abfb83da6a2e\nd53e94b52e0cd47f71dd5d95c394249c\n25913689394d86bd158b0b2e23af3d37\n792427e9b92c4de63b1969d0afef691a\nc57bb5a71ebcece8751bb40f9a4c6ba5\nbb870360cda15433e441f5bb6f88ca61\n76e8b00a0f6f78de1f82a1eb98f84dee\ne65ace5f42977a75cae346657a37ed71\n5318296d6d07e4e6d40cd81b129905bc\n597a278f80d04db46d3e11439c6c22c8\nbb5b1f086ec0012d2e80bae93fb41fe8\nb0952767eeb21b88e2b075a80e28c81b\n3934f942bb0b462a90b6c749bc63f3e6\nbd3df021605a8aa24c619b8a18eba62d\n18dd6b73f3ac2fa26da250acc5e18ffc\nae33f2b2031069e0dc67390c888f2eca\ne2e40536be6daf7615000ab5e56184f5\n7ad85d1478f03d4f4532b058befb6326\n648fe31415502db61c298d13539601a\nffa987a79bc96e869e23f6fc87a31098\nd8a44fc1f40d0ec271d096a6914e7333\nb6070e5c314eb16033fe3b9714de209e\nc98e0e745a92abccaa60d250862f15f\n31c2bcb49eebce088198059e96f7b9ac\n5b2585db758fac87bed75a82d9bfc7c\n8f032c701a2d1de772167aadb6db5f77\n5bccf9711e1cfcc914e970d26b98a862\n2475d02352162243cba9caf4d254cef0\nac2ea2d41c57d1075999f9ba82d15928\ne767c4f34fdce88a9c4081063e213a15\nae8e106b972648d5bab4cb27e92377c4\nf7d209529e47778d7a39f8821ef8c382\n609dffc42c3507212492d8a3aa63f4f5\n8007344358703f62d26c7f75d64f049f\n65988a39887ffed8edba57559632880a\n181bc7c78185f30516a6c448fcdff967\nac30fac9534c509f2de252a52ebb4cfe\n21d627f21efd9298c9b80153270af5ed\n668f2602ee2cd581a312d1c0842a5165\n78f69254fdbe4cb4ded49d32c1b10de3\n21de0761d0f8f2f9342b2a88bd008cbe\n12c1b3fa24cce3e75745b9fe8da12812\n7706cc4ddbc96d4975d665dad1b6a18e\n6a759a4b85141936e4157a1ae61981fe\n2b0b8c07582c83d426bb7052f66b6d5b\ne7a14693e9c70577ac74d552b6a649aa\n8f577d90510e94e09506335f6ccd62b6\ndbfc22d7d096f66d5f1b26547b9ff327\n586b4ef8eb5a59b39bd9aec93599c5cd\n2f1975216fc24c5e572bfae97b5793b0\nb228f0d5208fd9ac30ae9117a5a20ccf\n10953ef61c72aacccd14781dae25affc\n7fbb5bb76b0058be972398ea2df8e7c2\nc7185c6e5dd741e139b7c00cb61e68ec\n6bc1a795d199d952f97ef3b999ddb957\nb0c1b6c373c4ef3a83f09c7d0a6695f0\nd206f9b91dbe5693cc5743e8d662956\nab20e7f54f10bd0ec1f8c53978a2ad35\n77fee7e689d94e0f3637439a589fcdc5\n64f160a87582cea38a57abd4646e319\n75336682aa3e245f80ecbe6250826360\n99c0bf1f81b835129857176349e96f9a\nbdde8a0134ad5283340f0692b6ac89e8\n9d9bfaf1a4d6c3a05f8ab9d7b9f9d24a\neb712261aec94a8ddf8fce61d01de43d\n9aea8bba40aa793d9429f6a938b3978d\ndab9064d7c98acaec5aa65dab0a56ab7\nd89cb5da6288ae91a21dea5979316c3e\ndc004210d943c86073b4ec5aa28d567a\nd1fe596d83fc231ef300ba2413f318b5\nb06ad1afbbc8ba7536b34d1a0ff085ad\n767a4f06f66596a4d0e90ab6c6492cb4\n78e7b27f68570f3c47dcca01880c200f\nd10085421b3cd3a27504aecf4baaa1e\n55ee60e04ea3816e94accef64b26a3ff\n4744bc26253dd076174f1b91e00d9f2d\ncf7434589520c549e420fe49ae1a5a34\na6985e8e32df69a7fe50497d5e2cdada\n2eb7069d227393558ea0068b966c5177\nb302ee5206ec79c34ec31516689e34ad\n165531f6138b14eb107d63d06953370e\n61a9c9dd90089425769ba004c0947e77\n17226b72d812ce47272b806070e7941c\n5e70a62a7a1bdac5590b59440deecfa9\n191bc5c03d27789379857d0b1bb98706\nf2a27af5dba2217a38a57abd4646e319\n9711341338f550145b778a830599543\n8826871281dc12951072594c80fb7e4e\n9cd4467976a27ac9f3b65283778dd624\nfab433a56c7734aa16eb1b6d0ba9133c\n85395b5f99177f864311b8458795b94b\n981d4ebcfcd3c733701bcc8e95172446\n300b49e25538c0ee5088116dfed138b9\ne80b420abf6c590c3841abb8f4ea69aa\n5664e1d072c3f39dc39fc02d4c9e2419\n771a0b1638955f3946f539968f885949\nc4e4d46434173023ddc138ff009971cc\nbe2018563a5bf1a088fe6ee2419d9481\nc0c1c344c3bcea10c0a5099af057718f\n38517a97e7eaca1cf801e8fe8a186462\n2361d8f169a7f3479ed83bc63b2fb8ab\nf3d4cb310a6106f5e66202687a227eab\n3817ccc2d7a247cbd821b4c6abf4a2ac\nc32dfbc85ddecd0eab610b0c94236463\n15f23ffcc92b751af7502a3b84f78df0\n8449704b3c3c290ec5243a0ab191990d\nd54253b71f017565b441e189e5a85c02\n85e99418c109b98e8324c9a156c64d52\n79f26b0be635b891631d57ce83092826\n6f7689fbca875b034302674f512c0e5e\ncaed0c8c10f5738bafe08eb441adfc09\nf0482a9b7084c6f8c83b51ded97d6038\n44bf642d0b33752628fdea86734e40fc\nd8142f27c166cc21f103e4fb531505b4\nf1b1a1badc8ed7e739d3eeb007af69a3\nc12a485b4241be83b70b5d25a1334116\nab8af4bf679eb599ffb8194c06b9bc3c\n7c16ddd8f3d099dade6274736c2a6b68\n45a4d128553abb329bf8498db368caef\nadaceffcf1d89f9552b499dc8d840804\nc0ed587c1ca5709b1c9fef7c3e095105\ne8428a7732155fc1134821a4f2837ea4\n2198dccbee4d38e11a23ce2d1a5d3925\nd4d94e7a1f75a67e3f7b7c3393bbad8\ndddc8d8cdd6361e49c9fa9de1518212\n2c4bcdc965d6de30cfe893744630a6b9\n9cdad8b178d7743326782c9200ca97fc\n6dab3e32b5cb52f1d67173c00f9e1676\n7621d8ca26b9296b104dc10235c6ecca\n2ea0fcf4f443b36c5516f88085cb9af9\n72353901edbe553ef5f9c04ae80a1c59\n3dd60d646dc8a3da988b29896df44cd8\n2112d3266c05ad92d99bf9137e86c0b\nf84f47c7ffe0e49e44175b4dddf5be08\n9da823886a808f7da8f1d83a370a51c0\nfbe9615a45afa17524f0493013a8318f\nbafe343788f824bd372d432893cb48f8\n1f6cf74de609bae7f5542066243014cb\naef2bbdc3b1e9e026a5e01bb88954fd1\n98b12e9101b3d93c972a63e345b45a25\n5c16184e52d1317f5c188551f03b75de\n12c3e644bc371f30366648d52e38fd70\nd9c951f1008183e69755c35f0639c9f5\nd8f4c5160059ef245d79a44cb814180d\n2c1e2873955b563920685b5a7e34b501\n70df1655d1e766ece537be33cc045ee9\n9ea0bddee8c8654d6b56d21c51d762b9\nc8223ca4a4fc81b3ad1f278e1513f3b7\n646b0bd4e03fba8d566636e42679cc7f\neb2b450565c77e3efc7ff8f848d1c6c9\n21ad9636dfcc9578c78df40cf2e9097a\ncaa4afd404f24d21275c1147a304ed86\nf7a5ed426a6195d97c8d48014e04ccd1\n956f4464a0c344d621c6aa624f82ef1\n83ceb90b398df731a8b411915b2949d6\ne3201a9e4ac0a8a9e255d96ab3987a\n581df3d934bbb7d3206de7995cd4a74d\n928c86eabc0be624c2bf2dcc31ba1713\n9a24880343d943f7ec059109909662d2\n65d100a427b8078de1fb8c5792a5768b\nfaa79bebcefea4256a4b4e0348cf692\nd9bc4b2da5df08b7eedaa5970dd41792\nf5fc954736b06be15fd06491ae919ea3\ncb0bbe56efdc7c2590fbc3d35abb4728\ndca7417eaa143de13ccf3d40fbcf475f\nfc542f42b786ae20c40162916d18053d\nebe5a5c179cd4ae355b9f0c05f9db07c\n2d5d4d79cd464298566636e42679cc7f\nfe314324a1e7e5c967a964feaf6ebeb\nab64dabcbaf1086f14d199c00aad9da1\nf3bfeab806cc976072052f2ed83934f0\n7636d7c650108b884dcb5392aaf2167b\n478dded38f3f8d52934a98c0476fcf4b\n518b97c2a0892aced88854fc3e3ce05\n1a92ca1592aefb2f9531a714ad5bf7d5\nd9960f7455676e94a0a7b8ecc42036d5\n666902d92f3c8e3f8ee4af899d7fc545\n3aee103b0bde9cd7c16bf14ed6ef2f6\n692db5a6fb6cea2174649592553d1a1f\n6eaba6819fa9b07a37a807a435008662\nba5518af411cffd8cfe78be5b7b99c8d\n4a21927379f965a9e4b68d3b17c43658\n94525af6a244a33c21d7ca6ede0e9373\ned90f61317c3d3598435a9b7d922cf3b\n68dd0f25329c5779be95cd31e095c9d4\ndbc61cbed5f7f2b33c1abb78f1519c49\nd96fda816cfd848e9aefc6fb585e9617\n33083674276c5cf5b07a27512172330\n846b6c8cf241ce2648d13901d1f48e04\ndede15a6e1d27b9bd2458bf307c1dd72\n5bace77f1df591e9241640224e45ebea\ndfde382270f1d69a28010a96423245ae\n2cb149b137f5182ec2c4d83da2705396\n2d56817501cf5fdbf477ab3f8ee0ba9c\ncc1611b5120b8aad9651cd1d591d64d\n2d8a4b48acaf84d791bf924be509bc17\n1984fb95afb6dae5804722305621f918\n3813c5f6f50bb28a3e2061cce7606c61\ndfe294c64407f6035c6271c95adbdee\ndf624231ef05b83d54c7ab6aa5674ccc\naa92ecd31491bca87a88a2ad67bfd073\n2a08ac484551337a90eb6645edb4567b\n93b702bd7ae98bd16942161d780bcaa0\n37a5faaf0eb38031e0e89fd83955713c\nd7ab9503d7f6dac6b4382097c3e8bcf7\ncfac66fe0cec664a8069dabf6dffa846\n7525e9e986fa5059f64945cf4aa3c1a6\n6946bf798ab999b7cfbd2b4a434b378\nefae87e53a1fbdf05dc3653f8341633a\n93e260150e7788ab574b5684eaec43e9\neb54df4a6211364d49d7025d277c28a1\n1308ff4c4998cec02918c93bdb2b63e8\n854a48e0d902d97f9ba2cfdf95405270\ncc4b7dbffb52fdacaccd68c8aac6846c\ndbcd5a88a9d4f1d7579cfe4420588034\n31ef46873b20e53274e7ea1d002bf071\nba0f98e212668fdd22532be027c41b0c\n3e9af28eb2d6e216a4e3429ccb8eaf16\nd061d2b6c934d0cc8b4b5227fac4401\nde5813ab2771ed36c3c11bfa5a6c7ac9\nebd183cd1d075dd3bed06f4e613c0aec\ne817263a3acf985ff6c7cc6dd504006d\n51fcf8537a132b789058e0e56fa89a94\n115cf7354bf5926331067bcb59115bdc\nb4386438057e85988bfba3df1f776207\nff512c4ebd3f9e27f08984f51debc075\n9e087d56d1264f0bae8d825afe55a6fb\n7a89e5ca49a48bf6fc22823f73266007\nc5d14b600ba28289ef2d91f96fdec842\n1dd3f80712873a638f6095a93258c867\n22e8d055ae154efbd12a1bc232f6622c\nccd6958947505b34f9f3c6290096f50f\n9329eb153c1e8b4d8479362ee6ff3679\n8f9c63f788d0044dedea6f8de4918c9e\n415324f27ddd70b4ec3d7b1a84909dc7\n21e8d146503b0e72d9651cd1d591d64d\n3b01bed34001c78211eba86b475bafe7\n44c3e596206ce29dec86cc96197c0b31\n4d11b3c781f36fb3675041302508f0e1\ne6a0a8940246d5bf4e104a60eb91ab8a\n4b2a5a666ebcc1ae57c0e3dc4a759a6e\ndb13ba7f1da5dace4ad2635b7d12d09e\n5145c2175f9db9d3f0478431b5ad57db\nab8cd6dd65cb0ca9770f31b5d5715b63\n782655d93313d14726ee873dae10ece7\n9ab58a92609d8f5030b540842bf7e90a\n2c5b951b726b7672c137fd38f49b032c\ncd71c33773db5570be7e507ed67c0331\n75432c09d6b34efd336e9e51cf4eee59\n2a2369e8b0a139f67230cc2111ecdc77\n7b0327ed7286487623ab4519e0263310\n3c4382b40b0e9400279326882e8430cb\n6ac7bd79924399c4a0778cc08d9b97f8\nc4a41bdc2246d79743b1666db9daca7c\nd0792c5556bdca56d1f6a4fe2f47b311\n1412e61a9bc08ac4e6d9f3854f1baef8\n252640ae350a1e53f119712971a6882c\ncc5e011d644edf395eae7316b4dfcbbe\nef7ea1a94404fa633c1661cdd6e9aee5\n631ebdea5af51e499399ee63318a21b\nd4d8dd7053596249bc1905b3bc668597\n61d0f582475b3d2089b367279b017ccc\n7a5a80c7a2d89bc6728fa2df514c65d4\n59e53aaa8d8e9d5d9bb1951c99c5330a\nace79948f769c652fdccfdbeccce2c03\n30b5026e1c3f8c8a93e4d36e0c61da87\n993e7df9e8166312af8f68791a7d624\n2d0b890161ac04b4a4d9f38918617d27\n9ef960721520d46a922e9adbedbcd67\n5e7034ba47012cf088c7562a134f5ac2\na6a5497848d40c4a46738cc3b1934e6b\ne42fdc1419328bd7efdd13124d5ebc47\nd83dcf0d435bbb87b6d41c42f7ade8c8\nf39b7f08d4ea066be57ac88f5432bb4e\n817aa8a9ac7f57f9dd936ff7b4023f05\n50575a330ffdc66ff5a91610a18641eb\nbbfac23f57b5fbd820e867fd9fb7164\n75ba7901816b273fe24979df4ff99c50\n4407eac60124e17789e75af9d2c4ee4b\nb13c22f9eda41f328c504ffda4ce2aaa\n15ccd76ba83a2e02b0f9d182eb000fb\n946ec8b571ca42d378838533e331d3cf\n9b6d300449f7bd573cffc71116771f14\n4230f614a9d9a13625acf8f19a51a492\n3b188ac95d09cc149d74e2a2b8c0c58b\n2f12da0c7460b22cd3ab2bc0f53ca878\nc0125cb175a11bc4990549fb11675099\n195ab29b4e0bcdd07b20cb946bceb58f\n87f8c79413300052252cde31666379c\n78c2861ca4574a8fd9deb3f829cc2475\n28ce23d5e56e9afa8fb952c92850e1dc\n36255c016e837e6c234c2f2e8f2fe6da\n3f83beaa4da6209dca62ec94d15d08\n149733a616f846a2b661587eebd6c4d7\n4e49873292196f02574b5684eaec43e9\naa2f94416852aaccc60dad40a0c0e85b\n91bd5e0ff352d942abfcccdda2fa4764\n31512a50c12258726ca2b6e5474aad11\n7c889c3c89dd0933ce2fdea99c5936e8\nc514d99259ffe1abe441f5bb6f88ca61\n765526579b03cea972a71697434c2820\n4d033564f0dcb412afac285245c66df0\n217e2634c55f240c18533b168bff8839\ndada218e78c9c81e2250bf58700b4d8f\ndce03c1f0b8365c335f8aa71d1d146bc\n5cbdebf9422d9858dcabaa2ad147fa73\na51ca49763fafecf8f25f3eae9fd9c7b\n11c041a780cd7e58e8b612d9fc824411\n5757f2fe8b1b4b559ee60daa6185f65\n25c6bdd929f9aef77d6fbcfb6b291844\nf82557870d71f3a11f9b5b6530d6e16\nf3ab112671b02010be54ae8147665701\n8798383e9e4181d3f4c39a35147bf949\n339950e98c5d943a20685b5a7e34b501\n57093dac689edcf2cd318d8b7a33448f\n5f248c8e804af22f6436916a86a90ed7\nb0cc3e614afbe6546892efe917403e6c\n9727d690fe514475ac5153554deeb14e\n3317e93256b3f4f15e7087f2d9a278a9\nac06493582be880388c7562a134f5ac2\ne71f7231406aa6ee4019d3f83e009e77\n76b4b83212ffcbe034af0ed44f2ab2fe\n87882e55a8914e78a3cb15c59bd3ecf2\n9297e108b9780fe7da0ccb8671dd235b\nab729d209e3ebe2fb3cfe9e599b99e13\nb7a259bd391ad43c69b642ba22680f87\nf1d77e0f4a2adc2bb305a938e0ed1b48\na7dfbb06cf1803b0b6d41c42f7ade8c8\n58426d216f393034d24e3068806a8c67\nea58a7f6955d740fd18c7d7f7c43f51\n7560f6f70263aeb9f5b8dd4ebdc4068b\nf4d398256e6ec0b4f910da6a487551c\n2608db8ae887c6e0b996b003c2af3823\n68e75f7265569b8ca2d7e4322f7f9e03\n4476577ff4776f5fa3ca88ef9e9610f4\nd3bc26796e7fcc6b3956af37bf042355\n7fac92e1ac6e11945f6762b47fc0ecae\n7467b25f70675892d50c22be0354e623\needbd3126dad6abe5de04aad18bd94c3\ncf4c78178c9dc8c292df4681ccc21025\n9e1b897c08a6a91f94cedf1e55d56e03\n51b92bb1df3b1a10ad1d87becf13ddd9\ndecec5d8e1f9f54e1a5295d0078b5d60\n87fb8857bf2bd3a7420ada7b49a056b8\n3fcd048b1daedbdeac22ae9309c09ec\n862ac718bed40aef2715de3ea7b582d7\na03ff904fbcf341ce333e1b65ebab960\n74cb25b4b8b2b89df9f3c6290096f50f\n8c4a886b6b2c8d94d7f301df5d83f77e\nffc224f284b63b17b0f6d70666df2668\n5f2048a8af029336a186ecbc0474571d\nd34a267fb332b052901fed29c825c894\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/03636649_test.lst",
    "content": "845542d0f578a9db1ec48bc3c478566d\n7fa0f8d0da975ea0f323a65d99f15033\n9dad7ce60aa168d72cd2160e449d45ae\n7bc1b202ebf000625949e084b65603cf\nf7627b6ebf92fca6d3f6d823f04dd65\n99d884a5b3a6677bbebfb887e83028e1\n2ba14b4b910e3f41d983ed4f6d016adc\ndbc50a84c8d24f9168c981036afdae64\nbc49fe3559e18fcb7d910d51d878f708\n545672cd928e85e7d706ecb3379aa341\n761fb0822bb05bc8ee0cd746086d989\n923097cec128ae77469cbaa3d6420fb4\nf77abf171ff5968720331d4c3b7d944e\n526251a7530426a4b3c42e318f3affc\ne053e531fc4341b5fcb8d8c6d4df8143\nd9f6bd064c9fd456fcb8d8c6d4df8143\n73378b714c5bfed2b922d818b19db1e\nfc8cfb4ad6730207ad90876bf5435820\nf7a4590c54e2ac7ce62fad6b4f42c880\nb6989c99bba1226539b3360f500ac52a\n8f2e03f91a970464ef3a2c64cef919d0\n23c41f1c519c82202dccb0b1a2845fc\nbc704db7b62582e5d1cbf3e52b9b6237\nc906a9c7ae536a0c7fb7f79251dd7727\nafb7cc3bbc3595a4e9b3dff83c7ff715\ne93f10a58e0da99bb2920cf5c60c4da3\n864ecd5e816326dc2da4b3ec05850371\ne001d10c9aed09d9947a4fb398a91722\ne062fc06dd5e0e01469ef73f4f6c51df\ne529fc190753cc9df647dc544bb0ab61\ne35c4fadbf8d0426c26e81144f3196d5\nf6eeb5d67c32616648fda83c10428379\nbe13324c84d2a9d72b151d8b52c53b90\nb2d5929e66044aeac7db9c21ccfbc4a1\nb69c3a0a46b932e3d3c1fbbc2200e255\n370623095c9773e42ce7d46577f8a9bd\nf673fc77f397a061d49b2e04785f8492\nfc03629860dfd3608ecdcdc5181b3655\nb8c87ad9d4930983a8d82fc8a3e54728\ncdbe11124dbf418167ac0fa90111fad0\nc372499c4fb0b707e262a7452d41c334\n33b77c66e1f849b790c4e2a44fddf755\n3834d7f376879c03eca29403b7226aa1\nc26b7862f2afb7ee4b3c42e318f3affc\nd34a10201a5448a253cf897b7fc1d12\nc6424950ca9447627d8864caa856253b\nb4be7d84e2151a3e8bb3deb7fab7c9b7\n9c0b48006e3f6aeda1dbdc0360a4cc99\n42bc0dce81734d892610e2a20d7c4b61\n1475fe59961fc726f096eadaad23f93d\nc6612c884c025a48f647dc544bb0ab61\ncaa8985efa72ea528d6a77b750ad3e43\nfd15a43ef545096fb6f5e7b313e4eaae\n98cdb45ca9925feb194eb328dc97c7e2\nd779977c2417752b815c6de5374a8dd2\n4d6bced89943df73b4edf02c99e16daa\n14d3d2418165ec86bba785994a529f86\nb8350fcf08ff0b2ca950bf8f33cff658\n2af78c0b040634e5881cd5e2fd8f0f3b\nb57bcdb88c669663ec2a7a1f5fe7365d\nd1dc19013dca2182536407ae4270b9be\n1e91664763d371937dd73da65dc0e6a7\n70b78b9439a9de7530f6e0ede20c4525\n466af3262bb31094c35131da26f8061a\nb8e25e0825cb5db7765609a3f435fe9d\n4631e756666a8a208ca4aeb5e3b33af7\n236e0f8f6e74578ccbc9e602dbf6a4a\nf29758075925a871d706ecb3379aa341\n981b55897cee64403c8d0fdfb1cc2535\n92e0f64c08f0c8ac3c8d0fdfb1cc2535\n69429d8ffb5009a82060e7309fc3fc6\nc9a0c193805df62accbc9e602dbf6a4a\n33d0e0731c771712eed9bc72790ab85e\ne88e3d0c851a00fe6764a784715fb668\n26f0f37f0f2623c4a3fa46ae73c48b4\nd6db6a800c1ac87bcd783766d090e665\n4bb676c497969016de98d10ab5975b59\n5f0a23ce527d0be52f38c0d2792fb5e\n3781aa0aaed95b8049244b68aadec703\ndac278ab197b5efefaa6996ece0d86f4\ne3ee6b31e54e95b7d42b9650f19dd425\n8e025c4aa0b0201a81a172d69c52a28a\nb96c8cc6529167bfcb8d8c6d4df8143\n52783aa89adf06f3250c527721570ba0\n68491d576b5d35aade8e7376ce4e111f\n9282928d320e83091735ea0e092a805a\n9f5c3ea9f8254b8bd42b9650f19dd425\n20e1e4849339e64f5077539b37310c29\n6bb8020fa82b27dde11a3e838aa2c287\n71dffdee89efe07cdff00b2637ddcbde\n348d6ddf9e02cbddf647dc544bb0ab61\nf85f26c5a807b22312bea13341a54c3f\na29aa1d787d4d3252cd2160e449d45ae\ne6de1ff0564f172ad96790493cac7283\n66cf69a98ff895e2b55fde51a411949f\n402f7ce2b87e7d1ac066b9622c005c53\n88257c5a48d94b1e2b151d8b52c53b90\n4bd3f50f903cb1bffbaaaf5884f2c88f\n7b1fef0071908d4bd93768e7b9b1eabf\nea5ae3cfd142c3b923f93f957094a824\nc905941a8db6575fd5141de389ccb29\n703b4edd4d407a10f8ddacb75f806b29\n7bebdd742342ba93febad4f49b26ec52\ne37796d40348fa5fd8013bb984303089\ne15defcb3dd448094fffb007974c9976\nb4aee889d5e2a826f6747912091f1965\n284986b4c72d624abd73284bc3c3cbac\ne94aab17400945413225afab722d9fd2\na654df55875a2104d663817442d5278\ne15960ae59486c464ccb9dd377d00737\n4deef34d95367b58c0d95250e682f6ee\n35975525ec3d835046f58f62995211d4\n7ad15667f654fc08664b3b9b23ddfcbc\n1874da9ffb42f3ee990f8ee13a15ddf6\n771d4def2e44bc169eb34048e600e1ea\nff08713d837d87edf2098a9f7fc86999\nd8a5c77da4c92921f7258dec1a592c96\nd97a86cea650ae0baf5b49ad7809302\n994e14ddae6f642ca0a1df19404132e9\n1682d4404196cf127588e2ca59b15f8\n49cd0dd4d1c008edbbc7a6acbd8f058b\n70bf2aaedbf9499ec889c00efdaf9928\nc0b0d7e15d3dfab1733c22d8b8e1c33d\n927e0654427c4d0b82241d99b4e87f38\ncef0caa638ab9be03b1e8527d043af60\nd90639e69c82f864eb2d9895648d1206\n58e0f2ca80931a77e99f6f079f038d\n9fdaafde365beafc37f7ce56c66316ea\n8bd35721e2767dc43225afab722d9fd2\n9fc3ddc511f4ef62dced62abd38a02b0\n94940283714fdff6244ba644cf33cb2e\nc89d854d5c61e751cdd3c867acb77e12\n28793511c46b4fa030f6e0ede20c4525\n57c1bc69df779d87bbc7a6acbd8f058b\n6efc48bb9267c2ab4c6deb9ede0648df\nc802fa4c82498450af6016f34c89d087\n2d638c6b6b2feb9248da169d95204ce2\n3deedc86a83bbf23f647dc544bb0ab61\n4f16fffbe480b835276206fae5d3c473\n122fb7bfa09c184ca249f8489bc060dd\n894cdb80665ba73dbfeb5b5bfc3dfc3b\n796d944631745f69275286bf1f79c201\n913ba6b6ac6aea3356c82fefb25b338b\ne7ffebf4dd9176542cd2160e449d45ae\ncbe6d8fab4be74a11735ea0e092a805a\n88d29e1350eda810c066b9622c005c53\n72bc0272ab1ce5a3f8d6a4359d6a181b\n4c266f2b866c59e761fef32872c6fa53\nb2f18bebf6566bcc97554b6bd947feea\n79861fc79f8dd8b478b03575bb54dfd4\n389653b54a3b5d3cd73bf61f46c61ea3\n292f1f97a543d735dedf3c967c85981a\nfe02f6594ed8b96ae85a3dc26b76b2ae\n4d44c896993e80a11391d5b018495c2c\n3e7ef877f826230dedde7b5a5ea6d004\nc4dc0ac169c91ff29f8c3d2002c77ddb\n78b7adf1f72ad31a841a2fa612410176\ne688f147080f123828eb8d149efa4062\n1f115309bcbcbc5326010ae5c9a5e78f\nf228f6cd86162beb659dda512294c744\n5ffcd5bc4f1548181c7f081cf615f39b\ne99793b871d27333d42b9650f19dd425\nc695408a86062c4d242ea50288b3f64\n31c9507ec40650d0d5506bacc83bff24\n438e9c32633a7094056b9c3d62d1efd\n50683065aa8bd6bec308dc58cdbda034\n3fca250636e2b47a8d0fc77aab7a8d33\na60c6cf7d4893f2ba26bf7a8fd4719ad\n8935987356200f8d84f9e9db2fdf33bb\ncdab137a52000da1b0957d845ac33749\n1d963d5c54613202b0aa15078ea6f391\n913ff6452d0ea43c9d62807daf4a2134\n9af818e49ae8a9357bbff3af6bac359e\n527212b174a5313fdd5616230e7f3c5c\nfc602899fa852d6878aa68632c6b1d5f\na68678b3e52fcda2bd239d670cf7d8dc\nba05811f301cdd791735ea0e092a805a\ne7e45a8f0b0ab311c754474f0ac106\n29985e44b73051d923500a5b036df62e\nb4b15a84b9067f94a75d03186a0409e2\n69a708be7245f4c9786e8e92cc08146\n6ccb43088eda061dbfc838749f053cf9\n2ce7732982343c1d9792f6094a78f8d5\nf3a9cc3060fd6b0e6e4f8fc909e0d34e\n947c6753d77d8082290e2f84c414e6be\n5be8cdad3b218e373d39d8012919dd25\n6595ee36783d261ed3281970e2c44dbe\n5d3d9d6a6721646e441f5bb6f88ca61\nb02bd8e5ef9cfe354b3c42e318f3affc\n7634fbdcaa6b304d62c83ac1e3a4ebaa\n5580b95ab8e7806c6c5b8009db95f66f\nb4af7e9a7338a9a3225afab722d9fd2\n43b59fbc4703d7d1c8e6d2030713566b\nce621e6df1ab9ae35d2cdb96c1afe34\n6ba931adfa36c7965208aab875b932bc\nda8141b45da808199a06a7de97b096dc\ncd80cc92cf732e8d8a17805dbfb751e2\n4a868756ae6404a5c0bc57897eddf6f\nf29a94f969dd55ffc35131da26f8061a\n85f8a8c585742c9b96a3517f50eeb9f4\n746b82746c6a02cca5f600ed2cf472ac\n907fd296708ae71dd5fab5deb286066\n83c0ad378b5802b73d39d8012919dd25\n5b744ac897fe8bc557f40ff86fe708ff\ne2343ffc39e5f4bf85a18a4e86f89dc9\n61b57e8b5da8fb13d527a9a6f5a872b9\n50cade4e6f714f2fc72e6d708486db91\na37695d83a39adb52866fbd701f50f71\n3a0edfd418e020b97f32712aef0efc5a\nb2347fe81bd2db6a4b3c42e318f3affc\n6b10584984035b088314f68ce9e12e4c\ne507bc77c03a1b3afcb8d8c6d4df8143\n9b558be5e2b60e3eb09f0ca9c143fdfd\n1f58b59a1b6b06df766fc93a239bada0\nb1e552b454366a9d7787152e5befb05b\nc898f9b1dddbb8801735ea0e092a805a\n77883e18cc08859ddb1afe6c464e7652\nfad026744a6abb1937cf479d4bb58d\na53112591be182b9d93768e7b9b1eabf\n3cd21b83cf709f1829a42a0444436860\n5a957ade80507541ff2c92c2a4f65876\nf97506704760741b460fa882e24b7e4a\nd00157a022079bdef3655a2ce983ab1f\na3ff2bc2ac65bf093aa7852a81a014bb\n1c05f1a7125402ea4c135b40422475eb\n5849d1a237cb493c659dda512294c744\nd2d645ce6ad43434d42b9650f19dd425\n1a44dd6ee873d443da13974b3533fb59\n776e4b38023091002cd2160e449d45ae\nf38370fc4c112017a6e7138fdd58748\naa5ebe13f6d51761d197f67767b32741\n45f11cb4099c9c87bbc7a6acbd8f058b\nc080aefc6cbff8c81185ac82ed4da80d\n783b81aa54a69a26d42b9650f19dd425\nb2e46fb6018d2cf2d93768e7b9b1eabf\n4916f793d87dd184d42b9650f19dd425\na4c0f3aed58f0e092fdae21c212bf119\ne178ab3b967c7fddc901d9dddb735c9f\n3766b272cd3836cf28699debac30ad6\nd456beea1501f278f70220cd6be776f7\n44e442591f82cd4cab0ac374f450cdc\naa734f5c5dab1e672d26f74bb535ca48\n31a15957bd4f32f87eedf2c7d21f7cfa\n1d5ed34e8ccd86a88c94c2386714981e\n7be01530bf43f2ed8a83637b92bdc7\n6aa1ce4e245001589f1a71e46bbde97c\ndfe800d8d8642e9647bc3701b998a7d5\n963e6743370d5c5c9b5d51fa8cce1753\nb2ed0a4a8caa5139295966c2452536a6\nd4498a4ba89b9a0d4a73e364671ba824\na4c06cd5032733af543df75232f6ff2b\n2b194d6bed8daa82c0b2dda5ff15ea28\n64eaa45bd2e01db8991ff09eca5b27a8\n7daa2c16580e9f8ee055d2b52a9e17d8\n1ea51a962ebd04f5775b45d31226d2b3\nd4bbd93c0d85e77d7934a0d24a61231\n3b5f0c01c2b914fc6f16f167d27a7dab\nbc218fcb647e7127984fb9ec7e40829\na0e1732661667683664b3b9b23ddfcbc\neb311e6232cb7011bb5bd941c6665c21\n7075ee8d16f012e350a4c7031a41d126\nfd1371c24e12c16251d6edf97cc5502d\nd438e1e1b540a30b1f329c416dca6157\ndd818b0269b1aa15fcb8d8c6d4df8143\nd7760d5f9e1e6a622cd2160e449d45ae\n97b7d9aabe38f91df11c97be803c47d\n445724eab48f591cd650d96de5aec623\n2ac7f0509507c6cfbaaf4e0b7520fb81\n7b005e23eae2768eb08c032bedc99529\n8f7863c4940c99211735ea0e092a805a\n23040992da19679aaa7cb30470f3273c\n7f518fe982aae1b5940c8a2639c8747\nd13f1adad399c9f1ea93fe4e1ab627a2\n78a11c0b8e964c9b41657e31b569b105\ne6dae18d7ffbb7ff952c851f81463faa\n39af776c1435a3374b59758e9336ca87\n78b95abd1d1158ffef3a2c64cef919d0\n34020466b4342812218c9f1216abefd\n26f725bb6578936cd247b9308cd5c441\n93a984496599a5b82b151d8b52c53b90\n5eda619e5f36499fc1537287b5c50d9d\n7c23362b39f318cbb18d6f615cb18bdd\n495af808806f1727a753b1b88fff4abb\nd0fde1daedab10365240248232b90795\nd42435906e79e4131de8e551fc6cf2b0\n3a5a0f4c78e17b284f0c4075db76b7c\n427806f30c61059c22e05b5d2ce39e3b\n1d89da4ac1538ada9c949ae6274aa016\n600b2f00113ad714e2367b9e27f16a71\n77d1b5aaf145f8905ecb3cc57fe87cee\n155c83f40406bd0c48d945252c13120a\nea71ba1d8d8c8e5888a1de3dc61bfeef\n8581a3ae1f77319ac066b9622c005c53\n90d70f0a6b1cf72d79f0be73913de469\n5bc478e9c4e0bb8180936c51aa7ffcf5\n7591d7cc9587643caa5752b5743a662b\nbc40c19e71fd258046f1a7cdff74f3f7\nf7093dd024fd09fc7219d6d5c4afbaff\n4e54fc131882f2233c8d0fdfb1cc2535\n2f6f1fe66631572c6c5b8009db95f66f\n3b64d5033c580d2ef76898f881b76a\n9aff9fdad0e3555c7eecb4e0df212ad9\n4cf8166bbaab7c816fd1582e84bf3110\n32c0bfaac424ae9bf51f77a6d7299806\nec8dc2311d381a9e3d39d8012919dd25\nc6b545ae1a7b180879c251b4a7838829\n2b79c0ed9fc840e7e64208ea01814e71\n49749cf225cb899573ab7b7128d466a2\nd3f84442201b6c137fb7f79251dd7727\n33147aaf3d2c6fbc137af984a9f45d65\n34ce1de178694f87e76bc197b3a3ffc0\n280fa01686e780ba3501c961e91ff6d7\ncef6757831b4d9738c8f019f17f4687c\n89b168160388c29da996f5a90dae9cac\n86d7a728dc35d634f800b597bc1c1eb5\ne485053f3e0d18252cd2160e449d45ae\n4ba237c2c40313f373b3ec02b97cb0f\n1ef03aab18277ff1ef3a2c64cef919d0\n5a9e0dd068e2436bd7ebac63aa51083\nb4f166440439171741657e31b569b105\n53afad2e573b26b141657e31b569b105\n7972fd0fe5755b4ad42b9650f19dd425\nb78bef16d4f44844931e98da3a93e73e\nd16bb6b2f26084556acbef8d3bef8f28\nc25cc72cd06852e75bbea6ee257e41cc\nf12822778713f5e35b36bbc16e99b441\nfd5f6ab819910a66dc7f95a5a82e36f7\n13ba3fbe8fbc53f3ef3a2c64cef919d0\nd5480fd1d05e8962d42b9650f19dd425\n31dee666120727b0be78c8b300d2a963\n55077c2175d97b8889ab11a408196888\nce406a32bdc610198ca4aeb5e3b33af7\n92c2c146432ff304153c1c3f0c464db2\n85f71a4724fa37c33d39d8012919dd25\n941271c5d9b192eaccd8f9b9403fd602\nb230c6d9aeca66e52633ff66beb9cf31\nab3e153cd23e992b576a354bb9319732\n1bb465b8f22315d1116f219d90a571c2\n81894e0739e3fea9d49b2e04785f8492\ne5e9ff118631c2a3ee088de33038f12a\n19388898dd69dd9fddc8e6d1ec6242c3\n2a52bd01472ec7e1589ec67c01f5c1a7\n777a686890d74b350359b4e03cfdfa\n5f7abec29905605b1a19392327642641\n85e79f31c24f878cef3a2c64cef919d0\n17349d6d35aac0685ed28d6c8a1bdfe5\n2958cd9fd799bf02cfbcbf340cec6da1\n8adca6727b3275cc305056296c226e1f\n3b90765f78db34cdb827dc66c75bf2d5\nba05f660341b7b7b70be09f44cb2fef5\n7691ae0488f3be56f92cb63577c2f16d\n330b05e262c93e216078c74a96498820\nca09dc8016291c171735ea0e092a805a\n699fcda4f4e9166ec5eb7aae719027b2\nb3a98808fb1ccd892a5041fadf25a502\nf9259d31df38bd5decd204cd7180226d\nead77648c9c7dbf8d42b9650f19dd425\naed950102f1e9c7a659dda512294c744\n8a9f2e5b726ea37f60ad823977adaa23\n522bc10920249e67141c66e2b49d221\n3c4d8c4ebe9dedbc2cd2160e449d45ae\n3e2d51c40b37c9c086052e834fbd2c4a\n896abd405c79547086485c798787f66b\nbf792ee1a5570858d0615e6a68ba2d50\nb88c9a7aaab268fb42b08fbc749346d6\nb37e07ac31fa4f311735ea0e092a805a\n76eb7436c40e083384d184bdc625781a\ne180510d07b65fff571108a6d1e94edd\nbd1cbcb990375022b45fed2806c331ab\n9d41e23f00d11d153033d35b49a20c8\n77a7d38645738e2212c5719ce6179\nddc2d39dac6e84506c5b8009db95f66f\ndc8b9cc431acdda473f5a6f6800a3e79\n1f4df93fc1ca81c985bde43adc8959db\n80436dff2a30721849655ac7c771b113\n2c806132ebd0fa0eccc87962551b3d9d\n25999cece7e71cdae8c9f1b00ff43053\n90b0f9a1ac2e54ecbc7f58784fda27b5\n213d911cc489c352b5db3f95d706a0c9\n46811f96fdad80cf912acc8c54e7fc1\n90651b3febfc3afe15226aa76eb7c3e\n670ad2964ad5a98c9f1a71e46bbde97c\nc43c89d862e10552b24ecc319936dfe2\nf46d1e234c05fa4e62635f8519c19a80\ne5ff9311bee487f5ca4aaad7dc0e3a16\ndbe15772a731fff01de2a416d49fc18b\n3d82ed43806901b4df9c597227d75069\n5e6abfc7d93fa5f1dc0efee4b442070\n3ab9e4300cee0259f72e8839e840c146\n6b2a590446ad5794b10e111f2d30684d\n3768d9037d103d9630a24fed263415f3\nb0871c4ac8505d9c3d39d8012919dd25\n7a2362fbddbee9a4d197f67767b32741\na1d09074c83bbe418ca4aeb5e3b33af7\ndc005e462f4941078a3097a6302b0866\nedf15d323abc7333cf66a9e192dbe265\n3815469d7a7d336ab0a29c51aa6f10ce\nf4e1a4032b1686cec35131da26f8061a\nb7b4361b0042126ac7d17f1ea7477fc2\nf8534299ecce5c16eaf14273fa406ffc\n25427fc8b45e4c6370ad12dcb213189e\n32e9d8a4b5a141a2615efc34c3b36ef0\n1917888a2b6901091735ea0e092a805a\n39bc57beb358fae677981b941eb4f5d1\n5d97be0e2414bfe0a8930422448288ea\nd460bf2dd59883f44e1a714ee619465a\nd9e6815b6af181cab76e29c9c43bc7aa\nc54d3a5a9c8a655e46407779dbd69b2d\n15c51ecb58bf304fef3a2c64cef919d0\nec2806b889462892a84fca5de7f98b9e\n5c5119a226e1ce9934804d261199e1bf\n5254dbd4b24449edfcb8d8c6d4df8143\ncf6c082b9534049494db33559ec0df30\n5cca570916f420e64b3c42e318f3affc\n1e5e1ff56c27c0d2adc5f5aafedb1c38\n66111d2c7a23b0feb404555b84577afb\nb36bfbbc98cb45431735ea0e092a805a\ned57181b9e7644a3f51f77a6d7299806\n6f6fc4581830b1c49ae96150e853545f\n6a6fac314f0f295047a478fc5fc970de\nf01358d4f45cae23ce670f026edf07e5\n5c7965b0835a1a241de9bf5a9c22fde\n7893d0b50a7b6a768ec45924afa4ac91\n292ba732e002629e68c2f5eb1dd4dfaa\n31768574bcddbdde60ad823977adaa23\n8f85c2195890ccf671f0940f5ed452dc\naa78d1c91a8949313c8d0fdfb1cc2535\nfa9dc903c8324b85e3d605ae370b7c5c\nade3cb8149a1fe6dc066b9622c005c53\ndce4bd10d499b2f24b3c42e318f3affc\n77a5a12147a6624d786810c22b062a88\n978df83c1cee012729a60d6ab40898d\n833d33785c62634b192fe29c2d3d296a\n53846d2802f58f97c066b9622c005c53\na801be11157a7f243d39d8012919dd25\n8a6d770e6b4942c5ef3a2c64cef919d0\n2df829fa60a85466a2f2a5c7a758a47\nc1b939cc403a0662664b3b9b23ddfcbc\n9db87bf898efd448cbde89e0c48a01bf\nf092117adb1e9254d1cbf3e52b9b6237\n9841e6ef0d244f3d42b9650f19dd425\ne4c9bb21fe5bfeb3e21f078602e2eda8\ne7b719516449701362525a4d857f099d\n7124fa42397a447c34db027e489e649e\ne0a2948797cc33b2e19a0cc107ada7cd\n72ba0dc1fd49c2b5eef5d83b671bb264\n7cb828eb3b8e424b1e88064118b89a3e\na138582b1d0b9cbb137af984a9f45d65\nab8afd0f2f10be4f3443b22038d340\nbaddae470b28db0482e23b5f9fd46e1e\n36182fffe5b450fd65d1b2bc83ce78db\nca6812040234d1ecf57534363fbbac3\n3f968096c74ee3a3b04a2e6a78ff6c49\na1f602d18e9c0f06733c22d8b8e1c33d\nfe4ca0ab385784d8df6cfab91d65bb91\n24927157e3a53c1f91cb6b6c47a03f13\n2691d3491111def44674c364bb213983\nc78f6882973e616d2102429c788ba90\nfa80490adfa79863aa9da28fb4d9b628\n6272bb389bb524f0c8e1fef75f114ecc\ne6f2e77940fbc85a8e2d66cbf6a91063\n9adee08c737c7c134c6deb9ede0648df\nefedd8c990f9926c48d945252c13120a\n3dda46a537bc16e689ab11a408196888\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/03636649_train.lst",
    "content": "d526a340408764d8ec0f2eef0b7e551e\ne7b9477eaf6e2b64fe755e3418b63110\n1e9b2d5d65a8b7c29fe8663d47f73813\nda64c56e36024add5b903ba10d2ec446\n15332cc15b3de2e7a4ee05a5737b7178\ndd1dde844f5b8ceef361255e85d5896f\n5f901ee60f9c0d2c6297030373bd4c3f\n9fde9f07e6217b7490c2e24416edfe5b\n9c5a4f568399539b47afb7a57d27bf15\n65f23d07991128e3fbb8cbddab1c2002\n4dc9f86110ea40aaa570c6c691c987a8\n33e210ccfa79a0ed581fd19c35a5c8c\n6f4f8f3788da22817217386867d08cc\n3330789450af921544fe3ba945082ada\na172874df5369cea1e70766334ac46af\n4aba50849f4d24d7581fd19c35a5c8c\nb474613907b293682f8b82e61bb347fa\n21bca6a33809c7f26f2deb6dd348d3c7\n377df6e7a3d84edfa123ce0dff5bf4e6\n36cbe594af434ef9a89ecd28750d46ac\n89cb9b2ad175b833cadf6344ec272e8\nf69d3903096b6bb78ca4aeb5e3b33af7\nea9ec4d9db2e06202471e6dd5ac3ef92\ned45838f0c557b778a0c77569eaa010f\n87254ebbd9e57bb84dd6c3274cd9823\nc3d57dada3819e60fbaaaf5884f2c88f\n185e37856f55b2c4e9aa07397ea1cf8d\n5dbb2120f2f828d28aaae3d020f5ddf8\n374ee0d01fb25ecc9bad7d7f6ef7bb21\n1ae630bed26fcf4d448e1c9934d83117\nce3b5fdadd2b73216aea2f18ee404fd5\n8508808961d5a0b2b1f2a89349f43b2\n6e1fe96adbb5ffba8bae2d07dadd1b5d\na0812cee3fff72103ca265f557f5dc3e\n555152a8e9cdbbe41afedc87fe387fe\nea9721231b1369c93ffd072b23bde58\nd682bfc447413fd167a9bb855340227f\nc5b6259812704f11e3ebe8b18779c486\n2ac3b0a04514988e8c451c71f65d5dec\n787bd789cf2aab676e0185e256a599cc\n3c39bff6acbb6060899bad344dc01f2f\n50f14b490f3f4589f51f77a6d7299806\nc93f10431b324061581fd19c35a5c8c\ne11d2e065d90200c7543d7dbfecfffbe\n3c012309d5c68153302ef84771572fcb\nd7fb922f162360b5c66a63406f818460\n48f878a6176591190c2e24416edfe5b\nbc800138650bc4a6c7c8ce3bef5c2aa9\n12aa829de18f4e6ad5cb6d178687b980\ne4258a09db0c03bc97bc1a2d2578970d\n1d3259fe9377ca5f899bad344dc01f2f\n2e5a58c43539442a6858978be907b0c1\n98d9619ca934b01df51f77a6d7299806\n4ffb03a364a13c376b41b8bcd0404ec\n36c1653a021a526319620b61f6587b3e\nf049bbd180d89cb5490ad276cd2af3a4\n68abd2755ff4588b545bbb1b2e749fb8\na2f760540b18eac2dbde8847d3101230\n8422870b0a65255d5cae1a083183a237\nb1ec680145762d1eb784faac204319d9\nbd234f132e160fad8f045e3f1e9c8518\nf72efa4574100c12a8930422448288ea\nc6755ed48456490d2744bf8869518694\n2e32934d4a49c374b20bab10aa3ece03\nf4da1907ed935101ad5d0d05865f4466\n5c8da21eabad2dfe3d59e2f2ea85dc18\n3c9f0efc08817ab6fcb8d8c6d4df8143\n3397952c22be7309796c584ff1fcf56d\nc9a464649fb52e99d5cb6d178687b980\ne4df4ee697e71902f95e2a1e9997b85\nd73b4313372ca6e1a6a7b6e78d8d5bcb\ndda91a2215130be16035905876bb696\na708a75b3727b12fcb8d8c6d4df8143\n70e29a12260f811d8f1b70ceeb5e9a89\nec782fd2f4825158f24dd57a3f1f3b51\n67fc0e388b91d55fcb8d8c6d4df8143\n26d761549dcc3c61a1b5ceeca96f6fbc\n14c84c76c927fb282cd2160e449d45ae\n9bbe778f05a04009fcb8d8c6d4df8143\n3edde0735bdd2aeec8bd09a8ecef3d42\n437482f4d187d43893202bf99dddc268\n30e5d9149ddfeef27357c8b8283e0cce\nbea6350707d0813c85f486468112b4ec\n5128cdc2e7001b0fd8740cddcdf4464c\n379b2a19deff9954f51f77a6d7299806\n64d0f2752aea0f40a99e0f0bf1de3bbf\nbd2dea41f32e4562ce11183544874734\nf1cc6b6fa75bd67ff51f77a6d7299806\na130ec5d53e62931d93768e7b9b1eabf\nc81470e576e437a495f1c4bba38e85d\n36d90198790ed82386052e834fbd2c4a\n798028b70ab2a1d529c726e7d66b139d\n29a1afd3e6c25af71b17743c18fb63dc\n738646252a89e865bc5cf22809274024\nd08164b754c2f139b93e96f21cf0da86\nfea629edc206a49529fbb534b2045025\n370ff00dc6f08167c3bd24f986301745\n64c393bec510aa63c83f06951aa9795\n9b786274df42d55b774476b2e205b9b7\n67a087a3f917c3a7cf004563556ddb36\n4c62e3c4f9e46d015da963e90d88cb74\nae5a1b5c8b93cdf4899bad344dc01f2f\nddc2beaa04d1b06f5fa701976706a45a\nbfdfe22081bd54f7581fd19c35a5c8c\n611f9690f6eb4da79a6a8a8f3fa61f11\n183e79a892e4294d65666d9a7426c2c8\nb2acbb6717c7a842fcb8d8c6d4df8143\n8be8becbec0d42b799e70de063b51884\n65f11c0c8a86a8ea9813dd6c977cb17e\nbfeda9055368d2dce76bc197b3a3ffc0\n92f9d60912030cfb3a8888e78d004b3\ndd284c442afd361e37f2340db925336\n34e4bfd2000916c6a5f9d52c12457194\n4bf29c47c18e7020fcb8d8c6d4df8143\n6e51353655289e10ad885ade4bf3150c\n63538ead3a81058f1c1ef519b9196b63\n446f8c76eed76c199df50b7f68c99baa\n646956f902b2a134450e3da30d6676cd\nc414d046062b529ffcb8d8c6d4df8143\n1854bd4bcf32ca32e95ee7559a2a873b\n59ca30266fb153ba50f93b609ce4feaf\necf9ea749680ae432d9c07d3b9171829\nc359b4c545e5ee3efcb8d8c6d4df8143\n54a7ea6d6e297a849eb34048e600e1ea\ne9f83f1d54e959bd35836c728d324152\n9b8f6e93608fb244aec118775e1a3eb4\ne519ec9a23b1612dad19a449ad99c8fa\n4c4078f8206ef3cfe13094731a5351fc\ndbd8677c25a60799a10831b4711b98b9\nc52af321a31d28a2e95e8a5faf311c2\nb8c809f74a592a91ad5067eac75a07f7\n12dd2b962777328551014c684c004c28\n9cf1c74f842be30624a15e3e5e0014a0\nabf04f17d2c84a160e37b3f76995f8b\n6a1af043806ddc96ac789d813ddd2d16\n8d61e7c8fc9d989d1f30b807ae39b61d\n8425fcfab0cd9e601f0d826a92e0299f\n52e15c498d33748d53227dcd0d547ba6\nc83073e02e70410a35836c728d324152\nad01773f3f53bca3a8ffa3a6526018ac\n13e4f5f06cb42211fcb8d8c6d4df8143\n5a4248187b0cce798aaae3d020f5ddf8\nc60a072ba63c12cd8ae0d28389a2d006\n8304e6daccb18c2de3855de370260f05\nff43ef647c75b5a4fcb8d8c6d4df8143\n4b3bc509cc074ea5ccfcde790fc2f661\ne6629a35985260b8702476de6c89c9e9\n1f30b28f2dfe65a21735ea0e092a805a\ndef342a8d095d8501ab5f696a41d80c\ndd278cc37ecff49ce6597d391ab6fcc1\ne926dd7cf6831f9afcb8d8c6d4df8143\n475a3d88004052918a6353ea60f11b6\ncbe4301ef1418bd8b036d6b8e2579386\n55af2652c4460b05ef3a2c64cef919d0\nfaa4b839db01b86fcb8d8c6d4df8143\naa001d69c5b051591736c5c04ed41019\nc99eaaeb9b941af62ebeb1e6a8111f53\n58484d1c37df459e32acbbe2387ce75b\n28d35fb9035fcbfffd5c9a0fa28996b4\n5d69edfdd6f7f62ff88ace17ca85e37c\n3ac0f4d87162625dfcb8d8c6d4df8143\neeffd79536a7ab3e597ff152ef65c9c3\nb88130805777f2efb76e29c9c43bc7aa\n5493cc3e023e9e6ffcb8d8c6d4df8143\n31d93627f2fbf86dfcb8d8c6d4df8143\ned81fd0ffffd360638e74158ae3d41a0\n16db10b6ee500ef94b3c42e318f3affc\n94af43cc530f8c4649244b68aadec703\n81e0c3b0d851492fb79ee87044437bbc\n414d4397dddc0134fcb8d8c6d4df8143\n5c9f3efb7603bd107c57db67d218d3b9\n84e870f2255d6b6efcd4910413c446d9\ne65eb892b1d1730e52470de2774d6099\nf8d4e335655da8855e1d47baa7986b2b\n809ed642119aa5799e8bf807e902261\nea5893e12134c6272f798bd8a3edd4de\nb5b728ebd7c0833530f6e0ede20c4525\n65c87436f6d6c695cf004563556ddb36\n3bd2db092bede98957e3b0a0099797c\na06089b2d68c974c6273cbd9c7cef4c\n5680570f242c595255ee7d0585fd5223\n9e49915157b79d911735ea0e092a805a\n54654f299bbf5ce4e7a1d4df7812ed0\n270ec239221938991735ea0e092a805a\n47ff70265cba94df900cbe2c18fd90e9\nec2d7e5e968c3ace7ddffb7902a68a13\ne22cc77e9bf9eb0875d36c94c257eb30\n3f7eb5ef5d304040d847cb32379eb854\nd2ad6adbad3ac49752d7b587347d0cf4\na22c4d43974086de31ae8c8ff1eb3d45\n871e950f1d453b32597976c675750537\n89ed63af13b79f3ef42a90fe4baf4591\n926d66e2adb79d5b79cb09497d80655\n5d94d971dd819985713decb1a0563b12\n7932b195e0e8ab00726dbbf7bc5e4df3\nbe00be72836114159568832390d67ef\nf97011a0bae2b4062d1c72b9dec4baa1\n6196ca0c22f9f7271110d567ea61aa61\n955143d7f0b5c70fef76898f881b76a\nc9eca1a946d5c74930259ca79b88bb0\nf835c863f175df72fcb8d8c6d4df8143\nd90d20f02ba8fb9a6bd00d0eaa99c3c3\nf9bed8743eba72439a4cbf5d3b79df06\n94e8b7adb07de08e714531f0291497fd\n41fc6d8dcf353f9ae420612cf7bb547c\n52cd206dd4674bbd4fbd95145f67665c\nbf3c1ceb076a334acb43a77d9793979d\n8df4dd50d01bb801e9bc18ec03716e83\n57930764a16deae9b219dbeac7819b2b\nea7a5e58c0462957edf4c948f5a7c441\n99efb45cf927a0c62cd2160e449d45ae\nc8b19dd635c346a4bfe7d977deb71340\n5ec6c52d6d5dbbddded4c23d05709216\na3a13218d61daab550903fb6fac1fa18\naf8fdc831cc65f0cb0a29c51aa6f10ce\n1d198eb08540837be9bd6b804c8484dd\n9534bb19e66fa5cbfcf6007208e5f114\n23a8eaabd1343badfcb8d8c6d4df8143\n6b130799a53c2917cea97147b08cd8b\nc8305b6f8521e9b3565822a81bbbb03d\n48cde19fa1d6af1653b336293441aa49\n24c91045ef1c6a91e4407e92c4b0344c\n545ce32e4a72ac04352681850fbc4af9\nbaf7b66d35abf0ab1735ea0e092a805a\n47a7bbd995c37d3d4aeb986669a16017\n2e583ea74f46aee239b3360f500ac52a\n2b1817fbc0f3ddbe8220566e85550c0a\nc4d62e5fe71fa71f1ba2f806cba87b47\n57dfd0ac5a78c9322f841233486fac2b\naa765d04e997e36a1742918a871fc8cf\n8a840a390cc8ba885089a13cc567dbd\n46b8bc4b5b2a6094d46763ec4d902968\n6a635b75306512b3fcb8d8c6d4df8143\n9f4b472b57e4eb76376135b28de9dd8b\n4bb0f244d4abe00b44949d7685cb63ea\ne8e2c055f8ea53a144638317e9e4ff18\n922902d623e5e5dee527210494d6783c\ncf5b6127ac18e85b6aea2f18ee404fd5\nb7716e735dc72358182649d086615bf\n6283ad834ec0730720efab7988749bc4\nb64e98c991d4103170365ad078f710ff\n8c4539bca010eae1cd74bafe512884c\n9f07035e2ff0e5946ef2faffa907bc32\nce879c871fe2015b4cbf9a02e3342127\n3fb39b80530c18842417a6b5541e7395\ncaf410661e9311299dd0351f01396cda\n1dc135b611b2f4b2fcb8d8c6d4df8143\n5614d1c24806ce0a8d1fe8cdc415f4c5\n85f0a7c268fd095cfcb8d8c6d4df8143\n70652459696b25037e0f056bfb925424\n9b0c6f3ee4a7965644b289cb940133b8\nfa6f034a8beb74f6fcb8d8c6d4df8143\nffc2479f27a1013afcec439ba0368db0\ned2f272286506a5786e8e92cc08146\n7b53493f7944fcf2b691e708071fb777\n2577723d02fd914eda113afcb6c5e140\ne487374a244b5f03b428462f49e66329\ndf0823f1c81eb6bbfcb8d8c6d4df8143\n5dd2f4d3b253058dd554ab0a45f30de7\n51561910f274337c452b6f7f8fb75eae\na72410196463086561fc247a18f47792\n60fe504827e96df11fcc6cd2b8a40871\nbde9b62e181cd4694fb315ce917a9ec2\n967b6aa33d17c109e81edb73cdd34eeb\n6ffb0636180aa5d78570a59d0416a26d\nf449dd0eb25773925077539b37310c29\n989694b21ed5752d4c61a7cce317bfb7\ndc6c499e71d04971d22730b0728b2fc9\ned4f7f214ae7042cfcb8d8c6d4df8143\n721baad382f73c46fcb8d8c6d4df8143\n55b002ebe262df5cba0a7d54f5c0d947\nca5d8536386d31d0dd90cd03407bb536\ne9b1b74a44465b8b192ae1372f64f330\ne7310381c64cd87f8880edc6251fa529\n6e5a9f4f1f0ba4a7beb83c64f2162734\n2a39d5ec8856dba0fcb8d8c6d4df8143\n9afc2aefd6b17db014038d588fd1342f\naa9e96ac6c121cc54cccbece4754c7cf\n62f4efec7059e531ba5342d638d0c267\n5c8df2c17d09028543ba2b548bab2839\ndbe83cbb4cd5113c14038d588fd1342f\n683118b2740958303fe64ec32ae84891\n50a3d09ac90370ec9c48f338871146f5\n1d2c6757217bb2797388d403c2d39798\n230c9e3d0e423ade7b7adc4c6de912f0\n176b4495ed006475bbf899459f3f71bb\na7f67a2088ce033f3ec7ad443e0ae81e\nec449d7c89e84657cf66a9e192dbe265\nd60a54564aa1856fb18d6f615cb18bdd\nbfd36d77ecdb0c9de76bc197b3a3ffc0\ne37de82cff38f88d1735ea0e092a805a\nfdc4b403601fedf955b7716fb9f91d35\nf021d7374cb40f0da2ee802ea6ed091\naca8867b962deea91a8781c24b79ae57\na885ba00108cbb63e49675db0062ac74\n6d8cb53f3b1cd94a4da9b199f21864cd\n4febafd730ab294afcb8d8c6d4df8143\na186c58be79925634cc30865d6337b9c\n2ceeb17225f4e460d493bfe20f94b6ab\ne1fe4f81f074abc3e6597d391ab6fcc1\n78dc5a0c38d5aa2fe59f529cd1b6faa8\n4c3a0886647ae06a6ecf9e4734c75a01\n3a29634236aa0596f9e8cd846ef13776\nc464b5be51b387fead5067eac75a07f7\n295ba9410657325f9d7f638b2b2e0564\n58b269eba3c6d09b57f40ff86fe708ff\nb2116d5a9b93a0704f377bc8602186f5\n58483a0c6c6dc7056b1291e0cfc0c93d\nf40624156dcbab68620a56d13e6d773b\n60500e6bc230e3f3bbe00b56d7315d73\n6b837caba2f63098360a9d5ff73ffdad\n8ef9c1ffaa6f7292bd73284bc3c3cbac\n5a1484a25a5b8a08e0df09c6ef42b40d\n35bc2c88e20e099db8bed6beeaf025b3\na1bdde7b604dd3a89b1c4543cc5963cc\n1cf44cb081b1a2b2fcb8d8c6d4df8143\nce8a14614b85a8fbfcb8d8c6d4df8143\nab8e7d9b77455a8550f4a93ce2060c65\n23a4572a96dda133d624bbdc22e247c8\nad7fedee24a70d82a5f600ed2cf472ac\na2316a225facd3114f3443b22038d340\n930d6656e3df0635fcb8d8c6d4df8143\n27436a813a1abe835836c728d324152\n352d68b2a816640099e8bf807e902261\nc7b77a991430bf08b8812f80908a0273\na122a15d97594ebcfcb8d8c6d4df8143\n7dcbac101ada832568d026fbc8fe70cb\na126861b5d720843aaf2b5b6ef88c2bb\n6e913f0b67bb638288c10250d0e7fba1\nebdc97f5fa29b1dae6597d391ab6fcc1\nbe6c5d39cbc0d6f9764567afd7c5990f\n2871a6c7eca55e63d0482422df1ad01d\n674a0ba32db48cb6ba2cb2a05654d738\ncd05ada0981bd85a2c528d33bca1ac2\nb074f648cc99aca6fcb8d8c6d4df8143\n11194326770b1225d49b2e04785f8492\n230efad5abd6b56bfcb8d8c6d4df8143\n51fd15743cd0568219179d4701451afa\n9004c69559c8e6f99ea7ba54de81fa1\n1e62d260a8a64b5d8f720345751070e9\nb1ac784f48473df1e7c7920f6a65a54d\n73ed11936acd99a627ebefef2b2130c8\n397f450de4fc6fd4fcb8d8c6d4df8143\nfe200902555dd8c89f2349486c570dd4\n5926d3296767ab28543df75232f6ff2b\n9896b288bc97e6556bcc48b8d936ddf4\n68a94becfec1965e21d6b7a56ef55b4\n5cfe9300f102ad65fcb8d8c6d4df8143\ne1c49baf0a79732a7eeca6709b6a824e\n853c5ea3c279b9e9f7887b5467c02fc8\n82c10d98a1aa65e89730cb37c9a5f63b\n3c1c411ce82c4c43f193a5d512f2c2fa\n62a5d7a59b87d150e6597d391ab6fcc1\n399573561336a341b754c9a53619150c\nec344c1076b5c890b02103b4dd1798f5\n8cf524d8cca9d451fcb8d8c6d4df8143\n73a4a5e3a27aa7fcb9f5f10496f09f56\nfac2081abc0375649f41ef09e8fcdbeb\nb46eea8a6ed035279c92366a6d55d37\nacaf95927290a89182bfcd34215ccfc7\nf018f4d78d295ef3a78d991d8e8834d0\na82af4e7e81334f8876b399a99a15c0f\na4c50a7adeb7d20b51014c684c004c28\na4b3971680744f7f1742918a871fc8cf\ne0a99ab7c7a0d2d4e59f529cd1b6faa8\n2df234af39ae991afbd43c84cd4013f4\n1833ac3f2c14e6bafc26f53456c58834\n19171a11ad8bd9d5411a00390d1cd315\ndb88171d1793fa2785718c281d7fdf61\n6918fb9f51d1dc3dba9ea396e14c59f2\n5aaf61da59f1c0773225afab722d9fd2\n8ce777fa2b40476cfcb8d8c6d4df8143\n3a3d292307c4831f4dc0ed4c2f72c4cf\n7d77f1dd8bcf114ab71c4c06094146e8\nba397aa90c4af6ec98d5fc0473d00a1c\nc211f82e84eb62bb776f01d35517da23\n994f375a5f371743b5fd9907631a04b7\n36c6a6f0e206c79890fd203f931c9af5\n90e4219f897af979cbde89e0c48a01bf\n8b85d01ba70a09e9a5f600ed2cf472ac\nd190d56a1e6213e420ebca9c2a65e97d\n587b4419a39cc088ccbc9e602dbf6a4a\nb736ffab5afcc08ace1d463bed0d7bb4\n42c6478d294d71adfcb8d8c6d4df8143\n95099d85ebd865f46d11dd9fe20b7791\nc5da06189b219effcb8d8c6d4df8143\n33db0d4bf66731a7e7c7920f6a65a54d\n70b3279caee3ed985c6e7b50a2f671d3\nee9cb649ef64105b62095c48c7bd5960\n38eedb7c36b785fda81f841e85c630d5\nf5c61ca4acfb7f5435836c728d324152\n80a5ce76688700a2fdd36147bc6b8031\n8e34bb5570f790b0796c584ff1fcf56d\n3b20c6ffdaf2dc97ef0add8da8532fa8\na37f1bd2732ce11981d841466b314f95\n39acb6226133f9e0e4c9b82a33ca42e6\ncf09b30a89f70929cc67b3de75c44c76\nb0c346ea1fa3ad0b2d7dd0a148440b17\n5179edb45a24a785fbd4fd7714358815\n96e1ba69697ade7682db9fca4b68095\ne303a8b8aa3aa14a39b3360f500ac52a\n12e8d8176f2bd111978e8f21c8f49a92\n9c2699c78add2e5847ecd534f9237f9\n918b197d2a157d70fcb8d8c6d4df8143\n58c49450594bef2afcb8d8c6d4df8143\n23eaba9bdd51a5b0dfe9cab879fd37e8\nc233bd44815828b08bd5065c89cb7063\n1fcefc2c2ff00dd6c7c291dc7d41000c\n57b95c1122beac7c3fef86d7b5969363\n51b4f0fd600a7cdc580a266ffa083ba4\n41f3ad2781ee196bad0e80a2288e336\nc5a69f02323e087181d0740b20dd8fd0\n75e788db909c6e07bd4160ae8a5798e4\n1a87883fd4f52527e21c35aa7a22a003\n12d03f06746eb49990c2e24416edfe5b\n7d7dfd2bd5cdcc4cfca61b0bec17b8d3\nd06ab2779bb0b73b822a33e080d0e71c\n16327d928854b34ef11c3739edd52fa3\nb45b8df0557da6acc14d5c159bab8297\n91b7d2915bfede639b3360f500ac52a\n583a5a163e59e16da523f74182db8f2\nddb951343304bf1f351d9ca36f76b95\n2da9d9bea10d936e23c0d2e0152e91b5\n80eef85b735218b0ab8d22b09768208b\na700451d593a56b45369e32fb818f337\n3aec7c839e247954a38859fd71bee28c\na1a8616e38e5f684fcb8d8c6d4df8143\n7d6dd04be7630ff01735ea0e092a805a\n6bf0f3417f775d2c2cd2160e449d45ae\ne4d3e153ce7f9904e76bc197b3a3ffc0\n15e38eb29fb84898e7e684d25d4dcaf0\nb31a3ebb83f3c23f92bdd7f1055f4a13\na11dd450220af960ca70272754aeb3c9\nc0f67a9a45cac532fcb8d8c6d4df8143\neee7062babab62aa8930422448288ea\nfa853b92d9a5cb66168e1d639d85c126\n7fa4f80f92b8e779eef2192b7bb521a4\n3d26aa294ad1cabcfcb8d8c6d4df8143\nc02a408b63a91d294cccbece4754c7cf\nd284b73d5983b60f51f77a6d7299806\n15211f5ea7c7432686c701087a194026\nfc5aa16de2be4b2b93411b5b3583c4d6\nd450da2cf4d0b79bb20310112468976b\n1b0ecf93a4a36a70f7b783634bf3f92f\n7a67bb268436b3636a578f1b525d976c\nd00391a3bec2a9456a44fdd49dec8069\n19fc4044912f5cc4869594a32151bfdf\nb75ab10d1235158ed91ade1c391e4016\nd52bcf6a2c75ced5fcb8d8c6d4df8143\n53ae95290cca57d430c35ecdb9dea035\ne38e89e852fe924d957f81d76123f1a7\n8d1178acdd04d633c35131da26f8061a\n98c7c2542dddd40af24f994bad42f06e\n76db5f1046bfcd97fcb8d8c6d4df8143\n859182efd11b40669018dc7bde518d9\n229b7e36459a9857ef3a2c64cef919d0\n66defefd07a3fe4548eb521885c87e13\n8b60bb548c0813a7e420612cf7bb547c\n20118bc320eac59890c2e24416edfe5b\ne333f7f89b74575e9a5046bc3786ad19\n3c3e36d1faa6c53c1f886eb96ca2682f\ncfaf30102d9b7cc6cd6d67789347621\n1b35827236954b2bb6436276138aac1\na5b394e2c98f6233636c7e486232cac1\n7e61de32ddbb59c89450c010f9b3ff4a\n708aa847cb730f07fcb8d8c6d4df8143\na7b9dc38c80e86fbb13604bbce4eb6a8\ncaf2efbfc9ebf42ae068fd8aad8767f3\nbcd32489ef6fc12d8f32b552c0a1567c\n7fc85bf0b0989f864f3443b22038d340\n6b7a76b841ad8bb3488017d48a7f7eb4\nf91b13fe06141138fcb8d8c6d4df8143\n4843b9c8523a4affc29d936f5ac7e23\n97e63c1f813cb1926f43c7673a499bbc\n94eae2316754482627d265f13671170a\n1b957f2c258ed744b3c42e318f3affc\n6cb3a2872d2c2646fcb8d8c6d4df8143\nfed712ffbeff29defcb8d8c6d4df8143\n67f6c0f40fc9216e8aaae3d020f5ddf8\n4e3d1346e76084a2c1caa73a5e644b6\n608db437f2aab3c13cedb1808e691a01\n75cdbf96a597b57a29a42a0444436860\nef9e0709f535c549b3914c1351b16c4d\n348fa2fd3af7dc0a4016a312c4d162ae\n7264167cae71c90c72bce768f6d2af1c\n80650d082f6d45fc53fa79783efbc3bf\n12d44fd814bc9b40ec2a7a1f5fe7365d\n20d36ce3148091c5764b5e62529f6d7e\ned323758d0f61cfe6085a0a38e2f255\n1edec15a9740c25edf85db41e3677c28\ncbea72b8621f99703394926146371698\nf567bc1dd416ebc9dcf2183c858e6e5\n25bd069704996e073225afab722d9fd2\n89622a50662e28d56c09b6371c58b533\nfa3b05deceeddc26fcb8d8c6d4df8143\n6af800e7bbdc5f21735ea0e092a805a\nd5400264679eac33ef3a2c64cef919d0\n8be191f7e61673b13e3ed2a572e608c1\nbece8f6d89e653e6fcb8d8c6d4df8143\n8c0380a0d385c98145d451096984140d\n421c9c7d606e0cbf26c27fcd604ee778\n37be7d2937f7fd88fcb8d8c6d4df8143\n2cdb96501ab2ccbf35836c728d324152\ndacef14e18d54f3857d60a3bdfb4976c\n67e03d2c2b7f6b19b38821f893bc10f9\n88153eca8600ecf05b1ab0bf4891d200\n4524946bc53f31a92d5c7a0e60b0c525\n353224cca3fc3ea6e5da257192cf051\n417039be1c492fd4212785a561e3d296\n6d14f1e95641dbb329a42a0444436860\n41c1e411592ecabcb7487183c0e206af\n752a9fb2cf32fb5481e0c510e9bf91d1\nd8b33b356591441f23d2ff62625c9fe7\n66b98bb2b9d34431ec7cbf3284585a40\n58e32cefd2f0ca13e938fdd9451c3206\n9e0b193df5bf4f2097497273a66fca55\n596ac8748f6c946efcb8d8c6d4df8143\n9f0e6bc1fb0a97a6db493a050f0c45fc\nbafc295a6ffcb375c3d3652f80cdec64\n636d72f06ebabbdf9e8cd846ef13776\n255dd61372b3509a41657e31b569b105\n670525c759c07ac71560641bf48464ff\nede739cf0fdf5af9d49b2e04785f8492\nf01cf64f05572ac4b509f4ddcfa8ca1\n8bcbfeebef5df95fc664c3d4e2d59341\nd2c124b8c6a888fedc7a10bd316015b2\n573500f52762f0ea8485cf03cd00c621\na911474d0fa043e3cf004563556ddb36\nec0979097f7c811922a520e8315099fb\n78f5bbde973fa96780b013c1c827c9b8\nf4994cf967f3407ff47b2ae6b11d6f43\n398c948f08b778a1fcb8d8c6d4df8143\nbf2687bb57e94f4071d7520e3757f3e9\n15fc5a4a342c00525412c66cb6f267da\ndadeb9844d9f0c00f6da603e92626bf9\n5c324a7cdf6195a5303c85804d402599\nd231a8b21aeeb7d78749901456352d5\n1562318ff0c62163a488756a9c41f7e\n27ed76ca359d6eaffcb8d8c6d4df8143\n66a7a9a417660413e2364c65f912dcd4\ndca5ccbc65594b4fcb8d8c6d4df8143\n60fba8438739f3cfba9ea396e14c59f2\n1e4fd4cc6fee7cb2fcb8d8c6d4df8143\nb444be0623b2e237d73e51f8db3a696e\nee3bf15041b96387fcb8d8c6d4df8143\n91c55497aeec1fc55e29ce2c9d37b952\nd7ceec3ad0cad8093164c8a6f66d85d8\nd543465b35604aae1735ea0e092a805a\n99f8c4a6b9ff1a2ab7f1f0dea571cede\nbf4b1a3597373ac0664b3b9b23ddfcbc\ne1ecd3a4734b91fffcb8d8c6d4df8143\nde5799693fbddbe3c4560b8f156e749\n169ee245f8ae927f5dc3653f8341633a\ncf3407cf42643d3184cd259bd328e92a\na0a87d63af355b45615810b8eabca5b3\n89f8c456a55c3386157d629c9921fc15\n5bb0ad1e0c9432b2dc6493177a28df03\n44820a27f86f13e7e420612cf7bb547c\nf0b6bf1a583cd99169d13a7b2498cca9\n2324e8f0e334c218f7248d9dbed7a7b8\nca8e73b360017dfafcb8d8c6d4df8143\ne7552c8c718a1a109f2349486c570dd4\nab02e202accb9b4b65b77a565916c7f\nbb7d710f4104d16b88e7662971dc736f\nadc8129076715686b3742b0325c8aa1b\n7eaa7d0cadf48bbfa9bdc22a1e02e82\nf672eccfe1739e962dcf15e1dea29cf0\ndfd06ea82f5a5b324aeb986669a16017\nbe61621254d82a6ebb40b038e5e0b7f0\n87107afb7ad115414b3c42e318f3affc\n80ced01703281d8e87de7314a5215f9d\n2af318d179f969aecbde89e0c48a01bf\n85335cc8e6ac212a3834555ce6c51ffe\nf7c52d5d91e5ffbfbf82a0d508a096d3\n86a5fae37549690cfcb8d8c6d4df8143\n9cb61effca346d48eeed1ac073f42256\n956ef7ea0d496de01735ea0e092a805a\n8a6944062cbf8b25ef0a7c6e0ed55209\n8e03bd383d8696a7ccca59c0649ee0d0\n4ac2d95bbb9c03d1e5fc53e1eb2fc4a7\n44b84b479d9f8ae7ce2b80886d544375\n69762de7892483b64fa8d6439169bda4\n9113ec0bd742c5c5e86e8111763264e\nc1d2b20435cbeea0c0028f3b08785d05\na21744a28956c93cc5a208307819a3a1\n53d7272eee54bad2f841233486fac2b\ncbf2fd4e3b923f9ffcb8d8c6d4df8143\n676ec374028a24db76e29c9c43bc7aa\n21f7bf15d2f6a765bcde6f92ef1f7ee7\n376c16f40c95e81429eb9d04ea723179\n84d66f07cafdfbc4fcb8d8c6d4df8143\n5516c456d95ec0df2de0bc4fc4d02dd6\n3b15a4be5e248d114cc30865d6337b9c\n27b2a1bb96fbd760316fa82a71600dfa\ne8568e17d0fc6418e6543556f230fe9c\nfb4043f7fb8257d8578d107c71db28ac\ne02e79e028662e9ffcb8d8c6d4df8143\n869836fe379f585a732b621b679fbd70\n715be273074283557062f2d72cde5c95\n2e3679df6678e8776908456c5f4ff3f3\ne7da3cd73ebd81146251354a8b1397eb\n2522a20be5c204afa5534ff9c862888b\n5e2d2a5b9a69125b23c3accd4496ea68\n3889631e42a84b0f51f77a6d7299806\n1112f253e122dc8273111597f45b8227\n7bc039fffc79dec9e680aea9bdb841f9\ncce6476ac521a1d130f6e0ede20c4525\nfbcd17479bc96e0a899bad344dc01f2f\nd3e5c225e8ec17ece4a604577ef990de\n47cd62ec53571be3276206fae5d3c473\n367546484916da6275225719b7a8b341\ned54691cf655a8a3b3a8888e78d004b3\neeefddb3f2ee93dd49b2e04785f8492\ne1891813cf904b3188e7efbf7ff736b7\n923c324c530e9fc412060d1ff2024b3\ne0577be012414515fcb8d8c6d4df8143\n66fbe6533abfe75195b26656722dea64\n3469cdf83a3cba1f35836c728d324152\n78f85448752ae2963873cf6e670bb8b6\n20af3e3a79e7023a6c342cf382162bc7\nc263fec31c8d33874f51382fa3549a00\nc2aa9948afc6d4ed39b3360f500ac52a\na711c673d5b6a4b350075206bc274050\n688d88d300429b7dcf78a76e06ee9b92\n22a0864cef495771fcb8d8c6d4df8143\n7bd642ba9f7cb683fcb8d8c6d4df8143\n6c5b0451e99192cbd4bf7024dfa167d\n2a05423b37f2620e1b17743c18fb63dc\nc58b04ebb038758ba866d377a1785e37\ne9df996dd33c009bfcb8d8c6d4df8143\n49647be2c7460c5b8749901456352d5\n609dfe9367c0e64e2b520984c067934c\n1165e8de3cee9f706314698551cd43b\nc7aadb7ac29ac778aaae3d020f5ddf8\n48a5b451573920d44cb3aae7b27db2ba\n3c756a2c1c62e73b7252c133a7e17d94\n6138faeed623475b43ac09133d4c1d60\n60272eb623298fd190a9ce3e4b15521e\n8232dc35ac9ccfb016a2b5862518c93\n32bf66766c1f33983466f97f37dccbde\ne0e365a2927a7a73bafad60030e6ab60\n63ca3763b86aaa4daa29ca6a13991ec5\nc28d9f943fbf806ca0f23466c3c25e2e\na5fc64e1faa85794de03ab2a27ba7531\nf56600b8cb2f94d64d8b0368afacc65\nb10efcf01493c922e7e684d25d4dcaf0\n78c87f00ebe9491e2cd2160e449d45ae\ne35009c75fb246453f02f5b8959142cc\n13d5888a6598745f82bfcd34215ccfc7\n9b34aba70145f08b3ba6f328e4cd62be\nb31bcdeaae689dd862af18ecbdb58c38\n2a762ba822eef5fe5c7e2f94d3f5eaa7\n774d99cb78b5b82e3a5e6305a3a7adee\n98636fb562413a10dd999d2409f5212c\na90fe01c3ef3ee30fcb8d8c6d4df8143\na26a9f9ddb5f345fcb8d8c6d4df8143\nd21f149ace9ed2ffa3714990138052c2\n380a312c4eede2eb72ce68571bfc4bb2\n6a044fab6905fb1a145fa6babc33219e\naff71b0d462342aa4bf6dad97590bf33\n6c96c1bcd2579c259b12350e98805eb9\n8338a18d589c26d21c648623457982d0\na5a31ea56d8fbe0a72ad95ccf7316565\n748e643d7982fab3fbdebca9f6788597\nfd074c0819b9934f73b8ea30c1700f67\n13ec444752bd414bb01c58badc8bbc39\n38f3a721c7ac21cb8a1a0260fe4e4cb9\n74df8c15024e81f79f1a71e46bbde97c\n511917ee5ee2f91649244b68aadec703\n86bcb422f12d4d17446ab9475f488764\n1f15e31094a7460aad5067eac75a07f7\n2ed7e410931f984cd59517820ada1bea\ne86e6469000a7e7deb39e694585254c6\nc11e3e763402346f22c3a2386a9dfbe9\n94f9cf8754e2f080fcb8d8c6d4df8143\n99ec967442fe35e46aea2f18ee404fd5\n5656f1bb53d675ffcb8d8c6d4df8143\nb3530cffd4a04deab641e19ecbf0e871\nb6efb78876150d45c94b622f1207af2\nac2a766efbe869cdf51f77a6d7299806\n3bc8edd5ab3a2ddafcb8d8c6d4df8143\n2f2d4805ac5eb033e49675db0062ac74\nffc3e351b9ae77b0d42b9650f19dd425\n32a196685d10bfcad7811c9daa943fef\na90233920f619e03fcb8d8c6d4df8143\n6dd3bf7b105e88e79d3154c451a33fc0\n6faa72d18f52d7172cd2160e449d45ae\nc778a6ac6cf0c81d4904d89e9169817b\nbe02ef97e47b86c34e3474b03483338\n6c0b3b0c6bc6eb97862d7667d873e591\n525109ea19096fe8eeee03ae21af2d39\n99253484c463e9dd7688e67ac1793ffc\n4cf4ca85d2685b9b98d5fc0473d00a1c\n928505a660acfc20c7e400d2701a92d3\n551bec14757bd4b27b79156a61ad4c01\nf2f6fbeacda7cbecfcb8d8c6d4df8143\nb2bdd202470b4166f3a29b1591515940\nd357edb3b9ae47f230f6e0ede20c4525\n3eb6c3bf89e5c9312569f5d050e29bc5\n3101d2b22e21297ccff8db9efabb6c62\n3e21ab6c6d82ec4e1509d7278de350d1\nf77e6d8f251887e9fcb8d8c6d4df8143\na690290543a1b904cd5a7785cb8ad4\nb1edea6e2974e1b35c935b78db2f5ec3\naf93ccabac8d1aa9f4482a3d4ebf4782\n92c74371acbdc4b1b8e1b99345a5afd4\nbda58405e4e3319d809772d66d13ee02\n80e9c1d6499b6a9689ab11a408196888\n5115f9a3af3470ddfcb8d8c6d4df8143\ne98c05f4cc8c7afcf648915c85184f8c\ne04e5a96efd77a6ed2f5c44a5922d7b9\nf36cab1570442a83466f97f37dccbde\n27e4369a1d6a5a2d490ad276cd2af3a4\n886ff4f5cd90c6ad39b3360f500ac52a\n18145f4b303c37f11c3739edd52fa3\n5859f1dcc6e47322e7c7920f6a65a54d\nb75464a7a5546b39e9ad5e44c87685c0\n8c4ca1f645def5efd5cb6d178687b980\nf7495b2e74c906b5922ab3cc7ca1ae2c\n441726d957d718a137b2bb75885cfc44\ne35c7cd183a6de4a8bd5065c89cb7063\n58d8496e15d6945bc562b0b258e20992\ne8c75d7c6f151e2b3d23022ce06f940d\n1b9b6f1ddf363e0e8b424343280aeccb\n96b71e055f40cfc21735ea0e092a805a\nccd12ea2362ef81d8bb3deb7fab7c9b7\nd47f0a026f66e2f24b3c42e318f3affc\n66f7a541e0459b06fcb8d8c6d4df8143\n42cd4d8cfa141d4d374110224c1c4eb0\n9cfefdc1e63a3c2535836c728d324152\n297d929269bb62da43fdcbcacbbed64c\ne4d491fdfd795a9339de811989288fab\n199273d17414e77ca553fc23769e6051\n2f345ba66e683c2bc5a208307819a3a1\nf0131187d57b6390fcb8d8c6d4df8143\n9c11cbb88d574584c4f1f36666bc4b4a\nfbd59db93e38bdafc8687ff9b0b4e4ac\nf2038cb9bb9438a6c790d7efcdfb5239\n551f8026ff0917c781a172d69c52a28a\nae37dd444b0813b8fcb8d8c6d4df8143\na48ee5668d042342eef5d83b671bb264\n1eca42abff644eee57a48b78ff77644d\ncd1d426e08bcbe3e5a4e392b59939d74\nd87a2d766579f15e38b27a25d1336579\n873aad4a222d541a91c2792fcdc1ca8\n1e0bf9701623f02014038d588fd1342f\nbb3f359cbcb046a8d24a4ba64e02f65e\n9fbe081afc5868ca5c9ed170ce1aefed\nc41293c84dfc509cfcb8d8c6d4df8143\n2a9cc4404bf738302a278ff7f085c260\n4b43b17b960930af53b1634376cbfb93\n75cd24d6b485e9e01735ea0e092a805a\n43deffcae6d595f3fcb8d8c6d4df8143\ndbe5479ef7f6c752eb1f13e2de7cd7d8\nce798635ececbffd5ac3a75efa13522c\n4bca3194ec4308a837b2bb75885cfc44\n46aaf3bca1d0a3e776e9713f57a5fcb6\nb4f7f20fe212e633c14d5c159bab8297\n4c757abf44253f8360ad823977adaa23\n200fe239e1eac6a2651636b7e802cd3e\n78ccf7d2ee6d5e34fcb8d8c6d4df8143\n441d06d5a657a5dfe7ae87d20a4fdaa5\ncb4f1fc93f5047e1ecd8a55986a51a84\ndf22225de54de36d71d7520e3757f3e9\n701dd0ee2f3c86502feae54a926ce14f\nfb279afc9faba7ec36d735c5e1c16d13\nec639d4850ba9aa6fcb8d8c6d4df8143\n66cec0a2ab63d9101b6c273f8ff0e8b6\nef40f27470d99d6fcb8d8c6d4df8143\n2a5e2e5ec5eb986385bf3590978fc71f\n64a45d75c1c5bad6f51f77a6d7299806\n28b50bd5aaee8c4e7384352a7758c897\n9f47c287c921e4b429eb9d04ea723179\n53af1ea051d78e799904d527fb5485ad\n4604090264ab99ba6c1400a7733f9e62\nbf659a08301f20f2ac94db38cec7b356\n84f3f1dec806b1df82e8c06333eee87\n3993a9c841dbc35061294c3e9dd88196\nbb0ab5c460ddbd65ef3a269219210793\nfd2f5320fbfbc88a47c71c6d277c802d\n75c15dd98de4ff17bd4bf7024dfa167d\n3533b9eff82f2f9cf22140029982c6f4\n41c5a45c63f07f46c1c74fb098c415cf\nef612752f6192e8d29eb9d04ea723179\n1ac102f4a452771521e935c3c465f9f\ne44408513c20d08f37aef4415914e1d0\nd6ebf710756c5839f8d3a35c7c106515\n79041f47579a9e3f3c8d0fdfb1cc2535\n16249c6e2a76400dfcb8d8c6d4df8143\n90c323c4d6288aaabb40b038e5e0b7f0\n69222648c3e3ed986c348bc129690193\n8fdfdb325c5239e798e0d1738edd4f19\n2ee70ee71a0b7caeb15194162f658e87\n629f9f656b05ee62ac280f441d6450c6\n112058b3f8c94177d2dba55bc7acf0bc\nc8ba5b8ad05d553acd017fc6c40a6bea\n964d3a853d6e5a642b1c313558664cae\nb54f6d30b6edd7f1579cea75b38cb7ce\n6e3da73f16586dc56bd3645c59279a16\n6778917189e50370a894da3d4a669d7b\nda5db67a2385d5e8da9baff5f5368802\nebd783f677be6825b5495e8609a528b6\n538dfee2a9b520962301d516d0cd4456\n86d556273aa5075aaa660c42e675c161\n1e9a36b3360f23388962005ce0e986db\nd748241313e5664696a3517f50eeb9f4\nf392dbd90200bd7dc77f357adbe5c980\n8913c3dff1651a316a3d00506cb9ed19\n9326c0efeda12e4642f42b7e6beeed8\n594b2fcea3d15eb4fcb8d8c6d4df8143\n185b2436cc0404096ef2faffa907bc32\naad04909cf72df68bd038489dd82490c\n47adca3b217160d4b0957d845ac33749\n1b35500ce44ae7e344b6d51c32a5873f\na2ff853cea4e3ff5bddb797cbb74c\nfafef4866d1a74f3fcb8d8c6d4df8143\n1c7f8ad295bcc3795a233e989a47d3aa\ne8e4f730f9bb892a85245de9410e292e\n914a91528ef40e7bf7248d9dbed7a7b8\nd1948365bbed9de270bb6bcb670ecdf5\n904f90ab5c4d408b313c6de30934784\n5b4856005da0ab61d18826cccc613430\n4c1912cae9d53594fc26f53456c58834\n7ec821d5d8bd9f17d4aea4231844b26b\ndccb4da9805924c23466f97f37dccbde\n8a9ef07176e60ceffcb8d8c6d4df8143\n88ea703e063e715d6770da39e2737f95\nbfc4cae9fc343792fcb8d8c6d4df8143\n53685a90516a12c5f51fa0238791f5dc\nbc4db3c90716f7ede76bc197b3a3ffc0\n38c6b87674e80ee8515596bfc4f5c627\n5c9595253f292e154ce3bd4e27d8e100\nf8ca4809b68d1ad6157d629c9921fc15\n8b674da68033700333d93f57729688db\ne34d17542b26773a84aed1cd93567b2\nc78a8f317896b79f51f77a6d7299806\n40c778a9ff366c2bf36ea1eb6542fe7e\nbe60fdf6e4c9e45fdac42bdc1d2df4a3\ne4201614cb3590e41735ea0e092a805a\n2071651fb8407e4314038d588fd1342f\n9d340cb226868e39ce4f274577283b16\nac1e6d46bfff76a664b3b9b23ddfcbc\n7a9872f1e0cefafd7d8864caa856253b\ne569a4ed12ba90c220331d4c3b7d944e\nad7dbc3a78d37b4c8616812464c86290\n6e43d4b4829b66d06fa63795f94c4d8c\ne138b41985e7382cfcb8d8c6d4df8143\n9f2993a2f6cea208d3e2561755f455b9\n5077728a780b5873f8d6a4359d6a181b\n2f02e4f875d651b3c066b9622c005c53\na0963082bcabc46b762a4fefad9c8461\n85dfdbe562059fa058b65cbe3be2c45c\na04e341e7dc206edfe10244ee697dc96\nf274cbff23bda61a85024815e816c655\n4ed37408e5bb257ee356f23093e95c53\n206ef4c97f50caa4a570c6c691c987a8\n31ddb926f7e196a7fcb8d8c6d4df8143\n72d5a2931dc1c913edb30e9b97600303\n120f940d4c32c48df51f77a6d7299806\nfce6b0ca06f8a565b45df535caecae62\ne6d62a37e187bde599284d844aba7576\n74dff8f0a865368b4a8e02787dff638e\n6b29d8827f1705b0eef5d83b671bb264\nfff6acd5b543ae02a9bdc22a1e02e82\neb8466da51199e0ecc4c445068949125\n6b9f509d91eeef913efeda73d60343e4\n8e0f611116a8df69fc9ae1e9c70f67b1\nfb76c5cd78d3c9deea3655638ad668b9\n6fbc93ef5b90b06ffcb8d8c6d4df8143\neb37d11948d7b4ffe030fd2fa0608452\n43989558d13b1186dccf149c7b4065e\ne515076a09191d075fa6da97b9eb4a2f\nc2f055fac2817b263cd6abbbeca4e2ad\n9a976020602ee60b5fc8f4c1fc00b380\n308bd35d5f52de4e57b8f616df7adf9a\nbe5b76136b37205738e43095496b061\nbf3e47e405833ab715655d3195f5022b\na3c4ce97b725fc2c5f57ce7e4ba40e2c\nca4607a427a5aa127715096cb6ba15f2\ndb447b84e1a8d8d6ba5342d638d0c267\ndf31746077d19233448e1c9934d83117\nefc262f7c8bc9fe66b1291e0cfc0c93d\n54f858f74a0eb7d5ee11949398abce38\n4d61bb37c5edb2903f7bd0762436c545\n380d313b3c277f5e1735ea0e092a805a\nb7a6c5c6c27273b3253cb5b81530269b\n9627da26edc003e7d49b2e04785f8492\n70c523d337585b9743dbb6421d614c0d\n933176941f95f833fcb8d8c6d4df8143\n16258409337ee2914a200f5f1797d729\na9d554c5d9d09405fcb8d8c6d4df8143\nc5d999b26cc9ba381735ea0e092a805a\na6ae06e879fcaa019e26fe04e3dd51db\n6d5d4e506d6630b193528e10aeca0aae\nea8eb3f3d917d61850c421917af4a474\n13c361b7b046fe9f35b0d1c9f81f0b6c\n86ae11f8d3079f0869e321f074c1ab85\n8f2eec27fa65b6b7ef76898f881b76a\ne94273de8e52f9f896a3517f50eeb9f4\n5eefe57de9ad8b6114038d588fd1342f\nc7507804ba5ceca79573a52ffe6bb4cc\nb8c6a482bc4d5da6fcb8d8c6d4df8143\n176c8eee2d45e5d0535a7b6b7a43b6cd\nc816540b4e0eacd57697d9c3588bbfc5\n387429f609793f9dba5342d638d0c267\ne365a641480635d330c09d86acf3d5c1\n55eea74e6f73173b49904d779af64a6e\naea8305fcfd8a1d2ff0b82a28078fd3\ncaeabb766b3b9c67d3c1dc91e223304c\n447a8ab0523dde411936a2870d820ad3\nb89c79537ead39c1cbf3dda885c64a76\n9c2a936a664a59823c10371ef1aaa57c\n71090d1b424b4b4b29eb9d04ea723179\n75db7c2c9adbf2bfae18328edc91fc39\n605ddd207eed0d81414aaa1b9210e59a\na049ad0f20953a144cc30865d6337b9c\n26cdef36773542454d1e14997920b517\n8872dceb7ba9f34c140406de8e63ea3a\nd6c6665366854e6abec99d5b4657d5b1\n5d265be0ec25af3a7f772a7ed7ffb61\n5489ecdeac5c1cfb38bc5dac9ac556bb\n13daa0657f5c3e32cb0c0d433974e32b\n36a1e900d1b4d4b287b2013bc93e747c\ndf4e44114543e805fcb8d8c6d4df8143\n42fa87cd27edca9efcb8d8c6d4df8143\n2d9224be8cc6fdaa1050b055aafa6fb8\n13badfc11837c16cc01e0156f398b4d2\nef4478daba21f2d49244b68aadec703\nf6425a421a497aad6cc679ef84e06ad6\n8fe1766aa6997b0f899bad344dc01f2f\nec876529d01d4df490ad276cd2af3a4\n9b579915b883bea042a65b86449bc7bf\nf0421826cd511f401592f292ab531da8\neca8e4d9645271fa37b2bb75885cfc44\n9ef7ccb91a25dc988cc413950b617e8f\n266ca6ba2582dd9dbc24b3e693083ca4\n8064580d3a225366ecbab50f1720e223\n463a3ee50280fddafcb8d8c6d4df8143\ne0aa085dfdb0ac03ef3a2c64cef919d0\n2140c6a8b4648d84f3443b22038d340\n9d1e04bd3df11256bef045a510a22fbb\nf111f0e0c6c3434f30f6e0ede20c4525\n544f2afb57934bbeffb8dd272bf2a810\na51f72154f09a2f926d49ab26d3c4ce6\nd54b55ff9b0923c12cd2160e449d45ae\n6f984fe4627c8333752653a04e5ed7ed\n20c9d1713fbc0925c35131da26f8061a\n9023acca19d27f3fd49b2e04785f8492\n571137d6378372c5fcb8d8c6d4df8143\ndac3843c8f77b34362a510b8f97c658e\n68b79b143cb1538c3087f84b199fd297\n8522fb13bfa443d33cabd62faf4bd0f0\n7e5dc9256f9600d9fcb8d8c6d4df8143\ne8927203fbdbe320c02170c33e00ea64\n571027d7f9639bfa7d7103fc1114c50f\n7a1d06ba4fec22e8dac42bdc1d2df4a3\nfbb4a4faa8f2faedd661ff085a0f14b7\n8843ee2b220a702e5dac14d8f50c13f3\n2156df35753fc26c6e285dd101afcb51\n6750d3745d49f7ad3c1ac1040256359a\nd82a17b1f646e95dfcb8d8c6d4df8143\nea02a7933158caecfcb8d8c6d4df8143\n6e705a94eb0a7210e0ebca47533963a7\n27623aecfdae2d887eaeab1f0c9120b7\nbd0bbdadcd0b9fca7d57a0513a353be5\nd98c3d6304228f36d3cb982c5a53c2d2\n5116452b7826dfd92548598e855f0844\n21a4556c02678fd7e59f529cd1b6faa8\nd153ae6d65b31e00fcb8d8c6d4df8143\n6a11bbf62bfb5a5a59f8e31ca87c470e\n4d6ea3aabaf02bcd29c39f613cc72411\na8d45280f2ac4e7190c926f4231a7285\n60d1a7bf1e70c526befa8f2022732db1\n7260ad08488a3156f78e32cea3be35af\ncf0c13fb0e57bad9cb02404e1e21ec1\n9b5d13550ee386e686c0096e326e950a\n395701deeb1b2bfd48657c771cfae685\nd6fb6984306d5197e96d94a67d9df99f\n79af7fbe587692a583768a4ac1607d73\n71c9e25ec4fe08cbf7454c09d6230a4d\nf40c7b19234b07c2c8687ff9b0b4e4ac\nfc6ca834ee897c2be13f009579d33764\nbb04811d84ec072130cc41b666fd9890\nedce64335e42ac2f58452382da1a79f3\n6999ab054bc900d1868fb986bc092533\n7c8d71334a6bbe8eb3d57d6094a92e4e\n8e78283cdb07db1fb33cda5c8e604e7a\ne12e898cceec4e23f51f77a6d7299806\n2f216bc398d3da98cddf96969ede3013\n81bbe86e17196c2fd0db1e44373ee2d4\n4b7ba911d5504501b320860840f0eeef\n934981825fbc4e14ff458e602ebccbb0\nc8f5bf57a3215cbe9a6c869309041adb\n574e0de3cea53dd472b623d6378b1581\n925fe53d5075145981a172d69c52a28a\n96837f1ee184d9a4522f1ade738c024a\nca5a19cc0a5f34273b8ea30c1700f67\n1f80e265e6a038ad9c5c74ff620f967b\n6d52f0b6141dee194a200f5f1797d729\n792c3698dc7d200144175b4dddf5be08\n266d6b136cba49504b3c42e318f3affc\ne02cc9c4cac285419cb07ecb5b4102\nb668df78adedbd1735ea0e092a805a\nd4331a5810e36726b8c3db3876404c90\n51634562e4cbb4be27c4ca11e0316b1b\n41cc8b1669429bf92a7d46e74f08da70\n4924f75c6be38334f51f77a6d7299806\nada0e305757901e589daba250d5b5a5c\n35b23397ce08256e847d4e46a1f9f05\n9a9aa982c0667012ce11183544874734\n58588e4f7c57007e11bd92e9690e7fc2\nf79cd66d0a369bdb29a42a0444436860\n9ea81b2f43dca29c5412c66cb6f267da\n53d1324d1e85fd37c35131da26f8061a\ne655d36c391a57c156ca893ec1044405\n25f1a1563f38912250f0b0248b30425\nfcd263dc05862ad1bec3353c29751fdf\nc61d6c246dde340462a510b8f97c658e\n39fcaf51940333b46ab88e9b8b75d248\nf0b19b0258e8f551d5cb6d178687b980\n3fef4c8dca9dd0e0dd4763fce8a9da20\nedd398530cff676282bfcd34215ccfc7\n2d3c98d5d85f22a127babbd370e736b\n9dd9e38efea22f529a60d6ab40898d\nd0018775e9f2d109fcb8d8c6d4df8143\nd3e339b83170d89629a60d6ab40898d\nde93987085cf4dcc5208aab875b932bc\n1a5ebc8575a4e5edcc901650bbbbb0b5\nf41b9c3cb9243780dce4754e673446ce\nddeb5d944c128f78b0957d845ac33749\n163fb10d7f6f09fcf1c7a32d97b27a4f\nd982697f8c20b769aec118775e1a3eb4\n5eb0e18b12f4940d6f97b7cf7ff5d41\nc3277019e57251cfb784faac204319d9\nb9d353635f7e1134e95ee7559a2a873b\n9c4a3637ca2ce09d4454439c22a43db6\n2ab4c7882329710f29a42a0444436860\n5d693f7115e5ae984e9836419f09cc52\n54ad0800a524a96ee039576a17a0737d\nf64e567b44e550c0fcb8d8c6d4df8143\n4f3f01e4b17d018ddaaf0f74e020d2dc\n69baf1ded62a0259970e9f7b51f4efe\n4078ba4cad280d72b8b431083b6191e2\nfa6b1702f7c1fa191b17743c18fb63dc\ne89a02d4a6cc95f3fcb8d8c6d4df8143\n989a70bcea69bb4372a02c2db7bf58cd\n94fdbb748526dae4ea2d70ab68cd1d2\nb4aeed70a21518fefcb8d8c6d4df8143\nd36d4552fe1290ee90c2e24416edfe5b\nfb8be091d77118ab90fd203f931c9af5\ne293003f297e155624d1b7c6bfe44fcc\nd08941d91a52d4ca411abfe83236ee8a\n2ac3425dd13590ef1f9097f35cf9fde9\n98c6cea5f2d3ea28fcb8d8c6d4df8143\n8e8f964be5bea1068616812464c86290\n13c127aad3fc8e6af51fa0238791f5dc\nbad7893ac164cc44a43934c3f4e340d5\nff22bf19e2ef19d12f7ffc95c59dca52\ne120efa70ef8efa71ce05d96d33be415\n63e9be096e29681829a42a0444436860\na7f25e662466f59dfcb8d8c6d4df8143\n6e268cddf895c20ffcb8d8c6d4df8143\n1c9283c95c8bddd5efacb264ebf1ec75\n7d4d715c4812e42cc0f8577a553db1b0\nf6a7d85ccca5e5e34a6ecce2eeb45768\n9936875de81346fafcb8d8c6d4df8143\n1feb0beac92a26bcb0aa15078ea6f391\nc961e64a930680bb900a91cbf836390b\ncf9987efe529a5c538b27a25d1336579\n7e5b5fa94575f873c2e0b170f2ad8bc\n707a1c16fe9ba4fa60a25ec0f32e89e3\naab336a18bb4e51fcd4910413c446d9\ncfebf5d2a0382ee3fcb8d8c6d4df8143\n5f9edd0b9cdc77ded49b2e04785f8492\n67b0ef08720310aa14f846b7e32e76c4\n55f607d043cb587d5c10b08ea69398c3\nd59202f9d1504c8cc65f1ed6a348c8a9\n6b0664c9fb1a4fd1fcb8d8c6d4df8143\n9000cdad54cd0285e6597d391ab6fcc1\ncf280956401024fe92225eae846f578f\n9358ffb1bae027166aea2f18ee404fd5\n357c0ff8a3ddddf5902078d0d905735b\nedcadf508090e17bfcb8d8c6d4df8143\ne43996a9154a48e0db039d8689a74349\nca65934efe289843df446319d65b9318\n6c90f92219fd4ba74719088c8e42c6ab\nbc5f2f93922aeb65fcb8d8c6d4df8143\nd6ae7a5542800519fcb8d8c6d4df8143\na1d2f39cb17540e8988abef1fd117e7\ndba95c4ca95048982d9c07d3b9171829\n5f22096b25995531fcb8d8c6d4df8143\n6be148a3e219dc68e6597d391ab6fcc1\nfc8345dacde827e376e9713f57a5fcb6\nb31c246d2341429f76c2a9de5c96f76\ncf280bbec8017c26655715f3c8480da5\nda4fe1c3d5b1eb6ab2b4f8bf5db83688\ned6f57c8e550c60d39adae6ec56b2451\n7527ef1898765c09fcb8d8c6d4df8143\nb384676ddfb3b657fcb8d8c6d4df8143\ne69b661bb90d7e9c9dcf2183c858e6e5\n94ca5c31d2ba70f42cd2160e449d45ae\n1a963b28c5520cc737b2bb75885cfc44\n3ca8da93aff926a4edd822c7d5ea26ed\n6f5b104f7c1cb4bc636c7e486232cac1\nd3ca8a5d2e8c8ba4a320e34dad7c78bd\ne6c64600128ca2c176e9713f57a5fcb6\n5f24434ac22353708749901456352d5\ne6b34319c9ce57258d6a77b750ad3e43\n60d7d0e9c45368c282db9fca4b68095\n28210d460a79e323322123314d92e1d\n9b876bb9de59e5e9aceb781f079a299\n44eb1db902d44daa30f6e0ede20c4525\n3259e491870a8c49eef5d83b671bb264\n221e2caf85f9bc5a2f9aa70de681f2c4\n84b093611cca35f86f104b4f395219ec\nda09a8c73054e9220ca3aeb14e36a45\nde063371e5ef119cfcb8d8c6d4df8143\n8e2c822e2a316fa04f3443b22038d340\n5f865b98b4be6abf35836c728d324152\n3fb06dd95ac94436f51f77a6d7299806\na2c9d00ed67862af2c528d33bca1ac2\na415a0bc88904b24ed56e40d2df47c3\n9a447967a9fb5938bb3deb7fab7c9b7\n7b39100755e9578799284d844aba7576\nc9c2e5fc4d00db3acd99cc18cb18bf34\nbaffbaa9a9338f331735ea0e092a805a\n7ea1864f38bc326696a3517f50eeb9f4\n8b7ee8229a579ee135836c728d324152\ne20889cbe2d917787d616ef0c11d6a7f\n6c5d68e495c1f0a4d42b9650f19dd425\nc20ca2a29975866cbc7ea0c51211251\n5fba90e6e30b503461bfbba8a5defb02\n790931b57e9513bf661713a114fc5367\nd12558a4b1dec5ab37b2bb75885cfc44\ncc643d2e5b7a46f5809222e4341a7d65\nb0a3cf1e09f7a3591c1ef519b9196b63\nff1f829e2d6ff0d4fcb8d8c6d4df8143\nf5a121812ce16ed2578f5640449b6f5\n9c62735cc43add358f63636e145483fb\n6d15af6141ea7c918bb3deb7fab7c9b7\n44bcb1ec762af23b8880edc6251fa529\n981e7c99ee1fbf91fcb8d8c6d4df8143\nf34d9842b68f0b59fcb8d8c6d4df8143\n4e0aabe8a65ddc43e019184dd4eea7e1\na1db02b6b7264b6d1cf9f632ab9ad62b\n121286f843ab37f71735ea0e092a805a\n2070e39377140bdd7f32712aef0efc5a\na3c6ef6078045515ea9f23f235ccc6\n367773a008b63a2c5208aab875b932bc\n154c35bf29fa227df51f77a6d7299806\n5b12386df80fe8b0664b3b9b23ddfcbc\nabd8a95ebe132c58cf004563556ddb36\nea235afbbaa6fcccf32735686fcd8ec8\na89562207e0d50a6704c1b723fefce78\n8f5347fce0d9b517cac7c8ef7fe2392d\n37aac1913201b058c02170c33e00ea64\n5f0c4dd6cfa0def2e59f529cd1b6faa8\n9459660f359235abd9010e2a1af5e34e\na2fb35f872225ab2f6cbdab9ae1f93de\n9534d5751fd1ed574cc30865d6337b9c\na6413f422f4ef630fecfeea7038369e1\ne97ef0ba839e1e915412c66cb6f267da\n1bb78fe58e75596d9f42325587eab087\n2e06c6e29aa90245532e8683617554c4\n816bafd4dd0a04756da1275102abcdb1\na4f6213e0b627da55637847f2942f876\ne8006513d5f46d79e738f481f8560d58\naad5c7256a7c6ba92a4d67a8ec314d2a\nd2ff6b9d63c65ab71735ea0e092a805a\n107b8c870eade2481735ea0e092a805a\n7e4905eb4670c6df2f939979b0dbf5d5\n79bba57a00789023febdb1f263373824\needd40c0191a90a5cbde89e0c48a01bf\n181d2b693d7ab89457a48b78ff77644d\ne6cd04818644ee6f23acb241f0917910\n8edb515a3e77afc4a8737fcf23389014\n18ed152bad2c123b4b3c42e318f3affc\n98d0f886ae05db5af54f0f3959ecff67\na54ea55a07b96a237b2bb75885cfc44\ne959384247c0dfbe1e18a354bfd56290\na5bfb9a3571e7e86e59f529cd1b6faa8\na8d6e75a7d2712f3fcb8d8c6d4df8143\n45a2e2773a905744d5c91bd67a7ae42a\n6ea3addd99f0106b77981b941eb4f5d1\n8261f96cc33ddb264a7f20ad39e7a642\ne21f21744e65eb1a4ab1b242068f86fb\n4b031808cc2b126243dbb6421d614c0d\ndb759b73923a7e36b9df6a8c2c09592\n4f1199474ab8c9b240cd51e913c7ba8a\n6faffa042190494a3def89b32cef8e45\n540335c2788125cbc9dd845c88786daa\n89ad10075443cc8ece868a9ece283694\na90fa89d0cb8ec989cd3f9e8648111d1\naa381aff183b1427b7d9d23574a480ae\n342ea0134b504918cf5a37a70014c623\n44cb50f7614a4574d09ae058ff1abff8\n5aefcf6b38e180f06df11193c72a632e\nc0644ddc5cac342b565ae30b0a8151d8\n878d76c9657bec71fa58f9bd5c78b9e4\n266b5e8e78e4c0dfb82cf928f6ed5338\n8cb3f83d6ca1a4849364e552d5e4060f\n6c33f42a0f97360143dbb6421d614c0d\n9749404078fe4a8b6afaa22adc38077c\n561853e6377361196afaa22adc38077c\n6936b0f0e7c88e3bdc22f557e01eba14\n41fce4197aad78f76fab5a5e55726ee7\nb88ca09d13a5a472e3e80050b31d1851\n77fb025b8a2314787eaeab1f0c9120b7\n26bb7229b024a8549b0c8289d51d981b\n9cf29c3de0cf127730f6e0ede20c4525\n980e88a168a94790899bad344dc01f2f\n366b8a4c8e38961597910e2efc6028df\ne2e7f45670fc5e369a6c869309041adb\n6dcbc7efc9369de386a5dcc6ebde687f\nc904c93a0a1739e5f51f77a6d7299806\nc05273997fd65e7b88e7662971dc736f\ne1916a904163748e8cc413950b617e8f\n3ef55697cf7f68061173b43d09e96094\n7b41e8307e85ab0b87e834be7739917e\n5bbe3658e49eece0b49beb995c4209b8\nd1b15263933da857784a45ea6efa1d77\nd91cf049fa961ccb59f8e31ca87c470e\ne993492372fce761cb3a30f2c37c38a6\n9150920591733fae0fa444666ebe22d\nb5a223ea93f39c2c961b70a6f96df2a4\n97c26d66399ecdc973b8ea30c1700f67\ncec552e824883875490ad276cd2af3a4\ndc04781fbec1e188b1baefce5cfff2fa\nde26f9660d34449f6838f5d4fcdeb579\n5c25916b55fbe4ca29695ec09b98af5\n9d66a6faebd46b1d68661782af60b711\naecfc0a531b67a478b424343280aeccb\n8464de18cd5d14e138435fc2a8dffe1b\nd582dce8cd58bc57899bad344dc01f2f\n2fa7dbc66467235e2102429c788ba90\n6bd7a0abc6f77368b0cf606cb698fa08\ne86bed66672425464492223278b0e937\n940a5e53f69e193ff42a90fe4baf4591\nd3194dd3e07881828f58d8b19de93f99\nc83f19fefc2c06593e22d791db24e31c\n5ed0d3a50d9d77dcf1dc60fdf1e64165\nb66524f44170023ff7248d9dbed7a7b8\n646031cc994df3be11fd25b4ef1afe87\n8c5f6d5f0ad51f1a45c8b1285cb15c2c\n30fd90087f12d6ddb3a010e5a9dcf3a8\n81e42a3f9e13e1e52beec56b24479ed1\n99688a2668fe1fa3cf004563556ddb36\n366a93bce1f6f524eaf14273fa406ffc\nb1dc9ca886ac0cabb924fe739b83941e\n418a6ed14b4571daa5af58528d00e4fc\ne94644a89151a426876b50fc31ccedf9\n42e6823a1ad23819182816640e3b1915\neefbd20231e62d535c10b08ea69398c3\n6b9e4403230a162b54fb5025c749b481\n62ab9c2f7b826fbcb910025244eec99a\n110b426397c707bdc9c869210ebfd6b0\ned1de19103e97b74c30ba10ebbf8ea21\nbfa83d8f88e91d3fed83d50637042c60\nb479c49366c4d5def2cdf09737c19aad\n6bb38bc6fdb6adc359c5c7ba83ec931a\n437b5e12cf1b8771146f6ae9394828b0\n4865be9773c699bd2fadb0a8dd9104b7\n17b083510f14982b7eaeab1f0c9120b7\n28186fa2690df5daefe905a3f9856df5\n102273fdf8d1b90041fbc1e2da054acb\n627ed898c49543594c64af119029e57c\n6b8790947a71e9a9bc5996932c1238cd\n454b7345c01c404b6d0fc9460109eda7\nbac7b2c006c9cff76739a7caa0c577bd\n63da6d6aff4d14789bc41a35200a3af1\nca6c2a23c86be64e2b93fb2743876c57\n3f22e6719decb1bb3a9ec79b9c5da99b\n608b5df0d5946c68400789f7122dfdab\n763ceeaa4ce2ce1d6afaa22adc38077c\nb401155fbc54313330f6e0ede20c4525\na34db84654a9685f54386f3e4b944407\nb9a8cb27dbbcdb2a404a436d0f18c82a\n1845801e19ac5c22683869a26110a529\nc05cc9636722504688e7662971dc736f\n892900c66731d9c473ab7b7128d466a2\n22ca1d5fbd8e6eac7b79156a61ad4c01\n2fc19897a2f384ebc77d45d65dc3714\nd1aed86c38d9ea6761462fc0fa9b0bb4\n94f4c42b6db62c9688e7662971dc736f\n7474deb91f55a63840719e09f7e71f01\n2768a3ebfde6410dcdfc3ede082b8a07\nbb53a3c6ac9cbd386fa63795f94c4d8c\n44d1dac026839e25f690049a092c5efc\n74799fccd1636ce4df6cfab91d65bb91\na9ed31fba7eacd42f51f77a6d7299806\nc2378f62797cbcb26a5e440d54e375dc\n9c3646d9db630e1d6bab719bf4ec73ef\ncec61b6fb378925e498725b9a1405ebb\nb000d66b8f78ab20cfdfe3f21f42a111\ne9f5e9f6f8d54caae455de02837313a6\ndfb6553d8e04cbaae1263552aa9a2d35\n8c410dce9de0c632ecb14096838a20c5\n1c2327fed3930660177f2a3a0c71fbcd\n91d0d5301653c3b33da8556a622a2ae1\n64fe64c30ac05282443f70ad172f4dd5\nbad4a1e98a6111f7db48c721db3fba4\n302c3b1ea1a86a1ed2da3773f06dbf7\n19654d8fe7090a887eaeab1f0c9120b7\n5f1dec078cee0f78c580fdeb5460f6d6\nf842fd7369833b91b7e3a72c32cb38c\nba3f51c0e1e0adef4cc30865d6337b9c\n71c61e41a85671c91b82f1530fe53352\nad17118799f11952a3721d780ca17da2\n9de2685230d41d58c397356311cbeea4\n26ce3db3122afe74a5f600ed2cf472ac\naf3d58dc258e0fe06ef604d255267aae\n2b8dbd2f75503fb0c29700c28ff4f50b\nab53b6e7b2f87cb5c1935c9110af1bff\ne78c5337a56dca56bd6e55f88e701c4\nae25da30c4293fcf230584014222e685\nef45c648fe3b0dde8449e0b8dd14796b\n2269f268b32b40b35fc8f4c1fc00b380\nb45b40ea1c3a813235836c728d324152\n59e852f315216f95ba9df3ea0397b1a6\n1129a07c75f5a709cf004563556ddb36\nd6d7fb290b69e985ee2b478fec745c0a\n5383c9b60d5b66a2d22730b0728b2fc9\nca75df76115441abc516ff01c2593ee9\n4aee1567027d9dd14357a62465045ec4\n8e9c28fc5813a5bdcf004563556ddb36\n817c0b1b85437923e7321f25048c6142\nfd26f566fe08c3dac64d4b10f9dc65a\n17fb3b85fb6bf1d74888a07f79e95b66\na1d2540e0ca159ec0735e7fd8e163ce\n63fc809815b9639de7c7920f6a65a54d\nf9ee021d829cb2ba1cff7132ce500fbb\n98f1dd4a250a906fb5fd9907631a04b7\n914a876b24bea577e97426e55fb77981\n3bd57e05db01e224e7e684d25d4dcaf0\n7092dd68172560f410edd100dffd8d85\nd9adf06b7288f3cbac520a24f902dbdd\n6de220e49cf87c6bb15194162f658e87\n713fa0e1076c99c1763bbfff01efee31\n2f972bfe152e4c23f36ea1eb6542fe7e\na87825df690f900c408d050f12518231\na5423069e30181a019655a581ade300e\n4f62263f7bb10280a5f600ed2cf472ac\ne474916f1ee1635e0bc0e32d71e297\n40bbb4b123d9df2028c187222995b2b5\n5f4bc8ad5a1a0dd4cccbece4754c7cf\n87d8b99b8a43e2f930f6e0ede20c4525\nec01e8b79f2d07df784a45ea6efa1d77\n66acf7f6883db6a377b9297f3055210\n2b7eaa54eba94f34502b0796fdf972\n52284fc0b5822495ce140b3448f2e640\n57e53cf314a173f835836c728d324152\n369555d5aca3e7e65a31d91ec836a511\n6512e3a8e6566fd0cf004563556ddb36\n1c6701a695ba1b8228eb8d149efa4062\n762b4e2cbb8e643790c2e24416edfe5b\n5e4f40ec0a77cd1e876b399a99a15c0f\n8006e3cb3ba934a05b977412e02c412c\n252152593d97aabfd5f1d0bcb81c89ec\n54d9556d51287bb470a43c2d978e502e\n368188e7a9b9e1d3c24c2251620b1cc4\n98ae07e021f3227711d89826bd8e0670\nb5c4331e5896bcec1119ad686ed3f611\n5f943996d99dcf59726dbbf7bc5e4df3\n37f318fc52f4ae333f534d0cf4cbfb4f\nab7895189ef13e754f3443b22038d340\ncb614975be6370dcb6b7592323488fab\nd6a5a84cc689a2bd620365f6656fe3\n92bdae8c11323fc518df0876cc6aa6ac\n273314626729b1e973222d877df1ecac\n1e0f7ff92144792ac3ab13a0474803d5\n9a0fc544ab771054b45df535caecae62\n72b73a861b7626dcc8745da32e9100ab\n5aeb223a91320c39edd4171cd40b3feb\n67e18db74dfcf7f418df0876cc6aa6ac\n7a892d6b3951124cf004563556ddb36\n64f61c9c81e3eb7b8aaae3d020f5ddf8\n534c7e2c9495d7987b6fd5468f603b31\na0858fbc08ec5e34e7e684d25d4dcaf0\n86f8f2c064c79e6cb0c0d433974e32b\n8b4cb57c4d21a84d6af65e5aa19d2e8c\nd7a10c837316de2f3ca265f557f5dc3e\n14656fe47266b0eb88e7662971dc736f\n2e18c1bd23e4d89dbb6d3a4b6666d91\nb82e5c6e1133aafedf6cfab91d65bb91\n6baa8b21a080da186fa63795f94c4d8c\n43fce04e5e4e22bbba9ea396e14c59f2\n26316fabe129210317fad902853ecfd7\nd378c508566d68cb48d2aef7552b65e3\n19acda4f74d91d908351668cf609c7df\na47a54ea870ac35396280c8d384f22e4\nf01ce55e789efa7e5127e0873cfaa7b8\nc97cc6e7fd4b4a07d650f729d0ffe69\n71491d1e3a4c96412474124825d469e\nd217e8ab61670bbb433009863c91a425\n1728c555de071aad3ea96ac97db63fa8\nd939b56b53aa7e7c42f80363988bcb92\nf18a519effa019d819cb07ecb5b4102\nae50216235a96cffcb8d8c6d4df8143\nb6953f683e8b3feb9571d807bcd25673\n79b93ef5e8928141a54a0acb16609d15\nb4e939adfc94954a276206fae5d3c473\nd2a4c36321c50c06d28b52ade6c7e48\neecf97919cea666e67903707764646db\nb95719df909773fe65d8717db5192d1\n85a73c46a97649fa6d0c88a73d7cb14d\n9a244723bfef786294cdfc338037bd95\n55de711b4c86b86188e7662971dc736f\n79487b518c97cac315b5ce4486462d3f\n581ad338a34dc3bc30f6e0ede20c4525\n20e4c5b5783eb950490ad276cd2af3a4\naa4720a899ddf5456a5c4fd998d89f43\n80931bba35ec76db7088591b1a3e2750\n9e7ae4e322a056b954cd2a0ea6cb618b\n2ed8dcef657845be4a8e02787dff638e\n435600f37bac6ed9a28fe47978e866bb\n89ec7ebc49a312184205db2677c7526e\na4e4446f8ba07f1730612f5c0ef21eb8\n8eee3b5fd2f3abd4bcde6f92ef1f7ee7\nd1ec5f73a0d3d6e4f3ff0017952fe4bc\nb4e7c74a6e6685d2339c933a8cb966c\n3e9ce9f30f1999ab45bb7680f88b3d99\n375c6cce56f3967ed323d15bd4f8b2d\n300a2c57c5c0a31c35836c728d324152\n204a4eb580e93c559d709998b2d6e774\n9d9ade887a3fcfee89d70669fd6a0e5a\n21e25ed232808a5a6fdc47d9bd513767\n1852cf691d561b97760c1770d1a1230\n15606afd522923eb4e91947b208587c6\n3e1a71694488a4cd77b98fdac17a3204\n61555024958cb5efe4e7668ba612f00\nb6f69dd63be9146d14f1e0019ad6a8a8\n9af0807b146c564a45c4ecb2f4b73702\nee9849dc8d93e16c118ddfdb81cc6068\n50dec764276863a77933e36129e75649\n5de6d462706587e9f0f9e9e64b6b41ce\n5850799c5af71d58c13933f92cd75682\n7d097f4b38f0a8a65b6c7da997b0e5e3\nda12a5d96b465cf6bced73c51e99f8b2\n6f6a74a5528a7b5d88e7662971dc736f\nb9283738780e29c23a5fb687d9cb4ec7\na17a7f72494b303abc5744a94c74a7b9\n83353863ea1349682ebeb1e6a8111f53\nfca3ffd4ee694c1a9c0ca344f487323e\n2388c99892c2185268d1b9a1d97e2846\n852feb3fca95b6d5dc3653f8341633a\n45d24c9106f2cd7614cd86cb97af8937\nef12cf5aba58871e5510d59f3ab1ed64\n16efeb266e249dd63a52a79d6f5aab84\nb5a0f10269e2f4a6ba5342d638d0c267\nd385523f0cd93d48d6084fb53091249\n9a98a0088ac6d37a2c5b2f528cea9dd6\nd2c9d9efe9592eefcc901650bbbbb0b5\na56224d991c3eedf77d8f08447bad584\n6770adca6c298f68fc3f90c1b551a0f7\n2cba43cc26f174a8f9a65dcd8ee605f\nfa0a32c4326a42fef51f77a6d7299806\neb0d19ccdeb98cff88e7662971dc736f\n9464e80554bbd3de030fd2fa0608452\nc4dcfcc8c434f13230584014222e685\nd1ba336c09928deefc91db1746a83b15\n3ba4b7bb7b6d89415461e7d030e03e48\n41e0a38cafd737a87088591b1a3e2750\na258951f55855e41c02170c33e00ea64\n75ae2c70aaf3c818d9c283deb7cdce0f\ncd7bda99f9797d8b1878e92fa20d38a6\n656d25df742a84877e44e3c724db889f\nc7c15b7d23fdfd98808760409d52a60d\nd5a67642ff0a2908dbfbef883e8d10aa\nd83fc71f3978130e335fe03ac3704320\n69ae5e9ce88c9262dd0bffa2f83687b2\nb8e26fbbb44def8d1deb48513aeadf93\nc4e8a6d40f6433928eb8d149efa4062\n66fcb967b951c0f11bb088904f7cb154\n15238270f4f59a011b17743c18fb63dc\n72099a83e9a058ace715cd506e17332\n6068920e350f1fcef04bb0474a98ba2b\n7f5bc32085dfbbb88e7662971dc736f\n29a363fc242b282b45df535caecae62\n7324c25be8ff5cd74725f67267e31c89\n9f8c2c2c3b9796654b3d6a0fb5682cc4\n90e5bd9f10fd5216fbb8cbddab1c2002\na4f257a3eb6c5c37f716a9f638b146ab\n1a48f00729981afbc01ff6a6aade8d2\nb6d6a772087d456a3dfad56d2a4eefcd\nd5e278feb6007ccb88e7662971dc736f\n18010f1e7133415290c2e24416edfe5b\ne7287ee25156053773ab7b7128d466a2\n29f2e3d2815a018ba77f16c25b1f7f4d\nbb3c2fba4e1b712357ddce8e42aa6e90\n4b48b7f72cb4f56ef00f0216ab99ff30\nf10af3d00a4c3e89f51f77a6d7299806\nd466b21fb042a2ac605afa80919f9592\na0e4661a3c458405899bad344dc01f2f\ncb4b887b5acd27cde76bc197b3a3ffc0\ncc3eb92ef1319ba38a3c32fbf0f86f95\n3591b4c764217d2833e4e0fe8cce118e\n56cfd1c474b7b88920c80e4850e77325\n8425ceaafc6cdb0b159fbcda62e85465\n85574f6036ea1f90d8c46a3a266762d7\n9e3905c3fe967a4dc13933f92cd75682\ne083ee4f045402b2806fa01b99bcd24\ndbfa4bf005acf00d351d9ca36f76b95\ncd0f2eaac6719a3ddb039d8689a74349\n5428e217da1af02822a33e080d0e71c\nd2fc5882e1faa78c1592f292ab531da8\n5f3f11372141da8def0b2fc3511b6fbd\ndd22b87797f960f47b0f9bd97c2f1a90\n8b2b8b1048a707203c752b66cc923fdb\n169d73f18f7b17bb4a6ecce2eeb45768\naa34fbd699f88094e5c7ea227b17d897\n40e6433da380273d128650ca4a80c238\n10ba42fc70f16d7f41d86c17c15247b0\n9f09619002ab4d76f42a90fe4baf4591\n53bac55dfe78177282889f551cb32a81\ne9a9f966236acafab48ae76bc6e76e1\nf7b3550d5e59934595bea7c29e873d16\n101d0e7dbd07d8247dfd6bf7196ba84d\n635a3e20af086ce8c0a31f7b214b7805\n1fa4508dad05235a7d3aa3bae1f7b494\n79815be2cb9b004b1be03639838c9758\n46dc3daf02f51d09490ad276cd2af3a4\ncdb065e1726769ca8cd36201f5f879e6\n3977cc8807304dfc5adb3ef1dbe9e3b3\n456a6dc3d369a749519f3f3e6cd6d1a6\n1c003aabfe3e12976fd90c386180831a\n36943f6afca6cbf518134b529d13e79a\n3ccfbe8b56a3b181276206fae5d3c473\n20cd92a6797a9ee12ebeb1e6a8111f53\n5360bb53166e73958b424343280aeccb\nb990d515ee1cfc214a200f5f1797d729\n802c287eacfbcba9564b8e0b814c602e\n3a0719c32c45c16f96791035e86a30f4\nd2d76338428129f62ffd6bbc7610ab0\n833baf068fb6225c99570bac758be6a4\n67780176ebcb050dfe3e90bc90e90c63\n16ae2568c9e62681f8b8d4a282992be4\n412cac2afa6299c3f42a90fe4baf4591\n6b42816b1e70429f61bcdcc7d95ea51c\n4da9ae6448c860243dfad56d2a4eefcd\nced76fc046191db3fe5c8ffd0f5eba47\n872407329ce09557bced73c51e99f8b2\n7c0e5f39eeaa5d6cef9b6f306f98b0e9\n6ee5804580c170cdf6da603e92626bf9\nba95511c0a79f2fc73b8ea30c1700f67\n617e98c1d743c17420ccbe1c34ca182d\n2419edff383179cbc53c4281a65fe22a\n364ea921dbd5da869a58625fdbc8d761\n8207274d3677061673ab7b7128d466a2\n381c2fb265c32cb093be5e169656ef71\n1a6a520652aa2244146fa8a09fad6c38\na16fe5e25c99ee73172986dc05e3b9d1\n3abe4c174e5e5ffe490ad276cd2af3a4\nf2dbcc8dd8a7c604865a5ebd0b487fe6\ndafdd320477802a19a4cbf5d3b79df06\ncdbb91da1b21cd9c879995e59bad3d69\na26918d26e74fcb796433fd91744c67a\n2f46b8a15b15439d713f2e93cbeac35d\n4521282bd4550113a5f600ed2cf472ac\n382e40ed472250924f3443b22038d340\n9802abad61f4ea7c37c99625b0c170be\n4d63d3865d635b2be7c7920f6a65a54d\na1194aa9dd64c3c849d61704e3b15013\n2161683c44a7dc356bd865f153842b49\na3b93f34b7e36cc52460e48c67c108d4\n680e5d7185a51e26a50ffe9b7408540a\n8e4d5fa2a1c91f036a9633583f89b17f\n238138a3b01dc4fa68f9be495c6674d2\n935a5b22007014838047317417e6f5d7\n7293f886dfe144f3496d07587574cede\n30464d7e164a40aa2bc52a80abcabb17\nc226b3469c086c75a1b5ceeca96f6fbc\n5929c6937d617f3acf7d397dd220c7e2\n1b79210962721517fcddd74ee6c69025\n80d86a40527fd0a7edd4171cd40b3feb\n9c6084d24011c791c8107db508bde472\n979867c99d8e0b7a4601feca428b2996\n4cda1ff0899a6fd5f58da08b07a975ff\n6e46cdd2f97cd28ad98bf80379cd1d6\n11913615a1b732d435836c728d324152\n5038edfd2c36fdc1bf1911e2d5611e35\na0dfc97cf85ddccdac42bdc1d2df4a3\n12c0b15c8ed8a3edb039d8689a74349\n1baf036acc927ae27b79156a61ad4c01\nf8a6f60ee9926c01e7822b3160005e08\n9cdc3191bede2d0eef3a2c64cef919d0\nca968e46ba74732551970742dd566321\n84ab363e60b9bd9185d624cfcd9a37a7\n684b06c007aa83873c2e0b170f2ad8bc\n78b8718a36910dd32534572dc403ed94\n5488a4df2e78fa1eb184155425111e9f\n2848ad36017ecc69b4169e4cad9bb63a\nc9b4209f1a7e97cb90a9ce3e4b15521e\n433c55dc486ff83398b2240479533a01\n9b9b39303c66baba490ad276cd2af3a4\n9b7d490678f2c9db3d2be70e06ed6b30\na833d2cae8fada7430f6e0ede20c4525\na18b996f56dbc5cf37b2bb75885cfc44\n217bf5bf88842058b8a06a6203bc49a9\n579387a47297e1f4276206fae5d3c473\ne5fa327c14553b11e589b08489d157d\n421734c234a9ecce5c166769fb8a1974\n4bd69765d13c26ee29a42a0444436860\ne13a855926f25ffc5285aeabe3f6e218\n451fe793f6e8fc29276206fae5d3c473\n2a3267758a3caeb7cf353869450feb9a\n5a79339279fb7173fbdebca9f6788597\n1ce3f06d80025d9528eb8d149efa4062\nf41fdea6ec38439193b00be700931140\neaca02e8f065925dbaf5b49ad7809302\n8010191bdd123581a7e0a9557e913c86\n3343296bb39a9e679410a04d09c14d1a\n7f1a429b9df0dee97c36714e9fbbc038\n7603ca578be87f24b48d582908a164ed\nb11c3bda15930ee7bba5aaac798c64af\na5b8eda3cc13acfbbc8967b0321bd9d2\ndde3b4bb9fb1ad25e0d089cf3411494c\n893d9bdf1d7efe71bb5bd941c6665c21\n1ce6fb24e634d5962a510b8f97c658e\nd05b908d82722b5ab15194162f658e87\n71b7341f69f50e35e86c35c1c8efea2c\n85b3f0b7d9968d79664b3b9b23ddfcbc\nbd9b0dc06cbe7b123c8d0fdfb1cc2535\n4242398ccded25abd3ba76930e17ffc8\n34a9c2b926de1db2a50b88953d263a42\naa1e797797bcc2b161b08af0433fd9aa\n76da74f3a8f15fe8bed8734977b26c06\n211a5b7347645a99967cdbf1c849239\n356224e2ce466b551218479e9cbf7bda\n3638d46a41870173713decb1a0563b12\nc2f6c7b7b39fb06fbd4bf7024dfa167d\n2cc1ea376c68da216502fbbc8833905\n8c8ab9d274bf85bd7054f829b1ba8eb5\n2632d9a8462774cd81255bc546ed0fe3\n48fc49989a124917cd4a89b0fee32930\n1579c3aae8e26472db1afe6c464e7652\ne30a70e900f0a9565d28221e3b996124\n1833ca8ab16a7b7a43448fccd73e2957\ne8350583c84b5e6731ae8c8ff1eb3d45\nfad0ae547e1facc09f97ca916781e800\ne685cd3f7a980812e94026ea66f4d4bb\n99ab3dce10653cb7f4525a0066419a00\n6e2ccf5c1b61a09b6e56ccb2c92c79c\n20c399f42ea5e6ee748af47e1b2121e7\n5270f973e56a05f12cd2160e449d45ae\n6650c1c61c8aefc782db9fca4b68095\n3607a2301201064ce7c8fa552499fc0e\ncab6546da3916aa53c8d0fdfb1cc2535\nb15485a55d855bf980936c51aa7ffcf5\n92d7ce3f06a44aa582db9fca4b68095\ne1fedf82bf8fce9eb8b431083b6191e2\n22315c51156a826525b5da4000a94497\nb2c3fb8c5b65a63ce2c3d541bbe76212\n108a5262552050dfa9370719b830fc2c\nd3a3d52234e722825208aab875b932bc\n35e76406291b06dd66c1e3622e549d2f\ne4e93d5bfcfac3d72518f0b5d8933d6f\ndc78674611170676a87391c8bef1a77d\n5d91d6f6fae09234275d003e423c59ba\n5830c288acd8dbc5f71f6713526f9507\n1a5778ab63b3c558710629adc6653816\n13b365ef4887f5d388a942de43574033\nd0650b751034f567457ba044c28858b1\n2054bfb594262929a89fa001ff6369ec\nb2e4c14ea09658e3d0e9f1d4665fda29\ne389b9eed612e5c225a454369d791fb0\n286dc622e6f19929fdbe2bf897d8a820\n2967944ae64112c11952fef39dab6347\n7b2b1c24a60bcfab2cd2160e449d45ae\na7f071ed220b495d786810c22b062a88\n2ab86b983d36642141b0e36ebdbf4b7a\n89fb4886797187e7f63bf7d908efc575\ndaaca6107846a666a8737fcf23389014\n19d4c28ca3da609a5beaf00da5b709c2\n9bb957d69a2c2369c0f9df0cafd74e5c\n40c3135c95004291240cfa0649692c0f\nfd8f9cb134743e0c80bcdfbddc82df7a\n8566e44b5f1a818ff44a1c032c5fcdb7\n13a20b16bb59fdc712e1ea5343ce0273\n748983e71880720852ac619cbeedfc0\n5828e8ad9fd14a1cdb1afe6c464e7652\nb07acedb329345f0157f5033576317e1\nf95012d97b44f6a52a1b9710536b86bc\n5b74e8ee70acba2827d25c76a863dd52\nc2e2cbcd1cf9a5bcfcb8d8c6d4df8143\n2059087b746a931e6bc1922eaa6b6752\n4b6ba211c9731d334c614ad0ec154eb5\n39439a41656f7d50d42b9650f19dd425\nb4c69d04b835bd716c8ef569725a5272\n94f1ca2ad33eac601ae26e820e4d9a45\ndf908dc58159c82b1b3ffe2c05ec7aca\nd8d129b1a07b23b7a738de48265832af\n2c0177660b7ecc915c118a000b931714\nc561496324b6d8154c5b22ae639d5204\na721beef2162858ca2331382fbc36f94\n370a49ad568a764febb6b411cf15c31\n502e62c502cf2f10280b54299018290b\nf330eebb153447181735ea0e092a805a\n3cca977e9e6ae9e181a172d69c52a28a\nae5ecfa01e88e47f41bb00bd5475793\n1d2c2f3f398fe0ede6597d391ab6fcc1\n684a9c789b62321092cf95a109e87d7d\n7eadde33d9f9d8b272e526c4f21dfca4\nb3ee8dcfd2d814253e793fd9530521a8\n846ae34d173c06d828e0b580c4eee0e6\nf8bdd98f53fd851ec1537287b5c50d9d\n81dd7cff35cfcfba4b3c42e318f3affc\n49d9e5b7560eaa89819e369e3c49bff\n83254a427fd8309a36ca19fb57d01d2d\n1facaa0eb35496fb69783ac218a8a2bf\n1a3127ade9d7eca4fde8830b9596d8b9\nf0414c5a1d22911555683d8c4a0488e1\nf5a48805f020d3e3967cdbf1c849239\nbeab7a10e86dc5bd70d7da54cdb9b8d0\nc5946f7781bf5167aa6c5592e5d8022c\n2d4c4ceacdd41cf1f8c0f5916f81d758\n92c8a795e0dbe340145fa6babc33219e\n4dde6d694443a488edb5be732846826\n405e760fb406d96c2cd3f16bd931920d\n1e10f920ed440021cbded0430ad5ccf\n5a502ebda119949ef7dc60c6a4d98c25\n45fcbb7812f0c9e729426a0f57e4d15e\n20ddd6039bb61e97fa01175e0dff0063\ne2209dc7b188f4a061f2222dd11ba79b\nb8f5122793e92cccfde2773767fa47e8\n732a2b4f7626ca61d197f67767b32741\neb1c735af1339e294b3c42e318f3affc\n3784e4624e880e3d1735ea0e092a805a\ndc5e7460dff922246a44fdd49dec8069\naa6cdecffb9d4e403ec7ad443e0ae81e\n261cc5f20787f50cdbb57594c19a59cf\na9f5d780f8303489d8f5adb469ca89d3\n42129d6b04cb9038b2f7093e7efce142\nd508d163bd2e50a41b62028fb8bbd788\n181ec75aca2de25f6dbdf247ab8522eb\nab999b20d88829d5efb94709f30ce0d2\n62e887efeecdc1a31ebf42c64df00eb6\n5bd90c0cb1f01b24118486d21a76684f\nb6200d3340e31bf4da2dc0e73fb5c1f7\n85f1532468f57b13fb26684cf995edaa\n8b712f3a63bb01061735ea0e092a805a\nd54d7977d760f4c3bd16d4490a10a752\nfb4783fb006f89e4d9b53420a5458c53\nee8543345535674822aa4f44d9f697ed\n8937a2d361775c68aafd61baec633e88\nfec5f9c209e09dd9d49b2e04785f8492\n26f2f40fa7fc0c5538b28f94c165f833\ncb60159e291c3e5cfcb8d8c6d4df8143\n9c3c8db3c4b29c8e7bcb070cc655f13a\na500dac5ab226476b9445129e5607c02\n5c79a2bc3d2ca6b1df8d3317f6046bb8\n5e7f0e657142fff3e4692b8e5c093494\n4d08db52c717b74d49c3792a0dc29860\nd3380ee3db68aefb3f214ef9c53ac06\n6c4c45af95f811e479414e04132a8bef\n3a58b059261aa07229a42a0444436860\n3879234efb8e60219f6b6d8f19761cb8\n3c3286722b31c8e2f678c9833bd643c0\n857122dd5f5cb1b0a34f84d89d87830\n3ca37e415fe44ec2ebeb1e6a8111f53\nf530508e27911aadabd4ed5db7667131\nf9b41c5ee5ce8b6fcb8d8c6d4df8143\naa0c8d5c38e8c87f805e3a6c310c990\nf15294a164747178851f4ba6aaedaaa8\n51a0575368d16f4c99e8bf807e902261\n4f54aea89016146f771b0e756a54d849\nb286c9c136784db2af1744fdb1fbe7df\nfb2de79ee3a257eaf8f5708c6c7585cb\n6c19af16f46fa4699b2dd2b9747d7d2e\nbf6674af4ba8b95fa4080573400e0dc9\n7a3abc9f27ffaa0418a6353ea60f11b6\n1e322c9d236ed96d32acbbe2387ce75b\n2d2a1da36b840ecfd49b2e04785f8492\n699a8b91af86f5a782db9fca4b68095\n60697ef538d1372f5bc104fbace43d56\nfa9a37d95fa8c6542beec56b24479ed1\n8cc8499cdf11e9fc1735ea0e092a805a\ne613b3c2006c457ea35a7666f0cfa5bb\neb8da4f4245496c57f1cdfc0a8f38f2e\nac662716b87687be71e364dec61013a6\nf39cc29063a308168466f606a3db18ba\n57f1439f5161b8d366cff95abd9dc80\n3f6e9d27bf0e972b9f42325587eab087\nad5c4651205a59f7fa0f332f678cca2\na1a81e5d0450d463df9c597227d75069\n990aa9dec2223f108bad9bd0c4ab8e3c\nc125ab8675fdc2b03225afab722d9fd2\ndd40743536da78a2bf964fc57f6a7d6d\n9f6c2428e0cd344d157d629c9921fc15\n882aae761370df14786810c22b062a88\nd49a8626a9eb5ac2553bbd6d743ae8f6\n13f46d5ae3e33651efd0188089894554\n4775f35d9b6942081b42cc426459cc26\n26e6dc505f376ceee6597d391ab6fcc1\n5ef8a1aeeb1b25bd63fba60e6c90121a\n39262f1d1eb0678f71428d548481a9cc\na58ef2d9168f9b44de195732ce36834c\n8b6338fa5916b40e7a5d3427f09d950a\nfdcee8d924f3a8404d01f72347a40cbf\n22c24fc303fa5c8c48cef9d4cb5ab8c\n1f5919744e0376315f38797299bc3fc7\n1e83293107d6c3a92cd2160e449d45ae\n390bc0018f132788fcb8d8c6d4df8143\n6f422c48a60cda58472cd9d4266add0f\ne94643bd9c777491d49b2e04785f8492\n41caf27a559755fafcb8d8c6d4df8143\n7a8615c643bc3d96ed6eef8e856a36ea\n5d45d41ee7fea0187cbb0b604dd1148d\n33caad3abdb4f5192d48ab934af26487\na524e5a1d81df32b68b4a15ea963e059\nb5012f398c4e62a330f6e0ede20c4525\n37b0f61c553e0499be27e423fd45ffe7\nff07372af062502af47e57eb62ec59ec\n4c5a9be10106d239b0957d845ac33749\n1d21fef4a67153dab76e29c9c43bc7aa\ncec37bc68adf2a20e6d206b2ed87676\nf4db9c55f72edb36ad0d9196eb691e00\nb158a8e4f45653cecc571cd3cf8f17a1\nc0a0f01bf127b972257cafc2ddee5167\nc1532683707c38b51cce8c25b11ccdd9\n908bfd876def9e43714531f0291497fd\nb2ed672f1d7c2a34664b3b9b23ddfcbc\na957a1304a1fe3f2f78c91c136e5b5f8\na072cd9c2593414031ae8c8ff1eb3d45\n409ff705d837b30ec3c3e425b20b4636\n1a9c1cbf1ca9ca24274623f5a5d0bcdc\ncd389501a749d5b13b080c0097c00a32\n615019f5899e2aee8120bc4dfb819859\ncdf8043d57863c1b17b431cae0dd70ed\n39583310660349282b6168eeac2194de\nae67ee6392fe8ab94e7cb04dd663c825\n24fb5c490856f7bc12b31765ab67b41\n6267ef99cbfaea7741cf86c757faf4f9\ne30444ae7a929b6687d4034dde63c4f7\n4610f7cdf3923b05cea97147b08cd8b\n21ba9de4d311ff31cdb282e42e89414c\n312d6dc78d666dc88a74e38e7d86eecb\n1991d403d8ade0ad338afc540c33f34c\nc603039e59ac33a0ce1bab91cb13240\nd5815f747626cadef912acc8c54e7fc1\n6d7aeaf3c1705cc5fda82f1d3dffb320\n3ab3e07e432b0afb6b1c0c9b30aea3d\n8d93a9b663a6378ef5c0c3f661e90ca2\n57aa536c02ea697b2195f9e636aede6a\n9b1c1def3467c1a7d197f67767b32741\n4fe9a79b382d30fb1735ea0e092a805a\n1efd03d9264973c9f2098a9f7fc86999\n1499133658ea746d713f2e93cbeac35d\n639c2bfefe1bb6af1cce8c25b11ccdd9\n4003077668e23d6c9998b4eb812699dd\n7869e39e4fcaa1b7ab26a588d1ab0ca4\nd7465ce6bfe4b898c98f75a9ff83e3b7\n27910c314eadb1109998b4eb812699dd\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/03691459_test.lst",
    "content": "8c18ef2a9170a8144884161c20b458b0\n7ba65164444ed5be3df08ed7d70af1ee\n710014b815369e1c2bcea2cd4cc7b042\n3e21834bd08c078963de47aaa413f122\n767f4a63260c8419e279011f622f20b0\nbae089bd1855bcdcfa9922db9b6aab31\n4b29063d6237b062eabe53d90550c4a6\n2335c268bbd05a5f230584014222e685\n2a6f78d39d66f6171bd445ab4c056b71\n8b73786c112d262d4852385de47501f6\n7e63f06b3c48fadfd6d49cce41472b6e\nb0f209faa41b8f0879da6431b0766445\n2f4e9cc37c3bf5f1fdd84f4a160b8854\n460d5cc9d09ec59eb34ed614d2670aca\naf7aded6c26d2b119d3f10ce46ef328c\n1b31f250deb7e124fae32a4a57dfb78\n3b3f46308f2ad119988b934ce1e16bb7\n5f3436d8bb1620f4617146ea341ca085\nf6d4918c7dd190447f45370489ca3156\n7578b2e27851b989a374ee921da07aaa\n300d579cb4dea9338cbc76a30015552a\n2034f891fe2d1e79bb51f8b36601764d\nf0d27525fa81798d982acd4b5c0a58b0\naede81c0789358891ae45cdab702386a\n8675e32f2e122ea5c13bcab6e4ecd7e4\n17c472a6899c92efcf39ad4726172e1d\nac951c58cd826af6a89585af9e32f3d7\n35982cb980f6916c2633ff66beb9cf31\n132257fddbebc02ff14235268cca03a3\n1e82e94cf9f6bda8fe893ed5dfb6041d\n1301670e3ddb72b099284d844aba7576\n4793c0b78701e47dd529f6660fe10a17\n33d9a210df86a437cb3c1170309e6b12\n6be15f4f6dd64490d747b49524a1246e\n85eb14c504232ad1bb36a678453013a7\nf0e562c21dfcaaa1d1936ff8c5fb2337\n2aad0ff91e947e64baf402ca36cbac3b\n57b8d08d37d835995d0dded52efeb4fd\nc462e3b75f570a3b42227a2ba4dff5ab\n8dfa9921e51e0fa3f99860cd321d6c67\n10e079ff34f99777bcb3fc1376c3a85d\na1d1f232168607c81dd4da6e97c175c2\n60575cff5db034c621e6f308016fab7\n5da2a1ae6ec64155dc7dfac1f2c9f0d4\ncc88df1c3cfac12a99db62650613bd48\n622a9789d1eaf6e3cf56355417e88d12\n92039123d08d8ad6adbfb30d8d1b297e\n4c43241d7b30eee379e6d136097a1329\n76007907d4e0ae438c2ccb23eb70d81c\n4383b2bbce729356a9c2f34ef56404ef\n9a94af940a768aee5865ac92cffc2982\n8c7c72599c6bbafc8323fc17a8352c3d\n2c5dde3b43f0b0fc5afcf0aaed5d73d0\n1445e30aa2d3212db6a78dbbcf2e408\nd7233f2190432638d747b49524a1246e\n54e61267b88174967bc8772c5c1a0c19\nd14e6214d7dd4ed62d563c85edb49108\n596f7a94c6d1443870896ebcdb67d8d7\na6453864512f46dd747b49524a1246e\n5c4964d7c42cf84bdd9ef3991bf7600e\n84adc06696eea1774a2b8524bd5c98\n3b01bd24d47245289159eab9ccaa73ce\ne1be0b02973011aa4c5341ee07f41676\nfa2cf860e277919a7445d25f394949d0\nff9c1754252b9ebf73c7253ec9acd58b\n2f7b5ea50c09d928b23f3e90fedcfa3\n2325005b09d12b2585d624cfcd9a37a7\n2240cfeefea8b69fb90623b288d5691f\n496aea93dd8f7af1f3f18c4c348425c1\n9b4d3ead5066a6c5844e9c5caa6d29c6\n2daca96a8e202949c67b8955be358784\nfd11b075bb1df4b01f1c09aefb59ebea\nd09f0e2e33452a739d3f10ce46ef328c\n716d1d38cc0bcdc8c9d5b08933b9e0c1\n400fb89ed6cc3d2bf1acfa9a5200e941\naf39a67dea9ff78bf46f716b2b22b550\n1742419bf5a54be3e1a894502fdbf97b\n4d276aacd5e4c510de7da340cde8d034\nc8018ed73c5f4087eb927391bdd6c8e8\n6ab218aba38bdada2268dda5c324173f\ncfdd69078d7752298b54295fac36ff1b\nfff40d102ca88fdb52648dc23b25b1d\n5e6d30de53afebe2fb0a4dd466ef3d66\nfe977bebc78501995996c3a82deb78d6\n86f45d4bb1f5f8597a040c8bcae232df\n8629dacee484080c7ad11885dccb6f43\n5584bebdc80ecb42c9d5b08933b9e0c1\ncf0da3cd69392999da2140846c49e200\nbb570a28a0e81a51d747b49524a1246e\n93c5159d17de18f02899849b3f61c3c5\n3636ebcd2e5568616bb15da9e307a14\n6341662056860c3e225f3f0d46b4fca3\n6ef86253eb81e4d418200338a176d705\n48bf5d4693bb7ecfb4bf1edf2dd92af\nf6954ca2e4c2b03c67b2ae8c967fcba0\n7a7193771ada6796a1b0d9ebe362f8f3\nef71576ad5262c4ef398d0c5832df00e\nb859938280d0c7346583871b5c274818\n913eb13149ceb59a75a3010d3ada28ba\n68393fdf9730d1c86e95461e6c2993ce\n4c5b7420078b23b098935bd14e27f0a5\nea95cdbe8f4114107354c46aadb2b2fd\n1334b56706bddaf4451f278fffaaebae\nd6f0a0ca6446eab0c0b5947ffe18a468\n95c24657d2ac0469a3cd3bc808c81de5\n54fadd7a6c5c04d752560296120d4cb\nb93169c2360aa02ea14443313213c384\n1788d15f49a57570a0402637f097180\n8df018bf733ff01cf00aae52edb0b7b\nb7285ba6fc6628a1a43ada367b02a4fb\n42fe49780429d25d1de55fee5ac2c5c2\n81b711a75b8781956faee4308b49b522\n405db2cef5b41756fa16d3c3138134ae\ned981b60651d5ad8265d1076b4b6c5c\necd9a96ebfd0caf6d8f9dd7647048a0c\n8aea25f1090e419c9f78b1e1185445c4\n3c467fca7449a857a2b4d33761839e86\nf37f4ef72fd0204d839a84b4ae4862d3\n39ade62ad13e3c79206861ce7df4037f\n90120bf8e84315de6873d49607c1f87\n3cbeb01fae7fb6ec7238b5c2712646b7\na288498f21acdedb2a65278501cfbe7\n19a8736130ef822b93dcf5e22ecc3f5e\n10d03876d94ec5f4e7670ea63e6cabfd\nc2024c0fa0906fc724abfaa350249967\nc3733b26c3fa23ce2633ff66beb9cf31\n374df728f54322363b0edb55efd49670\n7b7904e3d5ac33a65afb688fc9d0c0\n945805d18c0de73ae3e30e20ce3a5bf5\n71b4fb2d151a9d70fb0a4dd466ef3d66\n6d28e2683df5f013c9d5b08933b9e0c1\n60d58e77382f081a69d22ff82177f51b\nd233b0a03f171cef47e72126a394af4d\n6592d33f84263ef435cd53a06b1d2317\n16ea8ecabd3f373bdef52d9b75805a83\n85e8d20d51ce13cc7fbc060fd555478\n64aed24bbb7542c6afac285245c66df0\n84cabb92bca7c3fdf2198539cbd3b69c\n451f3d4fd10530b9d5a56ecdb5a1cd39\n7263b5bed1c020d3fd8284eaee3b0fd\nfd421313164e2d7f1be6fffd725195b9\n164bf28ed57e29a6293982b5acb5446c\nac27fec4b0460b00318a4feb4ab5fd2b\nfb60dd3c36439d836d74ed7e4da4b6ec\n6450e70e275a80e0e39b302b17f4c82d\n1124d162420a75232633ff66beb9cf31\n91f570ca6702fe4abd1cba733b111584\nfae47d104b9111aafd949ebbd292d47\n1152c16d1081c32a561e8b31a1141890\n7599541dac4a89ada1efd4f01acbedc\na8f3e98220f34623b3d8c1107f6ae528\nc2bf199ce5a022a1126d510cb8dd3d9e\n7e359607ecf460f399372ee1e6dff278\n48c21ec6f9623c997ededbc2b9b4362a\n440745e23b80c41f398d0c5832df00e\n2a59accd6ff9b5265c38e15d823f1476\nfa09acded526a0105b1433436fd82800\n7d2bd4d349ae34a2fcefa74f1d0bc6e6\nf289aadb7cdf59daa62fb160d742c45\n9a017f96829a34a2b17f090763e2921e\ncb356bbfb74abea2c6573f6ede3fd543\n560a626f93c664ff9069c2d361390698\n99dce9c359b0bf4afb33d0031815b3e6\n2b3e7da84b849a84d3dbdb797d2f78b5\n40b492e1a0fb0860e2f05bd11e1d1c68\n9076b1b9e23c7446d747b49524a1246e\n3adf396785cf9dee7bbfac568080cdbc\n60765697073cc44cec7e019402cb7bad\nbdfa20e11d204ecd35cd53a06b1d2317\na3f14846404245d5bbbcb091dd094e5f\n10d16ee9c9402e6df2e5d34c7b677bc4\n21612bf3e866a8831d6b14cb827cdf85\n3972d44065257859c0b45c582c6ed736\nae4bcb4baca763c24521562865ab775e\n2ab4f9bbdc17d9cd618e9d35559b7aa\n970ada2dffb5ce49a663d9823c133130\nb04281aa2c134623cb3c1170309e6b12\naed74c2fb80bf363f5776cc601097c0a\n95db5c34357e2a81bbb94390080b5b78\n15e847b20d22d56cd288bc0586930768\n4e3669ef40de1b3b465b32805167c435\n66baf7b7b4ce43d7e50f6aaad9a07bc\nb70c600b20614f4c690135fb845b8de1\nfb86950be1b0ced7760a6b24be218cf3\nb40b4cbf6309c3519fa340262d231abd\n1ba39460a5e31c722a813544190dbe4a\n8b7afc9b056307f3d3ba59ac5475adf4\nca052c8db0c94fd345189af3887d3c51\n5ea3d1068a624c1da91bbba4742a1643\n72c5cab12c0ddb22a0fd8d18f37cdbfc\nf452418d7be7e78eeb752889d5199f9f\n923b7f0a4bf93c4fb66814b45dc64bc9\n3187862d922b0ce96583871b5c274818\nacbda0d16acd03329d4b859036b8707c\na34c80e1f6175711c9d5b08933b9e0c1\nb521957294cbb170c7c1bdfb41b9d2d\n2a8345bd5d50456d8db1a0ee98c45ee7\nc1ad8720fcc7246a1fb294203c64a4b3\n2ae8239afdabc2baaf365ec12406f363\n8bd1d73922ebc098627a66821130f814\n8a3edcc398f34fe534b2581df0f941a1\n3fc0513ac3bf11c873d25f4e2e3775f1\n3a4950ac89429ff5b396c6d231dec74d\n17c5950c89528703225f3f0d46b4fca3\nffd168e54f722339ef94793a67b4c5c0\ndd3f884d9b5b3c0de7b7e97e5332a9cf\na6216e99923da6988947789ccf4faf06\nafcd98e6a91b3d16569e2e0d2caa039\nda9c218b79205d489c4dd878242c44b7\ndcf84867f92cef75a9c2f34ef56404ef\n28b91f5ca7e3d174fb0a4dd466ef3d66\n6fcb50de7df5381835cd53a06b1d2317\nbb1b387c674fdc4750577cf04f3bf74a\ne750bda061e86402cf39ad4726172e1d\n7fc23785c19991e4e180a1a604561d3b\n64ba67a67d83811c2b688d771932c023\n9fbb43c7437c1bb8a2ec0446d32ce69\nff4bc6c329ec7bf8a0eebc16d3afb516\nfbb7610643dae4a34c5341ee07f41676\n800a0a91308845b4519f3f3e6cd6d1a6\naed97e60cd2802ce7ffb47acd56f396b\n26363bb293e6c9e499db62650613bd48\nf000edc1cfdeda11bee0494534c13f8c\nfb4c855848345ecd3e738e11bd8803f8\n37758713e7a31d1710b84d6f34c2f2e1\nafe96f3cf256cbac81a6b6721af23c58\n5336a4698616726725a4212543dabaf9\n8d55d634810b52f176f6deb1c78dfee8\n40511e6769c91cbcd3dbdb797d2f78b5\n105d0802d1ee0430bba5c9b6de65a038\n79c3e029d9ffbccbe58eb6a4fe5a2344\ne71f2c0e0c760ae98139dd63d55edc44\nf663176a43096b35a43ada367b02a4fb\n1c25b626dddfc36a28d267d044b54402\n548f94cd0c5fba501148996e35417db6\na82329a937432afe8d28f674ed08c521\n542bc1ef866548c3d24fc75b2f944a91\n80109bf3b6904d577edd21390c628646\n431892f5456a2b9ab96497d8dce09d96\nb7a6e59fe546d81cdb2e05daba43d6f\n5dd29010575d36ea73e1b2d018c0512\nf2e521a8d08e2a2f20363e2561dd589a\nbe83d48fc695dca62b4e8a84a498fb09\nbe5e0dbd5a8a589ca04f967bd94443cb\n92e409aa16d2d673b5203226c26c59ad\n4a1ffed169f04f5fd084cd4069686980\n75c408e3ce113c84d084cd4069686980\n96d6d519784e40c0c066b9622c005c53\n984d064e7e0310f54cb67f35c09e50ad\n84e6e1fb56eb60e918d385624fdfc6d0\na2dc5748b523db72bbbcb091dd094e5f\n46bd2ce6ca3439c9c2687184da14e3dc\nf9a615ecebfe7ae1b27175774c9e33e9\n8d7d7dbf8f0c0f7673e1b2d018c0512\nb754df4013a71f6873e1b2d018c0512\nb2af20dc171d40e4d4e62d99c536bbaf\n2d1302ed4d4f43ca73e1b2d018c0512\nd087ad474122e24d887e8faf8f33b0c5\n5578446e4a13451a6c7c9dba2abc9f8b\n94abce2eb2c9567da7729f9969cb563e\n27046cee7ae745e6d207241113bee327\nc75c5ae81c1fd498c066b9622c005c53\n57412ca31eeb15bf75fa5879e0c49e00\nbc11fa1bae19a90ad74a70b98d3225c0\n217733447f1ec818c066b9622c005c53\nd06efc46aa999fa21574d21c0c95092f\nb209054be0f71cfdf398d0c5832df00e\n115115104976edfdc066b9622c005c53\ne41aab211af3f84673e1b2d018c0512\n2d53b9798c7ffe7a6e55c6c7c80df9dd\n485a778cb7416a59e810658c16fad24a\n83dea2f2561fc2fbe9364d19fabb5f00\nec0a8e2fa00a746dfe74514a9fcabaf8\n1ca17d2cadd47286c066b9622c005c53\nf7a45911d01fe4a961775b840d882da9\nb0feef9f599d41cbb3d8c1107f6ae528\nd2426b884d1108e8bdc8d5970acdf989\n39554167163a7cc3f881bbcfcc456ec\ned06c596dd9b9cf3dc99793862c889e0\n68bbfac3232f153c6ecea800f06e81d\ncfc38353ff8392e73a7dda43d8d95517\na31ac0bd8915d99631c992914b89bc52\n65dfccb2d5e47538a24143eec482cd09\nc51823c76ebc7f6e464e6423c0222f3b\nc398c35b48c31188c73a379f25dda815\nebe84e8ccc8b5f3fa817854e3b5b5439\n1ac22719af776fcea2626afcc786d93\ne2c1e8958295f84459fca7a6b28640d3\nd3a872834cd0aa94d77ea5e1afa5bfe6\nc15fdc911c54f4cb62c440075d5ed193\n1bf06b16e59e482c238ad1274d829e68\n73c40350f07efb92d207241113bee327\nb3f5d033d3fed8e9d207241113bee327\ne47b83b94a1956ad7a16fcc398700938\n8e25a8e0de9ff545bf1411bc6f3b308\nb4d4338a36711ccdb113389b677f57ff\n4f152b01f056d0c35363d5176df02e54\neadad629c581c28c6b424c689f1d711a\n95d01543b46b5e43f398d0c5832df00e\nb1fa05d508d9ed81753a010738a20397\n88ae9338c167e8d5238ad1274d829e68\n90e3a0488b8ff079d207241113bee327\n108316842b17210394a42262667addbc\n29c140fb4eba078c7909eb62c64c0070\ne2dc092a4ef62c09d207241113bee327\n64ebe165fa668ad4abbfc2108a5a7885\n4468a5e60a6fedc086bb0379a61a0978\n52e827d2f969a2b61f2b6130e0fe93a6\n3ee30326a3bdf219ec2ca8479368108a\n6e6b4d2603930dfd4fc88114be3a6b6f\nd17192339d28af3234140f5d5f70bb2c\n38007ed3e5ce40ab13dd6eafe1477be1\n123f9066606d80206454c2aa07613033\na4ffce648faf8349e651a075b3dd0597\n1c5c9d780dffb5c2599d9c8430d600ff\nd69d5cf7868651effd28950562697757\n221a981adf503875e17b9e33c097dbff\n4e06e2b59a83bb6229cd1f0bcc30f82c\ncd451b74570bd84f44dc88afcdcd380\ncf7a2cb0c487f3a0bd1cba733b111584\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/03691459_train.lst",
    "content": "b10f7a407b4a3722296ecd3bbf65f1a3\n48a2091454502770408d050f12518231\na88fabb4286706afbb9b205a4c97698a\nc3fbe6332f413bd2bddb05cb83a4378c\n70ee226bddd4005836f19668fecae7e8\ne314110b72e1d310dae4b8efbd2ae014\n88928666d9c3939dac55321e2e1cf09\n2a77ba363947f4f38a9641b35ef045a\n4eceec9a386a21ef77818a0572bf1777\ne12178cbc10606bbb48374d47d81a219\n6abdfb1ca4d076a09c4dd878242c44b7\n73a695a6323e1d38eb5f0682bcf1d404\ne9723b5243412b462a8eeb2a1f362462\n49e47ec81395e290d3e5b33a5e1cb23e\nc7b58eb662984d701df2664cb33da9b9\n91b781b40d32b74dc491effd0ae881ea\nae66dc3ecd9c8932fc459988e6a7eba7\n96904b01dbfa0d0c5865090ad6b0dfd2\n916d2e621caefe3a1a4345b067aab43c\nd2553e5fc4f1527cfeae521e94848af6\ned0c530e245dfdb269d48411e34c9daa\n9dcf9b3c53f1cb135afcf0aaed5d73d0\n8834ec44bb6d291490146e2a0489a257\n774214a85b87204c33dbc1ea1716bde\n73c76faf92402a9183247f812f2eaa97\nb06106540932feefbb9b205a4c97698a\nbb7dc95eb35acc8bfd7a7d6380a6ae94\nbfce87b0ea79c8aa776400d171cf9dfa\nf8aa418d093076c4c194eaff7ea54233\nacc5b71d898d510f1ef58b31c4ba0d15\n1e52b6d474a08635c10555abb2efb430\n7aba5bb94270d994451485c22fb285cd\nc4ca7f58c6144e1416eb1b6d0ba9133c\ne4edc21690f623a35587d8c9be86464a\na543d9e58d4501422a9eb0f146e94477\nddfa1daa59d5bf2676c2a9de5c96f76\n19b900dfc658cdcbd4b4ae2ff4c58b57\n18abbf4da8320e69438aef443c33bffd\nca3d4a62e7a851816463df620b7b4cbc\ne02649d9d5ee2f26d07c55cf995503e\nee2d8d72b555df84ad5d27efc990ebb2\n2750caf7565977341ef58b31c4ba0d15\n403649d8cf6b019d5c01f9a624be205a\n58db9d793ce3c2ceb0109464688ee1f9\n35fa721c71ae04c1472cc88b92e0d72c\n87a0dac4a3c483de6671a3cd2be21041\nc98654c348ccf6baed1d3c8863995334\nee962ab0dbd24bcef78c4384b551bb5e\n1e8aea643deed7cc94c70e7fd262be3\nd337b40eca9f87259fd3da8ff7252b25\n80000b93ffb0ab8ae47833b310955a9f\n46ec6741dbbe69bdbc052c28a9e28ccd\n4f42950d660bffcdcdd18be3aeb2d66e\n5820d7ef5c9942e6d49b96b9f2811c7d\n337db7fe63aee7512d97367ba974aca3\ndbe86be505750b8d9c92e8251d55352d\n6d24eaf8aa3c362fdb6f3ca49e992ad8\n2c64384906f809f09e9eb484700b40ce\n492eaa948ae2f795a6d5deb42d3af608\n9ec130a3ef44b7a1e47833b310955a9f\nf9250e29e640eff9a5f99ba0b2469cd9\nf57b269b91e369f07b646fca2237eb6\nb6210936b5d1be007670e02527d78e8d\n5f9d75a41d264b9bf4fd8600b18b879c\nd05deb21bcfffb07fac7130d270bddce\n55e58eac4a2e7f4c24abfaa350249967\nec1b85abce89d680a7bc6032416bc8ae\ne8885d12901ed5aaa7d0cc9b15400f65\n4014de6b20178cb92633ff66beb9cf31\n9916643790d32d0dc4529c39a8e542cb\n1a4ec387ea6820345778775dfd5ca46a\n112deef454bb8345c6bd342792702e80\n6575a80a0daca56d1b37f37a4873fcf0\n5679f86d9eb0bd1ed4ab0eed66631cfe\n5b9b77ad6ce283a398e4bc44d45a32e\nfcd642cc82a4417848db103415b9e9da\n38f418f2d64692df63ee8a34069b7c5\n67e18c3be264e30b636095aedba53117\n3738550fa707533073312da09abb660e\nbc3e89ef012a5904688bf677a786d0bc\n3c8dd5506a17628fa43ada367b02a4fb\n5e320dffc984b6b5769dec5ec0157054\n6e97134cd7dc3067c24c52be855c1525\ne8dd60afd061fb273ad55e05c29c23ee\ndc8d31790da3b1c6c06fb481fc51ebd6\nb8b54d43aabf84a67aec59a4d1722658\n81eafc16db11da806583871b5c274818\n53856db6d2a2873c80ce1b5d66a0b782\n40169512586f3b6f77964cc933a9a0ba\n8c23967793e62320825138352acfcb46\n35196460460f022a105260687f2b18b7\nb16d2f432bb57fc76dd78e11c421d52c\n427edc7774b50232a789103b1a0f3e38\nd76360da1411848ace1db673cf70420f\n8310e1e0a80ae09967964ba700cd97f5\nee6445b3657504053839b8b68c69081c\ne8ffa936875c7b3a7ffffd2e0fcbbf0a\nb8b17a4a9b8d0d18b1561629b743a85\n3b55f9d0fecbc561de9a8c37f2997f\n1a14b00578f19b1f5c38e15d823f1476\n2686bb573a9bae79d34aabb2f31dae9e\n2e44c37aaae8052e587dcec4a739e277\n9a91398e66a8c980ebc29484102f14e3\nb638ef590025961f5adfd0d9df77c16d\ne82622f52b46e31df4e3932877a139f0\n2af99551fe3644504798316286c07255\n707f0e44e935dd55edfd593a4f114036\nfe13f67712bc5e4a1b02cde7e81f0fc3\nf657a906298e9151e3178ebc750d175\n8a3b591b72d0f5326d9bd07411a71e3\nbeab6a006f44f33de19807d50c8d841b\n58c7ab29b2cb73171e652fa812161367\n3fa5d9e396596d36f7d10596716a94c9\ndd05c61250149ba5d49b96b9f2811c7d\nfbdfa353d97d91fc719d3f85e0c9919f\nadd914368a6ca448732bda87f2718525\n1686fdd7258aa16383247f812f2eaa97\na10f7be978f78f085e2bf91b698938de\n5944386805308443cdb1aa1514be92ab\na6cd2be54bb9297d53c8f7a04cc7057b\n32cf86c686fe9b1974828baacbf242e3\n91f4c25e1e325683e7ac477bac77def9\n6d755a3d6d0f265d77ea5e1afa5bfe6\na6cc92fec1071df0fb2034808cbff90e\ne031b24fd58c84c12633ff66beb9cf31\nabd3b55d14db9b3c8db1a0ee98c45ee7\n7ab21928504c8f5983247f812f2eaa97\n4d165a6accfad3d36f18f54fab5ec8d\n88eefee684586cd3fd56d9106430c3fe\nbb3667b3a72b0bcbad6ba00d22308a6c\n60474fda23d64ef0debcce788b4a424f\ne767a0e8df4e41f4b3b44ad99a214777\n1e3da9e2f274b6a89585fee86900e65c\neb2545337b85fb987695b38431695f3\n21e46ca2f8bbd4df71187cb9cc8e1a\n4294d3cc2e413bafe45b40770dd7ed5c\n21127c6f6f4a28fd4bbad62bb35c0a72\n6eecf81ba7508617cee3603bd2c54843\n8671e50787f3486e1ad88f716ea80910\nb1112f7597347113892a11caedd0d90c\n624046a3a0cba1b6c70985f30f25f8eb\n4949c92a3f0d0946f536dbb8b34a9553\nd956f40d4b3cf48f7889725d46ad23\n6803540650949be89c4081063e213a15\n50b1f4e5a130dafbb5b1048c702c9b77\n5eb44c2aa29844391f9f3ce366e030fb\n348d289b6a08e7b44884161c20b458b0\n6d6fef896f1196416526bbcfb9a38489\na0f57b3d2c2ff2ee2666ee81c3e6ae4f\nefb33523a6be2e105a31d91ec836a511\n2dd5a69034a03d267aec59a4d1722658\n5b931476c24abb5535b5e203791a802f\n5755d5aae08a8f2dd9c568a52c35ec71\nbd76dee31cdad0f0bb62a53e25c6d701\n2cf41211ffafa4ea1f9f3ce366e030fb\nc805f5a262130e6cb4f6b6fae7a188ad\na159a9bfbe200e651ad88f716ea80910\ndc73b4f97b493d18176ac8585fbd7fcc\n6b9dd73a65dd50a71ad88f716ea80910\n6ff24c5a5003a1a5bf12d1e914fa62b\n519b0f5581c72a25db30e42459dcb06f\n414fac13be35799d19077496eff9d4b9\n5394ceacb131b5e79d7aee0f8e107545\nd80f344b9de3e280610652dddb029059\n28c30025290a56a689296e9c8a412e3b\n3db03a00661e6113f2a29b1958708a7f\n62021776119f573bc7c51d4ea74651a7\nc55edafad476d908d17058acd487e2f1\n36526654949a904b2bf4f773fe0e622\n47d3fbf37d73e0bfb9b1918ad0534ba6\nb4e7253cb9ef78852b75817a0faaa5a0\na55295b8538238ad6ab2ad957c1db573\nada2311f4edda41478108236e982c2f2\n986bd3ba96016425cc0d3a65104f5927\n3b911043f7cea0639f2401cb9e9e4a2\nacf4daa2ed704ef36a27540a4ffd1b08\n22d5aa5c6a173d31b59e9758ae7f41a7\n40efb91680a2a39476ec75ad1a6d21e9\na47b1e6d492bb68e8dcbd53cc631ab\n1f929c099da1f3d890824251c0961f3\nc280153b72c8e8ff571d223b2b8e4a24\n3dd9222c775b1779239fd9d02eb7da4e\nb8410a2c19a50aa88b04a17db360913\n739f89b772ccf495b9451ae41e1d9ea4\n460f07680e1d50866f6dffbb7673354d\n388ae2b6420bfae26cde9ab9486e09f0\n60858213ecdb37dcb7a0c56c5d82c3cd\n7488e7b4b7174ca73b2680579dc5dcf5\n209086558286d4621ad88f716ea80910\n119fc0c18388a2a2e338ca8c90019f12\ne11cde2df1c508f7e098c9e597ef1d0\n982f52d3117411a37ec3f7c14c03a92c\n375b903579b795abe3917427ea7a0e20\n9d180f7f43dff3d51ec48bc3c478566d\n78d16c052215997b925c6624a25951b5\n119d64f6de33ed4093eb0b4dff044a09\n4f53602d946e024af7617b7ba3f8e259\n5ec12b34a69e34d9c85671f86a50354e\nb92c1ad2943ec29168faa7730065e439\na29485bfe6a688f0ce3ab2c820261e42\n9a35e159b52a7b1897bc8a58bf164429\n76cb5a9b7b8dbea99b590f104a4a4c1d\n5ebf73b0ef33aac5451319990092e2bd\n5ea9cb9068520d3bac80666502f7b62e\ndfc293d76992ed9656fd7f904d2e0c\n9f43d3116f4162fdce029fab54b6cfbd\ncefb560ac4ca8b38a046bbac53886364\ne7560ac665c6fedc7d54ddaedba43004\n5a66a86082033c79a3acdfe62acaaf8d\n61add6842a1dc131b59e9758ae7f41a7\n999e0646b798f67a5a60f8212273313d\n213d39983b0a865d1369827a16f97392\ndfe7f79a9a4279d09596b23e90d45a7\n95eb96eef8f0e3a7ed10ef1927ebd15\nc94dfdebffb371022b75817a0faaa5a0\n831f70cfa81a12ba7b440c5df8efc309\n6577288320db747cea37255d6341d07d\naf4dd70becae7293efcf7226d1117163\na58fe03c817fd0311ad88f716ea80910\n9e2230b0d4d8d33e4ba7340387a30ad3\n30bf1d16fb6c28fefa70f8d6bbdfb0f4\naf4a2a3b3e3510bad49b96b9f2811c7d\n199ce49a7db017107a964f742d0e5820\ne6e7c3e1b887d2a1751b29c8fc6f20c\nf904f64f961e9cddcd3e44ab53ae1e92\n4d8420f146df7c37ec2dd234c32c102\n9b7001c69e6f1978bf518c96c02a8c5f\n98cff6064749a5f3e746404352385716\n8a8f13245888b8a1411171a7db2d5342\n1071f82bd0d6a23935cd53a06b1d2317\n58cdb18878bf9e42d00d418bbce73381\n776b1ceb53c8ca881ef58b31c4ba0d15\n65688eeafdf06f8752e2d18963a75b4d\n73a337691b4015ff1ef58b31c4ba0d15\n8150d4e919381c64e1ecc02d6acf021b\nd5f20697fdea1b20fbc9490485dff00c\n6070b86ba88f51a52d48173107aeaaf8\n196d5295dc5c62d513bedd75622dc40a\nf4290921bda21901caf9cf929ed6f71c\n19ec27b0dc5e478e2a9eb0f146e94477\nb18b9f87117cbc94c274436d9bc22f7d\n7e105d770e297ee43dd0d6160c4dfd18\n15fb39da1ab90994a9504db65c138da5\nf2bb5c899ac2de670eb1591edd539b\n6995acbcca6f9167f5e02330ef435fa\n464da0c0df4ed3c0dfdc04b8b8434e84\n343678f49806ebaef09c0ee854308ef3\n22fdef9bef225163d747b49524a1246e\n36206fcd5fd8821996ee15847b17fe3b\nd088d0b4cbf1d8447b041fd2144f3532\nfa6e17f7f928e8a44b2f94f4017fbbbb\nf6cccbb93c35fcaed49b96b9f2811c7d\n9080b08716a2be41e47833b310955a9f\n16eec6c601ae44c06299da17267bf77\n9d62c46fc3fd343d1f9f3ce366e030fb\nb8b1643518382596aa623a443910bb58\n87f10613128f3e6198e0c75f11f82c6\n8a5cdc3bf1ed6226b7b1e717b48d88bf\n6bef36ab570225cae7d74840e6097218\na0f84cab1fa73358078e785d09667d5\n18602a0608af58023b80bd981244df4c\n5e9e7b6cd01eb0edbdeac9f0a8ab72fc\n1eb6ae90ea03673ee792f9d89b97c271\nc37c230e15f8c561ce029fab54b6cfbd\n9165f1681f4c5df6f63ee8a34069b7c5\n7b7d7bc551ca91b3a03d35fe89e56e4c\n9403368e6a0bebf5664c61db46dc2c9e\nf88ff1c46ccace6d5392678120123c42\n865356c79a595c3fd3c3c7b74c67a723\n3855f5027ab422fae6ee52444763d57c\n52e710a9bb750e3235cd53a06b1d2317\n853f3c53280aa44fb63369d5dd85d25\nebbb434aba6d7c271ad88f716ea80910\n65c24305578ee500dce0005a7422ebaf\n3aa8876d86cf481d3fd2d4d929afab9\nb987e53822ad2809c7e1c32ca6dfa00d\n96ff36cb731b29a61ad88f716ea80910\nfba117b56b6829d0cbd549969c6fba9f\nfb6bb656468452fb22d1a40e420084a6\n3b63777e658e7137f36ecf951968a8b0\n438dba79401818884987b3f5f9a53cef\n2e530fca4ce161902b12aea3a74e3599\naff81ceb0788c2c2d77f9c6ccbaf6fcc\n8296f03cef18cac011cabb4938bfaf4d\naed2ee05cf37c85c9a8c31231dd99d82\n158f8a4ceaa281ab2bf4f773fe0e622\n16e3c79113685e52203eacdbee49fa8e\n1297c443d9a147ed9d783559814f4705\nd23b86065834982bdc99793862c889e0\nca9ca5c5dbc82019e6bc953d57dcc636\nad2e92448857e1cc6ad08aa387990063\nada71fe1283154ccdd70fcdaf3665b80\nb00c5ddc2efe42eea64e5c46abb30c70\nf1d170b03b23a3139cdd3031da0f98f5\n533582fec17b538e60e1d7e27755edc1\nc4733a08e1fc82373f48f08f97da0e7c\n601d696b56ed35a3b4f9aaea3b860d10\n4f228d116af6e6ad88a3e0e92891ad5\nd3e279ab7bb0dcbb85d9d97241397921\n1d4bb07ac73996182339c28050e32573\n9a8a760dd2094921bb476b1cb791329b\n17ba9b90304be1b4ebe67d9b32c3ddf8\n6c1ab06a1ae2471e86bb0379a61a0978\n9c5a473824505151fdd0cc0c1a7bf8f5\n61a4c1b213e7eb2b2633ff66beb9cf31\n14e608a76c6b77bdf6045e4ebc9df52f\nfaeb2f5501c8618ae47833b310955a9f\n20ac1211f88a8a1878396b03f57f644c\n3c71e2ce15ec92e9c8ae2f680beb7e46\n59ed437f426da7c8c3eb2e07e7561a08\nb2ed74172242cd805b2ae1f253050025\naaf32dcc3d51cdfe81757e1914c08a9b\nc3d845c1fe644b39b6ab6d583025c7a1\n513775c0ca44462d912b963d265d5e8\nd4fa4988db7f2eb477818a0572bf1777\n68d5652dfb91b82fa2b4280235a76885\n3d18b9cbc81bd83b83247f812f2eaa97\n49c6597ddbc1196be50209c399f9eaed\n3490844946e68402e47833b310955a9f\n5028625facbf77991a622b6f91cfddf\ne796a74db4708efcf115c1f523ea8464\n9a37a34c652c33d37b46c73cad9e78ec\ndbb3db217511d9cbfb906a2c84fd375f\nfc6066741f5b60e5280e0c1e89a63998\na1118bb5b6afd77e6f11d65f7a59b6f5\n3a0747975c07896f1ad88f716ea80910\n4e68ac6cecd91de23d91ae2b92426394\nda9317e5776ed22b732bda87f2718525\nc216e0b5470ec21f6ca2b6e5474aad11\n9cb881bfcd65686176d485609557b1d2\n6d070eaa65ffa57193fef5a7dc080ac7\nc0de25758444d71f77818a0572bf1777\nc7d423c4d63ae4dfa5bf0df4639be0b0\n56e2ab8ad78040432b3bd152980e4b5a\ncc6ebcef8d2e674690146e2a0489a257\nd027e01fdb3830687ffb47acd56f396b\neb8f035d56539657f90555a83c8826b\n37325d57c8ea891ad77ea5e1afa5bfe6\n5000f99de4ae981bc52c9abdcf87548e\n7f1be3e7b6adeeae9bb399e812556da2\n9821d2e9018233f665a0f3090522e03c\neae023e4c609a77799234ad1a4f88718\nba56fb3205a34768d4b4ae2ff4c58b57\nb14b479cf64c7d9ad77ea5e1afa5bfe6\ndd57cef71e09d11121572f6a2d968d88\n9b8512f0cb1fad4e73e1b2d018c0512\n8c2bfce4c190934da98a11883c15abf\na551777c3b35c06f43f491729931f44\n46f25e8462258a85a398a0556683e6e3\n1ba6735cd32d907ad493bfe20f94b6ab\n2dfc635b5ea197bbb611871e114769d9\n39318878f6e98ed2150eaf7a4ddb8bec\n6922e97ab45e4e47b59e9758ae7f41a7\n44cdc1204fa555be2633ff66beb9cf31\nb5a2b8202014ae157a3d98bc650d077e\nd1274fdcd4f8a611fe10244ee697dc96\n4583734434ae5842a820191310c9bacc\ndf8afdea84c72cd5c3dcb7e0e318dce1\nb53eaf891eccce82a4df8e9a50b4aeaf\na5e412770440524b92981997d5df910d\nec9938becbd706dc8dcc38f589890f0\nc3661475a6b1f7bcfbe246021081638e\n70acca9ae753b952c71de83a48ed3076\n3609604595f025801f9f3ce366e030fb\n481d17e1ab933142b868767ca39f1cf9\n969512b0adee661679c6a0f7677e9555\n704d0b362588638aa249f8489bc060dd\n16e0041bffa976462d563c85edb49108\n775f3b78e226f125b21450114b9ae3a\ne3a37b904381c61a46407779dbd69b2d\nbe277cf919c1467dfc1c2fb0640247ec\nb43daefea1c1e5a5b8cf54556d95458\nb8d62dc24152a3463d91ae2b92426394\n6152f977e3cf8ccae47833b310955a9f\nbc547d63373a98997dc4f6934317af74\n245ed4407d4cead6b9c1ae865c9193ec\n4902b88bb0834522ea9b57bdefcbc9bf\na1c80145373d98837dc4f6934317af74\nd62a7c344c62875f9a0cc1a6d8beba8f\nacbcfec18a26c4583247f812f2eaa97\nc91f926711d5e8261d485f425cc21556\n91ae8db92f3dd88b55a8aec4bacc60b8\nc029e58c26875322a9eb0f146e94477\n75f07f0e8343639d37276d660ae66f0b\nf75f60a086094c27e5096e2c6dd4fe11\n6c2a8b174ee60c241ad88f716ea80910\n85399d0503bc8a5b59a6208793b9dfca\n2fc738e7a7dae1b59e08df3ef197add6\na25819c97470bcb09dd0351f01396cda\n257e47c2c327ac0f86690e0779a3135e\n8705c20e8dec94539b0037ed0d57b3ef\n8684b67d71677ac95ab0bd3eb49f9a70\naf97965ad9dc0ef01ad88f716ea80910\n77f5a7479859ef79d97a4c09acdc158a\n5daa294dfd41b3c2e01d588c78e60948\n7b8aedba3024ed389e87d2bdcb41f548\n79f5622b83f85cac207a7604d676d24c\n5fdb0bb9c3c18d50602d6239bab56abc\n9d43e1b188ac816087d72888c0a9277c\na5c19b4bfab3a826236632eedd876bae\ne40e7c3dea88a733eb15975241f6a53c\n453c959963a529322633ff66beb9cf31\nc6eeddeb0366b4b6cf584303d1a1b5a3\nbc6dd957c20a08f67b440c5df8efc309\nb8cf1ee73b068390205b075c6f63f661\n84a87ff36612b3e53ef7ad0f5cedb0e3\nd5c3db96ef6559cbd867c39c06b7c506\n7bb0cc242729aa90eafe995fd10c1326\n11d9dd7b170216eabc4d71e69505510f\nab651261126de20c145adb610a878e88\n993cbabbe4b4bc4431baa3c9ee4148cd\na9d7e7bb4d72c52f1574d21c0c95092f\n2bdeb030dc3caba21ad88f716ea80910\n711b146200447f4183247f812f2eaa97\n181d03027d30429dced68ac20944148\n2379915c82c2b2d02530f02db7e9157e\n3fd4d9909c72fe47dc4f6934317af74\n1a511622eba730c79ee3c69ee7ee1fad\n5e71a80c6ac94e0177818a0572bf1777\na872cbdc66e671ec29d1e4faf5d375\n4e0473ee9d5c72aef00aae52edb0b7b\n570321d63f5fcb9391666edbc97a985a\n70d2fc496ad0da4aa7f1b033d01e1364\n461441f5606348f3d88a3e0e92891ad5\n94944fbeaf37861c61ffb06b88ae391a\nf4ecacfd4fd61afceb34db531a289b8e\ne34b3e11083387b9c9d5b08933b9e0c1\n137c1194efbdcc1bfa0892265dbce8fd\n835e01af50296235aefda81565fede7\n4e0dee54cd02258eeeb8d422649e5f2b\n3e16cce54c6f0b0f8c21317f25d028ee\n84d2d9ad08b4c39029cd33b1c7847c1d\ndafd6b7408e43ae5ec3b2e05ce8fd39b\n68e85f236ca1b43467cfbcdcd1be46c8\nb0ba01e0a7f3553897950841baebd2bd\nf529e7d74d5ec3d9a1bb636e72c59b32\n7e3e0b648aff4aeb6a6d1e86c6266511\nc7c2dcdb1f3e85dd35cd53a06b1d2317\n57374f933930a1453f92eb5e681ffef9\n46b229154ab6434177818a0572bf1777\ndc9c9ce6dc9a771f500158c23c4c5a8e\n5072c19da106b95583247f812f2eaa97\n3db832895812dd37230584014222e685\nac8fb298f7795ba47f1358f741bb7fa6\n8e55b303ce059ac5aca1a38908852eab\nc8e0a46d8a6352c58df4edffcbea21d6\n60a7df9bf00844735e7cf7bd2b19c869\n22e37482f8499fa53a081cb8ab2c8e61\n27867443c228581e515eb678a856048\ne7588cbebdae5863629c8a4be6c1e509\nc90cbb0458648665da49a3feeb6532eb\n2b3a776ab2c38e3844f57509e473c41a\nadab0912bc0ad1271ad88f716ea80910\ndc9f8240a57b7be77fd9594c37158b0\n4a158b46d8e943f2d612e9885a7318aa\n101354f9d8dede686f7b08d9de913afe\nf64068aad93d502abd1cba733b111584\nb3a4bcdee00ab993ebc29484102f14e3\n240521f502e491cd4eddc7a5aaee958e\nc6c88ee9ea728a3220815abab29462c3\n3dc77d756da1ff5eb3b44ad99a214777\na12a46aa47ce021a0ac302bb9c69c6f\n4ded23cf84c993e9df3c63f2cd487888\n267dd5dea4dfa74bd4e62d99c536bbaf\n6aab9afbcdb94edeb59e9758ae7f41a7\nda2fdf0220908ca42744bf8869518694\nb0a331fd0d599fe8e69f17d076308b42\n161de75c52763afade3a1fb6044fe536\n20fa8d1542e7f835efaf604fa2300241\ncc9edcabf65e42d3febdb1f263373824\n7e061336b31b8604d34bdc365023cf4\nc3233311a94b7b968a0181490cb73cbc\n14a21eb927d89df31ef58b31c4ba0d15\n5bfeafef1be5f4f5bb476b1cb791329b\n4f0173cf9b1472c37d4f87d95d70ab8\nf1fbb16afaac70231ad88f716ea80910\n3ff2ce8b7432b5d6feae521e94848af6\n8d88dafbfd4200c772e8dfb640f12f2b\ncf45708ed1ed436970f2559ee6f59e37\nb0705be54d6220d9a344697865361601\nb56efe51e12dfcd72c730e00f4721fb5\nfa6fab7bc0823f6e54feda409512bbb5\nb02ae2bb9756acdc5587d8c9be86464a\n18e1be943fecbad143662aee1fc05d23\na1f0c93f000051c7f1aca3fcb64b7fb2\n96778a7607802a72ce1db673cf70420f\na23a775c5bfec73d8275986ae1324d10\na234d7b21f06dc58d77ea5e1afa5bfe6\ne5012f54d03b863ecfd43bf63e641a70\n1a1ff0c5f28f10d642e265df80f79372\ned80a69f448cb9a7205b075c6f63f661\n65dbba7ce5b4c40192e34403f6f6f5f0\nf142707a0f0acab4cd229b7f28637ecd\n10421ef12dd27f3650f5fdf97aa1ef24\n6b621f006878b74f2a9eb0f146e94477\neb9de225b5d502c1278fe505f40d50be\n9f4aab6206870d5deb34db531a289b8e\n9de56b4a4a9eb3a4cd4e2b9cb7f670fc\nacdf7e6e551eaad3423723bc261e3897\n5b3bf009f0dee3f01ad88f716ea80910\n9376e8048ae8b34ea35fdda2e8d5933f\n6d83986459f72abd4884161c20b458b0\nb2ae90026d7979d8267014f0fe84b7ec\n8453a71333241062f1b584cbe791b374\nbf27f6d33ea63c041df7ea94ca903361\n614a16b7b994063af6d28508a7c94d33\nf0c6079a6dfd5e0a7a9e31f14ebb8cc\n5aad6776bda34de6831627e12e4fbb8\nbf83a8cfb72a6208432eb33b78f3e334\n5efa892adca22d37cd8f3fe9ca2145e1\ne2603611f6d3c661b9b2b9d5b2804865\n995ad1befadce7771148996e35417db6\nc533b4ce486919121cd3f324e5fa80\n59455b5c509a7e9efe96ea0860283ff8\n5e40ffef9d25d0f031f3d76ec3df45bb\necfb9655edf2b5297160646d65ba4383\nacdb8a7d906b126e20363e2561dd589a\n74d27bf812f4a7d83a2dfdc3f38ea6c3\n46acc0258b449d18f01503c3476a4944\n3ff725e1e30e4ed6a939d6b77e949639\nb526ef9f77ce64d398ed31a2f734ab49\na4a0efdf9359987515f30bbd054cf549\n841818bf97827792b6fb1533bcae7a75\nbc09422920aec02cb8901bb57b05fb9b\n51b745123abc098c10198e93f73dfd5d\nf2918caa3fe8eceb47eac12ec180489d\nf14ddd757b128a96b2b304a0ae97620c\n573a662d56db6a9d1ad88f716ea80910\n88bddaa41de4fc386f936ccdbda50e38\n457c7205d3a193c01692dd4d739ce02f\nd6cd608c3c75afd01ad88f716ea80910\n767b076382b239a72d563c85edb49108\n311354773f4c016ee1e724fc0e43bde4\n3fa75b15090b5139ec507a9b4c133ee1\n65bb8f59e10a0cd837f1b3cce66816ca\n368d30ee72c63a9512da48a027621f2b\nb6f154678c06f537db24fbbf172c2159\nff383dd89f76410a49c18a2c5bf89a47\n6c403ea54430684990146e2a0489a257\nb03b88ff24870f2720363e2561dd589a\nea1b716cdf033bc4bb844bb01fa51c1f\n75112a1fb101921edc1b62a5dd6fee95\nb96feb6abb039ab8c7c56d4a401463d1\n97e93552e141ae2432caa5592532fb76\nb8092ccc834f31b9d69825aa8e687d85\nd8fe44ea5aac77504d0c24eb0094dc21\n82ccc798c04e4592eb34db531a289b8e\n4cd3259a06b904a36a6d1e86c6266511\n8b0544e065d43369588e71e21de9f30\n37992f1a3a6eb8abf398d0c5832df00e\n7317a113f9999e28824aa039bc530c36\n47072a1458f35a8e1574d21c0c95092f\nfd4b2e3a6caf4706a817854e3b5b5439\nab79e12684746d0273e1b2d018c0512\n126ce29983c5421fce567a7bafc3f52a\n9f90d7bf89231ba94f5aa6ea4540caa\n77514a7ccd32860dd9dfbc520b0d9752\n2edc94885c4ba7ad2d563c85edb49108\nc389dd22f9209798f72fe2e3cc67d234\ne62dd51d47ec4e2ec29f84f96a7e29f\nf996317de417329b1574d21c0c95092f\n14f7468c0ae24a73d6317d54cfc1018f\n69212e8c41ec753fbe62db7ad46c40f3\n2a38fb6acef92461ed2aedc3715ac201\nd97a4771b9d796a22d1a40e420084a6\n1db62b6137f51cee8ae98a75d7488e57\n6f1913cf723bdfbec5e5fd334d8e3b16\n5976630a3b8452617ae81ddf970c0d9c\nf98620e647a77e1f8b5ea808b63cd2a6\n79e5aa259b3c148789df8842b5523a86\nab478f6a1f38a5d18a0181490cb73cbc\nf982748287ef2c7ace029fab54b6cfbd\nd04ece855d678568d74f2f4a7f5598c2\n7f7ca259133096cc4d8df313232fc497\n2dbb22fe2a25064a7e95eb283a46224\n4829f4099c72420351c3197f6363608c\n6b13ee07cfc1eaf7967b9b287e3372bd\nb4e360a10bed4677aa0022295937af95\n5ee19a13a20ab65edaa5dd7053bcd03a\n5d11e7821ec86797b646fca2237eb6\nb6ff46015b57bde9abacd1c615a34b0\n9a989485d607844c786b126bff0b0351\n709864406b03fa2f880d754debc41bc5\n5775db2064a6b0e87d72888c0a9277c\n58d0623bfc9043965c3fc20f066d524\nf25cae5549e30302803f272bf12359d9\n16ad8ba41b4caaf66a0a07a21e1bacf4\nf156e32edfe185b76ac6c4392c71284b\n155b9ee29dd8f068f9872b1642da5de0\n859ab0a5ce89e271b4607134dafdbd9a\nf07c69a33e0a1f54b6c84941dc90c1d2\n6a538eac61644b0f84145006657ffefd\n292353a763d0870432af7736a533c197\n8dded99a589a526d609daf4d63b3df5d\n710c0a8ede7edb6eb31ee294b2971a9\n2a7c52141a3a32dfdd14180aafd9db4\nb6ac65861f2b7a726bd362b3eb022b32\n71b68a5e64903e0a1ad88f716ea80910\n5bd42cdbb91db055f7e08add4085d009\nf8d4287a583bcc499393793f9cf3dbea\nb865f12d17532a3fdb24fbbf172c2159\n1e9032f25c5d068fa7a69b946cbafa2f\n591613a69c2e212f78c0a4707b40a908\n4421130ffdb720c7421e5649908a4a06\n5a59e8590b3f12580275d4a88484513\n4ba818da340a4e5d60647a90a03914e1\nb78e6c1ed34b29e7fdd1073b17e9e51e\n62fa02df51eb19a5679c9e94dfb2276d\n4a4132b1bbc364f573c609379da5b9c2\n58142a4c3a71147a2e8dbf40bb4c181d\nfa98563736440326ce1db673cf70420f\n892af085a4518fc673c609379da5b9c2\n23907d5a2bec2ba6ce029fab54b6cfbd\n869225f275f3dee12a42340e65c9f0ec\n9c98e3576baa1f25b3150cb8eff8d9d7\nde41e90d949a21d6a41c66e27a37f014\n43990265c9b6be4a989542bab68e6843\n30e85c002b800f2771fd733ac7e95be9\n56e41e5e3bdb2c8dec29f84f96a7e29f\n39c641a818474a46e10cf62a02f1a100\n8f9c393fc17d1cabd77ea5e1afa5bfe6\n384fbf785f1691d2d747b49524a1246e\n56e11f06a19f9c3edb24fbbf172c2159\n97bf4aac2d956c1d5d9e9a1d5cade7db\n4e6e05676ac77f30ce029fab54b6cfbd\n3983ad3c93f4ff0ce029fab54b6cfbd\n59b78ba40b16eafed6baaf394ad18924\n83f72a05685b80bdc7c51d4ea74651a7\nc20a8c3b7a06cd323a5b5efb52c46c0d\na24796b40f26be4a19f048d3a7935eeb\n7b81d4cddf859fe7ec8f1b76923633de\n11c1c970e9cae04183ef95920b2c145d\n663174c8076b969eff258dbde860ecfe\n2c8cb15e2d973bc847cf5450436b1047\n3986913c6dc63598d2e26510f3f5390c\n26369dd5c4cc8c55e9e3ed40810044f\n4f4629b12510571886be4ba1f667c92f\nde5a57d8fce504ced747b49524a1246e\nc8a343f35b8593981ce8823e87f4a7fd\nfe4ed2d72cc79c74b59e9758ae7f41a7\n7f382d870d2816c78ff420534f79208a\n3575177296452c98f149a4641e0b7067\n9a859f2668f727abf6da3fc8db3c804\nb24c25a01d69adbcfb14bc0c4e180ab9\nf2a13a030a8153d9133aca0b3ca7f0a8\n71c5756cce7bdf8cd6317d54cfc1018f\nff9590ccc2613d6c332d76467c18dfde\n12ddcbc94fa909502533128de72c17f\n5acc9b2fd33a9568bf19c71eb972f14e\n7dd0a1aaaf29b18529d8eecf3827c486\ne6ac4bf60e270a6512da48a027621f2b\nfba87f3cb973b06871bfdb4b1c2ed05e\ne75c0fb00d2b70ef1aadbcf355bd688f\n576fbdcf1aab3887e4e65d5ecb84eef4\n508e66670fb3830c2cd6a352b52d97b9\n8edca4e07dee64e0a08ef684995f5adb\na76f63c6b3702a4981c9b20aad15512\n53d6d8e3e4731b3bc0b5947ffe18a468\nf0b4735b45d1a6b51aadbcf355bd688f\n38e4bd990b3031bdfce87fb06e25db17\n39c15f4b2ccd699bf0a8b62260a2a216\nc72753b17403466c51fb196f32308d0\n77c70fcd8ebcfbd4c83db093c68b1d7b\n88bafe4a96ff3348dd1080d43103149\n72ecb9a2d25458ba8b4cf2c9fe044514\n47f062aeb83f19e1618595b659cf68fe\n74a4f472155ed5a3b2bf4f773fe0e622\n15c6b5792b19af3fe99c48db5f195989\nccd635e4cdca96e33b6e05aed261d1e8\nb2705ec086216be91a68031139d740d\n22654d0b3683df91650c44f51c50faee\n4c944233440d87f4b8e9f7eca3eb3e3f\n8956eaafa0afdc142633ff66beb9cf31\nae39f8cad4fe0981332d76467c18dfde\ndbfcda5d40ebc2148bbd829479b32606\n8e632ba25f8af84b9069c2d361390698\n3b6f73cc36cdabd2b3b44ad99a214777\ndf678ca1f17e32ec3d65eaf8cbd60895\n113aa3b68f515427205b075c6f63f661\n5027b6f6c32b0d28daf9b9aae267bea7\n1b24c1c65645c5f155b62c3398327a83\n792be08647d7e0fdd4221fb0ed444ec0\nc198d2df79e4a40fde3a1fb6044fe536\n2629234a2fa847dd9b106ceb230ede0\n702c2f9c3e8770b534943af333340cd2\nc2598d72d508a33060ee9c7e2ec5f91a\na690234747bb56ceb4767ab55965ebbb\n86adab79cdfbc284d7872acf770948a1\n5015233bfd8fee3f3e066187e0f408fb\n1e6a6ff6f4168459e5c00598c3e9532c\n16f4517d129ed54fd747b49524a1246e\n27415ac0b56e87528dfe57cb1b540899\n27266a732bc955e4db965514105122a4\nd5bca27bf05ac5c92e8dbf40bb4c181d\nc3180cdddec577f2e17b9e33c097dbff\n5f525c37469b0437feae521e94848af6\nc50c27f14da0f7fb86785c91e1a79038\n323f51a8d5029453d603e2778861154f\n40f8addfc03b2b1e4d0c24eb0094dc21\n424e95fed6e7fd5c14fdbb071f44a8f\n67b63929a6fc3804dc7d80effd6f43c0\n3655d8078087f1c62d563c85edb49108\n43f49627bbea5c39a052db10ff2f17aa\nce90cf5be2ffbf92505e438c8a36b3e7\nc8b4a5d2588868a7a1dc1681ada9b3cd\ncc01f463f825ee9024fa1bc380696e03\n5d3c3b2e6645df602a328c65e88727a0\n5da457ae73142749280e0c1e89a63998\n1a9a6a214c957757cc6617fc407c9ed2\n9432e02e277a206e3fccb208b0350a\nf8fde8f5f364087d2d563c85edb49108\n28be6cc8685c68464aebea9384ce74e0\ne76108274392bff53d91ae2b92426394\n48720ac336dc7012d20ac02530d96758\n3fe90423ef5b56386af2396cb8af8a8e\n1aa51463dac23d5cc9f08ea7a19d874e\n3538a656bdfe47948dfe57cb1b540899\n35815951ccf18e3eb1f6750101befd14\n619442d40cba1f667a964feaf6ebeb\n481705a12fb7d10a20363e2561dd589a\nc56e62ebcae613624c40f34de8f3bdb8\n86775c918b6f4fd2f149a4641e0b7067\n539d5ef3031544fb63c6a0e477a59b9f\n93aeccb6a5e0a62035cd53a06b1d2317\n40f0e44f749ec0c7b3e0a2cf776be56f\n36b29f93deaf22f66b1cc4d44837f930\n82b9111b3232904eec3b2e05ce8fd39b\n4d264fc57f6ea6bde389c9be84ff7ec\n2cc52cc8e9de5c12f398d0c5832df00e\n58457267e0a8e3eccd4a817c9d7b9f3\n2e0fc1bc430c5c1bdfdc04b8b8434e84\n96a3c3653c343db6ba8a1820ecdbe891\n1ab52761b829fcb375a3010d3ada28ba\n67f091721c90a533d747b49524a1246e\n192fd6e662d89b62dbf53b03c847b004\n8080831f18e0cbe1b22b2ae1c9a24291\n40007a605a25c71d747b49524a1246e\n92658be9ec3307545f7109466a688ac\ne5a6dfbc6e89ba42bbdf3c5f28fe5d98\nfb231e827089f9db69a175548b8cecb9\n3fcff447f43c75c3ea3d2e9efa07ccad\n82f1e500df50302e26870852082c4c6d\ned0f8fdfd9e1182cf83b540214901572\nbc522596f5da2ecda32913968eae7f30\na3f012045e4b62b2789df5bd89bb3ea\n46d03a4d9dec071d1047e2dc3fdce97a\n55e68ac8c812b332ce1db673cf70420f\nb6ec9f482f055259f2e5d34c7b677bc4\na423a97b5758a266d747b49524a1246e\nb3f76f7361b123f5b3878cedd8c8fe6c\n90a050674ebcfffe475649efc0ac5403\n2eacd8302d46093ee138e561e8f9c254\ne854747b2165ffd6f8b75fa4030d2e21\n46ab468d333233b062a6cf00d929f875\ne6e09672fd21f3d887695b38431695f3\ne66e2202b11cb7122d563c85edb49108\nfe613d2a63582e126e5a8ef1ff6470a3\n5551b67ffe95c01b73c7253ec9acd58b\n4c722ef308bd6362d747b49524a1246e\n36b61e14fedd020a838f7ecc5ce13037\n908202c73ba60671c0d274eb53f065ff\n1f2a8562a2de13a2c29fde65e51f52cb\n3e33b290c010b3b88bc9d953a3f1955\n9f7eb24e82020dcf40df330a2f73b17c\n4c68944b2b8105d11a2f7b80918eee9d\n2a32fbf104a7524ec78a85a5b5306f41\n44b9054ed15fac2c3a67bba344536c8c\n2336a8ba5ba8a9f0ce029fab54b6cfbd\n864546c6fbf636a2d0d6252a768bb9c\n6b5458409e54d8b99c5da70959a4c7d1\n6c71c0791b014bbe7ac477bac77def9\nefb2eac3d84429d6363cbfdd3d5388a\ncb904746fddde134b9e8bdc9c4a49aa2\nb3009e2384620945a35bbc252ec176f3\ne637b80011db78c3dd6a08110bca7bd5\ne270c383e0d9c8e0ce029fab54b6cfbd\n2edb8ba1a031b3f5ce029fab54b6cfbd\n9cd16abcc7fa224ce029fab54b6cfbd\nda21a8c569ff0ac4a7c719349406e0b7\nf046081ff90ebb6dce029fab54b6cfbd\n4fca42120b49baa526841583f16744a\nd414b33288a735c955b62c3398327a83\n1605c2ea5ce774811e4a701e01e712d1\n168150439eb31ea1ab5fa92a7378b5c0\nda706fc7141b22ece029fab54b6cfbd\n1e83ac6d9ce1541329965f7e898eb4fb\n20b0ddd49c8cda71eef785963bb59c49\n5f41f45cd57adc0b885333683933c555\n1733111366ac40b76eb0973c46aae0d4\nc1fd0e8de18620ba27e7754e513f7fef\n91d876c2c51a81797ad9e38d6dd6575e\nb7b69bc187bfea4a8b1598dab950d979\n6c31773432190681f46dcb5d9d87ce1b\n3b1a3eee64e3412b6aa8ee471986facb\na3d5207350bdc01e87d57ccb715c57f5\n99f296d0bbae5585414ff38ecabd5968\nd3b324de8e23851e55b62c3398327a83\nb9f853ae8b693ff91574d21c0c95092f\nca545c7c3bf38891af3caf4aab91511c\n24cb5019659114d5176545ad403d244\nc7965a5da1143830538cf6df9faa9b65\n56e2847e61b36a134c7bf604b18af84d\nbbb7275f2a0224eb90146e2a0489a257\n4cee7bc85dae3a58d6a78c624f639b3a\n1d7af68d31944c358a0181490cb73cbc\nbc611920d1608f96df172f74754804e6\nc766463a3623d0ab8a0181490cb73cbc\ne97a846820b094b8f439510dd98d9326\n2f41de1a2faf854d860e5e56395d4d1b\n16245718c786456b35949989d0ab81d2\n421eb9597a33cffdfdd1073b17e9e51e\n7cb1aaaca10a8efa8d8155ff8532e190\nc134c61a5b45dc281574d21c0c95092f\nf9e6e10cdb3066929a3fe7e437a02206\nba63e6e1bd33064a90146e2a0489a257\nfc5315b04ff094686d564e28438f8cbc\n46ac6f60aff34c5fdfadbc4d6667b477\n102f9164c5ae3846205b5aa6ba4df9c8\nbbda555f0874e9d5b35234ceed4dc815\n47a0132d9a497e8ef398d0c5832df00e\n98b920157670bcdd716d882f857922cf\n40cd27b2f685afe3ec7f40971ff466ac\ncb25ea4938c1d31a1a5a6c4a1d8120d4\n22e8cd8675ab57e26d2f7f4796305f20\na99cc4f1326b9b48b08cd968d6703683\n2dc57057c96ae0f74c24a2a9e289662d\nc5b38593b74c39695f7109466a688ac\nbe2df150c86b57d2c9db3276cf490d3d\n1f6b0aa7568e70675c91d2edd70c353\n29a7fe8fab62a9e134cf66ffc496802b\n95268fb7d50ddf77f398d0c5832df00e\n4d1061e19f05e919a5e698f08af11df1\n153c468a60e1116b2eafea928e361a58\n796384ba0e8cb525e17b9e33c097dbff\n64b14af80e246549a82acc849eb5e81f\n6e542a3dfae28b1cf852111eed0a5c85\n82b56b6d371031ab7c8813aa71327b73\nc556fa897131c0c833b20ff045584bf3\nd35894de19f2ac5af6ab94ce02a994c4\n3a346d78102ca842b996cd669da05484\nccffe9befaec2d1c4ffa46d1fcb77f51\n336fcd767dadec9fb611871e114769d9\nb47ec1326b29546bce6c3ccb8279bd8e\nb4cd1e4296c3e9b55ed2ad7d2e018058\nc32bfe130412d9c6d9b106ceb230ede0\n665dfd9711b2a3ece4fcc1af3285ca51\nd457ef805b078d037f5e8f62dd90fb59\na50af511d8cbc8df520f563b6d5bc71a\n97f758c8d327d072871a975200291c6f\n51bdaff7782cab384bde7bbe88086aa1\n63c4583afc2b82237f299e32f8ffced9\nb544aafb047ec5014c40f34de8f3bdb8\n16bf19a982c7cd71dd6a08110bca7bd5\nde5ecf353cace18574b0aadaa58fdcf7\nf7624b0826b4da3ae7e41e72dd76c27a\nea83b0bdf2b13bc89c0528265c614919\n569fc1b111617f4038b28f94c165f833\n359d760f7d8fc091fdd1073b17e9e51e\na05dda1538ddcb4cd747b49524a1246e\n3dae5a52602e2fe58a0181490cb73cbc\nab84f70571827b76dfdc04b8b8434e84\n7f2cb859eb00046d3bb72a8bf55ec27d\n5b7cebe280c5aee935cd53a06b1d2317\n6833234a218df871aa35b1de51ec4cad\n483c63155f2be7a8983b2cee8fd0fb3e\nc0add53ae9928d73b184474322bd24ab\n7f448ebca95a536f40e7eb33087f3287\n3eed264487fcd94bd88a3e0e92891ad5\n80aab147daf83cde332fd8bcb8108236\n40e4ae14fac94d0b45bf366c0f22b100\n164ac6f6252e22b5f5c320b27d54d683\n5b6ffc53d44363b57f2a00f370c25e25\nf1175bec19adeadde188dff443a0c2ac\nf150315ffddd85353ad55e05c29c23ee\n1ccc688123d1d873ca93bc607b24577\nb8da73245beb77848d257d2dc106cc1e\n394302e20816d0fa07828ee23920679\n33d61def031dc1ef256097a658bc66b2\n370ab315439047cba2fc84df67c2df42\ne1b3bb54b9855f12d88a3e0e92891ad5\n4a10811da56f40a989542bab68e6843\nac6d3202823055dc1918763f44383273\nc3280f7bc5fa9ff28a0181490cb73cbc\nbfe4ba1b06404e4bae19bd5568e6325\n2f9b00e9c1a1b00c47569806bbb7c5a0\n90882268b1169ce79428390c02f266d3\n61508357d7d9ff38a605f453cefe7e92\n6db722284891a7f684f5f65c78855f9f\nbb304ec80f4ba31f8a0181490cb73cbc\n93c54cd14ea713d34d0c24eb0094dc21\n87d70f424653c8c9e2a6fc5932a88f35\nc725f6e275e9942f989542bab68e6843\n9c1bc89152d90500c92750b56fccbe69\ne08b3ac3bbae3dfe5580bd812eb6e71\nd06487d7634bdfddc1b62a5dd6fee95\n7ec487384a050ccb82d710142ac471e3\nd8023575778364b035cd53a06b1d2317\n336ae67af51a13309e87d2bdcb41f548\n17f87baa813447ab9588e71e21de9f30\ndd2a4c416625f29c4f57a7ededfb3bde\n244f40cd50620b32dfdc04b8b8434e84\n115354ddf0cea683c9603934b9e8f5dc\n632510d0916f31a184d6a2fa7259858c\n5222c43f267d9f313129bd51bf061fac\nb6d83532d5479753bdcc14b36549ecc3\n918ae70cc8ff08c27f83e87789efc1c8\ndd6a03f9fdc339c6538cf6df9faa9b65\nf2bec55383f72f04f6eb098afb876d6d\n1499859135ccc6b267bde58c681df405\n7fb191e5d0d7464b538cf6df9faa9b65\ne911bf2418eae6241574d21c0c95092f\n8c919e992db7cb081e5b68ee10358ea3\n8dc1e06a23a2fdb7c77445c6f0b20418\nf0f9a2082454542751dfe6844b6e8393\n2cb180d4322b8ee9c0d2bd04416ef7c\n91a98a5ab36cd751cf99e87135c925d6\nc1cc6f59c8c6406df64115eb33ec13b\n4ddccf2b67d0cef538cf6df9faa9b65\nbda24b02920f91d1887e8faf8f33b0c5\n9d62d13afcca23d841c6e77793c5dc94\n1eb0b35e8e8ca4da85113402a7623535\n981abfda92e702e33b9f0ef1fda503b\nb8a5307c51164dac78128d32fc0f2897\neda3d466ae38e9112a40b4a3ef70af61\n43730d7a76ea63f920363e2561dd589a\n14fb43f3962bef40ce2d0b720afe8196\n81a096b49d138bca1125e131b6efeea1\n4227748867df8cc020363e2561dd589a\n77433c14eb1043a91e5b68ee10358ea3\n607096f600b6b75620363e2561dd589a\n590e2fa429a94e711b45df3fb820c9cc\n435ab5f43b24f739bc0c56c4d4a1fd3b\nc9de3e18847044da47e2162b6089a53e\nb0f6ee90a22dda571711eb7e23a7e2b\nb703762eb7b1fd39d0cd692038573317\n8cc5a2ac83bcc120e7a1105f5e7667c\n926b6071c45525726d3462e1e02b75d1\n21b9af9e21bbc7975afcf0aaed5d73d0\n5b2afef3206a153db06d0ef27244d1aa\nd9b205873345a9b35234ceed4dc815\n1d4ea80f49114ec0813621823d82b548\n79267b91b523933d73e1b2d018c0512\na18c311eba5e551d20363e2561dd589a\n1bcf25863e840c11f806e7110c573eb2\ndadb71e216b54f701c5d4854f1aaed94\n28b5a90b428358e173e1b2d018c0512\n7b08e64e66cfe5d473c609379da5b9c2\nf993f348260454bb538cf6df9faa9b65\n6bf052e16794f2a73e1b2d018c0512\nf6958e13ea65bd521b45df3fb820c9cc\n3256546f0f70af9c39c80a095f51c7bd\nbc7a4151d2098374513ea32c8c934a8e\nb7c92dfdd563ffc74533f2e74542acda\nb488f301cc8c7d0d4079257326eb1699\n46de1dfe54a261b4c7e1f9c70054d66b\n8a536e4254674fbb73e1b2d018c0512\n5c400c09175e3801bb3613d5601159a8\n8d5064233fdf0624b6d9c2cee7f2f72b\n2d408222b334fec71b45df3fb820c9cc\n91bab54d8d14100161d3e32ec60a98b7\n7174c62e843e444286a8288f8ff176fe\n88c9a7928bc35ab392b9c678bb1d631f\ne2d6a0851b9357141574d21c0c95092f\na8de7f2c7e00f9a01e5b68ee10358ea3\n552dd48f9a264d721574d21c0c95092f\nc91e878553979be9c5c378bd9e63485\nc52531bfe9fcb17a87586c1eb104adc8\n23efeac8bd7132ffb06d0ef27244d1aa\nfad354295b4c0fdb55266ce6303fe1e0\n92b3275e46a63fce1ccf3280eab717b\n956556bceabf511d871b94133e874f2e\n291b3dc6e6f0d5a7b249ecc7669d184f\nc76fc96ad122a33e75f6e8ca4d589c7b\ncf85a8c74cb76caf1574d21c0c95092f\nb68e0b294c799771ebc9199df8e5ab6\n8f920f26ead4d592cf66d96a8426fc6\n2c44213112c85413f0c1015881a0926c\nd3817d6003473f1c3971c6f4f1d0a4a0\n73fa71b650b99bc951d3c864cc68e22e\n9ea3e05166af97ed20363e2561dd589a\n5501c4caf22a5c974533f2e74542acda\n276363a6e7991caa85dbc6e74635dd32\n5a115cf7e21d34d249d7025d277c28a1\ncefdbfba01e3128920363e2561dd589a\ne849b0017baa1a978a0181490cb73cbc\n5adc7f63a154a43be9bb042b8623f922\na9957cf39fdd61fc612f7163ca95602\n8ae34239b6c46afd55a4dbb6a97481d9\n54047a2d59ac5eae3ef7ad0f5cedb0e3\nf8b0dcf0788e775db98f9e89101e3f14\n2c4d13cc64a679f3322f30a0f4208183\nb49306bfdc0d238076247c6336e7c242\n61c61c893164dbf275f6e8ca4d589c7b\nfa37905b884bdb169f69aafaa5236e51\n736820a85063a4371e5b68ee10358ea3\n8562c442745af497b5b6356ddd072fd9\n62729cd3a4f7403f712b392cfc0c51c0\nd12ec06509389e01574d21c0c95092f\nce21542cb2b0bb3458107383640dddec\n142f66a7bc5e119d18d385624fdfc6d0\ne22ec5ee664f7c172a9eb0f146e94477\ne66486c1f5644e298a0181490cb73cbc\n4ca26cee4108632859d58b5bb5e2bfcb\n3110c18edcedfb6331f3d76ec3df45bb\n90143acb141fb1cb4292de5cdfae65e2\n92b24dc36603b59685a979ae0f537b4e\n64058330533509d1d747b49524a1246e\n63f006488cfdb69bdfa0db1c1e10ab1a\n61ec03d50268a852d4c639228615260\nafa628c3dd7558be89367e7bd925ea7c\n4e8eb4a0a6dc83e0c779d976f4b3d7df\n93900698e7d9ff4d104831d5b063e54b\nabbca9c2aa1ab018ad65e8e6cc8ad9b8\nb648f6cd54d07a1023e70120ea31089\nb28c7b84869ba2aa87d72888c0a9277c\nd05c2dfdb34f38433e8a91ffbc9ffd64\n556eebe71c16acc9e17b9e33c097dbff\n5e9cb0d76e74b0a9339c90d74e7a6543\neb0c85cc627406b5d33b16aac56dbe59\n6a864ca4b19aca77645b6a2a45925e6\nd46c71be46696b1d41ba258440d3e234\n16a8c851009d6786887e8faf8f33b0c5\n33b19fdf42fd767d871a975200291c6f\n79cbb3c5f6bad447abc635d6ed355bef\n8e54ec9d554584cfdfa0db1c1e10ab1a\n87e2d9c72eeb8c49f398d0c5832df00e\n6503d74fb534ca43d4e62d99c536bbaf\n882154aab31d483e130bc0755682f7f3\ne5c2ab51068e9f8b58ad8ba2f750cf1d\n2454758b9629441cf322c3e7acea58f1\n6d5698eba0fbb1cb2a9eb0f146e94477\n2afbdce92417c3bdd9349058f7c3888e\nf6d6ab4f49238452b45df535caecae62\n67967d0213be8b199fa004564ade09f8\n563b0c299b32e73327ac18a9705c27f1\ne30bfb0ab456101cc0b5947ffe18a468\n8877b9b8e68fcda696d7d56afa10bb68\n76566bf65b49e49c864d68471e7fba29\n7f87d18e6cad013ba448d8e70febd930\nb7f4de208a1051e62a27a874411d1ac\nafb32fcdbc6716b2fb14bc0c4e180ab9\n211cf10bd078f91c01c4160f17211fe\n4d698b1e935897905e97b1b6281b6b04\naa8f197979376d792d563c85edb49108\nf7366c0025b2eaabf5fb60584950565b\nb7c5eae318e4e796d4e62d99c536bbaf\n7c02e1c88907e8426b424c689f1d711a\ndb9fa74a2b9ae465c7e50d673f14088d\n29b26d5aeae88531574d21c0c95092f\naee6f0ef9f8a7c13b54cfe6aa07c2036\nf4bb44c3b9a044ebaaa7694cf6c95b84\ne7af5657b90b9a73558880eed6ddb84a\n5a943e38dc477bac4310636931b68fdb\n4fef29cfa7ff1498442ed26ceeb35a60\n6309ba4b45aa1a648bf9fe7c1fcb7ccc\n54681e2434fdc9ccd747b49524a1246e\n58af19399a5a447e4310636931b68fdb\nafd431c30a98f782d52af5b75b4cbd2d\nb0d4ab08b9498de4f42138205659017c\n26778511109e9e76d936ebf2a7172ccb\n943e9abfee56144fc194eaff7ea54233\n799a7910c5084f1a799c6c3b2fff049\nb4bc7d540893226c507038fac66e20d6\nf3f07513f7deb6d1e4ad2926a22bd27d\nc73bd84347cd8fc9599d9c8430d600ff\nd6ad58677b397894224f9d60ad32613\nc6480c816679773dde4fca22b4a322f6\n5533322e8dfb7d69efb0fe88d2924d2d\n5bbdb492122b18cf65d1c7f91840e570\n79c0d4ba54cb08ccec29f84f96a7e29f\nf0629a8139a9ba04f398d0c5832df00e\n324c0e25576498485373b650bcccdac6\nf858ecde18c5dae2f398d0c5832df00e\n65425eebdd205119b128e24d154447c\n3a7b68f7312c16f1e9bb042b8623f922\n5787e7156ddf7a2adfa0db1c1e10ab1a\n65e35b8378bb62a3801d0b1c6eb274a4\n2eb05cd394f94bf7944366528422e02\ne465af1099b63258e17b9e33c097dbff\nda23f8427db17c3c627a66821130f814\n5b83ccf84149f28882613fcb45c2087e\n1c29d002435ce5f484f78eafcf19b8c2\n93cc6af2bbe3675cda8f53dbeb7453f9\nb3158c23dbd08f554cf39544f467e5c6\ne1385ebae6a7869d23a4cda08ffef080\nb9c2454fc2ef38db3db7c6064037cd52\n8d437b97fc1cc7bae9bba7108b76f097\n11f5f6311449da7ebb01628f533af3ce\n5260d7e4d379219df2e5d34c7b677bc4\n8d698e60c436d75cf398d0c5832df00e\n83cdedb3431e8d8a41c95631f0cd177d\n4678a534b01fd4d6a29efdf1e3212661\n98db1220073f905159f43e87f0a59fc\nf187f9369aa0a93200d439345883b61\n7c56acc57cae84a9a3e7d768d81f6afa\n52ffd6fe29e51364b21928f7573b58cb\nab5c8c38528f06daf398d0c5832df00e\nef720d2b2de59184e775d184845c9f5f\n993d30ee5f04eb7bc41d2caaa616b8ad\n63f06aff0721b648f322c3e7acea58f1\n9de3cd602d12d178887e8faf8f33b0c5\na11a2f20b1680f91b626640605322b5a\nb8417869805cc9913ef7ad0f5cedb0e3\nf57c5e8f460e659f395ea88528a634f\ne0c6692e0af5dda1459a1795a6d0c69f\n7d75382b7b9e7bcfd88a3e0e92891ad5\n37b5f7222e0eaaa78803395bce6d7b63\nd11f1c28831e85a920363e2561dd589a\n185315ddc6baf393e0b4198d87217c56\n5aa9c76ab234dc2234560c18f9de360\nfb2755146e61262fd50505ee01b106d8\n453391a5d1d60bd51e859883d2ec3f1a\nb51a5f044c349741ebc9199df8e5ab6\n5b22a13742fc7224079257326eb1699\n62e30deaa5aeac183ef7ad0f5cedb0e3\n88842eadd96e5cab570b6bda9783c8ba\n5338db4536b4a889de7da340cde8d034\nbd1ffe5dcd7239d8299f55a072267eac\nd458f71eedc7146994fa1ea146084110\n95b29837dd0209a413e18f148987464c\nef793b2369c5dcd9bb63f7ad325b6424\n4bf9f2ae5f3b32e5d74f2f4a7f5598c2\nf7023235e0282c797f357b05b0dcb89\n2e40fbdc900e69593971c6f4f1d0a4a0\n2003690fcc8390a24c40f34de8f3bdb8\na2b1f43ffd80d53aed46d95e646228af\ncbfa6c888ffd893b31b5f9e34ff03906\nb044555289c7439f4c40f34de8f3bdb8\n4c18da768d4c81c787695b38431695f3\nb819ee65569e9da21acadc443e8b347d\na4180d6214012dc7363d10d9d37a65e5\n7998efe14649e07c397a4ece637a5\n9b9b41d3d02ce68d1b009b4923bf4541\n4aa41b48ef7711f89e87d2bdcb41f548\na8277672da45a94e9d151674c6eace6c\ne878e519af882f493fc48162942e3418\nab6b43b6529d6d6f9580f98cb259b96f\n4ef6b09f9a8e1fb233ed13d3bda59480\n58e73b03f3ecd4a45a31d91ec836a511\n9c8dd83df9678d3bc33323f64a5f289e\nc117b031376d3c12cd5cc02ebe46ffbd\n1cfd7a56b1d59ed837f7fabf76ffe0b0\n703dbbf27ae78991a21971bc32fb0326\n789c800c7f6d9e00b5f0ecf6cb865832\n3d7e4939b677bd9f3670cf6e57497e9a\n2f1446816ac58936361167c63c6bbe5d\nbc7938b4fc00ff71984102bc982dc4a5\n6ca4143e8b989ddf8dfd947f5413afaa\n88c752eedbb2e133f7f12bd413763dc6\n29faf5a7c444df58a1fabddca717cbad\n23a1ad8f7fdbb6a54821f0e819875cf6\ncf42a073500a1a222a9eb0f146e94477\n94ffa3ebe53ca46327eff743d2137fff\n24e25e63d6871f884358473f5b9be205\n73f855f34572cf984bb93d09975f5005\nde68b68a234de1a0ea2f8efb8b3faa3\n2db3489b490b0d9e2268dda5c324173f\n27dfcf48220c9ce1c3554591513b53b7\n361a97dfbbcdd820b182f50d8877b64\n2c32c107198ac36d37bf4b78d36088c4\n469f794b77f3f82b5f1f3016f773503\n34fec404bf5a83dc8fe1b374a74b9d43\n72da46839789175eb6ba1e8b5cf30e\n4a124e8015bc6122778ed5a91adef178\n5948bd85a58330628de9f116e0231954\nd8f6aaa777f0cd4f5a31d91ec836a511\n5faca1b9f9a94e379a1e7168a7eb421f\n9785f01a6ee36e6d874a6a37ca17d9ff\n1eac013c89689e58d421ffb972735edc\nf5024636f3514eb51d0662c550f8f994\nb44a0f8900edef4c957a55139a8e936e\nd4562a410244eca8823eead1c8e7b3b4\n9f242e37099ac424c3bf2ffa047e96ea\n66d9f9f961a12754d1fdf116b1be3b27\n1a33c0bb3949cd3213f068fa484fb314\n85bbc49aa67149c531baa3c9ee4148cd\n9d2f1644bbce8260ff26ed0bd5d4b63f\n1f59ba1fc5d296a817a0d4867f131bc\nf5c62c89e8fbb245ce6c2bd14b4c7ba4\n72d2729801d56aa51f9f3ce366e030fb\n4e957072c3c876e02fc6b53066be64d1\n43990d5a8ffd32774f074cdf0a32eafe\n7a48d550ef85f41d4873a2cc06a4fb6\ne5deab6728f237a6fc7703ebafc3f082\n9d0734e39f06529ac0cc451921109913\naa293b3c1b4f1509e3bf55e5ac6083ca\n12e055813ed50b7b85d581c11aa2371c\n635db4f2e3fe1f918e14a32e5ed95bbe\nea944f309ec70895c9fff209a296912\n63f13073406d8a2b4092d3b515916436\nb03efb93acd16a49699abba79f165934\nf1cab229b68c9ac1c4dc2c94f81faffa\ne6e085e31c30925466bdbbf263e9429e\n8171c9bdb75a10d9abdb18c1e87978be\nff8251d486de70545272b3489d12484f\nc2007f762f6c3d9f51dabd6f23097818\nbd2d91052e6c10804c6c80caaf15808d\n98ad42e08a991125f0ea0ee719f6dcd1\ncb3bc7b6610acb7d7f38a9bfed62447a\nd14285fb64811217e50f6aaad9a07bc\n65b461241dd4a4698152e0baa78ddca4\n16d8b1fde755f7f96bc5197cc4c47fe8\ne5c1a7e9bb2dd0d65a31d91ec836a511\nb7acad8df6aef539a35fdda2e8d5933f\ndfc0bd9721814628a4eccbbe9e05e638\n9471b1f88cca01134c40f34de8f3bdb8\n475853b0ac6bec73eb752889d5199f9f\nca5fe10073293be01de55fee5ac2c5c2\nd922dd8309247d10ef94793a67b4c5c0\n576e85200907fec189d3b4ea8dc19f36\n7628ba96cc90fb4df256a8c3e3396495\n1ba62454cd137945337410fccb2e7331\neb7b66a6557a05a4ab7f9d2da6fc61cf\n529f3a898bd030f558b060a361031075\nacf4fb74200b838d874179120554c44f\nf4308c030df7d027ced68ac20944148\n19f4ee5b1f70c6a47117786c46f53d55\nf4b733690a0fae8ff357e7c4167f3100\n6751b5616193e6908219b633b364ca6a\n99c7341e243c7a2ddffb6acd1a5cf214\n93e9c3de55b1a662989c6c7df583f91e\ne6b83a9d10349930b611871e114769d9\nc82577c608e88a8fb2ce325c854088c2\nacd123e2a1fd25366cde9ab9486e09f0\ncb320fd1f48f60d347e20662b9cc792d\nb747b1fe2a8e76bfefc97c4bab792c9b\n5d0499650653cdb9a37f3fc191551700\nc6c69578203357f3e3bf55e5ac6083ca\n3bf8ec07e1643746b319b8417d912123\nf2eb4b53ea11200cfb10a282776be584\n298e3b4149c28821b9001bf6cb0603cd\nd5e77992b28da2729c90f715a36a51dd\n90cf7907801560fd27766fcc9fe2f132\n50ab4ba93bb4141320dd2dd4d7d7656c\ne1bcea986fcbb7fab359198a2f47cf13\nf682ee3b4f4dc3fcce029fab54b6cfbd\n6aa3bca1ec6b261edbddba07a492a0ac\ne51ccf3bb4413ceb61775b840d882da9\ndaa10595347937b9ae7dd8d7b134d1af\nd4ae1449bdee448b1ab68128992ea30\nef509cfed1b359a7dc1ad15ea0771770\n93b8f4ddd36419998cbc76a30015552a\n9a9e5e5e3e034e74fedde756c9eb0eaf\nea7d44b28bd22258f5ec01c1dd7b80e\n813bb87d0679eeb9e4f8604d0992a17a\nbbe69ee745bd5c427d35e00bb4edf01\n5edee1135040e2a9aa2b654345545ea\nd8ce373c4ad4e6913caae5373ff4181f\n32ce47d38aede60ed614b9a1d2062a4a\nfbcef568b50216e3e180a1a604561d3b\na4a51863fe887cd970165cb455c090fb\n67192701cf183eaaf2a2172bfa1bbe55\n3fbf353af74136feb9001bf6cb0603cd\na6fe968066893c10faa3b42d05e08ac2\n4a0278285d649ac779b2745bcc82f6a5\nba85d89312054ee95793a80f4f864500\nab70b452a7ba1c445f46e754938b29e8\n2ecc5b85b343b20c2ca06fd2350bea43\nbcada2acf7cdd8c29a08db804545b684\na9d5719c3c2af900ce029fab54b6cfbd\nc27f121649123d0a51d91df189dc282b\n44ec5df88564c859e180a1a604561d3b\n5ab3bc993eec96709aa778fe3a2080af\nc58d1c25553a224ad9d271f9da38313c\n78efefe36b492b6e5a31d91ec836a511\ndb90e043486f216ead1d87becf13ddd9\n93927ab6b44bb95a1c4980134f4ff624\nf153783eb4ae84f2405c6851258f4dc0\ne1d8c419be35ee1e209a4a663fdfe000\n893bca10c44ffd673e1b2d018c0512\n231104a34a7b7a52c67a971de046381d\n6cd4d9c6b51d785bebc9199df8e5ab6\n6d75b6211f3bf8dca999ad3d6fc50304\nea4215e0c4455737dd3b7710c385b572\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/04090263_test.lst",
    "content": "c518e4b872a0841e0652a919e7ad7e6\n9af23e8759e070ef35d753857de68a9a\nd2b09323f863db7a71ed4e55cca1417d\n74a38b74bb57a2af6a405aa597e7fe24\n9f0b13efed3da628309c2ee598f7f2c8\nb76f8c041122b2dbf112f20f44aa16b\n17e2291c6ef778034b349e4b3dd5565e\n8bf221c8f17b152b2607a47034bf62a6\n5fa42f48d1d279bb7de50e1a7b436c85\na2d0d9e62c7fa469f02ee453ff283e26\n561430988b5af11bd04b05b0f20a897b\n85d730adf18e0c43a06a81572261e82e\n7faeeb69a870d18a2850d4a1a9c25bca\n7d310ff81ee66564b38e8b1e877a5704\nb85aa72e2d253f34e38850a3ae501b7a\n38d7ad99e308ddc334c4a8f12da88608\ne3230062ee3def46aca1893e093d31f3\nbf6268d9d4bd22d89cd99d3d15a8756e\nc91b4aa1105a0e506a34aa94ca8a3355\n5a79d10c5665b9dc895b56cd0d702185\n1762f93a8249ef356e4806bebefb1ca8\nc7f54b82e3b1682b65564d9c2ed3b493\n760165682193d0d235d753857de68a9a\n25cf1e85d9875c9412173f61ff9d1fe5\nd3f3e2dba3dc32c0ebbc1e980ea10b4f\n48b607ea57a1e16d309c2ee598f7f2c8\n97a7a1f3c53b3c5ff9489a342636086b\nd9a07758e979ecca44bebf183fb16c3\n317353de88cac813d9e057a3558cbfd4\n6e4a5a5577d06899498dc39a5b1a1c7d\nc446a7135467cd83e906ff5bb78d7b1\n9384db12f13af3e4e1abf5082bc04e75\n8978ffe2b8b770c363e66191800dfc8a\n5e4bd1ed44830fb147e5d4c250a3c98\ne9706e37ac92aa199d360253182ac1b4\n9f4c4c60efdb3076d02276f7769397e6\n8d0947db43c20e819ad96e0af6b934eb\nb7ebbb8db6add885e5fd7320f47a8553\n8d5354101880490994deaa9fff391d41\n37681c6cd8bd88d1d04b05b0f20a897b\n61c0df4a0db0a32fe73c917c8db80e59\nf42ef3273a8b4cbbf4f70c928a738b3\n12df496292b5c016f9489a342636086b\nbcf362f325cf658e282dd3b430ec2654\nfdee9fa34e570910f2a8e4598a15f7ce\n73cfed37f9da046de2bb19fbad3e4596\n83dafc89711bbdd68cb93ad688d1ab8\naa724e9dd919edc3fef144202cb2b935\nd79182f4d76d63e9f13eed41b64dddca\nb577e94cb0a28f73e8152bb1bb6e4c3c\n5c1d73e16d1a4459b5070c7ac310bcbc\n85b6261930b2174d85639a40426ad4d7\nac6d4b9549853b509a2ee232a197081e\n23a91d141cd1cd36a9405d5e0b8196f\n25796f85c74347726a34aa94ca8a3355\n5605d839bc4fee8d51b9e8cbda863b2\n404acdd4cbb0544eeab5ee569c9de1b1\n8650b7b809ea14be6314c3b6a3a65519\n9319229e8b90b7d794a57adad86ebb52\n70ec646e9929c7cb9a2ee232a197081e\nc41ea087ba71931967a4cd2863eb1ca\n43e2cd954ae1e3ed18bc22abef3f86ce\n48f60ed3a4e32891fe00453e7ccbcad3\ncadcb2e4e882ce75dd0a2071dde26395\n41da6bb82abdc626a5aad165050e534c\nc5874d1a3b616a641703868bb196594b\n8e36f1a160e0b98c93cea328065cbce9\ncd4fe695c04daeda6d976be0196645ff\n87f0e810c573b90c803b54e9738b20a6\na52c4c07d951fcbc3068951f59ff267e\n8d9471defc6f3a8fe71e857afa9df271\neb6e7e6241c20448a3fb48700889ab3a\n178539e39c6a83efb1c46f058c033ec1\nf5ab909cc5813c7ebe8eb764bcb3c31e\ncf21d9de1440d3d203f35d9b3b48203\n57cd6329f163043a551f49d4582a8d17\n2616ad4d3e8f3ab88af39b443dc477ce\n4d355e20ad1b6eb6e7da0b4c2db4425f\nc39040b055a5ba329a2ee232a197081e\ndcf9d53ebe90d9a85f14a92a8b55f317\nc02b44f51d159cc4a37c14b361202b90\n54e1ce2402c4f754aca4b8a57632be04\ncbbeaec355a86ba9870906b5178d97bd\n63609476aad03e4b9a6e43b878d5b335\n8690ee57423c0e591f3140bdc5d4932\n12038871e583f645af56497f051566ab\nab379b3916c45a78710c119014476e8f\na6984e79681321d7665e26d8660e8f05\n8527c531b4e23b85819b42f03f652dac\nc89488a80cba5fa5870906b5178d97bd\n282f9e161a0bbf58fe00453e7ccbcad3\n1c74382abb0281e26314c3b6a3a65519\n7d7a915cefca95471db44ede0efdfd5d\n57337a97460a63129d5aeb7097eddbda\nb79cabe03c878d2980c2e60c312b0f09\nfcc1826e28e6f512b9e600da283b7f26\n722051c679217db6f436d0d7fdd21532\n2bab6ea5f35db3a4aca4b8a57632be04\n8b00e0ea294fdedf8af39b443dc477ce\n5c960809f4f0424d217fc13ba9e6b2fc\n8deda7d1c75b33676314c3b6a3a65519\n9cc96465d70061cb94deaa9fff391d41\n66f804b1400a139ab5aa01b641366717\nd8e7abded14c00cef02ee453ff283e26\n9f4658773bf2c31ffbf44f447f38c175\n45e88d85974b540732624d0392494ea2\nb9220d1c981e2824377a1335e81633a9\n5d8c7291e06122c14eb1cb28584abf8a\n81807680baebc5975516c1e9dd717741\n81d26c915198c2d857f253aeccb15f0a\n347c9ad6b867bf885d0dded52efeb4fd\nd147dfc972ff3a8c673a614c45f3afe4\n313b61a27e01ebff0fea2ee98610322\nfee4130baaca04225516c1e9dd717741\n2da91be46310f550fa6c79a0c671edcc\n6afd1407c216151994bdc5b116ecd8dd\n8c4b9320b44f674ab09afb04c84cb438\nbf76395bab45ffac2249915e95f55f08\nc65cf6b063e1a21025251b7dc26d833f\n45a794d26abda59e49c13db2bb1e6735\n337d3642a2d949a4f58d2dcaa6073061\n249e0936ae06383ab056c98b2e5e5e4e\nffe08785458e09666314c3b6a3a65519\na718521e2963077fc24d00518a3dd6ec\nc12e1342d88e78bfdb132fbd93e54108\n272e1f3a719f2e35e2bb19fbad3e4596\n8949412a776f34e6a821a9df9523f811\nada26cb4cb6e0b1946177b6d1ecbf989\n69e59c0feb5415ff71936222e0293591\ndc29aaf86b072eaf1c4b0f7f86417492\n800299ba59951df3527ce7c85e81fc57\n7ca6a11f827014b4643ae903098a314\nb5f4600ef0e9a5a8dd0a2071dde26395\nd4312787c89edb399a6e43b878d5b335\n21b7114455da0bf033e73845251cbf4e\n8fbd9668fdd563f5359ad7d9ce49f504\n69cc7f3dcec397cd3215e5c5313f5f42\n9397ae7d40c327044da9f09deacee7d4\n595fcd065407f54ca97e1deede586e49\nb095a80476a8e002bb9224760a70fece\ncc362ac31993fcb4fa0d7d9af888ead\ne0c6be7a5b560f3af13eed41b64dddca\n75368dfd449ea1d729712ea5520175b6\n6646f169a45f40bfc510111f5d1cfcfe\n1cc47a6181beff44f18a63d96554f7\n315038c85d3e3f4a1a857c47fd0ecdc3\nb3a41cbb4ddaea6786225a62b2bc2d97\n9d969dabaddc27568bb83d47cdb90d09\n157c2b391f7a7dda1a857c47fd0ecdc3\nb8970e3d0eaa2880dd0a2071dde26395\n5afd33d495b111449a2ee232a197081e\n35b5cba53b629223cc2e8ce9ba1c97dc\n11b137bf4816ed40f4c39a35147bf949\n5428fea9cd816d764fe44fa90b97c5ab\na7b088a849fdd41c25975e984b0e050b\n1cbfb1c063b34ab4ab379c9b5bf12bf8\n1e7dd1677a62d3caa672357dc73b83a6\n5a2ce6338b4e399f0fea2ee98610322\na6f0f0aab2ab2591341b8a806253912c\n124fa4277bd03c74359ad7d9ce49f504\nd5734bfe7c57d3bda1bdbe5c0cfcf6e8\nb2c3114a9acd55636d4858690640024e\n3553f6cf76c2f9e1870906b5178d97bd\n60ac11a84e307db07c52b7b7b148ce27\n5aac06335039030132f8337ee2b84248\na0361a353c93899fbe35b76ae96c4b7d\n7b0889c55d482cdcf0fea2ee98610322\n5f8a81e3c0711e087d81debe03396504\nc383dcc4c30c70b41a3b39b07e4b3d0f\n5a420b1aff4cbaddeeda694c82280de\n66e287e1d2e9c9f6e71e857afa9df271\n2c10978bbf84a263b2b9ca36f6b76586\ncfc172b9164357ad42a9381145738f08\n84b9cd6750fd102a9a2ee232a197081e\nc802de6725483fd9ab66079ce2700442\ndb8f1174280680de5e561f212b7229f3\n1c1008be00fa5edb30dd2b88f7efae34\n45f3755b324a97803bce1f290fbeceb2\n20468faa3d66dce03cfd5b33045bf719\na15719f77035596aea1c54714433d676\n55fde587d83088b39a2ee232a197081e\n56141e8844aea9e4d6c7a58fae95cf0\ncba7b6437ab3621ef0fea2ee98610322\n329f6414584d87a999b3da21343e5637\n1ecdd9fb715c6fb2b0a59d0f63b741eb\n736200c1ac8d1c34c14cbe2c343fa431\nd9c6c64bc9b2c1e0a5dd675711905b91\nc4eff07f05998965c79f92df566f8c6b\ne3f16aded8ea5a2fc79f92df566f8c6b\n8f5da7a2501f1018ae1a1b4c30d8ff9b\ne27f87039008855a341b8a806253912c\n164248eefde5ce846314c3b6a3a65519\nb01199433137d6123547ed4d05d19f04\n7f41235f55f396118aa27cedfe9e8bf6\na7de37ac9f6fd8c4d6e401b0db4905ed\n334ee6c5bd30011af8edafa0d47e47db\n1220880371b176f9a06a81572261e82e\naf877a0a066fa63ffd180252c91ed0f3\n6cf13d5b7791b8618af39b443dc477ce\nb3ae08dad4ceb33c16b34c3751bc447d\n156dbdcadae5e010337b0188275140f9\nc57d7e81270598096314c3b6a3a65519\n3d9907c402689521d8a2f3b4102511\na4001adbd9f3443d3a9a4f49cc5d8efc\n262510dc5b4cd7003d48ceeccdc87fcf\n3b4fcf1d294f11bc5db864c34fc9b1b3\nf9ee6c612895cfeaf4b4b1b903442d1d\n8894650164a2222b1a857c47fd0ecdc3\nba405d9633ec030ef27eb335b754fdaa\n71d9d636a30ed1e7d6a22172ba0f0af7\n43dade9260b93b2c3d204f0b9150b384\n8bc74fea7c5e6f05f95499016f29fbc4\nba49c58d6d320357f1cb19f636b1c2bd\n15a209524ad3fcb67b84b9482c4b66d7\nd0eac7ba7e964d72cc34b900bb2492e\n6c95a697b85c6a52683e3750b53385d5\n27a144ab9c20b710ae9e1c81f7e5b0b6\ndb396982ae541ac97f5c403400264eea\ne49e18cbd48a2479cdbadd1af48b5cd6\nc0a429d6e4cc9d0366597c7d470782b4\ncd60840ecdb0138e4b787ba27f895fbc\n85d9133c2be9be93d017eaebc1ed8e2a\n3c42d32dee40f39a1ba59fe23593fa2e\ncd50da8bd34f050af27eb335b754fdaa\na7b3c912a793ddbdd107072754c68ce7\nc044bff4423c7889a2ee232a197081e\n8d9d9b749562c59a9a2ee232a197081e\nff042c9b61e609a78e4ed0a212e54db7\n1cd506c69f575ba530dd2b88f7efae34\n4ec09a25c05bc7d0fdc1361c2b9ae6a4\n2fda76fc28c9133d8428b8de1af34c50\n91ccf1fd54bde780857835988c6a287b\n8fedf1a088427ea8ca3e540900266737\nc36992c1accaeba6803b54e9738b20a6\nd90b571a1259cef1ad51de5d9ac9dcd2\n191f8debadb867fbc24d00518a3dd6ec\nc5cfbac689f8f49310e71dd8027aa9c3\n278f6f0588771123f8edafa0d47e47db\n7ffa338b2693aef651cfdb4c9f126c12\n94386a700272405ef0d11ae402ef940e\n9a6c8702a8f5d01ad6945707de93a7ab\n3ff0d95df1076951385d661539b5c1fc\n874cc0d822e74148b88eabc621107e4c\n31895d26609fb45dfbf44f447f38c175\nc578ba526b8ef653e28e3d2f13cad462\n14a07147c6b74e9d914c738e92faad58\n5b1dd450a929e2823b2b25ffabe35ca6\nb6f2b71e726f5dabab97b3fa5a6b9e6e\n22e4139b7fd37bda2538e024d06c30fd\n2d49519d725de02396e5f13299458076\nee01a3d156cfde95b6f73775a54c59c6\nee4cf4706ce605bd37e67c992a0a6e51\n2150ef6d0dd9333ad1f5735620433167\nbb1dff989d7b563124fcd7bb489fc827\n1fe9e8fbcee0dcc8683e3750b53385d5\n38a906533b048ad8341b8a806253912c\n5b6bf22e5c355592882cef3540bf556\n8c0e6b3a8ff3e1e75427d4172e3eb61f\n99cd8bbe5b2f92fc643ae903098a314\n4bcc0ecc49ac0617525b3f0594400a46\n79008976055024fa93cea328065cbce9\n48cd9104129535283623b64770edb4be\nde9fcce5174bfe09db181f2efd806577\n469427702fd95c3c6314c3b6a3a65519\n3db828bb2a32a5f356c95a1e5409420d\n4327920bfe590d3d262eb9a9badf3c08\n556f1e3652f8c8984a2ac5bbe9a7c771\n2c9de4575938dc88d1987c07c912c6e1\nca4e431c75a8242445e0c3a4b827d51a\ndc222cfc347506ee73482852b5932f76\n8cac8a38e96e3754a59c12bac2e48f46\n3ed5ea03e0eee521bc6e84bc30e573cd\n7a2904413d538525bd337aeee16061a\nd35379324caf0e7380c2e60c312b0f09\n390d25757d6532d5dd8e6e2fb6475d03\nc14017bc897d73f46314c3b6a3a65519\n97e856173cb708ecbb9224760a70fece\n7eb5fbc480326d64f02ee453ff283e26\n43fc3a905d6024290dc2ed23ceb8a8\n39eb4b7bb1d93d94437724fec373d206\nbaa007b1a903fc432ce452abffb6910\n41fd7683b4e722b716b34c3751bc447d\n7c31ae88ca4faa649a2ee232a197081e\n383bd13aeb390df0f8edafa0d47e47db\n4a56ba0b85af56703bbe4035b770f62b\n98ed5fe737e80b11eab5ee569c9de1b1\n8fb4cf2a9f6d0abd8e7e8cfdb2f674b\naa235b7d9006c30de98e3214935cca1\ncb392c32ad0446aa576cd215d51ddd\nfc2f5a2623b4373a83bd2c1aefe617f0\n37914b7cd5c02da8fef144202cb2b935\n6d2761d9749fb354167e6355c6e5b5ad\nc0b2ff6229e1175aae9e1c81f7e5b0b6\n7fb2ec71361813bfcec05e03e317cbf8\nbcc0a71596e9df4a6314c3b6a3a65519\n7787bf25c9417c4c31f639996cb3d35d\n2a18722913244bc3c24d00518a3dd6ec\n47dbdfdcbd971cd2203f35d9b3b48203\n27326efa9e84ca6aaf365ec12406f363\n280896ad10aa1272ba11c8c9c0c3770d\nd33c5c2a6d3c4c64d730d5e13144e77a\ncc380bcdadfc3040ab49837258a1bfc5\na5e62a05ffed4b0231f639996cb3d35d\n2632b2d716be1677914c738e92faad58\n796816a563f04373c24d00518a3dd6ec\n6d5027e3411b23459a2ee232a197081e\n49e4708854f762ae9c27f9a5387b5fc\n7dba6294173994131226a6f096e4f8c8\nc4f95f531b5ab758b91a90edeb58ed0b\n7c8a7f6ad605c031e8398dbacbe1f3b1\n605cfb5fcdef75539e6170029f747a35\ne3a673dd3db3fd2c282dd3b430ec2654\n206b4a7aff5ae78ecf61781659594ce4\nbb95e848c9e1940a2b299c40b68f70c\n7e826b890b683200b63969f9f8d6f075\na5f7776b13c11e3194deaa9fff391d41\n487330fd2ba7d55f97020a1f4453e3a4\n7e13df65e9fdba575814fafedc6971c7\na86e3d993f82d44018a76e4544dcc8a5\ne63cd617410ceddfc9ae1c09f478779\na11fda24d699c02f75e83577a23faa92\n6bbfdbeba3b0273316b34c3751bc447d\n26516d0ce97296dd49352dd33f95cb9e\nef46f9c14bcb69193a3a90ed08de76ea\nebd426ae34b743f4a50ef3fc203c6ba0\n397b2068e029945216b34c3751bc447d\nd1e786e052c26ed3cfb3f4d4e98ee41e\n900211102042c2d8fcfb3ae2df2f7efd\nad5165b445e67c06cd1b85350f224c08\n42c6d1184ae147ce6e00f130b3bd101c\nae57975d9461b324d10b86bd6e8bbc34\n6b0c761060feebe4affd759bf1ff6b0\n51b6fab73fc9ea886a34aa94ca8a3355\n2306f0777527603722267cbd3eded69a\n83d1b16c362e03ee99362c38b018f042\nb76c7921d0fba930dcfd889babf6a0d4\nb12d95ad4abbf097e149ba69dbb3f6c3\nbf89af91f6f699a3b758d4b2d9dccb00\n744064e205da68779180711d39b16e1\n68c1bcd26d43d80572cad024c77ecfb1\n180846dd3deda6785127e0873cfaa7b8\nd21247f000436a8a374d02834a57040d\nb9b2f960a937bb22643ae903098a314\na299aa2fee9a1d297ca8eb6ffcff94f6\n7bb85cdfb1794a5712b38b1d99376c0b\n6bf9cdb0f879a8f894deaa9fff391d41\ned9e0161c72f98d5def607f4d4140edc\nf1bb43c7758ad37c12b38b1d99376c0b\n2a58d9c3a766742cc6f30d9ee0d5574e\n4e4b42da5513ecd175d25d68bfc74949\n30621c7dddddd06f42a2e92acc266edd\n7e5c0d35215be21ff3998727b15249db\n384d3caade76bfbda84690bd684fe15a\n27937d4b55596d689a2ee232a197081e\nd254cbd6f2e319ced348fc2382f06377\n5835ff29188f0f493bbe4035b770f62b\ne62ccd699b99b48a58dc97820d1d9537\na83bfd1065f7dc34176d7cd6eb76e767\n84149440704cddbed735fa1ab17311ec\n2b997d20df6ec1b7e290ca81b042ebb4\n8ac5aa7414e3c30030dd2b88f7efae34\n9b9d03274e856982c2c44977d8755d41\n3aa24b3c616c2d649d5aeb7097eddbda\n5ae6db470db214b258dc97820d1d9537\n144201418b5dccef1a857c47fd0ecdc3\n7d286b812a03c60e310bbd45bf9024da\nad209c1cf7e2cd6249352dd33f95cb9e\n8b8baee427b1adbe30ae8c7dca0728\n6bdec3364b44e8d8ec69d13496bd4a34\nb4f152116e77505d202b6e2a481f1de6\nf50efdafb9e486f4519f927f2bf92da9\n230851bc45f916297c9aa6759ab09b15\nb128968ac3ba7207210b7d136d269713\n8adb587e61fa424ad199d75ecc2a48b\n43c51dcb5c9c812ec1385c8c0f4d3915\n1345ba2c3b27ba786bb9681d4604e123\n75008b972144b426b8eced526ddc241c\nd5714c28b82df83d8d5783af2345d2c1\n213c8d7870b4bddf320c2b53dcebe82f\nf05e17d75e8f3e2ce378cd9d51dc5be0\nf0cdfecc69f4beb7fd434dfa483c57fa\n2d2f48b293f5ed5d40385522d1beeb20\n65b1329eee48bd00d87c63d8b3018b58\ned01d61bb0439a33b4cdad9a5bf52dd5\n9586fcb3437ab068e1abf5082bc04e75\nd27b357966e47647f8fb6cb99631d97\n899e86a8dc53568694deaa9fff391d41\nbbe366b82cec5894c082409e8305f221\na5b31577127d77d28653d927a24ffc75\n48bddbcdd626298540385522d1beeb20\naca833639091b256922309b37ed10e7a\n5f68ccfe85cba73d2a23d93958262ccc\n897084449b84192db449aac65ff63543\n36b65f1b9161a5f231f3d76ec3df45bb\n51a327bfd4cbf109a06a81572261e82e\nab0fa4305623f6c3cdf27c4099cb6beb\n242a543a598c3d7a657e1a784010b9cf\n733fd68ce2fdeeb76a853eef701ef7ce\n6efe78a38abb45bebab70e35b0e13530\n2f8a672751f8c284a5d999dbf2c5fd3b\n86baf335855c96d212b38b1d99376c0b\n7816689726ed8bbfc92b24247435700c\n2757f06b6b4d3ca3f02ee453ff283e26\nf3298345f6d6ed3dac4f72bf08dc79a6\nfd00cdc539fded38ddd7320ddee77bde\n96b74853ff1d922f42d160994fd6c822\nbd48edaecaea23d65814fafedc6971c7\ne3dae8ffcbcc498c935777dcb8deec2d\n14ae67574004fc83dd0a2071dde26395\n5ffa1a012a2b18fc83b41d2cfd151bad\n4a90c8a6980c9b53aa6420fd028bc571\n5f03499ea2b4adb5857835988c6a287b\n10a2ef896a45a682ab379c9b5bf12bf8\n5b5acb01373af13180c2e60c312b0f09\n6f739c0ca5834e825dc7ef8b006fcb7e\n8872698c6eae3a8ffb8c26d5226415eb\n45f97261ea66fefd302ca88f2e083254\n37cc0262192286c2e4235a2d12e58a2\n5df56f5b5c339b15df46f2ecb43811d1\n1068169d0f5df80e91cd21d02e676faf\n4696d7e82c49aa2a7b6175b1be6bcf01\n251deeda2394fcbc9c96fa78389d2873\n5d461974aa75e99fd88db40a5e607f21\n11126129151f3e36afb1ffba52bacfa2\n30a009a1877c9ae282a52e2a06478500\nd9180361e225bb418bfbe54b5d01550\n8c2748ffe88d346ab9915b62040615dd\n96c60386a5888d2094deaa9fff391d41\n9445546f0d348b2ddd0a2071dde26395\n4539958ad62e662ed197ecac88773a00\n38bbdc92fcc8e310405d5eab6bdcff6f\n723162e8e15f4ac55d0dded52efeb4fd\n97291a29f435517db6a44e5c103915e3\n2ce39c653c42982948b7bcada24e2926\nac13748ced7f9fca86b2bcefc261a7ea\nbc79d0cc0c27731a3a04e41b7ea7de8d\n56026588e19ac1ce5109391625c31397\ncbc84bcebe71e468d398c75d8b3af045\n7da1ea50ed1445ce2511f68da65f4c4\n4ae8bb7c50daf1352e4df18fcaa65e04\n94a58b162f17f908ecbf498fbf7a2384\n62217abb02b74e9deda1c1890030d195\n1f755931c16980e06ea2d3b1b25fdbb7\ncee56f2ecf92cdeca0834a5219dec81f\n460ad09b269895f73f82da5dbc1a5004\n3d4d7ae437d1153317c2892ca017a9e0\n6ef67d1906344eda9905a3939c890ad2\n5f69d649d9036be626b78ab29e6b0231\n2621cca0eaf82143f9014984f90a7387\n727b9b62c52fd7d6bf36cf6ce284411c\n9b1d60945756d2bd33f9b4d665d32f82\nb754214217c4405dda6cae4e030ce341\n4223e38ce99c160724270d533c13dba3\nc2ea3ff598b98f3f4528f6465fa2466d\n3ddd478e24daf437f99860cd321d6c67\na4ba46bca40afb3722fb813d47b359e3\nfd0e1e7c62efab3cbde9b246866ffe11\nc44c0319f2f31c455814fafedc6971c7\n602c00b06f2b47af8bfdbc9c53b14228\nea212437514740bb8b700cf351204203\n3c9b810025d7167fe641d7676ac20451\n85e714acb678fc59ed6071560148e6eb\n2970d1dc154363735960f9d4a75e81d8\n2a70089aa6561ce216cf8b1cd2155e02\nb266dfc3d3d3606dd281b302c458427\n8456aa006d740061bd8fcb0281cd4d0a\nec372fed4900876350c27b805d1a86be\n37f8e929e458d0a9c2c44977d8755d41\ndd9586cd8cc762dbe43969badba53c7b\n73ce9a5617acc6dbf1e0fcef68407ae5\n9b59affd52c33944c6c1e54aa8170142\n710148ab44c6e48441c4ee8eaf0d3f6e\n914cae3548759cbeb351750c5651f2bc\n5d806f9cfdf29bc640eee76592e4bb9f\nd90fda1aec4042ca42b011d8a1631bd1\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/04090263_train.lst",
    "content": "5909ebf625e0d04dfd6d10d22bbd142\n4c41c172046a4a5e9a6e43b878d5b335\ndecdf532717c45767a9bdfb16682d944\n528bc52f211ff34ed2a72bb74eb549ff\n271e58c2650147829a6e43b878d5b335\nfbc88753c7697b825e4f1f524019c\ne4540723eab9ff0bef0c52e20895a77d\n72aaf4a05a6d988412b52a369561019\na1f46e16994569d8743d370dddd1ff3e\nee4ccd4b40db28e2eb068a83f75a6c3d\n74b95139078ce0dfacc2abd6f796df4d\n2cc92e68121301c4ef0c52e20895a77d\nbf41504e86804d3d861bbf60d7f925f0\nb7e59df21f4859281a857c47fd0ecdc3\n8cff3ca8a9a250272472dec3b03e0eb\n5dbe96b00f0d7b201b8fee1b14934c0e\n12b346d7a60328ba9be47ac7c7e37815\n846075a4b76fe0c3052214d75e02efc\nefa6700a7609d9a59c4feb3f1af9fe7a\ndaaed98e5444c849a50b91ed3855d17b\nda6ec2d5f4d750303d7c323cf1653143\n6454206429467056cfe6670bda9305bc\n7083c94366b7c405330ab9259a8b176\nb1a6f690b8ae5ee4471299059767b3d6\naeba4ad00dae0c78c79f92df566f8c6b\nc8a74709a6a0724f96a9670983483761\n5ba39bccc3073c11e0a54e072367f4f4\n53b50183730125e68c0007e5a8235290\ndbdf82759d3a0011df6f54267ea02d3c\nbdfb8df0d6d316012b38b1d99376c0b\n75ca1520edb6825d12b38b1d99376c0b\nb65ba6d3f77ede2d79aaabe4686a1aa9\n42aa9630886c7512ed6071560148e6eb\n177d48f6f156193bdcdf952acdf10f\n6d66b80890d7e5c310a7d517f2e735d8\n931f74bd98683d493a04e41b7ea7de8d\n232beffe2c94564b678808412fe4ac8c\na5335cd2243b2d8312b38b1d99376c0b\nb151820ba72ad964fa9286f039319ff7\na5bfb8e604bb2d8173db096a9cda49d4\n20cbbde170e264f320152153c3a56171\ne5a2a579e54cf1bad87c63d8b3018b58\nb28e6d6cb4bb868ec27f2d9f006d69eb\n313b30e96bdbc29cb1d04c72ba966611\nf8a772a405e76adcf02ee453ff283e26\nceba1f5b53f3c3f0a4c018b03e3993f7\n948d90262559d560886a4efa4119c824\n587cee5495322f18cf1584c5b09d332\ncf51da336a5414031b8fee1b14934c0e\n2068c2f0972d82e569f9dfaaa2301a49\nce43c7f0642a72a25e9786b1603f45c8\n206d81abdbdbbb5c63d83c622f45f33\n3c33a0754d1c6a71b9a4a5375572bf62\n365589510c76c7cee603a5ccfc8229e4\ncca52c1d48b777b227be842e82df28b3\nb26c0df3e57ab7a298a1a2453e72ce7a\n17733d33502704ce9555419173518aa4\n1fa5a9170bb276e7fcace4d823343363\n389370f7e03b6312eb73ff4c9e061b8e\n176b7637e807853d34ad43a472bf958\n46ac5939e2eb53189a3e2fa8a8e389f2\n196b2e3c66d59cb54a4f87aa9a31cd70\n149785138bfc9c2011f7dcbb4a32aee5\nb06d8b805dcfd1ebe212dc904164c2e0\n8128e1bfcc18d4769a3e2fa8a8e389f2\nf2e592962a9df3de1d27f57617a4976d\nec688ef9a40c78451188f2b8eec55c9f\ned64394470cc3075feafd6f06fc45258\n64abde6390fa65fe26ffa6f51f050119\nfddbba55cea838b9b2d09bc8d348e46b\n65b8974ca9c4d73e34c4a8f12da88608\n346d1a548be65182a67ac8a08d7e171\n84fee75d9736808afa29682ba98e856d\ncf5538e2b369b7b33ed6ca821e0a9e81\n6cbf83cff8dc7b23623b64770edb4be\n6ab8bee75629e98d2810ab2c421a9619\nab4fd00b47d9d6f4fb5c1b0f759e2bc1\nc224535cfe42b795a39dc4a567ce225f\n18807814a9cefedcd957eaf7f4edb205\n7ccf43d35755a35976ad064d1c5fdd7c\n79ec181e02cfc63af4de29b99f103946\n76dd6c8a2cf09887bbb7f70943d3cb52\n7bd5febaf49a0cd44bec850c6c6ccac1\n3728ea8fca746a8d52499cf3d29e4e95\n63ab37430cb66270b5666ac9dae008e8\ned502e8af9df3df2c933c3e835f6d18e\n5f68383c820c1bc4a67ac8a08d7e171\nb0ec853833d21d36859a7164d38b0d13\n851afe676885dd1dd5c93d34ff51959\n8cfac69c394c3cf8de423072102e0bc5\nbc8ffdeb04d8526e1f2a1daf140ac9f\n259edfd9a26c68104c16ba0acd861632\n1723dcee921fd152d43bb185feff0470\nf8ac577e9f60ccaf3e7a62ab2a088af3\n4aa568a12086e742fe773002d2182b7e\n80915054aeb243259747e122424ea8b7\n138cbc9b5456cfef55d33831e71fa52\ndaf8f85c017aa8c3e1f2a1daf140ac9f\nb73a819d88bde44c24d00518a3dd6ec\n9db0f94cbc2ada72847c4fc4f8c08820\ne21bcbde60deaab7716183d105fb8ab1\na1f65f97e61094e1202be79d8b285c1e\n8571fdae210bfd6612b38b1d99376c0b\n809d2439412bcdac896cb6094e2801d6\n21f013795d1b241d525cc89e716770ad\n6536ba618390e1688e4cfca4542c1342\n6529b6134cafc299d43bb185feff0470\n1c292bec142b39a5aea3c9294e3d898c\n3222936b563fbccddb83191ac0ff763a\nb69973526e91e3bd68407c8bfa49d3c7\n58e1eb81bae67052c79f92df566f8c6b\nfb9a94c179ce70c4561dce3fe08634b7\nf04dfecd1ae139a23e7a62ab2a088af3\n3387f6bf3cc73546434837e2aadd6d77\n471f57562c00a5c7bb6581a048a6fb18\n257fdddbd7b231b15063ff48525b373c\n55171896c70646cdd87c63d8b3018b58\n2cb0634dfd39f71623c02c1a690f1e7\n4d772170bb26d40ea36c408ff083fee3\nb27b78d3e1c97180fa9286f039319ff7\n2859d1753713558412b38b1d99376c0b\nf5a561a38af6b829b3066d9a2ba0c7c3\n298d300e70d6bf24e1f2a1daf140ac9f\n86886a49bb69dce3fb5c1b0f759e2bc1\nb0a050985a5ce6be25508ed649b952cb\n34eb31e5ac8802246f2614b47f532d63\n36e0d91630f7c958d4ca42bc1bef451\na7072394bb9d23f54b49cd65dfcc3a9a\n8c9e592c95f95e7c9a6e43b878d5b335\n686be742e65eab7816cf8b1cd2155e02\n61064e4a00abaaec589c07868201b17e\n1e83ef6ed5d0b78b7efb854782e23566\n235853d2947a90e65e9786b1603f45c8\nda7f89368a80ce9e1f2a1daf140ac9f\n47db3b9c4b94ed61223d66e29bde9a55\naa47591498e4eb615dd9d441afd49974\nb47d65a7c6234d06b349bd01da88f0bf\n640bfdaa8cf5e3cd325474a1336ea459\nb50f6037b0f9b86879d9900c00629c24\n9b570b06ee8a7b6f56642b7cedd4edb3\n172a4e03c151d14a9f433921788191f3\n411de9a0a7a8e3e9a0d6b294e290074d\n465746159129abc7c0d38eeb2893c7a\n7864fa7de2295d33e6e039bfb82a52e6\n734c46fe71b6021416b34c3751bc447d\n2036799fd4fa273918ffe448c7d16fdf\nbe0024e025b5d75024c5c134cb8fdbe1\na11f9df8336fd83e5cd09b5ae4a3c552\n702b1c4aac9e825f51cfdb4c9f126c12\n6639f08c2275398352d6d9553235a14e\na1a89a8cc3557d373fab9f1733a68f6\n9b19164c5b17f3016da79efb34b8c0b4\nc26b1d42bad81b6397fd8ef0d14ce047\nb7f7746fc15d67343571d7763ba5a413\n6e0e38455b33bbf7632bedb12ff8cfc9\n6d247b103dece20af500cc506a763c18\n8fca9344f9583ed9f433921788191f3\ne776209bfa7f2844589c07868201b17e\ndc263bc31beedb09589c07868201b17e\n3564b539a24a1b721a638d3d0d97d12c\n3d7dfeb58c481e88e16974ffd95b0c65\ne818959be12871d461b28e02a259d647\nf1f0a765def9499c6a2345809e2bb169\n39c1ebbe7f6f1d5f4a4df88f87b30520\ne5221bee9996da87d6964d5ad6a822d\n56737c6d611f2a8465a6407cecfc902e\n93de686cc189544335a8ac768bd119f4\n840eba6d395c192c40938a189bac3257\n45c5c36e3736d3d64e868b194cfd912\n604d962eb17dfd5166c0c88d96ba938f\n2e7c6e5ee2f07f3ce19905e7053d006d\n27c9d26c58200a1527be842e82df28b3\nc88aece300c3c4e05127e0873cfaa7b8\n596c401bf2ea21e55e9786b1603f45c8\na7cf230b5a2967125f5038a2cf78b1e4\n31a0c1adeefa95f488b9635e60aa884\n891731397db0b6d36669f41869e0668\n10639ade9179e38d624a9463cbe27c6a\n169bddb624e60dffb6c8238440c79e2\nf2e64c42370475cd52533bf53842cf9c\n82686f0ea15a7c24783a7c2adc432e76\nfd2223d0b93e34dce3bdba9430565083\n1c6064f070b55dbfa449921c4b97dd7b\n8f38c44779be7fd4340b66282f54c877\ne61d4911c7142c65d735fa1ab17311ec\n40f9c088e4a4eb77df3029a778e2c881\ndbbb9a848b8a6697e1f2a1daf140ac9f\ne3d49735508753b6ac6a323abb28e29c\n7c6a21d8b91fd12a1b7837f7a64e3031\n6a9fac86136c7ba0f3dbacbbb2e7e80c\nc40d62605e84c6beba1d8c8cfb70e106\n9ce27cd793dd3da29ac0a7e766b7c815\ne07fbeeec2a12fe313b315bf7aba3803\n36d3338314e3db7cf6099a039722df68\nb63023bf7697571912b38b1d99376c0b\n97532871e6ae97d8f0e1c0df18936d05\nb589b1af4eec862beae3ab415b6ca18\n98882aaa0d1b597127aebc12b787c594\n9dd3d881c473a5323666119626b2af32\n1d50f114691be38fa9286f039319ff7\n4cb322a9a37e3a4d1c1943a82a09125f\nf3004f6eb2e5fb8eb7a51049b27f4bf4\ne42d10c193cce254719aed4531d5366b\nd3a7c0fd2e4418861fe7d5784ec6d0eb\nc2acfd34d7c030f5dce23741b366d6b\nc9b540abc1cc7a107d0c348381a9a6e4\n1fdccad4c0b826680685c30eb1daeb1\na38da7d4126b4a4912a8e5e6e6618c8e\nc755cce8095ceaff4b49cd65dfcc3a9a\n403f8de536d9842222b13c48c34706de\n1caf976f39c934f1589c07868201b17e\n124f09d314c2c229331960c3710d952\n48eaec39f20dfafa7e270f84701afcd4\n15c7233e2e883eb55a443e4394e3a0da\nf8aedbd628e010a64033826da8c9e89d\n1690a5959e2659d165b14b263bdb456e\n869ba7b568be23521c63053ffe1a64a7\n60db20e995801bdcac8247d8f020ed1c\nfb62b780ab54dbaab20f6e48f6a30cbf\n7ce9eecd689e432892cea77f96988ae6\n3722e5b8425d025895f22290198b089\ne55bc0a1b57acec4a7dd22c0aa3913f0\n98375ee901fa6ae4e2e7039a6accd4c0\n49429e1d1e90c1ca202be79d8b285c1e\n339ae95cab075926c1fb6fdac33c3f5\n2cf699bd28ec65dca58b002039bd187f\n2a1f207a0273683c9f433921788191f3\nf5a9d847f69449626f07a69f0bbe0f4\n2bdd7783684aeff0f3ece95ce0e0247d\nf3ffbc00ec1a1aa7ff5653e278e7cd2e\n6d7b8924dd47dc6e7330912d1744819c\n7231363d3ec4da1c9a6e43b878d5b335\nd0f3ee45d483cd659f433921788191f3\nc4f3ee55952e49ae12b38b1d99376c0b\n3b3839d2a22ffe94c5a12959f98a115\nfaf6a45b04c24fab1d9b004d9d8d2781\nf92b4caff4bc0f6d9352b002a7d38daa\n19d5298e49eb6e5a30b14dd156373f09\nbf22abe4fbab4acd91d13947d0d17396\n8ec7ce14af18580ea5291b13c05695e1\nbe70ada7701ea798a8d379aabc8e63ca\nd03854e6d6c6eaa19be81fcc2b07ba08\nda2799e2d7b9334ef0b45b4b4c7e33b7\n14139593048f806e79093d8935cfe4f0\n8c0827d07d79165ad87c63d8b3018b58\na99df9868677ced6ffe50f88045d4553\na8b65f50dfb2a74a9a6e43b878d5b335\nad945e636e38338d8aa7cb0651220ba4\n9c70690a9d79a4d412a8e5e6e6618c8e\n84ab70232093057c12b38b1d99376c0b\n9cf5486d4aaa5c0dd107072754c68ce7\n193520be26b57b77a5f9d279e263a051\n9a5e20b8f1881145d735fa1ab17311ec\n197f8aac538b6f7327b14e46288c9d26\n74a11a9b7ebd4baa424c267cd8f453c4\n5d40add22ff7d14c77b7d0d4764c121d\nd2f505aca92ee65fbdb8512730b99253\n8f905b2da32727682a2679e9ffca8e38\neb1655ade2554c156e49a9db8e76daf1\nd1508875426ee5f3d87c63d8b3018b58\n4d1881a99b034305e71e857afa9df271\n12a5e976e028409ca67ac8a08d7e171\n15cc5a007bb325a3405d5eab6bdcff6f\na262b6955756cbea34250dfcf5a9a6d5\n84de9995b0a416b5fb5c1b0f759e2bc1\n2300f57a06457c092235a9282623d937\n99a3238af6d1b857178b53c3b6bafa41\n394a97c4ca0132132bf26da672b84220\nd5322c4c21c1d16ceff31787d7394ead\n6075b98d3dfb0bf5c1ff4c99e4dddd02\ne8931ae7d89ebf11d1c304326f7509b\nff5319e43471e9294b49cd65dfcc3a9a\n99866ea1b82e18c982cb4f2e118e48f4\n4ba87457899d8385d735fa1ab17311ec\na45b989db049e503a04e41b7ea7de8d\nfccd8e7b6bb1a6eea1ce1dd4c7e01188\nd88c106c00384130fb5c1b0f759e2bc1\n9b8eb0dfb6dee992572dba079470b351\n2acb7ad7112de6c2394e22ae6de2db18\n357f37fd725c0fc116814c0baffb6c9c\n6f14f17167243fac5427e47767269c4b\nc9ee75f15d7f6bd13623b64770edb4be\n82267e9766dabdd653fd2f31e6ee4fc0\naf1778e415b0e0be20fc54d2500eb7f1\nfb686ac45c8e545c8d1265a14954deda\ne8f32ab6ba9ab7713a72dfa25c767709\n214dd04f06d5683ed17373579e6fd9be\n58f7db3c6be48a83537e3f6cd50ed63c\n43d4e6583cef197aafeed2d6e5e28a9f\nfaa1fb485ddd6c9c8bfbe54b5d01550\nfc1cd79a8643fe66def607f4d4140edc\n20d48326842d7c601274aa253a241db2\nc4787a48747c6db1cc34b900bb2492e\n577e1473bbc1e2654fd8f930cee8e385\n58613784e5ff705aa74a2c673ce55a44\n4b4273fd49971552cb833b31b53d151\n7bef98c5eb45b13c6c1e54aa8170142\na4f94ba638d2bde76227cba038bf7c95\nbfbe959eb045a3826e181e3da8402358\naedd534b9f323b2f9f433921788191f3\n82c241396ddd0232b3f2a90d50e9caaf\n72e4958882980380e1f2a1daf140ac9f\n16aade23487b928b8084b8c11aeb922b\nd032874b5c3129a313b55e8563d02319\na9e1e9c25f250b289546043a05bd4e6f\n8935329f244ca398cd89d443b4b6353a\nd8e7f4c92af18cf2892fde398a8eab7b\nd2aef97be32d8118433d7c8e9cebd7c2\n4a8f8e108cfa6503202be79d8b285c1e\n39c4214ab44383258a3dbbf31a87b8b0\n9c0a483ea22323c78ca4596df3cbf136\ndcf13ca83d9580bd44c069e8827241aa\na0e251b5b4305d49893bac51482eaead\n8ef53ef4767baf0d9af0e0a4fa12498b\n6aaca4e199c1f84f1087ca95a9795303\n3e0b251299b8696592cea77f96988ae6\n7aff2693a24b4faed957eaf7f4edb205\n2f0c7483f4eacbf1c03d8e9f14212b58\n1fe5ddf1ca0fde916b2c8bb96250e4a0\n5aa0e518413524436ea2d3b1b25fdbb7\n2a2b25ca77af35cf30dd2b88f7efae34\n973a961200eb14f1a64fa3a308f2f098\nf5472d552004345b51cfdb4c9f126c12\n117be2f79d591136ed9c5b25fef60d04\n2b44f7b45ac72b24683e3750b53385d5\n32d8874aadbc73daa50ef3fc203c6ba0\nfbda020053554eeceab5ee569c9de1b1\n5833fa72da0bab839c82b3f5ddca589c\n5e2661c632995b4e40c568d90bfc809d\n5128892dbc0e8e4d12a8e5e6e6618c8e\n11549f435b7454563571d7763ba5a413\n128cb9e49c7e214ef2e947b62e6a6cce\n61f01c585c581fdc8ae8d8f46e8d6c0\na4d1ad2fe0d98814e6cbbd79676d8c68\nda50ca3dcd5aaecd8bdd85f9e4c21fcb\n85a1d16ecd3989cd2e3059b0e19cba0b\nf5f4d746b6d0b8f59f433921788191f3\n1dc7cb6866488d93cbb897b3e6934456\n7c10b90abbe17fb9935777dcb8deec2d\nfaaa98e92d722d0ba7dd22c0aa3913f0\nf74ef838b3d8388b03509f6d3647539\n6571520aee22fe52eab5ee569c9de1b1\nfb62c74f88a285a712b38b1d99376c0b\nd11b1767a70922edb99f5bb707709184\na4a62998899fcea2fccc89e375e776d6\n39ff99d67fd7eb1f4aaee15c65289469\n8d65e71e5f925fac58dc97820d1d9537\n42b231fa5ac25f7dbac3a27910198725\n6169b7bdb2a76d471ee416ae4351c7b\ne1e43d3916a7e19acb7b0ec95e9a1b02\n2b22712b66d3f1d7fa9286f039319ff7\n59ff0c5e24abf33f25ff9d2d1e4772c3\n9fd0c3cd4a6a4afeb8d88853b13ee149\na85ac77659985978d43bb185feff0470\nfae9667f8fb1217d124c90ae3e698e4f\nd421d54e21e5f9edaf56497f051566ab\n61204e00cd517e4e9d360253182ac1b4\n19e16b7050b25507d43bb185feff0470\n89a5c8583b2e2306af646833cc36618e\n36846ef535bd195efa45f4d7e1ef7d0\ne9fdc6039ab91746580389adc8c1bb70\n84f068d182437e65b7266db39263f546\n2a811e61b3d6ce11c45f65ad2adf422c\n3ca8b397052d4da818336d317bffd215\n56d737fe2e8ec9d81fa5c14a532505cf\nb5aff534c7df4d86f06f0427d3aa3395\n360f8314b77730336edbaba04282b1e3\n27df401605241825fb5c1b0f759e2bc1\n7823da328516db23394e22ae6de2db18\nc7774cf7e0e74fd2194ef2821d9a630e\n6e23faad8bff1e12f7bd077790d66b82\nbfa059271ad449e13cf7a43bad229f6b\n9bf95da67ffa58213a653cb492d78488\n638b5b75b9e7b0c4bb6581a048a6fb18\n407324b2f2b89934b5945297ce426f02\n8cd9afeb654c89b8fb5c1b0f759e2bc1\n973181651497efa3230a4d129580843a\n2428abd6cf67771461cca2fd9af9f2\n4a4387ccf5b0b4a6589c07868201b17e\n4c9c33529e9a555458e51bbf75d8cac6\n21acb1cc84ab5e5040aa5b072f9ee3d1\n5b37d0eaee45e12cea768093544ea6d8\nabfec35b505a92da64c4db7c3b428292\nf6f254a6b02ad5268fc148cf8ab667ca\n7efdd44bf9d6ace13a653cb492d78488\n55518164337571f9ad0854712de182c0\nceee9df336427c427e1ff5b356a80cc6\ne3a1e9f4699dd059d9fa04bac43c622e\n641157eaebb2183ae96eacf8990e6676\n3190d8d6542e51fa4b349e4b3dd5565e\n8ec183fdbf3fb696e1f2a1daf140ac9f\n209b87f6aa188df0bce41980429512ac\nd835a2aa71cfd29dff790997f2048517\nc36fa9da71beb581eab5ee569c9de1b1\nc4f73b23f4fa46364785ea41f043d735\n4929111d16135ccf613792009f64ab4d\n79e07478f6a0a2305ee5dde2964c294c\n5ff5a86fd864ddcaf0e1c0df18936d05\n61403e9bbd37636385076c97ccb96169\nc2be1232f61da4b6e79db68bf2508b3b\nfbf5a7f93f70cfde12b38b1d99376c0b\nce351c4fddddba2a7dd22c0aa3913f0\nc7b9e0958bc8f2ae320f9466abaabfe2\n68b0af57466b5a0d735fa1ab17311ec\n2a525d9178f347ce5ab27081157ad594\n18fdbd5f5448e1eb9556d0a8c8dea494\n89f53c736eabcca966c0c88d96ba938f\n3cd7545839d7c7affc4536f2bcb40d3\nb84b0631fa25958f67ed496709eb9df5\nf02cf5cf3a6c61c7d735fa1ab17311ec\n232a75ecb85c7fef6c70dd7879e7e453\n7c07a31eca316cb83f217b945a063dd2\n2e0fd9303c251ccef02ee453ff283e26\n3da01ac97bf8e71b12b38b1d99376c0b\n1f4f948abd74399572e9add3b9371377\n4e817fcc0fcf1ba0b2d09bc8d348e46b\nf5a1080ff36f7b8c38cddde805fe966f\n268b57eb7dfa94a55eec6d8d24f1fde1\n8a669ef9b92912112b38b1d99376c0b\na8e185dcb791be07ebf69cf03ff6f737\n804342eecbe40a4c79f92df566f8c6b\nb519a23d82f367ffd39cbbc2eb28bad4\n8e40afb2fc5d8b1c91e284193311f752\n377f4054812dec1c9f433921788191f3\n49083d2b9f3e6222bde9b246866ffe11\nfc0cf8eee4c33cbcb53b1ee7df9d3a60\nfc6bb157d603772d81eae2a60736179d\na3c96f18e2aaf2efcdd76170a7089b09\ndb313451e6581570e16974ffd95b0c65\n2ad7a0bc552f1df96b2c8bb96250e4a0\nb8137473d975e1a23111ffeb58c3d257\n333ef51861a0280a561462387555febb\n6c51211b773c51cf683e3750b53385d5\n96013016f3e33bf3e1f2a1daf140ac9f\n1690354ea489c58e493055786e8f9359\nef672b394e09257d719b648239c8e160\n8e461cdfdb0536e1b5666ac9dae008e8\n91729b92eeab3fdb3a653cb492d78488\n2193f3624198ede23f0af1eceae2dd4\n69d0e94a5dc3eeb3fcfb3ae2df2f7efd\nfaf37c99fc99b88ba3e868f66b3e92fb\n8fcd6435e32af3f729454b854b87bde8\n55fe2a8c65c9f24424ee6c77dead162b\ne98b64d14d3fbf40b4b0a5ba224bba06\n152f03b7d3eb03c8276c3d558130f8b4\ne63bbc4b3a28f6fce5f887ddc636e202\n9a1bd54ed9acf1ae73ede6cad0df9fb6\n2d1fee5d2dfc73cd231b1db6fc883f4b\n35f61b951ad15590d2a0074bc2b80d37\ndfc1c3367bba345c45727cc98c29a700\ncac1edcba53ae3d16b2c8bb96250e4a0\ne892f50659fc9f8ad33dc284f29d8394\n42b7e8c381cb392740112771efe22586\n71f31b9a96f1b312ddd7320ddee77bde\nc0e05e56826d5fbc38cddde805fe966f\ne9ee67ab2cccdba5771dea817d9f8136\n190ce4466c6f4c04fa9286f039319ff7\ncb35c8f7c723d041916965fb9c37252a\n79e15b2cae644af4e8d3100f6970279c\n6af8538d532e44237b1f1d03ed22f671\nb28220a981c84b25427e47767269c4b\n67f67bc8e340fb23cdbadd1af48b5cd6\n642e457eeebe04758480c9cd0a5e2175\n5005f42fcdf718e558f55d364b38127b\n9a8186e85c80d89541deee31792586bb\n1a6aab87fdd90323d810dcd63f342aca\nbc3dcabc80b38ab6ba3efb88a329778b\n3d76e67762cacc714b49cd65dfcc3a9a\n584cc870ac0550e87a268987b1e73ce0\n2fe46eacc06b51bfeb8dcf90fc26e10c\nc51600abc4b5736ece58fb8fdf218569\n5cb8be7d0224277b74e18e0e7a19212a\na95a7781d89f271a6ecdf20adf3e54ce\n868aba7b4da060a3683e3750b53385d5\nb87fa4a82de9567af877f04737ced5b5\n7713f61fc0b829f3e196b48bc93a41a\n26744766d59c28fb6b2c8bb96250e4a0\n498b4043ab8a0675e19905e7053d006d\n22bf66e440bdb80c3d7c323cf1653143\nec0706775e0585fe4c82ce83dca284f9\nacc7a95f567e94355ce192ce2ee187bf\n44f2f626a4c73b216314c3b6a3a65519\n29c57a599a25868f57c012eda7b00ebc\n52fccffbaf93c3de71e857afa9df271\n6c56be203155b9d2c3d04f57fc87fcb0\n56b2a58cd5c679b35da6a29f026db97c\nd7da6065a37b9b42bc352a3301e817d3\n99c48010cc0c6405e1f2a1daf140ac9f\n86873de47fac054612b38b1d99376c0b\nc42ca534ab455a778625e5523ac2ce12\n546acfcb08d2af05be90eac69c95aeea\n90859d41f2b4b996cc34b900bb2492e\n59ebbe41c7427a30967ff5ed297c1ff9\n311f3a46111ef5346314c3b6a3a65519\na7da2c6df867c3e91c1943a82a09125f\n69e470b712063a2212b38b1d99376c0b\nc9e48e2db6786fb7c90b07f90175a30e\nf955bfc9ff0d300cbd2411bccc731f79\n7787dec9a3d40aa9c6b36efc015b1017\nd7ac2d2fafd9b9076314c3b6a3a65519\nac1ad4d7ac10f3e1db6f3ca49e992ad8\na5f8af7423a45b293568a24dac4b6dc2\n1655608678a4f9ffbc7bb5239e53ea6f\n607b9d1474c640fb3d7c323cf1653143\n556be45ad32a1f18726ef46500f4c772\n6d026044f6c68821de698295f9180ced\n1ae9c8f100db37692d356a2793fb4d69\nc1d5a68f196d647fb5070c7ac310bcbc\na4d20d766e6bdca4b0659fe8776130e3\n1ad3a8c8c369448c22274f18b3096ea6\n21d6c28c11dfaa72fb5c1b0f759e2bc1\ne998d23c1e691a33a0d2eb90fc1468af\n58f9adb6b5065dd6ad2b8e02a4932f3e\n1c6680f257e5c97498e6e8ec38d9445a\ne5de6a3be440fd1866a9b092716ff368\n1711fdba3382cc39fa9286f039319ff7\n69e884912b10faa880c2e60c312b0f09\n6cd490d9cce62e94d2c901959c439025\n48e24736473ae37f4b349e4b3dd5565e\n1c96532b385e22edd0a6af9bfb470a20\n83859013886286905dca6305fb9f97ca\ne444044f8872e3b9e1f2a1daf140ac9f\nd65e4cc9b69a3ec4691fdeddcb509b59\n18953ef908bc743a5baa05bb713f2498\n5870c596f2359677d3360026d8a2282d\n146529b22d3c510ddf14c6e3e40331e9\n670857f79c4d47c13a6842b1f893c19\nbbdcf803144145e09905a3939c890ad2\n7b1b02b8f71226e4bb9224760a70fece\n8181c6ea706bff129f433921788191f3\n4c883b2d79225a06a5aad165050e534c\nb6cd61c71fba44d512b38b1d99376c0b\n3d8bab78941943f7cfe6670bda9305bc\n8933f22af2576e5b9f433921788191f3\n5ed0e0b4d26a30fbd8990f79240f3290\na33697175cda9f2d742567ca48f0f7e2\n7f9e93c855aec4995e22590d7220b895\nddb85b40a6e44c387a9af63cfe0c0758\ne32501e54d05abf4f1b2b421ee7abb94\nac88c6856c21ab422a79dd7a0c99f28d\n5c646e68fe7981366314c3b6a3a65519\n7f7efcc097dd76ac8c0007e5a8235290\na979bcfe6e057e87696934ac57f77b3f\nba789d3b971e4095e2bb19fbad3e4596\nb0bfc504cf144baf2685de1ac73dc74a\nb2f4f17f6d59c6a53e1cebf83f3f1bdb\nc888076f7b8cb125550a87cda3436d95\n2f2e30fde0c26bb36b2c8bb96250e4a0\n96fef95e1fbb3763276c3d558130f8b4\n6021c3fad833e4e51646f62c9305a389\n37aaff9b0f567ca378d7c0e1adfe122c\n7bde81ebddddd161cba7035647fbacdf\n30a2198addc7de5cedb0c6ac5ecac060\ndc4b75223b732847384cbf852f305630\na4509077129f900932dee48b245ce100\n9278d3daffecc60a8e75bb5638d14ce9\nfe26829c67320001638241f3ad71c10\n4344ea073ad91f7ed87c63d8b3018b58\nfffbe09e4890f8f36314c3b6a3a65519\ne1f94a758b97b728c2ef4561daf0cd46\na4046d9996609d50b8b37cfdf060fff\nb90a8fd2c92f5d26ac0fcae21e22e3fc\nf6e2f5d6b724d8f855f41a702b987e76\n16c510cfb4186a46d44d717fb37058d9\nb7a8d379fa29b41adfb4916f5d51df47\nf53d6eb7baf5a29ec24d00518a3dd6ec\n2315893467e8b5eea50ef3fc203c6ba0\n2f4209998288a4634d0af51460733e47\na8b352220fa53a06a0834a5219dec81f\n8560fbd0b90ff133b96aa5dc23c036c\n2bdaaa66b6a2618b43c62aa3efb9d383\n5b2fc9e582dd7052d957eaf7f4edb205\nbbcaf90d1025714f98ee95803c8422bf\n85c46176f030583bb349bd01da88f0bf\nf70396fbee1bf3f2f2866d10640f3af5\nb1cf5989ae77d71180ac63732535bbcc\nfbff23bb1043116a92cea77f96988ae6\nf5b35e6452c2138de1f2a1daf140ac9f\n98205844a3267ac6423adc2e6f1b28d\n9642b6d77734a1c351cfdb4c9f126c12\n51ab5dcd79ccf3b5ffd7722cc96c6452\n22fd2b354b1d26eb306b3e8b438992c\nc95d2ac372888ef349a3c1009fa79820\n8c43f0fb829887f972cad024c77ecfb1\n377289b4275551e83624215edd93853\n5ce262d2d63b4c56357baa13baa16351\n5e3e2c6779b3bbcf5e22590d7220b895\n3ce5f5a20bae04221fca469af258e053\n65bdbbcd861aa385ac52f5edacff5504\n54fd9a41c1e7b94329d95b93a79ce1ab\n4fd2d1fd9aa1f2e4d3756a4e297a88d0\n1639ae190f0e05196df38a7dd1b448e6\n9ee24e8914555d18d0a6af9bfb470a20\n2ec617c22f8a1c7d96f12bf103d650c8\n2c867f76c95134e6d17373579e6fd9be\na0025e80ada9cf91ae9e1c81f7e5b0b6\ne2d4ef975cbfe84bd9d2bbf707e9704b\ncb9b99a239fa07bb139336f03eb955d2\n73bf687a44580f037f3efc94c2d31dc5\nddca06d91af2db70d735fa1ab17311ec\n8d5c7600f31e45482249915e95f55f08\n68333b503766aeab6171d14862875338\nd0d4e25322d8fd3a1f58b8bbfc791148\n689a9c745c6a776021d9cbc846872d86\nbc74663ae3ef56508f65605792e3e409\n35976b05836b249552c3271e911ffe19\nbf2bf9b61e8eafab30d6a7e7f84a00b3\n9dd91ae86cb9914678cf950c87657866\n52102b24df4b0e09fe75cc28d6fccb4e\n7fc4dd8163f4a67d6327d46d93c637b\nb642c89b7359f0cb66ab132932374f46\n385439035e040c1e9a2ee232a197081e\n2385f3cc7fe8490bd3932d50c4a63aef\nb5afc3eef7f7213250b870543ad6330\nb38371493e6c31ba2e2849ea51389478\nc740e2cadab236e56423adc2e6f1b28d\nc4d201c44ab9b1f3e1f2a1daf140ac9f\n188c3d3b8da2b83c2d4090ebfdad3018\n8a071ea65e9057a1c7c8ce3bef5c2aa9\n9a2d5bc2029c82cc1b7837f7a64e3031\n2b6e43e973ee42ea1080be321101ad10\n7c426a52358e8c1d64c4db7c3b428292\n36299a0fd2aebb5b1cb4c4614a9a037e\n5c64271eb8c09c3a6af1f39296f6a397\n568728cb599dc18880c2e60c312b0f09\n607a6770f3bd10a16b2c8bb96250e4a0\n9e40b56e67c305db74e18e0e7a19212a\n31f4d647d59ecaaa5d0dded52efeb4fd\n5c1d62c9ff844458cac68db180607870\n8f70b211673e64c9c97e9355e94c4f15\nd5e99caa1d8e7c859133e432dd7411d\na51c1dcbed07d1de27be842e82df28b3\n344d200007e2f72e9352b002a7d38daa\n24ba1a3b18e25e46a3a714c763a6fafd\n9e98bccdfb3cedf612db810b4de23290\n479adb86f868044b82771a19d76c960b\nf7cf0e4395996803ed901abec3fdcc06\n72e4b314e45d67bdf371f38ed06fa82a\n76e10c1cb25e814fe7d6f3ee02d4059f\n8d3cc57dc7d9c24ff6099a039722df68\nd747c1f677349e78803b54e9738b20a6\n9280249d5e91334f0864f9e40a51390\nea4247ef739736199f433921788191f3\nb7b3f609d8af14965d0dded52efeb4fd\n2509d876e7521634ad26d867b17d1a48\n8ca120d9501983b312b38b1d99376c0b\nea2d9117c341df9377b7d0d4764c121d\nd7806192d775465cf26216cc0b9f4269\n91d9c29371eb5c091b7837f7a64e3031\n3e4cc718eb6aa9e4559750dd149043e5\n54001db75b6071eca7dd22c0aa3913f0\n32909a78138cab24d4f4334cc3aff513\ned5cba88deccbeb5a0431d1f46615221\nd16ba2810dd8489cfcace4d823343363\n62f99c3f2e7d133131e1c03c914d6f10\n9f42f31d3b81ef232d07d103eb3a7540\nb77b49b9bd84123140385522d1beeb20\n226917d478be80f3542283b6fc64a8f9\n461cf03b41be093d9ee71f8982c8aa68\n78dd4dc65639258cd735fa1ab17311ec\n5de0665cd8e490f47de08b76f60612dd\neca245f9c180e7c71d9b004d9d8d2781\n243a8273104d83b6e1f2a1daf140ac9f\n8f4a280e59ed5fe859360964d7fe1813\n5dcda2b98242d00b55f41a702b987e76\nca2bafb1ba4b97a1683e3750b53385d5\n7d54a0f10b79f06af70f35281ca419ac\ned9225ab8a02b0fd4b349e4b3dd5565e\nb75dc97eb33f6f5f98469ce4eac5b4d0\nfb4969c29b155f2e9c8bfc08f511409b\n5658068646336771cba7035647fbacdf\n4b6647ba7664a03198467494eaaa2f8\n5b9b869475b3af7281112f9b0beb0a14\n19c5068675de48b839264bb933c2348b\n597f7914fa401ce1433d7c8e9cebd7c2\n287f4e9b70b010a29ddd1aa0a00ef579\n1b7f1ca21e6ab9cecc34b900bb2492e\neca3075b0b976054f471dd2a9b3b53b1\naf727bd232a8f1f4c3d83d64958925ad\na159a15c0f0acc22cd8875a52047b4d2\nb7d6f5e0a80f9502d4eec64750f57123\n5395c4dac8e66ab6543fc9b228fa4afd\n2680233498fe409060c049bb6fb2fb09\n42288e57b2436e3512b38b1d99376c0b\n22063ea2a9d53b569628553cade61af2\nf154291136c45c24545c558f9b86cc0e\n90612c4b3a2c6d849d9fecebc5860b6b\n55821f1ee5efcd6280c2e60c312b0f09\n2edfa6fb67b14cbe6659d9c9bcbf8054\n2f2f7819edaa4ab7fb47f041a00e8417\n5b1434e9b907eab76bcddb6c0dc071c3\n2eb7e88f5355630962a5697e98a94be\n48d29b4a2d749776e2e5bc9806debc17\n3c8bf6360e36d51874b27677f8e8f04\n332cc5d5d3484f8920517b73a75a21ed\n3a8526095bae7e553c79ad8cab094d8\n65e3a44a0a13a1bb547046f04c724fd3\n6a7244726ee48fc560238d65d99cb6ca\n3bdae6ac0efbaadb49a3c1009fa79820\nff6e6c1fd1069b92116f3b4758e85d85\n785ec43cb6f1a534e1f2a1daf140ac9f\nfe9777c5bc60bc393554ccf8c30febe7\n55bc5e1223f4868646862032be5afc61\n911535f04299f4a53f732a8d4ec0bf11\n461684f261c66471e3bdba9430565083\nb12faa395027a377f7bd077790d66b82\n469fe5d0ea2bba70650d38f01656985e\n9d80168647f0c0ac9f433921788191f3\n6e2dc15452034791a791c4f82c7b99c6\n3945a1d805dfde6a989c6c7df583f91e\n4a9c2632d6055fed735fa1ab17311ec\n5de8bdd7f586399ee0685d22b2927984\n4faa63f17be98cbf1389e18ca61056d3\n2c2abe6a7d754a95c79f92df566f8c6b\nd8f1721d811dabbffe085ac6ce469d2a\n608c126f0acb73dd7e338aebf530613c\n3e3ee43e001e800a8f06d4785681c4e\nb449f16a0cbad90088be2a30dd556a09\n64e5444076a4f4f53d69fb2c36f9ef2f\nd6ab580443ae008d6a2345809e2bb169\n95cb92425673feac6b2c8bb96250e4a0\n64276d3a962f6093923f5cd444c75b1c\nefd09f6901b098e4eab5ee569c9de1b1\n253bf52d80c11314c7d00c29d97b78a9\n10bcfa94dafb185411617c2f1885cb59\nb3ccd1643cffcabce37934d75f36098d\ne5e7552e8dd1b5e9653fe2b064cca38c\na32acd243e91fb32a59327b8ab7c01fd\n60a861a5b416030a93153dd7e0ee121c\n5da81098c784b512673a614c45f3afe4\n9ed0aa906ffae0c26bcd32c43682e841\n87e23cb3540dfc59c89145ad6791be51\n72405e2f1e4ad22027a9eb2a0bf0d0a9\na8e3b605c0eb659e5f6c4107d78f2cc\ned1e56bac79b13df0e1c0df18936d05\nd68f31ea513d3a5d6a816b111e5f1b47\n4315071df41d5766a7ebb24c1614411d\nbd1711225c6b87332e60a638a5e115e7\ne37b87e001f24db1e55d13d7a8d27c90\nade16e09e79526d487ec12cf5e4563a4\ne0b38e1386eec67624c5b9ac3d3770de\n108c7545e089109c9838402e8211bd73\nf42647b43072abc9c48ca2220df3a9b9\n4ce26b6d23caecb3cc34b900bb2492e\n2d34668468d0b542612389706438d0e5\ne5beb08af46a6b8f6fa28a58edcb926\nac57851b846a48529f433921788191f3\nc9e3dcd6cb94418bfbe54b5d01550\n8a40c59eaf7bc85c322a3e035e31af50\nae1a6e01d2ea5d2cc75e2dd4efaea578\nc0a8c6eca464a1ab9f433921788191f3\n1813aaa9a82a98789c82b3f5ddca589c\n5ca2752062ddaa0e21fa7072ad9ba0ea\n2caebc928dca9f84b205c7feccc0f737\n79f507c3befe69ba2987a7b722c00b7d\n198bf0b56e9235a11afbc27572ea3d1c\nf2b4650a52cca500b4cdad9a5bf52dd5\nc07f9e5e064bd0ef93c9577cd4b35faa\n9e6d1d06ae82ac106f21883e4b04581e\n604d927e4954713fd735fa1ab17311ec\n7b74f5d8a2ad8aec6ba53cbcffbd8494\nad0bdb0b1b0c8077b4cdad9a5bf52dd5\n5de2a57211e47dbd1f56bd5c23e00f1d\n5c59e7cd62f20a8bbb0bf6d0a9fb50c\n9b5a5de7af6ecc4274e18e0e7a19212a\nf26068a05c107a8823c69c7ff0f71040\n291534185aa7328217ae750b40e40d3e\n32706617176faf4a32dee48b245ce100\n1abeb8d7f5dcdaa4e06ed7bb63be5503\n419226b09e44e5bf8c8cac88a8c48208\ned9b7dbc375d3543d0a6af9bfb470a20\n7b0137debf39237d618f190677511085\na8eae38e77cabdbd873aebd175ac6f11\n783e6e45a8b4125b29ac2ce4d16a7d50\n2bc57c73ab84f2c7d14664a287de0fb9\n3d6ea8a01c3330ea8b22dc3851acefdd\n8a0a85f55ffa4a13269c192b79bdefe\n2ad41c44eab88406924d7b1c81f7a0b1\n35818f16eb3540c0bc6e84bc30e573cd\n24386a93c942c7ebad7daa06d33b72e7\nc8b9fc62a220f63fbd6317b3418b592e\nc146b0aa5541bc1fc0f919a9a9f1e7fc\nb7e7192d2b8686fb418bdc8c2bd0fb7c\nc825f86ca0c8550d45e0c3a4b827d51a\nf7f945288a571090202be79d8b285c1e\n7ca37968914be27d82b2a307d22750bd\n18a1fb21c8c1c18f4dbc4096bca262f3\n36d4635979ae79256314c3b6a3a65519\n6a5c090b753cde05b5c25a656ff55929\naf960bb41e705a579a6e43b878d5b335\n17bb6d46e1b07ed789cff8e09537ec10\n3fba044c23facdaefa45f4d7e1ef7d0\n2eea6b3bddd73b1be768fc5ed1ac23d0\nb5c1dcf4ccc0b8aca74fb613494614a8\nc1267e4fcd29c63b60053189e2e21dd\nf0cc8d1741f287fa276c3d558130f8b4\n966fb54dcc7bf00ba3fb48700889ab3a\ne5e273acb04a5687bbb7f70943d3cb52\nc45c9f4ede3246e6a54581b3915c3bcf\nbeb75684ec2f965412b38b1d99376c0b\n1a1c0ae2b0a3cf3c80c2e60c312b0f09\na3896a954602b229d9d2bbf707e9704b\n5fbdc4c221b31d5b93153dd7e0ee121c\ned941e7672a4cdb0bddd549216d19f7a\n36dee5893da238565dca6305fb9f97ca\nc7b8d834209413393110fbb3943dde1e\n2a45063d7d03b865ebeab56de94a5835\nb3bdd86b01306e7b410d23b0a192e911\n67335d8a40daad7a7e60e1bca0143d66\n575ccbbf4be84e3ff85b811e02bb4272\n7537fb364b25e32e999562d1784e5908\n955021cff365f5907ed475464ab76870\n22d742f999dd7823bd2cd7f810561bda\na669193672e033f512b38b1d99376c0b\ne65080fac483ce98f0878b58b4e887bf\nc80a831394e5fd78f0fea2ee98610322\nfa35dafb0a24ed8b2511f68da65f4c4\nc513665dbd0d0606f85b811e02bb4272\n4b5668e651a6a9664a4f87aa9a31cd70\n520ebb92353e7fae6f21883e4b04581e\nffe20b3b5f34fbd0cbc6ff5546f4ec42\n43ea7cdb23aa0e3de1f2a1daf140ac9f\naa03af3233ff0be207c113ba65e29ca\n3d5bdd3fb1f4ac0e12a8e5e6e6618c8e\n5eaad35703c992f71092539e96a339ed\n6ce72fcd06e465a6cbc6ff5546f4ec42\n34ad54857a4dd37e12b38b1d99376c0b\n41a9912bfe0dc96239169e4b52d9f093\n338998b6f6f541c712b38b1d99376c0b\n5a5f7025b960f4bc745f2f3a558dc3f8\nc6567e2f9896825b49352dd33f95cb9e\n2eaed43aa5e4ec8cc24d00518a3dd6ec\nd0062058d4eeaafe494dcb92319db1d8\nde0f9c9b67c5f5a6422f205de59ac7e6\nf7ce17ee88cdec33973c46c285b944d7\ne57483ce26ca69b08f70fa6e7b12c70\n8a95676f5965c580276c3d558130f8b4\n3fccb4301ce84fbc276c3d558130f8b4\nb10748ed5e3e01f99464f279e4e22634\n815a2488eff62e6ce641b9ab504917bf\n77241daf76a045c099d9d900afe054b8\nb34827c2da8ed1e32029d06c0cadaf74\n1ef4b49ad8b4e51f1dc5248baf82e0ba\n661ad35c5c3a908c6d1e04c7ae242f3d\nd35bd51cdc04c103882d915ba9d043ba\n76d55781aaac09f918b61860f81c82f7\nd7bcb405e59d20a112b38b1d99376c0b\n87dfac7fdf6e81bacbc6ff5546f4ec42\n345179cdbb6ac9da4dd752ddde80fb1\n8ba99099a99012c77ec95138ef83ef2f\n94540c8b2d13b48ae09d3d2b183cc5bb\neb71e9847932ddda558fc0121b183f15\n5eed8cd506081459ed6071560148e6eb\nb13c2dec1a1dd7ab9bba8f87a19ff3bd\n1c2fb199540516e2b30eb7cfb209da0e\na0a36ea333e8a39319dde5f6d908cdf5\nd82fecbd0fa3fe757e183a626c555090\nd96e0f2fdcdfc47cf1cb19f636b1c2bd\n9751e6d0a0d6c1919c82b3f5ddca589c\nefb99da78fea81e3534b1adc2aa1709\n22d2782aa73ea40960abd8a115f9899\n823b97177d57e5dd8e0bef156e045efe\n58b926ca85b6ea549a6e43b878d5b335\n350c4bccc1509f83583c7e128cdb4e36\ndf531a3c9ed88efcac074df1dc27122\n2f4d62df133d15ca5874d5106201fb13\n6b06ff0184e3108a4bcc18d4b892312c\nd07b1082474dfc9889172d41dca064d9\ncf72122ff9caadf0622bf4353f4bc7c7\ne92b167233273b73f4085f263b03d26c\n3dc3dd08910169be2e3059b0e19cba0b\n3f9522f1af5597cbf0fea2ee98610322\nccf8ce0be2e03076a49c146495d6b4d5\nbe55b1a477c465226f8c560cfa1fa0c9\n22c33fb33a18b5bfbe250bd311b0c6b8\n6f09a5d74998c8ec49a3c1009fa79820\n25d950a8c7fcf04b57855ed10703bbe0\n2288e5e13ae8aa7192cea77f96988ae6\nadd8dbf5ef758141e63959b7baa1103e\nf6fceaf62bdb85c05e9786b1603f45c8\n577388c27e850a97f0fea2ee98610322\n1af21b8dcda98fa6f3817c125fa377ee\n99957708f69cc13acd0bf1b7ed0a63c9\nc391adc028f6a3df9a6e43b878d5b335\n7d03cdedf8e023728d00a96649d5cda6\nf5ffdd214cfa8edf94c9a8d7fabdfed\n47d871d9a3b5553cff790997f2048517\n2b331127befef5a184727a9a27a761c3\n88b978e04c343d25c11d80527540607\n9a4c69fb30dd08bb5bfb24d81b25af8\n94bc0758fb14e8de104a9760d2a92bd3\n1eb186e0fc2dd979901b177556cd6c33\n908d00034bfb9a8d5d30f6c8adea5674\n3b22c066b7786677b1c46f058c033ec1\nc6e6cf657ba3f2df4376957d2c85a4a\nd8478e58902d241ae1ca70d5205a82b\ne5a481c9c2e1f17516f51ef194451b39\nd91c45e8d51b2ffb12b38b1d99376c0b\n2416892a9f7688b01638241f3ad71c10\n5738a6de833d8da68d4ca42bc1bef451\n630818ee20900d67fe0b9f6d3db7b59f\nb20e2aa33c1a54fba791c4f82c7b99c6\n6a7ee4fa2412e0c48c4d70537b8cc0a9\n3e25cad3c3379be6bbfe0a3a537396d\n70db17ecfddd51183554ccf8c30febe7\n677d8473fe8fb35280c2e60c312b0f09\n267af66d92c1b6b6e6819fcae2e26ad8\nbfd8b5214e4a174d589c07868201b17e\n38cbe2bd51cfb1e47751f287348e54d3\n5370fd7b6529876574e18e0e7a19212a\n16556179cbf2701916b34c3751bc447d\n4c5a984272a922ef94a57adad86ebb52\n1ddc9f25d09da805d957eaf7f4edb205\n4d55fbf2ec19dc227359b134afde902\nae688f34caf5bf7bf1ef0cb5613661a0\na5b6e717194781776559a92f80e3672e\n61796c118778fbddd0bc9224a67ebcda\n6c7dec6bbd8ede62f0e1c0df18936d05\n3151db7f965943ef9bba8f87a19ff3bd\ncf36df80bbcbc74a6f8398adde24f538\neeb8c212c7fbf6871fe7d5784ec6d0eb\nc1b9ec727b9ad093fd0b1d4a6a5da4f7\n6694001fb50d3f1237ff6d90891805e8\nbbc67c7095126f60e3e6e6fc6b79d595\n66c92d4b4cb90639fb5c1b0f759e2bc1\naa21e208420cd4c2202be79d8b285c1e\n56b409a50c8404afc24d00518a3dd6ec\n96023028ba4ec62b65b14b263bdb456e\n56f810f9af40b569fa57ccfa6a55cc4d\n6e91124a4ecaa1a365564d9c2ed3b493\n3fec7abae87ae773560ce90a898cf5fa\nc4efdc79b1132dc6533df38649ea120\ne6017a1e15095b4e6314c3b6a3a65519\n73903a9846293890a1ce1dd4c7e01188\nb5f52968710c4a4de1f2a1daf140ac9f\n280cbd90ba9cfd24fc105e275e6ac8f1\n39b95d373f0ca2de80c2e60c312b0f09\ne6fecb2700247e1dd87c63d8b3018b58\n5febb85000f9df46c2e0257dfc41d300\nc6cd0f7ad931ca7c997b5c86bd7c8962\nd9aea67e3209d6aa1153b2cafc57da88\nca25a955adaa031812b38b1d99376c0b\n30195a2d2fe56a1f6887cd98a5557c7b\nffba44e241dfb481efb47d8e2c9f3b57\nf79014425f660bc4d93d9e447c233c3c\neb11f8abbb974b1d12f1ef17d681ef3c\na5f55a60971922fff3059fae889f5fb2\n19949be9b9eca5c667a4cd2863eb1ca\n636c6b4415df67c5a5aad165050e534c\n2e9dad6c61b3269b1ea15a3c13db250a\n66b3e706e98f22c7324318e511b81a2e\nc5c335bfc5858d11137e0f55e7272392\n1d285f3bc7767bc8b4cdad9a5bf52dd5\nf0b6875689fb72f6feafd6f06fc45258\n263cb889dcad2b6ffcfb3ae2df2f7efd\n60035e734229f5eb19f2faa30e245eec\n29f33014b958d37e6d25219b6c577d3f\nfaffd9098e488836fb6bde4b7e6c6613\n95e3e6cb5f3c8cd39eff3cfd975ea4b3\n294c7c64f92d3b5537c107a0a05e0226\n47a40af2fde212a7b70797b2c89f136a\n99001b28e4fc6bdcfa9984f75a870c1c\nd326ce10d768da152c3271e911ffe19\n1bcf4a290a2fb6d288be2a30dd556a09\n144551f27b55f6d69127cdd763fc899a\n2d4ba3b93ed69bca2bf266a8f0187ce5\n94a724430f78e09bf0e835155cdd677d\n6cff6f4bd6a5d73e8411da876c84603f\n212a96dc292df1bce1f2a1daf140ac9f\ne534d084d3bc37184d0af51460733e47\n378c3f18cf130bace1f2a1daf140ac9f\nbc1d02e51b46cd8f12b38b1d99376c0b\na9af1bb4648a448c8ff23e7e19499284\nc4d31507a1c0f7b7c3972dbee3e8d0f9\n64559ac87f100d517246c79258663695\ncb5e01162787772ff7bd077790d66b82\nfef082ee4cbfecc4a65322353bdd17ff\ne59086e0a9bf161b170efd05fec8727\n3c92069416189d7fc7b525efdf38a3c1\n173dd045c9da9aff6099a039722df68\n1c4361c083f3abe2cc34b900bb2492e\nf6d74e48206fca39a6e43b878d5b335\n17577c2cbdb7c916642f87788fdb63a7\ne4ddaed36daa1742fa9ff575e691c052\n7ad1c8369ecca95ffb5c1b0f759e2bc1\n6e157a5e034eb9f49f433921788191f3\n50fa60269066614e70a30ad089da2cd9\n27803e00894dc087da95b0caa53ebe1c\n37cbf8e368b06b655e43a6efcaa57d09\nc640c5ff1527fde7929ae5eb653afaef\n80b03f350a5de86e3a653cb492d78488\n359ac7f4ddf3e7fbafc7bdb2f8d1ea84\n8f520b668fe5212e9f433921788191f3\n4acda16abeddc1a24d0af51460733e47\n9fc9bed98828febed4713685ae50fa13\n9079c787f6d944d69a6e43b878d5b335\n92164d8660dbb9d278fc07d6c8069b8c\nadef049969b447f87ddef91dabb146f3\n16308b7668753c078080f52bfb02d6bf\n1d4fbefad4abb85790acff7491720d9a\nc8cf9fce86c7bcb3b38e8b1e877a5704\nf172b2748cdd7027d234b3cff759c4bf\n70871551850d47c2823acdd521e722d\n9cf37ec1667dcd3b4d4925687e893b3a\ne0e0041f541a646689ea614fce832f5\n80432cdae538023ef13eed41b64dddca\nbb8ffd0d313c3e33202be79d8b285c1e\n6834350f16324d0527d7c45115828e34\nb632d00231acfc0211b5cadd4563c164\nb6799bf6047f717e7f3efc94c2d31dc5\n61a502275b50f6624a38706cd8ac54a1\n313c2f35e1c461219f433921788191f3\n49a566dd82ea542af026df30a0cc38a9\nb451d4091032fe57aca1893e093d31f3\n170574550b1b5c12fd0c2683cfdf8b6b\nff46f3fdaba78638aa7cb0651220ba4\n82c04946433c4a8f63413b0440eeb6fc\nd64825461795cad2ac2ad609ecafdf83\n5ce2da67625a1415ae42d8f433c1cdc1\n481372303918c2b22c12168d5291219c\n88cb0215d342a49abddd549216d19f7a\n7da59289cc7eddf7c92cdb7e63a33179\n68cf8f5e1bfb9ff8e71e857afa9df271\n13dd392ca784cab79adbbc95db428a81\n9773bf30a8dea97145f791e063652f65\nc61fd3dd6eee6465ccaf38f4d3340ec\n8c769f47d8d5b0c84b681a5f8ea211b6\n51dba7756ad837615e561f212b7229f3\n5a86afb38048ecc6b2c8bb96250e4a0\n1e62da4891f2021d950daf47e5ba3cf\n3d0012e27bf8ff429bddaef1ba7e1752\n92ed31e84e85000beeb5508ef773ccb1\nf6f468a51ccb62669729231d295371f\n5d3a612df6585a90cc34b900bb2492e\ncced6c0c2bd60368b0f24bb611f821a8\n1533494d4139062e9f433921788191f3\n9a8ce31de8d6f549a5aad165050e534c\n563097fac348e6463d476be0564f2b74\n9bd4ef716fa467a6c72189e41b1941d4\n84ad561ea0b15621e33e9d99abaf3052\na14547884e1ab54f48ae8c3efb265806\n204decf8bb9bc9e623c69c7ff0f71040\na413fd3df8c6a915fb5c1b0f759e2bc1\na2015aca6b4268c4dfe6ef2726050c2c\nfdcaebe1ef2f44406f21883e4b04581e\n3efa6bed63249f928bd9de6b28931bb0\na14e353d1bb05f46b785a4ac4a0dbd73\n87652d99be1b6e386d639befe132b2e1\n57287268b594fb3f3a653cb492d78488\n92fe43536b3f6dc1593fee7ac9114e04\n907def283c0727f7143bcc14d754d44d\n5707b3eb79f78b5fb9dd291f5235c28e\n8aff17e0ba5d749f6b2c8bb96250e4a0\n458578892b309b2080c9c53be28cd7ba\na90a070a0603a4fc663e90eaf6b4ca52\nc29bc7b0dcdbc2b9e1f2a1daf140ac9f\nbd23795276854614182f019eac476ad2\nad8abb01ee9066b425c01bf8ef97ff0\n366db4aa9243cbee4d0af51460733e47\nd7d7d990d385ee8a67eb21515c2e5ee3\n9cc7d4e39b1fb17993d988207a39086f\nde5438deca7f9f0712b38b1d99376c0b\n420822a543c50b05230a4d129580843a\n428eadf77b50d6a6cfe6670bda9305bc\nc44f0aa417ed2a77e270f84701afcd4\nd9f1cee28bd9a88c2f2258791e7c116a\n65d6c3cd8c1edfea719b648239c8e160\n93112d8e6d0710e774816c28a6351828\n552e31db6701e0b7381178c6c47f7400\nd33dd32b628e46f1d483df64f44884fa\n1c0d3cbd1bacfa815f8d7780d59bb4ae\nda4294d14502707a82cb4f2e118e48f4\nc4a5c40e5fcd1727a2bf3fdefce3fd4f\nce8a04e433d06b03a0ba30bb56da40fe\n736af7558693f029774a2bc3e125b7e\n7392b5a3e2ff001f13e4e654fcd57d3a\n731b2960620dd7883bb8b3b6d2fcf780\ndf0c9cef42873e71d2888692adb4769e\n62fea07f4f7a6bfc673a614c45f3afe4\ndc9a54a41fbd77314aef47a2c7bc343b\nb8430f8c82e80d4dffc0a401ac49c50\n3b614a18f9c8eecbf0fea2ee98610322\ncaff0ebc560479ced735fa1ab17311ec\n79461905bb97ebc21a77229b9f90bf5\n70928b07af4272df2d07d103eb3a7540\n18b4acd3b0809e6fc14e2939682bc455\n581f03521f0253636d75fedffe6398b3\n766db9eda4efe6aaf7bd077790d66b82\nb9d2e06cd1844f6a6325009a8a12b7e9\na02f13c708f259f97ed475464ab76870\n30c4a2e9a403c9d9d7cad6f9e585deac\n7a1e38f9d85548e256c58b78d29fd8a9\n9397161352dec4498bfbe54b5d01550\nf0acf574b96f9fc3829eee2486bd54c3\ncbcc80e6964f1080b2d09bc8d348e46b\n4e42faa1861597c9f2c612775ea2be4f\n14a3a4e859a9462bb335d40260934189\nc9812d343e4e376c95ff232cd38210b4\nac161c74926a5face378cd9d51dc5be0\ne19e9ab7d858842139336f03eb955d2\nd75ba8d56bf868b75a950bb73f1dbae4\n65aab903355c7abeb4cdad9a5bf52dd5\ne33dc844a5227c3d410e09f4a064836b\n26c60364ecc5858c80c2e60c312b0f09\n58c5409f614e42bbfd88a8f742d6b88f\n739971469c9903eeb6dc6c452bb50aac\nd439acf80dc6e1a9d40e00f72aac160e\n19fb748dbb9a97d3bc6e84bc30e573cd\n61008422050513d987bbc659fe543122\na2f3ad5b5e88482c30ae0c71c8e3e486\nffdcd1ea957aef3dc5e86946f2168706\nce400eea04127631b8611345dfd403f1\n32e4f161682231ceb785a4ac4a0dbd73\nd8c06e41fedbf387e5a528a89590d5ea\ned939aa2573fc0fd3b5abd28a9df8c72\n35f7e2c8a6c9072eb43c84780cf56b88\n9ed34fd8df53c865cccd2ea14d020703\n206d5e32ece7b8878cb55268d473f123\ne4289a32092b3e667f8cba909d4faac5\n4cdfe4029f51c3b16314c3b6a3a65519\n45a756b1fadf20c7dd0a2071dde26395\nbc82cf27b55cdf2ed735fa1ab17311ec\n5b7e127c67c72e72f6ebd7f0952711c3\ncb9255733bf39c58f2dfd8037041a218\n72033b782c4f440ffb5c1b0f759e2bc1\n6e3239e448539dd25c351e299b24e355\n4f0659c5971bcfbead2649d755c19c29\n509f0edd2fd65d5e213f0776ba8707b3\n28f82ff412a37a304c8f375eb1452283\n1c231bd6dfbefeba6bd753a4bc3410c1\nafda81e011c79d183978e5bb605fb72d\n8f48e9f97dc644ca8752becd01cbfbb8\n43aa82d8c71e6ec69f433921788191f3\n60efcea872fa7e52341b8a806253912c\ned1647e209a3f661e1f2a1daf140ac9f\n92a71ab8a9862a5452d6d9553235a14e\nd805bfbfee78282e6b2c8bb96250e4a0\nd442863599da17d951cfdb4c9f126c12\n3a23773469b2bfa8c12463ed30107df0\n3332ad937d4cf220d34156e5a2f990b\nd3795e145d8fb811d735fa1ab17311ec\nd1be6a2cebae5ed7609e2d916fa0da27\n55966a1b272679b256dafdacf26ff875\nc414225a3a0fd0211513ff7357dae269\n3af4f08a6dedbd491703868bb196594b\n45030c1a84e0c23d7ec95138ef83ef2f\n299416940399c3729d05095e3aff5e6c\n49ff48905ac9d95e585eba7ae331fc47\na9c06da447ff8ee6d6d33c92d1d05e93\n44ab011decde6fe4c41bc86ace512f24\nb20d634c826cacc3b1ba4c891c81b80a\nd945ecdf7613bfe0c7da109ecb5068a0\n193e079f24ac1ded1153b2cafc57da88\n608d83aab75edf3c48a76f6e8e0499a6\nfa4cc6689173c57a25975e984b0e050b\nc394a39997adf53d319f02af7c25cd6\n7f219882b778b66c67fd32336d183e10\n13bfc7f0f9fd39f73a6842b1f893c19\nccf770542367f03f276c3d558130f8b4\n369127e85227fe5e218e4ad7111aa13f\n5b466dcb5113a0704aef47a2c7bc343b\nee36a8770c74281b52188a7e683f7f4c\nb0417ea1c8623f189c5408f4f799fe72\nda6a91e6557973ba78dd5400499d0e7a\n57bc575daa1a56109609aa6ba54014c1\n70459a553f42c300f85b811e02bb4272\n4e292f614c51676c6118b98f3fdee6c0\ncc4eccfdaa0aaf25efcbb3a4a9f89cf0\n58d4a585abe57ff59a4b8c8271f09050\n7bfdd659a04c412efa9286f039319ff7\na66887b692d9326b51cfdb4c9f126c12\n580f6487cf149c497504cc74f24f0eee\n97e6439ba7e703dcd7d3985b6fde9645\n5bb16f97c928f6dc4b49cd65dfcc3a9a\n9c8e406a5e198529282dd3b430ec2654\n14fa15f31d713b7153b838b6058a8d95\n3cb82befc3290e36b58435942a1b4dac\ndcc4bb465d403801e1f2a1daf140ac9f\neb39683f67d5d2fcc648677bc9b1d6ad\n8210a8ae16f55c4bfb6bde4b7e6c6613\n1dc15b9574f88cb1fa9286f039319ff7\n4f98bd25bb9e03ef7ec95138ef83ef2f\n65cc9c9436e0b2c8a50ef3fc203c6ba0\n45d3b7dd92a80269da4044967c19cf99\ndb2916f1dbff9d9232967a44e902e4c2\n52a90db915a53200f0478431b5ad57db\ne5cd986f028b4e27b91a90edeb58ed0b\nafa74746fa10939d153a22537579621f\n78eef5df96ad0496e7c0ece95532142d\n179764bc36fa4246fbf44f447f38c175\n9301403c048cc8a3fbd94d73a34fbe80\n2d310466453c3e42fa596c3267b95876\nf32e61f7124ccf327aba5d123c068416\n56bb7870765f37a05ad0ccf97045200\nb13e4eef50c826a2fcf264b62ed090b6\n6ac3f88bb36968ff6797bd93e1caef31\n1037acddbd363ef5782611375da5ea9a\nd81bac8b449807bab7b81b671e901c39\na4ad8e643348a9ff3f217b945a063dd2\nfeeb8220f21521d4b4c6d1a32dc4f554\n105c9e30b6fc033d96e5f13299458076\n2eedf3a4c4eeee20af56497f051566ab\nc18b96da3e1c8a2350780f5a8c844eae\n30270408f4d258d2feaf99d0c6c9094\nc9e4c1b4cdc45601dde078ce46d9fe3a\nce50f2f8034fafe86b2c8bb96250e4a0\ne8df7ab8879ae3f895bcf48dcf4517b8\nc77af288e7c373979905a3939c890ad2\nd7192df213be19cb365a9fccb786f8e4\n76fb0e79e77923de9932cdadec1db39a\n8cdac72ba112e8f6d2c901959c439025\nc92c0ddb2c729589b6dee66cb1bf8e00\n78a0c4ff75258ecf16b34c3751bc447d\n6de1ce73a377df3633faa05410dc119c\n4407c14eb6e7ba83160ce3b5a19029bc\n3860f5c1ebea3de7fc3c7341bf676efa\n9204db8d40b7fcd7fa45f4d7e1ef7d0\n30fcbf2fed0eb241d8569d1a6c25406f\n10439f1f81fbee202be79d8b285c1e\n42291af681d91a6493ceff0200cb9e84\n7e0e797780f6945fc75e2dd4efaea578\ne74ab615b3008320e2bb19fbad3e4596\n38fa7b145b3be7fdb4cdad9a5bf52dd5\n981d2bf1b1b028e46b1aa8d90854daa1\n4e699ed7d6b3e556d3cd5c5355c4e1f6\ne53badb78702d54e15b3bff1113c0f8\n3be7b34984a3e34fde9c2fd0f82cd3a7\n782f3821e6b638d6fb6bde4b7e6c6613\nb9b9eb89bea6ce2fbeef84a1ff2df7f\n85eba152f5c367bdb3bf5cd8f4c141b8\n5c28fd7c3d261e1b3e243aaa4500940e\n897656f468deb1b9e96eacf8990e6676\n582ff2c7307daccbfae4699de9cb91a\n1be1707593a15cf9fa9286f039319ff7\n858975ab8258845f230a4d129580843a\n91fd0f24b4865bcfadfdd35441a4b4ea\n320c462553b4eb18d18f925e78a25ab7\n8c6c169c326e61df67b9bb226efd81df\n262990856b80d83d4382b46c76d2521d\n8cab7fcd543a1d0a74e18e0e7a19212a\n902ca61bd1f216f32511f68da65f4c4\n609bcf41c9d33c04fa9286f039319ff7\n56a8f2d9908cb417609e2d916fa0da27\ne6ffef0550b5b2aa7833354cdb66ee8\n7c53d8e4c566843b1e262ec64ad2c6c7\n468ac0df7f343a67addf8a484a63f540\na20f4c1ff94b9d35127e0873cfaa7b8\nd0987a5b6c5c6118143bcc14d754d44d\nc514a4eb146d84163a04e41b7ea7de8d\n69240d39dfbc47a0d15a5887ec2183c9\n3c10faabf2ff5415ee72fba28fa8d35f\n40267f5d09bb0c422c4683dd00deec1\n425f45023b30fa6ecb88c9db6e396994\n4f4cc3462f0e9dccf13eed41b64dddca\ndf6581f0ce7c00421b00524af022276f\n9e3d8792aba09939855b2b6b2e96290b\n502bcd962340e12838bd5e76f1ee812b\ne6ff26a9ad6f6321ec69d13496bd4a34\n418f388062cce47ab2b92fdc09121c9\n8532101879b57af2fa9286f039319ff7\n5c76d759674869d559db9878902bfe69\nf82762004d55da3d265b6d46c677f2ac\n75066ff8b9740bcccb88c9db6e396994\nab9da6638fe428e87f3efc94c2d31dc5\n54ed1b7f842914285488420adf4edfd0\n62fc2e971d8023e61a6fae073bf19933\nc0ac896c514cd91428a27232df2537e4\nfa811fb70a13c68f95eaa1471ee21cd2\n8fc390879ead5efea0834a5219dec81f\n552243084ecb0eddf500cc506a763c18\n39dae1fb0cd33173d2c901959c439025\n50b8d57468b748c9f471ee8186a0fef3\n75af21a2be51a8df49f0e3dd7767881\ncd6cbd60e8f7cbcbe378cd9d51dc5be0\n5f2b8f1a75a51d90e76598b090652f4a\n7e316474bc8b072fca74c4e4ab012aef\n8a1275efcf36b408488d77a033721bf4\n39219da571e93e9825c70fb1df3f879b\ndcc3914659963636b2c8bb96250e4a0\n457cbd3f2a9a710c11f7dcbb4a32aee5\ne8ceb645b5a82aad8e27654291ea5e0a\n9104e081cb7d92f0fb41747dcf822261\n1e6e823412133e585a5fb2c1a52fc5c\n8f81c50e0b90f961b40a1b2ef5e0c995\nce38b5d04d546346f27eb335b754fdaa\n57dab7fa939cb30d9f703ae3d7bd0308\na12b0328e2b9eb17f084db89eb9085ce\nf9564e57bef8a7446c16036d807ca393\n6eda9bcd1c2f4c8fa33c2b3fad570e45\nfe2e9f0363866aba8868d0641feb1888\nda478adc6169bf2b34cef5923891e520\n93bdf3bb2fe22dff7ec95138ef83ef2f\nc474fa4cf4a4c282f5cbed688a0bb106\n68432645acc0d554def607f4d4140edc\n2ab086ef262c8688d6a71f46c1c1c5da\n9e43b09d2c4115276f21883e4b04581e\n86db029236b5dbafcc34b900bb2492e\n77dbed07aef42a5e3b9e9f1cae8061dd\n84735b7ac61d2ed023c69c7ff0f71040\n27b6d2084f80ef3a7b7f00333604764a\n6d88bd6c04bd5bb01a18bc096aeb4c21\n34eb6b0af5ae9f26d957eaf7f4edb205\nb84fadbc6f41cd0375e4eff9f26b7ac8\n60eccc70ad4f9aed15b3bff1113c0f8\n6e4ed358feb31feb27c767f081f1365a\n938be7a1544953152c3271e911ffe19\n26829f9c5626be049be47ac7c7e37815\n92109df597fb12692511f68da65f4c4\n73695c25b3ec4ae372333100c25acfb3\nde0bb836ad8b5a24fa9286f039319ff7\n30ee49fefc0d62c8f14183c264ad03ef\n5a148f5250c5d987918977c639d98325\n2d81e10114fa77742c242e8cf15917cd\n69765630d57639cdd7166ab41aa5cf74\naad0d20fb05f8fb0cdbadd1af48b5cd6\n2762292f3f5629fe12b38b1d99376c0b\n98572b8a17031500c2c44977d8755d41\na24c70db5fb77268b61fca3643811d06\n816df97057a7df79f47439175208c26\n6dcd7fbe37463ff38d4ca42bc1bef451\n61a0bef6e9c5a01dfa6c79a0c671edcc\ndb97f4931d2da6e53e1271d7bd927006\n3594567f8d54fc9475e036b82df78473\n68ce5805f49f8484a90f0d3f07dcdbc1\nff84eb89a2c7e1b55cd168ffead8840c\n4a20928c1570034d77c52b6e87288e66\nbd7b5781568afa0f46177b6d1ecbf989\n6a62d0d41a2351af7f683793234d478b\ne66332d7d5d35ad1871adec4b4ff0fcb\n68a7652d28ddf2035488420adf4edfd0\ndce3a4c4ce2fa691e777176cf1197154\n9b2cead73808a61a508db6f63303da32\n5a2232cb9dd25917768d4c3a89626da8\n12ad493bc65380df1ec84866750af1e6\n1a2038ee147fc6d434837e2aadd6d77\n365ed0964805ef59f5cbed688a0bb106\n86d90ec4c1e8437dfdf24ee0428a2075\n57972c646e88289b7f9e2c1c83736d47\nfcbfd6863b56c882dda5b2729f8f3c68\n7f5f905397b76cd2304a8d13750ddfa\n7dbf5ff231497ee511f7dcbb4a32aee5\n6fcfd40ef3d8dbc1046a0002e847ad2\n2c0f882d4c5fae8f2bd05e1cf7da8957\nbc135e8d9571775f20b92c47b3d5c1a3\n791efe6841d0995a1d9b004d9d8d2781\nb40a96b48a27dbed8f38658d7fd17ab4\ne4a10d825ba51a1fc648677bc9b1d6ad\n60c856b141ec1e75a5bed5eda256483c\n3925a46f22a5587551f49d4582a8d17\n7bd5d9982d9bde427b34e94db5d1bebb\nafc13a1565e027c5d735fa1ab17311ec\nf54a04aa65598c3cbd32f07d6724eb4\n6f0de5ca4ec2493ba7dd22c0aa3913f0\n705d24724cf1b7fe4fb30f5124687748\n94a7069ee4d637de40aa5b072f9ee3d1\ndebc38fe094476bf2dbf1aa086ad30ea\nc6d573383e36ec052e38f6d9568202c7\n5d667fb09f0ad799c2e0257dfc41d300\nda5d74a592c747e9ef7cbef6334698fc\nda9069b1bef61215716e30105a919115\n3d0b35ba89b8c600efb47d8e2c9f3b57\nd5ee8eeeed055401a3a714c763a6fafd\n486e685875e840dde4b30fdd654658ce\nf90191dfe0bce3ad49f0e3dd7767881\n98fe43e81b9e1b5ed8569d1a6c25406f\n5f2f4771bf59c3a32edc45348090e195\n501312760a03072cd9deb3f829cc2475\nb68218340f090e03519f927f2bf92da9\n97a75366f7c6ef24b8d6e958e0707d71\nb76f3783324a5f7b3018d2d3c13a7462\nd72ea947f961b2bc589c07868201b17e\n680162d9443e8a408e62f59b444d701a\n69237e82dd3f7d3f8a5e49d8f4867e8f\n4081d740a9bbdc7eb5e784742c8f0ee\naad61c4d490d4a8b6dbd8278fbb6bf38\n439fd95bcbf861f572cad024c77ecfb1\ne4c32f0b48b6c4aa31fddac73d878514\n27fc4679ae16edc887ecee1779f8c08\n326eb76ab05669c55e9786b1603f45c8\ne69cc1d337df7c83cc34b900bb2492e\nb8828cd2b6bba8989091900cc7eb1968\nf646b2bad0332c0a52a927716d03931f\nc54be9902d947a1ef6fb0164eb28c4c2\n5ecb203a4b00b9a5a6d1f73319179578\n82c3357fcd007893d17373579e6fd9be\nd77515679ddbcd9c8064e4301e947b0d\n8d1cddda904b6f363a842af7a220e7d\n7744efae453f26c05e9263096a26104d\n2689d78a4fba15bbf3998727b15249db\n935645a83387dd25719c27787d6741f\nf06a233c12b64a0ffa9286f039319ff7\n6e10893742a5add1139336f03eb955d2\n5004ff6a719d0c16c52533855abed4c\n40ad008d081e3d40fa9286f039319ff7\nb4ad3d030491a7768aa7cb0651220ba4\naf06013159ad2e45cc34b900bb2492e\n57d7f154da3864e951dc50bfb39cd6f5\nd109693d2d43e65b6ed5eb4c1d0d366c\nd8e64f106fc611c186029a2be51c0321\n69252c7838ace59f8aa7cb0651220ba4\n934fabb18c71373f1326f2506129299b\nab1bf0d24526c51db524fe86a5d055d2\n73e0ab2e1d0ea752bc6e84bc30e573cd\n2e3256b3de213e7ad87c63d8b3018b58\nc836ef9c895460ae9e4b997bcf5c860\nc42fe5b663661e1b4b004f8ab4aaf710\nbb7474cb9310e33aa7dd22c0aa3913f0\nf373746d1ef6fb5da4dd752ddde80fb1\n8fb14c7aad8e829bc6e84bc30e573cd\n62586a8eabb2a67a609e2d916fa0da27\n4125cf5a6e85244f2bf266a8f0187ce5\n1c4ffc878b001a097e270f84701afcd4\n85cd554c3681ba40a24fe41bd648bb1b\nd47fb169bef4420bc4e8ec0d6d668411\n59997a310b8fb3c9c1cc3f503d10007e\ndffd6f18fbc4f7ec4bd9916dfc5dd6c7\n99a1608f8e848bf6519f927f2bf92da9\n3360456861b9f22020a8bc477aad122c\nb8ccd8d1b693e4fb11f7dcbb4a32aee5\n418439dbd9a2e674a81ccece899902be\n8c151b8df929ec9616cf8b1cd2155e02\n8c7f0954c7bde4edc8a5aac636aa172\n7ee51d04734c82198ca4596df3cbf136\nc82214579ed998e06bb9681d4604e123\n18271afb4b31686bb53dcfbf8e62caa2\nf297de88033168facb88c9db6e396994\nc7fc0b36bbaee6382bf26da672b84220\n866fc73e306a47a1f246f64ee1a24a70\ne502392ba0ba05ac683e3750b53385d5\nf4239f72396f4170e80f8461d134c14f\n4adfca873edc6ad8566f788c330079dc\ne6b01d0349c34a4b9d40dc50674e6347\nc37c062ab5ecca2ef3998727b15249db\ne91264640374a2716a0207b46ab78ca6\nae221dbffaa89b3264279e248bd2a91\n477f00b10a859851abefc916dc2adb50\na982e9bcf097e0e595ff232cd38210b4\nea9ee0992bdcad77e641d7676ac20451\n1196978aaae2ab55537a44a51980defe\nd9eede71f6941a7c766069834b8696c7\n3babca331dad56aa1b3a159059d827bf\n553b06cd4354c8ab1c15dec0da4e4dfa\n425279eb4cbd51a48bfbe54b5d01550\n62d97682c57a0a14758f3dd6623cbf27\n98ea642f1f50b9686b9603fc5970ab91\n7fa43df6d88d2391e103b85ae3ac182e\n8ab72b47faa4d2d4b524fe86a5d055d2\na4d4e316f6511990309d43c07397e2bf\ne03a316409096ecb625f0699ec733ab7\nb094f9184c3098a781fbd53a4fc6b7f8\n74e930c54ddaf8add34ad43a472bf958\n1030525f8d49753e519f927f2bf92da9\n945564d4497f3a0398838fdf70b3e60\nfcb3636dd82e1c37741da1d923dd6a96\n1a68ec72239a781627f279690428499f\n4edbccf034f4ab241c3656c6593bed66\nd31008f7c9b5d67678fc07d6c8069b8c\n152f598b96676178519f927f2bf92da9\nd91e08ed981156717a362e61d329c7ed\n51a8def44b1e4f40e8e10eefab4b2a63\n5f356bfdcf9cd4218d4ca42bc1bef451\na4051a1e8a1b78003940cfb719120315\nc3d75ea41abecf51519f927f2bf92da9\neae96ddf483e896c805d3d8e378d155e\n455a8f48d4b305bdc70a7659d08b7b72\n36d72181bce0939c49f0e3dd7767881\nd601235af9b5e93e49f0e3dd7767881\n28d70dbbc48193e0a39dc4a567ce225f\n5ca0dccd8b0f6357d1987c07c912c6e1\n9c4ba5d99727de4f737477c115ad5b33\n84a95f9216f5c3255d3426ee101e9f8e\n76fbf623256644116c830d654bd05bb9\n322a9fd05f1f68b4dc99cc00991f7287\n3240b627007008146a2345809e2bb169\n91156c525c67581f0cadf545f40c8f9\n45c8f8e154fe9642220da6190e4d5a0b\n2391fdcf2158aebf9c27f9a5387b5fc\n6f652f3940aa986e3e243aaa4500940e\n2d5208bb08d89bf9a3e2fa8a8e389f2\n4e0cf21c4e7e1eb58c7ca3bb219438a1\n10e60e0eb0d7915c8de11d571206924\ndea853cf0b776f7dbc6e84bc30e573cd\n6fafe3b82e6e07de460c5cf20e4c5e41\na3d111fe5fab82a54aef47a2c7bc343b\nb4f358642d91251d26acd17789ec9c7b\n76377dc3d6b1dad2c0aaedf10d776af7\nd3fa347a5df7d6207969ab08647690bc\n5076565550186d3a1f23c99243882ce8\n403195be81485468d10b86bd6e8bbc34\nf21a0e54ed515d344110c565e849308e\nabcfbaaa409d62001d263b1fb57ddbcf\nfb6e8e453293303a4721599ec64bb469\n4c31d19625e911e1f8edafa0d47e47db\ncbe8debb3fa41f716e96d446ae30c673\nfa4dfabf8e55704532967a44e902e4c2\n31da90b91370ff74f30ef438bb75825\n8cff6a796ea47a9cfef144202cb2b935\nf0236f202fe3588a8d4ca42bc1bef451\nd1044b04ea67ab2d3e10bd7b040a4312\n5f3487876c91c0b5ddd7320ddee77bde\ncb842e500cebf07a87856c3f95c33cd0\n72b28bc54158f0d512b38b1d99376c0b\n194a4d0bcc1443fffcfd5149a4a15414\nb0bff9f866c3d101af25bbd7d4e31ad\n1205174a90e130bf595b6fcb838bee85\n54b68b9a4c40e86b3da3f9c40ebeed54\naf0bf9c4b6397877cb88c9db6e396994\nd08bf745e6f7e4b14aef47a2c7bc343b\n8b5cb45c763602a73a70335e147b440b\nd400c42c4c4b3ec1589c07868201b17e\na84652cb6886d873643ae903098a314\ne639996b832a157e6e0c9892807c7fa1\n6cf8bb50d1a8f0d7663e90eaf6b4ca52\nb72ed7c7239e7bfd8e62f59b444d701a\na4d66892876b5e0cb5acf79024643c18\n8a8f66b04e6d8f4ca9e925ec046bd20c\ndf2cec0219c10e0ddae3730658b53fef\nfb11e17c9dd72d6851cfdb4c9f126c12\n6f447ae319cb3f8c95822127460cc765\n2d0eeaae7231064af4de29b99f103946\na573925ea3002ef5878dfef973fade71\n3a3c0edd93ed40d35a39b667673bce58\ne1ba58d83c23c6d1fd4f49e0598b199b\n5162b8d6add4dcd7f0fea2ee98610322\nc26b3833f66cf4691756b5d674acc4e5\nc6bea91c2b9ac3245127e0873cfaa7b8\n2b1fdf919d42a55828b12a43019163ae\nff7afbe21c3c9408a2e534aa19c114b0\ne0513d1ceaac23ad341b8a806253912c\ne325afe389a39f49e641d7676ac20451\nfd927e1258969e1ada4044967c19cf99\nae53ea0e6011cdbde2bb19fbad3e4596\nc7e84421af16e48eadfdd35441a4b4ea\n569416cd964e365e20152153c3a56171\n89c1d5cf1ceb8a81c8b8e03401520eba\ne40227f3cfb50588ed6e4dd9aa9b9ab0\n698623ed6f1fb3076b2c8bb96250e4a0\nfe21904b4e1548ba5bd1f946b0dbc061\nedcbf89b4491941b9905a3939c890ad2\n9b0867286d296d3934057837e526fb02\nf06f841de5e202e5a50ef3fc203c6ba0\nfb36203aa01524aaca3e540900266737\n6acc9c34a79f98d0ff790997f2048517\n4d4fdcb113d7ed643a6842b1f893c19\nc7e59e374c2cbb7ed33646b0990bb4a\ne0b23c80cbe3a2d8fd8c7a1bf5db0aeb\n8be6c2867bbd8d27143bcc14d754d44d\n5b99c77733a74f36b74ae5e50aa93037\n175ac778b726ef5d48cb5e52f6edec2b\n3977db3c5730fc7216cf8b1cd2155e02\nc3065c23eea6a998547046f04c724fd3\n4bd456ea9809a296c60369962d1bf5\n5835fd744208d5c9e6f7dedb7e5f584\n8e27088dc71b89f9faea005b8f19889\ne53f8481983564828ef0c1f0d9cc8b8\nfb38cf43741e1189396ce275998d65f5\n5c463ee11ad412ffc75e2dd4efaea578\n59159483028516c55de49355f870af76\n26bf4f71d7c24af87ec95138ef83ef2f\n3e5711b79fd4876a4ef2a27f51a6e36c\n96c96b2569853438663e90eaf6b4ca52\n154c779086865eafe906ff5bb78d7b1\n792adfe42bcc28b36b12c93c965d90bf\n691880ea91ab76abde423072102e0bc5\n67c285f5c701d6cd8ea092ebe8f64ae8\n5019d7c3b413a57012b38b1d99376c0b\nf267ad7ff7c3a5dd763221be209af140\n8b1b66ae9e416cb13b5076da3c7eba98\n2ad5e27d42573768adfdd35441a4b4ea\nbb3f4468dc88370c9caab46c14deb892\n1aa5498ac780331f782611375da5ea9a\n5eb64afe7a276c243a653cb492d78488\n6655be7932b8b984c04419d9f4e18d0d\n50e559a32e81e8a9cc57882dfaef8a57\n926ced4104fb5d572f63bc22c4d8bf9\nf6b9cfaabbcfbc494298740d1f3c17c\na2b803e958f8b80b8903bced1c63244f\nee5aede335490e0f76b7c600f9352862\n76eabf417f880fbaf0cefc099c5b436c\n181d88c9e36d9ab88aa7cb0651220ba4\ne574eb37ea6ee685e1f2a1daf140ac9f\n3eb4bf4ca864e428ce168de955fd5025\nb942751009dacded735fa1ab17311ec\n12ccacc72630c2a4c4a6c34a09e62a92\nf31b23b6dd65d8ed8edead259832feba\ne9cd2397c0a7ea86341aafe10fd0cbd4\n42b44473503d82101c7be7f1ec012899\n621502aa0a01864d20ded1536778b0f\ne24570b7293756b7cc34b900bb2492e\n6e127603e720af7855731e75c389c9d\n30d7d9f98893cfd62511f68da65f4c4\n3be0bc4b1169ca4959db9878902bfe69\nf71fd8ebea347bfa3ed1dc72750c6f75\n4c727a571a5226549a6e43b878d5b335\n1939215162425a252bf06c32262648ff\n8aeacdb5884311663716c1574460b140\n28f2da42122d400d9d5d6d3d4bb65831\nb3bc8adb8349c958de423072102e0bc5\n60cd2f3d326475e829c6b4b73d88655\n60fdb51a9cc4011289172d41dca064d9\nb52e26101ea750dfd1f50c75142faa8a\n3238588ed960920c400c7ace1cfd742a\nb012c9d123aa8064ace721126020c1a3\n64021a29f7245e0fefdff89bf9a96890\n5341d156f8af28966a52e97955091b6d\nd83e4e5a7957117be6e1d9f65d65c2b6\nb7e25fa0ff4920f28f5b599a9e7928c1\ndbe471b64f9d8647e35dc3ced109600e\nd04048099296ffe4dd084a7dcd1680de\n5a64d7b0677ea932d08e423afb7a8cd2\n163101758687bfdf30d6a7e7f84a00b3\n6fa6eb2479a09474d87c63d8b3018b58\n989b655cb51914dde423072102e0bc5\n2254c238167dd6a5672ed1a3426b68fa\nfd95cf27de958d85827b7030399884a4\n39ad36394c9b7267e2043871148f79a\n604f91e5b306393fa884e15a61a5f4a2\ne88c326a1c2a570fe2bb19fbad3e4596\nf55544d331eb019a1aca20a2bd5ca645\n49fb34153b09db8dff790997f2048517\n81ba8d540499dd04834bde3f2f2e7c0c\n4defda42f01b1345119486cb086a6c5c\n5105e493bcf5e63f75a82b88fe6e733f\n7cb94f3b4bda0dd9783a7c2adc432e76\nee7d9264ce8c77d79d9900c00629c24\n2229f60c2819cccda50ef3fc203c6ba0\n83e29d672713f0da270e90bcf29dbfc9\n83a6f7a02470263ce71e857afa9df271\n41c55010eb7ab373a4dd752ddde80fb1\ned5e68fcb3a7be0c886fe00dcdc18c8a\n7eeeec55dc10e1bcfa9286f039319ff7\n8325595fddab7e47dbf42f7773eadf2d\ne6ef0c7bb7c73e4bad4c449f974dc221\n1a8c91b4803b3470f9c75ffd2648d7cd\na58beed0a033875567a4cd2863eb1ca\n4fbeedb2f1f43293b95520b5e9aadee8\ncbac383f55b031eefe3324230bd9365d\nac25513a060b0ca3cc20f30a7355a75c\nd03318b031d2105b5bd5996a1713323f\n7d2adefb8872fb564d73c4d754d3623a\n7a79d63c2cf6df519f605c8c86eb1ec2\n47879a6571648aaf5a5d51f7f565712e\n59aee3729d8ae9a6a8304814541fbf2c\ne0824487f2bc4502e9acddb06da3928e\nc9b36427b66414de42ca7cc070f21ed3\n3907ed2cfe0cbd22853c6f214c15e60f\n5df501ece93bd3f522e2c8abc98c5f41\nda421715af11fdb4beac07ad11d3663a\n639b18f1cbf26228e666ec68139b7ff7\n5190f781a1fa9b9a733a41fc18f7f056\nfa9f56b25119ab802ca888e33c9ff27c\nb548a4e02e014405de423072102e0bc5\nca012a47cf5efca23f9d84f9a87a44e4\naf6601f4d67d85e9422881265f219fa6\na467801481b450b8cc34b900bb2492e\n93743b9b3e33a272531756272f07b3a3\nf1938c5ed63aaa7c91c108af8af49f8f\n5e7afb318ff701583018d2d3c13a7462\nb3ea2d0331ec9ec650544cd7fa263944\n897e6a6307da50906314c3b6a3a65519\naa858f23b682f5616314c3b6a3a65519\n18598beeeedb20729a6e43b878d5b335\nc8b20ee08253136b77b7d0d4764c121d\n18e5827d2cfafd05d735fa1ab17311ec\n52486aec2292ddd48f0d3a3dadaf3299\nc8889a93245d305518c3adaf57b2e1d8\n2ed25f939dd286cbf4c4f1f541cfa2a7\n2f86138fadf4e2f5af56497f051566ab\nbc187370b495d54b4c82ce83dca284f9\nfbba8fc424ed0ad6f8edafa0d47e47db\n937f3a803767480efb6bde4b7e6c6613\n36392e6edec3c8b59aa300fabdebe6be\n9c3f797d9b352d35669d741f4ab14065\n154d2a83fc91d473d735fa1ab17311ec\n77ef2da2754d6b82fa0021572e849910\nbb46900b4f00ca7292659aea259f7c91\n7bd6db14ec6c37efeac2c9f41d1276bf\ne479b8f33a323147f0eab8a2ebef8e89\n2d203e283c13fd16494585aaf374e961\n7b6a6e33903b1639a5772249c0d44247\n94d526e75ba18f3326243ac6fb5d9ad9\ne4bbdf84d07fc208703494a0657c2b45\n281790c93c1f8876972d2a72136fdc80\n1ab4e79889c1288995f22290198b089\n32d410088758f9bb89dcfda443251892\nafab3cfa9a8ad5f55dec35fda9dd6781\nf0bf5f36ac0cbb2b1a77229b9f90bf5\n7e225da92fcfb868eac137faa8adc92a\n681e871906643ac4f9a24531fe7127c2\n55b86089f042d17f81d2fc3f6a98fa93\n6e1572214d2606dbcf7516eda265328a\ne54b7a716399aa646a29c14eca4d216a\nfd2435673c53179dd1a62290a53cce98\nf53a4093fb00a490683e3750b53385d5\nf730043e6a9843befe2133a365e39c7\ne85f80f7fe4c8f3266597c7d470782b4\n10cc9af8877d795c93c9577cd4b35faa\n45272a2a7c41e0095c97ca64716dc6d5\n94510c7e5c40166d1fabf3cbd0fc77bc\nfe286de2443835694aa96bdf46776318\n98f15a80dc5ea719d0a6af9bfb470a20\n48d5a68d2228359fd735fa1ab17311ec\n92431d034edd34c760c81723f0d4ce20\n47a5a10a047f2c2582950cbf0fcd4d4f\nf130c222ff91520182c15a8613f6374a\n7da8e9ece43c210e44b4519fba3aa36\n89f4f2458aa64d94daf2e4c786df29a1\ne06992f45548f0416b34c3751bc447d\n6d751616e0ca4ca0aab32791f5a03201\n5bb02bd49d2ce6e590b94f57d8818348\nbefe2c697ac907f5410d23b0a192e911\n164fc79c2ecf843bc8e292146f3d4d52\n2eb8897f028d20bda27aa199c0989017\n59ac1042dbfeb36e51cfdb4c9f126c12\nf36f38edfbde85c73a04e41b7ea7de8d\ne9fd75b68e06c18cb056c98b2e5e5e4e\n667772e778d69333e2365746e867db8b\n5b70d54d7f40fd8e5c413e9fcbe8ea71\n35af9072a2ac0c485ab5fe67efb19452\n9548b43e0f416e3a4a4f87aa9a31cd70\n1a289f162d63c0fa8dba2b86f956c537\n981b30a44557ae28caf05f9cece7ada5\nddc90b69e90b208580c2e60c312b0f09\n71b79bf11ce7ac96b839c45792f79dd9\n9301e31bfb2f8f8d88be2a30dd556a09\n7edd1e50920e559e0befc0b4697d414\n75bf3b1cfba045819e172a9318b5b7f3\n34e8142e7b3cb229d735fa1ab17311ec\ne8a019a32c42bca7bc6e84bc30e573cd\n78a1e4efeac9bb6f55d33831e71fa52\n5fde8eee79ab6885f0c705d37665dc32\n9ebdd77ce251d68626243ac6fb5d9ad9\nf1f780b6afd284d0764c65bdf1040995\ncd157c59d1caa30b1d9b004d9d8d2781\nbca09e37935082a925ff9d2d1e4772c3\nde637cf64b212f4061b28e02a259d647\n144f38700549b35b31f639996cb3d35d\n82c56ec37b153eaf97ad4936ef9fbcdc\ne35192fa08101d5db257aa9856dac07f\nc7f8678e3ea91a99de50356926b60476\n277fd403270ca32b72e5d9d5746d6da7\nf5522cbc96faae02cfbc7d85a5791e93\na15d5a9816ba40bb76d500a9282a3dab\nbeb9c8ac912c770bd5e0e036a4082b58\n285854c90afd66c4c9e18dbb8de06b45\n74b14a0da86ff0b6e1f2a1daf140ac9f\n218c020fa843aafc99f5e7ab39748cd2\n9718f974dbf0c599f0e835155cdd677d\n8f268f9f187292f1179177d1cafed62b\n255b002258e74085d735fa1ab17311ec\n74b965dee85e951a818accd7207190a0\nf5cfa769619f708bda733a39f84326d\n20ba04acfb3a2df63fa974f1d1a1ac62\n8145a8a2b974f4df8ae8d8f46e8d6c0\nb3e73818cd2e03c080149f7d680e9c1a\n57c6c69a1406e9be21d9cbc846872d86\nfbee616945eba3a3dde107ed8a50fb4a\nf8af5b4ded94bfcb9905a3939c890ad2\n87a868bd1d4cbbfbff56a19447480f3\nbad9e6cf69ec4553db181f2efd806577\n1e57dbf3e917e55c25ef5089f95ac09e\n8caf6dcbdebba2221326f2506129299b\n2832026da7b9c61ee1f2a1daf140ac9f\n28444490d359fe49cb833b31b53d151\n63c944adedf86b80f8915bea3ae2769f\n347cee581e94fbe5d735fa1ab17311ec\n963506132e08855de5cf42144086d22a\ne57dab2d63693b0280c2e60c312b0f09\n511dbae3805dad80ab5938f464bbb85a\nb017d865b68cd1adb4cdad9a5bf52dd5\na4888af5b6c4c631cb239ba7670e0fec\ne48d07c71fac7387870906b5178d97bd\n39bfd3455413996df8f666ba0e601ac\nb6feb20b14f9519ef933a612bb11b1b8\n421da608bba18bf2688fc2fc0a14edd5\n8588b43940114af7eab5ee569c9de1b1\n6bf8c32f62fb38bce1f2a1daf140ac9f\n1d9d85fdf5241ec31dfb190851825aa0\ne1fd9153928081d93b80701afa3beec5\n6a283eba0e45bc63525c1baee1f19994\n1d69667fdee51c20e6fe695987d47043\nf30464cf9aef3abea7f9996575f1f5f7\ncb52cb876bb3ec76aca1893e093d31f3\nc0d928c692fd95b547f0c66d8dcbd422\n6072a9dbefe5fb3ab397b12318e6683\n5f0cb03ebd45ee7d735fa1ab17311ec\n3474d85a58796c7a935777dcb8deec2d\n6e700588bfb6de35f30e6249e336e80f\n9168d4697d83cb9215bec5c0df04f3\nf80ec2ac6f6e851bca7250d90eb506cf\n513ba432b16287f5baf4b37340b9dde\n6c82de0208ed0f551ff1879fbc41d0b\n574e6f325fc821ad6314c3b6a3a65519\n27257aee4b0f91b1a16c70da5e24216f\nfb96b1414205d7b525c70fb1df3f879b\ne93954daf5406e15e564d15be4778337\n2f9d017b565a274f2a1ecc02c3ced6bc\n19035d7059eaa5b1a27aa199c0989017\n33d90fc45cfadd54cc273c614d275d95\n700b82751c12e8ea3745d03a006445d\n5376c38ea63848d643b0dda994f793ec\n192309e06577f893bb4594cb67b6eaa3\n1fa2cbd03c1d57829f7e0a8a6309376\n27fc3208942d136b92cea77f96988ae6\n58f98b4bc889c7f580b72a37a25b7e72\n23a5887211380b2f663e90eaf6b4ca52\n4e007e41bad1b1cd735fa1ab17311ec\naded0c6beed6938ba39dc4a567ce225f\n73dc8568cca29c0f7bffd97a22e78e2a\nefe36ad683de3640a5aad165050e534c\n48620fb309184d4bc5e86946f2168706\n5d2c6ca737f9accf683e3750b53385d5\nb6b6d7cbe981d57276c3d558130f8b4\ne6fb0c7f8a5f944363e66191800dfc8a\n216637165f69a2b5be0132953bc535f3\nff3425cf1860b6116314c3b6a3a65519\nb3f0d3a6734e040be658483f9f1a085\n2165d568388bfe649a6e43b878d5b335\n1f01ba0f7e0948f56108ae6b1ec0f04e\nca8c360dd014910ccc34b900bb2492e\nf4775027ca39270897ddede15c51e64e\n54ea995ca2645fe0f4c4f1f541cfa2a7\n7eaed6f53420b4ca51cfdb4c9f126c12\n82ed6ca9d8f6e80ba46487e924d32c5c\n2f5dd43b4ffd7d433dd48eebe8f7b24\n9e6ba8035db3ead6cc34b900bb2492e\nf97e307455ce56a734e7e0c760ac1c0\n13ff0ba1e8d79a927f71da36e5c530dc\n91b0c8975ce241d69557371cff545901\n4bf3fd740498b489a7d276ed256acd94\ndbcad8c956d195a149a3c1009fa79820\ne8bce069e560a97f310bbd45bf9024da\n121ef8a289b232a73c5eae1befdca7aa\n59b69d23c7a2f9568f12efb4f632da7\n36083138334c7981d735fa1ab17311ec\n78c7c7037e2ac7a7e0490a4a721b5273\ncfd06e58d354213c8f2a8ddb5c970b6\n951b61886488dd94d0b636a2d5e450e4\n508230aada88eb0a550a87cda3436d95\n173476ce3541392d735fa1ab17311ec\n38c4d7fda771b9b984593c54486394e3\n4106793af469db6bf0fea2ee98610322\ndda8e93517cb8c0ac9e18dbb8de06b45\ncc353b464c22be528ae80165ba928e0c\ne6887514f6d28e446314c3b6a3a65519\n409306cbe659e516bfd79d2627fd465c\n4301f958c305ddfda1b7cf86a93141b4\n6b14119033dccaa5d735fa1ab17311ec\n305a895b0b06808b9d5aeb7097eddbda\n3919b70a16c630f9d735fa1ab17311ec\na759e6ddc0378dacfdb02ff6a9949154\n8369cd1bf3c6f377504cc74f24f0eee\nc57c4311f1f23690603b56d612737c9c\n6f09b74771f8b4808962281585efe24e\na2b9d8c5357fc0aebc6dd9ba5ebd71f\nc1e4e78ba2b714175814fafedc6971c7\n3b8a22fe5666ec993bb35aa9d5fb636b\n149adc06e4b1404940232a3c75f1f92a\n34d2582f7fc79e07a5fc2a01ff709b89\n84b0027c1568c9c3694547efe15425bd\n487ef6821e82c9548839ade0cf1fb995\nd761053ffff137701d9b004d9d8d2781\n6f86a5fd7d3a52dad735fa1ab17311ec\nc253c204b55470eaf4e90b82ab227094\n1632f8ce3254cfccc8c51c73cb7275ed\n30d2c5e8e703abe3f6503cf22f39c9c4\n199c603cb0ba88899ac559af07c55afa\nefd891428cb699e78dd4952817969d63\nd05f6ac929eb1019f5cbed688a0bb106\n81593386d69131c5228625d43be3e606\nf16eab54ab97a97c8cb82d02bad057b9\n7fe56b2c6ee7d118994714b2bc8b41cf\nc497e1a1ef3515f197e3ac788f68f6\n2348490cb8fae973b6792578a0d9ae89\n1fd98fb84317ae248cb94bbc7f05ffb7\n78e2a75ff1d93138e8914057d776d90b\n3ed4ce6dee76fc90180d8ddbbbd9bd3b\n27156455bd418715a50ef3fc203c6ba0\ne9adfa95465f806b056c98b2e5e5e4e\n166508e16d31488a6a34aa94ca8a3355\n4dff14f1635e9abeb1e00d60b0f9cc70\n5f8daf709c9d4edfd3b936925082270f\n8b0710069d95b4563a411ca33a218449\nf499b088e48914256f260fa9465b564b\na2570eec88282cb3d8569d1a6c25406f\n8036d88d38432a11ff18bc1311316304\nca13a3342c397d68952d52701459b1f0\n4edb165109339c63cc4d8251423f62a2\nd980e47a5890b42e296e0e62674e2efb\ne01eee98a8d18a29a2d71a426315b93\n3592149d9f069cff276c3d558130f8b4\n7d0b9246a180c59785c111973dec28b\n354d382fe282ff567ce76669ca87ee34\n46b29fe9796be46497ca877cfb285ed8\n156fbb9dc2645686a3daeaea95a3adc4\n4a0f1b426cea6f13fb41747dcf822261\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/04256520_test.lst",
    "content": "3b8f2b955ee9a904b3c42e318f3affc\n3a98a93f381ff5fb4b3c42e318f3affc\n9d5461070e008c453bdc60e3df3aace8\na7f45bd27efe50af4dbf8d635749f669\nf2edaaa8bef11dedbac8a2db6cabda6a\nc9fb9cb259692ec0f7248d9dbed7a7b8\neaec2a137b0858aa599dcc439b161a52\nf9429d6bef2df25e4dbf8d635749f669\nfe602b7929307607e59b39f8355b80d\n1fde48d83065ef5877a929f61fea4d0\ncb61e530b7c20409512941e37c7d7dd6\n20eee9b40b2f6f36e4947ad76f8ce42d\n629e4382f2d569f366b86624c235daca\n55e0dfba8cc226871b17743c18fb63dc\n14658bfae450e891b89b974fa14a05a\nd3cc9f995b1f2b2dffcd08faf4fccd0f\nc9f83c2615326e7aff04196502786921\n3c0dd3719baecf3319fb4103277a6b93\n2a9fbcc138834d07a6bc98af4c2f54ca\n559019119818194931df860464c5f16c\nf8fc1fa935aa8f792ebeb1e6a8111f53\n77196cfcaabb6f750cf3715818ccfe8\nb8ab014839e2a28af62af8489541547b\nfa5bb6d18535f66219fb4103277a6b93\n9571cf49ac1752984ee1dfc331dd3e94\nfd181390f71ec72478ae896933c670d1\n694c7bf2ad1b133b1ce14d4c70990479\n1c9d333bda4b2977f92f3e7bff4c4ab0\n9c103621101bcf9919fb4103277a6b93\ndce866778584da8219eb0cf70882af88\n7f0bd726971e34eef9aec59741c69cf7\n80e34c832c4881c1c1acd07b40d583e7\nc09ae0a971165afe4fb315ce917a9ec2\nb6049bcbc56eb65e2553cc33364504d5\nf6190e61f116d159ca119b1ec88d8df8\n42eb9cb2f34c1ac81be5c5f8d4f77343\nc80c48b901ad94effebad4f49b26ec52\n753e1bb8f3164ded7b3ec0bc4f26f615\n19dd57f04ed04422c528d33bca1ac2\n6a42a50f5f6d959ec036a40816608369\nede1eb2acb5ba12e7282872e507d5fff\n901440644e396746bab0cb5a4ccf2fb2\n899389d5ac054e7f33a851a05440ba33\n7525a8d905a7aef4b3c42e318f3affc\n4e1ee66994a95492f2543b208c9ee8e2\nf3e10fe9995b4f864b3c42e318f3affc\nd5a11602655790bcdf6cfab91d65bb91\n54a08dff9191dff13462c3e6678345f\n2f1e6b2c94d6b6c474072e8e7f655555\ne352b0882699b66a44db04bfb021976e\ne48455c2ad642df1febad4f49b26ec52\n240b9fc8d34f3af17e20865350fdf369\n34fe095ab6fbf3a09c0b027ae5b223d6\nd13cd4fdf27074854b3c42e318f3affc\n8ce496ed6befb8db78fffc86da230525\na0646924dec3b2c97348ac642586ce23\n4cd14d58eff772da946789884353d9f6\nc3664a4a708086a448b7e15d7b3646df\n979ca0cbd4bffe37c7b11e86284a2e\n6c8364730b3c64a43fddc4e3be2d83c8\n1299643f99c8a66df59decd9cfc8a5bb\n47ad0af4207beedb296baeb5500afa1a\n983f0b9bf020010159f8e31ca87c470e\n40a6a3ef4e4e4c4c300703f05f8ccc25\ne75990aa494d4dc7371ea954c8939aa\n14aa542942c9ef1264dd558a50c0650d\n450b2b913495b73e9069b3c9aa123329\nb3b18a2b0bec3bf1593ebeeedbff73b\nee7ffc0b1cead515b2cf0fffc23ad5\n784b4379cc7e74e14fb315ce917a9ec2\n819038a4b8db3ed24b3c42e318f3affc\n2358a67773472af0826fc8d57346a2e4\n9900929c21330dacfebad4f49b26ec52\n7cb3f49789714865a494798fa117187b\n453d56b5906989fff29666f384be6c43\n9866fc915383a06cc85117b19e0f4ee5\n302fc57b3d180ea4733824eae5cd9ae\n235c8256c6e973de19fb4103277a6b93\n2a310d5bb9e5b1ec162227055a96104e\nad856cfd25b91563c681404257d94ad9\n8f1ce2b3b4f352254b3c42e318f3affc\n31ae964a8a9a15e87934a0d24a61231\nacaf2b81121c78f6acacae5381781ae4\na47681de164dccc6ad04591c9486ec0\n30ae6ca65155012e4b3c42e318f3affc\n7b914fb42c8f2368393b1800bfc51a93\nf7c79c7a8fb79212ddf7c7c2aa2325be\n9357812939117927c0450f087c15de65\nd5424df6acaee9762d19175e7d19b7cb\n45aaa81cb6b7f1585e7dcc6fa9b3c324\n22d997a2ee077e3f48fda83c10428379\n5a8adf52078b5008490ad276cd2af3a4\nccbccd9a5bfd52cbd29d1a0303294bae\n6b6509e3589bc296c10c5f14d140478c\nb44d152534373752febad4f49b26ec52\n6931000a5a1932b6a494798fa117187b\na6239b94b8def78a2f7a42055c3e9340\n9fa4f3e75f6bcd89b758c822519f97be\n1543a5ea73b6ab10df2fa7eaa812363c\n2862150fe6816499130963f0203c947\ncb311c253401e27165eff2c7075317a4\n33ee49115aa7125ddc37657f7fe19edb\ndda3a0ecc85a337a593ebeeedbff73b\ne3b28c9216617a638ab9d2d7b1d714\na259b6ff6a4a787b4c30acd2d55583a\n4c1ac8bd57beb2a9ce59ea70152320fa\ne4066cefe0230cc7b2ccd937df5da28f\n91e6ad8710f56cbd91d7b2865937b45c\nbbf1d8071651580cc79b370d801db3b7\n337f25da3cdae83bc7660a81296c2300\n43e3fd98669121eb826fc8d57346a2e4\n5171a910435f4c949a502993c14408e4\nc446a77a01eb3e59a6380f3fc7269ff\ncedd4ec33ee3b2de7252a102efb37f50\ne1fe7e3d2dbdfda9bb5bd941c6665c21\n9e0feaee4da30fe7fa038765e58dd68\n3d5084d5e7654bd11cd6319703a6cb25\nf36535e1853b9aa5fbb258508605d4da\ne6e2ed3f41a3eb951197663c308adec2\n105849baff12c6fc2bf2dcc31ba1713\na8ff859fcdae8f70f2543b208c9ee8e2\nbf16681e4b86db58ea07fbd08eb87bf2\nff2a456b438b0f2ba494798fa117187b\n63e45aeea568f1b0c35131da26f8061a\n4ba2ad7525a7da6c4daf5898cf18a390\n95c9ed9cbdae00eb768c07b3cdb90be\n621dab02dc0ac842e7891ff53b0e70d\n8458d6939967ac1bbc7a6acbd8f058b\n8fce754ab94cf3c0e07a1c4b84dfd325\nb1f4e7cd4a1b24b4e086fd45e580f116\n4146baad4a04882613f96345312df593\n308a144f77a7aa2dda625e752fc62bb7\n98546869c4ac8516febad4f49b26ec52\n396ee2a2333e80815b903ba10d2ec446\n5c39c2691a36d9e5a8f59bb67a917984\n4ed87061082a0ecb273e86fe77f08a50\n6d60b813582de6c1febad4f49b26ec52\n36d43bd7a4f90e69e2ca61e91f2755b7\n42f33746d7f0a8a24d3485a4d7c3a3ee\neac135eb1aa4665c4b3c42e318f3affc\nf1d1fdca528582dca6c4f2c64bf812b4\n9be24460d1f7d084b3c42e318f3affc\nd6d69d04e3c34465e9fa215d22832290\n7a3dd8889b18cc80f51f77a6d7299806\n82d25519070e3d5d6f1ad7def14e2855\n11f31367f34bfea04b3c42e318f3affc\n7c8dfc67f9d03d02bddaa551be7f3f7d\n43131890e972bb1febad4f49b26ec52\na9a8156722fa81dcbc36ee6cb276b00a\nd377dbbf7b198ad474fedb3ee91ea4c1\nae36181b10bbc7c564810cc21086da42\nce424dd12ccad62575206c207a147264\nfee915afe193518dc036a40816608369\na409f5a41d2acd344b3c42e318f3affc\n218a7b0cfc87312925a3aaf903a41c90\naccb504861a4091b894b04fea82e6039\n6dc235ab4a2c7c6810edd100dffd8d85\n5b693b3edfb323d0febad4f49b26ec52\n33f862846366476fc79619984c97c1ff\n7b76ae65480d1312538c0715f23f94d7\n4180d98246089cf014038d588fd1342f\nd906d689ec1edccffebad4f49b26ec52\n146ad9d78f06f1f0b246c4171f2c393b\n164f50d574036cfb2ff0fced1c150b31\n5b7b8b094a52794675543092060e57fe\n144cee9408bcdc3ad062f9c4aeccfad2\ne70fb6dca41fc8bdfebad4f49b26ec52\ncd1086902b5eb749f51f77a6d7299806\n3ffc1c26db51a3ac948a3bd895ea5ecb\n24cbeedf72674d1eb615f5e15a637115\n580e58ca5b0f8dcf490ad276cd2af3a4\na6ee2e98e8ae755f37af16b2893f1d4\n1f28f2ccce4940f2c6fe57159221338c\nea9aaecb6305da9ff51f77a6d7299806\nddf7a59004522f04c366b8589aac6975\ndd572d69cfa263bfdb10cbf40397412f\n137589e785a414b38a2d601af174cc3c\n9a1b39f920863964b3c42e318f3affc\n74369d5fdfa2356a066c1f884f0378\ndc89ccf0f13d42a83abfc4d0a5688916\na4367b42274cfad1f2b7580a739cd4d5\na0a53f2f112055d496626c84a010ee5c\n21140988a7602153f05a611b5fe35f32\n44503d9ba877251a4b48718ea0a8b483\nb403f11f5ea4a6a9d8c9ac981f1e537a\na49f6cfce3d854c7dbbc9440457e303e\n4a7db7357b6b6249492d9da2668ec34c\n5cfec53fca53be4cc9fce74028b97ec9\n13169bd2b9b02ad44089c2a25bbcbf23\n6c74c7ab655d540dfebad4f49b26ec52\n33d6c09be1a1a88a48fda83c10428379\n21236ac9a464b22a91fa1c643766450d\n369dc8240dd358bbfebad4f49b26ec52\n63865747038e4c66c35131da26f8061a\n26fe44345859362569e2e0d2caa039\n30cc7577792d4dfa4b3c42e318f3affc\n8603da907b2d1bf0a9c6c82c1fd82c5f\na0bb04577e35ca2440ea7eb155c4e420\n859e3eab73311f38ce59ea70152320fa\neeb9c7f343677bc7167c63de52dd6bbd\n2853c28f2690b0a48888e7425bc4b85\nd580b1bcffceaff39f2fd5a6f642de3d\n51dd0bece7876a8744fe3ba945082ada\n96055e2a648903bbaf2302630d34f30e\nd1f68ceddaa3b0bcfebad4f49b26ec52\nd644ef328d35d28ffebad4f49b26ec52\n38fd2710b8fd5eceeffcc073d8ec38f6\n412b9f3244a5cc56b667ca2c169528e2\n306a6efdecd98ab1456cbf78e1e89022\n398bc907b92b0260285dd489701ccbff\nd31fb17a6a6515d5febad4f49b26ec52\nd0b06478f56a1306e8f8c11a24c52ebb\na875e8dc1a39c769440e386b5061b2f6\n1aafe6bb91e66b1a22e6294dfcaabbc8\nde91f9457052646eb658faecaae06eb0\nde4e483a1587da9fdb24ee630144f57f\n1e71489bb315efa0eea222b336f100f0\n58156edc9c54973014038d588fd1342f\n96e21b275c9bd83bec7cbf3284585a40\n431ed7bd770ecdcafebad4f49b26ec52\n3d863a4eb22c548e9d4d5dcd2cc33826\nb929ff628fee53d452f2ff843abfed75\nb3b659db2b29e8201dd80053668dcec7\n841cb38f7447dc698e4182295c92f949\n7dedfb51ff65c27f67bb14b25f99796e\n201a6507d261c9113847ce0a45864e80\n1c4bfbfceb9e579c708f430fbe4ae8ff\na8f10f404b317af4946789884353d9f6\nb6cbabb92f1d0965de85c11d95003a6a\n49e39486a1df116be3923f7359326ebf\n8880686b417a054fa1e36ad603c7b9c2\nafb937bd74261f5110004612ff5e29b7\n5cf46a99a9dfdc07411e8b42940aba04\na05d53587e59b2ead6784d11c8f5b5\necb362a469c76e76febad4f49b26ec52\nee5631d8abed7e69b06dae6f40c44a8\nfd7aa76019f0149b6626d14151ce40bf\ncb71cb7b36dbcb6f826fc8d57346a2e4\n9ea47bf98413280bfebad4f49b26ec52\nfe63ff3ee440cbe2cbc66df5fc1969c2\n8bb72bf16f65fced40ef1c8b63a628f9\nfd2449fd2aa8b142febad4f49b26ec52\na409a2548e7cdac7febad4f49b26ec52\nc8e37189356e5d1249655ac7c771b113\n8b3b675ddd2305b98eca6e74f79ccd04\n3550a44cffb1fe001acfe75c509b3399\n7bc386f19f261758664b3b9b23ddfcbc\ne9ffbfa88c9bf2662f3a69b1a6aa6812\n40337cef87a495ff6e8f2cf4a97051f\n6d7972e468db59a6613f0dbd986ed6f8\n9f12f8119a52b141effcc073d8ec38f6\nc63d2ed731595cdd8cbb8bac2032149c\n8a470e5b043a38904b3c42e318f3affc\na8abbef69d380399429c5e5ac1d52cde\nfee8e1e0161f69b0db039d8689a74349\n3dd89f170133fbd7d609055a51359428\n390562a0a7c74cee19fb4103277a6b93\nc7e3aa97aa279582febad4f49b26ec52\n1d4e0d1e5935091f78b03575bb54dfd4\n6bd1d677786634ad27118ebb1d23c10\naeff4f4375c08e8ab9c8adebb50c258c\n5148f79f518a42794fb315ce917a9ec2\n9ab0a81e580dc1f4f008d8a3590fb522\nf39246dedaea087c397356311cbeea4\n7c31c4d88c67d094b3c42e318f3affc\nfe48d9b6cba42ef214fa93b6acf93e82\nf7b17391a903c29ef84b0be7f50940eb\nd71b806ed0d2108dc149927e19d9b07\nce378b91236095622155ef587b4a7084\nbc0971df7f259c581d38890680ce527f\n970aaae286331b9cfdef1c01cbd4ae0c\n8a207daaf453777de79c8740b4fafe4\nc866adf9f2d0bdd9f3598efd14e493d5\n5d6a4faa40dd337826fc8d57346a2e4\n64dc2fa7007421f9cf46315936cd9301\nbabdd63b18d73a196625bd63cef94df1\n605fd6f6541ca57de56133f0e7d362b6\n1fb52b6bac60286afebad4f49b26ec52\n2b49c5bb1f8f8e50febad4f49b26ec52\n930bf61aa004692c1834dcb2b62a80a\n65dd8c9418c29ddba066c1f884f0378\na9bfb70669bd7f37757a6361b10ec08\nc9e41b8e7827cd963dbb061ded33aea\n1d5675c6d28fcaa0f797b840852566c8\n225661a6dcd77e7dbd05ef637b36b199\n67711689ee7d8dd76b4675882670d943\n6971254cdae82dccfebad4f49b26ec52\nb435dc75dfcee77c4b3c42e318f3affc\n16ca439cd60eae5f23500a5b036df62e\n6f202d8517db172a5b2e09b1c446ae22\n514d64dec987c01d552ef6186e5d52ac\n32464457314622264587e90e2fc67ac9\nf2fbd71be2c50fd89fb1d3c5138b2800\nbd3cb48163e43810f29b3e56ea45251a\n2e474051a376ecace543d6ca26cbd98\n51f11001548cc8c0febad4f49b26ec52\nb526808fe0903b4484e132150e6e3ece\ned80dfdb4a552b189d4d5dcd2cc33826\n93d943320472c9fc599dcc439b161a52\ndcfdd81e4410dab49f2349486c570dd4\n2507270b7e344bbda494798fa117187b\nca6a71e5ad6e8964ad33b69f9597739\n3b15020aeaf67cd5b085db76290ca220\n58738b85e8a13c14380e1a7742e001bb\nc6edb435655e832debe45ef6009149dd\nf846fb7af63a5e838eec9023c5b97e00\n13d0d8dcb20c0071effcc073d8ec38f6\n3cf0d27803acc8cf1290417619264ca9\ne232e06ccba3e82d27039dbb84e920ce\n6051f687d35c6ba577dfa90ae0b0a3ed\n8ce7a3ce304220257c071b4859b99983\n77f5e753014c5b69b4b4d657a4935834\n90275a9eab184067e2ca61e91f2755b7\nbe5f2498434ecf9a4b3c42e318f3affc\n602e0f167c5edf327289c00b6dc9ca\n2c6dcb7184bfed32599dcc439b161a52\n784093cacaf5a2fcf3598efd14e493d5\nc304687f0778986c6f1e631ee7d027b9\n781ef644347280bcce59ea70152320fa\n6ebad671c5ccfee94c02d21d2fa4d397\n82c4b96fb61723aef3598efd14e493d5\nef2d1c27124c41e06bb6bc0db07c71e8\nf67714d13805df294b3c42e318f3affc\n57094371244c13fbe4ee93147efa8cb1\n2e12af86321da41284e6e639680867d1\n59959eb5b4cd9fd15e0ae65e074d3ee1\n6fae3f21375b43b24ad33b69f9597739\na731e2ceb44d59e1cbc66df5fc1969c2\n89ce842fbc7c786d2d19175e7d19b7cb\ncf651d12e2048e1a4b3c42e318f3affc\n92447fe6aa69f89fd25437aef1f56568\nfa279ffe1c3d480e4b48bc115078129b\ne78c23ab7426227b4b3c42e318f3affc\n19f52379f01878ad9517a37c9996fdf8\n14016326133a68c72897bf4febc9c106\n62a0f0734b9111084e78d6c405d01fac\n8fc21752c5c874626b4675882670d943\n4e8087f3851d85cdeedfca8b846d3b01\n4f2ab57322d7a7e3df63d1c7e43c783f\n771a9729f19fcac4bbc7a6acbd8f058b\n36f4fa1689803b442d19175e7d19b7cb\n3ac6d1680c7e0ba4fb315ce917a9ec2\n1faa4c299b93a3e5593ebeeedbff73b\n3f79bfdf49c2b654c397356311cbeea4\n251fc26346ac1897febad4f49b26ec52\n934cbc4617c6a6f4b001e9ae2ac46c17\n2554d1db5fc9ebe525f8fb09254b26f9\n96aa85a45fed687dbbc7a6acbd8f058b\n548f0e39d6ce5adac036a40816608369\na4de0830d9a1020e3b85980206d96693\n3d0aea03fdbcbcc1dad4c6b86f1850a6\nf20e7f4f41f323a04b3c42e318f3affc\ndd85decc87fd988c524446331aa4f326\n6f6a4f12041ce6d2593ebeeedbff73b\n3a99bf8e2a3e5e294b3c42e318f3affc\n34bbfab80042b25bc1bc03f4ef8a4411\n96de367b3365416ac580fdeb5460f6d6\n91839305f25521a3fa5b6212657ae4a4\na5bec86d283a19aef296d2773652c8e4\n1b4cfb30e4f49edb4b3c42e318f3affc\n69b501570e12c4a12c216c5e0f221195\n4a463efb8baf30e42d19175e7d19b7cb\n8c03e6ea484108bcfebad4f49b26ec52\ne1662c8dfabda9e76eb9b08c8a74d159\n1fe1411b6c8097acf008d8a3590fb522\n3f1e897f2da10d808e52cc55aebae3ed\n6e4fab35f29925f14f438613584cbdf7\n51194e8dad49dedeb38821f893bc10f9\n569c7293b52b633814038d588fd1342f\n58d87762038f551bf2977dcfb5a9b56a\n8243278b0b5881fd41ee82033240ca28\nf756d6d576a3e238f797b840852566c8\n1b25f96d97a94b05125abe33bf4f0061\n2cb0f608feed6256165ce3a6b1468e1\nd84ffaa12c52d6a9994626ba7fe8ddf7\n5e6fe3ce7afd4490441e918a50adf356\n6b569ad307bc38c06eb9b08c8a74d159\n51142db12ba0b421997d55757516b24b\n18f8fb3fd6222959e8f8c11a24c52ebb\n7a77351c67566e4159a4e5a60d4753a\ned1acc5b1cf032b94fb315ce917a9ec2\na996982326ffe668593ebeeedbff73b\ne16abadfd438100b65569474a61cabc5\n3946ab8df54210ef1789afaa92d90146\nda77fefef637adc26eb9b08c8a74d159\ndb01af2b84f8a9f615a72fd59f390cc3\ndebcadc4067158674ab1b242068f86fb\nc309f25d69ad12dd4733824eae5cd9ae\n37fa77e9e48371545397d07b571cbcb\n5a95984eaab1d85dfebad4f49b26ec52\n31256698e33ac007dc149927e19d9b07\n7e9f11492f1db0e5e81fe3f8835bb5ff\n49d28b2dbf11e3975e4b35ff1ea95f37\n5f32acd6df675a414b3c42e318f3affc\n855a071aeff2351a593ebeeedbff73b\n5d2c7b6f863379f1788963ea499c61d\nc8466c51d29e4782dc149927e19d9b07\n4c92e530e76f4ee3febad4f49b26ec52\n8bd993fc6a605a63ac4c87b0cf5278e7\n29fb859b965bc4af691e0e3fa7867bda\n849ddda40bd6540efac8371a83e130ac\nbfd15618fcd88e104017642dab433250\n377fceb1500e6452d9651cd1d591d64d\n76a9d700dcc91a5fea4a3d2e6628d0f2\ncc644fad0b76a441d84c7dc40ac6d743\ncd5f02ca40330f18febad4f49b26ec52\nbc5a26c2915a592091a3aa674c7ec1a3\nc144f9c06cae44492fdae21c212bf119\na0c9e23365a3516dd60ef9801956a8d9\n1226d123e89626a2406329dad4c94770\n4ac96465d859ecc647826489152a0c30\nf444000ead89fbf2558ba0061239252f\nffc1283c098f46cbc6ff4c4f6444568b\ndb1ca6cab18d4084191c3762b497eca9\n7598c48286a63854c02170c33e00ea64\nc8663904bd8af794d9b53420a5458c53\nb9a1600948000fbbba50f3b3c1c84054\n8e74405f71017cd5d509fba1e6dd3b0c\n317cd5686899922e19fb4103277a6b93\nfb65fdcded332e4118039d66c0209ecb\nd98731f20d3de9c4d9b53420a5458c53\n5eb193a332576b775e333fe3dd3959a5\n8daffd33afca5e02ca8dac6d3025a7da\n1bbc63fe00a7c3e2bbc7a6acbd8f058b\n949054060a3db173d9d07e89322d9cab\nfefb2c5e88d7e647eaf288f952624966\ne481539e23b4665e20768660cf080d12\n3ddf9a51c44970fd5e4b35ff1ea95f37\n12ae9aa6900536aaf24f0645d0949356\n9ed01e198c9d70a5df6cfab91d65bb91\n83d39faa5782395b651fb4677c188d35\n325003759d3fefc7615ce01bf34878f0\n58cf696abb5d3e7426415728d9c23636\nc37d49d715cc4d2ec7e48270ba1490a5\n1ebf04ee0e620619ea006adb8af93414\n20ff83acfd590101be65001d50394fd9\ndbbf72729fafaf3737f67f4322e8d3d0\n76fb7ca32181075e9a547820eb170949\n766d94bac9ae085455f9a00acc25f137\nc55d36457611e7fb826fc8d57346a2e4\n8a0ee11e68d4565d72e26fa14efa9297\n337b0e3fb3c00f6e6ff454af1e8947f3\nef479941cb60405f8cbd400aa99bee96\n4e7062e2c776db18dbbc9440457e303e\nb228fe3ec218f2b7fd609f4a869e9831\n5560a425c597eacbff841fc99bb16039\n5e3be8a7a61235dc2099f9e22ca45b04\nf43414acdca3878674c5bf7a74b1b6df\n3582dc0c828ae4b1febad4f49b26ec52\n413e31ca041f65ee5b40246fea20c2e7\nb1db7a545796dfedce59ea70152320fa\n776e86412e7f3c6dffb78a7278f8e374\n17278f64413654cffebad4f49b26ec52\nbc8e9f4d4076ce4f6b4675882670d943\n8ae5acfaf2b115382d19175e7d19b7cb\n730dfb84b370682d9cd8353ccb52cf6\n6c9beda59f24f107b001e9ae2ac46c17\n23780fffcd205ae9f1ce854e012143bd\n5f50ec09722ee31fbcd054bcf140e51\nf85f8e6cefe5aaba4b3c42e318f3affc\nebdeea981de34c1b2d19175e7d19b7cb\n2ab2a7cdbd8770318f17764fa642770\nea581514b73f4707febad4f49b26ec52\n3a27e270712fe178ce59ea70152320fa\n5fa872fc2e0447fe75fa15ccf4d13b00\n4c044b514ab3e0eb6eb9b08c8a74d159\n402c270ea6fd4754d93768e7b9b1eabf\nf813edee6c5acaff4fb315ce917a9ec2\n85bb2ac1c8896881837d598c1c392d83\ne91742c726572352593ebeeedbff73b\n312ee9c8bc6ecec5ce59ea70152320fa\nc63e1750f61af4bc4be7464481982099\n23eb95ad8124b45cc27ecf743c1aa320\n9f5fd43df32187739f2349486c570dd4\nfcf030593c0bfac4f13ce777d031b4b2\na1b02adc96a97e176eb9b08c8a74d159\n398fb143825e597b960f73850432c28a\n9d117d7cc29c3ef314513156cf2b8d0d\n7511cf30cf10869b4f7ad0010e5a372b\nb19003d682594a71d37a26a6fbb1c7f\n2658567ef94749293784599b9f219d55\n21b22c30f1c6ddb9952d5d6c0ee49300\ne55e87415f0c23baa1845d2858b500eb\n346f3d9b39930b87dbfb0f09ba9f2d99\n719eb32ac85c77ac4e7bb85618505650\n2b9612dac350a3d6764a784715fb668\n33f47039e62a39e5febad4f49b26ec52\n207e1410735bcf5a62556536221025bc\na1743777bd7c796b57ae08c3105b4e6a\n28e246db6ffc3497384b87f5fc9c7afe\n7cf34cdf58717ef0826fc8d57346a2e4\n9c18d53831315667af78305d7f7113c\naebb3daec0cf81e695b2988c41a35527\n75d52bdc003e828af2ae88c7a945acd\n7d04346070eb5b9d19ea2628fa9897e5\ne8d6ed94c67d6f43708fed31e484f9c0\ne084204cf0c6a345febad4f49b26ec52\n18a6381f8a0dffc876828214888cb11e\n2e04a6dedc7cc5334b3c42e318f3affc\n6923a7384068b631d8e0f7676099972b\ne0c9ef28aff6484e6eb9b08c8a74d159\n523daab7896a34ed65234765b3a00e8c\n6c6cd4a17f142fffc3c1d36485e9888e\n4e1a956e406bb70714038d588fd1342f\n5f50fabf8c2012034d4134b9987a1946\n147df78321f90f20a494798fa117187b\naee5c13c32775f24b1e5b4bb39b2ab9f\nba8afc95c19a3d369753496ba23f2183\n5e8b318948817989a33ae3b0de29197\n5d3a1feb79ab7987bcedcb5f4c7257b9\nfadd7d8c94893136e4b1c2efb094888b\nfcf30cec3180c05da5f9d52c12457194\n1de06749f136ec8da066c1f884f0378\n402ccbc3f5f26c095f8ca2b92d19277\nf8d7dc3e169cd91d593ebeeedbff73b\nebc8467a8de995924b3c42e318f3affc\nc8caf9f60c19157414038d588fd1342f\nfb2bad5e3ba66eaccbc66df5fc1969c2\n8827bca86b63f748b2c9b996c5b9e81e\nb9ab5b0ba01f4d896ae963205db1109f\n4975537eb678cd54ee8a0a0ef14611b2\n3c05461b9f6330efc61d98cf72b72c17\ncd47287d6da7492e64810cc21086da42\na6cd2326b2660ac9a4dc2316a7e66d36\n26d165613b7baf134b3c42e318f3affc\n909ea8e0e2728ced59f8e31ca87c470e\n4b86c8d86e181ed8f51f77a6d7299806\n4c49cab86dc3ffd2c84c076312b543ae\n289e520179ed1e397282872e507d5fff\n6f27ca8835f0d0b54b3c42e318f3affc\ne8e8f3249b237cb3450fa717654492da\n1a04dcce7027357ab540cc4083acfa57\n65c32eacefa3f4fe2058afcc28d23393\n9ee861bebbc312d97fac4224dd2383a7\n12a0c645e0bb6601ad75d368738e0b47\n17770580d5c314ea268f063686455b81\n6a6228e06f53e31b63c49003cfba744b\nc365bb7af1fd9fd490ad276cd2af3a4\n961a646cb33dc785b0ed39ef5ec2add2\nda964fb2d92a461f6295e8bd02084b6\nd3a1db19de4e3fcf7cd71f0b7b44a907\n2b7e704b07fd21febe65001d50394fd9\n54215008a46fdb714386ad145fa8aba9\nafdb8885328a9e1e8cbb8bac2032149c\nb146fb259f64cefaeb6c29873b08c02\n4e925afce2f8fcedec9587880f9bd7d8\n25fd91f0cc5c2e30e1c2ef56608a124e\nd54be63f3df4a80aafb1dd61dbf468dd\n8e7d422141080fee59f8e31ca87c470e\n29065562beae791be069c558a1f154b2\n139b1622071f1864f7d7105e737c7740\na157ab590ef0f9b6dcdd187a6a5d68ad\nbade4726190d638498614b18e654375c\n6ed0a767dc4c570e4cb7bc8e4c7cdd90\n61ce96ea92a12f402e0ec510458499fa\n1d3dcb5fe999334f83de73f58b2fc4ff\n3f8523f11a622d8d6983f351200ac6a\nece3f9c071f7ab04bbc7a6acbd8f058b\n3a01d750779057f8febad4f49b26ec52\n5b5bd4ca75b788c6ece5b3f5f7505a42\nff73fbfb9f4a273be738f481f8560d58\ne3c42f99d05348c6d456f2c60deb666b\nf57c0d39936a324371a782a4379556c7\nd8a5ba127550669d55030a5efaf6babc\ndd4c87420882a7e6dcfceb73ef9b6e3b\nbb39e48c9c10abee77f0370a839e670\n3c61862eca2f0979febad4f49b26ec52\n6822eea5cf7f5fc9d92d669b28d58950\nc47bb0485a3aa2407252a102efb37f50\n3ab95ff520d0970b6ae963205db1109f\n70e3bf6b0eb99dd6cdcf4980e386b48d\n575876c91251e1923d6e282938a47f9e\nf611f7d72fccaa4c8bfdb54347dbe48d\n87ab409c03acea4af994e2a430ba61bf\neafc1a44c43b48b24b3c42e318f3affc\ne09efbe78b2adfc322d06a647cb73a3b\n6898a9ca21823570a888124bc30aa1c7\n385990d0223c92b5f3598efd14e493d5\nae69ea12f45b428a327289c00b6dc9ca\n7d8fde70f5c3f351567232766992241d\ncc20bb3596fd3c2e677ea8589de8c796\na17c259d1af349dd45c21ae2e309d69f\nbb529f670d4cb04160d8f573d6badb2c\n37e4e81fda1f2c923a2face9eb30ef55\nb6384ee46eec7bd5df8d3317f6046bb8\nf17b64b1f764ba323bddec837aa40d6\n55432fbc7604292ed9993d66b5a0e2be\n5f1a2fef69c5c0ce19fb4103277a6b93\n19192524e6ae1e85cdca798c54fdf54a\nfcbff3584d926ea3f13ce777d031b4b2\nd3c5ce89b20dafcc57ae08c3105b4e6a\n9d0dd1f2ebfcf0a4cbaaa37255ec05aa\n3535ee6f6b070f07a1989a802607e7f3\n9428c331f2230e33a066c1f884f0378\n5a7b6de19865d1332c8896155b09445c\n6bb62bdd954cfa07e30cb284f2e8e5bf\ne93e9beb358d9fb8c397356311cbeea4\n3140b8db45212ea0d9b53420a5458c53\n26b0765b08c86fed52db1d2b4104f173\n82b6391291239d90febad4f49b26ec52\n9a88dcf980a527cb4b3c42e318f3affc\n5a419dd9295d84c538ae0e23b03ac623\n103b76b2594a1582eaf14273fa406ffc\n13568cb7d4bb7d90c274f5fac65789d8\n2f87e4958b3c1d80b5da5256e41fa569\n187386c46e9fb3a44b3c42e318f3affc\n681f7af0ffc7e220db6d2ff65cc5b310\neb568f8bbfee977c6b4fe272da0db543\nd7a7bb6725ac5248febad4f49b26ec52\n5e118f0edd514706593ebeeedbff73b\n588556b08760e93b928c76b41dda6e10\n24f03d70f686533d7583d8e3d877fffd\n5599465b099deb5064810cc21086da42\n5d382ebe0f2ab55efefccbce7fd86667\na7b07dd40ee6af36747bd07ee1e3f697\n8d69121ec9f174cb4db79ead79f57b22\ndfcc3ebaa7e5ff1720768660cf080d12\n3c08ae3ae78253bb73800789ccff9705\n5bd1a7825fd8c16c6eb9b08c8a74d159\n5eb9da1ae0ae618f1190e285a2cbc9c\n4dd014b6e5a87cf462158b7ee658e910\n40f968fe1a3442acfebad4f49b26ec52\na4fd0a514cabe8c34fb315ce917a9ec2\n3b7f2867c3d56290267536df1b0cc6\nfd1ca30eda9a2163e2ca61e91f2755b7\nd66ab7a970a3344e34e89adf02e34b7a\n22da5fee0352cf194b3c42e318f3affc\n349402b08cc7e5e9492d9da2668ec34c\na6d807661eec51a8c0b437e347e8066\n7e1321155d43dc8bfff16555386d173d\n458bfa76a934921f4494e96d71433541\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/04256520_train.lst",
    "content": "fbe08af112773184e6fe3612af521500\n8180afee86f2075519fb4103277a6b93\nad023095f1868d3019fb4103277a6b93\ndfda3c467eb6066fe6fe3612af521500\n98f2d21c4dcac477f7628281ecb18112\nb67232c18d00fca7593ebeeedbff73b\naa7489c9c7cd0c1dc3a1be62b60323a7\nfcff900ce37820983f7e27638e63d848\naf28dbdce6ed8cea19fb4103277a6b93\n38fed916a35dd43d7c8c503b4b873379\n33ab50198c84645ef91663a74ccd2338\n8a1a39223639f16e833c6c72c4b62a4d\n2d1ebd7356968c0919fb4103277a6b93\n834fe65aac9ea9bce589b08489d157d\nd851b8a016cf114c742f75bc7df727ae\nf2e7ed2b973570f1a54b9afa882a89ed\neffb1b260f100f5919fb4103277a6b93\na1dbdff3da83425f3eec26c23f5bc80b\ncacb9133bc0ef01f7628281ecb18112\n8731945435676805aa29e9f0529e8ef7\n1e678fabd0622a1119fb4103277a6b93\n37cbc18323826bfb19fb4103277a6b93\nc73d63f9080e84a91b17743c18fb63dc\ne76457b55a3c041cfe49db72b6ffb2c9\n216821d05f00b1ccc3bd24f986301745\nef5eb51bbb7141c119fb4103277a6b93\n3319a9b24416ecea7ff6ace05b36a5\ne9821fb7af7db92b26f6c8b5b75f0ee9\ne491dc151c8e801186abe5555a3b447d\n359b6d3d29b08dfe19fb4103277a6b93\n8affea22019b77a1f1783a44a88d6274\n41aa5dba48b7a3f683257865d0a50551\n308f0ebcbcdad58119fb4103277a6b93\ne80ade8966a54fe419fb4103277a6b93\n73379ebbbac81af13ee8e30b29f70dfc\nb0fdc43b0b4e990719abd93be2967664\n3a44efd1fd14ea66dfa4ff010b8b9d1c\na6054a189eb45e30672e57a20276f6e9\na89e0f5b5a8157afb0aea9d5db2857a9\nf4391a20638d415e76e9713f57a5fcb6\nde82cd275086d50e41b160b9adc112fd\nd9c184cf0d80efa6150855094a28ed1d\n9ef9ea0de3fe64d4e7e684d25d4dcaf0\n281330718b2988624b3c42e318f3affc\n4e05ca172c988b72dc1f6c4cdb4bb9b3\nf5960ae57bf84fe77b79156a61ad4c01\n16bb3ec52397cdf9cf01bc59d215f0\n3e499689bae22f3ab89ca298cd9a646\n47dfe5f98cc9075850336112dffe8551\n1f6dce83e8d582e9efc579970fcfc006\nd9bb77735ff0963ae7e684d25d4dcaf0\nb5655dbb1a19b94c14038d588fd1342f\n1c78365aa05c3d2d64614cce5789ae5c\na8df97262f1f0a44e4975e87c20ce53\n41b02faaceadb39560fcec8f64d76ffb\n9d54e00d9428c07e76e9713f57a5fcb6\naed821e5939f74a461bf0ba277ea473b\nc81cf82daa56a165271513b292108db\n3aebadcd37bd3edd8f5ae2c97614087a\n9e4cbc2bb68878b57984fb9ec7e40829\n9ec5fcbfe43af15b851a116903680096\n1896f141f12a0df135836c728d324152\n4f2c9a0709eb8cb9202316dd49948ea2\n199f330c7a4880b84b3c42e318f3affc\n7cfbeb2c5af830a26a97150bb2a72733\n3610635cf623f3f8917b96045c9b6dea\nd3db0f5bf70b9e32f7823f022ac104a2\nf43b6b571d66991f95ca4adb70946a21\n67708b6fc3e76563ca691253f597ebb8\n250f7b0081d2be215cd6dcd866c8e6a9\n4fa4da6b966578cbe78a749ef6aadd72\nc9ebc7c6abcc9432560dcae81449eed0\nb4c1dafcdd5cfe67d070a4f9796238\n82a13477581d96a1fd3e75cecd4d5ab7\nadc4a9767d1c7bae8522c33a9d3f5757\n465e28e9cee51df8d5cb6d178687b980\nb3d216ad7575478d202316dd49948ea2\n81018f492277b7649f13e3294f6a3574\na73fc5b447cab6493ca57f5648ff1b0d\n8769b3281dd41c771b17743c18fb63dc\n69f6a6087f0da861af8fee88d245152b\naa41f9c1ea3647ef5dc3653f8341633a\nbfd337ddffdd91b4190a91fd9a6f7d55\n735122a1019fd6529dac46bde4c69ef2\n9f1de8e71c8a85f23087f84b199fd297\ne3610bdf0eb38f6b4b8710a3469971b1\n7461a53eae4126a79fcf47c4eee9d700\nc04dff28e5b5a2e5c283ca2c9df7372d\n65ec93f47687b6b4926f354063916d1d\n68a1f95fed336299f51f77a6d7299806\nb7cd67499b36cf60417a8f1d2c94eaf6\n7ca57c98a3557774f251828d7c328331\n23cb1d667213c3a7e897e87345fc323b\n89e00bb2b82e9e86c036a40816608369\n793aeb3e33325c491f4fac9ac5e71796\n63338a227246399141fba545b7232cfd\na841d5d39c5ddbc28ec45320afaa5d0a\n9c3b2d053adaca577b50cd55c08e6bb6\ne40e193e6468db644b3c42e318f3affc\n210076a2e26d5d53adc3470b30138f3\nbff79b49732569307ea323bc74055b8\n95d394154dc98f0ddbe9c90af547c85d\nf55beebe7409e84c873aec32fa476d61\ncd249bd432c4bc75b82cf928f6ed5338\n20b12dcbb70869c06b5c5023b0ce157e\nc9c0132c09ca16e8599dcc439b161a52\n2dd491294a34ed7eff98db9ea1554f19\nd72e78905c4d975f4f650cd6cdc94858\nca81512a7d7934d0b8e42b2c59ee19ec\nb797650c894719b99fd71c29e8052396\ne49c0df0a42bdbecc4b4c7225ff8487e\n58d4563bd1114e6a76e9713f57a5fcb6\nd01ce0f02e25fc2b42e1bb4fe264125f\n43507f90235fd3214038d588fd1342f\n39a79339b49d7cfbc16a7f7cb5642902\ncbccbd019a3029c661bfbba8a5defb02\n2c1ecb41c0f0d2cd07c7bf20dae278a\nd20c3649494f2aac14bac2ebb8f636e5\ne66f4bd6f5075d1755f9a00acc25f137\nc6329e1d12285ed761fdb06bea79b81\nf27962a9ea7a87a87140e995552e7616\n96425edfd54c925457bd9a2a12d86bbc\n3aa613c06675d2a4dd94d3cfe79da065\n4ebbe3f30aa1f5eb14038d588fd1342f\n695b90883d398e5b15cdaecfa8164583\n1bb6224360321002b8bd10c3418cc648\ndc62af0b1d8af2c676e9713f57a5fcb6\na0baf84e4bde88691912372ddaeb001\n3a72dc930392152e27787a85c3bfabc6\n986f6fb4a7e513614e4975e87c20ce53\n8920c0e0737409e29f2349486c570dd4\n71fd7103997614db490ad276cd2af3a4\nfbb0d2c65c3a26a6490ad276cd2af3a4\nf92dd3f4d0b4475514038d588fd1342f\ne4ca81487385c5f490ad276cd2af3a4\n27c82d27a4d38e6f41b160b9adc112fd\na11d94a5675bc703265c64fa53bf2c02\n8426b07a7f599d011a3b39b07e4b3d0f\n84ab3d4610acab1adb352b8394e172c8\n5b06dcaf32f92e7eb3878cedd8c8fe6c\n2f0f7c2f9e3b04a8f251828d7c328331\n8ed3fa69c808741a42e1bb4fe264125f\nfd56410fc541a09a749add7c3dfb27c1\n1670f9ce4de8a548d08f8c5dee475682\nf20e7a860fca9179d57c8a5f8e280cfb\nd053e745b565fa391c1b3b2ed8d13bf8\nc293fb5d58a88ce85b903ba10d2ec446\n9d6ac979ebf86ea9f37af16b2893f1d4\n7c299b1e1374a538e78a749ef6aadd72\n1575354ba1faad67490ad276cd2af3a4\n4f2fc9895ecc6a858032f428909bd170\n47fbf101a830769fd1dcc55e36186e4e\n79fba03fadd8c00ef10b04ee8b1c6914\n536cae63d37ef32265ba78ad9601cf1b\nfae52eb61560b246f8555ec936cd4b63\ne541933c90eec36182db9fca4b68095\nccb08f869edde5e6d8adf1ca87495d41\nb3fbac6ffe8e00622f6acf89a420ef0c\n4ed802a4aa4b8a86b161f36d4e309050\n4271d43fd97a7baa591cc7aab9026e54\nfe56059777b240bb833c6c72c4b62a4d\n9625852787b360bf20900f5b6ea8b024\n7cc630a72eca68c0457ba044c28858b1\n1e4a7cb88d31716cc9c93fe51d670e21\nf6d695e08f246d4ef5b0cb6df351ab49\nf5d7f60d4b33ea4f63d977b06bbd429d\n8b8152865839a79719fb4103277a6b93\n3af5eddf5022015788dcbe86402c7c15\n1037fd31d12178d396f164a988ef37cc\n13b9cc6c187edb98afd316e82119b42\nff2dbafa8d66856419fb4103277a6b93\nace76562ee9d7c3a913c66b05d18ae8\n3fd28462dda59ee49ecd5a75a29f0715\n5af36cc3a98642019fb4103277a6b93\nd562328792a3314519fb4103277a6b93\n6645c2afd5af2cd2610c2a68437007d6\nfa877c7d428253515e4b35ff1ea95f37\n44854046021846f219fb4103277a6b93\nef185107fb8d70ced06d60299de4d22\nacf23f78322f00f219fb4103277a6b93\ne3992b75b446fb5af7c7ad2549a1b15\nf114b76d551b5e5affcd08faf4fccd0f\n7ab86358957e386d76de5cade2fd5247\nf76d50f900b034af19fb4103277a6b93\nca8c140ca26c4d6cc9b96a88ab877904\n79df431936df0a0719fb4103277a6b93\nc837f4472115496cc93e5ef112648b04\nbe5def882071141c1a8781c24b79ae57\n42ebf2d478ab8af85ac3e286c38c6d66\n356ee11c9803f1d2fa6df2d54fa43ce\nc00d5c9b043b600019fb4103277a6b93\necad0dfdf6338cbd457ba044c28858b1\n1512e3c41de7a461e10a48f2bbb9bef4\n572da8680677fe8937b2bb75885cfc44\nf16d8f18e03669308f00a5ba54aa8088\nf50d32a6083c8f146dab7044457400e6\n77a56bf8ea88336019fb4103277a6b93\n48834ca61f0b759583e21877a4e60599\nb6e744f896a202c119fb4103277a6b93\n8173fe7964a2a06319fb4103277a6b93\n837ba605a4ab4a4f19fb4103277a6b93\n17c61068a15115a87c2f226180343d2e\n5105549b9de890319fb4103277a6b93\n13990109140043c919fb4103277a6b93\ne8f21fec8246fd5a8bbe798b99a6a988\n2639242e8f06f93919fb4103277a6b93\nd08fc6f10d07dfd8c05575120a46cd3b\n1b8894ce5f53e0007143b902ce4e435d\ncbc445c307221601433b4c9b207205a9\ne08354a352fd0d6914a163d2b227b320\n388aebe52bbe88757143b902ce4e435d\n95829021770f25fe15afaa91253fa857\n588f01ccac8746e1122e20a0279089a2\nce049a259cc2e624d5446ca68a7e06a3\n82f8c687a9cf7dcd5dc3653f8341633a\n262b2e2a13c8099d60f888b4e2fd3e4\n74490c45305da48a2b3e9b6eb52d35df\ne0591c0d35f82023610c2a68437007d6\n640aadadf4fcba8355f9a00acc25f137\n107637b6bdf8129d4904d89e9169817b\n2a8554af80cfa5e719fb4103277a6b93\nf3a24b3131da1ce619fb4103277a6b93\nb351e06f5826444c19fb4103277a6b93\nfa0eb1bb05ebe3f2dd3adf3090c701f7\n5f145696aaef1e6f342398ca9dc32672\n8c69c0bafdf91e85c05575120a46cd3b\nf98615e51a596fc5c05575120a46cd3b\n9001c9558ffe9b5651b8631af720684f\nf4370eb6449a1e8e191682d3b3321017\n6a2f4e3429093be819fb4103277a6b93\nceb04c53d8aae1319fb4103277a6b93\n65711cb0e57123e037b2bb75885cfc44\n83ce58add39dd471d314007fddce52b0\na9da19aecc65656019fb4103277a6b93\n1d878962087fbab2350c104b3ba8ddb\n7e7c1aca9d7ce7f2f7628281ecb18112\nf2446f65ba438c2119fb4103277a6b93\nad274aa281d74c7d78e2b63e72b94e04\n1b0432fd7b56f7e219fb4103277a6b93\nd9ae4cecb8203838f652f706160dc96d\n10e0543e6e316dca30b07c64830a47f3\n1878633a36518ffc19fb4103277a6b93\n73111c5505d7b5eae3db80a3cacc6e3\nd321d0c149d7762acc8bd7a04c9659f1\ndfb54a98465dffeffcd08faf4fccd0f\n93bd851dc5bb3527d437a7a1ae2552ff\n49d6f351e82d186b366971e8a2cdf120\n499edbd7de3e7423bb865c00ef25280\na76a2d34a1aca99611e76965808086c8\n8f23005418fee71819fb4103277a6b93\ncd10e95d1501ed6719fb4103277a6b93\n8aa7651cbe3651d64af957103f4767ac\n7577bddda1f3b6de73a5c8eabcf6c479\n94728591e785c00278fe949fc1419876\ne9d6a366a92a61d979c851829c339535\nf736f06f8fd04e1119fb4103277a6b93\n455fad12d4170e398d36ea78699efab5\n8568498cce4c2441ebc1a7ae7c4c250d\nee63182f95899a7419fb4103277a6b93\n93b421c66ff4529f37b2bb75885cfc44\n92be674b2edb7f54d18c447b567dbc27\n4307657b2731fd392c37553db37ec752\n104256e5bb73b0b719fb4103277a6b93\n42e06113efdedd0fbc19762eaa7ba40f\n99ca3d9ee631247f36d8dd30a594b2af\n28b9e6b16443e183fcc04d1259a0af57\n1667fb24efa940b9527e7f2c027f7469\nc1b8d982d97e337f19fb4103277a6b93\nbbd385cb3ee28279e3cb1f46427ab37a\n9cddb828b936db93c341afa383659322\ne4e0f428fcaa01bd19fb4103277a6b93\n2ccd286e8d5963199201f2703b45dd7\nc5380b779c689a919201f2703b45dd7\n1aaee46102b4bab3998b2b87439f61bf\na6cfaf6913d9559b7e66b3e5c11f24d4\n9adffacedef7ae4219fb4103277a6b93\nd4dddfd40635a72f1cda25fa42fa5ece\nb24e1117e49c75f817b431cae0dd70ed\nbaa8760ca5fbbc4840b559ef47048b86\n470dd8c92aa1b9ba593ebeeedbff73b\n638c8ca3dc94b152f6d79b8d34aa426a\na5274620fb2ba9a23862dad076579451\n7b3bab9058f7de33fab6e40cce6926d7\n6f0f6571f173bd90f9883d2fd957d60f\n4742de1edfb9462a60fd51b2fec8dcce\n75214586f291a04fd45611d32fd7733d\n3bde46b6d6fb84976193d9e76bb15876\na680830f8b76c1bbe929777b2f481029\n99ec7e5d04f32409d45611d32fd7733d\na930d381392ff51140b559ef47048b86\n683384e0e6eb5d4e81f667e2a25e0619\nc5e55f00566f0da2ec012e3517533bb1\naf9d9a0ffad9c2dc8a243182cace7dbe\n5aed18ebaa1360229d51a07a5989d077\n3aba6ceca44f747b29a72cc7a32af9e5\nf76d1470e843601f14c803eab703899\nd9fde31ef5c2f3ed17b431cae0dd70ed\nb4043ab6723a39f1406316a80ad8bed9\n944842d74aad4e2617b431cae0dd70ed\nfa563ce2209de1961f98c0761af40e04\n1ea101b73352ccd9822a33e080d0e71c\nbb31bd378273e437f4b35f4029eb1ecf\naa27de991298fb2eb3a010e5a9dcf3a8\n305d64b9fec0015b62a510b8f97c658e\nbf816001f25b2ff822e11aea23332c0\n241bf145fb2d14e67ec0186a79b9da3b\na5d1e07789845c85a5aa2898f4de80a0\n90506850596aaa99891fca5db446d193\na86bf379ca2ba8d8f2d5a0d235580548\n426d75ae016abffbdfa8261e130bcc9c\nd4aabbe3527c84f670793cd603073927\ne42f4a13086f847be55735bbf02fe10b\nc3e86ca4f6ca077459d0a47cd36512\n37113588c2d2566b4cf08511890c3458\n9e0b01fab5d15b768695754f4338760f\n9dbd663d977c64d1b982b1d54ee6ac1d\ndd7dc4e40e7d015c19fb4103277a6b93\n930873705bff9098e6e46d06d31ee634\nc529a567cf7e69e2c16bd6fd1b8c7eae\n660cad84e71a5f67a74931688d634d2\nc0d3ed00259b4d9da326264e704c832e\ne3ce79fd03b7a78d98661b9abac3e1f9\n626104245de40df863860d683ccd0da\n9808424960998ae93d4d11ac89066d36\n40a6ac0c94ae686e8dd711af5650bdcf\n21c071912ffe86fdf564f8e3eeb8449e\ne9017aa5115303957be8ee92c39a9d4b\n741dd57baaea906cb0449d422c1e5657\n252be483777007c22e7955415f58545\n4f6ba19d62789d90d71c0b5c63bf171\nf0a02b63e1c84a3fbf7df791578d3fb5\na995c3e90cc656e0c81bdfff91c7f69\nb913574ffbe7400ce8417aef1b7a422\n5850eba97de66d8e283b00891f680579\nb1b2195e45bf0495593ebeeedbff73b\nc1950e8c9869a7aa8dd711af5650bdcf\n6e3771d48b3982d0eca22c501ad0a77a\n7c4bf66c71ca90b5c2c449c0c0579ec3\nfb1bcd50b847a99d7948cb8e1d9ee487\n438c3671222b3e6c800d7b7d07715065\n81180dfb3874d4c76dc992d5c5e6b2e0\n7f6c75c2d820337b69867582939a3cf7\n2477014dfd55144ded526a7be77b30e\n163af537cd485a75e73748f506e4b955\ne32a5fdbb75ed879568af879e5634175\n317850f9c80cafb561bfbba8a5defb02\n1746d1c62d9efc742665e2e07399c56f\nb090f9315fc9e0cf9936c7914e42d921\nff35b2519455b6577b76a7024ccebf5\n53eaace9bb8bb34ab4fa97f642d1a681\n54506969a60017ac8f0a57a8b9390a\n7f0d93163b0db7a71ebf17f9e9667427\ne3d3c8dfcb19d920cc3e9831f31c9164\n7db3c05e67e9b847393b0262b4e8b707\n71e0e0315d718004e7c7920f6a65a54d\n5c54937316aaac98c563fcc2752ece39\ncd280bd68e1ce7f266260c2464355988\n253ca4f655355b6f8bc1f8036e08e44\n9473a8f3e2182d90d810b14a81e12eca\nbc2c0cf666122cc68f5c37fe197319e1\nc57bac39e7c4e151c8a0fe52b1df3602\n470bc951c8b9bb5b4ea6967a5607d572\nf398deceae25a0e752ac884aea4686b\n5149af0adc1f4a6aa45aa09d68b87656\n964887dfda95963fb0957d845ac33749\n3b7c1e67ee312cfe1bb088904f7cb154\nf8998de3b4d36dea4b3c42e318f3affc\na97a1e97d08a236a68d1b9a1d97e2846\n487635f7daf9ff48b3bd1e430b6587\n9eaaf854334b3bca676de9b6e111da8b\n8e61d151220b5397970d4dd67731c543\nfdc419e377f15e728101accd22c701b9\n83d48b9accecd4bae7200b78e3310827\n227a9255c15c267aa5c25aecef10278f\n470dd418057f9946a30f938496151204\n3ac827b804fee818b0b88207ef0f5bc6\n6660af5568f1fcea324a6d32f13e7cb6\naef8e3f17370fc8ecc98452c8fce6b43\n6bbbddc84bc4d3a68eb3bc6c6d15f9bf\n7a379a92b40f0efb3920d120afd003e0\nfce0ca2464802f5ab0474c2e080078f5\n494fe53da65650b8c358765b76c296\n3c30c45a5ba3b535f564f8e3eeb8449e\n20222a2bd14ea9609e489c1cf724666f\nf1c533e2cba193631b02cde7e81f0fc3\n294dbaa0e9afde3a35836c728d324152\n125ace480d9f2fd5369e32fb818f337\n35bbb0da45fbb2d93eec26c23f5bc80b\n742d1d33eb66d91014c0ce0d45458397\n5a94cc0c277f391df9aec59741c69cf7\n3b34c3ac871a2d40593ebeeedbff73b\n2c7d2bb93b49197cded06cbcf08b2fff\n81afa90f6229e7b456cbf78e1e89022\n34e10b72cfc4f36ad8e004adc6acd545\n72045d74edb0547581a172d69c52a28a\n7051b028c8c1facfced9bf2a92246703\nc23747cbba5d5f9edbb047330001d95\n241a341105cf3dfe593ebeeedbff73b\n40df73dfda0e26ce442b5d6d90d0cc78\n7961d0f612add0cee08bb071746122b9\n19b9fb3d3763cd1e4c4a4dca0a101f1c\n3fcb0aaa346bd46f11e76965808086c8\nec77376330a7975214e726c15c7dc200\n1685b0cf2d1a2849d0a2ef258a9c71d6\nfd33f7d4b8fcaef5d39e33fed94f56ef\na3c1bd440f319a39dd7092ed47061a36\n7d4d8e65979c28c1f8d4231017d95f74\ncfa5feb7486f88ee1b8fe07f15de05f7\n9e0071fda87df6892e73d126bf16e692\nf9f8f089be14d5b672b33dfe598bdd77\n836d2a7bc26d1b75ec195f2cc52f3287\n48a44ed3050ad12dd5b24cafb84903c7\n642aba784c86bb67fff16555386d173d\n8190efdd2054a0d9f51945de050323d3\nbb4441db7c68a4cec7c8ce3bef5c2aa9\n59c32d74e6de63643d41bddf307a46a8\n64800f14a795d8759055f83d11955109\n6017c8c817937296e1df71e82caa58ae\nbf504bde782c3f2ce8ced3508709e1db\nfce0bff765d0c49777ccdc3441fdc624\n51e5da3e9f55c77ec15dc8fdbaa55abe\nc955e564c9a73650f78bdf37d618e97e\n7d4113d5cbf4ba376efe57da6d3d385e\n7517e2a0c921b89d593ebeeedbff73b\n8331de0bbd3b0e19db8fa1712f9ee93\n328873bf304530b01b17743c18fb63dc\nb675ac4b668ace54bdcf8e3531f470bb\nfb0c0e7d7094b64c8e5f5b49c9f5b3f2\n94988ca3a0f73d16cabc196a7f35f1aa\nae2c9a06d9f7076532388c13cc4a0ba3\nc4b2bd128c424f361b02cde7e81f0fc3\n3dee5f41a11a1fdbdc83753cd31caa42\nf178d79c569c05d47edb0bede88c064d\n61d93b7c3e83541c81dff5c2e57ad46e\n12cae0fa5180fce64b7366b9d17acf07\n9875190ff87d3eb6a510987e3d5db7c5\nbdbdc31c4ba48868bd91edd7a65c1323\n7d71922494b8788ce10ddc5f810dd417\ndbe7ab8fbc9429c2cf40e78cb31675ae\n6d31bf9cfaa63bd1455785c13440f50e\n1a4a8592046253ab5ff61a3a2a0e2484\n75b57fc1eb40d27114e19520b26970dc\n7606f7f0a8d6434f4b3c42e318f3affc\n3681d113ea4b98546609f3f8aaad34cd\nefddbcc9852c0584e235eb1ec8984f53\nd0ce2d65a1f3f7f0942fb082e747f0bc\n8952146d844d41f78dd7a714af22f7ca\n526b961864b9cb0ca81116f5456ee312\n6905206d5f2ac04bd9e0690b0b191\n45ff5f465a6a907488e82c4bb71ec6f6\n5b702274926a8c433be1d0c32f5added\ncf47942a67cae94eab49dceef0d15b99\n7e2fb2fd4c604bb1ef6c510e24348d3b\nfef42356f1acb01b593ebeeedbff73b\n9500ae0f745fc9efe5b815c86e529aab\ncba1446e98640f603ffc853fc4b95a17\n2ae32451bd6b947e593ebeeedbff73b\n1ee15a07c2845ab1b9f43426f477bd71\nf125875fefd6a02af487e71bd57b6e0c\n58663919dae316f31ea2c93416c12215\n234ba0e3cdec0c306512b7b24f3d84\n7173c0462d9ee2a344949d7685cb63ea\n336ac1316e0d5cb7e6fe3612af521500\n1210afeba868a87bf91f8f6988914003\n66d4f7c3c9018c9c4d3ac4ef5709159c\n46c6d2fb8c92cba419fb4103277a6b93\naa2e8a77de22165ffe369f4f96683f52\n9b3c9023e8c570d5b307b2a73ae3e74b\n556166f38429cdfe29bdd38dd4a1a461\n80d13b57aa31f79cef188758bf2e3a30\nd9d61f08002dfae421cfc6e95839d798\nfdcf1197a5bdcfc1ab610b0c94236463\na17ba222a54865cdcbde89e0c48a01bf\na39fcabef17deeaf593ebeeedbff73b\n2ebb84f64f8f0f565db77ed1f5c8b93\ndf2fd8e97036e287dce02b254c09566e\nff51b4ea697e7bd2a59fc0a73ebddd23\n63eeb7ea2c7683b3f811db9eaa01354f\nd8751c7d4156c98ef09df371fae9d63d\naf796bbeb2990931a1ce49849c98d31c\nf94cef3a1dabeefeb26131b3eacda7f2\n9e9707ea4d5c5968a283d3d51bc54a1\n167088246175f31c593ebeeedbff73b\nb251364a878eb5fca192483aa282f8e5\n4fa6c9c06efa1fe14156f0e87c6858f1\n267dcf5952e84873fad6a32f56e259a2\nfdb3ab843f2a244eb9b4a0bf4166f120\n901eff0fb9cf6e0646a3128b588876cf\n47c45ac7187a9674421b433358248213\ndeb7ac5670e9bb27af8808fbf39db46b\n7b2ee63737854db3bd16d4490a10a752\n207c81a9bbdccbb8e8058cf23f6382c1\na4b1c819d9b606473decfe0ce0584f\n39f5e0c179377860d3eab83c82350281\ne8dfcea40c6cee9b990561fc34164364\n3d95d6237ea6db97afa2904116693357\n660df170c4337cda35836c728d324152\na25fbfb1c72811d86e4d44229ea605db\n1b5bd45428de094f593ebeeedbff73b\nfc7b96235eef479075becd8a4c3f1866\ne5f51c7ccf8ec35d2f134420f7b0d7e6\n8ead2b6ac2726710707cdefe012d0353\n4756416d882c569b7acade7eda5e06dd\n509a533e17fa45572814c9aa90ee14e\nf8519e593fdb348ab3d135d7fc8306a1\n31b21dc34d770ce8dca17035ebddd61e\necf29f5698798a74104d78b9947ee8\n67626389926740a08de89023dfc7cadd\n839807049a0c29a6ea693790a1608aab\n27be61a3c437d7a0eaf288f952624966\n899f5c18a528aac2ef0b2fc3511b6fbd\n8159bdc913cd8a23debd258f4352e626\n5d15e6c23f233a13ce60514f9a637ce\n44d172b5cd523df141b965cb8ba50814\nf986646cfa075237c02170c33e00ea64\n7b57ecf4b5e9617d6282231ccf88d909\n264d40f99914b97e577df49fb73cc67c\nb2ce2532f540cbde67b426838fce979f\ncc5f1f064a1ba342cbdb36da0ec8fda6\nd0b33818a29689a8ab5d9b3550c46460\na126dacc76977e063755f577b497208\n8ffc9da1ad2dffb3200d50e893131ba\ne8aa02effc458838f2098a9f7fc86999\n27f0c4cde547763ab8a40f9116438027\nc05c058169a31a19b149830119040db5\n1050790962944624febad4f49b26ec52\nd8a60e70bde76669e484a3178a372c3\n6c3b3c37c20bf2fbb40f0ac0fb9a650d\n683fbc39025b9b75e71d6290824c2748\nfb12015e8f705d901f8d8332ee17945a\n6c26b5608557f3e8bb41d1ff31a800de\na3eef12c108186997b9a616d4541ada8\n7b9d9c738c6042ad1c2c02171f63f02f\n70be13428e2a6eb1a789fd2e20dfbbd\n4353b992d238cff0cda85f6a3e19b0a1\neaff5688bb49f845ba41eea807f5d3c\n735578d3cfa39279d098b24937823a09\nbe19ff23b9cf375d6ee717407316be0\nf693bb3178c80d7f1783a44a88d6274\n53ce13a6f6a1a5f9f15e23b99997e42b\nb86d536860cdcf4ce7321f25048c6142\nc6fbb991bf184331847d00e95a10eacc\naeff3da4a02a22b07b0278d6b5ba1920\nd13a2ccdbb7740ea83a0857b7b9398b1\n66ea6f8add81adc848fda83c10428379\n3e3ad2629c9ab938c2eaaa1f79e71ec\n461772d07ff458d7470846ec41d04ed8\ndf912366bccfcc0258db0ef36af1d3c5\nc69ce34e38f6218b2f809039658ca52\nd3a8b906f6909b0252899f0b4e8d8ae4\n4fcaa3e642e153f3450621b513a975bb\n85bb20bc97b61c17261770c74651d29a\n2780834da1be89d1f51f77a6d7299806\nfe29b89c392e1bb39a2d92ec05f8de08\nd255253a4af43b4d4cb1d8db6be39c65\ne471ff9cacad70d391fa1c643766450d\n6aef3ffcf683005263cc440c7caf3d76\n63d67bb924a00203fff16555386d173d\n69257080fd87015369fb37a80cd44134\ne1a653600512eaccc862eec8232fff1e\ncc906e84c1a985fe80db6871fa4b6f35\n5c66c3e86a131bb969c8f7b0ff61e3de\n55f6500b52310f26352ecf815a233abb\na6e9d5735c36b80ef4a06efdbafdd7ea\nef99fe2058dbf199a2ebd6ecc07363e1\ndb19747e2c5b126148cd16ceeddb841\n8bf3680dded4772ff51fa0238791f5dc\n709f1d6837ed560bb12cf25c409aac26\n244499318ac9251c3bec56bff764ba78\n9f575d367e59591128fff7ee99dcfdf8\ne86d2ddb1e38d2e082db9fca4b68095\n1fd45c57ab27cb6cea65c47b660136e7\nb672f2487b04c2e72a7455a9948f4f3c\n5f531e379365040936a36f8fd7d27134\nc136abd9c245ed8819c798cfc4624378\n28f2563c5e757b1c1b7dbdf53d301715\n1a78f3397910037885f6153ed2033a1c\ne03147a11bd7c10e3d23022ce06f940d\n9aef63feacf65dd9cc3e9831f31c9164\na1262399c6c0ac93e84291b9d249a95b\nfe3d9267a166c57fee7d178666aae23d\nb2aaf37365cd30776b9a660069df73df\ned394e35b999f69edb039d8689a74349\n213484c5675cc80b4719088c8e42c6ab\n45963319edb54bc0dcb4d348d782a96f\nc75ade3248fb4f2f8962005ce0e986db\n9b88f0839b22b33022fea5173e5c6318\n11f47772cbe2a2d0a5f9d52c12457194\n6d41a09cc94d2505a82acb2f2fa57398\n42b297f23638f17e27813b202e608c61\n75071b6962f431175becd8a4c3f1866\ne7eb561c782fd92163d467b618e97922\n5f5c4e66f07fc2695c0be177939e290\nd8fa31c19a952efb293968bf1f72ae90\n823219c03b02a423c1a85f2b9754d96f\n71783c8431b28220593ebeeedbff73b\n615ebac351d7e8356051d49e4b21b83c\ne37b46236accac968cbb8bac2032149c\n1476ee6116538beb1d0e6f3a33226a84\n4ec9d99e4094a2bd91659e904513cf6c\nc5f48faf560bbcb3debd3ac8a0c825d6\nd5aefefca08da17819fb4103277a6b93\n306679647d906c39bbc7a6acbd8f058b\n5d27c5cc1395586c66eb0dcc2b2e2221\n9d1e8c37315e292f31a50841704a69bf\n52f6fbe3a36a4d1f19fb4103277a6b93\nbc6a3fa659dd7ec0c62ac18334863d36\n9695e057d7a4e992f2b67ae827b02632\n273e8e15b6740e5932a526e2e9a7e9ae\nf97cb4e2aed44b05593ebeeedbff73b\ne014e3cecb1bc2b949a3c1009fa79820\n272594b65264b90192fe219f5eb82836\ne9e54de1814ccae5bbb6a513934583ce\nd0bdb5de2ae0de1adfa4ff010b8b9d1c\n9c0c2110a58e15febc48810968735439\n9b94f7822f3d73e84b509f4ddcfa8ca1\n124bead2c137a6d1f652f706160dc96d\n6caa1713e795c8a2f0478431b5ad57db\n52d307203aefd6bf366971e8a2cdf120\ndd36ab979c4ff93038dc42f802aebe31\n927967e761c52c11eaf288f952624966\nab2f0f582e3fa5b1780c9f3df5b1ce52\nb4c5addeacfce8242165c54dcecaacb4\nc59ef7c56b4d184f9cd431573238602d\nc2d26d8c8d5917d443ba2b548bab2839\nea06841d7501d07436b31862e09495f2\n1aa509f3d8c1d1e46bc58b7f28700afd\nfa46769b0817a8744f52551bb6d0494\ne29fbd1feb9659dc843ead12644a79bb\n70a16608ffc4988a81ff2b419139512d\nfdca3e183b3d1eca45e6e5503635ab1\n340daf71c78f53ac593ebeeedbff73b\n6f22991fc456e7a5f63bf7d908efc575\nc70310da520e0499c2c449c0c0579ec3\n630d612af74628053b28ebac0b25d03d\n8aeec0b2dc06c3df9274d508495753d2\nebb29b67c390a28ae7c7920f6a65a54d\ncc7b690e4d86b471397aad305ec14786\ned1aee9100f58e26b9b072e1f62798f5\n7fde281d5d2cf5bcdd2b32fd72ab4fd1\n159a8e14ee6dde05f7628281ecb18112\nbda845f53dace1a7ab610b0c94236463\nb2061e554db928f233442b36ae29e50f\nada8ce574ee473827c373e0e7470a338\nb3c7b4435c3d05164dc11e421397c795\n627819d2ea8ab9d9c97e4283c3b75587\n31fb6cfde1fec63897f7290a893b9fc7\n9cf60525ffd70735edcb0677ec04fe0f\n39ba41744345959256a9d1ce1d40376c\n24178c4efeadb8bbadd1969a2adc38a6\nf094521e8579917eea65c47b660136e7\n791f224b44cc67b084a05e54516915de\n1c7c7a7b20831d699cd2678508cc27b8\n857c44dca7247e5757baa11b83badc8f\n324d7108aea113f5b60d98504d0756f4\n546a90c5b673720bdb01c957364e77d0\na4ce7b3e633a6c802c5d34a902e568f9\n4b7f63ec83da1c25c59508b4e3a82241\n8c1eff1f448e33f4d56c79d3df7792df\n20b6d398c5b93a253adc3470b30138f3\nef05b57542cbf151e7e684d25d4dcaf0\nc4ebd90eb8496903f4ed05effa0aca88\n4b139ceeb56ca3a1991d32d5bc1065a5\na1a8920f91e2f3d25dc3653f8341633a\n9c868997ced1aec1dd904956425d1eae\n87bdac1e34f3e6146db2ac45db35c175\n53c1b173913bbc2b63d467b618e97922\n5e0fa460af0e5e898223ee0bdd50697\nece6da595e7754b3eb0f7c4d37fcbed7\nef511c56878424e4a6380f3fc7269ff\n91cace4fc498690119f778c7a8b12264\n9ec7016d6978216c94fadb3555028734\n41f47dbde823f29640d304b02c5868ea\n43720278eea721d27d18877f45b7c3cc\n7f5f4774132a25f3bc8126c23d2deb4c\n68712432581f8a855739643afbd8c926\n98cff1ad40ad54bcd05576067379976c\nf3abd87858a226aabdbfcb10306a3977\nfd4285c2c5050ff7e8bb25231731c25d\n68f6b68bac9f5d64d929fe644a1325a3\n37cfcafe606611d81246538126da07a8\ncb3bb5481f214d6bf51f77a6d7299806\nf1ce06c5259f771dc24182d0db4c6889\nf1ae0c66488c39c8ecf6d12e1f8958fc\n32198f8e02253fc0d1fbf79741fcd6d6\na98956209f6723a2dedecd2df7bf25e3\nd6f7727a3e5736437b9c6deef486a7d8\nfe154cb3a5dfdffc5ae252905262c0ed\nab347f12652bda8eab7f9d2da6fc61cf\ndd375d24e534101b33f2b52ebeafcf18\n7b9f151735391e7a14513156cf2b8d0d\nbaaf2c0d399f7329e4b6769f60f49f2b\nc708f4b2649d5b2c3070413801574f\n6b25476464cb4934e039576a17a0737d\nd3a550ef8b98f55b21cfc6e95839d798\ncf571875efbd60fd3d2617f9171b5ccb\n54a209955f7a47bed8e8a8a207ee5bd2\nc71a8fe3f0f14c074016166a4bbee8e7\n8b066cf28fc1319da11411fb873de302\n16cc2e83a7ed73b7789a00cfce0c4a8b\nde1fc3a00a11e87af62af8489541547b\n954efb8e36610d1bab610b0c94236463\n4f7392168ffafb8aea91375557c834d7\n62e50e8b0d1e3207e047a3592e8436e5\n145bd097a4b1cb8a44db04bfb021976e\nac36eabbb3b405d3473f10e6caaeca56\n1a9d0480b74d782698f5bccb3529a48d\ncade7495591007c2ec53fa9e4378e66\n9ceb81a09813d5f3d2565bc39479705a\nb233a919f5d2f6ac2ad490d4d7fae486\nd9acd27e2a9b12d3ae685ca100c909e8\nfa0218bd49f8cc6d593ebeeedbff73b\nb23dc14d788e954b3adc3470b30138f3\n9381eb770cfa95bf6bd365389d6dc6e7\nc2aacd7edbf9b9f98f83f8853be14620\nbcd6db8d23cbb9a9cf19858fd1963d10\n60ad8be4124fda92408442c6701ebe92\ndb7851745fb04cf732388c13cc4a0ba3\na47c0cddeb15490cca68d7e2f215cb19\nb50519cfcc841200e8f8c11a24c52ebb\nd83aea7de9d3d4242c37553db37ec752\n62d40988172e8c685ff61a3a2a0e2484\nbb2ed216b00409665634c21965ee6bab\n2434dbf29922a0a44cd8f60141ab9d6d\n85644a68a1d5f4cbab610b0c94236463\n2351fc9da59d571d9a404da609e2789f\n9156988a1a8645e727eb00c151c6f711\nc51dc6c9f8db03f51e8fb9cbb32d2cb3\nf080807207cc4859b2403dba7fd079eb\n543e257122d8fcfacdea6af8dfcc2b18\neb34216913b891ad54a1f8a695b8eea2\n8d5acb33654685d965715e89ab65beed\nbd98ff55306cdd592c509b30860f3d1f\nbeb06b61dad3795c95c7d6b48c371712\n4b24bbd3cb03206b58db0ef36af1d3c5\n932be91adcd83bcf1336f52415aa0825\n4a264b02e0d8fc214b3c42e318f3affc\n4fc8fd0b2951d0a0b035d20a1a3ca345\n1f0f9a821671271eaf288f952624966\n9d2bb2163cba8f54c0e58de02a99f31e\nc41b7b7d81b7ea5c60a641d065bc7a27\n7e40a1af933a05a6ab610b0c94236463\ndc35836a8c5bbdc919fb4103277a6b93\nb8469c14aeb092f74fde46457697d80\n440e3ad55b603cb1b071d266df0a3bf5\n89b66c5a15e9c00b9b43c20267c98bff\naa26a6735be82e5da7de3fd12bcc8851\nfa1e1a91e66faf411de55fee5ac2c5c2\n2de1b39fe6dd601f1e03b4418ed1a4f3\ncceaeed0d8cf5bdbca68d7e2f215cb19\n4f863fb727ffab64ffffee5f2b1293da\na32e10cb422cca67eb9f96cccd63af6f\n9fdbd10380d433d0f564f8e3eeb8449e\nd87a4ae5c2a768d4283b00891f680579\n9dc28627bd03a2201e606a18cee01990\n1589b8a09c8bd67551d07d3e9ad67a2\nab1e7ae9a7e9a14a3ddab7e2e0338094\na54fbc57992e90b9593ebeeedbff73b\nc7631617fc36715c37363131ac7e8139\nc3cc9a21c0732ef9b2f052bd9ec28053\n9a7f267890144d4a7afe2ae8eef63a8c\n2b5d99fd8dbdb44141cf86c757faf4f9\n4991f4fe771cae7f18b14db3b83de9ff\n642883f79c9131d842c47c8032438a1\nd6b6f8854bda98a6ff458e602ebccbb0\nc8962afab63de682a9ed6dce8b2a37bc\n1de7678ce07c845e91ae3c216ac0d5c8\n85293b59b0f9cc1e593ebeeedbff73b\n330d44833e1b4b168b38796afe7ee552\nea0ee7b60919e35bb1dd813f3c0d0dd\n8efa91e2f3e2eaf7bdc82a7932cd806\naa7dbd4acb4878c9620f1933fa113025\n25220d902288e352632c9ddc45ef4651\n854ded41212e767c12132bd78ab15cd5\n7430f611140fffb68101accd22c701b9\ne4c4c35bffae3ea375a82b88fe6e733f\n608936a307740f5df7628281ecb18112\n8b62bb92edcede30886ee1269f93c784\n4c0aeda1ff524383ce4f58889c7849e3\nf0f3a9b0aed5ff1cf1c0e03f321d0b20\n5e9a36c61649952f555740dfce3e4a45\n923e063599dc9ac7679edf1f9e4dc0a7\nf42ca56e450c3258b4602b4f31d3d1c0\n361b60c0143d91c3593ebeeedbff73b\n9e57afbc186ff5387c0c12d35fb75ce3\n4d251436236babb87189b31b3e8c8ef3\n3600642b1b3a91422d83e0e365c4ccb4\n75e62dceb6fc577e593ebeeedbff73b\n3a525a1286d4879ed35d1c787a8f626e\n1739665585ec210fb04cb542e2c50eb4\n21b8e95a91fe7f044fa89de6e82c448\ned90b3d1d41c46a82b09cb731e7a040f\nbcff6c5cb4127aa15e0ae65e074d3ee1\nf2ad41a5ffb961c4276813f95a6b7283\n75f69b9fc22c4c04eaf288f952624966\n5cc8f84b9b53b30bdfa4ff010b8b9d1c\nfd2596a60338b08b318694f1cc6fb1f8\nbed924f1f1208f37f0bb193323cf7c6b\n3fdf33059301e1d248fda83c10428379\n2efc425b95430055f7406d785bf36110\n188505b2fc90ffad780bc2708a85ba9a\n7ac7a4f53a89ecb48f966131432ef871\n6ab5321efc4b3772492d9da2668ec34c\n8904f205681acc62dd8a663469942954\nee71654238a92dabddcbda91db0cadbd\n8f71670ddaa954c963860d683ccd0da\n9d436dcfd61622d6199833105dc1a90d\n7162718ec5f39640701dd519cbbba0c4\nce863933e9e5193322d11432250c3331\n527bc61087456aebbf27ea70a1a65d9b\n828940d7035de09f62e682c9809bff14\n9d5815f9ba8f0ddb19fb4103277a6b93\n5895b40b8c4d103ac60ea5009df4047d\ncd06c0f38b4db9b4c397356311cbeea4\n9f47842c7fbca0be593ebeeedbff73b\n160887408a65f88f67903707764646db\nf23636645d46b743ad4f8dd77b0e70fc\n60bca735b8dc8e487c4364ecff196aea\n35d44bbbaa9763a1b1b2d85ddcddb619\nb8909a5d6702f6f31680549bb1d1b739\ndbf6c49376ac9591c8e7e2daa5cdb0c4\na247bf1e595abd266080784e4b7841e1\nb913678e74f02db521f0090670ee931f\na2b3c5312188bfc2789b222a43900931\n2e2f34305ef8cbc1533ccec14d70360b\n625ffe6a78f1697d87ea4c09ea2202b1\n8092428a6a37b0b9970d4dd67731c543\n9177c05744b77b6f6157c3a167984fee\na4c8e8816a1c5f54e6e3ac4cbdf2e092\nfa5a0b7134e3e9ecb04cb542e2c50eb4\n557d878e747fa35db161f36d4e309050\n8fd43f2955e4d397b822d48a43773c62\n4373d31c2ac1d0bc57278947e7c4dc7\n8f6760875b37750b19fb4103277a6b93\nb1cfde20b5b0194af91663a74ccd2338\naddd6a0ef4f55a66d810b14a81e12eca\n9b1a7c1df1ecc3c0cabc196a7f35f1aa\na659b730251c2da7b3660298957b3f6f\nfbd0055862daa31a2d8ad3188383fcc8\na7bab06221eb932e79c251b4a7838829\nff5aa5eb5ed4041c1ef9727a7f361b49\n2fc5cf498b0fa6de1525e8c8552c3a9c\n50c1477484688492bbc7a6acbd8f058b\n5e217fd0fd2b1ce7d3a80acddc1093d9\ne963f9423720600cf506f5cb7d8ce57\n9ea95280cf81f9c5c151419181ef256\n89f4fca1f562f9103264e1c4b42b3e14\n2a07656f030d682536c2acd70c777ff0\nd510edfd51ee8a942dd4967de4160123\n507d740bec19238d18f52c8a4cfcbe33\nde3589ff77017c7df15e23b99997e42b\ne09005010542d8193d28966b7ef7a935\nfc3350236b25f198f2b841e334abcf20\n785505b155a724cb6e92e37d6e2c659\nab350e81ff71034434895070e6a9b93\n2d5cd8bb42310f3eb04cb542e2c50eb4\n2e5d49e60a1f3abae9deec47d8412ee\n2eb0a772c36144eba3f22b4b00de6dfb\nc0580211c63f4fc9cd3f9e8648111d1\ne4e660790950c277cb1362eb0fa793e9\n9f6d960c57515fb491264d3b5d25d83f\nd0dd5aeb1384125bd0cd98de57e6803\n12c6a146bde9f6f5c42c7f2c2bc04572\na8418bfeae7c4cffaf802a9d0ab09410\n5209919e8e113ce3e09a21c3ea84d95c\n725041f78f7c4274515d5d6477915e98\n903dda9c731b73acf661d29029f2c819\nd7af346415eebe008f36404f302c9440\n395e53e3fbd2e717557ab4b593540354\n374c336ccd894dca717b2a5841d92\nbc65c38188f1e72c532e8683617554c4\nfce717669ca521884e1a9fae5403e01f\nb0b942c484db4fd7afb07a946d621b3c\n4faad33041ab0f80dd8479d78721b157\n7d756e083f671c091b17743c18fb63dc\n2814c27c1ac5370a30eeafee78afcff2\n1dab0c0c72f9cd6f593ebeeedbff73b\nf563b39b846922f22ea98d69e91ba870\n9955ce757c0bfaa5843ead12644a79bb\n13b60f5be9af777cc3bd24f986301745\n81d3c178c611199831e05c4a367a9ebd\n7d6453e00288991c61bf0ba277ea473b\nae4f28a7c4e22d9535dda488a4bbb1e1\naadc03f6499b5ec5b60747861a92b009\n78fa28a031f1042f3bd16075d47dda52\n14c77d23044bdfd5327289c00b6dc9ca\ncb7cee345d3e7f75593ebeeedbff73b\nae7af4ea5c63938878585c45c8af09b2\nfabbe9b0db0846a8a823d9fb27aec30\n3946d23c7716c30d91857b3d2399f830\ne0b897af3eee5ec8d8ac5d7ad0953104\nad1428e73eafd4a6660dac8da5753e14\n83410e32b49b4f9957aa81cfc66d7b2f\nc9241b6f755e7134f564f8e3eeb8449e\n9df9d1c02e9013e7ef10d8e00e9d279c\nbdbb64bc1fac0cded0176f9a144100cd\n9e6ba78f80fbbfde5369e32fb818f337\naf0c4f45e0444ecb01c58badc8bbc39\nf0f42d26c4a0be52a53016a50348cce3\n6c4e0987896fc5df30c7f4adc2c33ad6\n7d804eb69e0eedba450447b3239e17e9\n7ae657b39aa2be68ccd1bcd57588acf8\n81c3f54ae8f5c434970d4dd67731c543\n6f48fa0ce33292249ac506757b31ba4\nd9ed3fd60f4d42aa5f75bf17509b9bf8\ndbadee62f27c31e9214c7379b0e80b7b\nbe129d18d202650f6d3e11439c6c22c8\nc2a8f4c920b6f7c24097c269bc92f53\n70e157cf567eb3aa79b26024bd30ee26\nd53620b3769bcbd664518692a46d31bd\n7c92e64a328f1b968f6cc6fefa15515a\n349f3f4d65f64c1235836c728d324152\nc943da3efba4955d3ed66fc182459935\n4ad0739a957f27dcad2fb8cd0793fa9a\na7908e8fb217aff63d6e282938a47f9e\n52dd0fac460adb45e2879d5d9f05633\nc37832a4b22cc13e6654a522b30cb96\n2b1f1929a6a5a6517b431cae0dd70ed\nea49f8fc66df2b1819fb4103277a6b93\nfbb78f2c30bfa014703a79ff0df43433\n5fd7cd5ee43e0cf0eaf288f952624966\n72252b1486f22ce3490e0c0c00192ce3\n66df0b92b5712c0c917b96045c9b6dea\n697161cff5d04992a4dc2316a7e66d36\n94699d5b8a8682067ff6ace05b36a5\naa8b70ecfdd237bbf91663a74ccd2338\na3970706133f033861b5428f30b376d\n6aac93deb58a35f56a3237a661a9fa9\n59056471bc89a215b3fdb1a7c9a60207\n3ffeb5868d6f5dbd8c46a3a266762d7\n4444828846fc38269fbbbda5e1d9195c\nc44ab66d4938052a36e4b0ae0f52067b\n389751629226a005cbde89e0c48a01bf\nb16b22f49cfd1d2541dc8e09670d2b5d\n21addfde981f0e3445c6cb69e0968783\n5161e139d0a58822a773e2c829d72a13\n8e2912b6699ea81c3db8e8b3ea723cce\n35e15a666990625a1aa34bfa6235956d\nbfc0c2ab5bcaa2df9442d81743a735a1\n4d33fb26aa7baeef88dcbe86402c7c15\naf978eb2f903536e5b9e30b3558dc362\n51a14c2d62a2963d86234e915108e6a\n8078da16e565846181ae47ffdeb90d54\n194ca5fd43b1c04be9ada1586a8c9364\nef6ec9f481a67015ee3907b60a74e8f8\nad7dd9434ad5f61db759217db94d2883\n6a5f98654b75a18c593ebeeedbff73b\ndc079a42bd90dcd9593ebeeedbff73b\n5649e603e8a9b2c295c539fc7d92aba\n5ec9b56623d25cf1e7d9f0fed41b005f\n9aa3c3c03d111640490ad276cd2af3a4\nc47c9d6c6c8291d61008a8e167b50735\ndaf0e2193c5d1096540b442e651b7ad2\n2c3a679d6640a93abd16d4490a10a752\n23e7767edf2f861e58c75a3520cc91a3\ne8840d7ef11fc9d4a54b9afa882a89ed\nc22b660349b21edb246c4171f2c393b\n56652a99cd43b77744dace04559bf008\n1837416f6aef641bafcd24b8661a2fd9\n6900b73a93136591bbc7a6acbd8f058b\n2723924e712ccf1b98f5bccb3529a48d\n212a8cab17af2454f8b0f8060696d1e7\n35da4cce6961e4f2ce9d15b850baf786\n2a7fb9c95b0e8eec8de75bb03756213a\nd1784efbc243913940ef1c8b63a628f9\n8f4ba17b19d2d5a0ee50221b2a22a6a4\n181f594fb55e7d811b17743c18fb63dc\n8d0472ffc368a8e431b5f9e34ff03906\n5660a383172900a6593ebeeedbff73b\n61711ab3e6fe99ef1c6aa36e5af1449\n68c58177f6ead1ba9f2349486c570dd4\nea9a266329617a165298386582afecd3\n9805e011defa15f37fbc060fd555478\n921a1610397b62a7db03e4f5c01cf109\n4e43e29a68b72d9fd9246d8a288bd77\nde4d86efa8bdc67684ad2abb799c0f8d\ncef25c3f7412814b4b3c42e318f3affc\ne3f5405a4843343e91fa1c643766450d\n3a693ca4add94bdffe1db2d0679386ff\n5ca1ef55ff5f68501921e7a85cf9da35\n8fb75426dae65b66a12caf23554642ba\n81a032241031c2e5f97ef3b999ddb957\nbc007cba6288e3503790005cfb7639de\n2f458ca5f25954ea9f2349486c570dd4\n549f6b723e4bcc91e2cded16638068b\n4198c7de2a9f450bf07fee5fc5c45ee2\n8f3545743c58b730a92a1b6e1dab7c04\n7c9e1876b1643e93f9377e1922a21892\n7b7c14e8fd0521bde4511d9a59e40339\n790e42476f871e29e0a954c49a0c328b\n67386a2dcd3be10b8a09f7075b904cc\na2b93b7632e98eb944949d7685cb63ea\n1b17f84df81e0165e336453ccee6eebc\n951e63303cf5eed1cd4a89b0fee32930\nde2bb45b7e200d6916d102513d0383c0\n6c50fa0b3f1bf58e178548484b14e6f6\naeb5447d59fbe49add7f28fcffe810f9\n980d28e46333db492878c1c13b7f1ba6\ne5dee68606d47d3aca9b40e76e725878\n277e5fc4d325fb1381f667e2a25e0619\naef57ed7044469ba25e322bb8575a360\n4b7785695ead572e175255c493aea87b\n37b94e004ee1f7847c63c1e5173c47a8\n1c54ad94269d0e786abe5555a3b447d\n9cff96bae9963ceab3c971099efd7fb9\ne03c28dbfe1f2d9638bb8355830240f9\n5a2da4b824000054d8390ec1728b1e3e\n5a0fb2d34e0dc4445369e32fb818f337\n1f74a21433c43c784209d14d674fb332\nca2204f36a01e3515b943c35c765be0\n51ccdee7080b11dde21111e385a0661f\n7822a1ef8d1eca8af51f77a6d7299806\nda07e1f3d336532c2346f81928a3e5eb\nd3b0fe62f115f0588bd90ebf95555835\n8d8d2859338eadc7bd16d4490a10a752\n9e014bda9022a09095369230ec06c72e\n3bc7d4d59503cc92c1a25f36f85c3fd6\n11be630221243013c087ef7d7cf00301\nfff8834b262dcf4aa89012425147541b\ne0f30a6af7bb75b8265d1076b4b6c5c\n5f93127875373b8657f15fc9385a8a01\nec836d156e8157fec862eec8232fff1e\nfc24d012f6b12036aa1f8e0da2ec8814\nb99058a0054ea0f8387625a8fa2965\n4760c46c66461a79dd3adf3090c701f7\nfd2c3219b28d98768dd711af5650bdcf\n55d89b64ec895fbbf2ca754af3aaf35\nb55d24ed786a8279ad2d3ca7f660ddd\n200324d0bafb1c2e19fb4103277a6b93\n5c69960804458df5255ac1b93c90af25\n4820b629990b6a20860f0fe00407fa79\n33eb5d4c6ebbd6b1327289c00b6dc9ca\n9df8e759e084a988fb1eb57de0e2e513\n33db94c3b6edf1efc3bd24f986301745\n9f57f0155caf1c15404a78e172d68d45\ne2965d9df7974ba25369e32fb818f337\n9f4ad442e9cb51125a31d91ec836a511\n54f81ca969051442e9362c2e21d265df\nf8e0bc0d84a8f76cece93aa52d895bf1\nffa7680b18ede5cfedeed2a7fa983956\n61177f1b2f1dc0b394fadb3555028734\nf6ef2cc4bb31d953a40f4c396e0c7dce\n4f17918826b64fc8d5cba62773b8025b\n8b4a2a614f7b2a9510edd100dffd8d85\n882d5d8f49e52e81a53276bbe109327a\n2bec1d8c0e8a1b3b7b98092cf509b83\nead777f4e8c5bc346ad8177a9d42d3c9\ndca66ae8a95f7f70552a7b4f3448af2e\n35503a69108fd2a790a1391b3fdfda26\n15410f94aefb4982ded10515704c9720\nbfd09a13ca8d039d24d3570ac22df4c2\n7eeb7a4c2f3f1a0505babec7f39a63c\n614ee0988dd6661d9559145fbf4877c0\n36f7e8086a8849fd5883ca9b41ac387\n2a9da31660f0c0b73505e48e4fe20c28\n447281db87623862413102507b68bcb5\nde431e15a30f57f27d5681734ecfe522\ncd74a153b605c6a3cabc196a7f35f1aa\n23d1a49a9a29c776ab9281d3b84673cf\nf01f6f88519a58e0e015ffca2672af29\n20f82d98b188f16cad885ade4bf3150c\nb337556f36a5e1bb9a2041f674671d05\na8b0e2a953f3ab6a68b3e52c71552a50\n4b11124f5ccf051086708ca48528bc8c\n75a451559a48b42f6e525b37bf033529\nc2f02274b4dd4431b4e7c0374e7ddf69\n82dffa2751f8e77643c18769338212d9\na53114ab5cfe2048f51f77a6d7299806\n69eaeff55a5a9c5568d1b9a1d97e2846\n38f6d097455e58053d6e282938a47f9e\n2097fba74518dc6e4a949e376cab703f\n1731d53ab8b8973973800789ccff9705\nc35d42881295d9cb86debb0a33c851f8\n990adbf32c6452878eb3bc6c6d15f9bf\nee5f19266a3ed535a6491c91cd8d7770\n4f5780a3a0466469e5c864cdd2c65afa\n2a98f28036915f805510d59f3ab1ed64\nc0036465dcbeed6a912f115faa04d51\nd20569519e7920bc38cb7d8503a3164\n978dcc1e9c3f9a3f92a31ec18c4e190a\n6fc69edce1f6d0d5e7e684d25d4dcaf0\n13a8c6129a8e80379904131b50e062f6\nc0228ff42e79e272db039d8689a74349\n1f75847dbddcd34afac76e6fcbdc3631\nd28912450f62b4efa8699b6183baa203\n9c1565c6bc50ba7668bdb5c1c01fdb25\n6db11b763b7c3e76fd5b2dc3df6521d5\n62852049a9f049cca67a896eea47bc81\n46e6485e5bea085a2b450c5933dcfcb6\n6afbcbdc7ab9357270db6230313d3ce\ndd4a6a955c925d7762fd9a1e220aec64\n6ec8a2dc3bae5a9b8b709c58c1c5ee96\n93e20cc90bc4ead618a6353ea60f11b6\n948923ab76b8d9efee7d178666aae23d\n4b3f84ca13baf80be0c381fdfcdec36d\n9c0ed8415a0a9e5c49b1e464b71de577\n6cbcf4636ee5593f75a82b88fe6e733f\n12aec536f7d558f9342398ca9dc32672\n63e91cd73f169af037f251300f603b8c\n42486ef061ba8d2e9deec47d8412ee\n64895a5b618e8a6fb40f0ac0fb9a650d\n7ab84ec80e11d03fe8daab4fe9011efe\n5b70eb12242d4a03fb6ca00006f2c76c\nf49df2996692bda02c528d33bca1ac2\nb32b7dd742f915581e6dcc1ddc222f68\n3897ad42f73988a62406c215cad9df09\n81d5e6d8bef76a51ba6c2a353e21dbe8\ncd9ef0c92376e604963cdf8b01c64c16\n9bc53cf72e1b969deda761b10992452d\ndd8de6dddffe302f84633b41c8a09fa0\n63484c8326f8fe73cb922bcc33df0268\n8a4e1f7cc3bb76da9c9245e96a55cc5\n924761d5171a0682e5c139899870edf3\n25e718b0164f54d5a9f35e635b7e48b\n150da8f39b055ad0b827fae7748988f\nbc0ef0dc1d69ed4c852bb95bccedfda9\n5c0d256f2bf7559bfc8914dd77284b3\n22b11483d6a2461814038d588fd1342f\n875aeeeda0a93481f51fa0238791f5dc\nc53ec0141303c1eb4508add1163b4513\n3746c2c38faaec395304a08899f58b0b\n29ec7e1541397b0e5ae252905262c0ed\n5d9f1c6f9ce9333994c6d0877753424f\nbd088259c8ee711c3a4642fe4c259750\nae1b6411a089bfabfff16555386d173d\ne61751c485c937fa717300ec93e59c63\nd3c677deb7e829f05728afe1a12978b\n9294163aacac61f1ad5c4e4076e069c\nc6c8b57de92a243abb3f330b15ee1442\na39749334717e07098f49a8972f75c6a\n8f5c8cdc0fc4d84aaa4296a266fbc9c0\n6c930734ea1ea82476d342de8af45d5\na053322861de88a21725b4111480fea8\na693b27591fe6ca2fee6b7db2f5f826\nc8b6897dac50a2c3eaf288f952624966\n4dbe50ba1f562fb236413faee81117b1\n592e8295672e1419e82c020151d41155\nc88d26d20803d385e8f8c11a24c52ebb\n36a6725f30a73f0e91ffcd1d3522e1d6\n81a7007ead4051cd22ed3259ee7e608a\na9698105867e9818f91663a74ccd2338\n192afbc1f0977f74861e0db9bb7afc48\ne1e2ab3bc1d604752b4aa1e18549d620\n7527c6db4e52d511db01c957364e77d0\n2b8a9009d91dc09863d467b618e97922\nde6e76b4be0db5a0f81b347089add3de\n8d87711b1fc30783f06800d5696e457f\nf6f563d47fcdfe82d67386763ad34603\n34df668babda666f7b0a2c22acd10794\n7cf9738a01e47dd6a123ce0dff5bf4e6\ncbd547bfb6b7d8e54b50faf1a96496ef\nf2bfa61e1a8894dd1071797a42296ada\na2bdc3a6cb13bf197a969536c4ba7f8\nb543411f1fce1f30e6fe3612af521500\n8d98a04f7217d91ad85fd2587ec5bc19\ne9e5da988215f06513292732a7b1ed9a\nff143cdc22f23608cbde89e0c48a01bf\nfeedba483f628b8f584e3f372dd1a2d\nf1241a9c69cf35feb3104e94482ea9ce\nbca2ce9beb8b9a3c909c248d0d9da9f5\n8a484fb8faf9dea01495d00ce1193982\n54eb2ff4ee8889f65ff59927d484940e\nf8a6cb92786bbafce8f8c11a24c52ebb\nacd97b28893414c41e4599068fc59335\ne12cf322cdec8ceb63860d683ccd0da\n4781d90373fffdcaf9aec59741c69cf7\nf551048075b5042d7d6d37ceb4807b31\nd9d4b2af7ada1426fc385a284336f217\n48e31e3a3e2aa5c0cabc196a7f35f1aa\na9ee7aaca080a86798e0d1738edd4f19\n996265f3d98601ea3bec56bff764ba78\n6f271a6c941038a6efc579970fcfc006\nc1ccf7d15c32b156cc2af5791bd669b8\nb28f66155cb67bbbf182e66e17d08d5a\n3247d4bf8bbcbeb6840bf649c20f40cb\n62b02c1b27a5793fef188758bf2e3a30\nd52584133659bcb24b3c42e318f3affc\nfcdc852692f43041fdac1e69603928f\nbdfcf2086fafb0fec8a04932b17782af\n1e4eb3bad18b75f23d6e282938a47f9e\n77a5f44875119a6b5369e32fb818f337\n88d523dbcd94be8a4af957103f4767ac\nfb74336a6192c4787afee304cce81d6f\nd4a80e7a92e2c4f98981b7cb87854e68\ncbe2e3145eea246cff40be78d008f276\nfbcaa3c4d17b8b7c9b0790357cd0493\nc1ae15118f856e5e3759b16de9b6963c\nf2458aaf4ab3e0585d7543afa4b9b4e8\n4da36f40feb209fedb52360728b4b83\n69e8d0b7366591dc578d107c71db28ac\n98e6845fd0c59edef1a8499ee563cb43\n42265c6cc8d24be09cd3f9e8648111d1\nfaf387a11f3f944a75dc34583b0239b8\n75850c6e67073a2a593ebeeedbff73b\n26b508c478a9d363f51fa0238791f5dc\n9507b4091c4d02a37e1b1f098db17ba1\n2b69e899da0c15cfb40f0ac0fb9a650d\n70ed97376be1d0a84301558fdb0b2522\n15d2efe697d229aceaf288f952624966\n669568cff92228b4e6fe3612af521500\n1843c388615d12dacb16624e184454c\ndd3d82569d4cb2b5af140afd78cbb542\n1bb31ffee286d9687597e1f94410131a\n30ed3ecec491408f7ea607586f414f8a\n47c991f72eaa53c6a8737fcf23389014\nd6f95d8ef06e6db3ba0604df5d71bead\n9ac58aaf9989a0911f98c0761af40e04\n3e4a24e15c63edb95554764d7c3c0e03\n3c56ceef171fa142126c0b0ea3ea0a2c\nc7f31b9900a1a7644785ad2feb797e\n999c10445b9126fabda72093f9b5aa73\nca7dc4294b1080acf256e6841810978e\nea295fb4335e3499f51fa0238791f5dc\na3feac5d875f764c1961e650f3cfa396\na28a2bf7c899fa38baaf4e0b7520fb81\n13534db5278d476d98e0d1738edd4f19\n8951dddfc3cd6b08e8f8c11a24c52ebb\n2fbf971de875a1277df50de84a56e505\n1908750cd67208e0c4f370f57df9b202\n1824d5cfb7472fcf9d5cfc3a8d7af21d\n995a4ed2a96d7c60140c975cafb9782e\nc29c56fe616c0986e7e684d25d4dcaf0\n427c7655012b6cc5593ebeeedbff73b\nb593b430e799ac4af256e6841810978e\n2bc178dc567eaaa7e01b76a0b6e5fec5\n3aeae4150fce9f79ed3b18fbf7db0d\n27edeaa6c6e2e670ce4f274577283b16\n1bfe2d5a13298b40eaf288f952624966\n99479cff448798a358db0ef36af1d3c5\na5a855d1b710641ba90692240cb38ca4\ne68c603dc62dbbe5a1281b4d4bd889d7\nfff199c067a6e0f019fb4103277a6b93\nd8e1f6781276eb1af34e56d1d9ad8c65\nb33ce45211c0950e3ca067e8715715df\n48acfed2c1f2d42cbd16d4490a10a752\nc344088939a4d4e4c8687ff9b0b4e4ac\n359e995834270ead614871b18a2b1957\n3ad0d0becf611ddec6fd9dc5af8f81a4\ndc6308addc91fd9eb9e8bdc9c4a49aa2\n9ea38e213819c55680dbca6e7b64a4bc\nee5cfabb3bbf211f4f46734d27ff5aef\ne323d123c60c2f2e3c777ea9821e1518\n23c4b23f2e74d6232fee6b7db2f5f826\n4264fffd38596e3a60f888b4e2fd3e4\n3acbbce6f05c2623fdb2be860bb16c8c\n4ed1591fa1c692df44265a262962e6ef\n9e3fd54c2e7dc4204b19d2c99e22ffe0\ne708bde6a2ffa4cd1ed1d681aa8388f6\n485fd17a8679ebea638c2f4fcd9a8e7b\n7a32d6d22231a58d32388c13cc4a0ba3\n93b4258c377ade381deb48513aeadf93\nf7efea85176f8cd01f274b4885739ec6\nd0fcb2993379cf9ed72ff9ec64cb596d\nc8b49063b5c805ff62a510b8f97c658e\n28cb2ca084164fc15da92fb9f7555d73\nb69fd1046deab785b3a010e5a9dcf3a8\na28bfe80037449cf5eea3e3d89293379\ne46d448389af3fe4500158c23c4c5a8e\nb216efa7925318b1e466d83a76d6230b\n79a9aa1e8b3b108cc48383e281a276ec\nd5a7ef075ff5e17a29f849a67b494905\n6e0e701ad50f5f8c63a3732f072a64ec\n2e0f5e0ed5acb122597976c675750537\n6c9f559b0adfbd6985d87e0aa09f3117\n336fc8a43b3120932c48d6b905457dcf\n777aa4f75debc4e8acbda81da5062d85\n6a62d0d3c8eeda396ba836372832f055\n3c389c01263d2eaf2b3e9b6eb52d35df\n25c859754525fdf713dd6eafe1477be1\n581808bf8d8e1d2448eb521885c87e13\n130c64a2c0232fd03fc2ef4fdfb57f60\ndb8c451f7b01ae88f91663a74ccd2338\n810e4815b0ef6f1314038d588fd1342f\n691785b64177ec582461aedb84ab8436\n2b73510e4eb3d8ca87b66c61c1f7b8e4\n725af978a11bb5c383a0857b7b9398b1\n81bb52e7a83d1b3e9c75eb4326997fae\n9b08d6288f208362dac562275d66ec29\nddc31f9e7064be80f51f77a6d7299806\n411444708e41ec314b3c42e318f3affc\n126ed5982cdd56243b02598625ec1bf7\n9451b957aa36883d6e6c0340d644e56e\nadfda3aefb86478319fb4103277a6b93\n3fc4cf00b8db1f03b086b372af6b049e\n11d5e99e8faa10ff3564590844406360\nf1e174f8ac0f5254490ad276cd2af3a4\n761b8ef3b41a84b82f84cb7932f866fd\n5a71471acef6f8153d4d11ac89066d36\nfafd58ba00e8590119abd93be2967664\n7446fc82485002938db1c6c15d875c99\ne21b95b9dbfcbed28ccbec49bbc083f6\nb6de66042941f5691301e24e9e27a9c3\nd8087961b06c9f7d4b3c42e318f3affc\n94463eb34be49887c3bd24f986301745\n933a9330407d51b6a8cfd114c4b34e97\nc49d9fb6c8b32b265beaf00da5b709c2\neda8029bfa428c38f6ab3cbe0907fba9\n63fe6b5903df38a0ba0f037fee399b18\n4e218928736f1e2bf35a12c589281a9\n24bfcb97fb60fab7e812c99c6645894b\ne2b1b05de388e7db3b52c6376e0759d3\n8701046c07327e3063f9008a349ae40b\nb3d686456bd951d42ea98d69e91ba870\n9e2a48a4263b77a06f37a8be59c15bbb\n8a01d1d686c4b0d3593ebeeedbff73b\nd835768fc0cc3300ccda8d28b44378b7\n73c8bd191a664678f5ba7cb98f498b13\nc4e36c36679f27887586d00bc0d54b2e\n45cc71dc2483972e742728b30848ed03\na00bdbddfe3511208dd711af5650bdcf\n1f8098eb2fe947398dc38b92af981645\n26d36969b0ef62b1c2c449c0c0579ec3\n57f383c1eba6bdbbbb07e1e44f4c30aa\n423d4e5cadc6dbdaeaf288f952624966\nc06d35db226f47d4de03ab2a27ba7531\na109fd29656079e714b96b665a8ac321\n4735568bd188aefcb8e1b99345a5afd4\nb53bbce3774bba2f5ade1effc174de\n8659f0f422096e3d26f6c8b5b75f0ee9\na2d798bef501195c1ecf441429b11ade\n1af8bfa4eda36bd697c597ba4db02ec7\n73e342d3bef02e923d6e282938a47f9e\nfd4dd071f73ca07355eab99951962891\n89f4bb22cb53fecaa0fded058fdc8ec2\nb821fbd0ea6086ce9670b99b613138c4\nad5ef1b493028c0bd810b14a81e12eca\nff99fb65f116dc1b24e1cdbdc9a22905\n4076958da964edb95ff61a3a2a0e2484\ndb09115f98ebf4bc20768660cf080d12\naa5fe2c92f01ce0a30cbbda41991e4d0\n896e8970c81b33d068b6f94bb42f6cd5\n92ee5842113109b05550af5454dbad36\n28e546337f4a5188e6fe3612af521500\n857c4d70af14d9d9e9b88e9734c4cd55\n5b23328fa6d5382d295b24579cf55b8\nc5ded02dd51a5482e0c5923879d79f21\n5f67ee55d76bf582c41aee3d4c9d0c9d\n4b529738e7b5f910288138d7d3420148\n10552f968486cd0ad138a53ab0d038a5\n48b67f0f05994da092a31ec18c4e190a\na7e4616a2a315dfac5ddc26ef5560e77\n79745b6df9447d3419abd93be2967664\ne92822b0b73f0ad6976792e9f0f98e95\nabc6cff85c8282cf6fe2eb61cd6e74e5\nf100212c5848f7d3898b4cd86bfa936c\n2b64dbb623899dec7bdbd1926dd38bdb\ne8342d53ae929341b6feeb62eb9d939b\n31e343b657358ed0a4e97ce1d10a5ae6\n44a17a70369e803cc7623e33dc7256f2\n9abd7abc15a5f7893eb520ff7cd241f0\n1db7c7411c5d957918f52c8a4cfcbe33\n1053897adff12c7839c40eb1ac71e4c1\n6e213a2ecc95c30544175b4dddf5be08\ne0fd6cc8f2e62ed6d1151897037aebc\n930d2bd446a43e0ee8058cf23f6382c1\n953196a4e8a813e8fc909e63d58b00ba\n26205c6a0a25d5f884099151cc96de84\nd0e419a11fd8f4bce589b08489d157d\nf0e243acfc5605bdcadbe66b40c67b2a\ne809c16325be020c795085b4d203932\nbf28dd5d38900b1314038d588fd1342f\n75fa63a7576e2f509ae676623bdd3284\n58447a958c4af154942bb07caacf4df3\n67d7f94aa2ab272bab610b0c94236463\n611f5a21a6f9ad3d7635d2483a62c61e\n29bfdc7d14677c6b3d6d3c2fb78160fd\n656ebb911f3963a81a291b1dd4baf49\nce99ea72f222e7d58bf939d21e50c410\naa2d1614a9bbaff7e6fe3612af521500\n79c3dfc2f90a5cb619fb4103277a6b93\n91ceafb0b1b2008d98223ee0bdd50697\n35eeee5f998f24e8a505985405786f0\n8258954eb7929aa13542091189dc62b5\n4a11e50e8e5c79e82cc460e9d064e57d\nb2cfba8ee63abd118fac6a8030e15671\nd4ea100ff8f94edadb1109c64edb2c4c\n117f6ac4bcd75d8b4ad65adb06bbae49\n69f5626d5dda497c2af11d59b11e0199\nfab5f1daa52608365768db72e79a5dd5\nc5dd746e08121f8f71a782a4379556c7\nb85dd5219ebb52455a1bada754e9e91\n10f2a1cbaee4101896e12b33feac8da2\na6acd78fda77bddc52862c62c571b1e\n118a7d6a1dfbbc14300703f05f8ccc25\n9ecb691016c6295a50f06b72cb7e77fd\n4ae401feb8499f5c9f2349486c570dd4\n628f7a321ce4f90fcf01bc59d215f0\nbcaf0bf7eebb7d7f4fa36fe4cfcd8f6b\n64702fcd98b04ad21206ff076758ec85\n2bd1439924492a3fcea6c8d9a419e8e0\n8d91786e13808f73e4248277d408e4b7\n9beb39285a581fa1f2e202d571b458dc\n15c66bed7e6bdf85160c7765c528fad6\n99a3e307a8e08afa575f974bef523d40\nd7bd0812487f786b19c5fea91449201\nb06afb4d11ee4eb9ce4f274577283b16\na613610e1b9eda601e20309da4bdcbd0\n89622aab3cd599787088864e604378e7\n16fd88a99f7d4c857e484225f3bb4a8\nf13ce2c21e2ebba4b40f0ac0fb9a650d\n8a66b03841197e23d93b543e2efc700b\n23833969c0011b8e98494085d68ad6a0\nac5a9b215a7d5be123448769dbb64afa\n5ea73e05bb96272b444ac0ff78e79b7\n5b27e06a178965c5300703f05f8ccc25\ncc4a8ecc0f3b4ca1dc0efee4b442070\n7550aa9d29f252611431dc89d81d788b\n5cc378efd61f0333afd8078191062c7f\n24223e3bbba442ffd19c4e0cc3eb15dd\n781a7cb1d7f9347d7ec5a98b3b8c425f\nf8ccc92a6a5d20875eea3e3d89293379\neab4334a06fafb7171c3cf047830ec1f\n5e9e4d6551b775d8cabc196a7f35f1aa\nb23656fc9bf32eaffa22474bb826a278\n45e5b5efe95ae98ff2be27e9cc5f92fd\n5d1c69aafe90cc3114038d588fd1342f\na2bd385c411aa690c795085b4d203932\nf261a5d15d8dd1cee16219238f4e984c\nf37c09d7ebf82cd642ac3369eef7a7b2\n57ceb2601802a37e534fa06200d07790\n755f23d93b06bc168cbb8bac2032149c\nfd124209f0bc1222f34e56d1d9ad8c65\n86ba626309daedc8e8f8c11a24c52ebb\n5d2ff1a62e9d58baeaf288f952624966\n4a7cafc9f91cde86200f88c4e37ac5ad\n7e728818848f191bee7d178666aae23d\n3d164c442e5788e25c7a30510dbe4e9f\nc9276f00529396bb35836c728d324152\n8c6348fe629fb8c876a45e9a12af8158\na3faa167208786cef81b7bffcd0a03c8\n2bb1b5865455b2b814513156cf2b8d0d\ndd78c16d85780d6b413102507b68bcb5\n709389fcd446ca6593ebeeedbff73b\nd8b0f33dd965d49447558b47f7ba0b0c\n681d226acbeaaf08a4ee0fb6a51564c3\ne68758f3775f700df1783a44a88d6274\nd09b21e5a16c2a0ea29038f04db9492a\n90aa5fb0cac28bfbf91663a74ccd2338\n6e7f0557400601322112c05ea370d321\n8f8aa68c8c6cc6b53dfad56d2a4eefcd\n84c480a1a055bd0f7223d6cbd6200e8f\n3b37e15f2dfe0bdf55f9a00acc25f137\n17e3db80502cd515bec7eb09198824ea\n4d05c9f0f34e1c22715de3ea7b582d7\n847ce2a3541a085ccc9651014a82e2b9\naced3dd677d1e2c46ef340d5b029818a\ne921afccfbc7137c5a95bb8b37106cdd\n2459280764bc155554a99e49f597fe94\n3eb1a7a9a4ea97e3e44bad6fc9badfe7\nc4af170f18f0d6edaaf0ad030fc37d94\nec4948183b308204e4d5ca1617e68f91\nc67a9bc21455b0d9c018b720578a03bd\n4a747546b39003dcd59517820ada1bea\na90cf2c399b7052cd4061e538ffc8def\nf567137b74a175c6f49a23658fe5597c\na3d8fb85de7cf56fb2d2900ee0ae7e0\n90b1058de189e4589215045784774049\n4653af854bf098f2d74aae0eb2ddb027\ne4ac864732a8dc40f99656b78fd61fd5\na87440fc1fe87c0d6bd4dcee82f7948d\nb2a9553d5d81060b36c9a52137c03278\nafd1b4501cbda28814f62593b9237aa3\nb08fb5e8df4c11c090a9ce3e4b15521e\n45fb33cc152121a97b8f528a5a7a471d\n9d56b14e39f4c1f9ff6eb780c82e5ec7\n3e2cd7495af88fe352e393d25dabbb72\n8a5a40fe10eb2b2eb022c94235bc8601\n9152b02103bdc98633b8015b1af14a5f\nc06ec5cdf3500b6c965332f7444deb03\n854c9e951c2cf2e3492d9da2668ec34c\ne29de3e590d4541c285e5a1f74237618\nc46a4ee98bad8264925bc492489de9c\n9aa38ab7fabbd6becb6924eecbe974f\nc4d472c94921bfc63a36ba9606d732a1\n262833bd44fb0e522535fd8b96de1b55\ne70e0e198e8de08dd23e51328875746a\n251cccb082a6d36024f2ff737a52b0c8\n4d5efa4209fc3c126c92f284160734ae\n189e64b308b4345d291d421ca3746ae2\nd5931526b56b157cab610b0c94236463\n9770f3e5ebc261794f15b22cc208bec1\ncb6b81f8c581bd2ee6fe3612af521500\nfd2f1f0d3c4b90d535ae67400a94a6fe\na92f6b7dccd0421f7248d9dbed7a7b8\n80c143c03d0d7b3087752c136d371e3f\n577625945f1b83d16296847c9d695b0b\neffe967a116f8098cc2af5791bd669b8\n79edc7c4e10a6fd8b3aef1eb2166205f\n47362cb47416904b76e38b52d9aafc11\ndb851fe630734a8aee7d178666aae23d\n1d6250cafc410fdfe8058cf23f6382c1\n2e445df8836c2f55722ac248306b14e3\nbab33dad5baa7983ecaafbe064b13083\ndac6d5f66189b340d4ffe37a3ab73512\nd992ee06ffa2455219eb0cf70882af88\n512434114e17c17d4a79bd7fa08bf04f\n2e1563209d3318b2d544b90b3a170602\ne17c6810519ba81a559916e9a5177b0e\nf4830a8e2ba2c531b18ea2be5fef7826\n9b73921863beef532d1fcd5297483645\n2c12a9ba6d4d25df8af30108ea9ccb6c\n1662f76e3762fc92413102507b68bcb5\ne771166e02fe1016bd16d4490a10a752\nc4d65d8701b7e9b977e95ce4d5a0e556\ndc097b47bf15ec8e7934a0d24a61231\n79170ac3bea792317984fb9ec7e40829\n3d498fd733de605a929a5204e472930b\nacafbbf4c4f3aed424367084627d607d\n8981c0ffae1af00a50fc88ed745bdb67\n1442fc6ef6b82c8ae1da81584e31b667\nc0b61d423f449b3c6f37a8be59c15bbb\ncb680d8c4891670d559916e9a5177b0e\n58915b74af8f69af5213cec267286d18\n93b09a953435a00175aa7f24a9b6003a\n192b06cd91bf659ce3db80a3cacc6e3\n39b0b5513ce0af42cb25d116843b43a4\n4997b2b6120f84e948eb521885c87e13\nf6dd2e82ae1f5f8d3d4d11ac89066d36\n20b601472e40f47b17b431cae0dd70ed\nbf30f90b1c864bc2d5cb6d178687b980\ndd50bf448cd6d69016e9e510d2c2a9d\ne78b5c9191f3007cd36a803949e62cea\n785ba264dfcf722bf284a86ef67b13e6\nfa71486d68dbe48bf27b78f69ac93684\necdefc9c1104da52bca88fbd368f59a\n4afee57f3134a483d9b53420a5458c53\nc460cbeabad41fae963cdf8b01c64c16\n7b8a8776c2bd135694e14fba4acebb36\nd29d2c5a1b35b85b40f0ac0fb9a650d\nfed8a89a89c96271490ad276cd2af3a4\n35b4c449b5ae845013aebd62ca4dcb58\na3604a6631bdd53b593ebeeedbff73b\n68aa553c520fdeada30a92122fc999e9\nd9d465cf1be1142a86114f7b6efc777a\nb6d1a72c1f27f4cbcd701e9c04d3cf7a\n664a84b65396e168707aff99601b0e71\n262e433c526d8b4ad84b8ba651dfb8ac\nd15ccf2af52a95f619fb4103277a6b93\n26caab5f69ebc9693eec26c23f5bc80b\n1acdc3f794d927fd63fba60e6c90121a\nfc48d6602ba4904b5bbac631310d500f\n3aab3cf29ab92ce7c29432ec481a60b1\n717e503b3846d60ee8f8c11a24c52ebb\nc734c6bc3524b673ff2c92c2a4f65876\nafcb115706de531f909c248d0d9da9f5\nac16057c9ab79f7f2c7685af80c3d87f\na23357a29af9f63ed26fff8ae28c5292\n7a6c2247a36d93b6f4553a0692c9821\nb048119e0f0828d5758f6def7204bd6b\n62bc75a69029614877bb84100a5c6b59\nee5d770da5335578f7d7b7d6143367b0\n1507432d805eba8dd773dcca82f4a71e\nbd199c38c0fd7602c9f722bbac7c6194\ne51d445efd61b1e4e1296b473bec7902\nf05f6b3e7c0afdb352fc7e973ba7787\n3a3cc27878713c19676de9b6e111da8b\n87936de578cb81c4c61648d3e90c5695\n852abac2613701ed7de67b59dfb031b\nce6c597847e7dd1e55eab99951962891\n17e050b62fc249687d3c9de9415fb224\n4a1b7de779cde76487311f65d7a3e3e6\nc4a70ab37043efeb14038d588fd1342f\ne6ecc4e6734f056855f9a00acc25f137\n90b3ec9b7f122e3ae677774c24ef850\n218f5acd2b8f2d7c85f6609ec867506c\nb651ea269f4aa92731780fdd33037c9d\naa86df339042feeba4d9f38918617d27\n9eef66b5d0444f8398cfd47a860803c5\n4106b3d95b6dc95caacb7aee27fab780\nb1d7bbccf07f38d34338dd5307c2e704\n484259aff803ddd6f51fa0238791f5dc\na2a136afb803eb35cc571cd3cf8f17a1\nd1a40b075d8aaf62e7c7920f6a65a54d\na10a157254f74b0835836c728d324152\ndfc8656b5e7e6104feec1f13d2353f3\n9484665b03423168fd1e5a951c425f11\n8673ce2da94bfe4ff42b5131862a2dd9\n69e983e816774aa01b17743c18fb63dc\nead4e128aa3ef03b9283104e53cccd61\nd60975380ebd13746a12da8b0e0f66fa\n9ef66cd1ab321cd3872052160bdade26\ndcb434ec43228c7e98621bfaa41dc79c\n1d9a26feeba782e3f91663a74ccd2338\n26a6dd90bc8d6a0e227f59b6a8b64739\nc3c5818cbe6d0903822a33e080d0e71c\nbd5bc3e6189f6972eff42b9e13c388bc\nacf458d2b16dd918ef188758bf2e3a30\n9ba5f57133b048f771e087d4163df51e\n3dc8e7cd623f5aeb65498947b67a3f6\ne62ed35d1643a56dc9f016d57db96408\nb15fb2ddfff73f502cf0d9a4f66100ac\n2f426679ff0345326e467bd7dd946c3c\n592fdb44d4bbf0ee490ad276cd2af3a4\n72988c811a2c88b11206ff076758ec85\n9fd96a966aec6594f51f77a6d7299806\ndd6f44f5b788d5963d6d3c2fb78160fd\neda881a6ea96da8a46874ce99dea28d5\n6315fad2852149fc19fb4103277a6b93\nb58291a2e96691189d1eb836604648db\n6131018e5caaedb87980e3c69ea07675\n8c788c0a04623efbb45ba874f2848e8d\n8043ff469c9bed4d48c575435d16be7c\nd7aa6e5b0c686fdee039576a17a0737d\nb0aab89e3318b09724a8d949d07d1308\nee57ae3e04b1930aa6bb70ffc9e4e52\n46eaf99e641a0fd264558a1c6a2a9f11\nf78da0aa23162f3850cf3715818ccfe8\nd21b63623023b40a593ebeeedbff73b\n8641e421ade0f7cae136ac3990ab77b2\n8f971956f31d9faecb3a30f2c37c38a6\nf2a96143ed0936265d2b890291504877\nfe79eb9d45cfa9c5ca7ed590d69b9804\n1193da9a06f87fd6a0064771a6f2cf3b\n4bebf39e3fd794937177a91ecaf96588\ne8524ce4800693ad1aab7fc1a7e09451\n15d59eaf24645f501030665054ebb2a9\n75d76c87ee1066ae7ca0c2077c3e38e0\n2d1dbcb6802bf2017879e882bea3b8aa\n2ff7a54101b3a51283c1014d9ff52cf3\n9cfeab8ccdb908a7ada629e23b16719\n1c756525061c4b0b4f3443b22038d340\n875b65ed8484c7908bd21f911d388ab2\n6f0b36b76bb0946ce642ef37786b5c80\ne233f53558015ba4f05a611b5fe35f32\n41c9fcaf5c6b83a61660e46cb2e4cc15\neb3b29fb1782c83de8a4454323586e35\nf96f7bc4d005a88db38d1ee17ad4a4a1\n2b79edc3da006592395a2b8836b4be75\ned151b7e31cf582ffe00f644e4f1521a\n5015912352daa0113e2f5d8f8875fba6\n3a503e0e9b48a8925ff61a3a2a0e2484\na627a11941892ada3707a503164f0d91\n8ef1ea7a7c4b4e7d5cba62773b8025b\nf157bee08e60f88ce6fe3612af521500\n821bebd7ac070a0550fc88ed745bdb67\nd546b9afa6d0a22fcabc196a7f35f1aa\n22c68a7a2c8142f027eb00c151c6f711\nb501220805eab01a6599ee0a44605cc8\n6b0254f2a397129a490ad276cd2af3a4\naec403bcd87487b5b3aef1eb2166205f\na078e45c64ef80954a4ccb8d69e8d887\nd8892d8a902616b1669e5c8c05e138e9\n3d0575e2fbf2ed5c99e1e63653e7d97\nfea783c6499e39ed4d304d5dc34c7e17\n73bb6025df29d208ae17f74ec30c4d4\na0eeb4524c84f7a0b8a09f7075b904cc\n87f103e24f91af8d4343db7d677fae7b\nc8e172e5708b1357545508cb156187cc\n165a78e3a2b705ef22c3a2386a9dfbe9\n8520016e497352aef51fa0238791f5dc\nc22dd8c395f465c87599bba30f391291\n9b651dee9548be90ded526a7be77b30e\n6600d60c9d3bacf8d34d30b545306d1a\n853707d42be3a24c3eb520ff7cd241f0\nebba3b7239bd43cbd4fd21ba7448467e\n7eddb52d83f3d48eee5580e1b1723da0\nfb835879f66b7b95c43a4855019be9b5\n40f6e30804ff4aae20125f039fb4c8e\n6bdcfd4b681a6254c45c0f305d0b6e87\nbdd7a0eb66e8884dad04591c9486ec0\n2fb74a2f2b2b23a8a8cba409c4409ba9\ne74d866f44f857e77b5d58e18a4bdcae\n3ce2794845ba4bff5c63d035d2a7c889\n436a96f58ef9a6fdb039d8689a74349\nbf837b5821d05c00efe1cfa376f050c5\n6d0cd48b18471a8bf1444eeb21e761c6\nb50c0ff1aa497809afbd772c78d05c2b\nd04a6f268f16bae7d472d3bb6a889c20\n64c8591e8a837cd5dc8d41086ec55d96\naa1da8200477456bab610b0c94236463\n14bf301e9548eb788430c9c8b2cd5ae6\ne877f5881c54551a2665f68ebc337f05\nf1a09674a12a3aa7297936c81e7f6629\n7061f5384074da6d6f37a8be59c15bbb\n1a713136ff3c0a506298eed3ee847aba\nbaef1491d5bfb6cb58e51facd8ce1a25\n68ae06512cfbf4f95fc186cfb5f359d1\nd8c748ced5e5f2cc7e3820d17093b7c2\ne5b0d8cabce54f524b3c42e318f3affc\ncff485b2c98410135dda488a4bbb1e1\n9136172b17108d1ba7d0cc9b15400f65\n11b544b22dedb59c654ea6737b0d3597\nfe652e6e444a8b827f06bb1a83bb6426\n150c9d9b92f7559f593ebeeedbff73b\nfce58f4938a670db91c74eb018d3bfd5\n530fc7ae6a1d6a40e830a5cca365799a\n2aa0288017b4e249f6a7b03b801e1d47\n6e97f3391a8de74bc862eec8232fff1e\n56df8103181fd18b27787a85c3bfabc6\na513bc9521717f2593ebeeedbff73b\nccd0c5e06744ad9a5ca7e476d2d4a26e\n1f860a494cd615fc7d4bf609d539b368\nf78b75284089cd6514038d588fd1342f\nd2018df95fe894c388acc944857403a5\neba5b24b9c3dc8cf9c0ca344f487323e\nb281da26ecd358e1e7e684d25d4dcaf0\n21e930917f2cab28dd711af5650bdcf\n8428d483ba327a2da11f6bacf5c7662d\nc91ed7cebef758f935836c728d324152\n8c6d7c225ba8a152387133b1607f2aef\n2dcd9c9795ce4471b65843dc986fdf7a\nb598d571630181e171e07968d18a8d52\ncf4db3515ce7c603cda053036bd1b63f\na015c48d41079f9219e48122ff512ea5\n2fa5cce72c52f5ea95696f73b672b1e8\n8d15fdb921ba675af592707fed2e148d\n8188a091928db3cb489883f17c1c79b8\n27d388a77f5b27db48186eab550b0d6e\na0ce7fd10e80a9f9f0fb3e3d2a0d34c9\ne2916cab74b3703763ffebf86d8dd00\nb5fcd21b70bddb3fbd16d4490a10a752\naf9245138b29dd19c8687ff9b0b4e4ac\n32b6c232154f2f35550644042dd119da\na15be5686c875d703201317d7803c43e\n34878cff5db772bad810b14a81e12eca\nc15b0bca48207d9d8cbb8bac2032149c\n5bf5096583e15c0080741efeb2454ffb\n22f89fd9e2a9f1a6bb6bc0db07c71e8\nd1c09e81d31e38868cbb8bac2032149c\n84a119d032947cdf1da03d263d0d0387\nfbf0c4f6a483bc15ab7a3d3a1341aba\n7d019d0342f8a70f3bec56bff764ba78\n83a7b2e11589b4cc5fc6df6674be3b9c\nea35493dd0e9039e8d2d730aebe7865d\n72421bcdcb3212f1bc2ef6ddd5c1612\n3ced29b0f7f38bcb8964df2a32faa49f\n3b3f44ac9d3245b1e7c7920f6a65a54d\n953707e41b518f631125768e50c51e2a\n76e0b10288997462c51b240dc7b068a0\n7b405c1d6d2dbea9f91663a74ccd2338\n31b5cb5dfaa253b3df85db41e3677c28\ndf19f437c753b93a72814c9aa90ee14e\nd5a2b159a5fbbc4c510e2ce46c1af6e\n8494a1f6985e8173bcdc50d6b73788ae\n17555a8b1def80abce101336817a135f\n17a768e79ba434b91ca25a4447d3477e\nc8108de19d8a3005c5beea20858a99d5\nb0a46e739da332985beab21ea89ae12d\nf644e0ae72dbe83d72ff9ec64cb596d\n8b5fb1851caf5b4c5b89c9fa863d4b06\nd2a3268e85d81c6c6bd365389d6dc6e7\nf5ee22abc76f7491cc9651014a82e2b9\ne5da166f78544aabd37035c74acfab37\n7e2d4791502378f2593ebeeedbff73b\nbe1eb41cc9eb4b04ae685ca100c909e8\nbe2d759412b18995946789884353d9f6\nd334047dcbb37017f5f004a628d601ce\nf653f39d443ac6af15c0ed29be4328d5\n12843b5b189bf39f7cf414b698427dbd\ne59bd11e144f6ca49aff919557ab16d\ndc2b5f9abce70f2b55f9a00acc25f137\n8892a081230c9e0557b8f616df7adf9a\ne817922063c3b24ca296c91af58589c8\ndb49ee0d87af106f2de0bc4fc4d02dd6\n2ee577ae974272dc9faa444e7f5fd692\n8771f9b7cd6b7c81e724074e69c062a4\n4a01490054b15c90ea5adc188e5a2fc0\n5328231a28719ed240a92729068b6b39\nb5eabf007a57d863a35a7666f0cfa5bb\n3ea6bec3578d7a0a24e449d22891bdba\n75418c9587b8eb0edd7fb8bdab16e83\n4e37752b33506d0313dd6eafe1477be1\nd3425554004d834f6dbc9d74bad392c\n39a922f31e5a93bdc563fcc2752ece39\ndf70c07c2b0a066382241d99b4e87f38\n8c9cb8a85aa36620a5f9d52c12457194\na105701680f658b8f92f3e7bff4c4ab0\nf6ccf5b4afd9171c818b86d9fa7a616c\n25bf067de33706e62bc36def1a7d775b\n5d94769d9581fa85295994a5a65844cf\nbda4b8e6a69e1fc63f07ca1042ba5dfc\n8e9de6e848ed53a248cfc982ba61d3a1\n5101b79892ce920b6ee5c30704fa2d08\n9c1b448ec62cb9fb36dd029536673b0b\n3a62563bdb750b988b83086412477462\n5b3b26c9ec974a1cdef028ff6a07adf4\nc856e6b37c9e12ab8a3de2846876a3c7\nf12c92ab5f422c07fe5adaeab9475bc5\nde5ac6717fb307e6b01c58badc8bbc39\n9d77156d64599e9b1206ff076758ec85\n28940687b3516d6e8dd711af5650bdcf\n7994498bd9b426cd37b2bb75885cfc44\n16dca17207a6a2b87f6fd4fd84c364f4\n7e4cb0c15959883242095a33119f8ea7\nb95f97ba63ab989cacbf0573260a18d4\nff1bf2df4bc49e1f79add0ba9a2ff19e\nd2711d46aac0b5ed492a9f7c65daa58d\n724ee53f18ea8e77cc166099a6fe7573\nc070cc8563e2b3d65d06d6b9708d8ce0\na3a22ad51e59d79a2fe54017cbc6c7d7\n5cc1b0be0eb9a6085dca6305fb9f97ca\n1cdc625f58dc911518af974879cc252c\n601bf25b4512502145c6cb69e0968783\n53c81bd4b93b14491e6d59363e6e833\n2bc74fa3617de19fd5bfda5cabec2102\n70cf74bb4e1e14dac15fcbb4bdbaf13\nd4c6f2749bd85e9a6a9633583f89b17f\n360c1058f401dd27fbc060fd555478\n1d86fbf39c3d2954222713fd18dc031\n7b5e46d1cbe7c2de7d92b0739e572d9\nc839f879381df0f0f42a90fe4baf4591\nfc786a8d62aad7e7e6942c5426df6055\n1a389652d23b9cc06bfa0701d875ff10\n42b13b1ac18724f84b3c42e318f3affc\naa21824de23b516995c7d6b48c371712\n4521ce028e5009811866a0bc19f46a1d\n2abe8d5b5d29ff52f7628281ecb18112\nbfc6b2328c9c12bf283b00891f680579\n978ab0578d8691ceeaf7fa9cda77a592\n49a60133d6b05b8d19fb4103277a6b93\n288837a47f55c0e9d8d964adc0b6502a\n622552cb1f5670a614038d588fd1342f\n34117792b1a8c180796c584ff1fcf56d\n3f5fdc05fc572730490ad276cd2af3a4\n29f890e465741b7ef8cb9d3fa2bcdc0\n2314a3400230f50d14038d588fd1342f\n7d8e6b132c64d909b161f36d4e309050\n386b2caac16694edbab0cb5a4ccf2fb2\nf55a514cc8f2d255f51f77a6d7299806\na27b9f94d052176af27383fc5a5a711c\n8a9630332c2cb42644ac83b3e97ad658\ndeb0889d902f08bef51f77a6d7299806\n1f438263a82a1b8919fb4103277a6b93\n447856e1071e8b83c036a40816608369\n9faefdf6814aaa975510d59f3ab1ed64\n708e7253604979d06d83c04495f2aa08\n8169b36ef1ae45ec19fb4103277a6b93\n32c1445f65f4ceb23eec26c23f5bc80b\n893e3f15f023e9abdba08b82bf5c2f3\nb5b77de7a8a05ab4f09df371fae9d63d\n1ff1912cc74a76c3b2152dcc3ff6a477\n7dfdfe28e3d25a0d19fb4103277a6b93\n50a4aa069dcd171937b2bb75885cfc44\n2a56ff0143d4e69fe6fe3612af521500\nb2c62e5b20b34fad5844a4d0ab925627\n7c68894c83afb0118e8dcbd53cc631ab\n5c9b1a32f54b12cf81f667e2a25e0619\n1230d31e3a6cbf309cd431573238602d\ndf7cced6f0e5e65c26e55d59015dabc6\na4ecec332f0ac0d22906e6acfda251cd\n36d4a1a290c541aa21d25a6a55757584\n82460a80f6e9cd8bb0851ce87f32a267\n9a24fd0d36ff856662e682c9809bff14\n1d4d7533d453ace4dae12f3947d07dec\n758895bf2fa5e4b5e68b9e5f5c3d0eca\n6b8908f72b78ddddf51f77a6d7299806\n3af6ec685a6aa14e2f99eeb199d54554\n2ea00b36ccb8d3baefc579970fcfc006\n2b4de06792ec0eba94141819f1b9662c\n2fb350e338cc61521b17743c18fb63dc\nb02c25874494cd60f51f77a6d7299806\n8cba819b9a56da95b91b871e750ca615\n5ad772a3c728b948d329896bbf26eda9\n93d5203022d651c831ae8c8ff1eb3d45\n221e8ea6bdcc1db614038d588fd1342f\n37939caae967b34da14c5748cc240cc2\n1dd6e32097b09cd6da5dde4c9576b854\na3ec914d44cd2bd8498bd5a555c21b1c\n4cb25759388ec29935fd302efa96f6d6\nad708015fa2c131853227dcd0d547ba6\n1af92afe68b3f837f51f77a6d7299806\n3425e406f20e69efddfee72cbd7395cd\nb922bbdf49b4100659f8e31ca87c470e\n429d58759c85f4750276e25240d21a2\n2c16efe54c1368b297f437b37a859ff5\n2d987393f7f7c5d1f51f77a6d7299806\nd669c884e2a9274b1e7ef3c0866377b2\n72b7ad431f8c4aa2f5520a8b6a5d82e0\n332b2573bb3675cf14038d588fd1342f\n337165c7708f17314038d588fd1342f\n6ed6b121918d8f3531ae8c8ff1eb3d45\n2bf095743bd8f21f6f37a8be59c15bbb\n24f5497f13a1841adb039d8689a74349\n4e664dae1bafe49f19fb4103277a6b93\n15ca4d51db95edd783f3ef99fe735c7e\n89045848f586c0a729404a50338e24e7\n408199b4b50fca50f415ddcc43feede\n27f8e4a89307406614038d588fd1342f\n651270d31b03d1c12f1d01f48e42a6d3\n1a477f7b2c1799e1b728e6e715c3f8cf\nab1435d685c06277409421506a05b6e1\ne063706e52feb2db039d8689a74349\n71147c7ef2258b894a1a4db9532622c3\nd44fb796a1772d5a490ad276cd2af3a4\nce46ea86a7f7a77b3adc3470b30138f3\n916abea85193002adae12f3947d07dec\nd6f81af7b34e8da814038d588fd1342f\naa36fd4d76afcaf8bdcda0bf7e7b4744\n5259557e17d437954c90f2ddc14dc59b\n241876321940a2c976e9713f57a5fcb6\n1e658eaeeb68978214038d588fd1342f\nd0f30590066a88fbd5cba62773b8025b\n7104877ee2b4f68516cfe1233e767967\na19aacbd84e0ddd92bf36b92481c5940\n57f5a7660b1f186e14038d588fd1342f\n51912ddf693219c81c8aa60fc1bb8474\n2bbd5947aca68a81d329e53feaade57\nd6176ad267c3ef92f51f77a6d7299806\n57e1cdb6f179cbdb98e0d1738edd4f19\n7f0a1abbf748d3b09a91829e64097423\nb0a85031201b0fb1df6cfab91d65bb91\n2c86b652e14005a09c39abaf208a73e5\n65fce4b727c5df50e5f5c582d1bee164\n47bfa972100a782519fb4103277a6b93\n41149ca3a44aff87707cdefe012d0353\na63bc3a5d43888a962e682c9809bff14\n79b544db8d95c3dbc1a25f36f85c3fd6\nd1738a15fe737103917b96045c9b6dea\n679010d35da8193219fb4103277a6b93\n75d58cb9ca1475f86f37a8be59c15bbb\n45d3384ab8d5b6295637fc0f4b98e88b\n2c7fd96b46b2b5b5efc579970fcfc006\n33384d4600a8bd0ad88a7002dfb37846\n90ccc3b3b344b3ea2250bf58700b4d8f\nb2f2058ab083cfa0a8055fb11b774454\nb2d70313d7d408f729404a50338e24e7\ndd9a138fd557c44f4a6b6d001599a1e5\nae4b600e137214dfb675aa3c10a97f3a\n9e88cb24b40dfbfb85b479b317175b55\n645aa5c32b9fe34014038d588fd1342f\n8918d572cff6b15df36ecf951968a8b0\ndcd9a34a9892fb11490ad276cd2af3a4\n61f828a545649e98f1d7342136779c0\n53812514f0d50568efc579970fcfc006\na66befdc2b049fa3eec26c23f5bc80b\n77371d342cddea8d8b424343280aeccb\n874bfe0bc817ac827571d17c374fac42\n54ee1ef79b340108e5b4d50aea96bfd9\n583ccd71c56aed45f14c803eab703899\n71a4f27e4c6fa0a1362d127df6d94eb\n63b0904e68e5d1c6f51f77a6d7299806\n53f4088679746f1193f685578b3d085d\n2f6f16e5a1d36f3fefc579970fcfc006\n341ef2d97f0f9091183903d8843a24ef\n13d3462293023fe71f530727405d60cf\n9bcad07a9c2e8e13490ad276cd2af3a4\n9e63faa55910e20714038d588fd1342f\n1bce3a3061de03251009233434be6ec0\ne389a5eaaa448a00d6bd2821a9079b28\nd7b69d5015110b1e2c5b2f528cea9dd6\n5cfc913387c753f114038d588fd1342f\n7833d94635b755793adc3470b30138f3\n1149bd16e834d8e6433619555ecca8aa\n68fce005fd18b5af598a453fd9fbd988\n5a99fcbf7ad93010ebc1a7ae7c4c250d\ncca6e720741a6d00f51f77a6d7299806\n4c6f6eb326716c8fc71d1873c074ffe5\n33bfb06af948d3415cab680ae8f530b6\ncb93c492c1c3c00a94c9842dcb05f464\n8d61836ca7137a07291d22c7a0bd7119\nc4dbc5a64db6c2d72a9a1691b6f98331\n5b9919f927005de3b867e31860078994\n6f84940f81a61eef2e9208ffa1a27124\n9c113b80d75659ffdb8fa1712f9ee93\n2715a63f41552d6c19fb4103277a6b93\nb0b0186fd16220d4917b96045c9b6dea\n24deb13c2dd93649d329896bbf26eda9\n80ae351dff2476fd1fa9db366c777d84\n480cd721e7bbf720b0eeccd21a9bc702\n7402b0be6d04b45da5f9d52c12457194\na3cfcc4d567590e19d4d5dcd2cc33826\n1f9cf65275610cff14038d588fd1342f\n7e832bc481a3335614038d588fd1342f\n64f47c058d0a2da68bc6f322a9608b07\nbc1b55a6807caa9b490ad276cd2af3a4\n5f66f9b4afd7d0bbbe99c53d7c66ee1\nb3cea4461eb14a3164d6551b52610c81\n222ee8debd39d5fedebd258f4352e626\na9439ca0eb112e7782287102d4d0c28e\n7875815356fb41f3d772e458a8f80cd2\n52687262fd77ba7e4de2cf65d389c763\nc2d78f31b197e0bce2d881f085d6d86d\n7dbdddc3a60664f9e87dd5740f9baf65\n1b5ae67e2ffb387341fbc1e2da054acb\n7b0f429c12c00dcf4a06efdbafdd7ea\n21f76612b56d67edf54efb4962ed3879\n828a2a981ec78e7c14038d588fd1342f\n813597b7f538820ef51f77a6d7299806\na181227b44ccf1ce6199ff1c1ae229f3\n1a38407b3036795d19fb4103277a6b93\n3f8f1d7023ae4a1c73ffdca541f4749c\ncf2e145ae0b8923488df69d6c56c6047\n16a5920c004800ca76e9713f57a5fcb6\nbf264dae9a5fd53dd39e33fed94f56ef\n1613148b579a747814038d588fd1342f\n17b1927dbf59786a45b09d36414f81ec\nc6f1601208aa5e72cde6b082a301e49c\n30e95358ed817addbaa0f6b191f18222\n221153f680f3ef015761a0b53ed37cec\n6d25000aa000a97919fb4103277a6b93\nd97b919139287ace7842a9c47d0b96c6\n199085218ed6b8f5f33e46f65e635a84\n4e25ae1d1ce18c4a40ef1c8b63a628f9\nc131c9feb56c6b7a6bb6bc0db07c71e8\n277231dcb7261ae4a9fe1734a6086750\nd50233ec66ac6ee2b70eac6546e93fd\n8dc7bba62eabeae9b3af232f92902efa\na8db9db73bb5a4dbf51f77a6d7299806\n542656b66458b918cfc64925a56d7ba\nb1b9c6c7b55d5bf845ed290334fca9ad\nd116e9440f64d7a0e7791a1581855f1e\n9ab89ecff5672c38aff5bf458c586262\n3f8aba017afa6d94f78aa2d67f081607\n25ce64639b8817065510d59f3ab1ed64\nd0842064c9900af698e0d1738edd4f19\n27781344ab489f2df29666f384be6c43\n7a82cfb4878d1162986fdea3c9eacb1\n54baa6e5d9584469b80b68728684f2ff\n2a154c6f14a749179f6fd848d2db8a5b\n96ce3abe2e2d4bd3ff24fe90298ffa71\n99b87ca5f2b859988b424343280aeccb\n36cf45005b263014917b96045c9b6dea\n9e35945e9d768135d028c2e338a88f09\nac96d2fa0e2052a790a9ce3e4b15521e\ndd370ef3f3e8097abb9760cf9cd1a953\nd863bd46db86b9dc2906e6acfda251cd\n955d633562dff06f843e991acd39f432\ndca3a1737e2e3c5c6d0fc9460109eda7\n1bfb1f52f2200860c3eb4329189b69dd\n62e90a6ed511a1b2d291861d5bc3e7c8\n511168d4461d169991a3d45e8887248a\n157ed8452a7edab161412053ff521f64\nb4a72257eff26336d7231c5bdc5ab135\n6d74c6092567868b65d5de7b04a51b37\n61e1edb3150c71a1f2165a0df94fc0a0\n1e70ddc0e4cef3a832a785b4a7e37e67\n8e4999f0e6bbb791f51f77a6d7299806\n867d1e4a9f7cc110b8df7b9b18a5c81f\n23c65f2ca9165072490ad276cd2af3a4\n3637b0d6db204c0414038d588fd1342f\nb2ea31ad8b8b3e19994626ba7fe8ddf7\n6262bddcd8bafdac3bec56bff764ba78\n7e1d225f13bf40d0d39e33fed94f56ef\nbc72ab493655beb5d329896bbf26eda9\nd27b9c12f500c3142d19175e7d19b7cb\nd8a8701f3fb8855d4d0a79ea230a0577\n15fad17654ddfd3c33defcb28e53dee4\n294fe191a191f812917b96045c9b6dea\n16632d002fc0eec9917b96045c9b6dea\n875c7185cce6b8b0813204830fbed813\n2b8d1c67d17d3911d9cff7df5347abca\nc87497b3c00b3116be8af56c801ecf41\nbeb7e6c36552f509de008fce66fdc56a\n191c92adeef9964c14038d588fd1342f\nb653a75f89a6c24237b2bb75885cfc44\n7cfccaf7557934911ee8243f54292d6\ndef69858279a9b23f841858369432cc\n33bd97e462ad2a851b17743c18fb63dc\n7598b1e15de58e67b18627bb8f2c00d9\n18e4ebaba8998410ae8c9d3b8c4b9bc3\n4774343934cead2828a3b1af7eafd3f7\n4aba95b774b2cc2233ea3991d83e660a\n9389ec8dd802a1fa7d7598e07139ebfb\n16f90b5e8d9a36fe35dda488a4bbb1e1\nb918cd058e822e00cce02970cdd7e7da\n76bef187c092b6335ff61a3a2a0e2484\n383e435cdbe406e76ab870ad2db8ed02\n63e8ec717a68181fae1162148fdbcc5f\n9e18b198e803af3513f0322d0d7e53c7\n8889b2abd894ab268d1b9a1d97e2846\na37d0d0598d73b07165fd9581927b6ad\n698a0a47dd9bba797ddb7abd4c043364\n41c838f99b46093fdb5f60e9c5fe6c8e\n4d8ec1a57f4ac78258db0ef36af1d3c5\na308db2269dbf79914038d588fd1342f\n13f398918a8ae11b17743c18fb63dc\nabd8b30650ebda9c14038d588fd1342f\n45d96e52f535907d40c4baf1afd9784\n2056de97c97b2c85b759217db94d2883\n56cafcac4df5308d35dda488a4bbb1e1\ncd2a6bf7effd529de96ac0c4e1fb9b1a\nae1754891182af2675da567c4f0a0f43\n28a77ea1fc6b43f936460820a7040825\n500fdf3d6ffbab95cb57ce1986fa546e\n11007f74b06bd90c518b6fc7ed4f3487\nb53a3566842e12b290a9ce3e4b15521e\n541e331334c95e5a3d2617f9171b5ccb\n8d2339ab19665ee3e7c7920f6a65a54d\n6e4ea95fa805aca632a526e2e9a7e9ae\n787e23d8521faa3a6b3538efbf4faad\n61cedacdae156b4dcbae681baa9e61e\n192ca330a80532471b17743c18fb63dc\ncc32fde4ca022cdf965e01bcaa1587c5\nb55c43cbec762a54eaf14273fa406ffc\n2860b2b5e16f4ae8c29432ec481a60b1\n770b9528c04f99d5a3bafec3b56382db\n5192e47e1e8267068907728f92c46d69\n82aee3c5088d005414038d588fd1342f\n8112da888f66bbf3c1a52e5a697bb944\na1a4f5670251b8314b35a7d7cea7130\n1867c1751ae7bb2829024035009201d2\ncf81e26374530f8fc08abcaf67cf0417\nd58a2c86b9b71f6bef4e42d70375aed8\n5cea034b028af000c2843529921f9ad7\nb5c6ede83e55d05048f174663905cbff\nf4a0d0169abf306a754ec1f2eef2c6cc\n9840eaff2718fe1214038d588fd1342f\ndb49cbcb6a2ac87657b1c0b6d5084bcf\n1059a78893d810bb14038d588fd1342f\n4fbadccbdd689b18b8708912bd92e115\nc805dab667ee341ca3ee83e6cad78356\nc51e57530257f6e0e0771d4c079a0ec2\n5eae999a81861da03bec56bff764ba78\n608d9d8434e52a71eaf14273fa406ffc\n1dcb4a52dbd349ceb9b8611336bc3051\n4e3f1e4f1fc88029d028c2e338a88f09\nb3346d1b7ced3daf1b2fbf268ed76a\n354c37c168778a0bd4830313df3656b\n3415f252bd71495649920492438878e5\nc40adbdd817cdb7a14038d588fd1342f\n9f4447e8dd345d33d68f196c7607adb9\n1f620792984f66fd22c3a2386a9dfbe9\nc3cb7d181b205d58a72e1f459869ef30\n2c1c9fb6e940c636b1467c71658cc329\n4da74e02ba23a7e98ec703e791db2af5\n21bf3888008b7aced6d2e576c4ef3bde\nad0e50d6f1e9a16aefc579970fcfc006\n147a9f656054d718e10a48f2bbb9bef4\n1ce97f222c9caeac14038d588fd1342f\n294afbd7a0e90ba9490ad276cd2af3a4\n12cd30f7f83f441dc13b22d2a852f9c2\n32859e7af79f494a14038d588fd1342f\n3abafff866f9319d19763227d95ac592\n1f741437c1dcadc82d19175e7d19b7cb\n77090c15f738bf3079da6431b0766445\n3a1cb5501dad77f360257b24d454e22f\nab38a559643b01908b424343280aeccb\nbb4c963786dc746855f9a00acc25f137\nd7220a39bcedbb89a14c5748cc240cc2\n2fc2409aa962c5553ca57f5648ff1b0d\nd47eb4149fbcd0c7907a5a34fd8df2f1\nba6c0baa0a122f8ce2aa36c9e5ae7ae\n35ba544cb0a342e529404a50338e24e7\n3ee93f4b1efe249bb21450114b9ae3a\nc2e4095266254bc1948a3bd895ea5ecb\n9895736717c559ad48d8ff57878739ca\n3cce581fbf55c31b8ccbec49bbc083f6\nb56d901b6dd62332813204830fbed813\n86a7258b0f094aa6a3fa78fb8c679d78\n3f1af655a7e3ee57b838ce7eb80b48a\n57183931e41c7aaa5ff61a3a2a0e2484\n499242b0da957d1e33f2b52ebeafcf18\n6bfe4dac77d317de1181122615f0a10\n66240ded565b0927a8373ea4ea947e84\n66c8df461f312684d329896bbf26eda9\n60fc7123d6360e6d620ef1b4a95dca08\n33eaa3a6a05575ab14038d588fd1342f\n3a3f425190044bdb2efb565c08a63897\n254fe5715b9de05db499b6b5bf6f9f82\n18a45593c2ac4ffb6deee1099ca09a28\nc722e02b37ec324463d444e16188727b\nde55a935ca4af29649a92ce7de587886\ncf651c9562d9267032a526e2e9a7e9ae\nb5c61f497f9354d535c2f4da17c09efa\n271cb05be2eb02c53b2e058a33951560\n99d036d409c1fc366f12b402757e5b72\n9fada8462006e138efc579970fcfc006\ncf027d5b0debe18321bdbc0445d9f748\n8f784e9c1bcf3f04225230e9f2d3c8a7\n3561da3d136b4deba023804ba421cf6b\n1545a13dc5b12f51f77a6d7299806\n518cf789a696965b5e723252788c3d6e\na9317911db005724f19c36a916a93d14\nb8f0f62a95143a60c5ae767f471fad27\n6a6c10088c857de114038d588fd1342f\nbed08d3f3d82bd2f37b2bb75885cfc44\n490383705f78d366bf67ac39195100ff\n304db04f545f53b021bdbc0445d9f748\na8395165dee1adafe0c381fdfcdec36d\nc81d3992ddcf2fb41b17743c18fb63dc\n8dd277fd02903b82bc0e720bd48e2c3\n872e3d94c4a37f00d9b53420a5458c53\ndbe7fa11097535bae7c7920f6a65a54d\n4146cfb4fce9055bf51f77a6d7299806\ndd1e9b6cfe8c2ff65ff61a3a2a0e2484\n48b2e88f7d199d43517a64eed9809d7a\na702d178064c7b81fc078d27c856022\n1914d0e6b9f0445b40e80a2d9f005aa7\n19f0a14207f4f953bb1b55ae5bd11e93\n40cdebefbd3bc2634c7384dbb75cab0d\n7b1d07d932ca5890f51f77a6d7299806\n40956fd98a04f34914038d588fd1342f\n4c29dcad235ff80df51f77a6d7299806\n4bdfbfa1871f2ca114038d588fd1342f\ndcba7668017df61ef51f77a6d7299806\n1a201d0a99d841ca684b7bc3f8a9aa55\n34d7a91d639613f6f51f77a6d7299806\n1168fc14c294f7ac14038d588fd1342f\n3a69f7f6729d8d48f51f77a6d7299806\n14b9fdab8d264fc214038d588fd1342f\n8b82330caa9b1a514038d588fd1342f\nc602f932c692ba2714038d588fd1342f\nd2964213849329b494887ea54f3cfb87\n1c912a8597962f1514038d588fd1342f\n139b38251b5bab5214038d588fd1342f\n511d9b4ffb8ad21485b479b317175b55\n79bea3f7c72e0aae490ad276cd2af3a4\n3eb9e07793635b30f51f77a6d7299806\n8a85b0675605ed8219fb4103277a6b93\nb42e4fd21f39ff4a19fb4103277a6b93\n120735afde493c277ff6ace05b36a5\n9dcede4115b4379e2af4036e9c51cbc4\nbf01483d8b58f0819767624530e7fce3\na5d21835219c8fed19fb4103277a6b93\nb37f1363aa93688619fb4103277a6b93\na73a49fd2887a030f51f77a6d7299806\nb6305089d351329681dff5c2e57ad46e\na007a3cd5b8ca7fb19fb4103277a6b93\n248e014f31771b31d3ddfaaa242f81a1\n47da08d9c7cd7e104b3c42e318f3affc\n716eba8ec4825ecb19fb4103277a6b93\n218233bd68f5261dff318cdb0cb45ca\n3230b6c7f396afff19fb4103277a6b93\nc983108db7fcfa3619fb4103277a6b93\n374fe2584abb594da094848ea4d06501\n44d55ed577b77106599dcc439b161a52\n6336e1ec8679ae5c512941e37c7d7dd6\n21e0ce3126c67610c397356311cbeea4\neaeaa6879cb8f5193a9b2e04441ce376\ncfec2302eb084b5c58f4eb05242852ad\na65534c7545a4b3a19fb4103277a6b93\nb7b15c6728478971bafac5c6f2fdd4fd\nc05bf63cd7818b6f19fb4103277a6b93\nb79a15077c4a662719fb4103277a6b93\n7e550e32d80421aa19fb4103277a6b93\na55140d6d7b1148519fb4103277a6b93\na7be35f955f8d45419fb4103277a6b93\n89155c23787c151219fb4103277a6b93\n7fd704652332a45b2ce025aebfea84a4\n1b28eabac10276cb7062f2d72cde5c95\n918ae8afec3dc70af7628281ecb18112\n6f0477514eb4f9319b0530265e62c9b7\ne922a4ef330ad87ca37f3fc191551700\n49b2df85a32176c8e47780c3e225251f\nba5cc31429d4c97479c67f086ffdd34\nb76e0d43ac0800366a035d0ca8a43948\n9b5b636b4b412d33d93768e7b9b1eabf\n13181141c0d32f2e593ebeeedbff73b\n4760fede61ec9babef410cd6a99ddc\n93e652f343412a3e1c8509b1d97a23bb\nee3d0be16a4499b7d8ce2b7ddb5bbcea\n78742b25c20ae244cf01bc59d215f0\n5ff07557bb0a3a30dbbc9440457e303e\n366c86849245170262f6790b971792e9\ned6704f132eebc3ef13ce777d031b4b2\n2c2265c2a9f3c886d0250e0e48027a4c\n48484a86775668cc7e77281775c253e\n2082b15a24a55e52cc9651014a82e2b9\n1a525427776b39259c89c86daa5af59d\n1f899a4f5418158f6721e288acfdbcb2\n4424a906da6fd4c961bf0ba277ea473b\n3d87710d90c8627dd2afe8d5254a0d04\n1e887a97e283f6dc4b3c42e318f3affc\n27ff0317be31b5932c4e6cb98409dcac\ndf4ce626dc8b2a744b3c42e318f3affc\n5319006bf5783b6919fb4103277a6b93\n2d3a484f14ec3d4d7b11ae648ea92233\n732f5f4226ceba1e593ebeeedbff73b\ne92955e3e3ee33f32650883217a11488\n34e48812eaf19420499252a7ccb366fc\n44e151bc576b4b059a46f459dd13f5c2\n97334ba30676598958f7bbfa65d864aa\ne5a4cb87310ec996e649b526d4e1735a\nc474bd0e12d386dfe25bd42000b74e3f\na46f3d5b1d3382d5cb11c9bb51caa476\n785b692194203f119fb4103277a6b93\n1d8716f741424998f29666f384be6c43\n51396ab24d97a1bb245495d3641f83a4\ne2c68936d051b926646568c803ce68ef\n4ea78c36488dd185f3598efd14e493d5\n3513af0a9abe4b48f13ce777d031b4b2\n2a027aef8813a131624a1aaab5ca52f\n8e6312c23b6ac12f956c23e7ddc28c00\n23482a90a12a7052bd184e94aa5ce5e4\nc029d82ea1d3af4e19fb4103277a6b93\n99ec963187a1cd2593ebeeedbff73b\n136d5a16b110c84566b7da89cd9376ad\n4f5611a5b8b1362e73800789ccff9705\n55bae67315330e0f131878391e12e811\n98b6c00c4fa346cd187ccdd3303d9e5a\nf15d3637d11e93f5dd17d7a192a3a64c\n9ae05089e29678adeeacda4374ad94cf\n26891b80550301721a648655355dc699\n7fe0602271e7b31f52db1d2b4104f173\nc281babcc88358f31ff05e2259c2ba15\n13f5779fa224ee03490ad276cd2af3a4\n532e2a8e2ae6f5616bfa0701d875ff10\nd5b99ed4075d9ad559497798da6e2013\n73f7237dd7ed9c1d593ebeeedbff73b\nffc0bf43dccf71865257cc5c33f9e8a3\nace4472862ff3f6d917b96045c9b6dea\n615d9c2b37a3616ace8417aef1b7a422\n7bfad524f6a550f6a6fee8e2140acec9\nc951d9b4f3da0b5519fb4103277a6b93\n43c435a4a10d90204d724d9ce5af6d8e\nb581f1d0e58ef9db584536aa725442da\n525c959a4a09aea164def4b29bf333db\n1579af0fd3cb306154b2f0044ac86c5f\n64ee5d22281ef431de03ab2a27ba7531\n2528b8f7ad0a177e1491843220e463ea\n523516236632fbc8c799384bc2c5517c\n67b1d2a43f266f4bf51f77a6d7299806\n725def83aa65422dd4fd21ba7448467e\n98f43bc0ca2c510ea12caf23554642ba\nd7280c7d6dbb6f20ff12919fb1541da6\n173d2bf95fb2e6353a9b2e04441ce376\na0a164ffbbbdac8d52979c729a1f9cc2\n82927175fc00ca7e593ebeeedbff73b\nfe45a0e02430b195b6f5fb02f36f9480\n34a2341fbd255d82b8a06a6203bc49a9\n98e474a6bbaef456febad4f49b26ec52\n2e17fbc8ae8989911751d30f076514e\nf0961a7006186493df6cfab91d65bb91\ne596ed19966b698c10edd100dffd8d85\n7669de4a8474b6f4b53857b83094d3a9\ndcd037ab067a0fbc14038d588fd1342f\n152161d238fbc55d41cf86c757faf4f9\ncde1943d3681d3dc4194871f9a6dae1d\nb6694e5bb51f8861f51f77a6d7299806\nd100d576372b75bcc6b705e3bb4769f5\n543eaf7f7a9885d57cbbb0dbdf037373\nf5639e976f7b8e70a6fd13ab3827d508\ne62a984beecfdd9a695c69bb6f9606c8\n117c47d75798788a5506ead0b132904c\n39b29bb4fd8140ac9829306a513f9466\n5b94025a52c244bfc51d071e487f31b0\nf6bfc818e9e265b34b3c42e318f3affc\n1c2fa78dbf2d2cda9e02fc85f824870c\n7b5b2e699dbab90d1ead5d83d8c2f7da\na0608ab77f25ae922b8f1e4489d2e1b1\n40da067ec8d56e2242a61f5042a573f9\n776c31753fadd5593a1c86745128d0e2\n50766e42adb211675e0d6e917505f52f\n20050b94da092fb8803805d815ede61\nc2294d5c7d629f11b17743c18fb63dc\n32cde5adb86d540a2eb3768aa5c5fa1c\n382d5ba8f3f89385debd258f4352e626\n1372c28325f2794046dd596893434005\n3a053bc6997155674ee2933c1153f63b\n25f1d50f80494d624b3c42e318f3affc\n4769bb2062392beb453a4adde9273930\n711c7f25142a3e2a57253dccd1b3fd5\n398ffbc5870c12e1b5c63839abd9baad\naf6ae25b2e295c36d79b19c7c4f0e293\nb10ae372f7988e3bc242632b2a8c3129\nff02fa8cfce2d39113dd6eafe1477be1\n6658d651878eb023c7db9c21ccfbc4a1\n8728e0df5b94173c9b709c9b379c59d9\n107bce22d72f322eedf1bb0b62653056\n6b036756d21b6d8548eb521885c87e13\nbf335aa14157162b6f8304908c816659\ncb643270a86e8fcc19fb4103277a6b93\n3d7301760bbf315f3598efd14e493d5\n9bcd5c2f575295283cd8f469f840fbd8\n1429db0e06466860dfd64b437f0ace42\n34d7f8dbbe80413c4ad33b69f9597739\n592ad41d80d018a2d614b159c22611b5\n884edfe9e34533543ede9e7417860fbf\n325fcce8c386f813e20babf15421d6de\n36ab61ce3c894d6514038d588fd1342f\n48228cf2207c7af5892eaa162d1e35d\n13de905fd21e501567a4cd2863eb1ca\n804b776428062f18f024b0f23b15c6c8\na939afd0e1336d17d20e3ea5765d7edb\n99175131585f4cfded403132b02528bd\n1d31309c617d32b51652e2e95099f284\n2291855068cbe57442b5d6d90d0cc78\n4a910d2734c9cffb44949d7685cb63ea\n54cdb325265e343619fb4103277a6b93\n9de6e26211d151931ae8c8ff1eb3d45\nb64277db98afae7f8efae927921987d4\n1d19f508f104e881a239479de51795b2\n1e6d5797be45c5a4443764597a072223\n9504e9be67514fe9c862eec8232fff1e\n8c29f480d31a1a521908c34adf823c32\ne6cc5fa521f970874c6deb9ede0648df\n6703a4ef8b0ce866a6fee8e2140acec9\n5f5150a80e5be6159141f9b58470d646\nbcc3c5da89afe93517a7e95ef7821038\nb0ed631f887c522519fb4103277a6b93\ncc4f3aff596b544e599dcc439b161a52\n897e43119c6e4b8710a82b807fbeb8c\n8760843dbfc059d6c242632b2a8c3129\n6cc0e9deb3b519eba347d2a9b736d5f\n8634968c859b2dba5e4b35ff1ea95f37\n4cd5a2a90a9bdd5eec2fdb822d0e9d44\nd2a4faf6613ea1e66db434563c7f5ea3\nd8142324c33dfe7595bea7c29e873d16\n855407f176aeecd6ee7d178666aae23d\n28cc5741095e9754cc9651014a82e2b9\nead2f0ef7103c963fc1f58a995f231d1\nd55d14f87d65faa84ccf9d6d546b307f\n9f5b090a3697b05f8f9cd2ac878055af\n8ea11732a1198be1dae12f3947d07dec\n113a2544e062127d79414e04132a8bef\n25bcc7d412b1b3f27713a8d3e281895a\na6ac0716e7f056579f2349486c570dd4\n7afd499e9b3a2e0c1a90a4432f1af114\n6d32f20579c9f422843ead12644a79bb\n83f9051ae9fb1598cbf5d61bee02065\n6043fcf2ea4aba3a8888e7425bc4b85\n5509f181ac72de8478eec18a8a3356a2\nc43bb99091f5a02cfd60059ad8523f1a\n16296126c5a0b92ea597952f9a39cf73\n96ee3d286bfb909a204812d6a020ec9b\n6ed77417302eb83832a1c3052eaae289\n1441ae85e34e1564ad33b69f9597739\n7d2032e1af7fb191cabc196a7f35f1aa\n682bc1622b438e58dd97e8e261a01f65\n6f98760567bd7f69bd16d4490a10a752\nf9f7fe005455dbec215b8895763d1ff\n8737aff6eced02df3598efd14e493d5\nd4704c12862c808b593ebeeedbff73b\n6f08148e6be15ec812ad7c55c944504a\n279150abc1b0b0b75369e32fb818f337\n92720933afa1dfdcb5c1550bc8448972\n3d297a9092136d914038d588fd1342f\n4d5adaaa9b5d9d42ef188758bf2e3a30\n7140d5cf3fb0c528b43753a53e4593db\nff213b889d304febb6f5fb02f36f9480\nf1e1585a89e6826a1d1a08d58541ab5\n978c47d21e5c66c6f519adc9991b5f11\n4538a9c622fc554dc048a125b47d14c9\n9ecd7b01b9be890d19fb4103277a6b93\n9af15fd5baed25b64b3c42e318f3affc\n1cd54be30a2aa4effe3e4e51c69744ad\n40dccfef363dd1474b3c42e318f3affc\n17bcd5b12b4c3f96d8f5a246b73a66ee\n6226851e0bf7fca877b7247857f4c82f\nbba610163b83053514038d588fd1342f\n526c4f841f777635b5b328c62af5142\n3b72c4223eb452168f5c37fe197319e1\n946ab73b9f05a85ad5b24cafb84903c7\n33ab106bfcc881b14b2bf798c0452b7e\ne80bb04a59bd72691b17743c18fb63dc\nb10f96a79a4fbb039444333dad662f20\nf144cda19f9457fef9b7ca92584b5271\n17fbdd9d8e8b3e8dd2afe8d5254a0d04\na03ca96c53c69c05f8a51dbffe0021e4\n6caf860b216a951edd97e8e261a01f65\n899a328f7c0292c5998b2b87439f61bf\n3477f074d38e57821a61e560ab9e3736\n3420ef8b6b20595e1b7dbdf53d301715\n7882a06b4612d536ae882f622d5cda14\n22ca96b824795ba8ef188758bf2e3a30\n605b9827489d47a14038d588fd1342f\n12766a14eb23967492d9da2668ec34c\nfdfcfc4e9daa45306aea2f18ee404fd5\n8cb3672d113ac9aaef188758bf2e3a30\n86b91784e9f32b8f10edd100dffd8d85\n5f5ccb837124abe11298312f680c9cb8\nadefd541f3b51aba5f5e789acd4d1122\n8ea0e8e7a863b6dab2302e21338c08b\n7d532887fcd3aef82ddd352288e7672d\n3b66e52a5272e0b4851fe006c784eab\n9508699d8e6112cbc6b21d0fcb810056\n430d315cdf5b3ca7963845a6a5eacb6c\nae9d32ee01af191a32dc1e76c3474bc\n37b3c4bd619d1c6541ec70becd1ecc7e\n7e2d1762fba4c38112ad7c55c944504a\nfb88e94765c2b3e9f16b2a6e0465cbb7\n6580148c3214df2395ca4adb70946a21\n388b70afc2bff624fe7ce990d81a91ec\n95c1e7d85da0497fc1a61b0a501d38f\nb567bd1f46bb3b347cf414b698427dbd\n2f85863e90aae79240ef1c8b63a628f9\n945a038c3e0c46ec19fb4103277a6b93\ne5d5c0cfeea2fdd11b17743c18fb63dc\nd65ef2797ae836ca8930422448288ea\n8481271bdd974c424b3c42e318f3affc\n224ccf9ba2b786d953353c404519f02f\nf990194a8401d8de68c2f5eb1dd4dfaa\n371b7d7d2f2d334c574754e046bb9a7d\nfba76a325f400c597178e3cb5f806466\n483518216d58f2581b7dbdf53d301715\nfb859910000d1e219b709c9b379c59d9\n4c395a8a8fb634d5febad4f49b26ec52\n9cf1a9ea641d548a7e1dc33a9d8d260a\n8f05bca2d46582483b28ebac0b25d03d\n469a61462432d5521625c754b61476d2\n6024afce9a12fd87318b348b36fba247\nd1016939207fc52841b7cd2d531f3797\n28ce909659a826d1599dcc439b161a52\n330caf403f42c12ace8417aef1b7a422\n53319f95d4bb6a0beaf288f952624966\n9d1886cd5aebab3019fb4103277a6b93\nb48603e4595bb61ab6f5fb02f36f9480\nc6956d32c9748c746c7c6307622a722f\n373b91686b4ac7859829306a513f9466\n87640cfc9e38bbb3ec563cfb0e79cc4c\n85a8fa447231a4fe2d19175e7d19b7cb\n9b5e8c302f7e6fb4593ebeeedbff73b\n2d4bda48253f35bf52979c729a1f9cc2\n8d0d0661c57bdd09b6cfb56a0ae182ff\n11a47d5cdd42a5104b3c42e318f3affc\n7ddd55ed6481457d4211cc92ec35b195\ne2ea1cd546d6cb4b94db33559ec0df30\ne09afc136efcabd0dbb841c441320b8a\n4b1598dc0e623eaafd86c4a0427c047f\n628d837b3c51f539dd97e8e261a01f65\n35c611ddda81b9941206ff076758ec85\nf4526b250d9ba847a1d83e910853d9db\n86d2aa8a80fd9f38dcdd187a6a5d68ad\n4f0d2de3a60f247662d15c83b2279a53\n515431e0c0854f1cce8417aef1b7a422\n93676b6ecba89ebb38449598167b268b\n4385e447533cac72d1c72b9dec4baa1\n21ff7152b3bd0bc3df63d1c7e43c783f\n4fd35417e08ffd8597e11b0362ef2f51\n4b9c06e04d329213843ead12644a79bb\n929614d79ee9b3f7ba83cc8b3ca4d7c5\nce3055223e53a46e67d4ef1ee6cc8170\n86c169593e5584233af1c639b9b2ebcf\n1cfaa8ba4979b36ea60b4d749290e4f\n11b36d8f9025062513d2510999d0f1d2\n1712200bca469561d20e3ea5765d7edb\nb9faefaee3f409ce2d86e6f67ef12498\nc97af2aa2f9f02be9ecd5a75a29f0715\n42dc453547b31f0b71a782a4379556c7\n824953234ed5ce864d52ab02d0953f29\nf34cda8bde3c79709829306a513f9466\nfe591a1cfbb6219afebad4f49b26ec52\n924339df8bd64d694b3c42e318f3affc\n46f1ec4173d32c0bf1af69e9778c153f\n2835a9015c20d891261770c74651d29a\n3ea28d2184d19410c823a47daff020c5\nc3f48348482f8c5df4ae8c93f4db5e6\n6897c646edcc98c149d579ea0e00a990\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/04379243_test.lst",
    "content": "8343d98e3710f5bee1b32bbe69d5bc15\nb7cead95e18b570d2c97486f63c12d76\n86b48365b2bd587e61830bc1b4d6c5ea\n237e15796ba16d86e1b32bbe69d5bc15\n73ca85d8666e7e26e836e479c0864af1\nbb1aa2cdf216d348e76bc197b3a3ffc0\n92ed9344484dd026dfd21203bf8b4b46\nfa5dce1043f44c06ab88e3acae6e8bc5\n631ab9f813568a602b70eac6546e93fd\n233c497df4d252aea5e91f4d594e20e6\n130d574de3f9d7e4c3bd24f986301745\n46f6cbaf4897aa45aae567e8dbab47de\nfa72e9cf7308066b1c072ac0b83fe07a\nf323d90dea57815e119555fc7462650d\nfb59360b5cfb54ac6f74453f2a3da519\n7c1bcea89b0037a2d67bd369ec608dad\n7cfa4ac4e24cd680c3bd24f986301745\nabbdbed926968014b3c42e318f3affc\n7f71383698c24d4f43dbb6421d614c0d\n7fadae39394c5622c3bd24f986301745\nc5a4cea5107d72f54b3c42e318f3affc\nc8cf1c77bbb79d214719088c8e42c6ab\n7982e2f2984978c6f4b6538438a0b930\n4f2eab1aa639ecdc6b17bdafaf39f370\n5d7631230b4fab707934a0d24a61231\ncf076ced8264a480cce90f0d61ed7a70\ne65066d6b0b83719c3bd24f986301745\n79c5df613523a462d42b9650f19dd425\n159964114c1991b37618b16b281bdf56\nbd25dfa62c3c2cf772bd03149507655d\nad61a5bc7cba29b88cc413950b617e8f\nda0badcc10ee1a4aea966ed2fa6fd5c0\n7610fa5f384cbfe2664b3b9b23ddfcbc\ne153f757330a4ea3cdd1f51ef2b8f2ed\n52896ba4c6c35090d3c1501c166e6b2a\n90d87b4d9a5a1e78f4b6538438a0b930\nba0cfe7ad9775de3276b6f6d90ee3a83\n17e5a64889ca085fa5526f91aecc0c37\n50894123f3f237c161062d371b5548c7\n8256e81768151f74d931803ebb8c8c44\n768cb2332a16fd63855931d119219022\n36e167a2c51751a630bbd4cddd04c77b\n1f3e217cbc871152d7465eca206fda6f\nfb2191ec35ad66da30bbd4cddd04c77b\nbdf7606e8d493149664b3b9b23ddfcbc\nd533837495d31706d4bba81d85a6a53d\n7956ac7aba6295d1c2fd07f66cbad0f7\nfcc387cf43f5c63855931d119219022\n1ca75076bcebfac76c3484ac7eef025f\n176d3994129f9307c3bd24f986301745\n41cdb5b619790d5a74eb542502c2205f\ned320d80089655bedf6cfab91d65bb91\nb2d9065a028e52c7bd1dc9077c6610f5\n5315fe89ddcd618a6b9a552adee29b1f\n70f1b5f74faa9bda664b3b9b23ddfcbc\n7a33f3e6c8a1cd0c9ccce4c6d5bb195f\n656aefa835e5f6624b3c42e318f3affc\n72cfb60a075369ab7252c133a7e17d94\n8b4ec70a3c1283b1fb5f8baea920e189\nacafaecee00323af7ff6ace05b36a5\ne3b7fbed310c2c397c8d78b9aede742\n995f33073ca76ab69856fa70a578baeb\n7bbf01c219dd51fd7d8864caa856253b\n46eb174e4df0f2e53719086e0b4ab8be\nfad9dfcbb4c1755811cdd52f3d07553\n889c9aedc4ba47592fb02b79d375eea5\ncd91028b64fbfac2733464f54a85f798\ne5a84d7ed9a5ce097f4557c0cd5f53a\n203d58d26d1546994b7b33169889d14c\n8594658920d6ea7b23656ce81843\nfead7e0c30a347b1710801cae5dc529\nac6b9f1d494c9a007ff6ace05b36a5\n9c2fb771ec6073b37ff6ace05b36a5\n2e7a728b482bd2d453e946fb2184f0c4\n5243b5491a4f8a16a2b5862518c93\na9b81cb82f73f249f7248d9dbed7a7b8\n211f8bcd0542292a90eb1f8a00f61726\n55d5fce641343449d42b9650f19dd425\n2eb503dde3cc027d86c701087a194026\nf99ebf0f053140525a0e5699b3040a35\ncc554812025dc498e7ed5b5b11f935c9\n2eb4a0d015b80a8d9ccce4c6d5bb195f\n174832b73cd6d91c9856fa70a578baeb\n199881390e6ac3a89ccce4c6d5bb195f\n10bb44a54a12a74e4719088c8e42c6ab\ne28354127815445a83e5416284930195\nfa871f2f88b933cd7a63d8989415726b\n9e5926bfdc7f01749e65a3d2929a9516\n8cb6a2e9ba365c94593ebeeedbff73b\n3cec584145ee513d635418e95eea8a17\n3c4e1361b066ea3b8ca998f0f87d0c84\na38405108fb416d8356ca1f9220b9968\ne1bdefc225831db150fa82c2f036109a\n2406cdcd4c60c84132884c4c87a2e061\nf7ec331aac39a17fb129901f80d24b7b\nf95f6251339b759b30bbd4cddd04c77b\na8a68d6e43cc0e094fde46457697d80\nbbc451f0431c1b06cea52a85deb0c978\nac424c33c6fc302355f46d55537192b6\nbc29a2ba03444764c3bd24f986301745\n40b48121d1879be2ee0605a41c3320d6\n67a49674df5b8a44f51f77a6d7299806\n370b45eeeb9b11416f04d49e4de95b59\na25141a07c77c25467de2aaf749e5256\n1b805da9981a6393f454e62143e2dffc\n8569fbd5e27a1845e7c7bcb951a9c987\na4fcd8afe8b6de585beaf00da5b709c2\n3838913e27df8fe5287005440c82669a\n6d09606aeb54b55659a44e6453790000\n39cf5ae2b497715a84253b2030fab070\ne2e3f057399a2b41276b6f6d90ee3a83\n161be2d2421c18154e61d5e9018b6ba9\n618469f067751604b0b9d11504ae34f\nc3a9dc47c5bf10aac3bd24f986301745\nc7d36b8a4b79f89dc963b248f3fa9d25\nebc82e7df36f6e9a33963916b86d221f\n40b632472f8e69a7664b3b9b23ddfcbc\n531381f5bbc69e485769b3af36a2ff9f\n55457cc3f0e7d0e06bcd32c43682e841\nbb5dbf708d5eb7f82099f9e22ca45b04\n9f1fcee83cacf964f4b6538438a0b930\n8f440a7c0e2af79f3ed0ffd59feeec00\na656b27fafb027dbaab26ebe15e9175a\n5385893962db72324b3c42e318f3affc\ndcda90e411cb4e35506d1e1cc84da713\n7b2af227264af938d42b9650f19dd425\n43321568c4bc0a7cbaf2e78ed413860a\n1028a9cbaa7a333230bbd4cddd04c77b\n5970844b794a55a736d8dd30a594b2af\nedba7eb533ae3578ece232edf44331c7\nbb93a65aa5768c557b9c6deef486a7d8\ne3cf80e575ddbc03d706ecb3379aa341\n83248f27f069f0fc8312881285c04cb3\n3249c3ad90085a9e98d5fc0473d00a1c\nbd7b7927d8e36c38c563fcc2752ece39\nbba5ce8555c8fa89ba18ade30e563d37\nb9e3e65aa754f3b49ccce4c6d5bb195f\n34d82982f75a6249ccce4c6d5bb195f\n904a4c3f1ecef5f852046ee916d15a12\n679d57762f6ae711b282e6ae268fb5a7\n9b8e6eb835f0c8bcf37af16b2893f1d4\n47317755c82114d5c3bd24f986301745\nf4b820ba5a347d939e0a5cd76ae8e45a\nb6884eb4e95d851b5f606243e56be258\n5d3d902051858e56ed1397afd2317e5b\ndb406d9b2a94bce5622d7484764b58f\n452a33df06b678c6822b5ad61b22977a\n68ea1f319a9d724ec3bd24f986301745\nda745fe2b26f5d9b9ccce4c6d5bb195f\ne25fdb977fb867fdc3bd24f986301745\ncd09a9641ea97d873823cce3247aa03b\n223fbcc813831d8c6e526771d2f7444e\n634bcd3197e337aafe4e4de1adda2150\neae36b396f6b5f97664b3b9b23ddfcbc\nfa345f8f107d93b9ba70f71694a4b74c\n5326de43a392840657f40ff86fe708ff\nab2967188299bea54cb0654f4cfa9684\n4c7931492b41f960d50eef20e0914a48\n59a1703cb9320c018f49a52c8d710d0f\n7c46b661b94fdfdd34528a88ad1d85d3\n29d9c6d84c6a126917b431cae0dd70ed\n889f48aa85accd2ee73947fdf756a329\n23acbe1f91d445f91ca1c7e576bee6b9\n2602a7b129a08e42c3bd24f986301745\n9162c1cfbd1e42db9ccce4c6d5bb195f\nda1e75a8647bfd919778416969ddad32\n416f41390bcf0f87a961b86aefe617fd\n490eb3a23cd0ec4e9ccce4c6d5bb195f\n399680cabe38c8e27b3d8399a9d05045\n2182028f013e7eb530bbd4cddd04c77b\nf907cab3a8373d56c3bd24f986301745\n419412b927d11c7d8312881285c04cb3\ncb1cf4ec74b4aae217923568dcd460b1\n38c184010d3dbed1d0c05eb40b42c942\n1bac0eef0193952558df8eeaf3dad1c\n73bbc651e2d6eb22ea65c47b660136e7\n94d6518cf1e00eaac013a7bed5288654\nb70483396e091a75808b6f0b77e3bec3\n2ba8eb5ec0a05694593ebeeedbff73b\n3c9a23693b76e2f8acb16624e184454c\n139e0706288b7ccf1657aaca7aaa9a5c\na83cda80e5c5a0fc3719086e0b4ab8be\n6cb965ebd6fe2e3bd8d12f352b5e1839\n53cdb2389fe5a5e5bc78bb6f3ca89e4c\nf82a5f3c2a57655d825da2b9ec9c8c29\n575fd4acf0112feae2b24d5cb1e4e616\n735acef5841a826b6ae95494c18318\n194b279c7e892a2d15fa8082e5524f79\n1040cd764facf6981190e285a2cbc9c\nbb838e62bfa44f538705931e60ead6a0\n74c3d551e32a1cca664b3b9b23ddfcbc\ne8c01f71fd941af11190e285a2cbc9c\n680d4a8b5a30601a4b3c42e318f3affc\na10ed77ab3a714f43dbb6421d614c0d\nd62417059f78e8e79d2be74cfb51ade1\nf2b3a2f7c9a4ec19436e6787c76ef3f0\n1af5dee23444c104fff16555386d173d\nb8c0ed645cce028b3fa313db82fc9cef\n5292f2930f188e0a7ff6ace05b36a5\n77ecc55547840f06d42b9650f19dd425\n21aaa0dad37443f3720c3a14515ab23\nad86ddf54e0db02c5d91cd746759626c\nfe20b0cb9c6a922d58df8eeaf3dad1c\n8f05326e122a6b973eea2c65c18f73c\n1328dc6429d179d056f6ef8b6ca8f4cc\n72cc0fe296b9172617271868b642acd3\n2766a883126503cac3bd24f986301745\n2a43665ce0526ec3bd24f986301745\n6f2ffe8c014a6a458af30108ea9ccb6c\nb117aac2e13630bb5d23c9bbb429abf9\n3683fdc45dc98b8955d054336de5edb5\nb10d84b3a04085b17618b16b281bdf56\nc0a18b8e41041386e1a698146efec195\n57fbb082f660c4f7716b680dedf77108\nf2a759729bafbe88fef3fa725923b557\nea60054e04139d95b90b5e5b769a3ec0\n3c686ac317c496f9a71c812e027f94d9\n6f88879125d12e03492d9da2668ec34c\n1abfb0c03c81fc2219fb4103277a6b93\n574447022c4473d455f46d55537192b6\n6724ae69c0bde4c09b7dad6c9c46bcf1\nd0b6fa6b908473b05213cec267286d18\n91bf48934d3b52ea36658c6705d0c08\n124cc3b92266c2767156f312cf4e035e\n202e7b5c3ec079e299e8bf807e902261\n827bfeaf1de70f08f7d9678498f2295\ne37262abd76852ac00ee852f6d8aa3c\n388ea3f8ba27da8b777b6246417c94ff\n28ce06aa6f25b39f2d19175e7d19b7cb\ndf5b55da209637624b3c42e318f3affc\n7e3022a7bd00eb4195b8ea6a366e14d\ne9a68d0ad5177d24ba5342d638d0c267\n4309b8cf22f0382917271868b642acd3\nc04b363fd824528bd42b9650f19dd425\n8e7c894039ae2cfe99e8bf807e902261\n90be5de0faef91ef3f7e27638e63d848\nd91619d6c9915368e6c5cd45aa112726\nfd487468f7a33adbb2a155afd9dbbb0a\nc35a14f84985f92a9856fa70a578baeb\n4e928377ae98ed8d99e8bf807e902261\n98b4af37112000d6bbd07219dafd2111\nf6f180c3e72caacb5077539b37310c29\ncc58de930acd321fac242c3aebc81b2f\nb9cdd373211c1d406349f6b5431fb3d1\n61b88b501933ebae8f7068c66465c4d6\nf718cb5d6202341dc183308b9aafe2ca\nc083552372e71f9c7ee217c21e683487\naa54c2e6850253ffe08dd63aa50202d\ndf811f7a858750875634c21965ee6bab\n397c56f15e547fad1bb088904f7cb154\nc31fb1b1dc95160d8f893d87da13e049\n82b69c9b72a5159ce76bc197b3a3ffc0\n3144ba0c286cc61f490ad276cd2af3a4\nd40aa82ee8ef7f674e0fb7a6bbb665d\na45a7ba9a2842a55634c21965ee6bab\necf3cc67ede747adba5342d638d0c267\nbcdf93ab467bd7d84fb315ce917a9ec2\nb2da5c4c116c40a241b160b9adc112fd\n30de7eb171cb381f99e8bf807e902261\nf9597fd50738ba45ba5342d638d0c267\n734c761c6fd2b260b4c161851ed2b4e4\n75b308ba45762ad499e8bf807e902261\nd4fc029d3836221b76e9713f57a5fcb6\nf954f8a605974809dafcfea63f0b694f\neb6ded7c35e0a3f69856fa70a578baeb\n4dae8fbaa2411c5598e0d1738edd4f19\neecddd2b28a9e59866f379f51753f72b\nda23d0bdcd1de093de909714df3390c0\nfa3dcf1562e5f60829e4b5aa807bb4e7\nf96aeb7884a318bee76bc197b3a3ffc0\n42384087aab891baee18bc48b60b36b7\nf621e2ad900ad48535836c728d324152\n3c475d9f0433a7eaad2650d014e970a5\n90c19c729cabdb864b8710a3469971b1\n987b7b49a1435a4b1b17743c18fb63dc\nc5ae96124c15c734e6c5cd45aa112726\nef1e4af0d76ead1afff16555386d173d\nf0d5eefef970fa4b9f2349486c570dd4\n77b83ff0d0eeb34e6349f6b5431fb3d1\n8eb366f4f602219b490ad276cd2af3a4\n87dda49474723fa816a2b5862518c93\n8be0acca4f67e4a4ea966ed2fa6fd5c0\n52eaeaf85846d638e76bc197b3a3ffc0\n594a7dedea7abb21f77e460087130a90\n23d4170c7a0a2a014b3c42e318f3affc\na1446962064bdf3ba5342d638d0c267\n79e3d485572b54bd9f2349486c570dd4\n7b5c5d7e3b9d89b577cf3bb06f394ad\nab8cdc829a360d59339797c21e8801b1\n928ea87878a7bbe26cf876b69450cd4e\nc8ee4a8b703180992985858e6f5832da\na4b2870ce7a54b8eec11c6b035aac769\nf71296c0a7e93ec282db9fca4b68095\n8118d53cd86b7aa6436e6787c76ef3f0\n678f5f5a8c95b0508cbb8bac2032149c\nc91c78e14fccbab316a2b5862518c93\n2e2894138df855b26f88aa1b7f7cc6c6\nce3c408a60cc0e19e6c5cd45aa112726\n125ef28adc874f72934a4834f9d7586\ne13f70868bd5e3a08d9d8badd9c0cbf8\n686a09b1584249ecac3c355a33b4399\n6571fbfba919ac76eca66eeb3eb4982e\n3f0e61a567fe7d366349f6b5431fb3d1\nd19b4bde0766723c9b3bb0ef2a08be04\n6f97636bb2ac5d599856fa70a578baeb\n75f9ad7ded87bffe1bb088904f7cb154\n676d05aaaeecb8a04b3c42e318f3affc\n124583cd4b54d9c01b17743c18fb63dc\nb69d9e876e7a80a29f2349486c570dd4\ncacf61ed869db8e7f84b0be7f50940eb\nc399ed276ed35cb9a6ce08f0d82ba063\n2fca68e0ce294506fe3e90bc90e90c63\n9d90a58677e619f94b8710a3469971b1\n759cb93134fd5efde76bc197b3a3ffc0\nf29863d2fe8863d4195b8ea6a366e14d\n9d8f0444a8c09adff0d4c8f4dd125299\n8b3543f09b36696b488017d48a7f7eb4\n1a00aa6b75362cc5b324368d54a7416f\n4bac1dcc5b39f3d1a4328b1daf5160d6\n335bf5e7f636ea198be1375d26d1cb89\n25bcea593e4314c3436e6787c76ef3f0\n5e409a2627f7cd7d63ecd64ef0e6814c\nfe7dd4f6b988123bd810b14a81e12eca\ne6ee101d3cb13bdd16a2b5862518c93\n72a697466cab7851f51f77a6d7299806\n1fc4b8f3fdbb5cca12464df1bb7d5f0b\nc0fb01629cdba5ade6c5cd45aa112726\n9012c6ca245c1bf4e6c5cd45aa112726\n8f8954e310eb265bd42b9650f19dd425\naf953537017f49351e3178ebc750d175\n497659c4723fbc4fe90ff84c89de437\n571c9ffa865fa70d2dff41777eb31a7\n7370a18bebe67690664b3b9b23ddfcbc\n98e8e686225b86aedb7603860ca917fe\n72c884f3b9b9119966f379f51753f72b\n24b563bccb68e78bf939d21e50c410\n6cae7a045734cfcecf03af5e7a1277b\n5516cbfe2ae44c0a7062f2d72cde5c95\n84a3c87bba5a472af51f77a6d7299806\n8e3fc5f1f8e9658ce8b2b8dc0c816caf\na1419b0cf5fd0c2c47fe5b27e60471f\na4d149a48607de3d92f4c88fd91c6b1b\n82e5309809e455d5f15fed2243deb166\n2ca883ba6a9dc6f68985be89a0ee21a\nf831f836f6468b28bebbd6eb70ab85c0\n5f226992dc83d5ead42b9650f19dd425\n4e87db85d5dab96822339a4b4aacca6b\n906eed2a218acb42699c80a6f97edc9f\ndebd06d3176a5b728cbb8bac2032149c\n425ccd56a558a719754784b56fb4c23b\nb87594dec9d851c035836c728d324152\n724b8cfc8c4b8e16300009db8b7749e9\n48273349239e81b64b3c42e318f3affc\n995e0edbe7bbfbe0659dda512294c744\n9d5718ed61c116ae4b3c42e318f3affc\nc8dd6d63b6d82f8399e8bf807e902261\n384dc1f8ec0a0cc2ce152ffe2d789882\n93cdfd14889492dd91a4fd87fee47737\nf7600660924857c0d31d0d81bfe9c743\n884d2cc0d3aa8a72640e544a5d67c33a\n6f957742745697cbceddef1607dd507\n81db02f2b3686761f51f77a6d7299806\n68e8c6def7cd57053e946fb2184f0c4\neb363770ee36b0309a79b01b89f55c86\na78273aa10b2dfb0bc8d334f99e7f52\n527445c0b9cf1cda27f5c3f15a1b92ff\n3c4786ea0997d6bbc0f947750540fb22\n93aafe1aee82e2fadafcfea63f0b694f\ndec59b04dd663d5965bc5e8933ad03bf\n4b35aeb6ad7a0370f51945de050323d3\n5adf5a7173e588ad76e9713f57a5fcb6\n39bb09201e0cd201c17e7f250c5222bd\nb2b57e89a036970d22e5ecbe03e765d\n2ef012ddcf1cca54f51f77a6d7299806\n3d8616a9aa4a8c87cba9038a9140d5df\n5d63f11757a433b914038d588fd1342f\n1a767b8130e8a5722a7d46e74f08da70\n143e612ff081f2fc3dd0bb3e608c7548\na7164d4766ff0e1b4ff124faf2d8d947\nf8f8ff7d9cfdd395765b19233e844344\n4cdfd605352adcb0da13974b3533fb59\n9dd5b7e6f90ee322b56d92c5d7b06038\n8d07df2bf706cda58c5591114064d173\n7f28dee9ae1a39f1700e86b51ee00536\n91919e69d7aec2b740dc81e448174af5\n8b5c74d6fc057bb24789ee5c8d247b09\n6fa34794adb6acde24dca86ff4e91ac2\n33b727a7c5e984bd377c09d18bd75e8a\ndcf1095b329396b3a193550461f84122\n7dfa5642ccc2b8fe5e2a5c16927ff414\n4d8abcddafc52ccc95e7043c2fdf14cf\nc3c635d741fab1615f0b5ee0fb357b4c\na83bee7cfe190a1dc26fa198e521610a\n838b05234e648ae5db4c5469c0c1ba80\n7b411de42d4960eb6e25f3efedf6785f\n1ad672c0a138f8ffe286a7dded929c2a\n564b7a755e3003da64fad3c7b88e6060\nc1df09878a7a4a81190e285a2cbc9c\n1e5f3bc86bddd77f700e86b51ee00536\n18fa0155b4fd12f9a829287b9dedcaa7\n2d468e75b3063c165dca6305fb9f97ca\nccc1fcdb8b104c97700e86b51ee00536\na224010a537bc683104e417f71823787\n78218e7cf3b5f6026e24b3256330e605\n3ce930bb150aef8a69fb38085fbc320c\ne241cba189154397718664fe76a3c7a0\n9391dcc782fa7f6bfdad344760a9dafd\n18be1556eb4da5af7ccf848ce05c84be\n3ac209693a4e89c4a4b99739648f763\n4d873bf1a658dcd523eb3ad3d378722a\n5d53ed3005f4dc6856786b90799c4fdb\ndb5a895ae7358c97b66213207f46bee7\nf5a42533b878229d942b01e78b9a302d\n4dfa73e922842c02a7e7cb173e141227\n8da6fc70195d2b4029820ac1e8a0acf2\n780479255b0af544ef56e80181daf078\nfe99a1127734f7852b70eac6546e93fd\n40dac9b7b00849366bd83cbbbf17afb6\n47164255adb1efd5fc54b7f07479f415\n495db04c204196ec47c638c0eee4a2b3\n5129899201421fe84a873bbe35452b88\n81bfbd041dfdb827c08b855dcc4d6f49\ne2930bd9b16db2a80d6227ff9b21190\nf3fd419f725aa894ba5342d638d0c267\nb685208ccf38786a6f1e07a56c129dfc\nfc51355d4d03ff4ae6c5cd45aa112726\nc9ad84452fe0ece05ab833c88a8efb15\n5740806aae21635034943af333340cd2\n4cab7b493f8f404694ed13cc64e8d835\n5f8bb62eec8f6f49616fb9ab42452112\n75c5b314933c8bccea896321ee86caf3\n878872e3494e6b26baa48d60edc63ba4\ne62c51fc96e9394a647d4fd8d921152a\ncd895c35fff495cdd0b93fa304cfa755\n6daca3df48c0e8491cfe337d09cb7c35\nece476ee957a099f5c5fd2c2f381b61\n51d196f6b12a84ddac594abb03ff6297\ndc537055864526217d970cb50eca3a9c\n9a0f67133d4757964ef2fc89218529a9\nd826633e8f45cddbc22013ebab50762\n268e68f1819a225c1b4b790955c17432\nfed49ae8578b251d9e5f3db95fcbc5c7\n74c14e9a4ac91242388406859b1b0545\ne56196f67d724cb892f4c88fd91c6b1b\n2444551d00693a0fab610b0c94236463\n4a3641784a9ecca04fa8d6439169bda4\nffa71bb0a75ebd7f93ad7cfe5cf8e21f\nd2b0fe8551e6e3b0ab610b0c94236463\n719d38e7ec228bc9ad329b1997e89fc7\n9dd63148e5b0a4f79eaa55bb236fb6e1\n7f827b92453712f3504af6e1321617aa\n9c12baa3337390578592b396b177b348\nbcfda4ca76d65ca8d4eb6d6477feba27\nacfadff8f5ab4e7880d6227ff9b21190\n828aef6559b4e1b8a9f015dc2ef2c415\n146ecd9d7712eb81e6c5cd45aa112726\n5aadc1a9220fdbb8349f14616fb49d0a\n9a71b92445cd3f023a9bc242c86fb7a0\n279c8601278e827dab610b0c94236463\n74fe5611d491a2b77b286d3c174c2040\n2b564ff0989caf58ab610b0c94236463\n81a84fcb2b247a3348eaa510713cb074\na1896691fe875eccb9968f25875bdef4\n6d580c3fb8702ceaa864ae08f4e79056\nda96905b5b3c821c8cbb8bac2032149c\nd67a0b5dfecb565f2197da8dec8488d\nd81388de1add33d8e41c171730c26c4e\n3ec4be6e96bfc2512b5fb024f65f6da\n9afaf5ab87a889f67acae9ce58893de5\nbabb0963a0e17bb59cd0aef0207ac8c6\nf0d8620b49ea76db83130614d8020b3\n70cfb2647d8246971c81cfce8a9fa8b\n408b03db5a9972cac3bd24f986301745\ne6bc7735ed67822e60a09749bdad79a6\n26b2a15646f6a3a06f1e07a56c129dfc\n216da8313bc7b192ab610b0c94236463\nf58e58ad9952e174d058858de40fec33\ncf1a7653c10aaa0eab610b0c94236463\na465210c23b0136d7afee304cce81d6f\ndd24fcb1ceb67ded3d937a346d1565b\n2f9f15a48b674ea25c87325f4fc53794\nddc404bc12e45dbfb4e3935c6cee4b35\n8dd8370dcaa8d770ea5682a3b818969a\n2ad1a20d43c6106f71b1188ea929234b\nbc842e548e68a3cbb48513409ae7c51d\n2a0f853dadd841f96f1e07a56c129dfc\n6b43cb708670013d2a475baffed905d\n613c706879ee39c9132c018af3949fe\n4ced745f960f7439b91767277279ac70\nd1efb527d5cc9f98c1dea9c21912d169\nd78c722ea1a1b2d4df253edc1fde0322\n6bc7148a5138aa6765eacc25f128a1c5\n1bce2f4937d36446a32c566d71fa585c\n8bfacae2de0067cfbfd72d7396bc040a\n12e2dcbdc199f0ef8fbd401ebc04b5b4\n5b9a7b7952996844d802aa676be38da2\nbdf183022c888426fdda2d9537f811d4\n1b273f4af777469e42fd31df8966a338\n20f561347df7703c9c9e05c155b1837a\na882ada8bc14e42080d6227ff9b21190\n53ac82e4ef6af3da9a5ac88c7195fa36\n1539b9a05dd82a3b23adfb9fc6ab1f7a\n25672204a764515578439215682e01f6\nfb89493e6389039527d4fc401a34f3de\na05c04a3cad42012fc7ff8f848d1c6c9\n337479a0afb08dc91933ffef19678834\n854b885039dd51e7ba57e2d7b7436136\nf5f5caaa07335f4e5c3654528317cdb2\nf2bca089598c94f71d246659f49791a1\n2bd90eb4b9aaff9af84b0be7f50940eb\n13c51c08c3695a09eda47978b73f5994\n67b9c88c4f75cd1e886a7d82f0a2cb9\na5cbc0a86cdd01bd348f8ec207893cce\n72a4fae0f304519dd8e0cfcf62e3e594\n3c275368d3e30e775517495984cceec\n7105bd044f464358beedb4c8fd29e2d1\n6110d87def4fa88c154c6bbaeb7d331f\n9a5cb4122d518111b339f790b1757e92\n4ce0cbd82a8f86a71dffa0a43719d0b5\n75b0a926c795a110dd965e6a8387505b\nf875ff7c72fdada820768660cf080d12\n4739bfb9ab23e4b92a87c4cb5e925da5\nbac09b6764c6c6b9f4144767ba2e06d7\nf5af26e3cc266932ea88b65c86e82a10\n21ca4d36a0f6fa69b937d98d58545fa\nc74bad51457fb0faa0ab1d82ef09f78f\ncdd6c99231cca3c65b187a2f89229cea\nec9861c234daf6bc915f51b5f5e95ffa\n28f3844a7a3d37399c0ca344f487323e\ncfd7e354a5ae982aa0ab1d82ef09f78f\n527b2d1e964f056383be1aa5a5ab0c80\n2943ee99465c7adf30bbd4cddd04c77b\nae9e04d050f5cba1492d9da2668ec34c\na95df9c4372e860c73eb02f1d995d891\ncec8fab8ad62fe3840f3ac0af6b7e700\n4e9a4060a7fb0dd230bbd4cddd04c77b\nb158eeea059f2c7484edd435e02f1ecb\nec1c92efffb9ee78beedb4c8fd29e2d1\n894e095c7036c8411933ffef19678834\n8d0d7787f4babee7e66285d36ebb986\n1834fac2f46a26f91933ffef19678834\ne3cc0b06be2c972cab610b0c94236463\nbfd32cdb923c8430e260ed121aebe3d6\nb4cc6b735f911fefcfff181817262617\nc667df83b0e77f96770db120e736ddf\nfadf4f0b608be6272648eaf710bc2c44\nea3bcd9e6c4205031964126395b17c2a\naaaba1bbe037d3b1e406974af41e8842\n613888be9e80b92fda684e203423d5f5\nc0b74c61865b563067dc358060e3c47b\n2e0a8f727d87045818e800f0d88f9019\nbb41a57386b1594c218a519212ed7c98\n99ebb9278165f04f72559100997b742e\n80f986ae572fce791429f9a19502375a\n3bc7c7450991737c36b0f2a1430e993a\n3f843409e853828803734eb00d01e20\n1908f2afe36335ebd97122acd7517380\nc1c81b60f786873262379fe9a26f5cb9\nf643a64a4e38723f73c478529c40c4e6\n4dd2d2ada39e32d15f522d72d0dd08cc\nd151d9f45d8b14536cd661fb5fd95741\n383c5e64f539b2852f852bdd38b1133b\nea3ecd082151c2137ff6ace05b36a5\nf5f7ce79ef61e0ff3f0ee3307f850b4c\nca13cadaeff93c58ad0e9e0d146abe05\nd40fb361cf8aa18767dc358060e3c47b\nfbdf9bffeb353474c3a767747b75e56\n89b478643e53d3d6285c99063fc6fcf8\n6ce30b0327db26f340b4c5428883e585\neb9b9b8d186a974a7afee304cce81d6f\n222c56ff9cddbaf4139eb23f7c8036f\naed5697ff59e3d3035478a6869a3602d\nc24b7a315dbf2f3178ab7c8b395efbfe\n35cfc39065c4073f4b8710a3469971b1\ncb87512d706828e1e95cd0dc8c2f0e83\n1f7e4805b267e71f21da01c0bdc324b2\n7c15998c0d653821ab610b0c94236463\nd01a6b35a54c8f77dd986a55e273fa14\na364b8af9a8d28acdaf1a853214fa9f\n711d3e719d7655adb8183a4a81361b94\n98578539ae351bc3876b50fc31ccedf9\n3c7cf00cd78adaef4b3c42e318f3affc\n809af89dca17068ea0ab1d82ef09f78f\nef4fa923a1c2a3215f25c76975ee64\n81eea4f86f308c6a589aae130c1f06fb\n6e0fed54fcae8a62edccc47bf0dcf5d3\nc5087fce38b009ae30bbd4cddd04c77b\nf597ff7f743d99a3550660cda66234fd\n9af7a071bbd432baa5526f91aecc0c37\nedbff6864a97cd6aa1b5ceeca96f6fbc\nc50794596b14605421c4aa1c0e1daae3\n9f4eb0d734a2b7a4ab610b0c94236463\ncaf7f51add1284ab7ae016d7bb06fd0d\n13782b95eeefcedacf004563556ddb36\n5bce0f5c92198217aace21c72a80029c\nb896a4afaa13fec7e90f16feb54700fa\n7b3dfbd70333485d219a1300d9489f4e\n89fe1ff1b8de298752e8ff799642884c\nff58a52586bb1f692c95f6d76cb3094c\n5bd924058c668abc269aba35b84eb82a\na0d2754011acdcc9d8a0e410093d6619\n8ce70dead5119191cc3492a06e9bd850\nf695567555986b6a71f08386b3af436f\nc6575b4c39a341c698d5fc0473d00a1c\nd126210a20db32c23027f298c7ea0c6f\n67e32538a35a5011a0ab1d82ef09f78f\n575e42b02249f2b3b87a068961a20739\n949c26cd898da9855c5e8df5dc8d3d85\nb0e3b90a33ced56e2029d06c0cadaf74\n3a52892dc6c06efeb2403dba7fd079eb\neb31e5efeb810c5280d6227ff9b21190\n9be565678aab11cba0ab1d82ef09f78f\nf2743fb608c502abfffc97a61124b1a9\n4d2f7c689e77df6b6dc1766995c17a41\n249de04d8d7e4061cb9cf5f7d536cddb\nc3023187d59aeb87a731e84e842dd6b1\n39f6dc2839dc4e1bbab624e35355496d\n333002057d45adfa7cc56a6af4771185\nf0abcd11d8987f7fbeedb4c8fd29e2d1\nf1324b15b7cc9cd48e689df3ea785530\n2dedcb98bb6e9375aa2e219918fb41bc\nab9bafe307e11e7a2b8a1a2aaa466160\n3b51d76c7770b81a3c6c6fc37120868d\nf8c0c4f713f0c136e9048ab4301b0c63\n4ebcc39496c64f0a50566f53e37b2171\n7062f5b229674ab7b0b54dd2cf2a35d4\n3712e31c61ea51a354b250a5bdfb0136\n5e4351c4525fae6d6fa63795f94c4d8c\n7b5b7bfa8580e913e2580b23e60e4674\n88e06a85e2a0f99fa7e7cb173e141227\ne460f8b0797b44b06a20dcde106482d4\na0b11917da240c98391e4d6c585a697a\n20292fba71362950c59c53f7df509858\n467e71e8e546721e1aa023603cb7e1bd\ne428b7d6634444a910bed4209a0dd8ed\n50d8dde1973aa467427adc6587850b2e\n6fb52c296531dc17beedb4c8fd29e2d1\nca4ce5ea2835b9d71e9c9b11de2def7\nf61d6422de7447bc4c772d26a83f790c\n1c8121e1ad6cd6fc7a480f3f1d55ed3f\nb658e507c84d6202610c2a68437007d6\n9b86da62c360aa0d824080f516909671\na2781622b5941ff2a886fe6408aa7382\n8cebe5dcfa2b907f47c638c0eee4a2b3\nd481ee7e971849339db8ad97fd392b59\na5230f3ef20e6d460a7085510f65cd6\nd9b418e6ec14dbf50efffb055ed6bd1\na2cf3d4375a5c6a65dea31ce253437e6\n9c12fada31224bdf58c4e7e56d799d97\n589f5927d37247564fad3c7b88e6060\n96edd3d807d2b1c7d1869c3a235ed163\n241ea467140a03a1e015e8084a32eed1\n3cebd4314f773f8ccb9cf5f7d536cddb\n169a72252808f9d12a7ec74a9a907cb3\nf4e0c7b0e402ac86e5a953fde71681c\n2f106667589a6cedc36874c8749f7812\na8473c68f6a6f9ad7a1efe7ddaf6952d\n77e03976667383c3d810b14a81e12eca\nd477a17223129fec53227dcd0d547ba6\ne18b448f7e5f6ecc1baf720a45fc5c38\n56b7150b4fccf41355f46d55537192b6\n97661c4a58929ff2d9886e45007f4f88\ned0be8928caab4bdab610b0c94236463\n49ad167497a2af8c9672e39f89e4622e\ncf046edeff204b81cdf7280ff8af6720\n1581d2682187764730bbd4cddd04c77b\ncfeb699abe1b76c9964afc371e247bd5\n2eecafccfce0a14546407779dbd69b2d\n297778bf1a3f8db5cea003eff0268278\ned73c41dcfe9170119cc3eaf35cd388f\n4cd119aa7b11f3f54b3c42e318f3affc\n657aad273d665f5dd9823f45c4411583\na7ab2b8bbe94bc89b41f4c6c5919541\n91569ca6f0578ea9ca2ed12df13a916a\n5b5532f71d63a7a772051d450c32f58a\nf7ced3de6f4c1ffb4e3935c6cee4b35\n684ccc0f629ee45cab610b0c94236463\na422fe1fc47fd85d59a230640e61666e\n7205a833bced185c41bad6f6f893aff7\n747dd84010a0c34d78c3eead10f81a63\n2aa624d7f91a5c16193d9e76bb15876\nfa7a5f65c561d9d2fc43dee2a1d6272c\n607f9e630d94edff9292bdf65b24b621\n2700f6693447c32d66c64744a4252d3\n21a807616afa7c6030bbd4cddd04c77b\nd5d1e750bb492dd5391e4d6c585a697a\n30dd74f09af6b1c2fe5c8ffd0f5eba47\n88b227c5fb3906ce47c638c0eee4a2b3\ne58e958428584b2b79972b30518c97e2\n1a153612bcdab3e23cc149415a408229\n1abed35643d34f60afed86cbd9fd5335\nfb1b4b6d51cbe29967d783b4714d4324\nf98b9036a56fae4626da964cc0cf44a4\ndebd11754f993031eef3a45c2f31a227\n77f6685f2df21522bc31aa2bac13542b\n2ad85522947a9cf5f4ab13f4b49ac318\neb773e1b74c883a070d809fda3b93e7b\n7d14ae7d0b7338bda0ab1d82ef09f78f\n1b84ce3667a99f1d30bbd4cddd04c77b\n2ab79a94145330a95ca21a5844017a0f\nc1660471a22c98a9c7cdfa94351d0f74\n5d93e285b2006520ab610b0c94236463\n87accfd64238d29845511d16be3037f3\n56188419e8052c0b36b0f2a1430e993a\n62ca9722d848d0d17f74248f969ff9e9\n2ec254595840417424754d384796666\nd1cf31acd02985bb50efffb055ed6bd1\n20cc098043235921d0efcca115b32b84\n83e669596e491dfe20070923ea969bd1\nc6c412c771ab0ae015a34fa27bdf3d03\n3a651c78081152e77bb4e437e41d3c3f\nc477235c02413bfc44d2ca62bee212a0\n3c04f4e0d183976a7e7cb173e141227\nc5283929da8665cdcb9cf5f7d536cddb\n874d1890f62375ea30bbd4cddd04c77b\n20ca7b1864d7badc75bff8d65bb29152\na42ad074c9b1bf2467dc358060e3c47b\nf02907c5c42e1e766f1e07a56c129dfc\nc7ff0afab4b7885a52160ba64fb535b2\nfe2f2b120d84ed909b896cf832106977\n672af8a6cb34e00678a875f897a47818\naecdd6e67c790959504af6e1321617aa\n83fa3b7b8c9d388144f6e9c2368992d3\nc728329a22124fa7e8dd400ae08fade4\nbe1a98a8e06c59311556e8f97439a098\n3b0c62bde7b24de85ce578b5b4bfae3c\n54efc0d108cce07ee166717db5dd896a\nbce2998e60345f86ab610b0c94236463\n6ab7ebf9b94176456f1e07a56c129dfc\ndd7e82f0ccddf0cdea3769fcd5f96f4\n5d9f67dc1f1518b6d5f8f84e75452c7\n6d4128ab108730f1ab610b0c94236463\n4e03170994b4347e6f1e07a56c129dfc\n4b237530ff7c8c064b2ec20c30ace65f\n16ecdb0dcbd419ce30bbd4cddd04c77b\n15c833aeea88fb19f428c5b66db689e3\nb48d04600e7cf2bebeedb4c8fd29e2d1\n5cf6612712d8ad26c5c86021644af7b5\ncf24f0128755080569080f7eaa8f3e1d\nad63116007d98a6d19758238d4c7aff2\ne4947c9bc17eed10e54cb890e8682c84\n47e7fbbce59804cd30bbd4cddd04c77b\nf30419ee8ff3edeaae04ebd863e388a1\n6c4c1465fe472cfd93ed8929b636c206\nb7fa4e123bcf7457ab610b0c94236463\n4afa7cb9a042b7e3c4f66791e25960f\ndaa9e908b5aafc2fcce90f0d61ed7a70\n41b492376a6774f9cdaf1a853214fa9f\nfc42d63af681a927e14dcb97ba059872\n9e3f1901ea14aca753315facdf531a34\n875f7a7c2d69b01a30bbd4cddd04c77b\n40d0dd3fe786e120d75c27ddd792e41a\n114377fc17eceaae3e12d7ebda60f8f\nec81c49ee12e8a70fd06de9ba37d44bd\n63d1427d86f62c45ecc46197d5349c6e\n5334d237bafced4c3719086e0b4ab8be\na04a7efb21f799f4c8bec3671aea0fa5\n59f04ddbd896f4f5430644dfe647c381\ned9dc0937009dc031311158f08f2982a\n7b92f6facc2a27bc84cc0348a73b80c3\n89cc879f005dcf50f1f50f6a678fb494\n1a6d43aa7b5c4e1d1c6a34a68ab9e1d4\nd2f811bc37858425a63ceecddc308b25\n1b5e501a28921c43d46cc1240811b39d\n8ea7ca2c8b48eb68ab610b0c94236463\na4af8f822fa8d95456c08464b83f209e\nadf574f947f00bdd548b2639ebc3e759\n7e1f5ec947e7587e391e4d6c585a697a\n8807a8fdc7a08a0fb664d1885442ba70\nec68e1edbb7e9bc7e93cebb6ba9ca43e\nf7d17f8d80fd2eaaa62ee5d388bdaf2f\n63b6ffe53e027e83aa49ce7283f547d9\n59d780e98c0c3a6f41c78a933c3b0bad\n29f110b8740bd8068c427edcde5d5e2b\n23a4fc50f123d8801ec48bc3c478566d\ne38b1f4d210fb038c97f93e2910df644\neb6f0eab4203ca0e1c19e7863a1c200b\nf864677894410315ab610b0c94236463\nd57bb12175463d188aeaff3bff7f4413\ndb64db160fd13a514e1a714ee619465a\n1264d88ae599df3fbeedb4c8fd29e2d1\n90cd1d5e2f33888ebe9fa30bb5c5d8b5\n7327bdbb165b8d034761d0d07b9cb991\na39677e069564a7ea7e7cb173e141227\na5634b2fbad2b88d5d14030c75181478\n92499724962a368d53743fbb4759270c\na1593fbe3a78c7858795000a72749c36\n59fe91d51febd1f3c83a073fb943e852\n4beaa698e6a7721279a2553310841ae9\n11084af510183635ee56c4ac0904ebb\n4768cfe825063ef930c15a57aa97b3c6\nd9ce0b512e0420f8be95ff480950e9ef\n7d1fb46a27bd93252c4683dd00deec1\n63b53646b3562677d395837145ded71\n994f6d12ab22d187c03d8b4214ec06e9\n596f93940a4d97866c752a9b08e87ad3\nb7821e69687d767aab610b0c94236463\n8e5c3b7366f2f017b4e3935c6cee4b35\n1955e341a77661a749684afbca35f3c6\n12df5c215f4364b7fe388cf6c4c3705d\na4dfdf3529355cd934fbd63590727729\n34121f5cc12135148c1cf3f7d7f0373\nddc91eea0d38268d616fb9ab42452112\nc621493100ff715f80d6227ff9b21190\nd0ef9d431a16e70de6c5cd45aa112726\ncd106955d3bdf8e751c4deb11af7079e\nb4ef1de99422b08768661782af60b711\n9a8852ff4b82a1585d624cfcd9a37a7\need2efed8f2d5604a0ab1d82ef09f78f\nb08310a1d75702eda09ce9c1262c7237\n8f841c9a11ad77a6794a9f593d938882\n6365205d2324234fc8a1efeb4b91d393\n982e83068fcf2f26a0b169584d4ab1c8\n1f067718ea071a4ec804f0ac5b784b6b\n4be0f809a66f1797ad9d8182e90fd7fb\n5b546ef5de5d10f3ecc9201d3d846bc1\nd198fccb12ad508a3c97cc6789da1c31\n8ac2feef21274a23f45db6a75d78cb47\n10733a711fe254965d7786e1df78254f\n12567fb8261120cf63a97d76062d3220\nfd1cb59eda441efc3a6294a7f35b35be\nf6474c0704d2198278696f3c9c5b8290\n7b8c92d0202211d53d098fcb46b95c\nc172807c444475ccab610b0c94236463\ndca821b9d2fed090f51f77a6d7299806\n7dea64a734cc77e6fc5030c2f25772b\ndc68436ab1a576f6573d2c9ac4b23fdf\n9c4dfafdbd7f9b76c955e5ed03ef3a2f\nb444c5e5488806439b9e80c00bcf83a0\n61198aa59e0aa31764d8b0368afacc65\n82e4990a3a9290f33ffd3a8003988fa3\n13f2a907f3ac7dfc9b8e42d3eb7abddb\n2d466533183daaf027cdc3d721fe0086\nb515a107aa3a3fd0e3dff0d5ebb43915\naa3a0c759428a9eaa5199c5eb7fa3865\n2583fa4932ddfe741ec48bc3c478566d\n1a8fe5baa2d4b5f7ee84261b3d20656\nd291243cfb51ea7dcb25d116843b43a4\nf8e3ed6b09b50d1d7f890f73fae19325\n801616c42a468c298fb2b3b07693a96e\n5e84051a6a839c24b577ea930304326\n8ee93ff23d882efef3eaa8afef8adb8d\n400393a56fc243c442c39a4fb8d01418\n6a5ff41fa5aaadf84c29eddba1f2e390\n8c5f1bf61d4c1d55b65938a95e1f893d\n6862bebc1f59a5caac7bed72580dc30f\nf39e46c8468ba7f07ba6f8f10959534c\ne2571e4eba2d9f5eab610b0c94236463\n82e1c0b874b0a9e035cd53a06b1d2317\n9afa121e3aec8bd7c387f328a37d8ece\n7d0b868cce75a059a0ab1d82ef09f78f\na1f130e921df44b037135011237cc916\nb26f4075b45a3a473c75ff89cc8b70a1\n5dd9ef055fe3582687ccf9baec60b534\nab10c2ec41e0e7f1391e4d6c585a697a\n5a09bc1430a2918d1f191e8de8001d7d\nf6497e9f02f50c98c065481f0c2ebbca\n3ed500a12dfa511ba6040757a0125a99\n9d7a8d4c013bdc8321cf7471b191cb89\n2c0ade2de5ed1ad66df14337f24e49f4\n30c9865cfc4294a7ad16260d4d73b56\n7a0b6685a30298fb8ae8d7de284e7d2\na2554ec7e2331a8fab610b0c94236463\nd760cfad1855ef2d35f7fdc3c0cd22fe\n509d9d137fd7465a85c5f690e9252fc5\n8574daf4d23e75da042d36b1c1b84\nf563e9cd92a0dbe5a07b1c1d0ca9cf45\n167559b98bf6139712d9440c7a73ec3c\n21cdc417e398378e40f3ac0af6b7e700\ned289e72b00480521fac473c90dd4a\n2edf007c0f4542554fa8d6439169bda4\n821e6d43a82eadfe8818864c19a17b87\n6a35640c7f10aa71850622797c13f562\nc05033de978da9dd5de04aad18bd94c3\n7fda06ada2d897baadab4c26397edfab\n70a2420bdd77d414820ad1ca4d3c95d5\n99720647e210078beaf288f952624966\n5a7039feb89ab32f5e6d4b8e7c0423c1\n58475b1b20ece0c5eeb8d422649e5f2b\n4b11be42b0c0482dd94faaee2b20e2bf\nf977ba3ec46bf1c064a940596f3d867b\nbb521fb4f1ec77a0ebf17edfda20712b\na0445e4888d56666b9d7c2fc41e80228\nd0220473a40678ad137619fe8083152c\ne2cc21f9d13d06e6a0ab1d82ef09f78f\ne22b23cbdaa1e259e8a94a8468340ce7\n3b8d176f94c0617867dc358060e3c47b\n7f6ddb13d3b8c07c1c19e7863a1c200b\nf3b8c91c5dd1cb6b8722573b29f0d6d8\n86bf47a73d93b66ecd037ccdf14d7446\n9472c006a5d35b9ab606ece4189242ff\n1804dd6f5c827c1a4bf8d5f43e57b138\n7a7590d19cf8274dab610b0c94236463\nf5d9f518e284989cf930da774352b970\n8ad88ee4442fd0fd8a6ba7ebad3985bb\n94f83fc24106e39f782f27684f3b650c\n7e6fea75f410181855f9913e822d5318\nce422cb06b1f372c561f802d2e81cd69\n7988dedacce42552ab610b0c94236463\ne0ea31b7fc2626ccab610b0c94236463\ne71012d27b3b3eec67142c6ea337b7b8\n963f0a74420659066c09be1a24173c83\n5d30db5c8d27e120a653489f44e1bf89\nfff492e352c8cb336240c88cd4684446\n72e0f3f2f8f8fcf12f788f981151c5d5\n5040f8f3e2293db448e116352760c52d\ndf7761a3b4ac638c9eaceb124b71b7be\n9a6ab25d91c92a5a35acfdef2ece21c0\n73ace155e7a4b1989d24dba534412246\nf5d87f88bd9b31ad2f0ebd444c10bd0c\n14be1ed92182d2da722332c7d77935ea\nf5ad10e6a938aa80e85c7a030ebdf69a\nfed1a75cf5c1ce38dee1e85d063fe6b\nf726fcaa1d031391b2a0fa0a5d25776d\n2acce0e402725f80ece694d60a812f12\nde46aee11f397e1c5af597c14b093f6\nb62d45745434ac46c4cfe384be4426c3\n941c65a25cef70c184edd435e02f1ecb\n1eab315da8b2588d285aa2b556211c86\na2baf45f001e118e2c79f7f31759bfa7\n201c3e44a5967cd030bbd4cddd04c77b\ncbd1cd9b5423f890beedb4c8fd29e2d1\n8ac4d93e65b9d58d9b937d98d58545fa\n3c34a433ab1dd3e2f657e3152307ea2a\n4302fa68485f0734776f723457d34a2e\n16e874e6165e836b30bbd4cddd04c77b\nc472e242175ecc75dea0c7d7198f1b0c\n4b2119939de4f6e892cc1f9d231c0f76\nba2f81e15029a37baf7caa8fd318856\nec356bd4c5cea755748e58db1ff83cee\nd187561a6b0cbd0acaed5ce7390f30b7\n1de679dd26d8c69cae44c65a6d0f0732\n1a35db5eb4f931a3eba0693b2c2a423b\naad7eaccc93471d6ab610b0c94236463\nacf4b272c86a011fa0ab1d82ef09f78f\nfe22668b577f0cbe88e99eda7bb1ee8e\n2e3ff4aad6da120784a05e54516915de\n3fb5033b5ddaaf365f7afad12924b3b5\n8cc8485f249a37f595b25bd3accf45b5\n9f321f05a7808719ab610b0c94236463\nd4937d73a4602e66d9a65329a03d80e5\n627248fa64c1db5fab610b0c94236463\nefbf0d75648b7c7d5792b99b8245d225\n3ba656a9bbc2a38ba22a3fbee2fd609e\n33b9bc49338800e87dd2ad68f72eb830\n6af9a593129b028eb67e68783d58425a\ne2d5de278cfff9cb55388518b8ef9c17\n1a53d35ef172a6febbaf0ab08a397b2\ne435c1e3430eb7b253fa79783efbc3bf\ne7b99aea5bbb980ad617d95dfd4d6158\n2b1684e4cb37d9e8ab541fe336214393\n8f1efc5edaf6d44a8e6d6e67bd4767b\n51c6a7298408c3f19730cb37c9a5f63b\n2ab09f4db5f5e842bf595b60a303303\n5e0ef66271f36ba862feaf6b02ccee1c\ne36e90c1db6bf1d5470412e9b69c8933\n43fcddd5232a6021a56e8b79ca4e2911\nc5fc6c1e0d446d37acce1c6e70b58979\n6efcaa530059319a720daf9b94e7a5a\n56ea26c10c478555a31cc7b61ec6561\nf27a1f3db59556cba0ab1d82ef09f78f\n49eda1b86917d3d7d0a96520c31993ad\nb29e6b183014b61e49426bcf3088611e\n229af4d0700b3fab29f2e5c9212b176c\nc418195771c7625945821c000807c3b1\n14ae5631e7dfa10430bbd4cddd04c77b\n89827ac677337629ab610b0c94236463\nf88d344aa47deb52276813f95a6b7283\nd9e3a8c4f093d66f3e474b0005d777b5\ncf7c2cfb403f2819548cdb167cc8bdd\na4047a8f57451762a0ab1d82ef09f78f\n5ad5b050fdf84825ec7962e39e3d3af9\nf5d1fc338e804d7fca7e81cd26bdd69\nfe5e1df0653804d6ce4670b160b81e9\n9c33336af33fd905776d8bc79b9caa2c\n19bc9c781df1da46824080f516909671\nd8be4b45afb21cf1616fb9ab42452112\nac965c2d5c68551be6c5cd45aa112726\n720024ff80f13fd16fcd22503aabbe\nfc95d34ab1afb92b9118eee0b123125f\n6688fbb6e3fb092eb1b6b0c5ddacb607\nb69b2ff85d0ec661d8f9dd7647048a0c\naabcb5d610e76ff19ca02c396af0c503\n50d898f6d1c05cee2d99129afd32edf4\n8b094873d775f6e21130871dbfe24c18\n6dc6bb97c387b2f3af4e8812cf1b9e1\n2f33abdfe147813e44949d7685cb63ea\n3154c61c595bd600e56ddd87eb888f65\n71fc8c7cdb48978282fa4d4f2c19b2ce\ne02fbeb78d8936fb586ef560a3203b3\n367284cdf79742334305d9043f82a6a0\n32ea6609eb659a2cec3367bccf60e518\ncda35fec5923a8602250bf58700b4d8f\n9046b2e610065fe5a5d95e73eecd308a\n9d039675f4d51869f3edd695842c6d58\n54b26954e478b1a34ea8d5f5f27d7ce3\n712167f9036fbfd050e7fa8e7f4c04f7\na98482ce1ac411406b2cda27b9d80e15\ne8870f3190f6b8d4bd1025bd755a15aa\n29b2aaca87d19a3c5759f4335ff2e408\nd8baf8507ff705dc2787b53b27e2d44e\nfb5e8a6361262c26acf7920879052e93\nabeb8fa38979d2fb9d46068d27fb8249\n689fce16d1f9099b9aebadb76803631\n66a801881c4ef524848eff6ddf1058ec\n7727cc0cb47705632dfc2f8d5d30193c\n7d4ccf874d0f1060d59c95a5810fd5d7\n4a27cb9384782ce33e95c55cb020b7e6\n94966aa8a7a6f540f6807434c358ea12\n2259e09ebd0ed2befebad4f49b26ec52\ncab027dd0162c5b7f1426260885dd0ef\nea96b8a866121d1abed1bd9593e318c\n8c2ec4b15289d88cc5d1c45cadcaa3eb\n1dc7f7d076afd0ccf11c3739edd52fa3\n51874066ba946c58aaf15b62af6b513f\n535911bcbab242877543d7dbfecfffbe\ne0940f2229e42007d98e761e6d91dfc8\nef02c88a34b3888a1b1a00a31bfed97b\n102f0532f9f8bbcdcb503f63ed915ed2\n5c63f336ce5ea7d621d1a69a8eeb6a01\nb6ad7be371729438dcfcef693e7ec696\nca6c07357ba5125b8e2adb29857f8a1\n5e3f91e841bf74d240cb0a485b0065bc\na5d5fc6b0bb7881419fb4103277a6b93\nbd7c71ca15b0d4e56c252f74b6220e29\n3b0625a3d623a7decfbec6fc6446a041\n89c095a52766ecb05d2ac47f638a4ea4\n7eed749ec4a3e391289014a3a9ce92\ne8aed77e92a8c4daac3edc5d86dabc91\n14f3de4c23d535e92c528d33bca1ac2\nf5cbbe04afdc4697562b835b63cfd09c\n95af60aa8cb9be066a76e23e6f966dea\n221812e480905c5464810cc21086da42\n9f6388c27485b03adfd21203bf8b4b46\nf2087cbd26a910355c16106acf3e4b14\n68142013a4f5e7c2febad4f49b26ec52\na94ea7183f27073248c0c0980e363341\n82f5867145f64346a9cf1782d21bd9ca\n5fef79348f4bc7b8c710d14956729baa\n71a7bcf52da934d0f008d8a3590fb522\n394c63a5658ef759b515d1675be6b5d3\nc1d44782ac45d6fe3671949e4f99cc76\n7178d8a2f91a9e1c713656cb7b79f97c\nb14a14cc2f3c38c9e3def9c422df2282\nc27a1c6a26642c907ecc778b34d42f32\na1d2dbfb4b3a6c113ff4affcd321d45\nd382d9e34f365544278d386bfa54545\nac40c46401406b71d9c36c82d746b699\nd5ca71b9b9ca6e5041b73991ca70550f\n482a76d14781e55e25374da32e705c\nee43ed656acaf774f4b6538438a0b930\n48baef3ab18d2d43d2afe8d5254a0d04\nc5a02d586ea431a1e76bc197b3a3ffc0\n3e09b5c70cc4117d9969f8371ba19c2a\na16d7c49c0899cad8e43a810a63361f0\n105f53a6471f3ceb4a420e3c1b966720\ned1e06e886b5514fe8f49d7c9e73ab9\n83f1ff21744e71ad2690c0a5b39562ad\n538cda9b8cfefa3f4854e924c443f593\n28fb9a81898f88c4ae8375def5e736d8\n408c3db9b4ee6be2e9f3e9c758fef992\n9200682ed0382e3f931e98da3a93e73e\n9482c5f0a38a73c0fa16d3c3138134ae\n4b399cdce8337c29285e0e27752e54a8\n8d4fe49d942ec85ff4b6538438a0b930\n798c315f86d8f02f931e98da3a93e73e\n480ddc59636d6516659dda512294c744\n6ca66a443e651c1423500a5b036df62e\n4b5536d2e9c5b9b7febad4f49b26ec52\n6cf6a546e2ecbffe815a7efb12912\nde077e0bd6932baef12d7184a2ad3430\n109a8d453ce93a6fc21b51dd4113da62\nc71453f2c3fbd5fc56cc009699d2a2b8\n45b23ac79688170893ba1eeaf62819a2\nc5b83c681c085f2195493ccf8f26ab2c\nb82c6769c98e877d24d29f1dedd03a57\n3f94c1aa9254356579b3e1be3524f72f\n5430799502754b5691fcddfa9c1209c7\n8654b644c766dd23d1dcc55e36186e4e\n7f4a5479c612805bb04e388f56884ae1\n3e51742cb382aa1f79b3e1be3524f72f\n747f4ccdbbe2e4452099d3739c2967d6\n51930b149cf6125373fa072a624ce947\nfc93d1a1476e4f86309c518184dfbf58\n5b375eacdbe49cfaaa539cd22945e538\n8d7ac6078989980fad16260d4d73b56\n5690d17b330f73adfeb8ceb93793cb5\n713a4be770bb19b9586b2526565371c0\nb11e0feb428f61edf008d8a3590fb522\nb3a77356e56d7c9a2820d27b806f8454\n481e00e4559705c616a2b5862518c93\n9e2318099f77d3df3527ecfeb345775f\nc3e43144fd61c56f19fb4103277a6b93\n3c5b03a212d8cd3951f776d3ed05550a\nc45e6ceae72c7a97be8908669c476d49\n88c2cbe9552b1b0571870da176ba03be\n94a62cfdb84e88ca9a3528690d225ee1\n3c5281bf572e2b6f2b70eac6546e93fd\n68a7bad2b06bc1a9d93768e7b9b1eabf\nacbc99e153b9d4d419fb4103277a6b93\nb1c7003075067621682d288075fc0dc1\n54e85b248576c4eb57cd80d4b17e7e11\n60ef2830979fd08ec72d4ae978770752\n382889dbc86b5dd919fb4103277a6b93\n1dbb8fd083f96ad279b3e1be3524f72f\nacf57dbafe8966f577fb15a8d7923976\n18b1461f48e0fe9aaf15b62af6b513f\n4c7faca525777be32f7524c98ee0fc42\n93040a14fad5588ed889130b88839a0c\n65e7fd8d158658106a76e23e6f966dea\n79eeee790ed5a5aac242632b2a8c3129\na6311f0c2108867aee18bc48b60b36b7\n6281381ce38aa988de98d10ab5975b59\n59ee80e3af7a4e3df4b6538438a0b930\n52c72274af4c7e19910979f825490a99\nc755eeaa4a588fcba9126dd5adc92c1e\n1a3cf7fca32910c4107b7172b5e0318e\n7b3b160dafe7e122d93768e7b9b1eabf\n8bb3a7e1cb24fe6febad4f49b26ec52\n3c72ddd0dca19bbedcfcef693e7ec696\nae8f31ba66709b8278cd7885232df677\n2f98d5e721e84debaa8081a7009091db\n14e5e4db3246dacff12d7184a2ad3430\na50fe14a700587304b7b1010fff3cd07\n6ace903899706a5819fb4103277a6b93\n10ed64b4c7eb6d9311ee7ca4f000feba\n9eeea5f7b030ff6ac155f88004a92bc8\nee5f85db427865e63e5399147a5b4763\n9b42cb91ccead6d42f6d10c5d1d56320\n1fb2be490f45ec6e19fb4103277a6b93\n504d908a55f3e0c764810cc21086da42\na18aa2d20d516333daf1f22b6daf05ed\neb00a4e8b33d257cad16260d4d73b56\n345c1bb95b12ff8c013a7bed5288654\n109738784a0a6129a02c88fe01f2b9c1\n34bbe284f7499df071a782a4379556c7\ne64876f5590e6fb7c3bd24f986301745\n4e9394f9f64859aef4ef86403cccc399\n7671a315e8ab32f4664b3b9b23ddfcbc\ne777df6ffb40e3a1853d412328e7e7a6\n79f63a1564928af071a782a4379556c7\ne699d5904e00a6ab748c0b14b00bc019\n24b208dd138d8af36210db75a4cd581b\n5f0c33039269b7a9f0e84b9d9ad447e2\nf2893a87ec37f8b3781cb4570305e329\n4079aaabaa6451a2765ca89770f206ec\neaea1cf98b61abd043383304411cc9ec\n2ebe5dfb7bd9a50c6effbd64ad6b71b8\n2d4005749db552232430716fc386281\ne02925509615eb5a4eaf5bbf36d243d4\n900afcc9f0f5fbfd858699aaad4acee4\na5e951c9d7a9a93f8cbb8bac2032149c\n1df409cfefbb51658b9b51ae4415d5aa\n8e07fff2ae8a542051ef8c8b1fdb41ce\n21486e6d0bd896ad5cca18918d24f6cd\n7bf5f689da285153583ff8a5fc7c1869\n307bdd2a06137694a10ff7fd5e43a633\n884f15cfc6a3eea3dcfcef693e7ec696\ndacde6546ca2e07f66dc6ea1ac82d91f\n4791914b3bcaf57efebad4f49b26ec52\n991738fc61b81af030ddb6ead95f49cc\ncb860d60db8f3d18febad4f49b26ec52\n175c0be26d0f2e916cb0bd372b0960ba\n5c6748b094725d9af008d8a3590fb522\n553c416f33c5e5e18b9b51ae4415d5aa\ne3b585b15506fa7113f96345312df593\n5dff67091a2f7ef1ab988fe471b1bd06\n97b7baeb8a172de42f56f09e5bc67bee\n7f1bd688960e2c1b97f2016c3d6097c9\n104c8e90ecf0e5351ed672982b7954af\naaf6be1d92a8c61fdcfcef693e7ec696\ne9038664b7d35e6b436e6787c76ef3f0\n55547d2fae0e3dc21705bfd3afcd10e\n56a57ef7c3385c9f2f38c0d2792fb5e\ncc6fbdc6f2aa5ea3d889130b88839a0c\n5ee4cbe45bdc4cd571a782a4379556c7\n2e3037a285fd8b5c1be2a853ec4f9e8\n8129d4c51abc3356bababe11fcea8796\n523ac3575244c7f3a130bbab7337a0cf\nc29137d144c96b17febad4f49b26ec52\n4cd35d6ec155d39633207e4c3ac155a4\n8eed35fd5b777acf58316b27df6c8e87\nc348d279fd22730a9741b7ee128375de\n3411daa955306811d93768e7b9b1eabf\n9611888ee0db1ecaf7d4d3ced798ad90\n70995336d06fc07ae9f3e9c758fef992\nf5d6579b3a1f5a879d2be74cfb51ade1\n7bc93a4cc26fab5c8c12b667670a35f2\n90343e416528b576f41d9ea5f63b1b05\n2e7cb2cbfbbb4d002ee19ebe356c2dcb\nbc1ff7fc750617d690f7bef12e52ac08\nfd7a579772b195532de421c2ab5cfb52\nb6b8ede77085c0a95bea7c29e873d16\n745a2b060d0f692bf4b6538438a0b930\n856e86709df98497dcfcef693e7ec696\n6eac64eb398b9d7145d4f35fd8d64cf3\n44360c91a7e91098d93768e7b9b1eabf\n943d786e2df9251ec76aead7da70af41\n1299579419252fa954b02959579aa6bb\n5fe429691ecc5f0311e6fe968f9f8b0\nad17445446e4fd3adcfcef693e7ec696\n2a80c95b4bbcb73d87ed2480ebb0f3d2\n171a3677999c79b32c8109e73b98d509\nd0008b042256fb5f7ab911835312d4f1\n812dd06fc99f174e9f2349486c570dd4\n6d5aaba9f6dafca977252fffd1947df5\n3f2e9c14ab1d26a0ebead06af665220\n1815c6431b06dfb4f008d8a3590fb522\n668deaeb91295739664b3b9b23ddfcbc\ndb2d4f781756e687d8864caa856253b\n81e991df9ff8b970a2ab2154e681ce15\n501f61f01aaa195adcfcef693e7ec696\n6d0ef6312f8af87a53e946fb2184f0c4\n56bb7376dfa9cb5c8cf069d506f8b5ac\n7d358a01c9467815a9505c473725122e\ne7169243daef074dc82dc2efb3363de1\nff32ec299e6c37e767d783b4714d4324\nfda71e511d095837acbf0573260a18d4\n91df49ec00f2c5ce73f1ca2ca101a20d\nc7f57e76cc1ac45d1ee2805756841071\n79df23303a3192c1cdf1dfd78f33901b\n1ffcbc064f473b7de7c13848b2d8f5ec\n14d6b4b09dfc54e9d679a95896f75103\n6327de18a3a3423c947ec73b27c6abe0\n628c4fe12881efe2bababe11fcea8796\n401fe961ec7b0cb5dcfcef693e7ec696\n4960515bed0e76c403c7d0cd70738a3\n8d84471c4af977d917271868b642acd3\n5ec5b95d9c21b05ea9af104529ef47c3\na7172fa4177661f4858699aaad4acee4\n176e3b32d749ac94d79f2fc0b8d8ffad\n94c0ab5650ea392ddcfcef693e7ec696\nc9f85a671d551086d61f9b2773e1d72a\nad461a7b5e8cc66efebad4f49b26ec52\nb3fc5247186936f1dcfcef693e7ec696\n47cb4740e2e0cb8d11bf24e88933ed8f\n41b0491fdb14d41bd25ca1a27cf9bdec\n35e821cabad939df664b3b9b23ddfcbc\nebae52c84acf994e9e4da01b847d5cb2\nbf17779bec6abccf161bc5243aab8ea4\n88ba062b171b4797e30dbde92844e593\n198ff59a42a147eb8ac5948d70801389\n83c24aad3914e61a73376642dd664bfd\n852826a94cce36ea9f1deb04fb8ae481\n2f58b1ca8634a6b48b9b51ae4415d5aa\n2fe5e4d8a871fb861b1a00a31bfed97b\n80ad1f839582d183fbf6f493308acc40\n6a3ee73d42228f8581654cb17c02fd\n737cc2beda4a023619fb4103277a6b93\nf74c321042dbc8e684d78f017ff73fd6\nb9fc2f624533bb8119fb4103277a6b93\n813d34995b5c4406b65b71636c46ae49\n7d0c5e28089c2b7bd99e852ee772dfa4\n53c11596c3fc36a8a5094cb6d104b35\n6c0fe6541769a3f6ff4f2504a49d0458\nb9c756b2ff5d66ddfebad4f49b26ec52\n1adf96850963550f19fb4103277a6b93\n6791c92944c99c029f1deb04fb8ae481\n89251f322490e7047e38640a31d0bc3\n75aaea3b26362e7a659dda512294c744\nea367e390741fc38dcfcef693e7ec696\n7f1548ee7cdd456fc2b9c3cc12089fe\n7e2c280b5839d502eee2d67fbfa67a7f\n57afaabf994feb305512673aa47c7e3d\n96b17bfa556f57e29d2be74cfb51ade1\n8f48ccd17a15baf5ce01c07526cf2aa4\n39806e081bf3fe564ee8db28f96ad26b\nc011010ac01b73c78e43a810a63361f0\n93e81005c19a74b8664b3b9b23ddfcbc\n58f8fd169c9578e62f81cb887dc35578\n3253f2c59e6bd2a119fb4103277a6b93\na8130d38d538b6306f3d2b1b15fba494\nccb96ea5f047c97f278d386bfa54545\n2fcc875b28c5557dcfcef693e7ec696\n7eeceefed2b3aa2794f3bda96cf548cc\nc26dfd3453d81bf7788eb1f5e7ba6e7b\nabbc5e4950ff6ea8f4b6538438a0b930\n4ce90fe70faf4c3e255bc16374754e69\nad139879f97c141e1ac9af6c714d1419\nd06d27bc9ad1faabd7bf6fb68df7f786\n72c957a020566f4bfca61b0bec17b8d3\n5de0ca3516c01ffe71a782a4379556c7\na211f3080f4659131622a21d32ed9c9\necf3d40b14300d3c0c26b04b6b8e17a\n35a65ddfe8690ccfbc96558434dabb4\n5c2c29fd07c365afe5c65540d3456093\n3997cdee934a9b238eb3bc6c6d15f9bf\n92016e48e44e8b8bbc16013e096d0c1f\n8cd0334f04368168b8025ff83c807f47\na2561614d015f2fdfebad4f49b26ec52\nb1ca280d9567270ade98d10ab5975b59\n3b465822b34ed20ca05d3424fd8d541a\n25f69a74efbff4d071a782a4379556c7\n9705c2610980d0fdb2d0500bdfc28f70\n12a2733fc5f6b31ef8574543281e850f\nf979c7a650d29ea819fb4103277a6b93\nb82e068c2c18cd67b09f0ca9c143fdfd\n54ba7e77a2bf5fe3158b7df020486ff2\nad92bfc65465091c48d90eef8384210\nc14fe6a74a071b73664b3b9b23ddfcbc\n2ec33e8b457ac0fa278d386bfa54545\n5431993203dfcf797ec12e029bc725db\ndc47d49db6ac670635d498476a30ff0e\nb278b58e294a7d2bac242c3aebc81b2f\n52989e315ee1d3839ccce4c6d5bb195f\n15be511a2433482aa192483aa282f8e5\ndbc5a4d1dc3a6e8271a782a4379556c7\na860e5edcaec268e615bcf72f8385966\nc38ba6c06d2b813230c589758b4b5646\n415c174ecdc612fb6f5c30e29039b12d\n631028ddb76eed4dbb0085d0daabdaea\nc3135e3b21b42e132449009b96f8a6ed\n747f70e41b927e13b73481345ae9d2cd\n2bbd62449b56abee659dda512294c744\n303ac20ea2febf9ec3bd24f986301745\nd4a7a1dc0f1a51986f15d61c214769af\n410ad32a9cd5377458c429c80cce21ba\n3817a222e96acc4ca78510b72d2281ea\n4d6b0bcf351183bef8c4b4cfc2702232\n132bfde1fabe9ab771a782a4379556c7\nf16f939baeb7722e664b3b9b23ddfcbc\nf7196ec7d732af5166decb1b3cdc5557\nb1335d826d7d60726e066e11deddab75\nb323d3002578f5f3f6cabe1df6f4c9d9\nc5230678204a1bb8dcfcef693e7ec696\n2a44569c8ab6ea22f222df538827afaa\ne1a8e9e2059f4792fbb8cbddab1c2002\n700f59abde33ee3ec2d043ecbc42284c\nce4e075487aa05ecdcfcef693e7ec696\naaf3aeda0f848344b87028a4b477349f\n52257815b77da840f7628281ecb18112\n1950a6b5594160d39453d57bf9ae92b2\n1c3310f4c05ce1f6a192483aa282f8e5\nfd7769d0eba554c53def89b32cef8e45\ncb7ebc943b1b424988386fe1512ed26f\n80af0f92ecf69f69f5ff054d67d5fe35\n3ba61eb411ec52c41586e0414b03ff10\nefc01209cfa158eadbbc9440457e303e\n5f100571ffd90f8252b4875f731f71cd\n7cd4844def36a9f5bc7589eefbdbc3c5\n5d24567426a614ecfd726e98b98fb36f\n5fe3476df92392e1397aad305ec14786\n52037005fbff92d08fa35606145b47dc\n798a07e42d76013582695d8aaeacccc5\n86ad91ef08c53dd77189b31b3e8c8ef3\n1bf9ee6578bfbcb0f4b6538438a0b930\n78a81cbd2a5720d93a938fdd57fac3b4\nbdefbb1f281434e39961e1085a81acc5\n9f732b16a7faf3fbf4052eb4c07f564\n1acf7b0939f3eea2eafdf94e5032b200\na9cc8112fb8c4ed5dfd21203bf8b4b46\n49bf25ff4401946524c10ba1eb690638\n6daed91ae491c9cbe22ea6d770699e4b\ncb31b6293506eb639a3528690d225ee1\n2d90a1998eca8778dcfcef693e7ec696\n83dcf79646ad3f0cf4b6538438a0b930\ndb0c430a51ac45c19d2be74cfb51ade1\n1a5062241d7903076f88aa1b7f7cc6c6\n4bf61d3643b7e6ba19342061b16c380c\n2fdc21532b09d7e37f768772b7a990fa\n390e0db80fe12ef65fa6da97b9eb4a2f\n7c24e4f8778e224799a5e8f6c5baa224\nc103c0f93c690f5067dc358060e3c47b\nf7b8a1d716dc1725aa7cb30470f3273c\nf54945d1d185b387659dda512294c744\n10cc8c941fc8aeaa71a782a4379556c7\n19678fdb9bc926505e4b35ff1ea95f37\n2633f011b236a8979070b65ce7b4b532\n746ceaf694d85eb5d5192f88466da1dc\n1b78b8e14a21439afab04609f4609e83\n868bab5194e93577858699aaad4acee4\n731b983cb313634fd018082a1777a5f8\n867b553b34a3399919fb4103277a6b93\n270430ab9efb9d85c0f947750540fb22\n59e1afdec89de9442b70eac6546e93fd\ne8ba9621aef9395a3019620286259e2c\n5c11a1fa21e8671cbafa5bee623d5d\nef9f3af9b8453613febad4f49b26ec52\nd5f2968e4b7254ccf4104961857ca9c\n38feb6b209579f6faadbf8208284c675\n38e90183c838f443b43753a53e4593db\n3b68fa3c60e1cfb7745a5e8b6205e3aa\n95e2a1ebabfa741cead99961c8c0ca99\n1d447e3b068b924ad91787f0eb159c8c\n60c931dcc6d0982944bda2555d37e46\nf585560965413925d706ecb3379aa341\n5fbb7a5f01f646ca5830980abc1c717a\n6fb0076db4a74b73cde18cb90697712d\nf28e030e715b9d3e318462aca9e62b6b\ncde67434193a2a6f19fb4103277a6b93\n5191d64e9a1b9664bfdcc70dcc16baa1\n2bb1bb0516d7cee747839bae1bc65257\n4775e71d37374444febad4f49b26ec52\n938e3529b774a91fcee558e7a5a02ad9\n36a6d851dbe02410ad16260d4d73b56\n159a2a760327ca5bababe11fcea8796\n8af3fd230ea7ac6518101790733ed6b2\n8d247c6f6aaf805a2530bfb25087f2b0\ndade0594e68e2250be6c545952e7fa4a\nfff7f07d1c4042f8a946c24c4f9fb58e\n33b081062b2195e71771ee930e861b13\n524af53b7863f506e227c1bcfe5b1fc6\n6152e14b042aa17546f41dc2aaef556b\n6081fd59c46769fdf4b6538438a0b930\n75f2bc98aecf198974984b9cd0997a52\nffe1c487f7b9909bfebad4f49b26ec52\n1846b3533f41ae82f8c4b4cfc2702232\nccf36a20b7ef3bd128071d61462a212d\n3037fac5bc67207e23fa92d98173c06f\n90cd6a48cf2789a9b430d97a45d5824\n6e23179a3559775a65eacc25f128a1c5\nf4976e80b8533bcf85518f8659f21d56\n25bc205f6de491f4ccde40b1205ec7ff\nabef0c609ad3e9c2edea4b985280bcc1\n6bc941dbd290c7f21acdac000802e11c\n153d0c95cd2981a46a76e23e6f966dea\nd4c330d27bbef3808f6610bf672cd686\nb86e23bb0a3d337ef4b6538438a0b930\n63fedc0334f5552dbec3a71604e140e3\n690e073a4000c7ae540e292bd26f307a\nf52e52094d8240b2dcfcef693e7ec696\n2a2d6560f14a01c6afac72146bbc9d59\n69ec86dbd4df85e51ee2805756841071\n1e3871159daf135370bc652a18e29c3d\n1534dd45b3253cfd902c0a1a69e25bd9\n1bd138c3e54a75d32f38c0d2792fb5e\nc1254fc0d8d0625b8738e7290b6f3237\n2642d805c53e243d629f73b53bd7a234\ne9c3a3aa2278608bec15b38012222fa8\n7df9115b511668bdde98d10ab5975b59\n75fb953aaa9924d1f28b9459ae3635d3\n48af84a5600ad5bc19fb4103277a6b93\nee5f0411fcff59951105a3fc18779f13\n5919dea71f3bcb071d54ab02e78bef2\n845c77d01efe2f2e425fe98d8cc1c2c\n4c809952877b2a0bde88c30a08fbb953\n15b495c101881d96e2367b9e27f16a71\n388d9e7b2b8a8f909492fbce0bd54e2e\nd8f851bbc98dccc23fa92d98173c06f\n8ad9868947e7391113625562b56161f0\n3441002a52b1cb2946b2a76c074a3f45\n46957ba752c3554bd42b9650f19dd425\n516928532093f765bababe11fcea8796\n62eff79cf2e75bc2765ee729adbdf968\n7f9d2da43d6aba67afb6676a5cd782b6\n34d280e8968c180cdf63d1c7e43c783f\n23ece3bf871619366ff454af1e8947f3\n398dbb0a34ca527871a782a4379556c7\n6b62c85b16e300557005dacb6907e37d\nbdb44c3f5215ca84b6d51da3ac2ed48\n62ae9ded861138be9d2be74cfb51ade1\nfc472163ea149f8e19fb4103277a6b93\n5b51e63726f21bb6a75d03186a0409e2\n41d280b7db61ebddfebad4f49b26ec52\n4c4c719ac4b61d8f812c9aaa38f9a422\n1c2e9a364b82f14fb9a0f5d18f1ce54c\naa3eb180a4f6d8d42de421c2ab5cfb52\nb09894688b176d426f3d2b1b15fba494\n2ef899e67eecef65190a91fd9a6f7d55\ndec1d2cf8a4563d36cb02543e4df83bf\n2091efe147f9ba11e3069fe10dd75c3c\na82387cf9d9d253aa06f94abffad1304\nccb8c52ff9e7a01819fb4103277a6b93\nfe130356df1977499c2a886f3b75f1ff\nc2c36909e461e10adaaaeef365d8f6e5\nf3f8fcf3713f89847e2388e35557b84a\nb420e0461893854bdf6cfab91d65bb91\n3a69ef9c6512041768c981036afdae64\n76338ed3326689b249524cfd5973a145\nf10f579a973af061fc527605fed20d9c\n3459eec8eb56fa312bac236fe109e385\n5cbd726c3ffd8fc49b458816be7a3962\n1011e1c9812b84d2a9ed7bb5b55809f8\n9e6d6817c0a0a022fdb7f86985d6e5ad\n6f3506c9c5202101c4e8952b27b5f370\n2db1f557e247ded7e907b6d9dc1d71b7\n83b8e64089968ae8fd3feb4581507302\n7aaad1c5c2be8c24a9ed7bb5b55809f8\nedaf24be15738ea2c5d1c45cadcaa3eb\n30655ef8f2511b4ad8f2ca82d6e1c314\n8963760f8bec0fee7f807d3c406ee\nadee49b8f5251efeaade78cbbf8fad3b\n47f25d5b367326ceaaf15b62af6b513f\n2d1d8a2f976387bd3145205f02ff9fc5\n22c5cbe6271736bffebad4f49b26ec52\n63aa14915f59ed8671a782a4379556c7\na624ebf0bf0451a8d93768e7b9b1eabf\n30b506e5e1fc282afdfcfddf24fb29ec\n443eca86041e57ab1e99b149cff6a230\n811a7be3be14bd2b62103e4bff47b4cd\n8f73278956fecb80327289c00b6dc9ca\n7c2fb7a6dde6be96bd5a65d923c337a6\n415a08a66b8527519f803a8da27dd9a9\nbe045fca16562f6764c85287e21825c4\n7dd881a26eea656d193afeeca14e3baa\n4f06092100d0164013d2510999d0f1d2\n910db4c45df40b67d3e19c2bbe0ed38c\n9d873d1e7403e2c825971c9167623d21\n994e524d70043c3496e349c87c588bf2\n3e42e3386f4aea9277cf3bb06f394ad\n6e446bb5adf14b0b6121178eafd002fd\n27295a6f585b7817febad4f49b26ec52\n7c7434a9db4a407a2b151d8b52c53b90\n913c0ff011ad0658dcfcef693e7ec696\n1ddbe75f64683937f4b6538438a0b930\nd41c8af82fe98a019fb4103277a6b93\n69c536d9e450cb79436e6787c76ef3f0\n8c67fd5a15e8d9defebad4f49b26ec52\n3a069fc75bde2735aaa6ab0dcef7c556\nd05ff7b47febe58a656db3f863b4b796\n3558aeeb9698722acf19858fd1963d10\n91ed62f2b3fd5919f12d7184a2ad3430\n57f273bd63f5287199e8bf807e902261\nac9fae8af57729945eee45c00c4de9d3\n6aaa78b81528f4846674ff79eed6185a\nf6cd420f08155054803d0f5bac2abe4c\n384bf53e12744e2019fb4103277a6b93\n401cd99ace3b92fadf6cfab91d65bb91\nb893c20bfb5d718371a782a4379556c7\neb379b2b95e76502e258d1c3e7302e7b\n983cd9caf65adf1ddf6cfab91d65bb91\n45a09b1ce3111e4f22f4fabdf1ee0670\nbda00a13a1dcbbee908afb10f96957b6\n2aad9a8f3db3272b916f241993360686\n1b6bd64fda74bdc4d6983f351200ac6a\n2e86b383f43bcb1b66dc6ea1ac82d91f\n45c5ee611c73b90a509330ce00eb0b20\n6c4c3bfe275e66b1b75e606711562bfc\nb9886dd3c4a651f3664b3b9b23ddfcbc\n8b07d458499d63f36d96c6cb347d6a90\n424c77a1f39ac41620dd2dd4d7d7656c\n2e4fbab46e264616d93768e7b9b1eabf\n40ff8ae39ad13d014a873bbe35452b88\n13e19274b358ec867aa3000697a75d55\n9f62189d260cbad33c11c3dc5dc42217\nc1d808c75cc5e7ab4da5bb83ec125010\n667a88cc3ca1cef8f37af16b2893f1d4\naafc579804cc095cbababe11fcea8796\n5d77e8f6ad3741a0c30ab36bf7b0552\n3d01fd2f13ece278e27790b0ec8671f7\n878414eb6e86494d9a8ef44e1d2c5b75\n506e4e67efe1794c1dacbc3d67b5a11a\na74cad1781afed87dcfcef693e7ec696\n369c19c0971221f3664b3b9b23ddfcbc\n1b01ef65920c342323bdffac38e6b250\na15f31e2302f6ae5d67a73ffd62ba73f\ndc6f030d9ee566a5dcfcef693e7ec696\n2fa78f97515a4d5624760bcb862cdd1b\n447f9f9dcd85f6242849dacb94997f4a\n66e0abda60998bf61a96060575291b6a\nc3c467718eb9b2a313f96345312df593\nbfaa1c23d2622422ad16260d4d73b56\n4f5c111a89b3fd27aa29e9f0529e8ef7\n4d3cc502d4444c848cbb8bac2032149c\nc0c836c630cdb4bb664b3b9b23ddfcbc\n685865c8de58d7dad75b93b39461011\nf2e6820ca69d9b7719fb4103277a6b93\nd94de64641651a2079b3e1be3524f72f\nf3164e1781a296597f6f00dc967c386\n1b4bc147baf68d4ff008d8a3590fb522\n23d68e01b77089ae76ad4f5e7c7020eb\n17f3a2945d6550cbf7628281ecb18112\nf6b3638983b0effaf3bf08ec218707d\nadcb67b58024afb99910b7ec4c4e599b\n84f5e52756fc84f86df14337f24e49f4\n8ce538a671c6e684d93768e7b9b1eabf\n1645b28322131b6258c407efcf93be6b\nabb8d6d056f48eccb8015e57f308c60\n9bb816d6a3517a5ca74c2333655a11dd\nec4675f62f6946118cbb8bac2032149c\n966cef675324e416cd415550f639925\nb905d2f688f56afff4b6538438a0b930\n890940359fdfa036569c11df1aea8ca4\n3243ddb2aa4d1659beb83c64f2162734\nb3cadc82852f5f5381901288eaf14401\n7486e6cc0f457c4c12a1d8ce70d3a8e\n55221b101eec29dc656a19d1d18fdbac\n346db24c1279e8d273fdbe4b39ff4036\nab7b0db92f96381f8cbb8bac2032149c\nec7795f1efb90af9f37db3b69001ec04\ne993ddaf6d03003071a782a4379556c7\n75e3cbf4b1ef0df971a782a4379556c7\n212f9ea1cd96196992f4c88fd91c6b1b\nd9c75799ff9ff74664b3b9b23ddfcbc\na2824ff9eb173055f4b6538438a0b930\n48600b28f63e0dd2de98d10ab5975b59\nfe710962895c20914476c40fec27b24f\n33c6e3b21a67b750e78d7b497732dce1\n375aae9fcedc76438b9b51ae4415d5aa\n585f8cdd992f541d23500a5b036df62e\n3d4399c54a60ac26febad4f49b26ec52\nc9f3ac109419150246ef4343e2399480\n8862cddf90fddb3119fb4103277a6b93\n760b1ea228d6c2f6e785b88cc9024b2a\nddbcb5a22a0c3aab35de8f8daf95ff3e\n3645a90e02d16f0584aa8fa8b66ba302\n1826930f388f5398e0c5923879d79f21\nefc9a32719fc71962c95e86abe3e6416\n490b186d11cf5675a872860b02b1bf58\nf01768b8b8ba025ee45ef4135c266a12\nf3efcbd9745da90619fb4103277a6b93\n6cd84ff61583805c85e2af9bf984f0b5\n8ad09d90888f71dfcb9cf5f7d536cddb\nf60960ae4dc8e293c8ce22a41ea48e48\na1dabdb19c7e5bd1426cd1b7e837ebc6\ne8689b8b1610bf2841bb8a7ba579a58\n73d57c83a4ac0979d80195020ba66865\n4f70d14dc276a9539a83764a2641fc5c\n9bd1c242bd66d2fbb63c01786992bd2f\n831985fb385a5b2a9ae2d75b4fc35b7\nf5a673474566ed53a9360d44e90d853d\nbb027ed892722b1f3399de188dc5ee56\n49c3ad60b7d5234dfbe06dd91adeaedb\n7813f4e4c0a58118cbb8bac2032149c\n41283ae87a29fbbe76bc197b3a3ffc0\n9e94631e0dcb5c15890bbb282640d692\nd578287c4a9452efa9af104529ef47c3\n25eefc5a3c7b30e1f103d473de33521a\nc827c0d4ef212f2b30cb1fe6fdc7d605\na8fa391882414febad4f49b26ec52\n7d22cd72bf2762b19a4b266ed4d507c9\nfcd4d0e1777f4841dcfcef693e7ec696\n204d9ecc196990ebe8479ad2eabcbab4\nd46537f513283d6cdcfcef693e7ec696\n2a64bd38a4e42f33dc43fde5155b3946\n23aca164c7b2e2d4ad8af6714b643432\nf5adf1351a56586719fb4103277a6b93\n79d0985603f7ff3be6c5cd45aa112726\n49f625856c796254d249abd69334079c\ne18d2ccfd7e0da86bc22c9f90939338\n8e637b52c16d8874f09e0399552c33e5\n9c4afb731e910d3723500a5b036df62e\n69604fc24b7976d69ccce4c6d5bb195f\nf850a69b0d308fbc19fb4103277a6b93\n7ad23def902ea4f37b7a2c2624e46d0a\nbeebc267ea0c16a5c7f6a57f6f73d8a6\n8e3303cae6cc104bad4f8ccb153c24e\n5771d5a3084b3ca3a2d7b309863cb1b\nc12147db9b29ef9ee0480c954dcd56d1\nfd42924378694d9c2554f2f6bda30622\n97718e2651d22b3a74740f837351e7eb\n9502eecc3a057115b129901f80d24b7b\nf6ef4614e853eea9de712e1694f0a344\nd3a55d20bb9c93985a7746683ad193f0\n8d05d40b15f933edc22013ebab50762\nf917474a20558aa33bbab77a66bc3671\n678f7fe1c4f977927e9fb8aa5670f37\n164ec64e7a28c08b221ea40148177a97\n4b6d73d06b7359f26cca17c12e67a536\n4a579619524b60aeba18ade30e563d37\n63e37e8a29ee34bab277610811e28cd\n8cfe3ff92244310534506cc3910614fe\n28912046d42946df7db48c721db3fba4\n88b217db267f1ec61e616612e30565e8\n99737ff619cae25d6effbd64ad6b71b8\nf9beeefdebf70350f4b6538438a0b930\nc177762c0445d57ab20aa91e9e90c311\n5be1589df948b227c955e5ed03ef3a2f\n3d7101bbd994e2f5296ea8292ef2edbc\n4292e4bc1f783b399c409b26b1e9e946\nf5aecb6607876495e03eb69820d1aaf2\nd826ce80b06bec855e5dde99dbb2920\n40a402e1d949364a104ceb84075e40d6\nfe3351c94fbab8ce3002761e7a3ba3bd\na7ef45d86ae5b496a97f238e46bc2221\ne6d8569c0957e7453002761e7a3ba3bd\n24b27de7ebb852ddb472f782e8890df8\n4d393b562df7cfad9a16b095d67f7209\n50c9d436169103249cd431573238602d\nbad7911965fdf1786487ede8a6f074c3\n54317236f4b56413002761e7a3ba3bd\n67d97102f9c54cc95512673aa47c7e3d\n5354ecb0e3aa1da074a16879fb3ac81f\n4bbf789edb243cafc955e5ed03ef3a2f\n5b74412eba257e5182b796aa5845e185\n2e5ac0552fa296c43bbab77a66bc3671\n6bfb122ded9082de7ff6ace05b36a5\nd58bdda16e6bba6f796740c80be6053\n696beb1883be838cc955e5ed03ef3a2f\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/04379243_train.lst",
    "content": "7ec59be3e55081f788292be2b58381eb\n69d4ba3043aee963dc2bc8a782be94b8\n3398658268644c2539eff6a5994f7472\nf18c9ab4ebdcdb8ac8595ea32135ffd9\n370e911bb0313e0cdf76e252f60565c3\n10e7056ac077a0f54a111702084d37d7\na9946cff00d5a43c3b0db8c24d855998\n7595d2709fdae7f4cd6ba6431f9f9d71\n8c65dd783d2afcf468cdbc8b02ff160a\n6d59cd216e896670b7562ed1f28478bf\n1d43a3a22ee451e62511fca00e0288b\n4b21a06b433b563f450195dfcfefd1b9\n89a7bd3d0af7be05104a4ca1203542b6\nc017ca698294d3143d27d1af90f27023\n1e6d470b0330afe7abccd5469c032787\n60c942ccc194a8e88d4313dc14de486\n1a96d308eef57195efaa61516f88b67\n1f64fc95a612c646ecb720bdac052a97\ncae4f0f8b87db72dbbdc99ec57ef9c40\n45acacde58d7717aaa7cb30470f3273c\n711de3c464c11233a82ebea018a340e4\nba993afc907987b33087f84b199fd297\nc33d942c6f7d517d346ba1ca782be6d5\n4bb8e7499f9c5466a341228b21d337a9\n9c21b194e13b84bff51f77a6d7299806\n4b4ae1bfcf9de312d1dcc55e36186e4e\ne6a1c65789846ca8c88ecf8c33c3edbe\n9269d120ecefe48da2aa7d89ba9aea43\n7b9a5531e98308c8c3bd24f986301745\na99a74777f6aacf2489e5619471f9f53\n3016d678209377c1c3bd24f986301745\ncca5144ed02e693f83ab30e82b39a93d\nfe38d140fa386ed4c434c6fce2e7773\na5af3ca6791da8292c48d6b905457dcf\n9b042d709402eb968dd711af5650bdcf\n8af6aa6372ade15d8457b637f6fe1690\nf166eeb3434b9ea4d79a1acd1a8c2d4e\n22cb00fd7f4d016429b55029703aed8d\n2b36b46dbda291b5855931d119219022\n7d6d7984fe8eeb3099e8bf807e902261\nd14a4b797fec250b83768a4ac1607d73\n4b2222cc86f2324f7383fb84b914b75f\ned2d5ed8ad10f323593ebeeedbff73b\n59366e331014e2248738e7290b6f3237\nf7ada05f68013e2dbcedcb5f4c7257b9\n2e096785b8d98d4430bbd4cddd04c77b\nf48e40d7f7b07b8ae0c7300d2b2cc1d\nd2cc7d1f7fff8488698b889b37529d3f\n7421abad75caa60a299938728adfdc7a\ne3457599e244cb83ef9a8aedf51bb497\n46e097e8c17a4098593ebeeedbff73b\n50f93f2278c3cc066bdbc69440dbff90\n8b54150f56e59a91de9149d4acef1da1\n7cd2c11133d7470db9278b13f52df097\nf6df49d754e3adfa29e4b5aa807bb4e7\n6f1d3ad68c0440a38b424343280aeccb\n8709ac2f3822955de650492e45fb14f\n66f1182a5e4dcdf9ccce4c6d5bb195f\ne0aec1747c4d7c11f24f0645d0949356\n664c6792448950dec19dc7c5f46bbf55\n81094bd607e33c1e0c5923879d79f21\nafda402f59a7737ad11ab08e7440\na871ec9aeea7cc5ccb5cb7e88a8b34ae\n97894130bbbd202df4b6538438a0b930\n1652817da2b9193bc3bd24f986301745\n584d3ed9669b1fcfbb7ac4d22a68ec08\ne809af47a0255110855931d119219022\n96d3a59baa02d7a47d117016cd1926d1\n734a664e9d0aaa1230bbd4cddd04c77b\n5a6c1cc3731fedeb55f46d55537192b6\n1096b4a30bd7717c4733824eae5cd9ae\n827166feab020929811cdd52f3d07553\nf94bd6bbed8fd60614038d588fd1342f\nad060b3914729efe2175f7e45480df72\nde500885a5cda50f99284d844aba7576\n11103f4da22fe6604b3c42e318f3affc\nfd958ba5f3116085492d9da2668ec34c\nf742dcebb1d9ab0cf51f77a6d7299806\n88ffa9b795f527b1969b9778c8fec586\n80131db5f6be83b7d7bf6fb68df7f786\nf58b9e92e45367326c3484ac7eef025f\nc627f3639caaf614a6589c01f678d8ea\n1d19305840960acde220a4c1303a51c\n6e29806cb341576ae9deec47d8412ee\n4fdb53755e578678cd7f32327bdc729f\n149b59e69d25ad09c3bd24f986301745\ne65cbeed1eb687d514038d588fd1342f\n3f4ee26a68f2e9386051d49e4b21b83c\n8af2d1420ac255be490ad276cd2af3a4\n9fd065502f87d1f4c2cd59b38b35eb54\n86eea3415d5a61df490ad276cd2af3a4\n4a944441380ba0a45990f2c81f286aec\n3929a118c5252a768cbb8bac2032149c\nb04a4cb79890c846ab7f9d2da6fc61cf\n19c0e93cdca6433fb8d33c22fd35264c\n3ceb74b707f814a17bcd6a9a3aec51dd\n5ef7fbec36f8854ef7b4b759a0c02e4a\n234e44f27b5a2852500cffceffd2bd2b\n594564c315e37c57925b56a4db8bb70e\n3dee82c33d65b74a99e8bf807e902261\n339092b2aeffea998629cea277916e93\n32b63d54261678e266a713431ac35e37\ne013ba1ff446bd56140a527375fd6757\na56fb908880a3693af8c4996d9577fba\na9aac9089791465d30db3da8ce2a0a12\nfb6cfd7064a88468a9ae1099ff133d95\n73e9e162c2d4f90a6c4acae4ea0d5870\nfd7380eb29fafff3742728b30848ed03\n8ac67043fbc976138705931e60ead6a0\n6d311facc6387a7fcd1233d74066ed8\nf434ad9d54919c9029d8eecf3827c486\n1eaad686e6b766597ff6ace05b36a5\n5247e4e978399f1b486040c0d9e85846\nc77ed43659f01a0cf51f77a6d7299806\n6b1b63af6ccd71a1b129901f80d24b7b\n852e28dd91e4fdb35c1975633309d43c\n5d65f46bcc49eef08b378a8c4400c79b\n8c878bedb8e052041944bfc1093ee4d3\n206cc839c7796a82a09e5a1a20aee2ca\n2cfd6534a6a57548d20545a75c46659d\nd15135247c2f52ce420e437840bac4fa\nff26f7003826d1a2d810b14a81e12eca\n33d18dbc04c4fc02e76bc197b3a3ffc0\n9bf704d5e2474cba3a6b5b5b9b35aa8d\ne99a4c2fa99a0038a2aa7d89ba9aea43\nb4c54426262f142fc16cddb2140115a\ne8b3da6a6d938b475966c5a46a5a6ec8\n34bdbfbe94a760aba396ce8e67d44089\n6d2c75d89b0a5f5d8cbb8bac2032149c\n87f355b618f13233d5cb6d178687b980\ncb6c20669c6d1dea593ebeeedbff73b\nf2797245a220fbf1850622797c13f562\n604efea445d3f3ab6d322cb027df34ad\n8965a7a0234bfcbf82f29b648e624c33\n425544b66203da392ebeb1e6a8111f53\nf70df4cd7109fedb4824068fb42a2b57\n5cebb89b77fcf78084cb825ff0118ad1\n437d7550e95cdf39c0ca344f487323e\n6170a0a35febdd19129dc72c6879c0ee\n472796909612bf1f1353dc45068d6f44\n622d66d9e598b7788e0faa4ef4033cfd\n7a32aac4ead10e0bf51fa0238791f5dc\n52f2c6960d67445f896f73ae4af4fc8d\n2fe5bbb0df6925d1f12d7184a2ad3430\ndc291fbd5838138a833924252d812d1e\nf469759b2790b6cf6c1a170c83f9532f\n55d2be43d71717e1f4b6538438a0b930\n59ce1f3fbd81ab18f4b6538438a0b930\n64e572ed8f8f23bb815b2b467e8e2eac\n2312d2762c1bad27f84b0be7f50940eb\n15339648435a8e6290ef7803f19df417\n8cda30b88d9bfa27d810b14a81e12eca\nec316148b4cdd446b6068c62e84866a1\n34157148280e9342d810b14a81e12eca\n506a09d327936cf8e2e6aa5366c8ffc3\n553213ef2a7657fa9ccce4c6d5bb195f\n3e915e96e22f15a1af9174ac65b8d24c\n3ac426922252c21a855931d119219022\n551bf4f010f155ea4718e6c48e1ed95d\n614b46cfcbe04994d91158b2b7873a40\ne83930a4a62413e1187ef2b10c31bd17\n233c3eace6ea1267eaf288f952624966\n8ebb14fe46f63d5a98cfd47a860803c5\n726ffd1d94bf5c0558df8eeaf3dad1c\nc266a3883e001404721f5f36cb42501\n37a73eab8cb0267f855931d119219022\nbb28f4978ec66a9d5369e32fb818f337\nfa259703a9f28b1c62d7d9f5324445af\n8e7b48d1eba786cde8ee269f00f30d13\n9c44b336e78684647523c0c037b61ec6\n3ffeeae04bdd3b51c3bd24f986301745\n6d00c1008f41a099eaf288f952624966\ne758e1b760f185e2593ebeeedbff73b\n25b6b28e3b70be1c5a6be9e325f087ce\n91c380f2d26f1a9ff128012535a24244\n114d59f2e865eee630bbd4cddd04c77b\n2ce9bdf770b06e3745a4a35cfc2e42d2\n1d9b72020d680630bbd4cddd04c77b\n4949aa2bb737317225f1bb0febd3472\nc36d04d3a10fba869e87d2bdcb41f548\n85b930a031d9036481aaf17ac7662991\n6e45d510dca43cf6490ad276cd2af3a4\nad746c9c7f7548be7608168119193cbf\n676d6d79d32de9cec3bd24f986301745\n88e9d1f8c3f988e62f21cf17406f1f25\nc52a6a569770d1b39ccce4c6d5bb195f\nca9bcd3ecad18d8fb4c161851ed2b4e4\n3f4cb895d754dbd3ce47b13319293999\na09324ab0389029260885f79b3a5579a\n42afa0dc60b32a6d7dcf230d8b7d162e\nf622d7d6892fe02937251258858a7a58\nef56ffb992754ef9efd9e6e4dec9682d\nf7c25526cd3740cb52e2d18963a75b4d\n41264bc3d705a6c1cea003eff0268278\na4eb161a000b159e2ddaf02885ddf74b\n3eef676eb5cb9db4e56bf1253ce74bd\n80acb994a8dd6d636831079c2c481dd3\na069fa41fb01fd06ac88fc1a919bbb85\nf090d4f5e82b3c25f63a1cc836eff7a\n6d9d1411a046934418b5d5fe1f3ec412\n581d698b6364116e83e95e8523a2fbf3\n4faf91d6e511e153b20565fa9224214d\n74f407ed9d20d799df0d738d0f301367\n2d52675c865f669047bc3701b998a7d5\n3237f2e39e0f2f38c3bd24f986301745\n65dbf1f9230a2913855931d119219022\nfa010af968a0e1635ba41eea807f5d3c\nb08dc9e0fd675e6664adc666ed4e2ec1\nb69b6e09d5f5bc1f21ef666e979e4e80\n17b2481d38b84b334c37b9ce3a3de242\n1c7d7b6754dccba230bbd4cddd04c77b\ncea242a600c342fd33891f25755e1e1c\n8222dcc1680112635cc877f4f71ba410\nb7e3aef758749005c3bd24f986301745\n96aff91d7898cb1358df8eeaf3dad1c\n6b678921222e3375f9395f1ee40f845e\n19354bd08463173480f6183c41836dab\n3a36028507ffd1a6ddd15630382184f\n6746eb452d8b84323087f84b199fd297\n33e59bac5a2a5c5e8300cbd55c34dfc\n80e1d8c228dced88ba6d62b5b05dcbc0\n22add506f2a09c8dab93f6188b226527\n8438555826c5a19079368d1198f406e7\n323ed7752b2a1db03ddaef18f97f546\n15c32aa0f0dcad130bbd4cddd04c77b\nd2222dbbaaae806cacd0ab81dc64966c\n15bcc664de962b04e76bc197b3a3ffc0\n2a44f4def2a20e7f4b3c42e318f3affc\n940dc92bda153346eaf14273fa406ffc\nc8532b5928b242d29ccce4c6d5bb195f\nb7bab2a7986f34005268928fe2c1fae8\n3fa4d59a29c3b506a5e91f4d594e20e6\n10e279c69b5678d39a45b69dede1154b\nd2a331898525d0d1c955e5ed03ef3a2f\nb95e59bfc90c4a0a266a96e416bad065\n35e1541babf368d83328d823e2d2a6d\n318f4fca1278ea7cab0467582043bd43\n18ea2f5371184926764a784715fb668\n33b56fcb0b86e914c3bd24f986301745\nb78d5b0748c83f3f855931d119219022\na133b092d24da436e7d9f0fed41b005f\n5ca423c2f3d176f94c5c5c89015f1980\n58b499ba308f9e82b4c161851ed2b4e4\ned36c49874dc325698fc83ea562f5c95\n7216c7ef1edfed4e593ebeeedbff73b\ncf9ed2af8cb3085917b431cae0dd70ed\n50f1ace689c05bed30bbd4cddd04c77b\n4ae4635c7c69ea908d0eb3d070197e49\n58c234e30f95394f61aa7729a1bc4626\n88c9c7a40227e935487003545673a337\n273b31cfb08c2f2aca9e6cd07e5806da\n6fa6f986755409b77f4b44e9ef57971b\nfaa5d5ba2a002922511e5b9dc733c75c\nd5de572c3f6517374b3c42e318f3affc\nad6317f2a90d71f6f4b6538438a0b930\nd073f58c96c17aca95786b1c8687acc\n515460eb527d3439e76bc197b3a3ffc0\ne0ab42e831e007cf9be2020f4ae1ea66\ne3e1762fa7f935b3f6287cb48a47c45c\na35771ed1c74b778101accd22c701b9\nd03cfa4dfa08467f19620b61f6587b3e\n5edf1990c995fcd7693e54627de491a9\n680414bc3ea1e9a67ff6ace05b36a5\n3de49fd2e80f8c95c97cfc3e8a6b1d16\n8a91b91802db34ea409421506a05b6e1\nebcd23b7d8d9247292cf95a109e87d7d\na80c06903eca9eef7b05ef4148fe3aff\n34ea33172f39665022d09160e03f114b\n81e223168807d7be74971c311d25a3b4\nb00d6677641be37dbeedb4c8fd29e2d1\n23fa6ee1004e6c6ef4b6538438a0b930\n84f0b08cc2d6747b593ebeeedbff73b\nf7646a27fa757afe1829bffea9d18abb\nf41e9600bd8bcb92716a0dc6cbf69f91\n836157300c030c9a246b9f2ca347e8e3\nde24c1b05f0ee7dc58674871bd9b2e6a\n78a93c794aa77beb47bc3701b998a7d5\nd796405237a2721937251258858a7a58\nb9c5de845a1f5ccf23f93d9b8d14f53c\n268436b1c1750a1e14659d605ff53c6f\nd5a7ae84e93368c28b015826dff11d35\n80a86204247b30fd21ef666e979e4e80\nc7f673b7b956508cf51f77a6d7299806\nc8fff605d821d607ff28aa687ec5e78a\nbf293b370275cac173eb02f1d995d891\na414a3468a40d91027a4a1658277b4d4\nc35990badac37b256c09970ea0def16f\n4d3a4749310a3d242bf2627b2d231d97\nd056e7c8c972455b22a22d22d00874ec\nb11f985f0b3aa23379368d1198f406e7\nb61dec9a8ce09e4b80360680c1602c7d\na31867914b71ac40d776c08b6a3d0a38\nbb9304218d9741489ccce4c6d5bb195f\n692e96270191113358df8eeaf3dad1c\n19140f9ff7eebc13470412e9b69c8933\nf64617385056e0b1beedb4c8fd29e2d1\nc736eb1545f8b7b4ed403132b02528bd\n882d74e3afe42d0b651fbe0e01830a4a\n65acf2f512016cdf553c860eacad5e53\n15fd9085d9aaa0fa43ed4f51d7ae210f\nb41cc94ebd03eeb2593ebeeedbff73b\n3bfc7947fb8abec5d925b06c8689bfe2\n7602875276e42d1990eb1f8a00f61726\n1e60953829fa7e0530bbd4cddd04c77b\n855f3c5541cfeffeef5609fd2064c33d\n1cc337d9f3f6d8f47f45370489ca3156\n15180f731834feeb2f0a9a342c0178db\n7ad475266c37d4d3588d78fa7ad8e5a3\na269c3b2b456e61af4e73c80c5eb704f\n757deea50fa00eb4e5595fbfd7d35143\nf0e18881d2d01e91286a9d56d8187adc\n7807ff57a21a0ab8740c0058fed336e9\n4eb3c0cffaf389fac3bd24f986301745\n675ac6cac5a81bd3811cdd52f3d07553\nbc2f853a8f2c42701b126712b4d6e5aa\n7722e83d837b5bfcddafe9b591eb9ebc\nb62f2d11c2aae12cc54baced9903a02a\n69fa3275d6aaf1dcc9ee6bf6bfac3917\n2d5b8274376a7095955824885d6e7dc0\n929cefd882de6f9b5048ab7650c7a7c\n14e1d60337a533acea003eff0268278\n24eb7a5dc2b20ab8729c5ef452d153c3\n2add476bbc4144e57c9cc507bfc0f85b\n6739b7952f7e53a7ee462e7a3aa014c7\n795baddfac35711a30e44a4c4faa2773\n8f059d82a5c37104587d0dbfbd9ca24c\nf17e630571a76d4f4b8710a3469971b1\n35aced569e5e1d869d10bf389452ce96\n58b58d56e5bb2faa16fafea97f025a07\n14d0926471af661e3087f84b199fd297\n516c46ceaf6619d07ff6ace05b36a5\ncb4cd38679773e6aa1fdf150cebcb587\nd28e03eaf042c33d714531f0291497fd\n7e1d0214a916543b37b2bb75885cfc44\n6eb9e1ec0365f5cce7e684d25d4dcaf0\nfe57d6cfb3ba455fc35f1f8a8febbdc4\nd1fe23dc2b62082121f2d1de8124ec62\ne686855b4c95330db3a8888e78d004b3\n695639f21a7995f592d5b25c536d8044\nbbeb870f0ad9a17af84b0be7f50940eb\n541ba3fe085905e19ccce4c6d5bb195f\nfed82f2ee0c82f97beedb4c8fd29e2d1\n24dfa4c63b11373f5bb375b194991e4\nfc8b1310927ce3e6d8d12f352b5e1839\nad26e8e474d42a4a79b3e1be3524f72f\nf8f36e7871d0e8382c026fed19c0d206\nb48d04aae94702504b3c42e318f3affc\n641f479a3b90e659282c910029b5cf54\ndba86ecb3a5a4d234b3c42e318f3affc\nedfc8ca3568153d7e8ee6c6df61c5951\n1e90d86b5649720047f453c4a13e89b9\na452252cd1112d346cacd811e7524a0d\n3f9b11fdf6d5aa3d9c75eb4326997fae\n5403184c2b01e0dae4061112aefd200c\n3cad8d726389e5dca5e91f4d594e20e6\n2c5d6e88359ccffc3396b0dbcf4d4bc7\nf1323a66816293be29ae2bc03882456f\n4f4ea0588e9444be30bbd4cddd04c77b\n8f1934c5ca7772837d44dc16af152638\n254bf8d40be1fcb025a517a55e2a2141\nbea8659e45a1094f625ac64d4da8b7e4\na358b5f98f632adcd1fbf79741fcd6d6\nc8ddf2c234adc19b6e848052f86fa0c\nc28f9a82cb7ddbb53651bb31f42d2f80\ne5f797c0266733a49b8de25d88149da8\nf8c37aece2b1c730928918e6ee92e0f2\n6da3c94506cd3e114a163d2b227b320\n3d929eab6abafbc5cf004563556ddb36\n895c87ab1c2e404de7c7920f6a65a54d\n1cf7bee4c0dad464c3bd24f986301745\nf9d5c41dd092dd8e78c10c978f26802f\n74b86828a5adb4c15b4baf82e4d24faf\ndb3f9b48562440acbeedb4c8fd29e2d1\nec34ee731c9dd55758df8eeaf3dad1c\n84d8b1ce802662984fa8d6439169bda4\nb62798e1d1075115e870ecf4c364a4c9\n9112b638a62b432e3521fe8ac6222005\n2bc602c2b7d9a622ee05b1e9462446d8\n10ca7bfe736d81b64b3c42e318f3affc\n54c121f22e8fb768b129901f80d24b7b\n3b112cbb833b57ce7774eacf69d476db\n57de7158b2547dbaf2a235c3708accb7\n3ca6199c8adacd4d30bbd4cddd04c77b\nd9addbc9e91eb0efb1b6b0c5ddacb607\n8fe842d92037d55be6942c5426df6055\n7ce1b7444c3ba89e74f1cdda9579594c\n178703fe974f63e9c3bd24f986301745\n2598bfc04772f90cc20778ca035801\n696482ce58cced1044b0115560181a7a\nab55372db393e4259ccce4c6d5bb195f\n97bfeed6025f68de5fe8cd129a2c0fe0\n77daa3ded63dc634d83e8d4109d37961\nbe0174f29dba41c19dd07b7af48c9a5\n64ffb47735074fb128ea9c4c28e5ce40\nce803beb471c728a4f5f1d630285ffb\n45c2a08625ade6e5e50eebdd2d05baeb\n366902c0009575664f856154cf68897d\n92c68ae13848ef32c3bd24f986301745\n441bfde4486fb4cfc3bd24f986301745\n2ca3dcbd06295835593ebeeedbff73b\n575ac593154b95b6dae7645f889ddcf0\n466e5bcb7038889d9d48ed08450a6532\n927903e9992ce4877b619f30d1fed49\nc153d0d6b4fcf74f54a61dbdbc1ac262\n68680849282fb0be21ec2f83d790ab97\n4e6db34a8ddef9abb9569033586af233\n71e00a86a67df6e9c225da989036c576\n1d53223952ac93dc3bd24f986301745\n166ca6382eb80ee830bbd4cddd04c77b\n6e13d5d26a0c53e13a66b6fe2c876ded\nac747a86af391b9548f9d76a105d8448\ncfe15cdc16a2e2054e2e1b2af0cc59a7\n61527f3ea1741800c3bd24f986301745\n866a07295aa3a8ea5804b7e86be64166\n1fdc88f78be6ba4e14b86d5282eb8301\nf80cce35d167ff9b855931d119219022\ndee160f20e1195a4b2cf6e4d01862bc5\nd3469cb008d98844902c0a1a69e25bd9\n10e2e8385b5322144708f4c6142673f0\n2f1a310ca0fb6b0177e131ed5f0fcc86\n90cd6fd66e29d712486040c0d9e85846\n15ec20de98359ec88de7bcb173109d60\n57d7f4c5b427dae69dac46bde4c69ef2\n3ab6e079e4af17401a53162afec5ca5e\n9ba82ad65b1e90a1f51fa0238791f5dc\n5bbfa33dfdab27e5821ac289e2458975\n6fb986ed2a4db0c1bc7f8f77923d8ffa\n855b1a33bfaf996ea1fdf150cebcb587\nd1fba8006e7f72bd7228984b9aa31321\n9c09df47d2aca46ed6f21f7a864a309e\n6187d4be01231460a341228b21d337a9\nad7ae42e620d2ce7e074517a246f1e65\n31af0afdf9d7bcf7855931d119219022\n9ad91992184e2b3e283b00891f680579\n539548613fa54b6725aae1be30d7ea21\n4f8ea79100a324b77445d25f394949d0\nf9ca04891f79cf2871124212e03fb7de\n8d35df98a26e8317a193550461f84122\n383fed2f8f81108c6fa63795f94c4d8c\nfd09a960ef86fecfc515407725a6e525\n387b1c9a2f50ec314b3c42e318f3affc\n48efd13f8115e3cb855931d119219022\n5de144376ad2826329909e9b8d8324a\n96ccbfacf833d023c3bd24f986301745\na70e1160739fa533f820611afeab68c6\na9cfaeaa85dcb7663ca57f5648ff1b0d\n15676a89e39262ea852bb95bccedfda9\n7dea0c96340d5b9455f46d55537192b6\nde6f494dbebd91ede057b217c7790618\ndc1645a2d2b61e5950794366030f78b\n2933b92d193e31b46cff9b44fdf0517e\n43906b48471bc76e7571d17c374fac42\nb95072f2b12a3274d810b14a81e12eca\n1ae9db7da9a6bd449453695c10a417d6\nca82beca43a3b9b59ccce4c6d5bb195f\nfdf1cbe0d8aeba868c1cf3f7d7f0373\n139c9b504cd85237c5984c8ccbe1a38f\n7953711de0134028ee18bc48b60b36b7\n6c0ee01fb43f8f46c045ebb62fca20c6\nc450bd1ef8e17865557ab4b593540354\ne3f583837f5bb80a5526f91aecc0c37\nfaeebcbc4798714188b4ba3feb03ba8c\n2f07c59d4099b5762241dba92389a637\naef9ca5d1b98b85186ac7f2dceaa530\nfc1fff82a7c97884fc5e332306225be0\n2d12d4984230e79a4b3c42e318f3affc\n2e4715cfffeb76f6e074517a246f1e65\na1da0c1db8220563b6b0dd2a0b939a74\n36821105af341539d810b14a81e12eca\n319e08128a169440c3bd24f986301745\n3834bf577a25eb2d1ce5b91ffe4491de\n2555bc9595a45e9af36ea1eb6542fe7e\n61aea77ab9adadfb3eeddbccbf885e99\n19b849328f1a8e522ee60509601408f5\nf46c84466664f3162f023f89cad43868\nde1d6e1294552606a625499f7117f27c\n66b43780a0e81cbf16a2b5862518c93\na65dd1088e44917b93edb2fe34609efb\ne7f44c111fc65019e76bc197b3a3ffc0\n7d04f5a75055273af9aec59741c69cf7\nca2070bf7d1aa372cb922bcc33df0268\nad3e2d3cf9c03fb1c045ebb62fca20c6\n2ec13bb2c3d06c0543dbb6421d614c0d\n348b2880842cbbca4ca84d60642ec7e8\nc7778ca8dabfc6809856fa70a578baeb\n32c4e455cd92d2a3c3bd24f986301745\n4822e02112a450f593ebeeedbff73b\ne603a4f0bc12522558df8eeaf3dad1c\na392cd632ea01b6f53a71d150e481685\nf99f09473fa068dfc834d9ecc7d5f465\n87ff92c179ed5ed292f4c88fd91c6b1b\nd3030c8698bc2f874c4c693a60456ebf\n4489bf9e90a6918630bbd4cddd04c77b\n650dd98cb20580cb99860e9353bb52a1\nb70eeabec7fd454581960a3202db094d\n978a4869d7fafca74b3c42e318f3affc\n53afa98f1de6af6d810b14a81e12eca\n2d1fef407ec41165700ade95b2f08044\n7f23cb04feb40ced8161eca940958ba\n30d6d671a33b6c22e76bc197b3a3ffc0\n4e3191c1f133fca0586c8517ad05e6f3\ne1369c3a3daefef158df8eeaf3dad1c\ne5c44394471f29d874739c2c9ecfb3ee\nfbf5c95ec6febbeb07cbf788ba0557c\n89875a037902c0664bd9e0690b0b191\n357d9c5b669d6aa37ec818a4524845f\n4cf6260ddc4e1ffc2ec2c1c65e9866d\nb61984e31dfb04c1d1d031a1b745cd85\nec0d4fc8d4c29e7a7ff6ace05b36a5\n4643de4838d7048437251258858a7a58\nc2b9613e2898f3381c7afcd6c011dc9e\n150c9c514d3274b315e97d83801e911c\n10f3c10837232428c3bd24f986301745\n11520534ea9a889c7d36177f6cb74069\nf46fe188be699e5c593ebeeedbff73b\ne367cc737c304024297936c81e7f6629\nf0735e59fa7222f9fe8adc3c073336\n9be8aa90001e8f6b492d9da2668ec34c\n949e39403ab4fab37ade8e3ca8db8db3\ne7abab128d0edb033396b0dbcf4d4bc7\n38b0f5874f16c1264307817adcff8140\n499ab88b7bd33cb92466f73de2a564d0\n53ff581b91740efdfbf96e9694161951\nb91d82b0ef56c395a8005eb66c8d94ac\n598e49637250f85d58df8eeaf3dad1c\n57754ca0ec4fce12990d726e600161b7\n121a3040c28295829e4b5aa807bb4e7\n5fc5ebe830d27064563796b09a95b12\nc3884d2d31ac0ac9593ebeeedbff73b\n9dfe5cbbb78cd26c9ccce4c6d5bb195f\n9e84d2ed1fc4a0efc772d43f7a27a1e\nfe3a8b30aad625ceec56aed2da084563\nd753e5da9b064152ef2438b4b778b7f8\n707b9fa6a564ba0e425fe98d8cc1c2c\n5ba5f9648b50ede83918f23e2305ede2\nbfab799cd63b345e232dbd6edd2fe625\n93d61cd5da999d774b3c42e318f3affc\nbaf006da82e4007a2d79e73bf7425e50\na0f2dfdf0d8be7ae8a543abce4efe920\nf7449ab20f45bcbab1b6b0c5ddacb607\nd656a6250fe0058fd810b14a81e12eca\n40b9f144ea6f35659928e3bfce70611d\nbae92d56010d241157aaa9693588d48c\n33dcc9e237783c3c955824885d6e7dc0\n64a7fae36a56705e3ae0df12be078c7c\n83c5f5d8ab0733093fa313db82fc9cef\n6c50ffea3a4ec86655f46d55537192b6\n8b7175b6c74385ac87187471eb78d702\n54598a1cc5f389ffbeb83c64f2162734\nc0882eb8eb6fba2d8705931e60ead6a0\n831c0e0316d51292df562efe672dd5\n8d177d02c291deeca7f2f03d5c90e79\ndfe0eb3f446059d0500cffceffd2bd2b\nd634c7577c8bc1f0492d9da2668ec34c\n3f058be47b5d4cf353c1d159a8a8422\n2783c8d705a1a146668ae11a7db5e82a\n73d4df18ad195ba6492d9da2668ec34c\n96db71d279b97c4ae02c30c9027468fb\nc3e5380fb498f749f79675bb6cb63c97\n18634e783faca47d668ae11a7db5e82a\ncd27c39dc711626d7e9fb8aa5670f37\n421657269cac10f7492d9da2668ec34c\n426a9fb4da504a96db3e66b0a511465e\n680a106cb0098e7fa71c812e027f94d9\nab0393b07d2965ef79675bb6cb63c97\n32bbf7d09d3acd4c339797c21e8801b1\n6848c467de649ac2af5e7c004818a73a\ned554b9e04b7f7eee7be13c697329304\n8fc6c8d02b4b0cab14038d588fd1342f\n3eba5f6a09e87969b76e29c9c43bc7aa\n4f64eee409e34b41aa8d36cc58ba1cf2\nd956062bec339ab6c67bebb34dbddc1a\n46165d8076918c62f51f77a6d7299806\nc0401853da58a1b7beedb4c8fd29e2d1\n6686819cbb40a3502aa2b411702b495c\n52e0dbbb53159e0fbd8980415d183a3a\naf5fb0179304e7c48cbb8bac2032149c\n5667350dffa82263968da786c4da00c\n12b1fb7c765dfe8eb76e29c9c43bc7aa\nd78d509ada047f34e1a714ee619465a\nd7d732d0ad7537eb610c2a68437007d6\n317a934556406ef84b3c42e318f3affc\neae2c096070f0a57beedb4c8fd29e2d1\n3cdf9215a9cf0ff5855931d119219022\n20129f3c7b65b98b9856fa70a578baeb\n217a31e6044506f41b17743c18fb63dc\nc5480855c540290ecb922bcc33df0268\nb7aedc93c53ab7c1490ad276cd2af3a4\n883f5e54f764056f6dd4165bd7fb497\n53b0206102d236c99f8c3d2002c77ddb\ne7abcb9f3d5876962b70eac6546e93fd\n5bcb0976657fe6df37b2bb75885cfc44\nfe0a8440aef8f597a6656391f7752a4d\n2b88cee2ab30101b9b11da89c22111dd\nddc6ea7906f28cace8e2c411e1e93d03\ncf52e17b21021ad9490ad276cd2af3a4\neff1bc2f644be748490ad276cd2af3a4\nb796639ea7368f3bec11953b27b8a03a\nfd79c30bf108dced1b17743c18fb63dc\n68f2795c385859e914038d588fd1342f\n673dc4bc9271880fa320e34dad7c78bd\n3695727c04b15887b983088451bda93b\n815ceec9c8f5dd754b8710a3469971b1\n14130d541c4a419df51f77a6d7299806\n3581d1bdd22e782a855931d119219022\nf260449e91824f96d810b14a81e12eca\n96a2a4c8e6b988d5676612319c6a30c3\na379cb01e0a98298607974568e26586f\n254cda2719087d58d810b14a81e12eca\nf511c1d4356a6a7ac0a61ad1cf92b694\na6ddbd0556f5de20c64b3fdd6a5588a9\ndf3f7ccdb375675fb145a08fb49c17fc\nbc9650bb551fc22e1f6014485d7eefc9\na1480d2276574cfee6c5cd45aa112726\n58479ad882dcbbfd9d297e74104d3ac3\nfe621b83750698a6855931d119219022\n22ea80a1c8798eb22d19175e7d19b7cb\nbc4ba0bd86545f3fcc749dbc8c455b3f\nd9a0b526a354225dad1da5f59ea6f4e3\nf6c1a97812bd6ebd952c86497c2cd532\n3d08a0ed3ba94fca6652506d959dc71d\nfb91ba29b46a519f8f37c398c1a74a0f\n7dceb027969fed5e2c0a7b8ff2381a5c\n2bac94c17bb341d84ab0e621f58e2d20\n77e24ba0c290ac3eff87aeb86717e73\n61cb695902f7905e7afed106527393f6\n6216ba4ee25256c9490ad276cd2af3a4\n7fd8601b0b0a01c9beedb4c8fd29e2d1\ne67046b9860feedeec7cbf3284585a40\nc1d99397e37782c0a8699b6183baa203\ncced836d07325938f51f77a6d7299806\n98bc840471b4fd568e6da51641e48238\n6f1594512b88901798fc1d0403f6ad0\n4cac98acfd5c43e1f51f77a6d7299806\n2810c2aafcdd9fc3f51f77a6d7299806\n2024beb1477fb5d2278d386bfa54545\n3297d1740b06d444855931d119219022\nadfef21c37071016b4c161851ed2b4e4\ndc4ba419b9035c4b917b96045c9b6dea\n8106aef3eb88f9e4578defb131c3ea1d\nfc7d921df59e86e6beedb4c8fd29e2d1\n37d500b1bf8b3a5beedb4c8fd29e2d1\ne4e30282a0089a5bff06c5af4a0771d0\n65e4bde475632e5bbeedb4c8fd29e2d1\n6f85f70a77782307f4ab13f4b49ac318\nc02d673e9b7658d52b70eac6546e93fd\n3d5f5cf765767b0fe8e2c411e1e93d03\n59dd1eef8072ad8de074517a246f1e65\n54b3cb531febad83bc9f3fbfc126b5e4\n81514408605063ccd7be956e59a3bd7a\nc733e81695923586754784b56fb4c23b\n3c5048910fe8919ed810b14a81e12eca\n6e6f8f0ea7008fee620851befcf2047a\n132ffa7d607ffc53d810b14a81e12eca\n6ba6309d74f4a131272505863dd1b8dc\ne692a96adb18ae3fce101336817a135f\n5633513a1cd1adcd9e9d84e41b20ddea\nf4692dabc20f58e0f51f77a6d7299806\n2cd0f589d64ea3ec36ac40071701c687\nd1ef98cd329a71d1d8a323bf2c61bf7a\n8eb85236a450db4c44e1d3da2eab581a\n57c21a71a3518b6a1af550e7b4aa14c\nf714747e5abc01cc14038d588fd1342f\na06c61dbd3a5f3a5b903ba10d2ec446\n3b391b1f9337fb5490ad276cd2af3a4\n4e48be33083b8c70d810b14a81e12eca\n6818e317471cf5739a83764a2641fc5c\na6b54c79a942cad5a6589c01f678d8ea\ne6cd72665faf3180f2cf6a9bef44d625\nd1087cbbd15f509c20768660cf080d12\nbf3b3076b1f43b8a855931d119219022\n6b01be46542d507e674ce64e4bf77aec\n95d3519b036c862d4e3155c362b85bd5\n11f1101ba2e29206cc963bba1556032a\n7a95843ecfa6e5b7c21dc5ac5592089e\n8a07b5fc233b5ad2f51f77a6d7299806\na5cad9ba5e73ef239b11da89c22111dd\n317d8dfc74e872832b70eac6546e93fd\n2afcecd6a801171dbe25fbd47cafc694\n76b32980bdb108df1b17743c18fb63dc\nc8e516785cbaa85259f8e31ca87c470e\n9b91c3d35057b2f93eec26c23f5bc80b\nb15ff00cf3ec4dda14038d588fd1342f\na80fd4790dfa2d226a4bc5d920331917\naeb5975090a272b89f2349486c570dd4\n282b2cd82ba901479f8c3d2002c77ddb\n97a137cc6688a07c90a9ce3e4b15521e\n44f0353cdb820886be25fbd47cafc694\necf3f077d30540fe5d5ac0a8c21f0bd4\n15ceba504a820cdfb4c161851ed2b4e4\n580373e581fa155d3ec45bd2bc895504\n2fad51052bae2366377b9297f3055210\n9e3514da2268557855931d119219022\n5b0d2362c82416695b903ba10d2ec446\n7eea0fef45efd698a22a3fbee2fd609e\n9d18858529b76154aa7cb30470f3273c\nedcb2dc19b063f8ba8737fcf23389014\n1c996c187f4354db7252c133a7e17d94\ncc3f1a06508f2ebd1aed2875db0a8711\n9f5ac902975f409e820018801b237b3d\n6db77fbd32e0af3e3f9d6e0ade5188b0\n3be738da92d36dd09db2b194203875cd\n3d6b55fe2deb2aa3a1c746794f191dc8\n9affa2569ec8968c60edf8bc2f5c8881\n44e9b15e214b390b2b70eac6546e93fd\n2e92e1ec1038ab0914513156cf2b8d0d\ne0bf1408425c886da159545213d74ea\n481e479cb50f251a7cc7de242a4585fd\n37dcf713a1842b93a8699b6183baa203\nd94795f08cc91051a7bc6296cc70fa9f\nd29dedf88bac00a21c19e7863a1c200b\n38ededbc1b3693cbb9aafffd8edadb6c\nfa7a8f6d4c33a4081f4e3943babe5979\n4fad9f5ab1d22ea95445fd9f27a38098\nb97a0bc7e2213913ae96150e4aa362f9\n1dffc3840500e89ab8e1b99345a5afd4\nb4a66058027312c7ac51268fdb437a9e\n322897a771d4591f980d4e1477df0f00\nf73fe719094a76ef62e5325f0ce7656f\n1b73a0ff61df00c5a1cccbba517add5e\n8f02a9ff58479e59ac51268fdb437a9e\nae5b18b3515c84ee39683a06407f7f3\ne5413a9305d52482ee1a5886e50e3f9a\nbe509f0aab6ce96251d3c864cc68e22e\n8a45e9dd681d40d4789ee5c8d247b09\n7a0eab4d41f461e980fc8e4355cf787d\n821f2cc776043008efe8aae804e55d6f\nd058b63b957076771d6ac856ecde9eb2\na6681ac778c7c314843f1df79528e538\n5ea758a6391a2f814b7c5e48b51e5c7c\n5ce75eec38f8437c8a64c4f643bb7cf6\n23fdefbb27881722b0f92c9828c358\ncfb97383aaabd98ead67befd78c3a0db\nb12ccf1813b424864a62dd9e5e4067d1\n1fe806fc0004aae877845ad7d2ecfba\ndad3122c094cf582ab82b08bd2b110cf\n1eb459fa4f1039ef8245b0d36e16cba8\nd49d33a379000a8d4b2ec20c30ace65f\nf50603a59b5c2ac7650419cd627ce18b\n4185ad2b10b278f83889b52430b1ab3c\nc9c29b00aa05386562daa5fd16a7828d\n365bcd79e58fe001243d6e2cf3942343\n3c9c9adaebd66ebc5fceaa39a8353bde\n8616d1bc989f83ef2df099df387d2211\n2145e510632056161afe34ec6aa383f\n1bc212abfc3ba87ae5c3f1a4056686f7\nfa09f5e809d1c8c983b3f8b7586237f4\n1c2fb38795e6e3c858df8eeaf3dad1c\n31678ef74b85de0b15b943c35c765be0\n75bb849ce0a252e72c1a544eca74c954\n15bab3d19de247cd9cd431573238602d\n887ae0ad66669f1b302fb2a9e79d3e7d\n41ffb4ec3d22e9dd9e7e7bd5f870f40d\ne9ebf354db8fc0fb4faac606fa48b508\nb90ea1e6e5574e5814038d588fd1342f\n6a436b27484166629f9a7ffc9bd1e3fe\n5b0ca203bc4021a2cf9ca735ff10053c\n2fe8de498d0f00f51f77a6d7299806\nc92e4772e218f5cbef9e56a2aea1eb90\n140f12d10c2b7fd5c77467482d6e756\n462d928e94689592cb2a965e75be701c\n85fd80db82120aa719fb4103277a6b93\n4386633c2d2a1a2c5fceaa39a8353bde\nc4bfc29898e5a1b490ad276cd2af3a4\nd35890b708c633546f31a2b0e5969628\n8dd1ca36888301919fb4103277a6b93\ne157bbb54d5a2ffdd6944324b21393b5\n2f257e35ef61553b63c9ead28992f1\nc958f04d72957fb855182f299fe41fdc\n552692f06e4fb0c9ec5b06c6d7d7648\nd2d5b8f99d977e353002761e7a3ba3bd\n9c5571c45d44edebb6aa381e6d41cd4\n469122d4947cf83ee6942c5426df6055\n85f2fc137f3c7e57a19748ad08476c18\n1686831b1e585dd9729c5ef452d153c3\n40f1be4ede6113a2e03aea0698586c31\n33486ab58b77ea46768449c155e32d73\n1a521b256704b08fb6068c62e84866a1\n5f3fd62e285aeaae4e2090b842effe89\nefe2bb181502eac1f3c9c1464e55d580\nd0b38b27495542461b02cde7e81f0fc3\n9da02326599123989bb37ee549c6e937\n57c935da692d6e4c27c29012942420f\nd3a1f88f644f36722f92c6319744ac70\n327f5df925ff54121dc8654936e2968\n1a2914169a3a1536a71646339441ab0c\n9cd3cd9e93ac389e82db9fca4b68095\na3064f61346b7891ea0464486db6b687\n36f53cf8a68d1ea73ca57f5648ff1b0d\n9551ceb9c3d5013284c687cefb7c213a\n3338d1a99d7387562a488bb287b71f6e\n7fdb1575e7f15c199d9fad88e2f4c8ff\n9dd91ad8d34c249970521b3539fadd3f\n3a85ef469535f0542cc8fcd230a7f687\ne0b333381b21780495e29b6e21e8c291\nac646aa05a0ae0e11b604216cb6e7d3d\nc2369a8875367b56fab6e40cce6926d7\na9e23932f14fe0cd323ff07d83f4248\n35705c4e27888e5d27b31bdeb5f5c79\n4967c4df72373464622e43c0e0591de0\n28743475c1892193b0097f8288b985a5\n52c379f93a8ae9de276f41435671c8b8\ne4089e22c991e2dcfd277d65d018c82e\n798fa47b8508c8b162a510b8f97c658e\n7d7510e6bafe8d2aaab74c2fedafd\n88676c2f87a5b54c4500047017815f5f\ne458913e25ca7053c1eb59469984d29b\n462afff41381a622ffcc22765a7dddc5\nc65061bae7f351e419fb4103277a6b93\n1a23f3f25a8584cc49fc9876b157a42\n938c5e8ec8703d5f7ff6ace05b36a5\n6c9ab42a8e028b103fb0920a55a7e805\n92fed8fdc8f881d2dfda46c9a34dab22\nb8ad178c1d78980472dc9d42e683347\nbfb2cfb2e454160d78cf5fa17988625c\n3779ef1608ed12dae074517a246f1e65\n548c2b0a10a3f8c798b664231032816\n2e23b1aa756399ea1138d031cf239f4b\n1ad008783272fee4c3bd24f986301745\n592819b967c53ef0f1755b5047ed68f\ncbd789375190fd62f3d2cb60d3f3bab\n5d00596375ec8bd89940e75c3dc3e7\ned45493414f9214687694c57464ff1e3\ndb49ebac740bdb91d016fde69633b7dc\nc15b0b5f7d835b5012660c1de94a79e\n599cf052b675ac2c8457b637f6fe1690\n4cd743a60cfa17d6b0a3f25f5d8cb0f8\nb5529f6f5679d705c8b2ff62b26cb42\n5f32ce6996fadc96b3f49378110b01ba\n9e0284056aed2a097543d7dbfecfffbe\n9ebaa0f7c3a7229be1fb37eefa671b59\n1ba26b0ca7507edd7c8ffa57cf4ce53a\n28f702b5c6ccffe7fcf9154182ccb5a4\n72194d338303b1b155d7f0828042fbd\n3d38d16334e796526f3d2b1b15fba494\n4fad1101568fcd48fa7b9a6c80e4e324\n19c5696d315c359dda90d20b69102dd\nbd27680b9f09262bbdb2cbbdf53d8900\n1a417e4090ced738855931d119219022\n9f56c17cafc1ba35bcf7c2310bd3f83\nc45633a0a85fb4d0631c3671ad15929d\n8a1f9d4a36baf4fdc563fcc2752ece39\nd06b3f46fd5a901d4854921d37f7e048\n10ff43e8fb49af1719fb4103277a6b93\n532a4a4b8ce7b6feb9ac39a10cc48e08\n3f682ce98ca01c85b3cf15c77de45986\nc06a4b0f57cac2b020afdc30846c0661\n83952bdf5c426c4a85cad391c250db01\na54de0e6573dabc0ac42b9d8db52fc14\n41d18d4668939ced3a8e4d3441f2dd18\n7368b47a95e0db8886cc6209ffc37d3a\n1cce99367326fb45a7f4087375d26b7\n13c680c1fd4d1ab4bdaed8eb424ecfdb\n9f7a8670a87dbde9b50d0c6a0c254040\n8c7a08d437dc8431369b4bd8c721a288\n6e3a2f1de25bcde5ed6c51d5b9c713e3\n5d10c947cde5f37f2e7ed79f4f48ff79\n3ab1e5d4f889f8f1cb7b25164a43bff\n3889c517afd62ac5dbe9c90af547c85d\n9db8f8c94dbbfe751d742b64ea8bc701\nef4bc194041cb83759b7deb32c0c31a\ne603bf3c3d2d26f9579e0a60e99d2683\na5b1e3e2c602d464ded526a7be77b30e\n4a3fe6b653bd51d03d5f95f9058dd0d4\ne77fbb3e21ccacf1a03bb2c2325d6f92\ne9fd9958920adc279943cffe175cad01\n6b0fc2214ff06578eb3bc6c6d15f9bf\n56fcca11e3d3a920c1702e8e8263bbd3\n9bcd5f77b6eb92ec415434d4384bb66e\n9cdb0315eda9e8cf9f2c21e46768be21\n5d90c1e74acbae27475bcdf5ead5bfb9\nff9bb9597cac5ef17a50afc9c93f8a50\n283e6da77ada4d65d42225b7548c8765\nb63c8ddca680a2a3492d9da2668ec34c\n8657197d00d103ad4ac2955bec7764a6\na0864018495ae55cdef39da7703174e8\nba52d8aed2dd75bba75f2876a99ed045\na5071459f9774ff43215fffb0cc2c59b\na8c9827810c66962f8fd14d222168087\nceb0c123378d24bd9f4b4145f6688869\n1cbd8a3d7208cd6b8990d2712ce4d993\n5b621e5fe06ebfc7b71f7e05ca67f031\n3d791e306d7ae620b3b8d66c43b5b940\nc7872212279d59eb540291e94bc8ddc3\n7269b683b73eb9a1aee34134dce9c534\nd064b468c3cf683cedf48f9fa39262b\nbcc14b683930f8d33924adb2bfcfed72\n4702c7f73c64fa81cc19d3672693a8a0\na5475eec7a98a02671a70be9f12ce8b0\na1c04a11d0e20691fa3982b18d6e7664\n199676c0434f5e176bdcd672c2b17215\n649eda5783cc47e7948cb8e1d9ee487\nd1fab6f92fb0682763a371f6fe9862af\nc6fc2ce48ae9867d688ad7d3969cd02a\n59a2490719d49a25aaf15b62af6b513f\nfb5d7176752898cc5fceaa39a8353bde\n4ffb8579bf17a5a7df253edc1fde0322\nbce02d42bfab37b2f4f06a8cc0f0315\n53b1f1781eb6339f5f4be3ad507aab92\n5b5f613742a2d960aec74bea859ea8a3\n2147aa5c55a3913c240ea0cdca7b391a\n8d3d9f1bdcb245b49eaa55bb236fb6e1\ne7c350f18bab885bd0bcb58c58eddb59\nb63ab8d3dd4eee098d95727c923f3722\n69adc52c58477affe074517a246f1e65\nb9328275771909fe920de219c00d1c3b\n683ca17c9b0d6c83f15d71fccc06917a\n9fc9605f6ed5762553cc33364504d5\n27cd239b41129a13c19a59cdcb309b91\n5b04e4677f1a45d3609211b089fcd35a\nc18781f9d9d6f34a79368d1198f406e7\n2167f82caf4ed2309eea323f522c6486\nd4063d86f6b2d27cd5b312abcf74b469\n4d81894947d08922beedb4c8fd29e2d1\n3c514c4f53e3f1ed4b3c42e318f3affc\nc75ad4217e58ef871833a34736708547\n1c3317b33bfccab0824080f516909671\nce88f6aa0e43bf8811099baf02792d0b\nc4e7fef0548b8d87247b7570b0fbe63d\n8b61fd451bb28c80c8bcf367bf7d8952\n9d832f72888892e66d907bf61e189d9d\nf9ac7801460434b271140e10b6211a6a\n7823530be7179f50e08668a8b378b020\n6560de55043db06ab0783d9ebb200d10\n24b997004163af21851a116903680096\n6375351785793a96412608755666abef\n42db26c80b9530b7c188d6c6d00e7440\na3ecb4d209807312492d9da2668ec34c\n497175f56357e331b4b7c06325f7a2a5\n7eef97cfb1b73681f1755b5047ed68f\nca577373ec8bbddc7730743b6aaccb6f\nce56b5a3ab23e12489aad4e9e4feaf9f\n5ac1ba406888f05e855931d119219022\n1c123801cd052c833bd248747cb27ae2\n4020a2b829f148a18d8c7827464490b9\n71d35a394d35f70619fb4103277a6b93\n111df730a9d3f2a8eab46ab0515e8186\n9b2ee4ca099fdcebb4c161851ed2b4e4\ncb8ee43492cbdda3bf6f067b2fb335d\n77e044ca2ebca1f4d148fd8215fc3114\n8bdb57e97f726a8133a39277b6bd460a\n86604589a588bfbd98cfd47a860803c5\n9e99421220d92f1da8699b6183baa203\n7122eeaaedc364fab5e360679943d9fe\ne49636394d4b0189523e5ffab409f73\n469fba8f6fa06e6d2668a5ff3e8889a1\n1c7ce8d5874553ccc3bd24f986301745\n38e83df89967420b876b399a99a15c0f\n15a95cddbc40994beefc4457af135dc1\nab08125b4f53c1779595137b79304890\n54807aa2b0f646a448efbbb060f51a02\nef92a53a5aa6ce008f88435cd882fb0c\n4d14547b54611e9bcf1ee9bc9708f08c\n2823fa4b1076324dbe0367f0d905ee09\n6351840a6f3b29d0a15e691028c09e34\n6bbd16ddf2f8be61377b9297f3055210\nd455b490f08607a57c6de7e52b00ebab\n22e3a5a8d22b268593ac14f56e1bb33b\n5141810a02a145ad55f46d55537192b6\n23b7e640f09dcfabf1477cd05362531f\n9d547553b8b68c062f3110a733450426\nda9ae22db57775cf67cda8f7f78d0d19\ne2a940682bf386d166e77edacd2d5e3a\n910a506648c64970a8737fcf23389014\n9f286ec40676d24e3dfc74c6ca03fa25\n7683778558cc36163fb0920a55a7e805\nb97cbaff986d5db4490ad276cd2af3a4\nc14e9980452c9411aaa05ac4e55dbacc\ne7058b820e66c9249cd431573238602d\n8ad1486390608fb936da5f8a6c22b2dd\n8a505843a90a7486dc2bb3ee5ca7ba76\n8a179c7244ed94f4f8369c172d21d852\n8dcd27d37c9b8bbad0733ded25052299\nb7eecafd15147c01fabd49ee8315e8b9\n9be919e0f9243b9beaf288f952624966\nc4071718e45630ee5510d59f3ab1ed64\n185e4e4fe22d65842095a33119f8ea7\n9b18c8de0d9d2882166ddaef2c2c61ae\n41590fb9de5414f244b154f79bdb5bdb\n66d7c4e6ba6c4d415963245f0923337f\n654d6b82543a863c3bd24f986301745\nd1e231e9fc0e9127ea6202eee73b76a8\n96ede227209cde474042244fe2d8ace9\n70f408c759664b953f99a25d2bc1902\n1c1f65cac6bbd1e15dd7d7985e749c1\n7807caccf26f7845e5cf802ea0702182\nd19c946f825a9786db6175ef18ad3f80\n841f48a81cf3f066ac00fd1150223027\nf86c1da9ed243ff055f46d55537192b6\n6b6ea2e841e2f00b60eb699207aa149d\n9245ea14da5198b64b21175170c559e7\n559582261b021b7e4f987dd564b75f17\ne14f505926399396b5997278ed74fcb5\nb7820dbf7820befb99860e9353bb52a1\n9a294d3a661f96a3c98555c181f6055\n8480f767da5d68ca9de7cc399bc9b2b3\na30eb4a16f30f29498648daf3d784f2f\n72ffaa15fd437b33dfecba9aa42b51d3\n14c9ffa70653cde3492d9da2668ec34c\n9a0d79f4e766f18c7d10f85858b5d957\n2dcbd662fa03dc88956c2c3ee7a48cc0\n2fde3d8a04798c325b937c87a8810c08\n5094e6f7e49f2006e6942c5426df6055\n234ca609205d8d80a1e28099cf3c0efc\ned392c6bd0a25ecf5a7a4ee31b873edb\ne88b21faa1d937f3695cf5feae151847\n20ab56e8a819c7f06a9633583f89b17f\ne4487798c95013956a7d64731fd3b515\n8d459a20748b23b8c0c6e803b020a614\n631a942d7b87387019fb4103277a6b93\ndae4f6f734088c4de3a031805ace4a99\ncf63d0c639cf4d36da1aea1fe709296\na223fb0172d705fc3234880d6f34f7eb\n4805127beacfba4a7e7e510dabdd3cc0\nb1ba4d962206bad5dfda4f5adaef3a7f\n7eb961d3f19080983ac416718757a350\ncd4357aae286fb57c5f48f9175316bec\n729673ab33a7c9cc4d3a0a56bdd58a7d\n589d2e18f9b85e4715dd7d7985e749c1\n21d160eff925f48055f46d55537192b6\n9287845470d119bb940b945d5ba9958\n1b7dd5d16aa6fdc1f716cef24b13c00\n8147ebedafb763f21fd3f440755dada6\nc5d499a443ef70906b882130fa92c175\n87666a40c8a35641c7166d921771062\nd10bf548de6c75a966130541a711692\n39dcbf2d99d0e7e778104ea7bb00d557\ne2efc1a73017a3d2e76bc197b3a3ffc0\nda7daaa940ae6700286de2124bf64f07\nc139948ad09b042991a3d45e8887248a\n70a4cc63977d8eb018d385624fdfc6d0\n33f9152bf617f22a16a2b5862518c93\n5c0810caed3ca0f83bec56bff764ba78\n4f31d399c2c778135fceaa39a8353bde\nd16b6d6daed62ead49936479d30607f4\n6e1dc5da243fc523c5f48f9175316bec\n1b70ae39748f9b97456cbf78e1e89022\n9ec420c3155ef5af707cdefe012d0353\n17624075a52c9b15cab01e89f60c9290\nc4ee00c87688f3b0b161476a346db176\n499be58242407271391e4d6c585a697a\nd8d504a5e90e5b48c3bd24f986301745\nd4f8060cf95edeba6ac2b0edda2c907b\n215dd9e926305bb7f8e7f2c38fe37243\nc4d4d0cde7e39bbeaeeec543ce96f24e\n13ec1052a32ca23bfd60059ad8523f1a\n3d7f82a1bfc5e1ee9dfa717f86ba8028\n1a9bb6a5cf448d75e6fd255f2d77a585\n1f239239d1039d60ad8e5e47362bc281\n6f5813533bb9001dd24546afc5de2582\nbbdc08f4f00c484f310af74324aae27f\ncc05a1835e7edda1c02daa819b61338\na568d1602f94c814f8a51dbffe0021e4\n5ac80d0ff2237fd8e2dba1fdf90cf48b\n192ec952a75014d09eaa55bb236fb6e1\ncce2b5399e5e46a45510d59f3ab1ed64\nedb69ee3e3e66e9bc242632b2a8c3129\n17bd2a95d2c691326fb8d4cf06fb5045\n14b96e25f93105674ee71d2f70ae4021\n7588da8ef1e427d1177f2a3a0c71fbcd\n7f3e2154bbe217d4143e713a73e832c1\na41b3ec61751fdce6c28547eeaf2a8c9\n1482036d8ce3b51ffc0035da39bd5e1\n15490f254e6e226835cf289fa8ad7115\n65f9103ab7a64e83cb7105765410e2d6\n67e6cd9381c22b9045c6cb69e0968783\n2ef075a7b9433b06b2b7d07d6c0cd464\n5771840ae9ab5a334a3ececf7e04ebcc\n3fb8797c780710e45213cec267286d18\ndaca80d92e046faaaf90989a4df930dd\n73d02435d9e077a75e062e3835b2d911\n5fc08f3f8c3aacb8456cbf78e1e89022\n93f7c646dc5dcbebbf7421909bb3502\nb2aee339ca0dfe94de1b0b03ca051f02\nee7e37046c26168dc2fd07f66cbad0f7\ncea61ac56a07271a96cc2d2cb6bf6019\n99a43717f3487aac63fba60e6c90121a\n209b2271f9434cb3c242632b2a8c3129\n4977e64ab070b003b778cbd50553af38\n68b5f18b0790e9e128ffacc8063f0f75\nb5a2a53b9b7e16e6b85cd7b6d43e8edd\n63ebf8f4f1e63fb0bc85ae0034c4dd9b\ncb65b7ed48165ab09e9f71d2c7dacf45\ne75138a7ea380470191dd4460a0b4ef0\n4368d1fa80c34433f88bdcce05b1a623\n6a3e7d05a7ceb4e1a3df3190f4f32918\n7f7bc0b7e275d1079477196152a8f4a2\nccc9cc45699f95f21bec2e8246842c2a\n7d3fc73ccd968863e40d907aaaf9adfd\nd6ed3a1e5d5eab8d97fe55e7ac43b9fd\n9b365e622638616d58df8eeaf3dad1c\neeaa44341a57c0cfb9531c981c83e1\n32d06518fd07df9bcf004563556ddb36\na8da41b28b37833d14f6a05ceb8c1a6f\nd32ccda2f4614dca4b2ec20c30ace65f\n95112920a9ab9c24f8555ec936cd4b63\nc6e3f651d2acdb0a746f36c9587bfc04\n6fd426f7cc1a2b00d5130a83cfbc8bfc\n46cdb3dd8b6c460d473f10e6caaeca56\n6c8d4952f67d47f56bf829b05be0ce22\n8478187660d5443186915ea7a2083dcd\n66bda56e82bf90a677ceee024ab73ab7\n66a3fb3a480c2b9e7b22e9efea2f565\ncdbe8e456a3e3202c55161a63fbd109a\n56ef806397cc9c4a62e6af9325f07021\n8c1775d71c36f89d6ca407465d3c74d7\n6db3d1818431bf97e785ff1b79dea9cb\n3585c614e9a6825fd42225b7548c8765\ned59a9478c7cdaa27d892bb924f972b4\n795d4213e1dac276f9814818e8ac1c35\n9e97c5ba09adfc481b17743c18fb63dc\nbf9df04aea08b0f0f51f77a6d7299806\n1bd49921fac3e815c3bd24f986301745\n98079c9fb39bc736f287ec53a469521\n88e73c92d8d5195fb8b431083b6191e2\n4cb4f4d4bb4771dd1d1d518ba4f78d6c\n6712647c8e0c6af29b6e5e087210d348\n61d9def9b2df3e40dc6f96c9bb9e3ae6\n99224f3ab2705aa9985ef0bf52b97bf5\n2c6beb9625fcb1a43c7fd9917aa4ff1e\n7730689fb323f88555f46d55537192b6\n50641bc54d5d41e2a85acc7b983a0d66\nd3b7021f03ecd58d2585ba435c7d1fcc\n1805ca3ac2779a443eec26c23f5bc80b\nee6a58b9f4a5a129ba5342d638d0c267\n3cbd3d2da993a389fb05cb5458b1da64\n128011ffc7787d50f0920fefbe028677\n9d57cb805345d761beedb4c8fd29e2d1\nc6fc21c5f51f169f365368fe0de21d22\n776732bc127417f28a7219d923f4718\n1a05bd57d0ea709e7d3ba54b9bdaa55c\n124c4b3afa6a3e56eaf288f952624966\nad243c4ca5f44fb828b75d6c308e3c12\ncb48a015b203b3084acc8059dcf0a054\n7a0ec4445356a79410643b0cbd7095e7\n4c20048e9066d768b7490c34ba5d2779\n46c3080551df8a62e8258fa1af480210\n3863d248581965c0f42980cb0dac8238\n452d4d4dd64dbd32d12d3a3073d6ef09\nde205371514307babc2e0a60f47fe031\n280949332aba8b8a6d8dfe83fd00685\na6e066da6311c2c7f4d017dd03935e6c\ne8300d560b8d60244cbf9a02e3342127\n689c4f50ce0aae27908caac6d5f8ca97\nc73070837a2f9efe1b45df3fb820c9cc\n2cef3d2d545f4a22b305a938e0ed1b48\nb3c5ef225f841cb59725f8348364f5a8\n176e6b9b4340f25a7ff6ace05b36a5\n951a9c85494b53993c2e50348f23d3d\n17c5c22c9ab97788db67d56f11b1bed6\n2199d0e64187366629d8eecf3827c486\na859f1f16a230a681a49add4e8d9a4bc\n91fa004401e96d0797059057d5df0d8\nc3134ae6fd6691d7db039d8689a74349\n8eb9536af97f1aa05608802d2be44a9\n7e833179b58ae9ec115e53c2ed23d57d\n5b99ce5dc47c76af3e57e49d8269b367\n2a0b5875dc999a7a29e047111bd79063\n4e9852331e1d5d8dc3bd24f986301745\n46dababb078a797011ea7f12f22c0e84\naa6a63745fd7ef284084fa5d51d65c65\na5815741cc777e643002761e7a3ba3bd\n4c529b6171aabea2e8058cf23f6382c1\nc8520226f277a6af77cb37b8e3bb5ba2\ne8288b5f567569f19fb4103277a6b93\n2362ec480b3e9baa4fd5721982c508ad\n621ae6c715e1af8087694c57464ff1e3\n2c094e4bfe5958267da1098dc15ca7a2\n64adf1d226e4a0894f4d213d7c852596\nb62908961c47a373b097f065a7be019c\n8aa73d4e62b33e8787e41ecbc4197db\n9f760e1d7ab97519eea323f522c6486\n1c228bbb8c23ab9295ba6c11631d3b64\n4fb0bfbe85fce25cf9a2c981b043f98a\n615b800fb332525385c5f690e9252fc5\ne92a4ff2b36cbf83490ad276cd2af3a4\nb37b72a898169c971ff2429be93a82ac\n2c6c50203f519351bf5f47124ed0461e\n20647984dbeb990ea6c03a53cf0a14c9\n9ea5a3905313b07e3d752b0785b76136\na7949f6ffcb23c178339e983761bc4a3\n86c467981ec229909b21a1a3552b6ab7\nec59bd4b5288991e9bb952e15a37e248\n68b18bb0c7eee83129e4b5aa807bb4e7\n80f8961877a467b23002761e7a3ba3bd\nd26f2c85a4aafa72db6f3ca49e992ad8\nd8bd55abd721dc0c99860e9353bb52a1\n7a3326ec918a44846e3c8a33c4ddf2ef\n6765d83445c2338555f46d55537192b6\nbd516ff50ec6fcd498d5fc0473d00a1c\n3fbeeb56c557e9d6aca1a38908852eab\n8b5061128585edb49e9583a661702ed4\n7b356bbece2dd658278d386bfa54545\nd20562f6f18add5c7dcd20e7ddd78bc8\n1cc70da57ce2e9e7309b03efb521ec1e\n279b9a722b9b203b341625d524f6398d\naa615f385b320782eb57f2e4f0583f2c\na96f4daf990b3eda53a3e8b300a51f98\n3604b060233bfd79bd08524bcb66a009\n6a311b1416a53f87697ad7b0fe6813db\n33e344d8250471396f6d5059be65ac2f\nb7e0c66b0c6641137141495dc4a593\n8b7f2caf571342398b8e4fade0702996\n4021d983b2359b2d4354f9eea413cf2c\nbc44413ddfc3f861c5f48f9175316bec\nd12b589d464fab1862ba5d2f24e5abbc\ne3287950481e9811cf48ae153052b71a\nc683f7280179260a898f72fb23e1ea6f\na6c91690dc96de97f1c28c9b4267c8f3\n6d67f92d6e11f29e5792b99b8245d225\nbd28567361a3541d97fb366fa4051f4b\n23506d31a9ba77201b54d8d0b255b88d\n178eced0bff71d3653e946fb2184f0c4\n5bfbd0f0fb965cca9df2c4ae01002f5c\n6fa2751d57a4ee44490ad276cd2af3a4\nad0c4c25d7a4d4c296db593b49da23e5\n3a7fb4cf118c30d36f3d2b1b15fba494\nc11829ca8ee139283d2617f9171b5ccb\ne52f7c8abd860fb923fe3501bb9e7193\n6d1416c57e8a875b214a15a5a42c49c0\n6e8d22c6e069b71965b77a565916c7f\n757ad2516284e2728d3e4a6c55f660b8\n5a0c76bb4dd53d13a6c03a53cf0a14c9\n4c15f432da3400ad2404817055fb55cc\n27b9211229e1bf011f3980612faf041b\n802287d31c1f5c5ba4ee05a5737b7178\n2d1400cf45b94df051a0bc243f04669e\n4cf6b0e3320f0740521fac473c90dd4a\na63f58a27c22886a721de3dd14942a\n35b696cb05089cdcc8dbe21f531a88d0\naba18a9a32753bb6390dcdc075aa60c5\ne79e55e6e08245c8dd34b2617efa7e35\n8381dcc6adaa7752b7d9d23574a480ae\n980ef88f896e4ebbe6cbbd79676d8c68\ncca695e66b222f6214038d588fd1342f\nc302d8053ed38c06b589fc18f8d1e43a\n2fd71db402f3939164a62403221fd59f\nba6a1d8d3f8e832d67668f34c2939f7d\n1c20d8cce30ded086ee08f750473a436\n4d54165ac08d47dc30bbd4cddd04c77b\n7fd24508190c2e5351d3c864cc68e22e\n162e665f12c4340f963aff3ec12fdcb\n252d046ecff65ed1f9f3162e7c61521c\n93d8e32a11a3502336b0f2a1430e993a\n54dba548def577137f14c8d2897662a6\n78a144a7c0f60dde744107c67e903f9a\n5f2b41b50439518be679b7e0ecf5c9b0\n2fe32a0c23de48b7a4462b13868efd3c\na25f904dfbc0fb0331b9e762848db625\n1ce2de1e1077d66c1d5fca03776c86\nc27bb0cf69183cdf78ebd8af2a314e49\nad09eb0cb78bc62238279ad3a29524b2\n78ecba6d2bdb55ba9174750cc2a009c3\n41e443beb22248b46ba14bfd91a75020\nd6dbb647d85df780615b3e12f53b391d\n6962c6b32fdd0a6d6b872683e72852e1\nbdcd0c8384971f2a684b7bc3f8a9aa55\n388c9f343896272813126e7abd481c60\n81a5a42f161688ef36d8dd30a594b2af\ndab44e951363e187ed44d599900d391d\nd5a78c5e48ade3e38fe22a5ce827e9fa\n667b59df5e098355c82f50464edece2d\nbc36a2facb65a01263f50818822b2585\ne27d9fece990d39a0f23466c3c25e2e\n273b600198cba2f840363d9858e1b6c4\n9d73e1a51a56683bb65b71636c46ae49\n81f049a3410c8d295833b7f8c91b5b48\n32d832455878ef581bf2b66b52bf6885\n992899a16779bdc99f8c3d2002c77ddb\n214374134d21f90354482522828e74ae\n217430853f56075915dd7d7985e749c1\nd83cfb75c24a8a89eb0ce5843fe6b264\n464a6067af815ccd843ead12644a79bb\ndd4f28a0e0d3f93c614a26402360d21a\n588b84631bead4d1c1fa182c22e95706\n8db7935008158509b55b46d261fe0021\n1f9923d1e65004d836e4b0ae0f52067b\n34e70464c2a7c17d97b40b8029c75005\n5db63af675507081118ddfdb81cc6068\nfc3d26aebbd75ed01e112f5fb42394ff\ne13ea4661bd5e168e7fcbdad594ae05b\n6b1a24847e5b666de3b5d4a92fbfd4bd\n7ee81223e7a4785ea7866257ee5db61e\n40f8588bf78172a129e4b5aa807bb4e7\n55accdd4bb5337db5cb8c3b627244050\n74db7acb40bca6eca707ebedc87d7580\nc83697d186fc799d7bf6fb68df7f786\n42c231c89dcc0f115213cec267286d18\nc433bc2bac3eed219c0c9824ccd078be\n1a614377adee252e0445fc6d980dd5c\n2a796094f95904e9c6193dcce7cff00c\nd5a374e8465fb8c2858699aaad4acee4\n91cf4849ad3f7ac2a81005b904311cb4\nec9d241cddcdb149f5a6ec2a96a47435\ndddacb5f14641b49766aeccb5d872ce4\n9d4b8c8d26c3be06d269116c7276660\n187804891c09be04f1077877e3a9d430\n5f188ef6d852a85c8d0180586cee2c13\nf1fa3fac81269971820018801b237b3d\n5d90d0c150935fe6a564497a1c91b4a\nc912a8edbaaf0fc72e6a7aad8523e7e6\n1fb025077ea5546bf7af398806a30cc7\ne97156fd53e88e27be2d01aee0780473\n5ebc9d8f82e8bd9fd3533dfc6ae82761\n41056728cbfd7aba9f8c3d2002c77ddb\nb2d64a218b373b0456d80c2792e1f42c\nc74f1c411bdf7f57d0efae8dc996b9e\na48942e0190d14a5a8930422448288ea\ne6e92596fe6fa9c965124e7461e47506\nbbb11b745f7c75fdb5b101ae4c3e9377\n190645c1f458a934c862eec8232fff1e\n2a0676c50108be8842d09291b1705b96\nb360448cc4b230c672745a2d9975c702\n2ec13926519716142b0659b9edd2a3d1\n53fe29e7363eaa70ce898a7d76534f1f\n77d20db9fe05302376e9713f57a5fcb6\na075004f2659de5a797e3338b16ee6ad\n7c278d5d7fec83ba7d0628daab3fd779\na55454529b463a1eec56aed2da084563\nead13c29c385832eb4c2969e5244fb83\n4cc695f3d582116fc655d08d986ea26\n4df3ce9b02b4765b1a8db2c23945f1fa\n62f75f68a559cd9c5edbe4a62f5ee3a4\ne679dae35e8ccd9acd2220e987e57553\n9a52ba3ccb97a11426392a5b643ed5e3\nf52b167d756420c83e5f17778b45d37e\n8be1ff29a5088b482822b5101b06e070\n4abe61d5f1f800b6c8d74856214be3b8\n5a00f82cae6d2566d249abd69334079c\n3b0e4c443ff69840c3bd24f986301745\ndad614e8c01b8acd618778e799bced5c\n1e57738f60665b1a908caac6d5f8ca97\n67fe5ba50738e325beedb4c8fd29e2d1\n1acc3dae512b56b01f8b303c0da5108d\n4fde6d734ef8490336d4accc80b34c1b\n33c4c7c47b8874123c8f5d3bbb1a3215\n2c1d79e1e1533bf1f51f77a6d7299806\nc74ea23fce212291943df36e40894fd9\n49e5f7af3e3c0ceb87e54aa3a663dbe\nac9a28dab6b10451beedb4c8fd29e2d1\ne50bed5236712874ed258f1e4fbd53d\n8a63086a3c861151ce2bbb5a9dafce04\n7a6cf20a719c16cde8258fa1af480210\na251543112f3a452fc5718d28351c534\nd950e75bf7eba6ff35836c728d324152\n775b3e38da839158ecab93c7630e9242\nc193add7ee3b4fbd63aebe2e86fe0041\n27a0e85f8fd0c7a819fb4103277a6b93\nb98dd46e9c1101e2214a15a5a42c49c0\ne897ac13dcc0adfe456cbf78e1e89022\n569e2fce2f1ab3be617e9d9aa36a8137\n564c9bc401397abc7d9b8c8596b4309a\nb08e0a90b1bd3f0879492e1986fdc4e\n399797977a78c2c3542091189dc62b5\na0ccae355918b63714038d588fd1342f\nc3732b612ee72d7f1071105723d4cf63\nfe84ae93e0eac1e45b903ba10d2ec446\n17ba1ba8f935f2bbdb01c957364e77d0\n3e0ae5d25ad60ea285d624cfcd9a37a7\n6df5ad89a152dbd26e79c14dd16aa04b\nee642ce4112cda8c229ab176c921b2b7\n89cb658542b25e1f4671d97b0fd17f51\n2fae93478f8bb6c423a62335a5f0e6d2\n372d52845e1c620fef3b6dbf349349be\n1033f41fd2decfa938da3ea2c9e0e4f\na8713681fccb1d647ff6ace05b36a5\n1a6aca00bbc88c7d30bbd4cddd04c77b\n546f5dbed1636d097ee0de88f23eac1d\n10657fcfce1d326b30bbd4cddd04c77b\ndb8756b02359c6553f28718dab796f68\n7eafe1321f7d566c9654713ddaad32c7\n2bd915e46c4b08e3f2cd47be0243fcd2\nc37912d7dc6504e3b7977f4fd4002c2b\nbdeb03b610923d868ee99ab78c7c9d6e\nc972e1b113c5972f577be0cbb9f51dc2\na546045291e8f61c8163a33a6bfa14ec\n65ffcbd025d2151ba5901d93c937a07e\n914293e9cb32a51c880e543f747aeae\n61c279a6f178a43c5f48f9175316bec\nda2f2572b10c0ed8f1783a44a88d6274\nb5eaf46797ada237738e43095496b061\nc05f807d12761472dfe9cab879fd37e8\n4d7035ed932406819223fc014b68160f\naa219609a504b01047c527f581cb7384\n8e5bc7946066f431ada975aaf86ac85d\n8aa658fb92830e0e62a510b8f97c658e\nf5ee06263c91d7eadfe9cab879fd37e8\ne15d98f37565adbe650ec61be62e0cd4\n49a5c5f524eb73b8391e4d6c585a697a\n6d54019f7543e4eaad16260d4d73b56\ne20c8cc35a498acc2ba308912365bc23\nd237260f66c00364dfe9cab879fd37e8\nd3a72603f65b921b391e4d6c585a697a\n30820b470df63087afeb21083ecb38eb\n6d22194fe700af402b5fb024f65f6da\n52e7aecf3ca3a0db391e4d6c585a697a\n1e4a2ed85bc9608d99138ce6d9b8fa3a\nf1c17621d394670b48d1a35afd3934\n809dd3a7fc2bbd2dec89626a4213fd07\n474816f0203184f13ad51ab774fc9235\neb8bee4832b65d8655252a6eccfc24f4\n99224e792b7a7f7bb98f36033d4304b1\n89157839dd80262087e118e254d6659f\n2b7fd6106236d935b516de42b9c9697a\nfe25a9fdbf70cc25f81ed792b3a38b04\n65624fa127a2537df3c9c1464e55d580\n26797a03b7940d43d9a7daf2d70e57bd\n20bc1ce03f5996bf9ee02475d7f98585\n2d96d4929d945740b1e23c7675c49239\nbb00ad069df73df5d1f943907d4f35fc\n31b4349e405e9157f927eef536ae57f1\n9e2cb89de5564d7c1dc5f68d8d7e8ab0\nb738d1a4caaf4dcb9cd431573238602d\n95eb78897f03652eaaf42e97665fa72\n9b923ffa07f51fab2032a1fc189d2617\nbf6c171ab896774d2f95e2a1e9997b85\n6797d37aae0e1d4339b483f6ce8789c\ndc3fba5ae5e86e62416e6e65da17ce54\nf62766dc071eb88472f944a50941537\n5ca0a56bcc0d469535836c728d324152\n8c81742da70c5abba7574b4673f4d777\n1c4192bcee62e018a4207c8c70da88f1\n3429a5b0d0497316ce44dc01dba1e174\n7e725fcf5f56b74bdfef331c9e51db71\n3c3c0da7a2581f20490ad276cd2af3a4\n438b2dcdbd25a93dea65c47b660136e7\n14922c38b2cbfce6fa31c88352968918\n6962e8f899bf60393d9c503e95bc363\n78f387d6eee94759db6f3ca49e992ad8\nffa875f5e2242d62d13de1e342854aa\n40eb3b0b1b43f8cdd0a96520c31993ad\ne42f2707bec24e028bfc6c6704f4dffd\nfc9f18e509b363fcac7bed72580dc30f\n3bcf1f68540a478de2680d1a8f76531\ncfa43d56d70e530160dc76a524f85955\nfb50672ad3f7b196cae684aee7caa8d9\nba3120844f785a1430730ba8faffbad9\n97610f0edc786956d5cc62720ec8273c\n2d3cb79ce06eba3c7550d396f1a3a8e1\n5807109a9db7124e894dec385705c4bd\nd3b715e7d98bfe98658d908a2254f194\n18e73a715023714691829b477862aff6\na9ac09540c655b08d0bdd07d0170f389\n2aeebc06bc97ac054287bb3d3a4847fb\n91c3c63dddd49d3a5271513b292108db\n8c68ea99b5de38d3a6d7a9f3c5f7bb41\nb5feedcaea797add4830ebf7106a333e\n5aa08289fc85d4d2ee51e40b76ccdf20\nb77556086eea0ab181187d9890753294\n3e760133301353a147cddb7c026e92eb\n4d6a3cb51ac2144dd47d15ec8813fdaa\na5029c18a50d0e4be7c7920f6a65a54d\n84a354fd068a410d40719bb3f7e29ad5\n743992f3e73c7e258ba8ff316aec8d3d\ndb77ba0cf616e2908369c37b40e82efa\n7494fb1b493b36db2b3f122bf827792d\n26d22dde8b0bf6a345891653421dc140\nab1d67b6f09b35424ea2d70ab68cd1d2\ndc49259a117af8f1d200faae04ce3f8\n8b0e0e3fdf70192e484776fb236aef2e\n251160ca48f91de7ad5067eac75a07f7\n77b60e760e8186bfee18bc48b60b36b7\n209e7d26bf9421cc9959d6de6fec7ffb\n5a550763e7705e532ea98d69e91ba870\n7c653a77d59fbfbd84d52b3f4a5fb1fb\nc25167c0af7517778cbb8bac2032149c\n689ce3419913a1c5ad5067eac75a07f7\n56cee7545143c9b67bcb070cc655f13a\nf992b2e0e44987698cb5d9909aeb1309\ned5f0875b3615861a6c03a53cf0a14c9\nd7b56f61904aca6b7422d2e1b1d40882\n980b85a3109e66562bbf333b6ea7b79f\n7c29fac52d4a061140b4c5428883e585\n34da9450728ca9fee0be4360cd00cfc\n9b4acfe0ed67b32a63848853b5b7618f\n1b739cf713702b2146f41dc2aaef556b\nf7f5cb907c50a8791f66341aa9abe5e0\nc900e6f4dfefafbae06f10e4878a855d\n4da91eb1adb9e960ad5067eac75a07f7\n3491a4102095b1e87ff6ace05b36a5\n5ef5685e19c5b253674ce64e4bf77aec\n608ea98ce4a80a61aed393947b9cb125\n765d6e5ebce3fe25aa11adad6b2a69c\ne2dac2205ed98fad5067eac75a07f7\nb34afa23c47c80db7422d2e1b1d40882\n641affca2294fe1879368d1198f406e7\n5de212ea4d57b20b526934092c2c4777\nb9dae236a2dc3476ffd5817f210f277d\n19d202ccdbc617d8eed6cfa9fc6d794c\n1c57228e08cdd81ea375e397f0227097\n12ecd8ff5fee05c68cbb8bac2032149c\n3d4a592876d60a3c0f9df0cafd74e5c\n46bfac85035dc6f0382c5a0f87d73d23\nb52f6dd58875030ead5067eac75a07f7\n283e5cbc29b92fcc8cbb8bac2032149c\n45dee2774ca0527c9f8c3d2002c77ddb\neb097732d3f31469aa11adad6b2a69c\nb69722ee8e35829feb20d49510853b52\na91ee72daa437343d1f4e3beb8257c5a\n934f8fd5d11af1e6e75232ab5942fa9\n912c044ef5e129522c98a1adaac88b94\n60fbc4c64d6032337af2ac6660aa6669\n71115e3a391785be853acd6c98b3fb18\n5e0b6969f252cee2b355cfc2bfa121d\ne7f1a77130bceb8d8ec45320afaa5d0a\n1d3d621e02b8a6edc6fcb6f3205734\nadb934d3f4ed9dce22cec5ca16c50ce\nc9da930b808c18d0923ef79fcb120ce8\nd65624cccd27e85ce8f3ad90cf010c5a\n5c1d815561a7725496c29359f424ce25\n3b45bea7b1b2ab6a20f002682bf71108\nea5f31892496ab5457c6852b34adaf61\n2555c9df5fa919692250bf58700b4d8f\ncdb13917ddd5fec6f712b42a5a217e5e\n11f2882ca78cd85c9c75eb4326997fae\n824e0f5fd086565a4eee3420590dc822\n4058207a9467712966a503e0f1ab5917\n608f7cd5e647e4a4e8258fa1af480210\n4da850645da27913a82a6374374c9dbf\n4ec8d6b5c59f656359357de4ba356705\nb69df94b39931f196c8336429b11e233\n34e260786b78eef475e2a70bd3d8ac6f\n3e0fb214c130556aea3f94b6bb1b2ed6\n9004a7d87a62e40111310cfb881ab9a6\nfcbc0127388b446b7d6b442f66caef56\nf4f000158796b9593002ed4dcf002f44\n7207fb41b7f9a0669223fc014b68160f\n34434ee1d6b154f8252b40995a250bde\n913d774c845a0d7edc889d1ef9591d24\n62d51d3d505aec1e5ca3dca3292dd1f\n214e52abf34b4e18ab96a46a16fcc9c\n39a0cbf3e4b34ca44499f83a01888ef1\n54d17ad404678720d0a96520c31993ad\nf9d9ef770e04c5772b3242897b354191\n64aa142f104b99379a535d0a5590e4c0\nc15aaf668a80aad9ee5912a5f7e89744\n6c95f72153478de8b162cef80a91798d\n9477f34f16c650f7cac9ba4482ce0612\n6da4b164828c371824507e0767ffba7\n992c967b4b1535f5f5346848b67e4cad\n679f9dd2f3d8c52e2de61958ac6aebbc\n7f53246b6aa7fd551a44da2424b9c700\n8024f88aa0136725804722305621f918\n9a1312e39df01dc1d44683cb4ca416\ncdc9ea006d761feb8c56c26d10173bf7\nb11ab64f79e13e1b714473735ef35ab\n7bbb0921945cb5fb45e2a4e5729b970d\na9206327ea5b37d75fb62d44a047792d\ne696a670af11d5431234386b1304ec62\n279351131d06222cbe9bca6d7b2e5b3\n4c907aab76195556d728db1e986e0b74\n2b6ce4f0d57ada2ce6a02cdde4c23286\n12e1f83d5fb0af107d0cdce142e729b2\n33a3aaf17cb7d0ea351aa299020a0e0c\n3f9c84917d92506f3bfb18d76f33685f\n429d850ac1621fc176dc93c8128c2c20\n335bbef681cee5b46b3f6cce098c8918\n836ddcae13c81d88a58a5ecb2008fd42\n7980d0e22c197dfa5e7e52a559b573fd\n99316252e1dfbde1d810b14a81e12eca\n4a72468fa13c36cd2bcc0cde35567dc0\n1b7cabb894adef68939793f922933b6b\n6c46312d5a6b81a59e4965f0106e00d9\n3aebb428c4f378174078a3e6d5ee40f4\nd679b6e72d6c0ead391e4d6c585a697a\n1c76a8a55699eb9694605bb30ae47fb2\ne03cdcb83404b3c3951c1fffab4f5807\ne0e00d2012c4306117fcdb9c02a9e950\nc5143483b413b4ed6991c1a663897b1e\ne0f6e43ec7c44cf0f60d4dd27a88e505\n6c413dd8728bc004d22730b0728b2fc9\n83464126ed62ef54707cdefe012d0353\na757f06addc26f314b3c42e318f3affc\ne2cb95f03f5dedf9f198b94f669bca91\n27d846b100a1be0535836c728d324152\ne35d752ecf4e205ab40f0ac0fb9a650d\ne80016d5886fced69f8f9f2bcc40c84c\nff404f70bb77a5a876e4a31295619fa6\n7b22287c9a2ad418b9deee229eae6efa\n25775a3ee25c6503dddd8ce1cda8c6d9\nae2a8d605b8c4090acc95948d4efa8e6\n2c14b0b718a1f3765828f54ccfceb8a8\na15a936f2949d518a6fee8e2140acec9\n5b3b19203b5da49c310af74324aae27f\n40604fdd535fd2b2e393e26dcd2928e3\n34c0ef1a944d5443e2f1733877da1c63\n5239e7c9a83e99762b6168eeac2194de\ne339e8b8f1bd5eb9626d7e3d07da8352\n9a60b3b87a457c73f522eecffc49e6a3\n4068a0e8533230e4ed8cfda52671df0b\n782a5262c3d349e3c3bd24f986301745\nfece36426ea77b92a7bfc1660a1e18f0\n24942a3b98d1bcb6a570c6c691c987a8\n85d5a731ea4865c1e258f9dd9d42f6c9\nbd3dddce162f59ead92dd8f41946f1b2\nf6e14672ef1ca30130aad3a2f98e3b63\n8ad152454e2f1663cd701e9c04d3cf7a\nb1850a02aafbca6aba18ade30e563d37\ndc0e0beba650c0b78bc6f322a9608b07\n7d6102f23f51764d2ed4a731510fb423\n8891a73ddf73656be4ef113421a70a46\n80f036ce585b1ef648ff063e62e02115\n5649e478e7ef25c4490ad276cd2af3a4\nc793946b036d1a9caa53a70b14c57bcb\ne74841627e110e98d9de0de5dc66ab1\n6f4c33b5becd1f3920768660cf080d12\n9c1ff252b47f13055764829adf9a789d\ne9871fd4c45b34148737eef0436997\n855c6cc99578afda6a5ef4b501708f3\n56c627c74e9c78c65ed9439580e8c076\n5835aec0e4aacb278305420c03f867ef\necf9321f6fd98688f88f925b568f2dfa\n8334a19ba0063c7faac58be63ab4013b\ndf7b982169a2d36fa8d8da6771a88b8f\nba6909f6263ff92f72b785f16db8dbf3\nbd78847e636133c179c8c70bc853d3a7\n2f3557438a95798fb76e29c9c43bc7aa\n169deb7aa6472eef2d26358520dd8de1\n731b2115d66fc850999b33727fe6db14\nd67265ea100ceb32ce11183544874734\na5c68fc026173a5671e2498adb56e791\n9ff56887e5f00cff412a0eaf6d0f1809\nf74b9b8412dd152f6558f5c8c0d2d888\na927b0088531dec823500a5b036df62e\n905628a74c7cec233a574a2e3bc99a1\nf2ac49e7de8898d6782db34fbe677487\n32ddda038bd1bc15c3bd24f986301745\nd1525a08cc96beeec786af79f5203d8e\nca77f1d8d0151975901e3cd572b4fe52\nfd5c4da3a081cf115ec69be1b6d2571\nb03bb928a8842c7ab748e35bbe935720\nc2679e65b9d5e95de6fd255f2d77a585\nedb7dfd7fe00c08e25c8be43ebcd1add\n7d9073ffce209233865f763ab6e6778a\ne7655dfef36db9908c31ab4d97f0b44\n6d9be8619f48e3dad096bf408b606360\ndd363031a195991631b72d9d4e0e505a\naa96fdfe679adefb203eb08a0c3b4355\nb5168a95f760cbefa22728b9e8cfa4dd\n69a3e5ea90d66d2efd72380f3800ba4b\nfccd86d2aa3c565334aff3344c00890c\nf9e126d15c5761b29af4053b8815b239\n5a2f605200b4e4d5eb6d17f913d54c76\n49e0fb5a2318e4c1b0a15036380e635e\nda8ec638b64227066d767b6d0313d349\na387e9c10bce09c85828f54ccfceb8a8\n2368a815da89faf940b559ef47048b86\n6dee2382e2c710fcdb266b832300e6da\n53e06d7506fa12f93fc9a2b2d10317e7\n5555cf0638339605f0fb3e3d2a0d34c9\n32160b2dd0d1c8ab507243968c1db8f3\n9aa0b98bdeafacede76bc197b3a3ffc0\n61b80232d3aa0a409ccce4c6d5bb195f\n68ae56275d366ed6cea003eff0268278\n74246960cafebda4ded4c23d05709216\n48045af90c7959e5738e43095496b061\nc5838a6cff5a0163a91116f8fe859a4b\n96ef5cd61c49b9ebdd50ab7b10e346f\n8db8568a21645abb2964e7c9f80f3597\n3f9200756c2e3aecd028c2e338a88f09\n14e9f568cd3309dd75becd8a4c3f1866\nd70bb0c4015f6e10df2b21995cbbbc4f\na78bd5277a6c03cdd3726fd70b88cb7c\n1fa966f9c1d9b994d2ae2f26e86f819c\n2c08886cba42af25f1acf3f2c6f9e1eb\n590128c134fd2fb9c1535160ddca1c61\n50fb47768cfdada29f2349486c570dd4\nce4e54dbb99b5bce98a96123d0d6b0d8\nedb32ed999f08ed4a12cedd896805aef\nd60a87c721416783ec7a87c695ada295\nfe2aee5ff66e4fe8d5f95109c85d2816\n9b02cf9719863b8e9e990e1185980a77\n14d1d6227d6e111049afcf135d820991\nf1c64d90ecf5212fac0d0a08bc077486\n2060a7a8bc18a63b1cf96a5dc33e37f1\n4b39fda4ce751bdaf51f77a6d7299806\na59b2884db9574cd1a72c98fc69f22ac\ne0f8fc5dc186a597a636371b2023a251\n20bb1a34891588c1cce90f0d61ed7a70\n68a6c680b48dbed292a0bc4ecc8b2ed9\na26046fbf2d7368cd6e1954365b10b52\n462e8745e766ed9fd4d8765e3910f617\n30f06495dec55016bde93a1daa41f517\necdcc12d56c119c5a67f11eba80d4fdd\n75e9e4fd6c512c92966130541a711692\n2d0f4d977d61aecf89c33ded8af67808\n99fede796e56b4b220eb25a3a058bd49\n4b2a7beb13fbe74296610c8d5ae64f96\n34df750af2640f576d616bfd695eec80\n7d040b260fae0807a2d3cfe77a14b5f4\ne3e1d9e88b396e6b8cae28243a4ae130\n377d6044219ec8b3063f9bdb41a65e3\nde1d044910991a072d184f71ff3205f5\n37f1637edfc6ca5ef51f77a6d7299806\ncfe4e4fb603b99c77843fb4efdc19510\n70e603b83e06f7258de9f116e0231954\n45122ce45ad6bbc0668ae11a7db5e82a\n742524cb455a050f246c3d7aafc9b697\n78420814bee5ad17f2cf6a9bef44d625\n263e097a29c520c717b431cae0dd70ed\na9747a8f0c31b46188793ca7bd0e6fb0\n8502520f19688aaee12186cc8c5022c7\n58160ac529c37aef1f0f01a76c5ff040\na6ffc5d46a146796ac4c0903ae810430\n19d5525d3d65063bb664d1885442ba70\nb87c155d6c95c768668ae11a7db5e82a\n794395f3e5e2d4f617b431cae0dd70ed\ncc6283a5bcd5452360d9b527752ac99f\n8374ea1c4c032ec8488ef35e8e3ee601\ndc589e1223aaa5e65cf2470a6eb9a24d\n8e66fc32d49732c4eff311703ed2e9b\n188ce43d9c8caabc5213169cc9897a9d\n3ebb9bfa2afb2f8c9db5a91069a42c6a\n3e08106901d3c9157145387788e4fc89\n4fb3b350f197a7e64e045e9030a39002\n9dd80e356880c9deaf268f6180933aa3\n54a0067eb07dad5ad1a59a9e9888beb8\n812f86b9e1de03419c0ca344f487323e\n9cf9313fcb038801815b2b467e8e2eac\n9665f677dff2405ef51f77a6d7299806\n8141866ff4665b814038d588fd1342f\n13cdbfd56085fc3af51f77a6d7299806\nb6afecd780203c81b9a51c308250e422\ne857e87654e3807e201a7d6fe269f8b8\n44d6debd1db8c2e57fb0dc5c3ba15465\n6b5cfd0de413ce8841b160b9adc112fd\n9d17b91f7f301cfc6655d494d4092078\n99f9eac72f5b4df04d31637b346f5216\n881756250fe9a7fa5fceaa39a8353bde\ndc0e4a9d3bb0397d5e994da5ba753c34\nf2e1735aa2cba97222fbb0d1d627b825\n3ffe22ce4ede7a187886a3eca4dfc4ab\n4be9eedfb4071f919f9a4711823598a\n660deb63defcf872e76bc197b3a3ffc0\n3edc519c38938ee8d42b9650f19dd425\nbf2a153556edcdc96325dd85752d9221\nf7921f51bcf7e93b24a15e3e5e0014a0\na4dbf0f4fef1c36cf199233c9f2ce2ce\n23b43da125fa4dbd755c957ccb0117e2\n94ef4f9589a1577e123691872d565e10\n9f5cd9e55f0b4c42ba128419b7cd4010\n57362886500b303632a11457e23fe120\nd623665165dc5af0f51f77a6d7299806\nf27eba536ca8d428eb1f243bab39fb29\nff212e47775ea7fe6a3056c8cad72d81\nfe4bcffc64838402684b7bc3f8a9aa55\nc0ac5dea15f961c9e76bc197b3a3ffc0\n64b2121e41762bd47954eb05bbab463f\na713adfd7d82df5bebf5869836d37497\ne501ac06884534b5d5f962f170e40e8e\n8a64395b321a34161191025061735ea3\n89b23586ad3af3d6252e0775cff1c394\n9f3d4541c2754cc2a516ad65be981ae\nf878dcc6987a7a8a4719088c8e42c6ab\n21a5b3d29075564e2314deb821327685\n186e501aa015cd367f768772b7a990fa\n53bc187c97cc02adda5d247a475c516d\n15ebb1e7e6663cbfa242b893d7c243a\ne702f89ce87a0b6579368d1198f406e7\n5668d49d776c954c5963245f0923337f\nd7dbf6005f2e8fccf6ef7bb1183682c\n2a2d4bc0c2ad2e7e332e588d1e0957a7\n2c7817c16702e57188e7efbf7ff736b7\n246b26ca99193386668ae11a7db5e82a\nc76d9d9756b8bbf2a86b2405ab6de30d\ncc82b660e39ee47df287722009141c0e\n9ffffefc4b5a04ec49ed2275c90a1298\naf0206602e75c8bbdc6a693174c70feb\nbe7a1bb508905459f51f77a6d7299806\nf27b818a99bf195f76e9713f57a5fcb6\na34afa94c100e8e2a45e8d2f28a9ea98\n4c5ac5335e50ba35b385698e6487d3bb\nfbdd516e90ad48902872e9c941f7c819\nb6a24109a5076d4ba5a296b0eec81c96\nf616f5c2068eebaf6aa35752fcfa44c0\n80b2eb0e500bca46f3412e3273fc1682\n2ffcf26e3cff97ee40b4c5428883e585\n73a870e530c3a9993c77a85180cab6b6\n372a6ff9847c899bfdb026c58bb97e2e\nfb7af067384d120b46ebf4f1147c3f0f\nd443a71b6cd1b4b0d0e90ab6c6492cb4\nd108dd323ed295991b17743c18fb63dc\n2cec40de07b468661aa47689117a61e1\n208903274bfe69cdc5d1c45cadcaa3eb\n5485834dbd8cd031c963bc72ef3a8742\nf619501cf26b4d533b7f931c53ba66d8\ne9d6ce5bdae4462aa187e6150daf1a0\n33bcda05749d01bc4b3c42e318f3affc\n1e31a474b6867a7dee32a260ef9debf1\nb1384cf261fa99a03002761e7a3ba3bd\n385e55a7d0e528d312fbf3eb7146682b\nbedbd91db5d280ccfebad4f49b26ec52\n54bc0f4268150dfc616626762e4bb71d\n760f49288c2691b5b4d1176ea5549480\n7e27606e126c023d5dd94d7a8cf82d08\nb3eb7f278d595307d2b12aa6a0f050b3\n74f985d5bde29b01dec11b4972c4b3e6\ndb247fa7a6d2ae45aff7c08b060f5ed6\n8aab7aa2fed02c6f3de1a463b8ceba0c\n16dd49ad350321e678996b707ffa04f5\n9e58589d9f3dc4f24b3c42e318f3affc\n580e48297791fb394e684eb336479e2c\n2a8a8ffd2ef41cef20768660cf080d12\na3d155f1ab4731a515dd7d7985e749c1\nf9ed6c993f7d65e2e5f83d0df19ff934\n50b8f401a5e2f2f431358207d42bcb21\n6f576d151a46bdefd5cb6d178687b980\nb60145d7ace5fb53aa7cb30470f3273c\n2b8961b3c1deaab8cba466d56886cb4f\n797ecd23342e744bbff15b656f256f05\n7aefbd0f95e0e9653b09cd02500a89ae\n785e93009913379a79f7c71429a96cf8\n765786fb271e394a204812d6a020ec9b\nddeb44a5621da142aa29e9f0529e8ef7\ne34d1be103e9d88145a1bc3ecd3d162f\n48ce2cbc14f391e7d7262b1b986920e7\nc5b224f6fcdbd7e655f46d55537192b6\n647692d3858790a1f1783a44a88d6274\n452ee9c2477e471b1aed2875db0a8711\n90f7b8cd8e41321c53315facdf531a34\nb8ec9bd6096a14488de42fc1392c2139\n4b8c1a30a11197a831777a3afe490d7\n42bb37f87a9a758ad43fe0060c5249d9\nb079b8fbb6199f0eef53a66b4f397367\n2145b7d411f1cf91bc4e0550f830290\nf6c5bf92d03a93e247839bae1bc65257\nd1b4a4f43818c34e490ad276cd2af3a4\ne9546947de34dde213a5873d239ac557\n1161ca9bbd655ca17b431cae0dd70ed\nbd9257f538038fac2d9fe390e23fd20f\ndf39a8c8b7ce47a25938488ff499d96a\n31551fca6e4c5d8e80ab58c152cb7c44\nf0b044c592e19f3d8dab161b48d8b921\n86e6caacc1e4ddb5e762cf5917cef4ef\nd20e0f359f37f7f5648b060eabbed82f\n200e41f83af78ee240add2170313bb0\n7a22339a0b7dd26aee088de33038f12a\n93c2221188b4948f79b2fbab4d71b78e\nfbf9b1f026a86d59eb5bc459c7142a3\nd820b240ee17047fac51268fdb437a9e\nc93685c8343e995d760858b697ef756f\nce1bfb999b211d423825a5bc524f67c9\nf37310698d465cf8c8bd09537246ca3a\nd6c68f9d1844c3bfcb002c1e2b5fc68b\n3adaf5ec2c9fa6fef7248d9dbed7a7b8\nbc6aee7279114dff428a5246ba7de3fc\n2c06e66c7a66878c3bd24f986301745\na3474b03dad787de8c5fe7d2e262dff3\nf87ef5a5c13e7b29d810b14a81e12eca\nbaaa6943a8adda4173705bc397297991\n6f630e2080aa9f10e45ef4135c266a12\n60365049ca80d98b77e620d253d331c8\n46184eb6f03e8d2afebad4f49b26ec52\n88e73431030e8494cc0436ebbd73343e\n59f4f7f1f7cfd0f3831ae64559c8e0b3\n2c72d9ccd9399fe8968731dfb1dc1f13\ncc53e7b618721da04b0c98bb5e7fbdd9\nb24d5f0395eb987e185574a5e2255bb6\n8673b121b420cc0ca23949c21eddef76\n6a9c7e9f19cd3583be92df29bb41e437\n476e60bceae151e768f8796d69d0c486\neb66e5ca3eeddee87fc7604ac712879d\nc1fab1be028d2d1192d39b162a300de1\n82130114fee63442f51f77a6d7299806\nb2564957632c596c2ebeb1e6a8111f53\nf7d727fce5ee3007984a3b60f45af7f\n4f3e1e670753c96ac955e5ed03ef3a2f\nd1ecfd2ca0baa6ad47efcaa87d68903f\n1bd555bd6f08c5f4f90f8519e58d5382\n7aadbba28333e40a77e6105b101d7310\nf7bdfe5af3b26d1b5f06dd739e88c77f\nd5f5388411866fcd6f349f21cf5447af\n96fa9d34fcb17ff21fc43d5b32fa230f\nd821813cdad2ca93183128a5e9c4cbee\n393d3977af188cd7798c257640d6867\n81c8ec54ab47bb86b04cb542e2c50eb4\n460bc82ba3a41a4f492489969eb2d929\n3aadad80a0e8d21620768660cf080d12\n9f9d8c3acc3d33e628c187222995b2b5\n86fcaf63c9e6542c858699aaad4acee4\na3a701905091355e96aaf875e27b02c9\nc82910190bf76ef216efc8582f9e6d60\ne53057e1a9f6f135b97ad864945165a1\n87a30f02d938047987b390f69ff83fb2\n8281936e9123cbbcaf95ae40867329f\n198551bcb90f2fd5ef40cf5f2b241770\n8acbca7ddfd03dc85d009c98a5b96836\nb6457c273fca48f8b5b7c35a8e7396f2\n2a48b2cc3a5b7da6833b2489037ae4d9\n43bc8b8b33811a2a54afac63dc6bafa8\nbf45b5c2c9dd8fa9fa24672a35ae8bb\nbcd046749f03aaab714531f0291497fd\n87d5a94d81a299401877c7666e1dab40\n99f50ca8fe9b541792ed85b04a73eb29\n673540ea8227449d1dbe3e8cd87b5167\n49672809018ebc55224dbcbd6815e727\nfbd83a2ac7a5dc52e915f7ff1872d16a\n8e009300d7671a33b2a5818319136c5b\nfcc5717aca6a3be188bda5f1df0be8\n5df14a5997ca80fee45ef4135c266a12\n7436f91df61e7d5bc10555abb2efb430\nba8378a73db72f51febad4f49b26ec52\nb088212c18a00fa0c3bd24f986301745\n92a05eba553fd1247674a65b52217c22\nb41f2b0ec15892e3153afb488ead2325\nf27a46a8dce3b811707cdefe012d0353\ndbf4aeb1d6c8b77a30bbd4cddd04c77b\n9daf7804f32079f7b1973049b9d84541\nadc763e089e2535fdd155b45c76af694\n62d18b3f3c520ddb37251258858a7a58\n50505520611014b07298f1711edd69a0\n7c71421a06cee4eb85718c281d7fdf61\n575a8eca414c69f67bcb070cc655f13a\n4333e8cd288f47c4e0c9d6065dbbbe16\n5370b493b077fdd39ccda3ab71692a66\nb8fb0a7e5d59693780489003722bd0ee\nf36f3912a86717146b82340329d7ca26\n322e8aaa889e25720768660cf080d12\n482fad8b18008ff8c6540fe6bc16d6f\n5510ca90cc08d0c4e825832d1f6b3273\n7093cec0f1eba67e11f3f1bdf34ac930\nf5d97731def4d875f51f77a6d7299806\nb0ee655c0c84e70be03211c8d614b25a\n61ae29ce7a0d71bc57f15fc9385a8a01\nc850233cd5ebd8a49725e3ec23636256\n52ed857e6f9965886b429fe8da4d4ec5\n332ce2f8d9c3927dffb8fce670bd5738\n462c1b0c6f14f168c3bd24f986301745\n609f064ea48440645d8fcbc36a5e8c00\n99f15c63712d9fbe84868d3618d73011\nac2f8d240e2fd36ce2acfd5544378c96\n4bf64ea69b9e7c85cf004563556ddb36\n32a7a2b6974a2e5ccd79ad97258166cb\nebfe93f04bd040ced98bf80379cd1d6\n4788fa0af36e94ea38c2e72e63f5bbba\nae5631ecb6ed463f5ad83814029a1a10\n3622046c1b2266a0fad46760e869d184\ncb631d4a3bdfb02d2c58f3c20d9d1840\n505a99351f70664238b87428c6845ef9\n799a262e7eeacf2a593ebeeedbff73b\nf4b5313a0bc95a48da7c128b58fc7554\n1408914f71c66166febad4f49b26ec52\nfe4984dbd32e69eca4ba22b64b537bba\n2bc58f346be3570ed739a99f2688300e\n8cb6234ed889390df198b94f669bca91\nadf9117f3cba509cb4e3935c6cee4b35\n4f3b404cc30d2306b96ac7572d4197cf\n2d7c48df632589a7ad5067eac75a07f7\nfb1e39667d83506a41dea5e6084523ee\n87fd23051b01997418885412f2b0a4f7\n6c322cbf532f87337c577fdb71c158\n74a73d264fb01b188ad2a89943bab6f3\nbba7bc453203fbc6e39344961f657bcc\na6543278e970aa7a396d452ec85b027e\n1a8a796da899cb2c4d672fe014b9000e\nde96be0a27fe1610d40c07d3c15cc681\n788af6bc08bbe51fd9a828fb989f49a0\n1613e86311fd7601c103f0a69924253f\nadfec21e21737eeeb000f20a5153622c\nbce971ee4e980b77e3f7a74e12a274ef\nf7e7473775d8c3f3f51fa0238791f5dc\n20d23be3b5180ea9e51ca3f3e83d9132\n259775bd1af2954e30bbd4cddd04c77b\n3af91fd634a5ba759c0ca344f487323e\n2f9c9357bfb89ac1d38913e96bbf2a5d\n1aed00532eb4311049ba300375be3b4\nfd57354b70d416386086aaeef17e8c87\nd92354e060c98854b0ffd7a60ee2298f\n18d29165fc26330467903707764646db\ncd762ebd8c8ab61361a38c5058945a3a\na78e8ad852e8d3e3cbb2a1d23fae41be\na7f98e26ccb27f0b52225a4689f7f600\n2df0d24befaef397549f05ce44760eca\nfefd88656d9d0d2d82e6c3a4e742651d\n7ad4285694233688105ea47d266f5adb\n853c3913ba95570ba2651abaf391628e\n18a9c13c3999e9c186abe5555a3b447d\n54dc32618be1ff18b3c0ea2ca7165b1c\n6a5c816eca38f130c6536c7253813c8f\n35b005d11a25b25581faebbdea6bd9be\nfc731e1489031acbe02c30c9027468fb\nec16de40e8415006855931d119219022\nefd67be7d7fff02d7b9a616d4541ada8\n597b0d10535c25d538f21a3304cc4bdc\n1f267da10062622092018116c595a95d\nb94ea1b7a715f5052b151d8b52c53b90\n4f79ef44a08bc2ff4a60c1a189046dd1\n2a88f66d5e09e502581fd77200548509\nb6d644abd3a2a54c904f770b8a17d30a\na04a45fc865cb61dbfb7d42898b82ecd\nf5fa9f592d891083996915f7802ec40\ncfefed4429defd86febdb1f263373824\nac864eb8b8a084756ddf5c10cced4ccf\na6f19d6f3a6b3cce35c6c07cec6934c5\n442546c2af24d782d197f67767b32741\n7cf3167e5a469fcb4c7384dbb75cab0d\n56210576a4afb9cf88d13d4705fa91f\nb267c88cc2a3cdbf48d189f942cedc62\n4a519fb8089dc7d248eaa510713cb074\nce2d3e0b58bb1244700ade95b2f08044\n8a6e06fbf74e811667d24b304b35bdf4\n5f8764573a6f8321c1a89c6b124f2475\n87ca3e8e37367054dcabaa2ad147fa73\n6d2783fa677cdfdc14e775cfdf4a76ca\nf8f22279842d9b8bfc6d85675a0e869f\na63d31d92b6bee14febad4f49b26ec52\n9f2dbddee73c639ecea003eff0268278\nec565aa9b442ac36ae6afb0c7fa710a4\n28e1ba582708bb21b4c161851ed2b4e4\ne86ddb9617b8c44758b3fd27263469a1\n9f1d1d13f42bd2728490246570868c8d\nb7621e8afb9e7b18890992ddacc04113\n6f934779da945914bccaad2aa3926367\nb8425a23b0525ccf004563556ddb36\n33ef80eb8ebf4207fe7e23d061690240\n8483abf40b0b4a65d009c98a5b96836\n62a0d0647476f5e5f8ece882ca124c40\n839af4cf455c049347839bae1bc65257\ndb5f1c46d8af7d17db073a02eddafbe6\n3f63afde3842a73affccbd0b169a39\na95176f3c7a102acdfb197c00c97d72b\nae0ed75bbd4c5a74b7c9606efbb8bb3d\n3b874fc5f84eff21492d9da2668ec34c\nac2ee1eebd5f2e335c8a49a27f01fd12\n31c278a2aa2a490241fe42b98fee4b0b\n407276907088c8c9f51f77a6d7299806\nef62dad7755794a47558b47f7ba0b0c\n3fa5372c0ff38e447135e387a71e9d31\nb9695f4e1589c6bde12186cc8c5022c7\n21691795da12fdc7bc95db5d49def9cc\n335c2e4c3991768218ed1f44219ab7b1\nfa0580ea9b8940dfef1b7984700142ff\n23937a360c840bbd2b70eac6546e93fd\ne7b41a39388925c364f6d058992c3399\n1480684381add1e7fff16555386d173d\n3d8feac23ebc7b5dc6a19173dfae14a8\nbc4a64f68f9cfb0733286e10d1a7be57\nce8fc9bf9c9fe3ce99e434a62f00f7de\n82346c794fd098f77a1f550045b16384\n53433c9845f6b53955034479f8a160c7\nde4fb391ab81be927ff6ace05b36a5\n94a53bc306d106708bc6f322a9608b07\nff127b5ab0e36faec3bec646284d5a6a\nf38a18709e55e4647ee217c21e683487\n8aeb236e281bd5a4f51f77a6d7299806\ne42e2c616f8c38619ccce4c6d5bb195f\n1eece111c9bc0a126172e4028919692e\ne96108e514142d13b3cf15c77de45986\n850564e1e8587f35617092ec6e36103f\ndba5223072bb092f76ff40a3c0e00e06\nf7a0f1e7e03fba8c9628f611995a13ab\n689cf8174210c2701933ffef19678834\nc5178a8a0da618a25d78ff7fb413274d\nfaa36ee5b5a296ff7e66b3e5c11f24d4\n5767cd2fa0c64c92a0263d691f98a9af\ned963e8e0589eaa5490ad276cd2af3a4\n17b444c072a6a3ec76e9713f57a5fcb6\n6449378cb78f081b2369c46027bce7af\nb254462a49aa73df51f77a6d7299806\nb9a0e6854bfab1682db9fca4b68095\nf9f9d2fda27c310b266b42a2f1bdd7cf\n993ce4314e32140f38454b411e0edc29\n8797234d59d03951bcc69f56814897a1\n3e0f8c39a72f3c91200ad3f421b6c3d0\nf3f6e3dc8c3b0eaf97b6421ec010dd0d\ne8afe4f07f221087620018391309f97\n949143f5e3b772a7986b72a93898270f\nb48d333e39b8aa1c663191fd557d3a61\nce4fde399bd5f6f6784a45ea6efa1d77\n238a974ab3fd46e0ba7b07dcdf3d00b4\n7da19b39d092fc8e33b12e4baae47737\n428279529d61b45260ddf36bc44130c3\n9171bc27d62095bfe82a8550427833e4\n6def73c13a40922d9274d508495753d2\nc1180df0a7ad92afad5067eac75a07f7\ne089dc57993ffcc72fd098ed2128156\nf00992135ebf50a9339797c21e8801b1\ne21392ebcec0e7cb1a3a884dfddd1bde\n4b8e0b22664904c1c8b8dbae22c1c086\n89478118c3618b353e615cf0ba033d62\nea093e60ddd1c7467afee304cce81d6f\n758df6055459cdf6cf58a1b90d479c9\n945565e4684886ea9db6feaa7eb1b013\ncdf0a34dc3504e40643beaf431c0975a\nb14c4d5783a339609fd4171283f33ca8\n6a53e24442be0a9598f91bb06151de8f\ne2a56bcdb18d820047ad57fbec8be0bc\n9d547457c4404412635469b95109803c\nd51c7bcf851a368f90193fd5f5187893\n3c4c8e7ebdb95c2089a886870891682e\n5441f511736c03f9738e43095496b061\n5562593c6448e4856402b8f491cd92c7\na75a5570ba1571447e1dc03b595bd36c\ncbef425aa02873c0f51f77a6d7299806\nedf4152aa274a8ec78fe949fc1419876\nadf250aa1c9e0f9567232766992241d\n4264ba880cb763d37342f7d672371a5e\nd819fc4d86af592f7394c9d8807c7bdd\n1a442af63ca5159d86478bfcc70b1bc5\n3959856509e65a18a36258eabc2b9c\ne046b02e2d5c5187fe38a836aa59c483\n5e14471dd0ac3e47765ee729adbdf968\n3b082e34a78a3c23100d4716c7fbfbed\n681ee7768f9fa9072c5d34a902e568f9\n6eb19c354c19e759d5883ca9b41ac387\n9d71f9424fc659e17a50afc9c93f8a50\n44a525e7793e37c5d340e35bb5304768\n4f38d59a7fc3010fd7483d79670cc91e\n2bb137095c73ef6fe45ef4135c266a12\n3bde1338423d06b4c4fc66bd9d1f7f00\n4231174a23bac5d354d30af857cfae06\nf6ec4343f78b94b42553cc33364504d5\nb14cec4ece246fb75b937c87a8810c08\n79e7911ce615b63078831722644c29c3\n8acbc1b934489d6fefe244bf6a6a9769\ne96bc1b7f02caf77eaf288f952624966\na145bba4e4409bcac905813b9803ef0d\nc36b95723ccd6f6da99d925f789b1cf1\n12df0535bb43633abdd9b7a602ec35ec\nbb1ff02f14d1cdd19ccce4c6d5bb195f\nc9a3680859a722a0858699aaad4acee4\nea37d7670bf3294e60a3b49d78923dc3\n8ad01793daeda43dbd71cb387c4297a8\na6c888f2d78e83075936c7265c890fef\nbf77a1c8a520eb6deb0fe7d6b5545a1a\ne52a290532a567aefa10901ed3f9da3\nae4507fa0f4c936a31055213877993a3\nb69087245c6ce1c57fc1f91f1396c600\n974cc395f9684d47c955e5ed03ef3a2f\ndb32d69c5b2c77ba51b5726fdf67f095\n5e68b3e485b9e033ab4d0308b2ec6512\n8b62f4352dca92f657c81a572b80bc7\ne9a38d17361a5f20af268f6180933aa3\n89942c8f3c2796a71e54ac67f0143e13\n6aae683be40c3a9610c2a68437007d6\nd30873e4da202806d42b9650f19dd425\nba03fd0b4b54655df51f77a6d7299806\n7e5b7032a9faef913c5e1addd9922bf2\n4c55e5b0eb04f854297c137c93a4b9a5\n1d90363feb72fada9cdecade71f5dca2\nced7d80d220dca01ce5b275ea2158e2\n363c9169b12de77e1d4c681138512bef\n15a6e8fae3343178b4c161851ed2b4e4\nf28874ee319d1e2dd3bd10ac60e54bc9\n1d98ebfb72120470283b00891f680579\n2148ddc7d6228861e4dd86e9188294f\n839334dd754c09e5b7ea82317702e856\nb66ea953531a8d78f0c92c2dfba3cdce\nab04df0d02dd6126c183308b9aafe2ca\n610ccbf900e1bf4aeb34db531a289b8e\nc9675e9b6358165f66ccbd11a6ef0f68\n5e83bcbf2cafd5663087f84b199fd297\nf49c7d43808b1033f91663a74ccd2338\n1692563658149377630047043c6a0c50\n1cb5ed66917df7b3615b3e12f53b391d\n1ba43964b343f6b6ddad726b9e01fa69\n4a41fa511183aa138cbb8bac2032149c\n88c833a60e220f2320ccbe1c34ca182d\n68b2ed56ad8d4e1896b84415a3f1393b\n57ee5654191b4265890992ddacc04113\n77f54df25e2d1bf99a1735fdc80135be\n72f0bf15522498993f10a8b8beb12d1\n9140c6a8599f28fbf27a87e2aac4fd31\n12936ff9bc1103944b3c42e318f3affc\n12ecbeacae03825ef211221ba01b03bb\nd03256544371f1eafa6e1fd63f4a1c35\n8d0390d8d66bf1cc30b07c64830a47f3\nc6591f825c72dc6553a2cae48abaea7d\n29def96b77d4cfe372f9a9353d57f9ef\n83433f0c0a3801942eca57a2fad76f58\ndfdef0c8739cdd0944b0115560181a7a\n92e742c940c11e60812e3ecbeaae3980\n9ffd670b6eb68ae8840e9c8d11bc8e80\n285857e7d12f1b74a4d2a71d4ca57f99\n636fb360173b08e788dcbe86402c7c15\n8a47668d3584eef1e4317813b39d4fe\nf10473382b623504d79b19c7c4f0e293\ncaa172578943812ec50fe5c30bda6ca4\nbc5fdc598162f85076c7054c38bb1311\n4a47ff44cd2f024635cf289fa8ad7115\n1aaaed47c3a77219f2b931201029bc76\n294d38860c334c4954a61dbdbc1ac262\n768e965bfe1f6141473f10e6caaeca56\nd312c70dfc7017e9c55161a63fbd109a\n75f2e71073707ffd9ed6e8a0d47c5a7a\na034755df11115a1a71c812e027f94d9\n7da66ff46ecb79e52225858d7500e21\n32761afb4b1eaf31810493eb9cc85e00\n165e579c965b215b43dbb6421d614c0d\na7809c62e26301e08850ff5e612b6198\n970e70ae46244887c35d3c5d3b1fcf7\n265851637a59eb2f882f822c83877cbc\n2b39330072a4d5c83825a5bc524f67c9\n51205a57beb69476fa4763675e844f9c\n78b4eb949311548236da5f8a6c22b2dd\nddbbe3651f274503c7f9b652b66aa35c\n8a385fd026d4efdc517376ab44a447e5\n79eb4b57cbd73e117e2e50070ddfd27c\n5fc0812f8673249aa6a7b6e78d8d5bcb\nb54d222311420195d9fad8aba2c312b7\naeb34b796044d26f2705f56670a32884\nb12b2f12db92ed70c48d90eef8384210\n13f7210d5d472518febad4f49b26ec52\nfe167899fda76d1e88dcbe86402c7c15\n4ff1ae700013a877ca6910e4922d61aa\n82b5a7823990ff0f48964aae007fabd0\nb40b97894f2c750bdbf8817a0e330a74\nd430b0c4136e87327e72463702194870\n23dffe55684018589030b5e29a228aff\n4fb40a85a2989785d5abaf84513415a2\nca22c129ee2ad8a1f0ca692121a428c5\n4cfe758f926fbdf2f51fa0238791f5dc\n426fbc6c365147fb6430c2c15987e4cd\n7cad0234edde1e90edd9ab1253e1a9c4\n2764d2783f999fd0214a15a5a42c49c0\n1d42f42755aa3a87b2644d7d4d7ea2c7\n3031461b84576d7d6a69760cb58e50e8\ncb71e1cf52531981593ebeeedbff73b\nb16567c16d0aca41532e8683617554c4\n3b8af4931096a5b7310cd758d9b7cf\n26432bcd60baec3182c17278756c0a5b\n8cb5ae6c0998479a8cbb8bac2032149c\neee08384e4f5c338a6ff78107fd2d715\na1d9f62e3bf2863278f39854b0025475\n1f5ee5ebb9ba55f454d30af857cfae06\nd9fb408a6fd11e6c22ce72a02bf771ea\ndd0521f27114171e492d9da2668ec34c\n9b722071fde9069ccce4c6d5bb195f\n6f92486fa7a1aea221ab9b8a0e862145\n84d5c290aa1c5c3e28d0a21d73b2739d\n3e4434c7714ebf307ac0fae7c37e01a7\na88b21425768bce39f6ec855d7c1f09c\n1c679d8a4fc274f47523f50a56d94935\neb291380d399ddebafaac116abdd44e\n722bd78d5f625018d27b31bdeb5f5c79\n6d4e96c31d1b1f9d16aeb5e4ffcb8813\n5788395c87b524db79157224cf10b26\n3239a4e1c62099556ee5c30704fa2d08\ne5ea9b41ff06d7ce2c396131c7cc7ef8\na69b27f76baf9f75d612e9885a7318aa\nae2575fb16051c6b668ae11a7db5e82a\n4380ce2f9c06f92744175b4dddf5be08\n34208e6a1f53551366d6af16d45fa132\n83786b4a5d955949a495869179e36802\n14ed71cd9f154616bdfa5e0753fa3240\nfe2c951f711bf1971a12d98ab62a7b8e\n6be99fd273c3eb879d4c79351958f461\na14d6cda9c2ca5c0c955e5ed03ef3a2f\n8be5c241cef6212fbd1f60c111786ed\n57364a6bcfdd730f166ddaef2c2c61ae\n1f748bcf0ee8eea7da9c49a653a829eb\nfca884f9aaea06cc9c1e87e8cf2e52d8\n2e007165e4f48ee3cd4a89b0fee32930\ned59907918516bbb4c24aa998833ed98\n34ca15546a48e34798d5fc0473d00a1c\n417f1c15c20966a54f5039bed03ee12\n5ec773b266374121e8058cf23f6382c1\n981f5f50bd8821e8d935bb36a3b0560c\nfcf0e9c2aed826c7fdb2052f1980b788\n17936c67b822fdbb6129e6c3b6c36a7e\n6a4bbd1a2d533741849f98fb0b88a16a\n47b6fc814d22a030db6175ef18ad3f80\n268116c288b215c43dbb6421d614c0d\nc2e2206394f6de78a78a19ca5a5a5ca3\ncf2ea610fbafece363944951133f1c85\nea60ea168f766580617092ec6e36103f\n38ec61e847b8ec152864bfffd12f80b5\n9c57462582737eb7d46cc1240811b39d\nd1b34fc25b5ed4e42fa77440dcb93214\n70d8bfb20df2a08ce4730f03eef08800\n33eff70928eefb54738e43095496b061\n840ab934a623e29d4253be890e153964\naec823460d983866d23df9ad1134a651\ncc4c36724d3c26c65ff61a3a2a0e2484\n4b57450a988be6c1f51f77a6d7299806\ne21fddb872844e02713f2e93cbeac35d\n332c75b56c4a80f77ff6ace05b36a5\n683fd587db784b87a71c812e027f94d9\na713c7f070c4fda022abf78951dd8624\nfb0459ca3947e2fecf5d00de99803a2b\ndd197fdad7f339cbe8b31d97326b3fa0\n876794a6a673dcfe502c728096f4ea53\n441e0682fa5eea135c49e0733c4459d0\n79ea27001d37617b4f7c5e1744a5e6f5\n6e31a64910fa5fdc9db8ad97fd392b59\n9ee885f08e0dd5273d154a49485f64f1\n335858ca88e800c34897c77cbc788880\n47758895632d44efba4e573e8ad2f887\n6ae5a011c8724eb5c3bd24f986301745\n67b25a96e4a0f49bc41d4e0e25295960\nc86d75f3408c7ab5a6b3538efbf4faad\n8a3fe76dcc0c54cb502ac2eb9128f9a\n657bc03a22b4ee207638fc7b029fa96\nb23030e1b7084fd9d38913e96bbf2a5d\n50323d86b68db6fbc35131da26f8061a\nc49e9c8c1306d3a4f09a2b323d5dc94c\n6d5a70271c0529071360172b4b6205b1\nb16b0c22f89f43ca9b40e76e725878\nda0def87fd8cd658da094b3bbad5f5e4\n97e3768e85c686f9601bea3dca268229\n30c88fa790ac14f750d31060ff1b5551\n6278f1b6aa0c85effebad4f49b26ec52\n10c0eecb17d1bac64b3c42e318f3affc\n4369d61d4409bac0413500ea4648b88\n6acf2b080e171859412dfc90452742c7\n1ad0e2f815c6f242d197f67767b32741\n31451828a0b452174705d3a68027b503\n4c3ca87e50585617f9696ffb3e2cb66\n4d45859eaf2627f5ba350d190cd1c00\nd007026a83d6be854e48282b72e69035\n2ae89daf7433f4d14b3c42e318f3affc\n9d54c8a7ea484adea330b2d4b3aea8f9\nea45801f26b84935d0ebb3b81115ac90\nae62ecc28b56c7ad68e125404f814ba\nf195ff52401da593344db0d9ed96427e\n9d1f337286e7a4d39aabd1d2b22d025\nbd12dca2d655a093bda72093f9b5aa73\nba08fa516347f4e6f51f77a6d7299806\nc1dcefb2613afebfebe4b9fb2707d260\nd7da105cbde6ad8ad027f5769c5504b9\n7c793900baa4ca16371fff21f277e702\ne4f6069dee09b0df237af722b64576c2\nbf81d46925ba8ef7ef6c510e24348d3b\ndf63a11436240ec7fb906a2c84fd375f\n61fe7cce3cc4b7f2f1783a44a88d6274\n375652536313a1c2278f90ef85162deb\n8504c3823e5485f8951c1fffab4f5807\n3d83fa746851500cba85f67361bdb32\n2ab14a50afa530d5253e170a96a633c1\ndca260c356a236053f2fc07aab1b396c\n7acabc265397e604593ebeeedbff73b\n9d0c9d8e03fa4f281a67ed3cdf707521\n6f6d4abfb84b9eb527c3aad6317cf3db\ndd9782826dda1284b3104e94482ea9ce\nc57c4616b4a9c14ca93412f1b60e6fba\nebc897217df591d73542091189dc62b5\n486b0764bb1fb92cc3bd24f986301745\n2fb395d53b34b02fae5873f5a6ed699\n91a56c9037ba4a63a393ceda265543cf\n43842d53c1ecb4ef2e3a784001157d1e\n7ff6c7f050eecd378c9b2896f4602557\nb4855f52572ce2b0febad4f49b26ec52\n236380670cdbf2c3a4a70f7cc08674ca\n4b47e8b6ac084de116a2b5862518c93\n46e88f122a869874d989c9f989a09ff\nc421fdd1b116030fb129901f80d24b7b\nbab86ce3e5bf3aac9715146e52a0621c\n6722714a020f703451c4deb11af7079e\n857ae7eeae1508e9b0957d845ac33749\ne6ec89773cb0e3ab3880b925e059dd8\n963bfaef4271c4e6955824885d6e7dc0\ncd6f5c39cdf1b57a93bf4c26a8803fd4\nbe4db395f7b2f089391e4d6c585a697a\nbf29f1397cfcf056febad4f49b26ec52\nde5de9cd2d952cc5278f90ef85162deb\n8a1687e286cb0b6f9f2349486c570dd4\nfebbc5702f304c16f51fa0238791f5dc\n8421fd68fddd2a033f40a91f25bb93a\na0e6486608007bf4c955e5ed03ef3a2f\n98dcbe480586e9a951d5d1004657a651\n712a7d7ab58960829408655f72318aa1\nccb1c5fecc863084391e4d6c585a697a\na9504a750945231f91bed99343331f7c\ndc868ad981c23d22f91663a74ccd2338\nf0e98a20a4ad33b15578685df571d8b6\nff5a2e340869e9c45981503fc6dfccb2\n8ec96360a8674db5b000f20a5153622c\n35bce0bd439e04e63d039fd0dc042dcf\n5eba36c416524db2f42a90fe4baf4591\n9e6aba6596ffbf95a9bdc22a1e02e82\n3532707a0addc62e13680f9c7026bd5b\nf624b401d623b74a87b2f182070d92e2\n5af813d1c68d4e557307e0a6ee770fe0\nc9cda6b019153ded8cbb8bac2032149c\n8416d97c1e7b4ab323eb3ad3d378722a\n9b0a6771ddd952a036b0f2a1430e993a\n66e49590fed26b4b8a6a1538ac23319d\n425e21671035806ff51fa0238791f5dc\nbdc159bdb0147e2d54f10b531fe5914c\na767059df7040b5fbe127423452ccc7b\n9e560ee4c7438578f51f77a6d7299806\nf4f96a7c9b71fa9855b72fb3e8922a58\nb95b9f2d28ab42e49bdca9b7303475c3\n3a3f32deb30dc4e32ea98d69e91ba870\n892127d87f684bd14b91ba28fa583347\ndfafa039da1cf318a42557fe008dfc94\nd08a421a6362b4bcb000f20a5153622c\n1e37f6dad9bb5fdf2f05c3ceed4d6250\nd9daa0e33f695897136d9cfd13835101\na3e030b5fd13158d7a2166c62eb7eb3\na42a58b3fae9ce5054f5039bed03ee12\nf40c11ff508e477d55f46d55537192b6\n214e9b1346a498c0f51f77a6d7299806\n711d439d6638b4c33efa790205f68f8\n4f2b4f1c35054480438d580e74643a65\nad9adf7c2c45842ae7354dcb6082ee59\n210ad02f34db100c236f7a807f5aed3c\ncbb90091d43fabcbd5cb6d178687b980\nd8b547a164d2f356ff24b36f1450b61c\n7f2d4ff98dec893094210977e5394f26\nc43d83c84e8d2614742728b30848ed03\n9aca8b4392e603fcb1763573e754f7af\n81ece5ee42a4f814d384177e3e0b693c\n8d0563a9920592d10b3ff08c68acccf\n12b7462856335e3d2404817055fb55cc\ncf010623152e31ad2366f6466c2cbc19\n535b4f96f57a03b2bea4b6e7618432\na8840b65c6dacc627984fb9ec7e40829\n4ea4834db898a3f58cbb8bac2032149c\n1a1fb603583ce36fc3bd24f986301745\n43aef0e663e734b75dcc7ddfa72357b1\n33d620c4e8af291d5dcc7ddfa72357b1\ne79b8e7272ea19ca2112c05ea370d321\nf1b10865243d1ebd77cf3bb06f394ad\n71e814e5c0f59c1ec45dce3c044e7ab3\na253b171a28f3ecdb781d9dcb8ecbccc\n70c02e8ff7d19554e6fe3612af521500\nde10ce891b1cd33635836c728d324152\n4cd11ae56eba48684733824eae5cd9ae\nfb3c684afcafce085a3075d93a0a3a93\n5db80b2854ccfb6ae2b372d25f6c9482\n120ac04ddb930aa9b2029d92310f4aeb\n1a1223b411a9cf92e7c7920f6a65a54d\nd20dbb223dc5e26e6e4d44229ea605db\na86b48fbcd775bb16cff9b44fdf0517e\n459304c1c27aa82aa14bb1d7e401bf06\n392ed157b61814e2febad4f49b26ec52\n519d1f0e03a9fbefaf794c3011d17461\ndb89cf8ec0ae8e10f42e033ed19d598b\nc5ea662fb31f56cb2a155afd9dbbb0a\n5aefdd5252fb662df51fa0238791f5dc\ne6684a7ab98d2809856053d38b62525e\nb598794290077d8cfbbc7c456d85ce59\nc8276ccc8fc631104a7dc8b5b1635d46\n637bc87d013b1b09f51f77a6d7299806\nd48b1d27c46b56f2bde1c279d540fc66\nc7f4004cece37b4bc08256cf85537e\n72fef5cb33aae9cf94d7e6d8577c8ff\n39b851143b4f68ba21d25a6a55757584\n81d84727a6da7ea7bb8dc0cd2a40a9a4\n266ba504ee57b85c5298386582afecd3\n86b942f68417df36cbde89e0c48a01bf\n2e9be34fe47802b217ffa9a4ab48724c\nafbb16b9771a020d123691872d565e10\n98b0b99d86a2342b2b23d7805f9b288c\n8fc0e4d561b5f551dcc34b96ec9c53d3\n7aeafb18b724738b9d57383d20e2e6b7\n62b17d7d8fa7ad00f51fa0238791f5dc\n956752510546d938788e70128ded264a\nbd974108a3455842668ae11a7db5e82a\n5fa362fd2bd9e4b5febad4f49b26ec52\n43f2e83d015469c71ba2f806cba87b47\nb256041abd83a94862158b7ee658e910\nd6b61af7935d36a6f0aeabfdcb4e1dd9\n63aa4cdf9276e6bc19cdd91652400369\n40ae20513a1ddcdcf6cabe1df6f4c9d9\nfd7ed06e2ceb26d766c55b7c01b230bc\n2b7b66623a00dd8b78838533e331d3cf\n468955eaf3b3a4c6df8b5f0b7511efe5\n6f7260eb15f4531348ca89b7a9405654\n82d1c45956b00636b7b774bdb9e14e53\n6cadd91f66569c584f60f15da4c665d0\n3a8c86ee236ad156c6542d86974f9497\n8bfdaf14a1b271954be714694b176f45\nea5e7b13d0eda809663191fd557d3a61\nf81301719860a0e14626b1c05b10e40e\nab463d43646bd5dcd27b31bdeb5f5c79\n97af27d6dd13962fae9714d138f9ea9d\nf78e16c1dbc4dbd31349824369d952b3\nc365c85ae03b768667fd127a03ee9f72\n45e24015d08d65eb8d861be5b561accd\n7041d4ec390b8b12234a98794d9f2b5d\nd939c9aff66ee720c47a35332c17cce2\n3f80c1ddfce08d18525211e12d56c55f\nfd1573fb1fc4a99b4c161851ed2b4e4\n34105c5e1e64f66b23eb3ad3d378722a\nc613e4469bfeda17cc4256bed53b2ee2\nfaa05897ccdaa0e4f51f77a6d7299806\n8a2598fefd4a81e9c7b11e86284a2e\nce1e09dec6387f715fcce4c360a80a36\nf1a6dd0d5d9bccf3825a5bc524f67c9\n5d7f7ef4f2f2e99f1e923e5a90fc6bf2\ne490518bf6d40e138288267d39a90f5\ne3da34a62e53689e82028a475156419\nf7fea253245d97786c02d42bfa6c5667\na4b09d3dc36ce23bab4d0308b2ec6512\ne48675e37096a6898527e24d5de49fe6\nd0b6d6210a65f1e4e50369287c07141d\n3e0b229e646595261a719e2a845bdada\n3e32e9de344b723435c5f7d532a05db4\n17a5f7fd90d2bf98b40f0ac0fb9a650d\n12fa3eea2b02ab9e931178a47d29b194\n6ae63bfca4db6e42937c609387f975a5\nb390566645360e5d69fb38085fbc320c\n3f48840eca0de14ee693975eda4e3db8\n37bed46307d59fa5cc4dc0a78fc422fa\nb1d643bee9cc33d9668ae11a7db5e82a\nb0c37b379725feec97ed2c3bf3711e68\na084dbfaa217331894c13f8f78a6d62\nf3db554c71dcae06a40d3d325dad76b5\n9a01ec707c25dc606199d6fe090be061\n60fdeb4561048f63f5823a6b2902a9e4\nf4ce170a6abb80b081654cb17c02fd\nbe461a1a083481c8488017d48a7f7eb4\nef5788dd59881f2dbeea80ff21252e37\n7e871b4bbc5e3d175cfc8af3b7d60a4b\n5c3932413e5433e0f51f77a6d7299806\nb2eb5e56fb8342f81c25d54737ed5c8e\n884a1ff382ca00d340d1d1b64916e0c7\nbbb7ad20cbe09b9b2ae0028d477b835f\n16fa03bfc61770652c5d34a902e568f9\n50480d9733231475eaf288f952624966\n22c2431d6be8a3a8d6983f351200ac6a\n4ccb70092f002d124212ff51b27f0221\n952da8ad85350267b9b072e1f62798f5\nf82473746c17ef04f2baf097673c64e5\ndd2238408ee5d84d8d1c97149a00bd19\n9768599990ec4b54575fb26548334725\na42d138bdd78cfe640abe029c3c77771\n30c669e02f875ae6668ae11a7db5e82a\nd16bb369a03f260cc48d90eef8384210\n1810b6accc77d7893918f23e2305ede2\ne9cbfadc69d199c6368aec320face349\n877e3505ebab096848f551687b50fb00\nb7c36f0afe9f16655b1ab0bf4891d200\na542ba8480b71843cea3bc3a9009695\nbc7a99b74e3dd257c955e5ed03ef3a2f\nf7477e845dad9568b0aa15078ea6f391\nf9a795649f679b578f3be993fec1ba7b\ne3820857258a0bd2800d7b7d07715065\n74a626c1b31c14cbf8b8d4a282992be4\n5276058cfc1e139326392a5b643ed5e3\nd1296da8d3a45ac88aaae3d020f5ddf8\n30ef2e867e365b735445e46058840642\n3b7db1bbe9ca00204d851671c3f1cc65\n8e8b8a01fc4abd88fc4a4d8514534de1\n91d5f09b7126c4b9d158bbba9bf9a9e1\n3437f0ce3933d664842f894f9ca76d59\ndcdea1e749d4e20c63eb57c871ab1d8e\n8519a614ac4b1c642b70eac6546e93fd\nc9ab6dcc7e4606adf00f0216ab99ff30\n26ab5349a902d570d42b9650f19dd425\nc43868d3e8ed646f4510596cb4be6a33\n8df054f74a538e72c955e5ed03ef3a2f\n375972fee9a2a6e28d2d730aebe7865d\nf995c1239510cf8b5d009c98a5b96836\n66517b894b9ea3ffe22ea6d770699e4b\n9b8e7652eac8daef33e6ceca7fd89911\n8c2bb08ed6fcbcf3fdd3e2baf05d0f57\n5214aab74399556959f8e31ca87c470e\n615417f66fc542c6f51f77a6d7299806\n57e3a5f82b410e24febad4f49b26ec52\n63f568ee89ac03c6603557e69ac4ca11\n2b9153514eb1c46bc6a830e27533d086\n229b99c5f07fc657798b7aa9a1ef8938\n87af702a9a5370aceea6a5a0ebf81e97\n23486b58246302de979ace30a051374c\nc4202200cd2ff878489ea1c28ddd58f0\nfd07e0a8265d1e15db11d29991a4fad8\n5b06d5db4da42b96492d9da2668ec34c\nd7edd292f614e9dc58b7984178830447\n74e9d9cd7b3d632a504721639e19f609\n55c2262e68f311fea5526f91aecc0c37\ne1d8f005e47f3a4ead01cc66cfa1fb80\nd6064ca673a721ee44175b4dddf5be08\nadc027df0d7ee0c9ccce4c6d5bb195f\n6c4cb518c38c50c9939c47ac2990d9c1\n572abcadc95a8ed14b3c42e318f3affc\ne05344d8bd3ef63c5b7bf37141f96eae\n746f88894a7cadb6253bda70c38d078\ne724ee5c326ecb9659db00799f9936b2\nef7ff0018b4041ad577f990873b69f82\n343b2351e2605a075445e46058840642\n4cef53c3310bc0561826247b46b2ae8\n22e1bbacd4ae7812a23d33d54fbb4b2b\n54f33905a3c8973a4b3c42e318f3affc\n520b83f501329fa955f46d55537192b6\nffd45a17e325bfa91933ffef19678834\nbe9a0901f9ac115d71b883b95236fc2b\na90014ce65aef22135836c728d324152\n1bba8d173012111f5fceaa39a8353bde\ncf478aac2058cae0e589b08489d157d\n9cd301c49dd65c68819b97ced0e92930\n9199b088ede8a2c920768660cf080d12\n7fc2174b2016f76abffa9cc541347f97\n7b504e7d89d9e8d822a33e080d0e71c\n7f1019432a168f451512cfcf562674ac\n8885e21ea12d6fc2b41f1e9ce6f64e36\n89bfd0ececc5a00b6e861001bc3826a\n66298b3f4d2dc69db6572d78be2f91d8\nd704a2ea75d8a2b3507969980fe06783\na375aa82c58fdeb67cf50d57d36c5a02\n53e8fff5ddea1b47d44dc16af152638\n4ed5863efaae348d8b773535ea8cba6d\nc29a4a7506b89be2af4d0d91ea903469\ne7b9c7a47208cb067b14a4ce87ce734f\ne6b84acd543ebf20662cdc2f77e49a85\naccdf18e9eea0dc31191025061735ea3\n138a1ff3aa457b30497839e108373e6e\n7e03f7b740e118abeae724160fcfe6b4\nc826802d2a084845979f073230404b25\n8e3a92a1f9155845d810b14a81e12eca\n7f1749643345953cf51f77a6d7299806\n131bca5d855f49d428e3317d62e4ff40\n59dd0aee74ce6d1798b8c800ae001b66\n6555b5004c742433e3785a46a5c831bd\n70a17261539dd92fce1403db8f7dbbbb\n5f66c21e40105601958cd9a7e5831839\n757bd36fa1b0f3984b3c42e318f3affc\n50e69dfb7802b094cfedb1d8b135cde9\n7257fc99c253994c6fd6654fda9ac5f0\nd6acd7d7c9e0deaacc963bba1556032a\ndeb8b5c0baed637625f61c02205f9a5c\n47315d244171ef7171a782a4379556c7\n36fa3daee9a560f049ad73d13f0c98e0\n78ccb410de7bfd821f8d8332ee17945a\nc966a18da154da2c467289cae69b100f\n8befcc7798ae971bef5d2a19d1cee3f1\nf0c5410293e85a695a96bae7b017a6d9\n9bb7bbab61c5d4e947839bae1bc65257\n8cc6cd529cbd74b5769cf9dd5d8f2768\n1ef6c2b9d413fb7c681404257d94ad9\nab8f7cd2ba798e33b035d20a1a3ca345\nee077280e4f7c4a5ca554b08dbb3ef2\ne0c570b6776eeccec715f352ef265874\n455df1ea3058c48e33c1aef7ee7c6797\naa69a26be784dcd2cf004563556ddb36\n661b8e9d5a93e2a4b4c161851ed2b4e4\n7ad02b2b54c9456335ce7cf30c872281\nd37560b9ea27af4efe354164024016d6\n9792d6d50c07e27627992812a922e94a\n39adf6058de74934ba18ade30e563d37\n7147a78bce941b6e9784d1512b6b87bb\nf4f168b88686872f785f45147f3e474\n953ffe955229423213d2510999d0f1d2\n25136703ff8fe0a8a27b22aaa3daadd6\n391fa4da294c70d0a4e97ce1d10a5ae6\na4b1d784abd7eba15b17dbcbc75d58df\nc0ec7cca02bd2225f1783a44a88d6274\nf92b1c64b0306322de6ff974c28c2f8b\n7bc45a32e5b7f14f7e1dc33a9d8d260a\ndc3a90ee32e36cad43dbb6421d614c0d\n79ae3e5787e0a07542ff37a1b760099b\n971939c687f63b9eca76c527f185435c\n9c1b0058dfe027cbf519adc9991b5f11\nf9bbfd8acdee30158a63c123f2a561a6\n62fd8ef531c663bf6fe2eb61cd6e74e5\ne44531f7204b6fb9fe43ff1e45af424d\nae6594f65639a51845f0e5dddef26b1a\n8bfb5dbd48e6bcd5aec454eed44c3c27\n6fe854efba4d9ddcd4cfbd0aef5a371\n302ba9e290485f9c310cd758d9b7cf\n3e30deadc87180b6c3bd24f986301745\ne6a188bbf8315d11f1783a44a88d6274\n3af1f6a0d7a8584d719d8721fec72f0c\n2144d79a6310f1e2934cee69ace78b94\na447c1fe6f458a02e76bc197b3a3ffc0\nbce46214d9982829f51f77a6d7299806\ne2022bd4d83dd6155a15b6547f08c8fe\n8aac86cf8c72a375dcc7ddfa72357b1\n6aa865b9e1e9384d40ed3786e46af8d\na569cf5284a45a3f353c1d159a8a8422\n79b1e6c1e72490c98ca0fe30c6caf3f4\ndbe17b86d79a24f1ae96150e4aa362f9\n5bfef1c85186b2d836b0f2a1430e993a\nd3f4d13ab71856953f5dcc11a7c57129\nde551ddcab968586a90dd8e076a5a7f9\n27ef271434e2ab43f07fee5fc5c45ee2\n88e6afb8c56788899470764d5e97d4ad\nf7ff2f9bb62a9f5c96de5fa2ca080bfe\nf31398b4a1f8562f9297752c3edd590\n8b319bad7b3ff1b2ea60ed8d67a889c\ne78e481200b9c01323720b60324690f9\nf0617cdf9dd8ece3d838ae16242881dc\na96eb4bdd69c103dd293c20958d173d3\nadbd3814cdb655a7b11ae648ea92233\n76635dc55e9783b6c8c2a1a2edf00686\nd268aa3ecf296572c0806ee26b689c99\ne751c765bfb096da43f06ece0b2b5196\n3576a576c81f2966f2f40b9b3af5eeca\n96dc43fe4cfe5668cdb6b5e54fc64b6a\nda9ff1881e8d59847d76632660780a8c\ne407b3cb5cbd7d4fe0f0631862fa9bfa\n31f47d0373170683f6c84947abf8f003\n20b5a668a57dcdb3402fc9e845187711\nfc8768524737826190e7e9cd4c47f9dc\ne3cb6cc8df6f7390d1a63a2e2039ff73\n3e34ca92c5067543fe9536dd9aed405f\n68ef6fc62b9d7f161a8a283df3396be6\nec91cae6576b5149484539ed1814944e\nca56e6241a3c762a391c070c9832629\nff1c8d1e157f3b74b0ceed2c36e897b8\n313957e318bb7849febad4f49b26ec52\nc074e43821469150d6084fb53091249\nbfa77d6ff4e853a275b278bf2780ee51\n64d243c58e649783002761e7a3ba3bd\n39fb0260d1e669bed0037f03195bf42\nf4d0e1be9884f45cd2fc64a9331b7788\n4d22674c2acd9cc9f51f77a6d7299806\n4502c9c63e7b0bda412dfc90452742c7\n73dfee7c17dd0b2e469ceade478d6997\ndf9a0a4a35c0a1482a610b86c623da3d\ne6da3e780a427429791f2019e8710746\n282d36d7ca9705f6ca421e9e01647b4a\n8cd343b3adf5118d7fa29a3ea424473\n2330e9debdedf9ff99284d844aba7576\n20e5bb165c5e129ea5a11194083a61e7\na3db8fc07fefad03db984b8f0550fcd4\n52997bb331942b64f84b0be7f50940eb\n37299b12d2ac7fe13fcaef19d88744fb\nb696793f05faa0debc5c12f67106b799\ne3d7cdd0224a4fedd810b14a81e12eca\n4f9bfdae2b76536b3212177d8262e8ae\nad38f4e8026d7858c3bd24f986301745\nfafd354b0713882e4532856089dfcdf5\n7813370035ee02eee0c5923879d79f21\ne263fafc76ddb82b4cc80585c0d3d970\n6b276165b6118e85ad312873b158ac49\n224be4e98e6edc46cdc7385b337a3db1\n785a68eefd1035f468661782af60b711\ne7eb326a867912fe16b2b5432674ae6\nac6f632b60ec643650fa82c2f036109a\nc6116173a1cffecaec9ff818c66c8a16\n89552ce12717e70d40ef1c8b63a628f9\na0aeb5a735e15171f15e29f2d0bc457\n3fde8835e0f31a64d8cad143689f8b51\n8b972b066bfdd7c44f016493aa9fd9\ne9bbdfed8a39f4cbcb2a965e75be701c\nf73cc62cf8ca9d954c7384dbb75cab0d\n45d5801abb4affea5b411468d0e36e1e\nc679e4eab49f91fcb4392c1299b1bbaf\n7f284e0ae4c1430fc5beea20858a99d5\n43deedd337b00bfcf84b0be7f50940eb\n63e109fc1e40fda246b9f3b6ee20ff4b\nf4203c90d740596f70b396e6f5e48bfe\nf7ce798a5ea0850c4b3c42e318f3affc\ne7b76d66231ad077cf004563556ddb36\n46cef01263d9b449405738a4d4d0fc7f\n5ba34bb2440aa2b917b431cae0dd70ed\n3b64bf8731a6a2a63c5e1addd9922bf2\n98583f22ba708ddb4b3c42e318f3affc\n904141878e75b065f48f3ef41449c816\n5f4ce562f8ebfb00a9f598bc574004c2\nd9467c88e3e26d3c4b3c42e318f3affc\n7620cd93dbf32cce5213cec267286d18\nba6992957c2e6e6df67676f416157590\nade4f7281cc55e016fad58965decd164\nea7ca8c7d68c1f62660d2c57f39fb65d\na0fa360b6e9b22196db2ac45db35c175\n7ab4a9f2c8aa3636cce18f92a75d5ffa\nf0f1835eca48e3ae3241548166bb146\n1c66f97bf8375052c13e020d985215e3\nc393265168bcc56cf3ced7613d1c130b\nacde36e1b4c14b9aec2d07c46434bacd\nd236d890ebc96f9ddaeb6f944439aef2\n230047ad76c117412cba66dc6aeabcd4\n38ae45935dcc83fcc8c2a1a2edf00686\n57d6c26b519918d770cd267ba4f2b2ee\n7a2a0c5175ea17d88101accd22c701b9\n18fef71ad80139a2af02521b7ec8a38e\ndd63ad97240a5744a022be8e8ae85897\ncc8e9d46def8065c5fc367a00ce4b49d\n5a9a9b14c1830de641cf86c757faf4f9\ne8d55124a196c71f64a8099f44773f21\nbed0b40333f195c52ea6ece84d077ef0\n5353ec05576ed7c0aa7cb30470f3273c\n777365e9179ef98cea4f74d1efed63c3\nc8662ebf433759bd4bcc3951a8858950\n3fc6396e6a1270bdbca69f936e89647\n2c9f91ed0b0584e196a3517f50eeb9f4\n15e651b8b7a0c880ac13edc49a7166b9\nffe02f7b3b421ee96cff9b44fdf0517e\n564385b1081e9ab760eb699207aa149d\n3bbaad82416c897d82d19a07de9030f1\n7a0a47c08464a493d1433b6d2f686197\n41e1dd0f69afd7b093e18ebd46d61795\nb063b55df11f5df434b168be15357fd0\ne290e905c015ea0cc58b5b892c704fe5\n2437cb5665522ae3e329950ec40f6dd\n9437fea69f0b44e8f97ef3b999ddb957\n5e8f470250f92a0f597976c675750537\ncb6a8ea7b323c023f046f610ef0e4e90\nfbcdfe3edfc9a679ad5067eac75a07f7\na6fea71cb6bee0ccf529ce6ea3376441\nb82e94209375e92a17b431cae0dd70ed\nc64b12e620977f0a87039a8d98cfc027\n1dae9ed6781af75f6675521fa630312c\na12a759155f4d0ed7eaa96064512efab\n47ba08a0f617efc7a71c812e027f94d9\n4a6d33949265bb6569eabdc5c4c6d724\n146f90f6a4d8c7bd142fb08fcc642f29\nba44082e55ea58f431475fd256bf1b7a\n8af24cacd38e9c0aba5342d638d0c267\nbb7672d1a987dc303fb0851e9bc87551\n1c6eb4cd121175f5d009c98a5b96836\n565ad2f2a4caf3429d297e74104d3ac3\nab5faf4dc8b23517ded06cbcf08b2fff\n1f95c9d8e65c117343dbb6421d614c0d\n7f39803c32028449e76bc197b3a3ffc0\n63669ae28cf69b767f51cfad32a5bc58\n17d3e93e5f3bf2044671d97b0fd17f51\ne09377eefe363b4f8101accd22c701b9\n97b1b1f674df7fd08d413b6cca5747d1\ne439549f5da57f5ea5676001632ead27\n90908595d267ed89d970a88713e6172a\n965abcd187b93da3f1783a44a88d6274\n2da86dfedc2620b61001738bb075c8ce\n98c67a49d64d7bed1cf96a5dc33e37f1\n684dd5cc9c642f98f2dc935ce0a740fa\naba115d7fd94b7cd4bd9e0690b0b191\n56daddb695e25fac341afa383659322\n7cb4211c4a8dc2cbad5067eac75a07f7\n9323cd461b771e8ecb503f63ed915ed2\n2cee786a3480113a2241dba92389a637\n369b720841edc539611a3acf20a3c963\n92bfb87451cca049febad4f49b26ec52\na334f2d3eeebaccab40f0ac0fb9a650d\n6200bfa29b2912048b083202dd9c4b6b\nc8dc82f68335fdbe6b41b8bcd0404ec\n3e504f94b63c77c34b3c42e318f3affc\n1671665cd0e2ce05660aaee3010d2fe2\n5c45f8d68b676f634b3c42e318f3affc\n9431f50b757b81fb15e0f0bc4a421e4a\nbdd9dbe62272e25c48d90eef8384210\n4987ccbc34697b446385bd4c1a835150\ndd35a3f0ba7c5f2e73ea70c16ec9e2b7\n569095c884b4361f77161ca74d215eee\ncc1a9fc08b4c481c382c5a0f87d73d23\n50e269a6c3f3b558db19fa16d5cba023\nd1d9e395bff3d3a7c8fc6229eb64e56a\nb3ca1f79cfb6b29cfc25405fbf8f85f4\n5d21564e87d0a1f3ea4b8033405be154\nd8c35b0ed66cfafa426c7177f78cd656\n1b9605a88fdee0626bdcd672c2b17215\n67584a2261e175ccfbed972ae4fd63af\n39a71631941673b1c287a33ab134ac42\n6661ae18418d7cb28965f16c5573871b\nc9e09052118e6fc112e2da326535f859\n6a8df7fe3bed16f736ac40071701c687\na00017528f02804e85c2318bffd77ab\n4e232b14eff92afb268cf362bf3a8d20\n64e260594e3c3dceabe659e45c4a5b67\nc9a9feb520968bc79ccce4c6d5bb195f\nadefdce69de361c58d8358620132e773\nbc4167ab0fa22678e0fcc90cf126de96\n7842ac8b7a053dbf61bf305cc5ea87da\ne8ed10a7666a10a1edc98d150672fbfd\n5b349df34184e7fc2ad490d4d7fae486\n32c78783100eac55b45b50ab552e35ba\n9a3df6c365a3df3db000f20a5153622c\n73157856beb04619eda877ebd51b3abd\na6c192247329a32e6a19b0779ac03754\n1bc326fc94e0cfc1cf5a37a70014c623\n54addcbdd400808f54d30af857cfae06\n80a2c69d8ca29bd136b0f2a1430e993a\n16f603525c5ce57b23f7198a00163bb6\n65bb2d37c52ce089e76bc197b3a3ffc0\n3512806247a9e1ae4ffcc2bca1c09e9\nfc1956b87d9cb195f5854716eabccda7\n6913ad01e9b00c4ca6c03a53cf0a14c9\n1fdb34aefd1d6eebb4f9aaea3b860d10\n48ccce122177c96c3dc1643807625350\n415e3d53c7a93ef88b90ca5a8d93018c\n46e1e82d296cceb389a52d0b0203298\n649da94b45bafa807f8769b595aa12b0\n81b379e6871c97e45964cca694d01a7e\nf2c4fbc0c7c9b87d961b3f02493c4f73\nea98f80f4a663d7bdadcd309a90928c9\ne6ddcae1c08b880811d3792a7f546aa8\n72edff728d75b0b8f994e2a430ba61bf\nab529bd91a158a53851911ab8e53bed\n5e978c92d55f7852185574a5e2255bb6\nbde0b499bb218666c6f42ae239fa6819\n707e63122691f0cb490ad276cd2af3a4\n2c6dcfd1c08950554b3c42e318f3affc\n65f126afcc43ba69a4d89a7050f2b7cf\ne5567a82c577e8af83ab2e8865eef185\n273f79cbdf5d793c6d5053bb66ea65ce\nae4367ce28f1e5d96917161dc6c05572\n649fb8e1ead691c6359e4b9c4f6dadd\n9aff0e9f8722f063c0169cd3bf2650a0\ndb94dde04aad570d2f8bc0d6e7c6775\n271db646af45e4e48312cb7420a2ad11\n5c466b385c17f36dda6f252b9392c507\n61397fb909774541e3c62e8199fc6b89\n1844a4ed0ff7ed38c2474c54a2e772f2\n6762370303178268d323d6bd8db8de5b\n741b91f2187d54792d4fd2b0f2040d45\n327fcae0643a70d916768ffb6be40591\nee6ab3dfcd7757bc6f2c5bf7cec019c1\n627f4b1f48b6190b9341eeec703c4d4f\na369da8e8e47d0f3f51f77a6d7299806\nda0ee60c93c215a05b30881dc0ecdd7a\n64f73518c32b8b7af49a23658fe5597c\ne750a8adb862c9f654f948e69de0f232\n6bccd5c9b9c64af7812abbc2a4d00ee8\nbd4662a53f8efdd955f46d55537192b6\nf52e33287b89f0109bbfb8262cd69a18\nf07cde4ef5e76ae6c4cd9efc031e94b\n9d2c5a0dbfc811b3f9ae74fa595a8a63\nbda99c11fd261f1ffc980c1b685e9930\n586edb4eba5c3c7557ab4b593540354\n5ac2020b6b8e2c5c8e5e60055b9b9f67\n93d6b4ad8a164927febad4f49b26ec52\nff42855b8cd62a1060fdcc1483180fd1\n7e215b6386f3fd4156d1d06c447a736\n90d08564f19279ce714531f0291497fd\nebd353db403531b4257d13bddbc14c41\n97bda10740c4a74036b0f2a1430e993a\na3d5d0122b01f7be62a280769c3934a3\n6235d7bbd30566e4c955e5ed03ef3a2f\ne0caa2e794d98c814c9587cb3f654544\n685b5890e66bd010dcba2d9cc78a3a32\n352be15a6b1439c135836c728d324152\n5689abd8ba685b3e72075e8b19ae0485\nea6b9474514df497febad4f49b26ec52\naea8be27a9e5dcec1158f00955d38a\n25b9dbd6cab8f22c37a346dba83c013b\n6086c6195df8e051cce17d79b4472d62\n6560601e3e72b64296c50b25b74de6ab\ne7b0ff6ffeb24ac2cfde2e560cf498ca\n9c0485519f34076a486150a9b7f2cf18\ndaa7a962994ff710d19f6764502e1046\n98b3a7df1e233ac7ff10e98a19606836\n6ac583c624b9b76b9d6741c36fd1cd2b\n3e6e16cc5a4f26da30bbd4cddd04c77b\n578f935f182c5cb3bc5c4c571faa8806\n5b69a60d7b980b134671d97b0fd17f51\nab0d3af786b87262fa74bdb8d964a92e\n79e3bca3008fbfcfe635ea97678c24b\n5bbc7d606ddd5d17e492aefec5dc15c7\n93078952823dddaa5e56625f6688e473\nd6daf5eca30ca0965722577712723fd1\n82236bf856dff003b8fe77caf901462\n5e70abb053c31036e9de663abbea1800\n8d0e190bf8d8021cea7b477e7b62986d\nda5d6d0da4ed0c1cea65c47b660136e7\n3f14c153dc861c0990453a996fcb7627\ne8d118117b86ab2e8884a069d9619eaf\n4894b2193e36814dd42b9650f19dd425\nde9b2870157cdba6f83df7938e45b43c\nf2d39c20369e9c524b1c88aaac3e0ad7\nb19e399e93447dbdd2dd99b484971e89\nb99ad68ca697301a88386fe1512ed26f\n810c87b90f7dc301da9bd441f1db1dfb\n28f3a48bdca643e22b151d8b52c53b90\nd045064064381237e9ada1586a8c9364\n34303ee69f402e0f2b931201029bc76\n1f116a581f9e15e01b17743c18fb63dc\n3f74e2274140ec70705165b0e6ec548\n7bbd4240f837e20a6716685cf333d2c1\n4442b044230ac5c043dbb6421d614c0d\n89975eeeb0a1313e4b3c42e318f3affc\n45b6c77fd17726713002761e7a3ba3bd\ne731318d8d28bd585913832d290e62af\n864499eb14b077b4e5aa1f8c960ae63\n4606eee54ad02693e06d804f36424ced\na47fcd8bc5aa29dc998473a1ceac4e95\n3f5497bf65ff9b91c48d90eef8384210\n245a4070c930aaae71e2498adb56e791\na877ec39efb4c8cff37af16b2893f1d4\n4f59b7e00a94352fb0bf045ee98272fc\n8e3a98ea6d37d14c59a230640e61666e\nd3c31829b1295d0abf22a5ca4fa4678e\ne2a2fe3713803e9e04e2b29e7a72f7\nf9f122b492c3f1273084c5a9cbef5cd\n5c938860481a2d0f62ba00e4e73bbc2\n41a4cfee883a91f2d9ec500769fff320\nc4998912c5b40b8de1590f407a430d33\nc2c4846106b3597ce76bc197b3a3ffc0\n19c2fb727de9c13c51d3c864cc68e22e\n7bfd75013a4d7aeb5ba41eea807f5d3c\n151c68b48a1359c58566c6c3bc94c70c\nc5fc106c1c426fd1db63c1c69fa4f81f\ne3ade6122be60b39742cd3471ca7caf4\n8069dde16a0f987664b3b9b23ddfcbc\ned20a233783090839039bc4ea22a379b\n8569c03c2a233f7b4b3c42e318f3affc\nf6f9626b892a529c2b642dfce4c7d8fc\n4786e3a9fc33024dfeec1f13d2353f3\naeba3a81cac0687abf3f8e8aa5b07c2a\n3073165c54b44f276e1bbb3913878400\nf183fd6b062f642b5fceaa39a8353bde\n81fc73cf3796dc2ce14c803a60e383\n6fd88eb1bc87efd6f51fa0238791f5dc\nf361b2c70470eb71b71df3a52d67a993\n4c977a08c3969494d5883ca9b41ac387\n3279edef6a631940ea41b93204b74265\nd013cc09fdad8ecca282c4787019214e\nd528d80f04f387fea570c6c691c987a8\nd21ad1e0d76175e3486040c0d9e85846\n5f3f97d6854426cfb41eedea248a6d25\n59cd90e24a68f3f5f1783a44a88d6274\nc8062ed073ce04058cbb8bac2032149c\n766fce6fad5a071bc5beea20858a99d5\n3a7d5468084399cd11ddc5a6b5ad5cd3\n3b9b877ffac13289b6536581b321be90\n4282180ccf703ca59ccce4c6d5bb195f\ne86e665af1e1cae8c2f0a1a44c64aad4\nb514d9ac72abf291914858ee6a7fe3b8\n3a990272ef4b83ca8d3e8783b997c75\n884589066f028f237d3a650ebc940efd\ndb0685c490a05ac7c5facc3cc8dc041e\n63606249852d537ee958df2e8332e31c\n7d518c96a145547073ee7d53b833ad02\nfcc3a9a4e880b5f35966c5a46a5a6ec8\n93a6eb93e11437e1bdfa5e0753fa3240\nd35a2fb01107b6178727c7a6ed7a8927\ne795845c4e472bfcac4834e2c94f2b9d\n9ada332060a35a9ea8a8d4103b2a0b3f\n38ef005583b3cfd955357c338ec9641\nf2b641d16cd8a3ed33473d0d0e8c464e\ne2f60503a4fabc4aed20ed9a17aa05a4\ne4571a5b7457d2dacea003eff0268278\ndd2c3ff28a34556a47839bae1bc65257\nffb7b155cea1159a3a8e4d3441f2dd18\nacd6ba50b3081e5cd3470f853139ec0c\ncf2351b8172fa011a6f925961cc8367b\n32f8195c437b5aef51f77a6d7299806\n7a42b366e7f1da98a5d446d7637cc06a\n918e7e6a01c7645bcb8248441df6c2f5\n96c2ac95683fa21d80a13a8344996270\nf444ea9df9132a3616a2b5862518c93\n59027dc9bd7a066ec031b2e122ae5028\ne36dc839d70d3bb927445c0c7cf3becc\nda2a145da58d39c7aa5ceeb306445170\n98bba4f6837ece036c18e23645ff9868\nfa89bec3cccc137b10eb3ebb0bbddbb0\nc07c9ca0cfbb531359c956f09c934d51\n9e229ffbaf9b7395efb9eda839fc42fc\n7e154e1cd9f231dab8afe053c66e5d4a\n5261950cc1cc0d2a9ccce4c6d5bb195f\n3ada04a73dd3fe98c520ac3fa0a4f674\n11cf749cd0a65ca13339d8259ddfa7bb\n4eaf30762a61db196cc318d65b897138\ne8ce7c3e66e6aec08ee0a9ed0efc243f\n459f1e82f058fbd0ca42ad68b92de4c8\nd7f9651b64c82c799e7c6a73ef46f40c\n47bfb0c5ef5c3c7ddb6175ef18ad3f80\nb21a6839869018c6ab10c969b34d14c2\n93f94ca2abb0e6aeda9c49a653a829eb\n38aab2d4679f51a7d70e365688839034\nbf06de9143b2e36190eb1f8a00f61726\n10b246b375c15ab59fa24672a35ae8bb\ne35775e1f550d3d65339eb67f6086a2b\n55a3fb19f099a06adc061043e7c712\n4726a178bb7b40544b3c42e318f3affc\nf476ea8dabe53bb8efb94709f30ce0d2\n281f296380a0e4a81db7abc68608fde1\n2568994ff8112b6d65daa37b7e13aee8\ncd82d526e58e3e7f4fb85ea6fd426098\ncfeda84f71e95e6169ee3dc2896968a5\n927bf59af25793ab76e29c9c43bc7aa\nffb5e48fde2cca54518bdb78540c51ed\nbee1f4fa0730c6c5735aedaf68f44c57\nd0c369ef812dc0cb1839c27e793b8c3c\n83cf3765597a631e4ef113421a70a46\n6b9b672041acc540e61062b89cc2de3b\na886752590af36549e726e922f49b373\n20cdd491a443bc30d9651cd1d591d64d\n1fcc1a3a879b2a037d43e094da89ace\nb0264f893f25e10ec955e5ed03ef3a2f\nff60e4b29c5cc38fceda3ac62a593e9c\n351057418704d299f51fa0238791f5dc\n478cc8d5c72f2823d2ad39bada7a0a\nc33f90746a3573878b39b912ed4a7b59\na56200b624a644f7df6cfab91d65bb91\n2b1c1e0fad3cb3b8fad46760e869d184\n11b110b37b1cbfd6bdfce662c3df88af\n32760b2e81bd4deac67fbc2559fd3fde\n8b0480b9d0bffa6e8d740231f5a3de96\n817b41f37bc9f022812e3ecbeaae3980\n5de75da0a8142dfb17b431cae0dd70ed\n9c87f81ccf8a2559dd33a7e96aec2a56\ne9e47d6b53c915f3e12186cc8c5022c7\n3379b29c3a6221d79996b1334107828f\n4de159bb2663fa4d58b22e372d13dd2e\na4f302ce157687e0861ac00f334ea98c\n4c8472bdc535102870553da2430bcd98\n8ba76dfda765f72b7c363db824bff7dc\n612117acf07984468e52a975e7251969\nbc7d143f0c666d816f80e82f51b5db7\n73f34f95a001731b855931d119219022\n4a310db5ebe11142eaf288f952624966\n26d174935d283cfd4ea7ef03cbe21992\n4b1bb0475e67abe029426a0f57e4d15e\ne08d1cd0dc7dc73db9d7c2fc41e80228\n645500232eb286aa8f6d69f1a6681149\n45b9800c1bcdc13735836c728d324152\n4175d6f2d66c2e1353c1d159a8a8422\ncd44665771f7b7d2b2000d40d3899456\n8c4d7014c59f619c2b1c5715bfc0f094\n1ab0b879f52e7cbe958d575443776c9b\nc24bc140335164ba815b2b467e8e2eac\n3565f5bce51b333e9b19181a19104021\n33f24a72a875633297e755dddca14449\n44c35996414c4d89f1f3662486c882e5\n3a17eae5843c2c7660a62758a708c922\na8126dbed61e760433ea3991d83e660a\n88dbdfd6e8cccf1ca9f547acc5e1dd79\n87ebd707ca90700d8b424343280aeccb\ne047af849d703eb51933ffef19678834\n1d393a06a5cf567d3892cfdb72a66fb4\n1cd6a00b71f02b06430c2c15987e4cd\naa97318224630a33f51f77a6d7299806\n53bad3b72a7b6c1bd810b14a81e12eca\nb23405a8f15f3fdb44175b4dddf5be08\n7c29c16650cc74bcd17bccae1d897a22\n74239bc42f23639f3ea6912ae089646c\n482123c5f097d29f278d386bfa54545\n2447732fa2e0d8d870febc66c2c7f4f6\n3cb345b1ef0f4d929a7e020ff2597416\nd309951e04fd344c7b56d76bb19dcf39\n307474fd0cab5c982fa77440dcb93214\n6620b366c1532835789195d85b2f8718\naae0d0d70c13b8c781faebbdea6bd9be\nf7dc5f5fde343cc5c955e5ed03ef3a2f\n677f0b4f9c5398caa3e1d5a29d2bb5b9\ned2d7f09d80ec3a259577d199a67fd7\nba212f7bfeb2faa75e05d85b12fbe60c\ne095933fc153f7371ffe260c5a3e6b53\n439ea10da7a148bb2f210d96281fe860\nd256323d2b756b9e76bc197b3a3ffc0\n7a22c6cba42b73cbb5a356b3f810d217\n977787b51140f4bba100d1443e9d6b3a\n5a04d5055cb9e3c3e45ef4135c266a12\ncd0581de9bae7c6c7d1aee311ce12c70\neabe7e2ee9547616214a15a5a42c49c0\n3b4dede09e8125639d653bd9cc95fa15\n7580dc6788ab60123fe64ec32ae84891\n7aaed3e906eaf675a57b3bec78e5d1b3\n94c98b1e67618bd234943af333340cd2\nad6fc60679879c234e08ba22112c59b1\n78253ff57339985a28c0cecb7de2397a\n34feac86a178437527eb00c151c6f711\ncff664776c56345a6c71cc363c51a922\nf22dc1d847c5b82f585f699d798e7ecf\n993675648a0f1b1a9a87002a4eeaf610\n53f5bd148ec293f92f44039661980ed\n1fe2d919fb4685ea93271d2223fe04be\n9da456630ad311b917fe334c5911fe13\ne881a6fa6c3443ad5d28221e3b996124\n250cd21169a42a2bfaf26c91ad27299b\n8e5866a0c093f5a17eaeab1f0c9120b7\nb6e4f287aad69f285aefe1fcbc7169cd\n5f726d7fca7ec04131ec2883e34b06d0\nea6571f7ef98f562fca88347d0eb86ef\n8c89f56df87eab907e5207b5eb59c49c\n1eefaae6b1ab9615a22802c4e64a501c\n6e29841d23d6a8a06cee93ad801259bf\ndb8678030bede8ba88853ff6bbbb4a9d\n392315d4bc7f11f0ca67acef5667509c\n8934c3cc317957db4637188d1bc69cfd\n14f18c8b697d79e099e8bf807e902261\nccd3c75b72708a90c955e5ed03ef3a2f\n3b9e28ad033825b6d0ae74ce506ca590\ne6b3255eb51908a53c99073e1068144\n45b839c347e02c86b20aa91e9e90c311\ne1b85df09d33ddea3e43be0b542efff8\na38f012987a2b29593df8c78d1d8e26d\nd1950f4d38df72f59d297e74104d3ac3\n29ae41cd05f7bb1e377940ad91815d8c\n6ed74f11887c521f25f6f84717a88f8f\n44087c74e5ea66dede436dc05ae39dcf\nd58ea40d8a5c8c0c362f4098f2ea31b0\n577155d24ebec9833ce2d31ef93d6e81\n818258b7cc1925031b17743c18fb63dc\n4cd0c4c75f124cc117b431cae0dd70ed\na1a9c417180124f1a6c03a53cf0a14c9\n7efc699b5fc94757f93239519b75aa98\n8a8934756916a42855ce350c1c834503\nbc48080ee5498d721fca2012865943e2\n9954b8f6fc40f0ab1cf96a5dc33e37f1\nca13d22c81c74698d97cb887517a1526\n625d465a8d9342867ff6ace05b36a5\n9098e2c564337b01bde1c279d540fc66\ne39bfe8848fbf76540a98a90bd0efcca\nc4388c59f863de596edd3f7982f0bf26\n161b5260bcc6f8fc9befe610bb4b9f25\nd15d37d902d2b8494ca386b8f1ce4c62\n8840824c8e5cfafff2b7361116ad2337\nf7ef48c7de69ae03cea3bc3a9009695\n20812fc7f9dac9a51b3e6b75a323070\n7d517ccbf0d2b16c50fa82c2f036109a\nb2582dd22be909767ff6ace05b36a5\n5d45378d9d2e11ff497df23b9b74f339\nfaf951210266013cbe9d845bb7506ca4\n343838f40056270a738e43095496b061\n98356e87a3f5db06a0bde355e2e21370\ne8632c8830944cfe422be95e44ce930\ne1f77c5cfd7ea402738e43095496b061\ne1e7caa05e80e973308c1120d480c5b8\nf90bf59515aa8368e42c56c78fb88524\n9b673972e8873bc403c57e7ce69f902\n3fc5f57053b75b5a91cd5c82dce55c17\n37ca38d0074d19978c9e244e3fbf98f0\nf19fb80eae2ed668962a9d5e42f53a23\n82a1545cc0b3227ede650492e45fb14f\ndfef8f26e9a8437782db9fca4b68095\nfba0f822f16932aa10566a0096ed09d\nc68ee4070eb551c84e71b4762a7e566\n7a5acf5f20f8cffbaf030eae870a2d14\na29ee68d1279e8ff98d5fc0473d00a1c\nc98eb7f9b2b99702f51f77a6d7299806\n52c2b3f2ee5b3519febad4f49b26ec52\n2a896f1d6925cc61dc89a28b5e6678e0\n26a28d973e40648db40f0ac0fb9a650d\n460a915796f36eaa55f86bb3ad320a33\n12cecbf8685f52aaad762904f2c09cd0\nc85ba9a3e1896eb254adaad15f0d584e\n7fd9f6bc9a89d240800a0120f3e757a2\n746f953a49a68cc2b76e29c9c43bc7aa\n8d10d8d72f135011febad4f49b26ec52\n339b9707363c16d895341c0dcefceb68\nd26eacf8d87a522647839bae1bc65257\nef130b03885738918f7d9678498f2295\na79ed851896a40d8c10555abb2efb430\nf7d4a0beda480047448174f83c9a5f1f\n5b75e36e302eb2cee9b7ceaf400b2906\nf9509165955416a79b4cf10910d2df7e\na1cc1745e89098913a4642fe4c259750\n778d75fb125165379d297e74104d3ac3\n4b887a7bdcfbc4ca7e04e68609264bc1\n8e33e392d91ecf1c668ae11a7db5e82a\ne4c8211dafa5b903febad4f49b26ec52\n9e408f772321bb1920768660cf080d12\n409a932e371e12d490ad276cd2af3a4\n42fad469afab19939724db0ba5853d76\nf7bb30d9c073c0be786dd1f2ad4d8c65\nc5ded58bf0e362eaef9f898cda0ff409\n70e3188676407076c3bd24f986301745\n3ad4ddfda32220c388eed60433632c64\n984ccfa5aa5c87334187eeeb0dea4986\n83dfe7d2df18ab58fcd4910413c446d9\n1eb732041cb7f2d649dd82184c01c565\n6ab1ece006f03b9c955e5ed03ef3a2f\n56f6e87023f0dcbceba48f396a34b9dc\n3fedf94dd96ccf8db595eebc49c98d3\n16001e59100b03c5fca0560918d50ea1\n933937b12b4313dbe7c58a5ade21d962\n11fcb3abf0a487b9c3bd24f986301745\n9e5c21e11110fc9ec60dad40a0c0e85b\n43b0de9be0df3ecf51f77a6d7299806\n364b9c00797efba693ab1bc955ac34ff\n81922145630fced4b49e18913f04bee3\nd1807006e89f9e7c3087f84b199fd297\n299ff1bf2618a4b584b039efed4b32d7\nfdb61d6d639b1f51851f4ba6aaedaaa8\n2f5f32ab1652320dba18ade30e563d37\nf8050e698bff9fef8d1c65d617ea0b5e\n40b55c0578228337f521e1d72c94993\n91282b5e9c019a1944ee2f4962f1290\n487bdb1274b8942ab8e1b99345a5afd4\n31ecf1e704642491ce372179a495fcb\n82a60a0aaec8d532150d30262f9b49dc\nd05c4f1b47e37e574b3c42e318f3affc\n4454343a673c8b3483e0de42574c850a\n3c1f16ccf38710e64b3c42e318f3affc\n3e0b8992e00a327bcb2a965e75be701c\n45320414e630ca38b96f0049223adf04\naa6cfcdad80f0ea961e8d86dc5569c02\n33c8b21a29bef56645de94e1bc93a4f6\na6f69bef589c295d51ef8c8b1fdb41ce\nf37348b116d83408febad4f49b26ec52\n1ef656b0524b755eca6c3f11f48d07ed\n48a944dc8751ca7531370540942e6ad\n2c671dc7902c140d3b52a6690de3e81d\n5844a7d413c48b3eb9ea118461aa8a00\n70d0937e1d38a9c2a45b742ddc5add59\nadabe7da527cc52983572753b9298b2b\ndaf4f3295db84cd39420b255bb5956f0\n9fa0a6c2c9d102cf2bfb1b91e3f49afe\n5fbfc884ac25001e29426a0f57e4d15e\nf9c98f76522d375d20bac10b01e55c85\n98412ad8301f965210c709fd84118ff1\n35f7655867f9223d82db9fca4b68095\n10a4e263f8087c4b8cf2bc41970d572a\n948f1bc3a1d574196086aaeef17e8c87\n2a5618e34de3e26a20768660cf080d12\n691b01b959200d20e44c4b5687d5d5c8\ne7e0942dddd1e709cc963bba1556032a\na3f060a21d7a29bfe5b095b06da9076\n70bfb9d08e50970093fcbf4338a54def\nb20105f74c7a469647839bae1bc65257\n2cdbe6c91dbe4fbabc7589eefbdbc3c5\nd4a3c7e26b4a6eef30bbd4cddd04c77b\ndb545f0422e72d3379368d1198f406e7\n35f6b25bc7e016228cbb8bac2032149c\n1ae856def06f8ee36bec1b6707900b50\n4ff87c5a639b181b6c6add082247679\n95483e7754185e03986b14b31452df23\n28249c48cb603cb9668ae11a7db5e82a\ncc2a9dd5dd6fda66e02a8ce45e810a15\n9b10ca8fefd82fad5c10b08ea69398c3\nbccc9bc81809cc0d31a3de62b78a7245\n5a7f0ba2b1845e7bd2a79e157dad9b1a\n74d470850c9f9fbcc2b64c0adffbe398\nc572c44eb47c2a15c43d2b61614d0d0\naa118e3ed06f00a85c886bf880a258e\n35e5159ed908c99c8fc6229eb64e56a\nf1468b16ea560ae551d3c864cc68e22e\n7cf228b6fe5c6c596c342cf382162bc7\nb0b704778e9e06ee22dc61df4cdad42d\n9e22ea3530631b5e95937f6e581cbd41\n59b6e5cc2b4dab5ebcd25191f45283d0\na886d16c7fffeb874d6c356c3dcebb\nac440171fe3edf2a5284eac239212f2d\n711075229a3bb0fff51f77a6d7299806\n5d6b4205111991c879170a5f8beda902\na00b79f779bbf4d7bdfce662c3df88af\n3a1a6dcf1900fe42bdeec9c43546255e\nd9744ed1255664e7b0c90fa5479c8a6\n11aeb1b72f433cac279f06792ea23384\n97e6d79058bad189ca96b2737246fca\n6ca761172d2c1ba3ce522e6dda26fb51\n3820449f17744298847dc1a0820caba6\n5883da6d43e3b9743087f84b199fd297\n8768002c872788b8e513931a191fd77c\n63790a73bd92ec04a55e6ad8c321a190\n941e751844d8b0aa8b424343280aeccb\n4116d19d60fc24f037a346dba83c013b\n50b076e7917c1297cfb87ab5efe3dc31\nbb84310d8f022346f2b931201029bc76\n5525e36ebab96f98d989c9f989a09ff\nc87729314f0a7e2fe67d6af004465e0b\n76595f5c7689a4559ccce4c6d5bb195f\n4e5172cf359d577154ffd0de2b0db5e3\na767beea4085c58d301fa758e52a6264\ncbc2d0b1d7a64ffd2ce1f2e292dc9c31\n1b90a6d174038fca46ae6b1cc949e238\nd9b264b94aa3aab652f6234a019827aa\n1bf71e2f8abc7698b232f4221eaa5610\n12c8ea55000707be8ea4cedb988ff461\n696425932b878a839335a4bbd2281da5\n725f69c0f29b712e8c6540fe6bc16d6f\n2aca16abe2e5175281faebbdea6bd9be\n1f8ff48858b1d78136c236fff3cd03ce\n96cd9d2f9dc5e102a8529d50958b092\n289f7178bfabe667550a2025ec9eef3d\n127e202f77eee5725d02cdadf545c773\n92aab082da6375cf5b9744d121bf802\n7fa4f9f5b204af31e95cd0dc8c2f0e83\n30573f43ecfd93f0684b7bc3f8a9aa55\n421d60140736eb03d098fcb46b95c\nf7c7e05da64f6e4f2aa0f30a1572c50\na99b37edfd721010bc7eb7ec22211551\nb47d8874381c5a03a561edf54b47b109\n8b7f24a53beb18e8a69f5de385a4c191\n2538c4fb2a271b06e74bf18c5b9ed60a\n79f4f47f29267c4cc46152dd624f1d49\n497d75f6a5b0c25077cf3bb06f394ad\n7afdd54c53562cfe43008e14d7d4c137\n440d371725f4f6bca570c6c691c987a8\n56ffb40d5f85f46f1a72c98fc69f22ac\n4f5719eaa2e58c9cedb0cb3987e137d0\ne92bd321064e981e5208aab875b932bc\n8bd48b85e15e23e162c098c9081f25f4\n6a31302378d14412d42ec7e303174a87\n5a3789ede7e60884e35c5921850b7bf\n7aba44f7a5ca1fd9a35da04de92b0f11\nfb9e9c0767a92d2e923b3c05c4c4fae\n1f24b9a75606239466e24bbfdb446f55\n8c8690ed4cd0a297e4bbc5bb7fd2afa\n3a466eacf622b3a13a5badb049bb270\n520fad3fdb9cba4f1f335cc23d448de8\n638c86ffc1c9e00c5749f7a8e1644575\ne6b61073fa46571df71e06115e9c3b3e\n19708555411f795459a339f8ff4d3160\nd38a9d0fd304f3eeb6e024121d412dd\nff3f1004c4126b966d75aa5db61c1fe9\ne40afb4171ccc460de03ab2a27ba7531\nc72f97d0b25e030db0892e337a99f42d\nd1ea83fd1ee634963d5da2a72f595df5\n29531549b0a6a0f5ed403132b02528bd\ncd2a53371cacfac49a3528690d225ee1\n5245ab687729495b8c728dabc1255d\na4473d9c69324b492c026fed19c0d206\n6358336cbeedb9232d9fe390e23fd20f\nabd1518f823abd0ff51fa0238791f5dc\n6718e0bfb822e591738e43095496b061\n50d253ed67d73392140251e5a7586890\n1875947951e8d536365c18a0ba9d127c\nd14752f7aa2f7ed5d684faddec3c0090\n791987a0e943f009b5872b4cd3f92676\nfbee497d2941270d79368d1198f406e7\nc271d00152fb6363214a15a5a42c49c0\n62d2038ffb8b9df253041c49040be3d5\n26dc6dbcf6b36278ed4893d5d6c77f16\nebfc108a60197d8d55f46d55537192b6\naf8636a4e4d6bfecfebad4f49b26ec52\n7bbdfac048aefc9a5634c21965ee6bab\nda84e4621c255691490ad276cd2af3a4\n6cdb79b485d9df2dc667146eae95e931\n7be495e700afefe6cfedb1d8b135cde9\n366a7129cdbaa0b8fb94cf898f4fa24c\nd5f55cf498a7562eb000f20a5153622c\n64630e265ab5e1604b3c42e318f3affc\na9dfd3433837da823fe4267232c5893a\n6f019fe6ab60a3e37b11ae648ea92233\n8b3bae4e65ee0f67caf7718498824d44\nb23bf5b53e1e61768984d623cdd9496c\n924ea50a921ac1e032fe69ab8bb2a7c3\nbe971a899c96649262158b7ee658e910\n8d1a33ecdc93bafd727e9f790cd597\n20ba57a048c518e5732649bffe80ba61\nd3aeb75da27b505f1c9acd0bdfdc9f62\n6b13e49c5c13050f5589b48ab7a00cdd\n440b50a6bd10d00eb000f20a5153622c\n37f8726074a5bbf42979546ca769ba4d\n665a646e8413fb17fe537547af4fdabb\nc29fc3e0096d399e8d4b2547f739c887\n889a50c35328c8ddfd91359c9f546b9a\n27eea1054be1880a7eaeab1f0c9120b7\na479fea6394b100a98f849d6224d303b\n664dd0e93a0f941a47fe752318e646fc\nf25cf833c2200fef239d0ce9a68d2afa\nb879ff9d30911558fe2d13a096d8b561\n892e2630024144f94f29aafe46fcf418\nced7aa76ea532e0a68e125404f814ba\n9eba16c76875225a2d69ef58c7c1b72c\n92246f29bdcfe82cd323d6bd8db8de5b\n681581df89b7d39975eb2bddebec5e6b\n49f7fadfe67b54c478b3bb39df25d28\n5c94122a5a3682bdb2d2900ee0ae7e0\n5897116720fbf6b5d1308d82a3302eb3\n738e5983a229c432db984b8f0550fcd4\n155599b6ab61a872f51f77a6d7299806\ndd46ae4a6d6cd1154b3c42e318f3affc\nf1695a9ec05b757ec7cb90e4399b486d\n668da5fd442fa5ceb74af32735cc24bf\n2a5cd32bacd3ce601ba08c4ff5d0476f\n99e89417f985d077738e43095496b061\n9f097427c4d2bb4af2c0658ad22a9a9b\n57b68a9891773c89d27b31bdeb5f5c79\n5b100f548ae5b162f51fa0238791f5dc\na40281aa13c75ca2ec4a754398bdb370\n3bd1fcc6ef50264112126d1916209079\nc838d6a451994749310af74324aae27f\nf6e56ad2fe9e6c30253be0083bb3c718\n2c0b0f0e9ac21f6ca1a2ce4cc65d552c\n76665ee7994012f2bc74913d2fc4a0c\nb8003b8cd4263cb51573632af24b9a9\n7ec1ec1db13eb349ff085529822a7226\na7d4b7751892502a9055f83d11955109\ne2312615b21d7690c4f22423196a0dd2\n4e76319c1489ee71f4a4c7b91852bb65\n60c0cb7599fddb50d3d709dbfce9caca\nec6de49b6fee801a4b3c42e318f3affc\n33bf7aa0aa429a98bbfa993b02d27a30\n49d441b49adde95b20768660cf080d12\nd6ef0aa7b674c171fb4f26e87f6a6814\n2c9756c06606c05bfa85bd040b2a2468\ne5b4980736c034257de96030404c16e9\nf9bac9ba3b878cf23a6e0d0a575f76a3\n48c2e34854c9aab889b74a90878aa3cb\nf220f4b4c7b79d7ab54f2a7bd7b06a98\nd8a73e0d8fae54c23002761e7a3ba3bd\n43c9aa5ba91b803edcfcef693e7ec696\n67ec09f7e7cd6f059f2349486c570dd4\n29c4539ae1760a50c955e5ed03ef3a2f\n4e8d9f4bebd6a97670553da2430bcd98\nc3cd2a7f997a6a40f3017d945b17b4d6\nfc7ec69f0402424de27790b0ec8671f7\n22f298bfabc8982691a76c36d0ba1ac\n8915112d9819c83633b2a5760b4dd1f\n7fef7125c14e0fc3b3ec4062c13aac32\n7e85deaa7bd114eedcad73f240f03a20\n888faedfa6002b8cdd7e7281b421bca5\n8fdb0cce840b2977d0edc2a586731adb\na7887db4982215cc5afc372fcbe94f4a\n9c5ed0a888a5807ca9b8d9d3b5cf54cc\n450ca83285f0a0bff51f77a6d7299806\n96122c5c0777cb85d3520bbaf4a08c12\n54108a40e3e2f09b940268b86285118f\n6ef3a3de6152b19be513a3136ebdf08f\nb878329d1c965d195f9efc5cadcb44d7\nfdc04ac9fe8dd6db04cb542e2c50eb4\nf1f3021c1469c8e5610c2a68437007d6\na68f06157d6ba8d4f51f77a6d7299806\n62cb358e8c73add6b71af98eaf823ae8\nfcc0737ae08a9cfb63eca8f941f00cca\n86996ef1ba6aeacc64558a1c6a2a9f11\n16b72d74bcac545fe3eedd8db265e106\ne3c8c6e7bc421e52e4721974983917c4\n884f8604518cdc98c3bd24f986301745\nfa83ef67ce97491ac955e5ed03ef3a2f\nf116ba8983e6728eb1f243bab39fb29\na3f86421758cec25a092cc351404fb5d\n63de5ec054b2d310dddd8ce1cda8c6d9\n25aae534f3aadc9c9aa9d7f676c1fd7e\n201e927f4979bed6febad4f49b26ec52\ne81af191bb828526815b2b467e8e2eac\nb04e9713af0d7048ce87696fce7b6aee\n6a72d6a26d28b02bd626c689702869b7\n3b91620452041b664b3c42e318f3affc\n616a8ac7d1667a062c1a544eca74c954\n89e9fa41863867de72ee08e78374a212\n7ccb70ddb69bf162298a458038c49d73\n5807c27ba3c04612f51f77a6d7299806\n1872afa831cc7f671b50574ebd76a45b\n6b5f3b7fab02f9e358220b7cab409d3e\n6a357f24085bf0fcae199f04f49518bf\nd62f718a14db87cdb40f0ac0fb9a650d\nc1a04d0c233263aaaa199671f55e5379\n844199875fab83dd1b17743c18fb63dc\nc46bea30afbbf07fc1997d3da2532033\n7e261e5b2b11cddc557e22af3c71c6c\n679e46c5c67fadd5c3bd24f986301745\n33cb211cda607e9b922752cea2acdd17\nc2ad4e19213d839873baa2510487646b\nfa4d09b10928d8322685733c782593df\nea4fbea57b0b7b677c0ffcaa63ee0500\nf720b36f39f9dc0e5582a46a1071249\nddb20a7778038d87f51f77a6d7299806\n2633bba6168a580c8997f7623978b6e4\n3d7a9a28bd6b772a878cf98f645da333\n3dafd09d21c9ca607d55378e40c7c3d9\n2c3a4ab3efbf12d74ef530b007e93f59\nc6304f008d2a44f81943903831aa7f4d\n785c03a00ad37ffb8b424343280aeccb\n5530f95795fce09ca71c812e027f94d9\nf83f03cd8d6d787f73678cf8aa86fc01\n98440aaa709af51192d5b25c536d8044\n6631de96600690d158c88d30f502a452\n97551108bbb5afc36199d6fe090be061\n51f0461221d5a86370d2e38b8c410c62\nbd14692fff933409856ce0c2a704bc40\n5e84a7deca3e153ce1c2d3f86b7aa002\nd95fe848b19c277a1fd3f440755dada6\n104c5225ef0a288ff932326d9778e21b\ne12ce317c2d9fd0eb9fb1fee7d937756\n28411ec68714ab87b9ea118461aa8a00\n1a9036f081dd51683a9bf8c718fc345e\nf1b42fa8b6b48e927c34b035140384\n8d29772f3fbffe408fb9278cf94ef5eb\n1c2aa66d76302e1f696f6d06eaf4948d\nb4c66c291f2c46581c1b3b2ed8d13bf8\ne14e867c0cfbf1f42cef66bb37b0cc33\n2e71bc549eca25fdfebad4f49b26ec52\ndd0377d3a40b57c360885f79b3a5579a\na377ae927e09bbe976e9713f57a5fcb6\n1a42167b30554eb8f5a6c82f073f291b\n8e9954ebd739a4aa10234beea2422457\n43ac9f2d108ebcd0c3bd24f986301745\n7f29e2e6496ee99aeca1c556848f5db1\n6f87ef47500b9d20768660cf080d12\ndc956d4dc6982188febad4f49b26ec52\n8219a48422582b01c345108a8f6e3cb\n52cb81e736aa856cbea68008b6e5c5b7\n614c37441ed33c338a3c75a1023723f3\na7197c1bd1bd1e47f9715dc5d7dc0802\n31e3a6b2e0b40045cb2a965e75be701c\n7573bc5999555ad635e2fdf95cd06839\n2c730735f7f3e60f848ac41b30fbbc29\n688bd4df748faa62820018801b237b3d\nd1a0b26d98ee4a877fa6d07b5977c143\nfc7a8af42911dc77b4169e4cad9bb63a\ndfa86ce9f892793cf51f77a6d7299806\na0fd031270822841febad4f49b26ec52\nbdc7c9339145602af51fa0238791f5dc\nbef379d51df02d5fdbcb30b4afc25496\n86dec892a246e0c02cbf13da1d4abcc5\n1fa211118fcf90d858df8eeaf3dad1c\ne2807c8c5f5653d4bd91edd7a65c1323\nab8644ffc94a2f2dc746cacb18b4d81a\n9b56632bff0d00dbd626c689702869b7\n2b0c16b26ebfb88f490ad276cd2af3a4\nfa1dc9a58da9ddb6235820b1d1961ea7\n72da00b4d8ab22bda571da3abf5b1931\n23437993281f7e1fb06ed3dfa60b19a1\nb052445a4de3c06a10c0c01485abc473\nb9ac8f3615d8ba0bf51f77a6d7299806\ne5261b63c63b226bf7e56c1f3346606a\n71581e6511d7782282e6c3a4e742651d\nb4fe4d5be595c1158c1cf3f7d7f0373\nb266c6e40c1e976ef3c6b7a01c418f2d\n3c6ced93a3103cf34b28edba8d17a601\n5b54a7ca6d758fa1e12186cc8c5022c7\n5ad2333321746a8b3f222a37719e9945\n12193ca7bef40d40a84aed1cd93567b2\n2f8b594d23665a2de8058cf23f6382c1\n5ca1a1574679afed68661782af60b711\n6124096fd3488b7fbbc8ef3196ea5fd2\n1599c3f78f521c0c3bd24f986301745\n7e651b7d860842deb612ac3ee32028ed\n82271bc614a76c28890992ddacc04113\ndea755ad1156374f55f46d55537192b6\n63c4c59906d69b0ffe15c1377dcce2f7\nd43664b8f4df83341ee9d48493ad639\ncc5ef32dc87e0f245dcc7ddfa72357b1\n726164afa497b154b075b4c36d25279a\n57a50a7bca63cd91e03b4418ed1a4f3\nd77287719eb7bf0d66ef9dd2f3ef27d3\ndd3de76ab27a6aee8141276dba5d99db\n317c099a20806d10b5c1550bc8448972\nec8efc59f0e8c0fa97b2fb14fbcb9c20\n5d9f9ee95a7e1623fe9d8ee1a924ac2e\ne8f5c6944e41c12840d79382490f0976\n3c46109dc46f1714cb2a965e75be701c\n9f78ea7856f21a4ac8e00bb0b2c9ef1f\n10b5723ea035cb047464e25da6d2e90\nb96a360ca5a86bcbc48d90eef8384210\n30b3454ab0aedff9fc30525e763ef5eb\nddcaa720a7b878a4beedb4c8fd29e2d1\n15b0e9fbea6581354ea9b65fc2574d0a\n651560f344dd987fda6f0c2ce3101382\n4ba447371db8c37c74739c2c9ecfb3ee\n9fecccf2e75e7c8e1099144def22d76\n76de9805c6e208e6b2644d7d4d7ea2c7\n7bf29d83522f630190ff2a7142510fc1\n438f44f223f116e3c2a9901441a2941b\n9e068a0ec94cb7dbf51f77a6d7299806\ncf46448f9ef495c81d022067655f6c16\n967d0f37416158b897a6420376995cd0\n9207224582ee8aebf57b7c8ba41c730e\n6bf058da5c3835b415ca6115a4467dd6\n65e5036f67dbac4e1cb7b51444dabacd\neda7058a8c6440b7abf529d72f4c9152\n61ed0adc69dd8eafc3569a6df9a670f2\nc479482694623359fdf2e93846e20960\n827af0ff0d9eaad196a3517f50eeb9f4\n37c76d4830a4968b719d8721fec72f0c\n75ddfe6d71b14184134155606601dcb2\n8f380fecd7c5b0e4cb95bbaeca3ed4f1\nf82e5554f1c877a1e074517a246f1e65\nf84b49a7d9e6f31ae0c8359faeb78bbe\n7d3a5c7a3c319544bc4ac3caf16ef65\nbe81240ed3cb8e5a7d8864caa856253b\n5db59a8ae13705bd7843fb4efdc19510\n1cba04d4679da07ef51f77a6d7299806\n592420fc90be625a8b83086412477462\n7fdad5057b8da165fa9f3ec600076f26\n682263e19fe7c52d492d9da2668ec34c\n3bf8b96b10519a984afda4ff857119a2\n2f5d2dfc1c8b75666c8f2acb6194d7e9\na52ca2940a24a916ebadcdfba7971b71\n5c8668d215fd79079a037b4abf810691\nedffc05155544431436e6787c76ef3f0\ncdf9659a23c89e80a23949c21eddef76\n93bb999fd7e586199fd83fd2ba5fe30c\nb1a156c751cb960f270371af13f7e37\n87dc5ace74ed29fafe43ff1e45af424d\n7d8ed7685620a16db2c48fbe46b01575\n91b12d3af7bc52c5550384fc1c3c3d02\nf4888967269031b295feea036c244c98\n55589c71a2abfe97f09df371fae9d63d\ne20f1fff2b84f8ea71ba8e8bdf40d1ea\nc62dd18f43f11b858d2fa6ffb11d1cb3\n43c1a78d9d8b3735f2b931201029bc76\n2da6752496e0c37961c55d3f6d7eeb14\nf12210d97248ee00e3db80a3cacc6e3\n1b82432d7a959b8dfebad4f49b26ec52\ne7dd71eaab0f209dad5067eac75a07f7\n8a86e3045ac5fe7e1f335cc23d448de8\nb9009a7b33df161ba022b82859ebabcb\neca46f21f2893069c0a61ad1cf92b694\n8db2878df7471c53e45ef4135c266a12\na3f3c3f288a750de83d38badc3559dbd\n9b6395c94a80daefcea003eff0268278\nb3477e3ea9fd1676f016aee3d784d83c\nf94b4fa5703a0d96983ba8b03ccecdb9\n4cd7d883aec1db86890992ddacc04113\n76206b183e39910a1c6b880f91673ae8\n27008d8569ba4426f577ff4de1ac394c\nfc64a8a31f30ab8bb780b07b76df3b4a\n2053961ba985591af51f77a6d7299806\n6f53e944fcac6e49795407f097f1ca4\n739a97e0e3c446c15255bb0d3c16575\na5e061fc25bff768623d10a210f40a3f\n449491be7c2586bf261efd8e659b02a2\na516711827a396085528d560ddea455\na9a81543d5297d13dc20930e6fc85682\n4c49252bedda66402c2d6a2f47ceb5ce\n2b6fd7a94ad69b019ad1212263439f22\n797c7f154643169bb07cbf788ba0557c\nd1f808613f6dd787a2c8f09e8ae34f27\nc5195b46ac75dc8c20c6f761e8cbbf\n9a3194d78a592039a95110eea24f99c6\n3dc68207126e2e3dd038992c6975ea76\n43daa5027409cbbd4b3c42e318f3affc\n9f76504d9b551e548c37cfe791015e2f\n83ce738c3cc05c54283b00891f680579\n27ee20b7a7e2467980dbca6e7b64a4bc\ne7eec2839ea91f07df6cfab91d65bb91\n573922f28958f34446bb945d4cb1ad55\nd120d47f8c9bc5028640bc5712201c4a\nfa6952fbf7f52682aece045e8bdac80f\n8821c22c61ed87e3a585c7706fdbbe10\nd87841ba0db5931576a45e9a12af8158\n869516eb98eb3c2fb54d798b09097adc\n62a4f3c24bc69f593eff95e5c4b79279\n24181beca16bb46bf9931f8a466b18bd\n40fa6161e7f921f6738e43095496b061\n5fed2b96d705323b8bec49a2a30e37ed\n706dbdfc48b19b0f423f1f7d60608f89\nfb7124d1ea2937f252219cd24638ae38\n264a075e293394a843638dabe1eb5336\n5b109b578e82cd4f40ebe9b2fa95ae8\nb623ede2cc40ae1d377b9297f3055210\nbc15e43c4af5a6d0f51f77a6d7299806\n379ad91ceb20859b0a3f25f5d8cb0f8\nd81df8f708d4360c5e05d85b12fbe60c\n8df9eb57d6f6bf7f490ad276cd2af3a4\n5000e001c72cebf44f60f15da4c665d0\n606b2e47238b02178c37cfe791015e2f\n80ef50d3e67bfa8783ca982ecb7c4900\n68794d2e264ea2d75cf2470a6eb9a24d\nd3645a097a49042bbeab86a0a7f61a1\n7135fed6de70df8d25fc264b1d80bb27\n519ff6f082f8c41692f109aef7d7d6fa\n9bae37b85e2c71ae62158b7ee658e910\ne2f632abcd84c03ae7354dcb6082ee59\ncda92b4188af3a17c03a563a9407c5ea\n65ad913e23eec800cea003eff0268278\n4a3839f687aad9122d98de61f824e5b2\nf4b83b7fde9a4f0cdc3d55ecee5c17b3\nbb3aa93ba6c9a38afcbe4e14ff0c4707\nf7ddd0ae5b0107efdde6d22342684df5\n7eabef19cb02a9e6aa29e9f0529e8ef7\nd2ad73295752e323255c4b3adac8f815\n625c161306cf958eb000f20a5153622c\n7afb1812e86fac4f492d9da2668ec34c\nb3f05a35fcb82f678d3a66f462d312e5\n98f00281db9a43aa6430c2c15987e4cd\n2b567360f02ba48e4923701c409a8965\nf74a63793db25c8911fc2b865c2a185b\nae1cc74a1db83b0e6ab95c4e859970\na4e595d77097b224e2b372d25f6c9482\n8730e3ce4daf7e264f265f0c85da0b1b\n27805445a3c587c1db039d8689a74349\n7d6ad371f7037a6679368d1198f406e7\n6b2edba33e92b96998fc1d0403f6ad0\ne58448ee821f56bc409de7db3ae4697a\nffe4383cff6d000a3628187d1bb97b92\nc5f14fe692e70a5f668ae11a7db5e82a\n5c2ec61293c30ee7bdba4e1fee183355\nf5de3fdb7c073f48dbbc9440457e303e\n316a52439f11450355f46d55537192b6\ncde43e92674a66f46f3f02fb4d0927eb\nd177f7632a4bb3405073c32a9cf4a6a9\n343b9ae8ea03e45070f79ce36975718f\n49c24587a96211191679687a9323c13\ncba38f14dc16d5b5fbbc7c456d85ce59\na44249589b77b4674b3c42e318f3affc\n161a209c418646444b3c42e318f3affc\n60ebae123ae653e2a4385667567ce9e5\nf9add10d9e9f13f413ee1dc69b2c2bdc\n228561e28a40fa1dda49e29c548bb1eb\nfe5be6c8f1599697c3bd24f986301745\nf1afa2f6205f5c552ecfa9be42d43d0\nfc2ae302325d2c796820bd77cbfc18d6\n9e3586331eca79e48a5e3400c9c8f4e3\nce998bbfe6fa0d22bd6c42a70e9434e7\n41a464b6ea17ef5ce7321f25048c6142\n8669bdebc11a4646618b7927ac6e11ea\n688a2fcca4d94685a11f6bacf5c7662d\n623c9a5812ff9ac920768660cf080d12\n22c4449df36e20a025ca952293bf3fda\ned30f840756baab042678d21fbad4632\nbef84446fe50feccec7cbf3284585a40\n75bde51fca930e35dcc7ddfa72357b1\n994fac397c6246beba878f7904755875\n2cf794ec5ac1f1e0f5a97170d660a78c\n6606f65226a75c2e34fe19fa8681ba9e\n963ead3bc27459b2f51f77a6d7299806\ncebc20baf900f828147637a0471f2f73\n66255a0a235927ea1b81a92ddeaca85c\n26642892c5579f25998886098b83a99e\n1a43bd2e53364313f51f77a6d7299806\n29d2c8d1297d9f5c9fa24672a35ae8bb\n5884f7c8367ea46c7c6c78d6efdd12ae\ne476ca4169c3d0ca490ad276cd2af3a4\n912589813b9dbedaec85606b5c87ea7e\ndd468c350fc655eafebad4f49b26ec52\n190ac74c619a233470412e9b69c8933\nd11363fff4e2dc6589cc5332e945f058\na8dac23add615b33313f9af5275b7c70\n97779400c9a7a15e3c7dffee9c6890af\nf77643cf323921d7c6542d86974f9497\n9b7b33f2892e7bb9562c69acee9936b0\n88140d7ce3a1f6c4664b3b9b23ddfcbc\n2ad18975be0934bfa93e942a054d60b5\ne935cf0b43767dc9c3bec646284d5a6a\n86e6ef5ae3420e95963080fd7249126d\n8d900764c04127df4b3c42e318f3affc\n770f6ebf01b135e556938a56df3469d5\nc8f29afd512b8595b000f20a5153622c\n6c026a5f412f0b93002761e7a3ba3bd\n8f4c9f7f38e15d03593ebeeedbff73b\nfaedeae65bb5644040ef1c8b63a628f9\nb0abbb1a540e4b3431540522caac8407\n29b55c6cc05c37606e066e11deddab75\n2df1f411c26e7d93ad64f84f9d54ddae\n64fd4269b04f91ecc68c5db94fe444f4\ncc6696abd1d76062f90f8519e58d5382\n8ac4ba5328ac4f423a14972b15e80b93\n74cca53996772272e91a460ae1e88b96\nfcf216336b414bfd2ea86336b05b146a\n4229653c43599d726ed8927720f5e445\n905ac0420ec18c415aa4c6e8ff29695d\ned6e26db873ded9573e85324169605dc\n64c8873572f3eae175c80d0dd670fabd\n1dce0f95df134fa6498e56bb9f3fbb8e\n3eedf733e9318ee06bf0788e630e3deb\nc094e213b2199035ed90a8a4ccf0ca93\nf46d7f7da9a056d7fff16555386d173d\na1cb5947d7b09c2c7ca68e217a316e15\n5a61158cfba0bb6a80360680c1602c7d\n3273b3eb8dfbbd8e6942c5426df6055\n8e28f1259c6572b86cdcd27a8d5231b7\nfb4cfc22ce88e69625d15f7f2ce4065f\nad5c26058efb026446b5ed2bbbe6c\n9a066882ba79738fe3767a60a4ba1ba5\naffb5a80f11b383e1c25d54737ed5c8e\nf708d5284928431355ce350c1c834503\n5ec6da31cbe72c7f492d9da2668ec34c\n3ea744a70049d4edbd069216df40b64d\n17e171f6714e330d869e5ec10662e58e\n9184aa5ef68a383918c27c564e9b3b91\na06be76ebccfceb91c8935ddaf3dd9f5\ned964779023b7af85f6276ff8d24e520\nf6f3b8e08af617e44733824eae5cd9ae\n7d5e1184ee0db5cebda5f96847fc5070\n6a52c7461aa23233c2e50348f23d3d\n2dc5edae3c234a5b5706d1c54190f27a\nbd9758dc06e3c2a01e4317813b39d4fe\n6dad3b17869cb20fdf94ba6a907dbe8\n527458cf1c581025d4b7f1dc8ac42b22\nbe5501adc4564d9edf30786b8faddb78\n3c65571a506b6486db5ebc3f027decaf\nadc1d752f04c338bfbe07b96393f97f7\nbacef6e42574bc25d43cd8b5619b5cb8\n4cbfd25faaa706daea0e09825584e0d\nfe82d64b0268ba75febad4f49b26ec52\n9d59a4bb0e08150148eaa510713cb074\nb305fed48f77f5d3b40f0ac0fb9a650d\ndd6e80140b3462f4a1b2e810c76f942a\n2da4d3085b438b4f35836c728d324152\n1af43a3e8d164168e563c86a0b8645c8\n91c2adae3b942b60d1f4836ba5ad2863\n61128b7cb47e0e6bd6e704b04fd0cd56\nb24092dde9ca927758aaf363794b1631\n2854c3a6724724dbf5561b9d69a2eca7\nfb4d877cc4f2c63b20768660cf080d12\n5d5fe5537c5496f71f344185981b2096\neb98dcef687ca46970553da2430bcd98\n82fe7fa7a6655955f51f77a6d7299806\n6c10998b950dadd4cea003eff0268278\n98108861d6d5235017b431cae0dd70ed\n7e967a3c6d2a46c3e2d62d6f0e6f01ec\n5437d8fcd8dcb47a4733824eae5cd9ae\nb3cf5b09372826af658d908a2254f194\n1270e7980d2d69d293a790c6eb6d2ee5\nead93856b735ec90f0aeabfdcb4e1dd9\ndcae4e8f41346522e1448c25c538991a\n4bbedd35668b06514b3c42e318f3affc\n21ce3306dc9589dec7cb90e4399b486d\n2b1747c389f4d4f1ebadcdfba7971b71\n25695002a51a61c38596fa5b590d746a\nab7405d5b3ae15565e7087f2d9a278a9\n3f31ad5e9cf3e51fa6255bf8e0b4ea3e\nc1371e87799885a7a329355bc8cbc0b5\n10506aab1adfe9f4eb7b988bf4f0d1ef\nd5402d5be271438ef51fa0238791f5dc\n9377b1b5c83bb05ce76bc197b3a3ffc0\na59ef94cc10c7a434e6953a92bb25210\n50da3e6b87b52ccc99e8bf807e902261\naf592a064d5a83989ccce4c6d5bb195f\n794dc333392caee153041c49040be3d5\n6146dea482c1e5eaf713a1a6bbd3da86\n15bae7fe612add11bf899e941ea0fe55\nfe9d363792ee708b35836c728d324152\n3dd0f8b4dd8a688aba893aa9f42bc953\ne8c92eb88e60460e9128f82277957970\n6f8f9aa1ac705db9fcbe4e14ff0c4707\nfcad199862c19cd97fb247f6727f93f3\n9d9d1a2c33b32c2078aeec4d01b034df\n29b57f226644c696e921ee447a9e7b42\n7ab9eefef9fddaa416a2b5862518c93\n4804f348d4028033134ee81f8ff0778d\nc842f85477f9bac0a7a7a90dc2dc5bd\n832607835e99761c276b6f6d90ee3a83\n3365fa395d93bfd8f181ff4e3cb0a33c\naf057970729b2cb255182f299fe41fdc\n8b963c7f5f091b3c98100807afd99d94\n7ef03c6cfa3621f8ae46e333ff78e5b2\n13b744116e4f23c340914702d8ab1d37\n30ddc80e5fd46bbef51fa0238791f5dc\ne222abacac76f2a5470d3ca356fc4190\n7f531dece49aceeb4d1bf4af7e44abf\n54215af9f13cbb0c62d6ddeaf5a29144\n5aa3a0e7ef40f2d385c2318bffd77ab\nc47d1d0aae5de919f2bf00ef0d8c7aac\n17f4b14ebbe37179ab2b7e9ed9191486\n72458d4233742f29fa24672a35ae8bb\n2e8500336964ddabcb51f8085cd316d0\n3dd217a06e76292b372b6139ac78b39e\n2c6741a965bc580072f9a9353d57f9ef\na0a17ed0d2367f433c40408002fc3026\nab16eb9d6122a5fb41cf86c757faf4f9\ne7c9af90b186c098490ad276cd2af3a4\n7f7d80803ccc727137b816e68e48019c\nd3a5f7b56e3e6e1482e6c3a4e742651d\n8bd8776f65913f17b3c03e06e3a5c3f8\nf5526d438b53a244bda2eee2725ec127\n3a0bb4b6c7245e0435836c728d324152\n38bcc47be092398cbc2921df9ee1c4f4\na19e6780182c72cf9bf8bea04806ba15\n287f1318fd5e282a185574a5e2255bb6\ne2c7ca786fc4b050a8a813669d8b4f2\n519c9687ede3906dccda8d28b44378b7\nf4fecae627f0c8906a4e86536413f450\nb7d6030b31b59895ba0b91d2ba672bfc\nd60166dbf522deccdc8726953f344666\nc9857deb88989a67b5851007eadc6f74\n3b3b35ab4412c3263edd525d249a1362\n9bdb8268baafde1f44c642950fb4550a\n6c8bea32e31192a5f1dc60fdf1e64165\nd60054176a178d18febad4f49b26ec52\ne88f6f4e0ed6d01effc6e457221b9271\nbda51fed12335c5e999b33727fe6db14\nab76021d53504f38f51f77a6d7299806\n9458b7fef8e84b819f2349486c570dd4\n4019bfe9bd7605f7a52709499e423710\n55aea0b2f76b3f7819592f8d1b2d193\ne5eb64f97f6161ebf51f77a6d7299806\n4381d6508786fbdbc694ced1c311421b\ne056700bca093e0c1cf96a5dc33e37f1\nd5b21d6154c0795813dd6eafe1477be1\na91554caeaa6f9db399bb05f18e8188b\n8497e2cce58a0ab46827eb366939da8b\nc40a88d13709eba91f30b807ae39b61d\n41fb180e6e8b19a14ee40fa7f6af487c\nbf886e6f28740776f1783a44a88d6274\n68247c737f565de8615b3e12f53b391d\n91dfc3575149ff71342398ca9dc32672\n701dd3ef213c653b39401293115e30c\n2da415184cca0aeb2063f99c33f5c49e\n8c3e8ef43fdacf68230ea05136ea3925\nf4fb644d5c81e60e1a1485fc0329e88d\n259125651db34085a4865f78beea84b7\n376a1d212ab8971125f61c02205f9a5c\n8d45802ef679d08a1a3b40747093a35e\n1e4d84c0be21fadfe84db9643b62f161\n2e61f5b4f26b890cf27383fc5a5a711c\n6cb41b2a5e27533f436e6787c76ef3f0\nfa0ee25a0c8109639f5f9b9f432d1ba0\n1aba52edddfad70d1bf0233e4c77d163\nb661b93b67d0ca908cc8e5a741a7e8bd\nf674a5a3c9c5c7c781faebbdea6bd9be\n1455ee780321fd14c3bd24f986301745\nc6442db6d5fc94a62744bf8869518694\n97001433dad08b48e471c0726d35978f\n15d58d8098de68aa48d189f942cedc62\n9bac9418d56234bcbc5996932c1238cd\n998d6e318306153c3d67fb6c1e0f28\n7473f09709d14a2a8d1dabf86742ec3c\n400369fdca7608a531292d1fc01277d8\n992c576d8efa6d5870c3ad1df4ebf5ca\nda234c874b8beef22e1a5fb6897c8678\nfbe97577070afd195c1975633309d43c\n63ed1dfd7ccdb5be20768660cf080d12\nc180b07c9b0f46b9f8c3d2002c77ddb\na342324aeff75ec7983d269bb8e4ede9\na3f369c885720efc459b850e737e0048\n642fa34b5b7c5e5414c0d1332b864458\nb8cc89f8dbffe099a2da1afa391f92db\nec1e1abd7c9f2eaf5dc565f18990abf4\nd828c9f6c3e9f67367d177b869ee03bf\n38fb3322efc35807486150a9b7f2cf18\n1ab2ac2a0af6bf36798e7d16c343c306\na59f0a9956137c0735962325b2299f4c\n6d31e827bea8e970f198b94f669bca91\nce8ec2504676cf874b3c42e318f3affc\n55104b3d3c3f853992bd9b46d18a6c1b\n601fea1fbb6d791589ccdb4a5b6b972a\nd5a3401380fdefa0f51f77a6d7299806\na7d1fb495c33316cfdbe2bf897d8a820\nc31155f4beed339e855931d119219022\n2e3e46e427b45207765ee729adbdf968\n69689176b53be82df51f77a6d7299806\ne791f274c6cc7ded36a36f8fd7d27134\ne9a1325245afff7c405d9b5bb7b18be5\n89580ac98637f985c3bd24f986301745\ndaaa70967da2bad4e80de6380bdd8c21\n7249c3e41c4807c0f7e0e05bae6131\nf797885ebb3b15fbf417851aee42d8cd\n4c0e985f49767f90388021e2e5bfc1bf\n80d80b73981eb265b30ae4347e74f709\nf67d8afd7611fcdb45e0993de2a122d7\n635005efb9077ca282c22b790c082c19\nd8e3d77a83528e5cdc1206c3c8202eef\n66378f0a068a111e57211f5bbbd90b35\n761a4fba430377171f335cc23d448de8\n8653180e64d70a47b3cf15c77de45986\n6b43398bac2b6979438d8caa9ae106fa\n1a10879bcfca0534f8bc1f8036e08e44\n2ee72f0fa8848523f1d2a696b973c343\nf7896eb08596dcd6f9883d2fd957d60f\n7556cf66da8b4498e12186cc8c5022c7\na21d0b3b4ae4436e76bc197b3a3ffc0\n8ccbd2949fd8809b82cdf8854f156846\na96c429fad0af4c6bd1cdc725a461877\n962bea9f435909bf3c6e55b962f380e9\n42f22cf6e29876a9c19a59cdcb309b91\nae632e7cfc0bd3a861687229b61f22f8\n2d5f99d5c2f3463d477551ed4bff707c\ndce2d814513f5035bfe64eef3e5b93b8\nde214239a28de6b9d00689b1b6482b4f\n612caa5ea6c888c850cf3715818ccfe8\ne534dbb5eacd708c18885412f2b0a4f7\nf48a955a73fa0fe79aad7644557603ac\nba99a0f31b2ba6e51f087e2218f8d26\nb1333bac9640db456e5061f0592f234c\neafa1680912b4ee3391e4d6c585a697a\n66dfbdb8c35a6db779bd5cf8fc22cc7d\n58fc0d5a44ebbf194f6edfbf4641cd2a\naadf84936183c2d7414701ac79f88733\n68bdc363716f181c61b4bfc684868124\n48443cc15bbca01f20768660cf080d12\na860f37217b12b26bffdf578c739e217\n77a683709892e56fc535a1d76df92ef3\n44ee5a33ebe173c4d28a525d8260e58\nf9573b0425b08a38f673eef39387003a\naff5771db62fa63d2406c215cad9df09\nf85a362c7607921a7aeca7115f6949c7\n44295d4ec0d1e1ae4eb7315d59c5142c\n58182c7837f0edc35da16758ae613576\nf0cee441d88de6dafebad4f49b26ec52\nddae5f8a28d8d616e4bbcfa1dc6a2906\n288aadc96e908b29cc156800563d212\n4e855038d6060cbb47e81ce1f9a6ff7\n9271bb0cab9365d44b3c42e318f3affc\n6bb09b26c75b70b01c6ed23568095b6b\nb1b499e90f17a6332ebeb1e6a8111f53\nd58af24ca497ba8c4b3c42e318f3affc\n90b0880e3c85c133cf7ff48fd8d30a70\n24187332192704e4519259b5fe9bdf5d\n37ac02e6ef9c1ac2e21111e385a0661f\n511cf6bce918c6738e0afce805a277dc\n324f0d772a7b728c36350d50e191a45\nb36ee7cbb41ad82c9b11da89c22111dd\n5e96ddc94f51f99d2165c54dcecaacb4\nbd430a701652963faf0ff870be225563\n19eef9f0da098279c8bd09537246ca3a\n305795f4aec83b53a51d50d3f9ced065\n697e5edceaffe68e738e43095496b061\nf5529ea819c6e97decdeb21614063c36\n4ef4f289b6c23719588e951dcb8abdba\nfd7a4cdd680495c7dbe9c90af547c85d\ncf5a0589134088ba37e5c2aed7049b42\n9df064dd2a0f58a1d0176f9a144100cd\na9a618507a691298febad4f49b26ec52\n4d5362a8446fbc8f8cbb8bac2032149c\na93d61d10d489c8eb2c2cd006d206129\ne1d7b48449559549303c85804d402599\n5aa83cb8217619d9ed8de30c53213f6f\n244b56d46b9eec86f51f77a6d7299806\n5912cbf7bd756d3bf51f77a6d7299806\n283844acddc9df141191025061735ea3\n855e0dd7d801faf61886830ef08153db\n4f7c024d01141f23f51f77a6d7299806\n3185d26189034bfa48db03d58a820cad\n2275823b40c3e669be2020f4ae1ea66\n4572e2658d6e6cfe531eb43ec132817f\n6ba59a9ea719aefcd323d6bd8db8de5b\n4d43e9b908d77ddd2d19175e7d19b7cb\n496b37559f4ac973b9fd3978c6bb311c\nf17661552a06bf85282d5d529f9dee5b\n7c42d9809322b3993002761e7a3ba3bd\n7f837553c70b2a63684b7bc3f8a9aa55\nbc2a117e1c6b9d0da9f547acc5e1dd79\n2486659a274a6400ff07dc9cc50c993b\n3564c6480a95a60323fe3501bb9e7193\n1a08afbeb4334efeefa472e59de52b43\nd2a3193796284084e8775b281dde57f\nde90266b552fd26c2ebeb1e6a8111f53\n5348f1ce4dac7dbd5dcc7ddfa72357b1\ne97b4992a642a13c789195d85b2f8718\n7f57fcbe1e7af1c1b000f20a5153622c\nfeb92b34c698d396cbde89e0c48a01bf\nac7280f9774cd16432bb5d496e1304f7\n9649ef758d3334c74500047017815f5f\n7c77974a20ec2629d8f27b2e727c3511\n5ec15b09dedf4dfe961b3f02493c4f73\nbfa2808f136b8f7f3c8fd4a2aec82d26\ndf5ac7a785ab39fbb5677466d30ffffb\nbc5d39edb7a6efd77b9bc6a8e1b90da7\n5e4a74e0bfb5bd2835836c728d324152\n2367a0e01767df36dc40b058754deaf8\n7cc444f165a22b80cb2a965e75be701c\n8a98eb9c64d878dd419786e9c37fabbe\n25640329444772c6c2e20ec62321c272\nf89a468c302c89d9534fa06200d07790\n668fc6063bd05447e4bf96d5b836adbc\naf09abc2c30ac934b3c42e318f3affc\n75e59e4626875167b2f7093e7efce142\nb286f1a5450d3958c5da39cd0403824\n763737ea91a58b0360eda59359536e76\nc6d1d2f8261885abb2c2cd006d206129\nef4e5099cb7c543830bbd4cddd04c77b\n14e00e9bc6ea1b7230bbd4cddd04c77b\n31f1b54fb7c9e5a3cfb87ab5efe3dc31\nb292c70f70377635192ae4e26f16c930\na0e7dc01e9bb5de1858699aaad4acee4\n735afb29934346513d41bddf307a46a8\n7bbd69e2b6e1bb49f7075cbf4d009544\nf85e243539823dd56fa63795f94c4d8c\ne58c53d29aaee1fc8101accd22c701b9\n2fced9721464b4d9c955e5ed03ef3a2f\nf10936939b1c9277d6134c153bee8ea0\n832bcb192b80378fdb039d8689a74349\nf3775c07e5ba9515d6944324b21393b5\n6965b32c6732f5c0668ae11a7db5e82a\n807c73aa0a556bd496a3517f50eeb9f4\n120f8e2ef276fc6b9a45b69dede1154b\nb7bb5f021d40ae59f7b4b759a0c02e4a\n8a42ddd769a999a9e6942c5426df6055\n573e85e0e02dec63c5a208307819a3a1\n2d1d1b66d6e268d8c67c3af5181fac2d\n3822433e287ad25799e8bf807e902261\n133f18648797d149e27790b0ec8671f7\neda01b811087e2f17002d0c486c20865\nb7bd6522f540436c23500a5b036df62e\n73ea0e595fe794dced787bd949919203\n9130392b20b977813c41e9c62d62dbcd\n7772fe52eeb64fe8318694f1cc6fb1f8\nb491449d06aa40cc82e6c3a4e742651d\nd1b97ecf63191e19c19a59cdcb309b91\n29367fd1bfe6b23827775562146ecea9\n8bf421d191e4908bb8fa4cb65e077db1\ne24979696e6b8e7060edf8bc2f5c8881\n869bf2bfa51062c47b8ec2c9a49686dd\n8ff873162e6237fe571b2dc3839da461\n299b3728b46d7a4de343d70bc2971644\n889f05b7771f6b9fe76bc197b3a3ffc0\na7c9de3c0808584ef827070eae09df\n5d2d0250111a44d49ca96b2737246fca\nd77f7643e6e34ac91933ffef19678834\n2c08b5408a7ee4da98cfd47a860803c5\nb7f733e648c850abdd91f8f6f381b291\nc4a43d8473ddd9b4554be8f12e385710\n7a1d2827369011344d3fed2e930520c\ncf97b60fbf85b0656f236f75bfa0f434\ne65cd563d3a74dd4c0a61ad1cf92b694\nf0a7dba4e3c7c1e4ffa178ce1c2c6b13\nfc8e92ecfc4a39a47149dc6ae5708157\n954ae626fe09e5ccd5cb6d178687b980\n32d64e4638eb6e371594fba9df8f37fb\n6d6123585f79a8a54fa2fb9adc6e6779\n14ba2a965791a003b37e6e0c89177ef9\na26897b681a3841aa81634d14a6ca786\n95301825e69b3b2db04cb542e2c50eb4\n1307c27c3f1d1f7a895e947287fb0c95\n58611e7338c17f2bde909714df3390c0\ned50f2409be0ad022b6168eeac2194de\n10c25bdfea5eccfd153555abe935e806\ne448e3e40395d4d679414e04132a8bef\nebece7c581e3a42c32ba69f5f654ada\n94a458e0932f189f755454a26c190c21\n8627071fef9f1ccfc79fd92a0bf07e20\n1faef163785bbc427b11ae648ea92233\n8cf448cafd11acee84d4c0ff7581c569\nef72310b39244eca6aa35752fcfa44c0\n539d207a10c615fe76bc197b3a3ffc0\nfd861b13a3fb637e463650bb8b4560e7\n8ebe791395cadf8dcdc074d7b3f1e7e1\n4cb84e424122cfa7b9148a949a91556\nc582922f61a11b1ae76bc197b3a3ffc0\nb14270faa0beb387f36ea1eb6542fe7e\n445402730a420ee63190a57d5547dcac\n5a9e3e5bcfe506cb323ead02771c3ad6\nee5dda5cfc8349caad5067eac75a07f7\n197f31b2a8fb2e1aba5342d638d0c267\n4eb395cd5dfe658318a93a45bf780820\n49c0aaeed2f926e3f2cf6a9bef44d625\n359ffca14508cbcc86c701087a194026\nf88dca28140a1685490ad276cd2af3a4\nd6728931be54e6924b3c42e318f3affc\n40a7ed7ce8ba70fa4ddda47ee90d6a21\nedf1d95e72479c4bbe13ce34aa7c0c1c\n356e173817daabb0f44dc88afcdcd380\n8d143c8169ed42ada6fee8e2140acec9\n1f67cbeebf4f65b22b71faa8701e3f78\nbfd91773d0b2a32fd39e33fed94f56ef\nae099c7bf362b3e5c3bd24f986301745\ne055a8a5d8ca0b9869df3aa2bce421f5\n82e47329faf11e5c7235016c2c2c8150\nf46f68598988b922eede8c01bbe6592b\n1e4bf6ab2b2be368614fa2de2dbe583a\n90494fe31b3db5f927eacc88b2b78746\n825c5f7bad217f49d96790493cac7283\nd1611599e3dad7292f4c88fd91c6b1b\n9928c36919730b927c077130cb57dad\n752d13c1011bbe94f68132aeb243f95b\n4c5bc4f3d5a37c6dca9d5f70cc5f6d22\nef3ae300317c571b490ad276cd2af3a4\n68f72d87a2f94e0c8f58b2a82381f0a1\nf44c91626e4900a5a26aea0642029fc\nb723429f1ff9df7dd604f93937ce2d3f\n212756a9f7bff5892f6b08a7db6d1426\n45d1e19ee0b79df377e131ed5f0fcc86\ndf4593480b94850bbf6d78b1e39e2718\ne6a89aaa226b116a60885f79b3a5579a\nb595da70965fff189427e63287029752\nc0d8f876e068f17adebc282c830998c6\nc8b3d39ca53c0cfa4b3c42e318f3affc\nd4491f4fc4d37391f8333d818f5f80e1\nf48d32cd065088b6a6551b53c4ec69b3\n6ed257cfcd73fc6830bbd4cddd04c77b\nde2f120b21e228c2e6c5cd45aa112726\n711b4eeae1c12b77cdd18be3aeb2d66e\n11cdaf2939502622815a10e5a35009c9\n290dc618c8ac785cb000f20a5153622c\nc0546f05e8a4542f1cf1ba58f558540c\n763fe8469c9d204931a818ce55e517b8\n31a85a1a9bb22c3bf1e23636310b7e7a\ne07c83841b933e74c5facc3cc8dc041e\n6e18de4fa33bc9bcc0639593f50066f\na9d27bcf51153e4567de2aaf749e5256\n19e80d699bcbd3168821642e9a54505\nbc644d8f492e3c25febad4f49b26ec52\n97b3dfb3af4487b2b7d2794d2db4b0e7\n2d38fa0a1b4f94981faebbdea6bd9be\n5b2c4198bb1be0373704a45f4027ebcb\na10406dec2b6e9a2df81d783214232f2\n62bb78bfca7f4bba6113140c4b8aa3a\n1f05e080ea6e8b64ffcd08faf4fccd0f\n5f64c977d89c2417e2059182b9d400ca\nec98b08c2093d435f51f77a6d7299806\nbf9674274a0581bb11632b225817c709\ne3aa92f57f96a50c4ac1ecd2766586e1\n3cf25cdc0cc8b384c652d01955093125\n8b077b3be444a1338aa76d17cc411fb3\na6947349fdaf27ee9cba29f8b9fba633\n14b250fe1e9d53beb97452240e92ab9f\ne8bf7ba06998867d653227f952929af5\n9825c19c22c97af2aff4f3612743fea\na70771fd3bf24d65c16bd6fd1b8c7eae\n8d9b10974c5e3b35a82a6374374c9dbf\nfe2e9385283b62922de0bc4fc4d02dd6\n9634e0b7d04586865fca6ef890703085\n1b43b4892ab3a4612e85eab6bca44d5c\n51c7851a252ed0ff8211891ea560a7f0\n6af7f1e6035abb9570c2e04669f9304e\n796fed2b90efc756dad3b08da15912d\n2a5f29019fea4513dc0970d34db41136\n8b4ccdf057b895f888a682c7326c32d1\n6be2058f02beb0569699d7bc7fedec1c\nc363667046c562c7d9c568a52c35ec71\n51b4537837adf046fec95a1eac04b338\n7a8653592db2dea36518d4b6acd71be6\n9081c28e6a90fab1698da6fabf8a99e2\nd9512362b43efd8f91fee7773e951339\n728ec88a2fe37abd4a2f90e76b7328d2\n7988c8f23dc634678de5f815e8387cfc\n411811d0fac7dea18705931e60ead6a0\nf158c5c293106fb17af2ac6660aa6669\n72010b2aabc328ba2d1beed6f591ab11\nc20a339e2983a462406281a1e760ea19\ndc611d5add49200d868cace2a58d7210\n78c577ff52f4d79ae0a0b410fb7d15f4\n6986716a76d8a2952ca3f5e9a38d33a0\ncf5e67d5e6d7cf03f26f8ea67fbd8269\nba2ed19060724207508ab97c29985b12\n10cd74fb0af8021fbf7cf6012a0af9fc\n8d2aac03aac051bedd3adf3090c701f7\n274e9bcb57548a02dab956ed03b0f26c\n7b89037bf1695628eb03e749ccd7a541\n62be982d61ccf61d92e675672199574\n5b0e8fdc7208b8d3cafef66236db7ef0\ne4b2faf6b123b90286603115d2739530\n5b62582a39681d809699d7bc7fedec1c\ne72421299768187426a61458b682cfd6\n276e35b78c24f8b2127787d2c89d5a93\neeabc27816119ff429ae5ea47a8f21e0\n97deac79537426ac9255fc5df0de0bff\n649bcbf07f29fcae355d9ff291618ea6\n6c160b3f23bdb1af1832c6620d562eb1\n53afd3dc40b699cf124123a40f9164a5\n9c32d9398c04a66bddaf28b23330377\n9b17a95b794b3dc341a298cc53deb86e\na1379276f75d137ac5ddf9f6c8e4b3a9\n7f52ac1cf8e52a58be46d062a5971723\nb34982af1d6e18736b4393ff6e4e0f88\n161e0ae498eb2b9be3ea982be8e701e5\nbf15d331be699886a005442d4981d053\n2abe61af67cbd99aaa1d46a2befc5e09\n3250cee2b00f2bfc9141594c44ac35a8\na05d8e55e329df41ca2ed12df13a916a\n89aa38d569b025b2dd70fcdaf3665b80\n8143949bf6d5e294ff2c800153491d59\nce82dbe1906e605d9b678eaf6920cd86\nd48ceb6fe098d078f0cfa7d27eaf1bef\n8cecee14e55bf1f4c255a5f53b753fe4\nc876b151a22b59a24702663c3b3faf8f\n94aef6e5634907b16ed6e9e08c602c83\n739a2551d3826d5ad25ca1a27cf9bdec\n20bf71868949fba4b445ec1f6a39e0b8\n25fc395dc873bb478a252571106d569a\n3222d3e3c90f4a3238b3634f169dcc74\n356fbc66c305dae355f46d55537192b6\n7e1c4bdfbf19aa22d3cf0d40743efc0b\n5b2fcf551345b64bf3412e3273fc1682\n672cf4b2e0deff1e693e54627de491a9\neca9efad6364021cf42a90fe4baf4591\nfc3d08b88b00d95212610a4585592f3\n29c6a184dfee3050820018801b237b3d\naa8f7d94b5aa9cc1f9ef5ec0bb70f1c\n9d5941cd2ae236db2a63bbf40292a37e\n9417a62558b74cb8fda92aec8c5adcfe\n7ee773e031400d09b4fc0a2b20c3cddd\nf835366205ba8afd9b678eaf6920cd86\nc516c27390cd9890f3a67cbaf0fde1bd\neb984a4ef0dba0eb445e85eb534460b0\nf96c029d342f72d6ae59128002f89f91\nc9a3ea912a35c3e1601bea3dca268229\n293f2e28d5570bfeaff8240d22dfd73\n2dfdedc4e2d10ccbce9509a520498ebc\n6f86cce2bf8fa88821da01c0bdc324b2\n90f2e686389b56b3bf262660cda9995d\n4ba0563454fc10f365f5f793afed824e\n96de9fda13fa986d9cd431573238602d\n75234e713a2baed84d5f12fa5114b4e\n3b6b823039a912023002761e7a3ba3bd\n6a3c9ea7e4cc8fabb20aa91e9e90c311\nd582887570d2c1c2d7e17ccda34f6b0c\naca97b802b08e220ee36f204dec02883\n85bbafe7db85e0d44c4373a4939914cc\n6f835f3532151c25c2a21be00e77ae82\n7a1e70d3b087970a23fe3501bb9e7193\n89142ab0273740f221bdbc0445d9f748\n587143666166faf155fe0f12b5bf32dd\n5d819ba4e21208ac2b5fb024f65f6da\n3134eb0e0dae6dd7b26d198318b74e09\nf66d010471970cf0391e4d6c585a697a\nfa29ae17ed1482ed8aaae3d020f5ddf8\nf5b682cabede450d1191025061735ea3\n4d85392c3233b2b8d3299846d5c00f08\n9da75bbb92f594f19cd431573238602d\nfac2aedc7b6ab4b93002761e7a3ba3bd\n72f501d4168713b9445e85eb534460b0\n24d1d32aa33c38716a97150bb2a72733\n6ff63214c89d65d7b87028a4b477349f\ndb00e248dce5fe409cd431573238602d\n51fd921d3703b86381289b3cbd650b9d\n9e5973d8a4ac051f6e71174964d90e49\ne0eb9f5421ef2c4584904c716bc3b619\na7ab34edcd45d7573da27ece6ae88fff\n20edff7e1500fc4ed45f502ecff9e44f\n5929d3983eeb8d5cbf96d22e92924ea2\n2f32966fc64688969a08db804545b684\n3f9462d720929e73873bf2cf33e10943\n65b353144d52d75e98d5fc0473d00a1c\ndc0db74cd78a3805f5600f911d112095\nd6f122e1570e4180d6686dc2df08cca5\n52329d991c54c5104febf42664c91820\ne537c592fdd7f7b7c3bd24f986301745\n22a67cefe94bd5eedb402a46aa8f1779\n24bf4d4382c6bbf0d99562b7e15abcc1\nffc2c7813c80d8fd323d6bd8db8de5b\n6d9d5501c0a3d8f1615fc479d27ea86c\nb85174a2ea03f4189cd431573238602d\ne0aee89fa986647257256b1738023f7b\nab7b56ba63f481af9cd431573238602d\n7356817f2b175b80f7088fd42bf47c7a\nb9bbe91d581fbedac8ba7a179c3a36e0\n2475fc0196ea39aea81329004b7398d4\n1d3aa66972004e861f5bdd219902caa1\n938ea1c89e7a62a9d6d49cce41472b6e\n794f6c8575cb9828b44aa1973fabbd64\n1ee0509358dc8bcae19134c8fbb91f2\n1bdb9df06d749be1a7146643e6b355e4\n872e9d0bc078b4c8b9a1f0848a4940cc\n726c677962874743002761e7a3ba3bd\n58884a3e77d874efc3bd24f986301745\nf298b3663ae591a2276bf4bce35c96fc\n14c35137c3612fd0d409d3400adf2d96\n7a7188e439a39ffd9a2cc6d7b7b4954e\na2dbd26e8a382509738e43095496b061\n38310f3d796ac0b56bdcd672c2b17215\nb5bc21c92dc997cb7209833c7512d6a2\n8770701a1d5cddb9def21b8ee4b159e4\nb8ffc016a4e080a6d2e5fdcf2bc010e2\n891c1cd45e849766b07cbf788ba0557c\ne69dd1a9bbeb62523002761e7a3ba3bd\n96e9571393290511be52c3c71dbf7749\n7c08d40119ea39923fe3501bb9e7193\n8551281fe6e37db43002761e7a3ba3bd\n6dd08b216592dec6a6797fa823fd42d2\nba73c0ea2797bded8adb98ef1d9443ba\n1248597ca22fa1e71332a40d0134407\nb1d834cd686cb8b8477f06cc543186ab\n98fe480bea8f8f0486abe5555a3b447d\nf247cb60019ea321dffe3352803d6df5\n5e8452a2014eadd5ea8049eca11c54ef\n9eb1ec4c70696799851f4ba6aaedaaa8\n4f7497a449c2e4a56b9e47850f23a791\na3d05dc39ca639bc662cdc2f77e49a85\nf772e5b89475fd2e4719088c8e42c6ab\n8d1d04d72b7a240d4c61a7cce317bfb7\nccad4d1ffac1b5e978ebd8af2a314e49\nfa1e6b0591047eaeef78a907ef09669e\n472fe5ae8d386452bcd6195ec0f1e297\n889654f30ea7b4c3ce84b253beeae59\n780799646ab0a19b589fc18f8d1e43a\n89054836cd41bfb9820018801b237b3d\n3b334febd0aa9ba7b20aa91e9e90c311\na44a0a014b0c1d60609fb05dbd8681bd\n94df93e1c5f96c1891bed99343331f7c\n49374090de654a54fcd4910413c446d9\nbcb349231b83952a3da27ece6ae88fff\n818723195f30327b445e85eb534460b0\n21a65be5dfed538fa3461a37f23a9515\n6349f0d123ad1ca62ee5d388bdaf2f\n73bfba756e6e8511c3bd24f986301745\n727b33a75f10861423fe3501bb9e7193\ne01e72e173dd2cec8c76ec1f86d432b3\n45da524a32676350b5817dafa1567392\n20b72612211287d43002761e7a3ba3bd\n30a525c7bd5ee80192b396ed960b67ad\ncae89eddba3c4fa1b20aa91e9e90c311\n5aa1db3eb76c53aeb660da28fa2f03da\nbfe05e0cf137791d1029f6318b92e21b\n7d4c3e8b3304d8f823fe3501bb9e7193\nbf3b9638b7be27bb4c26a0d2e78f0aae\nc676bf562cb559e5ea820b41f77ab7c8\n7c7c705c9f3b0ced3002761e7a3ba3bd\nf86ad1699aa2da6dc955e5ed03ef3a2f\nc4b5ed6c9ae1ec5e8c54ec820a9ed1cd\n857d1ef816b8409fb20aa91e9e90c311\n2a34205ffef345d13002761e7a3ba3bd\n94672a37947da258f70bf5700b78659f\n65cbf486ccc5afc53002761e7a3ba3bd\n804a9b89e0279aff1ed1d681aa8388f6\n52ec1d25f2d6aac661d4e2b4b8b99e7b\ne2dbb55cd453fc2ead852a56afc15951\n2baa1d2adfec9a58445e85eb534460b0\n6f530fe373def431a6fd617b2ff5d2d\n975b724129620c9af4b6538438a0b930\nef575c402b734f8d810b14a81e12eca\ndf1b280b7763abde3002761e7a3ba3bd\nc416034b70b1d339838b39398d1628f8\n26a97ad8dd79eb1ad0c63a304a95442d\n5d8ea325e7182fd84b757d0f16894ea9\nf26d68c69a06b95ac440f8a1412258d1\ndb969c98e24511cc98cfd47a860803c5\nd7de6b2deca39eb0b20aa91e9e90c311\n5e52ffe27434ff446875e2781cdd26\n16961ddf69b6e91ea8ff4f6e9563bff6\nb699dcd9de34b5023002761e7a3ba3bd\n8e6254609ffacf233e5f17778b45d37e\n1c38f1631efaf9fbaccd05bb6a369505\n1c97870c90ff3a4f23fe3501bb9e7193\n4d4eedf718daacf945714140d50db61\n77e4ad83f78eb8c3fc8b5999cff24f2c\n758649ba384b28856dc24db120ad1ab9\n2a0eff86efdf60a89a682a6d0e92c30\n541087bc5ff0e0bb349c13532142fc61\nc7cd5977b531acd76b41b8bcd0404ec\n6b8e579c5178d3e117b431cae0dd70ed\ncda580f16378e12c3002761e7a3ba3bd\n8eba29bc85c8c830b4c161851ed2b4e4\nb57f0907adb6a60b391e4d6c585a697a\nada2aa7ccc81977d4ba437934dd25596\nb5548e1e944a31c077ceee024ab73ab7\n242b7dde571b99bd3002761e7a3ba3bd\n3f411154853b403921db4632488a2ae9\na2730a66ac07818cd3299846d5c00f08\ndc9a7d116351f2cca16af3198c99de08\n3a3c922623ddb42e5d81820421265171\ndbf2123ee206a81b8b00eeaf68a1358\n4dba531ab70199ec3002761e7a3ba3bd\naf3ad492135860eed8fe1b8aaa4afeb2\nd903be5d4ceb3fd56eceb9b47ba95c\ne440f87f88335680b20aa91e9e90c311\n61d5c19a08b3f4a9b3dfbaddaa1a935c\nf9a9c8e70b6a2b31b20aa91e9e90c311\nec07a28c3d57d3275c6a44a505804654\n61c9711cf5308ff98d4b556335cc5d64\nf0275c22904d275222dab9b5e1c1282d\n326342c53d6b26bb423d2dbc3b38c389\n91530c95f442dd71793b6229a2639a1c\n6f58b8c1d826a301a97bcacc05204e5c\n5700152736510e2b45c44a42b411ced8\n24019c15c4707356bf96d22e92924ea2\n616894d973384f358be590460e3754d8\n6d67f5a9d2daec3467ca2ad6571afff\n31b972951e7a8ed323fe3501bb9e7193\nc9221b4eef51600ad9deb3f829cc2475\n1ac080a115a94477c9fc9da372dd139a\n2b51c3e9b524ddf560b5fd678a94e9cd\n996096692592afa91a0e159a720dabf7\nf472e9e63984b443f155d75bbf62b80\n240ddf8b63318ef534506cc3910614fe\n28ff86c01e0faad758df8eeaf3dad1c\ndb3d26a5f2a99aec433eec73a2fff97a\n6183e3d4c73872cdc955e5ed03ef3a2f\n378a4f0524756b0ab20aa91e9e90c311\n862cf2d35bd106c55230ba3c88b645e3\n385f8323f5051b85f2c48e2288633251\na2f9a8c649bb70d35c08aa223a05362d\n77fd14f1a7f2d27ec3bd24f986301745\n2517066dc728ebb955dbece39a4b7905\n6292216ef69f6edb11c5cce13f76151\n968714b674baa3152cf0938654a53e55\n6ec12aacb68a918a311268c007111527\nf0990151fa433f1498cfd47a860803c5\ncafca523ae3653502454f22008de5a3e\n95b7d8f0fe70e768827291701dfaa1ff\n3f036c403ab34bdac3bd24f986301745\nc578d2fa302f0b935e7f9846384b5857\n73fc0f27cd57942ea2edf7a1fa4be45a\nae5ac5b2b027fcf9118ddfdb81cc6068\n690c3f8a4e7d384f1270a3c39ec25c61\n10d9b52541550c909cd431573238602d\n4df369ee72ea8b2c3da27ece6ae88fff\n6ae77e7aa510e044c955e5ed03ef3a2f\n6ab612b7a5d4def82454f22008de5a3e\nee16bda18e585ce3445e85eb534460b0\nd9faa371af8e7f443fa7114f9b06aaa5\ne77d26aa88ec531cc17e7f250c5222bd\n62f7c1abde6bd25e601bea3dca268229\n7e2c9dca60e09009df1d847ee0a8f3d3\na6a7ea033ff20abac133e11c42c6f6f4\n7a415346ab7eb481f8d77b3fd14416e3\ne300cdc549ff426723fe3501bb9e7193\n37ef68300b944adac5a1529d102e7db9\ne3fff8b83cf999467ff6ace05b36a5\n242b7a0fa9e9c439b20aa91e9e90c311\nf4d21f925b703fb7e46b767696592d01\naf71e4dcd477656f9cd431573238602d\nddc16ae1263d506c955e5ed03ef3a2f\n31c090b23f52bb61208c8c852ee795bc\n9d02362926dcb3f6951c1fffab4f5807\nbb201d4811ab271ecf5469d07a8db811\n9fe655d18bce7ede23fe3501bb9e7193\n74ade89963828a37d94ed55f750426f\nbe5349431760322c7b7b1bcdebeec13d\n451e66939d40c5be61bfbba8a5defb02\nbc8e050a6c0e49afea5682a3b818969a\n2777463657ece1a3299457639cc3cfe3\n819676c81556d0d09ed5db740d23ca46\nfa5d7f9c54f5bb2010b97bd228fca721\n4da9a56cce188c838aaae3d020f5ddf8\n3b2855b73aac8d04d6686dc2df08cca5\ne19080d150b1932ab20aa91e9e90c311\nfbf9ef8784c0cb8485c1a9fb01e08349\n65cceb90a30f7b15bf6d866879baaa7f\nb0910467658fa43f7fde87eb01f5851\n7d0eea8581ece273820018801b237b3d\n92cbad40c55de5843002761e7a3ba3bd\n60fe09a5de2a484f45613f5c2df1029a\n8b612b06a3d668eb67dc575d3328bcb2\na406ef7c367e9c043ce425098c6116e5\ne7ed7eeb46e18296fdb9ebad3cf3755b\n351c0bb85c887df27ff6ace05b36a5\na257171096faa6252ea98d69e91ba870\n392093300321b9e1eca22c501ad0a77a\n5ebf57428b18f78a1ee6305032661052\n15f0878e6bd57e6c417da6e71c86659f\n951d129ced4e7d13cd4e8a27ff8b78cf\n8cc8e16280748c3823fe3501bb9e7193\nefa1b72ece626ac6e3989b96851850ed\nc356393b27c3fbca34ee3fb22432c207\n22ee7f1fdddddaccd78a975872fcaff\n5b5fe86aa8e93f91c3bd24f986301745\nd6d29b0c347f2ce23002761e7a3ba3bd\n3fff3e35a4b68352820018801b237b3d\nf41198b81216f36ff155d75bbf62b80\n50f52f9ce377596fc955e5ed03ef3a2f\nb8411c6434b79e59d6686dc2df08cca5\n97d1c4b5a82891e33002761e7a3ba3bd\nb825cc91b6257e73002761e7a3ba3bd\nfb6d011741ccdb374a00834418a35d1d\n83120585ebf07ee93002761e7a3ba3bd\n78c4b505894342269299936b751bd77b\n1d93291de09fa5c876e9713f57a5fcb6\ndcab9aad5876cecd597ff152ef65c9c3\n42c35105a94ae6e68ec80f11cb8c2f41\ne5140547647bee72490ad276cd2af3a4\n1c40ccb81c862cbf595d2b7814efa054\nb8261a2db6b6525f490ad276cd2af3a4\nd47189d9686125553caaa84ea4cea094\nb2b4829e281f1ca09a87002a4eeaf610\n832ea764f0d3ffad9923defa57043b67\n276d614d42ecfd1490ad276cd2af3a4\n6b6c03883c704389c3bd24f986301745\nd14bcc93169f80d9b2d5d82056287083\n322b055809086143c7860707e3deb3e1\n1bba52fa91ad1f9d7ff6ace05b36a5\n5f62b83cebad8dd1473f10e6caaeca56\n306f10749606ec9355f46d55537192b6\n338c59dd95a2e93362e5325f0ce7656f\nd5e003575739a8ce1bb088904f7cb154\n3c886639d67798f671a70be9f12ce8b0\naa122afea2dcf725db039d8689a74349\n2391f652acdb73dbe958df2e8332e31c\n25244dda23e8f58d788f926f4d51e733\n18635aca8099ec5a3eec26c23f5bc80b\n20765ccd89f9d915d200faae04ce3f8\n2b06a917abc1150b554ad4a156f6b68\nda7310bedd8595879daeea1362fbd792\ne17121f04e884edde480eba094ece03b\n3942f02501161134c3bd24f986301745\n3d54679cfdfe8d72e1aff9039d025\n4fa9bcd45574827d4f0331b81f3e1ef\nb28f6acc151cc20e19fb4103277a6b93\n8b2c3c73b624c3faf4b35f4029eb1ecf\n435da96586eb1325cc719373d4fe991c\n5dbdb35766fd2d4c9f4b4145f6688869\naee3dc454d9b5af0dccf03d91dc58d38\nafd9337f23ea759b54cd2a0ea6cb618b\na8fd0c73fb6214cad56c79d3df7792df\n1509a8710d2fce3c4785a5d3b6c47521\n73eba3054b62c14b76c7054c38bb1311\n57f64087490954d2c015b1a51bdead97\nd5d7324c2233d6edf51f77a6d7299806\nb399584ed464f6f5d2bdf2c065ab29bf\n18b58b179b73dc958c9e244e3fbf98f0\nc65ab1fc77cfeb37f7c07d2e56f26a5a\n8839cf79a5338a568ce66f12ba927a2b\nbdd12e21daf8664689940e75c3dc3e7\n813d7c5131f6369cb898f6ca189a940f\nb4ee137cd86d7e3a6afaa22adc38077c\n45b4df78e3cec0d99860e9353bb52a1\n19b46cdd0a44286823eb3ad3d378722a\n3b7fcc7c030ecd496062e86c1d0c60f8\nd37205936d372513ff868cd4e441fef3\n43ca66b4cebe3aab41c3fecef2f1308d\nb606da9c4be6e6106cbce046ef0f1d8f\ne18c2cce4bbab2e45b7bf37141f96eae\n5fdde770581fa1fcbae326b60581fb7d\ne99f7a450afce3b62553cc33364504d5\n71ec472682954cee353c1d159a8a8422\na1d7eacfc3e946cbed4671e7b5b34212\n6bb78393aaff36b8f42467d8c501ee9\nb4e22060a8aa48c9b1b2ecd73d1717a3\n7f0aaa160a9f024e492d9da2668ec34c\n21e8c818e9d517f919fb4103277a6b93\n44a3f66a0a40f21119fb4103277a6b93\n898936a8b8e448ad1d70b774ac91773\n4fc00c3e48cdee77883679e873099585\n6d78f55d24f1c4e714038d588fd1342f\nc35f0f50664264d5e6a1cd9763fc2f3f\n47a9339b6a731a1019fb4103277a6b93\n63df9bf9884c5b485e7087f2d9a278a9\n2a901fa05ae444eff4b6538438a0b930\n562288b15bd065d4b29ac64be50e118a\na003e49331f19341b0449d422c1e5657\n920842b21a3c471b597976c675750537\ndd86b0fcacb9990914038d588fd1342f\nea5f45fc61e1e26bf994e2a430ba61bf\nb4ca27e38b327aa0240c1f0f1e25335\n79650ee83a0aabc8e1dbce34224f2394\n7534b0ffb603e3c571a70be9f12ce8b0\n3db6ff15d7ee52482db431502a680805\n867e978b82c313693002761e7a3ba3bd\n9d41c5e8ac8ca4e6827b73eb36515554\n5be46c0c35d3cff2297936c81e7f6629\n517a4c16b7c5960bac2b62da1791c2b6\nb4015b8800115683b3f10885d03d0fb6\nd1a80144a7efe02e585ed17f54616d23\n1901183525f0063d2822b5101b06e070\n32eceb8ea5b43926de4d0883c61d7e14\nde0267e2e1753bfe684b7bc3f8a9aa55\n8a37a87d367ec0fa276b6f6d90ee3a83\n2e20f537a7b64de177981b941eb4f5d1\ncd94233033b1d958ef2438b4b778b7f8\n3f4e117f6172555bd7691f54dfc57244\n2bb9537b798dfda490ad276cd2af3a4\n6e08e7ef76b1c27027f02aaa836b59f6\nd7792a9c16aaf16d98e0d1738edd4f19\na017b980b5bc255c19fb4103277a6b93\n8e424220b8f053c81ee2805756841071\n8a545c071537d55014038d588fd1342f\na0a123a2c7e0429c1b17743c18fb63dc\n5067a85ef67c2e45ed403132b02528bd\n1f0df5b240c73a5078dd615a59de5f05\n1a2abbc9712e2fffc3bd24f986301745\n485516a2c88eb0b8b516c05d046e8e45\n47e24c3995150688d810b14a81e12eca\n277e13392e16006557183d3afb0a522\n99686d07d8ced954490ad276cd2af3a4\n44e4ff8c96e5864742d23b95defe1ce5\ncbf56579ffce57d84cbbac005f3700ba\n4a0db050c8703a8d6e3c8a33c4ddf2ef\n23ce23d83f097dfe30e9c0571435b6e3\nd4bf9872856d6fc2b300c4ca2f51c01b\n5472624a2a130443e70021280aa1db1b\n119819c15bec2e1e299457639cc3cfe3\nbac7bae00f0553bac88c75598a661012\n783af15c06117bb29dd45a4e759f1d9c\n7edb9183dade5413ae685ca100c909e8\n549bfb6738e5c5a019fb4103277a6b93\n5f274ad7c2989f5119fb4103277a6b93\nbe8a750947549c7555f9913e822d5318\ne59fa20a6988b93e29e4b5aa807bb4e7\n175a624623ad6fb037b2bb75885cfc44\n97cb53b5e54a2abedf6cfab91d65bb91\n69a96a236eb59dbb4594f83fd12bcf18\na1efc57eedf9a2e93c8311d2f6bcff87\na3dd0302fd716e8624d89cbad731b903\n734271cab27abd133d0f9f8a61342808\n8d608e1a1a1f34adf4b6538438a0b930\ne87136a7996cc5c82d6b4fb79c7b302b\n9d63f4971a332c55f7628281ecb18112\n6f317ae1892ec6e22f63d70fe82e78de\n4126746447b424197fcb8ee54b1a951\n4c804ebc195b99d3f0b45b4b4c7e33b7\n59c8b38f75ae93bf785953e8e787ef2a\n34ba7b78ffcf0b46d30ffa15d9c1eeb4\nb160e3f80850d23755f46d55537192b6\n92d806ba93c283f73379bf463ad73282\na530dd6e10797f3dfa5f1c647c19b0d7\na5d6b025b4c7239df1c7a32d97b27a4f\ndf7f8b7ea0e2c4ee55f46d55537192b6\ndcc24b55654a9e6bb65b71636c46ae49\n95c2e462b2c3e5e529d8eecf3827c486\n44ebc446b2cb44b0c12f5058c05b3979\n79a3bd60b48584b11ea954af295a6a98\ne104beba32cf40bee369d8ecc5b0e866\n9831a5ae9045c6f39155acfad44fdd03\n40e4f56f34f98a779ebe79011e3a0eae\naf4bb12decb39ab082f29b648e624c33\n87385a994745e92cbc052c28a9e28ccd\n545c6c30ead2d411e6c5cd45aa112726\n5d38978fa7591a3465a50d0cd9008f5\n2b8ffe339a50f0a5f51f77a6d7299806\n114d3d770d9203fbec82976a49dc\n7e15b41158aa0bf73542594e05cedc89\n783f84e17b53447de76bc197b3a3ffc0\n460bd446c3f1cd5711beb49b60c734f\n871530f9e0ad4e2be6b70bffe12b936c\n6558819685f96577c0f947750540fb22\n7a2f94d95992b5716521d4b69744cc6d\nd0a4d46fd42a0c3df6cfab91d65bb91\n8ae2ae3b341fe20bf80985a99195eb8\n59d4c154eea079c5492d9da2668ec34c\n4d43a00b356701d914f14c67f445762b\n8b835170d8123a1dcf004563556ddb36\n98feac40e78b92bda1fe796dee2910f3\ne8599df1d0465e3811f3906fc1b00350\n51a2b4db530f383339797c21e8801b1\n2aecf3003735e8b34cbbac005f3700ba\n843713faa2ee00cba5d9ad16964840ab\n179841c6d26cada5d75fa3d7e144089a\n7f5a875b5a2811b07d2313b9cd9e2952\n2dc57230d14506eacd6ce29440b718cf\n29ec54b06d35acb2027cee422df2aa3\n224820b020c1b6136b0f2a1430e993a\n9c71de3e26788e20d810b14a81e12eca\n1deaeff17e093d1c8029e7f07c5ed73a\n3838d78a4b4a76282027cee422df2aa3\n22c470174c40a0c33dc1643807625350\ne566fd9bbc3d51d377b9297f3055210\n521e51c43fe3def573ae93d3b4dd6712\nc7e03bba4ab333cfb20716e5484f7807\n927dbeedb2d864d635dda488a4bbb1e1\n242055fadd675e626bf0788e630e3deb\n6f3e12831cfefc20a1d8e55816ec2b5a\n5c4557a826e80297490ad276cd2af3a4\nc37632eafbf41b9c1fb41007d56c0ca1\n7937479e527b07dd19fb4103277a6b93\nbdf99b327d1079fb35836c728d324152\ne36a5e4069db8198bbbe32d7a5038eaf\n312a5be8c4449afa456cbf78e1e89022\n33e4866b6db3f49e6fe3612af521500\n12a5cc49c75b93af5b4aea6c98f52b6e\n6e9e8100ffa2a7fb3b1bee6df796f998\n97e4bfc6f8d2e2fb986b72a93898270f\ne28af7dd5593fe6f820018801b237b3d\n6feac0a35c8f8626e73947fdf756a329\n5f31ed4efc21b67711a59b122fb65ee9\n8cabaa720e1fe52723eb3ad3d378722a\ndf38d8c2f3b36ff76e4b69f8ed4dc344\n3c1c6695e665ab474b8710a3469971b1\n4b9ccbb4884f12376a5e440d54e375dc\n589e7c32a63816b1d4a147733422d301\n8c0999396ba60e758738e7290b6f3237\n4f06f4d04d239448bfa17a32b3866b83\n38888628843f7b38f8b8d4a282992be4\n1db2c973f2a3b154659277e23bf9b970\n5de8e8b5034ded6b707cdefe012d0353\n4fe7555a7457c763db352b8394e172c8\n6491dfcf1c9782154932af0c4e356b6a\nea87ec56cc2fe88fb20577fd2a0fb434\na9dcc147e83c2a0619fb4103277a6b93\ne1c190513b084f4c4804b5831b58a04d\n611e834a83c63f50a8840b31c6de34ce\n39dba8b2e416449a19fb4103277a6b93\n9c162d575505f102ad16260d4d73b56\n2b4cee8331e825806bd0aad3d992cb54\n94fa2ca1212536d84a8050bb0dd3c541\n8215382c95d5dc0a5c6a44a505804654\n8fae5133d952b2ddcfd3cc1d09bc8fc6\ne75ddddd62dac8a119fb4103277a6b93\n39f0da2d45ad3b6deb82e56bb4ec31e1\n30cd6bee25352baed5857f15f877a4e5\n43f1b98f950af6d04f3443b22038d340\n2a963bc9ad704e5f525b133235812833\n83a8d95b2dcdd3a854cd2a0ea6cb618b\n192812aa4ad73d2fe6c5cd45aa112726\n2c118800181f296a855931d119219022\nbc33b97457ce7a0a569537f38fcb7202\n569b338df880d560a71c812e027f94d9\n9d7e5e8279ed8a30f2fc41ded2e6c02d\nb5fe80b6cbb9f5d1a6c03a53cf0a14c9\nd3624229f0310175658d908a2254f194\nb9aeea4fbc8db8f3a08ae93bc9509b4e\nd416139067bf7db337b2bb75885cfc44\n4d484d20a59a18d3fa6df2d54fa43ce\ncf37563a68edc94bd71ce74ab5e9c1b5\n8af35280574ac141bf7ea2059cd7e422\n5362db12d934a50719fb4103277a6b93\n252fa50674207d749eb332cd2d2a300\n5ed584534db04e128ddc9f1b5f92baac\n314f35827359105d6faea4ea390b4428\n17e773bf0007544ce76bc197b3a3ffc0\n8d01e61b216324d0f9814818e8ac1c35\n92ee07567c94fd6d9a53d72e083de39\nc6dbc7938060818cf51f77a6d7299806\n3f756d8d35b51ad629e4b5aa807bb4e7\n3a8b062c50c0a5b7977a08097a2f2d7\nf078a5940280c0a22c6c98851414a9d8\n316863fc4ed4dcf7251178be84deb2e\nda09745bd5be34b9aaff8bf395bfe94\nafab57dbd3c7ef0e98d5fc0473d00a1c\nc2fe8c88c2b42564415434d4384bb66e\ne90b641f8f1489d44b5e2e6b95708893\na33b6291afb1f8b066b38b193b506338\n9ad79b67c56ead5dc862eec8232fff1e\n7f6a5ee3a0fb9ff19fb4103277a6b93\n8e358c6f92a0624219fb4103277a6b93\nc68407d2f752ae71ab2bcc3443271151\n5c1f92f1c0bd459386a48a74e08b1cc6\ne97546c24cad95ee9eea323f522c6486\n268a739200930797c862eec8232fff1e\n7153026411fbb33cae685ca100c909e8\n39f202c92b0afd0429d8eecf3827c486\n958c5eac527deb6e89a6f9d60821eb9\n413ceae95ebcb6b5707cdefe012d0353\n2afb64e4868b6dcb8775a2d8ffff3881\n9ff98fa1fd750053cf853995b84c068d\n2b4d9c4722bfc075ebeb8f91be624923\n1b48826b38c2dc0630d4c74109f9e072\nd7576f0e6f9acba7d261e17fa0c462a7\n60b2e4ccf3ec715ec3abfe135b5412af\n4fc0bc3fb6438dffab1d1edf764243e3\n5420d2a9cdd0d511e76bc197b3a3ffc0\n34fba2f856e97796b0a6e87d5d5521b6\n75e24952ed996c1072dc9d42e683347\n6a2c94b2c34c6134490ad276cd2af3a4\nd5d8632e5a2a286bea46bea76c64cc3d\nad0082e4bc0b5ecd2058afcc28d23393\n16802a946bd714e819fb4103277a6b93\ncc8217e65e253ffcf51f77a6d7299806\n40ad41340725a2477251178be84deb2e\n6b9c15484369406919152a83d1ba40ea\n785f073399d19cf5b000f20a5153622c\n64298fc3b7cb8171eaf288f952624966\n6b8b6d09fcd05c1819fb4103277a6b93\ne77bdb7d3e12d6231eb51344489c49f3\n1c1c9e7676dd618e6652506d959dc71d\n1bab21890e560d54d5cb6d178687b980\n25dedf655982acf6490ad276cd2af3a4\nf03a86b27bd0a6b3d86234e915108e6a\naa03428d48a820697a138f06ba3ebae3\nbb794c54a628a3db6ff454af1e8947f3\nd0578233f05855fcf58998c8c192d0a9\n99a3484c310cd1211e8fb9cbb32d2cb3\nd2b7b34e176262513521fe8ac6222005\nedfd25e28cc7b003869c91937070800b\ncd0dccabc5966b40d42ec7e303174a87\n4d56ccf8487a0a64fbd58bd1e0b7491d\n670c2d3d20dded2bc5a208307819a3a1\n27a463aebb289175f51f77a6d7299806\n9dcda566c3265d2784868d3618d73011\n47ebb5ac05b46c18488e54fc0c1b4fef\nd21405eeeebe4085d42ec7e303174a87\nd5c3aa73e043303b7ff6ace05b36a5\n10b0d655bf4938eae1ab19b3beff6716\n1f34ff8c2ecab3b0a4ee05a5737b7178\nb0d7e13b20b190afaf1a814fb0f45a9\n639d99161524c7dd54e6ead821103617\ndde92f6460b1d7b2b4cb6dc412eb15ce\nad50c756edb20111e76bc197b3a3ffc0\nd1494e0665f06507b79de6fdd84b2221\n77147f716a20028635469b95109803c\n23fc3f07efc7ae4d19fb4103277a6b93\n91f6f0813eaf4e52707cdefe012d0353\n977457a28e32ddbec242632b2a8c3129\naa2b82f576f3df62f51f77a6d7299806\n1e6143253f8f984735d95c26c81752cf\n3edf1ef61a9802e6492d9da2668ec34c\n5dfb4f36101a933ae1f4ca4f393a5a35\n3fcea883442d7e5bc0f947750540fb22\nbc38dd123d9d50ad8b17d6d1965c2fb6\nbe025ee89a077c31a9bdc22a1e02e82\nb86657d541c2e26a4197bf8bf6f07b46\n330b4c2ab42bc715f1783a44a88d6274\n88ebe411acb90592e8952e902d0fccc8\nece1e39b8c5f851b9eea323f522c6486\n74ca743e2ba959f56623a58a6d7bc060\nc734ed1d590bba80df6cfab91d65bb91\n385521a6e023307644fad574b043beb8\n48cc2f299fb1692288c3056e77bac805\n7f14110c96ee2cf6afa167a727ddfb67\n941c99dcbf881c6939070a7367ed1554\nea7dcf537a18150cd3dad974dc098fa1\n28de11ca3a3bfc00acbc34d1ed23b6a\na186ef9f36fb95c3bd24f986301745\n704f75e32974f0f9d5316414c56bc1a8\n1893e7831f8852a2f51fa0238791f5dc\n389aab2eb6debceea5a5170d48a648c\n28001cb70c38f19cf32b6091d9628440\nd4054b29b329a700490ad276cd2af3a4\n1f036102a311fdc174813b7165294e91\n2820444f78ca0d82399f8b5570a02c59\n3629fe311f6a83eaac8336231c53cd1\ndc13119307bb03338aaae3d020f5ddf8\n4a5fa41eb0fff4496316c951e41c61a5\n7093c8218c88118b3c5f24f851caaab7\nd91c5659ba4770b3650590f03418c5e4\n3253af88a5568d6e5e0e77e9cf965949\nb72bd5538da87c0da54b9afa882a89ed\n5e1ca9adfe8c6af61f8d8332ee17945a\ne70d9645a26a4e941832ad614f693f66\n6fd5741bbf559e0ff51f77a6d7299806\n9c62e14436f27b6c457ba044c28858b1\n6ab805062d5d945d53e946fb2184f0c4\n18c25f8049fac943bb7ac4d22a68ec08\n760d38c2740eddfb8b38796afe7ee552\n126b0452fa8b16bbf7ba6397f9858441\nd799cc222f34fc0879bb09dc5605a57\n7653898ee4d8173827edb0fd78caee34\n47aa3e340eb5be093fccb8cf9f00542f\n4bf6707d8cc11c0fc631e7eec6a153bb\n2d22f3f0723011548aaae3d020f5ddf8\nd9ed9f1577b22330aeba6a38e5ba02f1\n54f4d28ee9986b329a1a0970b4896ca3\na072caf10178224ad038992c6975ea76\n8662bfcaec06798ac46037df6c915494\nca7bcac6b92b5a7d377b9297f3055210\nc57e4f64b18e9b9aa320e34dad7c78bd\n7607b1762ab9c79719fb4103277a6b93\n725fbbe72a41e6feafc1aae4dd82ec1f\n22daa2fdacd34e086c701087a194026\n7efa6d2ff959183c3002761e7a3ba3bd\nd69a4fe99afe6e0097a5b791ac4ae3c8\n394e24e46063786ef7632814cbc80bf2\n4b1ca7263ad178f8bed8cac5da4f54bb\nb602636c7967016f7305052ff007b248\na87c9d907feba5e944187aa25305d7b7\n3e4cba53909d9bc8455060ebe53aefc2\nb3e92f795bfea504492d9da2668ec34c\n218f7d1742293b9b2f56d03f2a22adfb\nb67fc33298d026033e0a119fd0be5d3f\n5a38d21dd30f52e972463ee0ec4cc614\n98d93b260a69366c490ad276cd2af3a4\n195a2ed4931241d3c3bd24f986301745\nb659c2162c4ff214684b7bc3f8a9aa55\n57a27a7ce775e13197ff8153b678d004\nbbddae0c95f3b7b636b0f2a1430e993a\n3d3e1b8e6f1cd412492d9da2668ec34c\n296cfdd6b347a8e219fb4103277a6b93\ndc5b7cbcf45e557f310af74324aae27f\n8c7bff49acf7fbc54850c7706670a44c\n6bdc37f729eef70d18706cd9c51d6358\neb8a34ab2eb9a26fe93eff560d16430\n3bf20deddacf5cc64b8710a3469971b1\ne653570cc6bcf8783f9f131076f84791\nbff0d461cd0fe835b67d6c1fd03fd403\n729ff2cedd68a1ad489b0e2838fd952f\n104ebf7f96c77fb46a0faccc2a4015d8\n7918d848b37db85ee1495fb833264cc9\nb977915b93e87cbdd724c69102d5ef2\n6c6f63434cc1f447f51f77a6d7299806\n599dfdedd707f7c8ef38727c2b4dc2e6\n38b5da2eb70009d6c045ebb62fca20c6\nccf3a20e438ecb09384512f195951058\nc7623649c8f34cab23afb61f25e1136e\n399b6e11c037f7fb5a11acddfe168a04\n16febbf5498604acfb666b203f8cdb86\n956776ee66e095df2822b5101b06e070\n8ee19157170f16dec12312ed5983ff64\na90e18bb9bdadf6a6d8b4dad28688a76\n5151ae4f84a800a189035c25f0dfeb63\na355108bb5272ff256d80c2792e1f42c\n95656a46c15d75592d1c552a8c88e58c\na9dfcb1e1ac5ae67468b43c22b6f785e\n96cc60da5c390047c242632b2a8c3129\nc26913f8e139a80baa2b654345545ea\nead000700697a012310af74324aae27f\nc5e37e895124731176e9713f57a5fcb6\n1f47bcef63468cd9b90b306cee0c8c91\n43ba3898894751d4a2be11b607ccaafd\n7462ac6e44457697d017709a3cfbb660\n7a8399fc51d83969a8b1d0fdee586dc9\naf8d3848b96bbd0d18821e110fa8400d\n54db32cdda20128ffff16555386d173d\n90992c45f7b2ee7d71a48b5339c6e0da\n2e30c286710fd73d492d9da2668ec34c\n497bd3f966eba2d76402b8f491cd92c7\nef873c6f267860cd43ac09133d4c1d60\n2575d3108a55adfaba0351028b825931\nd4b3c13ec756196f94b77d9f59f49ab0\n884eb62c72c1ee75e6fe3612af521500\n7d96b0823233ebe7b49b261a212e60b5\n154fd969a077a39772dc9d42e683347\n621ebcbaafeb91a78616812464c86290\nf0c1fe7cfedf97e9b91b871e750ca615\n91aa75800ef385e9f51fa0238791f5dc\n2e0a396cc21ed4e3781e3b226aea8d4\nd08ea9c1e5b9c2687bcae7a654cc37\nccec9e173fb41a3323eb3ad3d378722a\na7941c2ffe089884fff16555386d173d\n45722fed3a3035fc59f8e31ca87c470e\n16532364b5876d3881a172d69c52a28a\na62114bf11affdb1139408582c8ed98\n211d17b0424b10c539d3717288022c20\n77986a9d5546899819fb4103277a6b93\n6373c7a17a41666219fb4103277a6b93\n1797eec0a23dcb1dff29be004a6f7c0a\na296a3504163b053e6fe3612af521500\n5c6cad6a12d7cff3bb6e988dd2500ba5\ne296f2e967aad03a55f46d55537192b6\n7f1edef2e2fe5aee33ed950c745c5ef8\n798598965a343fc9b0957d845ac33749\n40addb4af618318dad5067eac75a07f7\n36047e4ed31420904738a251b334366e\na01e8ade2a92a0eb35836c728d324152\n11c16f6a5fbedf4213c3458a0fe5598\n77b57f3eebab844707cdefe012d0353\nefe6257c1073e003c862eec8232fff1e\nc527f1e7ae2c7b8a4f7482420c2e91df\n7311255cee3e412771a782a4379556c7\ne731ffc67b03d0555f46d55537192b6\n592296965078028282db9fca4b68095\n174928ae6f9aaf3cb1b6b0c5ddacb607\n26ebcfb2ebd8345f14b86d5282eb8301\nc9e9466f782d1b4f7fdd70657322b4ac\nd1cc46478cde981b9a980acf1a5058aa\n47a381f4ed3d30614187eeeb0dea4986\n91dbfe4dac593d3e35836c728d324152\n8d44182e9916d617938da3ea2c9e0e4f\n7b356141695f75e271a782a4379556c7\n658138c87c9184f279368d1198f406e7\n142060f848466cad97ef9a13efb5e3f7\n758f982c1aa6f5edd6eefa796d2f261c\n8bcba9172db65219ad5067eac75a07f7\n575beb82bd20f61fad5067eac75a07f7\n2bbafd62a8c5a2d1520ac90ee81efb48\n599200313a698b6cad5067eac75a07f7\n2fd962562b9f0370339797c21e8801b1\n3ea2fc7c32abc9f758df8eeaf3dad1c\n6dbfbee18b2e149c71a782a4379556c7\n6e029f7d5901aa2e2e4e89f168578552\ne9faaa484cb11948cc89f898f3cf6588\n180c5218bb39d31f5510d59f3ab1ed64\n86745eb914ded54c4ddda47ee90d6a21\n48ff9804a1ae69f4ad5067eac75a07f7\n16570d98a47c9907bd1aeba6ff85928a\n33e18d453f4a8c90ab610b0c94236463\n1c9048855223f744fb85ea6fd426098\n3c079f540fafa7e13b3db95ce254f64d\n7543553927036b0352b7768d51b257d9\ncad4cd1fc0c0952e71a782a4379556c7\n58595b39bcad6b2fad5067eac75a07f7\na0796a2532fcb95fb1b6b0c5ddacb607\n4517f2aee2482e904da62592caaeb495\n17fd058dc352b9d11191025061735ea3\nc9ad9501c31fae5c71a782a4379556c7\n78625405f6c44bdccd67f05ece4a06eb\n40afcc31186c0b452d19175e7d19b7cb\nb909b35804e9751daece045e8bdac80f\na5f3c1314c027654f12d7184a2ad3430\na82406382a5d563099e8bf807e902261\n94ffc8179ae6bf8ddcfd6ca2b952d624\nb5a3017da6739ea0c46152dd624f1d49\n70500798fb5d593be76bc197b3a3ffc0\nd2beb9795e88d3dadcfd6ca2b952d624\n3c991b31710144c5923e4a84d4dce694\nd0891a7d205203a9beedb4c8fd29e2d1\ne0b849b1545d35dab04cb542e2c50eb4\n2fa04d6a788be63f32db3066d0100ee4\n5783c7479b89f76b0783d9ebb200d10\n6c0bc03812d3209fcffd61677456447e\n42fc350dd15b5ee07bcb070cc655f13a\n893d3871e46b18f79b11da89c22111dd\n57dbdc49bd549a508d1542df8403619f\n40fab70cda2e2dc7beedb4c8fd29e2d1\n4d9a737a9ffa6277589aae130c1f06fb\nedb5fe83efeaf086fb0eb7e753c06942\n391005d8f1291cb71bb088904f7cb154\nbc6646a52843dd63474659fc572ff56b\n60052d2cbcb9f8e725c578fb351f3549\n627b977736bac8b0a1f97bf2d7a10a96\n98bab29db492767bc3bd24f986301745\nca43d45909245ceb4ca2c1f43556033c\n8010b1ce4e4b1a472a82acb89c31cb53\ne7c8486921138d5c7ff6ace05b36a5\n8e3bfa092e83c28d55f46d55537192b6\n978936fc521780702c5b6d66521f20aa\ne285d68fe197f968492d9da2668ec34c\n91d47945645a1039eaf14273fa406ffc\naf90af72a4808ea767c8e42cd3ac65ef\n8fbcd8920abcdcc519fb4103277a6b93\n8cd6a33e6ba794419cd431573238602d\nc8bab1768e4af6ad5e89486951545417\n64e65f881d846d9235836c728d324152\n24929a5fbdc7682d7fbc060fd555478\nea21cba1d83526f6deab8d9bfbc24756\ncd224ca2a8aa04b11362d127df6d94eb\nc3b49ab37876c7f219fb4103277a6b93\ncdb0bd21fd5d075bbd1f60c111786ed\n84611112c9300d6b19fb4103277a6b93\ne57509d06a49646c490ad276cd2af3a4\n93fcd3809bc2b9e955f46d55537192b6\nd330377051e6180319fb4103277a6b93\n6d705b609f98e559173b9f28a2caa84d\n1ce87c214e0be0e87dd6aeb162858c12\n5237a2e80c68f90abf7421909bb3502\nd70877569d163235aece045e8bdac80f\neef44075cd1781f1b0a6e87d5d5521b6\n6777718e193b45c4f2b931201029bc76\na44b3e23fa01c205c3bd24f986301745\ned6dcbd0d670784537a0eda928b574d2\n27a90972dfe64be5c3bd24f986301745\na98d6ce7eca8cf272d7d7823aa90da0f\n38b341526f21cc9f6e1c16d8c5e127\n2f7a2d27e58224e689035c25f0dfeb63\n54af9e8e80a0030c42c28aee4f9d8a89\n1c431bd426e880e24719088c8e42c6ab\ne4f9062ec3d2c6247d7b76078f434820\n8ed0ac779ec4bbc9beedb4c8fd29e2d1\n7303502cf80ac41481f172e682de585c\n6110ca3d6213d128c96f5ad2252495c6\n9ae98c4b9fc07bc1beedb4c8fd29e2d1\nc12ab3b5a8d40626c6027d1f057f82f5\ne9383126d043156fc1302d82d108316\n954f39bdb27c54cbeedb4c8fd29e2d1\n339f5b3610ea836682f29b648e624c33\n71a26c00d3a4bf834397d3416be8cfe5\n4707256a1f8fb862a8bcbe9721909844\n67c246e981ece9aa9f0f464e9e8e09b4\n45970e6048cadb39691e5fa75e122ce\ne157aa6411d02cb16f1e631ee7d027b9\n9a70b1d07f3027719fb4103277a6b93\n5d2c769d1afa6e3742f75bc7df727ae\n97e2ca564decce0b575f9747ff6fb5e8\necf301eedfbb508dbeedb4c8fd29e2d1\n1d53304accfb6fb3c3bd24f986301745\n788c9d078cc971bf91a6d2f5a0fae0\n253b7cf1ca03674bf4b6538438a0b930\n2e25c45a4456df3f36270e8efbeb40ec\n7634b09c8ce172ba71a782a4379556c7\n17d336aa38bb77fab1b6b0c5ddacb607\n42756ba88f851b6e3c8d0fdfb1cc2535\nb7a0dda52974fa642250bf58700b4d8f\n6a56d0f447d477e12de0bc4fc4d02dd6\n4d3bdfe96a1d334d3c329e0c5f819d20\na9d890e4b6b426dd358ffaf8d4d252a\n4e46ec6d0826e4525228d12f1858463\n9ce40bd942c332644ee9d52ff0ec4dcc\na86969194537bd5a3a602af85160c9b5\n14624a2cc43aac50e3a031805ace4a99\na8ff038540e5ef35daa3ef8c2a95fdb6\ne2121844a25d93b2c3bd24f986301745\n6b58fd8948d4d34851581925776a606b\n915855afcc5f8918ab27cc93fdc68c94\n133d7c9a1f79b01ad0176f9a144100cd\n166cb38606acc1834265eb8d6103818\n6a61c9e8ade75fbbc3bd24f986301745\n3a1f1de9d4693576938da3ea2c9e0e4f\nd722d42dd739e2a35e0bc0e32d71e297\n5b31b07efaee09fde63a9e8397b31118\nb320afa9ad7573401bb64c55dcda87d4\nc35a4a82cac49ecc55f46d55537192b6\nb1cb375e7f3fe171c242632b2a8c3129\n6dc0048e4326feaaa6c03a53cf0a14c9\nc2f870eebd0ac7494719088c8e42c6ab\nb73a89c916a0237e90faae3c2240cd5a\need2fa156d662c79b26e384cea2f274e\n3dab0646af0e6945beedb4c8fd29e2d1\n12a73c63681d65587a0f32fa630f6a0e\nc0eda75ff5b23100a6536c847a708e24\n2bf3e370da5d2f73ed403132b02528bd\nd3fd6d332e6e8bccd5382f3f8f33a9f4\nea45019340b754c155f46d55537192b6\n1c111a837580fda6c3bd24f986301745\n2ca0370bb8ba5ad0e46a4046edfd3265\n5f1ccf0974b862c6f0d0eca70b77de34\nc0b4b99b37cfed365143f38859a6efa4\n6e77d23b324ddbd65661fcc99c72bf48\n6f87c833355679ef36b0f2a1430e993a\n591a2b1a6c44e5ae535089b1cfcbf17\n1d332d00746e2dc0f8fe975c2cbdb85c\n4bff004a90877ea319fb4103277a6b93\neb62d577d4de8bcbdda7f1d27cdf247c\n1f8205bc25d4d5f21771ee930e861b13\nf0305c34a57664ba32388c13cc4a0ba3\n6eddf598e4199497d684faddec3c0090\n13c8f06bf87c074f9b75b6346baf0c12\ndd543a069376134aba5342d638d0c267\n82f1ed2a66bf8b49f08a713d0c983d8d\n565225390d303601c0f947750540fb22\nd5978095ef90e63375dc74e2f2f50364\neece94f60e91c3d819fb4103277a6b93\nc93aa39b76980ff655f46d55537192b6\n2a4f92a70be4e2159c0b027ae5b223d6\n8f3642beb6eb088d37251258858a7a58\n580cac53a1f9a799446ad0d387c02a3\n8f9f4ac0dd2734d77ff6ace05b36a5\n70f90f5959de7752c0f947750540fb22\n6c763c259b83b9bcbeedb4c8fd29e2d1\n227308a94bc7b231e5490ac94fb8e485\n56597cf3ace4916743ac09133d4c1d60\n4fe5fa039fceaa1823eb3ad3d378722a\nba68b45f1cc9038abeedb4c8fd29e2d1\ne1f9b43eda445dc8c862eec8232fff1e\na13c36acbc45184de76bc197b3a3ffc0\nbfa36cca677c512357f3bb43ed044708\ne4f206e9aee482a15510d59f3ab1ed64\n291e43df05fba9b53d36088e1ac945e3\n561cd495a38e22dfddbe8a6b8178038f\nd485cc87ba99e2caffc6e457221b9271\n32f116e50ba1dcde7ff6ace05b36a5\nb0b0df035ab58b92822a33e080d0e71c\nad14b4bde4a656dd53b1634376cbfb93\ne15a28c0743ded35673b9aac59c306c4\n21fe96bc7ca206cf4ce89debb609dbc8\n2e13d82c2dd5d0714251f7ff551cfb5e\n4b687008902de4543e3a599e79b43485\n9052a28510a4240d49d36f5b69384ad6\n7d0e1c7c5ef289bf94d582a4a37a8dbb\n2b40fbee96b93a5eae25f6fe802a8997\n4b3d009920bd7ff51f5bdd219902caa1\n525d48d65079b2003f222a37719e9945\n88670667d9fcd992eadc9f074ecd1df1\nd6f8a3bdcd20146929e4b5aa807bb4e7\n7f808e545bb01ab7ac91966b4f1152b0\n34b7b563f09f3e937848af3cb674ead1\n25c0559c051e57cc7fe20aad99c84084\n9f75d067359e6db4f9f8d2db335100b\n8fd9d529453e8d56c09af5354c5cbf4e\n36770c30c74a32e16dbc8927361b2733\n11cd9cbf28d3918f1b17743c18fb63dc\n630de8111b5299f5f51f77a6d7299806\n38ad5333308ec5b5f4b6538438a0b930\nc53b11ceba592177564c88c75bda3a02\n7a0280b9d2fbc2244cbbac005f3700ba\n11e12804b2712d08bee8ec52a122c491\n1952d19986c5f122fcf7c0d4b65182c4\n8d5dafee7c2e89aa4cbf9a02e3342127\n82109c884a0e195714038d588fd1342f\n1b1f24767e5555d8c3bd24f986301745\n48054442012cf1989eea323f522c6486\n306cab12f4dc8a47f51f77a6d7299806\n186f6c911a4255bc1b17743c18fb63dc\n92dccb2a3e6445d5c790d7efcdfb5239\n9e55b1135ddf93211c8d18742f91c015\n525b2042bd4547fd7ef440dbce8c5be5\n9a762e9ca86ce96da5e3e028709e0474\n4c51b04b1b32ddcc4ef96d1bb8be503c\n70f9acbbc2881b7657629428a2666327\n1315d61d095210c05510d59f3ab1ed64\nd5c3542c080d61462c45f75322191dd7\nb8efc08bc8eab52a330a170e9ceed373\n712d2c844d61aa9cefead98a255f706f\n87504deae620d0dbf4b6538438a0b930\na9fcd41e05a12a0d7e1dc03b595bd36c\nb130260b9f5d05bb5510d59f3ab1ed64\n6c081d6351e07db937251258858a7a58\n87c752e8280cfa2316a2500eff5eef3a\n2b68cd4ffe443506abb564bb0657e0d6\n79d5aff74dbfa0c2307557ffe40d48d7\n1fd1d459e79ad6c1c3bd24f986301745\nb2cee79b97104212aab142a21aede3bf\nd07b44f271ded6a9c211251dafe812c1\nb789ef3e2e28aa0c3b08200028f31a6a\n8ffcdc51a930bc408964093366ba01ab\ncaee24359d445f4fac509329c62279e6\n8f0a115dc4c1c183f16363d52e74cddf\n39b90508935f0118dde86ae42c792b26\n5533c35223061f231ff2429be93a82ac\n1a5febd8d65b97e4f4b6538438a0b930\n9b3433ca11cd09bae7c7920f6a65a54d\n414f3eb4c4de757cdc97baf002c8189d\n8c3c81a802ecdc45609fb05dbd8681bd\n81148566eef063bf6b1cb83d86c19bfc\nc7feff682976809482db9fca4b68095\nbd2949103a92dd56d3dad974dc098fa1\nd6410c33772aa719dcafa176d8811639\n6d3828602ec4b79232a1f4cd459cdfdd\n841082ec0a936a16a4bec68446bb57f4\n594ca5d155b0bdc2c3bd24f986301745\n3281ed5a4af3494f67990f5b8451542b\nb35bba0caa2faa642eaa34003788a9a2\n63a2d10d7c77424ad214ef3f65f73d74\n6bb2a335613e8e2ce26ba91c6bf4ff82\n26e020b7c9be193782db9fca4b68095\n602526e4a9de3f2c822a33e080d0e71c\n76c01c98aba64318fafec1d6d9ed06d\nb59753a2c0751e7f37251258858a7a58\n416af739e6ae8b2ca9e3e4940ed610e4\n136f3b0a4893cadf4f1b88c70d074e4a\n567ca6e5eebb09f87d0efae8dc996b9e\n121ae3ce921a1e43ef40aa033482abea\naec39c7f691c2ad15a824ea0c4d9b625\n3de638f1ace536c41b17743c18fb63dc\n177c1102dd46badce958df2e8332e31c\n8a12ba383cbda72b91829b477862aff6\ne4a9b9db82ff871a1b17743c18fb63dc\nf09cdde03794151a17be1b91fdcd9df\n20e65777d2ce327035ae67400a94a6fe\n18c8f6ded2f14010746cec00e236149d\naf53fe05e692a7ea2e09703471e30fff\nd1457e572ef95ddbd2096b2fa6f98cc7\n9a2529a1b49282cd6eeb02236344250\nbbe30ffa9234cb3af268f6180933aa3\n43b3d26626b7ac54b35c92fbf601983\nc7fb18d9ee7dc33318a6353ea60f11b6\ndd8693cd2fbb5a0c7d0efae8dc996b9e\nd60a5ae4802e7338951c1fffab4f5807\n2ba4638aa672a0c419fb4103277a6b93\nb6758a9b899d540919fb4103277a6b93\ndace4e7f0ec285abcaa22a10624245b6\n10f1b51f2207766ff11c3739edd52fa3\nc27e9191723f352d91829b477862aff6\n9a314f79b18ba7914187eeeb0dea4986\n57f881c06c1080ac91829b477862aff6\n5b4a3107afc425be60ddc468fe733ed1\ne705fde0d14090d05f2733e561547b29\nd5402158d5fb9fa8c283ca2c9df7372d\n6a754d9c379ff246fbb20af1c3b4b0e9\n788a2ae90158f42af4b6538438a0b930\n5325e56ec7dcfdfb83130614d8020b3\n5b1000b7bc6e0d3b7e67c36deaaa271e\n603e2237e14611f9d4091fbf7990ddf0\n4a11c4ed20638d74c3bd24f986301745\n5a3e5f0fff5a7220b4ca2ef8c032d07d\n8f27f3da43406402bd5d9cd72de2e1b3\n138c29cb642dcd6352620f29156438e2\n2692e57df4705d4d10faac7a8c2754de\n904ad336345205dce76bc197b3a3ffc0\n3439020f6fd015c02d51eba7952634c5\ne8dedc79c201f076973f95b50a1641d3\n2b3b491b70535af2f7f596f1d05d059\n50bf2749c1963d319d84faf1493a1f98\n4de6d195f07edbe5cd18e512cbf0ebf8\ncb374c698a5339f3d6fab6a6a552905a\nd36f8b6fbc03cb3630aec64313e58bdc\nc1ba1f5fa5781abe276333179717351a\ndf2d80be5033d200e2af4d98190aea8\n860995856455e258fc0004571aec2fa2\n60c580efa09c28a91ceb062da003617b\n45363f30a1e16c215963245f0923337f\n456601c88eae2449f51fa0238791f5dc\n4afbcdeba648df2e19fb4103277a6b93\nd1e9a83ee99b48a49856fa70a578baeb\n8345588ba41cd2a87e4bbc5bb7fd2afa\ne004afd245bd06337e2a6b10ca75153d\n4f35874fc0301d015cd4f7d5b0608a\n4ef54a72580df356d5617443b3fe2227\na131dabb9fddd3c97a845b3267216856\n38cc604066d18d1cae685ca100c909e8\n3af5b1ef3e742dedf4b6538438a0b930\n28e64eefcada205fddf120185fc0b2a0\n85db937f27544f5f9f23b3819daf3902\n35dc5a90392dbc1563f26b71f9dca732\n212476fd8bf012b1e3ecbdfbb6709c74\nc7b8f5ba396c07331eb51344489c49f3\n44302defc423e34a8afd316e82119b42\n99ff33b261920e8a55f9913e822d5318\na16a6d438d57667bd3299846d5c00f08\n19d04a424a82894e641aac62064f7645\nad62637a77b172af3542091189dc62b5\n41c538c37e2ade9047f446d318aa6c9e\na5f1b90f85d875f13afadfff198a630\n2a3297e263d9931b814465edb1048711\n38d5b6ad3077e8b1caa22a10624245b6\ne94dcd39a8e438851b17743c18fb63dc\n34309cdc141101e42027cee422df2aa3\n71d50d287357e7e719fb4103277a6b93\na3a4cda9949c347ddb039d8689a74349\nd45385e0a60f71e1427fcd6e404d0cf5\n37f684f64af84541609fb05dbd8681bd\n81808dc89c4461bd9a3d6682397a3947\n4fb805fd299207e7848af3cb674ead1\n316021f1937b32c8e3e78c911e081c08\n146a019a7269fabc45656b6a28cfe2cf\n5026668bb2bcedebccfcde790fc2f661\nac4761dada79926919bebd2312571a3\ndbb5de72508efbbbcad4c3cef7575bef\ncde57c6c75d1453a372bb05ca908b13\nc503356361873b89730cb37c9a5f63b\nf0b827eed9f044bdcdcd8e1ae308f03a\n873d8928f314d95045613f5c2df1029a\n4dc3e9e293450817d3dad974dc098fa1\naa6b5cad531b9ef982db9fca4b68095\n3b384a4919d180a666ef9dd2f3ef27d3\n44bc2b9ceba25f8555f46d55537192b6\n16bb609914396bd0fa7b9a6c80e4e324\nccf0059e0697982ecaa22a10624245b6\necbb5a30557f659b2c528d33bca1ac2\nc6cc25ee47d08674842c47c8032438a1\n52837fa3e281763aed88854fc3e3ce05\n39f30c279e085ae41683a1f2bb7ab319\n1d8536c4e1b1b8eec5ae767f471fad27\n2ff9f572b715e86b1cfb6a573ef73942\n4c8992b5868f945c8164355cfcd0b549\nee00ed62953f4bd280afdc8bd41edec3\nbe00704e7366ec2ceb1488c2b7631b3e\nba34c92a41a9ac9f20d3c05c08e26f\nad75eb223ce16ec5b6dbeff8ebe9459\nbd75fa23435df54b8430b7446f9e1252\n77c74742e9504005a7d0cc9b15400f65\nc87012fece9848de87f79701ecbb26ac\naeb33188a1d1f0aaeb1b6e7f54488efd\n95a7581a491d3706996336ab975e6575\nb99bad700049d8f7cbe3d3c1931d32af\n4132539ff314f0654d1fe7f29df13cf6\n919b2b8877c90f6885718c281d7fdf61\n72659c0df8a3d5f77ee217c21e683487\nf01ca36bab1a7a1d9e9583a661702ed4\nd9994cf6d5d444379dbfd5cfd194350d\ne630732939f6188957f5e6dcbb0b7930\n14786ae920496ca7197c43c7dc584772\n1c70e72ac0eb77816349f6b5431fb3d1\na18c4bd95d90f37091829b477862aff6\n25bff1399600790bc3bd24f986301745\nae1a7b7c3ec72178b848d7d3af8eb610\nd0346744d67b08b099e8bf807e902261\naad4591952dd151189485cd87f37f89f\nc21637acf98dd08649bab4be538c970f\n1b6ea0e8c6785638ad8d9da81848733\n1f2fe0bf66eba0b03968da786c4da00c\n3b72f2c31c5aac6ab3421b3649fb16c1\n3ee0a3bc5e7af23d1bb088904f7cb154\n3e645e9f5703d14e51d3c864cc68e22e\n3cb17903afe49e6962e682c9809bff14\n459a13812561557e26217a9a857cd404\n4180532fda31d19b37251258858a7a58\naf65bb882c818f9861dcc050524e1d17\nce96139ae5a4dbfa55f46d55537192b6\n155a08c8e150e7008c4f202fffc87396\n70e58cec417d5e1ec283ca2c9df7372d\n758ab4ddc8fde77cb2b755acb296d925\n6afba6bbc7ca32bd339797c21e8801b1\n54b4555dacd9fc16e1eb1991fb37eb9b\ne1b3412d67d2c18c59f8e31ca87c470e\na6cadf8f6d6e5d26f12d7184a2ad3430\n10f0753ae756fe489c0c9824ccd078be\n63cde6b5e85cae2bf4b6538438a0b930\n9b77e481163e91214038d588fd1342f\n224766e5a022785af51fa0238791f5dc\n6f052c8606dd3ac3de03ab2a27ba7531\n56eeebd64c7821dd641aac62064f7645\neddd80bdb6f6c8b48bfc6c6704f4dffd\nc06f1cb96170e548b2c2cd006d206129\n4b4b745af2c816c28ffa76d198ce7f6c\nb074b6460f46170660edf8bc2f5c8881\n3a800ccb5e7de7811705bfd3afcd10e\ndb20d1cc56356476a58a1de596e6d773\ne801542eb03f6e3b96d5fa1ee6ada8d1\n79d992df7306436da1ed581c544d9fd9\n35ae6545bdefd0ae7ee217c21e683487\n1ceaa8bd231d922cc3bd24f986301745\n84c52a5ac0f8d1d060ddc468fe733ed1\n88789f9c90fd644550c5faea6c3af4f8\nb1835f603e1477f61b50574ebd76a45b\n2519505d0cee2edff08984f51debc075\n3f198d5bb97b930c87e847ff3a8836f1\n94be8cf5e1538257f51fa0238791f5dc\n49ce1344c3c8a652f9883d2fd957d60f\nb17bfa9db55c2d2e4702663c3b3faf8f\nc44792206360e4e4be1b0e1de3e987b3\nb10228c0b83a6d436b8cc29ba15869e8\n565c8256aa446f152685733c782593df\nbcceb065b8c433b99a87002a4eeaf610\n4de9fa90bcbd6beec3bd24f986301745\n1e588358e4681e1ac3bd24f986301745\n97f5d86912ce0f872caaf8842dbb8ac2\nec8a05151bdfd44779368d1198f406e7\ncf24aa524055dd5ceebb0db1929cfe93\n1e3dc37e2cc335441326da246d3ca9c5\nce1c3321de30433b16ec4c6284dcbcbe\n56e46d8bbb70b17491829b477862aff6\n62e723ad4ee0ba9d65579260f47a2d77\n224ccf4c3cfd4cc1b9a0f5d18f1ce54c\nba444152722b67444b8710a3469971b1\nd8fa26d89a3ec264ee1dfc331dd3e94\n713c28954944221f618af5c2f6d28c1e\ncf3270a5af169626efa153ac02df4ca3\nb588c0169924f8e32d6a698a89d341f2\nc8ba87c9581f9122f51f77a6d7299806\n75a824a5acd71051bb29ecbc4d013bd1\n599f4550ef24f59d19fb4103277a6b93\n8a09f540491889f519fb4103277a6b93\n1f2c84d387bd1af9609fb05dbd8681bd\n7364fd26628b7f6a3e0881f7de9a6e52\neff2f84104e78435d6f4cef762589739\na06fa6a604ddc974ccd77b10347fd7d3\ncc445d016f3a487d84cc5b3c1e5e75d5\na333abca08fceb434eec4d2d414b38e0\n9e42bbdbfe36680391e4d6c585a697a\n37726dbb4357739bded526a7be77b30e\n82a9838fc655d7f62e6da3d97725a350\n2927b65bc7b9561bf51f77a6d7299806\nddb760d364ee3c5aa7257db74b7b377\n1241ec2dc5e59b0ec3bd24f986301745\ndccb87aacbcb40a4f1783a44a88d6274\n8c9782f2dcd99d5255f46d55537192b6\n5d82e3924ace17d814038d588fd1342f\n3fdd61db58e5856c91c74eb018d3bfd5\nc2a33328b7df204e1754bd6e58ab2748\n6ebd63203c1ba404f51f77a6d7299806\n98416e9f15b3f80fe76bc197b3a3ffc0\n995b7cc4da9f0371eadc9f074ecd1df1\n65f27b374b83dff560ddc468fe733ed1\n83a2a5dfe03a2be1b2b755acb296d925\neb54a7a886da95f69223fc014b68160f\n3822df9afd06c2d875a82b88fe6e733f\ne588e603f5d0e366490ad276cd2af3a4\n651706776926937314b86d5282eb8301\n21227197948fd2857c2f94a943a8669b\nb1bf0b775e6fc085391e4d6c585a697a\ndcee2fa2aa02fa7c4a05fa063da00291\n913c38e7faa82c984a62fa5dd236505b\n5b685a0318bcf5ff4ced24553b268ec\n5bccf52849ce93b5f4d0ace72e0fac85\n48afc56a733cf916660094e03bb531dd\n224ec626233b7a0c14038d588fd1342f\ne563bbcb07d70dcc3321831d2245cf06\na4e5a85d21a6b36ba60a29091f2ab01f\n937fba1b3389783684b7bc3f8a9aa55\n1377448893b499a5a8e4e5c9426fb9cb\n65164df6ae3dd848a1d7c136d0e341\ncb214fef007a2a46bed1bd9593e318c\n1fe846f8b74b5fc66b510e987fd42f59\n99d329e5aee0fd21c8c7b57a94dbb2e\n9614faa3e0472656b988865f09908beb\n9c17ba009a1f68a5f31d4c4da1121d06\n45bd3bed8ef1315ed42ec7e303174a87\n308a43b7ad3f8c2bdf8a6816927a07f4\n72ac0fd17bbe76375af983a27c524ad0\n189f519f6cb7b8c516fdce62f5c06e29\n28365bca55784894e99f3a1de720cdd\n5e0340e08510cfc52f84cb7932f866fd\n307bc4f0db5cb0452f0ebd444c10bd0c\n5407f938370ffd34390dcdc075aa60c5\n50fdd5311091e5d742d09291b1705b96\n92973023278f568a4594f83fd12bcf18\n415d7746f792eb1de0445fc6d980dd5c\n86a7bbaceee66eb36b63d78a2e71a26\n3339d615f108948876e9713f57a5fcb6\n1674e0a5bde2dd67f12d7184a2ad3430\ne64f3681d7c76bb743638dabe1eb5336\n34ec5656afb6860af3c9c1464e55d580\nb68a370aadfe0b4d4f3443b22038d340\n29de23533f0a9c31b79de6fdd84b2221\nd3a8019633567d71b20716e5484f7807\n2cafcc8c772d4860c2d043ecbc42284c\na8d59c4b6577b9eb37a0eda928b574d2\n719c8fe47dc6d3d9b6b5a7b8c31557c\ne98dcd0334fa639fef9f898cda0ff409\n5aef22f5441b495d19fb4103277a6b93\na54eeb7ca4dfe0bea71c812e027f94d9\n647678ff9809303260eb699207aa149d\n89e73205e8d18a8c99e8bf807e902261\n7c07ffc0147bef7df3c9c1464e55d580\n4c18b279e078ebb91a8781c24b79ae57\n471f9b50c57b07056abfacdc918044f4\n11a1bb35960f02d83dc1643807625350\n51149acaab6049d05938488ff499d96a\n9c510bfa2304c78480cd53d4e54e1fe\ndc5a136f23bd3f31c710d14956729baa\nb00de96484b0275a5cca18918d24f6cd\nece7f04700c5767a4cbf9a02e3342127\n2e8a4184f4067657f2cf6a9bef44d625\n184c944daf00dc9919fb4103277a6b93\nb814241f84521f797ea323bc74055b8\n392b7f2c8b72ba54d05b3855d81c2ed0\n5fbbdc1e83a45d258d1c65d617ea0b5e\n5c5f434f9ea8bf777bcb070cc655f13a\n53bc49f45214d8d6ea73a64ae4344bc3\ndcf246280361e20d1bf2b66b52bf6885\n56e00d6764a7205fa9fe1734a6086750\n61b6b273190637e5788a7b7b4713dbc6\n5dca7ed62a72a5fe81a172d69c52a28a\n53b815fbd98e6ed237be8761f2d10359\n710f2f56520b0bdd9b11da89c22111dd\n67d11f49bb73a66535836c728d324152\n6acba1cf4d21321a9ac279f421086f50\n2b2d827267baf5e75510d59f3ab1ed64\n84c9082a8cbd03e5e76bc197b3a3ffc0\nd673e7a605249edf7c1af3afc3f87aef\nc71fa66202239b58d6de1645a30c4052\nae3f65ef020c8170cd80f9971acfba\n4aab0e569f1dc3bc8d7e9f13fd8f661d\ncf10ac71297ae632f44880b8ee951142\ndf03ded86df8fbd2ebd284456950c944\n1311cade594e030fe497c7dfb96f4c60\n62bba707a00a2fd0c271edf49b97f472\n24c854eb3f4bdba21b17743c18fb63dc\ndb9458fd1459982347b1b3e368e511da\n197393cdb4c836a713c18ca5acf69765\n9feefc5eb43adb4fb7db0056a767efc7\n4c2103f096818e16ca368f1abf470106\n98791e9d594a7bcd41f7bb21ee1aab57\n72f98e4a45f971ffaa0fb4126a41efc4\n1f0c62f30be6f19aa6fc75a75fb8d65e\n58a9e0e6fc43ccc5db32b682f6360550\n6b4800452f4655e7d34b068b4d9c2c60\n36f771a41910dd89fb713eaada66481d\n5d46bcc77b2815fca71c812e027f94d9\n187f32df6f393d18490ad276cd2af3a4\n103ad97126bc54f4fc5e9e325e1bd5b8\n7dd4c0baac6c76703002761e7a3ba3bd\n76f4352b12cebc55685756818b5a05e\n1ee2b2bc538245a85de04aad18bd94c3\n7eac5c3e4a8e4e086e5b9257c4084ca2\n7b5544ecc31bc609a8e4e5c9426fb9cb\n6bf4bc4a845bf639ce65ba7fab42a621\n9fc50a184e6d86a9b3fdb1a7c9a60207\nc359be2db828da29cfcb2cdfd88e07cb\n826b18241c9c2fa83eeddbccbf885e99\n4e15b52579903323f51f77a6d7299806\nbca062605b3f79b9a75c3b311265cd31\n3b57aa434803b0ec189c2d5c093a2652\n1bc8eb160194017cde26427f80dbcfad\n41adf7a8d492a41ff12d7184a2ad3430\n46a07944ca646df01ff8bce0e3352d0c\nafea61dd761b70a3fc0035da39bd5e1\n901eb5d8bab4bbe48fe31aea3727611\nb0d7c6d51712d1fbe76bc197b3a3ffc0\n14bbf802bf00121267d783b4714d4324\n972ff7998554988ae6c5cd45aa112726\nb1a5b2caa2b7dc95f51f77a6d7299806\ndf74203c0a1585f9a29294366c3334b2\n1adc25c3c29e98c454683b99ac4500e8\n7822d47b9ce66e5591a1a434bc319a99\n35803ad1072c4221e8b2b8dc0c816caf\na53650752c2d73ce83eca490ad2084\n5e0e607f01cdf9ed93f709c6d6d99cb9\n105b9a03ddfaf5c5e7828dbf1991f6a4\n675c225ef7bf4b4b3db912a90d289dfc\na49d69c86f512f5d28783a5eb7743d5f\n8b8de5b5ce7fc61def9f898cda0ff409\nd5deca423faade89bb814dc1a3fcda86\n9ce692996699529b8430b7446f9e1252\nbbae4abbff206a2a14038d588fd1342f\n4506f150e4f43633fab6e40cce6926d7\n4acb95a2fc33c3dd19fb4103277a6b93\n3b569be398a7e56eb4d174e5c61f344\n68c52fa67028fceb47637d2621d965b1\n396a32fab409303c811237b87ea8b154\n6e16dc2baf237aeb5b87cb2d9a815c73\nf073fc78c930ca06f777b6b1bae343f6\n114a39da3b4bf118d42ec7e303174a87\nb18fcb1483fc0f4c8ea6bd444282b41b\nd22e15286d0d99ec52d2de7b04447df3\n10e5ffa28c252aceea46bea76c64cc3d\n4a9ded4f31e089129cd1fe76686a65\n5554b586330150ab6d5ac6b606b81bbd\n611354b629b71f72d5b708f09789d978\n6afec996cdd847031638d1ffbbaa0c53\n7f5c20bafb143b92492d9da2668ec34c\n905edb931ab4be1e27356ce25a15eb6d\nc7358b3aed4160cb21bc3cf138f79e\nbcac0b4a07a61efed498ea2919be2102\n453e290f4425e0604671fddd657dec0a\n1b2dc847e12c32d4a430f20b4b0a337c\n3f21494d8a34df8481a172d69c52a28a\n304ff1fce32b5bdfadccd0ac21fd007a\n1855a4b70958b3354b8710a3469971b1\nd4de4deff5410e2be499c77acfcee9f4\n587f53986db55d45738e43095496b061\nd14dfaade3e105306ebc5c7b8e36e351\nedc14df2b7e3bed1b15370175a9d2c81\nb0890c9a4332f7a07e28af1b4b42317e\n2bc37c326782ecfb9bbc8ad5ece3c1b\n5826f35dcc58f9206025dd3b37729bd3\n6137e19255f71a0a26700e14156d231c\n5fcf8f8ae6c226b03002761e7a3ba3bd\n3b36f062f56e320674b9a1885f058618\n52c0950979a8572ad42ec7e303174a87\n4b82103c9ee9ae4f98e0d1738edd4f19\n8647063ec039c4eff51f77a6d7299806\n3bcd7dc964487b1ae6c5cd45aa112726\n33e0b076b1dfd411654495ddff111d98\n90a1748069ca92df9667b9ba9d06c778\nb9943f2962f4ac9840ef1c8b63a628f9\ncd4e8748514e028642d23b95defe1ce5\n6176df18ef54e0a3f12d7184a2ad3430\na18a9e2ea68eeacd36b0f2a1430e993a\ndd0c4018a8b310edafaeb6535dda1ed\nb9089b8cf70c95e1f4b6538438a0b930\ndf2244d33847f7cc4802d94e40825ea\n18cea57b061a65e5a346e6ee1c343985\n5ba371858d595d4ef645e44148cef56\nb7ff6501981195caf771fa2e8f483ca5\n9330bd524773fa17915e97a8e8ae6c48\n5d4eec616095ed87dbe6f297e0ec0d5e\n9859cddbb637f5c8d3bb9bbe8087feb7\n43a7d89c62a2fa86a5aee46eeae32d13\n8efb3d9ec93520a797046e48d8f1e936\n54ec14c2afc2b7e37c5d07ba5fee5aad\nbdf30e94446293c645de94e1bc93a4f6\n1ea28bffca73c3d44b8710a3469971b1\n1be0ad8c6375f5d47edd45e036b3c8b1\n3da823da4b6acf395b903ba10d2ec446\n168e317409670cf2a0006518e6ab8b1\naf5e2282958114c3f12d7184a2ad3430\n2eb880249672bc2386b647696ec80093\n7625201ed0ef311eb65b71636c46ae49\ndecd9ab8c2714f2e7235016c2c2c8150\nc15f3a4903ca16b98c0a2d703f217201\nc9b834aeda78274029edbf57bdd3b0af\n58f6e2538ba750008223f9660fdfaf1\n7191fe8893bb6a89b5b7c35a8e7396f2\nc20a5f8cfa29824b310af74324aae27f\nbcbc5e30e12a58f07ea323bc74055b8\ndd276ac55465f51e1457f3eb061a2fca\ne4dc0ff7a1f3151814f68a949b9a6baf\n62c6addae5defe8bc62ff677c806df30\ndff9b5c37bedc55e9f011a37a96f51f\n7713f8a266cfcb1ee31752932c101137\ndff5b7cb4f72def6641f7a370ac2809e\n537e9f07962478412de1f397a20604d2\n7f9c12456dea1c2531c7871fa99a9d36\nc0e8eca9811baaf1237b12b19575e7ae\nb3371ffc36150f817bb281f66a49b55\n629d09ce8c10a4f866603970dfcc17a6\na24cc636d32bea058c833bc3a0fba1ca\ne5567158ce772a43fcf7d910cd22d7c2\n9d1485d7d82df9aef4ab13f4b49ac318\nb84b06178cb49ee171d0a1a8ffd305f4\n687c7be604090bf89cd431573238602d\n64dedff769355d281bce08795c661fc1\n5b0185f3a758e481618970cea28848f6\n7affe342bb9be16d5936c7265c890fef\n2b00c0cd6353e2fc52ed0af58ae88731\na5c6be40bd9332e873d4ab618ffba803\ne469e53c260a5ca47d2695833906aa3a\n9f035e68630d704b46fb9c38320df24e\n41eda879e1b7eee2dec2e3fb3c73544\n54401b6df397d9464719088c8e42c6ab\n9109c50681f033d83b233a16f6b369c3\na8c7402b6bb693219786ace2aaa77b00\ned0b1bd723063c8ee1be359afa82825\n4eae659d4bc093465f675b8d0bab4126\n72a7c2a8221afcd27e6cebe5e9a662c6\n24732a80e4b1a44282db9fca4b68095\nd97819998f885d54fb977fd7ef10cdde\n718df0ef71586a6ecccd93cbd8dfdb84\n7df8028783ecc6ba6d5fdff4a5ada0ca\nd31b0d2a41051f2c7b79156a61ad4c01\n9cce8b636c333950eb98f4ac131ee005\n28fb3bc8ab9f518035836c728d324152\n45f04dd3dfbc4926d42ec7e303174a87\n30afd447dd7201d652c0eaae5c15cab1\na80b1f16f5dfae242aed93548190eee8\n7170910538470c80738e43095496b061\nd083fd20f6f953fd4187eeeb0dea4986\n3842d805856309df777b6246417c94ff\nafa90f39238804b35778775dfd5ca46a\nc0470c413b0a260979368d1198f406e7\n1f7ae7a902f453b39dd0cb4dfd5b80bc\n4639656b53d21ab1278d386bfa54545\n72bd77bd74cce09cbc6a236746230424\n24f753c88ee4376f19fb4103277a6b93\n382b49301bbd3d707d6dfba3e792b660\nc8cd7f01dd79bff03b92b6b9488ceadd\n2a6010074025d1d85dc3653f8341633a\n7dca56442a9756a2e38cad80f0be5c63\n6f13be4d995e55b25ed28ed911e69310\n1c814f977bcda5b79a87002a4eeaf610\n9a4303e83aaeae9cb2ee6b27e0eef6ad\n4220d2a91737c68019fb4103277a6b93\n506ad995cecb082f54e1b6f41fdd78a\nf06857189fae823f35836c728d324152\n9b32bae53b91a01f278d386bfa54545\n5d59c0f64642450911794406b17d66b\n325d922d3092f7bfc3bd24f986301745\nbee3ff1926f3068cf09df371fae9d63d\n5b719bcb32b8f291f16681d085170878\n6adda4f50154d662492d9da2668ec34c\n2b34724248743a36a71c812e027f94d9\nc11167eda66f60f219fb4103277a6b93\n28db458b524dc934f2c9082debcece6\n89fa346209ccdd0f16626db88aecf64\n9cc8c5869737e8e3f51fa0238791f5dc\nb23b29f4b08cb2e7b65b71636c46ae49\n5a5d896489318c0279c251b4a7838829\n4e784e440912c48819fb4103277a6b93\n69e670c5a40a40ec9095fe1213108032\n36a14a47b91d7c42f51f77a6d7299806\n6aae2a0daba548f082ec48ff3a4fe07c\n3804253f3eacff56a55e6ad8c321a190\n6f39877ac66ff1b55936c7265c890fef\n7050eed75c60753cf0eaa338269104ae\ne97089561bcb8e85833c6c72c4b62a4d\n41101b30e8a82faaa640b0223e089df8\n25bca46cd4b9c517d1bd956578bfe63e\nafa91ef326c0309768966ba896bb15dd\na0379565daf4b6e6579cea75b38cb7ce\nd37fd2ce56b3340eaccac37ae24b8e2\n52bc4d1cdb3789407ff6ace05b36a5\n492de0f32fc58c83297936c81e7f6629\n33ceeac71f2031577cc56a6af4771185\na7e343ab31f1e113beedb4c8fd29e2d1\n9160a9dc1c840e79c607634b4693f04f\nea9e7db452d2df55d42ec7e303174a87\nc715a29db7d888dd23f9e4320fcb3664\n83b28dc11de6b2625c8a41baad250b1b\neeb23be65d6c76123199fadac163f8c6\nd9c11381adf0cf48f1783a44a88d6274\n72bf6e88fc05d48c2ebeb1e6a8111f53\nd40ba4b29c5ae69dae14646a8c8ddd34\nbcb51814564c9308b27067c40cfa2f80\nc97fe8ab1bb4e195af983a27c524ad0\n92dcd20f1b208af9f51f77a6d7299806\n1a9ea91307d15d91f51f77a6d7299806\nd43d8df70f357bcb83776366d314ddd7\ne8502118aeed3381d5b708f09789d978\nca484b4b04e546938c9e244e3fbf98f0\n31f09d77217fc9e0e76bc197b3a3ffc0\n3f1b826134c88f5fa0a2f1a46df5a003\n6e81c795bb5f2fdaadb72b90b2eeacbb\n3f10bef75e979d83b32d32632cd702eb\nd4acb5110512f5c38369c37b40e82efa\n3ac69f9e2517f836a341228b21d337a9\n59ef41df3ae8a4026c2e61baa2a8130\n622e30a7ccf34ed5b64a7c8189aa3893\n724fa46215e03f4c52d9fc61873164a1\na2405bb8642d5bcecce90f0d61ed7a70\n718679874bec63183c9bc0d98cd0376e\nacf0ad26f9feff411191025061735ea3\n2cd211982e3293a7492d9da2668ec34c\n5924fe80dc26ae812b0c00d36a59e875\ne8d505c5e89f313dd42ec7e303174a87\n38c395f4655e0e70fabe21cb4fa2fa68\n4548b28199a044ab19fb4103277a6b93\n6949e65a18ca505298d5fc0473d00a1c\n38bbdd91e895c0f92c0404a105e586\n24bfb2f2e403e025d5b708f09789d978\nb3d7407f79c36ee7367336fdf5bd5f57\n6c844e3f4a99bc3ae8375def5e736d8\ne3fc414b6b9b52ac50d71b436e21a7da\nb2867d5067f44e0d6b1cb83d86c19bfc\n812a19a717fb5bf34510596cb4be6a33\n6afd8ac8c1a2e31cd42ec7e303174a87\nef29c3dcc28f4e314785a5d3b6c47521\na797546d87b4a03bf4b6538438a0b930\n19c9beb4e4a5ea352c79b4f0fac9a79d\n4dbea9b679493c3c31ec4caf9b70d4ed\ne94b1ab02a3264c89eaa55bb236fb6e1\n56ad1b4f94a1d84ae340086172f20153\n7960127aa69c0447492d9da2668ec34c\n8d9e1624c85dc88621bdbc0445d9f748\n71a782bd942c4b0147d5777b892afbf7\n33c9515dc8f887bc664b3b9b23ddfcbc\n20cba21d7122fec4784a45ea6efa1d77\n9ee005b0d0cf88a0e7e684d25d4dcaf0\n2563d1fd68ae9d77ac803318d4b3b4b2\n8f7d16c0303d8cf4593ebeeedbff73b\nec379ae9e5d850459f2349486c570dd4\n3f5daa8fe93b68fa87e2d08958d6900c\n10139657dfa9afe0c3bd24f986301745\n15d8de2e2c672a445af983a27c524ad0\nda90bb35949fb45ac3bd24f986301745\n133686fa1a2136092c280c3b5abf8255\n7fc3bc8542f4c17ce4511d9a59e40339\n1ab95754a8af2257ad75d368738e0b47\nd1c6ed48a115eed0659dda512294c744\nd9628700a086ca293c85bd0482f3094\nac343084fcd0677bf78817f740055424\n1b4e6f9dd22a8c628ef9d976af675b86\n33005098444c222b2b70eac6546e93fd\ne7adfbfabcafa394278f90ef85162deb\n193aa6ce8777814b90e2ed261620fef5\n5a2c14bbfcd9ca4d68f8796d69d0c486\nf1858f78989891172027cee422df2aa3\n726a974620efd98c377b9297f3055210\ndf166b0407fef7ae4b3c42e318f3affc\n697779230551768eedf21eadb26f2ac0\n10fbf670bb017ec94ebb593f0d0b4581\na7536a73ce066981c6641602bad03c73\n3fc1002b5a538aee50c9fe3e733d8740\ncd5f235344ff4c10d5b24cafb84903c7\nb8fbc4e32270751830bbd4cddd04c77b\n87c49d4ca6b740d5275d003e423c59ba\n731b5127b72cbbd9b9a17f7cc0030785\nbc3c03577d04c17a8dc9009357301fae\ne97106cc8bd3ef5730bbd4cddd04c77b\n290df469e3338a67c3bd24f986301745\nfe4c20766801dc98bc2e5d5fd57660fe\nb1cad66b13e1a1e7714531f0291497fd\nc927a92a2ce0be7030bbd4cddd04c77b\n817f1c820e82cd498962005ce0e986db\nc92ea3f511378ab1e21111e385a0661f\n96dd123d4b16ce2afc62a892407efc0c\n2d018cff733a8e176870e413ec7729b0\n8700e5f711dd180bef207763b5f4c54e\ne41da371550711697062f2d72cde5c95\nffc75a8bdb88c751b7fbcb21c074906c\n640da7c995f9fcdeab571431db8834c7\n9dfcd3488a7109745b5b328c62af5142\n8aaca7e2c1b0ec549eea323f522c6486\nf023a5489450b924520ad20925ff9d2d\need0984ed7a72e99cd1c64069cf52e3\na41865cc8dfffcc137ad4a99518dba6d\n5365dead8b3f7d4166ccbd11a6ef0f68\n63ca298a0bc7dac4d1f4a577576ffb5d\nba48c686c1070c63f37af16b2893f1d4\n5d30966509f58394237c47118f6132c8\nc277ca4a9195df2ffebad4f49b26ec52\n4ce62e31dff3ac18ffc6e457221b9271\n3a6a01d03f28cf83664b3b9b23ddfcbc\nf7574c55aa4d5c80cba9caf4d254cef0\n2f8395ded89cf84f40b4c5428883e585\n6c56052772cdc2b66289707fcc0ca1d\n34b36de23e2e64852e3db45253b87bcb\n1615fc31b6daa088c3bd24f986301745\nacc0b552910e603955f46d55537192b6\n5a945b9e86d60a4aa75d03186a0409e2\n6ea2512df0b4f49244175b4dddf5be08\n42018e077cb76cd3948fd22ef0eabdf1\na4d27a18402f6f4511c3daed4b8d9da2\n5fc81c6ef8ae997a6ba09c1bcc052706\nad41461d3fa9b483f6bf408264db131b\n7ae9c3f17c5f9c569284ac9fef3539eb\n284831cd2c3c4641668ae11a7db5e82a\n932079d89ba2e7ead16260d4d73b56\n4e08d2efcf14b7adee170fb6995748d0\n1a80520ab14439ef79b3e1be3524f72f\n2908340693e3dbbd8608f23147a4e121\na5abb8bcc70e8099ff39d54f280fc5d8\n10e6398274554867fdf2e93846e20960\n70562998ddeecf5ff5816ac43b9e4b2b\n691caf9e558fa4dec7f671ba289ebd83\ne7373d97df1216af869f35aa46529daf\naf2feda1ed22097d6200682ef9a0dc75\n74444148ff8d13d0febad4f49b26ec52\n5918b05f59251e8c24507ea38c2d7c6c\n21d141b130a76e0e497b98603e1cd1f\n21ce94947b07b5d1f91663a74ccd2338\n2d8fd94c6aeb5be2beafccdad931a74a\n90889a0cf4285ff4f46e6e4e575a5bf\n1c00da8a9bd6f7403b846408f8d3469d\nf22cffb7f3ca2ea1d719cc16de395dac\n42496cee03df8154ac2b62da1791c2b6\ndbc98a58a2425925febad4f49b26ec52\n366645cdaab60c793e5eb583c9d92b57\nbbf0968957f58e78f00f21861968ae14\nd7cde91c536c6502d7a1dc9bb68fc381\n51cef4b98624473e193a311b8faf4ace\n119a538325398df617b2b37d6988a89b\na53e528827345c7b593ebeeedbff73b\n57399be7d3352241b8812f80908a0273\nf2fee52b9098c13fdcfa6f33a3c5eb83\n5b6bba613d5dccdb21b55dcb76ec1538\nadf35ea69635bade7b9c6deef486a7d8\n24a95d1ffe9b8853468a0257ee459475\nd45cb36eb4c38786b9a7614f2da8d7ae\n44d70581b7c1468e1771ee930e861b13\n29207ae4e01c415894fc399eb2c2f348\n50bc6269b12da0e5f88cd736e1bad067\n47c51069048eedfea9646a2bf24db0c5\naa96704dbd5e852cd9fad8aba2c312b7\na72b18ca7d4aec7e67cfebe3c2e9790f\n6b521eb69b5af97dcddece8d514fc823\n75b3ffb0c09ce8b5febad4f49b26ec52\n14d8555f9a21f341edf3b24dfcb75e6c\n175b6c97de52974a8f27e336794e60cf\n9f3d0cb709260aa09ccce4c6d5bb195f\n376c99ec94d34cf4e76bc197b3a3ffc0\nabb1710ecb79812d93f55c796c857bef\n9c49b5339e9f3cfa5c6b6ad017b2e512\n40343df799bfbc12c506ad4a52a913c4\nf408befab026f5001e5e1a907376dffc\n87ab01946ad4a2f6e56bc109beb9eb57\n2da006ded7b80b61febad4f49b26ec52\neef0387bc4e72a1efebad4f49b26ec52\n50882181ce7f2bc1739680f4e31f35e0\nd1ef95530469a1de1fc4857cc94b6562\n9b7352c3a8d69c2a1185ac82ed4da80d\n485b69363fa53a5ec35131da26f8061a\nab8735a26c5c9ea4f8574543281e850f\n33857c2548cc653ba53276bbe109327a\n4315e96a1dbf9337cacf13745dbfd112\nfd8cffbc99f7388e4f2b9e837678be87\n669a8114b9a602c2febad4f49b26ec52\nfe5f543fd0c6b34edbbc9440457e303e\n67057f4425cf8fa5f46b0a91833c80a4\n206a239d64ad2b31664b3b9b23ddfcbc\n1460b1e3fb02755e67db1ddda25e199f\n94f9034f0a3e85d3ee881d4feac7f213\n1600f311c31ad47fa4bec68446bb57f4\n7d95cbca44393d12ca39a5500b69b164\n6c6aaa451538a8ed6ec2cd9a23ae5af9\nbf9d12b9a6a79eed342501391dc44531\nab5dbe7338e842e36f7826c82fdc3f35\ndbb28a435349c9c76b1cb83d86c19bfc\nbd10eeed8d8190ccb041f249f731e3da\n4f0fd96b50c261ed48fda83c10428379\n114520b78a1726cf86de8d6734d81fc9\nfaabf2f29b99589991752ed21892d778\n5b4997ae8d1e46fd16a2b5862518c93\n22b4c1176e8433134ea79bdd828d5828\n1c90216659d7b97fec5d8105ca6b7dcc\ncd01fd75885d9f606ce1f91756352daf\na4cd409ceb0aa148d93cf5f5bfd78ab4\nd458bc90f183605119fb4103277a6b93\nca9bbb0ecdcde978178548484b14e6f6\n2c6d9b85e2be02d9d76ce82841b0eded\n58a0638f8bf4f0fb79414e04132a8bef\nfd7f26ea3a1d1cfab092f06f28d82d71\n4fa88f9362f216481b99c25df49800ad\ndcca76b81c747e76a65e19246f8119cb\n135f9b1fb72e16d0dcf4cc877ea9b3ab\n21925c161a6aa5bf6d65f86bdc92afdc\ne921675e5dddf58b30477f27f55db318\n1cce1fd7a0184a48cbb8bac2032149c\n659e7b7166d8b9972f84a7804aae667f\n92b044e982b28fb02075b603cae7ba22\nfeda1b3bf39743d8f16ec553491baad7\nf8e8b0059395805d9bd3e6056359bce9\n40cb833fe986db191ce7600faa926b91\n156ebd353a36f36ac3bd24f986301745\naa8bc1794eb3437977de2663bcb4d12c\nc809bf0ed02eef7016a2b5862518c93\nba311a09f08ea7899c39abaf208a73e5\n803fd62336eca9d58797727ac1d88278\n57e4a4a4806c38e33702d3e624608075\nd76d897ff334065a82130856eb48454e\ne2ccba151d9fee85a71c812e027f94d9\n4e934cf95db4cd3bce58f346b4d8abe\n505dca88c2a9f7bba75d03186a0409e2\n610709315a0f542552b3505ff8f3d685\n96ef0920cb6be395e44bad6fc9badfe7\n5f8baa8b2f5c37f3124c962aae03701\ndf767f2df999315b74ffc2f06690002e\n1370db5c4f0b84026aa35752fcfa44c0\n516f73ee8b530042593ebeeedbff73b\ne8ac113e9db33ac8cfdf2d08e1ba2a48\nf76bddb92341f2a8a8a7283d9841addf\n8f7cbae92fc1c6f9327289c00b6dc9ca\n34c00f5a77147ac6b041f249f731e3da\n71752a166bbbb06592bf3ce6b900c3ae\n50b6c4c7681aa3fcbaf2e78ed413860a\n2425d3befad0440febad4f49b26ec52\nfe0e7198411fc340c057222d6d091c56\ndc61d1287fff3ebdd2afe8d5254a0d04\n15090e10ae2d06306e25f3efedf6785f\naa0d0d753ed85d62389bb6b6a6e983d9\nd8ef132f3ae98f688231f48f0f8de6d4\nb59743992b870052255fc74f0e7640d5\nd51dfe604d380ba9bf01c8d1f07a5c67\n8e3524b6312f60738ac5263758737a81\n15cb1696b45ef647dcad484e89744ca\n328e8b5e3419c66c493f7199d76f57a\nf3cbca2c7a6b2821f4b6538438a0b930\n2bc3439a36c0518b4b3c42e318f3affc\ne5437217b4f28c976c45c685905d0ecb\n6a4a9790706a558c2f84a7804aae667f\ndb09ccbc677e2afc9f60147421585c0d\n60014b37baab2a2fdcc3461f14d611f\nff2b5b315173f3244fb315ce917a9ec2\n85a20e4f7fc9256eba9cbc5d66bac4b8\nbc351c5cb264d29e278d386bfa54545\n199d183157f213e0da7c128b58fc7554\n813599653f44dcbf245495d3641f83a4\ncda2b04eb27a6b429ccce4c6d5bb195f\na8e015f1de2c48c5f51f77a6d7299806\n11c192ef34f5dea0a1bc88a716ad63b2\nf577193ba408f5eba71c812e027f94d9\ndab06bbea57f6051d0b93fa304cfa755\n95bb0549666284168d2b632e2708f79b\ncfa823ee81496f5912b57997414c1d71\n3372c6b94fc719b9a75d03186a0409e2\nd5e79960180078237062f2d72cde5c95\n6dffe86c24e3870cbeedb4c8fd29e2d1\n10db06b0d15bd4ee72f847ab4bec38ed\nbe9467a2641fb58330bbb59b54a585de\na1be21c9a71d133dc5beea20858a99d5\n6402177ad47a8a9514d771bf63ae2f60\nfb097cffc3cdd8512027cee422df2aa3\n511a939f29ca6763f169404e5c013db\nbfb8531870be8be971a782a4379556c7\nc46135263f88cf68bfca5f90d2eb0e0\n17ceee4f264733871dfa540c3e10c55d\n72c8fb162c90a716dc6d75c6559b82a2\nd6c875f6b3fa82fd9aa3aca17bb25c50\n5a720d961df190d459a6208793b9dfca\n6ef4f1f0b3f8aad48cbb8bac2032149c\n91b962b6de5efaad79679c2bd6c2f2c2\n6a613281bac861a49dbf2f762a644724\n16ee1b2d9a12abead99c7626c95596\nda330cf1b5a8f1ad26f51cb1aef0ea9c\n51d386439cb748c54f2b9e837678be87\n14c66bb1292a764f7e7c9f487eee4fdb\ne41e3b1d11fdf7cef9c9f9697d1ec60\nd1e01c36346b4b839abebb636ba42f4\n9bb646155fe7afd84e55f99914fbe961\nfdd8dae63e8781414a803c33df86f3bd\n772b0908f5aa09c687d3d93a515ee29f\ne94ed46ede91eafa50f1b9873bba60ae\n2ef5b582482d7d52cb71061323057eb9\n34787e9a9a0c1ff4905477d2a8504646\n19c8ff25264b77666716685cf333d2c1\ne98f06e93bcc237afebad4f49b26ec52\nb31bf17ab00837ce30bbb59b54a585de\nc15e74a91f0b59d533f68dc899e13f\n7c59421abd239c358b069fa6e7378ac2\n4f7f8af38b1a13f67c1b348241918030\ndc3167808a79ebe24a1806c17996a001\nf21154a95d49ca29e6c5cd45aa112726\n41d9b3064aca3c74e7d71bdc5700ff8b\n351d39fa6f9b659f2377f2addb49ed93\n764c1145134d658275e36e88b6617f01\n90446c710f3495f4e90047543e308ba1\n93277f95f365b958ffd5817f210f277d\nb5daa2d15dad58d24fa2457d6e4d0c91\n43e2a0220f1fbb9cc1bb249ae60b3bdc\nbc23348d2f16d4237155483601ac0c56\nda9676ff70b2e78a0a7b8ecc42036d5\n155af42283f8ccb9b3664229461d7332\n4c4675bc602b2a95febad4f49b26ec52\nc0ef2c3ec04860e5b0e0dee6075b101d\n2698d4b8ff59120179b3e1be3524f72f\n933096cbd0f7ef0aa73562d75299fcd8\n9eac41860580d9ea8a75ef32ea6ce62\n132f7a4ddfe7f230fd6ec91a99a73de9\n47008a5646d3d84d85969b141e43f51\n98ec86d721b235374d18c1ce5fca6777\ndddd611b4262ede6e3b9db784be35882\nfad834ac9ebf8d5595b7b91db37ae400\nb1a1d78a2736dc2755f46d55537192b6\ncd413f0540b54bc1fcf003a332eb3241\nf11b09dd3782f084f78bdf37d618e97e\n81fd25d9d26de497c34335c1a2a9193f\ncbf3470a35aff67e483fd274b1c29225\n11ac24d90fbc20bc5d714c9d7df1c4ed\n2873620cf8be87ec798432661977bc1\n6777c68f2b62b581b3f89af909332a40\n91763ac2faf129e9b35bd41c666704ac\na0ee8f7c4c2907b4e45ef4135c266a12\n2a7130734389335c5c5a7639ceca3973\nf910c50ed20073928be66dc0939fd23\n7e51fe2b0e56f2e771b7a1511b87f5b\nc490945c032f5ca0fc0035da39bd5e1\n6159304c015c2d54bd7b3ab3cb320beb\n580a053d716c2d5aa09e5a1a20aee2ca\n4b455e9b8dc1380dbd508cb7996d6164\n37c932b30ce507c6510e28eb1584c355\n461e2b86470326ed70e89b1ce671b01f\ne49b95f478df00bedbbc9440457e303e\n4ceba450382724f7861fea89ab9e083a\n6e849ffbc0c14739b31b6dfccf08260e\ne5aba07854af35d89e6a137715910e1f\nc26d26e409d01e8420d2507f5cf72c4c\n9228f548332eacc51287e03b5b76fc86\n6b5f5a51340e371ea753e2e06c37201\n2087680eed2edc0a20bf3b65a70accd3\nd2578e2ab0be1ea3332e588d1e0957a7\nd63496bc51de5d77e3837ef7356e7613\nd386586a2fef0389393a1ce5402b0d23\n3836e0568d0ab079ffc6e457221b9271\nbd594555e192d5797d3a650ebc940efd\n782cef41b14a2009a71c812e027f94d9\n2889aae96f0b236e27790b0ec8671f7\nb22bf7aa80627ee61ded04ad3995fc44\necfb5ad31b6e40b72b70eac6546e93fd\n74b8222078ba776c661673811de66400\na9e371d1c714f222716641f54c7a54f1\ncb242dc225308003de21d22522bdaf\na24af284041888bd5f05ba8053abf6cf\n6c06faf4538bdc00b9e8bdc9c4a49aa2\nb0d1fc9676e551849e25afd4f06934a3\nd27130df514414d1d8c46a3a266762d7\n1557647df4c4d298f6e8f2cf4a97051f\nfb158adc15a6b5aa75a82b88fe6e733f\nf09ef9a34df9b34d9420b255bb5956f0\nbbc685f481cee10f668ae11a7db5e82a\n10b6147009cbc17ec25cfdac7cd67ea3\n90631514bc5dd234c798432661977bc1\n91981bcdf94b60cf3e5af54d0ed82d00\n63c93cb827f004c9c738b9c67433b6a8\nd1b44c2dc663cca6b8baed360b6cc5ee\n6f1985e1c09aa1be7dd7d23ce6ceed2e\nc67b454761d7c84eb2a155afd9dbbb0a\nbe06e77602ee4d089c0ca344f487323e\nf9ca8f7549af695a5aad165050e534c\n2c6d08c15a19891079dea5ba5d13aa5e\n51cfb783895a8af9febad4f49b26ec52\n9913e76fbe2c438f4bb836860bc1cca3\nf1bfec97b7e9f7b776a402eb60ff1f9d\nf94e4eb78fa79d9d41578d1a851771d6\n194fd39afab11888b84c578d4c100fe6\n3931ce39e77a25a9dfefa992cb59ea0\n27f9965a337bf46d85924458b86f34\nd599b1176343728c6705ae120c2282cf\n3aa65a29330bb87f980f165bc2b4c765\ndbf47e19a5f352e0f1b010366bb60ce8\n5d1333eea1b2a9bf85857023d32c345a\nc85fffa8b368d05663191fd557d3a61\n67eaa2b16399f3e88809fffd0cefbf72\n3456178d3ff37ae1e76bc197b3a3ffc0\n2ef28aca6afaff1d88863f114bcd9f80\n8ca1fd346eb62580ffc6e457221b9271\n58cbc849279b38e0c16f7010a3b8fdee\n41c027788c1388bbc48d90eef8384210\n336c81a0546a4ebaa71c812e027f94d9\n575b467b6ebb2f234eaa3180e8182d9e\n5d3d9689b1447e01febad4f49b26ec52\n75e206fbfaa7a973eff7102cbb9312c2\nd732f1d1e8a8510ff68e7a883fa7f8e4\n7b023a0954a15f6b37b9035bdec8f884\n80ad425b12c2c008738e7290b6f3237\nec3f93916a91e386c29f1e5c35eaaf93\n4561b621e5b7c1ae8cb5d9909aeb1309\n2d27e4d0f8cc2c9cf577ff4de1ac394c\n2bc4caa1941fed746500462ee46bc39\ne053e9199d9d7f2d276b6f6d90ee3a83\neecec73da85e87ccf008d8a3590fb522\ncfd0fa8a6d9ee06e6456cc507eb8f5c1\neee6cf14a56af26ad71f17d6e8238d04\n8d2e17e38a624565fb70a55ca9d14169\n4c1048076c0a8a09c785f06f424b9d06\n4003c20ffb525c7ee3def9c422df2282\ndb96923291ea465d593ebeeedbff73b\n3736ae6b32d288fad832a3fe59576848\na95828fa4607295674c8eb7e4d6198a5\n855e3ed8e5f233cd2b722fc42ccb4c6a\nf3d5911a52b16bf78bf1cb9ea68ce0cb\na2418ff066f38084ead6784d11c8f5b5\n58bfcc581879c121b20808ae6de0ac93\n5808fa88b17592217caed426d97afe76\nfa719ece51c607383f3fb2f375c18a84\n1cbd4d2be9cf0e3e84ef3d675a0511c0\n4cabc64d91668d76890992ddacc04113\n1be435a3027d58824461bb4901a4cb6a\n3c899eb5c23784f9febad4f49b26ec52\n75024d18227e53b565f968dab29b0192\nc0de139953efa6ea2b151d8b52c53b90\n3ce4b963a4869248febad4f49b26ec52\n86951b133a4c6e9bd989b7b3fc68c580\n190028e65867076ee12186cc8c5022c7\n4a9a73e93f19ece06652506d959dc71d\n634fece55dc20d232a978d3a5b04bbfd\n2356544fa047516126f51cb1aef0ea9c\n7b50357760759ad58a70042c3e4356d2\ndb6561b883e56b9072c6d81e4b9f21e4\nf41ead4917ec05a149524cfd5973a145\ne7bf775ba6774a2e278d386bfa54545\n2a88b6cbfe4b9a3ce2dee6f9fbe318ea\n8383a9cf1380405dd9006da2b93c0a4\ndb665d85f1d9b1ea5c6a44a505804654\ne7580c72525b4bb1cc786970133d7717\n6e96a8c237b549b6e3f7a74e12a274ef\nd93d1957e7a38a6619fb4103277a6b93\n1d06d1bc8f10c45ab1732c7d45a02ba0\nbfcff8d45de2f950f751d8c0e5773abb\ne10181e68d41be9a75f27865805fd94a\ned30d775da40ee9ebd907eb5031fe9ca\n1c9aa0fdd563da04c397356311cbeea4\n1db1bfaa8eca186e9295484d295fcc9\n743d8382aa44117e593ebeeedbff73b\n3802e59d5a3970d5ee6f3ff2305dcb14\na088285efee5f0dbbc6a6acad56465f2\n1b33172342f58feb76963e5e6f4f642a\n85e359daf7e56d6a94ec70278e148371\n234a106ec36821d8c9f016d57db96408\n48c61eb9c9453db75828f54ccfceb8a8\ndd528cd176c8d99686de8d6734d81fc9\nd6e677600a93bc118ac5263758737a81\na70f937b5c1a26e68962005ce0e986db\n5275e0ee91ab4e755d009c98a5b96836\n7689de934d5af6505e8431ceb98e6b3b\n3842243b1f246b3dc4e62ff7caeb0b29\n5317439efc03a22de27790b0ec8671f7\n63b5d8f4fcb29b12d0125a4a81c5d058\n1d8278324bf01d50c45662a6a951b979\nf580dcfbb898139df6cfab91d65bb91\n22a19599946e4db6c3bd24f986301745\nb45217934564854288e0556a2aaca7c7\n2e990f9b5c2bb3098eb91f418e60b82e\n4903be367953db8c579961b8f4afc151\n61a898c20ddb028dfebad4f49b26ec52\n41b548aa6f4146fb1962281db2f162a0\nf026d1e8b71bd18e97f16d67bfc59c23\n731561e2626163e8a4dc6822aaa2cf2f\n8fed49d9a02124903002761e7a3ba3bd\nd497f192ea400165da22561748cba914\n5e5f15626f1f230bff7e95552a1d6a0e\nadd1279c481f88a1955e0ab55bea4388\n3092a18a275497f54b3c42e318f3affc\ne6cd3e7a25cfb1c3593ebeeedbff73b\n1c8d1cb23d037f2a9e4965f0106e00d9\n12dfe5b5c7acf776beedb4c8fd29e2d1\naa79a19ba1fb3cd1febad4f49b26ec52\n5c593d79b5f9c918b398a1cfd1079875\n1b0dadf0e60a563b3671949e4f99cc76\n84a0b93cb41ee6e129cb4c9f87f87751\n30e12322c7e23ac358db0ef36af1d3c5\n76814dd29a8fdd76e400ee8c5c49a7eb\ne53f5f3d4b20df8176331cff7db8f268\nbf899a2e47420008ef1759e0b43f0fd3\n2e2a612aaeafebd5ea23ec7dabaae1fa\n6726c2d72f835554781ba0fdb47276df\n649cea3b17ffb31bfebad4f49b26ec52\nbfcd5d38663fd5338738e7290b6f3237\n98482492d4cd11698a40b9ddd9e5eea5\n9976f7053b1b7bf2318694f1cc6fb1f8\n1cc5bcbad2fdc660d942e529754fbd45\n7a488c92c601f83c821340ef6a9a830d\n8abb8d75987c92144417a5312cf9d851\ncc1666f0fa7a1672e5a8eba5f6050bab\nd2f884d5637c979214c06184923f6962\n21136301f27dc9bf84633b41c8a09fa0\n1469f244a1968345e2d95336601deece\n517683d0866085dd2beec56b24479ed1\n68fb0825ec07a521febad4f49b26ec52\n21b8b1e51237f4aee76bc197b3a3ffc0\n126347c2c4404eba96a3517f50eeb9f4\nf907cd8cfb723ee6d6eba0d14df5347e\n496de03106abdf4ba766a367d5e2d6fc\n5e3ad0f79dc0c429bc8967b0321bd9d2\nf7e0e36f618039dff39d7554d3e63ae4\n875758df9f03fab669a10a3a70c69e8f\n3950da9e4a5083d7b4fa97f642d1a681\n7dee34ea0b8cefe8668ae11a7db5e82a\n895d688a910d8ba0bd647f71fcfdcbe2\nea89750a67ae2335b9315f9098d51eae\n4c39c5bcd53c1b593d08add0058f34c7\n21c58ff6f87b750cb9a0f5d18f1ce54c\n9d5ffd7cc6f9084abd790f9b668aa24f\n8f29431ef2b28d27bfb1fc5d146cf068\nde2d98c18293a15219fb4103277a6b93\n25c9cd32e5ec1e7cdf54d2cac06dae5f\nfe0ac2e334ad4d844fb315ce917a9ec2\n5b97f44d872864c21f7d7307c1f45af8\nc76b1d97bda153f51226a0a31e4f771f\nc8575754df874644dbbc9440457e303e\n525148edf1f9aa72bc7f58784fda27b5\nbfe852b57d198bd2e83f416cc5d1e30\nd157a0598ef5c33416e09341cb9bfb7\n287d78d72d12b03c3bd24f986301745\nb3b8817a8b781fce2e4761573669341a\n2bafe9aa12aa1d3bfebad4f49b26ec52\n733722cae46eb715febad4f49b26ec52\nce7a0aaab23c9317a71c812e027f94d9\n127d935d17cb36c8b0a3f25f5d8cb0f8\n91e7dd99a4c945f9dd03ec353c1af474\n9c390832c0d1569b664b3b9b23ddfcbc\n2e632844af2fd0892ad0b8f780281bcb\n23e1e8b7ea54079cd5217e3e48d1c0d9\n2a295b1bbb386e2f3ffa3a50996ad39e\n5b5095b6d5612d298877c667ba5c2021\n400a2dd6c371a2d446de2420e311135b\n3fa4ca95ea2c3d4649a734174fea032e\neba66ca2e46521ecb16ea05e48de73ee\n6581edd8565321685512673aa47c7e3d\n77a115a1ad9d7e687634fef39c2ce2c7\n5fc39e0ecc8e50f0902a571380e15334\ncc182c3aa204614540f68c5e459bb389\n6dedce56f7f60da423f7198a00163bb6\n30335a7b507390407689cc8768f5250\nc45fe6d9f2c516997062f2d72cde5c95\n30e0f3d959b16c64473f10e6caaeca56\n57fd351d970d60fd60a25ec0f32e89e3\nda76df9a506534fa5eee45c00c4de9d3\ne29252434d37520ff008d8a3590fb522\n49dfb00ce7ed1602b05fbbe21a0097ea\n35e033efcf79391ef581ec61f9db71f\n2325ec6e77f29578d9b00ae2f30c0a5c\n8ed32fc808a31eb5ecd447b0bcf9cfb5\n268a263f41b82227f10f2cd5149de8c9\nd89d8aff18d0f4fa6262f7bca314d953\n6c27a2a85e8d512ce6c5cd45aa112726\ncca7e05c69a5d8e0a3056fa1e8da3997\n3344c70694e1bacdc5bd1ef3bc48a26\nba6e6f8263e961c243f6b77085610df6\nf2ba8040ab2d2745febad4f49b26ec52\n343bf23c280a14cc4ee8db28f96ad26b\n476e7d25434b67e75f490d1795e78588\n1a15e651e26622b0e5c7ea227b17d897\nbdb5a2a25223d1b645613f5c2df1029a\nc306205a10978fd695a4c885dffe439d\na0745770bc3d12477b11ae648ea92233\ne834ef941f7bc9c9e7df9f1005942e3d\n3d6e337c521f73f3fe222bdfe4498489\naca4c523f999de86febad4f49b26ec52\n6a8f125c174c07a57b11ae648ea92233\nf9aab5dd0162b688e9a1a03c1d065394\n3c5148ac155d020763ed57e35c972b4b\n95bfb466d603b6baa45e8d2f28a9ea98\nb4b5eedfa5c159e0d4e369d956a06b76\nd80a4629ab6badc16469e58b3534356e\n28447e9816bfedd268a2b8e2b27b7d8a\nb112088ed4afade413b554f4133f4b49\n50ea883b804766c458a565d8b69ccaf\nba8b2d50ab955e94beedb4c8fd29e2d1\n20b8c6959784f2da83b763ebf4ad2b38\nec5469035d19434f9ba80f08c401fbed\n4a4f58b882325236f6e8f2cf4a97051f\nce6e4aa17c710b3cd6d67789347621\n61fafe333f8c79c78716341f2dff4249\n262f3ee836b6b023c5beea20858a99d5\nbab2fefad03208b0935d906e24c18439\nfd6a530388f275c926700e14156d231c\ncfb7e0b0f44819c5e2f409c9efab99cd\n53f6531e2fc2d31ab2c2cd006d206129\ne6cb8965b985b8a07eec403e4de3e723\n21009983c23be33dde39a695c03bae3a\nfad62f2339aefa8f9d86e5f05f1da2b7\n631251b7c08bad443e890a18a7c6a6e8\nd3a5d161ca44660d4671d97b0fd17f51\n6361a90210b69a9590a2e9c21353bf7d\n1164897f678f3bd627e98d0f3d735480\n7bebd474258ec29e3c594bb716fb0dca\n6240ad3b8776b5e88e4f659f0755a47a\nff49113c1bda893155c5c4533d35b323\n9823679747e563b4d42b9650f19dd425\nbfa94cc8557253982efa4e574711a177\n6c2e919b70c335f240ef1c8b63a628f9\n2e5d2487b7e1b708e4f659f0755a47a\n92d64294a4c9af5cf8609c6280e52413\n8cb18fd9c7a54ceb715f13aeb6bde9cb\nc245772cbf233578164e1349afbd1b70\nc0b7cf5017ba0f21504c7f76533ac19b\nbbc0faf338bd07c3cffd61677456447e\n1799a85dc6eaaf48d25222e04574632c\n201833c55354f1a2d1d1bb832a2f0352\n50336797d9a86e9625d9442054ff1a51\n2d11e38388d212634cafc8d32c041834\nf34a17d1b45ccc541763ab8766fa2282\ncc3cdaa52b4b96fa55f46d55537192b6\n614f1c6f5e0d2372ef5f18853edea926\n7853c9da0f57af87e649091ae21aee74\n8c10cd9e5b4d589299ef6b0e70be718\n93f3d802ab5132d162079c4c0e1b031\n3f1579c1713ae72e2d07d128adae16ff\n1f59698c02bd1662dbbc9440457e303e\nfc9910fa6262cd4e1125c64abbb51ddf\n6d5211390473c3bc3bd24f986301745\n99d03f162477263b22996d48badb33c9\n37e1a5d6689a83d3b03169de4ffd172b\n55b586076edb416ea169b9ecd9e046dc\nfb32e9a7a8c2dfad74eb542502c2205f\n424f30af1472fec6668ae11a7db5e82a\nc712261a32a0efca4b3c42e318f3affc\na31e317e57540f3ffebad4f49b26ec52\n19dc20a7065fba0501a7e3ae8c65473\n589599503c7b88129a87002a4eeaf610\n11aee78983b57cb34138477d68528833\nc0a143c5fd0048bbcd01aef15a146d7a\n3068bb896d8a43c040e6664f04cec8b2\n3b5195c53046e4bd6e9ad486918e1764\n6122a22d4275acc796fcae44a3024b7b\na96600d919eff11c3f92fc6b6f6f5bda\n380f9d534e139af5dde0caad53ba7e0c\n8b0f94dde4b772d41ca25a4447d3477e\n69c74567d77a88fe5af397cf24be6deb\n1c259cf6c1206aadb6f6d1d58b7b1311\nc547a17e35360322fd6501c4dd41b22d\n73ce68f6021be015122dab9909481e14\n4475dea2d05c1ee4fd9792d1e260da32\n30b176f8b5e7e04ceed0bb714b97ca82\ne811612c42cf5c5ae0cc7e7449604bbc\n161da97088255c645ff9646ea22eac1\nd70bd276cd9f66f0a909821b8b014ef2\nf41ff2d573ac836dad3a17b61c0ca09a\nb5d5db47b33a9186ffac3d5f2301b75e\n5f4c30f80956bbd25fc5e56a56e86bdf\nfa1317f3a80bd8b1278d386bfa54545\n1417875756d55264ab94214c753c8efe\n1f326aac412e727b62ca3aa650ba65f5\n9ef38dea16d4d335a71c812e027f94d9\ndb302d0ac596b4e059db00799f9936b2\n9c8c8bfbf77716f36b4fe272da0db543\nd6577674aee8f8cbe986c6d94503b284\n5b67be496c11533c66289707fcc0ca1d\n68c76bd1d8ddd433dcfcef693e7ec696\n5be5ddf3780d2cbf71a782a4379556c7\na814fbd363007fcfd93cf5f5bfd78ab4\n66b56ba61af420e654a2b6b20aeaf693\na4990b3c86c680c3a71c812e027f94d9\n431340a089f0b3f5f320b5d9bf24e8e9\ncddbf3a55a623e423002761e7a3ba3bd\ncc5b638d81529dde3c2e50348f23d3d\nd9b82ebcd756397c371fff21f277e702\nd97e2a50640387adf90c06a14471bc6\n9203f560599ca558c16f7010a3b8fdee\n177f4749d22ccddbf4ae8c93f4db5e6\necdebac7ddf6ef0011c50f6f633c5e38\n114a55b4647938cee3dff0d5ebb43915\na11b3450e77331367948cb8e1d9ee487\n3083f8a34c6a2087a538396439009b89\nc4621b03630247f816baadb9e8e34df7\n5640f565daac3dd3772b104757a4809\ne608701de43f3edcc0f947750540fb22\nfb4d71ac2bbefa2297936c81e7f6629\n26adf340ea5d552d3c5e1addd9922bf2\n4b1744fbbe73dfb39ccce4c6d5bb195f\n9d80e026c9935fa9ea4fe6fd890fcb78\n14146d1e359f998b19b278d00a891f19\n18cc2e8b4034da8fb20aa91e9e90c311\n1d825a5cd1884610b08fe058d24e7e61\ne7045bfa00de20a39a0d3e7e907e5b53\n86a955d448e4dc0c3ba9e53316119012\n42191edf2eddbd733def89b32cef8e45\ndf297071493f894e79b3e1be3524f72f\n69c655d9411692a319fb4103277a6b93\naa41c42a9a79070de4a490bdf2c3ee62\ndb75ed97a5c5234e8f7d9678498f2295\n20cd5280f106b36fff90854b4e00880b\na84f09300e4b1c1ac624b11e153a6d87\n15616cf6115c302264e63375fc652d6\nfb3816ce98c668157e22078abbbc121d\n64155ca51be435614c9ef68654bd2fe9\nf80427c47d2fc4169ccce4c6d5bb195f\n1bd801dd5da88655d989c9f989a09ff\n2afbff3cd25cdd426392a5b643ed5e3\ne03d534f3ce3c77d19fb4103277a6b93\n9ae7f60bc9e20008533841f5cdbf3b2\na48e4c2930d39f289d297e74104d3ac3\nffe2bf44f5d9760b9a8ef44e1d2c5b75\nfed87d16ece9ac0ad42ec7e303174a87\n5cb93ef515036277253e170a96a633c1\n7084db2193bc9ee43d113b8340bd5029\n87b15b50b03054360cbb0bb881f838f\ne67447e5ab4b63246d871377f0c1e8cb\nb20204ca63c530fae3f7a74e12a274ef\nd37b0328d4b5a9454d9e7559651bb818\nf741f1bb6a7ef8ff7916bf6f8da94ee5\n92cae8ac60b09e3c6cfd6748e1399a49\n16aca29aae2d252cb8372f06f79c32ca\n18c7c6eed722b9761f8d2643b5438b70\nb1c80d73aa4114811011cbc4b5232a4a\nd7c40ca08579ba4e664b3b9b23ddfcbc\n184f3a06dc5eaa52881e214542763909\nbd39b7924b0f69359d0d74633db4834d\nb4e356d1702c4ca2febad4f49b26ec52\n392963c87d26a617d5d95a669ff2219\n3eea280aa5da733e95166372d7ac113b\n7dc6c6f96b77b7d3febad4f49b26ec52\ne75f2a369eca1346b157bfb9ccdf274b\nf28a91c02b1f32c7126e8f891cf24099\nf856245a7a9485deeb2d738c3fe5867f\n4bb4904b8f4c7f8b0e5927ab4191382\n1345a6b69c9e7330427e34fb2aadd7a4\nbae99f3e4af5bd5ad9b53420a5458c53\n3125b833a365799ac79619984c97c1ff\n11cf833ad0f8ddc1a6f925961cc8367b\nac1f8fe1e544b87fc798432661977bc1\nf1c3fdbbba8e36bf62a510b8f97c658e\n4b95230707396e18916c024499b21ce6\nf9d405eae2dd08fd12439bb9f264f4d9\n449c32cd053b97ac623f20df7a811122\n49230cfa054929bc718a34fa24049f1e\n11a559d19457ea3950cf3715818ccfe8\ne7c6731436bc2301bf94502f7765c22\nc8aaf90c4e66e235b9c440034ab48a1e\nf252711946bff75aa5234533e6540c01\n11ff78cc42de92ca597976c675750537\n30e642f1d7b0d8818430b7446f9e1252\n7c7e0d1157c727371c7fe5be55ca5cfd\ne6cb56c84042891b201e82f29479384c\nf65decafeb2b8518dcfcef693e7ec696\n2f4d4e41a5ea61df8cb5d9909aeb1309\n39f03b3ec91103af33367a1c9ac6c143\n57213d6dd723e767cbde89e0c48a01bf\nfc31999571a8bf64ad5d470346bc4d15\ne0194110e31c999aa91c75874136f43d\n26fa34f25c673a7f4f41773fb12c1cbd\ne026b4997f7d037c39d3717288022c20\n180dd8913e894dbf5c6a44a505804654\ndb454c99849016f8febad4f49b26ec52\n3b9f12fa1f257b9d85fcc38efca7d59c\n79b7bd0c910e833ba5dde908aa701435\nf97cf997df0945fa1e09e4a1b10c649e\n67a9dcc974fc402552d23bb2388b1b0d\n1e2565b2c28e69d3deb25e31ec3122be\n9826f7752703d7bd58cf2448c6d2934c\n54a22269051c9674cfdf2d08e1ba2a48\nfc9116a6ee32b9b79223fc014b68160f\nc5faa34d589240b859d0a47cd36512\nda3e68c20b832c47a3b06ba374e12b77\n1f7143556f4d75522d1adc013ed654e9\nac35b0d3d4b33477e76bc197b3a3ffc0\ncd2ad198854d47c6e5e7067ae780b222\n1aebb6c07b8d53737062f2d72cde5c95\ne2869255db01d51df577ff4de1ac394c\n78e1ea4568b0a1f5e7608f43dfbc9312\n29b70ee8da440240de98d10ab5975b59\ned00de0ec65a54c823ed665630afd1ce\n4fe648810cf1b4b5f4ae8c93f4db5e6\n9c9554e0883818c9febad4f49b26ec52\n1cb2fe52097b5304217ffa735084910f\ne0be4621b0ea9893593ebeeedbff73b\n2c8cb823e48531fa9d1db1d6d9537bce\n1d6e0462e30692d8492d9da2668ec34c\ned8dd7ac0d865ac686f1a0f58f951001\n1949b4cd6b88fa0713a5873d239ac557\n1e5db720b375205315bb540f42facfa9\n83ca8d37a6f44dff1652fb73e93ef5e7\n15985d08df01b47bf0bb193323cf7c6b\n445528514535ca621d5ccc40b510e4bd\n6bea2e040e199020e0c5923879d79f21\na4d907884de88227febad4f49b26ec52\nc0df578cee43eb8526f51cb1aef0ea9c\ne1581daad0ddbbe4465d230735fb8831\ncc42f5cd765780d5dbbc9440457e303e\nb6ee1aa4e11df2bf8f5708c6c7585cb\naafa8e4293eca14d6bb54533c16c8fa\n1e202e618d6375052945e400e1430726\neb34935c60281450d42b9650f19dd425\n26305aa1754510f79b3e1be3524f72f\ne21f715035a4471ae7fda7f082299746\n4e5fc1f56057d5f439b1b7041443703a\n5153292b91b93dc772ee08e78374a212\na275f4b42b430eaf320f10afdfbaa18\nac9f82fd26fba6aac45e8c8bb42d23a\n8991703fa2ac67e7310cd758d9b7cf\n4d959d3b7b3721d448ee6d5fb14cf83d\nca6071926d0d910372ee08e78374a212\na4bea095f35a74d0e6c5cd45aa112726\n6ec67ee0e57282c01e6058fbce2703bb\n32a6ef11cd29c6333002761e7a3ba3bd\n8f940fbfffb9b3cfebad4f49b26ec52\ned66ef9698fef541b945039752747042\n6a94aa414d11c624552edbe2a62e882b\n656b7353e4580f8fa93e942a054d60b5\nb31a613e7f289c8bf5f6997e99549136\n7c3507fc4eeb9854febad4f49b26ec52\nc3959f18e44ed46b40f4518b250404ee\n7bdfc4bd3fde9066b0028474d8c979d1\n72f46e20632f469c9cf718a4c796aece\nc1c52930adc815564810cc21086da42\n5463f71800fcf2e5e89951e6ee90b3d8\n8f7ffcbcc7e8e5a4263a16a1017ab2fb\nb1dcc70ae478e417664b3b9b23ddfcbc\nf70b502758db5927be2f6e4bb98bc38c\n681c53daf7810b9f92d5b25c536d8044\n81271aca364735e4e6c5cd45aa112726\nd6874aa362830375ef8af3aeeb9bcffa\n15647d8895f78f6096a3517f50eeb9f4\ne920d6df55f51b9d3abfc4d0a5688916\n87935bfb0ff57aa4668ae11a7db5e82a\n8f8f98df7a9caa18febad4f49b26ec52\n5c7dde9febf82c72e4d8d44a2bc9dd4d\n6f03a6f024145fc9febad4f49b26ec52\n20714210c5319a68b16d12ee250aa07\n233efac14ec7189e809222e4341a7d65\n60f273bb4993eac8d4c42dd307b636f8\n6b457dbbd8d875afd3520bbaf4a08c12\nf294a34bf1c9ebb7f12d7184a2ad3430\ne55dde3c1153ae5d7eb43b1b22d3185e\nfc66d797cc6b4bb672a7060b4557c0e\nea559127f7f21405372d8d157558385e\n11bf776fe946cb7af897d07ebee05db5\n3763dc87aed9fd73be6b1cdaab15028\n24672a92667a51885878d4300758f637\na37bc9fad75b6def3087f84b199fd297\n11fc4731e38789e0210283402c81dbf4\nd4a1fb16866d22287db09046a5e7a0a\n899f815eaad62b56d8cad143689f8b51\n1cb0232d2ec82f9ead135ea7bc8aeff3\n2e666b458f1641f248cb96c78f6ddc11\ne39d56046b309a64229048a9abc3ab6\n15dfec695110505227c1f8d037f650\n2181ecc9b382a7a873fdbe4b39ff4036\n4391d4d7984a245be0182fa3e963fc11\n631c8be7f3559e4e5691f959a7121ab2\ne0229fb0e8d85e1fbfd790572919a77f\n3c1b4a85f3a287fe47d51fb55a1c2980\n4b548d4f399066e1c2f0a1a44c64aad4\nf69b664bb78a4c2f7537eb150af3dadf\nda9d681e20d2c123604b3895514420b1\ndecb34ff7d69d024e6c5cd45aa112726\n1d4e22bc8ed400fc368162d385acdaa9\n67ac830369ffe09b664b3b9b23ddfcbc\n40ee6a47e485cb4d41873672d11706f4\ne72ff1a58d752d5867279908dcfb86fc\n7478ed7307756ccba10ff7fd5e43a633\ncdee5ccae3613c507e1dc03b595bd36c\n3eb80174aa72a62910126c0551113ce5\n2892423e515ee379530176ce07cad21b\nba49e13288189be6fcb704ced9323624\n93d4c1821a6eccea462118aaf3f93639\nf64138f5515e5031f785f45147f3e474\n3c12d6e9cef0adaede2627e1e10e2802\n7a702fc01ec83c36b93dc42f7dcef6a\nf73d62321bd0a5b7d42ec7e303174a87\nb4bc3e5192dc476f609fb05dbd8681bd\n48dd6b701f9909da6a8a13d57e4d05f0\n156d606fa86ba19c4eb174a255d0ec5e\n610f10d57a44e0d1ba18ade30e563d37\n28710bbf732bd651c955e5ed03ef3a2f\ncb7114df1c8ad743af04c22d77ac98f\n62b7145b5920a67aba18ade30e563d37\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/04401088_test.lst",
    "content": "45301b15dce2724e483a0f6665d9ffe0\nc4b66fac952d4ef7d9039fb3a1715e96\neaf85cce060622c88de42b14089e0e7c\nacda976ba347a3e58ba35fc6cd3da287\nf48acd0450cf96cde6b9b562e2cde99e\n8e9c97d54060d1282085d549612807d7\n7ba45cacce4b4c09c7a217851f86faa1\nb984d7e958fe9eb961179e7ef17bf7b5\ne006061cc51617b9498dffe5de12eacd\n2a38116473099355498dffe5de12eacd\n3bd6626a05b4f79bcf17364e7927abd\n96f4e3797b8e66042b8a15395c060463\n295d6f0caa702a1a2f58405e4baaa2ed\nab2cdd82bc69255f1fc489fbdec3fa1\n9b91faa0835a0287db45a112fe2d5592\n5891622298f30916f31b75c4a94a8879\nb801c4ebbc1149b34961b0d325e91640\nd56bca3888d3a595e93f5e23021ef900\nfca7558e383a8200a1a64f95774cf79d\ne3291bf83de108ad98b4ae7d0ad0f9\n9c5952804e0b2ba3e1fb8c5792a5768b\n67743ab1b28ab5cab3fcf86503541b68\nc960421b8c637137fb4952f06d5e75bd\n57aa54c9db88e364502122ac3599bb74\n800ef55c1401c26ef5d4e1af18c85258\n743b747a119307e8e3785a46a5c831bd\n79f11cd09522565fecb1ea9fbacd5278\n57daa58dd0715c58beafa80aadbc3232\n2ef0e93ce68dfa74bd1f358005ee8ea2\nb575152bd96a4dc4adf82b2748b1cb62\n80d73417fa12508d7d6b888b4eb1ac9f\nb490aed1d7d9a42ec4e2c9b051d6a014\nab5fc5879ace7418bdec90548bc24588\n6f725c21e92ae3e8dfac5fb05629bdfd\nb7741503cf1fe40378bfad8b5ed8c4ef\ndafeda191170938ad33f96248c28a3a9\n87b696d3942f6845fe75c83a5776ab77\ne11ff7bea65e8545c3f912172873d52f\n2fe4f1ea84cf924ea4d4dcdfc6fd3059\n4f2b1a13f06a85961138452c33de4a3d\nba9f7bd05d6f028fc1a1659eb4f57afc\nf1f794c3b6ed8951d07b37cd4d789f4d\n8b291d445d412c09cc018c0e073a98f6\n10b3b46298af96d40e7407386eaee0f\n68082af238b7973aa4d4dcdfc6fd3059\n1f4e56064de606093e746e5f1700ce1a\n96700b47eb9bf33889a1b8cd5b44ae5e\nab47334a425e1650bbef66962a25aa5f\nc771a9b2dc439adac38a7eff5af707a2\ne85bac837e951f3780ed245d94a6a268\nf928f74ed34e46c4b5ce02cb8ffbdc86\nd62ebc23fe1a7e6a985b19765176f4ab\n19bb5e75692793fd45df661aef5d0a33\n57056c8f465dd1aec03bc4569d70377c\n6693fcd81ce5a4e6f5d789e33b735c9e\n73ab63e7ac7a404b545fb5ece69fbf4e\nb4c1d8191707ead52e10692b3b33e38\n6c53f579c7a8da15c7ef7dadd1baff8\n60193289e8d9689b62f6b877265e2679\ne97033321b1930ed4391592096b033ae\n424d356bbbdb38daab0fba1d15eaeacf\nfef0bba982a4ad5296913ea8ca1ac015\n7cf110165b54e7511d3a21e67b7da85e\nd0c5bdc45a59669a39a4971adc53c51d\n3f95b3ecbe55c83e9c3a7294039d408\n74314be9ad38b02171eade9e9bdd0f45\n162341ffb94a3884e4ba5fe92f32019a\nc4dcbb047d219cfeb4018979c856c916\n12f2156b99444e955d73afbd7c310e93\n1a0fab14a11b39d1a5295d0078b5d60\nb307961888415ab88ec5d235d7e81cc6\n649c8024460077cce8f3b203d0634c16\na53b3ac989d9e6f35f8a15a7cb97bf7a\na4c32dbcb71076d5825732a29ddd146e\n43d96f5a6a619c06bc663b874223ed74\n8f3250e029d561341b92a1339af2f7ce\nfc07770a57d7a87022d3f170937c6a0b\n98eab6b7dee0d64519907bbfddac6b6\n2d3208fa267160862c611effe1bec8cf\na04e8cce46e70fc48f2c50408e4e65f6\ndacb3f6f6b0cc7a52b1abd641c06dcad\n2e6c1cc7d262bc36c1d28dd38097a536\n83dedc1afeb57e199edca1fee171b669\n4458a5056f633fa13abacfd1353cca42\n692ed312d9ba1663577cfcf36d9b3392\n294d1fa4193f54528db944c07f28e3d8\nbdb87a4218cc7ecd23bb4223d09fa6a0\nd61ddb57397143e38d03482ac0270137\n9f6acb21f86a88d93ff936510fe2e02f\n709a0c498dfa2b32db9f110046803f4f\n9e2169e8e8186a3a27bac6c74974cca2\n2caa10c91355efe6ae2545602370c249\n85a94f368a791343985b19765176f4ab\n63e84b82309bae535b6795b7faa3170f\n257ef557fee9c083324b3288c1587efe\nfa98d507d82d325c80202e5aaf48e957\n74dd744f5c5b9d132fb56cff2a0f826\n23cf8469ffbd93ff8faab772f03eba4b\nf022d7789de219e1fb7ad0eb0a148aa8\n93d617cb7bf7558671fd17a89eb6aa70\n7a458ea841e4e67a11ee7ca4f000feba\n6d7a0e701b4417504161e123a102b12b\n678ed514423f067fba55419d0f0e294\n58ece48e59781da1fd0a2086d631b6a0\nc1c23c7a80e4bf388c34a8518a7b6811\n9e98174951026624164c8c77555f8e1f\nab621af8d265667a396287d16057dbdd\nba669a9b03186ee8108c9111b239151\n158f605ffbe6b036436916a86a90ed7\n4f2919438ca46d8de8d8ad3bdef6aca2\nc3ded7599240c96f8bbff91b1135bb3c\n3035c3d7d7eef1fc952c851f81463faa\ne679783f54c36220b99a2cc4ddf0d3f9\n8b174c67bfa00f03df269b2c62a1bd4a\n9878b77e157e4b0dffc2eedcd24a87fb\nde271ee7c512d31551c2056c93a582cf\ndc2c4f42a5715d0a6d1ffe1a45470ad7\nc8550b3e45672f5d891ef59b77a7541b\n832d6075c8fafe4de862e3cac45aa769\ncc6c216e25469966bf14f57b214697e5\n18bab729642c42631308c95c9c0fcafc\n36ff3418849b9b8635d9dd2d03e6c396\n5ae839d512364bd4da0f54fde38627c3\n13dfb842c1944c64de3b109acc7ed8a\n69e334b26683a81935bbff93749c520\n49db0f97d215a109a2db3e68315c7819\ne96198cfb23a8b9d1d7ccb77d69f693e\n520bdc1f312a9c92e44148b82b01a424\n590017c9eabc3a1cfe8474bfd438f6d8\n68918effca4b9becf3434ae1311a0329\n856d33d16a97605bc9164fb9f03dc1ac\n98c63a8e5485b0a12737a4ff69ca3cd7\n7176e9baddd8a2ea33ac431572f43a21\n75d6dd4112038b8359aa4ad538fd90de\nbc27ec84fdfa912437ab6ee77f8c5e9e\n74a65213a90e1f2d850a112e6048afc4\nef34d9789a83659c9f8f9b52e89f6554\need72e5bc3dc4e85150c05906b260c9e\n7483bc04eec05077b6d41c42f7ade8c8\n479e2ed536698d478f257ecba9a6ef8\ne0355773a18fc61224d795aabf4bd88\n9c2e939e173fb6e88af54f33b2f21f70\n198557f515ecfe73f3c5246a46375579\ne3ad9c85b958737ef7c1509e74f67ac7\nf75cac5b112f14002c32dcd0becbedb7\n2c8699277b2717be66289707fcc0ca1d\n20bcd48918a843946e74af071fa12682\n541cc8b3ccf4c799502122ac3599bb74\ndcc94b8d84b5093df47a365062723f15\n678ec09bbde5f116716c29316ac4d0a0\n39b91aa425472c3676fb191f3b44695a\n738e377ef785ee92d3429357dd0adcaa\ndb059495c20c0e2e514ce6dee24d82db\n89d70d3e0c97baaa859b0bef8825325f\nb7dd49e4f54f736afd5d38d2ca555422\n4cbd57cc8e6aef9f2ed91d160fd4ae97\n36290375c3ff67b9fa391a6b067626b4\n15bc36a3ce59163bce8584f8b28da0ba\n4133d764b4ce5323a44bdc236120a21e\n99fa43c391f71ffd592461222e5fed0\ne2784eee13f340f2195cb740f5da17ea\n62a6de09ff956e997b239f1b8ec0d46d\n42ce5fc532b667bf9f8c6ee75b301991\n235cca962513b7a7629cefcc54d102ca\n170f4eab739637f2a101047bb63a1772\nf2245c0ff356a85dda10b9c82531bbc2\n142e9e68380daef34eb88be3370bffe7\ncbe652c317a4366b4298c9fe028be1cd\ne8c4ef4c74c631e83628c1e9941a8ab9\nf46531484dea3574a803a040655859ad\neb6fd5cae6ee26c8a2651abaf391628e\nab2e514557ecb359224096f37ce8c08c\n10a1aa2255ede06589b4abee87a908b9\n7f55d778584ee63d2271b84575f49c3b\nde48276b397bfbbe8fc27711a3d87327\n7a1eba075f17d7b0a456028305c31de3\n1049bf1611874c9cf0c2cf8583536651\nfbd120d2c01484d56c95c6d882af3c0\n5050d6be55dbb7cbbf82a0d508a096d3\nf9bc179b45d2e5ffc55273be8e22f2c\n67b3696286a96a8c171bc7a10f38839b\na6fa27ebfdcfb0e165f198d5d73e9283\n75dce3b2e5152c01ead1b13838d77bb3\n52541b667e4dee9b1c1be4d7e88f11d5\n4f71662203c45d66cb2c0b430ff869c\n2682cb34e7db8735bdc7fd7cf135ade2\n5681c4fec43043c1a9f85d9079e13c55\n5f03b8d583798f7fac18d1d66482053f\n58d40261b05f9a148abea0092096036\ne7ef78ddc23ab4edbad0eedd46c6260f\na262dd4b61d374c8b91c0e89daffb776\n6adb3426ac55ba827efa8dff0d683ef7\nf5eb39c7d2e7452ee7ef9fff09638f8e\n2b829a38051e6f8d1f6dfedaba98d5f9\nbe7a560b2a6996558c646f076042ffd9\nfcd923f9bcf1e859e2a1e51fbada37b3\n597b3a321198f0a029b6ce1cfa22349d\neb1fa4d2a399d4c38334e57fff4eb77b\n467ab7ee9487525b13e4f8e4c4578272\n30e53b35873e59da73ea3d752b4ac8ec\n652a6fd052491909ab19ce2dec0d1925\n5b7901974a37066aee44e0ef4ed60fd\ne8508eef82fb9163a1288f74f9304471\nfecfbab790d979a25d560b84ad8d9e87\n3ef3e3008fd2696ca1033de17902ec9b\n57245f4db78fc2be7aa291768a04b26f\na2b921dea6df33765282621e4b0cea7\n91240b6e6ca6136dd25ac584f0a4b696\n5ff8806e12ef72e0650185da4813c6fe\nfa21f65c051ea2577500d68c500fdb4b\n7c134eee62290ae7fd130953acb6f543\nc13cfcc92e41e5a924fb403e4bf9a6b1\na801c5a24131f1842ed91d160fd4ae97\ne71c51adfe4d4f00341e76467b172f31\n719a564d600f1ab38162d5a2262f4a8\n34d8c06ade78bee87e273378b31b6ba6\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/04401088_train.lst",
    "content": "611afaaa1671ac8cc56f78d9daf213b\n9f3ad4e5f16f40b3d0f9f958bc79097c\n21a7e90867b64433316979ee2b237f2b\n74e5759913a2ac208b0d3d4e51815944\nb8555009f82af5da8c3645155d02fccc\n73339a7ed1e72d89aef10502d58d4967\nfb1e1826c233104a4e09ebaf49b0cb2f\n6039379abd69be2f5383626fb6f0dbda\n474b04796bf1ec91962bfd5bcfc9bf86\nabf5c8d2cbcd97d81a0d6bd0d03a1fc9\n202fd2497d2e85f0dd6c14adedcbd4c3\n16549bfa3cd0f53d2110cfd44d2335d\n38881e9944ea86dca374e5b9b6427c16\n6909da0ff58823615a82137b384b94e\n7f643ee632aa0a3f51ad7743381c8a7d\nb7ebfa514d14036e2da685d55be1eb\n1b1969121f2d099b27192dc5dc6ab252\ncb21dc07d0ca602b151d8b52c53b90\nf18dbf3cbc7d3822de764ca2f457c756\nb207b3f3617db6cb85089a13cc567dbd\nc9a50d65e19a4aa3e2da685d55be1eb\n4f3c487c54ca29f2439292e4b8fd557e\n5413423e80c9f264abe7f17e61fac246\n27ef3bc1f4a05157bcff4302eb453f85\n816aef1e285ab957b1c67c24f425bd0e\nd6120b12aca39e73cdbe8a30cf95821\ne1b7a28e8f8ddf15a4ecfe858e518c15\nf73493b7c8a78000b594bbf2c494ab81\n2216e78a43c5d587b8e1b99345a5afd4\nfe9d97823a25e56d95e43220ee0eb824\nb18f0d53dd3db1999410a04d09c14d1a\nfb050aca4d5f2573cf1d3d11d6121bb4\na434289b281e629b81139543c959a70a\n6e183cdeba6b83b3805062aaa3bb7665\nff8676e76a0fd471fc115be4ff5cfb9e\nac6f6437f9e63981b6d41c42f7ade8c8\n3bc6f902628b3f7f85f6153ed2033a1c\nac1e771d6392e912f594ca916b37180c\nd7ed913a3888696d289b03e5721252f3\n8cac6df50c515c498be6bc9d57b6a438\n74aab120cfb4d88257de0221db0b9d32\n5101c0131cdf76d03f9d84f9a87a44e4\ndb89fa13b1c3c53afff0e9d5e9e3da5b\na6b2c1427dec317525bf2427892579c7\n5b111b3a3e94b5907e1c85c5c15da7fb\ne458abdbff34fefe255591a17641445\ne30f2d19e9f44f6ab0cb879d4613195c\nb35c2da756f8df5aa0eb5a85db887292\n1847d3782970e60679510444cc61f839\n77f5498dd2277aacfd71ce99fb45ba0c\naa833540c3f2d77e2915acf4d1de24fe\n73b87e2025cfdb6daf19fa8e8218bf64\nf3aac8f54f5f2a2f983ec12a2b33f18b\n308cce8808b076bff49084215d845d01\n9644fb6a1520af7fa90f3ad3635b46d5\nccfac9fefb0326003f548cb8701b2293\n1b43d9193794748e31811399a4ff3aa0\n1b41282fb44f9bb28f6823689e03ea4\n8d55c1677626cc48214d974150b798e9\nef2472e661320b03e324fbf60278e45a\n901a0180abe1011b3c629b56d283e7b8\n4bef48f1c1b4a40fbdeec9c43546255e\n70fe91a7bc072c39cf81faac56233ce6\nfa9b007a326be6975c8fa950032e0987\nd2f3eb92a31649647c17b7a9bb17a24\n8da5c29d14a1003d23247d005da93d43\n1f93dbc9622d83de7a9f0bb7b1eb35a4\ncf7973f49aa611346be7f66e5722d994\n43b59b01866f23e6f8d380ef6d10e2a7\n54bb14aad2406a124ce28f0f1b509eda\n9dc0c2ca8de18e28b4c18e3209e12990\n2c32c1b5d13074431c1943a82a09125f\n81f527c62191bcd465c46de8aef92580\n1d9169471bf9223423e378ba27e11ea6\n18dc34a116734b43bfd324d8acaeb3f2\nff8ba237ee9164c8ff86292618094648\n5a37ad3759b4d93df843a7d4732b1d6\nabcda75b9f826fce8dd7bd77b545a577\ncfdd44745ba101bc714ce1441b585593\n1b1aaa9a95ae964746becd46a4907f38\n113303df7880cd71226bc3b9ce9ff2a1\na9d358ce2d54d95e54c7ab6aa5674ccc\n922380f231a342cf388f6c7a9d3e1552\n6ff995a8e9faa6e83e43be0b542efff8\nee7d2d986f2c989ac66dc18b3cf1700\n85841bf9d27c85a26062f54263899d21\n8270c952b147d263b9746cb9e2b9d08\n89019c955310bc56eeb3fafe1bc8c07d\n5c8d554075a904bfa7ca3fec59d82214\nda24f27173874672ed7485a1aa598365\na82fbd031a79f88eb6d41c42f7ade8c8\n2a6d70bc7ac6db391d4136675e1527dd\ne48a2eff0b0d0a39a0eb5a85db887292\n692e5fc16bc6ebd23737433332467411\na4d81a74a416b88948637414dbe9de8d\n98eb601db13d2a99611f4167fca99b42\n3c0801c11fc7e4c5f31b75c4a94a8879\n1ac1e6fc09611ff049c647f92ae11714\n3a3fb2919b1bd92658c2dcb60645f75c\n1cd8004a1e0dd825c33f370fa5b41cf7\n722acb5e8ccd39391e5d846d206adf3d\nd9ce2d0be1f3952aa36bec4fa7cd58c9\n5e6ee0c5d155d2298b13932a0c28e98b\nefed528241cd773fa2c7c5886f4bbc93\nef2b505068cf120efe48f52a0ccc160d\n2eae0713342e1103397d790c3d0a8fb5\n39359aaddcc4b761b0a79e28606cb167\nbf15900bf5afb946b35f223cefd97829\n96b1d230e88cba16f71555c6480aef72\n9dcc24af7e0df254525b3f0594400a46\nb7ab1b6f7dc5026dea8f4709e6949c8\n6167bf752533508dfd6e968ab91bff17\n6bd7f7a17a7bbd2d68acf22a03600648\n7772938405ac56c1b6d41c42f7ade8c8\nf5f1fbeca9af99c98efee9b82d757c0b\nfc1675526d043e81a2811061ff7e0824\nd944c42ad08401651e5d846d206adf3d\nc202335fd3dccf9d45e2a4e5729b970d\n4991cd37af08577070346e4935b9a42b\nbcc1760ef463671c825b62bd6c28eac\nbe66886215eafadd56b70d2dbf032aa1\nd41b332b9e6efddaa0eb5a85db887292\n6a073661711d8b9f1a5b805dbbf26206\nfcdbba7127ad58a84155fcb773414092\nf7cb2d921f246c00cc8eea03ea8843cc\n8b11b38e035143ddb007a3ad40c5add6\ne840fab2f764532ce4bb3cae511f21f0\n8f049b65309d8390f5304dc8cfbb76e1\n8a56e999d75c4d6e8d1dabf86742ec3c\n25eff75e43287223f1cb19f636b1c2bd\nc3e18e5d0f7a8709e41b17b375798648\n1292caa1282ad8cffc3c4ad908ac06f4\n76a4a3e8370bdc24bd2d4107e8dc02b8\nd9d06d2772ecc526c0dc3ed657ab97f0\ne13a5d5b3f7581cbecf207e73a787c06\n53cd656555da181db6d41c42f7ade8c8\n457b4310870bcf047f4e0c14aca1a926\nc864337d009c823290a9c3b0b32f8569\n19208607cafce17dcb85f279c97d4c5c\n9e302a3f21a992c0bb579d1d8d989550\nbf0f0ba650108d03cf144715a1bb5595\n9efabcf2ff8a4be9a59562d67b11f3d\nf7fcc773249429a2761eb63018291094\n953a952a18e389e4eb386a4e845c05f5\n38afc0467599bd6bfa13d53e5e4a7d2a\n452b924abd2ece2d58932236a22029d3\n71121add7e94b024fb88c3d40924fb73\n4116965029bd24393423610e52061098\n556b1ebe82977992c51777c7f8bdea09\n7f41f4b186fdf84c7ecaf377af2046d6\nc87bd717c3640f0f741e88434245c899\nbf2a5f434972f11a690a03770c5de186\n320d0f9256ab9cc3a046bbac53886364\nd299bcdfee69c57d419fdfebc874eb8f\n312c430f8b1a3fc80249ed612e14df4\nbf7daa3ade10ee75bad093be69512dcd\n58c6118bd15ca3b48dd025faf4cea27d\nf8d97bebf67cad12a0eb5a85db887292\nbef91c1804ec226e5b1c02ea3a290822\n2acc3bd87282a7e31da45817bd55c1e\n5e87bca3231cbdf15b5f05be350ae67e\n9fac50c7b7c72dc694f8f49303e93f14\nec39e26f8c0829b3413ef77469a0f9cf\nab8243a880170c00cca1221aa4c4f70a\nf760cdb0f8cbc6fa3c28e819722231b4\nd72b00ba0cbe10a1157f4a560c24391b\n5286f018c374d3ec3f7fe3cbfc3d51a7\n610a9f79a2f2faacc43c9f60fcc79b4c\naf983238a3e47692f90d7ee51bc3530a\n84cff93cb8ed08e55acbb5d30672759\n424ccff9ceea33451c81652b127a0ec9\nbcbf0ce42d2b0f91abae9246594d3f7d\n44ce10ddb982c8ff72152988eac576ab\n3ed359e502a24e5a79510444cc61f839\nd932fb5d06d5e4f8da8c8a88ff86c5a7\n9c26b9b0584920f1539baeab407f4a02\n5fe99904fa4b22d4ff1911c2640f2e42\n383a304edf67f757769dec5ec0157054\n420138dffb14f929f0b45b4b4c7e33b7\n7dd788cca7df768495b1245be456cdf5\n3036e6b2a898fc85e85776440ad91264\na1e51e185a9f24354b8478bdb97333d3\n112cdf6f3466e35fa36266c295c27a25\n313e9b124e421a4efa9922db9b6aab31\n92ec69548761efc61f74e5d5bf005208\n500fbdefb58e261af2cdad303f49c9f9\ne06b902efc1576c62fd4061aba358325\n271421566061988a93d9d97ff82834ba\n3bdd569911660da81229c79e4cce736a\nd2636f3af00fb3e2538f655e65b0b57\n1101db09207b39c244f01fc4278d10c1\nc43c9123ed893de5a0eb5a85db887292\n17072ff9ec47bfadc3fd2392bc923b2f\n878135eab6ae9aa181471a5ba59fd0fa\n89f17a3563941ba9f2fdbae39bae1eff\n1f565ab552dc89727e51366b0cf7747\n2a48a703451da580555dee99eadeb47b\n6609f05bbe9c49172cf708d3028fb325\n25e03c305f41c5dd226bc3b9ce9ff2a1\n6f63df7ca322514f41ced50d3a574698\n59a168f51f8d7dd9e59685727bdd9ae9\ndf2299185baf20a17b1546f309a98bd9\n31e8327ffa4ba6a87790cd6f6e8952aa\nb1085da37756ddd1d3f1ccf368ff60f9\n2df0bc8b46ad3cb858932236a22029d3\na698b67778c02fcb5a0a15c8380e928f\nef57d8665eb5ef7cdb965514105122a4\nf77811bd35b9215dfd06b6d6f44d62dc\nbbbca195cd6b85f1562c8e1ac545ef78\nd37afdca0c48251044b992023e0d3ef0\n7bd9b1b1297013ed65f78a217bb320fd\n27085a2456319497f1cb19f636b1c2bd\ne8e9617b4f7247fa3578fcb734a22822\n2163366f7c3a7a0e6c63b8b48495261a\n35d370a1531826adbe5693b333a3dd92\n3dc95447a57f8d06c1e615a94e798da1\ne513675ffb2da709a060e584e7409aab\n29f27d4472a17e723fd445ae159c2cb2\n1bb65c38e6b563d919bade123d9b1a21\n144d8038c1688e37ab3dd76bf33b0f5e\n5deb3e8911dbef1adce6ba04fb42df\n68189c0fdca1a8744db121a0d72356af\n52494d36a6d136f6b34ae4286be3d813\nae7098f0bc20cc6b2a87aa332da7bee6\n436d7a114f72dc03d4713685ae50fa13\n234d1646b21fd765ee45e1eced971f52\n34e36249166b8c6bc3f912172873d52f\n16685299c37055c2be40226527c9872\nb73398902d1c267b5eed8c8b1cd54386\n49081a0c0cd4ad32166f3c6af52a7c59\neb58b011745519194fde46457697d80\n97e214d6b93e012f6337fbfda5096043\nc7e4a425cebaa04bf9c8feac0b33491e\ncb9e8cd0a29cbb26b6d41c42f7ade8c8\n54539e30a59cce413864ee650d9e9c5c\n2cbfb354e5dd731dfd6c7e3f0d9c56c1\n267a2d6fbf29c04cbc17518d87dd1f7a\ne691c8f0fd7d64d7ab0b172d4dea80cd\n52d1db0a460723949582767760266e88\nf66d8ca1f6b259de2a9eb0f146e94477\nbaafe1add38af23a5f0b5b54dbc4f35c\n5bb9020da1d3bdc260a9d7568d474ade\n774bec08bd534dd28a1687774f473322\n76781e8b967f98b5a0eb5a85db887292\nd5fd6679ddfc8ddc59f56ab706e2f74c\n3ff176780a009cd93b61739f3c4d4342\nfabcaa4858df16e35817e30de1dabac4\n609321c1351a955c1e1f8455cdf1c0bb\nfe553cf733e29a349426aa93c5c54668\n3d1d0255e2163917f4ad1770263e7f39\ndf90c50a892611ca8536be73396b323e\n78b4f3aa956b52139531a714ad5bf7d5\nab9c56981431ec70f7b18034d9df056d\n40dbb04ab8f780d6cc571cd3cf8f17a1\nffd186dcf855e13e26479a182158bae5\n5828a8259ba570bbd24e3068806a8c67\n8e3e1213e47661506457f8736d1c9e5d\na3c1c9fc390b1bbbb099170e6f5a4af9\n5e5c0391952208e81213f8f7891e7fa0\nb7049148a4ffa22fdfe197f9f37aa72d\nd4a038b20b1250d7241d076ab53023c1\nceb47998c0ffa704f1cb19f636b1c2bd\nd51e5d7eae216c9ef1cb19f636b1c2bd\n4b96f974453ef59ea2c7c5886f4bbc93\n8e00be7402a612e17d6b888b4eb1ac9f\n6d85b3dfd681eba530400184d5d3220b\ne1a4ea72b1f98e92d265c94f4d41d924\ndb96e9b2c96c273de7d92dda5756fcfd\n4a81237a7fc743763992b1138bb05b3c\n8a26be623e40850a203d19a168d29f04\ne0b1cb72aba261731fa8e666182e8619\nfe34b663c44baf622ad536a59974757f\n521fa79c95f4d3e26d9f55fbf45cc0c\n8ede5d8c00e10a2ff35554ebed2bf2\nd740b0679a9996ae56acd5d5597a72c4\ne3c02395e83fefaa42dbe6bfe3cdb29d\n3c244a5e76cec2cf6f108f2b64e6593a\n2fe9e8fd2a7c512ad1f278e1513f3b7\n27f7ab052f3fce42b35f223cefd97829\nbd7b84ae3b88bd5cd2dd279a9538db3c\n8ea128f9035474394cb30fc798a4d976\n64b6ddb847da082d761eb63018291094\n3ef278f78ddb1db52a39b1d7ef8834b0\n3d5c17c3e60a168bdaab9d410eb59af2\n983b045d30322f96b102e855af58e521\n86fc58a0c40316f2562c8e1ac545ef78\nc3e0378cf861099ae3f7a74e12a274ef\nc410d13694b8ca1d15e144fc878b7afa\n7d93b8dae79d5bbe7015d3b6f402d5a4\n52a81d42c352a903a0eb5a85db887292\n9c1286570bbc6fc78f257ecba9a6ef8\nb02d8e0fb3ec903b4a952171144f2812\naef45c975ed647778768dbb598f40c93\nbf259988d2e8728c391790b8b8084f0a\n6e6d7c2ffadc2fad2fffec7af390883\ncea8f15682797fe6eb386a4e845c05f5\n88c64c14d4b6ae5aa7636d58d56f8570\n453c590f0a1b37c1e0c2427da07ca8c6\n2274e1f494d6d2c3226bc3b9ce9ff2a1\n7afdaca858bb0a964a28575f3344964\na7056690a5bf34d24ffbcf8cf904ca12\n6a0c0c55f355cc23a0eb5a85db887292\n1edc7aa574624ca0200a0406803801e9\n959975a60ae104c48780444eaa02106b\ne33124aa016bd1f19c1db271ad9472a7\nc7407877d3325f7f391258277c122351\n22fc328d136756361e5d846d206adf3d\n6682bf5d835701abe1a8044199c77d84\n57657c2b0d983a1658975870bb96a55c\ne6f4ceda4907fcc13c47272ccf8f316c\ncd1739ec8797049072f1ebe52d9b9daa\n35dc3f0f2f5fe8d667a434dda72a2c24\n81ad8af206d6b21b89b367279b017ccc\na86eec9735db06a8226bc3b9ce9ff2a1\necbb1c53e881c2b25f4e4793ed432bc1\nd7b2a9546b6f68bfd0659574aaccef0b\n2b48b14e226b131af3b2c084b195b056\n69e45e401c1d05b767d8789d3a6519d0\nd79b59ea51a9d80c483afc91de6851e4\n388415634e1056942ab70120fece57c0\n8ec3b148b8c608a0562c671ec5000f23\nee7ef8b40cc2c90d6b7170bfc4da1f8\n2c6d9512b4013504ff0682cfb57a62dd\nda390e1a895506db28792f2ae4de363e\n5dcb666efc36d9a68480fb9b9f30e540\n9a94067c6ae50d59227a8035cf3430d9\n5814df537b8f1bcde95cd0dc8c2f0e83\na4910da0271b6f213a7e932df8806f9e\n33db5943a8942fdfd998bbb6a9d203d8\nb1feb3020d9380ba4fb324159a14f34e\n2d26f853e710b3e894088ff49a6baac4\nc6ad139da5e0799c712cb59213324f9d\nc71acd79ec4cf1cdd11ec2c68afc26e4\n8b4d28e4df5ac6e8656557acf97c5e2a\nd3dcafb368c1defaa2c7c5886f4bbc93\nad66da8440023d8a1e929774f9727b5e\n5148da752bcd11884ce243cdbc967ce2\n912d81dbf33f20956aedbd2a02b96953\nb77f57d319fd864fda5309001d158b32\n1a9707b3e9d8345048891ddb73756acf\n35f584cf8fd22794e4b68d3b17c43658\n9a4812cc600c67a6bc4fefdf821af065\nc28ca490e5e7d104b1508bbfb8b56edb\n5f4937b6e428e4ee122db064a7596ea\n585f02091286a7a82b7045644a6897b2\nf0b3e6f5bd34ca3cf0c6f578f0594c3\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/04530566_test.lst",
    "content": "b497c390de93b4dcba21fe79619ae253\nc991fc4636615e64ed01ae0c90548352\n5a0ca7a6df97542e69c3c818538357ad\n2fb7d918e4a738fd97556ba76bc2663\n23be001cceb4c31af6f70779d83413f3\n28be32d7361adce59e5ca238b1551011\nac93c084dc99fa8a1613e32ab05e546d\ne3f81331fa00c5f893375feb9c1d5577\n8c3148ee031b15446e0dbba30ac27e8\n728fa87ee84c5c2d2fc7e4ac493eaaf8\nd4fcf6486fd18a4982266a2b21a2294\na8976b06101853deb4d272023dce0149\n1d075cc087e9c9e3e3d3b281e2d34942\n2a301f7070178c028cd011e47ff1df1\nb5290cd73084cec0283f6ecb26ba2c4c\n67b312f1ecd5e4a9810b5070d24f8934\n4b54d54c1e9cd6cbff5cc490d863ff3d\n498bc74044946e85484d83b7c37bccdd\n2552d0de59d21f1bfbc6fe0b6b7dde54\n4f8e847d3453f2f17301f2b895d332ac\n8d7c4ca5e08a8a3a6d4334e260ec617d\n924eeaf6f203fb636be14c19eeda8326\neb1d9a98d4024b2e89d2f742ca991829\ne7bd994999e1d6d87ad17faf524063ac\ncb79681fc1caae04a63e14ddd32fec78\ncc97fdf906ef08afc5646791c1cc7f13\n25159673c007368b8b44023403d275d4\n3c52a65c90a604f36d41dce38b96c472\n738eee54143b5406615bb39b45716cb5\n587793fcbae6a6fbf5abe4b4be4c3d4b\n834dead664b43efb1ca19e5e5c1d5766\n70b7ef0d69c7013473965669ebe40616\n2a569537a0f6abd34b5acb1c7aa990eb\n6e52344e2aa435d37e264261353b57e1\n6a9764e3e4127744be2fa29f46d19511\nfeaf5c41e664348220dfe072b77502f8\nc929e6d77b548b27e6f3ce318264cd13\n3838f398264452a47c97d792b03a31cc\n614aaafb767bfe62dcf47132cab9d51b\neb90fdddcb1f25fca60ce6f0a0028c13\n8d8113b30710a6bb68d1fcae6985bcc8\nd5f0a8785afc39120dfe072b77502f8\nfc15175b34b5e47ec57b4b6e80796be3\n1b19bc5a09198bc85fa2a5df3ce5bc40\n927c8ab9d2603aec2d4fe9f5177af0\n4a7375e11a8ac1ae565f244baeeca983\n2c7a846828d3584f2e332a83fed6fe76\n327be46d4b15ba2aa79c0870e481d9eb\nc9d1159874c934f16f1b09a7281511b8\ne3c5033a9367bfa5a6dc0341d8503142\nb032f7baa738f10ef1ec74085c31730d\n325d6d879e306fec3547bc1786bc3b6\nd2f5b582c65ee9567f79d93424b708f0\n1dce61f6dd85dc469811751e3fab8939\n6c99359667a1b49d657a96a9bceb8713\na7444ff7be7aad024c8ad92cfce1307c\n60c58f42072396986d4334e260ec617d\n54b6788d413eb45bf6b4f9d652536b82\n37aeaa30913d6ac73e7331a68f273ff6\n8fb16643e061a3bd82b5804533e545b1\n10212c1a94915e146fc883a34ed13b89\n5ab18f317c0a5d21576932faf8645222\n9380065fd20eec791a7be2887bc37d1\nac736a87ca813c6d701c68e1045b606\n1a2f00c6886f14354d85fb76de815344\na85ef79371cb1edb52fd6b83c5929135\n8851329ba7c3394d41556f795d265590\n47c53f9cfdd4addfe054bb56e3407f7b\n79803d0a02bbdc93ff790997f2048517\nca529b32d5bccdfe7d66e5fb8a76ea1f\n9a0c149f5c47207f22252c899eb7861f\nc29e6490308ad33320d713ce6286f99c\n721a41c68f8d1e1af898a4b2192a12e\ne00d3546401b6759710b5d09f274df\nd65fc1dbe7fe802a5761a0b53ed37cec\n635bed8b6b180fa3e65273dbd0c0f949\n2d136ffca92d9c4e3639e751e7f78cf0\n5f1956ad3dd52a69d3a2c7c88c74aa63\n2080308141b05e9e584c6557cf979aa5\nc23960425c8cb654c6cb0dfa2f14f9d4\nd1f0353c7fa985c91915777d56cf77e0\n27bee532a7cbe5dbc4bd6e2ad0dc6de6\ne765446c37351a26850e00840470903a\n41d1856d2e24a738b4624ce09086ad45\n29c5c9924a3e1e2367585a906cb87a62\nf17262f7443b98de38d037116a032a18\n5aac718c51fc73ca00223dcc18ecf69\n3283111173c12947622984b5941cfb8\nd9e771ae62f0bebd28642b2f4910862d\n2c68972ae4868355a6a720afea6887c\n6824763a090a0b2fd942f20c59bd7ad0\na51410ca51a40c2529412f6cb23454eb\n1d2aa0bcc9ade276a70cfb3232f40c6\n72a9394882b8151bef94bcb012573cf2\n1175df3d5cedc3365c00e52236fed2eb\n24beb61e46bf6b1970d557f49392fb1\nfcb92e30085a580d9c6645849b3b7d65\n61eaa4afe332ba113547ed4d05d19f04\n189668ffa80d37877622984b5941cfb8\n72a68c898941cb3541556f795d265590\n24000ec6bcb6ab9182b5804533e545b1\n607b88a99de743eda0fefbd3658c7966\nfa2b5f163549ca457ba04de7d6d93ce8\n68d32bb51ab2050efe999a207e6e230e\ncd4240b8246555df54102e7ecaeb1c5\n34c099dc4cbcb0ee7c304709a8c6cd35\n7103677dbfe63b1ff85fa5c7c88c6c9f\nb2f200bd0861e1daeb78d3e0a9401d4b\n6f36c486675210cdd566d7f46e9a16d3\n587cc1fc65ac4991ff920fdb73e92549\n2f004ec4a719d231e513e51a78e5ea1b\n9122c94c6aa76d9e652b5e55e45d0bc1\n1fb07d5bf3421a46e2b83b21c9537e1b\n283dc6c755398547657a96a9bceb8713\naa695b15cb58096f36aafa2ff65e6955\n46fefa9e95b353f4b1bb46d2556ba67d\n6419254bff42d878e820a92cdd43b76d\n68babb87d66a981dd187e410b169ccd0\nad2c82cd40584b43fc4c78b4701b2fab\n58a768c309c01b2cd6dc46f6baef3245\na32082d31b6b9a0566dd4c46ee29f5d0\n693566461a33af90d7f8e93419dcfd5f\ne1e3c053f4b4f1405e45696ec6d1a105\nd5c7613bf466d33e94daa4565dd30535\nf02b990da656df8dba71d80f7b736179\n8676b1989d68f3e970c565b5a7d76650\na755dbab93afbb3a1a05bdebf75f301d\n8d95b6ddd06a8a80f57109a0257e61dd\n5c313324778eb79ad976d6ec0305833a\n20c2bcd71abffc2a93add66353cae8ec\na431fbb7e58ef0c46c03c11657c96c60\n3c835bfc9201041a34f2450730697f14\n4ecbd1471e916cd6c1ae34bcb12af75b\n86fafe5bf7013d18248c5646daf6718\na0372d1c35e531e7130b54be1fe602e\n6e1781a84b5dbda6fb3e64e796c0391a\n77d2d34922964c7b57c58fd0f9b1d74\ne5524ebe2d9f1e8c47caa6b5f3c46e10\nbad5505a49b50dc8b89145155e320b60\nf03f7c963928073227ac692756be9e24\n83ecbc5daab43647ff790997f2048517\n6c687a500aff678ad83f267e8f0b536\n3e7923c788b0b9a67297c18bca670e89\neb05e72eb8f94a24816427daa1887efe\n6911bfee295138ccae6afdd0fd1549e\nc359eef375afa3b6dd42314e00caace4\n90d83e1dde32426407e66c6e74f5ce3\n20d1090d07a49fe927ac692756be9e24\na3109a4b09953b5e2b141dc6bd7c4bce\n41032fa8e4f632a5447ea5854b3cf405\nec685f1f4bd71a191bf585548743bf8\na36f6174628ee5807789fc10abcbc749\n6371cc04f48161ec43b0018b6edb5e48\n6d71354936e0e1e8c362d63d34a4d0a\nc715bbc7a1586afe64ab9e610db7c692\n7a6634eb949d72719e6f7dedb7e5f584\n6313352481b445a8ecbbed03ea2b4cdc\n25f20d56a125b4028d8e8d98cb30b332\n848164edcd9aa41594daa4565dd30535\n93285afc55afb00f6bad0887a204b994\n84b75e53176c9f1fe1e2f026632da15\nba05637e557909b19527abfa7ff95c0f\n52fb0261b905147d2fe023c7dc3e5231\n183054ec6b2665a38b2b48d71cfe16ab\n5c695e7aa51d16ee557500503415b4e6\n2362039302d80f99f2c9de96bdb467eb\n27e9a27b6e3b49c227ac692756be9e24\nacc820666df876cb33af5a5d96363fe1\n508e6fc3b47590556be64995e9ed73eb\nd1e59a48852965fb036cb639ea80765\n7edbaebf7d4fa994eca93934e5f39869\ndd4b3fc340bddb7f70adfca72a15271b\n5b88544e42981ce0a71aa3ce894d7bf7\nac8a42622eed9830ae433bf4d273c8e2\nb89d4bfad9c9b64d476a01ad767951be\n9262aa413df7b369d735fa1ab17311ec\n70744087c22ee199a51aab4cdab636bb\ne0d1f833e8dc5c604947b319a9e09fd\n307a956fb5eaf7a629d81e9641dd535d\nca129502c7b2b8186d54dce3f3e9f18b\n9696dd7f30247c5c573080510ce7a6bb\ndde0cd836238f7946cde899c8674e2a8\n73fd73a8bda002eae8d6be23f236225a\n77cf1b9003d904df96bb95f1b1976a40\naeb021c1e1838706b44ca19ee8c5531e\n2114fe40b577ced9c7640fef6931a907\n1d176576e4ded157a313c221866393fc\ne3e2bf1879ec9298c711893477336d39\nabdd2218a607a19819194900293f58f0\n6c2c2ce0215d3f979b3523fcb9cc5680\nd45f39e14c365801892294bafc22e040\n9f468767b1fd9285eb2c303a0e0d287b\n409ff4fbba1ba94adab1bb7802748e9e\nea34a8282ae86edcd3fb60637c014c9e\nb7d831d7b1dcad77a8596b6b008107ab\n2067c22906b79faff877f04737ced5b5\nb03e831a78f2f16a5b04bf7f324b7e5e\n1f20ff37655c5dd61aa01ae491663d9\n6847480bd905f05b544654c1c7449887\nf81ae8a4452ad290aa9bbcb26e1c5ea7\nf269ef3a1c758432e8d6be23f236225a\nff77dc4561e1a8a531d119333f70ecc8\n72d110284cdf597e68b6f3ae18faf6b7\nb090b42f3dc0e7a4aa7c6f19b4833a28\n2b17c0705ee0426e53b2b4f48361e0b2\n5e1c4ca986d216866554a94f24190b8a\n697c8a9055e5ff2ea7a62969e8bea32d\n2615224e88e47ed29e5ca238b1551011\n703e4a7096ac1aba8f7e96a8530f50cf\n6f8bb01950141f63b3e3c8d3ee0e8f52\n2e54c2bad5d117994daa4565dd30535\n57b1795508e5f9d19996f95a20b4c45a\n9a7b0effb53375625f647c1b0a6369bc\ndf73ce22935c8081b04c44c0f84a941e\n7eedbeaa5216ff06ccd600f441988364\n52ad452f1c63aee5a66bcb069f7626a7\n2b58ca08b8f93769c5408f4f799fe72\ne1a43edb6152a3726e23bf72aec61fd1\n22a66588db3822831d20b5ad5ef1cb1b\n8c0199fb20e7d4d391347c63d1dae43c\nc89c8eca488d5072cdd34f38f87d26cf\n4bd85ce20325ba7442c20743f866e1a6\n2abe34f72a7ed4eb0d00cfc385a039b\nc8f85606ab95f0bd75086ae01906f5ab\nb093af9dabb14b70cfd826dd468a5497\n2571a0b3d1eb9280f26f17fb5c4740a9\n7ee49cd8ad72bfd2c620cf302459a7d3\n6a5f7a634b13ea7a94daa4565dd30535\nbeacf34e9b0c0597894b951d14f8e56\n7e16ed13ded8aba83f59687345e725a\n9e3c0b7fb69ec3997cd1f8dd6fbce8fb\nd703643f4a4f76a16c63b8b48495261a\n6c1cfb2fe245b969c2e818a707fdb3e0\nc15004cb38217b33af018ffb2ed4ff85\n9d3f9edb3fe0ada39bddaef1ba7e1752\n5a2bdc97e9d6683077f1d7a36adeef7b\n370ab590d5f9f6e12998de2923cbf8ed\n2d847f7ada349864a4f87aa9a31cd70\nc1b48711737649616a740b8023d40f30\nffacadade68cec7b926a1ee5a429907\n995547c0276be2626bd4106c65ec103c\n395ce591ad2e2d9be47b958d3d1f5177\nf90a485c72b6047b102edba1bfa321c4\n7b602de66f5eff247991cd6455da4fb3\n123c021333485d698a75485f44bcc744\ndace99ad1144747eaec7ac3c7340a2f9\n2988a53fc376653aae529ab4a75c4af\nddf03991440ea0d15eb13ba95b07c9cb\n65e829c5a8a52b9491347c63d1dae43c\n703c1f85dc01baad9fb3e3631a88cdab\nf91e712b124915514b6c44ccda750d2e\n65be4fb7c78125eda52f887aa13ba9c2\ne11279543f1e3ea015ebc00dd3588bef\ne88c7403ff401716b7002bddf0942f8e\nc21024d97247df5ae922b610a625137b\n8e8a38abbfa3ddec942654e703edf3c5\n847e8fedddf6bee5518c49741aed1bc1\n9bedc0d32c657b5a95003e7aecc71b93\n8faf5fbe39f67f3dfa2eb3102eea4e72\n54da496566d05afb568b456e2715b08f\n93c013c922b90649ec08eb6485163157\n816efac46f2f3c99452a4c76a476a0f6\n2e620c48f90f6fb2f569f587daa38158\na28a7d34ad5f006f959df312c935a698\n887be2603a56d8acc13b4b8de5611825\n73c6ef5ee071b7f9791ed0cd6a81047\nc6e127fca727e2be3d312efac35b8a09\n8d5e3b659cf0df154327dc86b5ea9517\n95de565a937cc4ccdb024f6e72f57630\n35960e065788a31b123c06ea72522927\n377ea2491f8db13c4808655181d482fb\nf3f66f0bce27d439c1dbab1d1ee81853\n5fd1b1b185638c49c13c29cdfe828247\n4214845c44563c5fb1bb46d2556ba67d\n602df167ba6cb5f5443efa8c2bef3b97\nd09202ccf8fa18d7de6289e76b045123\n6ea8d00d7359f08f9e4614310319ea50\n1eac28fe0b2d620bf0f75e254acd7ce4\nbacbb452a0f6917a663e90eaf6b4ca52\n389d122da973fd5cd812ac1676a22587\ne93a47089f5c03fb7220891f188bc420\nc993c40ab88b161e3cedf90fdd80720e\n6fd433c69f9c498a12d1578498a3b488\n7890b89eba662af0ce90854bc9efdc95\n1f846bab69b20a23561fc06c3ebd59d2\nf8b80289dbba94bdb7002bddf0942f8e\nc680824e615c772d18d5c097fe7ed300\n411da0cd0b0089362b249fd16295bbfb\nf99537c4b6d50126d87c63d8b3018b58\n1d5ff455b6ebd04e413559acd5524c40\n1abf3b20f05ed8ea902d6f4ac8edb5f4\n7aba61c9096ce60b7002bddf0942f8e\nc8f5f746daa5bd96b34ff70ac6c9e4d5\n2212bb44240a9f0b57cf4c4836e6df44\n921a5d88994aa99c71327f667b2179b0\n2e958577e7756f59bf9717d602b327f4\n83122dd93e3f42c08099d0cb75c1d1e1\n2ba37ef44fa116f8300ca77569ad3884\n2ee1a459db90488826fea6918e74b120\ne82e97e22066a75d798832e32e32aae6\n83aa90436933149311c337781d78350b\n6d6e65b938b88eaf3a4406b2a58a646a\nf12f615701b9fd31a9e77d2a83027228\nbdc39427c6267262c541ae04c251c7da\nae65e1f6bb539fa775e66ae917e551ed\neba55caf770565989c063286c702ba92\n368dadba3b837dd926be51fab07b7ec6\n4140a889b730d00cc613c8345c33a85a\n957ac9708448e111f0ef63bb932093ce\n9004946f75082a8632c0857fb4bcf47a\n97b9c8f223390554e2584b7a39a94cb9\n3897d265d993ee2a1fabf3cbd0fc77bc\nb5b320871c5dd884a24134966691a2dc\nbb601d5ded9bdc00746ffcbc44510229\n854728b0055ec423e4f0b6b21d3809cf\n2e6a74a610868d5be1e91cfa8fea7dba\nbe8efba4b5c1cbfb94daa4565dd30535\n71d6ab6979e5a313dde8c025d72da437\nc45f67b42b7febf52b249fd16295bbfb\nf18739a47f1f08e08510ad9ae6ed36b6\n4464fb8cf0d04cb732c0857fb4bcf47a\n2c8725b9a09b6d0a44ebbc705ad8c07\nd4079a1fa9c5eee8a3599da6d4b3696d\na13e0728cbc8a41594ebaf95f022dfde\nf73392abd103857666ab813654be63ca\ne4717ec5f7e12fbf07aa2d157764a08\n92f08b4bd8aed9bedc2616ac929c8116\nb9c516eec45c825979283d5c77809cc1\n1f9315ee16e03c64450e0a3087ad6863\n39ee3af7e07310f494daa4565dd30535\n72f3510fb835c3557c0ab7347b9e831a\ncdfe819679f7c2e2916576b265053633\n438a1ce3825bc06a18803813f0c0dee8\n4d8ae6327ab4ed301e66f1783a4812d7\n522614512d74a2f8c5f391634c2a5ade\n20c2e1a09d00f51294daa4565dd30535\nac479ce45b04972891bdbed880f31c72\n10e10b663a81801148c1c53e2c827229\na0b661c93028d7de798832e32e32aae6\n9d8d5086930871efe2e5f41247736024\ndfd7315b7f8a07ca67585a906cb87a62\n24a0d85f723fed2d7f332834f123f44\n59a363d3852757572b249fd16295bbfb\n49075ee8db9d66538d1140748efc85ed\n9114091d7dce55242e5cac9166d7a1f5\n698f399e6c578386b64d3e1832079349\n7551b29b91fa4d47ca732a92ee1dda3b\nace32fcd2b6c3fd081e9f45621d2c8eb\n739a6f209a49040a4f44d84b9baa5f42\n1fb578de4aebcd62b249fd16295bbfb\n7af3abe01d2ba4ddf09d36263ac1039c\ne2595bc7ef0809097c0ab7347b9e831a\na4d9445d191c80a235a6b421c152ac60\ne92386352c19221ac99bbfcf5650bf52\n8a553a23adde929ceb2c303a0e0d287b\nba5723d5cab50a0b7d86b3749977e29\nbc698a05ff49b6e06d793283e2a4a87e\n758c75266d7788c0f5678db9e73ab77e\nd317c39473534f97b1bb46d2556ba67d\n3f3043e275bac07a6f315eca7454150f\n751aeec5f1d50668332d76467c18dfde\nd37263bdd876ddf6f885c09aa3e51c57\n37b4b837ca7da6a4561fc06c3ebd59d2\n49665c3dca5441d77c0ab7347b9e831a\n1378b7d4dc05adba9069b3c9aa123329\n33e3b187089a68d3f983f6a1267b9260\na99574a44a78208981f422b7e55b97ef\nc8414ce9b8848c3c1a3ad8aa8e24c7d1\n76dab7acad83682765aae3dfe86a49ae\n84097ba1b35f844ceb2c303a0e0d287b\n4e3cd4d3b11584dda70cfb3232f40c6\n33f7a4ca412285334616fd0dc3d5279\n786f18c5f99f7006b1d1509c24a9f631\nffffe224db39febe288b05b36358465d\n5fb24b87514df43a82b0247bfa21216b\n8605c975778dc8634c634743f56177d4\n98da594a65640370c8333f6c4d99e2c8\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/ShapeNet_filelists/04530566_train.lst",
    "content": "98a61aa6d78f6f49de91bdb310db8e7e\n82be57a43d5d1e14fa286e2f06a75d07\n54daf1472c51bb47a97a590141e0046\nf4923b4ce88bdda3a9142e7277ee08f1\nd35fc449232d68474163d08524f89006\n722b68d90bc3955d2e5eb68672f87e15\n161d9d8a1550390ff4000b62f164055f\n1baadd62642d9f03a134736201a79843\n3fe8b8d9fcf031574bac1c894ff81b3e\n212a323fdfc0d8e59399f7cdb64577ad\n397f37249263000990960087ed86644\nf60404b62c44fd3b49f0e3dd7767881\ndaa873aacd7960d61d2d2f3b717d35d5\n8849abb0be0a0ca99cace9782a7cd30a\nb472526267976d94e145e5e8ca0d926\n11c2a8719a7d23207ca6caab209ed3be\naf936a44c902756dfb04eeadf4d8d0aa\nec4a394fd782e66b749227c7279794e\n3ffae5def89153e911141f4b3ef0acd0\n6a0da87e5858b4373e45dd2f173cbf9b\ndb3a31bb1fb188c727ca48a52046110e\na40a870c5abd8c83d84b8ba651dfb8ac\n303736b1be32f43c1c426bf7baf37c25\na8dd1e23448a492aad67d63ac9e4b707\n90bf73b91185303139555c8c231d0eb7\n4c8c605b2b452cbba66c1707a338712c\nf6762e2b8bef4ffa476a01ad767951be\nbcf9572e3f21a9505c0be177939e290\n772835e02fec3a93629f9e3e495fed76\n3e874274afe2d37c70640aa5d7fd3004\nbbf1507f7126733665224ccd01ad35d4\n88ea6d51dcf2cdee3a6f102e22936e2c\n82180d1a6a7edf815e585de41f56d4fd\nd795b03f47dc7cd5525c5b030c9fa146\n5001bc761fe86d60a43a471ceb7c72ac\n44ee47ab9926aa821e062833a4a1a38\n13b7b299d346020a4de203ef6842ee61\n4a01d52c0d8346fda8215f78849a813c\nfc252e6ab475cfd6882046e7e9998f89\nffb0a1240833569b9041e5038dbb1ef6\n3632e9d36e280dcc6a6cc078f0eef937\n93de96748cab511731205bd848315f04\n3c785a132fbf152249d508bbe117085\n4c6e4bc79308e23e480060a68009533d\n9feb86becf3f22f93df8f4ac45647158\n75078bd36089fd98243f62fe7d2ba690\nf226832ef907984fd8d4a0e4fc199475\n597975f72770523eedb8bbed3955f432\n3ff4ba746d73fdd08f845c46c317c0e2\nb791549dfe175150a7d88fdd8b14a0fa\n965153f3599a6ed6be7ca2216dc1576a\ne57c1a72d265147548c2e07e979bc75\n38b6dc2ce1e8cd05e8d6be23f236225a\n81c9e9d3f461c4da9917c7f0cf5ea813\nfa18b7197a462d9b87c4e42a13b47711\nb6ec93c690df4cac711722c32e47b894\n8cbb360233696342309e1bb5976741f2\na5a16ec8ebc811f1aff407511d7dfc96\n7b568afff918289614621506c22882a0\ne271e4ef2c327dda28d0def75843d7e0\n4cb135ddc5d3211c713a67cd30c1e1dc\n3da3c73abafe7a9eb9e86d477b879ac0\n5d301491ba435b71257fc1c453f165b6\nedb4574369f95b50689cbb453f479f9f\nd235d9f72448d9f82c1bf9a642a59d24\n108d62bb197c948c60c7b57bf6d67c74\nc8bce97e59665f2811b9a587ace886f7\n53fb6683aac2191fa8a3d44052f8cb25\n72eb488206297aeaa60ce6f0a0028c13\n5e8276dfb4c1db936f31e247620349e3\nccf527bf6ea742f0afe1d4530f4c6e24\nd49066858c55d7b021d7ca6ede0e9373\n991dab2b2339600a27da61c271c9c6a1\nf69f4b2abc707f667610cb1c03c9c3ea\n223d2316bb8b74a979170a5f8beda902\n1994120ab63fd4fa3df8f4ac45647158\n93304640e3a2a60d611cd70ef25f5235\nb1bc73627283a4076b861850ae66c9d1\nc06ec9a0e32cfd11abdc408c54a4b577\ne5a3728a3b5a7ecd1d2d2f3b717d35d5\n429dea3aadb0c3bdc753f4f2b4288d6\n6ba7c592495e203f49006426f75e891e\n60a1ffde62956a96e4723800c586d63\nb4d3624a4e2651ac6bfc202176cd1f2c\n72f4c3c433492d585001cb19c4a0eee4\n3f3912cf68cd28eed7259ae7450dc47b\n5b0e4acffe94b6ebd283df6ee191ad24\nf2c8239dc51b315858e86ae676396826\n9fd71a532f7c732fb036cb639ea80765\n9de5e010b46919293bb25e78abe7f382\n3b60a8a4d71e3f192063cebb14246130\n5edcd7984de7fd4b42cdbb9140b25a0d\n6fabf91638fda8bcce1decf313ece97f\n7a4fb637dc511c19b1bb46d2556ba67d\n7bdcc3c9462eed64482170356260f668\n7b0ed74742d27ff3ccc6f1de97150965\nc55868566d2cd547d8d2db57c9e192a\n67dd862f05f659c71f98035449adc4bb\n9043c404e310864cd5dfe0108665de88\n27476b5c965b010618b731fab8bc3743\nd57e124826aabbbfc6cb0dfa2f14f9d4\naa05992294efaa26a47eca0fafc43370\n248092c201dbf7008088de1a3d7f09f1\n956c3b989bdd0603158a3417d0510bc\nf531f4b2ca36d626e18dd06c1afbc426\nb71deabf89e42df5cb167b89a3c3ef9a\n59d2e9b3b4de8695a0c75f497eade21\n512251a635bd548f3463d0a80e47bc52\na7b07a2aad642f3f18b731fab8bc3743\n42d4dfd73f7e27677e72e199dc6b40e\n82138919402b3b8f642f9e27aaf0c47a\nf31b394d652f0bd0592f00ecf480857e\n645382862cc284869bfdd98fcb85ea6d\n52f3ad585a3900792de1329cfb242f46\n6729875f6c9b48cbe4707b1374ec004d\nfd255f604c44b9cf497768bbb615071b\n74093f3d2583f3be7b0299baad14624c\n693272dde72519813cee85b510079413\neb00c722894c3d70c40386bdd72f9a0\nc8dcc1e4f2276ef1ca6895dabdbc0ada\n82ff35912d0a143a4e2501f4797d0851\n7aaa404bd120be52816427daa1887efe\n8d8e8de880b4d7dd12ce033f7610a23e\n6ec5e181c6df65d9a7afac0aa00dd174\nd0e9f4c4bb582c3cfa0636f27a8b2a9c\na48181b53d207f702ec88d3440bc2d77\n11766a7b1f86adf36bfc202176cd1f2c\ndd012d1ee91543ff500cc506a763c18\ndde98d21d4359f24799c6c3b2fff049\n677ffbc1ee40a0a0db5a9ea3574bb285\nd0aa1202f01227f7b9528bf167ff877e\nd80bd439608923e07610cb1c03c9c3ea\n5e6e9a61eb078041556f795d265590\n44858e0564cdf90e299482fc72b07ee\ncd67f7d1ba943b162f84cb7932f866fd\ne9da320a14afc7098031a892cba81629\n96b27c98daf461269ff59e10e6ad1a4c\n4c8fa5d0d4b2c54644dbf20ba8545fd\n67adcb4dd6d1b51f3a2bf22c38d431a9\n5b6d80dac7d626baa218acf6a387078\n31a41e6a73c5d019efffdb45d12d0585\n6189947ef21a4f4b7f6ea2f642fdf12a\nf10162679968fb0d8f21fab201b7ef8d\n31ddf87b5ef64c9080c9c53be28cd7ba\ndaa1781b81a74852bddd6eea3463dff0\n2c7a0d5909d8dd46a3599da6d4b3696d\na70c472cef0c354dba2abf2ecc57eeda\n28c2e4576e53da5ee25f26a257fd7871\n7400be7b247ce021be99fd8a5f540d8f\nfe7362e8a02d00072e4aadf908a27d12\na10a3ed95539d9e81f0c83f3777b8bde\nfe482b5db6daa95f88e2183678696c9a\na3905dbb972cbb3db57379b548da98a0\necdd85e25c18ea404d73ca91c97c0cb3\n3bd4a80ef718b9c9a069f11e22e91bb4\nea940968d0ba131e7b66b8fe985fb060\n2fcb8c472f1cbdef185cce17ce166549\nb93e07e84bdfd620f4000b62f164055f\n45351c87f019646115aa5b227c027ee0\n507e097913d1364bba2dc6b0ec935a93\n13c289d915523f2348132c07d51cd81a\ne3923f2d2fc2d1d39263b5578aef09fa\nfa2580f6b9a29f5454f886603823eb9\n5aaec5938224841f36cf5f476d32636f\n59fefd79eba35dbb723877c00e9cdc03\ndcb390b2e8e5093def84f4e0accfb14e\n25164e1af059f8507129983ba40a1750\n206c86e4cf614dd5d03c0ce6ad42cc93\n1b00f29471a41f59e92b1dc10fc46551\nf5812d814e114a185c8b6bf3197caaf6\n726a60f7dabb1c88c746ec5b7259bed7\n1660bbd9c43284d98bfe41fc81907f54\n4cbffb314a589346b9b184da9c0040b5\n767e561fa1214fb83651bb31f42d2f80\nd66b7128600af54e7afee304cce81d6f\nac4286c2e92e3367d5ba5130450bf929\nd3c26b292a4a6a82621153a3cbe4a77f\n7e7ec66ebdd4df7ed1745f739fc0fa03\nd617c5194daf4f7298a97ddfb532e08c\ne6a9f9135e36b6c17c0ab7347b9e831a\nd271233ccca1e7ee23a3427fc25942e0\n859daa33e58191bee2d4c157e5bf1dde\nbc691ae1f2d6cf0ba628de2fd7989b40\n61df71a58a9d0161202de8d12c6f7633\neb8569cf15db1dac1640aadca4c54050\n5b1552a30341a3b27ac692756be9e24\n52176ee07927984ab13f6ba928a796f\nddd02c6fb780d4f6c683d3e7114aaa37\n4e341338a4425ea391fb4dce28166bd1\n293781c9bf4f6168c4ff53ac1cae3d62\n9472a24df8372cd42e436d38f27146ec\n3f3bf820fa5d171bd45d4d5673b732bd\n9c92c9e16d1d214b81eadf50fbd8addb\n50c0bd9933f7259fe59358c5e6239c84\n27d32838007b5a07c63bc8fdb41b8eea\nf3a1538193bfc54fad3766494450e53a\n71fb9e98e62ae65f6a8fde3b294e520d\n6c1c628f4ff60addc5b0cf694baa734f\n6abd7ebbc9020871bfbc6e788697e036\nd0afe316f1648d22b5d16f91270f7fa2\n55d87dea079d2b991bc665188b93587b\n12a01b67cb987d385859fb379730f7f7\n3f35daa80c8b364fb7b1411b0ad3bd0d\ne6d6a78f53ed5a34d0a07165a76e5a8\nbed3fb84c9b876f930d7c2b672980ace\nac2e609dec5745b9e00ca2cd74ddfc7a\n490ba339e10c0b7f4de203ef6842ee61\nc9bb36ffd5ccf7584cbfeb2946087e59\n7114f947ac296d8034d05799e615961a\n4e45c5a16f45c3bad9356bb4e82527e5\nd0652ef190720c84f4e9dade6d46323d\nff54247b18f676d9129032621d548b11\n8185d9e558f822c177cb090a86675a1a\n58c05eceed8e0a48f3e39f2e17005efc\nf2bf8fdce1a33c66a60ce6f0a0028c13\n3d33ac667a885a1a7856807e3e4b01ad\n1d8b27e78b2f326480d90033321f5c09\nf728f7efb5612cfe6be14c19eeda8326\n423f4d084e13106db75e46a5ead1e5fd\n7ba8d5a8edb7ab991f377e6c4dfe0096\n7abde2cf79febf6efe4db18443aaee4d\n1039c49d2976eb87d5faf4905977884\nd24616fb070d105d3a10f0b86a89bfc3\nb0ef1a0332a50ad1ae4c18c4a7d1a8bd\n64ceb6b8d122c2b3c9b5311300e82c12\nba62a620689a976f721c8a4254856c86\n5f2ddca70687dd3062ba640dde834b4c\n5c46f6ce5efa21175060c1b57f88c056\n91eda08cecf2e0f1c6cb0dfa2f14f9d4\n88baa5e1db4d1c624c24aa820d0994e\n5059b4e973a0fc7f928a2a26ac296b52\na443271055ad0ebccc9f5b25407f3c72\nab40191e935c415cef0a5cdc2cab422d\na473fe0a7f11c7ae9041531b90641b86\n3e900d7ea70fccaae6100699d3d743a7\nf8d3af1d1a20123c249ba97ee36ba54\n40d4cf2e4c0042b81f6b8c144863b7d\n306aa8588bead6f3ccbb877d944b8a64\n4021a170452d19393c79f1baa816886a\n209f569f50d42f7e45e2a4e5729b970d\n2dc008ba026e4c8c8209e983a346eb25\nbff4e5d71e9b695dc6a303e6239bc3b0\n620f33e5f326e3c642f9e27aaf0c47a\n7e0d128b6c8ce8b59e5ca238b1551011\n969c3262a594bda487a9e46bb7812fbd\n7a3ad44b854faf361f377e6c4dfe0096\n215861c4bebeb328d9a75de54b023ae1\n98a9c16aa2c6030f7d962e3e9892f8dc\nbadc6f1a2c19f724f3e39f2e17005efc\nca2e4bd483c006a5c9f3294669fff77d\n44a50dc1a9d8a8a65144962e2c20b832\nd8acb2681ea3e2466c64e0542c2b0af\n80c6a14accb189a9c2c2c81e2232aa95\n74480b3e812f7c1428cf87eb5ebe5e6\nb91a01dfd51d615b4f84436cd4bc7d29\n33692290561c798e780bc2708a85ba9a\n50f0d14029f7f7be450c3626dae37aec\n62b67cadf45841ab82b5804533e545b1\nb942192d17d2e267b7cc248da6c5c5b6\na8daa7461ff94965c0be177939e290\na8f5ce05ab3aac91cbd32f07d6724eb4\nefdfd88f3fcbc162b4c316c21a905ad4\n852a4a82f02d64fb31205bd848315f04\n54ad30894e9c74f28abdeb0a990504a\n9a20ab78eb6a5e7af7ff315fbee3c6eb\n91e0e1a6dbf302c3d55da98ad008849b\n64ccd647293ba2a75e73d168e741c7c8\na230c555488ec2664b07b7d8c0d68c50\nb1dea53e9995486c1b4a375734e87fc5\n3038a5f927db994e6702681953f194c0\ndc0d90ae6a41e0acf68668364a569266\n7bfd756573de367176098e230fa177d\na034dc83750e7b8144c1f09f7df84b24\n77aacd8997c67145cf10e9e4657f415e\na728c32eccd560e69412a62cd6b1bf5\n28db3989d5ef36e9c3691cf0253958f4\n60ecf4adf9e115f91eff78a25c58572c\n1c7f49bab676187480901e43af4435c7\ne0845c8579c5d4acc3e7754d5a998758\n3e5e782373516ad760ddc468fe733ed1\n6cea89128bc0b5e83b9f2b6367bac7ce\n5e65f519b9f5361e657a96a9bceb8713\n54cf5783ca03b3e015ea3a1685d773da\nabb6fe97ba97e1f84e3f9dc2fe7cec4a\n24ce8f07f05d14bfb274bf54d5e89093\nfa656e5b70f12edcbe7ca2216dc1576a\n203c2cac2c46e06c320fa6e2cd857828\nadb1b651af34dc6f42534f02c8e8b5ac\n954c459bc6762abc24f2ecb72410a6d9\ne5ede813e9f07ee4f3e39f2e17005efc\n30cf2b36478a21ee701c1f58e22b85e8\nceaacadde93c2be6ee138bcc5a7d5853\n1d451877c6270d97fe755e3418b63110\n7a5de2857213a2547ea0f302610f14a5\nfcab40b30e1ca530713e7356d62985db\nc7fb35a9ca583715ef0445a3d98d3d35\n4a886c242f8d02c8b5d16f91270f7fa2\nbf4386d3e823a09e57a4e26112104eae\nabb16b391d1634a84de203ef6842ee61\n3de0aae73a33188ecc8c5a250a07787a\nf61132a535bd608c85f7a3de54751f1b\n8b0d1cd6731593974543d90faa1260e8\n54c0a11324d0ca82942dbbe2d0488895\n66fc4d3e245a643c4f7b88e5a2748214\n1dabc979fd569a0e850e00840470903a\nefa50c4e3e691d3bda1b3e013aeb1e59\n4ac3edea6f7b3521cd71f832bc14be6f\n249d543a30a88020be7995d5b4bc81b7\nd214cdddcfaeb0cbcf8dc8d39d90900d\na346005de2c522e9c9078664355a9ff2\n8a779f2127dee13b28db2e450917f8b5\nb33a673da4745b08b5ee11a06ae8ae58\n90e6c6083fcd47833e45dd2f173cbf9b\n70dcc0d460cacce0e63ec060b551ac57\n2340319ec4d93ae8c1df6b0203ecb359\n5810aaf1a0818553b05dfc874f00d5f3\nf72222b43e40e7e84cd259bd328e92a\nfdd7433470c31c8b5332ddd5fe4d4fe0\nad8623ad47d72317eda0f8d4b3ce03d\nfad2e708e354b0315e585de41f56d4fd\nb04e4650e547e0509803291b0f4bf532\nec3e0694850f1a923b7cda02ebfc1f62\n1522b8c3c28a9d57ace571be2585c620\n51f002bbc33e4b34aff407511d7dfc96\n6556015faea5ba45e0f0f0669675011\ncfb7ca78b0b65c4f2d615e80824301ca\n133c9fa2562498d28ae10bd53dffee76\n1b89cb2463ccaf15e1e2fc42e32162ff\n6f4a328af926532b642f9e27aaf0c47a\n4e5b83181a13e0661868b1150be0eef4\nb5d1a551525c6b7876ed13a8bcf33762\n6bbd0b0e09dd43017ddd35a83509257f\ne3206eef4da407e7c08fee43ebed0bfa\n9798a8b84987bd661851363a5850bdc\nfdf4b58a27a3ac8ead83f267e8f0b536\n65f8bb163e351bfa9399f7cdb64577ad\n1c4ea31563b54bc8b77192b0405b4a6d\n863fd298e6ea46a5614edc3c9b2489f4\n9efd4dac9e4b1698876eb99526752ffb\n4f513b39cfce2d269eddf484109e2999\ne2f4c0d1c8b6e26549e3c7e37819c26e\n338e37f313d48118789eecd157794d2a\n684d665be29eaa49a1e649e7e3e5f054\n8fdc3288bd73ef58a127697b1776e4b1\nadbbaa33c52c3b0d5c0be177939e290\n2a020ea3cd5e4fba37363131ac7e8139\n99a27d7e2553c629b0828c4cf6b95ee9\n44571992d18375483506f52bbfa5b648\n7a9ad733a68b93bbb1bb46d2556ba67d\n5b6044746e12fb6733b68f5ec4e8a690\n5cee5c3afee327cf360d3819686769c9\n160271b40b1d6822c40386bdd72f9a0\nfddb69f72a853e2f8ff5243f1df2529\ne36cda06eed31d11d816402a0e81d922\ndffd4f1a6a4d3647568f91064f82e7ec\n498773c5047c01b35fa1a6e8897313f4\n9b90b9cbd9577d842b72b4a851b36ab9\n67e41dd24b6902da49f471d054f6b528\n564d88a1c49ba742473f10e6caaeca56\n845426b7dd1b0e55a9142e7277ee08f1\n9bb4fa1026322f0f3e39f2e17005efc\n9fe579f5bc52735cdef1530f49dfe050\n3fd6e59f9c95a24d88b3e1662276b5b\naeb094e328468631d3cf225db57b7a46\nbffc229892a3d301c8bb4876165f947c\n8eeb2bec8499fc6ba60ce6f0a0028c13\n4b491c434e9c230c9e450dd115401ef\n296f0b6a15012e33d87f29c9afcc633e\n254f1c0cf13108c46c63b8b48495261a\n66a90b7b92ff2549f2635cfccf45023\n18642f35971d1bec86c51c3aa93bf029\n573c69987f0508d210572d5e96d039f0\nfda1e57da58ec9bee88464b900e0eced\n9c4ae8501ef74e82cffae3eeba6126e6\n5c9d5cedcb75cd2bad7daee13cc76c38\n8d53d8f4cacbff77853339423b00f029\n485f63613911c93fd316c98a55307c24\naec79b6f0379b1749fb6fb8ca3454a08\n2a492069b6009dec37363131ac7e8139\n8b2e1eabf620d76840633dde0a3c28c8\na53eb39c51a7e0a2dcb7d7c06abe0da3\n4f245403e6366d48fb3294f1e40c8a29\n6f3384e934f3588ccc37416b6163cbbd\n2f4d7a1873384f5a7301f2b895d332ac\na5fa8ae8f743d5498052128bafa4f7d8\na0f1e4ef99b57121a9142e7277ee08f1\n5bc8a432a5911a4c14621506c22882a0\n7b7847ccb4f15fa9b1bb46d2556ba67d\ncce41dda51ef0335a413908c0e169330\naba35304010a7ca093f1a6337ed3a54c\n9b02ecc129d89000f4841afd366e16cb\nda57d296d06af50d6fbde5631e3e226\ndc422a7fdde68d8bbfc744c1348ee017\n3b726a3562a1bc6e9d2b0f4ee2fe01a0\n36b38fd918d01c6b6c63b8b48495261a\n81a7b820899ccbf15ddefb7321dceac0\n92be906c57e20430fd87075a257732c6\ne9c603efb5aea8087610cb1c03c9c3ea\ncb497aa6439c5a058c8c82196ef75032\nc2eb256cde2dbb93c17ff170974eac43\n39c41184f49edccbc381729395a38d7b\ne93d2ab44861bbd32a4947824596dce3\n724ca82e43f5e4816811fda0ba2e1809\nf8ec76f3861f7c68b76982957f05710f\ned397dd3d2ca4c8a69852296a4bb593c\nd830527d616f47c811b9a587ace886f7\n90a71287364b3d1bccb9d5278825aef9\n87e1eda2a99c713d4fbe64e9d0fe42b6\nf4f66aef4ae1ca243146aa85e47ab8e1\n47c35e001ddd44bf1f2cd7f4ede43a74\nd04816fe3c531b66f647317afa6ffdd4\n1f4e0613a3ec7b5a975be43df8325f3d\n54196fe702cd0f5ba27ad5a09bb4c2bf\n19df5aa5324f265d4de203ef6842ee61\nfd850819ad05f139bd4f838682e34d2a\n75d41ee15fc8fa4cca581939cd410ca\nc78d6f5c908e2ff1b05dfc874f00d5f3\n91c1e885c5cb2ace3c01fd24534f394d\n5fa144c3a8cb5234379339ae6512a12\nfb8206abb1fde4c08abe79d18310fd73\nf582d2315b6182ec6f6b59ea659e8324\n209213f07114a06a2b249fd16295bbfb\n24f5011d64dff5cf1c0f52f4ec8b820b\nc0f619a710e4cccd15c8f969616647e5\ncab0b302a23381adcdcba7385a96c2c8\n8b25d01f3fd3d5a373e9b20a29bc1d50\nbdd8d8f6e6536c0d4d16452ef1302b59\n804e29433fda9657746ffcbc44510229\n291e48a99be418846c03c11657c96c60\nda4003977c998e81f74f6fb7142d37cb\n6edd37977522996a9b8e79aa9da22fd7\n991b0f19022a0233bb97258c2be2acca\n4bef06fbd04377d4d6e2030b844bcb2\n5da7daeff2b24f23206066da291e8981\n51f269a4ff48c2214de203ef6842ee61\n8410626d841dca3218b14db3b83de9ff\nc19f98f149ee5da8b1bb46d2556ba67d\n12b5302a8aa697a138b0c448fc291f4a\n9b91a683da8c4781f990230c33049243\n3c8dc4a3621674aabb29ab7e4f889a04\n7a188a5ed26af4b360a251068e7dcf6d\naa6a256cce6f8248b1bb46d2556ba67d\n40752c807c2be827c924fc2f78f9cea0\n4e6264af2f2c3e135a15c264bb25007a\nac5dad64a080899bba2dc6b0ec935a93\n7f8d800b3fce12a7874f0e42f84eb4f5\n482ad82769d6b5b11274a3ddd0ec9301\nb8905c60432aadddb4a8f569bbe9f7c5\n320b3f040f6d5147ab87075c54b494cb\nff404dc428ac3cb7102f71c17954fcf0\n6f5df8d6d0d77039be286ae2fb79c470\n3e233d02a6943be81c99ec30e7a67a36\n143df6dce1d90696874f0e42f84eb4f5\nc6bc9330b0a75d83cc73edf5d735208\nc00a8f1dc19a0e5341213ed93def741e\n5a3924c1fb78bb908dea00b146cfa3de\n8b3cf3842a88136c67c16c85d5f8c7d7\n2ab688c7eaa21bbd77e7acf84a1c4b6\nfe7b7ad843678dfcd8c527d4042f291\n812c1a3dacdce93ab4b5d7d0cd89b504\n20286f6d7aa7a853b48c6de5e38e3312\n1ce3bf4b1ee8c4b41542b16dedc43949\n1442afdc0aade741c46814fb26e284d4\n6367d10f3cb043e1cdcba7385a96c2c8\nd19c003cf7dbf111543941eaaf04581f\n7cf500d15ff839e92f35bf9c34b31609\nc3119babc97b4cb374f75d9e92dd466\neb891509436863da874f0e42f84eb4f5\n294283d06ca9a9abfe755e3418b63110\n68e60ab321e4198ab437d385637c4e1c\nd7fe3d95cde66115874f0e42f84eb4f5\neab41e8a5c5fbdff151300a2afaaffe0\ne0fc9177fe0aab2fb50d0c6a0c254040\nb31884906c966b4fa54923b7d85aee7d\n8dd5ad35a45f72a64bad9b80eddb4cd1\n85ca7456e200e8cb874f0e42f84eb4f5\n6b87ed6710a0fc8d8aae7c4db7244339\n6e3db071ed95552b3faeafe37c2ce4f6\n8b335b0be37debefd85e5191b992b560\n996c90952cfff5b24baa0720a34ff704\n769a3afbadaa92648bfbe54b5d01550\ne5c3835b9f3ae3634a27b0b4657ac8b5\n99ccd811a0e3052634e1b4a71050e6de\nb7f288e9187a72ea5d3426ee101e9f8e\n1b00e4c41b4195807e1c97634acf0214\n1e127a7ca9bfcba86df38a7dd1b448e6\n5c54100c798dd681bfeb646a8eadb57\na848decbfe26833c4a27b0b4657ac8b5\n973b398bbcc97c3fea9bd4954e1c8c49\n194ea4b2297cc2ce90c91984b829ab51\n2e447f96f152a33a7428866500a95dd8\n35e1639eac2c9b96cfea3d4fc15719ea\n6436ddeaa11efffdcdd34f38f87d26cf\nc6ef6b859205ab53609e2d916fa0da27\n83d2a7a4cd616008e19ccaf2c9aa161d\na58fb21bfa4e2f451ddea1d5aef06a06\n8508ec8efeedf4a41ff8f5b5b24b7b46\n1fe84ad7b78667e47428866500a95dd8\ne177d4186bff96ea6dae8586082d789\na89cda9712b67a97d1e97c10e2464c2d\nc6e255195b9a8691ea9bd4954e1c8c49\n18761559208a970188d5590328ce0ddf\na53312711cd84c9fcfea3d4fc15719ea\nad251b2cd68290a41c9545c3c7193d55\nd4882179bb3a1868abc6b16fdb345d24\n3625522559a753b78dd2cbb9124e6d20\n24ab70fe2e704df45b76db9a8a523dba\n8b57b62c984575334f89761f054e2019\n860e632b27b9d2469f1deb04fb8ae481\n8666e4e88dc55c5795ea46728bcdc15d\n80d381a6760185d8c45977b13fbe7645\n94e1c24d7f205a39779adafea0303e70\nb1a080228ad8a7c6eb2c303a0e0d287b\n4d9a23b8b75a412c82fc4dc31c839439\nf2b504b2e368bee6d3c2fcae9650358c\n3a68e8dc897fba988332d0d58794c3c4\nc74dbde6656efb4eb4248d66f92b2feb\nbec39afc5bad2dc45ef003dbb9fb9184\ne12095f9d33eeeb6711722c32e47b894\n4719acf1c3e56fb489d39b85991ba25a\n81170170d0cf36eaa5c5aafe837d3f8f\n5c6c725a75645a305de2c7f7608a946f\n8497e02fa1662113776d8bc79b9caa2c\nd95c49195e51912056f316a86bec8b19\ndc3336883fae5239d76134f29a265550\na2f46716962afe72b106d5ef46e12c19\nfa63720ea3f8bd379a6e43b878d5b335\n6974280e14023bd6bf984c00fef39915\nc554a1d4895b67b457f5c96598c7eb45\n71fbcc8e65022567b031dd7b49fa6191\n91fd8bfce87a0e7d847c4e55bb965ab0\n176d386905bf227da56b564158d089de\na9737969ac039c9323dfd33205b06c1a\nd6ad84cfb652f5dd27ac692756be9e24\n379fa7ba7c753376619ef21bc094a137\n3d4b80858a5ae3d694daa4565dd30535\nd608bdcd8a87f3af7d2dc2b4ad06dc44\nda15ecf40742e9e46d813b270092aa6d\n5573567872450417d61794222ef2800f\nc52ab3a375bec0baaff407511d7dfc96\na3459aeef2676d7653b838b6058a8d95\n7eefcf457d32b9b03146aa85e47ab8e1\ne6fa4d02d2df5a9b1bb46d2556ba67d\n55dce6844c2bb0145368bed34e5564d5\n66fcc3b9b53e0564d619719db5285416\nf5fc09f67a5fdb0142d0e83abdfab1fd\n69c4fbba77ee7891a3c3bb12365964c6\n2b1d09f8412f647899c0080e6a5589fa\neaaeb5f4195eb55c1cec93449f0f44dc\n47133569866031669268271e4d570275\na83a9d54e0680aca640afc71da6e41a1\nb6eefb8fe960df93d4dd83fc93961e73\nc521d7e4482fc7f7a716de2121565fe\n203d75b8112369d66a4afad911312b2b\nad0879d8dc9312b5c6cb0dfa2f14f9d4\n605b56aa6a4c9ef49f1deb04fb8ae481\n47a07536cc3ff3219c42421cfc900873\nb3baa99a603abe4415aeee24c2916cad\n92e3343250e181e1428cf87eb5ebe5e6\n35e014dccdd4fed12c791a7edd1fdff6\n5295994daf6e427dbec3353c29751fdf\n3807ccfaad3716ec59d8a2cd36b3278\ncdaff2fe98efb90058a8952c93ff9829\n29af666e04825f66576378847ca0b69\n377497ba926616fbfd7a80a80a3ebd45\n73343fd92c286e80c570a3d482a3f588\nc00cee4431f3c2db89d39b85991ba25a\n3ff7e02233affcc350eb615eb69452b\ne708ec80c30086c36dd8881532b5a3d9\n8b92073eb06f0365e18960ef54b079a3\ne42655032562701e746ffcbc44510229\n217966c23fe43ab83bde759c61eecdb6\n707f009ba421780c2af11d59b11e0199\nc46b2f2069ce543c4bbcee86e282d431\ndbe05209a14fca8fdf72e713dd4f492a\na31a0ca1247e23ceb1bb46d2556ba67d\n7c23b6218a5041f36a2173cf491934bd\nf45d51939d8ee9122698fe11741f2ba4\n94aeb294adb9be58b05dfc874f00d5f3\n2a86437a50f1b51727ac692756be9e24\n83c90f7b104816ecc748af2814b558c4\nefa85ab5aa4704d299429033f40f0f8b\n26bdd8852a95cd2d4e4ba49b2943b913\nfe09fbe9e43aa889a08db804545b684\nd7c58ed725b2449dc570a3d482a3f588\n9bdb0cf464f5c65956b5365bdce185d\n38b55fc61393e40653d45bb9e1743653\n563d66d82ad3f27e324be6ae66f7fdf\nc3bbda10fd915342c24de8a3b5a07552\n7dbcab223200092feb2c303a0e0d287b\n968848dda6faa772a9c79146773bd1b6\n76dc1a35fee28991a5103c3a2f33a5e9\nec8d021a7d3816f2e46fe97e5f3e2c98\n7703ba29545cc381acf9e4b0d73d2434\nee0e9bd4c375f1e76c07231ab3c62b82\ncc7369fee843cbfc8d1322963ff40d1e\n70f91186bb61208c56988d12ecb12e06\n806834c2b3c0bce7989a4a13be837150\n94e216dc57731577c14e2939682bc455\n6d96d3f9f621292b7eabc15108a128c0\nd7b1c89328c8f0099c42421cfc900873\n215e4b59683247378a3e8bd3a4e48433\n696136ed6723971649f471d054f6b528\nfe24ea1bc3383631370d3273b84cb8bf\n5fd55e301007884c742bc8027e4951ae\n9408002c21ae222b27ac692756be9e24\n2f682d31b26398cc2218383c174cbd7c\ncd1d407bf8637a019a6249baee317a57\n9b5077b81457cfc2986bcbcf53ae184f\n94a0345790869eace074faa875b76f82\nafcafaf311af722a5446fdbcaa866773\n1c89943a24952d1737f4612124cea14f\n884454f0d5a376c295ea46728bcdc15d\naac813074775281a4163d08524f89006\nc2d6e8710215b74c82689dfa8a7d7e7f\n6e0f329ced87d7a3c9cfe13d43d30dc\nd74ea3567f8861dc182929c56117755a\nb91c482da95cf3055f41c9ba4474959f\n5c116a0ca9477e44318f6eb5e296bb88\nde55eb89c357cd5baff407511d7dfc96\n7b00ce37add93f06ffbdd9e9972332a7\n52492bb52701aa4eac05cacef62577ec\ned94229d6bb18b783f351db9d8c0e76\n3b662a6ae2eab330d7ea446be069b8cf\n3750fdd9ef7f941d2173755309fd0db7\n51b25c88fd90ae2b57c58fd0f9b1d74\ncc3957e0605cd684bb48c7922d71f3d0\n5a7635031cd518daefa33903c8f77ab8\n9c50b10fb651e57fdd93d77eaf89012\n70d4ca23f31a5c4373c03aee5e8475d4\nd00fe7ce177483ed5cb65f793213d431\n68925483ebc30618698ab31ac670e62f\n80d9d9fc9c6138c4800a0120f3e757a2\n6fbf3621aa1d3a8e49f0e3dd7767881\n388c5175593b057a66bc841ba9cad258\n3bcfc7f00e9fb213846571d66928670\n77331918e10b8eacd07153997ca82b26\na8f225774d1bc8d0b7002bddf0942f8e\n31f7c298ea24bb99847c4e55bb965ab0\n6a65cd6bd6897cbb42df9eeba89a416c\n4ce56405f7f67d3c38cd6a6c9620e96d\n11e04ef8f037194919869180453a248\n1e8c9dd30d54392856d301bf1319ad4\n8bc922537410e1ce847c4e55bb965ab0\ndded8a613927539cd72535fe84d882f0\nb78f1dd3083c35a1a716de2121565fe\n79a13d8bffa87b8ba8ae9698506bed5\n74d3bec29981aaa0efbed58ec3ee6f0a\n6c1458eec06ad0c147a67ad1fb1cf329\n29a131678dfba5339a6e43b878d5b335\nd5b2fe7ceeed1ff59268271e4d570275\nae93355992a29c428064e4301e947b0d\nf791188138166b4d9db44e8b39ef337\n7c4b6e4ef996f109a2b4e6eee41ad14a\n1c6c51d2d315d576852d4401c7cd1fee\n7380c6bedbd13059eb2c303a0e0d287b\n5d0d84924e96eee6b6162efbd23a9d5f\nfe8f54e34ccfa35f3ceaa5264772e8b6\nbf0084fbcc74d5632754043d4b10740c\n8480865aa92d13dd46687b3834d255fa\ncab7f319f0b3cf8e57e59e0ad2d11e74\nf5dcf3213002301ee4326375f53c1686\n5ae9838a4646c0551780f6e6561db9c8\n294644520ccc2ce27795dd28016933fc\nbaeb1f25ccc59698cca5d826f4b024b3\n1b2a8980c17fdd97c897e89b561760b1\n92fec5e70e9c972130327a4f3a474384\n46421ef3a412660b428cf87eb5ebe5e6\n99d12cf62a1b5cc3f4352ea917328a5b\na08180869abc48b75b0cd10627918af8\n13a9352a47bab8c98cfe472915a175bb\nda738558b1230b8288d5590328ce0ddf\n404061915066692d89e410fd8930ae43\n799d446d33e604f990f7927ebadab5fc\n12159b68a31a4a7eacb3e49e16caebeb\n19a72473173bf26ff7bc9a344bb7bae5\n476bc79bd6fec6b088f5c2d4f2395a95\nabbef6c2f909b9719ef9dcee729574d5\n5f7c0e4368784e795dbfbfcedb83d61\n99acfc63ec4f4ad09f97ca916781e800\n7e6aa3337c2e52ff196f35b142096073\n6cae5a0551aca4fdb39afb07adb2a544\nea491bbee7524859cfea3d4fc15719ea\n3679338b5a90bbf5fd1d4880da709562\n3583b3e2b8dab3f29d8ea13dd61813ef\n792427f5da01907ddf48ca5a34c88e7c\n461517433312704299986cc2d8a2c28b\n340a4a4420b4d9c0406483a4cd65b281\nd23e71adcc315d56c748af2814b558c4\n91a124454518abb7f2ad837508eb2db7\n61c17240229bf84581d9d9b1473043a2\n667c662b55519e4650cff0d5bea1684\n4c1c5200b239b15db700877f4d4ef8cc\nf61eeef9235a776073fab9f1733a68f6\n94ddf20a9a6e035e85f7a3de54751f1b\n45642e87b3904a1395f5b96bf7fdcaf5\nf36e77f80e2944ae73fb6350806be955\n810cdbec3687a16e122e1a230357df67\naa741f0f7784b791e99164b294d0c671\n5eb2d085267142f26192896700aa3bd4\n34b77143d6313e3f717ad2ef4c4af2e5\n201fdafa7287d2fe8a55122197709269\ne453412c14d47ef176dfbd72ad52dca6\na64d2249cbe63b5f9cbca1f73829701e\n8c611205ba2d189068b6f3ae18faf6b7\n988e1d7106b705d692336765b86c93d9\n553a28a8cadedc9344046d4d2ed11860\n71aedddffbb7b1befb4a964cf6619fc2\n47adcb0683a3de6cd202a4790115f0c\n110acfe04edbd526969f70ba15f2ef4f\n65f78142a6c33a89ea7dce1646d86149\n9746bffb188fa8d776dfbd72ad52dca6\ne738f72e4c461e79cd202a4790115f0c\n7fa94092d77b9f7877c1e07fcf5968a5\n8595fde74bf250a5d9fd1bb6b75d9865\n80e8c7703883a40c9e4614310319ea50\nf39ff9453d6247fd5ad805579cc24068\na77c64b41bcc66bbca4b459ebb5d9bcb\na2d4f32a82902118aaac2db0a60f403c\nc2b394de8407988bb538a15c6737824e\n3b8c16861667747fcfea3d4fc15719ea\n4af786ed4226705279863338881ed398\n6834c4f307753dd1427c8de062c1497a\n29f385987ef4594ff6b98f041a0ed52\n3948782a95f084b92336765b86c93d9\nd3f6fc016f72c08f1346991b5a9f4d21\nab9359cafda4fd98a726cf6fcecd0742\nf5217865935d63c61f2cd7f4ede43a74\nc746175e0993abc19a6e43b878d5b335\ne70fa867da6276efa65562f270f71c81\nd152611e5b14420460e26fdb6baad14d\n90c5c6b05a71381cd97a7aaf09adfff5\n320683da0d8bd1f394a6427195fa0bd9\n9798a8da8fb83d63847c4e55bb965ab0\n92e4ae4dfff684832dbef90d406185fa\neddb01638a0c8be89c9cb44b983e47a\n44d1e432239591887b2cd6c1f3acedb0\nebb7451625233d772afc5c10dbf83b25\n943567584893fd5218591932caa46ff6\nd841f12d8e22039f56f77b6bc6731cda\n4f16bb70a2c3ca48104d2711f226a055\nc4c9a32c9b1c3e515586434189043e91\n408cdd476e8bb202852ae095a967f0ca\n4e6313bce5ee3698909d4348e3fee2dd\n6a7ce5d7027678c299429033f40f0f8b\n9902e521bbd9ff3348d84ab7c5cd4c19\n3176313945e3739e10508e1f7e97aa01\n3fb4fa12a4718cdb2001fe4ad7074729\nc4830136a2451f8f45aff212946058fc\n176cea94ab59ce9949f0e3dd7767881\n6cf0d9cb4e2d607856f77b6bc6731cda\n8e06600c02764ee98aa3ca9bfd776ccf\n1e047e25506b4885eb5715ea2e14242a\nc74fe97df26a078facae7037c88ca7f5\n567e385bc5c40247e414f982f9c422f7\n22078503d5625b985dd2c581ea62184\n358bac5415f0773941d6cd38228b9631\nab01205090242c7277945fcb3f0ff3f2\n8790881fbc0331a87cef2df31bcf9d93\ndc27c81f14e3a89c84306f3bf0a1f2d7\n61142394175b9e2b6a42e03bb7759e0c\n37ea55e2d023f9ae9588e71e21de9f30\n715699f07f8e59a1620e7892e762134\nf7b13135feabfbbd91347c63d1dae43c\nb1b5e16d0c96f34c46b7a006accd201\n762afb11bf41fc61642f9e27aaf0c47a\n5a8c1f3f0ff3e5a87bb222726cf5a84c\n548c6234fc7c787bfeea5c85a86089b5\nfa3ed7b176b0794d5b4b8b1a2a708ac6\n9b300840d96e46f08c173f7caf7ef0ff\n6ab4ddc238851014802f537afffb178\n5a6439bde2204588fc3f5f3afbd6c5df\nae9ab937f6c1998fcc34b900bb2492e\ne964c2fe232f6c3e3ece64552d44d319\nead18d83024fab8deb2c303a0e0d287b\n79284d5d39e4738394749f185cc702f2\nec51dbe499e88615a267c8b6fcca89d9\n511befaedb0123cd96600832daa83ed7\n7dc72dc46c46410168ac0d25269a2c67\n25c736b7ca26bcb7bfccc00eb137e6ec\n70af463b4a51f0819330265a9fff38de\ne51dc5bb6b97700747d2f4d1390fa93e\n6a43eb690d0157bddeadc9ca0263db5a\n19640fee71ffa82816581cd5751ca97f\ncb7bc049274173df73a75ef44d66eede\nff2b8253ca3190d5d65fb76f5f0a1db7\n849c8b9c0acc91b6ed4404549c4013f5\n33a9a04e7d8ab8ce861ba49603151327\naf09fac5d37072a3b830672ec83e0072\naa0be5a337baedac950c27aa880e8898\n325d1e9be246e1644d44f5db04bf14b8\n9d737c1e2872b322d2ff3af4b7716b6\n75991571412e7ce74059b9174ed51649\n7c4ed531d1ecacb156258bc213b2f9c6\nde010f7468ceefc6fcfb3ae2df2f7efd\nc189e1768a4f291d4de203ef6842ee61\nc6e36ffba5630fcd7301f2b895d332ac\n99f00898c6b373d5eb2c303a0e0d287b\neea06d3bf1f7ce6cb538a15c6737824e\n2bf9436a79954087bc585c195913193c\n48cfd8b4bc4919e6cbc6ff5546f4ec42\n5ecf8b2c217b840fef5e991e1c32e94a\n1d8adfa96dca83849143982c80da1e75\n9c3810b8bc98c59426fa791c6af15500\n3d396cf4279378456d165da625f3894c\nc172ec6226c1374c43a8324aee7340e\ncfd92436ff0d0779b011f864ecc25526\n341905f73563a75717e4d86bbbb01f9f\n491a1618a4891fc73d1328bfe2caad0a\nba3eaddcf1a2e829fb64f9487ce62dd2\n598f1f474f1cedcf33827bf0303796ff\n55da76d97620d111e3ecd2d9271dad4c\neca25540e280ac1c2d1e53cffa2132f6\n2fe634902b6ba945b4e4ece897f04daa\nd1a5a246ffc956d68c841014ca8dc002\nb5a1facfd0a023251e6afa6efa6add34\ncff1998a2a2f1b5985f7a3de54751f1b\n850d6a53ae03a9aab2640ff8dd6f4f82\nb1991078d16797eb221fc8bb1161b418\neadf347da5aa8877da97052ff1f36504\nafe3c44c5c05c22649d2623ea24fca00\n78c2790d999b0f9c1403af6fa4ab17f0\n65e21949247e36a541db137505613210\n7d997dbaf47acf92866219ff4a62ebc4\n135a15f938c824ff90e2484c52623a2\n969163f17ce6467d9378da473ee38a8d\n577acbe57ebdcbbdeeb8eb76c515e836\naf964792bea4edac541ae04c251c7da\n74470719a1b44c9a45aff212946058fc\n705df680888e17ed8841beb2e0280e42\n73e6d10ad309d831ddb86907b4b5f05d\n953adc8c58842c1281d9d9b1473043a2\n849f7c682fe9160d8c1a083ca347f005\n1117e714368f61ee1fba2cab1ada6bf6\n6cc258399daf767ae1942965937d3cef\nb9dde09099e081e65f76b0776a50c136\ne9cb5c7799f291ce51b48b48046ec39f\n9e49192ba54ab0fc92c108c58096cae\n1e0c84d82fd52f8c394eb4a27c704b88\n5e0e9215f91c163d7c513e87d3f6c6c\n99ecd71c5103416e698137c717c4ad11\nb3090ee38204289cb90142192ec795d\n8b5ccc3b1eba2c9bdf921d807a1adbf\nd262a9cfdeca256e228ca1071b304db\ne951df8d8d2f6ebc96f165bae5f0d61a\n7ba457477629beb8888d5ca4abf8aff\n3efda6b0c4e70f7decdcd70d755bfc70\ne19c3bb778bc8e9ed372f295778d1591\nd8b92646ee0cad39866219ff4a62ebc4\nad00fa76c831858ebb4a6ccf078584ed\n7d2194fb89c42da8ae5c852356538a5e\n876a4bea4fc35db067fd6c1ab7f8324\n313aaf9d79105fea82fd5ed7e39258c7\n5b1ef304e7a8cebde255aabfeb1b2b82\nc386c703e0f06a9b3a980283f1a7085f\neb1b91b2e6458a813f6d8df212adba77\nf1800fb3a9873af1e64f09105f9c8a56\n6f61d84f9373f7c5c05557706bb20c4\nb1c2fda8665fa9b19a6e43b878d5b335\n77e304ed79aded1e454ff46d89fe2a0a\ne2ee62e09af461498d84ac376021f1\n7aeadfeb93825b387b3c166137b0d772\nbb79e21e85306ba19e51f6d13f6d609a\n90bb60a421727973e3852f9948e4ef35\n6ec6d6a7124542c1973b07394b864922\nbb248dedd82b2f28deed0e4a55ad5dd6\n7d7fe630419cb3e3ff217e1345ac0f8\n85dbbed13875a3a2b90142192ec795d\nd8d0fcfc22f1b587308717e0a8b6a9a\n873b7ab23a5c85e365a308491a8f2afe\n3970dff155f0a8731aa129fffe673b3e\ncf254a334ba1af0aaf96425967f2d458\nc48e3ab1cc01521cdfaef96860d73193\n58f13d9c96d702c72d5c18abc132bda5\nfa8af8f2bedb0d461f29de30ec1bf6a3\n7488e965278a8b8524e54dbd7430a489\na9eda0d90297844cf92c4a072103d4f3\n3c3161464bb86b2d3ece64552d44d319\n1f2e662c92843dc9c083d5272d526845\nce5db5f4082b56b2eb2c303a0e0d287b\n355f5aa01c79fe1458a8952c93ff9829\ncdd493581ed137c5a6dae8586082d789\n410b12d445e5deb49588e71e21de9f30\n234541314abebbd02783b84b5d2d6e46\n925c05dbefada808cfe472915a175bb\ndf307c1941ca4bbd8f6810e1a2b6aa04\n2570f4db767fa046760fb52676c518d9\nd2f2ccde17f68aa6f0a2921fde94663d\nbdf142a3fdc97a23af018ffb2ed4ff85\nf2192f3c34a877f1d01eaac447e2e9b\naee93c0ff8dcf746ece2f98c4b805551\n731b8fb370639bec2c8b4a1ac32beb2d\nad8c4e406743c29a5b84e0ded5ffcc87\ncc3ebcb96229bd325f8dd1b77a5d87c4\nc9b7da24378152d082e68e57491bae0e\n5e8ce498a93fb7eae1a9c234926c21e2\n7f05275eddecedd06f3d18c7cf5f8b6\nae1a4397815849a682b5804533e545b1\n83ca38043fa57a7de8e8428fe69dbbc6\n9e4f7b6ed7936401af2bbb4162e3123\ne5bb455414be46bbe62f291403035429\nbea93ebc1fa965ab34292139f0435d74\n9951a6732eb8438a79662f01dd94fba1\n3a4c31888d291859f8e1db0ba8b72d09\nfa18c9283443b67388fb22c0c1b2b173\n1b3a8fa303445f3e4ff4a2772e8deea\nece02b7fb2257df139bf01a73033939f\n47ab7cf5568066fc86f968b3508ebacf\n591d1b833b9ebfe798b8c800ae001b66\n4ec2f4afebc5933638d037116a032a18\n4e8a28d0659e430845aff212946058fc\nfbc2e96b16209642fc86577bf738024a\n7a1754186937d247ad78ed9a26ab1091\ne49935adf322de2f77e672c4996ec4a3\n5261e8e52d1581d2398589a18564a81\n1f7f1d7c3882f638fb64f9487ce62dd2\n9e4cf06ced9331d3bed4193378c6c5c8\nc2d6eb0899e5d10dff531859cd52e4b5\n55853d0f4d5ba19745aff212946058fc\nee09bd0664e0a02292b9fcc49a614e2b\ncd65ea1bb0e091d5a1ea2dd0a4cf317e\n6c2fffad4d28822c1d57de40f2cd04f6\n78e347c044ac743de2d4c157e5bf1dde\n840d9078c31c188feae47c2aade5a70b\n20e8718d1c6d5a665a525c461820c6b3\n112743160fae5bd7ad83f267e8f0b536\naec5ec913aa2084b543941eaaf04581f\n5bd0346e72866c8256f77b6bc6731cda\n4c433697f371db56459e601c4b110252\nd35a759e08855e24dfe2d17b28f48786\n4ee0ed0c56540273a6dae8586082d789\nbfd8b473e1a8fd650eb615eb69452b\nfef52f113f59137dc541ae04c251c7da\n227db3047b2ab275b3492776d9bac18\nd8d49c7e002656aab572a59093f8c0bc\n80930e10f1f3ab9358401a911725e987\n75198f9e1c5a075c1e6afa6efa6add34\n36fba9c2f4c256dc4387c5ea62cbbe8b\n2f0acfd47622a8fa419fe456f622e6b2\n22bfa8eb9cdce735d90cecb09ba6f1b8\n4a523f749fd08ffa698137c717c4ad11\ncea154f7fb5351bc26da67afecb7dc87\n2d189012a5b5a64aeb5178df7a9bd7f4\n7773c432613c96596cdd81a51107bb1c\n70e4afbe0fa15ef3bc1624bd222f607e\n3899f8b55ec9f1db8a1ec28cb7d97871\nc8f5e3891a7b0d1188d5590328ce0ddf\ne64611b8f590d12d2ae6c39a82bec2c9\n8500272b43352ae6f844b7e844d01ddc\ncb89a617351ec4c4eb2c303a0e0d287b\n5adf37321156a7bcbfe1cbc47170312\n325c2da58c641c12e3bdba9430565083\nf26d39cd431135cbc92e1912af872cc\n9115745cde6f30c67f141c9abbacbdb8\n65c55828d88fd02da08632bc2f6881eb\n43f7e9f8ad44e8236557d610dab4f1b2\ndcaf4238da8ef379106f24d0bacaba69\nd9e8f45b4cd81f0fd1c387e16c0a41b0\n3658be4cae1c98b84a51f4b900f5eb50\n7677121309eded5fbbd09450267d17cc\n4944328c0ea895c53f464857aba8c0eb\nf2ad53e569f8ea255b9ed5fa79e9ec30\n8e4fbd72746ed71c20d966555ebf57d2\ndb01f2f8cff7b7e1c517f0fe59ec7ee\nc84cc7d62a9112f7b9d24c378f086d93\n147fd27a40793d7e9bbe4f1047e9e5fd\ne27fc8b68996d205f650f4803ec7962d\nd7fc7ed59558b7b3f3e39f2e17005efc\n4690184ef7ea805dfdd29529d1a15514\n5e9890e2f4cab96dbc6cd96a5e6546c\ncdb70178e2562e7a80ac63732535bbcc\n2e4aeae716401155bf9913347b9df76\nb2b616535ffca936c9189a1f098bd081\n50848665c2b2d6f491347c63d1dae43c\n7e35bae76c10fd7968cdca3005c2cffc\nd3ba52601a902f407f436bc8bb8973a3\n4bf2dba91007f0285ce1e6c1c914b7a9\nc600a1ae674cb65c335aeab2c20177db\n30f5a0395aa8ce14d152039c9a3ad601\nd3de6c76e6d96f7fc5fc3eafa9cdfb3f\n98cbe2b3e62879058e3175d49fbb0f30\n268110d849a3aafdec2f14500e179e92\n6b72a64f1a6a745ec99bbfcf5650bf52\n750f5d76abca0a05bdb69bbe5cb6055\nd188b20659011142c8067f9682b92f0e\n459decbc3c6bb150ba2abf2ecc57eeda\na6d232b7443609fd20ded1536778b0f\ncc4f56a126353cd81985296f8eaaf6ef\n486e953ff691d414d8190076748f5b20\ne687e0074b0dc5bc470938161c06eb7d\n35857ac61388f9fec2912ef1a1302821\n8ff4c7162259b1d5cf816caaec167fbf\nf5a0bce67dca5ccbe3de75b155d3b403\n933382c8b6cc6e24f0cdce9bd16b6c9a\n48a02e067f83c803473f10e6caaeca56\na2e82524f7920e12d3ded2945a65f23f\nb25e91edf5510306eb2c303a0e0d287b\n3173f703a1e52d7f38d037116a032a18\nbc4ab06257678e8db25f0198c2ecfb0e\n246335e0dfc3a0ea834ac3b5e36b95c\ne0ddb444604f573d48260190ec06324e\nb1ed34ab6779919510f652915f26dbdd\n19b29e973ad05c71e0a1fe48a8d148cb\n81d9e9f072f73e42c71a2f2273897a58\na49537b465965537fe3128d27fad4d2\ncde9d2f6302fda60cd8d9984f3ad2fd7\n2defbf22a2d6c97d48f817470e1b499a\n8f9e62cf323515c4ca380c8375c4cdb6\nb9d541ece25778e12783b84b5d2d6e46\nbc8cfba04c86ab537117d5d39e7f9235\nbc9448e22c2379d487f08fb94cd2785e\nc3648d0cd141035428cf87eb5ebe5e6\n4fbc7c634bd4488798b8c800ae001b66\n583ef94812afcd26e025e00c738da634\nd939109a33e6e2d175517226b23c384c\nd188656d279f4d8b94daa4565dd30535\nf9cb8429f822b8469ae563bb6367e47c\n337381e4b5c11c4f8c9312de4e9cb8a8\nb0238a48839d2b1b64ada2fd6418de4e\n14b8bed0391dfe1dfa808b0b90ff6379\na554a62acf40e578cba07fb2573fff75\n39875815bdfdce2193b1b9ed21f1fb92\n3cbb8096ac9bef3533ffceb8a4acbfe1\n7f81a9c7137c855cd03428b7741c342b\n1e3400a7a099823371feee345701e9eb\nab52de94b627af794c0b957b7129452a\n4abbc9f36affe95dbcbc3fd6f72b94c\nd651a1f3e02593772b23aad8ba1ba03a\n2d702653fd65092cd3ac8c766eb7aca3\n4869abf7743f09b71f29de30ec1bf6a3\n55cf3c1207e421a29e3e34eaf1f39535\n99450835aba6e4c4da2951c4977eb283\n8e1778cdc0bfec3e18693dd92ffa710d\ne72c59779e1a85f05308b39b1b1978d6\n630bc6dc892aa9bc642f9e27aaf0c47a\naf07125f24a17476eb2c303a0e0d287b\n36c8dc4d5bbc44c87ce8c809505eca2f\n5168b7d5df698bb2852d4401c7cd1fee\nd6cf4f71059b98a13d9a3c3392922df1\n395471e88200756d88d5590328ce0ddf\n99b9eb5e1a7dd3b9e4614310319ea50\n63f170670881b2deaf6320700e3cf173\nc48ed09355e7ab34275e12937d8e1776\n59585673328efdf2efa33903c8f77ab8\nbc09ba292bd9e684610faa04834ad4e6\nb10850ed8a61d4dd148bc340784a8c1\n782b29db43c02f7442b917ff8145b491\n2dbe5ea82a45443b71f3cc81eb6c076e\n1a2b1863733c2ca65e26ee427f1e5a4c\nbf8995f756b59102698137c717c4ad11\nee3d521376d89f408c954439655c356e\n82242062558a24bc97a9c690ec97cc81\n4adb08a459076889574b6f4c9eeb8eea\n75947361891546713c3d3b81c7ce4f52\n4b63a567e41b63974de203ef6842ee61\n2467cd9f4ae70875e26aef76db45b56\n44b4972b96604e08a2fe1981a00251e0\n38189a2101b5e6c3da32b7c218678a0d\nb26565bf67d9f61abdda868bb83c524f\n81358250f7b811e73c70f7afafd32393\ncfffdac8ecda7575de208b4547dba0e\n2212a794bfca650384d5ba37e7a649b7\n1f883bf1bf0f6bc7a993db466b6d73d3\ndf575767acf17d7188ca49762bf17cdc\n56e2b7332f9011b28fecb9f40039f353\na06a7f4b82beb87df6fc999231665677\nb9bf493040c8b434f3e39f2e17005efc\nd25531bd6b7b8274ceb0dd441125df3e\nbfa34aeefb04b4c2356c09782a9de7a4\nc0eb62cb64ee1a31f29de30ec1bf6a3\n12e012fc28fc8d784de203ef6842ee61\n1dffc8919a03627ecc015b9f8906f7b4\n4b501c73f3cb02c63438e17bc657daf1\n15d805635f77420ef724cdbbd599557b\n410c336c78ce00ebe2f628ca3c07d462\nf46a84c0b15f8c0492f7f11d4bb65374\nd9e044a3cdd4359110f59460c26e963e\n677fb8c312d9c5642712ffd807ced208\n5c0e6663c131610a2c3770cecdd58208\n2507ed5c9eb161569a704df179502ac7\nd76ad4ffab09bf27f3e39f2e17005efc\n6dd448ee6a2288ff5a680bf43a0499b7\ne8b93c451e4278277220891f188bc420\n5702b12bfba4b9eb9223657c918f0a45\nf1d39ce0d8c25403b4caa017b521f7\n30e45246151fa36a9cccee214bcb0021\n4818277b913b682a3c3bd8d7abbd3fc8\n68f118940e88df383ac122c0078b9b60\nd3043fff20dad5c41dc762869682f4f\ne86aed19f3272118e8340a4561cb4030\n73be7ff2caea7fd47c173089abc6401\nf7f62b9657aecbe77f00b68989ad3ebc\n1f1fb65b78e0f6ac816e21307f82dd39\n87f68a979aece6f71f29de30ec1bf6a3\n11d9bfb57990eed6d674557449cdc5a4\n2b7ce6a0492cb7818c0e3fdb2a94c91d\n47130fa6563a4712af6320700e3cf173\n89ca399e4ab129a60014fe834c82238\nd3eaeb69557892657828ce3c6ecfce8b\n9a9bd517b3d9c60f9e23f6fc87a31098\na668bb9ccffe8cb627ca60ff81c74bf5\n9c19eacc8033da3698a97ddfb532e08c\nf2e303d85466a0fd88d5590328ce0ddf\nebff6d8111c67fbdb52763715f7a6959\ne64bb04b54022e708d7bd537eb907025\n8db75d7703406e81e4f8f268ed99350e\n263eeac4bcfca21285f7a3de54751f1b\n390de3a1bd0191c881d9d9b1473043a2\n7fb484e04409f7323f3cc56bc9bfcde3\n8742b1778f2a6e7deb0cc8797c62d3c8\n5bc0bff4ead8277b421dcde4f714e772\n355a85d0156984c75e559927dcb9417c\nbd4614ae4c709729f8527bdfe6691c9\n6a541c64083d2bb9c5408f4f799fe72\n4dc17782858aab6e3308cf743f153e29\n1b86008df6322c5d438d829603922fbc\n67da87349baf66e3c1ccec171a275967\n8eb481ee0fa4f55bf9d742d7f0246fb0\n4765a72ac8a0eec3993eb1c02818be1e\ne969147de0934040b2533fe4d795f40c\n36123091df7600dab1f22ce939b4db68\n42b1b67e53c9a8ad14de76bc030c9322\na02fb3d1e8e9d34ffdd29529d1a15514\n296c315f8f0c7d5d87c63d8b3018b58\n366c8a02305d2a0f4c9b81664e789bca\n77327d5b8b56083415a0ff0aad35ca87\n88cc060aa20b340611b3e656ab4bd115\n25677ae07e0257955dd2c581ea62184\n2458e4e41633c95642f9e27aaf0c47a\ne3fe6f0e74fa641c2247d987054751d2\n5b542fec3cd96c872e28b2b96a4985ba\na4cf574f52d4e8d4642f9e27aaf0c47a\n2ca06dc9165d4cdf5fbe3e7e4d41e98c\n733105c0a74ab0a2b83ec978f31c7f76\n32dc0308ca44f256ae9e3df35a893c9\nad8b5aaa3eb9f2f69330265a9fff38de\n1c974cf5f4053701876d2c2355e426da\ne74a9275bf24d3e47dd35385411db37c\nda73f51f17f0a8bfb0d00cfc385a039b\nb4a2778eb3f3dc55f877f04737ced5b5\nb820d42d6b9a08a03cf31426f0438400\n973d0293e286c80bf3e39f2e17005efc\n65577c66f22fd84d6eb9a4c3b55eb0c4\n8d7af39621a060ef6483ed11b9134e43\nb6ce7ac71fd3e33617a96ef097e71178\n29a895c9367516c1de08ac29282054f6\nd8ea840a28472e04954c06f15cb2b5c8\n1d389060e50915e223676ae79aaa08f7\nc83910ef0a35953756e0cfd6e5118fc9\n10a57262251f03b28b27d51d442cae1c\n128ab8b74fa037597fe03c0a35dc1886\n4a5ad5b71ce08abc687e743787d2aa6b\nd0d2753d2d3e6d3d2752699ac7aab1\n6d2c856797bc246898f9d8529de7066\n3bb6a5deec68ef77fee64ca302793912\nc1825c8ddf2f263ed6f64c5c0b0cdccc\n8f3d3eb663508afb1143e3955ded9f0a\n44c07d26323910f4fdef75f370a46dd5\nd350936cad33863bf2ad837508eb2db7\n7fbdbc374263bc0e44fe68fe7fbc12cf\n39b7b83a42af6d83ad0582c282e8474\n481e13e24905af01ba1e7c529a2559b5\nfbca0e2a510f2b3594daa4565dd30535\n2c0b850acd7d11dc428659c2b5124968\n58e6243d1aade364186e889431adb691\n269ada03c39d200498a4434c6f79eefc\n8e7fd92d91a9974a2d220e1baafcedd8\n9f34d1dbf06b4d989330265a9fff38de\n5d48d75153eb221b476c772fd813166d\nd0ed110df0d56672b26ad4ebd4ebcb88\n58b6ab987872ed42f36dc23129445ac0\na74f3cc7adbdaad2a072c5ad67cebc91\n23c31b1c25689d2a7ba04de7d6d93ce8\n973a6d80a9dfba962625c670c48fcecd\n3a71bdf6dd3e42bd6d08077e9257af3\nfd52c80ae21d19251e0d0f6bac6856eb\n767cd95abc076d3af9d742d7f0246fb0\n68dc6f43a895e7e143909b9ada90aa22\nd25d9a2bf4820003f3e39f2e17005efc\ne853f137948055b188d5590328ce0ddf\n27f0d2bf42b0e3374ed242fafe836df1\n2005e1613f1a46b5c083d5272d526845\ndf15e931e12c32c38a5d92735846f6c\n5da69ec4bee76b21f3e39f2e17005efc\n89f52a2a136ce55728ba119bc0e1c878\n42a8428a3d909fd64de203ef6842ee61\n950ebca8ad7d94051fba2cab1ada6bf6\n141b2e976df2d4ed4ccd729f8bcb378\n5cf29e4dff6535c394eb4a27c704b88\nd14c92a31d848b1371090852934fa2c1\n33f4d31a559bc07fc1ccec171a275967\n6de5985910b222f8afa96d6d0eac8962\naafc192d33956391b82d6a0b1fbc7c80\ne0190bd315d8109f542c6282a2a9329c\na7fdfc15268ff4d68413778731d6cd28\n340bed24d1dbd33ba9142e7277ee08f1\n7ba19c8354c66edbb74e6fa236ab84b4\n6fbb26f9372ee87648192cebc0015590\n1b4268c4d812e54943bd01645155d3ee\n3e408017d8b03ec5a5e52d43f595c657\n16f53391dba14c9829ebc23acefb248a\ne3a49772e431fa6a4911559f9f073abb\ne02d395707464e692ef42ab47be9662\n49861c22df11a02b910f44c20a5d1839\n29bff2fc529f82d676051c4eae3f0a9\ne28a79fa4880c3c5b0df8f7e348f816a\n9908b25da1e19480b51edc80d299de94\n9df836e5ae285e2a5c5cb89ac1b518ee\n6a7da232456b16e852f03e17d84c12b\n58d8ded0bcfae37985974f8a4d3be0b0\n21256efa0a78f86b4448fadc60fab7a7\ndf0f90c6abbfeaa0255deca950ace5f9\n6c9020061d71b190a4755e7555b1e1a4\n6c00d47d1c8b81fb90142192ec795d\nf65e78e69d1d5eac465721b273720f4c\na88f4ec8440e412c92336765b86c93d9\n5ef0011ffbd75eb6dc1a42a6163b8fdd\na3f6f17c5febd688cb5e9b11b96f53b9\nda675d2149827fe56ba3edb0853a984f\n4d95b6e392c9d95981e1e9063401fa72\n2e19e953c01ddd69d5bb7fc09b61862a\ne16e0925ab21f2d3a45eddb1d745bdff\n99b36b2d2174f061ff8f632f1c753803\n1d6d57f489ef47fca716de2121565fe\n85481518c0938a6eb1bb46d2556ba67d\n8fe646e75e9b99bbb58435942a1b4dac\ncc03dbbf18adc483bcf964ea747b39ec\n57658278fe1fe0571711b4192259c7f2\n5a84b0529edd7101d3ca4877ecd2c01b\nfed3590199534e0f300dee22a3d8ed99\n861048281f4507b45935a8bd0d2fe1f3\n97dd02cb0afa088d485fd5204f716152\n611824dac2873f5b59f280bab375e8b4\n6d0c48b62f610ec0b90142192ec795d\n9848322f786fc6d9eb2c303a0e0d287b\nf7220f2e7b880c2492ab202de6ff04fa\n1a9bc7dd64da10f344ebbc705ad8c07\ndc38553436df0e4bb129901f80d24b7b\n79c98bef5c1870b64c55cd455710ca53\nde0964254f4599e8666f23db664db86\n5456c7546e3f3c3d9c5408f4f799fe72\nb4f254a5c49748a2db2b485c26c9f191\n3e5147f0fcca2ed7c2920de4c5efc2ee\nb3aa94c4aac0534ec34b1b7198ff8321\n9ea697394812ce328b68234f52d97099\nf66bca54b97bf719b1bb46d2556ba67d\n92d7254e73fdab7289c6f1079da7a8d4\n6271c832e8f629b73c83f6e156ad107a\n50ec883d9c1f715614edc3c9b2489f4\necbfa1faba336185bc33bb3e21836dd7\n6a5405246814b82281c5ee986f4484ec\n933aa8e54e97de9392694c864c93195e\nb77075c46e424ce9eb2c303a0e0d287b\n7127c0b5fbcdbf21adcf800d8263e5d6\n853edd2a09215d83aad3e4869fb7b555\n63d91bce2f3d26abdeb3e56da26a6974\n447a43ec44a3e672e7cbc4e41c1d1020\n4fc0f4f2d29a463cb1bb46d2556ba67d\n9e653d3b0b8f8c6b28f998b2aa4c5983\n1b5e114692abf9a5fdbbffe94281448\nfcf21e1176459664806b90e3f08c9a28\n176c629c93b5a1f73cf0b8b75857cc24\n6d537a1a09de6b13f5678db9e73ab77e\na88fa5daf540c14a4f6190a680acb783\nd10cd8bfe5eb85572aec0b439528eb79\n7b200ae33e01eda467fd076ce612c54\nf83474c31e7bb6bc1022decd5ff96217\neb01f5a73f0239a348c096ae17d885c9\nb0e8c331eacdc9bef3e39f2e17005efc\n18f650bbd1068f0589c6f1079da7a8d4\n544ed8713bb6b697846f1b9d68a7eecd\n8687ac78ffaa38584de203ef6842ee61\n14fff3ebab1e144d6b77971fd22cc80d\ncfa697be9ee40b5357018179649e2bb7\nf4aa1a1c7216fdfcd3d8a17e1b074875\na8db7dcc16750af73c83f6e156ad107a\n5af5aa92ba49930c3f41ddf3713a131\nfc71778c7daf92e49786591d9b03a096\nf8cf09473d99d5ebfb7214357e073eb7\neb214ca65059e8d8fb8de648691848ea\nf6288a9297948fdc67383adf153b22c5\nd0e7102863fdb18fb90142192ec795d\n9119eaa9b5996cd3b1bb46d2556ba67d\ndaf5575e801967cdcefe7473eb81422f\n925f3de9b1256113538505dcebf57ab1\nabee560e2dd721eeb129901f80d24b7b\ncafc4d2198b6531bd5527b961edeb7bd\nae8ccc2a90c7d57ff107f18bfa25e296\n955507bbb3aa0b97b1bb46d2556ba67d\n51537c56f71ec82acfd826dd468a5497\n1d6bcf04874000a9ea96bfd37cd8bdfb\n65b75158bb049f5af647317afa6ffdd4\n30e536833dee7cd8a9d21767a2141a63\nac52cf0b598e930ab38d3c03866c1379\n7baed55a551f03efa27ad5a09bb4c2bf\n9b87bdd824e68950f4a06efdbafdd7ea\n8bef56b64003be1789f903fb361de4ca\n396fb90a02afe669258bd22729297863\ndf63e149e706e3741556f795d265590\nd4ffdf377bda1aa5f650f4803ec7962d\n43bc1dd4f4d7f07a84f7e91f7eafd792\n2e4adc3992a773b1eaac92a15231622\n332d072efa23ec9ae89f0d5485194c5\n8e431fd55a7aca0b124dae0a32996c4c\n5f5490a8a7af2898b1bb46d2556ba67d\nefc4de2b174c736dc99bbfcf5650bf52\n571a2485fb205e5fa9142e7277ee08f1\n80439bf303734b76ff37346ffc41ec74\n686a53aff9209c258d25d8990968dc68\n787e381b4a968a55af5574caf3b1433d\n1b2e790b7c57fc5d2a08194fd3f4120d\n337531151abc41a7b390176e65ea3f39\na35aea08a3cb9391fc1bbbe626c79a7d\ne2446b9f4b9fb179f525bb02d30fbbfe\n1b1cf4f2cc24a2a2a5895e3729304f68\nff70051c32217b2df671917093bd361\n6dd917d73699da0d255465ee23ab5b12\nb00e1af5a8d0674efe9d6d96542b8ef4\na8455459a7b93aef9e5629b793f22d35\ne604463b6c45712395ea46728bcdc15d\na3be3018a002bbecacd548a9de859b7d\ne8b19c46e5beb3823b12275bdb30c153\n8f2eb4f44b95da78639e286420a03c3f\n393f1f8b2c656484a7ace102781bfe8b\n4a0cbef5bbb19d840b6c13818321d0e\n4cff5eb82cac0f56b7b1411b0ad3bd0d\n4be2461bad10aa82a875c848d0fb1664\n7d3eb0d2de5c5b8672a78a0929ee12bc\n502f848385718cb76e1f79eab597a3af\nf84196260e558ff5abb59ca95d19016\n3d908c2b4f5812702fc668af6d3ad0ad\n501154d9504b62b9da27170f98feb295\na6d50000249d71cf70c8aed16b49b164\n4af6289f159094d21197663c308adec2\n19cbb5d8d74f8813e60e51f454cfc3c9\n8411cba605709e46c26de8baaf779d69\n7915c47b72e6d496e453885abe85c310\n57a8ccaf2eb8d6a3924d278e5faa7137\n3e03e3d547d6fd9e4ca65624f18b38a2\n606b512701e71ef6fb80910115d3c39f\na56c3a66dbe0ddf4a70cfb3232f40c6\n62255074b0df6a115fa2a5df3ce5bc40\ndbcf36d87385eeadf64bc205d76349ec\n78fe059e63f817a296f6c44da3269880\n5b86640d3bc2e43decac3f40526a2cc2\n10fe40ebace4de15f457958925a36a51\n819a7b31f925a302474a33db0a80b327\nc77c30796e80cc291edf59b9c77b0b75\nb7d6c9e38884b121cf439004777f8b49\nabe4b3c405e1cc67bcd376892ed4f5df\n97402ccd78c061251141cd3611961b0\n27d5c5d0dec7b209124dae0a32996c4c\nb998ce1c2a335d80868bf275e08c687\n9a8c57edf56dff168a76a2dc0f9ed02b\nc2d83f3b8665638c664b3b9b23ddfcbc\n1e3f014e8eba0db7fa575e221973fef\na646c8780e79d091cd079e2d482994e\n99102724561012729ebc23acefb248a\n57b3fb45b6c484c8cd9052ebaae01826\n528689641a6562e7bd7a55708242b1bb\n704aaee1bba4d220179fa02faff22219\nf2d7625709d7bdaea6dae8586082d789\ne456eded209aac05a8b0c9e2ebd8eeb\nf89a76e638ecb1aec79d3cf109867c13\ndf8fdfbda6e15f38fc740ecd0dc695a2\n2de6a45649b392d2f7051f81d65f99eb\n86e404c548d965c6d28357d0413f2f80\n9625f56fdbada3377220891f188bc420\n713861441f4c7110b7b1411b0ad3bd0d\nbd04c982ef479f160014fe834c82238\ncfb1882ac34b81d8a357368f9af15b34\n406e7646609bc8bd8a53c9119bc523d3\n11e101e938688081d3b936925082270f\nec97e9975c94f7ba727ef88d634f1148\n118d43609d6de540fdd92f489e57a4cc\nec779915957e5361ce000b0a5d25ebdd\nce15225b24bb4ed2742fb0ba5ae222f2\n9b93b845578ee8a20c10ff7bcef26d\nbf47c2f0b5d1c6fef37a9c459d3dd62a\na4d1ec9841281a3cd1e97c10e2464c2d\n7cc3c41e998caed8a70cfb3232f40c6\nfd488ccadbc89bc7ece8bb633fd3452d\n9e6d54edea8f2adb41556f795d265590\n3c5d0c6c971d39aa70cfb3232f40c6\n9c41a1bc835ab6d81194cbd9c0740031\naa0e4a79926c68f9bba1d36dfe35a060\n6db27ae2c9cf722d1743d8ffcf66c439\n8e0e3c0c19d38ea1696cc0dd628edec7\nf678356e3e61872a28730ed49126392b\na45cbcfb2763423a6540eb087d7e15bd\n7bfb0e8e74e1bd2bbe7ca2216dc1576a\ne23e4845d3a990d25fc186cfb5f359d1\ne0b49aa20792f2fdc99bbfcf5650bf52\nefd174efe9130399be7ca2216dc1576a\na492984be2c03294213a43a25cd73264\nd55ce64040e0b3e4ecc9205d69d88837\ne2e0d0dbe736e3164947b319a9e09fd\n1f5d3310cc5f9346f1d7b2f32e8fa69\n5a4e0cb4562b2e0ef647317afa6ffdd4\n77a02f09cd22e9f879863338881ed398\n3216e49e5dd304956bed41d0253513f3\nac8afdd8c70178abf0a977ae17a6b223\nc2d71194be5909a75f71e6fef75fd750\nfe84b8e3bf172880f54a2210c7b2aa25\n1356fcf0ea4a95bcbe7ca2216dc1576a\n88ba72c3f33343ae9e6f7dedb7e5f584\n997054b7ea21f5829588e71e21de9f30\nefc2b7a0ab3828761194cbd9c0740031\n6b7284918634488da1d10a704f5ebc89\n2ceb5d34a15b73393302308333adc4be\nc46aa66acaffc37af4a06efdbafdd7ea\n2c23f32d6eaac557b93dc42f7dcef6a\n8877086211c9976cd27beaa6c9701d39\n3e97094bc123e370be7ca2216dc1576a\naca0172e1b301b8b60c68a106ad561fd\nf15c255128f2c9c6b7963b720a430c5d\nd9ca42c1199196a8f8785957fc1b208\nc318af82802fdcfa9863712216521456\n5b45a9913b90c67f8e2d64007fd7ea91\n907c179103304ce8efcba30d0f49b70\nc28ec663f25bc97de8bdcdb326f0e57b\ne219390e6eb152024d0a79ea230a0577\n6067d0e8dda0b78c4628573ed5739806\nc3d22ce3607156466ac9421934926ab8\n2a9df36f9327beb27244f3b2d7f5074d\nab6724e38aa593602a99899765aa8dc1\n448148366050fa2b17dccc00bc197b9b\n1cd39434382e08ab8510ad9ae6ed36b6\n31230e9a2e4d7cf7cf291a4a9f36cece\ne50e4b01588116c69eadbed0f2d15378\n4bcb45bdbf0309201d2d2f3b717d35d5\n43ff0403af233774a245ccf922912805\n1849ee33d087288ebf473eeb55ae85d0\n30dcb4eb8ae2163792e235fb0f1931f3\n48a037d4699261d3b274bf54d5e89093\n7be86a514fd217dbc91817453f80389d\n3bf976118908886611b5f34c8a675124\n75aef09a516f59da49f73a97204d432b\ndae38d7110c4bf252f84cb7932f866fd\n4f9d7b905bdd80792b786ce268ccf414\n8cf34976d5cb61b0f8901acdb7280141\ndeae1ec7a6e340e7c500d4aac3b87ab\nd7755acf25baf326e625a0837cc45a0f\n12900e06f0f4ec9e49f471d054f6b528\nd8a72e6a9f34ee36b571511eb0f92ed9\n6fd0071445c70e9297e6e890ac2fb198\n3c041c05395b37782c8a76ae283dd98b\nb38a6ed1bb88dc6ccd57b018370ca909\n9c4d83025107322b2aed6a9a322ced74\n2722150ea003017d7fa575e221973fef\n69379ea3029bb2f6ee5140f12d845ca9\n14241942d79f89226587cb13c78fb9b\n5b00c251f971aaa437a692cc86ebcb7c\n99c19a1c05dea30454e3de9fd2bf8dea\n4d5d231a701433110a313d673794913\n33d7cf0698dea49acaf9c991e0bc2cd\nc04df151b8677becd8af3a076c923cf\nca3d2f904f53f945d02db4eaa8d7ba76\n2a9b44ad6d6200c02b3fb35c6618f417\nad62a23a7de3965f94daa4565dd30535\nfada91842e68dac015ebc00dd3588bef\n6737f75bb87e3cc0847c4e55bb965ab0\na7f5b96f138649c6bc30e923e47d8bd4\n759c3321f016c1cf7cd1f8dd6fbce8fb\n49fb20c0d5c84e2757920cec1ab34b29\n48a584c9080f7495b97c9314bd4647d5\n9ac6483c969f1120b05dfc874f00d5f3\n8a3a23f85c4c4fc4f2ad837508eb2db7\nf193688fa17197f7798832e32e32aae6\n9c92fb3f3a4fbe8cac932f3ba44b77b\nfd13e9a9d84bf26266d02be2d9ba0945\n27540cb221ffee07983f0317c2c6f92e\nb044558b01dfb98d3d8de7c49284d3\nbfe67a6080ff5bc17ac1d5790f13a22c\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/info-pix3d.json",
    "content": "{\n    \"lst_dir\": \"./dataset_info_files/pix3d_filelists\",\n    \"cats\": {\n        \"bed\": 0,\n        \"bookcase\": 1,\n        \"chair\": 2,\n        \"desk\": 3,\n        \"misc\": 4,\n        \"sofa\": 5,\n        \"table\": 6,\n        \"tool\": 7,\n        \"wardrobe\": 8\n    },\n    \"all_cats\": [\n        \"bed\",\n        \"bookcase\",\n        \"chair\",\n        \"desk\",\n        \"misc\",\n        \"sofa\",\n        \"table\",\n        \"tool\",\n        \"wardrobe\"\n    ],\n    \"raw_dirs_v1\": {\n        \"mesh_dir\": \"pix3d/model_align\",\n        \"norm_mesh_dir\": \"pix3d/norm_mesh_dir/\",\n        \"sdf_dir\": \"pix3d/SDF_v1_64/\"\n    }\n}\n"
  },
  {
    "path": "AutoEncoder/dataset_info_files/info-shapenet.json",
    "content": "{\n    \"lst_dir\": \"../dataset_info_files/ShapeNet_filelists\",\n    \"cats\": {\n        \"watercraft\": \"04530566\",\n        \"rifle\": \"04090263\",\n        \"display\": \"03211117\",\n        \"lamp\": \"03636649\",\n        \"speaker\": \"03691459\",\n        \"cabinet\": \"02933112\",\n        \"chair\": \"03001627\",\n        \"bench\": \"02828884\",\n        \"car\": \"02958343\",\n        \"airplane\": \"02691156\",\n        \"sofa\": \"04256520\",\n        \"table\": \"04379243\",\n        \"phone\": \"04401088\"\n    },\n    \"all_cats\": [\n        \"airplane\",\n        \"bench\",\n        \"cabinet\",\n        \"car\",\n        \"chair\",\n        \"display\",\n        \"lamp\",\n        \"speaker\",\n        \"rifle\",\n        \"sofa\",\n        \"table\",\n        \"phone\",\n        \"watercraft\"\n    ],\n    \"raw_dirs_v1\": {\n        \"mesh_dir\": \"/raid/zybak/data/ShapeNetCore.v2/\",\n        \"norm_mesh_dir\": \"/raid/zybak/data/ShapeNetCar100SDF/norm_mesh_dir_v2/\",\n        \"sdf_dir\": \"/raid/zybak/data/ShapeNetCar100SDF/SDF_v2\"\n    }\n}"
  },
  {
    "path": "AutoEncoder/encdec/DynamicSampler.py",
    "content": "\r\nimport torch\r\nimport torch.nn as nn\r\nimport torch.nn.functional as F\r\nimport torch.optim as optim\r\nfrom torchvision import datasets, transforms\r\nfrom torch.utils.data.sampler import Sampler, WeightedRandomSampler, BatchSampler\r\nfrom typing import Iterator, Sequence\r\nfrom torch.utils.data import Dataset, DataLoader\r\nimport random\r\n\r\n\r\nclass DummyDataset(Dataset):\r\n    def __init__(self):\r\n        self.training_idxes = list(range(1))\r\n\r\n    def __getitem__(self, index):\r\n        return index\r\n\r\n    def __len__(self):\r\n        return 10000\r\n\r\n    def get_training_idxes(self):\r\n        return self.training_idxes\r\n\r\n    def update_training_idxes(self, new_idxes):\r\n        self.training_idxes = self.training_idxes + new_idxes\r\n\r\nclass SequenceSampler(Sampler):\r\n    def __init__(self, training_idxes, N):\r\n        self.training_idxes = training_idxes\r\n        self.N = N\r\n\r\n    def __iter__(self) -> Iterator[int]:\r\n        \r\n        yield from iter(list(set(range(self.N)) - set(self.training_idxes)))\r\n\r\n    def __len__(self) -> int:\r\n        return self.N - len(self.training_idxes)\r\n\r\n    def update_training_idxes(self, new_add_idxes):\r\n        self.training_idxes = self.training_idxes+new_add_idxes\r\n\r\nclass SequenceSampler_Train(Sampler):\r\n    def __init__(self, training_idxes):\r\n        self.training_idxes = training_idxes\r\n\r\n\r\n    def __iter__(self) -> Iterator[int]:\r\n        random.shuffle(self.training_idxes)\r\n        yield from iter(self.training_idxes)\r\n\r\n    def __len__(self) -> int:\r\n        return len(self.training_idxes)\r\n\r\n    def update_training_idxes(self, new_add_idxes):\r\n        self.training_idxes = self.training_idxes+new_add_idxes\r\n\r\nclass WeightedDynamicSampler(WeightedRandomSampler):\r\n\r\n    def __init__(self, weights: Sequence[float], num_samples: int,\r\n                 replacement: bool = True, generator=None) -> None:\r\n        if not isinstance(num_samples, int) or isinstance(num_samples, bool) or \\\r\n                num_samples <= 0:\r\n            raise ValueError(f\"num_samples should be a positive integer value, but got num_samples={num_samples}\")\r\n        if not isinstance(replacement, bool):\r\n            raise ValueError(f\"replacement should be a boolean value, but got replacement={replacement}\")\r\n\r\n        weights_tensor = torch.as_tensor(weights, dtype=torch.double)\r\n        if len(weights_tensor.shape) != 1:\r\n            raise ValueError(\"weights should be a 1d sequence but given \"\r\n                             f\"weights have shape {tuple(weights_tensor.shape)}\")\r\n\r\n        self.weights = weights_tensor\r\n        self.num_samples = num_samples\r\n        self.replacement = replacement\r\n        self.generator = generator\r\n\r\n    def __iter__(self) -> Iterator[int]:\r\n        rand_tensor = torch.multinomial(self.weights, (self.weights > 0).sum().int(), self.replacement, generator=self.generator)\r\n        yield from iter(rand_tensor.tolist())\r\n\r\n    def __len__(self) -> int:\r\n        return ((self.weights > 0).sum().int())\r\n\r\n    def update_weights(self, weights):\r\n        self.weights = weights\r\n\r\n\r\nclass DynamicBatchSampler(BatchSampler):\r\n\r\n    def update_weights(self, weights):\r\n        self.sampler.update_weights(weights)\r\n\r\n    def update_training_idxes(self, training_idxes):\r\n        self.sampler.update_training_idxes(training_idxes)\r\n\r\n\r\nif __name__ == '__main__':\r\n\r\n    dataset = DummyDataset()\r\n\r\n    training_idxes = dataset.get_training_idxes()\r\n\r\n    weights = [1 if i in training_idxes else 0 for i in range(len(dataset))]\r\n\r\n    sampler = WeightedDynamicSampler(weights, len(dataset))\r\n    batch_sampler = DynamicBatchSampler(sampler = sampler, batch_size=8, drop_last=False)\r\n\r\n    loader = DataLoader(dataset, sampler=batch_sampler)\r\n\r\n    count = 1\r\n    for epoch in range(10):\r\n        for batch in loader:\r\n            print(batch)\r\n        \r\n        curr_training_idxes = dataset.get_training_idxes().copy()\r\n        total_samples = len(dataset)\r\n        if len(curr_training_idxes) < total_samples:\r\n            ##testing here\r\n            new_add_idxes = [count, count+1]\r\n            dataset.update_training_idxes(new_add_idxes)\r\n            count += 2\r\n            easy_p = 0.5/len(curr_training_idxes)\r\n            hard_p = 0.5 / len(new_add_idxes)\r\n            new_weights = torch.zeros(total_samples)\r\n\r\n            \r\n            new_weights.index_fill_(0, torch.LongTensor(curr_training_idxes), easy_p)\r\n            new_weights.index_fill_(0, torch.LongTensor(new_add_idxes), hard_p)\r\n\r\n            new_weights[curr_training_idxes] = easy_p\r\n            new_weights[new_add_idxes] = hard_p\r\n\r\n            print(curr_training_idxes, new_add_idxes, new_weights[:22])\r\n            batch_sampler.update_weights(new_weights)\r\n\r\n\r\n"
  },
  {
    "path": "AutoEncoder/encdec/__init__.py",
    "content": ""
  },
  {
    "path": "AutoEncoder/encdec/export_meshes.py",
    "content": "import sys\n\nsys.path.append(\"..\")\n\nfrom pathlib import Path\nfrom typing import Any, Dict\n\n\nimport torch\nfrom hesiod import hcfg, hmain\nfrom torch import Tensor\nfrom torch.utils.data import DataLoader\n\nfrom AutoEncoder.data.dataset import UdfsDataset\nfrom meshudf.meshudf import get_mesh_from_udf\nfrom models.cbndec import CbnDecoder\nfrom models.coordsenc import CoordsEncoder\nfrom models.dgcnn import Dgcnn\nfrom utils import get_o3d_mesh_from_tensors, progress_bar, random_point_sampling\n\nimport open3d as o3d \nimport os\nimport numpy as np\n\n\nimport trimesh\nfrom utils.utils import GridFiller\n\nif len(sys.argv) != 2:\n    print(\"Usage: python export_meshes.py <run_cfg_file>\")\n    exit(1)\n\n@hmain(\n    base_cfg_dir=\"../cfg/bases\",\n    run_cfg_file=sys.argv[1],\n    parse_cmd_line=False,\n    out_dir_root=\"../logs\",\n)\ndef main() -> None:\n    seed = 10\n    import random\n    torch.backends.cudnn.benchmark = False\n    random.seed(seed)\n    np.random.seed(seed)\n    torch.manual_seed(seed)\n    torch.cuda.manual_seed(seed)\n    torch.random.manual_seed(seed)\n\n\n    ckpt_path = hcfg(\"ckpt_path\", str)\n\n    ckpt = torch.load(ckpt_path)\n\n    latent_size = hcfg(\"latent_size\", int)\n    num_points_pcd = hcfg(\"num_points_pcd\", int)\n    udf_max_dist = hcfg(\"udf_max_dist\", float)\n\n    watertight = hcfg(\"watertight\", bool)\n    resolution = hcfg(\"resolution\", int)\n\n    encoder = Dgcnn(latent_size)\n    encoder.load_state_dict(ckpt[\"encoder\"], strict=True)\n    encoder = encoder.cuda()\n    encoder.eval()\n\n    coords_encoder = CoordsEncoder()\n\n    decoder_cfg = hcfg(\"decoder\", Dict[str, Any])\n    decoder = CbnDecoder(\n        coords_encoder.out_dim,\n        latent_size,\n        decoder_cfg[\"hidden_dim\"],\n        decoder_cfg[\"num_hidden_layers\"],\n    )\n    decoder.load_state_dict(ckpt[\"decoder\"], strict=True)\n    decoder = decoder.cuda()\n    decoder.eval()\n\n\n    dset_root = Path(hcfg(\"dset.root\", str))\n    name = hcfg(\"dset.name\", str)\n\n    bs = 1\n    test_dset = UdfsDataset(name, dset_root, 'train') #deepfasion3d\n    test_loader = DataLoader(test_dset, bs, num_workers=2, shuffle=False)\n\n\n    for batch in progress_bar(test_loader, \"Exporting\"):\n\n        _, item_ids, pcds, _, _, _ = batch\n        \n        bs = pcds.shape[0]\n        pcds = pcds.cuda()\n        \n        pcds = random_point_sampling(pcds, num_points_pcd)\n        \n\n        with torch.no_grad():\n\n            latent_codes = encoder(pcds)\n\n        for i in progress_bar(range(bs), \"Meshing\"):\n\n            lat = latent_codes[i].unsqueeze(0)\n\n            def udf_func(c: Tensor) -> Tensor:\n\n                c_ = coords_encoder.encode(c.unsqueeze(0))\n                p = decoder(c_, lat).squeeze(0)\n                p = torch.sigmoid(p)\n                p = (1 - p) * udf_max_dist\n\n                return p\n\n            if watertight:\n                size = resolution #256 faster\n                fast_grid_filler = GridFiller(size)\n                udf, gradients = fast_grid_filler.fill_grid(udf_func, max_batch=2**16)\n                udf[udf < 0] = 0\n\n                import mcubes\n                vertices, faces = mcubes.marching_cubes(udf.detach().cpu().numpy(), 0.01)\n                mesh = trimesh.Trimesh(vertices, faces)\n                components = mesh.split(only_watertight=True)\n                bbox = []\n                for k, c in enumerate(components):\n                    bbmin = c.vertices.min(0)\n                    bbmax = c.vertices.max(0)\n                    bbox.append((bbmax - bbmin).max())\n                max_component = np.argmax(bbox)\n                mesh = components[max_component]\n                mesh.vertices = mesh.vertices * (2.0 / size) - 1.0  # normalize it to [-1, 1]\n                mesh_path = f\"./outputs/AE/{hcfg('dset.exp_name', str)}/meshes_test/{item_ids[i]}mc.obj\"\n                os.makedirs(os.path.dirname(mesh_path), exist_ok=True)\n                trimesh.Trimesh(vertices=vertices, faces=faces).export(mesh_path)\n\n            else:\n                v, t, udf, gradients = get_mesh_from_udf(\n                udf_func,\n                coords_range=(-1, 1),\n                max_dist=udf_max_dist,\n                N=resolution,\n                max_batch=2**16,\n                differentiable=False,\n                use_fast_grid_filler=True\n                )\n                pred_mesh_o3d = get_o3d_mesh_from_tensors(v, t)\n                mesh_path = f\"./outputs/AE/{hcfg('dset.exp_name', str)}/meshes_test/{item_ids[i]}_meshudf.obj\"\n                os.makedirs(os.path.dirname(mesh_path), exist_ok=True)\n\n                o3d.io.write_triangle_mesh(str(mesh_path), pred_mesh_o3d)\n    \n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "AutoEncoder/encdec/normalized_obj.py",
    "content": "import trimesh\nimport os\n\ndef obj_normalization(input_mesh_file, output_file_path):\n    '''\n    Normalize the obj file based on the information from the first frame (T-pose).\n    :param path: the path of original obj file\n    :return:\n        normalized obj file [-1,1] at the origin (0,0,0).\n    '''\n    obj = trimesh.load(input_mesh_file, force='mesh')\n    v = obj.vertices\n    v = v - v.mean(0)\n    # v = v*2\n    print(v.mean(0), v.max(0), v.min(0))\n\n    trimesh.Trimesh(vertices=v, faces=obj.faces).export(output_file_path)\n    return True\n\n\ndef box_center_normalization(input_mesh_file, output_file_path):\n    '''\n    Normalize the obj file based on the information from the first frame (T-pose).\n    :param path: the path of original obj file\n    :return:\n        normalized obj file [-1,1] at the origin (0,0,0).\n    '''\n    obj = trimesh.load(input_mesh_file, force='mesh')\n    v = obj.vertices\n    max_v = v.max(0)\n    min_v = v.min(0)\n    lhw = max_v = min_v\n    box_center = min_v + (lhw / 2)\n\n    print(v.mean(0), v.max(0), v.min(0))\n    v = v - box_center\n\n    trimesh.Trimesh(vertices=v, faces=obj.faces).export(output_file_path)\n    return True\n\n\ndata_root = './dataset/Deepfashion3D/filtered_registered_mesh'\nids = os.listdir(data_root)\noutput_root = './dataset/Deepfashion3D/norm_objs'\nos.makedirs(output_root, exist_ok=True)\n\nfor id in ids:\n    input_mesh_file = os.path.join(data_root, id, 'model_cleaned.obj')\n    output_file_path = os.path.join(output_root, id+'.obj')\n    obj_normalization(input_mesh_file, output_file_path)\n\n"
  },
  {
    "path": "AutoEncoder/encdec/preprocess_udfs.py",
    "content": "import sys\n\nsys.path.append(\"..\")\n\nfrom pathlib import Path\nimport os\n\nimport numpy as np\nfrom utils import (\n    compute_udf_from_mesh,\n    get_o3d_mesh_from_tensors,\n    get_tensor_pcd_from_o3d,\n    progress_bar,\n    read_mesh,\n)\n\nnp.random.seed(1024)\n\ncat2id = {\n    \"chair\": \"03001627\",\n    \"bench\": \"02828884\",\n    \"cabinet\": \"02933112\",\n    \"car\": \"02958343\",\n    \"airplane\": \"02691156\",\n    \"display\": \"03211117\",\n    \"lamp\": \"03636649\",\n    \"speaker\": \"03691459\",\n    \"rifle\": \"04090263\",\n    \"sofa\": \"04256520\",\n    \"table\": \"04379243\",\n    \"phone\": \"04401088\",\n    \"watercraft\": \"04530566\"\n}\n\ndata_root = sys.argv[1]\nout_dir = sys.argv[2]\nname = sys.argv[3]\nassert name in ['shapenet', 'deepfashion3d', 'pix3d']\nif name == 'shapenet':\n    if len(sys.argv) != 5:\n        print(\"Usage: python preprocess_udfs.py </path/to/meshes> </out/path> <name of dataset> <category>\")\n        exit(1)\n    category = sys.argv[4]\n\n    assert category in cat2id.keys()\n    id = cat2id[category]\n    out_dir = os.path.join(out_dir, id)\n    sub_ids = os.listdir(os.path.join(data_root, id))\nelse:\n    if len(sys.argv) != 4:\n        print(\"Usage: python preprocess_udfs.py </path/to/meshes> </out/path> <name of dataset> <category>\")\n        exit(1)\n    \n\nos.makedirs(out_dir, exist_ok=True)\n\n\nif name == 'shapenet':\n    lst_dir = '../dataset_info_files/ShapeNet_filelists'\n\n    with open(lst_dir+\"/\"+str(id)+\"_test.lst\", \"r\") as f:\n        list_obj_test = f.readlines()\n\n    with open(lst_dir+\"/\"+str(id)+\"_train.lst\", \"r\") as f:\n        list_obj_train = f.readlines()\n\n    list_obj_test = [f.rstrip() for f in list_obj_test]\n    list_obj_train = [f.rstrip() for f in list_obj_train]\n\nelif name == 'deepfashion3d':\n    lst_dir = '../dataset_info_files/Deepfashion3d'\n\n    with open(lst_dir+\"/\"+\"deepfashion3d_test.txt\", \"r\") as f:\n        list_obj_test = f.readlines()\n\n    with open(lst_dir+\"/\"+\"deepfashion3d_train.txt\", \"r\") as f:\n        list_obj_train = f.readlines()\n\n    list_obj_test = [f.rstrip('\\n') for f in list_obj_test]\n    list_obj_train = [f.rstrip('\\n') for f in list_obj_train]\n    print(len(list_obj_train), len(list_obj_train))\n    check_dict = {}\n    for id in list_obj_train:\n        if check_dict.__contains__(id):\n            print(id)\n        else:\n            check_dict[id] = 1\n\nelif name == 'pix3d':\n    list_obj_train = []\n    list_obj_test = []\n\n    data_root = './dataset/pix3d/models'\n\n    cats_train = os.listdir(os.path.join(data_root, 'train'))\n    for cat in cats_train:\n        ids = os.listdir(os.path.join(data_root, 'train', cat))\n        for id in ids:\n            model_path = os.path.join(data_root, 'train', cat, id, 'model.obj')\n            list_obj_train.append(model_path)\n\n    cats_test = os.listdir(os.path.join(data_root, 'test'))\n    for cat in cats_test:\n        ids = os.listdir(os.path.join(data_root, 'test', cat))\n        for id in ids:\n            model_path = os.path.join(data_root, 'test', cat, id, 'model.obj')\n            list_obj_test.append(model_path)\n\n\ndef PrepareOneUDF(sub_id, split):\n    if name == 'shapenet':\n        mesh_path = os.path.join(data_root, id, sub_id, 'model.obj')\n\n    elif name == 'deepfashion3d':\n        mesh_path = os.path.join(data_root, f'{sub_id}.obj')\n\n    elif name == 'pix3d':\n        mesh_path = os.path.join(data_root, f'{sub_id}.obj')\n\n\n    out_dir_split = os.path.join(out_dir, split)\n\n    os.makedirs(out_dir_split, exist_ok=True)\n\n    v, t = read_mesh(mesh_path)\n    mesh_o3d = get_o3d_mesh_from_tensors(v, t)\n\n    pcd_o3d = mesh_o3d.sample_points_uniformly(number_of_points=100_000)\n    pcd = get_tensor_pcd_from_o3d(pcd_o3d)[:, :3]\n\n    coords, labels, gradients = compute_udf_from_mesh(\n        mesh_o3d,\n        num_queries_on_surface=250_000,\n        num_queries_per_std=[250_000, 200_000, 25_000, 25_000],\n\n    )\n\n    if name == 'pix3d':\n        out_file = os.path.join(out_dir_split, sub_id.split('/')[-3], f\"{sub_id.split('/')[-2]}.npz\")\n        os.makedirs(os.path.dirname(out_file), exist_ok=True)\n    else:\n        out_file = os.path.join(out_dir_split, f\"{sub_id}.npz\")\n\n\n    print('train: ', len(list_obj_train), 'test: ', len(list_obj_test))\n    print(out_file)\n    np.savez(\n        out_file,\n        vertices=v.numpy(),\n        triangles=t.numpy(),\n        pcd=pcd.numpy(),\n        coords=coords.numpy(),\n        labels=labels.numpy(),\n        gradients=gradients.numpy(),\n    )\n\n\nfor sub_id in progress_bar(list_obj_train):\n    PrepareOneUDF(sub_id, 'train')\n\nfor sub_id in progress_bar(list_obj_test):\n    PrepareOneUDF(sub_id, 'test')\n"
  },
  {
    "path": "AutoEncoder/encdec/train_encdec.py",
    "content": "import sys\n\nsys.path.append(\"..\")\n\nfrom hesiod import hmain\n\nfrom trainers.encdec import EncoderDecoderTrainer\n\n\n\nif len(sys.argv) > 1:\n    run_cfg_file = sys.argv[1]\n    del sys.argv[1]\nelse:\n    run_cfg_file = None\n\n\n@hmain(\n    base_cfg_dir=\"../cfg/bases\",\n    template_cfg_file=\"../cfg/encdec.yaml\",\n    run_cfg_file=run_cfg_file,\n    out_dir_root=\"../logs\",\n)\ndef main() -> None:\n    trainer = EncoderDecoderTrainer()\n    trainer.train()\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "AutoEncoder/models/__init__.py",
    "content": ""
  },
  {
    "path": "AutoEncoder/models/cbndec.py",
    "content": "from einops import repeat\nfrom torch import Tensor, nn\n\nclass DecoderConditionalBatchNorm(nn.Module):\n    def __init__(\n        self,\n        input_dim: int,\n        dim_condition_embedding: int,\n        dim_hidden_layers: int,\n        num_hidden_layers: int,\n        dim_out: int,\n        refine = False\n    ):\n        super().__init__()\n\n        self.fc_p = nn.Conv1d(input_dim, dim_hidden_layers, 1)\n\n        self.num_blocks = num_hidden_layers\n        self.blocks = nn.ModuleList()\n        for _ in range(num_hidden_layers):\n            self.blocks.append(\n                ConditionalResnetBlock1d(\n                    dim_condition_embedding,\n                    dim_hidden_layers,\n                )\n            )\n\n        self.bn = ConditionalBatchNorm1d(dim_condition_embedding, dim_hidden_layers)\n\n        self.fc_out = nn.Conv1d(dim_hidden_layers, dim_out, 1)\n        if refine:\n            nn.init.zeros_(self.fc_out.weight)\n        self.actvn = nn.ReLU()\n\n    def forward(self, points: Tensor, conditions: Tensor) -> Tensor:\n        p = points.transpose(1, 2)\n        c = conditions.transpose(1, 2)\n        net = self.fc_p(p)\n\n        for i in range(self.num_blocks):\n            net = self.blocks[i](net, c)\n\n        out = self.fc_out(self.actvn(self.bn(net, c)))\n\n        out = out.squeeze(1)\n\n        return out\n\n\nclass ConditionalBatchNorm1d(nn.Module):\n    def __init__(self, c_dim: int, f_dim: int) -> None:\n        super().__init__()\n        self.c_dim = c_dim\n        self.f_dim = f_dim\n\n        self.conv_gamma = nn.Conv1d(c_dim, f_dim, 1)\n        self.conv_beta = nn.Conv1d(c_dim, f_dim, 1)\n        self.bn = nn.BatchNorm1d(f_dim, affine=False)\n\n        self.reset_parameters()\n\n    def reset_parameters(self) -> None:\n        nn.init.zeros_(self.conv_gamma.weight)\n        nn.init.zeros_(self.conv_beta.weight)\n        nn.init.ones_(self.conv_gamma.bias)  # type: ignore\n        nn.init.zeros_(self.conv_beta.bias)  # type: ignore\n\n    def forward(self, x: Tensor, c: Tensor) -> Tensor:\n        assert x.shape[0] == c.shape[0]  # batch size\n        assert c.shape[1] == self.c_dim  # embedding dim\n        assert x.shape[2] == c.shape[2]  # num points\n\n        # Affine mapping\n        gamma = self.conv_gamma(c)\n        beta = self.conv_beta(c)\n\n        # Batchnorm\n        net = self.bn(x)\n        out = gamma * net + beta\n\n\n        return out\n\n\nclass ConditionalResnetBlock1d(nn.Module):\n    def __init__(self, c_dim: int, size_in: int) -> None:\n        super().__init__()\n        self.size_in = size_in\n        self.bn_0 = ConditionalBatchNorm1d(c_dim, size_in)\n        self.bn_1 = ConditionalBatchNorm1d(c_dim, size_in)\n\n        self.fc_0 = nn.Conv1d(size_in, size_in, 1)\n        self.fc_1 = nn.Conv1d(size_in, size_in, 1)\n\n        self.actvn = nn.ReLU()\n\n        nn.init.zeros_(self.fc_1.weight)\n\n    def forward(self, x: Tensor, c: Tensor) -> Tensor:\n        net = self.fc_0(self.actvn(self.bn_0(x, c)))\n        dx = self.fc_1(self.actvn(self.bn_1(net, c)))\n\n        return x + dx\n\n\nclass CbnDecoder(nn.Module):\n    def __init__(\n        self,\n        input_dim: int,\n        latent_dim: int,\n        hidden_dim: int,\n        num_hidden_layers: int,\n        out_dim: int = 1,\n        refine = False\n    ) -> None:\n        super().__init__()\n        self.decoder = DecoderConditionalBatchNorm(\n            input_dim,\n            latent_dim,\n            hidden_dim,\n            num_hidden_layers,\n            out_dim,\n            refine\n        )\n\n\n    def forward(self, coords_emb, latent_codes) -> Tensor:\n        # coords -> (B, N, 3)\n        # latent_codes -> (B, D) or (B, N, D)\n\n        if len(latent_codes.shape) == 2:\n            latent_codes = repeat(latent_codes, \"b d -> b r d\", r=coords_emb.shape[1])\n        out = self.decoder(coords_emb, latent_codes)\n        return out\n\n\n"
  },
  {
    "path": "AutoEncoder/models/coordsenc.py",
    "content": "from typing import Callable, Tuple\n\nimport torch\nfrom torch import Tensor\n\n\nclass CoordsEncoder:\n    def __init__(\n        self,\n        input_dims: int = 3,\n        include_input: bool = True,\n        max_freq_log2: int = 9,\n        num_freqs: int = 10,\n        log_sampling: bool = True,\n        periodic_fns: Tuple[Callable, Callable] = (torch.sin, torch.cos),\n    ) -> None:\n        self.input_dims = input_dims\n        self.include_input = include_input\n        self.max_freq_log2 = max_freq_log2\n        self.num_freqs = num_freqs\n        self.log_sampling = log_sampling\n        self.periodic_fns = periodic_fns\n        self.create_encoding_fn()\n\n    def create_encoding_fn(self) -> None:\n        encoding_fns = []\n        d = self.input_dims\n        out_dim = 0\n        if self.include_input:\n            encoding_fns.append(lambda x: x)\n            out_dim += d\n\n        if self.log_sampling:\n            freq_bands = 2.0 ** torch.linspace(\n                0.0, self.max_freq_log2, steps=self.num_freqs\n            )\n        else:\n            freq_bands = torch.linspace(\n                2.0**0.0, 2.0**self.max_freq_log2, steps=self.num_freqs\n            )\n\n        for freq in freq_bands:\n            for p_fn in self.periodic_fns:\n                encoding_fns.append(lambda x, p_fn=p_fn, freq=freq: p_fn(x * freq))\n                out_dim += d\n\n        self.encoding_fns = encoding_fns\n        self.out_dim = out_dim\n\n    def encode(self, inputs: Tensor) -> Tensor:\n        return torch.cat([fn(inputs) for fn in self.encoding_fns], -1)\n"
  },
  {
    "path": "AutoEncoder/models/dgcnn.py",
    "content": "import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom einops import rearrange, repeat\nfrom pytorch3d.ops import knn_gather, knn_points\nfrom torch import Tensor\n\n\ndef get_graph_feature(x: Tensor, indices: Tensor) -> Tensor:\n    \"\"\"Select features from neighbors.\n\n    Args:\n        x: the input features with shape (B, PTS, D).\n        indices: the indices indicating the K neighbors for each input point\n            with shape (B, PTS, K).\n\n    Returns:\n        The selected features with shape # (B, PTS, K, 2*D)\n    \"\"\"\n    features = knn_gather(x, indices)\n    x = repeat(x, \"b n d -> b n r d\", r=features.shape[2])\n    features = torch.cat((features - x, x), dim=3)\n\n    return features\n\n\nclass Dgcnn(nn.Module):\n    def __init__(\n        self,\n        size_latent: int,\n        k: int = 20,\n        aggregate_ops_local: str = \"max\",\n        aggregate_ops_global: str = \"max\",\n    ):\n        super().__init__()\n\n        self.k = k\n        self.size_latent = size_latent\n        self.aggreate_ops_local = aggregate_ops_local\n        self.aggreate_ops_global = aggregate_ops_global\n\n        self.bn_1 = nn.BatchNorm1d(64)\n        self.bn_2 = nn.BatchNorm1d(64)\n        self.bn_3 = nn.BatchNorm1d(128)\n        self.bn_4 = nn.BatchNorm1d(256)\n        self.bn_5 = nn.BatchNorm1d(self.size_latent)\n\n        self.slope = 0.2\n        self.conv_1 = nn.Linear(3 * 2, 64, bias=False)\n        self.conv_2 = nn.Linear(64 * 2, 64, bias=False)\n        self.conv_3 = nn.Linear(64 * 2, 128, bias=False)\n        self.conv_4 = nn.Linear(128 * 2, 256, bias=False)\n        self.conv_5 = nn.Linear(512, self.size_latent, bias=False)\n\n    def block_forward(\n        self,\n        features: Tensor,\n        conv: nn.Linear,\n        bn,\n        indices: Tensor,\n        agggreate_ops: str,\n    ) -> Tensor:\n        x = get_graph_feature(features, indices)\n        x = conv(x)\n        x = rearrange(x, \"b n k d -> b d (n k)\")\n        x = bn(x)\n        x = F.leaky_relu(x, negative_slope=self.slope)\n        features_out = rearrange(x, \"b d (n k) -> b n d k\", k=self.k)\n\n        if agggreate_ops == \"max\":\n            features_out = features_out.max(dim=-1)[0]\n        elif agggreate_ops == \"avg\":\n            features_out = features_out.mean(dim=-1)\n\n        return features_out\n\n    def forward(self, x: Tensor, latent_index=None) -> Tensor:\n        \"\"\"Forward pass.\n\n        Args:\n            x: the input point cloud with shape (B, N, 3).\n\n        Returns:\n           The global embeddings with shape (B, size_latent).\n        \"\"\"\n        _, indices, _ = knn_points(x, x, K=self.k)\n\n        x1 = self.block_forward(\n            x, self.conv_1, self.bn_1, indices, self.aggreate_ops_local\n        )\n        x2 = self.block_forward(\n            x1, self.conv_2, self.bn_2, indices, self.aggreate_ops_local\n        )\n        x3 = self.block_forward(\n            x2, self.conv_3, self.bn_3, indices, self.aggreate_ops_local\n        )\n        x4 = self.block_forward(\n            x3, self.conv_4, self.bn_4, indices, self.aggreate_ops_local\n        )\n        x5 = self.conv_5(torch.cat((x1, x2, x3, x4), dim=-1))\n        x5 = rearrange(x5, \"b n d -> b d n\")\n        x5 = self.bn_5(x5)\n        feat = F.leaky_relu(x5, negative_slope=self.slope)\n\n        if self.aggreate_ops_global == \"max\":\n            feat = feat.max(dim=-1)[0]\n        elif self.aggreate_ops_global == \"avg\":\n            feat = feat.mean(dim=-1)\n        else:\n            feat = rearrange(feat, \"b d n -> b n d\")\n\n        if latent_index is not None:\n            feat = torch.cat((feat, latent_index.unsqueeze(-1)), dim=1)\n\n        return feat\n"
  },
  {
    "path": "AutoEncoder/trainers/__init__.py",
    "content": ""
  },
  {
    "path": "AutoEncoder/trainers/encdec.py",
    "content": "from pathlib import Path\nfrom typing import Any, Dict\n\nimport torch\nimport torch.nn.functional as F\nfrom hesiod import get_out_dir, hcfg\nfrom torch.optim import Adam\nfrom torch.utils.data import DataLoader\nfrom torch.utils.tensorboard.writer import SummaryWriter\n\nfrom AutoEncoder.data.dataset import UdfsDataset\nfrom models.cbndec import CbnDecoder\nfrom models.coordsenc import CoordsEncoder\nfrom models.dgcnn import Dgcnn\nfrom utils import compute_gradients, progress_bar, random_point_sampling\nimport numpy as np\nimport os\nfrom encdec.DynamicSampler import WeightedDynamicSampler, DynamicBatchSampler, SequenceSampler, SequenceSampler_Train\n\nimport wandb\n\nuse_wandb = True\nif use_wandb:\n    # start a new wandb run to track this script\n    wandb.init(\n        # set the wandb project where this run will be logged\n        project=\"AutoEncoder\",\n        name=\"training\",\n        config={\n        \"learning_rate\": 1e-4,\n        \"epochs\": 20000,\n        }\n    )\n\nclass EncoderDecoderTrainer:\n    def __init__(self) -> None:\n        train_ids_file = Path(hcfg(\"dset.train_ids_file\", str))\n        dset_split = hcfg(\"dset.split\", str)\n        dset_root = Path(hcfg(\"dset.root\", str))\n        name = hcfg(\"dset.name\", str)\n\n        self.evaluation = False\n\n        out_dir = Path(hcfg(\"log_dir\", str))\n\n        self.train_dset = UdfsDataset(name, dset_root, dset_split)\n        train_bs = hcfg(\"train_bs\", int)\n\n        val_bs = hcfg(\"val_bs\", int)\n        \n        if 'curriculum' in name:\n            training_idxes = self.train_dset.get_training_idxes()\n            print(\"first sample nums: \", len(training_idxes))\n            weights = [1 if i in training_idxes else 0 for i in range(len(self.train_dset))]\n        \n            #self.sampler = WeightedDynamicSampler(weights, len(self.train_dset))\n            self.sampler = SequenceSampler_Train(training_idxes)\n            self.batch_sampler = DynamicBatchSampler(sampler = self.sampler, batch_size=train_bs, drop_last=False)\n            self.train_loader = DataLoader(self.train_dset, batch_sampler=self.batch_sampler)\n\n            self.val_sampler = SequenceSampler(training_idxes, len(self.train_dset))\n            self.val_batch_sampler = DynamicBatchSampler(sampler = self.val_sampler, batch_size=val_bs, drop_last=False)\n            self.val_loader = DataLoader(self.train_dset, batch_sampler=self.val_batch_sampler)\n\n        else:\n            self.train_loader = DataLoader(\n                self.train_dset,\n                train_bs,\n                shuffle=True,\n                num_workers=2,\n                pin_memory=True\n            )\n\n        self.num_points_pcd = hcfg(\"num_points_pcd\", int)\n        latent_size = hcfg(\"latent_size\", int)\n        self.max_dist = hcfg(\"udf_max_dist\", float)\n        self.num_points_forward = hcfg(\"num_points_forward\", int)\n\n        encoder = Dgcnn(latent_size)\n        self.encoder = encoder.cuda()\n\n        self.coords_encoder = CoordsEncoder()\n\n        decoder_cfg = hcfg(\"decoder\", Dict[str, Any])\n        decoder = CbnDecoder(\n            self.coords_encoder.out_dim,\n            latent_size,\n            decoder_cfg[\"hidden_dim\"],\n            decoder_cfg[\"num_hidden_layers\"],\n        )\n        self.decoder = decoder.cuda()\n\n        params = list(encoder.parameters())\n        params.extend(decoder.parameters())\n        lr = hcfg(\"lr\", float)\n        self.optimizer = Adam(params, lr)\n\n        self.epoch = 0\n        self.global_step = 0\n\n        self.ckpts_path = out_dir / \"ckpts\"\n\n        tune = False\n        if tune:\n            self.restore_from_last_ckpt()\n\n        else:\n            if self.ckpts_path.exists():\n                self.restore_from_last_ckpt()\n\n        os.makedirs(str(self.ckpts_path), exist_ok=True)\n\n        self.logger = SummaryWriter(out_dir / \"logs\")\n\n    def train(self) -> None:\n        name = hcfg(\"dset.name\", str)\n        num_epochs = hcfg(\"num_epochs\", int)\n        start_epoch = self.epoch\n        best_val_loss = 1e9\n        \n        for epoch in range(start_epoch, num_epochs):\n            self.epoch = epoch\n\n            epoch_losses = []\n            epoch_loss = 0\n\n            self.encoder.train()\n            self.decoder.train()\n\n            desc = f\"Epoch {epoch}/{num_epochs}\"\n            for batch in progress_bar(self.train_loader, desc=desc):\n                indexes, _, pcds, coords, gt_udf, gt_grad = batch\n                pcds = pcds.cuda()\n                coords = coords.cuda()\n                gt_udf = gt_udf.cuda()\n                gt_grad = gt_grad.cuda()\n\n\n                pcds = random_point_sampling(pcds, self.num_points_pcd)\n\n                gt_udf = gt_udf / self.max_dist\n                gt_udf = 1 - gt_udf\n                c_u_g = torch.cat([coords, gt_udf.unsqueeze(-1), gt_grad], dim=-1)\n\n                selected_c_u_g = random_point_sampling(c_u_g, self.num_points_forward)\n                selected_coords = selected_c_u_g[:, :, :3]\n                selected_coords.requires_grad = True\n                selected_gt_udf = selected_c_u_g[:, :, 3]\n                selected_gt_grad = selected_c_u_g[:, :, 4:]\n\n                latent_codes = self.encoder(pcds)\n\n                coords_encoded = self.coords_encoder.encode(selected_coords)\n                pred = self.decoder(coords_encoded, latent_codes)\n\n\n                udf_loss = F.binary_cross_entropy_with_logits(pred, selected_gt_udf)\n\n                udf_pred = torch.sigmoid(pred)\n                \n\n                udf_pred = 1 - udf_pred\n                udf_pred = udf_pred * self.max_dist\n\n                gradients = compute_gradients(selected_coords, udf_pred)\n\n                grad_loss = F.mse_loss(gradients, selected_gt_grad, reduction=\"none\")\n\n\n                mask = (selected_gt_udf > 0) & (selected_gt_udf < 1)\n                grad_loss = grad_loss[mask].mean()\n\n\n                self.optimizer.zero_grad()\n\n                loss = udf_loss + 0.1*grad_loss\n\n                epoch_losses.append(udf_loss.detach().cpu().item())\n\n                loss.backward()\n                self.optimizer.step()\n\n                if self.global_step % 10 == 0:\n                    self.logger.add_scalar(\n                        \"train/udf_loss\",\n                        udf_loss.item(),\n                        self.global_step,\n                    )\n                    self.logger.add_scalar(\n                        \"train/grad_loss\",\n                        grad_loss.item(),\n                        self.global_step,\n                    )\n                    if use_wandb:\n                        wandb.log({\"train/udf_loss\": udf_loss.item(), \"train/grad_loss\": grad_loss.item()}, step=self.global_step) #\"train/grad_loss\": grad_loss.item()}, step=self.global_step)\n\n                    print(f'steps: {self.global_step}; loss: {loss.item()}; udf_loss: {udf_loss.item()}; grad_loss: {grad_loss.item()}') #eikonal_loss: {gradient_error.item()}\n\n                self.global_step += 1\n\n            epoch_loss = np.mean(epoch_losses)\n            print(f'epoch_udf_loss: {epoch_loss}')\n\n            switch_epoch = 64\n            curr_training_idxes = self.train_dset.get_training_idxes().copy()\n            total_samples = len(self.train_dset)\n            if epoch % switch_epoch == 63 and 'curriculum' in name and len(curr_training_idxes) < total_samples:\n\n                _, _, _, new_add_idxes = self.val()\n\n                self.train_dset.update_training_idxes(new_add_idxes)\n\n                #self.batch_sampler.update_weights(new_weights)\n                self.batch_sampler.update_training_idxes(new_add_idxes)\n                self.val_batch_sampler.update_training_idxes(new_add_idxes)\n                print(f'training samples now: {len(curr_training_idxes)+len(new_add_idxes)}')\n\n                assert(len(set(curr_training_idxes)&set(new_add_idxes)) == 0)\n                print(curr_training_idxes, new_add_idxes)\n\n            if epoch % 1000 == 0:\n                self.save_ckpt(all=True)\n\n            self.save_ckpt()\n        if use_wandb:\n            wandb.finish()\n\n    def val(self) -> float:\n        self.encoder.eval()\n        self.decoder.eval()\n        print('evaluation now')\n\n        val_losses = []\n        udf_losses = []\n        grad_losses = []\n        remain_indexes = []\n\n        for batch in progress_bar(self.val_loader):\n            indexes, _, pcds, coords, gt_udf, gt_grad = batch\n            pcds = pcds.cuda()\n            coords = coords.cuda()\n            gt_udf = gt_udf.cuda()\n            gt_grad = gt_grad.cuda()\n            indexes = list(indexes.cpu().numpy())\n\n            pcds = random_point_sampling(pcds, self.num_points_pcd)\n\n            gt_udf = gt_udf / self.max_dist\n            gt_udf = 1 - gt_udf\n            c_u_g = torch.cat([coords, gt_udf.unsqueeze(-1), gt_grad], dim=-1)\n\n            selected_c_u_g = random_point_sampling(c_u_g, self.num_points_forward)\n            selected_coords = selected_c_u_g[:, :, :3]\n            selected_coords.requires_grad = True\n            selected_gt_udf = selected_c_u_g[:, :, 3]\n            selected_gt_grad = selected_c_u_g[:, :, 4:]\n\n            with torch.no_grad():\n                latent_codes = self.encoder(pcds)\n\n            selected_coords.requires_grad = True\n            coords_encoded = self.coords_encoder.encode(selected_coords)\n            pred = self.decoder(coords_encoded, latent_codes)\n\n            udf_loss = F.binary_cross_entropy_with_logits(pred, selected_gt_udf)\n\n\n            udf_pred = torch.sigmoid(pred)\n            udf_pred = 1 - udf_pred\n            udf_pred *= self.max_dist\n\n            udf_pred.sum().backward()\n            gradients = selected_coords.grad\n            \n            selected_coords.grad.zero_()\n            grad_loss = F.mse_loss(gradients, selected_gt_grad, reduction=\"none\")\n            \n            mask = (selected_gt_udf > 0) & (selected_gt_udf < 1)\n            grad_loss = grad_loss[mask].mean()\n\n            loss = udf_loss + 0.1*grad_loss\n\n            val_losses.append(loss.detach().cpu().item())\n            udf_losses.append(udf_loss.detach().cpu().item())\n            grad_losses.append(grad_loss.detach().cpu().item())\n            remain_indexes.append(indexes)\n        \n\n        val_losses = np.array(val_losses)\n        val_losses = val_losses.reshape(-1)\n        print('val_losses: ', val_losses)\n        remain_indexes = np.array(remain_indexes).reshape(-1)\n        new_can_idxes = list(np.argsort(val_losses)[:100])\n\n        new_add_idxes = [remain_indexes[i] for i in new_can_idxes]\n        return np.mean(val_losses), np.mean(udf_losses), np.mean(grad_losses), new_add_idxes\n\n\n    def save_ckpt(self, all: bool = False, best=False) -> None:\n        ckpt = {\n            \"epoch\": self.epoch,\n            \"encoder\": self.encoder.state_dict(),\n            \"decoder\": self.decoder.state_dict(),\n            \"optimizer\": self.optimizer.state_dict(),\n        }\n\n        if best:\n            for previous_ckpt_path in self.ckpts_path.glob(\"*.pt\"):\n                if \"best\" in previous_ckpt_path.name:\n                    previous_ckpt_path.unlink()\n            ckpt_path = self.ckpts_path / f\"best_{self.epoch}.pt\"\n            torch.save(ckpt, ckpt_path)\n\n        elif all:\n            ckpt_path = self.ckpts_path / f\"{self.epoch}.pt\"\n            torch.save(ckpt, ckpt_path)\n        else:\n            for previous_ckpt_path in self.ckpts_path.glob(\"*.pt\"):\n                if \"last\" in previous_ckpt_path.name:\n                    previous_ckpt_path.unlink()\n\n            ckpt_path = self.ckpts_path / f\"last_{self.epoch}.pt\"\n            torch.save(ckpt, ckpt_path)\n\n    def restore_from_last_ckpt(self) -> None:\n\n        if self.ckpts_path.exists():\n\n            ckpt_paths = [p for p in self.ckpts_path.glob(\"*.pt\") if \"last\" in p.name]\n            error_msg = \"Expected only one last ckpt, found none or too many.\"\n            assert len(ckpt_paths) == 1, error_msg\n\n            ckpt_path = ckpt_paths[0]\n            ckpt = torch.load(ckpt_path)\n\n            self.epoch = ckpt[\"epoch\"] + 1\n            self.global_step = self.epoch * len(self.train_loader)\n\n            self.encoder.load_state_dict(ckpt[\"encoder\"])\n            self.decoder.load_state_dict(ckpt[\"decoder\"])\n            self.optimizer.load_state_dict(ckpt[\"optimizer\"])\n"
  },
  {
    "path": "AutoEncoder/trainers/test.py",
    "content": "import torch\r\nimport torch.nn as nn\r\nimport torch.nn.functional as F\r\nimport torch.optim as optim\r\nfrom torchvision import datasets, transforms\r\nfrom torch.utils.data.sampler import Sampler, WeightedRandomSampler\r\n\r\n\r\n\r\nclass DynamicWeightedRandomSampler(WeightedRandomSampler):\r\n    r\"\"\"Samples elements randomly, without replacement.\r\n    Arguments:\r\n        data_source (Dataset): dataset to sample from\r\n    \"\"\"\r\n\r\n    def update_distribution(self, weights):\r\n        self.weights = weights\r\n\r\n    def __len__(self):\r\n        return (self.weights>0).sum().int()\r\n\r\nclass BatchSampler(Sampler):\r\n    def __init__(self, sampler, batch_size, drop_last):\r\n        self.sampler = sampler\r\n        self.batch_size = batch_size\r\n        self.drop_last = drop_last\r\n\r\n    def __iter__(self):\r\n        batch = []\r\n        for _, idx in enumerate(iter(self.sampler)):\r\n            batch = idx\r\n            yield batch\r\n\r\n        if len(batch) > 0 and not self.drop_last:\r\n            yield batch\r\n\r\n    def __len__(self):\r\n        return len(self.sampler) // self.batch_size"
  },
  {
    "path": "AutoEncoder/utils.py",
    "content": "from pathlib import Path\nfrom typing import Iterable, List, Tuple, Union\n\nimport numpy as np\nimport open3d as o3d\nimport torch\nimport torch.nn.functional as F\nfrom einops import repeat\nfrom torch import Tensor\nfrom tqdm import tqdm\n\n\ndef read_mesh(\n    mesh_path: Union[str, Path],\n    dtype: torch.dtype = torch.float,\n) -> Tuple[Tensor, Tensor]:\n    \"\"\"Read a mesh from a given file.\n    The mesh is returned as a tuple of torch tensors, containing:\n    - The vertices with shape (N, D). D can be 3 if only coordinates are available,\n      6 if also normals or colors are available, 9 if both normals\n      and colors are available.\n    - The trianges with shape (M, D). D can be 3 if normals are not available,\n      6 otherwise.\n    Args:\n        mesh_path: The path of the mesh file.\n        dtype: The data type for the output tensors.\n    Raises:\n        ValueError: If the given file doesn't exist.\n    Returns:\n        - The tensor with the mesh vertices with shape (N, D).\n        - The tensor with the mesh triangles with shape (M, D).\n    \"\"\"\n    mesh_path = Path(mesh_path)\n    if not mesh_path.exists():\n        raise ValueError(f\"The mesh file {str(mesh_path)} does not exists.\")\n\n    mesh_o3d = o3d.io.read_triangle_mesh(str(mesh_path))\n    return get_tensor_mesh_from_o3d(mesh_o3d, dtype)\n\n\ndef get_tensor_mesh_from_o3d(\n    mesh_o3d: o3d.geometry.TriangleMesh,\n    dtype: torch.dtype = torch.float,\n) -> Tuple[Tensor, Tensor]:\n    \"\"\"Convert an open3d mesh to a tuple of torch tensors.\n    The mesh is returned as a tuple of torch tensors, containing:\n    - The vertices with shape (N, D). D can be 3 if only coordinates are available,\n      6 if also normals or colors are available, 9 if both normals\n      and colors are available.\n    - The trianges with shape (M, D). D can be 3 if normals are not available,\n      6 otherwise.\n    Args:\n        mesh_o3d: The open3d mesh.\n    Returns:\n        - The tensor with the mesh vertices with shape (N, D).\n        - The tensor with the mesh triangles with shape (M, D).\n    \"\"\"\n    vertices = torch.tensor(np.asarray(mesh_o3d.vertices), dtype=dtype)\n\n    if len(mesh_o3d.vertex_normals) > 0:\n        vertices_normals = torch.tensor(\n            np.asarray(mesh_o3d.vertex_normals), dtype=dtype\n        )\n        vertices = torch.cat((vertices, vertices_normals), dim=-1)\n\n    if len(mesh_o3d.vertex_colors) > 0:\n        vertices_colors = torch.tensor(np.asarray(mesh_o3d.vertex_colors), dtype=dtype)\n        vertices = torch.cat((vertices, vertices_colors), dim=-1)\n\n    triangles = torch.tensor(np.asarray(mesh_o3d.triangles), dtype=dtype)\n\n    if len(mesh_o3d.triangle_normals) > 0:\n        triangles_normals = torch.tensor(\n            np.asarray(mesh_o3d.triangle_normals), dtype=dtype\n        )\n        triangles = torch.cat((triangles, triangles_normals), dim=-1)\n\n    return vertices, triangles\n\n\ndef get_o3d_mesh_from_tensors(\n    vertices: Union[Tensor, np.ndarray],\n    triangles: Union[Tensor, np.ndarray],\n) -> o3d.geometry.TriangleMesh:\n    \"\"\"Get open3d mesh from either numpy arrays or torch tensors.\n    The input vertices must have shape (NUM_VERTICES, D), where D\n    can be 3 (only X,Y,Z), 6 (X,Y,Z and normals) or 9 (X,Y,Z, normals and colors).\n    The input triangles must have shape (NUM_TRIANGLES, D), where D can be 3\n    (only vertex indices) or 6 (vertex indices and normals).\n    Args:\n        vertices: The numpy array or torch tensor with vertices\n            with shape (NUM_VERTICES, D).\n        triangles: The numpy array or torch tensor with triangles\n            with shape (NUM_TRIANGLES, D).\n    Returns:\n        The open3d mesh.\n    \"\"\"\n    mesh_o3d = o3d.geometry.TriangleMesh()\n\n    if isinstance(vertices, Tensor):\n        v = vertices.clone().detach().cpu().numpy()\n    else:\n        v = np.copy(vertices)\n\n    if isinstance(triangles, Tensor):\n        t = triangles.clone().detach().cpu().numpy()\n    else:\n        t = np.copy(triangles)\n\n    mesh_o3d.vertices = o3d.utility.Vector3dVector(v[:, :3])\n\n    if v.shape[1] == 6:\n        mesh_o3d.vertex_normals = o3d.utility.Vector3dVector(v[:, 3:6])\n\n    if v.shape[1] == 9:\n        mesh_o3d.vertex_colors = o3d.utility.Vector3dVector(v[:, 6:9])\n\n    mesh_o3d.triangles = o3d.utility.Vector3iVector(t[:, :3])\n\n    if t.shape[1] == 6:\n        mesh_o3d.triangle_normals = o3d.utility.Vector3dVector(t[:, 3:6])\n\n    return mesh_o3d\n\n\ndef progress_bar(iterable: Iterable, desc: str = \"\", num_cols: int = 60) -> Iterable:\n    \"\"\"Decorate an iterable object using a progress bar.\n    Args:\n        iterable: the iterable to decorate.\n        desc: the description to print. Defaults to \"\".\n        num_cols: The width of the entire output message. Defaults to 60.\n    Returns:\n        The decorated iterable.\n    \"\"\"\n    bar_format = \"{percentage:.0f}%|{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}]\"\n    if len(desc) > 0:\n        bar_format = \"{desc}: \" + bar_format\n    return tqdm(iterable, desc=desc, bar_format=bar_format, ncols=num_cols, leave=False)\n\n\ndef get_tensor_pcd_from_o3d(\n    pcd_o3d: o3d.geometry.PointCloud,\n    dtype: torch.dtype = torch.float,\n) -> Tensor:\n    \"\"\"Convert an open3d point cloud to a torch tensor.\n    The point cloud is returned as a torch tensor with shape (NUM_POINTS, D).\n    D can be 3 (only XYZ coordinates), 6 (XYZ coordinates and\n    normals/colors) or 9 (XYZ coordinates, normals and colors).\n    Args:\n        pcd_o3d: The open3d point cloud.\n    Returns:\n        A torch tensor with the loaded point cloud with shape (NUM_POINTS, D).\n    \"\"\"\n    pcd_torch = torch.tensor(np.asarray(pcd_o3d.points), dtype=dtype)\n\n    if len(pcd_o3d.normals) > 0:\n        normals_torch = torch.tensor(np.asarray(pcd_o3d.normals), dtype=dtype)\n        pcd_torch = torch.cat((pcd_torch, normals_torch), dim=-1)\n\n    if len(pcd_o3d.colors) > 0:\n        colors_torch = torch.tensor(np.asarray(pcd_o3d.colors), dtype=dtype)\n        pcd_torch = torch.cat((pcd_torch, colors_torch), dim=-1)\n\n    return pcd_torch\n\n\ndef sample_points_around_pcd(\n    pcd: Tensor,\n    stds: List[float],\n    num_points_per_std: List[int],\n    coords_range: Tuple[float, float],\n    device: str = \"cpu\",\n) -> Tensor:\n    \"\"\"Sample points around the given point cloud.\n    Points are sampled by adding gaussian noise to the input cloud,\n    according to the given standard deviations. Additionally, points\n    are also sampled uniformly in the given range.\n    Args:\n        pcd: The point cloud tensor with shape (N, 3).\n        stds: A list of standard deviations to compute the gaussian noise\n            to obtain the points.\n        num_points_per_std: A list with the number of points to sample for each\n            standard deviation. The last number refers to points sampled uniformly\n            in the given range (i.e., len(num_points_per_std) = len(stds) + 1).\n        coords_range: The range for the points coordinates.\n        device: The device for the sampled points. Defaults to \"cpu\".\n    Returns:\n        The sampled points with shape (M, 3).\n    \"\"\"\n    coords = torch.empty(0, 3).to(device)\n    num_points_pcd = pcd.shape[0]\n\n    for sigma, num_points in zip(stds, num_points_per_std[:-1]):\n        mul = num_points // num_points_pcd\n\n        if mul > 0:\n            coords_for_sampling = repeat(pcd, \"n d -> (n r) d\", r=mul).to(device)\n        else:\n            coords_for_sampling = torch.empty(0, 3).to(device)\n\n        still_needed = num_points % num_points_pcd\n        if still_needed > 0:\n            weights = torch.ones(num_points_pcd, dtype=torch.float).to(device)\n            indices_random = torch.multinomial(weights, still_needed, replacement=False)\n            pcd_random = pcd[indices_random].to(device)\n            coords_for_sampling = torch.cat((coords_for_sampling, pcd_random), dim=0)\n\n        offsets = torch.randn(num_points, 3).to(device) * sigma\n        coords_i = coords_for_sampling + offsets\n\n        coords = torch.cat((coords, coords_i), dim=0)\n\n    random_coords = torch.rand(num_points_per_std[-1], 3).to(device)\n    random_coords *= coords_range[1] - coords_range[0]\n    random_coords += coords_range[0]\n    coords = torch.cat((coords, random_coords), dim=0)\n\n    coords = torch.clip(coords, min=coords_range[0], max=coords_range[1])\n\n    return coords\n\n\ndef compute_udf_and_gradients(\n    mesh_o3d: o3d.geometry.TriangleMesh,\n    queries: Tensor,\n) -> Tuple[Tensor, Tensor]:\n    scene = o3d.t.geometry.RaycastingScene()\n    vertices = np.asarray(mesh_o3d.vertices, dtype=np.float32)\n    triangles = np.asarray(mesh_o3d.triangles, dtype=np.uint32)\n    _ = scene.add_triangles(vertices, triangles)\n\n    #signed_distance = scene.compute_signed_distance(query_point)\n    closest_points = scene.compute_closest_points(queries.numpy())[\"points\"]\n    closest_points = torch.tensor(closest_points.numpy())\n\n    q2p = queries - closest_points\n    udf = torch.linalg.vector_norm(q2p, dim=-1)\n    gradients = F.normalize(q2p, dim=-1)\n\n    return udf, gradients\n\ndef compute_sdf_and_gradients(\n    mesh_o3d: o3d.geometry.TriangleMesh,\n    queries: Tensor,\n) -> Tuple[Tensor, Tensor]:\n    scene = o3d.t.geometry.RaycastingScene()\n    vertices = np.asarray(mesh_o3d.vertices, dtype=np.float32)\n    triangles = np.asarray(mesh_o3d.triangles, dtype=np.uint32)\n    _ = scene.add_triangles(vertices, triangles)\n\n    signed_distance = scene.compute_signed_distance(queries.numpy())\n    closest_points = scene.compute_closest_points(queries.numpy())[\"points\"]\n    closest_points = torch.tensor(closest_points.numpy())\n    signed_distance = torch.tensor(signed_distance.numpy())\n\n    #print(signed_distance.shape)\n\n    #gradients = np.zeros((signed_distance.shape[0], 3))\n    q2p = queries - closest_points\n    gradients = F.normalize(q2p, dim=-1)\n    gradients = np.sign(signed_distance)[:, None] * gradients\n    #print(gradients.shape)\n\n    return signed_distance, gradients\n\n\n\ndef compute_udf_from_mesh(\n    mesh_o3d: o3d.geometry.TriangleMesh,\n    num_surface_points: int = 100_000,\n    num_queries_on_surface: int = 10_000,\n    queries_stds: List[float] = [0.003, 0.01, 0.1],\n    num_queries_per_std: List[int] = [5_000, 4_000, 500, 500],\n    coords_range: Tuple[float, float] = (-1.0, 1.0),\n    max_dist: float = 0.1,\n    convert_to_bce_labels: bool = False,\n    use_cuda: bool = True,\n    input_queries = None\n) -> Tuple[Tensor, Tensor, Tensor]:\n    pcd_o3d = mesh_o3d.sample_points_uniformly(number_of_points=num_surface_points)\n    pcd = get_tensor_pcd_from_o3d(pcd_o3d)[:, :3]\n\n    device = \"cuda\" if use_cuda else \"cpu\"\n    if input_queries is not None:\n        queries = input_queries\n    else:\n        queries = sample_points_around_pcd(\n            pcd,\n            queries_stds,\n            num_queries_per_std,\n            coords_range,\n            device,\n        )\n    queries = queries.cpu()\n\n    udf, gradients = compute_udf_and_gradients(mesh_o3d, queries)\n    values = torch.clip(udf, min=0, max=max_dist)\n\n    # q_on_surf_o3d = mesh_o3d.sample_points_uniformly(\n    #     number_of_points=num_queries_on_surface\n    # )\n    # queries_on_surface = get_tensor_pcd_from_o3d(q_on_surf_o3d)[:, :3]\n    # values_on_surface = torch.zeros(num_queries_on_surface)\n    # gradients_on_surface = torch.zeros(num_queries_on_surface, 3)\n\n    # queries = torch.cat([queries_on_surface, queries], dim=0)\n    # values = torch.cat([values_on_surface, values], dim=0)\n    # gradients = torch.cat([gradients_on_surface, gradients], dim=0)\n\n    # if convert_to_bce_labels:\n    #     values /= max_dist\n    #     values = 1 - values\n\n    return queries, values, gradients\n\n\ndef compute_sdf_from_mesh(\n    mesh_o3d: o3d.geometry.TriangleMesh,\n    num_surface_points: int = 100_000,\n    num_queries_on_surface: int = 10_000,\n    queries_stds: List[float] = [0.003, 0.01, 0.1],\n    num_queries_per_std: List[int] = [5_000, 4_000, 500, 500],\n    coords_range: Tuple[float, float] = (-1.0, 1.0),\n    max_dist: float = 0.1,\n    convert_to_bce_labels: bool = False,\n    use_cuda: bool = True,\n    input_queries = None\n) -> Tuple[Tensor, Tensor, Tensor]:\n    pcd_o3d = mesh_o3d.sample_points_uniformly(number_of_points=num_surface_points)\n    pcd = get_tensor_pcd_from_o3d(pcd_o3d)[:, :3]\n\n    device = \"cuda\" if use_cuda else \"cpu\"\n    if input_queries is not None:\n        queries = input_queries\n    else:\n        queries = sample_points_around_pcd(\n            pcd,\n            queries_stds,\n            num_queries_per_std,\n            coords_range,\n            device,\n        )\n    queries = queries.cpu()\n\n    sdf, gradients = compute_sdf_and_gradients(mesh_o3d, queries)\n    values = torch.clip(sdf, min=-max_dist, max=max_dist)\n\n    q_on_surf_o3d = mesh_o3d.sample_points_uniformly(\n        number_of_points=num_queries_on_surface\n    )\n    queries_on_surface = get_tensor_pcd_from_o3d(q_on_surf_o3d)[:, :3]\n    values_on_surface = torch.zeros(num_queries_on_surface)\n    gradients_on_surface = torch.zeros(num_queries_on_surface, 3)\n\n    queries = torch.cat([queries_on_surface, queries], dim=0)\n    values = torch.cat([values_on_surface, values], dim=0)\n    gradients = torch.cat([gradients_on_surface, gradients], dim=0)\n\n    if convert_to_bce_labels:\n        values /= max_dist\n        values = 1 - values\n\n    return queries, values, gradients\n\ndef compute_gradients(x: Tensor, y: Tensor) -> Tensor:\n    grad_outputs = torch.ones_like(y)\n    grads = torch.autograd.grad(y, x, grad_outputs=grad_outputs, create_graph=True)[0]\n    return grads\n\n\ndef batchify(inputs: List[Tensor], required_dim: int) -> Tuple[bool, List[Tensor]]:\n    \"\"\"Batchify input tensors if needed.\n    All the input tensors with a number of dimensions smaller than\n    required_dim will be expanded with a leading batch dimension.\n    Args:\n        inputs: The tensors to batchify.\n        required_dim: The required number of dimensions.\n    Returns:\n        - A flag that indicates wether one of the inputs has been batchified.\n        - The batchified tensors.\n    \"\"\"\n    results: List[Tensor] = []\n    has_changed = False\n\n    for t in inputs:\n        has_changed = len(t.shape) < required_dim or has_changed\n        batched_t = torch.unsqueeze(t, dim=0) if has_changed else t\n        results.append(batched_t)\n\n    return has_changed, results\n\n\ndef unbatchify(inputs: List[Tensor]) -> List[Tensor]:\n    \"\"\"Remove batch dimension from input tensors.\n    Args:\n        inputs: The tensors to unbatchify.\n    Returns:\n        The unbatchified tensors.\n    \"\"\"\n    results: List[Tensor] = []\n    for t in inputs:\n        unbatched_t = torch.squeeze(t, dim=0)\n        results.append(unbatched_t)\n\n    return results\n\n\ndef random_point_sampling(pcd: Tensor, num_points: int) -> Tensor:\n    \"\"\"Sample the requested number of points from the given point cloud(s).\n    Points are sampled randomly. If num_points is greater than NUM_POINTS,\n    then points are sampled with replacement.\n    Args:\n        pcd: The input point cloud(s) with shape ([B,] NUM_POINTS, D).\n        num_points: The number of points to sample.\n    Returns:\n        The sampled points with shape ([B,] NUM_SAMPLED_POINTS, D).\n    \"\"\"\n    batched, [pcd] = batchify([pcd], 3)\n\n    batch_size, original_num_points, _ = pcd.shape\n\n    weights = torch.ones((batch_size, original_num_points), dtype=torch.float)\n    weights = weights.to(pcd.device)\n\n    replacement = original_num_points < num_points\n\n    indices_to_sample = torch.multinomial(weights, num_points, replacement=replacement)\n    \n    batch_indices = torch.arange(batch_size).reshape(batch_size, 1)\n    sampled_points = pcd[batch_indices, indices_to_sample]\n\n    if batched:\n        [sampled_points] = unbatchify([sampled_points])\n\n    return sampled_points\n"
  },
  {
    "path": "CLIP/.gitignore",
    "content": "__pycache__/\n*.py[cod]\n*$py.class\n*.egg-info\n.pytest_cache\n.ipynb_checkpoints\n\nthumbs.db\n.DS_Store\n.idea\n"
  },
  {
    "path": "CLIP/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2021 OpenAI\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "CLIP/MANIFEST.in",
    "content": "include clip/bpe_simple_vocab_16e6.txt.gz\n"
  },
  {
    "path": "CLIP/README.md",
    "content": "# CLIP\n\n[[Blog]](https://openai.com/blog/clip/) [[Paper]](https://arxiv.org/abs/2103.00020) [[Model Card]](model-card.md) [[Colab]](https://colab.research.google.com/github/openai/clip/blob/master/notebooks/Interacting_with_CLIP.ipynb)\n\nCLIP (Contrastive Language-Image Pre-Training) is a neural network trained on a variety of (image, text) pairs. It can be instructed in natural language to predict the most relevant text snippet, given an image, without directly optimizing for the task, similarly to the zero-shot capabilities of GPT-2 and 3. We found CLIP matches the performance of the original ResNet50 on ImageNet “zero-shot” without using any of the original 1.28M labeled examples, overcoming several major challenges in computer vision.\n\n\n\n## Approach\n\n![CLIP](CLIP.png)\n\n\n\n## Usage\n\nFirst, [install PyTorch 1.7.1](https://pytorch.org/get-started/locally/) (or later) and torchvision, as well as small additional dependencies, and then install this repo as a Python package. On a CUDA GPU machine, the following will do the trick:\n\n```bash\n$ conda install --yes -c pytorch pytorch=1.7.1 torchvision cudatoolkit=11.0\n$ pip install ftfy regex tqdm\n$ pip install git+https://github.com/openai/CLIP.git\n```\n\nReplace `cudatoolkit=11.0` above with the appropriate CUDA version on your machine or `cpuonly` when installing on a machine without a GPU.\n\n```python\nimport torch\nimport clip\nfrom PIL import Image\n\ndevice = \"cuda\" if torch.cuda.is_available() else \"cpu\"\nmodel, preprocess = clip.load(\"ViT-B/32\", device=device)\n\nimage = preprocess(Image.open(\"CLIP.png\")).unsqueeze(0).to(device)\ntext = clip.tokenize([\"a diagram\", \"a dog\", \"a cat\"]).to(device)\n\nwith torch.no_grad():\n    image_features = model.encode_image(image)\n    text_features = model.encode_text(text)\n    \n    logits_per_image, logits_per_text = model(image, text)\n    probs = logits_per_image.softmax(dim=-1).cpu().numpy()\n\nprint(\"Label probs:\", probs)  # prints: [[0.9927937  0.00421068 0.00299572]]\n```\n\n\n## API\n\nThe CLIP module `clip` provides the following methods:\n\n#### `clip.available_models()`\n\nReturns the names of the available CLIP models.\n\n#### `clip.load(name, device=..., jit=False)`\n\nReturns the model and the TorchVision transform needed by the model, specified by the model name returned by `clip.available_models()`. It will download the model as necessary. The `name` argument can also be a path to a local checkpoint.\n\nThe device to run the model can be optionally specified, and the default is to use the first CUDA device if there is any, otherwise the CPU. When `jit` is `False`, a non-JIT version of the model will be loaded.\n\n#### `clip.tokenize(text: Union[str, List[str]], context_length=77)`\n\nReturns a LongTensor containing tokenized sequences of given text input(s). This can be used as the input to the model\n\n---\n\nThe model returned by `clip.load()` supports the following methods:\n\n#### `model.encode_image(image: Tensor)`\n\nGiven a batch of images, returns the image features encoded by the vision portion of the CLIP model.\n\n#### `model.encode_text(text: Tensor)`\n\nGiven a batch of text tokens, returns the text features encoded by the language portion of the CLIP model.\n\n#### `model(image: Tensor, text: Tensor)`\n\nGiven a batch of images and a batch of text tokens, returns two Tensors, containing the logit scores corresponding to each image and text input. The values are cosine similarities between the corresponding image and text features, times 100.\n\n\n\n## More Examples\n\n### Zero-Shot Prediction\n\nThe code below performs zero-shot prediction using CLIP, as shown in Appendix B in the paper. This example takes an image from the [CIFAR-100 dataset](https://www.cs.toronto.edu/~kriz/cifar.html), and predicts the most likely labels among the 100 textual labels from the dataset.\n\n```python\nimport os\nimport clip\nimport torch\nfrom torchvision.datasets import CIFAR100\n\n# Load the model\ndevice = \"cuda\" if torch.cuda.is_available() else \"cpu\"\nmodel, preprocess = clip.load('ViT-B/32', device)\n\n# Download the dataset\ncifar100 = CIFAR100(root=os.path.expanduser(\"~/.cache\"), download=True, train=False)\n\n# Prepare the inputs\nimage, class_id = cifar100[3637]\nimage_input = preprocess(image).unsqueeze(0).to(device)\ntext_inputs = torch.cat([clip.tokenize(f\"a photo of a {c}\") for c in cifar100.classes]).to(device)\n\n# Calculate features\nwith torch.no_grad():\n    image_features = model.encode_image(image_input)\n    text_features = model.encode_text(text_inputs)\n\n# Pick the top 5 most similar labels for the image\nimage_features /= image_features.norm(dim=-1, keepdim=True)\ntext_features /= text_features.norm(dim=-1, keepdim=True)\nsimilarity = (100.0 * image_features @ text_features.T).softmax(dim=-1)\nvalues, indices = similarity[0].topk(5)\n\n# Print the result\nprint(\"\\nTop predictions:\\n\")\nfor value, index in zip(values, indices):\n    print(f\"{cifar100.classes[index]:>16s}: {100 * value.item():.2f}%\")\n```\n\nThe output will look like the following (the exact numbers may be slightly different depending on the compute device):\n\n```\nTop predictions:\n\n           snake: 65.31%\n          turtle: 12.29%\n    sweet_pepper: 3.83%\n          lizard: 1.88%\n       crocodile: 1.75%\n```\n\nNote that this example uses the `encode_image()` and `encode_text()` methods that return the encoded features of given inputs.\n\n\n### Linear-probe evaluation\n\nThe example below uses [scikit-learn](https://scikit-learn.org/) to perform logistic regression on image features.\n\n```python\nimport os\nimport clip\nimport torch\n\nimport numpy as np\nfrom sklearn.linear_model import LogisticRegression\nfrom torch.utils.data import DataLoader\nfrom torchvision.datasets import CIFAR100\nfrom tqdm import tqdm\n\n# Load the model\ndevice = \"cuda\" if torch.cuda.is_available() else \"cpu\"\nmodel, preprocess = clip.load('ViT-B/32', device)\n\n# Load the dataset\nroot = os.path.expanduser(\"~/.cache\")\ntrain = CIFAR100(root, download=True, train=True, transform=preprocess)\ntest = CIFAR100(root, download=True, train=False, transform=preprocess)\n\n\ndef get_features(dataset):\n    all_features = []\n    all_labels = []\n    \n    with torch.no_grad():\n        for images, labels in tqdm(DataLoader(dataset, batch_size=100)):\n            features = model.encode_image(images.to(device))\n\n            all_features.append(features)\n            all_labels.append(labels)\n\n    return torch.cat(all_features).cpu().numpy(), torch.cat(all_labels).cpu().numpy()\n\n# Calculate the image features\ntrain_features, train_labels = get_features(train)\ntest_features, test_labels = get_features(test)\n\n# Perform logistic regression\nclassifier = LogisticRegression(random_state=0, C=0.316, max_iter=1000, verbose=1)\nclassifier.fit(train_features, train_labels)\n\n# Evaluate using the logistic regression classifier\npredictions = classifier.predict(test_features)\naccuracy = np.mean((test_labels == predictions).astype(float)) * 100.\nprint(f\"Accuracy = {accuracy:.3f}\")\n```\n\nNote that the `C` value should be determined via a hyperparameter sweep using a validation split.\n\n\n## See Also\n\n* [OpenCLIP](https://github.com/mlfoundations/open_clip): includes larger and independently trained CLIP models up to ViT-G/14\n* [Hugging Face implementation of CLIP](https://huggingface.co/docs/transformers/model_doc/clip): for easier integration with the HF ecosystem\n"
  },
  {
    "path": "CLIP/__init__.py",
    "content": "from .clip import *\n"
  },
  {
    "path": "CLIP/clip/__init__.py",
    "content": "from .clip import *\n"
  },
  {
    "path": "CLIP/clip/clip.py",
    "content": "import hashlib\nimport os\nimport urllib\nimport warnings\nfrom typing import Any, Union, List\nfrom pkg_resources import packaging\n\nimport torch\nfrom PIL import Image\nfrom torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize\nfrom tqdm import tqdm\n\nfrom .model import build_model\nfrom .simple_tokenizer import SimpleTokenizer as _Tokenizer\n\ntry:\n    from torchvision.transforms import InterpolationMode\n    BICUBIC = InterpolationMode.BICUBIC\nexcept ImportError:\n    BICUBIC = Image.BICUBIC\n\n\nif packaging.version.parse(torch.__version__) < packaging.version.parse(\"1.7.1\"):\n    warnings.warn(\"PyTorch version 1.7.1 or higher is recommended\")\n\n\n__all__ = [\"available_models\", \"load\", \"tokenize\"]\n_tokenizer = _Tokenizer()\n\n_MODELS = {\n    \"RN50\": \"https://openaipublic.azureedge.net/clip/models/afeb0e10f9e5a86da6080e35cf09123aca3b358a0c3e3b6c78a7b63bc04b6762/RN50.pt\",\n    \"RN101\": \"https://openaipublic.azureedge.net/clip/models/8fa8567bab74a42d41c5915025a8e4538c3bdbe8804a470a72f30b0d94fab599/RN101.pt\",\n    \"RN50x4\": \"https://openaipublic.azureedge.net/clip/models/7e526bd135e493cef0776de27d5f42653e6b4c8bf9e0f653bb11773263205fdd/RN50x4.pt\",\n    \"RN50x16\": \"https://openaipublic.azureedge.net/clip/models/52378b407f34354e150460fe41077663dd5b39c54cd0bfd2b27167a4a06ec9aa/RN50x16.pt\",\n    \"RN50x64\": \"https://openaipublic.azureedge.net/clip/models/be1cfb55d75a9666199fb2206c106743da0f6468c9d327f3e0d0a543a9919d9c/RN50x64.pt\",\n    \"ViT-B/32\": \"https://openaipublic.azureedge.net/clip/models/40d365715913c9da98579312b702a82c18be219cc2a73407c4526f58eba950af/ViT-B-32.pt\",\n    \"ViT-B/16\": \"https://openaipublic.azureedge.net/clip/models/5806e77cd80f8b59890b7e101eabd078d9fb84e6937f9e85e4ecb61988df416f/ViT-B-16.pt\",\n    \"ViT-L/14\": \"https://openaipublic.azureedge.net/clip/models/b8cca3fd41ae0c99ba7e8951adf17d267cdb84cd88be6f7c2e0eca1737a03836/ViT-L-14.pt\",\n    \"ViT-L/14@336px\": \"https://openaipublic.azureedge.net/clip/models/3035c92b350959924f9f00213499208652fc7ea050643e8b385c2dac08641f02/ViT-L-14-336px.pt\",\n}\n\n\ndef _download(url: str, root: str):\n    os.makedirs(root, exist_ok=True)\n    filename = os.path.basename(url)\n\n    expected_sha256 = url.split(\"/\")[-2]\n    download_target = os.path.join(root, filename)\n\n    if os.path.exists(download_target) and not os.path.isfile(download_target):\n        raise RuntimeError(f\"{download_target} exists and is not a regular file\")\n\n    if os.path.isfile(download_target):\n        if hashlib.sha256(open(download_target, \"rb\").read()).hexdigest() == expected_sha256:\n            return download_target\n        else:\n            warnings.warn(f\"{download_target} exists, but the SHA256 checksum does not match; re-downloading the file\")\n\n    with urllib.request.urlopen(url) as source, open(download_target, \"wb\") as output:\n        with tqdm(total=int(source.info().get(\"Content-Length\")), ncols=80, unit='iB', unit_scale=True, unit_divisor=1024) as loop:\n            while True:\n                buffer = source.read(8192)\n                if not buffer:\n                    break\n\n                output.write(buffer)\n                loop.update(len(buffer))\n\n    if hashlib.sha256(open(download_target, \"rb\").read()).hexdigest() != expected_sha256:\n        raise RuntimeError(\"Model has been downloaded but the SHA256 checksum does not not match\")\n\n    return download_target\n\n\ndef _convert_image_to_rgb(image):\n    return image.convert(\"RGB\")\n\n\ndef _transform(n_px):\n    return Compose([\n        Resize(n_px, interpolation=BICUBIC),\n        CenterCrop(n_px),\n        _convert_image_to_rgb,\n        ToTensor(),\n        Normalize((0.48145466, 0.4578275, 0.40821073), (0.26862954, 0.26130258, 0.27577711)),\n    ])\n\n\ndef available_models() -> List[str]:\n    \"\"\"Returns the names of available CLIP models\"\"\"\n    return list(_MODELS.keys())\n\n\ndef load(name: str, device: Union[str, torch.device] = \"cuda\" if torch.cuda.is_available() else \"cpu\", jit: bool = False, download_root: str = None):\n    \"\"\"Load a CLIP model\n\n    Parameters\n    ----------\n    name : str\n        A model name listed by `clip.available_models()`, or the path to a model checkpoint containing the state_dict\n\n    device : Union[str, torch.device]\n        The device to put the loaded model\n\n    jit : bool\n        Whether to load the optimized JIT model or more hackable non-JIT model (default).\n\n    download_root: str\n        path to download the model files; by default, it uses \"~/.cache/clip\"\n\n    Returns\n    -------\n    model : torch.nn.Module\n        The CLIP model\n\n    preprocess : Callable[[PIL.Image], torch.Tensor]\n        A torchvision transform that converts a PIL image into a tensor that the returned model can take as its input\n    \"\"\"\n    if name in _MODELS:\n        model_path = _download(_MODELS[name], download_root or os.path.expanduser(\"~/.cache/clip\"))\n    elif os.path.isfile(name):\n        model_path = name\n    else:\n        raise RuntimeError(f\"Model {name} not found; available models = {available_models()}\")\n\n    with open(model_path, 'rb') as opened_file:\n        try:\n            # loading JIT archive\n            model = torch.jit.load(opened_file, map_location=device if jit else \"cpu\").eval()\n            state_dict = None\n        except RuntimeError:\n            # loading saved state dict\n            if jit:\n                warnings.warn(f\"File {model_path} is not a JIT archive. Loading as a state dict instead\")\n                jit = False\n            state_dict = torch.load(opened_file, map_location=\"cpu\")\n\n    if not jit:\n        model = build_model(state_dict or model.state_dict()).to(device)\n        if str(device) == \"cpu\":\n            model.float()\n        return model, _transform(model.visual.input_resolution)\n\n    # patch the device names\n    device_holder = torch.jit.trace(lambda: torch.ones([]).to(torch.device(device)), example_inputs=[])\n    device_node = [n for n in device_holder.graph.findAllNodes(\"prim::Constant\") if \"Device\" in repr(n)][-1]\n\n    def patch_device(module):\n        try:\n            graphs = [module.graph] if hasattr(module, \"graph\") else []\n        except RuntimeError:\n            graphs = []\n\n        if hasattr(module, \"forward1\"):\n            graphs.append(module.forward1.graph)\n\n        for graph in graphs:\n            for node in graph.findAllNodes(\"prim::Constant\"):\n                if \"value\" in node.attributeNames() and str(node[\"value\"]).startswith(\"cuda\"):\n                    node.copyAttributes(device_node)\n\n    model.apply(patch_device)\n    patch_device(model.encode_image)\n    patch_device(model.encode_text)\n\n    # patch dtype to float32 on CPU\n    if str(device) == \"cpu\":\n        float_holder = torch.jit.trace(lambda: torch.ones([]).float(), example_inputs=[])\n        float_input = list(float_holder.graph.findNode(\"aten::to\").inputs())[1]\n        float_node = float_input.node()\n\n        def patch_float(module):\n            try:\n                graphs = [module.graph] if hasattr(module, \"graph\") else []\n            except RuntimeError:\n                graphs = []\n\n            if hasattr(module, \"forward1\"):\n                graphs.append(module.forward1.graph)\n\n            for graph in graphs:\n                for node in graph.findAllNodes(\"aten::to\"):\n                    inputs = list(node.inputs())\n                    for i in [1, 2]:  # dtype can be the second or third argument to aten::to()\n                        if inputs[i].node()[\"value\"] == 5:\n                            inputs[i].node().copyAttributes(float_node)\n\n        model.apply(patch_float)\n        patch_float(model.encode_image)\n        patch_float(model.encode_text)\n\n        model.float()\n\n    return model, _transform(model.input_resolution.item())\n\n\ndef tokenize(texts: Union[str, List[str]], context_length: int = 77, truncate: bool = False) -> Union[torch.IntTensor, torch.LongTensor]:\n    \"\"\"\n    Returns the tokenized representation of given input string(s)\n\n    Parameters\n    ----------\n    texts : Union[str, List[str]]\n        An input string or a list of input strings to tokenize\n\n    context_length : int\n        The context length to use; all CLIP models use 77 as the context length\n\n    truncate: bool\n        Whether to truncate the text in case its encoding is longer than the context length\n\n    Returns\n    -------\n    A two-dimensional tensor containing the resulting tokens, shape = [number of input strings, context_length].\n    We return LongTensor when torch version is <1.8.0, since older index_select requires indices to be long.\n    \"\"\"\n    if isinstance(texts, str):\n        texts = [texts]\n\n    sot_token = _tokenizer.encoder[\"<|startoftext|>\"]\n    eot_token = _tokenizer.encoder[\"<|endoftext|>\"]\n    all_tokens = [[sot_token] + _tokenizer.encode(text) + [eot_token] for text in texts]\n    if packaging.version.parse(torch.__version__) < packaging.version.parse(\"1.8.0\"):\n        result = torch.zeros(len(all_tokens), context_length, dtype=torch.long)\n    else:\n        result = torch.zeros(len(all_tokens), context_length, dtype=torch.int)\n\n    for i, tokens in enumerate(all_tokens):\n        if len(tokens) > context_length:\n            if truncate:\n                tokens = tokens[:context_length]\n                tokens[-1] = eot_token\n            else:\n                raise RuntimeError(f\"Input {texts[i]} is too long for context length {context_length}\")\n        result[i, :len(tokens)] = torch.tensor(tokens)\n\n    return result\n"
  },
  {
    "path": "CLIP/clip/model.py",
    "content": "from collections import OrderedDict\nfrom typing import Tuple, Union\n\nimport numpy as np\nimport torch\nimport torch.nn.functional as F\nfrom torch import nn\n\n\nclass Bottleneck(nn.Module):\n    expansion = 4\n\n    def __init__(self, inplanes, planes, stride=1):\n        super().__init__()\n\n        # all conv layers have stride 1. an avgpool is performed after the second convolution when stride > 1\n        self.conv1 = nn.Conv2d(inplanes, planes, 1, bias=False)\n        self.bn1 = nn.BatchNorm2d(planes)\n        self.relu1 = nn.ReLU(inplace=True)\n\n        self.conv2 = nn.Conv2d(planes, planes, 3, padding=1, bias=False)\n        self.bn2 = nn.BatchNorm2d(planes)\n        self.relu2 = nn.ReLU(inplace=True)\n\n        self.avgpool = nn.AvgPool2d(stride) if stride > 1 else nn.Identity()\n\n        self.conv3 = nn.Conv2d(planes, planes * self.expansion, 1, bias=False)\n        self.bn3 = nn.BatchNorm2d(planes * self.expansion)\n        self.relu3 = nn.ReLU(inplace=True)\n\n        self.downsample = None\n        self.stride = stride\n\n        if stride > 1 or inplanes != planes * Bottleneck.expansion:\n            # downsampling layer is prepended with an avgpool, and the subsequent convolution has stride 1\n            self.downsample = nn.Sequential(OrderedDict([\n                (\"-1\", nn.AvgPool2d(stride)),\n                (\"0\", nn.Conv2d(inplanes, planes * self.expansion, 1, stride=1, bias=False)),\n                (\"1\", nn.BatchNorm2d(planes * self.expansion))\n            ]))\n\n    def forward(self, x: torch.Tensor):\n        identity = x\n\n        out = self.relu1(self.bn1(self.conv1(x)))\n        out = self.relu2(self.bn2(self.conv2(out)))\n        out = self.avgpool(out)\n        out = self.bn3(self.conv3(out))\n\n        if self.downsample is not None:\n            identity = self.downsample(x)\n\n        out += identity\n        out = self.relu3(out)\n        return out\n\n\nclass AttentionPool2d(nn.Module):\n    def __init__(self, spacial_dim: int, embed_dim: int, num_heads: int, output_dim: int = None):\n        super().__init__()\n        self.positional_embedding = nn.Parameter(torch.randn(spacial_dim ** 2 + 1, embed_dim) / embed_dim ** 0.5)\n        self.k_proj = nn.Linear(embed_dim, embed_dim)\n        self.q_proj = nn.Linear(embed_dim, embed_dim)\n        self.v_proj = nn.Linear(embed_dim, embed_dim)\n        self.c_proj = nn.Linear(embed_dim, output_dim or embed_dim)\n        self.num_heads = num_heads\n\n    def forward(self, x):\n        x = x.flatten(start_dim=2).permute(2, 0, 1)  # NCHW -> (HW)NC\n        x = torch.cat([x.mean(dim=0, keepdim=True), x], dim=0)  # (HW+1)NC\n        x = x + self.positional_embedding[:, None, :].to(x.dtype)  # (HW+1)NC\n        x, _ = F.multi_head_attention_forward(\n            query=x[:1], key=x, value=x,\n            embed_dim_to_check=x.shape[-1],\n            num_heads=self.num_heads,\n            q_proj_weight=self.q_proj.weight,\n            k_proj_weight=self.k_proj.weight,\n            v_proj_weight=self.v_proj.weight,\n            in_proj_weight=None,\n            in_proj_bias=torch.cat([self.q_proj.bias, self.k_proj.bias, self.v_proj.bias]),\n            bias_k=None,\n            bias_v=None,\n            add_zero_attn=False,\n            dropout_p=0,\n            out_proj_weight=self.c_proj.weight,\n            out_proj_bias=self.c_proj.bias,\n            use_separate_proj_weight=True,\n            training=self.training,\n            need_weights=False\n        )\n        return x.squeeze(0)\n\n\nclass ModifiedResNet(nn.Module):\n    \"\"\"\n    A ResNet class that is similar to torchvision's but contains the following changes:\n    - There are now 3 \"stem\" convolutions as opposed to 1, with an average pool instead of a max pool.\n    - Performs anti-aliasing strided convolutions, where an avgpool is prepended to convolutions with stride > 1\n    - The final pooling layer is a QKV attention instead of an average pool\n    \"\"\"\n\n    def __init__(self, layers, output_dim, heads, input_resolution=224, width=64):\n        super().__init__()\n        self.output_dim = output_dim\n        self.input_resolution = input_resolution\n\n        # the 3-layer stem\n        self.conv1 = nn.Conv2d(3, width // 2, kernel_size=3, stride=2, padding=1, bias=False)\n        self.bn1 = nn.BatchNorm2d(width // 2)\n        self.relu1 = nn.ReLU(inplace=True)\n        self.conv2 = nn.Conv2d(width // 2, width // 2, kernel_size=3, padding=1, bias=False)\n        self.bn2 = nn.BatchNorm2d(width // 2)\n        self.relu2 = nn.ReLU(inplace=True)\n        self.conv3 = nn.Conv2d(width // 2, width, kernel_size=3, padding=1, bias=False)\n        self.bn3 = nn.BatchNorm2d(width)\n        self.relu3 = nn.ReLU(inplace=True)\n        self.avgpool = nn.AvgPool2d(2)\n\n        # residual layers\n        self._inplanes = width  # this is a *mutable* variable used during construction\n        self.layer1 = self._make_layer(width, layers[0])\n        self.layer2 = self._make_layer(width * 2, layers[1], stride=2)\n        self.layer3 = self._make_layer(width * 4, layers[2], stride=2)\n        self.layer4 = self._make_layer(width * 8, layers[3], stride=2)\n\n        embed_dim = width * 32  # the ResNet feature dimension\n        self.attnpool = AttentionPool2d(input_resolution // 32, embed_dim, heads, output_dim)\n\n    def _make_layer(self, planes, blocks, stride=1):\n        layers = [Bottleneck(self._inplanes, planes, stride)]\n\n        self._inplanes = planes * Bottleneck.expansion\n        for _ in range(1, blocks):\n            layers.append(Bottleneck(self._inplanes, planes))\n\n        return nn.Sequential(*layers)\n\n    def forward(self, x):\n        def stem(x):\n            x = self.relu1(self.bn1(self.conv1(x)))\n            x = self.relu2(self.bn2(self.conv2(x)))\n            x = self.relu3(self.bn3(self.conv3(x)))\n            x = self.avgpool(x)\n            return x\n\n        x = x.type(self.conv1.weight.dtype)\n        x = stem(x)\n        x = self.layer1(x)\n        x = self.layer2(x)\n        x = self.layer3(x)\n        x = self.layer4(x)\n        x = self.attnpool(x)\n\n        return x\n\n\nclass LayerNorm(nn.LayerNorm):\n    \"\"\"Subclass torch's LayerNorm to handle fp16.\"\"\"\n\n    def forward(self, x: torch.Tensor):\n        orig_type = x.dtype\n        ret = super().forward(x.type(torch.float32))\n        return ret.type(orig_type)\n\n\nclass QuickGELU(nn.Module):\n    def forward(self, x: torch.Tensor):\n        return x * torch.sigmoid(1.702 * x)\n\n\nclass ResidualAttentionBlock(nn.Module):\n    def __init__(self, d_model: int, n_head: int, attn_mask: torch.Tensor = None):\n        super().__init__()\n\n        self.attn = nn.MultiheadAttention(d_model, n_head)\n        self.ln_1 = LayerNorm(d_model)\n        self.mlp = nn.Sequential(OrderedDict([\n            (\"c_fc\", nn.Linear(d_model, d_model * 4)),\n            (\"gelu\", QuickGELU()),\n            (\"c_proj\", nn.Linear(d_model * 4, d_model))\n        ]))\n        self.ln_2 = LayerNorm(d_model)\n        self.attn_mask = attn_mask\n\n    def attention(self, x: torch.Tensor):\n        self.attn_mask = self.attn_mask.to(dtype=x.dtype, device=x.device) if self.attn_mask is not None else None\n        return self.attn(x, x, x, need_weights=False, attn_mask=self.attn_mask)[0]\n\n    def forward(self, x: torch.Tensor):\n        x = x + self.attention(self.ln_1(x))\n        x = x + self.mlp(self.ln_2(x))\n        return x\n\n\nclass Transformer(nn.Module):\n    def __init__(self, width: int, layers: int, heads: int, attn_mask: torch.Tensor = None):\n        super().__init__()\n        self.width = width\n        self.layers = layers\n        self.resblocks = nn.Sequential(*[ResidualAttentionBlock(width, heads, attn_mask) for _ in range(layers)])\n\n    def forward(self, x: torch.Tensor):\n        return self.resblocks(x)\n\n\nclass VisionTransformer(nn.Module):\n    def __init__(self, input_resolution: int, patch_size: int, width: int, layers: int, heads: int, output_dim: int):\n        super().__init__()\n        self.input_resolution = input_resolution\n        self.output_dim = output_dim\n        self.conv1 = nn.Conv2d(in_channels=3, out_channels=width, kernel_size=patch_size, stride=patch_size, bias=False)\n\n        scale = width ** -0.5\n        self.class_embedding = nn.Parameter(scale * torch.randn(width))\n        self.positional_embedding = nn.Parameter(scale * torch.randn((input_resolution // patch_size) ** 2 + 1, width))\n        self.ln_pre = LayerNorm(width)\n\n        self.transformer = Transformer(width, layers, heads)\n\n        self.ln_post = LayerNorm(width)\n        self.proj = nn.Parameter(scale * torch.randn(width, output_dim))\n\n    def forward(self, x: torch.Tensor):\n        x = self.conv1(x)  # shape = [*, width, grid, grid]\n        x = x.reshape(x.shape[0], x.shape[1], -1)  # shape = [*, width, grid ** 2]\n        x = x.permute(0, 2, 1)  # shape = [*, grid ** 2, width]\n        x = torch.cat([self.class_embedding.to(x.dtype) + torch.zeros(x.shape[0], 1, x.shape[-1], dtype=x.dtype, device=x.device), x], dim=1)  # shape = [*, grid ** 2 + 1, width]\n        x = x + self.positional_embedding.to(x.dtype)\n        x = self.ln_pre(x)\n\n        x = x.permute(1, 0, 2)  # NLD -> LND\n        x = self.transformer(x)\n        x = x.permute(1, 0, 2)  # LND -> NLD\n\n        x = self.ln_post(x[:, 0, :])\n\n        if self.proj is not None:\n            x = x @ self.proj\n\n        return x\n\n\nclass CLIP(nn.Module):\n    def __init__(self,\n                 embed_dim: int,\n                 # vision\n                 image_resolution: int,\n                 vision_layers: Union[Tuple[int, int, int, int], int],\n                 vision_width: int,\n                 vision_patch_size: int,\n                 # text\n                 context_length: int,\n                 vocab_size: int,\n                 transformer_width: int,\n                 transformer_heads: int,\n                 transformer_layers: int\n                 ):\n        super().__init__()\n\n        self.context_length = context_length\n\n        if isinstance(vision_layers, (tuple, list)):\n            vision_heads = vision_width * 32 // 64\n            self.visual = ModifiedResNet(\n                layers=vision_layers,\n                output_dim=embed_dim,\n                heads=vision_heads,\n                input_resolution=image_resolution,\n                width=vision_width\n            )\n        else:\n            vision_heads = vision_width // 64\n            self.visual = VisionTransformer(\n                input_resolution=image_resolution,\n                patch_size=vision_patch_size,\n                width=vision_width,\n                layers=vision_layers,\n                heads=vision_heads,\n                output_dim=embed_dim\n            )\n\n        self.transformer = Transformer(\n            width=transformer_width,\n            layers=transformer_layers,\n            heads=transformer_heads,\n            attn_mask=self.build_attention_mask()\n        )\n\n        self.vocab_size = vocab_size\n        self.token_embedding = nn.Embedding(vocab_size, transformer_width)\n        self.positional_embedding = nn.Parameter(torch.empty(self.context_length, transformer_width))\n        self.ln_final = LayerNorm(transformer_width)\n\n        self.text_projection = nn.Parameter(torch.empty(transformer_width, embed_dim))\n        self.logit_scale = nn.Parameter(torch.ones([]) * np.log(1 / 0.07))\n\n        self.initialize_parameters()\n\n    def initialize_parameters(self):\n        nn.init.normal_(self.token_embedding.weight, std=0.02)\n        nn.init.normal_(self.positional_embedding, std=0.01)\n\n        if isinstance(self.visual, ModifiedResNet):\n            if self.visual.attnpool is not None:\n                std = self.visual.attnpool.c_proj.in_features ** -0.5\n                nn.init.normal_(self.visual.attnpool.q_proj.weight, std=std)\n                nn.init.normal_(self.visual.attnpool.k_proj.weight, std=std)\n                nn.init.normal_(self.visual.attnpool.v_proj.weight, std=std)\n                nn.init.normal_(self.visual.attnpool.c_proj.weight, std=std)\n\n            for resnet_block in [self.visual.layer1, self.visual.layer2, self.visual.layer3, self.visual.layer4]:\n                for name, param in resnet_block.named_parameters():\n                    if name.endswith(\"bn3.weight\"):\n                        nn.init.zeros_(param)\n\n        proj_std = (self.transformer.width ** -0.5) * ((2 * self.transformer.layers) ** -0.5)\n        attn_std = self.transformer.width ** -0.5\n        fc_std = (2 * self.transformer.width) ** -0.5\n        for block in self.transformer.resblocks:\n            nn.init.normal_(block.attn.in_proj_weight, std=attn_std)\n            nn.init.normal_(block.attn.out_proj.weight, std=proj_std)\n            nn.init.normal_(block.mlp.c_fc.weight, std=fc_std)\n            nn.init.normal_(block.mlp.c_proj.weight, std=proj_std)\n\n        if self.text_projection is not None:\n            nn.init.normal_(self.text_projection, std=self.transformer.width ** -0.5)\n\n    def build_attention_mask(self):\n        # lazily create causal attention mask, with full attention between the vision tokens\n        # pytorch uses additive attention mask; fill with -inf\n        mask = torch.empty(self.context_length, self.context_length)\n        mask.fill_(float(\"-inf\"))\n        mask.triu_(1)  # zero out the lower diagonal\n        return mask\n\n    @property\n    def dtype(self):\n        return self.visual.conv1.weight.dtype\n\n    def encode_image(self, image):\n        return self.visual(image.type(self.dtype))\n\n    def encode_text(self, text):\n        x = self.token_embedding(text).type(self.dtype)  # [batch_size, n_ctx, d_model]\n\n        x = x + self.positional_embedding.type(self.dtype)\n        x = x.permute(1, 0, 2)  # NLD -> LND\n        x = self.transformer(x)\n        x = x.permute(1, 0, 2)  # LND -> NLD\n        x = self.ln_final(x).type(self.dtype)\n\n        # x.shape = [batch_size, n_ctx, transformer.width]\n        # take features from the eot embedding (eot_token is the highest number in each sequence)\n        x = x[torch.arange(x.shape[0]), text.argmax(dim=-1)] @ self.text_projection\n\n        return x\n\n    def forward(self, image, text):\n        image_features = self.encode_image(image)\n        text_features = self.encode_text(text)\n\n        # normalized features\n        image_features = image_features / image_features.norm(dim=1, keepdim=True)\n        text_features = text_features / text_features.norm(dim=1, keepdim=True)\n\n        # cosine similarity as logits\n        logit_scale = self.logit_scale.exp()\n        logits_per_image = logit_scale * image_features @ text_features.t()\n        logits_per_text = logits_per_image.t()\n\n        # shape = [global_batch_size, global_batch_size]\n        return logits_per_image, logits_per_text\n\n\ndef convert_weights(model: nn.Module):\n    \"\"\"Convert applicable model parameters to fp16\"\"\"\n\n    def _convert_weights_to_fp16(l):\n        if isinstance(l, (nn.Conv1d, nn.Conv2d, nn.Linear)):\n            l.weight.data = l.weight.data.half()\n            if l.bias is not None:\n                l.bias.data = l.bias.data.half()\n\n        if isinstance(l, nn.MultiheadAttention):\n            for attr in [*[f\"{s}_proj_weight\" for s in [\"in\", \"q\", \"k\", \"v\"]], \"in_proj_bias\", \"bias_k\", \"bias_v\"]:\n                tensor = getattr(l, attr)\n                if tensor is not None:\n                    tensor.data = tensor.data.half()\n\n        for name in [\"text_projection\", \"proj\"]:\n            if hasattr(l, name):\n                attr = getattr(l, name)\n                if attr is not None:\n                    attr.data = attr.data.half()\n\n    model.apply(_convert_weights_to_fp16)\n\n\ndef build_model(state_dict: dict):\n    vit = \"visual.proj\" in state_dict\n\n    if vit:\n        vision_width = state_dict[\"visual.conv1.weight\"].shape[0]\n        vision_layers = len([k for k in state_dict.keys() if k.startswith(\"visual.\") and k.endswith(\".attn.in_proj_weight\")])\n        vision_patch_size = state_dict[\"visual.conv1.weight\"].shape[-1]\n        grid_size = round((state_dict[\"visual.positional_embedding\"].shape[0] - 1) ** 0.5)\n        image_resolution = vision_patch_size * grid_size\n    else:\n        counts: list = [len(set(k.split(\".\")[2] for k in state_dict if k.startswith(f\"visual.layer{b}\"))) for b in [1, 2, 3, 4]]\n        vision_layers = tuple(counts)\n        vision_width = state_dict[\"visual.layer1.0.conv1.weight\"].shape[0]\n        output_width = round((state_dict[\"visual.attnpool.positional_embedding\"].shape[0] - 1) ** 0.5)\n        vision_patch_size = None\n        assert output_width ** 2 + 1 == state_dict[\"visual.attnpool.positional_embedding\"].shape[0]\n        image_resolution = output_width * 32\n\n    embed_dim = state_dict[\"text_projection\"].shape[1]\n    context_length = state_dict[\"positional_embedding\"].shape[0]\n    vocab_size = state_dict[\"token_embedding.weight\"].shape[0]\n    transformer_width = state_dict[\"ln_final.weight\"].shape[0]\n    transformer_heads = transformer_width // 64\n    transformer_layers = len(set(k.split(\".\")[2] for k in state_dict if k.startswith(\"transformer.resblocks\")))\n\n    model = CLIP(\n        embed_dim,\n        image_resolution, vision_layers, vision_width, vision_patch_size,\n        context_length, vocab_size, transformer_width, transformer_heads, transformer_layers\n    )\n\n    for key in [\"input_resolution\", \"context_length\", \"vocab_size\"]:\n        if key in state_dict:\n            del state_dict[key]\n\n    convert_weights(model)\n    model.load_state_dict(state_dict)\n    return model.eval()\n"
  },
  {
    "path": "CLIP/clip/simple_tokenizer.py",
    "content": "import gzip\nimport html\nimport os\nfrom functools import lru_cache\n\nimport ftfy\nimport regex as re\n\n\n@lru_cache()\ndef default_bpe():\n    return os.path.join(os.path.dirname(os.path.abspath(__file__)), \"bpe_simple_vocab_16e6.txt.gz\")\n\n\n@lru_cache()\ndef bytes_to_unicode():\n    \"\"\"\n    Returns list of utf-8 byte and a corresponding list of unicode strings.\n    The reversible bpe codes work on unicode strings.\n    This means you need a large # of unicode characters in your vocab if you want to avoid UNKs.\n    When you're at something like a 10B token dataset you end up needing around 5K for decent coverage.\n    This is a signficant percentage of your normal, say, 32K bpe vocab.\n    To avoid that, we want lookup tables between utf-8 bytes and unicode strings.\n    And avoids mapping to whitespace/control characters the bpe code barfs on.\n    \"\"\"\n    bs = list(range(ord(\"!\"), ord(\"~\")+1))+list(range(ord(\"¡\"), ord(\"¬\")+1))+list(range(ord(\"®\"), ord(\"ÿ\")+1))\n    cs = bs[:]\n    n = 0\n    for b in range(2**8):\n        if b not in bs:\n            bs.append(b)\n            cs.append(2**8+n)\n            n += 1\n    cs = [chr(n) for n in cs]\n    return dict(zip(bs, cs))\n\n\ndef get_pairs(word):\n    \"\"\"Return set of symbol pairs in a word.\n    Word is represented as tuple of symbols (symbols being variable-length strings).\n    \"\"\"\n    pairs = set()\n    prev_char = word[0]\n    for char in word[1:]:\n        pairs.add((prev_char, char))\n        prev_char = char\n    return pairs\n\n\ndef basic_clean(text):\n    text = ftfy.fix_text(text)\n    text = html.unescape(html.unescape(text))\n    return text.strip()\n\n\ndef whitespace_clean(text):\n    text = re.sub(r'\\s+', ' ', text)\n    text = text.strip()\n    return text\n\n\nclass SimpleTokenizer(object):\n    def __init__(self, bpe_path: str = default_bpe()):\n        self.byte_encoder = bytes_to_unicode()\n        self.byte_decoder = {v: k for k, v in self.byte_encoder.items()}\n        merges = gzip.open(bpe_path).read().decode(\"utf-8\").split('\\n')\n        merges = merges[1:49152-256-2+1]\n        merges = [tuple(merge.split()) for merge in merges]\n        vocab = list(bytes_to_unicode().values())\n        vocab = vocab + [v+'</w>' for v in vocab]\n        for merge in merges:\n            vocab.append(''.join(merge))\n        vocab.extend(['<|startoftext|>', '<|endoftext|>'])\n        self.encoder = dict(zip(vocab, range(len(vocab))))\n        self.decoder = {v: k for k, v in self.encoder.items()}\n        self.bpe_ranks = dict(zip(merges, range(len(merges))))\n        self.cache = {'<|startoftext|>': '<|startoftext|>', '<|endoftext|>': '<|endoftext|>'}\n        self.pat = re.compile(r\"\"\"<\\|startoftext\\|>|<\\|endoftext\\|>|'s|'t|'re|'ve|'m|'ll|'d|[\\p{L}]+|[\\p{N}]|[^\\s\\p{L}\\p{N}]+\"\"\", re.IGNORECASE)\n\n    def bpe(self, token):\n        if token in self.cache:\n            return self.cache[token]\n        word = tuple(token[:-1]) + ( token[-1] + '</w>',)\n        pairs = get_pairs(word)\n\n        if not pairs:\n            return token+'</w>'\n\n        while True:\n            bigram = min(pairs, key = lambda pair: self.bpe_ranks.get(pair, float('inf')))\n            if bigram not in self.bpe_ranks:\n                break\n            first, second = bigram\n            new_word = []\n            i = 0\n            while i < len(word):\n                try:\n                    j = word.index(first, i)\n                    new_word.extend(word[i:j])\n                    i = j\n                except:\n                    new_word.extend(word[i:])\n                    break\n\n                if word[i] == first and i < len(word)-1 and word[i+1] == second:\n                    new_word.append(first+second)\n                    i += 2\n                else:\n                    new_word.append(word[i])\n                    i += 1\n            new_word = tuple(new_word)\n            word = new_word\n            if len(word) == 1:\n                break\n            else:\n                pairs = get_pairs(word)\n        word = ' '.join(word)\n        self.cache[token] = word\n        return word\n\n    def encode(self, text):\n        bpe_tokens = []\n        text = whitespace_clean(basic_clean(text)).lower()\n        for token in re.findall(self.pat, text):\n            token = ''.join(self.byte_encoder[b] for b in token.encode('utf-8'))\n            bpe_tokens.extend(self.encoder[bpe_token] for bpe_token in self.bpe(token).split(' '))\n        return bpe_tokens\n\n    def decode(self, tokens):\n        text = ''.join([self.decoder[token] for token in tokens])\n        text = bytearray([self.byte_decoder[c] for c in text]).decode('utf-8', errors=\"replace\").replace('</w>', ' ')\n        return text\n"
  },
  {
    "path": "CLIP/clip.py",
    "content": "import hashlib\nimport os\nimport urllib\nimport warnings\nfrom typing import Any, Union, List\nfrom pkg_resources import packaging\n\nimport torch\nfrom PIL import Image\nfrom torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize\nfrom tqdm import tqdm\n\nfrom .model import build_model\nfrom .simple_tokenizer import SimpleTokenizer as _Tokenizer\n\ntry:\n    from torchvision.transforms import InterpolationMode\n    BICUBIC = InterpolationMode.BICUBIC\nexcept ImportError:\n    BICUBIC = Image.BICUBIC\n\n\nif packaging.version.parse(torch.__version__) < packaging.version.parse(\"1.7.1\"):\n    warnings.warn(\"PyTorch version 1.7.1 or higher is recommended\")\n\n\n__all__ = [\"available_models\", \"load\", \"tokenize\"]\n_tokenizer = _Tokenizer()\n\n_MODELS = {\n    \"RN50\": \"https://openaipublic.azureedge.net/clip/models/afeb0e10f9e5a86da6080e35cf09123aca3b358a0c3e3b6c78a7b63bc04b6762/RN50.pt\",\n    \"RN101\": \"https://openaipublic.azureedge.net/clip/models/8fa8567bab74a42d41c5915025a8e4538c3bdbe8804a470a72f30b0d94fab599/RN101.pt\",\n    \"RN50x4\": \"https://openaipublic.azureedge.net/clip/models/7e526bd135e493cef0776de27d5f42653e6b4c8bf9e0f653bb11773263205fdd/RN50x4.pt\",\n    \"RN50x16\": \"https://openaipublic.azureedge.net/clip/models/52378b407f34354e150460fe41077663dd5b39c54cd0bfd2b27167a4a06ec9aa/RN50x16.pt\",\n    \"RN50x64\": \"https://openaipublic.azureedge.net/clip/models/be1cfb55d75a9666199fb2206c106743da0f6468c9d327f3e0d0a543a9919d9c/RN50x64.pt\",\n    \"ViT-B/32\": \"https://openaipublic.azureedge.net/clip/models/40d365715913c9da98579312b702a82c18be219cc2a73407c4526f58eba950af/ViT-B-32.pt\",\n    \"ViT-B/16\": \"https://openaipublic.azureedge.net/clip/models/5806e77cd80f8b59890b7e101eabd078d9fb84e6937f9e85e4ecb61988df416f/ViT-B-16.pt\",\n    \"ViT-L/14\": \"https://openaipublic.azureedge.net/clip/models/b8cca3fd41ae0c99ba7e8951adf17d267cdb84cd88be6f7c2e0eca1737a03836/ViT-L-14.pt\",\n    \"ViT-L/14@336px\": \"https://openaipublic.azureedge.net/clip/models/3035c92b350959924f9f00213499208652fc7ea050643e8b385c2dac08641f02/ViT-L-14-336px.pt\",\n}\n\n\ndef _download(url: str, root: str):\n    os.makedirs(root, exist_ok=True)\n    filename = os.path.basename(url)\n\n    expected_sha256 = url.split(\"/\")[-2]\n    download_target = os.path.join(root, filename)\n\n    if os.path.exists(download_target) and not os.path.isfile(download_target):\n        raise RuntimeError(f\"{download_target} exists and is not a regular file\")\n\n    if os.path.isfile(download_target):\n        if hashlib.sha256(open(download_target, \"rb\").read()).hexdigest() == expected_sha256:\n            return download_target\n        else:\n            warnings.warn(f\"{download_target} exists, but the SHA256 checksum does not match; re-downloading the file\")\n\n    with urllib.request.urlopen(url) as source, open(download_target, \"wb\") as output:\n        with tqdm(total=int(source.info().get(\"Content-Length\")), ncols=80, unit='iB', unit_scale=True, unit_divisor=1024) as loop:\n            while True:\n                buffer = source.read(8192)\n                if not buffer:\n                    break\n\n                output.write(buffer)\n                loop.update(len(buffer))\n\n    if hashlib.sha256(open(download_target, \"rb\").read()).hexdigest() != expected_sha256:\n        raise RuntimeError(\"Model has been downloaded but the SHA256 checksum does not not match\")\n\n    return download_target\n\n\ndef _convert_image_to_rgb(image):\n    return image.convert(\"RGB\")\n\n\ndef _transform(n_px):\n    return Compose([\n        Resize(n_px, interpolation=BICUBIC),\n        CenterCrop(n_px),\n        _convert_image_to_rgb,\n        ToTensor(),\n        Normalize((0.48145466, 0.4578275, 0.40821073), (0.26862954, 0.26130258, 0.27577711)),\n    ])\n\n\ndef available_models() -> List[str]:\n    \"\"\"Returns the names of available CLIP models\"\"\"\n    return list(_MODELS.keys())\n\n\ndef load(name: str, device: Union[str, torch.device] = \"cuda\" if torch.cuda.is_available() else \"cpu\", jit: bool = False, download_root: str = None):\n    \"\"\"Load a CLIP model\n\n    Parameters\n    ----------\n    name : str\n        A model name listed by `clip.available_models()`, or the path to a model checkpoint containing the state_dict\n\n    device : Union[str, torch.device]\n        The device to put the loaded model\n\n    jit : bool\n        Whether to load the optimized JIT model or more hackable non-JIT model (default).\n\n    download_root: str\n        path to download the model files; by default, it uses \"~/.cache/clip\"\n\n    Returns\n    -------\n    model : torch.nn.Module\n        The CLIP model\n\n    preprocess : Callable[[PIL.Image], torch.Tensor]\n        A torchvision transform that converts a PIL image into a tensor that the returned model can take as its input\n    \"\"\"\n    if name in _MODELS:\n        model_path = _download(_MODELS[name], download_root or os.path.expanduser(\"~/.cache/clip\"))\n    elif os.path.isfile(name):\n        model_path = name\n    else:\n        raise RuntimeError(f\"Model {name} not found; available models = {available_models()}\")\n\n    with open(model_path, 'rb') as opened_file:\n        try:\n            # loading JIT archive\n            model = torch.jit.load(opened_file, map_location=device if jit else \"cpu\").eval()\n            state_dict = None\n        except RuntimeError:\n            # loading saved state dict\n            if jit:\n                warnings.warn(f\"File {model_path} is not a JIT archive. Loading as a state dict instead\")\n                jit = False\n            state_dict = torch.load(opened_file, map_location=\"cpu\")\n\n    if not jit:\n        model = build_model(state_dict or model.state_dict()).to(device)\n        if str(device) == \"cpu\":\n            model.float()\n        return model, _transform(model.visual.input_resolution)\n\n    # patch the device names\n    device_holder = torch.jit.trace(lambda: torch.ones([]).to(torch.device(device)), example_inputs=[])\n    device_node = [n for n in device_holder.graph.findAllNodes(\"prim::Constant\") if \"Device\" in repr(n)][-1]\n\n    def patch_device(module):\n        try:\n            graphs = [module.graph] if hasattr(module, \"graph\") else []\n        except RuntimeError:\n            graphs = []\n\n        if hasattr(module, \"forward1\"):\n            graphs.append(module.forward1.graph)\n\n        for graph in graphs:\n            for node in graph.findAllNodes(\"prim::Constant\"):\n                if \"value\" in node.attributeNames() and str(node[\"value\"]).startswith(\"cuda\"):\n                    node.copyAttributes(device_node)\n\n    model.apply(patch_device)\n    patch_device(model.encode_image)\n    patch_device(model.encode_text)\n\n    # patch dtype to float32 on CPU\n    if str(device) == \"cpu\":\n        float_holder = torch.jit.trace(lambda: torch.ones([]).float(), example_inputs=[])\n        float_input = list(float_holder.graph.findNode(\"aten::to\").inputs())[1]\n        float_node = float_input.node()\n\n        def patch_float(module):\n            try:\n                graphs = [module.graph] if hasattr(module, \"graph\") else []\n            except RuntimeError:\n                graphs = []\n\n            if hasattr(module, \"forward1\"):\n                graphs.append(module.forward1.graph)\n\n            for graph in graphs:\n                for node in graph.findAllNodes(\"aten::to\"):\n                    inputs = list(node.inputs())\n                    for i in [1, 2]:  # dtype can be the second or third argument to aten::to()\n                        if inputs[i].node()[\"value\"] == 5:\n                            inputs[i].node().copyAttributes(float_node)\n\n        model.apply(patch_float)\n        patch_float(model.encode_image)\n        patch_float(model.encode_text)\n\n        model.float()\n\n    return model, _transform(model.input_resolution.item())\n\n\ndef tokenize(texts: Union[str, List[str]], context_length: int = 77, truncate: bool = False) -> Union[torch.IntTensor, torch.LongTensor]:\n    \"\"\"\n    Returns the tokenized representation of given input string(s)\n\n    Parameters\n    ----------\n    texts : Union[str, List[str]]\n        An input string or a list of input strings to tokenize\n\n    context_length : int\n        The context length to use; all CLIP models use 77 as the context length\n\n    truncate: bool\n        Whether to truncate the text in case its encoding is longer than the context length\n\n    Returns\n    -------\n    A two-dimensional tensor containing the resulting tokens, shape = [number of input strings, context_length].\n    We return LongTensor when torch version is <1.8.0, since older index_select requires indices to be long.\n    \"\"\"\n    if isinstance(texts, str):\n        texts = [texts]\n\n    sot_token = _tokenizer.encoder[\"<|startoftext|>\"]\n    eot_token = _tokenizer.encoder[\"<|endoftext|>\"]\n    all_tokens = [[sot_token] + _tokenizer.encode(text) + [eot_token] for text in texts]\n    if packaging.version.parse(torch.__version__) < packaging.version.parse(\"1.8.0\"):\n        result = torch.zeros(len(all_tokens), context_length, dtype=torch.long)\n    else:\n        result = torch.zeros(len(all_tokens), context_length, dtype=torch.int)\n\n    for i, tokens in enumerate(all_tokens):\n        if len(tokens) > context_length:\n            if truncate:\n                tokens = tokens[:context_length]\n                tokens[-1] = eot_token\n            else:\n                raise RuntimeError(f\"Input {texts[i]} is too long for context length {context_length}\")\n        result[i, :len(tokens)] = torch.tensor(tokens)\n\n    return result\n"
  },
  {
    "path": "CLIP/data/country211.md",
    "content": "# The Country211 Dataset\n\nIn the paper, we used an image classification dataset called Country211, to evaluate the model's capability on geolocation. To do so, we filtered the YFCC100m dataset that have GPS coordinate corresponding to a [ISO-3166 country code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) and created a balanced dataset by sampling 150 train images, 50 validation images, and 100 test images images for each country.\n\nThe following command will download an 11GB archive countaining the images and extract into a subdirectory `country211`:\n\n```bash\nwget https://openaipublic.azureedge.net/clip/data/country211.tgz\ntar zxvf country211.tgz\n```\n\nThese images are a subset of the YFCC100m dataset. Use of the underlying media files is subject to the Creative Commons licenses chosen by their creators/uploaders. For more information about the YFCC100M dataset, visit [the official website](https://multimediacommons.wordpress.com/yfcc100m-core-dataset/)."
  },
  {
    "path": "CLIP/data/prompts.md",
    "content": "# Prompts for Image Classification\n\nBelow are the class names and templates that are used for collecting the zero-shot classification scores in the paper. Each dataset has two lists `classes` and `templates`, where the string `{}` in the template is to be replaced with the corresponding class names. For the Facial Emotion Recognition 2013 dataset specifically, we used multiple class names for certain classes.\n\nThis file contains prompt data for 26 of the 27 datasets shown in Table 9 of the paper; the text prompts for ImageNet (as well as other [ImageNet Testbed](https://modestyachts.github.io/imagenet-testbed/) datasets in Figure 13) can be found in [this notebook](https://github.com/openai/CLIP/blob/main/notebooks/Prompt_Engineering_for_ImageNet.ipynb), as well as how to ensemble predictions from multiple prompts using these templates.\n\nIf you are viewing this document on GitHub, use the table of contents icon at the upper left to browse the datasets.\n\n\n## Birdsnap\n\n```bash\nclasses = [\n    'Acadian Flycatcher',\n    'Acorn Woodpecker',\n    'Alder Flycatcher',\n    'Allens Hummingbird',\n    'Altamira Oriole',\n    'American Avocet',\n    'American Bittern',\n    'American Black Duck',\n    'American Coot',\n    'American Crow',\n    'American Dipper',\n    'American Golden Plover',\n    'American Goldfinch',\n    'American Kestrel',\n    'American Oystercatcher',\n    'American Pipit',\n    'American Redstart',\n    'American Robin',\n    'American Three toed Woodpecker',\n    'American Tree Sparrow',\n    'American White Pelican',\n    'American Wigeon',\n    'American Woodcock',\n    'Anhinga',\n    'Annas Hummingbird',\n    'Arctic Tern',\n    'Ash throated Flycatcher',\n    'Audubons Oriole',\n    'Bairds Sandpiper',\n    'Bald Eagle',\n    'Baltimore Oriole',\n    'Band tailed Pigeon',\n    'Barn Swallow',\n    'Barred Owl',\n    'Barrows Goldeneye',\n    'Bay breasted Warbler',\n    'Bells Vireo',\n    'Belted Kingfisher',\n    'Bewicks Wren',\n    'Black Guillemot',\n    'Black Oystercatcher',\n    'Black Phoebe',\n    'Black Rosy Finch',\n    'Black Scoter',\n    'Black Skimmer',\n    'Black Tern',\n    'Black Turnstone',\n    'Black Vulture',\n    'Black and white Warbler',\n    'Black backed Woodpecker',\n    'Black bellied Plover',\n    'Black billed Cuckoo',\n    'Black billed Magpie',\n    'Black capped Chickadee',\n    'Black chinned Hummingbird',\n    'Black chinned Sparrow',\n    'Black crested Titmouse',\n    'Black crowned Night Heron',\n    'Black headed Grosbeak',\n    'Black legged Kittiwake',\n    'Black necked Stilt',\n    'Black throated Blue Warbler',\n    'Black throated Gray Warbler',\n    'Black throated Green Warbler',\n    'Black throated Sparrow',\n    'Blackburnian Warbler',\n    'Blackpoll Warbler',\n    'Blue Grosbeak',\n    'Blue Jay',\n    'Blue gray Gnatcatcher',\n    'Blue headed Vireo',\n    'Blue winged Teal',\n    'Blue winged Warbler',\n    'Boat tailed Grackle',\n    'Bobolink',\n    'Bohemian Waxwing',\n    'Bonapartes Gull',\n    'Boreal Chickadee',\n    'Brandts Cormorant',\n    'Brant',\n    'Brewers Blackbird',\n    'Brewers Sparrow',\n    'Bridled Titmouse',\n    'Broad billed Hummingbird',\n    'Broad tailed Hummingbird',\n    'Broad winged Hawk',\n    'Bronzed Cowbird',\n    'Brown Creeper',\n    'Brown Pelican',\n    'Brown Thrasher',\n    'Brown capped Rosy Finch',\n    'Brown crested Flycatcher',\n    'Brown headed Cowbird',\n    'Brown headed Nuthatch',\n    'Bufflehead',\n    'Bullocks Oriole',\n    'Burrowing Owl',\n    'Bushtit',\n    'Cackling Goose',\n    'Cactus Wren',\n    'California Gull',\n    'California Quail',\n    'California Thrasher',\n    'California Towhee',\n    'Calliope Hummingbird',\n    'Canada Goose',\n    'Canada Warbler',\n    'Canvasback',\n    'Canyon Towhee',\n    'Canyon Wren',\n    'Cape May Warbler',\n    'Carolina Chickadee',\n    'Carolina Wren',\n    'Caspian Tern',\n    'Cassins Finch',\n    'Cassins Kingbird',\n    'Cassins Sparrow',\n    'Cassins Vireo',\n    'Cattle Egret',\n    'Cave Swallow',\n    'Cedar Waxwing',\n    'Cerulean Warbler',\n    'Chestnut backed Chickadee',\n    'Chestnut collared Longspur',\n    'Chestnut sided Warbler',\n    'Chihuahuan Raven',\n    'Chimney Swift',\n    'Chipping Sparrow',\n    'Cinnamon Teal',\n    'Clapper Rail',\n    'Clarks Grebe',\n    'Clarks Nutcracker',\n    'Clay colored Sparrow',\n    'Cliff Swallow',\n    'Common Black Hawk',\n    'Common Eider',\n    'Common Gallinule',\n    'Common Goldeneye',\n    'Common Grackle',\n    'Common Ground Dove',\n    'Common Loon',\n    'Common Merganser',\n    'Common Murre',\n    'Common Nighthawk',\n    'Common Raven',\n    'Common Redpoll',\n    'Common Tern',\n    'Common Yellowthroat',\n    'Connecticut Warbler',\n    'Coopers Hawk',\n    'Cordilleran Flycatcher',\n    'Costas Hummingbird',\n    'Couchs Kingbird',\n    'Crested Caracara',\n    'Curve billed Thrasher',\n    'Dark eyed Junco',\n    'Dickcissel',\n    'Double crested Cormorant',\n    'Downy Woodpecker',\n    'Dunlin',\n    'Dusky Flycatcher',\n    'Dusky Grouse',\n    'Eared Grebe',\n    'Eastern Bluebird',\n    'Eastern Kingbird',\n    'Eastern Meadowlark',\n    'Eastern Phoebe',\n    'Eastern Screech Owl',\n    'Eastern Towhee',\n    'Eastern Wood Pewee',\n    'Elegant Trogon',\n    'Elf Owl',\n    'Eurasian Collared Dove',\n    'Eurasian Wigeon',\n    'European Starling',\n    'Evening Grosbeak',\n    'Ferruginous Hawk',\n    'Ferruginous Pygmy Owl',\n    'Field Sparrow',\n    'Fish Crow',\n    'Florida Scrub Jay',\n    'Forsters Tern',\n    'Fox Sparrow',\n    'Franklins Gull',\n    'Fulvous Whistling Duck',\n    'Gadwall',\n    'Gambels Quail',\n    'Gila Woodpecker',\n    'Glaucous Gull',\n    'Glaucous winged Gull',\n    'Glossy Ibis',\n    'Golden Eagle',\n    'Golden crowned Kinglet',\n    'Golden crowned Sparrow',\n    'Golden fronted Woodpecker',\n    'Golden winged Warbler',\n    'Grasshopper Sparrow',\n    'Gray Catbird',\n    'Gray Flycatcher',\n    'Gray Jay',\n    'Gray Kingbird',\n    'Gray cheeked Thrush',\n    'Gray crowned Rosy Finch',\n    'Great Black backed Gull',\n    'Great Blue Heron',\n    'Great Cormorant',\n    'Great Crested Flycatcher',\n    'Great Egret',\n    'Great Gray Owl',\n    'Great Horned Owl',\n    'Great Kiskadee',\n    'Great tailed Grackle',\n    'Greater Prairie Chicken',\n    'Greater Roadrunner',\n    'Greater Sage Grouse',\n    'Greater Scaup',\n    'Greater White fronted Goose',\n    'Greater Yellowlegs',\n    'Green Jay',\n    'Green tailed Towhee',\n    'Green winged Teal',\n    'Groove billed Ani',\n    'Gull billed Tern',\n    'Hairy Woodpecker',\n    'Hammonds Flycatcher',\n    'Harlequin Duck',\n    'Harriss Hawk',\n    'Harriss Sparrow',\n    'Heermanns Gull',\n    'Henslows Sparrow',\n    'Hepatic Tanager',\n    'Hermit Thrush',\n    'Herring Gull',\n    'Hoary Redpoll',\n    'Hooded Merganser',\n    'Hooded Oriole',\n    'Hooded Warbler',\n    'Horned Grebe',\n    'Horned Lark',\n    'House Finch',\n    'House Sparrow',\n    'House Wren',\n    'Huttons Vireo',\n    'Iceland Gull',\n    'Inca Dove',\n    'Indigo Bunting',\n    'Killdeer',\n    'King Rail',\n    'Ladder backed Woodpecker',\n    'Lapland Longspur',\n    'Lark Bunting',\n    'Lark Sparrow',\n    'Laughing Gull',\n    'Lazuli Bunting',\n    'Le Contes Sparrow',\n    'Least Bittern',\n    'Least Flycatcher',\n    'Least Grebe',\n    'Least Sandpiper',\n    'Least Tern',\n    'Lesser Goldfinch',\n    'Lesser Nighthawk',\n    'Lesser Scaup',\n    'Lesser Yellowlegs',\n    'Lewiss Woodpecker',\n    'Limpkin',\n    'Lincolns Sparrow',\n    'Little Blue Heron',\n    'Loggerhead Shrike',\n    'Long billed Curlew',\n    'Long billed Dowitcher',\n    'Long billed Thrasher',\n    'Long eared Owl',\n    'Long tailed Duck',\n    'Louisiana Waterthrush',\n    'Magnificent Frigatebird',\n    'Magnolia Warbler',\n    'Mallard',\n    'Marbled Godwit',\n    'Marsh Wren',\n    'Merlin',\n    'Mew Gull',\n    'Mexican Jay',\n    'Mississippi Kite',\n    'Monk Parakeet',\n    'Mottled Duck',\n    'Mountain Bluebird',\n    'Mountain Chickadee',\n    'Mountain Plover',\n    'Mourning Dove',\n    'Mourning Warbler',\n    'Muscovy Duck',\n    'Mute Swan',\n    'Nashville Warbler',\n    'Nelsons Sparrow',\n    'Neotropic Cormorant',\n    'Northern Bobwhite',\n    'Northern Cardinal',\n    'Northern Flicker',\n    'Northern Gannet',\n    'Northern Goshawk',\n    'Northern Harrier',\n    'Northern Hawk Owl',\n    'Northern Mockingbird',\n    'Northern Parula',\n    'Northern Pintail',\n    'Northern Rough winged Swallow',\n    'Northern Saw whet Owl',\n    'Northern Shrike',\n    'Northern Waterthrush',\n    'Nuttalls Woodpecker',\n    'Oak Titmouse',\n    'Olive Sparrow',\n    'Olive sided Flycatcher',\n    'Orange crowned Warbler',\n    'Orchard Oriole',\n    'Osprey',\n    'Ovenbird',\n    'Pacific Golden Plover',\n    'Pacific Loon',\n    'Pacific Wren',\n    'Pacific slope Flycatcher',\n    'Painted Bunting',\n    'Painted Redstart',\n    'Palm Warbler',\n    'Pectoral Sandpiper',\n    'Peregrine Falcon',\n    'Phainopepla',\n    'Philadelphia Vireo',\n    'Pied billed Grebe',\n    'Pigeon Guillemot',\n    'Pileated Woodpecker',\n    'Pine Grosbeak',\n    'Pine Siskin',\n    'Pine Warbler',\n    'Piping Plover',\n    'Plumbeous Vireo',\n    'Prairie Falcon',\n    'Prairie Warbler',\n    'Prothonotary Warbler',\n    'Purple Finch',\n    'Purple Gallinule',\n    'Purple Martin',\n    'Purple Sandpiper',\n    'Pygmy Nuthatch',\n    'Pyrrhuloxia',\n    'Red Crossbill',\n    'Red Knot',\n    'Red Phalarope',\n    'Red bellied Woodpecker',\n    'Red breasted Merganser',\n    'Red breasted Nuthatch',\n    'Red breasted Sapsucker',\n    'Red cockaded Woodpecker',\n    'Red eyed Vireo',\n    'Red headed Woodpecker',\n    'Red naped Sapsucker',\n    'Red necked Grebe',\n    'Red necked Phalarope',\n    'Red shouldered Hawk',\n    'Red tailed Hawk',\n    'Red throated Loon',\n    'Red winged Blackbird',\n    'Reddish Egret',\n    'Redhead',\n    'Ring billed Gull',\n    'Ring necked Duck',\n    'Ring necked Pheasant',\n    'Rock Pigeon',\n    'Rock Ptarmigan',\n    'Rock Sandpiper',\n    'Rock Wren',\n    'Rose breasted Grosbeak',\n    'Roseate Tern',\n    'Rosss Goose',\n    'Rough legged Hawk',\n    'Royal Tern',\n    'Ruby crowned Kinglet',\n    'Ruby throated Hummingbird',\n    'Ruddy Duck',\n    'Ruddy Turnstone',\n    'Ruffed Grouse',\n    'Rufous Hummingbird',\n    'Rufous crowned Sparrow',\n    'Rusty Blackbird',\n    'Sage Thrasher',\n    'Saltmarsh Sparrow',\n    'Sanderling',\n    'Sandhill Crane',\n    'Sandwich Tern',\n    'Says Phoebe',\n    'Scaled Quail',\n    'Scarlet Tanager',\n    'Scissor tailed Flycatcher',\n    'Scotts Oriole',\n    'Seaside Sparrow',\n    'Sedge Wren',\n    'Semipalmated Plover',\n    'Semipalmated Sandpiper',\n    'Sharp shinned Hawk',\n    'Sharp tailed Grouse',\n    'Short billed Dowitcher',\n    'Short eared Owl',\n    'Snail Kite',\n    'Snow Bunting',\n    'Snow Goose',\n    'Snowy Egret',\n    'Snowy Owl',\n    'Snowy Plover',\n    'Solitary Sandpiper',\n    'Song Sparrow',\n    'Sooty Grouse',\n    'Sora',\n    'Spotted Owl',\n    'Spotted Sandpiper',\n    'Spotted Towhee',\n    'Spruce Grouse',\n    'Stellers Jay',\n    'Stilt Sandpiper',\n    'Summer Tanager',\n    'Surf Scoter',\n    'Surfbird',\n    'Swainsons Hawk',\n    'Swainsons Thrush',\n    'Swallow tailed Kite',\n    'Swamp Sparrow',\n    'Tennessee Warbler',\n    'Thayers Gull',\n    'Townsends Solitaire',\n    'Townsends Warbler',\n    'Tree Swallow',\n    'Tricolored Heron',\n    'Tropical Kingbird',\n    'Trumpeter Swan',\n    'Tufted Titmouse',\n    'Tundra Swan',\n    'Turkey Vulture',\n    'Upland Sandpiper',\n    'Varied Thrush',\n    'Veery',\n    'Verdin',\n    'Vermilion Flycatcher',\n    'Vesper Sparrow',\n    'Violet green Swallow',\n    'Virginia Rail',\n    'Wandering Tattler',\n    'Warbling Vireo',\n    'Western Bluebird',\n    'Western Grebe',\n    'Western Gull',\n    'Western Kingbird',\n    'Western Meadowlark',\n    'Western Sandpiper',\n    'Western Screech Owl',\n    'Western Scrub Jay',\n    'Western Tanager',\n    'Western Wood Pewee',\n    'Whimbrel',\n    'White Ibis',\n    'White breasted Nuthatch',\n    'White crowned Sparrow',\n    'White eyed Vireo',\n    'White faced Ibis',\n    'White headed Woodpecker',\n    'White rumped Sandpiper',\n    'White tailed Hawk',\n    'White tailed Kite',\n    'White tailed Ptarmigan',\n    'White throated Sparrow',\n    'White throated Swift',\n    'White winged Crossbill',\n    'White winged Dove',\n    'White winged Scoter',\n    'Wild Turkey',\n    'Willet',\n    'Williamsons Sapsucker',\n    'Willow Flycatcher',\n    'Willow Ptarmigan',\n    'Wilsons Phalarope',\n    'Wilsons Plover',\n    'Wilsons Snipe',\n    'Wilsons Warbler',\n    'Winter Wren',\n    'Wood Stork',\n    'Wood Thrush',\n    'Worm eating Warbler',\n    'Wrentit',\n    'Yellow Warbler',\n    'Yellow bellied Flycatcher',\n    'Yellow bellied Sapsucker',\n    'Yellow billed Cuckoo',\n    'Yellow billed Magpie',\n    'Yellow breasted Chat',\n    'Yellow crowned Night Heron',\n    'Yellow eyed Junco',\n    'Yellow headed Blackbird',\n    'Yellow rumped Warbler',\n    'Yellow throated Vireo',\n    'Yellow throated Warbler',\n    'Zone tailed Hawk',\n]\n\ntemplates = [\n    'a photo of a {}, a type of bird.',\n]\n```\n\n\n\n## CIFAR10\n\n```bash\nclasses = [\n    'airplane',\n    'automobile',\n    'bird',\n    'cat',\n    'deer',\n    'dog',\n    'frog',\n    'horse',\n    'ship',\n    'truck',\n]\n\ntemplates = [\n    'a photo of a {}.',\n    'a blurry photo of a {}.',\n    'a black and white photo of a {}.',\n    'a low contrast photo of a {}.',\n    'a high contrast photo of a {}.',\n    'a bad photo of a {}.',\n    'a good photo of a {}.',\n    'a photo of a small {}.',\n    'a photo of a big {}.',\n    'a photo of the {}.',\n    'a blurry photo of the {}.',\n    'a black and white photo of the {}.',\n    'a low contrast photo of the {}.',\n    'a high contrast photo of the {}.',\n    'a bad photo of the {}.',\n    'a good photo of the {}.',\n    'a photo of the small {}.',\n    'a photo of the big {}.',\n]\n```\n\n\n\n## CIFAR100\n\n```bash\nclasses = [\n    'apple',\n    'aquarium fish',\n    'baby',\n    'bear',\n    'beaver',\n    'bed',\n    'bee',\n    'beetle',\n    'bicycle',\n    'bottle',\n    'bowl',\n    'boy',\n    'bridge',\n    'bus',\n    'butterfly',\n    'camel',\n    'can',\n    'castle',\n    'caterpillar',\n    'cattle',\n    'chair',\n    'chimpanzee',\n    'clock',\n    'cloud',\n    'cockroach',\n    'couch',\n    'crab',\n    'crocodile',\n    'cup',\n    'dinosaur',\n    'dolphin',\n    'elephant',\n    'flatfish',\n    'forest',\n    'fox',\n    'girl',\n    'hamster',\n    'house',\n    'kangaroo',\n    'keyboard',\n    'lamp',\n    'lawn mower',\n    'leopard',\n    'lion',\n    'lizard',\n    'lobster',\n    'man',\n    'maple tree',\n    'motorcycle',\n    'mountain',\n    'mouse',\n    'mushroom',\n    'oak tree',\n    'orange',\n    'orchid',\n    'otter',\n    'palm tree',\n    'pear',\n    'pickup truck',\n    'pine tree',\n    'plain',\n    'plate',\n    'poppy',\n    'porcupine',\n    'possum',\n    'rabbit',\n    'raccoon',\n    'ray',\n    'road',\n    'rocket',\n    'rose',\n    'sea',\n    'seal',\n    'shark',\n    'shrew',\n    'skunk',\n    'skyscraper',\n    'snail',\n    'snake',\n    'spider',\n    'squirrel',\n    'streetcar',\n    'sunflower',\n    'sweet pepper',\n    'table',\n    'tank',\n    'telephone',\n    'television',\n    'tiger',\n    'tractor',\n    'train',\n    'trout',\n    'tulip',\n    'turtle',\n    'wardrobe',\n    'whale',\n    'willow tree',\n    'wolf',\n    'woman',\n    'worm',\n]\n\ntemplates = [\n    'a photo of a {}.',\n    'a blurry photo of a {}.',\n    'a black and white photo of a {}.',\n    'a low contrast photo of a {}.',\n    'a high contrast photo of a {}.',\n    'a bad photo of a {}.',\n    'a good photo of a {}.',\n    'a photo of a small {}.',\n    'a photo of a big {}.',\n    'a photo of the {}.',\n    'a blurry photo of the {}.',\n    'a black and white photo of the {}.',\n    'a low contrast photo of the {}.',\n    'a high contrast photo of the {}.',\n    'a bad photo of the {}.',\n    'a good photo of the {}.',\n    'a photo of the small {}.',\n    'a photo of the big {}.',\n]\n```\n\n\n\n## CLEVRCounts\n\n```bash\nclasses = [\n    '10',\n    '3',\n    '4',\n    '5',\n    '6',\n    '7',\n    '8',\n    '9',\n]\n\ntemplates = [\n    'a photo of {} objects.',\n]\n```\n\n\n\n## Caltech101\n\n```bash\nclasses = [\n    'background',\n    'off-center face',\n    'centered face',\n    'leopard',\n    'motorbike',\n    'accordion',\n    'airplane',\n    'anchor',\n    'ant',\n    'barrel',\n    'bass',\n    'beaver',\n    'binocular',\n    'bonsai',\n    'brain',\n    'brontosaurus',\n    'buddha',\n    'butterfly',\n    'camera',\n    'cannon',\n    'side of a car',\n    'ceiling fan',\n    'cellphone',\n    'chair',\n    'chandelier',\n    'body of a cougar cat',\n    'face of a cougar cat',\n    'crab',\n    'crayfish',\n    'crocodile',\n    'head of a  crocodile',\n    'cup',\n    'dalmatian',\n    'dollar bill',\n    'dolphin',\n    'dragonfly',\n    'electric guitar',\n    'elephant',\n    'emu',\n    'euphonium',\n    'ewer',\n    'ferry',\n    'flamingo',\n    'head of a flamingo',\n    'garfield',\n    'gerenuk',\n    'gramophone',\n    'grand piano',\n    'hawksbill',\n    'headphone',\n    'hedgehog',\n    'helicopter',\n    'ibis',\n    'inline skate',\n    'joshua tree',\n    'kangaroo',\n    'ketch',\n    'lamp',\n    'laptop',\n    'llama',\n    'lobster',\n    'lotus',\n    'mandolin',\n    'mayfly',\n    'menorah',\n    'metronome',\n    'minaret',\n    'nautilus',\n    'octopus',\n    'okapi',\n    'pagoda',\n    'panda',\n    'pigeon',\n    'pizza',\n    'platypus',\n    'pyramid',\n    'revolver',\n    'rhino',\n    'rooster',\n    'saxophone',\n    'schooner',\n    'scissors',\n    'scorpion',\n    'sea horse',\n    'snoopy (cartoon beagle)',\n    'soccer ball',\n    'stapler',\n    'starfish',\n    'stegosaurus',\n    'stop sign',\n    'strawberry',\n    'sunflower',\n    'tick',\n    'trilobite',\n    'umbrella',\n    'watch',\n    'water lilly',\n    'wheelchair',\n    'wild cat',\n    'windsor chair',\n    'wrench',\n    'yin and yang symbol',\n]\n\ntemplates = [\n    'a photo of a {}.',\n    'a painting of a {}.',\n    'a plastic {}.',\n    'a sculpture of a {}.',\n    'a sketch of a {}.',\n    'a tattoo of a {}.',\n    'a toy {}.',\n    'a rendition of a {}.',\n    'a embroidered {}.',\n    'a cartoon {}.',\n    'a {} in a video game.',\n    'a plushie {}.',\n    'a origami {}.',\n    'art of a {}.',\n    'graffiti of a {}.',\n    'a drawing of a {}.',\n    'a doodle of a {}.',\n    'a photo of the {}.',\n    'a painting of the {}.',\n    'the plastic {}.',\n    'a sculpture of the {}.',\n    'a sketch of the {}.',\n    'a tattoo of the {}.',\n    'the toy {}.',\n    'a rendition of the {}.',\n    'the embroidered {}.',\n    'the cartoon {}.',\n    'the {} in a video game.',\n    'the plushie {}.',\n    'the origami {}.',\n    'art of the {}.',\n    'graffiti of the {}.',\n    'a drawing of the {}.',\n    'a doodle of the {}.',\n]\n```\n\n\n\n## Country211\n\n```bash\nclasses = [\n    'Andorra',\n    'United Arab Emirates',\n    'Afghanistan',\n    'Antigua and Barbuda',\n    'Anguilla',\n    'Albania',\n    'Armenia',\n    'Angola',\n    'Antarctica',\n    'Argentina',\n    'Austria',\n    'Australia',\n    'Aruba',\n    'Aland Islands',\n    'Azerbaijan',\n    'Bosnia and Herzegovina',\n    'Barbados',\n    'Bangladesh',\n    'Belgium',\n    'Burkina Faso',\n    'Bulgaria',\n    'Bahrain',\n    'Benin',\n    'Bermuda',\n    'Brunei Darussalam',\n    'Bolivia',\n    'Bonaire, Saint Eustatius and Saba',\n    'Brazil',\n    'Bahamas',\n    'Bhutan',\n    'Botswana',\n    'Belarus',\n    'Belize',\n    'Canada',\n    'DR Congo',\n    'Central African Republic',\n    'Switzerland',\n    \"Cote d'Ivoire\",\n    'Cook Islands',\n    'Chile',\n    'Cameroon',\n    'China',\n    'Colombia',\n    'Costa Rica',\n    'Cuba',\n    'Cabo Verde',\n    'Curacao',\n    'Cyprus',\n    'Czech Republic',\n    'Germany',\n    'Denmark',\n    'Dominica',\n    'Dominican Republic',\n    'Algeria',\n    'Ecuador',\n    'Estonia',\n    'Egypt',\n    'Spain',\n    'Ethiopia',\n    'Finland',\n    'Fiji',\n    'Falkland Islands',\n    'Faeroe Islands',\n    'France',\n    'Gabon',\n    'United Kingdom',\n    'Grenada',\n    'Georgia',\n    'French Guiana',\n    'Guernsey',\n    'Ghana',\n    'Gibraltar',\n    'Greenland',\n    'Gambia',\n    'Guadeloupe',\n    'Greece',\n    'South Georgia and South Sandwich Is.',\n    'Guatemala',\n    'Guam',\n    'Guyana',\n    'Hong Kong',\n    'Honduras',\n    'Croatia',\n    'Haiti',\n    'Hungary',\n    'Indonesia',\n    'Ireland',\n    'Israel',\n    'Isle of Man',\n    'India',\n    'Iraq',\n    'Iran',\n    'Iceland',\n    'Italy',\n    'Jersey',\n    'Jamaica',\n    'Jordan',\n    'Japan',\n    'Kenya',\n    'Kyrgyz Republic',\n    'Cambodia',\n    'St. Kitts and Nevis',\n    'North Korea',\n    'South Korea',\n    'Kuwait',\n    'Cayman Islands',\n    'Kazakhstan',\n    'Laos',\n    'Lebanon',\n    'St. Lucia',\n    'Liechtenstein',\n    'Sri Lanka',\n    'Liberia',\n    'Lithuania',\n    'Luxembourg',\n    'Latvia',\n    'Libya',\n    'Morocco',\n    'Monaco',\n    'Moldova',\n    'Montenegro',\n    'Saint-Martin',\n    'Madagascar',\n    'Macedonia',\n    'Mali',\n    'Myanmar',\n    'Mongolia',\n    'Macau',\n    'Martinique',\n    'Mauritania',\n    'Malta',\n    'Mauritius',\n    'Maldives',\n    'Malawi',\n    'Mexico',\n    'Malaysia',\n    'Mozambique',\n    'Namibia',\n    'New Caledonia',\n    'Nigeria',\n    'Nicaragua',\n    'Netherlands',\n    'Norway',\n    'Nepal',\n    'New Zealand',\n    'Oman',\n    'Panama',\n    'Peru',\n    'French Polynesia',\n    'Papua New Guinea',\n    'Philippines',\n    'Pakistan',\n    'Poland',\n    'Puerto Rico',\n    'Palestine',\n    'Portugal',\n    'Palau',\n    'Paraguay',\n    'Qatar',\n    'Reunion',\n    'Romania',\n    'Serbia',\n    'Russia',\n    'Rwanda',\n    'Saudi Arabia',\n    'Solomon Islands',\n    'Seychelles',\n    'Sudan',\n    'Sweden',\n    'Singapore',\n    'St. Helena',\n    'Slovenia',\n    'Svalbard and Jan Mayen Islands',\n    'Slovakia',\n    'Sierra Leone',\n    'San Marino',\n    'Senegal',\n    'Somalia',\n    'South Sudan',\n    'El Salvador',\n    'Sint Maarten',\n    'Syria',\n    'Eswatini',\n    'Togo',\n    'Thailand',\n    'Tajikistan',\n    'Timor-Leste',\n    'Turkmenistan',\n    'Tunisia',\n    'Tonga',\n    'Turkey',\n    'Trinidad and Tobago',\n    'Taiwan',\n    'Tanzania',\n    'Ukraine',\n    'Uganda',\n    'United States',\n    'Uruguay',\n    'Uzbekistan',\n    'Vatican',\n    'Venezuela',\n    'British Virgin Islands',\n    'United States Virgin Islands',\n    'Vietnam',\n    'Vanuatu',\n    'Samoa',\n    'Kosovo',\n    'Yemen',\n    'South Africa',\n    'Zambia',\n    'Zimbabwe',\n]\n\ntemplates = [\n    'a photo i took in {}.',\n    'a photo i took while visiting {}.',\n    'a photo from my home country of {}.',\n    'a photo from my visit to {}.',\n    'a photo showing the country of {}.',\n]\n```\n\n\n\n## DescribableTextures\n\n```bash\nclasses = [\n    'banded',\n    'blotchy',\n    'braided',\n    'bubbly',\n    'bumpy',\n    'chequered',\n    'cobwebbed',\n    'cracked',\n    'crosshatched',\n    'crystalline',\n    'dotted',\n    'fibrous',\n    'flecked',\n    'freckled',\n    'frilly',\n    'gauzy',\n    'grid',\n    'grooved',\n    'honeycombed',\n    'interlaced',\n    'knitted',\n    'lacelike',\n    'lined',\n    'marbled',\n    'matted',\n    'meshed',\n    'paisley',\n    'perforated',\n    'pitted',\n    'pleated',\n    'polka-dotted',\n    'porous',\n    'potholed',\n    'scaly',\n    'smeared',\n    'spiralled',\n    'sprinkled',\n    'stained',\n    'stratified',\n    'striped',\n    'studded',\n    'swirly',\n    'veined',\n    'waffled',\n    'woven',\n    'wrinkled',\n    'zigzagged',\n]\n\ntemplates = [\n    'a photo of a {} texture.',\n    'a photo of a {} pattern.',\n    'a photo of a {} thing.',\n    'a photo of a {} object.',\n    'a photo of the {} texture.',\n    'a photo of the {} pattern.',\n    'a photo of the {} thing.',\n    'a photo of the {} object.',\n]\n```\n\n\n\n## EuroSAT\n\n```bash\nclasses = [\n    'forest',\n    'permanent crop land',\n    'residential buildings or homes or apartments',\n    'river',\n    'pasture land',\n    'lake or sea',\n    'brushland or shrubland',\n    'annual crop land',\n    'industrial buildings or commercial buildings',\n    'highway or road',\n]\n\ntemplates = [\n    'a centered satellite photo of {}.',\n    'a centered satellite photo of a {}.',\n    'a centered satellite photo of the {}.',\n]\n```\n\n\n\n## FGVCAircraft\n\n```bash\nclasses = [\n    '707-320',\n    '727-200',\n    '737-200',\n    '737-300',\n    '737-400',\n    '737-500',\n    '737-600',\n    '737-700',\n    '737-800',\n    '737-900',\n    '747-100',\n    '747-200',\n    '747-300',\n    '747-400',\n    '757-200',\n    '757-300',\n    '767-200',\n    '767-300',\n    '767-400',\n    '777-200',\n    '777-300',\n    'A300B4',\n    'A310',\n    'A318',\n    'A319',\n    'A320',\n    'A321',\n    'A330-200',\n    'A330-300',\n    'A340-200',\n    'A340-300',\n    'A340-500',\n    'A340-600',\n    'A380',\n    'ATR-42',\n    'ATR-72',\n    'An-12',\n    'BAE 146-200',\n    'BAE 146-300',\n    'BAE-125',\n    'Beechcraft 1900',\n    'Boeing 717',\n    'C-130',\n    'C-47',\n    'CRJ-200',\n    'CRJ-700',\n    'CRJ-900',\n    'Cessna 172',\n    'Cessna 208',\n    'Cessna 525',\n    'Cessna 560',\n    'Challenger 600',\n    'DC-10',\n    'DC-3',\n    'DC-6',\n    'DC-8',\n    'DC-9-30',\n    'DH-82',\n    'DHC-1',\n    'DHC-6',\n    'DHC-8-100',\n    'DHC-8-300',\n    'DR-400',\n    'Dornier 328',\n    'E-170',\n    'E-190',\n    'E-195',\n    'EMB-120',\n    'ERJ 135',\n    'ERJ 145',\n    'Embraer Legacy 600',\n    'Eurofighter Typhoon',\n    'F-16A/B',\n    'F/A-18',\n    'Falcon 2000',\n    'Falcon 900',\n    'Fokker 100',\n    'Fokker 50',\n    'Fokker 70',\n    'Global Express',\n    'Gulfstream IV',\n    'Gulfstream V',\n    'Hawk T1',\n    'Il-76',\n    'L-1011',\n    'MD-11',\n    'MD-80',\n    'MD-87',\n    'MD-90',\n    'Metroliner',\n    'Model B200',\n    'PA-28',\n    'SR-20',\n    'Saab 2000',\n    'Saab 340',\n    'Spitfire',\n    'Tornado',\n    'Tu-134',\n    'Tu-154',\n    'Yak-42',\n]\n\ntemplates = [\n    'a photo of a {}, a type of aircraft.',\n    'a photo of the {}, a type of aircraft.',\n]\n```\n\n\n\n## FacialEmotionRecognition2013\n\n```bash\nclasses = [\n    ['angry'],\n    ['disgusted'],\n    ['fearful'],\n    ['happy', 'smiling'],\n    ['sad', 'depressed'],\n    ['surprised', 'shocked', 'spooked'],\n    ['neutral', 'bored'],\n]\n\ntemplates = [\n    'a photo of a {} looking face.',\n    'a photo of a face showing the emotion: {}.',\n    'a photo of a face looking {}.',\n    'a face that looks {}.',\n    'they look {}.',\n    'look at how {} they are.',\n]\n```\n\n\n\n## Flowers102\n\n```bash\nclasses = [\n    'pink primrose',\n    'hard-leaved pocket orchid',\n    'canterbury bells',\n    'sweet pea',\n    'english marigold',\n    'tiger lily',\n    'moon orchid',\n    'bird of paradise',\n    'monkshood',\n    'globe thistle',\n    'snapdragon',\n    \"colt's foot\",\n    'king protea',\n    'spear thistle',\n    'yellow iris',\n    'globe flower',\n    'purple coneflower',\n    'peruvian lily',\n    'balloon flower',\n    'giant white arum lily',\n    'fire lily',\n    'pincushion flower',\n    'fritillary',\n    'red ginger',\n    'grape hyacinth',\n    'corn poppy',\n    'prince of wales feathers',\n    'stemless gentian',\n    'artichoke',\n    'sweet william',\n    'carnation',\n    'garden phlox',\n    'love in the mist',\n    'mexican aster',\n    'alpine sea holly',\n    'ruby-lipped cattleya',\n    'cape flower',\n    'great masterwort',\n    'siam tulip',\n    'lenten rose',\n    'barbeton daisy',\n    'daffodil',\n    'sword lily',\n    'poinsettia',\n    'bolero deep blue',\n    'wallflower',\n    'marigold',\n    'buttercup',\n    'oxeye daisy',\n    'common dandelion',\n    'petunia',\n    'wild pansy',\n    'primula',\n    'sunflower',\n    'pelargonium',\n    'bishop of llandaff',\n    'gaura',\n    'geranium',\n    'orange dahlia',\n    'pink and yellow dahlia',\n    'cautleya spicata',\n    'japanese anemone',\n    'black-eyed susan',\n    'silverbush',\n    'californian poppy',\n    'osteospermum',\n    'spring crocus',\n    'bearded iris',\n    'windflower',\n    'tree poppy',\n    'gazania',\n    'azalea',\n    'water lily',\n    'rose',\n    'thorn apple',\n    'morning glory',\n    'passion flower',\n    'lotus',\n    'toad lily',\n    'anthurium',\n    'frangipani',\n    'clematis',\n    'hibiscus',\n    'columbine',\n    'desert-rose',\n    'tree mallow',\n    'magnolia',\n    'cyclamen',\n    'watercress',\n    'canna lily',\n    'hippeastrum',\n    'bee balm',\n    'air plant',\n    'foxglove',\n    'bougainvillea',\n    'camellia',\n    'mallow',\n    'mexican petunia',\n    'bromelia',\n    'blanket flower',\n    'trumpet creeper',\n    'blackberry lily',\n]\n\ntemplates = [\n    'a photo of a {}, a type of flower.',\n]\n```\n\n\n\n## Food101\n\n```bash\nclasses = [\n    'apple pie',\n    'baby back ribs',\n    'baklava',\n    'beef carpaccio',\n    'beef tartare',\n    'beet salad',\n    'beignets',\n    'bibimbap',\n    'bread pudding',\n    'breakfast burrito',\n    'bruschetta',\n    'caesar salad',\n    'cannoli',\n    'caprese salad',\n    'carrot cake',\n    'ceviche',\n    'cheese plate',\n    'cheesecake',\n    'chicken curry',\n    'chicken quesadilla',\n    'chicken wings',\n    'chocolate cake',\n    'chocolate mousse',\n    'churros',\n    'clam chowder',\n    'club sandwich',\n    'crab cakes',\n    'creme brulee',\n    'croque madame',\n    'cup cakes',\n    'deviled eggs',\n    'donuts',\n    'dumplings',\n    'edamame',\n    'eggs benedict',\n    'escargots',\n    'falafel',\n    'filet mignon',\n    'fish and chips',\n    'foie gras',\n    'french fries',\n    'french onion soup',\n    'french toast',\n    'fried calamari',\n    'fried rice',\n    'frozen yogurt',\n    'garlic bread',\n    'gnocchi',\n    'greek salad',\n    'grilled cheese sandwich',\n    'grilled salmon',\n    'guacamole',\n    'gyoza',\n    'hamburger',\n    'hot and sour soup',\n    'hot dog',\n    'huevos rancheros',\n    'hummus',\n    'ice cream',\n    'lasagna',\n    'lobster bisque',\n    'lobster roll sandwich',\n    'macaroni and cheese',\n    'macarons',\n    'miso soup',\n    'mussels',\n    'nachos',\n    'omelette',\n    'onion rings',\n    'oysters',\n    'pad thai',\n    'paella',\n    'pancakes',\n    'panna cotta',\n    'peking duck',\n    'pho',\n    'pizza',\n    'pork chop',\n    'poutine',\n    'prime rib',\n    'pulled pork sandwich',\n    'ramen',\n    'ravioli',\n    'red velvet cake',\n    'risotto',\n    'samosa',\n    'sashimi',\n    'scallops',\n    'seaweed salad',\n    'shrimp and grits',\n    'spaghetti bolognese',\n    'spaghetti carbonara',\n    'spring rolls',\n    'steak',\n    'strawberry shortcake',\n    'sushi',\n    'tacos',\n    'takoyaki',\n    'tiramisu',\n    'tuna tartare',\n    'waffles',\n]\n\ntemplates = [\n    'a photo of {}, a type of food.',\n]\n```\n\n\n\n## GTSRB\n\n```bash\nclasses = [\n    'red and white circle 20 kph speed limit',\n    'red and white circle 30 kph speed limit',\n    'red and white circle 50 kph speed limit',\n    'red and white circle 60 kph speed limit',\n    'red and white circle 70 kph speed limit',\n    'red and white circle 80 kph speed limit',\n    'end / de-restriction of 80 kph speed limit',\n    'red and white circle 100 kph speed limit',\n    'red and white circle 120 kph speed limit',\n    'red and white circle red car and black car no passing',\n    'red and white circle red truck and black car no passing',\n    'red and white triangle road intersection warning',\n    'white and yellow diamond priority road',\n    'red and white upside down triangle yield right-of-way',\n    'stop',\n    'empty red and white circle',\n    'red and white circle no truck entry',\n    'red circle with white horizonal stripe no entry',\n    'red and white triangle with exclamation mark warning',\n    'red and white triangle with black left curve approaching warning',\n    'red and white triangle with black right curve approaching warning',\n    'red and white triangle with black double curve approaching warning',\n    'red and white triangle rough / bumpy road warning',\n    'red and white triangle car skidding / slipping warning',\n    'red and white triangle with merging / narrow lanes warning',\n    'red and white triangle with person digging / construction / road work warning',\n    'red and white triangle with traffic light approaching warning',\n    'red and white triangle with person walking warning',\n    'red and white triangle with child and person walking warning',\n    'red and white triangle with bicyle warning',\n    'red and white triangle with snowflake / ice warning',\n    'red and white triangle with deer warning',\n    'white circle with gray strike bar no speed limit',\n    'blue circle with white right turn arrow mandatory',\n    'blue circle with white left turn arrow mandatory',\n    'blue circle with white forward arrow mandatory',\n    'blue circle with white forward or right turn arrow mandatory',\n    'blue circle with white forward or left turn arrow mandatory',\n    'blue circle with white keep right arrow mandatory',\n    'blue circle with white keep left arrow mandatory',\n    'blue circle with white arrows indicating a traffic circle',\n    'white circle with gray strike bar indicating no passing for cars has ended',\n    'white circle with gray strike bar indicating no passing for trucks has ended',\n]\n\ntemplates = [\n    'a zoomed in photo of a \"{}\" traffic sign.',\n    'a centered photo of a \"{}\" traffic sign.',\n    'a close up photo of a \"{}\" traffic sign.',\n]\n```\n\n\n\n## HatefulMemes\n\n```bash\nclasses = [\n    'meme',\n    'hatespeech meme',\n]\n\ntemplates = [\n    'a {}.',\n]\n```\n\n\n\n## KITTI\n\n```bash\nclasses = [\n    'a photo i took of a car on my left or right side.',\n    'a photo i took with a car nearby.',\n    'a photo i took with a car in the distance.',\n    'a photo i took with no car.',\n]\n\ntemplates = [\n    '{}',\n]\n```\n\n\n\n## Kinetics700\n\n```bash\nclasses = [\n    'abseiling',\n    'acting in play',\n    'adjusting glasses',\n    'air drumming',\n    'alligator wrestling',\n    'answering questions',\n    'applauding',\n    'applying cream',\n    'archaeological excavation',\n    'archery',\n    'arguing',\n    'arm wrestling',\n    'arranging flowers',\n    'arresting',\n    'assembling bicycle',\n    'assembling computer',\n    'attending conference',\n    'auctioning',\n    'baby waking up',\n    'backflip (human)',\n    'baking cookies',\n    'bandaging',\n    'barbequing',\n    'bartending',\n    'base jumping',\n    'bathing dog',\n    'battle rope training',\n    'beatboxing',\n    'bee keeping',\n    'being excited',\n    'being in zero gravity',\n    'belly dancing',\n    'bench pressing',\n    'bending back',\n    'bending metal',\n    'biking through snow',\n    'blasting sand',\n    'blending fruit',\n    'blowdrying hair',\n    'blowing bubble gum',\n    'blowing glass',\n    'blowing leaves',\n    'blowing nose',\n    'blowing out candles',\n    'bobsledding',\n    'bodysurfing',\n    'bookbinding',\n    'bottling',\n    'bouncing ball (not juggling)',\n    'bouncing on bouncy castle',\n    'bouncing on trampoline',\n    'bowling',\n    'braiding hair',\n    'breading or breadcrumbing',\n    'breakdancing',\n    'breaking boards',\n    'breaking glass',\n    'breathing fire',\n    'brush painting',\n    'brushing floor',\n    'brushing hair',\n    'brushing teeth',\n    'building cabinet',\n    'building lego',\n    'building sandcastle',\n    'building shed',\n    'bulldozing',\n    'bungee jumping',\n    'burping',\n    'busking',\n    'calculating',\n    'calligraphy',\n    'canoeing or kayaking',\n    'capoeira',\n    'capsizing',\n    'card stacking',\n    'card throwing',\n    'carrying baby',\n    'carrying weight',\n    'cartwheeling',\n    'carving ice',\n    'carving marble',\n    'carving pumpkin',\n    'carving wood with a knife',\n    'casting fishing line',\n    'catching fish',\n    'catching or throwing baseball',\n    'catching or throwing frisbee',\n    'catching or throwing softball',\n    'celebrating',\n    'changing gear in car',\n    'changing oil',\n    'changing wheel (not on bike)',\n    'chasing',\n    'checking tires',\n    'checking watch',\n    'cheerleading',\n    'chewing gum',\n    'chiseling stone',\n    'chiseling wood',\n    'chopping meat',\n    'chopping wood',\n    'clam digging',\n    'clapping',\n    'clay pottery making',\n    'clean and jerk',\n    'cleaning gutters',\n    'cleaning pool',\n    'cleaning shoes',\n    'cleaning toilet',\n    'cleaning windows',\n    'climbing a rope',\n    'climbing ladder',\n    'climbing tree',\n    'closing door',\n    'coloring in',\n    'combing hair',\n    'contact juggling',\n    'contorting',\n    'cooking chicken',\n    'cooking egg',\n    'cooking on campfire',\n    'cooking sausages (not on barbeque)',\n    'cooking scallops',\n    'cosplaying',\n    'coughing',\n    'counting money',\n    'country line dancing',\n    'cracking back',\n    'cracking knuckles',\n    'cracking neck',\n    'crawling baby',\n    'crocheting',\n    'crossing eyes',\n    'crossing river',\n    'crying',\n    'cumbia',\n    'curling (sport)',\n    'curling eyelashes',\n    'curling hair',\n    'cutting apple',\n    'cutting cake',\n    'cutting nails',\n    'cutting orange',\n    'cutting pineapple',\n    'cutting watermelon',\n    'dancing ballet',\n    'dancing charleston',\n    'dancing gangnam style',\n    'dancing macarena',\n    'deadlifting',\n    'dealing cards',\n    'decorating the christmas tree',\n    'decoupage',\n    'delivering mail',\n    'digging',\n    'dining',\n    'directing traffic',\n    'disc golfing',\n    'diving cliff',\n    'docking boat',\n    'dodgeball',\n    'doing aerobics',\n    'doing jigsaw puzzle',\n    'doing laundry',\n    'doing nails',\n    'doing sudoku',\n    'drawing',\n    'dribbling basketball',\n    'drinking shots',\n    'driving car',\n    'driving tractor',\n    'drooling',\n    'drop kicking',\n    'drumming fingers',\n    'dumpster diving',\n    'dunking basketball',\n    'dyeing eyebrows',\n    'dyeing hair',\n    'eating burger',\n    'eating cake',\n    'eating carrots',\n    'eating chips',\n    'eating doughnuts',\n    'eating hotdog',\n    'eating ice cream',\n    'eating nachos',\n    'eating spaghetti',\n    'eating watermelon',\n    'egg hunting',\n    'embroidering',\n    'entering church',\n    'exercising arm',\n    'exercising with an exercise ball',\n    'extinguishing fire',\n    'faceplanting',\n    'falling off bike',\n    'falling off chair',\n    'feeding birds',\n    'feeding fish',\n    'feeding goats',\n    'fencing (sport)',\n    'fidgeting',\n    'filling cake',\n    'filling eyebrows',\n    'finger snapping',\n    'fixing bicycle',\n    'fixing hair',\n    'flint knapping',\n    'flipping bottle',\n    'flipping pancake',\n    'fly tying',\n    'flying kite',\n    'folding clothes',\n    'folding napkins',\n    'folding paper',\n    'front raises',\n    'frying vegetables',\n    'gargling',\n    'geocaching',\n    'getting a haircut',\n    'getting a piercing',\n    'getting a tattoo',\n    'giving or receiving award',\n    'gold panning',\n    'golf chipping',\n    'golf driving',\n    'golf putting',\n    'gospel singing in church',\n    'grinding meat',\n    'grooming cat',\n    'grooming dog',\n    'grooming horse',\n    'gymnastics tumbling',\n    'hammer throw',\n    'hand washing clothes',\n    'head stand',\n    'headbanging',\n    'headbutting',\n    'helmet diving',\n    'herding cattle',\n    'high fiving',\n    'high jump',\n    'high kick',\n    'historical reenactment',\n    'hitting baseball',\n    'hockey stop',\n    'holding snake',\n    'home roasting coffee',\n    'hopscotch',\n    'hoverboarding',\n    'huddling',\n    'hugging (not baby)',\n    'hugging baby',\n    'hula hooping',\n    'hurdling',\n    'hurling (sport)',\n    'ice climbing',\n    'ice fishing',\n    'ice skating',\n    'ice swimming',\n    'inflating balloons',\n    'installing carpet',\n    'ironing',\n    'ironing hair',\n    'javelin throw',\n    'jaywalking',\n    'jetskiing',\n    'jogging',\n    'juggling balls',\n    'juggling fire',\n    'juggling soccer ball',\n    'jumping bicycle',\n    'jumping into pool',\n    'jumping jacks',\n    'jumping sofa',\n    'jumpstyle dancing',\n    'karaoke',\n    'kicking field goal',\n    'kicking soccer ball',\n    'kissing',\n    'kitesurfing',\n    'knitting',\n    'krumping',\n    'land sailing',\n    'laughing',\n    'lawn mower racing',\n    'laying bricks',\n    'laying concrete',\n    'laying decking',\n    'laying stone',\n    'laying tiles',\n    'leatherworking',\n    'letting go of balloon',\n    'licking',\n    'lifting hat',\n    'lighting candle',\n    'lighting fire',\n    'listening with headphones',\n    'lock picking',\n    'long jump',\n    'longboarding',\n    'looking at phone',\n    'looking in mirror',\n    'luge',\n    'lunge',\n    'making a cake',\n    'making a sandwich',\n    'making balloon shapes',\n    'making bubbles',\n    'making cheese',\n    'making horseshoes',\n    'making jewelry',\n    'making latte art',\n    'making paper aeroplanes',\n    'making pizza',\n    'making slime',\n    'making snowman',\n    'making sushi',\n    'making tea',\n    'making the bed',\n    'marching',\n    'marriage proposal',\n    'massaging back',\n    'massaging feet',\n    'massaging legs',\n    'massaging neck',\n    \"massaging person's head\",\n    'metal detecting',\n    'milking cow',\n    'milking goat',\n    'mixing colours',\n    'moon walking',\n    'mopping floor',\n    'mosh pit dancing',\n    'motorcycling',\n    'mountain climber (exercise)',\n    'moving baby',\n    'moving child',\n    'moving furniture',\n    'mowing lawn',\n    'mushroom foraging',\n    'needle felting',\n    'news anchoring',\n    'opening bottle (not wine)',\n    'opening coconuts',\n    'opening door',\n    'opening present',\n    'opening refrigerator',\n    'opening wine bottle',\n    'packing',\n    'paragliding',\n    'parasailing',\n    'parkour',\n    'passing American football (in game)',\n    'passing American football (not in game)',\n    'passing soccer ball',\n    'peeling apples',\n    'peeling banana',\n    'peeling potatoes',\n    'person collecting garbage',\n    'petting animal (not cat)',\n    'petting cat',\n    'petting horse',\n    'photobombing',\n    'photocopying',\n    'picking apples',\n    'picking blueberries',\n    'pillow fight',\n    'pinching',\n    'pirouetting',\n    'planing wood',\n    'planting trees',\n    'plastering',\n    'playing accordion',\n    'playing american football',\n    'playing badminton',\n    'playing bagpipes',\n    'playing basketball',\n    'playing bass guitar',\n    'playing beer pong',\n    'playing billiards',\n    'playing blackjack',\n    'playing cards',\n    'playing cello',\n    'playing checkers',\n    'playing chess',\n    'playing clarinet',\n    'playing controller',\n    'playing cricket',\n    'playing cymbals',\n    'playing darts',\n    'playing didgeridoo',\n    'playing dominoes',\n    'playing drums',\n    'playing field hockey',\n    'playing flute',\n    'playing gong',\n    'playing guitar',\n    'playing hand clapping games',\n    'playing harmonica',\n    'playing harp',\n    'playing ice hockey',\n    'playing keyboard',\n    'playing kickball',\n    'playing laser tag',\n    'playing lute',\n    'playing mahjong',\n    'playing maracas',\n    'playing marbles',\n    'playing monopoly',\n    'playing netball',\n    'playing nose flute',\n    'playing oboe',\n    'playing ocarina',\n    'playing organ',\n    'playing paintball',\n    'playing pan pipes',\n    'playing piano',\n    'playing piccolo',\n    'playing pinball',\n    'playing ping pong',\n    'playing poker',\n    'playing polo',\n    'playing recorder',\n    'playing road hockey',\n    'playing rounders',\n    'playing rubiks cube',\n    'playing saxophone',\n    'playing scrabble',\n    'playing shuffleboard',\n    'playing slot machine',\n    'playing squash or racquetball',\n    'playing tennis',\n    'playing trombone',\n    'playing trumpet',\n    'playing ukulele',\n    'playing violin',\n    'playing volleyball',\n    'playing with trains',\n    'playing xylophone',\n    'poaching eggs',\n    'poking bellybutton',\n    'pole vault',\n    'polishing furniture',\n    'polishing metal',\n    'popping balloons',\n    'pouring beer',\n    'pouring milk',\n    'pouring wine',\n    'preparing salad',\n    'presenting weather forecast',\n    'pretending to be a statue',\n    'pull ups',\n    'pulling espresso shot',\n    'pulling rope (game)',\n    'pumping fist',\n    'pumping gas',\n    'punching bag',\n    'punching person (boxing)',\n    'push up',\n    'pushing car',\n    'pushing cart',\n    'pushing wheelbarrow',\n    'pushing wheelchair',\n    'putting in contact lenses',\n    'putting on eyeliner',\n    'putting on foundation',\n    'putting on lipstick',\n    'putting on mascara',\n    'putting on sari',\n    'putting on shoes',\n    'putting wallpaper on wall',\n    'raising eyebrows',\n    'reading book',\n    'reading newspaper',\n    'recording music',\n    'repairing puncture',\n    'riding a bike',\n    'riding camel',\n    'riding elephant',\n    'riding mechanical bull',\n    'riding mule',\n    'riding or walking with horse',\n    'riding scooter',\n    'riding snow blower',\n    'riding unicycle',\n    'ripping paper',\n    'roasting marshmallows',\n    'roasting pig',\n    'robot dancing',\n    'rock climbing',\n    'rock scissors paper',\n    'roller skating',\n    'rolling eyes',\n    'rolling pastry',\n    'rope pushdown',\n    'running on treadmill',\n    'sailing',\n    'salsa dancing',\n    'saluting',\n    'sanding floor',\n    'sanding wood',\n    'sausage making',\n    'sawing wood',\n    'scrambling eggs',\n    'scrapbooking',\n    'scrubbing face',\n    'scuba diving',\n    'seasoning food',\n    'separating eggs',\n    'setting table',\n    'sewing',\n    'shaking hands',\n    'shaking head',\n    'shaping bread dough',\n    'sharpening knives',\n    'sharpening pencil',\n    'shaving head',\n    'shaving legs',\n    'shearing sheep',\n    'shining flashlight',\n    'shining shoes',\n    'shoot dance',\n    'shooting basketball',\n    'shooting goal (soccer)',\n    'shooting off fireworks',\n    'shopping',\n    'shot put',\n    'shouting',\n    'shoveling snow',\n    'shredding paper',\n    'shucking oysters',\n    'shuffling cards',\n    'shuffling feet',\n    'side kick',\n    'sieving',\n    'sign language interpreting',\n    'silent disco',\n    'singing',\n    'sipping cup',\n    'situp',\n    'skateboarding',\n    'ski ballet',\n    'ski jumping',\n    'skiing crosscountry',\n    'skiing mono',\n    'skiing slalom',\n    'skipping rope',\n    'skipping stone',\n    'skydiving',\n    'slacklining',\n    'slapping',\n    'sled dog racing',\n    'sleeping',\n    'slicing onion',\n    'smashing',\n    'smelling feet',\n    'smoking',\n    'smoking hookah',\n    'smoking pipe',\n    'snatch weight lifting',\n    'sneezing',\n    'snorkeling',\n    'snowboarding',\n    'snowkiting',\n    'snowmobiling',\n    'somersaulting',\n    'spelunking',\n    'spinning plates',\n    'spinning poi',\n    'splashing water',\n    'spray painting',\n    'spraying',\n    'springboard diving',\n    'square dancing',\n    'squat',\n    'squeezing orange',\n    'stacking cups',\n    'stacking dice',\n    'standing on hands',\n    'staring',\n    'steer roping',\n    'steering car',\n    'sticking tongue out',\n    'stomping grapes',\n    'stretching arm',\n    'stretching leg',\n    'sucking lolly',\n    'surfing crowd',\n    'surfing water',\n    'surveying',\n    'sweeping floor',\n    'swimming backstroke',\n    'swimming breast stroke',\n    'swimming butterfly stroke',\n    'swimming front crawl',\n    'swimming with dolphins',\n    'swimming with sharks',\n    'swing dancing',\n    'swinging baseball bat',\n    'swinging on something',\n    'sword fighting',\n    'sword swallowing',\n    'tackling',\n    'tagging graffiti',\n    'tai chi',\n    'taking photo',\n    'talking on cell phone',\n    'tango dancing',\n    'tap dancing',\n    'tapping guitar',\n    'tapping pen',\n    'tasting beer',\n    'tasting food',\n    'tasting wine',\n    'testifying',\n    'texting',\n    'threading needle',\n    'throwing axe',\n    'throwing ball (not baseball or American football)',\n    'throwing discus',\n    'throwing knife',\n    'throwing snowballs',\n    'throwing tantrum',\n    'throwing water balloon',\n    'tickling',\n    'tie dying',\n    'tightrope walking',\n    'tiptoeing',\n    'tobogganing',\n    'tossing coin',\n    'tossing salad',\n    'training dog',\n    'trapezing',\n    'treating wood',\n    'trimming or shaving beard',\n    'trimming shrubs',\n    'trimming trees',\n    'triple jump',\n    'twiddling fingers',\n    'tying bow tie',\n    'tying knot (not on a tie)',\n    'tying necktie',\n    'tying shoe laces',\n    'unboxing',\n    'uncorking champagne',\n    'unloading truck',\n    'using a microscope',\n    'using a paint roller',\n    'using a power drill',\n    'using a sledge hammer',\n    'using a wrench',\n    'using atm',\n    'using bagging machine',\n    'using circular saw',\n    'using inhaler',\n    'using megaphone',\n    'using puppets',\n    'using remote controller (not gaming)',\n    'using segway',\n    'vacuuming car',\n    'vacuuming floor',\n    'visiting the zoo',\n    'wading through mud',\n    'wading through water',\n    'waiting in line',\n    'waking up',\n    'walking on stilts',\n    'walking the dog',\n    'walking through snow',\n    'walking with crutches',\n    'washing dishes',\n    'washing feet',\n    'washing hair',\n    'washing hands',\n    'watching tv',\n    'water skiing',\n    'water sliding',\n    'watering plants',\n    'waving hand',\n    'waxing armpits',\n    'waxing back',\n    'waxing chest',\n    'waxing eyebrows',\n    'waxing legs',\n    'weaving basket',\n    'weaving fabric',\n    'welding',\n    'whistling',\n    'windsurfing',\n    'winking',\n    'wood burning (art)',\n    'wrapping present',\n    'wrestling',\n    'writing',\n    'yarn spinning',\n    'yawning',\n    'yoga',\n    'zumba'\n]\n\ntemplates = [\n    'a photo of {}.',\n    'a photo of a person {}.',\n    'a photo of a person using {}.',\n    'a photo of a person doing {}.',\n    'a photo of a person during {}.',\n    'a photo of a person performing {}.',\n    'a photo of a person practicing {}.',\n    'a video of {}.',\n    'a video of a person {}.',\n    'a video of a person using {}.',\n    'a video of a person doing {}.',\n    'a video of a person during {}.',\n    'a video of a person performing {}.',\n    'a video of a person practicing {}.',\n    'a example of {}.',\n    'a example of a person {}.',\n    'a example of a person using {}.',\n    'a example of a person doing {}.',\n    'a example of a person during {}.',\n    'a example of a person performing {}.',\n    'a example of a person practicing {}.',\n    'a demonstration of {}.',\n    'a demonstration of a person {}.',\n    'a demonstration of a person using {}.',\n    'a demonstration of a person doing {}.',\n    'a demonstration of a person during {}.',\n    'a demonstration of a person performing {}.',\n    'a demonstration of a person practicing {}.',\n]\n```\n\n\n\n## MNIST\n\n```bash\nclasses = [\n    '0',\n    '1',\n    '2',\n    '3',\n    '4',\n    '5',\n    '6',\n    '7',\n    '8',\n    '9',\n]\n\ntemplates = [\n    'a photo of the number: \"{}\".',\n]\n```\n\n\n\n## OxfordPets\n\n```bash\nclasses = [\n    'Abyssinian',\n    'Bengal',\n    'Birman',\n    'Bombay',\n    'British Shorthair',\n    'Egyptian Mau',\n    'Maine Coon',\n    'Persian',\n    'Ragdoll',\n    'Russian Blue',\n    'Siamese',\n    'Sphynx',\n    'american bulldog',\n    'american pit bull terrier',\n    'basset hound',\n    'beagle',\n    'boxer',\n    'chihuahua',\n    'english cocker spaniel',\n    'english setter',\n    'german shorthaired',\n    'great pyrenees',\n    'havanese',\n    'japanese chin',\n    'keeshond',\n    'leonberger',\n    'miniature pinscher',\n    'newfoundland',\n    'pomeranian',\n    'pug',\n    'saint bernard',\n    'samoyed',\n    'scottish terrier',\n    'shiba inu',\n    'staffordshire bull terrier',\n    'wheaten terrier',\n    'yorkshire terrier',\n]\n\ntemplates = [\n    'a photo of a {}, a type of pet.',\n]\n```\n\n\n\n## PascalVOC2007\n\n```bash\nclasses = [\n    'aeroplane',\n    'bicycle',\n    'bird',\n    'boat',\n    'bottle',\n    'bus',\n    'car',\n    'cat',\n    'chair',\n    'cow',\n    'dog',\n    'horse',\n    'motorbike',\n    'person',\n    'sheep',\n    'sofa',\n    'diningtable',\n    'pottedplant',\n    'train',\n    'tvmonitor',\n]\n\ntemplates = [\n    'a photo of a {}.',\n]\n```\n\n\n\n## PatchCamelyon\n\n```bash\nclasses = [\n    'lymph node',\n    'lymph node containing metastatic tumor tissue',\n]\n\ntemplates = [\n    'this is a photo of {}',\n]\n```\n\n\n\n## RESISC45\n\n```bash\nclasses = [\n    'airplane',\n    'airport',\n    'baseball diamond',\n    'basketball court',\n    'beach',\n    'bridge',\n    'chaparral',\n    'church',\n    'circular farmland',\n    'cloud',\n    'commercial area',\n    'dense residential',\n    'desert',\n    'forest',\n    'freeway',\n    'golf course',\n    'ground track field',\n    'harbor',\n    'industrial area',\n    'intersection',\n    'island',\n    'lake',\n    'meadow',\n    'medium residential',\n    'mobile home park',\n    'mountain',\n    'overpass',\n    'palace',\n    'parking lot',\n    'railway',\n    'railway station',\n    'rectangular farmland',\n    'river',\n    'roundabout',\n    'runway',\n    'sea ice',\n    'ship',\n    'snowberg',\n    'sparse residential',\n    'stadium',\n    'storage tank',\n    'tennis court',\n    'terrace',\n    'thermal power station',\n    'wetland',\n]\n\ntemplates = [\n    'satellite imagery of {}.',\n    'aerial imagery of {}.',\n    'satellite photo of {}.',\n    'aerial photo of {}.',\n    'satellite view of {}.',\n    'aerial view of {}.',\n    'satellite imagery of a {}.',\n    'aerial imagery of a {}.',\n    'satellite photo of a {}.',\n    'aerial photo of a {}.',\n    'satellite view of a {}.',\n    'aerial view of a {}.',\n    'satellite imagery of the {}.',\n    'aerial imagery of the {}.',\n    'satellite photo of the {}.',\n    'aerial photo of the {}.',\n    'satellite view of the {}.',\n    'aerial view of the {}.',\n]\n```\n\n\n\n## SST2\n\n```bash\nclasses = [\n    'negative',\n    'positive',\n]\n\ntemplates = [\n    'a {} review of a movie.',\n]\n```\n\n\n\n## STL10\n\n```bash\nclasses = [\n    'airplane',\n    'bird',\n    'car',\n    'cat',\n    'deer',\n    'dog',\n    'horse',\n    'monkey',\n    'ship',\n    'truck',\n]\n\ntemplates = [\n    'a photo of a {}.',\n    'a photo of the {}.',\n]\n```\n\n\n\n## SUN397\n\n```bash\nclasses = [\n    'abbey',\n    'airplane cabin',\n    'airport terminal',\n    'alley',\n    'amphitheater',\n    'amusement arcade',\n    'amusement park',\n    'anechoic chamber',\n    'apartment building outdoor',\n    'apse indoor',\n    'aquarium',\n    'aqueduct',\n    'arch',\n    'archive',\n    'arrival gate outdoor',\n    'art gallery',\n    'art school',\n    'art studio',\n    'assembly line',\n    'athletic field outdoor',\n    'atrium public',\n    'attic',\n    'auditorium',\n    'auto factory',\n    'badlands',\n    'badminton court indoor',\n    'baggage claim',\n    'bakery shop',\n    'balcony exterior',\n    'balcony interior',\n    'ball pit',\n    'ballroom',\n    'bamboo forest',\n    'banquet hall',\n    'bar',\n    'barn',\n    'barndoor',\n    'baseball field',\n    'basement',\n    'basilica',\n    'basketball court outdoor',\n    'bathroom',\n    'batters box',\n    'bayou',\n    'bazaar indoor',\n    'bazaar outdoor',\n    'beach',\n    'beauty salon',\n    'bedroom',\n    'berth',\n    'biology laboratory',\n    'bistro indoor',\n    'boardwalk',\n    'boat deck',\n    'boathouse',\n    'bookstore',\n    'booth indoor',\n    'botanical garden',\n    'bow window indoor',\n    'bow window outdoor',\n    'bowling alley',\n    'boxing ring',\n    'brewery indoor',\n    'bridge',\n    'building facade',\n    'bullring',\n    'burial chamber',\n    'bus interior',\n    'butchers shop',\n    'butte',\n    'cabin outdoor',\n    'cafeteria',\n    'campsite',\n    'campus',\n    'canal natural',\n    'canal urban',\n    'candy store',\n    'canyon',\n    'car interior backseat',\n    'car interior frontseat',\n    'carrousel',\n    'casino indoor',\n    'castle',\n    'catacomb',\n    'cathedral indoor',\n    'cathedral outdoor',\n    'cavern indoor',\n    'cemetery',\n    'chalet',\n    'cheese factory',\n    'chemistry lab',\n    'chicken coop indoor',\n    'chicken coop outdoor',\n    'childs room',\n    'church indoor',\n    'church outdoor',\n    'classroom',\n    'clean room',\n    'cliff',\n    'cloister indoor',\n    'closet',\n    'clothing store',\n    'coast',\n    'cockpit',\n    'coffee shop',\n    'computer room',\n    'conference center',\n    'conference room',\n    'construction site',\n    'control room',\n    'control tower outdoor',\n    'corn field',\n    'corral',\n    'corridor',\n    'cottage garden',\n    'courthouse',\n    'courtroom',\n    'courtyard',\n    'covered bridge exterior',\n    'creek',\n    'crevasse',\n    'crosswalk',\n    'cubicle office',\n    'dam',\n    'delicatessen',\n    'dentists office',\n    'desert sand',\n    'desert vegetation',\n    'diner indoor',\n    'diner outdoor',\n    'dinette home',\n    'dinette vehicle',\n    'dining car',\n    'dining room',\n    'discotheque',\n    'dock',\n    'doorway outdoor',\n    'dorm room',\n    'driveway',\n    'driving range outdoor',\n    'drugstore',\n    'electrical substation',\n    'elevator door',\n    'elevator interior',\n    'elevator shaft',\n    'engine room',\n    'escalator indoor',\n    'excavation',\n    'factory indoor',\n    'fairway',\n    'fastfood restaurant',\n    'field cultivated',\n    'field wild',\n    'fire escape',\n    'fire station',\n    'firing range indoor',\n    'fishpond',\n    'florist shop indoor',\n    'food court',\n    'forest broadleaf',\n    'forest needleleaf',\n    'forest path',\n    'forest road',\n    'formal garden',\n    'fountain',\n    'galley',\n    'game room',\n    'garage indoor',\n    'garbage dump',\n    'gas station',\n    'gazebo exterior',\n    'general store indoor',\n    'general store outdoor',\n    'gift shop',\n    'golf course',\n    'greenhouse indoor',\n    'greenhouse outdoor',\n    'gymnasium indoor',\n    'hangar indoor',\n    'hangar outdoor',\n    'harbor',\n    'hayfield',\n    'heliport',\n    'herb garden',\n    'highway',\n    'hill',\n    'home office',\n    'hospital',\n    'hospital room',\n    'hot spring',\n    'hot tub outdoor',\n    'hotel outdoor',\n    'hotel room',\n    'house',\n    'hunting lodge outdoor',\n    'ice cream parlor',\n    'ice floe',\n    'ice shelf',\n    'ice skating rink indoor',\n    'ice skating rink outdoor',\n    'iceberg',\n    'igloo',\n    'industrial area',\n    'inn outdoor',\n    'islet',\n    'jacuzzi indoor',\n    'jail cell',\n    'jail indoor',\n    'jewelry shop',\n    'kasbah',\n    'kennel indoor',\n    'kennel outdoor',\n    'kindergarden classroom',\n    'kitchen',\n    'kitchenette',\n    'labyrinth outdoor',\n    'lake natural',\n    'landfill',\n    'landing deck',\n    'laundromat',\n    'lecture room',\n    'library indoor',\n    'library outdoor',\n    'lido deck outdoor',\n    'lift bridge',\n    'lighthouse',\n    'limousine interior',\n    'living room',\n    'lobby',\n    'lock chamber',\n    'locker room',\n    'mansion',\n    'manufactured home',\n    'market indoor',\n    'market outdoor',\n    'marsh',\n    'martial arts gym',\n    'mausoleum',\n    'medina',\n    'moat water',\n    'monastery outdoor',\n    'mosque indoor',\n    'mosque outdoor',\n    'motel',\n    'mountain',\n    'mountain snowy',\n    'movie theater indoor',\n    'museum indoor',\n    'music store',\n    'music studio',\n    'nuclear power plant outdoor',\n    'nursery',\n    'oast house',\n    'observatory outdoor',\n    'ocean',\n    'office',\n    'office building',\n    'oil refinery outdoor',\n    'oilrig',\n    'operating room',\n    'orchard',\n    'outhouse outdoor',\n    'pagoda',\n    'palace',\n    'pantry',\n    'park',\n    'parking garage indoor',\n    'parking garage outdoor',\n    'parking lot',\n    'parlor',\n    'pasture',\n    'patio',\n    'pavilion',\n    'pharmacy',\n    'phone booth',\n    'physics laboratory',\n    'picnic area',\n    'pilothouse indoor',\n    'planetarium outdoor',\n    'playground',\n    'playroom',\n    'plaza',\n    'podium indoor',\n    'podium outdoor',\n    'pond',\n    'poolroom establishment',\n    'poolroom home',\n    'power plant outdoor',\n    'promenade deck',\n    'pub indoor',\n    'pulpit',\n    'putting green',\n    'racecourse',\n    'raceway',\n    'raft',\n    'railroad track',\n    'rainforest',\n    'reception',\n    'recreation room',\n    'residential neighborhood',\n    'restaurant',\n    'restaurant kitchen',\n    'restaurant patio',\n    'rice paddy',\n    'riding arena',\n    'river',\n    'rock arch',\n    'rope bridge',\n    'ruin',\n    'runway',\n    'sandbar',\n    'sandbox',\n    'sauna',\n    'schoolhouse',\n    'sea cliff',\n    'server room',\n    'shed',\n    'shoe shop',\n    'shopfront',\n    'shopping mall indoor',\n    'shower',\n    'skatepark',\n    'ski lodge',\n    'ski resort',\n    'ski slope',\n    'sky',\n    'skyscraper',\n    'slum',\n    'snowfield',\n    'squash court',\n    'stable',\n    'stadium baseball',\n    'stadium football',\n    'stage indoor',\n    'staircase',\n    'street',\n    'subway interior',\n    'subway station platform',\n    'supermarket',\n    'sushi bar',\n    'swamp',\n    'swimming pool indoor',\n    'swimming pool outdoor',\n    'synagogue indoor',\n    'synagogue outdoor',\n    'television studio',\n    'temple east asia',\n    'temple south asia',\n    'tennis court indoor',\n    'tennis court outdoor',\n    'tent outdoor',\n    'theater indoor procenium',\n    'theater indoor seats',\n    'thriftshop',\n    'throne room',\n    'ticket booth',\n    'toll plaza',\n    'topiary garden',\n    'tower',\n    'toyshop',\n    'track outdoor',\n    'train railway',\n    'train station platform',\n    'tree farm',\n    'tree house',\n    'trench',\n    'underwater coral reef',\n    'utility room',\n    'valley',\n    'van interior',\n    'vegetable garden',\n    'veranda',\n    'veterinarians office',\n    'viaduct',\n    'videostore',\n    'village',\n    'vineyard',\n    'volcano',\n    'volleyball court indoor',\n    'volleyball court outdoor',\n    'waiting room',\n    'warehouse indoor',\n    'water tower',\n    'waterfall block',\n    'waterfall fan',\n    'waterfall plunge',\n    'watering hole',\n    'wave',\n    'wet bar',\n    'wheat field',\n    'wind farm',\n    'windmill',\n    'wine cellar barrel storage',\n    'wine cellar bottle storage',\n    'wrestling ring indoor',\n    'yard',\n    'youth hostel',\n]\n\ntemplates = [\n    'a photo of a {}.',\n    'a photo of the {}.',\n]\n```\n\n\n\n## StanfordCars\n\n```bash\nclasses = [\n    'AM General Hummer SUV 2000',\n    'Acura RL Sedan 2012',\n    'Acura TL Sedan 2012',\n    'Acura TL Type-S 2008',\n    'Acura TSX Sedan 2012',\n    'Acura Integra Type R 2001',\n    'Acura ZDX Hatchback 2012',\n    'Aston Martin V8 Vantage Convertible 2012',\n    'Aston Martin V8 Vantage Coupe 2012',\n    'Aston Martin Virage Convertible 2012',\n    'Aston Martin Virage Coupe 2012',\n    'Audi RS 4 Convertible 2008',\n    'Audi A5 Coupe 2012',\n    'Audi TTS Coupe 2012',\n    'Audi R8 Coupe 2012',\n    'Audi V8 Sedan 1994',\n    'Audi 100 Sedan 1994',\n    'Audi 100 Wagon 1994',\n    'Audi TT Hatchback 2011',\n    'Audi S6 Sedan 2011',\n    'Audi S5 Convertible 2012',\n    'Audi S5 Coupe 2012',\n    'Audi S4 Sedan 2012',\n    'Audi S4 Sedan 2007',\n    'Audi TT RS Coupe 2012',\n    'BMW ActiveHybrid 5 Sedan 2012',\n    'BMW 1 Series Convertible 2012',\n    'BMW 1 Series Coupe 2012',\n    'BMW 3 Series Sedan 2012',\n    'BMW 3 Series Wagon 2012',\n    'BMW 6 Series Convertible 2007',\n    'BMW X5 SUV 2007',\n    'BMW X6 SUV 2012',\n    'BMW M3 Coupe 2012',\n    'BMW M5 Sedan 2010',\n    'BMW M6 Convertible 2010',\n    'BMW X3 SUV 2012',\n    'BMW Z4 Convertible 2012',\n    'Bentley Continental Supersports Conv. Convertible 2012',\n    'Bentley Arnage Sedan 2009',\n    'Bentley Mulsanne Sedan 2011',\n    'Bentley Continental GT Coupe 2012',\n    'Bentley Continental GT Coupe 2007',\n    'Bentley Continental Flying Spur Sedan 2007',\n    'Bugatti Veyron 16.4 Convertible 2009',\n    'Bugatti Veyron 16.4 Coupe 2009',\n    'Buick Regal GS 2012',\n    'Buick Rainier SUV 2007',\n    'Buick Verano Sedan 2012',\n    'Buick Enclave SUV 2012',\n    'Cadillac CTS-V Sedan 2012',\n    'Cadillac SRX SUV 2012',\n    'Cadillac Escalade EXT Crew Cab 2007',\n    'Chevrolet Silverado 1500 Hybrid Crew Cab 2012',\n    'Chevrolet Corvette Convertible 2012',\n    'Chevrolet Corvette ZR1 2012',\n    'Chevrolet Corvette Ron Fellows Edition Z06 2007',\n    'Chevrolet Traverse SUV 2012',\n    'Chevrolet Camaro Convertible 2012',\n    'Chevrolet HHR SS 2010',\n    'Chevrolet Impala Sedan 2007',\n    'Chevrolet Tahoe Hybrid SUV 2012',\n    'Chevrolet Sonic Sedan 2012',\n    'Chevrolet Express Cargo Van 2007',\n    'Chevrolet Avalanche Crew Cab 2012',\n    'Chevrolet Cobalt SS 2010',\n    'Chevrolet Malibu Hybrid Sedan 2010',\n    'Chevrolet TrailBlazer SS 2009',\n    'Chevrolet Silverado 2500HD Regular Cab 2012',\n    'Chevrolet Silverado 1500 Classic Extended Cab 2007',\n    'Chevrolet Express Van 2007',\n    'Chevrolet Monte Carlo Coupe 2007',\n    'Chevrolet Malibu Sedan 2007',\n    'Chevrolet Silverado 1500 Extended Cab 2012',\n    'Chevrolet Silverado 1500 Regular Cab 2012',\n    'Chrysler Aspen SUV 2009',\n    'Chrysler Sebring Convertible 2010',\n    'Chrysler Town and Country Minivan 2012',\n    'Chrysler 300 SRT-8 2010',\n    'Chrysler Crossfire Convertible 2008',\n    'Chrysler PT Cruiser Convertible 2008',\n    'Daewoo Nubira Wagon 2002',\n    'Dodge Caliber Wagon 2012',\n    'Dodge Caliber Wagon 2007',\n    'Dodge Caravan Minivan 1997',\n    'Dodge Ram Pickup 3500 Crew Cab 2010',\n    'Dodge Ram Pickup 3500 Quad Cab 2009',\n    'Dodge Sprinter Cargo Van 2009',\n    'Dodge Journey SUV 2012',\n    'Dodge Dakota Crew Cab 2010',\n    'Dodge Dakota Club Cab 2007',\n    'Dodge Magnum Wagon 2008',\n    'Dodge Challenger SRT8 2011',\n    'Dodge Durango SUV 2012',\n    'Dodge Durango SUV 2007',\n    'Dodge Charger Sedan 2012',\n    'Dodge Charger SRT-8 2009',\n    'Eagle Talon Hatchback 1998',\n    'FIAT 500 Abarth 2012',\n    'FIAT 500 Convertible 2012',\n    'Ferrari FF Coupe 2012',\n    'Ferrari California Convertible 2012',\n    'Ferrari 458 Italia Convertible 2012',\n    'Ferrari 458 Italia Coupe 2012',\n    'Fisker Karma Sedan 2012',\n    'Ford F-450 Super Duty Crew Cab 2012',\n    'Ford Mustang Convertible 2007',\n    'Ford Freestar Minivan 2007',\n    'Ford Expedition EL SUV 2009',\n    'Ford Edge SUV 2012',\n    'Ford Ranger SuperCab 2011',\n    'Ford GT Coupe 2006',\n    'Ford F-150 Regular Cab 2012',\n    'Ford F-150 Regular Cab 2007',\n    'Ford Focus Sedan 2007',\n    'Ford E-Series Wagon Van 2012',\n    'Ford Fiesta Sedan 2012',\n    'GMC Terrain SUV 2012',\n    'GMC Savana Van 2012',\n    'GMC Yukon Hybrid SUV 2012',\n    'GMC Acadia SUV 2012',\n    'GMC Canyon Extended Cab 2012',\n    'Geo Metro Convertible 1993',\n    'HUMMER H3T Crew Cab 2010',\n    'HUMMER H2 SUT Crew Cab 2009',\n    'Honda Odyssey Minivan 2012',\n    'Honda Odyssey Minivan 2007',\n    'Honda Accord Coupe 2012',\n    'Honda Accord Sedan 2012',\n    'Hyundai Veloster Hatchback 2012',\n    'Hyundai Santa Fe SUV 2012',\n    'Hyundai Tucson SUV 2012',\n    'Hyundai Veracruz SUV 2012',\n    'Hyundai Sonata Hybrid Sedan 2012',\n    'Hyundai Elantra Sedan 2007',\n    'Hyundai Accent Sedan 2012',\n    'Hyundai Genesis Sedan 2012',\n    'Hyundai Sonata Sedan 2012',\n    'Hyundai Elantra Touring Hatchback 2012',\n    'Hyundai Azera Sedan 2012',\n    'Infiniti G Coupe IPL 2012',\n    'Infiniti QX56 SUV 2011',\n    'Isuzu Ascender SUV 2008',\n    'Jaguar XK XKR 2012',\n    'Jeep Patriot SUV 2012',\n    'Jeep Wrangler SUV 2012',\n    'Jeep Liberty SUV 2012',\n    'Jeep Grand Cherokee SUV 2012',\n    'Jeep Compass SUV 2012',\n    'Lamborghini Reventon Coupe 2008',\n    'Lamborghini Aventador Coupe 2012',\n    'Lamborghini Gallardo LP 570-4 Superleggera 2012',\n    'Lamborghini Diablo Coupe 2001',\n    'Land Rover Range Rover SUV 2012',\n    'Land Rover LR2 SUV 2012',\n    'Lincoln Town Car Sedan 2011',\n    'MINI Cooper Roadster Convertible 2012',\n    'Maybach Landaulet Convertible 2012',\n    'Mazda Tribute SUV 2011',\n    'McLaren MP4-12C Coupe 2012',\n    'Mercedes-Benz 300-Class Convertible 1993',\n    'Mercedes-Benz C-Class Sedan 2012',\n    'Mercedes-Benz SL-Class Coupe 2009',\n    'Mercedes-Benz E-Class Sedan 2012',\n    'Mercedes-Benz S-Class Sedan 2012',\n    'Mercedes-Benz Sprinter Van 2012',\n    'Mitsubishi Lancer Sedan 2012',\n    'Nissan Leaf Hatchback 2012',\n    'Nissan NV Passenger Van 2012',\n    'Nissan Juke Hatchback 2012',\n    'Nissan 240SX Coupe 1998',\n    'Plymouth Neon Coupe 1999',\n    'Porsche Panamera Sedan 2012',\n    'Ram C/V Cargo Van Minivan 2012',\n    'Rolls-Royce Phantom Drophead Coupe Convertible 2012',\n    'Rolls-Royce Ghost Sedan 2012',\n    'Rolls-Royce Phantom Sedan 2012',\n    'Scion xD Hatchback 2012',\n    'Spyker C8 Convertible 2009',\n    'Spyker C8 Coupe 2009',\n    'Suzuki Aerio Sedan 2007',\n    'Suzuki Kizashi Sedan 2012',\n    'Suzuki SX4 Hatchback 2012',\n    'Suzuki SX4 Sedan 2012',\n    'Tesla Model S Sedan 2012',\n    'Toyota Sequoia SUV 2012',\n    'Toyota Camry Sedan 2012',\n    'Toyota Corolla Sedan 2012',\n    'Toyota 4Runner SUV 2012',\n    'Volkswagen Golf Hatchback 2012',\n    'Volkswagen Golf Hatchback 1991',\n    'Volkswagen Beetle Hatchback 2012',\n    'Volvo C30 Hatchback 2012',\n    'Volvo 240 Sedan 1993',\n    'Volvo XC90 SUV 2007',\n    'smart fortwo Convertible 2012',\n]\n\ntemplates = [\n    'a photo of a {}.',\n    'a photo of the {}.',\n    'a photo of my {}.',\n    'i love my {}!',\n    'a photo of my dirty {}.',\n    'a photo of my clean {}.',\n    'a photo of my new {}.',\n    'a photo of my old {}.',\n]\n```\n\n\n\n## UCF101\n\n```bash\nclasses = [\n    'Apply Eye Makeup',\n    'Apply Lipstick',\n    'Archery',\n    'Baby Crawling',\n    'Balance Beam',\n    'Band Marching',\n    'Baseball Pitch',\n    'Basketball',\n    'Basketball Dunk',\n    'Bench Press',\n    'Biking',\n    'Billiards',\n    'Blow Dry Hair',\n    'Blowing Candles',\n    'Body Weight Squats',\n    'Bowling',\n    'Boxing Punching Bag',\n    'Boxing Speed Bag',\n    'Breast Stroke',\n    'Brushing Teeth',\n    'Clean And Jerk',\n    'Cliff Diving',\n    'Cricket Bowling',\n    'Cricket Shot',\n    'Cutting In Kitchen',\n    'Diving',\n    'Drumming',\n    'Fencing',\n    'Field Hockey Penalty',\n    'Floor Gymnastics',\n    'Frisbee Catch',\n    'Front Crawl',\n    'Golf Swing',\n    'Haircut',\n    'Hammer Throw',\n    'Hammering',\n    'Hand Stand Pushups',\n    'Handstand Walking',\n    'Head Massage',\n    'High Jump',\n    'Horse Race',\n    'Horse Riding',\n    'Hula Hoop',\n    'Ice Dancing',\n    'Javelin Throw',\n    'Juggling Balls',\n    'Jump Rope',\n    'Jumping Jack',\n    'Kayaking',\n    'Knitting',\n    'Long Jump',\n    'Lunges',\n    'Military Parade',\n    'Mixing',\n    'Mopping Floor',\n    'Nunchucks',\n    'Parallel Bars',\n    'Pizza Tossing',\n    'Playing Cello',\n    'Playing Daf',\n    'Playing Dhol',\n    'Playing Flute',\n    'Playing Guitar',\n    'Playing Piano',\n    'Playing Sitar',\n    'Playing Tabla',\n    'Playing Violin',\n    'Pole Vault',\n    'Pommel Horse',\n    'Pull Ups',\n    'Punch',\n    'Push Ups',\n    'Rafting',\n    'Rock Climbing Indoor',\n    'Rope Climbing',\n    'Rowing',\n    'Salsa Spin',\n    'Shaving Beard',\n    'Shotput',\n    'Skate Boarding',\n    'Skiing',\n    'Skijet',\n    'Sky Diving',\n    'Soccer Juggling',\n    'Soccer Penalty',\n    'Still Rings',\n    'Sumo Wrestling',\n    'Surfing',\n    'Swing',\n    'Table Tennis Shot',\n    'Tai Chi',\n    'Tennis Swing',\n    'Throw Discus',\n    'Trampoline Jumping',\n    'Typing',\n    'Uneven Bars',\n    'Volleyball Spiking',\n    'Walking With Dog',\n    'Wall Pushups',\n    'Writing On Board',\n    'Yo Yo',\n]\n\ntemplates = [\n    'a photo of a person {}.',\n    'a video of a person {}.',\n    'a example of a person {}.',\n    'a demonstration of a person {}.',\n    'a photo of the person {}.',\n    'a video of the person {}.',\n    'a example of the person {}.',\n    'a demonstration of the person {}.',\n    'a photo of a person using {}.',\n    'a video of a person using {}.',\n    'a example of a person using {}.',\n    'a demonstration of a person using {}.',\n    'a photo of the person using {}.',\n    'a video of the person using {}.',\n    'a example of the person using {}.',\n    'a demonstration of the person using {}.',\n    'a photo of a person doing {}.',\n    'a video of a person doing {}.',\n    'a example of a person doing {}.',\n    'a demonstration of a person doing {}.',\n    'a photo of the person doing {}.',\n    'a video of the person doing {}.',\n    'a example of the person doing {}.',\n    'a demonstration of the person doing {}.',\n    'a photo of a person during {}.',\n    'a video of a person during {}.',\n    'a example of a person during {}.',\n    'a demonstration of a person during {}.',\n    'a photo of the person during {}.',\n    'a video of the person during {}.',\n    'a example of the person during {}.',\n    'a demonstration of the person during {}.',\n    'a photo of a person performing {}.',\n    'a video of a person performing {}.',\n    'a example of a person performing {}.',\n    'a demonstration of a person performing {}.',\n    'a photo of the person performing {}.',\n    'a video of the person performing {}.',\n    'a example of the person performing {}.',\n    'a demonstration of the person performing {}.',\n    'a photo of a person practicing {}.',\n    'a video of a person practicing {}.',\n    'a example of a person practicing {}.',\n    'a demonstration of a person practicing {}.',\n    'a photo of the person practicing {}.',\n    'a video of the person practicing {}.',\n    'a example of the person practicing {}.',\n    'a demonstration of the person practicing {}.',\n]\n```\n\n\n"
  },
  {
    "path": "CLIP/data/rendered-sst2.md",
    "content": "# The Rendered SST2 Dataset\n\nIn the paper, we used an image classification dataset called Rendered SST2, to evaluate the model's capability on optical character recognition. To do so, we rendered the sentences in the [Standford Sentiment Treebank v2](https://nlp.stanford.edu/sentiment/treebank.html) dataset and used those as the input to the CLIP image encoder.\n\nThe following command will download a 131MB archive countaining the images and extract into a subdirectory `rendered-sst2`:\n\n```bash\nwget https://openaipublic.azureedge.net/clip/data/rendered-sst2.tgz\ntar zxvf rendered-sst2.tgz\n```\n\n"
  },
  {
    "path": "CLIP/data/yfcc100m.md",
    "content": "# The YFCC100M Subset\n\nIn the paper, we performed a dataset ablation using a subset of the YFCC100M dataset and showed that the performance remained largely similar. \n\nThe subset contains 14,829,396 images, about 15% of the full dataset, which have been filtered to only keep those with natural languag titles and/or descriptions in English.\n\nWe provide the list of (line number, photo identifier, photo hash) of each image contained in this subset. These correspond to the first three columns in the dataset's metadata TSV file.\n\n```bash\nwget https://openaipublic.azureedge.net/clip/data/yfcc100m_subset_data.tsv.bz2\nbunzip2 yfcc100m_subset_data.tsv.bz2\n```\n\nUse of the underlying media files is subject to the Creative Commons licenses chosen by their creators/uploaders. For more information about the YFCC100M dataset, visit [the official website](https://multimediacommons.wordpress.com/yfcc100m-core-dataset/)."
  },
  {
    "path": "CLIP/hubconf.py",
    "content": "from clip.clip import tokenize as _tokenize, load as _load, available_models as _available_models\nimport re\nimport string\n\ndependencies = [\"torch\", \"torchvision\", \"ftfy\", \"regex\", \"tqdm\"]\n\n# For compatibility (cannot include special characters in function name)\nmodel_functions = { model: re.sub(f'[{string.punctuation}]', '_', model) for model in _available_models()}\n\ndef _create_hub_entrypoint(model):\n    def entrypoint(**kwargs):      \n        return _load(model, **kwargs)\n    \n    entrypoint.__doc__ = f\"\"\"Loads the {model} CLIP model\n\n        Parameters\n        ----------\n        device : Union[str, torch.device]\n            The device to put the loaded model\n\n        jit : bool\n            Whether to load the optimized JIT model or more hackable non-JIT model (default).\n\n        download_root: str\n            path to download the model files; by default, it uses \"~/.cache/clip\"\n\n        Returns\n        -------\n        model : torch.nn.Module\n            The {model} CLIP model\n\n        preprocess : Callable[[PIL.Image], torch.Tensor]\n            A torchvision transform that converts a PIL image into a tensor that the returned model can take as its input\n        \"\"\"\n    return entrypoint\n\ndef tokenize():\n    return _tokenize\n\n_entrypoints = {model_functions[model]: _create_hub_entrypoint(model) for model in _available_models()}\n\nglobals().update(_entrypoints)"
  },
  {
    "path": "CLIP/model-card.md",
    "content": "# Model Card: CLIP\n\nInspired by [Model Cards for Model Reporting (Mitchell et al.)](https://arxiv.org/abs/1810.03993) and [Lessons from Archives (Jo & Gebru)](https://arxiv.org/pdf/1912.10389.pdf), we’re providing some accompanying information about the multimodal model.\n\n## Model Details\n\nThe CLIP model was developed by researchers at OpenAI to learn about what contributes to robustness in computer vision tasks. The model was also developed to test the ability of models to generalize to arbitrary image classification tasks in a zero-shot manner. It was not developed for general model deployment - to deploy models like CLIP, researchers will first need to carefully study their capabilities in relation to the specific context they’re being deployed within.\n\n### Model Date\n\nJanuary 2021\n\n### Model Type\n\nThe base model uses a ResNet50 with several modifications as an image encoder and uses a masked self-attention Transformer as a text encoder. These encoders are trained to maximize the similarity of (image, text) pairs via a contrastive loss. There is also a variant of the model where the ResNet image encoder is replaced with a Vision Transformer.\n\n### Model Versions\n\nInitially, we’ve released one CLIP model based on the Vision Transformer architecture equivalent to ViT-B/32, along with the RN50 model, using the architecture equivalent to ResNet-50.\n\nAs part of the staged release process, we have also released the RN101 model, as well as RN50x4, a RN50 scaled up 4x according to the [EfficientNet](https://arxiv.org/abs/1905.11946) scaling rule. In July 2021, we additionally released the RN50x16 and ViT-B/16 models, and in January 2022, the RN50x64 and ViT-L/14 models were released. Lastly, the ViT-L/14@336px model was released in April 2022.\n\nPlease see the paper linked below for further details about their specification.\n\n### Documents\n\n- [Blog Post](https://openai.com/blog/clip/)\n- [CLIP Paper](https://arxiv.org/abs/2103.00020)\n\n\n\n## Model Use\n\n### Intended Use\n\nThe model is intended as a research output for research communities. We hope that this model will enable researchers to better understand and explore zero-shot, arbitrary image classification. We also hope it can be used for interdisciplinary studies of the potential impact of such models - the CLIP paper includes a discussion of potential downstream impacts to provide an example for this sort of analysis.\n\n#### Primary intended uses\n\nThe primary intended users of these models are AI researchers.\n\nWe primarily imagine the model will be used by researchers to better understand robustness, generalization, and other capabilities, biases, and constraints of computer vision models.\n\n### Out-of-Scope Use Cases\n\n**Any** deployed use case of the model - whether commercial or not - is currently out of scope. Non-deployed use cases such as image search in a constrained environment, are also not recommended unless there is thorough in-domain testing of the model with a specific, fixed class taxonomy. This is because our safety assessment demonstrated a high need for task specific testing especially given the variability of CLIP’s performance with different class taxonomies. This makes untested and unconstrained deployment of the model in any use case currently potentially harmful. \n\nCertain use cases which would fall under the domain of surveillance and facial recognition are always out-of-scope regardless of performance of the model. This is because the use of artificial intelligence for tasks such as these can be premature currently given the lack of testing norms and checks to ensure its fair use.\n\nSince the model has not been purposefully trained in or evaluated on any languages other than English, its use should be limited to English language use cases.\n\n\n\n## Data\n\nThe model was trained on publicly available image-caption data. This was done through a combination of crawling a handful of websites and using commonly-used pre-existing image datasets such as [YFCC100M](http://projects.dfki.uni-kl.de/yfcc100m/). A large portion of the data comes from our crawling of the internet. This means that the data is more representative of people and societies most connected to the internet which tend to skew towards more developed nations, and younger, male users.\n\n### Data Mission Statement\n\nOur goal with building this dataset was to test out robustness and generalizability in computer vision tasks. As a result, the focus was on gathering large quantities of data from different publicly-available internet data sources. The data was gathered in a mostly non-interventionist manner. However, we only crawled websites that had policies against excessively violent and adult images and allowed us to filter out such content. We do not intend for this dataset to be used as the basis for any commercial or deployed model and will not be releasing the dataset.\n\n\n\n## Performance and Limitations\n\n### Performance\n\nWe have evaluated the performance of CLIP on a wide range of benchmarks across a variety of computer vision datasets such as OCR to texture recognition to fine-grained classification. The paper describes model performance on the following datasets:\n\n- Food101\n- CIFAR10   \n- CIFAR100   \n- Birdsnap\n- SUN397\n- Stanford Cars\n- FGVC Aircraft\n- VOC2007\n- DTD\n- Oxford-IIIT Pet dataset\n- Caltech101\n- Flowers102\n- MNIST   \n- SVHN \n- IIIT5K   \n- Hateful Memes   \n- SST-2\n- UCF101\n- Kinetics700\n- Country211\n- CLEVR Counting\n- KITTI Distance\n- STL-10\n- RareAct\n- Flickr30\n- MSCOCO\n- ImageNet\n- ImageNet-A\n- ImageNet-R\n- ImageNet Sketch\n- ObjectNet (ImageNet Overlap)\n- Youtube-BB\n- ImageNet-Vid\n\n## Limitations\n\nCLIP and our analysis of it have a number of limitations. CLIP currently struggles with respect to certain tasks such as fine grained classification and counting objects. CLIP also poses issues with regards to fairness and bias which we discuss in the paper and briefly in the next section. Additionally, our approach to testing CLIP also has an important limitation- in many cases we have used linear probes to evaluate the performance of CLIP and there is evidence suggesting that linear probes can underestimate model performance.\n\n### Bias and Fairness\n\nWe find that the performance of CLIP - and the specific biases it exhibits - can depend significantly on class design and the choices one makes for categories to include and exclude. We tested the risk of certain kinds of denigration with CLIP by classifying images of people from [Fairface](https://arxiv.org/abs/1908.04913) into crime-related and non-human animal categories. We found significant disparities with respect to race and gender. Additionally, we found that these disparities could shift based on how the classes were constructed. (Details captured in the Broader Impacts Section in the paper).\n\nWe also tested the performance of CLIP on gender, race and age classification using the Fairface dataset (We default to using race categories as they are constructed in the Fairface dataset.) in order to assess quality of performance across different demographics. We found accuracy >96% across all races for gender classification with ‘Middle Eastern’ having the highest accuracy (98.4%) and ‘White’ having the lowest (96.5%). Additionally, CLIP averaged ~93% for racial classification and ~63% for age classification. Our use of evaluations to test for gender, race and age classification as well as denigration harms is simply to evaluate performance of the model across people and surface potential risks and not to demonstrate an endorsement/enthusiasm for such tasks.\n\n\n\n## Feedback\n\n### Where to send questions or comments about the model\n\nPlease use [this Google Form](https://forms.gle/Uv7afRH5dvY34ZEs9)\n"
  },
  {
    "path": "CLIP/model.py",
    "content": "from collections import OrderedDict\nfrom typing import Tuple, Union\n\nimport numpy as np\nimport torch\nimport torch.nn.functional as F\nfrom torch import nn\n\n\nclass Bottleneck(nn.Module):\n    expansion = 4\n\n    def __init__(self, inplanes, planes, stride=1):\n        super().__init__()\n\n        # all conv layers have stride 1. an avgpool is performed after the second convolution when stride > 1\n        self.conv1 = nn.Conv2d(inplanes, planes, 1, bias=False)\n        self.bn1 = nn.BatchNorm2d(planes)\n        self.relu1 = nn.ReLU(inplace=True)\n\n        self.conv2 = nn.Conv2d(planes, planes, 3, padding=1, bias=False)\n        self.bn2 = nn.BatchNorm2d(planes)\n        self.relu2 = nn.ReLU(inplace=True)\n\n        self.avgpool = nn.AvgPool2d(stride) if stride > 1 else nn.Identity()\n\n        self.conv3 = nn.Conv2d(planes, planes * self.expansion, 1, bias=False)\n        self.bn3 = nn.BatchNorm2d(planes * self.expansion)\n        self.relu3 = nn.ReLU(inplace=True)\n\n        self.downsample = None\n        self.stride = stride\n\n        if stride > 1 or inplanes != planes * Bottleneck.expansion:\n            # downsampling layer is prepended with an avgpool, and the subsequent convolution has stride 1\n            self.downsample = nn.Sequential(OrderedDict([\n                (\"-1\", nn.AvgPool2d(stride)),\n                (\"0\", nn.Conv2d(inplanes, planes * self.expansion, 1, stride=1, bias=False)),\n                (\"1\", nn.BatchNorm2d(planes * self.expansion))\n            ]))\n\n    def forward(self, x: torch.Tensor):\n        identity = x\n\n        out = self.relu1(self.bn1(self.conv1(x)))\n        out = self.relu2(self.bn2(self.conv2(out)))\n        out = self.avgpool(out)\n        out = self.bn3(self.conv3(out))\n\n        if self.downsample is not None:\n            identity = self.downsample(x)\n\n        out += identity\n        out = self.relu3(out)\n        return out\n\n\nclass AttentionPool2d(nn.Module):\n    def __init__(self, spacial_dim: int, embed_dim: int, num_heads: int, output_dim: int = None):\n        super().__init__()\n        self.positional_embedding = nn.Parameter(torch.randn(spacial_dim ** 2 + 1, embed_dim) / embed_dim ** 0.5)\n        self.k_proj = nn.Linear(embed_dim, embed_dim)\n        self.q_proj = nn.Linear(embed_dim, embed_dim)\n        self.v_proj = nn.Linear(embed_dim, embed_dim)\n        self.c_proj = nn.Linear(embed_dim, output_dim or embed_dim)\n        self.num_heads = num_heads\n\n    def forward(self, x):\n        x = x.flatten(start_dim=2).permute(2, 0, 1)  # NCHW -> (HW)NC\n        x = torch.cat([x.mean(dim=0, keepdim=True), x], dim=0)  # (HW+1)NC\n        x = x + self.positional_embedding[:, None, :].to(x.dtype)  # (HW+1)NC\n        x, _ = F.multi_head_attention_forward(\n            query=x[:1], key=x, value=x,\n            embed_dim_to_check=x.shape[-1],\n            num_heads=self.num_heads,\n            q_proj_weight=self.q_proj.weight,\n            k_proj_weight=self.k_proj.weight,\n            v_proj_weight=self.v_proj.weight,\n            in_proj_weight=None,\n            in_proj_bias=torch.cat([self.q_proj.bias, self.k_proj.bias, self.v_proj.bias]),\n            bias_k=None,\n            bias_v=None,\n            add_zero_attn=False,\n            dropout_p=0,\n            out_proj_weight=self.c_proj.weight,\n            out_proj_bias=self.c_proj.bias,\n            use_separate_proj_weight=True,\n            training=self.training,\n            need_weights=False\n        )\n        return x.squeeze(0)\n\n\nclass ModifiedResNet(nn.Module):\n    \"\"\"\n    A ResNet class that is similar to torchvision's but contains the following changes:\n    - There are now 3 \"stem\" convolutions as opposed to 1, with an average pool instead of a max pool.\n    - Performs anti-aliasing strided convolutions, where an avgpool is prepended to convolutions with stride > 1\n    - The final pooling layer is a QKV attention instead of an average pool\n    \"\"\"\n\n    def __init__(self, layers, output_dim, heads, input_resolution=224, width=64):\n        super().__init__()\n        self.output_dim = output_dim\n        self.input_resolution = input_resolution\n\n        # the 3-layer stem\n        self.conv1 = nn.Conv2d(3, width // 2, kernel_size=3, stride=2, padding=1, bias=False)\n        self.bn1 = nn.BatchNorm2d(width // 2)\n        self.relu1 = nn.ReLU(inplace=True)\n        self.conv2 = nn.Conv2d(width // 2, width // 2, kernel_size=3, padding=1, bias=False)\n        self.bn2 = nn.BatchNorm2d(width // 2)\n        self.relu2 = nn.ReLU(inplace=True)\n        self.conv3 = nn.Conv2d(width // 2, width, kernel_size=3, padding=1, bias=False)\n        self.bn3 = nn.BatchNorm2d(width)\n        self.relu3 = nn.ReLU(inplace=True)\n        self.avgpool = nn.AvgPool2d(2)\n\n        # residual layers\n        self._inplanes = width  # this is a *mutable* variable used during construction\n        self.layer1 = self._make_layer(width, layers[0])\n        self.layer2 = self._make_layer(width * 2, layers[1], stride=2)\n        self.layer3 = self._make_layer(width * 4, layers[2], stride=2)\n        self.layer4 = self._make_layer(width * 8, layers[3], stride=2)\n\n        embed_dim = width * 32  # the ResNet feature dimension\n        self.attnpool = AttentionPool2d(input_resolution // 32, embed_dim, heads, output_dim)\n\n    def _make_layer(self, planes, blocks, stride=1):\n        layers = [Bottleneck(self._inplanes, planes, stride)]\n\n        self._inplanes = planes * Bottleneck.expansion\n        for _ in range(1, blocks):\n            layers.append(Bottleneck(self._inplanes, planes))\n\n        return nn.Sequential(*layers)\n\n    def forward(self, x):\n        def stem(x):\n            x = self.relu1(self.bn1(self.conv1(x)))\n            x = self.relu2(self.bn2(self.conv2(x)))\n            x = self.relu3(self.bn3(self.conv3(x)))\n            x = self.avgpool(x)\n            return x\n\n        x = x.type(self.conv1.weight.dtype)\n        x = stem(x)\n        x = self.layer1(x)\n        x = self.layer2(x)\n        x = self.layer3(x)\n        x = self.layer4(x)\n        x = self.attnpool(x)\n\n        return x\n\n\nclass LayerNorm(nn.LayerNorm):\n    \"\"\"Subclass torch's LayerNorm to handle fp16.\"\"\"\n\n    def forward(self, x: torch.Tensor):\n        orig_type = x.dtype\n        ret = super().forward(x.type(torch.float32))\n        return ret.type(orig_type)\n\n\nclass QuickGELU(nn.Module):\n    def forward(self, x: torch.Tensor):\n        return x * torch.sigmoid(1.702 * x)\n\n\nclass ResidualAttentionBlock(nn.Module):\n    def __init__(self, d_model: int, n_head: int, attn_mask: torch.Tensor = None):\n        super().__init__()\n\n        self.attn = nn.MultiheadAttention(d_model, n_head)\n        self.ln_1 = LayerNorm(d_model)\n        self.mlp = nn.Sequential(OrderedDict([\n            (\"c_fc\", nn.Linear(d_model, d_model * 4)),\n            (\"gelu\", QuickGELU()),\n            (\"c_proj\", nn.Linear(d_model * 4, d_model))\n        ]))\n        self.ln_2 = LayerNorm(d_model)\n        self.attn_mask = attn_mask\n\n    def attention(self, x: torch.Tensor):\n        self.attn_mask = self.attn_mask.to(dtype=x.dtype, device=x.device) if self.attn_mask is not None else None\n        return self.attn(x, x, x, need_weights=False, attn_mask=self.attn_mask)[0]\n\n    def forward(self, x: torch.Tensor):\n        x = x + self.attention(self.ln_1(x))\n        x = x + self.mlp(self.ln_2(x))\n        return x\n\n\nclass Transformer(nn.Module):\n    def __init__(self, width: int, layers: int, heads: int, attn_mask: torch.Tensor = None):\n        super().__init__()\n        self.width = width\n        self.layers = layers\n        self.resblocks = nn.Sequential(*[ResidualAttentionBlock(width, heads, attn_mask) for _ in range(layers)])\n\n    def forward(self, x: torch.Tensor):\n        return self.resblocks(x)\n\n\nclass VisionTransformer(nn.Module):\n    def __init__(self, input_resolution: int, patch_size: int, width: int, layers: int, heads: int, output_dim: int):\n        super().__init__()\n        self.input_resolution = input_resolution\n        self.output_dim = output_dim\n        self.conv1 = nn.Conv2d(in_channels=3, out_channels=width, kernel_size=patch_size, stride=patch_size, bias=False)\n\n        scale = width ** -0.5\n        self.class_embedding = nn.Parameter(scale * torch.randn(width))\n        self.positional_embedding = nn.Parameter(scale * torch.randn((input_resolution // patch_size) ** 2 + 1, width))\n        self.ln_pre = LayerNorm(width)\n\n        self.transformer = Transformer(width, layers, heads)\n\n        self.ln_post = LayerNorm(width)\n        self.proj = nn.Parameter(scale * torch.randn(width, output_dim))\n\n    def forward(self, x: torch.Tensor):\n        x = self.conv1(x)  # shape = [*, width, grid, grid]\n        x = x.reshape(x.shape[0], x.shape[1], -1)  # shape = [*, width, grid ** 2]\n        x = x.permute(0, 2, 1)  # shape = [*, grid ** 2, width]\n        x = torch.cat([self.class_embedding.to(x.dtype) + torch.zeros(x.shape[0], 1, x.shape[-1], dtype=x.dtype, device=x.device), x], dim=1)  # shape = [*, grid ** 2 + 1, width]\n        x = x + self.positional_embedding.to(x.dtype)\n        x = self.ln_pre(x)\n\n        x = x.permute(1, 0, 2)  # NLD -> LND\n        x = self.transformer(x)\n        x = x.permute(1, 0, 2)  # LND -> NLD\n\n        x = self.ln_post(x[:, 0, :])\n\n        if self.proj is not None:\n            x = x @ self.proj\n\n        return x\n\n\nclass CLIP(nn.Module):\n    def __init__(self,\n                 embed_dim: int,\n                 # vision\n                 image_resolution: int,\n                 vision_layers: Union[Tuple[int, int, int, int], int],\n                 vision_width: int,\n                 vision_patch_size: int,\n                 # text\n                 context_length: int,\n                 vocab_size: int,\n                 transformer_width: int,\n                 transformer_heads: int,\n                 transformer_layers: int\n                 ):\n        super().__init__()\n\n        self.context_length = context_length\n\n        if isinstance(vision_layers, (tuple, list)):\n            vision_heads = vision_width * 32 // 64\n            self.visual = ModifiedResNet(\n                layers=vision_layers,\n                output_dim=embed_dim,\n                heads=vision_heads,\n                input_resolution=image_resolution,\n                width=vision_width\n            )\n        else:\n            vision_heads = vision_width // 64\n            self.visual = VisionTransformer(\n                input_resolution=image_resolution,\n                patch_size=vision_patch_size,\n                width=vision_width,\n                layers=vision_layers,\n                heads=vision_heads,\n                output_dim=embed_dim\n            )\n\n        self.transformer = Transformer(\n            width=transformer_width,\n            layers=transformer_layers,\n            heads=transformer_heads,\n            attn_mask=self.build_attention_mask()\n        )\n\n        self.vocab_size = vocab_size\n        self.token_embedding = nn.Embedding(vocab_size, transformer_width)\n        self.positional_embedding = nn.Parameter(torch.empty(self.context_length, transformer_width))\n        self.ln_final = LayerNorm(transformer_width)\n\n        self.text_projection = nn.Parameter(torch.empty(transformer_width, embed_dim))\n        self.logit_scale = nn.Parameter(torch.ones([]) * np.log(1 / 0.07))\n\n        self.initialize_parameters()\n\n    def initialize_parameters(self):\n        nn.init.normal_(self.token_embedding.weight, std=0.02)\n        nn.init.normal_(self.positional_embedding, std=0.01)\n\n        if isinstance(self.visual, ModifiedResNet):\n            if self.visual.attnpool is not None:\n                std = self.visual.attnpool.c_proj.in_features ** -0.5\n                nn.init.normal_(self.visual.attnpool.q_proj.weight, std=std)\n                nn.init.normal_(self.visual.attnpool.k_proj.weight, std=std)\n                nn.init.normal_(self.visual.attnpool.v_proj.weight, std=std)\n                nn.init.normal_(self.visual.attnpool.c_proj.weight, std=std)\n\n            for resnet_block in [self.visual.layer1, self.visual.layer2, self.visual.layer3, self.visual.layer4]:\n                for name, param in resnet_block.named_parameters():\n                    if name.endswith(\"bn3.weight\"):\n                        nn.init.zeros_(param)\n\n        proj_std = (self.transformer.width ** -0.5) * ((2 * self.transformer.layers) ** -0.5)\n        attn_std = self.transformer.width ** -0.5\n        fc_std = (2 * self.transformer.width) ** -0.5\n        for block in self.transformer.resblocks:\n            nn.init.normal_(block.attn.in_proj_weight, std=attn_std)\n            nn.init.normal_(block.attn.out_proj.weight, std=proj_std)\n            nn.init.normal_(block.mlp.c_fc.weight, std=fc_std)\n            nn.init.normal_(block.mlp.c_proj.weight, std=proj_std)\n\n        if self.text_projection is not None:\n            nn.init.normal_(self.text_projection, std=self.transformer.width ** -0.5)\n\n    def build_attention_mask(self):\n        # lazily create causal attention mask, with full attention between the vision tokens\n        # pytorch uses additive attention mask; fill with -inf\n        mask = torch.empty(self.context_length, self.context_length)\n        mask.fill_(float(\"-inf\"))\n        mask.triu_(1)  # zero out the lower diagonal\n        return mask\n\n    @property\n    def dtype(self):\n        return self.visual.conv1.weight.dtype\n\n    def encode_image(self, image):\n        return self.visual(image.type(self.dtype))\n\n    def encode_text(self, text):\n        x = self.token_embedding(text).type(self.dtype)  # [batch_size, n_ctx, d_model]\n\n        x = x + self.positional_embedding.type(self.dtype)\n        x = x.permute(1, 0, 2)  # NLD -> LND\n        x = self.transformer(x)\n        x = x.permute(1, 0, 2)  # LND -> NLD\n        x = self.ln_final(x).type(self.dtype)\n\n        # x.shape = [batch_size, n_ctx, transformer.width]\n        # take features from the eot embedding (eot_token is the highest number in each sequence)\n        x = x[torch.arange(x.shape[0]), text.argmax(dim=-1)] @ self.text_projection\n\n        return x\n\n    def forward(self, image, text):\n        image_features = self.encode_image(image)\n        text_features = self.encode_text(text)\n\n        # normalized features\n        image_features = image_features / image_features.norm(dim=1, keepdim=True)\n        text_features = text_features / text_features.norm(dim=1, keepdim=True)\n\n        # cosine similarity as logits\n        logit_scale = self.logit_scale.exp()\n        logits_per_image = logit_scale * image_features @ text_features.t()\n        logits_per_text = logits_per_image.t()\n\n        # shape = [global_batch_size, global_batch_size]\n        return logits_per_image, logits_per_text\n\n\ndef convert_weights(model: nn.Module):\n    \"\"\"Convert applicable model parameters to fp16\"\"\"\n\n    def _convert_weights_to_fp16(l):\n        if isinstance(l, (nn.Conv1d, nn.Conv2d, nn.Linear)):\n            l.weight.data = l.weight.data.half()\n            if l.bias is not None:\n                l.bias.data = l.bias.data.half()\n\n        if isinstance(l, nn.MultiheadAttention):\n            for attr in [*[f\"{s}_proj_weight\" for s in [\"in\", \"q\", \"k\", \"v\"]], \"in_proj_bias\", \"bias_k\", \"bias_v\"]:\n                tensor = getattr(l, attr)\n                if tensor is not None:\n                    tensor.data = tensor.data.half()\n\n        for name in [\"text_projection\", \"proj\"]:\n            if hasattr(l, name):\n                attr = getattr(l, name)\n                if attr is not None:\n                    attr.data = attr.data.half()\n\n    model.apply(_convert_weights_to_fp16)\n\n\ndef build_model(state_dict: dict):\n    vit = \"visual.proj\" in state_dict\n\n    if vit:\n        vision_width = state_dict[\"visual.conv1.weight\"].shape[0]\n        vision_layers = len([k for k in state_dict.keys() if k.startswith(\"visual.\") and k.endswith(\".attn.in_proj_weight\")])\n        vision_patch_size = state_dict[\"visual.conv1.weight\"].shape[-1]\n        grid_size = round((state_dict[\"visual.positional_embedding\"].shape[0] - 1) ** 0.5)\n        image_resolution = vision_patch_size * grid_size\n    else:\n        counts: list = [len(set(k.split(\".\")[2] for k in state_dict if k.startswith(f\"visual.layer{b}\"))) for b in [1, 2, 3, 4]]\n        vision_layers = tuple(counts)\n        vision_width = state_dict[\"visual.layer1.0.conv1.weight\"].shape[0]\n        output_width = round((state_dict[\"visual.attnpool.positional_embedding\"].shape[0] - 1) ** 0.5)\n        vision_patch_size = None\n        assert output_width ** 2 + 1 == state_dict[\"visual.attnpool.positional_embedding\"].shape[0]\n        image_resolution = output_width * 32\n\n    embed_dim = state_dict[\"text_projection\"].shape[1]\n    context_length = state_dict[\"positional_embedding\"].shape[0]\n    vocab_size = state_dict[\"token_embedding.weight\"].shape[0]\n    transformer_width = state_dict[\"ln_final.weight\"].shape[0]\n    transformer_heads = transformer_width // 64\n    transformer_layers = len(set(k.split(\".\")[2] for k in state_dict if k.startswith(\"transformer.resblocks\")))\n\n    model = CLIP(\n        embed_dim,\n        image_resolution, vision_layers, vision_width, vision_patch_size,\n        context_length, vocab_size, transformer_width, transformer_heads, transformer_layers\n    )\n\n    for key in [\"input_resolution\", \"context_length\", \"vocab_size\"]:\n        if key in state_dict:\n            del state_dict[key]\n\n    convert_weights(model)\n    model.load_state_dict(state_dict)\n    return model.eval()\n"
  },
  {
    "path": "CLIP/requirements.txt",
    "content": "ftfy\nregex\ntqdm\ntorch\ntorchvision\n"
  },
  {
    "path": "CLIP/setup.py",
    "content": "import os\n\nimport pkg_resources\nfrom setuptools import setup, find_packages\n\nsetup(\n    name=\"clip\",\n    py_modules=[\"clip\"],\n    version=\"1.0\",\n    description=\"\",\n    author=\"OpenAI\",\n    packages=find_packages(exclude=[\"tests*\"]),\n    install_requires=[\n        str(r)\n        for r in pkg_resources.parse_requirements(\n            open(os.path.join(os.path.dirname(__file__), \"requirements.txt\"))\n        )\n    ],\n    include_package_data=True,\n    extras_require={'dev': ['pytest']},\n)\n"
  },
  {
    "path": "CLIP/simple_tokenizer.py",
    "content": "import gzip\nimport html\nimport os\nfrom functools import lru_cache\n\nimport ftfy\nimport regex as re\n\n\n@lru_cache()\ndef default_bpe():\n    return os.path.join(os.path.dirname(os.path.abspath(__file__)), \"bpe_simple_vocab_16e6.txt.gz\")\n\n\n@lru_cache()\ndef bytes_to_unicode():\n    \"\"\"\n    Returns list of utf-8 byte and a corresponding list of unicode strings.\n    The reversible bpe codes work on unicode strings.\n    This means you need a large # of unicode characters in your vocab if you want to avoid UNKs.\n    When you're at something like a 10B token dataset you end up needing around 5K for decent coverage.\n    This is a signficant percentage of your normal, say, 32K bpe vocab.\n    To avoid that, we want lookup tables between utf-8 bytes and unicode strings.\n    And avoids mapping to whitespace/control characters the bpe code barfs on.\n    \"\"\"\n    bs = list(range(ord(\"!\"), ord(\"~\")+1))+list(range(ord(\"¡\"), ord(\"¬\")+1))+list(range(ord(\"®\"), ord(\"ÿ\")+1))\n    cs = bs[:]\n    n = 0\n    for b in range(2**8):\n        if b not in bs:\n            bs.append(b)\n            cs.append(2**8+n)\n            n += 1\n    cs = [chr(n) for n in cs]\n    return dict(zip(bs, cs))\n\n\ndef get_pairs(word):\n    \"\"\"Return set of symbol pairs in a word.\n    Word is represented as tuple of symbols (symbols being variable-length strings).\n    \"\"\"\n    pairs = set()\n    prev_char = word[0]\n    for char in word[1:]:\n        pairs.add((prev_char, char))\n        prev_char = char\n    return pairs\n\n\ndef basic_clean(text):\n    text = ftfy.fix_text(text)\n    text = html.unescape(html.unescape(text))\n    return text.strip()\n\n\ndef whitespace_clean(text):\n    text = re.sub(r'\\s+', ' ', text)\n    text = text.strip()\n    return text\n\n\nclass SimpleTokenizer(object):\n    def __init__(self, bpe_path: str = default_bpe()):\n        self.byte_encoder = bytes_to_unicode()\n        self.byte_decoder = {v: k for k, v in self.byte_encoder.items()}\n        merges = gzip.open(bpe_path).read().decode(\"utf-8\").split('\\n')\n        merges = merges[1:49152-256-2+1]\n        merges = [tuple(merge.split()) for merge in merges]\n        vocab = list(bytes_to_unicode().values())\n        vocab = vocab + [v+'</w>' for v in vocab]\n        for merge in merges:\n            vocab.append(''.join(merge))\n        vocab.extend(['<|startoftext|>', '<|endoftext|>'])\n        self.encoder = dict(zip(vocab, range(len(vocab))))\n        self.decoder = {v: k for k, v in self.encoder.items()}\n        self.bpe_ranks = dict(zip(merges, range(len(merges))))\n        self.cache = {'<|startoftext|>': '<|startoftext|>', '<|endoftext|>': '<|endoftext|>'}\n        self.pat = re.compile(r\"\"\"<\\|startoftext\\|>|<\\|endoftext\\|>|'s|'t|'re|'ve|'m|'ll|'d|[\\p{L}]+|[\\p{N}]|[^\\s\\p{L}\\p{N}]+\"\"\", re.IGNORECASE)\n\n    def bpe(self, token):\n        if token in self.cache:\n            return self.cache[token]\n        word = tuple(token[:-1]) + ( token[-1] + '</w>',)\n        pairs = get_pairs(word)\n\n        if not pairs:\n            return token+'</w>'\n\n        while True:\n            bigram = min(pairs, key = lambda pair: self.bpe_ranks.get(pair, float('inf')))\n            if bigram not in self.bpe_ranks:\n                break\n            first, second = bigram\n            new_word = []\n            i = 0\n            while i < len(word):\n                try:\n                    j = word.index(first, i)\n                    new_word.extend(word[i:j])\n                    i = j\n                except:\n                    new_word.extend(word[i:])\n                    break\n\n                if word[i] == first and i < len(word)-1 and word[i+1] == second:\n                    new_word.append(first+second)\n                    i += 2\n                else:\n                    new_word.append(word[i])\n                    i += 1\n            new_word = tuple(new_word)\n            word = new_word\n            if len(word) == 1:\n                break\n            else:\n                pairs = get_pairs(word)\n        word = ' '.join(word)\n        self.cache[token] = word\n        return word\n\n    def encode(self, text):\n        bpe_tokens = []\n        text = whitespace_clean(basic_clean(text)).lower()\n        for token in re.findall(self.pat, text):\n            token = ''.join(self.byte_encoder[b] for b in token.encode('utf-8'))\n            bpe_tokens.extend(self.encoder[bpe_token] for bpe_token in self.bpe(token).split(' '))\n        return bpe_tokens\n\n    def decode(self, tokens):\n        text = ''.join([self.decoder[token] for token in tokens])\n        text = bytearray([self.byte_decoder[c] for c in text]).decode('utf-8', errors=\"replace\").replace('</w>', ' ')\n        return text\n"
  },
  {
    "path": "CLIP/tests/test_consistency.py",
    "content": "import numpy as np\nimport pytest\nimport torch\nfrom PIL import Image\n\nimport clip\n\n\n@pytest.mark.parametrize('model_name', clip.available_models())\ndef test_consistency(model_name):\n    device = \"cpu\"\n    jit_model, transform = clip.load(model_name, device=device, jit=True)\n    py_model, _ = clip.load(model_name, device=device, jit=False)\n\n    image = transform(Image.open(\"CLIP.png\")).unsqueeze(0).to(device)\n    text = clip.tokenize([\"a diagram\", \"a dog\", \"a cat\"]).to(device)\n\n    with torch.no_grad():\n        logits_per_image, _ = jit_model(image, text)\n        jit_probs = logits_per_image.softmax(dim=-1).cpu().numpy()\n\n        logits_per_image, _ = py_model(image, text)\n        py_probs = logits_per_image.softmax(dim=-1).cpu().numpy()\n\n    assert np.allclose(jit_probs, py_probs, atol=0.01, rtol=0.1)\n"
  },
  {
    "path": "README.md",
    "content": "# Surf-D: Generating High-Quality Surfaces of Arbitrary Topologies Using Diffusion Models (ECCV 2024)\n\n<img src=\"./assets/fig_virtual_try_on.gif\">\n\n**Surf-D: Generating High-Quality Surfaces of Arbitrary Topologies Using Diffusion Models**<br>\n**[Project Page](https://yzmblog.github.io/projects/SurfD)**\n| **[Paper](https://arxiv.org/abs/2311.17050)**\n\nThis is an official implementation of Surf-D using [PyTorch](https://pytorch.org/)\n\n>We present **Surf-D**, a novel method for generating high-quality 3D shapes as **Surfaces** with arbitrary topologies using **Diffusion** models. Previous methods explored shape generation with different representations and they suffer from limited topologies and poor geometry details. To generate high-quality surfaces of arbitrary topologies, we use the Unsigned Distance Field (UDF) as our surface representation to accommodate arbitrary topologies. Furthermore, we propose a new pipeline that employs a point-based AutoEncoder to learn a compact and continuous latent space for accurately encoding UDF and support high-resolution mesh extraction. We further show that our new pipeline significantly outperforms the prior approaches to learning the distance fields, such as the grid-based AutoEncoder, which is not scalable and incapable of learning accurate UDF. In addition, we adopt a curriculum learning strategy to efficiently embed various surfaces. With the pretrained shape latent space, we employ a latent diffusion model to acquire the distribution of various shapes. Extensive experiments are presented on using Surf-D for unconditional generation, category conditional generation, image conditional generation, and text-to-shape tasks. The experiments demonstrate the superior performance of Surf-D in shape generation across multiple modalities as conditions.\n\n## Installation\n\nWe recommend to use [Anaconda](https://www.anaconda.com/).\n\nCreate and activate a virtual environment.\n\n    conda env create -f environment.yaml\n    conda activate SurfD\n\n    cd meshudf\n    python3 setup.py build_ext --inplace\n\n## Download pretrained models\nDownload our pretrained models at [google drive](https://drive.google.com/drive/folders/19Wdbg-zOB48IZ3KSxayRK3q1v1HfWRUP?usp=sharing).\n\n## Generate from Diffusion:\n### Extract a 512 resolution mesh will take some time, if you want to get a mesh quickly, feel free to modify the following command to --resolution 256\n\nUnconditional generation:\n\n    python -m sample.generate_uncond \\\n        --model_path pretrained_models/diffusion_uncond.pt \\\n        --output_dir ./outputs/uncond/ \\\n        --cond_mode no_cond \\\n        --ae_dir pretrained_models/ae_deepfashion3d.pt  \\\n        --num_samples 10 \\\n        --resolution 512\n\nSketch conditional generation:\n\n    python -m sample.generate_sketch \\\n        --model_path pretrained_models/diffusion_sketch.pt \\\n        --output_dir ./outputs/sketch_cond/ \\\n        --cond_mode sketch \\\n        --ae_dir pretrained_models/ae_deepfashion3d.pt \\\n        --sketch_path demo_images/sketch.png \\\n        --resolution 512\n\nImage conditional generation:\n\n    python -m sample.generate_image \\\n        --model_path pretrained_models/diffusion_image.pt \\\n        --output_dir ./outputs/image_cond/ \\\n        --cond_mode img \\\n        --ae_dir pretrained_models/ae_pix3d.pt \\\n        --image_path demo_images/0049.jpg \\\n        --mask_path demo_images/0049.png \\\n        --resolution 512\n\nText conditional generation:\n\n    python -m sample.generate_text \\\n        --model_path pretrained_models/diffusion_text.pt \\\n        --output_dir ./outputs/text_cond/ \\\n        --cond_mode text \\\n        --ae_dir pretrained_models/ae_text.pt  \\\n        --prompt \"a dining chair\" \\\n        --watertight --num_samples 10 \\\n        --resolution 512\n\n# Training\n\n## Prepare dataset\nDown load DeepFashion3D dataset at [DeepFashion3D](https://github.com/GAP-LAB-CUHK-SZ/deepFashion3D), Pix3D dataset at [Pix3D](http://pix3d.csail.mit.edu/) and ShapeNet dataset at [ShapeNet](https://shapenet.org/).\n\n## Preprocess the dataset\n    cd AutoEncoder/encdc\n    python preprocess_udfs.py /path/to/data_root /path/to/output dataset_name\n\n## AutoEncoder Training:\n```\ncd AutoEncoder/encdc\n```\n\n    python train_encdec.py ../cfg/xxx/xxx.yaml\n\n\n## Diffusion Training:\n\n    python train_diffcloth.py --cond_mode no_cond --save_dir xxx --overwrite --data_dir xxx --ae_dir xxx --log_interval 25 --save_interval 10000 --dataset deepfashion3d\n\n## Acknowledgement\n\nOur code took reference from [MDM](https://github.com/GuyTevet/motion-diffusion-model), [SDFusion](https://github.com/yccyenchicheng/SDFusion), [DrapeNet](https://github.com/liren2515/DrapeNet), [MeshUDF](https://github.com/cvlab-epfl/MeshUDF), [Stable Diffusion](https://github.com/CompVis/stable-diffusion). We thank these authors for their great works and open-source contribution.\n\n<a name=\"citation\"></a>\n## Citation\nIf you find this work useful for your research, please consider citing our paper: \n\n```bibtex\n@article{yu2023surf,\n  title={Surf-D: High-Quality Surface Generation for Arbitrary Topologies using Diffusion Models},\n  author={Yu, Zhengming and Dou, Zhiyang and Long, Xiaoxiao and Lin, Cheng and Li, Zekun and Liu, Yuan and M{\\\"u}ller, Norman and Komura, Taku and Habermann, Marc and Theobalt, Christian and others},\n  journal={arXiv preprint arXiv:2311.17050},\n  year={2023}\n}\n```\nor\n```bibtex\n@inproceedings{yu2025surf,\n  title={Surf-D: Generating High-Quality Surfaces of Arbitrary Topologies Using Diffusion Models},\n  author={Yu, Zhengming and Dou, Zhiyang and Long, Xiaoxiao and Lin, Cheng and Li, Zekun and Liu, Yuan and M{\\\"u}ller, Norman and Komura, Taku and Habermann, Marc and Theobalt, Christian and others},\n  booktitle={European Conference on Computer Vision},\n  pages={419--438},\n  year={2025},\n  organization={Springer}\n}\n```\n"
  },
  {
    "path": "data_loaders/dataset.py",
    "content": "import pickle\nfrom pathlib import Path\nfrom typing import Tuple\n\nimport numpy as np\nimport torch\nfrom torch import Tensor\nfrom torch.utils.data import Dataset\n\nfrom torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize\nfrom PIL import Image\nimport os\nimport csv\n\nT_ITEM = Tuple[int, str, Tensor, Tensor, Tensor, Tensor]\n\n# for img2shape\n# https://stackoverflow.com/questions/31400769/bounding-box-of-numpy-array\ndef mask2bbox(mask):\n    # mask: w x h\n    rows = np.any(mask, axis=1)\n    cols = np.any(mask, axis=0)\n    rmin, rmax = np.where(rows)[0][[0, -1]]\n    cmin, cmax = np.where(cols)[0][[0, -1]]\n    # return rmin, rmax, cmin, cmax\n    return cmin, rmin, cmax, rmax\n\n# ref: pix2vox: https://github.com/hzxie/Pix2Vox/blob/f1b82823e79d4afeedddfadb3da0940bcf1c536d/utils/data_transforms.py\ndef crop_square(img, bbox, img_size_h=256, img_size_w=256):\n    # from pix2vox\n    img_height, img_width, c = img.shape\n\n    x0, y0, x1, y1 = bbox\n\n    # Calculate the size of bounding boxes\n    bbox_width = x1 - x0\n    bbox_height = y1 - y0\n    bbox_x_mid = (x0 + x1) * .5\n    bbox_y_mid = (y0 + y1) * .5\n\n    # Make the crop area as a square\n    square_object_size = max(bbox_width, bbox_height)\n    x_left = int(bbox_x_mid - square_object_size * .5)\n    x_right = int(bbox_x_mid + square_object_size * .5)\n    y_top = int(bbox_y_mid - square_object_size * .5)\n    y_bottom = int(bbox_y_mid + square_object_size * .5)\n\n    # If the crop position is out of the image, fix it with padding\n    pad_x_left = 0\n    if x_left < 0:\n        pad_x_left = -x_left\n        x_left = 0\n    pad_x_right = 0\n    if x_right >= img_width:\n        pad_x_right = x_right - img_width + 1\n        x_right = img_width - 1\n    pad_y_top = 0\n    if y_top < 0:\n        pad_y_top = -y_top\n        y_top = 0\n    pad_y_bottom = 0\n    if y_bottom >= img_height:\n        pad_y_bottom = y_bottom - img_height + 1\n        y_bottom = img_height - 1\n\n    # Padding the image and resize the image\n    processed_image = np.pad(img[y_top:y_bottom + 1, x_left:x_right + 1],\n                                ((pad_y_top, pad_y_bottom), (pad_x_left, pad_x_right), (0, 0)),\n                                mode='edge')\n    \n    pil_img = Image.fromarray(processed_image)\n    pil_img = pil_img.resize((img_size_w, img_size_h))\n    # processed_image = cv2.resize(processed_image, (img_size_w, img_size_h))\n\n    return pil_img\n\ndef _convert_image_to_rgb(image):\n    return image.convert(\"RGB\")\n\ndef _transform(n_px):\n    return Compose([\n        CenterCrop(n_px),\n        _convert_image_to_rgb,\n        ToTensor(),\n        Normalize((0.48145466, 0.4578275, 0.40821073), (0.26862954, 0.26130258, 0.27577711)),\n    ])\n\ndef _transform_rgb(n_px):\n    return Compose([\n        ToTensor(),\n        Normalize((0.48145466, 0.4578275, 0.40821073), (0.26862954, 0.26130258, 0.27577711)),\n        Resize((n_px, n_px)),\n    ])\n\n\nclass UDFs3d(Dataset):\n    def __init__(self, name: str, root: Path, split: str, cond: str) -> None:\n        super().__init__()\n\n        self.root = str(root)\n        self.ids = []\n        self.npz_list = []\n        self.name2text = {}\n        self.text2name_all = {}\n        self.text2name = {}\n        self.cond = cond\n        self.id2cat = {}\n        self.cat2garment_type = {}\n        self.name2npz = {}\n        self.split = split\n        self.name = name\n        if 'sketch' in self.cond:\n            self.clip_preprocess = _transform(224)\n        elif 'img' in self.cond:\n            print('here')\n            self.clip_preprocess = _transform_rgb(224)\n\n        if 'text' in self.cond:\n            with open('./dataset/ShapeNet/text2shape/captions.tablechair_train.csv') as f:\n                \n                reader = csv.reader(f, delimiter=',')\n                self.header = next(reader, None)\n                data = [row for row in reader]\n            for d in data:\n                _, model_id, text, cat_i, synset, subSynsetId = d\n                self.name2text[model_id] = text\n                self.text2name_all[text] = model_id\n\n        if 'category' in self.cond:\n            with open('./dataset/Deepfashion3D/garment_type_list.txt', 'r') as f:\n                data = f.readlines()\n            for i, line in enumerate(data):\n                line = line.rstrip()\n                line = line.split(' ')\n                for l in line[1:]:\n                    self.id2cat[l] = i\n                self.cat2garment_type[i] = line[0]\n            print(self.cat2garment_type)\n\n        if name in ['shapenet', 'deepfashion3d']:\n\n            if name == 'deepfashion3d':\n                self.data_root = os.path.join(self.root, 'udfs', 'train')\n                self.sketch_root = os.path.join(self.root, 'images', 'train', 'sketch')\n            else:\n                self.data_root = os.path.join(self.root, 'train')\n            ids = os.listdir(self.data_root)\n\n            for id in ids:\n\n                assert id.endswith(\".npz\")\n                self.ids.append(id[:-4])\n                self.npz_list.append(os.path.join(self.data_root, id))\n        elif name == 'text2shape':\n            data_root_chair = os.path.join(self.root, '03001627', 'train')\n            ids_chair = os.listdir(data_root_chair)\n            for id in ids_chair:\n                #print(id)\n                assert id.endswith(\".npz\")\n                self.ids.append(id[:-4])\n                self.npz_list.append(os.path.join(data_root_chair, id))\n\n            data_root_table = os.path.join(self.root, '04379243', 'train')\n            ids_table = os.listdir(data_root_table)\n            for id in ids_table:\n                #print(id)\n                assert id.endswith(\".npz\")\n                self.ids.append(id[:-4])\n                self.npz_list.append(os.path.join(data_root_table, id))\n\n            for npz_ in self.npz_list:\n                self.name2npz[npz_.split('/')[-1][:-4]] = npz_\n\n            for t in self.text2name_all.keys():\n                if self.text2name_all[t] in self.ids:\n                    self.text2name[t] = self.text2name_all[t]\n\n            self.info_text = list(self.text2name.keys())\n\n\n        elif name == 'pix3d':\n            cats = os.listdir(os.path.join(self.root, 'udfs', split))\n            for cat in cats:\n                ids = os.listdir(os.path.join(self.root, 'udfs', split, cat))\n                for id in ids:\n                    self.ids.append(id[:-4])\n                    self.npz_list.append(os.path.join(self.root, 'udfs', split, cat, id))\n\n            self.img_root = os.path.join(self.root, 'images', 'train')\n        \n\n\n    def __len__(self) -> int:\n        if 'text' in self.name:\n            return (len(self.text2name.keys()))\n        else:\n            return len(self.ids)\n\n    def __getitem__(self, index: int) -> T_ITEM:\n        if not 'text' in self.name:\n            item_id = self.ids[index]\n        if 'sketch' in self.cond:            \n            sketch_view_index = 0\n\n            sketch_path = os.path.join(self.sketch_root, item_id, f'sketch_{sketch_view_index}.png')\n            img = Image.open(sketch_path)\n            img = self.clip_preprocess(img)\n        elif 'img' in self.cond:\n            cat = self.npz_list[index].split('/')[-2]\n            all_imgs = os.listdir(os.path.join(self.img_root, cat, item_id))\n            select_img = np.random.choice(all_imgs, 1)[0]\n    \n            img_path = os.path.join(self.img_root, cat, item_id, select_img)\n            img_np = np.array(Image.open(img_path).convert('RGB'))\n            mask_path = os.path.join(self.root, 'mask', cat, select_img.split('.')[0]+'.png')\n            mask_np = np.array(Image.open(mask_path).convert('1'))\n            \n            x0, y0, x1, y1 = mask2bbox(mask_np)\n            bbox = [x0, y0, x1, y1]\n                \n            try:\n                img_clean = img_np * mask_np[:, :, None]\n            except:\n                print(img_path, mask_path)\n            img_clean = crop_square(img_clean.astype(np.uint8), bbox)\n\n            img = self.clip_preprocess(img_clean)\n\n\n        if 'text' in self.name:\n            text = self.info_text[index]\n            item_id = self.text2name[text]\n            npz = np.load(self.name2npz[item_id])\n        else:\n            npz = np.load(self.npz_list[index])\n        pcd = torch.from_numpy(npz[\"pcd\"])\n        coords = torch.from_numpy(npz[\"coords\"])\n        labels = torch.from_numpy(npz[\"labels\"])\n        gradients = torch.from_numpy(npz[\"gradients\"])\n\n        if 'text' in self.cond:\n            return index, item_id, pcd, coords, labels, gradients, text\n\n        if 'sketch' in self.cond or 'img' in self.cond:\n            return index, item_id, pcd, coords, labels, gradients, img\n\n        if 'category' in self.cond:\n            cat = self.id2cat[item_id.split('-')[0]]\n            return index, item_id, pcd, coords, labels, gradients, cat\n\n        return index, item_id, pcd, coords, labels, gradients\n\n    def get_mesh(self, index: int) -> Tuple[Tensor, Tensor]:\n        npz = np.load(self.root / f\"{self.ids[index]}.npz\")\n        v = torch.from_numpy(npz[\"vertices\"])\n        t = torch.from_numpy(npz[\"triangles\"])\n        return v, t\n    \n"
  },
  {
    "path": "diffusion/fp16_util.py",
    "content": "\"\"\"\nHelpers to train with 16-bit precision.\n\"\"\"\n\nimport numpy as np\nimport torch as th\nimport torch.nn as nn\nfrom torch._utils import _flatten_dense_tensors, _unflatten_dense_tensors\n\nfrom diffusion import logger\n\nINITIAL_LOG_LOSS_SCALE = 20.0\n\n\ndef convert_module_to_f16(l):\n    \"\"\"\n    Convert primitive modules to float16.\n    \"\"\"\n    if isinstance(l, (nn.Conv1d, nn.Conv2d, nn.Conv3d)):\n        l.weight.data = l.weight.data.half()\n        if l.bias is not None:\n            l.bias.data = l.bias.data.half()\n\n\ndef convert_module_to_f32(l):\n    \"\"\"\n    Convert primitive modules to float32, undoing convert_module_to_f16().\n    \"\"\"\n    if isinstance(l, (nn.Conv1d, nn.Conv2d, nn.Conv3d)):\n        l.weight.data = l.weight.data.float()\n        if l.bias is not None:\n            l.bias.data = l.bias.data.float()\n\n\ndef make_master_params(param_groups_and_shapes):\n    \"\"\"\n    Copy model parameters into a (differently-shaped) list of full-precision\n    parameters.\n    \"\"\"\n    master_params = []\n    for param_group, shape in param_groups_and_shapes:\n        master_param = nn.Parameter(\n            _flatten_dense_tensors(\n                [param.detach().float() for (_, param) in param_group]\n            ).view(shape)\n        )\n        master_param.requires_grad = True\n        master_params.append(master_param)\n    return master_params\n\n\ndef model_grads_to_master_grads(param_groups_and_shapes, master_params):\n    \"\"\"\n    Copy the gradients from the model parameters into the master parameters\n    from make_master_params().\n    \"\"\"\n    for master_param, (param_group, shape) in zip(\n        master_params, param_groups_and_shapes\n    ):\n        master_param.grad = _flatten_dense_tensors(\n            [param_grad_or_zeros(param) for (_, param) in param_group]\n        ).view(shape)\n\n\ndef master_params_to_model_params(param_groups_and_shapes, master_params):\n    \"\"\"\n    Copy the master parameter data back into the model parameters.\n    \"\"\"\n    # Without copying to a list, if a generator is passed, this will\n    # silently not copy any parameters.\n    for master_param, (param_group, _) in zip(master_params, param_groups_and_shapes):\n        for (_, param), unflat_master_param in zip(\n            param_group, unflatten_master_params(param_group, master_param.view(-1))\n        ):\n            param.detach().copy_(unflat_master_param)\n\n\ndef unflatten_master_params(param_group, master_param):\n    return _unflatten_dense_tensors(master_param, [param for (_, param) in param_group])\n\n\ndef get_param_groups_and_shapes(named_model_params):\n    named_model_params = list(named_model_params)\n    scalar_vector_named_params = (\n        [(n, p) for (n, p) in named_model_params if p.ndim <= 1],\n        (-1),\n    )\n    matrix_named_params = (\n        [(n, p) for (n, p) in named_model_params if p.ndim > 1],\n        (1, -1),\n    )\n    return [scalar_vector_named_params, matrix_named_params]\n\n\ndef master_params_to_state_dict(\n    model, param_groups_and_shapes, master_params, use_fp16\n):\n    if use_fp16:\n        state_dict = model.state_dict()\n        for master_param, (param_group, _) in zip(\n            master_params, param_groups_and_shapes\n        ):\n            for (name, _), unflat_master_param in zip(\n                param_group, unflatten_master_params(param_group, master_param.view(-1))\n            ):\n                assert name in state_dict\n                state_dict[name] = unflat_master_param\n    else:\n        state_dict = model.state_dict()\n        for i, (name, _value) in enumerate(model.named_parameters()):\n            assert name in state_dict\n            state_dict[name] = master_params[i]\n    return state_dict\n\n\ndef state_dict_to_master_params(model, state_dict, use_fp16):\n    if use_fp16:\n        named_model_params = [\n            (name, state_dict[name]) for name, _ in model.named_parameters()\n        ]\n        param_groups_and_shapes = get_param_groups_and_shapes(named_model_params)\n        master_params = make_master_params(param_groups_and_shapes)\n    else:\n        master_params = [state_dict[name] for name, _ in model.named_parameters()]\n    return master_params\n\n\ndef zero_master_grads(master_params):\n    for param in master_params:\n        param.grad = None\n\n\ndef zero_grad(model_params):\n    for param in model_params:\n        # Taken from https://pytorch.org/docs/stable/_modules/torch/optim/optimizer.html#Optimizer.add_param_group\n        if param.grad is not None:\n            param.grad.detach_()\n            param.grad.zero_()\n\n\ndef param_grad_or_zeros(param):\n    if param.grad is not None:\n        return param.grad.data.detach()\n    else:\n        return th.zeros_like(param)\n\n\nclass MixedPrecisionTrainer:\n    def __init__(\n        self,\n        *,\n        model,\n        use_fp16=False,\n        fp16_scale_growth=1e-3,\n        initial_lg_loss_scale=INITIAL_LOG_LOSS_SCALE,\n    ):\n        self.model = model\n        self.use_fp16 = use_fp16\n        self.fp16_scale_growth = fp16_scale_growth\n\n        self.model_params = list(self.model.parameters())\n        self.master_params = self.model_params\n        self.param_groups_and_shapes = None\n        self.lg_loss_scale = initial_lg_loss_scale\n\n        if self.use_fp16:\n            self.param_groups_and_shapes = get_param_groups_and_shapes(\n                self.model.named_parameters()\n            )\n            self.master_params = make_master_params(self.param_groups_and_shapes)\n            self.model.convert_to_fp16()\n\n    def zero_grad(self):\n        zero_grad(self.model_params)\n\n    def backward(self, loss: th.Tensor):\n        if self.use_fp16:\n            loss_scale = 2 ** self.lg_loss_scale\n            (loss * loss_scale).backward()\n        else:\n            loss.backward()\n\n    def optimize(self, opt: th.optim.Optimizer):\n        if self.use_fp16:\n            return self._optimize_fp16(opt)\n        else:\n            return self._optimize_normal(opt)\n\n    def _optimize_fp16(self, opt: th.optim.Optimizer):\n        logger.logkv_mean(\"lg_loss_scale\", self.lg_loss_scale)\n        model_grads_to_master_grads(self.param_groups_and_shapes, self.master_params)\n        grad_norm, param_norm = self._compute_norms(grad_scale=2 ** self.lg_loss_scale)\n        if check_overflow(grad_norm):\n            self.lg_loss_scale -= 1\n            logger.log(f\"Found NaN, decreased lg_loss_scale to {self.lg_loss_scale}\")\n            zero_master_grads(self.master_params)\n            return False\n\n        logger.logkv_mean(\"grad_norm\", grad_norm)\n        logger.logkv_mean(\"param_norm\", param_norm)\n\n        self.master_params[0].grad.mul_(1.0 / (2 ** self.lg_loss_scale))\n        opt.step()\n        zero_master_grads(self.master_params)\n        master_params_to_model_params(self.param_groups_and_shapes, self.master_params)\n        self.lg_loss_scale += self.fp16_scale_growth\n        return True\n\n    def _optimize_normal(self, opt: th.optim.Optimizer):\n        grad_norm, param_norm = self._compute_norms()\n        logger.logkv_mean(\"grad_norm\", grad_norm)\n        logger.logkv_mean(\"param_norm\", param_norm)\n        opt.step()\n        return True\n\n    def _compute_norms(self, grad_scale=1.0):\n        grad_norm = 0.0\n        param_norm = 0.0\n        for p in self.master_params:\n            with th.no_grad():\n                param_norm += th.norm(p, p=2, dtype=th.float32).item() ** 2\n                if p.grad is not None:\n                    grad_norm += th.norm(p.grad, p=2, dtype=th.float32).item() ** 2\n        return np.sqrt(grad_norm) / grad_scale, np.sqrt(param_norm)\n\n    def master_params_to_state_dict(self, master_params):\n        return master_params_to_state_dict(\n            self.model, self.param_groups_and_shapes, master_params, self.use_fp16\n        )\n\n    def state_dict_to_master_params(self, state_dict):\n        return state_dict_to_master_params(self.model, state_dict, self.use_fp16)\n\n\ndef check_overflow(value):\n    return (value == float(\"inf\")) or (value == -float(\"inf\")) or (value != value)\n"
  },
  {
    "path": "diffusion/gaussian_diffusion.py",
    "content": "# This code is based on https://github.com/openai/guided-diffusion\n\"\"\"\nThis code started out as a PyTorch port of Ho et al's diffusion models:\nhttps://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/diffusion_utils_2.py\n\nDocstrings have been added, as well as DDIM sampling and a new collection of beta schedules.\n\"\"\"\n\nimport enum\nimport math\nimport time\nimport numpy as np\nimport torch\nimport torch as th\nfrom copy import deepcopy\nfrom diffusion.nn import mean_flat, sum_flat\nfrom diffusion.losses import normal_kl, discretized_gaussian_log_likelihood\n\nimport torch.nn.functional as F\nfrom utils.utils import compute_gradients\n\n\ndef get_named_beta_schedule(schedule_name, num_diffusion_timesteps, scale_betas=1.):\n    \"\"\"\n    Get a pre-defined beta schedule for the given name.\n\n    The beta schedule library consists of beta schedules which remain similar\n    in the limit of num_diffusion_timesteps.\n    Beta schedules may be added, but should not be removed or changed once\n    they are committed to maintain backwards compatibility.\n    \"\"\"\n    if schedule_name == \"linear\":\n        # Linear schedule from Ho et al, extended to work for any number of\n        # diffusion steps.\n        scale = scale_betas * 1000 / num_diffusion_timesteps\n        beta_start = scale * 0.0001\n        beta_end = scale * 0.02\n        return np.linspace(\n            beta_start, beta_end, num_diffusion_timesteps, dtype=np.float64\n        )\n    elif schedule_name == \"cosine\":\n        return betas_for_alpha_bar(\n            num_diffusion_timesteps,\n            lambda t: math.cos((t + 0.008) / 1.008 * math.pi / 2) ** 2,\n        )\n    else:\n        raise NotImplementedError(f\"unknown beta schedule: {schedule_name}\")\n\n\ndef betas_for_alpha_bar(num_diffusion_timesteps, alpha_bar, max_beta=0.999):\n    \"\"\"\n    Create a beta schedule that discretizes the given alpha_t_bar function,\n    which defines the cumulative product of (1-beta) over time from t = [0,1].\n\n    :param num_diffusion_timesteps: the number of betas to produce.\n    :param alpha_bar: a lambda that takes an argument t from 0 to 1 and\n                      produces the cumulative product of (1-beta) up to that\n                      part of the diffusion process.\n    :param max_beta: the maximum beta to use; use values lower than 1 to\n                     prevent singularities.\n    \"\"\"\n    betas = []\n    for i in range(num_diffusion_timesteps):\n        t1 = i / num_diffusion_timesteps\n        t2 = (i + 1) / num_diffusion_timesteps\n        betas.append(min(1 - alpha_bar(t2) / alpha_bar(t1), max_beta))\n    return np.array(betas)\n\n\nclass ModelMeanType(enum.Enum):\n    \"\"\"\n    Which type of output the model predicts.\n    \"\"\"\n\n    PREVIOUS_X = enum.auto()  # the model predicts x_{t-1}\n    START_X = enum.auto()  # the model predicts x_0\n    EPSILON = enum.auto()  # the model predicts epsilon\n\n\nclass ModelVarType(enum.Enum):\n    \"\"\"\n    What is used as the model's output variance.\n\n    The LEARNED_RANGE option has been added to allow the model to predict\n    values between FIXED_SMALL and FIXED_LARGE, making its job easier.\n    \"\"\"\n\n    LEARNED = enum.auto()\n    FIXED_SMALL = enum.auto()\n    FIXED_LARGE = enum.auto()\n    LEARNED_RANGE = enum.auto()\n\n\nclass LossType(enum.Enum):\n    MSE = enum.auto()  # use raw MSE loss (and KL when learning variances)\n    RESCALED_MSE = (\n        enum.auto()\n    )  # use raw MSE loss (with RESCALED_KL when learning variances)\n    KL = enum.auto()  # use the variational lower-bound\n    RESCALED_KL = enum.auto()  # like KL, but rescale to estimate the full VLB\n\n    def is_vb(self):\n        return self == LossType.KL or self == LossType.RESCALED_KL\n\n\nclass GaussianDiffusion:\n    \"\"\"\n    Utilities for training and sampling diffusion models.\n\n    Ported directly from here, and then adapted over time to further experimentation.\n    https://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/diffusion_utils_2.py#L42\n\n    :param betas: a 1-D numpy array of betas for each diffusion timestep,\n                  starting at T and going to 1.\n    :param model_mean_type: a ModelMeanType determining what the model outputs.\n    :param model_var_type: a ModelVarType determining how variance is output.\n    :param loss_type: a LossType determining the loss function to use.\n    :param rescale_timesteps: if True, pass floating point timesteps into the\n                              model so that they are always scaled like in the\n                              original paper (0 to 1000).\n    \"\"\"\n\n    def __init__(\n        self,\n        *,\n        betas,\n        model_mean_type,\n        model_var_type,\n        loss_type,\n        rescale_timesteps=False,\n        args,\n    ):\n        ############## final value clipping...\n\n        self.clip_value = args.clip_value\n\n\n        self.model_mean_type = model_mean_type\n        self.model_var_type = model_var_type\n        self.loss_type = loss_type\n        self.rescale_timesteps = rescale_timesteps\n\n        # Use float64 for accuracy.\n        betas = np.array(betas, dtype=np.float64)\n        self.betas = betas\n        assert len(betas.shape) == 1, \"betas must be 1-D\"\n        assert (betas > 0).all() and (betas <= 1).all()\n\n        self.num_timesteps = int(betas.shape[0])\n\n        alphas = 1.0 - betas\n        self.alphas_cumprod = np.cumprod(alphas, axis=0)\n        self.alphas_cumprod_prev = np.append(1.0, self.alphas_cumprod[:-1])\n        self.alphas_cumprod_next = np.append(self.alphas_cumprod[1:], 0.0)\n        assert self.alphas_cumprod_prev.shape == (self.num_timesteps,)\n\n        # calculations for diffusion q(x_t | x_{t-1}) and others\n        self.sqrt_alphas_cumprod = np.sqrt(self.alphas_cumprod)\n        self.sqrt_one_minus_alphas_cumprod = np.sqrt(1.0 - self.alphas_cumprod)\n        self.log_one_minus_alphas_cumprod = np.log(1.0 - self.alphas_cumprod)\n        self.sqrt_recip_alphas_cumprod = np.sqrt(1.0 / self.alphas_cumprod)\n        self.sqrt_recipm1_alphas_cumprod = np.sqrt(1.0 / self.alphas_cumprod - 1)\n\n        # calculations for posterior q(x_{t-1} | x_t, x_0)\n        self.posterior_variance = (\n            betas * (1.0 - self.alphas_cumprod_prev) / (1.0 - self.alphas_cumprod)\n        )\n        # log calculation clipped because the posterior variance is 0 at the\n        # beginning of the diffusion chain.\n        self.posterior_log_variance_clipped = np.log(\n            np.append(self.posterior_variance[1], self.posterior_variance[1:])\n        )\n        self.posterior_mean_coef1 = (\n            betas * np.sqrt(self.alphas_cumprod_prev) / (1.0 - self.alphas_cumprod)\n        )\n        self.posterior_mean_coef2 = (\n            (1.0 - self.alphas_cumprod_prev)\n            * np.sqrt(alphas)\n            / (1.0 - self.alphas_cumprod)\n        )\n\n        self.l2_loss = lambda a, b: (a - b) ** 2  # th.nn.MSELoss(reduction='none')  # must be None for handling mask later on.\n        self.time_con = []\n    def masked_l2(self, a, b, mask):\n        # assuming a.shape == b.shape == bs, J, Jdim, seqlen\n        # assuming mask.shape == bs, 1, 1, seqlen\n        loss = self.l2_loss(a, b)\n        loss = sum_flat(loss * mask.float())  # gives \\sigma_euclidean over unmasked elements\n        n_entries = a.shape[1] * a.shape[2]\n        non_zero_elements = sum_flat(mask) * n_entries\n        mse_loss_val = loss / non_zero_elements\n        return mse_loss_val\n\n\n    def q_mean_variance(self, x_start, t):\n        \"\"\"\n        Get the distribution q(x_t | x_0).\n\n        :param x_start: the [N x C x ...] tensor of noiseless inputs.\n        :param t: the number of diffusion steps (minus 1). Here, 0 means one step.\n        :return: A tuple (mean, variance, log_variance), all of x_start's shape.\n        \"\"\"\n        mean = (\n            _extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start\n        )\n        variance = _extract_into_tensor(1.0 - self.alphas_cumprod, t, x_start.shape)\n        log_variance = _extract_into_tensor(\n            self.log_one_minus_alphas_cumprod, t, x_start.shape\n        )\n        return mean, variance, log_variance\n\n    def q_sample(self, x_start, t, noise=None):\n        \"\"\"\n        Diffuse the dataset for a given number of diffusion steps.\n\n        In other words, sample from q(x_t | x_0).\n\n        :param x_start: the initial dataset batch.\n        :param t: the number of diffusion steps (minus 1). Here, 0 means one step.\n        :param noise: if specified, the split-out normal noise.\n        :return: A noisy version of x_start.\n        \"\"\"\n        if noise is None:\n            noise = th.randn_like(x_start)\n        assert noise.shape == x_start.shape\n        #print(t.device,x_start.device)\n        #print(noise.shape, noise)\n        return (\n            _extract_into_tensor(self.sqrt_alphas_cumprod, t, x_start.shape) * x_start\n            + _extract_into_tensor(self.sqrt_one_minus_alphas_cumprod, t, x_start.shape)\n            * noise\n        )\n\n    def q_posterior_mean_variance(self, x_start, x_t, t):\n        \"\"\"\n        Compute the mean and variance of the diffusion posterior:\n\n            q(x_{t-1} | x_t, x_0)\n\n        \"\"\"\n        assert x_start.shape == x_t.shape\n        posterior_mean = (\n            _extract_into_tensor(self.posterior_mean_coef1, t, x_t.shape) * x_start\n            + _extract_into_tensor(self.posterior_mean_coef2, t, x_t.shape) * x_t\n        )\n        posterior_variance = _extract_into_tensor(self.posterior_variance, t, x_t.shape)\n        posterior_log_variance_clipped = _extract_into_tensor(\n            self.posterior_log_variance_clipped, t, x_t.shape\n        )\n        assert (\n            posterior_mean.shape[0]\n            == posterior_variance.shape[0]\n            == posterior_log_variance_clipped.shape[0]\n            == x_start.shape[0]\n        )\n        return posterior_mean, posterior_variance, posterior_log_variance_clipped\n\n    def p_mean_variance(\n        self, model, x, t, clip_denoised=True, denoised_fn=None, model_kwargs=None\n    ):\n        \"\"\"\n        Apply the model to get p(x_{t-1} | x_t), as well as a prediction of\n        the initial x, x_0.\n\n        :param model: the model, which takes a signal and a batch of timesteps\n                      as input.\n        :param x: the [N x C x ...] tensor at time t.\n        :param t: a 1-D Tensor of timesteps.\n        :param clip_denoised: if True, clip the denoised signal into [-1, 1].\n        :param denoised_fn: if not None, a function which applies to the\n            x_start prediction before it is used to sample. Applies before\n            clip_denoised.\n        :param model_kwargs: if not None, a dict of extra keyword arguments to\n            pass to the model. This can be used for conditioning.\n        :return: a dict with the following keys:\n                 - 'mean': the model mean output.\n                 - 'variance': the model variance output.\n                 - 'log_variance': the log of 'variance'.\n                 - 'pred_xstart': the prediction for x_0.\n        \"\"\"\n        if model_kwargs is None:\n            model_kwargs = {}\n\n        B, C = x.shape[:2]\n        assert t.shape == (B,)\n\n        model_output = model(x, self._scale_timesteps(t), **model_kwargs)\n        if 'inpainting_mask' in model_kwargs['y'].keys() and 'inpainted_motion' in model_kwargs['y'].keys():\n            inpainting_mask, inpainted_motion = model_kwargs['y']['inpainting_mask'], model_kwargs['y']['inpainted_motion']\n            assert self.model_mean_type == ModelMeanType.START_X, 'This feature supports only X_start pred for mow!'\n            assert model_output.shape == inpainting_mask.shape == inpainted_motion.shape\n            model_output = (model_output * ~inpainting_mask) + (inpainted_motion * inpainting_mask)\n            input(\"type1\")\n\n        if self.model_var_type in [ModelVarType.LEARNED, ModelVarType.LEARNED_RANGE]:\n            input(\"type2\")\n            assert model_output.shape == (B, C * 2, *x.shape[2:])\n            model_output, model_var_values = th.split(model_output, C, dim=1)\n            if self.model_var_type == ModelVarType.LEARNED:\n                model_log_variance = model_var_values\n                model_variance = th.exp(model_log_variance)\n            else:\n                min_log = _extract_into_tensor(\n                    self.posterior_log_variance_clipped, t, x.shape\n                )\n                max_log = _extract_into_tensor(np.log(self.betas), t, x.shape)\n                # The model_var_values is [-1, 1] for [min_var, max_var].\n                frac = (model_var_values + 1) / 2\n                model_log_variance = frac * max_log + (1 - frac) * min_log\n                model_variance = th.exp(model_log_variance)\n        else:\n            # here...\n            model_variance, model_log_variance = {\n                # for fixedlarge, we set the initial (log-)variance like so\n                # to get a better decoder log likelihood.\n                ModelVarType.FIXED_LARGE: (\n                    np.append(self.posterior_variance[1], self.betas[1:]),\n                    np.log(np.append(self.posterior_variance[1], self.betas[1:])),\n                ),\n                ModelVarType.FIXED_SMALL: (\n                    self.posterior_variance,\n                    self.posterior_log_variance_clipped,\n                ),\n            }[self.model_var_type]\n\n            model_variance = _extract_into_tensor(model_variance, t, x.shape)\n            model_log_variance = _extract_into_tensor(model_log_variance, t, x.shape)\n\n        def process_xstart(x):\n            if denoised_fn is not None:\n                x = denoised_fn(x)\n            if clip_denoised:\n\n                return x.clamp(-1, 1)\n            return x\n\n        if self.model_mean_type == ModelMeanType.PREVIOUS_X:\n            pred_xstart = process_xstart(\n                self._predict_xstart_from_xprev(x_t=x, t=t, xprev=model_output)\n            )\n            model_mean = model_output\n        elif self.model_mean_type in [ModelMeanType.START_X, ModelMeanType.EPSILON]:  # THIS IS US!\n            if self.model_mean_type == ModelMeanType.START_X:\n                pred_xstart = process_xstart(model_output)\n            else:\n                pred_xstart = process_xstart(\n                    self._predict_xstart_from_eps(x_t=x, t=t, eps=model_output)\n                )\n            model_mean, _, _ = self.q_posterior_mean_variance(\n                x_start=pred_xstart, x_t=x, t=t\n            )\n        else:\n            raise NotImplementedError(self.model_mean_type)\n\n        assert (\n            model_mean.shape == model_log_variance.shape == pred_xstart.shape == x.shape\n        )\n        return {\n            \"mean\": model_mean,\n            \"variance\": model_variance,\n            \"log_variance\": model_log_variance,\n            \"pred_xstart\": pred_xstart,\n        }\n\n    def _predict_xstart_from_eps(self, x_t, t, eps):\n        assert x_t.shape == eps.shape\n        return (\n            _extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x_t.shape) * x_t\n            - _extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x_t.shape) * eps\n        )\n\n    def _predict_xstart_from_xprev(self, x_t, t, xprev):\n        assert x_t.shape == xprev.shape\n        return (  # (xprev - coef2*x_t) / coef1\n            _extract_into_tensor(1.0 / self.posterior_mean_coef1, t, x_t.shape) * xprev\n            - _extract_into_tensor(\n                self.posterior_mean_coef2 / self.posterior_mean_coef1, t, x_t.shape\n            )\n            * x_t\n        )\n\n    def _predict_eps_from_xstart(self, x_t, t, pred_xstart):\n        return (\n            _extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x_t.shape) * x_t\n            - pred_xstart\n        ) / _extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x_t.shape)\n\n    def _scale_timesteps(self, t):\n        if self.rescale_timesteps:\n            return t.float() * (1000.0 / self.num_timesteps)\n        return t\n\n    def condition_mean(self, cond_fn, p_mean_var, x, t, model_kwargs=None):\n        \"\"\"\n        Compute the mean for the previous step, given a function cond_fn that\n        computes the gradient of a conditional log probability with respect to\n        x. In particular, cond_fn computes grad(log(p(y|x))), and we want to\n        condition on y.\n\n        This uses the conditioning strategy from Sohl-Dickstein et al. (2015).\n        \"\"\"\n        gradient = cond_fn(x, self._scale_timesteps(t), **model_kwargs)\n        new_mean = (\n            p_mean_var[\"mean\"].float() + p_mean_var[\"variance\"] * gradient.float()\n        )\n        return new_mean\n\n    def condition_mean_with_grad(self, cond_fn, p_mean_var, x, t, model_kwargs=None):\n        \"\"\"\n        Compute the mean for the previous step, given a function cond_fn that\n        computes the gradient of a conditional log probability with respect to\n        x. In particular, cond_fn computes grad(log(p(y|x))), and we want to\n        condition on y.\n\n        This uses the conditioning strategy from Sohl-Dickstein et al. (2015).\n        \"\"\"\n        gradient = cond_fn(x, t, p_mean_var, **model_kwargs)\n        new_mean = (\n            p_mean_var[\"mean\"].float() + p_mean_var[\"variance\"] * gradient.float()\n        )\n        return new_mean\n\n    def condition_score(self, cond_fn, p_mean_var, x, t, model_kwargs=None):\n        \"\"\"\n        Compute what the p_mean_variance output would have been, should the\n        model's score function be conditioned by cond_fn.\n\n        See condition_mean() for details on cond_fn.\n\n        Unlike condition_mean(), this instead uses the conditioning strategy\n        from Song et al (2020).\n        \"\"\"\n        alpha_bar = _extract_into_tensor(self.alphas_cumprod, t, x.shape)\n\n        eps = self._predict_eps_from_xstart(x, t, p_mean_var[\"pred_xstart\"])\n        eps = eps - (1 - alpha_bar).sqrt() * cond_fn(\n            x, self._scale_timesteps(t), **model_kwargs\n        )\n\n        out = p_mean_var.copy()\n        out[\"pred_xstart\"] = self._predict_xstart_from_eps(x, t, eps)\n        out[\"mean\"], _, _ = self.q_posterior_mean_variance(\n            x_start=out[\"pred_xstart\"], x_t=x, t=t\n        )\n        return out\n\n    def condition_score_with_grad(self, cond_fn, p_mean_var, x, t, model_kwargs=None):\n        \"\"\"\n        Compute what the p_mean_variance output would have been, should the\n        model's score function be conditioned by cond_fn.\n\n        See condition_mean() for details on cond_fn.\n\n        Unlike condition_mean(), this instead uses the conditioning strategy\n        from Song et al (2020).\n        \"\"\"\n        alpha_bar = _extract_into_tensor(self.alphas_cumprod, t, x.shape)\n\n        eps = self._predict_eps_from_xstart(x, t, p_mean_var[\"pred_xstart\"])\n        eps = eps - (1 - alpha_bar).sqrt() * cond_fn(\n            x, t, p_mean_var, **model_kwargs\n        )\n\n        out = p_mean_var.copy()\n        out[\"pred_xstart\"] = self._predict_xstart_from_eps(x, t, eps)\n        out[\"mean\"], _, _ = self.q_posterior_mean_variance(\n            x_start=out[\"pred_xstart\"], x_t=x, t=t\n        )\n        return out\n\n    def p_sample(\n        self,\n        model,\n        x,\n        t,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        const_noise=False,\n    ):\n        \"\"\"\n        Sample x_{t-1} from the model at the given timestep.\n\n        :param model: the model to sample from.\n        :param x: the current tensor at x_{t-1}.\n        :param t: the value of t, starting at 0 for the first diffusion step.\n        :param clip_denoised: if True, clip the x_start prediction to [-1, 1].\n        :param denoised_fn: if not None, a function which applies to the\n            x_start prediction before it is used to sample.\n        :param cond_fn: if not None, this is a gradient function that acts\n                        similarly to the model.\n        :param model_kwargs: if not None, a dict of extra keyword arguments to\n            pass to the model. This can be used for conditioning.\n        :return: a dict containing the following keys:\n                 - 'sample': a random sample from the model.\n                 - 'pred_xstart': a prediction of x_0.\n        \"\"\"\n        out = self.p_mean_variance(\n            model,\n            x,\n            t,\n            clip_denoised=clip_denoised,\n            denoised_fn=denoised_fn,\n            model_kwargs=model_kwargs,\n        )\n        noise = th.randn_like(x)\n        # print('const_noise', const_noise)\n        if const_noise:\n            noise = noise[[0]].repeat(x.shape[0], 1, 1, 1)\n\n        nonzero_mask = (\n            (t != 0).float().view(-1, *([1] * (len(x.shape) - 1)))\n        )  # no noise when t == 0\n        if cond_fn is not None:\n            out[\"mean\"] = self.condition_mean(\n                cond_fn, out, x, t, model_kwargs=model_kwargs\n            )\n        sample = out[\"mean\"] + nonzero_mask * th.exp(0.5 * out[\"log_variance\"]) * noise\n        return {\"sample\": sample, \"pred_xstart\": out[\"pred_xstart\"]}\n\n    def p_sample_with_grad(\n        self,\n        model,\n        x,\n        t,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n    ):\n        \"\"\"\n        Sample x_{t-1} from the model at the given timestep.\n\n        :param model: the model to sample from.\n        :param x: the current tensor at x_{t-1}.\n        :param t: the value of t, starting at 0 for the first diffusion step.\n        :param clip_denoised: if True, clip the x_start prediction to [-1, 1].\n        :param denoised_fn: if not None, a function which applies to the\n            x_start prediction before it is used to sample.\n        :param cond_fn: if not None, this is a gradient function that acts\n                        similarly to the model.\n        :param model_kwargs: if not None, a dict of extra keyword arguments to\n            pass to the model. This can be used for conditioning.\n        :return: a dict containing the following keys:\n                 - 'sample': a random sample from the model.\n                 - 'pred_xstart': a prediction of x_0.\n        \"\"\"\n        with th.enable_grad():\n            x = x.detach().requires_grad_()\n            out = self.p_mean_variance(\n                model,\n                x,\n                t,\n                clip_denoised=clip_denoised,\n                denoised_fn=denoised_fn,\n                model_kwargs=model_kwargs,\n            )\n            noise = th.randn_like(x)\n            nonzero_mask = (\n                (t != 0).float().view(-1, *([1] * (len(x.shape) - 1)))\n            )  # no noise when t == 0\n            if cond_fn is not None:\n                out[\"mean\"] = self.condition_mean_with_grad(\n                    cond_fn, out, x, t, model_kwargs=model_kwargs\n                )\n        sample = out[\"mean\"] + nonzero_mask * th.exp(0.5 * out[\"log_variance\"]) * noise\n        return {\"sample\": sample, \"pred_xstart\": out[\"pred_xstart\"].detach()}\n\n    def p_sample_loop(\n        self,\n        model,\n        shape,\n        noise=None,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        device=None,\n        progress=False,\n        skip_timesteps=0,\n        init_image=None,\n        randomize_class=False,\n        cond_fn_with_grad=False,\n        dump_steps=None,\n        const_noise=False,\n    ):\n        \"\"\"\n        Generate samples from the model.\n\n        :param model: the model module.\n        :param shape: the shape of the samples, (N, C, H, W).\n        :param noise: if specified, the noise from the encoder to sample.\n                      Should be of the same shape as `shape`.\n        :param clip_denoised: if True, clip x_start predictions to [-1, 1].\n        :param denoised_fn: if not None, a function which applies to the\n            x_start prediction before it is used to sample.\n        :param cond_fn: if not None, this is a gradient function that acts\n                        similarly to the model.\n        :param model_kwargs: if not None, a dict of extra keyword arguments to\n            pass to the model. This can be used for conditioning.\n        :param device: if specified, the device to create the samples on.\n                       If not specified, use a model parameter's device.\n        :param progress: if True, show a tqdm progress bar.\n        :param const_noise: If True, will noise all samples with the same noise throughout sampling\n        :return: a non-differentiable batch of samples.\n        \"\"\"\n        final = None\n        if dump_steps is not None:\n            dump = []\n\n        for i, sample in enumerate(self.p_sample_loop_progressive(\n            model,\n            shape,\n            noise=noise,\n            clip_denoised=clip_denoised,\n            denoised_fn=denoised_fn,\n            cond_fn=cond_fn,\n            model_kwargs=model_kwargs,\n            device=device,\n            progress=progress,\n            skip_timesteps=skip_timesteps,\n            init_image=init_image,\n            randomize_class=randomize_class,\n            cond_fn_with_grad=cond_fn_with_grad,\n            const_noise=const_noise,\n        )):\n            if dump_steps is not None and i in dump_steps:\n                dump.append(deepcopy(sample[\"sample\"]))\n            final = sample\n        if dump_steps is not None:\n            return dump\n        return final[\"sample\"]\n\n    def p_sample_loop_progressive(\n        self,\n        model,\n        shape,\n        noise=None,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        device=None,\n        progress=False,\n        skip_timesteps=0,\n        init_image=None,\n        randomize_class=False,\n        cond_fn_with_grad=False,\n        const_noise=False,\n    ):\n        \"\"\"\n        Generate samples from the model and yield intermediate samples from\n        each timestep of diffusion.\n\n        Arguments are the same as p_sample_loop().\n        Returns a generator over dicts, where each dict is the return value of\n        p_sample().\n        \"\"\"\n        if device is None:\n            device = next(model.parameters()).device\n        assert isinstance(shape, (tuple, list))\n        if noise is not None:\n            img = noise\n        else:\n            img = th.randn(*shape, device=device)\n\n        if skip_timesteps and init_image is None:\n            init_image = th.zeros_like(img)\n\n        indices = list(range(self.num_timesteps - skip_timesteps))[::-1]\n\n        if init_image is not None:\n            my_t = th.ones([shape[0]], device=device, dtype=th.long) * indices[0]\n            img = self.q_sample(init_image, my_t, img)\n\n        if progress:\n            # Lazy import so that we don't depend on tqdm.\n            from tqdm.auto import tqdm\n\n            indices = tqdm(indices)\n\n        for i in indices:\n            time_st = time.time()\n\n\n            t = th.tensor([i] * shape[0], device=device)\n\n            if randomize_class and 'y' in model_kwargs:\n                model_kwargs['y'] = th.randint(low=0, high=model.num_classes,\n                                               size=model_kwargs['y'].shape,\n                                               device=model_kwargs['y'].device)\n            with th.no_grad():\n                sample_fn = self.p_sample_with_grad if cond_fn_with_grad else self.p_sample\n                out = sample_fn(\n                    model,\n                    img,\n                    t,\n                    clip_denoised=clip_denoised,\n                    denoised_fn=denoised_fn,\n                    cond_fn=cond_fn,\n                    model_kwargs=model_kwargs,\n                    const_noise=const_noise,\n                )\n\n                yield out\n                img = out[\"sample\"]\n            self.time_con.append(time.time() - time_st)\n\n\n    def ddim_sample(\n        self,\n        model,\n        x,\n        t,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        eta=0.0,\n    ):\n        \"\"\"\n        Sample x_{t-1} from the model using DDIM.\n\n        Same usage as p_sample().\n        \"\"\"\n        out_orig = self.p_mean_variance(\n            model,\n            x,\n            t,\n            clip_denoised=clip_denoised,\n            denoised_fn=denoised_fn,\n            model_kwargs=model_kwargs,\n        )\n        if cond_fn is not None:\n            out = self.condition_score(cond_fn, out_orig, x, t, model_kwargs=model_kwargs)\n        else:\n            out = out_orig\n\n        # Usually our model outputs epsilon, but we re-derive it\n        # in case we used x_start or x_prev prediction.\n        eps = self._predict_eps_from_xstart(x, t, out[\"pred_xstart\"])\n\n        alpha_bar = _extract_into_tensor(self.alphas_cumprod, t, x.shape)\n        alpha_bar_prev = _extract_into_tensor(self.alphas_cumprod_prev, t, x.shape)\n        sigma = (\n            eta\n            * th.sqrt((1 - alpha_bar_prev) / (1 - alpha_bar))\n            * th.sqrt(1 - alpha_bar / alpha_bar_prev)\n        )\n        # Equation 12.\n        noise = th.randn_like(x)\n        mean_pred = (\n            out[\"pred_xstart\"] * th.sqrt(alpha_bar_prev)\n            + th.sqrt(1 - alpha_bar_prev - sigma ** 2) * eps\n        )\n        nonzero_mask = (\n            (t != 0).float().view(-1, *([1] * (len(x.shape) - 1)))\n        )  # no noise when t == 0\n        sample = mean_pred + nonzero_mask * sigma * noise\n        return {\"sample\": sample, \"pred_xstart\": out_orig[\"pred_xstart\"]}\n\n    def ddim_sample_with_grad(\n        self,\n        model,\n        x,\n        t,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        eta=0.0,\n    ):\n        \"\"\"\n        Sample x_{t-1} from the model using DDIM.\n\n        Same usage as p_sample().\n        \"\"\"\n        with th.enable_grad():\n            x = x.detach().requires_grad_()\n            out_orig = self.p_mean_variance(\n                model,\n                x,\n                t,\n                clip_denoised=clip_denoised,\n                denoised_fn=denoised_fn,\n                model_kwargs=model_kwargs,\n            )\n            if cond_fn is not None:\n                out = self.condition_score_with_grad(cond_fn, out_orig, x, t,\n                                                     model_kwargs=model_kwargs)\n            else:\n                out = out_orig\n\n        out[\"pred_xstart\"] = out[\"pred_xstart\"].detach()\n\n        # Usually our model outputs epsilon, but we re-derive it\n        # in case we used x_start or x_prev prediction.\n        eps = self._predict_eps_from_xstart(x, t, out[\"pred_xstart\"])\n\n        alpha_bar = _extract_into_tensor(self.alphas_cumprod, t, x.shape)\n        alpha_bar_prev = _extract_into_tensor(self.alphas_cumprod_prev, t, x.shape)\n        sigma = (\n            eta\n            * th.sqrt((1 - alpha_bar_prev) / (1 - alpha_bar))\n            * th.sqrt(1 - alpha_bar / alpha_bar_prev)\n        )\n        # Equation 12.\n        noise = th.randn_like(x)\n        mean_pred = (\n            out[\"pred_xstart\"] * th.sqrt(alpha_bar_prev)\n            + th.sqrt(1 - alpha_bar_prev - sigma ** 2) * eps\n        )\n        nonzero_mask = (\n            (t != 0).float().view(-1, *([1] * (len(x.shape) - 1)))\n        )  # no noise when t == 0\n        sample = mean_pred + nonzero_mask * sigma * noise\n        return {\"sample\": sample, \"pred_xstart\": out_orig[\"pred_xstart\"].detach()}\n\n    def ddim_reverse_sample(\n        self,\n        model,\n        x,\n        t,\n        clip_denoised=True,\n        denoised_fn=None,\n        model_kwargs=None,\n        eta=0.0,\n    ):\n        \"\"\"\n        Sample x_{t+1} from the model using DDIM reverse ODE.\n        \"\"\"\n        assert eta == 0.0, \"Reverse ODE only for deterministic path\"\n        out = self.p_mean_variance(\n            model,\n            x,\n            t,\n            clip_denoised=clip_denoised,\n            denoised_fn=denoised_fn,\n            model_kwargs=model_kwargs,\n        )\n        # Usually our model outputs epsilon, but we re-derive it\n        # in case we used x_start or x_prev prediction.\n        eps = (\n            _extract_into_tensor(self.sqrt_recip_alphas_cumprod, t, x.shape) * x\n            - out[\"pred_xstart\"]\n        ) / _extract_into_tensor(self.sqrt_recipm1_alphas_cumprod, t, x.shape)\n        alpha_bar_next = _extract_into_tensor(self.alphas_cumprod_next, t, x.shape)\n\n        # Equation 12. reversed\n        mean_pred = (\n            out[\"pred_xstart\"] * th.sqrt(alpha_bar_next)\n            + th.sqrt(1 - alpha_bar_next) * eps\n        )\n\n        return {\"sample\": mean_pred, \"pred_xstart\": out[\"pred_xstart\"]}\n\n    def ddim_sample_loop(\n        self,\n        model,\n        shape,\n        noise=None,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        device=None,\n        progress=False,\n        eta=0.0,\n        skip_timesteps=0,\n        init_image=None,\n        randomize_class=False,\n        cond_fn_with_grad=False,\n        dump_steps=None,\n        const_noise=False,\n    ):\n        \"\"\"\n        Generate samples from the model using DDIM.\n\n        Same usage as p_sample_loop().\n        \"\"\"\n        if dump_steps is not None:\n            raise NotImplementedError()\n        if const_noise == True:\n            raise NotImplementedError()\n\n        final = None\n        for sample in self.ddim_sample_loop_progressive(\n            model,\n            shape,\n            noise=noise,\n            clip_denoised=clip_denoised,\n            denoised_fn=denoised_fn,\n            cond_fn=cond_fn,\n            model_kwargs=model_kwargs,\n            device=device,\n            progress=progress,\n            eta=eta,\n            skip_timesteps=skip_timesteps,\n            init_image=init_image,\n            randomize_class=randomize_class,\n            cond_fn_with_grad=cond_fn_with_grad,\n        ):\n            final = sample\n        return final[\"sample\"]\n\n    def ddim_sample_loop_progressive(\n        self,\n        model,\n        shape,\n        noise=None,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        device=None,\n        progress=False,\n        eta=0.0,\n        skip_timesteps=0,\n        init_image=None,\n        randomize_class=False,\n        cond_fn_with_grad=False,\n    ):\n        \"\"\"\n        Use DDIM to sample from the model and yield intermediate samples from\n        each timestep of DDIM.\n\n        Same usage as p_sample_loop_progressive().\n        \"\"\"\n        if device is None:\n            device = next(model.parameters()).device\n        assert isinstance(shape, (tuple, list))\n        if noise is not None:\n            img = noise\n        else:\n            img = th.randn(*shape, device=device)\n\n        if skip_timesteps and init_image is None:\n            init_image = th.zeros_like(img)\n\n        indices = list(range(self.num_timesteps - skip_timesteps))[::-1]\n\n        if init_image is not None:\n            my_t = th.ones([shape[0]], device=device, dtype=th.long) * indices[0]\n            img = self.q_sample(init_image, my_t, img)\n\n        if progress:\n            # Lazy import so that we don't depend on tqdm.\n            from tqdm.auto import tqdm\n\n            indices = tqdm(indices)\n\n        for i in indices:\n            t = th.tensor([i] * shape[0], device=device)\n            if randomize_class and 'y' in model_kwargs:\n                model_kwargs['y'] = th.randint(low=0, high=model.num_classes,\n                                               size=model_kwargs['y'].shape,\n                                               device=model_kwargs['y'].device)\n            with th.no_grad():\n                sample_fn = self.ddim_sample_with_grad if cond_fn_with_grad else self.ddim_sample\n                out = sample_fn(\n                    model,\n                    img,\n                    t,\n                    clip_denoised=clip_denoised,\n                    denoised_fn=denoised_fn,\n                    cond_fn=cond_fn,\n                    model_kwargs=model_kwargs,\n                    eta=eta,\n                )\n                yield out\n                img = out[\"sample\"]\n\n    def plms_sample(\n        self,\n        model,\n        x,\n        t,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        cond_fn_with_grad=False,\n        order=2,\n        old_out=None,\n    ):\n        \"\"\"\n        Sample x_{t-1} from the model using Pseudo Linear Multistep.\n\n        Same usage as p_sample().\n        \"\"\"\n        if not int(order) or not 1 <= order <= 4:\n            raise ValueError('order is invalid (should be int from 1-4).')\n\n        def get_model_output(x, t):\n            with th.set_grad_enabled(cond_fn_with_grad and cond_fn is not None):\n                x = x.detach().requires_grad_() if cond_fn_with_grad else x\n                out_orig = self.p_mean_variance(\n                    model,\n                    x,\n                    t,\n                    clip_denoised=clip_denoised,\n                    denoised_fn=denoised_fn,\n                    model_kwargs=model_kwargs,\n                )\n                if cond_fn is not None:\n                    if cond_fn_with_grad:\n                        out = self.condition_score_with_grad(cond_fn, out_orig, x, t, model_kwargs=model_kwargs)\n                        x = x.detach()\n                    else:\n                        out = self.condition_score(cond_fn, out_orig, x, t, model_kwargs=model_kwargs)\n                else:\n                    out = out_orig\n\n            # Usually our model outputs epsilon, but we re-derive it\n            # in case we used x_start or x_prev prediction.\n            eps = self._predict_eps_from_xstart(x, t, out[\"pred_xstart\"])\n            return eps, out, out_orig\n\n        alpha_bar = _extract_into_tensor(self.alphas_cumprod, t, x.shape)\n        alpha_bar_prev = _extract_into_tensor(self.alphas_cumprod_prev, t, x.shape)\n        eps, out, out_orig = get_model_output(x, t)\n\n        if order > 1 and old_out is None:\n            # Pseudo Improved Euler\n            old_eps = [eps]\n            mean_pred = out[\"pred_xstart\"] * th.sqrt(alpha_bar_prev) + th.sqrt(1 - alpha_bar_prev) * eps\n            eps_2, _, _ = get_model_output(mean_pred, t - 1)\n            eps_prime = (eps + eps_2) / 2\n            pred_prime = self._predict_xstart_from_eps(x, t, eps_prime)\n            mean_pred = pred_prime * th.sqrt(alpha_bar_prev) + th.sqrt(1 - alpha_bar_prev) * eps_prime\n        else:\n            # Pseudo Linear Multistep (Adams-Bashforth)\n            old_eps = old_out[\"old_eps\"]\n            old_eps.append(eps)\n            cur_order = min(order, len(old_eps))\n            if cur_order == 1:\n                eps_prime = old_eps[-1]\n            elif cur_order == 2:\n                eps_prime = (3 * old_eps[-1] - old_eps[-2]) / 2\n            elif cur_order == 3:\n                eps_prime = (23 * old_eps[-1] - 16 * old_eps[-2] + 5 * old_eps[-3]) / 12\n            elif cur_order == 4:\n                eps_prime = (55 * old_eps[-1] - 59 * old_eps[-2] + 37 * old_eps[-3] - 9 * old_eps[-4]) / 24\n            else:\n                raise RuntimeError('cur_order is invalid.')\n            pred_prime = self._predict_xstart_from_eps(x, t, eps_prime)\n            mean_pred = pred_prime * th.sqrt(alpha_bar_prev) + th.sqrt(1 - alpha_bar_prev) * eps_prime\n\n        if len(old_eps) >= order:\n            old_eps.pop(0)\n\n        nonzero_mask = (t != 0).float().view(-1, *([1] * (len(x.shape) - 1)))\n        sample = mean_pred * nonzero_mask + out[\"pred_xstart\"] * (1 - nonzero_mask)\n\n        return {\"sample\": sample, \"pred_xstart\": out_orig[\"pred_xstart\"], \"old_eps\": old_eps}\n\n    def plms_sample_loop(\n        self,\n        model,\n        shape,\n        noise=None,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        device=None,\n        progress=False,\n        skip_timesteps=0,\n        init_image=None,\n        randomize_class=False,\n        cond_fn_with_grad=False,\n        order=2,\n    ):\n        \"\"\"\n        Generate samples from the model using Pseudo Linear Multistep.\n\n        Same usage as p_sample_loop().\n        \"\"\"\n        final = None\n        for sample in self.plms_sample_loop_progressive(\n            model,\n            shape,\n            noise=noise,\n            clip_denoised=clip_denoised,\n            denoised_fn=denoised_fn,\n            cond_fn=cond_fn,\n            model_kwargs=model_kwargs,\n            device=device,\n            progress=progress,\n            skip_timesteps=skip_timesteps,\n            init_image=init_image,\n            randomize_class=randomize_class,\n            cond_fn_with_grad=cond_fn_with_grad,\n            order=order,\n        ):\n            final = sample\n        return final[\"sample\"]\n\n    def plms_sample_loop_progressive(\n        self,\n        model,\n        shape,\n        noise=None,\n        clip_denoised=True,\n        denoised_fn=None,\n        cond_fn=None,\n        model_kwargs=None,\n        device=None,\n        progress=False,\n        skip_timesteps=0,\n        init_image=None,\n        randomize_class=False,\n        cond_fn_with_grad=False,\n        order=2,\n    ):\n        \"\"\"\n        Use PLMS to sample from the model and yield intermediate samples from each\n        timestep of PLMS.\n\n        Same usage as p_sample_loop_progressive().\n        \"\"\"\n        if device is None:\n            device = next(model.parameters()).device\n        assert isinstance(shape, (tuple, list))\n        if noise is not None:\n            img = noise\n        else:\n            img = th.randn(*shape, device=device)\n\n        if skip_timesteps and init_image is None:\n            init_image = th.zeros_like(img)\n\n        indices = list(range(self.num_timesteps - skip_timesteps))[::-1]\n\n        if init_image is not None:\n            my_t = th.ones([shape[0]], device=device, dtype=th.long) * indices[0]\n            img = self.q_sample(init_image, my_t, img)\n\n        if progress:\n            # Lazy import so that we don't depend on tqdm.\n            from tqdm.auto import tqdm\n\n            indices = tqdm(indices)\n\n        old_out = None\n\n        for i in indices:\n            t = th.tensor([i] * shape[0], device=device)\n            if randomize_class and 'y' in model_kwargs:\n                model_kwargs['y'] = th.randint(low=0, high=model.num_classes,\n                                               size=model_kwargs['y'].shape,\n                                               device=model_kwargs['y'].device)\n            with th.no_grad():\n                out = self.plms_sample(\n                    model,\n                    img,\n                    t,\n                    clip_denoised=clip_denoised,\n                    denoised_fn=denoised_fn,\n                    cond_fn=cond_fn,\n                    model_kwargs=model_kwargs,\n                    cond_fn_with_grad=cond_fn_with_grad,\n                    order=order,\n                    old_out=old_out,\n                )\n                yield out\n                old_out = out\n                img = out[\"sample\"]\n\n    def _vb_terms_bpd(\n        self, model, x_start, x_t, t, clip_denoised=True, model_kwargs=None\n    ):\n        \"\"\"\n        Get a term for the variational lower-bound.\n\n        The resulting units are bits (rather than nats, as one might expect).\n        This allows for comparison to other papers.\n\n        :return: a dict with the following keys:\n                 - 'output': a shape [N] tensor of NLLs or KLs.\n                 - 'pred_xstart': the x_0 predictions.\n        \"\"\"\n        true_mean, _, true_log_variance_clipped = self.q_posterior_mean_variance(\n            x_start=x_start, x_t=x_t, t=t\n        )\n        out = self.p_mean_variance(\n            model, x_t, t, clip_denoised=clip_denoised, model_kwargs=model_kwargs\n        )\n        kl = normal_kl(\n            true_mean, true_log_variance_clipped, out[\"mean\"], out[\"log_variance\"]\n        )\n        kl = mean_flat(kl) / np.log(2.0)\n\n        decoder_nll = -discretized_gaussian_log_likelihood(\n            x_start, means=out[\"mean\"], log_scales=0.5 * out[\"log_variance\"]\n        )\n        assert decoder_nll.shape == x_start.shape\n        decoder_nll = mean_flat(decoder_nll) / np.log(2.0)\n\n        # At the first timestep return the decoder NLL,\n        # otherwise return KL(q(x_{t-1}|x_t,x_0) || p(x_{t-1}|x_t))\n        output = th.where((t == 0), decoder_nll, kl)\n        return {\"output\": output, \"pred_xstart\": out[\"pred_xstart\"]}\n\n    def training_losses(self, model, x_start, t, loss_L1, loss_args=None, model_kwargs=None, noise=None, dataset=None):\n        \"\"\"\n        Compute training losses for a single timestep.\n\n        :param model: the model to evaluate loss on.\n        :param x_start: the [N x C x ...] tensor of inputs.\n        :param t: a batch of timestep indices.\n        :param Loss_L1: L1 loss function.\n        :param model_kwargs: if not None, a dict of extra keyword arguments to\n            pass to the model. This can be used for conditioning.\n        :param noise: if specified, the specific Gaussian noise to try to remove.\n        :return: a dict with the key \"loss\" containing a tensor of shape [N].\n                 Some mean or variance settings may also have other keys.\n        \"\"\"\n\n        if model_kwargs is None:\n            model_kwargs = {}\n        if noise is None:\n            noise = th.randn_like(x_start)\n\n\n        x_t = self.q_sample(x_start, t, noise=noise)\n\n        terms = {}\n\n        if self.loss_type == LossType.KL or self.loss_type == LossType.RESCALED_KL:\n            input(\"not used.\")\n            terms[\"loss\"] = self._vb_terms_bpd(\n                model=model,\n                x_start=x_start,\n                x_t=x_t,\n                t=t,\n                clip_denoised=False,\n                model_kwargs=model_kwargs,\n            )[\"output\"]\n            if self.loss_type == LossType.RESCALED_KL:\n                terms[\"loss\"] *= self.num_timesteps\n        elif self.loss_type == LossType.MSE or self.loss_type == LossType.RESCALED_MSE:\n\n            model_output = model(x_t, self._scale_timesteps(t), **model_kwargs)\n\n            decode_loss = False\n            if decode_loss:\n                selected_coords = loss_args[\"selected_coords\"]\n                selected_gt_udf = loss_args[\"selected_gt_udf\"]\n                selected_gt_grad = loss_args[\"selected_gt_grad\"]\n                coords_encoder = loss_args[\"coords_encoder\"]\n                decoder = loss_args[\"decoder\"]\n                max_dist = 0.1\n\n                latent_codes = model_output.squeeze(1)\n\n                coords_encoded = coords_encoder.encode(selected_coords)\n                pred = decoder(coords_encoded, latent_codes)\n\n                udf_loss = F.binary_cross_entropy_with_logits(pred, selected_gt_udf)\n\n                udf_pred = torch.sigmoid(pred)\n                udf_pred = 1 - udf_pred\n                udf_pred *= max_dist\n                gradients = compute_gradients(selected_coords, udf_pred)\n\n                grad_loss = F.mse_loss(gradients, selected_gt_grad, reduction=\"none\")\n                mask = (selected_gt_udf > 0) & (selected_gt_udf < 1)\n                grad_loss = grad_loss[mask].mean()\n\n\n                terms[\"UDF_L1Loss\"] = udf_loss\n                terms[\"Grad_loss\"] = 0.1 * grad_loss\n\n            if self.model_var_type in [\n                ModelVarType.LEARNED,\n                ModelVarType.LEARNED_RANGE,\n            ]:\n                \n                B, C = x_t.shape[:2]\n                assert model_output.shape == (B, C * 2, *x_t.shape[2:])\n                model_output, model_var_values = th.split(model_output, C, dim=1)\n                # Learn the variance using the variational bound, but don't let\n                # it affect our mean prediction.\n                frozen_out = th.cat([model_output.detach(), model_var_values], dim=1)\n                terms[\"vb\"] = self._vb_terms_bpd(\n                    model=lambda *args, r=frozen_out: r,\n                    x_start=x_start,\n                    x_t=x_t,\n                    t=t,\n                    clip_denoised=False,\n                )[\"output\"]\n                if self.loss_type == LossType.RESCALED_MSE:\n                    # Divide by 1000 for equivalence with initial implementation.\n                    # Without a factor of 1/1000, the VB term hurts the MSE term.\n                    terms[\"vb\"] *= self.num_timesteps / 1000.0\n            \n            target = {\n                ModelMeanType.PREVIOUS_X: self.q_posterior_mean_variance(\n                    x_start=x_start, x_t=x_t, t=t\n                )[0],\n                ModelMeanType.START_X: x_start,\n                ModelMeanType.EPSILON: noise,\n            }[self.model_mean_type]\n            \n\n\n            target = target.to(model_output.device)\n            assert model_output.device == target.device\n\n            target = target[:,:,:]\n            x_start = x_start[:,:,:]\n\n            assert model_output.shape == target.shape == x_start.shape  # [bs, njoints, nfeats, nframes]\n\n            terms[\"Latent_L1Loss\"] = 1000*loss_L1(model_output, target) # mean_flat(rot_mse)\n\n            terms[\"loss\"] = terms[\"Latent_L1Loss\"]\n            if decode_loss:\n                terms[\"loss\"] = terms[\"loss\"] + terms.get('UDF_L1Loss', 0.) + terms.get('Grad_loss', 0.)\n\n        else:\n            raise NotImplementedError(self.loss_type)\n\n        return terms\n\n    \ndef _extract_into_tensor(arr, timesteps, broadcast_shape):\n    \"\"\"\n    Extract values from a 1-D numpy array for a batch of indices.\n\n    :param arr: the 1-D numpy array.\n    :param timesteps: a tensor of indices into the array to extract.\n    :param broadcast_shape: a larger shape of K dimensions with the batch\n                            dimension equal to the length of timesteps.\n    :return: a tensor of shape [batch_size, 1, ...] where the shape has K dims.\n    \"\"\"\n    res = th.from_numpy(arr).to(device=timesteps.device)[timesteps].float()\n    while len(res.shape) < len(broadcast_shape):\n        res = res[..., None]\n    return res.expand(broadcast_shape)\n"
  },
  {
    "path": "diffusion/logger.py",
    "content": "\"\"\"\nLogger copied from OpenAI baselines to avoid extra RL-based dependencies:\nhttps://github.com/openai/baselines/blob/ea25b9e8b234e6ee1bca43083f8f3cf974143998/baselines/logger.py\n\"\"\"\n\nimport os\nimport sys\nimport shutil\nimport os.path as osp\nimport json\nimport time\nimport datetime\nimport tempfile\nimport warnings\nfrom collections import defaultdict\nfrom contextlib import contextmanager\n\nDEBUG = 10\nINFO = 20\nWARN = 30\nERROR = 40\n\nDISABLED = 50\n\n\nclass KVWriter(object):\n    def writekvs(self, kvs):\n        raise NotImplementedError\n\n\nclass SeqWriter(object):\n    def writeseq(self, seq):\n        raise NotImplementedError\n\n\nclass HumanOutputFormat(KVWriter, SeqWriter):\n    def __init__(self, filename_or_file):\n        if isinstance(filename_or_file, str):\n            self.file = open(filename_or_file, \"wt\")\n            self.own_file = True\n        else:\n            assert hasattr(filename_or_file, \"read\"), (\n                \"expected file or str, got %s\" % filename_or_file\n            )\n            self.file = filename_or_file\n            self.own_file = False\n\n    def writekvs(self, kvs):\n        # Create strings for printing\n        key2str = {}\n        for (key, val) in sorted(kvs.items()):\n            if hasattr(val, \"__float__\"):\n                valstr = \"%-8.3g\" % val\n            else:\n                valstr = str(val)\n            key2str[self._truncate(key)] = self._truncate(valstr)\n\n        # Find max widths\n        if len(key2str) == 0:\n            print(\"WARNING: tried to write empty key-value dict\")\n            return\n        else:\n            keywidth = max(map(len, key2str.keys()))\n            valwidth = max(map(len, key2str.values()))\n\n        # Write out the data\n        dashes = \"-\" * (keywidth + valwidth + 7)\n        lines = [dashes]\n        for (key, val) in sorted(key2str.items(), key=lambda kv: kv[0].lower()):\n            lines.append(\n                \"| %s%s | %s%s |\"\n                % (key, \" \" * (keywidth - len(key)), val, \" \" * (valwidth - len(val)))\n            )\n        lines.append(dashes)\n        self.file.write(\"\\n\".join(lines) + \"\\n\")\n\n        # Flush the output to the file\n        self.file.flush()\n\n    def _truncate(self, s):\n        maxlen = 30\n        return s[: maxlen - 3] + \"...\" if len(s) > maxlen else s\n\n    def writeseq(self, seq):\n        seq = list(seq)\n        for (i, elem) in enumerate(seq):\n            self.file.write(elem)\n            if i < len(seq) - 1:  # add space unless this is the last one\n                self.file.write(\" \")\n        self.file.write(\"\\n\")\n        self.file.flush()\n\n    def close(self):\n        if self.own_file:\n            self.file.close()\n\n\nclass JSONOutputFormat(KVWriter):\n    def __init__(self, filename):\n        self.file = open(filename, \"wt\")\n\n    def writekvs(self, kvs):\n        for k, v in sorted(kvs.items()):\n            if hasattr(v, \"dtype\"):\n                kvs[k] = float(v)\n        self.file.write(json.dumps(kvs) + \"\\n\")\n        self.file.flush()\n\n    def close(self):\n        self.file.close()\n\n\nclass CSVOutputFormat(KVWriter):\n    def __init__(self, filename):\n        self.file = open(filename, \"w+t\")\n        self.keys = []\n        self.sep = \",\"\n\n    def writekvs(self, kvs):\n        # Add our current row to the history\n        extra_keys = list(kvs.keys() - self.keys)\n        extra_keys.sort()\n        if extra_keys:\n            self.keys.extend(extra_keys)\n            self.file.seek(0)\n            lines = self.file.readlines()\n            self.file.seek(0)\n            for (i, k) in enumerate(self.keys):\n                if i > 0:\n                    self.file.write(\",\")\n                self.file.write(k)\n            self.file.write(\"\\n\")\n            for line in lines[1:]:\n                self.file.write(line[:-1])\n                self.file.write(self.sep * len(extra_keys))\n                self.file.write(\"\\n\")\n        for (i, k) in enumerate(self.keys):\n            if i > 0:\n                self.file.write(\",\")\n            v = kvs.get(k)\n            if v is not None:\n                self.file.write(str(v))\n        self.file.write(\"\\n\")\n        self.file.flush()\n\n    def close(self):\n        self.file.close()\n\n\nclass TensorBoardOutputFormat(KVWriter):\n    \"\"\"\n    Dumps key/value pairs into TensorBoard's numeric format.\n    \"\"\"\n\n    def __init__(self, dir):\n        os.makedirs(dir, exist_ok=True)\n        self.dir = dir\n        self.step = 1\n        prefix = \"events\"\n        path = osp.join(osp.abspath(dir), prefix)\n        import tensorflow as tf\n        from tensorflow.python import pywrap_tensorflow\n        from tensorflow.core.util import event_pb2\n        from tensorflow.python.util import compat\n\n        self.tf = tf\n        self.event_pb2 = event_pb2\n        self.pywrap_tensorflow = pywrap_tensorflow\n        self.writer = pywrap_tensorflow.EventsWriter(compat.as_bytes(path))\n\n    def writekvs(self, kvs):\n        def summary_val(k, v):\n            kwargs = {\"tag\": k, \"simple_value\": float(v)}\n            return self.tf.Summary.Value(**kwargs)\n\n        summary = self.tf.Summary(value=[summary_val(k, v) for k, v in kvs.items()])\n        event = self.event_pb2.Event(wall_time=time.time(), summary=summary)\n        event.step = (\n            self.step\n        )  # is there any reason why you'd want to specify the step?\n        self.writer.WriteEvent(event)\n        self.writer.Flush()\n        self.step += 1\n\n    def close(self):\n        if self.writer:\n            self.writer.Close()\n            self.writer = None\n\n\ndef make_output_format(format, ev_dir, log_suffix=\"\"):\n    os.makedirs(ev_dir, exist_ok=True)\n    if format == \"stdout\":\n        return HumanOutputFormat(sys.stdout)\n    elif format == \"log\":\n        return HumanOutputFormat(osp.join(ev_dir, \"log%s.txt\" % log_suffix))\n    elif format == \"json\":\n        return JSONOutputFormat(osp.join(ev_dir, \"progress%s.json\" % log_suffix))\n    elif format == \"csv\":\n        return CSVOutputFormat(osp.join(ev_dir, \"progress%s.csv\" % log_suffix))\n    elif format == \"tensorboard\":\n        return TensorBoardOutputFormat(osp.join(ev_dir, \"tb%s\" % log_suffix))\n    else:\n        raise ValueError(\"Unknown format specified: %s\" % (format,))\n\n\n# ================================================================\n# API\n# ================================================================\n\n\ndef logkv(key, val):\n    \"\"\"\n    Log a value of some diagnostic\n    Call this once for each diagnostic quantity, each iteration\n    If called many times, last value will be used.\n    \"\"\"\n    get_current().logkv(key, val)\n\n\ndef logkv_mean(key, val):\n    \"\"\"\n    The same as logkv(), but if called many times, values averaged.\n    \"\"\"\n    get_current().logkv_mean(key, val)\n\n\ndef logkvs(d):\n    \"\"\"\n    Log a dictionary of key-value pairs\n    \"\"\"\n    for (k, v) in d.items():\n        logkv(k, v)\n\n\ndef dumpkvs():\n    \"\"\"\n    Write all of the diagnostics from the current iteration\n    \"\"\"\n    return get_current().dumpkvs()\n\n\ndef getkvs():\n    return get_current().name2val\n\n\ndef log(*args, level=INFO):\n    \"\"\"\n    Write the sequence of args, with no separators, to the console and output files (if you've configured an output file).\n    \"\"\"\n    get_current().log(*args, level=level)\n\n\ndef debug(*args):\n    log(*args, level=DEBUG)\n\n\ndef info(*args):\n    log(*args, level=INFO)\n\n\ndef warn(*args):\n    log(*args, level=WARN)\n\n\ndef error(*args):\n    log(*args, level=ERROR)\n\n\ndef set_level(level):\n    \"\"\"\n    Set logging threshold on current logger.\n    \"\"\"\n    get_current().set_level(level)\n\n\ndef set_comm(comm):\n    get_current().set_comm(comm)\n\n\ndef get_dir():\n    \"\"\"\n    Get directory that log files are being written to.\n    will be None if there is no output directory (i.e., if you didn't call start)\n    \"\"\"\n    return get_current().get_dir()\n\n\nrecord_tabular = logkv\ndump_tabular = dumpkvs\n\n\n@contextmanager\ndef profile_kv(scopename):\n    logkey = \"wait_\" + scopename\n    tstart = time.time()\n    try:\n        yield\n    finally:\n        get_current().name2val[logkey] += time.time() - tstart\n\n\ndef profile(n):\n    \"\"\"\n    Usage:\n    @profile(\"my_func\")\n    def my_func(): code\n    \"\"\"\n\n    def decorator_with_name(func):\n        def func_wrapper(*args, **kwargs):\n            with profile_kv(n):\n                return func(*args, **kwargs)\n\n        return func_wrapper\n\n    return decorator_with_name\n\n\n# ================================================================\n# Backend\n# ================================================================\n\n\ndef get_current():\n    if Logger.CURRENT is None:\n        _configure_default_logger()\n\n    return Logger.CURRENT\n\n\nclass Logger(object):\n    DEFAULT = None  # A logger with no output files. (See right below class definition)\n    # So that you can still log to the terminal without setting up any output files\n    CURRENT = None  # Current logger being used by the free functions above\n\n    def __init__(self, dir, output_formats, comm=None):\n        self.name2val = defaultdict(float)  # values this iteration\n        self.name2cnt = defaultdict(int)\n        self.level = INFO\n        self.dir = dir\n        self.output_formats = output_formats\n        self.comm = comm\n\n    # Logging API, forwarded\n    # ----------------------------------------\n    def logkv(self, key, val):\n        self.name2val[key] = val\n\n    def logkv_mean(self, key, val):\n        oldval, cnt = self.name2val[key], self.name2cnt[key]\n        self.name2val[key] = oldval * cnt / (cnt + 1) + val / (cnt + 1)\n        self.name2cnt[key] = cnt + 1\n\n    def dumpkvs(self):\n        if self.comm is None:\n            d = self.name2val\n        else:\n            d = mpi_weighted_mean(\n                self.comm,\n                {\n                    name: (val, self.name2cnt.get(name, 1))\n                    for (name, val) in self.name2val.items()\n                },\n            )\n            if self.comm.rank != 0:\n                d[\"dummy\"] = 1  # so we don't get a warning about empty dict\n        out = d.copy()  # Return the dict for unit testing purposes\n        for fmt in self.output_formats:\n            if isinstance(fmt, KVWriter):\n                fmt.writekvs(d)\n        self.name2val.clear()\n        self.name2cnt.clear()\n        return out\n\n    def log(self, *args, level=INFO):\n        if self.level <= level:\n            self._do_log(args)\n\n    # Configuration\n    # ----------------------------------------\n    def set_level(self, level):\n        self.level = level\n\n    def set_comm(self, comm):\n        self.comm = comm\n\n    def get_dir(self):\n        return self.dir\n\n    def close(self):\n        for fmt in self.output_formats:\n            fmt.close()\n\n    # Misc\n    # ----------------------------------------\n    def _do_log(self, args):\n        for fmt in self.output_formats:\n            if isinstance(fmt, SeqWriter):\n                fmt.writeseq(map(str, args))\n\n\ndef get_rank_without_mpi_import():\n    # check environment variables here instead of importing mpi4py\n    # to avoid calling MPI_Init() when this module is imported\n    for varname in [\"PMI_RANK\", \"OMPI_COMM_WORLD_RANK\"]:\n        if varname in os.environ:\n            return int(os.environ[varname])\n    return 0\n\n\ndef mpi_weighted_mean(comm, local_name2valcount):\n    \"\"\"\n    Copied from: https://github.com/openai/baselines/blob/ea25b9e8b234e6ee1bca43083f8f3cf974143998/baselines/common/mpi_util.py#L110\n    Perform a weighted average over dicts that are each on a different node\n    Input: local_name2valcount: dict mapping key -> (value, count)\n    Returns: key -> mean\n    \"\"\"\n    all_name2valcount = comm.gather(local_name2valcount)\n    if comm.rank == 0:\n        name2sum = defaultdict(float)\n        name2count = defaultdict(float)\n        for n2vc in all_name2valcount:\n            for (name, (val, count)) in n2vc.items():\n                try:\n                    val = float(val)\n                except ValueError:\n                    if comm.rank == 0:\n                        warnings.warn(\n                            \"WARNING: tried to compute mean on non-float {}={}\".format(\n                                name, val\n                            )\n                        )\n                else:\n                    name2sum[name] += val * count\n                    name2count[name] += count\n        return {name: name2sum[name] / name2count[name] for name in name2sum}\n    else:\n        return {}\n\n\ndef configure(dir=None, format_strs=None, comm=None, log_suffix=\"\"):\n    \"\"\"\n    If comm is provided, average all numerical stats across that comm\n    \"\"\"\n    if dir is None:\n        dir = os.getenv(\"OPENAI_LOGDIR\")\n    if dir is None:\n        dir = osp.join(\n            tempfile.gettempdir(),\n            datetime.datetime.now().strftime(\"openai-%Y-%m-%d-%H-%M-%S-%f\"),\n        )\n    assert isinstance(dir, str)\n    dir = os.path.expanduser(dir)\n    os.makedirs(os.path.expanduser(dir), exist_ok=True)\n\n    rank = get_rank_without_mpi_import()\n    if rank > 0:\n        log_suffix = log_suffix + \"-rank%03i\" % rank\n\n    if format_strs is None:\n        if rank == 0:\n            format_strs = os.getenv(\"OPENAI_LOG_FORMAT\", \"stdout,log,csv\").split(\",\")\n        else:\n            format_strs = os.getenv(\"OPENAI_LOG_FORMAT_MPI\", \"log\").split(\",\")\n    format_strs = filter(None, format_strs)\n    output_formats = [make_output_format(f, dir, log_suffix) for f in format_strs]\n\n    Logger.CURRENT = Logger(dir=dir, output_formats=output_formats, comm=comm)\n    if output_formats:\n        log(\"Logging to %s\" % dir)\n\n\ndef _configure_default_logger():\n    configure()\n    Logger.DEFAULT = Logger.CURRENT\n\n\ndef reset():\n    if Logger.CURRENT is not Logger.DEFAULT:\n        Logger.CURRENT.close()\n        Logger.CURRENT = Logger.DEFAULT\n        log(\"Reset logger\")\n\n\n@contextmanager\ndef scoped_configure(dir=None, format_strs=None, comm=None):\n    prevlogger = Logger.CURRENT\n    configure(dir=dir, format_strs=format_strs, comm=comm)\n    try:\n        yield\n    finally:\n        Logger.CURRENT.close()\n        Logger.CURRENT = prevlogger\n\n"
  },
  {
    "path": "diffusion/losses.py",
    "content": "# This code is based on https://github.com/openai/guided-diffusion\n\"\"\"\nHelpers for various likelihood-based losses. These are ported from the original\nHo et al. diffusion models codebase:\nhttps://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/utils.py\n\"\"\"\n\nimport numpy as np\nimport torch as th\n\n\ndef normal_kl(mean1, logvar1, mean2, logvar2):\n    \"\"\"\n    Compute the KL divergence between two gaussians.\n\n    Shapes are automatically broadcasted, so batches can be compared to\n    scalars, among other use cases.\n    \"\"\"\n    tensor = None\n    for obj in (mean1, logvar1, mean2, logvar2):\n        if isinstance(obj, th.Tensor):\n            tensor = obj\n            break\n    assert tensor is not None, \"at least one argument must be a Tensor\"\n\n    # Force variances to be Tensors. Broadcasting helps convert scalars to\n    # Tensors, but it does not work for th.exp().\n    logvar1, logvar2 = [\n        x if isinstance(x, th.Tensor) else th.tensor(x).to(tensor)\n        for x in (logvar1, logvar2)\n    ]\n\n    return 0.5 * (\n        -1.0\n        + logvar2\n        - logvar1\n        + th.exp(logvar1 - logvar2)\n        + ((mean1 - mean2) ** 2) * th.exp(-logvar2)\n    )\n\n\ndef approx_standard_normal_cdf(x):\n    \"\"\"\n    A fast approximation of the cumulative distribution function of the\n    standard normal.\n    \"\"\"\n    return 0.5 * (1.0 + th.tanh(np.sqrt(2.0 / np.pi) * (x + 0.044715 * th.pow(x, 3))))\n\n\ndef discretized_gaussian_log_likelihood(x, *, means, log_scales):\n    \"\"\"\n    Compute the log-likelihood of a Gaussian distribution discretizing to a\n    given image.\n\n    :param x: the target images. It is assumed that this was uint8 values,\n              rescaled to the range [-1, 1].\n    :param means: the Gaussian mean Tensor.\n    :param log_scales: the Gaussian log stddev Tensor.\n    :return: a tensor like x of log probabilities (in nats).\n    \"\"\"\n    assert x.shape == means.shape == log_scales.shape\n    centered_x = x - means\n    inv_stdv = th.exp(-log_scales)\n    plus_in = inv_stdv * (centered_x + 1.0 / 255.0)\n    cdf_plus = approx_standard_normal_cdf(plus_in)\n    min_in = inv_stdv * (centered_x - 1.0 / 255.0)\n    cdf_min = approx_standard_normal_cdf(min_in)\n    log_cdf_plus = th.log(cdf_plus.clamp(min=1e-12))\n    log_one_minus_cdf_min = th.log((1.0 - cdf_min).clamp(min=1e-12))\n    cdf_delta = cdf_plus - cdf_min\n    log_probs = th.where(\n        x < -0.999,\n        log_cdf_plus,\n        th.where(x > 0.999, log_one_minus_cdf_min, th.log(cdf_delta.clamp(min=1e-12))),\n    )\n    assert log_probs.shape == x.shape\n    return log_probs\n"
  },
  {
    "path": "diffusion/nn.py",
    "content": "# This code is based on https://github.com/openai/guided-diffusion\n\"\"\"\nVarious utilities for neural networks.\n\"\"\"\n\nimport math\n\nimport torch as th\nimport torch.nn as nn\n\n\n# PyTorch 1.7 has SiLU, but we support PyTorch 1.5.\nclass SiLU(nn.Module):\n    def forward(self, x):\n        return x * th.sigmoid(x)\n\n\nclass GroupNorm32(nn.GroupNorm):\n    def forward(self, x):\n        return super().forward(x.float()).type(x.dtype)\n\n\ndef conv_nd(dims, *args, **kwargs):\n    \"\"\"\n    Create a 1D, 2D, or 3D convolution module.\n    \"\"\"\n    if dims == 1:\n        return nn.Conv1d(*args, **kwargs)\n    elif dims == 2:\n        return nn.Conv2d(*args, **kwargs)\n    elif dims == 3:\n        return nn.Conv3d(*args, **kwargs)\n    raise ValueError(f\"unsupported dimensions: {dims}\")\n\n\ndef linear(*args, **kwargs):\n    \"\"\"\n    Create a linear module.\n    \"\"\"\n    return nn.Linear(*args, **kwargs)\n\n\ndef avg_pool_nd(dims, *args, **kwargs):\n    \"\"\"\n    Create a 1D, 2D, or 3D average pooling module.\n    \"\"\"\n    if dims == 1:\n        return nn.AvgPool1d(*args, **kwargs)\n    elif dims == 2:\n        return nn.AvgPool2d(*args, **kwargs)\n    elif dims == 3:\n        return nn.AvgPool3d(*args, **kwargs)\n    raise ValueError(f\"unsupported dimensions: {dims}\")\n\n\ndef update_ema(target_params, source_params, rate=0.99):\n    \"\"\"\n    Update target parameters to be closer to those of source parameters using\n    an exponential moving average.\n\n    :param target_params: the target parameter sequence.\n    :param source_params: the source parameter sequence.\n    :param rate: the EMA rate (closer to 1 means slower).\n    \"\"\"\n    for targ, src in zip(target_params, source_params):\n        targ.detach().mul_(rate).add_(src, alpha=1 - rate)\n\n\ndef zero_module(module):\n    \"\"\"\n    Zero out the parameters of a module and return it.\n    \"\"\"\n    for p in module.parameters():\n        p.detach().zero_()\n    return module\n\n\ndef scale_module(module, scale):\n    \"\"\"\n    Scale the parameters of a module and return it.\n    \"\"\"\n    for p in module.parameters():\n        p.detach().mul_(scale)\n    return module\n\n\ndef mean_flat(tensor):\n    \"\"\"\n    Take the mean over all non-batch dimensions.\n    \"\"\"\n    return tensor.mean(dim=list(range(1, len(tensor.shape))))\n\ndef sum_flat(tensor):\n    \"\"\"\n    Take the sum over all non-batch dimensions.\n    \"\"\"\n    return tensor.sum(dim=list(range(1, len(tensor.shape))))\n\n\ndef normalization(channels):\n    \"\"\"\n    Make a standard normalization layer.\n\n    :param channels: number of input channels.\n    :return: an nn.Module for normalization.\n    \"\"\"\n    return GroupNorm32(32, channels)\n\n\ndef timestep_embedding(timesteps, dim, max_period=10000):\n    \"\"\"\n    Create sinusoidal timestep embeddings.\n\n    :param timesteps: a 1-D Tensor of N indices, one per batch element.\n                      These may be fractional.\n    :param dim: the dimension of the output.\n    :param max_period: controls the minimum frequency of the embeddings.\n    :return: an [N x dim] Tensor of positional embeddings.\n    \"\"\"\n    half = dim // 2\n    freqs = th.exp(\n        -math.log(max_period) * th.arange(start=0, end=half, dtype=th.float32) / half\n    ).to(device=timesteps.device)\n    args = timesteps[:, None].float() * freqs[None]\n    embedding = th.cat([th.cos(args), th.sin(args)], dim=-1)\n    if dim % 2:\n        embedding = th.cat([embedding, th.zeros_like(embedding[:, :1])], dim=-1)\n    return embedding\n\n\ndef checkpoint(func, inputs, params, flag):\n    \"\"\"\n    Evaluate a function without caching intermediate activations, allowing for\n    reduced memory at the expense of extra compute in the backward pass.\n    :param func: the function to evaluate.\n    :param inputs: the argument sequence to pass to `func`.\n    :param params: a sequence of parameters `func` depends on but does not\n                   explicitly take as arguments.\n    :param flag: if False, disable gradient checkpointing.\n    \"\"\"\n    if flag:\n        args = tuple(inputs) + tuple(params)\n        return CheckpointFunction.apply(func, len(inputs), *args)\n    else:\n        return func(*inputs)\n\n\nclass CheckpointFunction(th.autograd.Function):\n    @staticmethod\n    @th.cuda.amp.custom_fwd\n    def forward(ctx, run_function, length, *args):\n        ctx.run_function = run_function\n        ctx.input_length = length\n        ctx.save_for_backward(*args)\n        with th.no_grad():\n            output_tensors = ctx.run_function(*args[:length])\n        return output_tensors\n\n    @staticmethod\n    @th.cuda.amp.custom_bwd\n    def backward(ctx, *output_grads):\n        args = list(ctx.saved_tensors)\n\n        # Filter for inputs that require grad. If none, exit early.\n        input_indices = [i for (i, x) in enumerate(args) if x.requires_grad]\n        if not input_indices:\n            return (None, None) + tuple(None for _ in args)\n\n        with th.enable_grad():\n            for i in input_indices:\n                if i < ctx.input_length:\n                    # Not sure why the OAI code does this little\n                    # dance. It might not be necessary.\n                    args[i] = args[i].detach().requires_grad_()\n                    args[i] = args[i].view_as(args[i])\n            output_tensors = ctx.run_function(*args[:ctx.input_length])\n\n        if isinstance(output_tensors, th.Tensor):\n            output_tensors = [output_tensors]\n\n        # Filter for outputs that require grad. If none, exit early.\n        out_and_grads = [(o, g) for (o, g) in zip(output_tensors, output_grads) if o.requires_grad]\n        if not out_and_grads:\n            return (None, None) + tuple(None for _ in args)\n\n        # Compute gradients on the filtered tensors.\n        computed_grads = th.autograd.grad(\n            [o for (o, g) in out_and_grads],\n            [args[i] for i in input_indices],\n            [g for (o, g) in out_and_grads]\n        )\n\n        # Reassemble the complete gradient tuple.\n        input_grads = [None for _ in args]\n        for (i, g) in zip(input_indices, computed_grads):\n            input_grads[i] = g\n        return (None, None) + tuple(input_grads)\n"
  },
  {
    "path": "diffusion/resample.py",
    "content": "from abc import ABC, abstractmethod\n\nimport numpy as np\nimport torch as th\nimport torch.distributed as dist\n\n\ndef create_named_schedule_sampler(name, diffusion):\n    \"\"\"\n    Create a ScheduleSampler from a library of pre-defined samplers.\n\n    :param name: the name of the sampler.\n    :param diffusion: the diffusion object to sample for.\n    \"\"\"\n    if name == \"uniform\":\n        return UniformSampler(diffusion)\n    elif name == \"loss-second-moment\":\n        return LossSecondMomentResampler(diffusion)\n    else:\n        raise NotImplementedError(f\"unknown schedule sampler: {name}\")\n\n\nclass ScheduleSampler(ABC):\n    \"\"\"\n    A distribution over timesteps in the diffusion process, intended to reduce\n    variance of the objective.\n\n    By default, samplers perform unbiased importance sampling, in which the\n    objective's mean is unchanged.\n    However, subclasses may override sample() to change how the resampled\n    terms are reweighted, allowing for actual changes in the objective.\n    \"\"\"\n\n    @abstractmethod\n    def weights(self):\n        \"\"\"\n        Get a numpy array of weights, one per diffusion step.\n\n        The weights needn't be normalized, but must be positive.\n        \"\"\"\n\n    def sample(self, batch_size, device):\n        \"\"\"\n        Importance-sample timesteps for a batch.\n\n        :param batch_size: the number of timesteps.\n        :param device: the torch device to save to.\n        :return: a tuple (timesteps, weights):\n                 - timesteps: a tensor of timestep indices.\n                 - weights: a tensor of weights to scale the resulting losses.\n        \"\"\"\n        w = self.weights()\n        p = w / np.sum(w)\n        indices_np = np.random.choice(len(p), size=(batch_size,), p=p)\n        indices = th.from_numpy(indices_np).long().to(device)\n        weights_np = 1 / (len(p) * p[indices_np])\n        weights = th.from_numpy(weights_np).float().to(device)\n        return indices, weights\n\n\nclass UniformSampler(ScheduleSampler):\n    def __init__(self, diffusion):\n        self.diffusion = diffusion\n        self._weights = np.ones([diffusion.num_timesteps])\n\n    def weights(self):\n        return self._weights\n\n\nclass LossAwareSampler(ScheduleSampler):\n    def update_with_local_losses(self, local_ts, local_losses):\n        \"\"\"\n        Update the reweighting using losses from a model.\n\n        Call this method from each rank with a batch of timesteps and the\n        corresponding losses for each of those timesteps.\n        This method will perform synchronization to make sure all of the ranks\n        maintain the exact same reweighting.\n\n        :param local_ts: an integer Tensor of timesteps.\n        :param local_losses: a 1D Tensor of losses.\n        \"\"\"\n        batch_sizes = [\n            th.tensor([0], dtype=th.int32, device=local_ts.device)\n            for _ in range(dist.get_world_size())\n        ]\n        dist.all_gather(\n            batch_sizes,\n            th.tensor([len(local_ts)], dtype=th.int32, device=local_ts.device),\n        )\n\n        # Pad all_gather batches to be the maximum batch size.\n        batch_sizes = [x.item() for x in batch_sizes]\n        max_bs = max(batch_sizes)\n\n        timestep_batches = [th.zeros(max_bs).to(local_ts) for bs in batch_sizes]\n        loss_batches = [th.zeros(max_bs).to(local_losses) for bs in batch_sizes]\n        dist.all_gather(timestep_batches, local_ts)\n        dist.all_gather(loss_batches, local_losses)\n        timesteps = [\n            x.item() for y, bs in zip(timestep_batches, batch_sizes) for x in y[:bs]\n        ]\n        losses = [x.item() for y, bs in zip(loss_batches, batch_sizes) for x in y[:bs]]\n        self.update_with_all_losses(timesteps, losses)\n\n    @abstractmethod\n    def update_with_all_losses(self, ts, losses):\n        \"\"\"\n        Update the reweighting using losses from a model.\n\n        Sub-classes should override this method to update the reweighting\n        using losses from the model.\n\n        This method directly updates the reweighting without synchronizing\n        between workers. It is called by update_with_local_losses from all\n        ranks with identical arguments. Thus, it should have deterministic\n        behavior to maintain state across workers.\n\n        :param ts: a list of int timesteps.\n        :param losses: a list of float losses, one per timestep.\n        \"\"\"\n\n\nclass LossSecondMomentResampler(LossAwareSampler):\n    def __init__(self, diffusion, history_per_term=10, uniform_prob=0.001):\n        self.diffusion = diffusion\n        self.history_per_term = history_per_term\n        self.uniform_prob = uniform_prob\n        self._loss_history = np.zeros(\n            [diffusion.num_timesteps, history_per_term], dtype=np.float64\n        )\n        self._loss_counts = np.zeros([diffusion.num_timesteps], dtype=np.int)\n\n    def weights(self):\n        if not self._warmed_up():\n            return np.ones([self.diffusion.num_timesteps], dtype=np.float64)\n        weights = np.sqrt(np.mean(self._loss_history ** 2, axis=-1))\n        weights /= np.sum(weights)\n        weights *= 1 - self.uniform_prob\n        weights += self.uniform_prob / len(weights)\n        return weights\n\n    def update_with_all_losses(self, ts, losses):\n        for t, loss in zip(ts, losses):\n            if self._loss_counts[t] == self.history_per_term:\n                # Shift out the oldest loss term.\n                self._loss_history[t, :-1] = self._loss_history[t, 1:]\n                self._loss_history[t, -1] = loss\n            else:\n                self._loss_history[t, self._loss_counts[t]] = loss\n                self._loss_counts[t] += 1\n\n    def _warmed_up(self):\n        return (self._loss_counts == self.history_per_term).all()\n"
  },
  {
    "path": "diffusion/respace.py",
    "content": "# This code is based on https://github.com/openai/guided-diffusion\nimport numpy as np\nimport torch as th\n\nfrom .gaussian_diffusion import GaussianDiffusion\n\ndef space_timesteps(num_timesteps, section_counts):\n    \"\"\"\n    Create a list of timesteps to use from an original diffusion process,\n    given the number of timesteps we want to take from equally-sized portions\n    of the original process.\n\n    For example, if there's 300 timesteps and the section counts are [10,15,20]\n    then the first 100 timesteps are strided to be 10 timesteps, the second 100\n    are strided to be 15 timesteps, and the final 100 are strided to be 20.\n\n    If the stride is a string starting with \"ddim\", then the fixed striding\n    from the DDIM paper is used, and only one section is allowed.\n\n    :param num_timesteps: the number of diffusion steps in the original\n                          process to divide up.\n    :param section_counts: either a list of numbers, or a string containing\n                           comma-separated numbers, indicating the step count\n                           per section. As a special case, use \"ddimN\" where N\n                           is a number of steps to use the striding from the\n                           DDIM paper.\n    :return: a set of diffusion steps from the original process to use.\n    \"\"\"\n    if isinstance(section_counts, str):\n        if section_counts.startswith(\"ddim\"):\n            desired_count = int(section_counts[len(\"ddim\") :])\n            for i in range(1, num_timesteps):\n                if len(range(0, num_timesteps, i)) == desired_count:\n                    return set(range(0, num_timesteps, i))\n            raise ValueError(\n                f\"cannot create exactly {num_timesteps} steps with an integer stride\"\n            )\n        section_counts = [int(x) for x in section_counts.split(\",\")]\n    size_per = num_timesteps // len(section_counts)\n    extra = num_timesteps % len(section_counts)\n    start_idx = 0\n    all_steps = []\n    for i, section_count in enumerate(section_counts):\n        size = size_per + (1 if i < extra else 0)\n        if size < section_count:\n            raise ValueError(\n                f\"cannot divide section of {size} steps into {section_count}\"\n            )\n        if section_count <= 1:\n            frac_stride = 1\n        else:\n            frac_stride = (size - 1) / (section_count - 1)\n        cur_idx = 0.0\n        taken_steps = []\n        for _ in range(section_count):\n            taken_steps.append(start_idx + round(cur_idx))\n            cur_idx += frac_stride\n        all_steps += taken_steps\n        start_idx += size\n    return set(all_steps)\n\n\nclass SpacedDiffusion(GaussianDiffusion):\n    \"\"\"\n    A diffusion process which can skip steps in a base diffusion process.\n\n    :param use_timesteps: a collection (sequence or set) of timesteps from the\n                          original diffusion process to retain.\n    :param kwargs: the kwargs to create the base diffusion process.\n    \"\"\"\n\n    def __init__(self, use_timesteps, **kwargs):\n        self.use_timesteps = set(use_timesteps)\n        self.timestep_map = []\n        self.original_num_steps = len(kwargs[\"betas\"])\n\n        base_diffusion = GaussianDiffusion(**kwargs)  # pylint: disable=missing-kwoa\n        last_alpha_cumprod = 1.0\n        new_betas = []\n        for i, alpha_cumprod in enumerate(base_diffusion.alphas_cumprod):\n            if i in self.use_timesteps:\n                new_betas.append(1 - alpha_cumprod / last_alpha_cumprod)\n                last_alpha_cumprod = alpha_cumprod\n                self.timestep_map.append(i)\n        kwargs[\"betas\"] = np.array(new_betas)\n        super().__init__(**kwargs)\n\n    def p_mean_variance(\n        self, model, *args, **kwargs\n    ):  # pylint: disable=signature-differs\n        return super().p_mean_variance(self._wrap_model(model), *args, **kwargs)\n\n    def training_losses(\n        self, model, *args, **kwargs\n    ):  # pylint: disable=signature-differs\n        return super().training_losses(self._wrap_model(model), *args, **kwargs)\n\n    def condition_mean(self, cond_fn, *args, **kwargs):\n        return super().condition_mean(self._wrap_model(cond_fn), *args, **kwargs)\n\n    def condition_score(self, cond_fn, *args, **kwargs):\n        return super().condition_score(self._wrap_model(cond_fn), *args, **kwargs)\n\n    def _wrap_model(self, model):\n        if isinstance(model, _WrappedModel):\n            return model\n        return _WrappedModel(\n            model, self.timestep_map, self.rescale_timesteps, self.original_num_steps\n        )\n\n    def _scale_timesteps(self, t):\n        # Scaling is done by the wrapped model.\n        return t\n\n\nclass _WrappedModel:\n    def __init__(self, model, timestep_map, rescale_timesteps, original_num_steps):\n        self.model = model\n        self.timestep_map = timestep_map\n        self.rescale_timesteps = rescale_timesteps\n        self.original_num_steps = original_num_steps\n\n    def __call__(self, x, ts, **kwargs):\n        map_tensor = th.tensor(self.timestep_map, device=ts.device, dtype=ts.dtype)\n        new_ts = map_tensor[ts]\n        if self.rescale_timesteps:\n            new_ts = new_ts.float() * (1000.0 / self.original_num_steps)\n\n        # print(self.original_num_steps) # 1000.\n        # input(\"stop\")\n\n        return self.model(x, new_ts, **kwargs)\n"
  },
  {
    "path": "environment.yaml",
    "content": "name: SurfD\nchannels:\n  - iopath\n  - fvcore\n  - pytorch\n  - conda-forge\n  - defaults\ndependencies:\n  - _libgcc_mutex=0.1=main\n  - _openmp_mutex=5.1=1_gnu\n  - blas=1.0=mkl\n  - brotli-python=1.0.9=py38h6a678d5_7\n  - bzip2=1.0.8=h7b6447c_0\n  - ca-certificates=2023.11.17=hbcca054_0\n  - certifi=2023.11.17=pyhd8ed1ab_0\n  - cffi=1.16.0=py38h5eee18b_0\n  - charset-normalizer=2.0.4=pyhd3eb1b0_0\n  - colorama=0.4.6=pyhd8ed1ab_0\n  - cryptography=41.0.7=py38hdda0065_0\n  - cudatoolkit=11.3.1=h2bc3f7f_2\n  - ffmpeg=4.3=hf484d3e_0\n  - freetype=2.12.1=h4a9f257_0\n  - fvcore=0.1.5.post20210915=py38\n  - giflib=5.2.1=h5eee18b_3\n  - gmp=6.2.1=h295c915_3\n  - gnutls=3.6.15=he1e5248_0\n  - idna=3.4=py38h06a4308_0\n  - intel-openmp=2023.1.0=hdb19cb5_46306\n  - iopath=0.1.9=py38\n  - jpeg=9e=h5eee18b_1\n  - lame=3.100=h7b6447c_0\n  - lcms2=2.12=h3be6417_0\n  - ld_impl_linux-64=2.38=h1181459_1\n  - lerc=3.0=h295c915_0\n  - libdeflate=1.17=h5eee18b_1\n  - libffi=3.4.4=h6a678d5_0\n  - libgcc-ng=11.2.0=h1234567_1\n  - libgomp=11.2.0=h1234567_1\n  - libiconv=1.16=h7f8727e_2\n  - libidn2=2.3.4=h5eee18b_0\n  - libpng=1.6.39=h5eee18b_0\n  - libstdcxx-ng=11.2.0=h1234567_1\n  - libtasn1=4.19.0=h5eee18b_0\n  - libtiff=4.5.1=h6a678d5_0\n  - libunistring=0.9.10=h27cfd23_0\n  - libuv=1.44.2=h5eee18b_0\n  - libwebp=1.3.2=h11a3e52_0\n  - libwebp-base=1.3.2=h5eee18b_0\n  - lz4-c=1.9.4=h6a678d5_0\n  - mkl=2023.1.0=h213fc3f_46344\n  - mkl-service=2.4.0=py38h5eee18b_1\n  - mkl_fft=1.3.8=py38h5eee18b_0\n  - mkl_random=1.2.4=py38hdb19cb5_0\n  - ncurses=6.4=h6a678d5_0\n  - nettle=3.7.3=hbbd107a_1\n  - numpy=1.24.3=py38hf6e8229_1\n  - numpy-base=1.24.3=py38h060ed82_1\n  - openh264=2.1.1=h4ff587b_0\n  - openjpeg=2.4.0=h3ad879b_0\n  - openssl=3.0.12=h7f8727e_0\n  - pillow=10.0.1=py38ha6cbd5a_0\n  - pip=23.3.1=py38h06a4308_0\n  - portalocker=1.4.0=py_0\n  - pycparser=2.21=pyhd3eb1b0_0\n  - pyopenssl=23.2.0=py38h06a4308_0\n  - pysocks=1.7.1=py38h06a4308_0\n  - python=3.8.18=h955ad1f_0\n  - pytorch=1.11.0=py3.8_cuda11.3_cudnn8.2.0_0\n  - pytorch-mutex=1.0=cuda\n  - readline=8.2=h5eee18b_0\n  - requests=2.31.0=py38h06a4308_0\n  - setuptools=68.2.2=py38h06a4308_0\n  - sqlite=3.41.2=h5eee18b_0\n  - tabulate=0.9.0=pyhd8ed1ab_1\n  - tbb=2021.8.0=hdb19cb5_0\n  - termcolor=2.4.0=pyhd8ed1ab_0\n  - tk=8.6.12=h1ccaba5_0\n  - torchaudio=0.11.0=py38_cu113\n  - torchvision=0.12.0=py38_cu113\n  - tqdm=4.66.1=pyhd8ed1ab_0\n  - urllib3=1.26.18=py38h06a4308_0\n  - wheel=0.41.2=py38h06a4308_0\n  - xz=5.4.5=h5eee18b_0\n  - yacs=0.1.8=pyhd8ed1ab_0\n  - yaml=0.2.5=h7f98852_2\n  - zlib=1.2.13=h5eee18b_0\n  - zstd=1.5.5=hc292b87_0\n  - pip:\n      - absl-py==2.0.0\n      - addict==2.4.0\n      - aiofiles==23.2.1\n      - altair==5.2.0\n      - annotated-types==0.6.0\n      - ansi2html==1.9.1\n      - anyio==4.2.0\n      - appdirs==1.4.4\n      - asciimatics==1.15.0\n      - asttokens==2.4.1\n      - attrs==23.2.0\n      - backcall==0.2.0\n      - blinker==1.7.0\n      - blobfile==2.1.1\n      - cachetools==5.3.2\n      - click==8.1.7\n      - clip==1.0\n      - comm==0.2.1\n      - configargparse==1.7\n      - contourpy==1.1.1\n      - cycler==0.12.1\n      - cython==3.0.8\n      - dash==2.14.2\n      - dash-core-components==2.0.0\n      - dash-html-components==2.0.0\n      - dash-table==5.0.0\n      - dcor==0.6\n      - decorator==5.1.1\n      - docker-pycreds==0.4.0\n      - einops==0.7.0\n      - emd==0.6.2\n      - exceptiongroup==1.2.0\n      - executing==2.0.1\n      - fastapi==0.109.2\n      - fastjsonschema==2.19.1\n      - ffmpy==0.3.1\n      - filelock==3.13.1\n      - fire==0.5.0\n      - flask==3.0.0\n      - fonttools==4.47.0\n      - fsspec==2024.2.0\n      - ftfy==6.1.3\n      - gitdb==4.0.11\n      - gitpython==3.1.41\n      - google-auth==2.26.1\n      - google-auth-oauthlib==1.0.0\n      - gradio==4.17.0\n      - gradio-client==0.9.0\n      - grpcio==1.60.0\n      - h11==0.14.0\n      - h5py==3.10.0\n      - hesiod==1.0.0\n      - httpcore==1.0.2\n      - httpx==0.26.0\n      - huggingface-hub==0.20.3\n      - imageio==2.34.0\n      - importlib-metadata==7.0.1\n      - importlib-resources==6.1.1\n      - ipython==8.12.3\n      - ipywidgets==8.1.1\n      - itsdangerous==2.1.2\n      - jedi==0.19.1\n      - jinja2==3.1.3\n      - joblib==1.3.2\n      - jsonpatch==1.33\n      - jsonpointer==2.4\n      - jsonschema==4.20.0\n      - jsonschema-specifications==2023.12.1\n      - jupyter-core==5.7.1\n      - jupyterlab-widgets==3.0.9\n      - kiwisolver==1.4.5\n      - llvmlite==0.41.1\n      - lxml==4.9.4\n      - markdown==3.5.2\n      - markdown-it-py==3.0.0\n      - markupsafe==2.1.3\n      - matplotlib==3.7.4\n      - matplotlib-inline==0.1.6\n      - mdurl==0.1.2\n      - nbformat==5.9.2\n      - nest-asyncio==1.5.8\n      - networkx==3.1\n      - neuralnet-pytorch==0.0.3\n      - numba==0.58.1\n      - oauthlib==3.2.2\n      - open3d==0.18.0\n      - orjson==3.9.13\n      - packaging==23.2\n      - pandas==2.0.3\n      - parso==0.8.3\n      - pexpect==4.9.0\n      - pickleshare==0.7.5\n      - pkgutil-resolve-name==1.3.10\n      - platformdirs==4.1.0\n      - plotly==5.18.0\n      - prompt-toolkit==3.0.43\n      - protobuf==4.25.2\n      - psutil==5.9.7\n      - ptyprocess==0.7.0\n      - pure-eval==0.2.2\n      - pyasn1==0.5.1\n      - pyasn1-modules==0.3.0\n      - pycryptodomex==3.20.0\n      - pydantic==2.6.1\n      - pydantic-core==2.16.2\n      - pydub==0.25.1\n      - pyfiglet==0.8.post1\n      - pygments==2.17.2\n      - pymcubes==0.1.4\n      - pymeshlab==2023.12\n      - pyparsing==3.1.1\n      - pyquaternion==0.9.9\n      - python-dateutil==2.8.2\n      - python-multipart==0.0.7\n      - pytorch3d==0.7.2\n      - pytz==2023.3.post1\n      - pyyaml==6.0.1\n      - referencing==0.32.1\n      - regex==2023.12.25\n      - requests-oauthlib==1.3.1\n      - retrying==1.3.4\n      - rich==13.7.0\n      - rpds-py==0.16.2\n      - rsa==4.9\n      - ruamel-yaml==0.16.13\n      - ruamel-yaml-clib==0.2.8\n      - ruff==0.2.1\n      - scikit-learn==1.3.2\n      - scipy==1.10.1\n      - seaborn==0.13.2\n      - semantic-version==2.10.0\n      - sentry-sdk==1.39.2\n      - setproctitle==1.3.3\n      - shellingham==1.5.4\n      - six==1.16.0\n      - smmap==5.0.1\n      - sniffio==1.3.0\n      - sparse==0.15.1\n      - stack-data==0.6.3\n      - starlette==0.36.3\n      - tenacity==8.2.3\n      - tensorboard==2.14.0\n      - tensorboard-data-server==0.7.2\n      - threadpoolctl==3.2.0\n      - tomlkit==0.12.0\n      - toolz==0.12.1\n      - torch-dct==0.1.6\n      - torch-scatter==2.1.2\n      - tornado==6.4\n      - traitlets==5.14.1\n      - trimesh==4.0.8\n      - typeguard==2.13.3\n      - typer==0.9.0\n      - typing-extensions==4.9.0\n      - tzdata==2023.4\n      - uvicorn==0.27.0.post1\n      - visdom==0.2.4\n      - wandb==0.16.2\n      - wcwidth==0.2.13\n      - websocket-client==1.7.0\n      - websockets==11.0.3\n      - werkzeug==3.0.1\n      - widgetsnbextension==4.0.9\n      - zipp==3.17.0\nprefix: /home/yuzhengming/miniconda3/envs/SurfD\n"
  },
  {
    "path": "meshudf/_marching_cubes_lewiner.py",
    "content": "import base64\n\nimport numpy as np\n\nimport meshudf._marching_cubes_lewiner_luts as mcluts\nfrom meshudf import _marching_cubes_lewiner_cy\n\n\ndef marching_cubes_lewiner(\n    volume,\n    level=None,\n    spacing=(1.0, 1.0, 1.0),\n    gradient_direction=\"descent\",\n    step_size=1,\n    allow_degenerate=True,\n    use_classic=False,\n    mask=None,\n):\n    \"\"\"Lewiner et al. algorithm for marching cubes. See\n    marching_cubes_lewiner for documentation.\n    \"\"\"\n\n    # Check volume and ensure its in the format that the alg needs\n    if not isinstance(volume, np.ndarray) or (volume.ndim != 3):\n        raise ValueError(\"Input volume should be a 3D numpy array.\")\n    if volume.shape[0] < 2 or volume.shape[1] < 2 or volume.shape[2] < 2:\n        raise ValueError(\"Input array must be at least 2x2x2.\")\n    volume = np.ascontiguousarray(volume, np.float32)  # no copy if not necessary\n\n    # Check/convert other inputs:\n    # level\n    if level is None:\n        level = 0.5 * (volume.min() + volume.max())\n    else:\n        level = float(level)\n        if level < volume.min() or level > volume.max():\n            raise ValueError(\"Surface level must be within volume data range.\")\n    # spacing\n    if len(spacing) != 3:\n        raise ValueError(\"`spacing` must consist of three floats.\")\n    # step_size\n    step_size = int(step_size)\n    if step_size < 1:\n        raise ValueError(\"step_size must be at least one.\")\n    # use_classic\n    use_classic = bool(use_classic)\n\n    # Get LutProvider class (reuse if possible)\n    L = _get_mc_luts()\n\n    # Check if a mask array is passed\n    if mask is not None:\n        if not mask.shape == volume.shape:\n            raise ValueError(\"volume and mask must have the same shape.\")\n\n    # Apply algorithm\n    func = _marching_cubes_lewiner_cy.marching_cubes\n    vertices, faces, normals, values = func(volume, level, L, step_size, use_classic, mask)\n\n    if not len(vertices):\n        raise RuntimeError(\"No surface found at the given iso value.\")\n\n    # Output in z-y-x order, as is common in skimage\n    vertices = np.fliplr(vertices)\n    normals = np.fliplr(normals)\n\n    # Finishing touches to output\n    faces.shape = -1, 3\n    if gradient_direction == \"descent\":\n        # MC implementation is right-handed, but gradient_direction is\n        # left-handed\n        faces = np.fliplr(faces)\n    elif not gradient_direction == \"ascent\":\n        raise ValueError(\n            \"Incorrect input %s in `gradient_direction`, see \" \"docstring.\" % (gradient_direction)\n        )\n    if not np.array_equal(spacing, (1, 1, 1)):\n        vertices = vertices * np.r_[spacing]\n\n    if allow_degenerate:\n        return vertices, faces, normals, values\n    else:\n        fun = _marching_cubes_lewiner_cy.remove_degenerate_faces\n        return fun(vertices.astype(np.float32), faces, normals, values)\n\n\ndef udf_mc_lewiner(\n    volume,\n    grads,\n    spacing=(1.0, 1.0, 1.0),\n    gradient_direction=\"descent\",\n    step_size=1,\n    allow_degenerate=True,\n    use_classic=False,\n    mask=None,\n):\n    \"\"\"Lewiner et al. algorithm for marching cubes. See\n    marching_cubes_lewiner for documentation.\n    \"\"\"\n\n    # Check volume and ensure its in the format that the alg needs\n    if not isinstance(volume, np.ndarray) or (volume.ndim != 3):\n        raise ValueError(\"Input volume should be a 3D numpy array.\")\n    if volume.shape[0] < 2 or volume.shape[1] < 2 or volume.shape[2] < 2:\n        raise ValueError(\"Input array must be at least 2x2x2.\")\n    volume = np.ascontiguousarray(volume, np.float32)  # no copy if not necessary\n\n    # spacing\n    if len(spacing) != 3:\n        raise ValueError(\"`spacing` must consist of three floats.\")\n    # step_size\n    step_size = int(step_size)\n    if step_size < 1:\n        raise ValueError(\"step_size must be at least one.\")\n    # use_classic\n    use_classic = bool(use_classic)\n\n    # Get LutProvider class (reuse if possible)\n    L = _get_mc_luts()\n\n    # Check if a mask array is passed\n    if mask is not None:\n        if not mask.shape == volume.shape:\n            raise ValueError(\"volume and mask must have the same shape.\")\n\n    # Apply algorithm\n    func = _marching_cubes_lewiner_cy.marching_cubes_udf\n    vertices, faces, normals, values = func(volume, grads, L, step_size, use_classic, mask)\n\n    if not len(vertices):\n        raise RuntimeError(\"No surface found at the given iso value.\")\n\n    # Output in z-y-x order, as is common in skimage\n    vertices = np.fliplr(vertices)\n    normals = np.fliplr(normals)\n\n    # Finishing touches to output\n    faces.shape = -1, 3\n    if gradient_direction == \"descent\":\n        # MC implementation is right-handed, but gradient_direction is\n        # left-handed\n        faces = np.fliplr(faces)\n    elif not gradient_direction == \"ascent\":\n        raise ValueError(\n            \"Incorrect input %s in `gradient_direction`, see \" \"docstring.\" % (gradient_direction)\n        )\n    if not np.array_equal(spacing, (1, 1, 1)):\n        vertices = vertices * np.r_[spacing]\n\n    if allow_degenerate:\n        return vertices, faces, normals, values\n    else:\n        fun = _marching_cubes_lewiner_cy.remove_degenerate_faces\n        return fun(vertices.astype(np.float32), faces, normals, values)\n\n\ndef _to_array(args):\n    shape, text = args\n    byts = base64.decodebytes(text.encode(\"utf-8\"))\n    ar = np.frombuffer(byts, dtype=\"int8\")\n    ar.shape = shape\n    return ar\n\n\n# Map an edge-index to two relative pixel positions. The ege index\n# represents a point that lies somewhere in between these pixels.\n# Linear interpolation should be used to determine where it is exactly.\n#   0\n# 3   1   ->  0x\n#   2         xx\nEDGETORELATIVEPOSX = np.array(\n    [\n        [0, 1],\n        [1, 1],\n        [1, 0],\n        [0, 0],\n        [0, 1],\n        [1, 1],\n        [1, 0],\n        [0, 0],\n        [0, 0],\n        [1, 1],\n        [1, 1],\n        [0, 0],\n    ],\n    \"int8\",\n)\nEDGETORELATIVEPOSY = np.array(\n    [\n        [0, 0],\n        [0, 1],\n        [1, 1],\n        [1, 0],\n        [0, 0],\n        [0, 1],\n        [1, 1],\n        [1, 0],\n        [0, 0],\n        [0, 0],\n        [1, 1],\n        [1, 1],\n    ],\n    \"int8\",\n)\nEDGETORELATIVEPOSZ = np.array(\n    [\n        [0, 0],\n        [0, 0],\n        [0, 0],\n        [0, 0],\n        [1, 1],\n        [1, 1],\n        [1, 1],\n        [1, 1],\n        [0, 1],\n        [0, 1],\n        [0, 1],\n        [0, 1],\n    ],\n    \"int8\",\n)\n\n\ndef _get_mc_luts():\n    \"\"\"Kind of lazy obtaining of the luts.\"\"\"\n    if not hasattr(mcluts, \"THE_LUTS\"):\n\n        mcluts.THE_LUTS = _marching_cubes_lewiner_cy.LutProvider(\n            EDGETORELATIVEPOSX,\n            EDGETORELATIVEPOSY,\n            EDGETORELATIVEPOSZ,\n            _to_array(mcluts.CASESCLASSIC),\n            _to_array(mcluts.CASES),\n            _to_array(mcluts.TILING1),\n            _to_array(mcluts.TILING2),\n            _to_array(mcluts.TILING3_1),\n            _to_array(mcluts.TILING3_2),\n            _to_array(mcluts.TILING4_1),\n            _to_array(mcluts.TILING4_2),\n            _to_array(mcluts.TILING5),\n            _to_array(mcluts.TILING6_1_1),\n            _to_array(mcluts.TILING6_1_2),\n            _to_array(mcluts.TILING6_2),\n            _to_array(mcluts.TILING7_1),\n            _to_array(mcluts.TILING7_2),\n            _to_array(mcluts.TILING7_3),\n            _to_array(mcluts.TILING7_4_1),\n            _to_array(mcluts.TILING7_4_2),\n            _to_array(mcluts.TILING8),\n            _to_array(mcluts.TILING9),\n            _to_array(mcluts.TILING10_1_1),\n            _to_array(mcluts.TILING10_1_1_),\n            _to_array(mcluts.TILING10_1_2),\n            _to_array(mcluts.TILING10_2),\n            _to_array(mcluts.TILING10_2_),\n            _to_array(mcluts.TILING11),\n            _to_array(mcluts.TILING12_1_1),\n            _to_array(mcluts.TILING12_1_1_),\n            _to_array(mcluts.TILING12_1_2),\n            _to_array(mcluts.TILING12_2),\n            _to_array(mcluts.TILING12_2_),\n            _to_array(mcluts.TILING13_1),\n            _to_array(mcluts.TILING13_1_),\n            _to_array(mcluts.TILING13_2),\n            _to_array(mcluts.TILING13_2_),\n            _to_array(mcluts.TILING13_3),\n            _to_array(mcluts.TILING13_3_),\n            _to_array(mcluts.TILING13_4),\n            _to_array(mcluts.TILING13_5_1),\n            _to_array(mcluts.TILING13_5_2),\n            _to_array(mcluts.TILING14),\n            _to_array(mcluts.TEST3),\n            _to_array(mcluts.TEST4),\n            _to_array(mcluts.TEST6),\n            _to_array(mcluts.TEST7),\n            _to_array(mcluts.TEST10),\n            _to_array(mcluts.TEST12),\n            _to_array(mcluts.TEST13),\n            _to_array(mcluts.SUBCONFIG13),\n        )\n\n    return mcluts.THE_LUTS\n"
  },
  {
    "path": "meshudf/_marching_cubes_lewiner_cy.pyx",
    "content": "#cython: cdivision=True\n#cython: boundscheck=False\n#cython: nonecheck=False\n#cython: wraparound=False\n\n\"\"\"\nThis is an implementation of the marching cubes algorithm proposed in:\n\nEfficient implementation of Marching Cubes' cases with topological guarantees.\nThomas Lewiner, Helio Lopes, Antonio Wilson Vieira and Geovan Tavares.\nJournal of Graphics Tools 8(2): pp. 1-15 (december 2003)\n\nThis algorithm has the advantage that it provides topologically correct\nresults, and the algorithms implementation is relatively simple. Most\nof the magic is in the lookup tables, which are provided as open source.\n\nOriginally implemented in C++ by Thomas Lewiner in 2002, ported to Cython\nby Almar Klein in 2012. Adapted for scikit-image in 2016.\n\n\"\"\"\n\n# Cython specific imports\nimport numpy as np\ncimport numpy as np\nimport cython\nfrom libcpp.deque cimport deque\nnp.import_array()\nfrom cpython cimport array\nimport array\n\n# Enable low level memory management\nfrom libc.stdlib cimport malloc, free\n\n# Define tiny winy number\ncdef double FLT_EPSILON = np.spacing(1.0) #0.0000001\n\n# Define abs function for doubles\ncdef inline double dabs(double a): return a if a>=0 else -a\ncdef inline int imin(int a, int b): return a if a<b else b\n\n# todo: allow dynamic isovalue?\n# todo: can we disable Cython from checking for zero division? Sometimes we know that it never happens!\n\ndef remove_degenerate_faces(vertices, faces, *arrays):\n\n    vertices_map0 = np.arange(len(vertices), dtype=np.int32)\n    vertices_map1 = vertices_map0.copy()\n    faces_ok = np.ones(len(faces), dtype=np.int32)\n\n    cdef float [:, :] vertices_ = vertices\n    cdef float [:] v1, v2, v3\n    cdef int [:, :]  faces_ = faces\n\n    cdef int [:] vertices_map1_ = vertices_map1\n    cdef int [:] faces_ok_ = faces_ok\n\n    cdef int j, i1, i2, i3\n\n    # Iterate over all faces. When we encounter a degenerate triangle,\n    # we update the vertex map, i.e. we merge the corresponding vertices.\n    for j in range(faces_.shape[0]):\n        i1, i2, i3 = faces_[j][0], faces_[j][1], faces_[j][2]\n        v1, v2, v3 = vertices_[i1], vertices_[i2], vertices_[i3]\n        if v1[0] == v2[0] and v1[1] == v2[1] and v1[2] == v2[2]:\n            vertices_map1_[i1] = vertices_map1_[i2] = imin(vertices_map1_[i1], vertices_map1_[i2])\n            faces_ok_[j] = 0\n        if v1[0] == v3[0] and v1[1] == v3[1] and v1[2] == v3[2]:\n            vertices_map1_[i1] = vertices_map1_[i3] = imin(vertices_map1_[i1], vertices_map1_[i3])\n            faces_ok_[j] = 0\n        if v2[0] == v3[0] and v2[1] == v3[1] and v2[2] == v3[2]:\n            vertices_map1_[i2] = vertices_map1_[i3] = imin(vertices_map1_[i2], vertices_map1_[i3])\n            faces_ok_[j] = 0\n\n    # Create mask and mapping to new vertex indices\n    vertices_ok = vertices_map1 == vertices_map0\n    vertices_map2 = np.cumsum(vertices_ok) - 1\n\n    # Apply selection and mapping\n    faces2 = vertices_map2[vertices_map1[faces[faces_ok>0]]]\n    vertices2 = vertices[vertices_ok]\n    arrays2 = [arr[vertices_ok] for arr in arrays]\n\n    return (vertices2, faces2) + tuple(arrays2)\n\n\ncdef class Cell:\n    \"\"\" Class to keep track of some stuff during the whole cube marching\n    procedure.\n\n    This \"struct\" keeps track of the current cell location, and the values\n    of corners of the cube. Gradients for the cube corners are calculated\n    when needed.\n\n    Additionally, it keeps track of the array of vertices, faces and normals.\n\n    Notes on vertices\n    -----------------\n    The vertices are stored in a C-array that is increased in size with\n    factors of two if needed. The same applies to the faces and normals.\n\n    Notes on faces\n    --------------\n    To keep track of the vertices already defined, this class maintains\n    two faceLayer arrays. faceLayer1 is of the current layer (z-value)\n    and faceLayer2 is of the next. Both face layers have 4 elements per\n    cell in that layer, 1 for each unique edge per cell (see\n    get_index_in_facelayer). These are initialized as -1, and set to the\n    index in the vertex array when a new vertex is created.\n    In summary, this allows us to keep track of the already created\n    vertices without keeping a very big array.\n\n    Notes on normals\n    ----------------\n    The normal is simply defined as the gradient. Each time that a face is\n    created, we also add the gradient of that vertex position to the\n    normals array. The gradients are all calculated from the differences between\n    the 8 corners of the current cube, but because the final value of a normal\n    was contributed from multiple cells, the normals are quite accurate.\n\n    \"\"\"\n\n    # Reference to LUTS object\n    cdef LutProvider luts\n\n    # Location of cube\n    cdef int x\n    cdef int y\n    cdef int z\n\n    # Stepsize\n    cdef int step\n\n    # Values of cube corners (isovalue subtracted)\n    cdef double v0\n    cdef double v1\n    cdef double v2\n    cdef double v3\n    cdef double v4\n    cdef double v5\n    cdef double v6\n    cdef double v7\n\n    # Small arrays to store the above values in (allowing indexing)\n    # and also the gradient at these points\n    cdef double *vv\n    cdef double *vg\n\n    # Max value of the eight corners\n    cdef double vmax\n\n    # Vertex position of center of cube (only calculated if needed)\n    cdef double v12_x\n    cdef double v12_y\n    cdef double v12_z\n    # And corresponding gradient\n    cdef double v12_xg\n    cdef double v12_yg\n    cdef double v12_zg\n    cdef int v12_calculated # a boolean\n\n    # The index value, our magic 256 bit word\n    cdef int index\n\n    # Dimensions of the total volume\n    cdef int nx\n    cdef int ny\n    cdef int nz\n\n    # Arrays with face information\n    cdef int *faceLayer # The current facelayer (reference-copy of one of the below)\n    # cdef int *faceLayer1 # The actual first face layer\n    # cdef int *faceLayer2 # The actual second face layer\n\n    # Stuff to store the output vertices\n    cdef float *_vertices\n    cdef float *_normals\n    cdef float *_values\n    cdef int _vertexCount\n    cdef int _vertexMaxCount\n\n    # Stuff to store the output faces\n    cdef int *_faces\n    cdef int _faceCount\n    cdef int _faceMaxCount\n\n\n    def __init__(self, LutProvider luts, int nx, int ny, int nz):\n        self.luts = luts\n        self.nx, self.ny, self.nz = nx, ny, nz\n\n        # Allocate face layers\n        # self.faceLayer1 = <int *>malloc(self.nx*self.ny*4 * sizeof(int))\n        # self.faceLayer2 = <int *>malloc(self.nx*self.ny*4 * sizeof(int))\n        self.faceLayer = <int *>malloc(self.nx*self.ny*self.nz*4 * sizeof(int))\n\n        # if (self.faceLayer1 is NULL or self.faceLayer2 is NULL or\n        #     self.vv is NULL or self.vg is NULL or self._vertices is NULL or\n        #     self._normals is NULL or self._values is NULL or\n        #     self._faces is NULL):\n        #     raise MemoryError()\n        if (self.faceLayer is NULL or\n            self.vv is NULL or self.vg is NULL or self._vertices is NULL or\n            self._normals is NULL or self._values is NULL or\n            self._faces is NULL):\n            raise MemoryError()\n\n        cdef int i\n        # for i in range(self.nx*self.ny*4):\n        #     self.faceLayer1[i] = -1\n        #     self.faceLayer2[i] = -1\n        # self.faceLayer = self.faceLayer1\n        for i in range(self.nx*self.ny*self.nz*4):\n            self.faceLayer[i] = -1\n\n\n    def __cinit__(self):\n\n        # Init tiny arrays for vertices and gradients at the vertices\n        self.vv = <double *>malloc(8 * sizeof(double))\n        self.vg = <double *>malloc(8*3 * sizeof(double))\n\n        # Init face layers\n        # self.faceLayer1 = NULL\n        # self.faceLayer2 = NULL\n        self.faceLayer = NULL\n\n        # Init vertices\n        self._vertexCount = 0\n        self._vertexMaxCount = 8\n        self._vertices = <float *>malloc(self._vertexMaxCount*3 * sizeof(float))\n        self._normals = <float *>malloc(self._vertexMaxCount*3 * sizeof(float))\n        self._values = <float *>malloc(self._vertexMaxCount * sizeof(float))\n        # Clear normals and values\n        cdef int i, j\n        if self._values is not NULL and self._normals is not NULL:\n            for i in range(self._vertexMaxCount):\n                self._values[i] = 0.0\n                for j in range(3):\n                    self._normals[i*3+j] = 0.0\n\n        # Init faces\n        self._faceCount = 0\n        self._faceMaxCount = 8\n        self._faces = <int *>malloc(self._faceMaxCount * sizeof(int))\n\n\n    def __dealloc__(self):\n        free(self.vv)\n        free(self.vg)\n        # free(self.faceLayer1)\n        # free(self.faceLayer2)\n        free(self.faceLayer)\n        free(self._vertices)\n        free(self._normals)\n        free(self._values)\n        free(self._faces)\n\n\n    cdef void _increase_size_vertices(self):\n        \"\"\" Increase the size of the vertices array by a factor two.\n        \"\"\"\n        # Allocate new array\n        cdef int newMaxCount = self._vertexMaxCount * 2\n        cdef float *newVertices = <float *>malloc(newMaxCount*3 * sizeof(float))\n        cdef float *newNormals = <float *>malloc(newMaxCount*3 * sizeof(float))\n        cdef float *newValues = <float *>malloc(newMaxCount * sizeof(float))\n        if newVertices is NULL or newNormals is NULL or newValues is NULL:\n            free(newVertices)\n            free(newNormals)\n            free(newValues)\n            raise MemoryError()\n        # Clear\n        cdef int i, j\n        for i in range(self._vertexCount, newMaxCount):\n            newValues[i] = 0.0\n            for j in range(3):\n                newNormals[i*3+j] = 0.0\n        # Copy\n        for i in range(self._vertexCount):\n            newValues[i] = self._values[i]\n            for j in range(3):\n                newVertices[i*3+j] = self._vertices[i*3+j]\n                newNormals[i*3+j] = self._normals[i*3+j]\n        # Apply\n        free(self._vertices); self._vertices = newVertices\n        free(self._normals); self._normals = newNormals\n        free(self._values); self._values = newValues\n        self._vertexMaxCount = newMaxCount\n\n\n    cdef void _increase_size_faces(self):\n        \"\"\" Increase the size of the faces array by a factor two.\n        \"\"\"\n        # Allocate new array\n        cdef int newMaxCount = self._faceMaxCount * 2\n        cdef int *newFaces = <int *>malloc(newMaxCount * sizeof(int))\n        if newFaces is NULL:\n            raise MemoryError()\n        # Copy\n        cdef int i\n        for i in range(self._faceCount):\n            newFaces[i] = self._faces[i]\n        # Apply\n        free(self._faces)\n        self._faces = newFaces\n        self._faceMaxCount = newMaxCount\n\n\n    ## Adding results\n\n    cdef int add_vertex(self, float x, float y, float z):\n        \"\"\" Add a vertex to the result. Return index in vertex array.\n        \"\"\"\n        # Check if array is large enough\n        if self._vertexCount >= self._vertexMaxCount:\n            self._increase_size_vertices()\n        # Add vertex\n        self._vertices[self._vertexCount*3+0] = x\n        self._vertices[self._vertexCount*3+1] = y\n        self._vertices[self._vertexCount*3+2] = z\n        self._vertexCount += 1\n        return self._vertexCount -1\n\n\n    cdef void add_gradient(self, int vertexIndex, float gx, float gy, float gz):\n        \"\"\" Add a gradient value to the vertex corresponding to the given index.\n        \"\"\"\n        self._normals[vertexIndex*3+0] += gx\n        self._normals[vertexIndex*3+1] += gy\n        self._normals[vertexIndex*3+2] += gz\n\n\n    cdef void add_gradient_from_index(self, int vertexIndex, int i, float strength):\n        \"\"\" Add a gradient value to the vertex corresponding to the given index.\n        vertexIndex is the index in the large array of vertices that is returned.\n        i is the index of the array of vertices 0-7 for the current cell.\n        \"\"\"\n        self.add_gradient(vertexIndex, self.vg[i*3+0] * strength, self.vg[i*3+1] * strength, self.vg[i*3+2] * strength)\n\n\n    cdef add_face(self, int index):\n        \"\"\" Add a face to the result. Also updates the value.\n        \"\"\"\n        # Check if array is large enough\n        if self._faceCount >= self._faceMaxCount:\n            self._increase_size_faces()\n        # Add face\n        self._faces[self._faceCount] = index\n        self._faceCount += 1\n        # if (self._faceCount < 18):\n        #     print(str(self._faces[self._faceCount-1]))\n        #     # print(\"f: \" + str(self._faceCount) + \" v: \" + str(self._vertexCount))\n        # Also update value\n        if self.vmax > self._values[index]:\n            self._values[index] = self.vmax\n\n\n    ## Getting results\n\n    def get_vertices(self):\n        \"\"\" Get the final vertex array.\n        \"\"\"\n        vertices = np.empty((self._vertexCount,3), np.float32)\n        cdef float [:, :] vertices_ = vertices\n        cdef int i, j\n        for i in range(self._vertexCount):\n            for j in range(3):\n                vertices_[i, j] = self._vertices[i*3+j]\n        return vertices\n\n    def get_normals(self):\n        \"\"\" Get the final normals array.\n        The normals are normalized to unit length.\n        \"\"\"\n        normals = np.empty((self._vertexCount,3), np.float32)\n        cdef float [:, :] normals_ = normals\n\n        cdef int i, j\n        cdef double length, dtmp\n        for i in range(self._vertexCount):\n            length = 0.0\n            for j in range(3):\n                dtmp = self._normals[i*3+j] # Make it double before taking **2!\n                length +=  dtmp*dtmp\n            if length > 0.0:\n                length = 1.0 / length**0.5\n            for j in range(3):\n                normals_[i,j] = self._normals[i*3+j] * length\n        return normals\n\n    def get_faces(self):\n        faces = np.empty((self._faceCount,), np.int32)\n        cdef int [:] faces_ = faces\n        cdef int i, j\n        for i in range(self._faceCount):\n            faces_[i] = self._faces[i]\n        return faces\n\n    def get_values(self):\n        values = np.empty((self._vertexCount,), np.float32)\n        cdef float [:] values_ = values\n        cdef int i, j\n        for i in range(self._vertexCount):\n            values_[i] = self._values[i]\n        return values\n\n\n    ## Called from marching cube function\n\n    # cdef void new_z_value(self):\n    #     \"\"\" This method should be called each time a new z layer is entered.\n    #     We will swap the layers with face information and empty the second.\n    #     \"\"\"\n    #     # Swap layers\n    #     self.faceLayer1, self.faceLayer2 = self.faceLayer2, self.faceLayer1\n    #     # Empty last\n    #     cdef int i\n    #     for i in range(self.nx*self.ny*4):\n    #         self.faceLayer2[i] = -1\n\n\n    cdef void set_cube(self,    double isovalue, int x, int y, int z, int step,\n                                double v0, double v1, double v2, double v3,\n                                double v4, double v5, double v6, double v7):\n        \"\"\" Set the cube to the new location.\n\n        Set the values of the cube corners. The isovalue is subtracted\n        from them, such that in further calculations the isovalue can be\n        taken as zero.\n\n        This method also calculated the magic 256 word to identify the\n        cases (i.e. cell.index).\n        \"\"\"\n\n        # Set location and step\n        self.x = x\n        self.y = y\n        self.z = z\n        self.step = step\n\n        # Set values\n        self.v0 = v0 - isovalue\n        self.v1 = v1 - isovalue\n        self.v2 = v2 - isovalue\n        self.v3 = v3 - isovalue\n        self.v4 = v4 - isovalue\n        self.v5 = v5 - isovalue\n        self.v6 = v6 - isovalue\n        self.v7 = v7 - isovalue\n\n        # Calculate index\n        cdef int index = 0\n        if self.v0 > 0.0:   index += 1\n        if self.v1 > 0.0:   index += 2\n        if self.v2 > 0.0:   index += 4\n        if self.v3 > 0.0:   index += 8\n        if self.v4 > 0.0:   index += 16\n        if self.v5 > 0.0:   index += 32\n        if self.v6 > 0.0:   index += 64\n        if self.v7 > 0.0:   index += 128\n        self.index = index\n\n        # Reset c12\n        self.v12_calculated = 0\n\n\n    cdef bint check_triangles(self, Lut lut, int lutIndex, int nt):\n        \"\"\" Check triangles.\n\n        The vertices for the triangles are specified in the given\n        Lut at the specified index. There are nt triangles.\n\n        The reason that nt should be given is because it is often known\n        beforehand.\n\n        \"\"\"\n\n        cdef int i, j\n        cdef int vi\n        cdef int result = 0\n        cdef list fl_values = []\n\n        self.prepare_for_adding_triangles()\n\n        for i in range(nt):\n            for j in range(3):\n                # Get two sides for each element in this vertex\n                vi = lut.get2(lutIndex, i*3+j)\n                index = self.get_index_in_facelayer(vi)\n                fl_value = self.faceLayer[index]\n                # print(index, fl_value)\n                if (not fl_value in fl_values) and fl_value >= 0:\n                    # print(\"True\")\n                    result += 1\n                fl_values.append(fl_value)\n        # print(result)\n        return result\n\n\n    cdef bint check_triangles2(self, Lut lut, int lutIndex, int lutIndex2, int nt):\n        \"\"\" Same as check_triangles, except that now the geometry is in a LUT\n        with 3 dimensions, and an extra index is provided.\n\n        \"\"\"\n        cdef int i, j\n        cdef int vi\n        cdef int result = 0\n        cdef list fl_values = []\n\n        self.prepare_for_adding_triangles()\n\n        for i in range(nt):\n            for j in range(3):\n                # Get two sides for each element in this vertex\n                vi = lut.get3(lutIndex, lutIndex2, i*3+j)\n                index = self.get_index_in_facelayer(vi)\n                fl_value = self.faceLayer[index]\n                # print(index, fl_value)\n                if (not fl_value in fl_values) and fl_value >= 0:\n                    # print(\"True\")\n                    result += 1\n                fl_values.append(fl_value)\n        # print(result)\n        return result\n\n\n\n    cdef bint add_triangles(self, Lut lut, int lutIndex, int nt):\n        \"\"\" Add triangles.\n\n        The vertices for the triangles are specified in the given\n        Lut at the specified index. There are nt triangles.\n\n        The reason that nt should be given is because it is often known\n        beforehand.\n\n        \"\"\"\n\n        cdef int i, j\n        cdef int vi\n        cdef bint result = False\n        # cdef list indices = []\n\n        self.prepare_for_adding_triangles()\n\n        for i in range(nt):\n            for j in range(3):\n                # Get two sides for each element in this vertex\n                vi = lut.get2(lutIndex, i*3+j)\n                self._add_face_from_edge_index(vi)\n                # index, fl_value = self._add_face_from_edge_index(vi)\n                # print(index, fl_value)\n                # if (not index in indices) and fl_value >= 0:\n                #     print(index)\n                #     print(indices)\n                #     result = True\n                # indices.append(index)\n        return result\n\n\n    cdef bint add_triangles2(self, Lut lut, int lutIndex, int lutIndex2, int nt):\n        \"\"\" Same as add_triangles, except that now the geometry is in a LUT\n        with 3 dimensions, and an extra index is provided.\n\n        \"\"\"\n        cdef int i, j\n        cdef int vi\n        cdef bint result = False\n        # cdef list indices = []\n\n        self.prepare_for_adding_triangles()\n\n        for i in range(nt):\n            for j in range(3):\n                # Get two sides for each element in this vertex\n                vi = lut.get3(lutIndex, lutIndex2, i*3+j)\n                self._add_face_from_edge_index(vi)\n                # index, fl_value = self._add_face_from_edge_index(vi)\n                # print(index, fl_value)\n                # if (not index in indices) and fl_value >= 0:\n                #     print(index)\n                #     print(indices)\n                #     result = True\n                # indices.append(index)\n        return result\n\n    ## Used internally\n\n    cdef (int, int) _add_face_from_edge_index(self, int vi):\n        \"\"\" Add one face from an edge index. Only adds a face if the\n        vertex already exists. Otherwise also adds a vertex and applies\n        interpolation.\n        \"\"\"\n\n        # typedefs\n        cdef int indexInVertexArray, indexInFaceLayer\n        cdef int dx1, dy1, dz1\n        cdef int dx2, dy2, dz2\n        cdef int index1, index2\n        cdef double tmpf1, tmpf2\n        cdef double fx, fy, fz, ff\n        cdef double stp = <double>self.step\n\n        # Get index in the face layer and corresponding vertex number\n        indexInFaceLayer = self.get_index_in_facelayer(vi)\n        indexInVertexArray = self.faceLayer[indexInFaceLayer]\n        fl_value = self.faceLayer[indexInFaceLayer]\n\n        # If we have the center vertex, we have things pre-calculated,\n        # otherwise we need to interpolate.\n        # In both cases we distinguish between having this vertex already\n        # or not.\n\n        if vi == 12: # center vertex\n            if self.v12_calculated == 0:\n                self.calculate_center_vertex()\n            if indexInVertexArray >= 0:\n                # Vertex already calculated, only need to add face and gradient\n                self.add_face(indexInVertexArray)\n                self.add_gradient(indexInVertexArray, self.v12_xg, self.v12_yg, self.v12_zg)\n            else:\n                # Add precalculated center vertex position (is interpolated)\n                indexInVertexArray = self.add_vertex( self.v12_x, self.v12_y, self.v12_z)\n                # Update face layer\n                self.faceLayer[indexInFaceLayer] = indexInVertexArray\n                # Add face and gradient\n                self.add_face(indexInVertexArray)\n                self.add_gradient(indexInVertexArray, self.v12_xg, self.v12_yg, self.v12_zg)\n\n        else:\n\n            # Get relative edge indices for x, y and z\n            dx1, dx2 = self.luts.EDGESRELX.get2(vi,0), self.luts.EDGESRELX.get2(vi,1)\n            dy1, dy2 = self.luts.EDGESRELY.get2(vi,0), self.luts.EDGESRELY.get2(vi,1)\n            dz1, dz2 = self.luts.EDGESRELZ.get2(vi,0), self.luts.EDGESRELZ.get2(vi,1)\n            # Make two vertex indices\n            index1 = dz1*4 + dy1*2 + dx1\n            index2 = dz2*4 + dy2*2 + dx2\n            # Define strength of both corners\n            tmpf1 = 1.0 / (FLT_EPSILON + dabs(self.vv[index1]))\n            tmpf2 = 1.0 / (FLT_EPSILON + dabs(self.vv[index2]))\n\n            # print('indexInVertexArray', self.x, self.y, self.z, '-', vi, indexInVertexArray, indexInFaceLayer)\n\n            if indexInVertexArray >= 0:\n                # Vertex already calculated, only need to add face and gradient\n                self.add_face(indexInVertexArray)\n                self.add_gradient_from_index(indexInVertexArray, index1, tmpf1)\n                self.add_gradient_from_index(indexInVertexArray, index2, tmpf2)\n\n            else:\n                # Interpolate by applying a kind of center-of-mass method\n                fx, fy, fz, ff = 0.0, 0.0, 0.0, 0.0\n                fx += <double>dx1 * tmpf1;  fy += <double>dy1 * tmpf1;  fz += <double>dz1 * tmpf1;  ff += tmpf1\n                fx += <double>dx2 * tmpf2;  fy += <double>dy2 * tmpf2;  fz += <double>dz2 * tmpf2;  ff += tmpf2\n\n                # Add vertex\n                indexInVertexArray = self.add_vertex(\n                                <double>self.x + stp*fx/ff,\n                                <double>self.y + stp*fy/ff,\n                                <double>self.z + stp*fz/ff )\n                # Update face layer\n                self.faceLayer[indexInFaceLayer] = indexInVertexArray\n                # Add face and gradient\n                self.add_face(indexInVertexArray)\n                self.add_gradient_from_index(indexInVertexArray, index1, tmpf1)\n                self.add_gradient_from_index(indexInVertexArray, index2, tmpf2)\n\n\n#         # Create vertex non-interpolated\n#         self.add_vertex( self.x + 0.5* dx1 + 0.5 * dx2,\n#                         self.y + 0.5* dy1 + 0.5 * dy2,\n#                         self.z + 0.5* dz1 + 0.5 * dz2 )\n\n        return indexInFaceLayer, fl_value\n\n    cdef int get_index_in_facelayer(self, int vi):\n        \"\"\"\n        Get the index of a vertex position, given the edge on which it lies.\n        We keep a list of faces so we can reuse vertices. This improves\n        speed because we need less interpolation, and the result is more\n        compact and can be visualized better because normals can be\n        interpolated.\n\n        For each cell, we store 4 vertex indices; all other edges can be\n        represented as the edge of another cell.  The fourth is the center vertex.\n\n        This method returns -1 if no vertex has been defined yet.\n\n\n              vertices              edges                edge-indices per cell\n        *         7 ________ 6           _____6__             ________\n        *         /|       /|         7/|       /|          /|       /|\n        *       /  |     /  |        /  |     /5 |        /  |     /  |\n        *   4 /_______ /    |      /__4____ /    10     /_______ /    |\n        *    |     |  |5    |     |    11  |     |     |     |  |     |\n        *    |    3|__|_____|2    |     |__|__2__|     |     |__|_____|\n        *    |    /   |    /      8   3/   9    /      2    /   |    /\n        *    |  /     |  /        |  /     |  /1       |  1     |  /\n        *    |/_______|/          |/___0___|/          |/___0___|/\n        *   0          1\n        */\n        \"\"\"\n\n        # Init indices, both are corrected below\n        # cdef int i = self.nx * self.y + self.x  # Index of cube to get vertex at\n        cdef int i = self.ny*self.nx*self.z + self.nx * self.y + self.x  # Index of cube to get vertex at\n        cdef int j = 0 # Vertex number for that cell\n        cdef int vi_ = vi\n\n        # cdef int *faceLayer\n        cdef int k = 0 #Defines whether to go to a higher z or not\n\n        # Select either upper or lower half\n        if vi < 8:\n            #  8 horizontal edges\n            if vi < 4:\n                # faceLayer = self.faceLayer1\n                k = 0\n            else:\n                vi -= 4\n                # faceLayer = self.faceLayer2\n                k = 1\n\n            # Calculate actual index based on edge\n            #if vi == 0: pass  # no step\n            if vi == 1:  # step in x\n                i += self.step\n                j = 1\n            elif vi == 2:  # step in y\n                i += self.nx * self.step\n            elif vi == 3:  # no step\n                j = 1\n\n        elif vi < 12:\n            # 4 vertical edges\n            # faceLayer = self.faceLayer1\n            k = 0\n            j = 2\n\n            #if vi == 8: pass # no step\n            if vi == 9:   # step in x\n                i += self.step\n            elif vi == 10:   # step in x and y\n                i += self.nx * self.step + self.step\n            elif vi == 11:  # step in y\n                i += self.nx * self.step\n\n        else:\n            # center vertex\n            # faceLayer = self.faceLayer1\n            k = 0\n            j = 3\n\n        k = self.nx*self.ny * k\n        i = i+k\n\n        # Store facelayer and return index\n        # self.faceLayer = faceLayer # Dirty way of returning a value\n        return 4*i + j\n\n\n    cdef void prepare_for_adding_triangles(self):\n        \"\"\" Calculates some things to help adding the triangles:\n        array with corner values, max corner value, gradient at each corner.\n        \"\"\"\n\n        cdef int i\n\n        # Copy values in array so we can index them. Note the misalignment\n        # because the numbering does not correspond with bitwise OR of xyz.\n        self.vv[0] = self.v0\n        self.vv[1] = self.v1\n        self.vv[2] = self.v3#\n        self.vv[3] = self.v2#\n        self.vv[4] = self.v4\n        self.vv[5] = self.v5\n        self.vv[6] = self.v7#\n        self.vv[7] = self.v6#\n\n        # Calculate max\n        cdef double vmin, vmax\n        vmin, vmax = 0.0, 0.0\n        for i in range(8):\n            if self.vv[i] > vmax:\n                vmax = self.vv[i]\n            if self.vv[i] < vmin:\n                vmin = self.vv[i]\n        self.vmax = vmax-vmin\n\n        # Calculate gradients\n        # Derivatives, selected to always point in same direction.\n        # Note that many corners have the same components as other points,\n        # by interpolating  and averaging the normals this is solved.\n        # todo: we can potentially reuse these similar to how we store vertex indices in face layers\n        self.vg[0*3+0], self.vg[0*3+1], self.vg[0*3+2] = self.v0-self.v1, self.v0-self.v3, self.v0-self.v4\n        self.vg[1*3+0], self.vg[1*3+1], self.vg[1*3+2] = self.v0-self.v1, self.v1-self.v2, self.v1-self.v5\n        self.vg[2*3+0], self.vg[2*3+1], self.vg[2*3+2] = self.v3-self.v2, self.v1-self.v2, self.v2-self.v6\n        self.vg[3*3+0], self.vg[3*3+1], self.vg[3*3+2] = self.v3-self.v2, self.v0-self.v3, self.v3-self.v7\n        self.vg[4*3+0], self.vg[4*3+1], self.vg[4*3+2] = self.v4-self.v5, self.v4-self.v7, self.v0-self.v4\n        self.vg[5*3+0], self.vg[5*3+1], self.vg[5*3+2] = self.v4-self.v5, self.v5-self.v6, self.v1-self.v5\n        self.vg[6*3+0], self.vg[6*3+1], self.vg[6*3+2] = self.v7-self.v6, self.v5-self.v6, self.v2-self.v6\n        self.vg[7*3+0], self.vg[7*3+1], self.vg[7*3+2] = self.v7-self.v6, self.v4-self.v7, self.v3-self.v7\n\n\n    cdef void calculate_center_vertex(self):\n        \"\"\" Calculate interpolated center vertex and its gradient.\n        \"\"\"\n        cdef double v0, v1, v2, v3, v4, v5, v6, v7\n        cdef double fx, fy, fz, ff\n        fx, fy, fz, ff = 0.0, 0.0, 0.0, 0.0\n\n        # Define \"strength\" of each corner of the cube that we need\n        v0 = 1.0 / (FLT_EPSILON + dabs(self.v0))\n        v1 = 1.0 / (FLT_EPSILON + dabs(self.v1))\n        v2 = 1.0 / (FLT_EPSILON + dabs(self.v2))\n        v3 = 1.0 / (FLT_EPSILON + dabs(self.v3))\n        v4 = 1.0 / (FLT_EPSILON + dabs(self.v4))\n        v5 = 1.0 / (FLT_EPSILON + dabs(self.v5))\n        v6 = 1.0 / (FLT_EPSILON + dabs(self.v6))\n        v7 = 1.0 / (FLT_EPSILON + dabs(self.v7))\n\n        # Apply a kind of center-of-mass method\n        fx += 0.0*v0;  fy += 0.0*v0;  fz += 0.0*v0;  ff += v0\n        fx += 1.0*v1;  fy += 0.0*v1;  fz += 0.0*v1;  ff += v1\n        fx += 1.0*v2;  fy += 1.0*v2;  fz += 0.0*v2;  ff += v2\n        fx += 0.0*v3;  fy += 1.0*v3;  fz += 0.0*v3;  ff += v3\n        fx += 0.0*v4;  fy += 0.0*v4;  fz += 1.0*v4;  ff += v4\n        fx += 1.0*v5;  fy += 0.0*v5;  fz += 1.0*v5;  ff += v5\n        fx += 1.0*v6;  fy += 1.0*v6;  fz += 1.0*v6;  ff += v6\n        fx += 0.0*v7;  fy += 1.0*v7;  fz += 1.0*v7;  ff += v7\n\n        # Store\n        cdef double stp = <double>self.step\n        self.v12_x = self.x + stp * fx / ff\n        self.v12_y = self.y + stp * fy / ff\n        self.v12_z = self.z + stp * fz / ff\n\n        # Also pre-calculate gradient of center\n        # note that prepare_for_adding_triangles() must have been called for\n        # the gradient data to exist.\n        self.v12_xg = ( v0*self.vg[0*3+0] + v1*self.vg[1*3+0] + v2*self.vg[2*3+0] + v3*self.vg[3*3+0] +\n                        v4*self.vg[4*3+0] + v5*self.vg[5*3+0] + v6*self.vg[6*3+0] + v7*self.vg[7*3+0] )\n        self.v12_yg = ( v0*self.vg[0*3+1] + v1*self.vg[1*3+1] + v2*self.vg[2*3+1] + v3*self.vg[3*3+1] +\n                        v4*self.vg[4*3+1] + v5*self.vg[5*3+1] + v6*self.vg[6*3+1] + v7*self.vg[7*3+1] )\n        self.v12_xg = ( v0*self.vg[0*3+2] + v1*self.vg[1*3+2] + v2*self.vg[2*3+2] + v3*self.vg[3*3+2] +\n                        v4*self.vg[4*3+2] + v5*self.vg[5*3+2] + v6*self.vg[6*3+2] + v7*self.vg[7*3+2] )\n\n        # Set flag that this stuff is calculated\n        self.v12_calculated = 1\n\n\n\ncdef class Lut:\n    \"\"\" Representation of a lookup table.\n    The tables are initially defined as numpy arrays. On initialization,\n    this class converts them to a C array for fast access.\n    This class defines functions to look up values using 1, 2 or 3 indices.\n    \"\"\"\n\n    cdef signed char* VALUES\n    cdef int L0 # Length\n    cdef int L1 # size of tuple\n    cdef int L2 # size of tuple in tuple (if any)\n\n    def __init__(self, array):\n\n        # Get the shape of the LUT\n        self.L1 = 1\n        self.L2 = 1\n        #\n        self.L0 = array.shape[0]\n        if array.ndim > 1:\n            self.L1 = array.shape[1]\n        if array.ndim > 2:\n            self.L2 = array.shape[2]\n\n        # Copy the contents\n        array = array.ravel()\n        cdef int n, N\n        N = self.L0 * self.L1 * self.L2\n        self.VALUES = <signed char *> malloc(N * sizeof(signed char))\n        if self.VALUES is NULL:\n            raise MemoryError()\n        for n in range(N):\n            self.VALUES[n] = array[n]\n\n    def __cinit__(self):\n        self.VALUES = NULL\n\n    def __dealloc__(self):\n        if self.VALUES is not NULL:\n            free(self.VALUES)\n\n    cdef int get1(self, int i0):\n        return self.VALUES[i0]\n\n    cdef int get2(self, int i0, int i1):\n        return self.VALUES[i0*self.L1 + i1]\n\n    cdef int get3(self, int i0, int i1, int i2):\n        return self.VALUES[i0*self.L1*self.L2 + i1*self.L2 + i2]\n\n\n\ncdef class LutProvider:\n    \"\"\" Class that provides a common interface to the many lookup tables\n    used by the algorithm.\n    All the lists of lut names are autogenerated to prevent human error.\n    \"\"\"\n\n    cdef Lut EDGESRELX # Edges relative X\n    cdef Lut EDGESRELY\n    cdef Lut EDGESRELZ\n\n    cdef Lut CASESCLASSIC\n    cdef Lut CASES\n\n    cdef Lut TILING1\n    cdef Lut TILING2\n    cdef Lut TILING3_1\n    cdef Lut TILING3_2\n    cdef Lut TILING4_1\n    cdef Lut TILING4_2\n    cdef Lut TILING5\n    cdef Lut TILING6_1_1\n    cdef Lut TILING6_1_2\n    cdef Lut TILING6_2\n    cdef Lut TILING7_1\n    cdef Lut TILING7_2\n    cdef Lut TILING7_3\n    cdef Lut TILING7_4_1\n    cdef Lut TILING7_4_2\n    cdef Lut TILING8\n    cdef Lut TILING9\n    cdef Lut TILING10_1_1\n    cdef Lut TILING10_1_1_\n    cdef Lut TILING10_1_2\n    cdef Lut TILING10_2\n    cdef Lut TILING10_2_\n    cdef Lut TILING11\n    cdef Lut TILING12_1_1\n    cdef Lut TILING12_1_1_\n    cdef Lut TILING12_1_2\n    cdef Lut TILING12_2\n    cdef Lut TILING12_2_\n    cdef Lut TILING13_1\n    cdef Lut TILING13_1_\n    cdef Lut TILING13_2\n    cdef Lut TILING13_2_\n    cdef Lut TILING13_3\n    cdef Lut TILING13_3_\n    cdef Lut TILING13_4\n    cdef Lut TILING13_5_1\n    cdef Lut TILING13_5_2\n    cdef Lut TILING14\n\n    cdef Lut TEST3\n    cdef Lut TEST4\n    cdef Lut TEST6\n    cdef Lut TEST7\n    cdef Lut TEST10\n    cdef Lut TEST12\n    cdef Lut TEST13\n\n    cdef Lut SUBCONFIG13\n\n\n    def __init__(self, EDGESRELX, EDGESRELY, EDGESRELZ, CASESCLASSIC, CASES,\n\n            TILING1, TILING2, TILING3_1, TILING3_2, TILING4_1, TILING4_2,\n            TILING5, TILING6_1_1, TILING6_1_2, TILING6_2, TILING7_1, TILING7_2,\n            TILING7_3, TILING7_4_1, TILING7_4_2, TILING8, TILING9,\n            TILING10_1_1, TILING10_1_1_, TILING10_1_2, TILING10_2, TILING10_2_,\n            TILING11, TILING12_1_1, TILING12_1_1_, TILING12_1_2, TILING12_2,\n            TILING12_2_, TILING13_1, TILING13_1_, TILING13_2, TILING13_2_,\n            TILING13_3, TILING13_3_, TILING13_4, TILING13_5_1, TILING13_5_2,\n            TILING14,\n\n            TEST3, TEST4, TEST6, TEST7, TEST10, TEST12, TEST13,\n            SUBCONFIG13,\n            ):\n\n        self.EDGESRELX = Lut(EDGESRELX)\n        self.EDGESRELY = Lut(EDGESRELY)\n        self.EDGESRELZ = Lut(EDGESRELZ)\n\n        self.CASESCLASSIC = Lut(CASESCLASSIC)\n        self.CASES = Lut(CASES)\n\n        self.TILING1 = Lut(TILING1)\n        self.TILING2 = Lut(TILING2)\n        self.TILING3_1 = Lut(TILING3_1)\n        self.TILING3_2 = Lut(TILING3_2)\n        self.TILING4_1 = Lut(TILING4_1)\n        self.TILING4_2 = Lut(TILING4_2)\n        self.TILING5 = Lut(TILING5)\n        self.TILING6_1_1 = Lut(TILING6_1_1)\n        self.TILING6_1_2 = Lut(TILING6_1_2)\n        self.TILING6_2 = Lut(TILING6_2)\n        self.TILING7_1 = Lut(TILING7_1)\n        self.TILING7_2 = Lut(TILING7_2)\n        self.TILING7_3 = Lut(TILING7_3)\n        self.TILING7_4_1 = Lut(TILING7_4_1)\n        self.TILING7_4_2 = Lut(TILING7_4_2)\n        self.TILING8 = Lut(TILING8)\n        self.TILING9 = Lut(TILING9)\n        self.TILING10_1_1 = Lut(TILING10_1_1)\n        self.TILING10_1_1_ = Lut(TILING10_1_1_)\n        self.TILING10_1_2 = Lut(TILING10_1_2)\n        self.TILING10_2 = Lut(TILING10_2)\n        self.TILING10_2_ = Lut(TILING10_2_)\n        self.TILING11 = Lut(TILING11)\n        self.TILING12_1_1 = Lut(TILING12_1_1)\n        self.TILING12_1_1_ = Lut(TILING12_1_1_)\n        self.TILING12_1_2 = Lut(TILING12_1_2)\n        self.TILING12_2 = Lut(TILING12_2)\n        self.TILING12_2_ = Lut(TILING12_2_)\n        self.TILING13_1 = Lut(TILING13_1)\n        self.TILING13_1_ = Lut(TILING13_1_)\n        self.TILING13_2 = Lut(TILING13_2)\n        self.TILING13_2_ = Lut(TILING13_2_)\n        self.TILING13_3 = Lut(TILING13_3)\n        self.TILING13_3_ = Lut(TILING13_3_)\n        self.TILING13_4 = Lut(TILING13_4)\n        self.TILING13_5_1 = Lut(TILING13_5_1)\n        self.TILING13_5_2 = Lut(TILING13_5_2)\n        self.TILING14 = Lut(TILING14)\n\n        self.TEST3 = Lut(TEST3)\n        self.TEST4 = Lut(TEST4)\n        self.TEST6 = Lut(TEST6)\n        self.TEST7 = Lut(TEST7)\n        self.TEST10 = Lut(TEST10)\n        self.TEST12 = Lut(TEST12)\n        self.TEST13 = Lut(TEST13)\n\n        self.SUBCONFIG13 = Lut(SUBCONFIG13)\n\n# def marching_cubes(float[:, :, :] im not None, double isovalue,\n#                    LutProvider luts, int st=1, int classic=0,\n#                    np.ndarray[np.npy_bool, ndim=3, cast=True] mask=None):\n#     \"\"\" marching_cubes(im, double isovalue, LutProvider luts, int st=1, int classic=0)\n#     Main entry to apply marching cubes.\n\n#     Masked version of marching cubes. This function will check a\n#     masking array (same size as im) to decide if the algorithm must be\n#     computed for a given voxel. This adds a small overhead that\n#     rapidly gets compensated by the fewer computed cubes\n#     Returns (vertices, faces, normals, values)\n#     \"\"\"\n#     # Get dimemsnions\n#     cdef int Nx, Ny, Nz\n#     Nx, Ny, Nz = im.shape[2], im.shape[1], im.shape[0]\n\n#     # Create cell to use throughout\n#     cdef Cell cell = Cell(luts, Nx, Ny, Nz)\n\n#     # Typedef variables\n#     cdef int x, y, z, x_st, y_st, z_st\n#     cdef int nt\n#     cdef int case, config, subconfig\n#     cdef bint no_mask = mask is None\n#     # Unfortunately specifying a step in range() significantly degrades\n#     # performance. Therefore we use a while loop.\n#     # we have:  max_x = Nx_bound + st + st - 1\n#     #       ->  Nx_bound = max_allowable_x + 1 - 2 * st\n#     #       ->  Nx_bound = Nx - 2 * st\n#     assert st > 0\n#     cdef int Nx_bound, Ny_bound, Nz_bound\n#     Nx_bound, Ny_bound, Nz_bound = Nx - 2 * st, Ny - 2 * st, Nz - 2 * st  # precalculated index range\n\n#     z = -st\n#     while z < Nz_bound:\n#         z += st\n#         z_st = z + st\n\n#         cell.new_z_value()  # Indicate that we enter a new layer\n#         y = -st\n#         while y < Ny_bound:\n#             y += st\n#             y_st = y + st\n\n#             x = -st\n#             while x < Nx_bound:\n#                 x += st\n#                 x_st = x + st\n#                 if no_mask or mask[z_st, y_st, x_st]:\n#                     # Initialize cell\n#                     cell.set_cube(isovalue, x, y, z, st,\n#                         im[z   ,y, x], im[z   ,y, x_st], im[z   ,y_st, x_st], im[z   ,y_st, x],\n#                         im[z_st,y, x], im[z_st,y, x_st], im[z_st,y_st, x_st], im[z_st,y_st, x] )\n\n#                     # Do classic!\n#                     if classic:\n#                         # Determine number of vertices\n#                         nt = 0\n#                         while luts.CASESCLASSIC.get2(cell.index, 3*nt) != -1:\n#                             nt += 1\n#                         # Add triangles\n#                         if nt > 0:\n#                             cell.add_triangles(luts.CASESCLASSIC, cell.index, nt)\n#                     else:\n#                         # Get case, if non-nul, enter the big switch\n#                         case = luts.CASES.get2(cell.index, 0)\n#                         if case > 0:\n#                             config = luts.CASES.get2(cell.index, 1)\n#                             the_big_switch(luts, cell, case, config)\n\n#     # Done\n#     return cell.get_vertices(), cell.get_faces(), cell.get_normals(), cell.get_values()\n\n\n\ndef marching_cubes_udf(float[:, :, :] im not None, float[:, :, :, :] grads not None,\n                   LutProvider luts, int st=1, int classic=0,\n                   np.ndarray[np.npy_bool, ndim=3, cast=True] mask=None):\n    \"\"\" marching_cubes(im, double isovalue, LutProvider luts, int st=1, int classic=0)\n    Main entry to apply marching cubes.\n\n    Masked version of marching cubes. This function will check a\n    masking array (same size as im) to decide if the algorithm must be\n    computed for a given voxel. This adds a small overhead that\n    rapidly gets compensated by the fewer computed cubes\n    Returns (vertices, faces, normals, values)\n    \"\"\"\n    # Get dimemsnions\n    cdef int Nx, Ny, Nz\n    Nx, Ny, Nz = im.shape[2], im.shape[1], im.shape[0]\n    # Compute voxel size\n    cdef voxel_size = 2.0 / (Nx - 1)\n\n    # Create cell to use throughout\n    cdef Cell cell = Cell(luts, Nx, Ny, Nz)\n\n    # Create a 3D matrix to store signed im values\n    cdef float[:,:,:] signed_im = np.zeros((Nz, Ny, Nx), dtype=np.float32)\n    cdef bint[:,:,:] signed_im_mask = np.zeros((Nz, Ny, Nx), dtype=np.int32)\n\n    # Typedef variables\n    cdef int x, y, z, x_st, y_st, z_st, xi, yi, zi, x_i, y_i, z_i\n    cdef int dir_x, dir_y, dir_z, cur_x_i, cur_y_i, cur_z_i\n    cdef int nt\n    cdef int case, config, subconfig\n    cdef bint no_mask = mask is None\n    cdef double v0, v1, v2, v3, v4, v5, v6, v7\n    # Unfortunately specifying a step in range() significantly degrades\n    # performance. Therefore we use a while loop.\n    # we have:  max_x = Nx_bound + st + st - 1\n    #       ->  Nx_bound = max_allowable_x + 1 - 2 * st\n    #       ->  Nx_bound = Nx - 2 * st\n    assert st > 0\n    cdef int Nx_bound, Ny_bound, Nz_bound\n    Nx_bound, Ny_bound, Nz_bound = Nx - 2 * st, Ny - 2 * st, Nz - 2 * st  # precalculated index range\n    cdef float[:] base_vec = np.empty((3), dtype=np.float32)\n\n    cdef float avg_cube_val_thresh = 1.05 * voxel_size\n    cdef float max_cube_val_thresh = 1.74 * voxel_size\n\n    # BFS data structures\n    cdef bint[:,:,:] visited = np.zeros((Nz, Ny, Nx), dtype=np.int32)\n\n    # cdef list queue = []\n    cdef deque[(int,int,int)] queue\n    cdef deque[(int,int,int)] unsure_cases_queue\n    cdef deque[(int,int,int)] non_trivial_mc_cases_queue\n    cdef (int, int, int) current_tuple\n\n    cdef array.array sign_vs = array.array('f', [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0])\n    cdef array.array visited_vs = array.array('i', [0, 0, 0, 0, 0, 0, 0, 0])\n    cdef int cube_sign\n    \n    cdef int total_cubes = 0\n    cdef int connected_components = 0\n\n    cdef array.array vertex_index_array_z\n    cdef array.array vertex_index_array_y\n    cdef array.array vertex_index_array_x\n\n    cdef array.array directions_z = array.array('i', [st, -st, 0, 0, 0, 0])\n    cdef array.array directions_y = array.array('i', [0, 0, st, -st, 0, 0])\n    cdef array.array directions_x = array.array('i', [0, 0, 0, 0, st, -st])\n\n    cdef int max_distance = 1\n    cdef int max_distance_temp\n\n    cdef float unsure_cases_thresh = 0.707\n    cdef bint change_cube\n\n    cdef int i, v_index, dir_index\n\n    cdef bint unsure_cases_visit_neighbours\n\n    # Raster scan of the whole 3D grid\n    zi = -st\n    while zi < Nz_bound:\n        zi += st\n\n        yi = -st\n        while yi < Ny_bound:\n            yi += st\n\n            xi = -st\n            while xi < Nx_bound:\n                xi += st\n\n                z, y, x = zi, yi, xi\n                \n                z_st = z+st\n                y_st = y+st\n                x_st = x+st\n\n                if visited[z,y,x] == False and (no_mask or mask[z_st, y_st, x_st]):\n                    \n                    if (avg_cube( im[z   ,y, x], im[z   ,y, x_st], im[z   ,y_st, x_st], im[z   ,y_st, x],\n                                    im[z_st,y, x], im[z_st,y, x_st], im[z_st,y_st, x_st], im[z_st,y_st, x]) < avg_cube_val_thresh and \n                        max_cube( im[z   ,y, x], im[z   ,y, x_st], im[z   ,y_st, x_st], im[z   ,y_st, x],\n                                    im[z_st,y, x], im[z_st,y, x_st], im[z_st,y_st, x_st], im[z_st,y_st, x]) <= max_cube_val_thresh):\n                        \n                        vertex_index_array_z = array.array('i', [z, z,    z,    z,    z_st, z_st, z_st, z_st])\n                        vertex_index_array_y = array.array('i', [y, y,    y_st, y_st, y,    y,    y_st, y_st])\n                        vertex_index_array_x = array.array('i', [x, x_st, x_st, x,    x,    x_st, x_st, x])\n\n                        # The following block follows this pseudocode and lets \n                        # the nearby vertices vote for the sign of each of the \n                        # vertices of current cube\n\n                        #for each non-computed non-zero vertex v\n                            #for each of the 6 directions\n                                #for each vertex v_i along that direction, up to max-distance vertices\n                                    #if v_i hasn't been computed\n                                        #continue\n                                    #if v_i is 0 \n                                        #if max-distance is not reached\n                                            #continue\n                                        #else\n                                            #while v_i along that direction is not 0\n                                            #compute edge vote\n                                    #else\n                                        #compute edge vote\n\n                        v_index = -1\n                        change_cube = False\n                        while v_index < 7: #from 0 to 7, included\n                            v_index += 1\n                            \n                            visited_vs[v_index] = 0\n\n                            z_i = vertex_index_array_z[v_index]\n                            y_i = vertex_index_array_y[v_index]\n                            x_i = vertex_index_array_x[v_index]\n\n                            sign_vs[v_index] = 0.0\n                            \n                            #If the vertex value has been previously computed or is zero, skip it\n                            if signed_im_mask[z_i,y_i,x_i] == True:\n                                visited_vs[v_index] = 1\n                                sign_vs[v_index] = signed_im[z_i,y_i,x_i]\n                                continue\n\n                            if im[z_i,y_i,x_i] == 0.0:\n                                visited_vs[v_index] = 1\n                                continue\n                            \n                            dir_index = -1\n                            while dir_index < 5: #from 0 to 5, included\n                                dir_index += 1\n\n                                dir_z = directions_z[dir_index]\n                                dir_y = directions_y[dir_index]\n                                dir_x = directions_x[dir_index]\n\n                                i = 0\n                                max_distance_temp = max_distance\n                                while i < max_distance_temp: #from 1 to max_distance, included\n                                    i += 1\n\n                                    cur_z_i = z_i + i*dir_z\n                                    cur_y_i = y_i + i*dir_y\n                                    cur_x_i = x_i + i*dir_x\n\n                                    #If out of bounds, search on another direction\n                                    if (cur_z_i > Nz_bound or cur_z_i < 0 or\n                                        cur_y_i > Ny_bound or cur_y_i < 0 or\n                                        cur_x_i > Nx_bound or cur_x_i < 0):\n                                        break\n                                    \n                                    # If the vertex value is zero, continue to check what's beyond\n                                    if im[cur_z_i, cur_y_i, cur_x_i] == 0.0:\n                                        if i < max_distance_temp:\n                                            continue\n                                        else:\n                                            max_distance_temp = max_distance_temp + 1 #Check one vertex further away\n                                            continue\n                                    \n                                    # 1.3: If not computed during previous cubes AND not already computed during this cube, skip it\n                                    if signed_im[cur_z_i, cur_y_i, cur_x_i] == 0.0:\n                                        continue\n\n                                    # Normal case\n                                    visited_vs[v_index] += 1\n                                    sign_vs[v_index] += signed_im[cur_z_i, cur_y_i, cur_x_i] * compute_edge_vote(grads[z_i,y_i,x_i], grads[cur_z_i, cur_y_i, cur_x_i], dir_z, dir_y, dir_x)\n                                    \n                            # Set the vertex. This value is used to compute adjacent vertices, but is not considered as precomputed, so it will be computed again\n                            signed_im[z_i, y_i, x_i] = my_sign(sign_vs[v_index])\n\n\n\n\n                        # Compute and use anchor gradient only when needed (when some vertices have no votes)\n                        if not (visited_vs[0] >= 1 and visited_vs[1] >= 1 and visited_vs[2] >= 1 and visited_vs[3] >= 1 and visited_vs[4] >= 1 and visited_vs[5] >= 1 and visited_vs[6] >= 1 and visited_vs[7] >= 1):\n                            anchor_sign = 1.\n                            if signed_im_mask[z,y,x] and not non_zero_norm(grads[z,y,x]) == 0: #1\n                                anchor_sign = my_sign(signed_im[z,y,x])\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x][0], grads[z,y,x][1], grads[z,y,x][2]\n                            elif signed_im_mask[z,y,x_st] and not non_zero_norm(grads[z,y,x_st]) == 0: #2\n                                anchor_sign = my_sign(signed_im[z,y,x_st])\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x_st][0], grads[z,y,x_st][1], grads[z,y,x_st][2]\n                            elif signed_im_mask[z,y_st,x] and not non_zero_norm(grads[z,y_st,x]) == 0: #4\n                                anchor_sign = my_sign(signed_im[z,y_st,x])\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x][0], grads[z,y_st,x][1], grads[z,y_st,x][2]\n                            elif signed_im_mask[z,y_st,x_st] and not non_zero_norm(grads[z,y_st,x_st]) == 0: #3\n                                anchor_sign = my_sign(signed_im[z,y_st,x_st])\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x_st][0], grads[z,y_st,x_st][1], grads[z,y_st,x_st][2]\n                            elif signed_im_mask[z_st,y,x] and not non_zero_norm(grads[z_st,y,x]) == 0: #5\n                                anchor_sign = my_sign(signed_im[z_st,y,x])\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x][0], grads[z_st,y,x][1], grads[z_st,y,x][2]\n                            elif signed_im_mask[z_st,y,x_st] and not non_zero_norm(grads[z_st,y,x_st]) == 0: #6\n                                anchor_sign = my_sign(signed_im[z_st,y,x_st])\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x_st][0], grads[z_st,y,x_st][1], grads[z_st,y,x_st][2]\n                            elif signed_im_mask[z_st,y_st,x] and not non_zero_norm(grads[z_st,y_st,x]) == 0: #8\n                                anchor_sign = my_sign(signed_im[z_st,y_st,x])\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x][0], grads[z_st,y_st,x][1], grads[z_st,y_st,x][2]\n                            elif signed_im_mask[z_st,y_st,x_st] and not non_zero_norm(grads[z_st,y_st,x_st]) == 0: #7\n                                anchor_sign = my_sign(signed_im[z_st,y_st,x_st])\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x_st][0], grads[z_st,y_st,x_st][1], grads[z_st,y_st,x_st][2]\n                        \n                            elif not non_zero_norm(grads[z,y,x]) == 0: #1\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x][0], grads[z,y,x][1], grads[z,y,x][2]\n                            elif not non_zero_norm(grads[z,y,x_st]) == 0: #2\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x_st][0], grads[z,y,x_st][1], grads[z,y,x_st][2]\n                            elif not non_zero_norm(grads[z,y_st,x]) == 0: #4\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x][0], grads[z,y_st,x][1], grads[z,y_st,x][2]\n                            elif not non_zero_norm(grads[z,y_st,x_st]) == 0: #3\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x_st][0], grads[z,y_st,x_st][1], grads[z,y_st,x_st][2]\n                            elif not non_zero_norm(grads[z_st,y,x]) == 0: #5\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x][0], grads[z_st,y,x][1], grads[z_st,y,x][2]\n                            elif not non_zero_norm(grads[z_st,y,x_st]) == 0: #6\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x_st][0], grads[z_st,y,x_st][1], grads[z_st,y,x_st][2]\n                            elif not non_zero_norm(grads[z_st,y_st,x]) == 0: #8\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x][0], grads[z_st,y_st,x][1], grads[z_st,y_st,x][2]\n                            elif not non_zero_norm(grads[z_st,y_st,x_st]) == 0: #7\n                                base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x_st][0], grads[z_st,y_st,x_st][1], grads[z_st,y_st,x_st][2]\n                            else:\n                                print('all 0 vec...')\n\n                            base_vec[0], base_vec[1], base_vec[2] = anchor_sign * base_vec[0], anchor_sign * base_vec[1], anchor_sign * base_vec[2]\n\n                            if visited_vs[0] == 0:\n                                signed_im[z,y,x] = my_sign(dot3(base_vec, grads[z   ,y, x]))\n                            if visited_vs[1] == 0:\n                                signed_im[z,y,x_st] = my_sign(dot3(base_vec, grads[z   ,y, x_st]))\n                            if visited_vs[2] == 0:\n                                signed_im[z,y_st,x_st] = my_sign(dot3(base_vec, grads[z   ,y_st, x_st]))\n                            if visited_vs[3] == 0:\n                                signed_im[z,y_st,x] = my_sign(dot3(base_vec, grads[z   ,y_st, x]))\n                            if visited_vs[4] == 0:\n                                signed_im[z_st,y,x] = my_sign(dot3(base_vec, grads[z_st,y, x]))\n                            if visited_vs[5] == 0:\n                                signed_im[z_st,y,x_st] = my_sign(dot3(base_vec, grads[z_st,y, x_st]))\n                            if visited_vs[6] == 0:\n                                signed_im[z_st,y_st,x_st] = my_sign(dot3(base_vec, grads[z_st,y_st, x_st]))\n                            if visited_vs[7] == 0:\n                                signed_im[z_st,y_st,x] = my_sign(dot3(base_vec, grads[z_st,y_st, x]))\n                            \n                        \n                        v0 = signed_im[z,y,x] * im[z   ,y, x]\n                        v1 = signed_im[z,y,x_st] * im[z   ,y, x_st]\n                        v2 = signed_im[z,y_st,x_st] * im[z   ,y_st, x_st]\n                        v3 = signed_im[z,y_st,x] * im[z   ,y_st, x]\n                        v4 = signed_im[z_st,y,x] * im[z_st,y, x]\n                        v5 = signed_im[z_st,y,x_st] * im[z_st,y, x_st]\n                        v6 = signed_im[z_st,y_st,x_st] * im[z_st,y_st, x_st]\n                        v7 = signed_im[z_st,y_st,x] * im[z_st,y_st, x]\n\n                        cell.set_cube(0.0, x, y, z, st, v0, v1, v2, v3, v4, v5, v6, v7)\n\n                        signed_im_mask[z,y,x] = True\n                        signed_im_mask[z,y,x_st] = True\n                        signed_im_mask[z,y_st,x_st] = True\n                        signed_im_mask[z,y_st,x] = True\n                        signed_im_mask[z_st,y,x] = True\n                        signed_im_mask[z_st,y,x_st] = True\n                        signed_im_mask[z_st,y_st,x_st] = True\n                        signed_im_mask[z_st,y_st,x] = True\n\n\n                        # Get case, if non-nul, enter the big switch\n                        case = luts.CASES.get2(cell.index, 0)\n                        if case > 0:\n                            \n                            config = luts.CASES.get2(cell.index, 1)\n                            visited[z,y,x] = True\n\n                            the_big_switch(luts, cell, case, config)\n\n                            if x_st < Nx_bound:\n                                queue.push_back((z,y,x_st))\n                            if y_st < Ny_bound:\n                                queue.push_back((z,y_st,x))\n                            if x-st >= 0:\n                                queue.push_back((z,y,x-st))\n                            if y-st >= 0:\n                                queue.push_back((z,y-st,x))\n                            if z-st >= 0:\n                                queue.push_back((z-st,y,x))\n                            if z_st < Nz_bound:\n                                queue.push_back((z_st,y,x))\n\n\n                        else:\n                            visited[z,y,x] = True\n                            continue\n                    else:\n                        continue\n                else:\n                    continue\n\n                \n                # If reaching here, it means that a cube has been visited and a face has been produced.\n                # We now use this cube as the starting point and start the breadth-first exploration.\n                \n                unsure_cases_visit_neighbours = True\n                while queue.empty() == False or unsure_cases_queue.empty() == False or non_trivial_mc_cases_queue.empty() == False:\n                    \n                    if queue.empty():\n                        if unsure_cases_queue.empty():\n                            current_tuple = non_trivial_mc_cases_queue.front()\n                            non_trivial_mc_cases_queue.pop_front()\n                        else:\n                            current_tuple = unsure_cases_queue.front()\n                            \n                            # If a cube is taken from the queue with low threshold cases, compute first its neighbors then the cube itself\n                            # When visiting neighbours we set unsure_cases_visit_neighbours to False, so that such neighbours are treated\n                            # differently: no faces is computed from them, and they do not take part to the breadth-first exploration. \n                            # (Note: they could still be part of the search and thus produce faces if they are visited again during the normal exploration)\n                            # After visiting such cubes, we re-visit the unsure case that requested them to increase its reliability.\n                            if unsure_cases_visit_neighbours:\n\n                                z, y, x = current_tuple[0], current_tuple[1], current_tuple[2]\n\n                                if visited[z,y,x] == True:\n                                    unsure_cases_queue.pop_front()\n                                    continue\n                                \n                                z_st = z+st\n                                y_st = y+st\n                                x_st = x+st\n                                \n                                if x_st < Nx_bound:\n                                    queue.push_back((z,y,x_st))\n                                if y_st < Ny_bound:\n                                    queue.push_back((z,y_st,x))\n                                if x-st >= 0:\n                                    queue.push_back((z,y,x-st))\n                                if y-st >= 0:\n                                    queue.push_back((z,y-st,x))\n                                if z-st >= 0:\n                                    queue.push_back((z-st,y,x))\n                                if z_st < Nz_bound:\n                                    queue.push_back((z_st,y,x))\n\n                                unsure_cases_visit_neighbours = False\n                                continue\n                            \n                            else:\n                                unsure_cases_queue.pop_front()\n                                unsure_cases_visit_neighbours = True\n\n                    else:\n                        current_tuple = queue.front()\n                        queue.pop_front()\n\n\n                    z, y, x = current_tuple[0], current_tuple[1], current_tuple[2]\n                    \n                    z_st = z+st\n                    y_st = y+st\n                    x_st = x+st\n\n                    if visited[z,y,x] == False and (no_mask or mask[z_st, y_st, x_st]):\n\n                        if (avg_cube( im[z   ,y, x], im[z   ,y, x_st], im[z   ,y_st, x_st], im[z   ,y_st, x],\n                                        im[z_st,y, x], im[z_st,y, x_st], im[z_st,y_st, x_st], im[z_st,y_st, x]) < avg_cube_val_thresh and \n                            max_cube( im[z   ,y, x], im[z   ,y, x_st], im[z   ,y_st, x_st], im[z   ,y_st, x],\n                                        im[z_st,y, x], im[z_st,y, x_st], im[z_st,y_st, x_st], im[z_st,y_st, x]) <= max_cube_val_thresh):\n                            \n                            vertex_index_array_z = array.array('i', [z, z,    z,    z,    z_st, z_st, z_st, z_st])\n                            vertex_index_array_y = array.array('i', [y, y,    y_st, y_st, y,    y,    y_st, y_st])\n                            vertex_index_array_x = array.array('i', [x, x_st, x_st, x,    x,    x_st, x_st, x])\n\n\n                            # The following block follows this pseudocode and lets \n                            # the nearby vertices vote for the sign of each of the \n                            # vertices of current cube\n\n                            #for each non-computed non-zero vertex v\n                                #for each of the 6 directions\n                                    #for each vertex v_i along that direction, up to max-distance vertices\n                                        #if v_i hasn't been computed\n                                            #continue\n                                        #if v_i is 0 \n                                            #if max-distance is not reached\n                                                #continue\n                                            #else\n                                                #while v_i along that direction is not 0\n                                                #compute edge vote\n                                        #else\n                                            #compute edge vote\n\n                            v_index = -1\n                            change_cube = False\n                            while v_index < 7: #from 0 to 7, included\n                                v_index += 1\n                                \n                                visited_vs[v_index] = 0\n\n                                z_i = vertex_index_array_z[v_index]\n                                y_i = vertex_index_array_y[v_index]\n                                x_i = vertex_index_array_x[v_index]\n\n                                sign_vs[v_index] = 0.0\n                                \n                                #If the vertex value has been previously computed or is zero, skip it\n                                if signed_im_mask[z_i,y_i,x_i] == True:\n                                    visited_vs[v_index] = 1\n                                    sign_vs[v_index] = signed_im[z_i,y_i,x_i]\n                                    continue\n\n                                if im[z_i,y_i,x_i] == 0.0:\n                                    visited_vs[v_index] = 1\n                                    continue\n                                \n                                dir_index = -1\n                                while dir_index < 5: #from 0 to 5, included\n                                    dir_index += 1\n\n                                    dir_z = directions_z[dir_index]\n                                    dir_y = directions_y[dir_index]\n                                    dir_x = directions_x[dir_index]\n\n                                    i = 0\n                                    max_distance_temp = max_distance\n                                    while i < max_distance_temp: #from 1 to max_distance, included\n                                        i += 1\n\n                                        cur_z_i = z_i + i*dir_z\n                                        cur_y_i = y_i + i*dir_y\n                                        cur_x_i = x_i + i*dir_x\n\n                                        #If out of bounds, search on another direction\n                                        if (cur_z_i > Nz_bound or cur_z_i < 0 or\n                                            cur_y_i > Ny_bound or cur_y_i < 0 or\n                                            cur_x_i > Nx_bound or cur_x_i < 0):\n                                            break\n                                        \n                                        # If the vertex value is zero, continue to check what's beyond\n                                        if im[cur_z_i, cur_y_i, cur_x_i] == 0.0:\n                                            if i < max_distance_temp:\n                                                continue\n                                            else:\n                                                max_distance_temp = max_distance_temp + 1 #Check one vertex further away\n                                                continue\n                                        \n                                        # 1.3: If not computed during previous cubes AND not already computed during this cube, skip it\n                                        if signed_im[cur_z_i, cur_y_i, cur_x_i] == 0.0:\n                                            continue\n\n                                        # Normal case\n                                        visited_vs[v_index] += 1\n                                        sign_vs[v_index] += signed_im[cur_z_i, cur_y_i, cur_x_i] * compute_edge_vote(grads[z_i,y_i,x_i], grads[cur_z_i, cur_y_i, cur_x_i], dir_z, dir_y, dir_x)\n                                        \n                                # If the sign of one vertex is not sure enough, put the current cube into a lower priority queue to be computed later.\n                                if visited_vs[v_index] >= 1 and abs(sign_vs[v_index]) / visited_vs[v_index] < unsure_cases_thresh and (queue.empty() == False):\n                                    if unsure_cases_visit_neighbours == True:\n                                        unsure_cases_queue.push_back((z,y,x))\n                                    change_cube = True\n                                    break\n                                \n                                # Set the vertex. This value is used to compute adjacent vertices, but is not considered as precomputed, so it will be computed again\n                                signed_im[z_i, y_i, x_i] = my_sign(sign_vs[v_index])\n\n                            if change_cube:\n                                continue\n\n\n                            # Compute and use anchor gradient only when needed (when some vertices have no votes)\n                            if not (visited_vs[0] >= 1 and visited_vs[1] >= 1 and visited_vs[2] >= 1 and visited_vs[3] >= 1 and visited_vs[4] >= 1 and visited_vs[5] >= 1 and visited_vs[6] >= 1 and visited_vs[7] >= 1):\n                                anchor_sign = 1.\n                                if signed_im_mask[z,y,x] and not non_zero_norm(grads[z,y,x]) == 0: #1\n                                    anchor_sign = my_sign(signed_im[z,y,x])\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x][0], grads[z,y,x][1], grads[z,y,x][2]\n                                elif signed_im_mask[z,y,x_st] and not non_zero_norm(grads[z,y,x_st]) == 0: #2\n                                    anchor_sign = my_sign(signed_im[z,y,x_st])\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x_st][0], grads[z,y,x_st][1], grads[z,y,x_st][2]\n                                elif signed_im_mask[z,y_st,x] and not non_zero_norm(grads[z,y_st,x]) == 0: #4\n                                    anchor_sign = my_sign(signed_im[z,y_st,x])\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x][0], grads[z,y_st,x][1], grads[z,y_st,x][2]\n                                elif signed_im_mask[z,y_st,x_st] and not non_zero_norm(grads[z,y_st,x_st]) == 0: #3\n                                    anchor_sign = my_sign(signed_im[z,y_st,x_st])\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x_st][0], grads[z,y_st,x_st][1], grads[z,y_st,x_st][2]\n                                elif signed_im_mask[z_st,y,x] and not non_zero_norm(grads[z_st,y,x]) == 0: #5\n                                    anchor_sign = my_sign(signed_im[z_st,y,x])\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x][0], grads[z_st,y,x][1], grads[z_st,y,x][2]\n                                elif signed_im_mask[z_st,y,x_st] and not non_zero_norm(grads[z_st,y,x_st]) == 0: #6\n                                    anchor_sign = my_sign(signed_im[z_st,y,x_st])\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x_st][0], grads[z_st,y,x_st][1], grads[z_st,y,x_st][2]\n                                elif signed_im_mask[z_st,y_st,x] and not non_zero_norm(grads[z_st,y_st,x]) == 0: #8\n                                    anchor_sign = my_sign(signed_im[z_st,y_st,x])\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x][0], grads[z_st,y_st,x][1], grads[z_st,y_st,x][2]\n                                elif signed_im_mask[z_st,y_st,x_st] and not non_zero_norm(grads[z_st,y_st,x_st]) == 0: #7\n                                    anchor_sign = my_sign(signed_im[z_st,y_st,x_st])\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x_st][0], grads[z_st,y_st,x_st][1], grads[z_st,y_st,x_st][2]\n                            \n                                elif not non_zero_norm(grads[z,y,x]) == 0: #1\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x][0], grads[z,y,x][1], grads[z,y,x][2]\n                                elif not non_zero_norm(grads[z,y,x_st]) == 0: #2\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z,y,x_st][0], grads[z,y,x_st][1], grads[z,y,x_st][2]\n                                elif not non_zero_norm(grads[z,y_st,x]) == 0: #4\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x][0], grads[z,y_st,x][1], grads[z,y_st,x][2]\n                                elif not non_zero_norm(grads[z,y_st,x_st]) == 0: #3\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z,y_st,x_st][0], grads[z,y_st,x_st][1], grads[z,y_st,x_st][2]\n                                elif not non_zero_norm(grads[z_st,y,x]) == 0: #5\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x][0], grads[z_st,y,x][1], grads[z_st,y,x][2]\n                                elif not non_zero_norm(grads[z_st,y,x_st]) == 0: #6\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y,x_st][0], grads[z_st,y,x_st][1], grads[z_st,y,x_st][2]\n                                elif not non_zero_norm(grads[z_st,y_st,x]) == 0: #8\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x][0], grads[z_st,y_st,x][1], grads[z_st,y_st,x][2]\n                                elif not non_zero_norm(grads[z_st,y_st,x_st]) == 0: #7\n                                    base_vec[0], base_vec[1], base_vec[2] = grads[z_st,y_st,x_st][0], grads[z_st,y_st,x_st][1], grads[z_st,y_st,x_st][2]\n                                else:\n                                    print('all 0 vec...')\n\n                                base_vec[0], base_vec[1], base_vec[2] = anchor_sign * base_vec[0], anchor_sign * base_vec[1], anchor_sign * base_vec[2]\n\n                                # If the sign of one vertex is not sure enough, put the current cube into a lower priority queue of unsure cases to be computed later.\n                                # This behaviour is not applied to the neighbours of unsure cases\n                                if unsure_cases_visit_neighbours == True and queue.empty() == False:\n                                    if visited_vs[0] == 0:\n                                        sign_vs[0] = dot3(base_vec, grads[z   ,y, x])\n                                        if abs(sign_vs[0]) < unsure_cases_thresh:\n                                            unsure_cases_queue.push_back((z,y,x))\n                                            continue\n                                        signed_im[z,y,x] = my_sign(sign_vs[0])\n                                    if visited_vs[1] == 0:\n                                        sign_vs[1] = dot3(base_vec, grads[z   ,y, x_st])\n                                        if abs(sign_vs[1]) < unsure_cases_thresh:\n                                            unsure_cases_queue.push_back((z,y,x))\n                                            continue\n                                        signed_im[z,y,x_st] = my_sign(sign_vs[1])\n                                    if visited_vs[2] == 0:\n                                        sign_vs[2] = dot3(base_vec, grads[z   ,y_st, x_st])\n                                        if abs(sign_vs[2]) < unsure_cases_thresh:\n                                            unsure_cases_queue.push_back((z,y,x))\n                                            continue\n                                        signed_im[z,y_st,x_st] = my_sign(sign_vs[2])\n                                    if visited_vs[3] == 0:\n                                        sign_vs[3] = dot3(base_vec, grads[z   ,y_st, x])\n                                        if abs(sign_vs[3]) < unsure_cases_thresh:\n                                            unsure_cases_queue.push_back((z,y,x))\n                                            continue\n                                        signed_im[z,y_st,x] = my_sign(sign_vs[3])\n                                    if visited_vs[4] == 0:\n                                        sign_vs[4] = dot3(base_vec, grads[z_st,y, x])\n                                        if abs(sign_vs[4]) < unsure_cases_thresh:\n                                            unsure_cases_queue.push_back((z,y,x))\n                                            continue\n                                        signed_im[z_st,y,x] = my_sign(sign_vs[4])\n                                    if visited_vs[5] == 0:\n                                        sign_vs[5] = dot3(base_vec, grads[z_st,y, x_st])\n                                        if abs(sign_vs[5]) < unsure_cases_thresh:\n                                            unsure_cases_queue.push_back((z,y,x))\n                                            continue\n                                        signed_im[z_st,y,x_st] = my_sign(sign_vs[5])\n                                    if visited_vs[6] == 0:\n                                        sign_vs[6] = dot3(base_vec, grads[z_st,y_st, x_st])\n                                        if abs(sign_vs[6]) < unsure_cases_thresh:\n                                            unsure_cases_queue.push_back((z,y,x))\n                                            continue\n                                        signed_im[z_st,y_st,x_st] = my_sign(sign_vs[6])\n                                    if visited_vs[7] == 0:\n                                        sign_vs[7] = dot3(base_vec, grads[z_st,y_st, x])\n                                        if abs(sign_vs[7]) < unsure_cases_thresh:\n                                            unsure_cases_queue.push_back((z,y,x))\n                                            continue\n                                        signed_im[z_st,y_st,x] = my_sign(sign_vs[7])\n                                else:\n                                    if visited_vs[0] == 0:\n                                        signed_im[z,y,x] = my_sign(dot3(base_vec, grads[z   ,y, x]))\n                                    if visited_vs[1] == 0:\n                                        signed_im[z,y,x_st] = my_sign(dot3(base_vec, grads[z   ,y, x_st]))\n                                    if visited_vs[2] == 0:\n                                        signed_im[z,y_st,x_st] = my_sign(dot3(base_vec, grads[z   ,y_st, x_st]))\n                                    if visited_vs[3] == 0:\n                                        signed_im[z,y_st,x] = my_sign(dot3(base_vec, grads[z   ,y_st, x]))\n                                    if visited_vs[4] == 0:\n                                        signed_im[z_st,y,x] = my_sign(dot3(base_vec, grads[z_st,y, x]))\n                                    if visited_vs[5] == 0:\n                                        signed_im[z_st,y,x_st] = my_sign(dot3(base_vec, grads[z_st,y, x_st]))\n                                    if visited_vs[6] == 0:\n                                        signed_im[z_st,y_st,x_st] = my_sign(dot3(base_vec, grads[z_st,y_st, x_st]))\n                                    if visited_vs[7] == 0:\n                                        signed_im[z_st,y_st,x] = my_sign(dot3(base_vec, grads[z_st,y_st, x]))\n                                \n                            \n                            \n                            if unsure_cases_visit_neighbours == True:\n                                v0 = signed_im[z,y,x] * im[z   ,y, x]\n                                v1 = signed_im[z,y,x_st] * im[z   ,y, x_st]\n                                v2 = signed_im[z,y_st,x_st] * im[z   ,y_st, x_st]\n                                v3 = signed_im[z,y_st,x] * im[z   ,y_st, x]\n                                v4 = signed_im[z_st,y,x] * im[z_st,y, x]\n                                v5 = signed_im[z_st,y,x_st] * im[z_st,y, x_st]\n                                v6 = signed_im[z_st,y_st,x_st] * im[z_st,y_st, x_st]\n                                v7 = signed_im[z_st,y_st,x] * im[z_st,y_st, x]\n\n                                cell.set_cube(0.0, x, y, z, st, v0, v1, v2, v3, v4, v5, v6, v7)\n\n                                signed_im_mask[z,y,x] = True\n                                signed_im_mask[z,y,x_st] = True\n                                signed_im_mask[z,y_st,x_st] = True\n                                signed_im_mask[z,y_st,x] = True\n                                signed_im_mask[z_st,y,x] = True\n                                signed_im_mask[z_st,y,x_st] = True\n                                signed_im_mask[z_st,y_st,x_st] = True\n                                signed_im_mask[z_st,y_st,x] = True\n\n\n                                # Get case, if non-nul, enter the big switch\n                                case = luts.CASES.get2(cell.index, 0)\n                                # If the current cube is being visited to increase the reliability of an unsure case,\n                                # no faces are created and no further neighbours are visited\n                                if case > 0:\n                                \n                                    # If the current cube is producing a non-trivial Marching Cubes configuration, \n                                    # we leave it for later. It could otherwise produce unwanted inversions in face orientations.\n                                    if (not case in [1,2,5,8,9]) and (queue.empty() == False or unsure_cases_queue.empty() == False):\n                                        non_trivial_mc_cases_queue.push_back((z,y,x))\n                                        continue\n                                    \n                                    config = luts.CASES.get2(cell.index, 1)\n                                    if check_the_big_switch(luts, cell, case, config) >= 2:\n                                        visited[z,y,x] = True\n\n                                        the_big_switch(luts, cell, case, config)\n\n                                        if x_st < Nx_bound:\n                                            queue.push_back((z,y,x_st))\n                                        if y_st < Ny_bound:\n                                            queue.push_back((z,y_st,x))\n                                        if x-st >= 0:\n                                            queue.push_back((z,y,x-st))\n                                        if y-st >= 0:\n                                            queue.push_back((z,y-st,x))\n                                        if z-st >= 0:\n                                            queue.push_back((z-st,y,x))\n                                        if z_st < Nz_bound:\n                                            queue.push_back((z_st,y,x))\n\n                                else:\n                                    visited[z,y,x] = True\n\n    return cell.get_vertices(), cell.get_faces(), cell.get_normals(), cell.get_values()\n\n\ncdef float compute_edge_vote(float[:] g1, float[:] g2, float dir_z, float dir_y, float dir_x):\n    \"\"\" Computes the edge vote\n        Assumes that one and only one among dir_z, dir_y and dir_x is not zero\n    \"\"\"\n    cdef float result = 0.0\n    cdef float dir_sum = dir_z + dir_y + dir_x\n    cdef float proj_g1 \n    cdef float proj_g2\n\n    if dir_z != 0:\n        proj_g1 = g1[0]\n        proj_g2 = g2[0]\n    elif dir_y != 0:\n        proj_g1 = g1[1]\n        proj_g2 = g2[1]\n    else:\n        proj_g1 = g1[2]\n        proj_g2 = g2[2]\n\n    if dir_sum > 0:\n        if proj_g2 > 0 and proj_g1 < 0:\n            result = 1.0\n        else:\n            result = dot3(g1, g2)\n    else:\n        if proj_g2 < 0 and proj_g1 > 0:\n            result = 1.0\n        else:\n            result = dot3(g1, g2)\n    \n    return result\n\n\ncdef float my_sign(float a):\n    if a > 0:\n        return 1.\n    if a < 0:\n        return -1.\n    if a == 0:\n        return 0.\n\n\ncdef int non_zero_norm(float[:] a):\n    \"\"\" Returns True if the sum of absolute values > 0\n    \"\"\"\n    return (abs(a[0]) + abs(a[1]) + abs(a[2])) > 0\n    # return abs(a[0]) > 0 or abs(a[1]) > 0 or abs(a[2]) > 0 #faster?\n\n\ncdef float avg_cube(float v1, float v2, float v3, float v4,\n                    float v5, float v6, float v7, float v8):\n    \"\"\" Return the average value of v_i's\n    \"\"\"\n    return 0.125 * (v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8)\n\ncdef float max_cube(float v1, float v2, float v3, float v4,\n                    float v5, float v6, float v7, float v8):\n    \"\"\" Return the max value of v_i's\n    \"\"\"\n    return max(v1, max(\n                v2, max(\n                v3, max(\n                v4, max(\n                v5, max(\n                v6, max(\n                v7, v8)))))))\n\ncdef float dot3(float[:] a, float[:] b):\n    return a[0]*b[0] + a[1]*b[1] + a[2]*b[2]\n\n\ncdef bint the_big_switch(LutProvider luts, Cell cell, int case, int config):\n    \"\"\" The big switch (i.e. if-statement) that I meticulously ported from\n    the source code provided by Lewiner et. al.\n    Together with all the look-up tables, this is where the magic is ...\n    \"\"\"\n\n    cdef int subconfig = 0\n    cdef bint result = False\n\n\n    # Sinatures for tests\n    #test_face(cell, luts.TESTX.get1(config)):\n    #test_internal(cell, luts, case, config, subconfig, luts.TESTX.get1(config)):\n    #cell.add_triangles(luts.TILINGX, config, N)\n\n    if case == 1:\n        result = cell.add_triangles(luts.TILING1, config, 1)\n\n    elif case == 2:\n        result = cell.add_triangles(luts.TILING2, config, 2)\n\n    elif case == 3:\n        if test_face(cell, luts.TEST3.get1(config)):\n            result = cell.add_triangles(luts.TILING3_2, config, 4)\n        else:\n            result = cell.add_triangles(luts.TILING3_1, config, 2)\n\n    elif case == 4 :\n        if test_internal(cell, luts, case, config, subconfig, luts.TEST4.get1(config)):\n            result = cell.add_triangles(luts.TILING4_1, config, 2)\n        else:\n            result = cell.add_triangles(luts.TILING4_2, config, 6)\n\n    elif case == 5 :\n        result = cell.add_triangles(luts.TILING5, config, 3)\n\n    elif case == 6 :\n        if test_face(cell, luts.TEST6.get2(config,0)):\n            result = cell.add_triangles(luts.TILING6_2, config, 5)\n        else:\n            if test_internal(cell, luts, case, config, subconfig, luts.TEST6.get2(config,1)):\n                result = cell.add_triangles(luts.TILING6_1_1, config, 3)\n            else:\n                #cell.calculate_center_vertex() # v12 needed\n                result = cell.add_triangles(luts.TILING6_1_2, config, 9)\n\n    elif case == 7 :\n        # Get subconfig\n        if test_face(cell, luts.TEST7.get2(config,0)): subconfig += 1\n        if test_face(cell, luts.TEST7.get2(config,1)): subconfig += 2\n        if test_face(cell, luts.TEST7.get2(config,2)): subconfig += 4\n        # Behavior depends on subconfig\n        if subconfig == 0: result = cell.add_triangles(luts.TILING7_1, config, 3)\n        elif subconfig == 1: result = cell.add_triangles2(luts.TILING7_2, config, 0, 5)\n        elif subconfig == 2: result = cell.add_triangles2(luts.TILING7_2, config, 1, 5)\n        elif subconfig == 3:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING7_3, config, 0, 9)\n        elif subconfig == 4: result = cell.add_triangles2(luts.TILING7_2, config, 2, 5)\n        elif subconfig == 5:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING7_3, config, 1, 9)\n        elif subconfig == 6:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING7_3, config, 2, 9)\n        elif subconfig == 7:\n            if test_internal(cell, luts, case, config, subconfig, luts.TEST7.get2(config,3)):\n                result = cell.add_triangles(luts.TILING7_4_2, config, 9)\n            else:\n                result = cell.add_triangles(luts.TILING7_4_1, config, 5)\n\n    elif case == 8 :\n        result = cell.add_triangles(luts.TILING8, config, 2)\n\n    elif case == 9 :\n        result = cell.add_triangles(luts.TILING9, config, 4)\n\n    elif case == 10 :\n        if test_face(cell, luts.TEST10.get2(config,0)):\n            if test_face(cell, luts.TEST10.get2(config,1)):\n                result = cell.add_triangles(luts.TILING10_1_1_, config, 4)\n            else:\n                #cell.calculate_center_vertex() # v12 needed\n                result = cell.add_triangles(luts.TILING10_2, config, 8)\n        else:\n            if test_face(cell, luts.TEST10.get2(config,1)):\n                #cell.calculate_center_vertex() # v12 needed\n                result = cell.add_triangles(luts.TILING10_2_, config, 8)\n            else:\n                if test_internal(cell, luts, case, config, subconfig, luts.TEST10.get2(config,2)):\n                    result = cell.add_triangles(luts.TILING10_1_1, config, 4)\n                else:\n                    result = cell.add_triangles(luts.TILING10_1_2, config, 8)\n\n    elif case == 11 :\n        result = cell.add_triangles(luts.TILING11, config, 4)\n\n    elif case == 12 :\n        if test_face(cell, luts.TEST12.get2(config,0)):\n            if test_face(cell, luts.TEST12.get2(config,1)):\n                result = cell.add_triangles(luts.TILING12_1_1_, config, 4)\n            else:\n                #cell.calculate_center_vertex() # v12 needed\n                result = cell.add_triangles(luts.TILING12_2, config, 8)\n        else:\n            if test_face(cell, luts.TEST12.get2(config,1)):\n                #cell.calculate_center_vertex() # v12 needed\n                result = cell.add_triangles(luts.TILING12_2_, config, 8)\n            else:\n                if test_internal(cell, luts, case, config, subconfig, luts.TEST12.get2(config,2)):\n                    result = cell.add_triangles(luts.TILING12_1_1, config, 4)\n                else:\n                    result = cell.add_triangles(luts.TILING12_1_2, config, 8)\n\n    elif case == 13 :\n        # Calculate subconfig\n        if test_face(cell, luts.TEST13.get2(config,0)): subconfig += 1\n        if test_face(cell, luts.TEST13.get2(config,1)): subconfig += 2\n        if test_face(cell, luts.TEST13.get2(config,2)): subconfig += 4\n        if test_face(cell, luts.TEST13.get2(config,3)): subconfig += 8\n        if test_face(cell, luts.TEST13.get2(config,4)): subconfig += 16\n        if test_face(cell, luts.TEST13.get2(config,5)): subconfig += 32\n\n        # Map via LUT\n        subconfig = luts.SUBCONFIG13.get1(subconfig)\n\n        # Behavior depends on subconfig\n        if subconfig==0:    result = cell.add_triangles(luts.TILING13_1, config, 4)\n        elif subconfig==1:  result = cell.add_triangles2(luts.TILING13_2, config, 0, 6)\n        elif subconfig==2:  result = cell.add_triangles2(luts.TILING13_2, config, 1, 6)\n        elif subconfig==3:  result = cell.add_triangles2(luts.TILING13_2, config, 2, 6)\n        elif subconfig==4:  result = cell.add_triangles2(luts.TILING13_2, config, 3, 6)\n        elif subconfig==5:  result = cell.add_triangles2(luts.TILING13_2, config, 4, 6)\n        elif subconfig==6:  result = cell.add_triangles2(luts.TILING13_2, config, 5, 6)\n        #\n        elif subconfig==7:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3, config, 0, 10)\n        elif subconfig==8:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3, config, 1, 10)\n        elif subconfig==9:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3, config, 2, 10)\n        elif subconfig==10:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3, config, 3, 10)\n        elif subconfig==11:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3, config, 4, 10)\n        elif subconfig==12:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3, config, 5, 10)\n        elif subconfig==13:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3, config, 6, 10)\n        elif subconfig==14:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3, config, 7, 10)\n        elif subconfig==15:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3, config, 8, 10)\n        elif subconfig==16:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3, config, 9, 10)\n        elif subconfig==17:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3, config, 10, 10)\n        elif subconfig==18:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3, config, 11, 10)\n        #\n        elif subconfig==19:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_4, config, 0, 12)\n        elif subconfig==20:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_4, config, 1, 12)\n        elif subconfig==21:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_4, config, 2, 12)\n        elif subconfig==22:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_4, config, 3, 12)\n        #\n        elif subconfig==23:\n            subconfig = 0 # Note: the original source code sets the subconfig, without apparent reason\n            if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)):\n                result = cell.add_triangles2(luts.TILING13_5_1, config, 0, 6)\n            else:\n                result = cell.add_triangles2(luts.TILING13_5_2, config, 0, 10)\n        elif subconfig==24:\n            subconfig = 1\n            if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)):\n                result = cell.add_triangles2(luts.TILING13_5_1, config, 1, 6)\n            else:\n                result = cell.add_triangles2(luts.TILING13_5_2, config, 1, 10)\n        elif subconfig==25:\n            subconfig = 2 ;\n            if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)):\n                result = cell.add_triangles2(luts.TILING13_5_1, config, 2, 6)\n            else:\n                result = cell.add_triangles2(luts.TILING13_5_2, config, 2, 10)\n        elif subconfig==26:\n            subconfig = 3 ;\n            if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)):\n                result = cell.add_triangles2(luts.TILING13_5_1, config, 3, 6)\n            else:\n                result = cell.add_triangles2(luts.TILING13_5_2, config, 3, 10)\n        #\n        elif subconfig==27:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3_, config, 0, 10)\n        elif subconfig==28:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3_, config, 1, 10)\n        elif subconfig==29:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3_, config, 2, 10)\n        elif subconfig==30:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3_, config, 3, 10)\n        elif subconfig==31:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3_, config, 4, 10)\n        elif subconfig==32:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3_, config, 5, 10)\n        elif subconfig==33:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3_, config,6, 10)\n        elif subconfig==34:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3_, config, 7, 10)\n        elif subconfig==35:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3_, config, 8, 10)\n        elif subconfig==36:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3_, config, 9, 10)\n        elif subconfig==37:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3_, config, 10, 10)\n        elif subconfig==38:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.add_triangles2(luts.TILING13_3_, config, 11, 10)\n        #\n        elif subconfig==39:\n            result = cell.add_triangles2(luts.TILING13_2_, config, 0, 6)\n        elif subconfig==40:\n            result = cell.add_triangles2(luts.TILING13_2_, config, 1, 6)\n        elif subconfig==41:\n            result = cell.add_triangles2(luts.TILING13_2_, config, 2, 6)\n        elif subconfig==42:\n            result = cell.add_triangles2(luts.TILING13_2_, config, 3, 6)\n        elif subconfig==43:\n            result = cell.add_triangles2(luts.TILING13_2_, config, 4, 6)\n        elif subconfig==44:\n            result = cell.add_triangles2(luts.TILING13_2_, config, 5, 6)\n        #\n        elif subconfig==45:\n            result = cell.add_triangles(luts.TILING13_1_, config, 4)\n        #\n        else:\n            print(\"Marching Cubes: Impossible case 13?\" )\n\n    elif case == 14 :\n        result = cell.add_triangles(luts.TILING14, config, 4)\n        \n    return result\n\n\n\n\n\n\n\ncdef int check_the_big_switch(LutProvider luts, Cell cell, int case, int config):\n    \"\"\" CHECK The big switch (i.e. if-statement) that I meticulously ported from\n    the source code provided by Lewiner et. al.\n    Together with all the look-up tables, this is where the magic is ...\n    \"\"\"\n\n    cdef int subconfig = 0\n    cdef int result = 0\n\n\n    # Sinatures for tests\n    #test_face(cell, luts.TESTX.get1(config)):\n    #test_internal(cell, luts, case, config, subconfig, luts.TESTX.get1(config)):\n    #cell.check_triangles(luts.TILINGX, config, N)\n\n    if case == 1:\n        result = cell.check_triangles(luts.TILING1, config, 1)\n\n    elif case == 2:\n        result = cell.check_triangles(luts.TILING2, config, 2)\n\n    elif case == 3:\n        if test_face(cell, luts.TEST3.get1(config)):\n            result = cell.check_triangles(luts.TILING3_2, config, 4)\n        else:\n            result = cell.check_triangles(luts.TILING3_1, config, 2)\n\n    elif case == 4 :\n        if test_internal(cell, luts, case, config, subconfig, luts.TEST4.get1(config)):\n            result = cell.check_triangles(luts.TILING4_1, config, 2)\n        else:\n            result = cell.check_triangles(luts.TILING4_2, config, 6)\n\n    elif case == 5 :\n        result = cell.check_triangles(luts.TILING5, config, 3)\n\n    elif case == 6 :\n        if test_face(cell, luts.TEST6.get2(config,0)):\n            result = cell.check_triangles(luts.TILING6_2, config, 5)\n        else:\n            if test_internal(cell, luts, case, config, subconfig, luts.TEST6.get2(config,1)):\n                result = cell.check_triangles(luts.TILING6_1_1, config, 3)\n            else:\n                #cell.calculate_center_vertex() # v12 needed\n                result = cell.check_triangles(luts.TILING6_1_2, config, 9)\n\n    elif case == 7 :\n        # Get subconfig\n        if test_face(cell, luts.TEST7.get2(config,0)): subconfig += 1\n        if test_face(cell, luts.TEST7.get2(config,1)): subconfig += 2\n        if test_face(cell, luts.TEST7.get2(config,2)): subconfig += 4\n        # Behavior depends on subconfig\n        if subconfig == 0: result = cell.check_triangles(luts.TILING7_1, config, 3)\n        elif subconfig == 1: result = cell.check_triangles2(luts.TILING7_2, config, 0, 5)\n        elif subconfig == 2: result = cell.check_triangles2(luts.TILING7_2, config, 1, 5)\n        elif subconfig == 3:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING7_3, config, 0, 9)\n        elif subconfig == 4: result = cell.check_triangles2(luts.TILING7_2, config, 2, 5)\n        elif subconfig == 5:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING7_3, config, 1, 9)\n        elif subconfig == 6:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING7_3, config, 2, 9)\n        elif subconfig == 7:\n            if test_internal(cell, luts, case, config, subconfig, luts.TEST7.get2(config,3)):\n                result = cell.check_triangles(luts.TILING7_4_2, config, 9)\n            else:\n                result = cell.check_triangles(luts.TILING7_4_1, config, 5)\n\n    elif case == 8 :\n        result = cell.check_triangles(luts.TILING8, config, 2)\n\n    elif case == 9 :\n        result = cell.check_triangles(luts.TILING9, config, 4)\n\n    elif case == 10 :\n        if test_face(cell, luts.TEST10.get2(config,0)):\n            if test_face(cell, luts.TEST10.get2(config,1)):\n                result = cell.check_triangles(luts.TILING10_1_1_, config, 4)\n            else:\n                #cell.calculate_center_vertex() # v12 needed\n                result = cell.check_triangles(luts.TILING10_2, config, 8)\n        else:\n            if test_face(cell, luts.TEST10.get2(config,1)):\n                #cell.calculate_center_vertex() # v12 needed\n                result = cell.check_triangles(luts.TILING10_2_, config, 8)\n            else:\n                if test_internal(cell, luts, case, config, subconfig, luts.TEST10.get2(config,2)):\n                    result = cell.check_triangles(luts.TILING10_1_1, config, 4)\n                else:\n                    result = cell.check_triangles(luts.TILING10_1_2, config, 8)\n\n    elif case == 11 :\n        result = cell.check_triangles(luts.TILING11, config, 4)\n\n    elif case == 12 :\n        if test_face(cell, luts.TEST12.get2(config,0)):\n            if test_face(cell, luts.TEST12.get2(config,1)):\n                result = cell.check_triangles(luts.TILING12_1_1_, config, 4)\n            else:\n                #cell.calculate_center_vertex() # v12 needed\n                result = cell.check_triangles(luts.TILING12_2, config, 8)\n        else:\n            if test_face(cell, luts.TEST12.get2(config,1)):\n                #cell.calculate_center_vertex() # v12 needed\n                result = cell.check_triangles(luts.TILING12_2_, config, 8)\n            else:\n                if test_internal(cell, luts, case, config, subconfig, luts.TEST12.get2(config,2)):\n                    result = cell.check_triangles(luts.TILING12_1_1, config, 4)\n                else:\n                    result = cell.check_triangles(luts.TILING12_1_2, config, 8)\n\n    elif case == 13 :\n        # Calculate subconfig\n        if test_face(cell, luts.TEST13.get2(config,0)): subconfig += 1\n        if test_face(cell, luts.TEST13.get2(config,1)): subconfig += 2\n        if test_face(cell, luts.TEST13.get2(config,2)): subconfig += 4\n        if test_face(cell, luts.TEST13.get2(config,3)): subconfig += 8\n        if test_face(cell, luts.TEST13.get2(config,4)): subconfig += 16\n        if test_face(cell, luts.TEST13.get2(config,5)): subconfig += 32\n\n        # Map via LUT\n        subconfig = luts.SUBCONFIG13.get1(subconfig)\n\n        # Behavior depends on subconfig\n        if subconfig==0:    result = cell.check_triangles(luts.TILING13_1, config, 4)\n        elif subconfig==1:  result = cell.check_triangles2(luts.TILING13_2, config, 0, 6)\n        elif subconfig==2:  result = cell.check_triangles2(luts.TILING13_2, config, 1, 6)\n        elif subconfig==3:  result = cell.check_triangles2(luts.TILING13_2, config, 2, 6)\n        elif subconfig==4:  result = cell.check_triangles2(luts.TILING13_2, config, 3, 6)\n        elif subconfig==5:  result = cell.check_triangles2(luts.TILING13_2, config, 4, 6)\n        elif subconfig==6:  result = cell.check_triangles2(luts.TILING13_2, config, 5, 6)\n        #\n        elif subconfig==7:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3, config, 0, 10)\n        elif subconfig==8:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3, config, 1, 10)\n        elif subconfig==9:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3, config, 2, 10)\n        elif subconfig==10:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3, config, 3, 10)\n        elif subconfig==11:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3, config, 4, 10)\n        elif subconfig==12:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3, config, 5, 10)\n        elif subconfig==13:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3, config, 6, 10)\n        elif subconfig==14:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3, config, 7, 10)\n        elif subconfig==15:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3, config, 8, 10)\n        elif subconfig==16:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3, config, 9, 10)\n        elif subconfig==17:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3, config, 10, 10)\n        elif subconfig==18:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3, config, 11, 10)\n        #\n        elif subconfig==19:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_4, config, 0, 12)\n        elif subconfig==20:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_4, config, 1, 12)\n        elif subconfig==21:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_4, config, 2, 12)\n        elif subconfig==22:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_4, config, 3, 12)\n        #\n        elif subconfig==23:\n            subconfig = 0 # Note: the original source code sets the subconfig, without apparent reason\n            if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)):\n                result = cell.check_triangles2(luts.TILING13_5_1, config, 0, 6)\n            else:\n                result = cell.check_triangles2(luts.TILING13_5_2, config, 0, 10)\n        elif subconfig==24:\n            subconfig = 1\n            if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)):\n                result = cell.check_triangles2(luts.TILING13_5_1, config, 1, 6)\n            else:\n                result = cell.check_triangles2(luts.TILING13_5_2, config, 1, 10)\n        elif subconfig==25:\n            subconfig = 2 ;\n            if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)):\n                result = cell.check_triangles2(luts.TILING13_5_1, config, 2, 6)\n            else:\n                result = cell.check_triangles2(luts.TILING13_5_2, config, 2, 10)\n        elif subconfig==26:\n            subconfig = 3 ;\n            if test_internal(cell, luts, case, config, subconfig, luts.TEST13.get2(config,6)):\n                result = cell.check_triangles2(luts.TILING13_5_1, config, 3, 6)\n            else:\n                result = cell.check_triangles2(luts.TILING13_5_2, config, 3, 10)\n        #\n        elif subconfig==27:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3_, config, 0, 10)\n        elif subconfig==28:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3_, config, 1, 10)\n        elif subconfig==29:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3_, config, 2, 10)\n        elif subconfig==30:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3_, config, 3, 10)\n        elif subconfig==31:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3_, config, 4, 10)\n        elif subconfig==32:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3_, config, 5, 10)\n        elif subconfig==33:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3_, config,6, 10)\n        elif subconfig==34:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3_, config, 7, 10)\n        elif subconfig==35:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3_, config, 8, 10)\n        elif subconfig==36:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3_, config, 9, 10)\n        elif subconfig==37:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3_, config, 10, 10)\n        elif subconfig==38:\n            #cell.calculate_center_vertex() # v12 needed\n            result = cell.check_triangles2(luts.TILING13_3_, config, 11, 10)\n        #\n        elif subconfig==39:\n            result = cell.check_triangles2(luts.TILING13_2_, config, 0, 6)\n        elif subconfig==40:\n            result = cell.check_triangles2(luts.TILING13_2_, config, 1, 6)\n        elif subconfig==41:\n            result = cell.check_triangles2(luts.TILING13_2_, config, 2, 6)\n        elif subconfig==42:\n            result = cell.check_triangles2(luts.TILING13_2_, config, 3, 6)\n        elif subconfig==43:\n            result = cell.check_triangles2(luts.TILING13_2_, config, 4, 6)\n        elif subconfig==44:\n            result = cell.check_triangles2(luts.TILING13_2_, config, 5, 6)\n        #\n        elif subconfig==45:\n            result = cell.check_triangles(luts.TILING13_1_, config, 4)\n        #\n        else:\n            print(\"Marching Cubes: Impossible case 13?\" )\n\n    elif case == 14 :\n        result = cell.check_triangles(luts.TILING14, config, 4)\n        \n    return result\n\n\n\n\n\n\n\n\n\ncdef int test_face(Cell cell, int face):\n    \"\"\" Return True of the face contains part of the surface.\n    \"\"\"\n\n    # Get face absolute value\n    cdef int absFace = face\n    if face < 0:\n        absFace *= -1\n\n    # Get values of corners A B C D\n    cdef double A, B, C, D\n    if absFace == 1:\n        A, B, C, D = cell.v0, cell.v4, cell.v5, cell.v1\n    elif absFace == 2:\n        A, B, C, D = cell.v1, cell.v5, cell.v6, cell.v2\n    elif absFace == 3:\n        A, B, C, D = cell.v2, cell.v6, cell.v7, cell.v3\n    elif absFace == 4:\n        A, B, C, D = cell.v3, cell.v7, cell.v4, cell.v0\n    elif absFace == 5:\n        A, B, C, D = cell.v0, cell.v3, cell.v2, cell.v1\n    elif absFace == 6:\n        A, B, C, D = cell.v4, cell.v7, cell.v6, cell.v5\n\n    # Return sign\n    cdef double AC_BD = A*C - B*D\n    if AC_BD > - FLT_EPSILON and AC_BD < FLT_EPSILON:\n        return face >= 0\n    else:\n        return face * A * AC_BD >= 0;  # face and A invert signs\n\n\ncdef int test_internal(Cell cell, LutProvider luts, int case, int config, int subconfig, int s):\n    \"\"\" Return True of the face contains part of the surface.\n    \"\"\"\n\n    # Typedefs\n    cdef double t, At, Bt, Ct, Dt, a, b\n    cdef int test = 0\n    cdef int edge = -1 # reference edge of the triangulation\n\n\n    # Calculate At Bt Ct Dt a b\n    # Select case 4, 10,  7, 12, 13\n    At, Bt, Ct, Dt = 0.0, 0.0, 0.0, 0.0\n\n    if case==4 or case==10:\n        a = ( cell.v4 - cell.v0 ) * ( cell.v6 - cell.v2 ) - ( cell.v7 - cell.v3 ) * ( cell.v5 - cell.v1 )\n        b =  cell.v2 * ( cell.v4 - cell.v0 ) + cell.v0 * ( cell.v6 - cell.v2 ) - cell.v1 * ( cell.v7 - cell.v3 ) - cell.v3 * ( cell.v5 - cell.v1 )\n        t = - b / (2*a + FLT_EPSILON)\n        if t<0 or t>1:  return s>0 ;\n\n        At = cell.v0 + ( cell.v4 - cell.v0 ) * t\n        Bt = cell.v3 + ( cell.v7 - cell.v3 ) * t\n        Ct = cell.v2 + ( cell.v6 - cell.v2 ) * t\n        Dt = cell.v1 + ( cell.v5 - cell.v1 ) * t\n\n    elif case==6 or case==7 or case==12 or case==13:\n        # Define edge\n        if case == 6:  edge = luts.TEST6.get2(config, 2)\n        elif case == 7: edge = luts.TEST7.get2(config, 4)\n        elif case == 12: edge = luts.TEST12.get2(config, 3)\n        elif case == 13: edge = luts.TILING13_5_1.get3(config, subconfig, 0)\n\n        if edge==0:\n            t  = cell.v0 / ( cell.v0 - cell.v1 + FLT_EPSILON )\n            At = 0\n            Bt = cell.v3 + ( cell.v2 - cell.v3 ) * t\n            Ct = cell.v7 + ( cell.v6 - cell.v7 ) * t\n            Dt = cell.v4 + ( cell.v5 - cell.v4 ) * t\n        elif edge==1:\n            t  = cell.v1 / ( cell.v1 - cell.v2 + FLT_EPSILON )\n            At = 0\n            Bt = cell.v0 + ( cell.v3 - cell.v0 ) * t\n            Ct = cell.v4 + ( cell.v7 - cell.v4 ) * t\n            Dt = cell.v5 + ( cell.v6 - cell.v5 ) * t\n        elif edge==2:\n            t  = cell.v2 / ( cell.v2 - cell.v3 + FLT_EPSILON )\n            At = 0\n            Bt = cell.v1 + ( cell.v0 - cell.v1 ) * t\n            Ct = cell.v5 + ( cell.v4 - cell.v5 ) * t\n            Dt = cell.v6 + ( cell.v7 - cell.v6 ) * t\n        elif edge==3:\n            t  = cell.v3 / ( cell.v3 - cell.v0 + FLT_EPSILON )\n            At = 0\n            Bt = cell.v2 + ( cell.v1 - cell.v2 ) * t\n            Ct = cell.v6 + ( cell.v5 - cell.v6 ) * t\n            Dt = cell.v7 + ( cell.v4 - cell.v7 ) * t\n        elif edge==4:\n            t  = cell.v4 / ( cell.v4 - cell.v5 + FLT_EPSILON )\n            At = 0\n            Bt = cell.v7 + ( cell.v6 - cell.v7 ) * t\n            Ct = cell.v3 + ( cell.v2 - cell.v3 ) * t\n            Dt = cell.v0 + ( cell.v1 - cell.v0 ) * t\n        elif edge==5:\n            t  = cell.v5 / ( cell.v5 - cell.v6 + FLT_EPSILON )\n            At = 0\n            Bt = cell.v4 + ( cell.v7 - cell.v4 ) * t\n            Ct = cell.v0 + ( cell.v3 - cell.v0 ) * t\n            Dt = cell.v1 + ( cell.v2 - cell.v1 ) * t\n        elif edge==6:\n            t  = cell.v6 / ( cell.v6 - cell.v7 + FLT_EPSILON )\n            At = 0\n            Bt = cell.v5 + ( cell.v4 - cell.v5 ) * t\n            Ct = cell.v1 + ( cell.v0 - cell.v1 ) * t\n            Dt = cell.v2 + ( cell.v3 - cell.v2 ) * t\n        elif edge==7:\n            t  = cell.v7 / ( cell.v7 - cell.v4 + FLT_EPSILON )\n            At = 0\n            Bt = cell.v6 + ( cell.v5 - cell.v6 ) * t\n            Ct = cell.v2 + ( cell.v1 - cell.v2 ) * t\n            Dt = cell.v3 + ( cell.v0 - cell.v3 ) * t\n        elif edge==8:\n            t  = cell.v0 / ( cell.v0 - cell.v4 + FLT_EPSILON )\n            At = 0\n            Bt = cell.v3 + ( cell.v7 - cell.v3 ) * t\n            Ct = cell.v2 + ( cell.v6 - cell.v2 ) * t\n            Dt = cell.v1 + ( cell.v5 - cell.v1 ) * t\n        elif edge==9:\n            t  = cell.v1 / ( cell.v1 - cell.v5 + FLT_EPSILON )\n            At = 0\n            Bt = cell.v0 + ( cell.v4 - cell.v0 ) * t\n            Ct = cell.v3 + ( cell.v7 - cell.v3 ) * t\n            Dt = cell.v2 + ( cell.v6 - cell.v2 ) * t\n        elif edge==10:\n            t  = cell.v2 / ( cell.v2 - cell.v6 + FLT_EPSILON )\n            At = 0\n            Bt = cell.v1 + ( cell.v5 - cell.v1 ) * t\n            Ct = cell.v0 + ( cell.v4 - cell.v0 ) * t\n            Dt = cell.v3 + ( cell.v7 - cell.v3 ) * t\n        elif edge==11:\n            t  = cell.v3 / ( cell.v3 - cell.v7 + FLT_EPSILON )\n            At = 0\n            Bt = cell.v2 + ( cell.v6 - cell.v2 ) * t\n            Ct = cell.v1 + ( cell.v5 - cell.v1 ) * t\n            Dt = cell.v0 + ( cell.v4 - cell.v0 ) * t\n        else:\n            print( \"Invalid edge %i.\" % edge )\n    else:\n        print( \"Invalid ambiguous case %i.\" % case )\n\n    # Process results\n    if At >= 0: test += 1\n    if Bt >= 0: test += 2\n    if Ct >= 0: test += 4\n    if Dt >= 0: test += 8\n\n    # Determine what to return\n    if test==0: return s>0\n    elif test==1: return s>0\n    elif test==2: return s>0\n    elif test==3: return s>0\n    elif test==4: return s>0\n    elif test==5:\n        if At * Ct - Bt * Dt <  FLT_EPSILON: return s>0\n    elif test==6: return s>0\n    elif test==7: return s<0\n    elif test==8: return s>0\n    elif test==9: return s>0\n    elif test==10:\n        if At * Ct - Bt * Dt >= FLT_EPSILON: return s>0\n    elif test==11: return s<0\n    elif test==12: return s>0\n    elif test==13: return s<0\n    elif test==14: return s<0\n    elif test==15: return s<0\n    else: return s<0\n"
  },
  {
    "path": "meshudf/_marching_cubes_lewiner_luts.py",
    "content": "# -*- coding: utf-8 -*-\n# This file was auto-generated from `mc_meta/LookUpTable.h` by\n# `mc_meta/createluts.py`.\n\n#static const char casesClassic[256][16]\nCASESCLASSIC = (256, 16), \"\"\"\n/////////////////////wAIA/////////////////8AAQn/////////////////AQgDCQgB////\n/////////wECCv////////////////8ACAMBAgr/////////////CQIKAAIJ/////////////wII\nAwIKCAoJCP////////8DCwL/////////////////AAsCCAsA/////////////wEJAAIDC///////\n//////8BCwIBCQsJCAv/////////AwoBCwoD/////////////wAKAQAICggLCv////////8DCQAD\nCwkLCgn/////////CQgKCggL/////////////wQHCP////////////////8EAwAHAwT/////////\n////AAEJCAQH/////////////wQBCQQHAQcDAf////////8BAgoIBAf/////////////AwQHAwAE\nAQIK/////////wkCCgkAAggEB/////////8CCgkCCQcCBwMHCQT/////CAQHAwsC////////////\n/wsEBwsCBAIABP////////8JAAEIBAcCAwv/////////BAcLCQQLCQsCCQIB/////wMKAQMLCgcI\nBP////////8BCwoBBAsBAAQHCwT/////BAcICQALCQsKCwAD/////wQHCwQLCQkLCv////////8J\nBQT/////////////////CQUEAAgD/////////////wAFBAEFAP////////////8IBQQIAwUDAQX/\n////////AQIKCQUE/////////////wMACAECCgQJBf////////8FAgoFBAIEAAL/////////AgoF\nAwIFAwUEAwQI/////wkFBAIDC/////////////8ACwIACAsECQX/////////AAUEAAEFAgML////\n/////wIBBQIFCAIICwQIBf////8KAwsKAQMJBQT/////////BAkFAAgBCAoBCAsK/////wUEAAUA\nCwULCgsAA/////8FBAgFCAoKCAv/////////CQcIBQcJ/////////////wkDAAkFAwUHA///////\n//8ABwgAAQcBBQf/////////AQUDAwUH/////////////wkHCAkFBwoBAv////////8KAQIJBQAF\nAwAFBwP/////CAACCAIFCAUHCgUC/////wIKBQIFAwMFB/////////8HCQUHCAkDCwL/////////\nCQUHCQcCCQIAAgcL/////wIDCwABCAEHCAEFB/////8LAgELAQcHAQX/////////CQUICAUHCgED\nCgML/////wUHAAUACQcLAAEACgsKAP8LCgALAAMKBQAIAAcFBwD/CwoFBwsF/////////////woG\nBf////////////////8ACAMFCgb/////////////CQABBQoG/////////////wEIAwEJCAUKBv//\n//////8BBgUCBgH/////////////AQYFAQIGAwAI/////////wkGBQkABgACBv////////8FCQgF\nCAIFAgYDAgj/////AgMLCgYF/////////////wsACAsCAAoGBf////////8AAQkCAwsFCgb/////\n////BQoGAQkCCQsCCQgL/////wYDCwYFAwUBA/////////8ACAsACwUABQEFCwb/////AwsGAAMG\nAAYFAAUJ/////wYFCQYJCwsJCP////////8FCgYEBwj/////////////BAMABAcDBgUK////////\n/wEJAAUKBggEB/////////8KBgUBCQcBBwMHCQT/////BgECBgUBBAcI/////////wECBQUCBgMA\nBAMEB/////8IBAcJAAUABgUAAgb/////BwMJBwkEAwIJBQkGAgYJ/wMLAgcIBAoGBf////////8F\nCgYEBwIEAgACBwv/////AAEJBAcIAgMLBQoG/////wkCAQkLAgkECwcLBAUKBv8IBAcDCwUDBQEF\nCwb/////BQELBQsGAQALBwsEAAQL/wAFCQAGBQADBgsGAwgEB/8GBQkGCQsEBwkHCwn/////CgQJ\nBgQK/////////////wQKBgQJCgAIA/////////8KAAEKBgAGBAD/////////CAMBCAEGCAYEBgEK\n/////wEECQECBAIGBP////////8DAAgBAgkCBAkCBgT/////AAIEBAIG/////////////wgDAggC\nBAQCBv////////8KBAkKBgQLAgP/////////AAgCAggLBAkKBAoG/////wMLAgABBgAGBAYBCv//\n//8GBAEGAQoECAECAQsICwH/CQYECQMGCQEDCwYD/////wgLAQgBAAsGAQkBBAYEAf8DCwYDBgAA\nBgT/////////BgQICwYI/////////////wcKBgcICggJCv////////8ABwMACgcACQoGBwr/////\nCgYHAQoHAQcIAQgA/////woGBwoHAQEHA/////////8BAgYBBggBCAkIBgf/////AgYJAgkBBgcJ\nAAkDBwMJ/wcIAAcABgYAAv////////8HAwIGBwL/////////////AgMLCgYICggJCAYH/////wIA\nBwIHCwAJBwYHCgkKB/8BCAABBwgBCgcGBwoCAwv/CwIBCwEHCgYBBgcB/////wgJBggGBwkBBgsG\nAwEDBv8ACQELBgf/////////////BwgABwAGAwsACwYA/////wcLBv////////////////8HBgv/\n////////////////AwAICwcG/////////////wABCQsHBv////////////8IAQkIAwELBwb/////\n////CgECBgsH/////////////wECCgMACAYLB/////////8CCQACCgkGCwf/////////BgsHAgoD\nCggDCgkI/////wcCAwYCB/////////////8HAAgHBgAGAgD/////////AgcGAgMHAAEJ////////\n/wEGAgEIBgEJCAgHBv////8KBwYKAQcBAwf/////////CgcGAQcKAQgHAQAI/////wADBwAHCgAK\nCQYKB/////8HBgoHCggICgn/////////BggECwgG/////////////wMGCwMABgAEBv////////8I\nBgsIBAYJAAH/////////CQQGCQYDCQMBCwMG/////wYIBAYLCAIKAf////////8BAgoDAAsABgsA\nBAb/////BAsIBAYLAAIJAgoJ/////woJAwoDAgkEAwsDBgQGA/8IAgMIBAIEBgL/////////AAQC\nBAYC/////////////wEJAAIDBAIEBgQDCP////8BCQQBBAICBAb/////////CAEDCAYBCAQGBgoB\n/////woBAAoABgYABP////////8EBgMEAwgGCgMAAwkKCQP/CgkEBgoE/////////////wQJBQcG\nC/////////////8ACAMECQULBwb/////////BQABBQQABwYL/////////wsHBggDBAMFBAMBBf//\n//8JBQQKAQIHBgv/////////BgsHAQIKAAgDBAkF/////wcGCwUECgQCCgQAAv////8DBAgDBQQD\nAgUKBQILBwb/BwIDBwYCBQQJ/////////wkFBAAIBgAGAgYIB/////8DBgIDBwYBBQAFBAD/////\nBgIIBggHAgEIBAgFAQUI/wkFBAoBBgEHBgEDB/////8BBgoBBwYBAAcIBwAJBQT/BAAKBAoFAAMK\nBgoHAwcK/wcGCgcKCAUECgQICv////8GCQUGCwkLCAn/////////AwYLAAYDAAUGAAkF/////wAL\nCAAFCwABBQUGC/////8GCwMGAwUFAwH/////////AQIKCQULCQsICwUG/////wALAwAGCwAJBgUG\nCQECCv8LCAULBQYIAAUKBQIAAgX/BgsDBgMFAgoDCgUD/////wUICQUCCAUGAgMIAv////8JBQYJ\nBgAABgL/////////AQUIAQgABQYIAwgCBgII/wEFBgIBBv////////////8BAwYBBgoDCAYFBgkI\nCQb/CgEACgAGCQUABQYA/////wADCAUGCv////////////8KBQb/////////////////CwUKBwUL\n/////////////wsFCgsHBQgDAP////////8FCwcFCgsBCQD/////////CgcFCgsHCQgBCAMB////\n/wsBAgsHAQcFAf////////8ACAMBAgcBBwUHAgv/////CQcFCQIHCQACAgsH/////wcFAgcCCwUJ\nAgMCCAkIAv8CBQoCAwUDBwX/////////CAIACAUCCAcFCgIF/////wkAAQUKAwUDBwMKAv////8J\nCAIJAgEIBwIKAgUHBQL/AQMFAwcF/////////////wAIBwAHAQEHBf////////8JAAMJAwUFAwf/\n////////CQgHBQkH/////////////wUIBAUKCAoLCP////////8FAAQFCwAFCgsLAwD/////AAEJ\nCAQKCAoLCgQF/////woLBAoEBQsDBAkEAQMBBP8CBQECCAUCCwgEBQj/////AAQLAAsDBAULAgsB\nBQEL/wACBQAFCQILBQQFCAsIBf8JBAUCCwP/////////////AgUKAwUCAwQFAwgE/////wUKAgUC\nBAQCAP////////8DCgIDBQoDCAUEBQgAAQn/BQoCBQIEAQkCCQQC/////wgEBQgFAwMFAf//////\n//8ABAUBAAX/////////////CAQFCAUDCQAFAAMF/////wkEBf////////////////8ECwcECQsJ\nCgv/////////AAgDBAkHCQsHCQoL/////wEKCwELBAEEAAcEC/////8DAQQDBAgBCgQHBAsKCwT/\nBAsHCQsECQILCQEC/////wkHBAkLBwkBCwILAQAIA/8LBwQLBAICBAD/////////CwcECwQCCAME\nAwIE/////wIJCgIHCQIDBwcECf////8JCgcJBwQKAgcIBwACAAf/AwcKAwoCBwQKAQoABAAK/wEK\nAggHBP////////////8ECQEEAQcHAQP/////////BAkBBAEHAAgBCAcB/////wQAAwcEA///////\n//////8ECAf/////////////////CQoICgsI/////////////wMACQMJCwsJCv////////8AAQoA\nCggICgv/////////AwEKCwMK/////////////wECCwELCQkLCP////////8DAAkDCQsBAgkCCwn/\n////AAILCAAL/////////////wMCC/////////////////8CAwgCCAoKCAn/////////CQoCAAkC\n/////////////wIDCAIICgABCAEKCP////8BCgL/////////////////AQMICQEI////////////\n/wAJAf////////////////8AAwj//////////////////////////////////////w==\n\"\"\"\n\n#static const char cases[256][2]\nCASES = (256, 2), \"\"\"\nAP8BAAEBAgABAgMAAgMFAAEDAgEDAwUBAgUFBAUJCAABBAICAwQFAgQCBgIGCQsAAwgFBQcDCQEG\nEA4DDAwFGAEFAwECBAUDAwYHAAUKCQAEAwYEBgsOAQYRDAQLBgUZAggFBwUMCAEGEgwFDgcFHAYV\nCwQMDwUeCgUGIAYnAgwBBgQAAwUGAAIGBgMFCw4AAwkGBQcEDAEFDgsDCQQFGgMKBgYHBQwCBhMK\nAQwNBhgHBwwJDQEHCQwUBiEHDQMMAgoGBwUNCwIFEAwHCAMFHQYWCgIMEQYbDgkGIgUnAg4FFA4F\nCQUFIAsKBiMFKQIQDBcGJQcOAxAGLgQGAxUBCAEHAwIEAQYBAwcHAQYKDAACBwUGBgwLAQUPCQIO\nBgUbAgkFCAYNDgIGFAwGCgMGGQUSCAIMEAUfCwkFIgYoAg0DCwcCBg4MAwcGDQAMDgcIBhcMCgoE\nBhwMFQcKBikDDQUVCQMLCAUhDBYHCwYqAw4OCwUkBiwCEQYvAxIEBwEJAgsGCAYPCgAFEQwICwcG\nGgUTDgQMEgYdCAQFIwUoAg8FFgsFDBMGHg4KBiQGKwQECQcFJQcPAxEFLAITAxYBCgUXDAsOCAYf\nCQYHDAUqAw8LCwYmBi0EBQUtAxMCFQELCAUFJgUrAhIFLgMUAhYBDAUvAhQDFwENAhcBDgEPAP8=\n\"\"\"\n\n#static const char tiling1[16][3]\nTILING1 = (16, 3), \"\"\"\nAAgDAAEJAQIKAwsCBAcICQUECgYFBwYLBwsGCgUGCQQFBAgHAwILAQoCAAkBAAMI\n\"\"\"\n\n#static const char tiling2[24][6]\nTILING2 = (24, 6), \"\"\"\nAQgDCQgBAAsCCAsABAMABwMECQIKAAIJAAUEAQUAAwoBCwoDAQYFAgYBBwIDBgIHCQcIBQcJBggE\nCwgGCgQJBgQKCwUKBwULCwoFBwsFCgkEBgoEBgQICwYICQgHBQkHBwMCBgcCAQUGAgEGAwEKCwMK\nAAQFAQAFCQoCAAkCBAADBwQDAAILCAALAQMICQEI\n\"\"\"\n\n#static const char tiling3_1[24][6]\nTILING3_1 = (24, 6), \"\"\"\nAAgDAQIKCQUEAAgDAwAICwcGAQkAAgMLAAEJCAQHCQABBQoGAQIKCQUECgECBgsHCAQHAwsCAgML\nCgYFBQoGBAcIBAkFBwYLBQkECwYHBgoFCAcECwMCBQYKBwQIAgsDAgEKBwsGCgIBBAUJAQAJBgoF\nCQEABwQIAAkBCwMCCAADBgcLBAUJAwgAAwgACgIB\n\"\"\"\n\n#static const char tiling3_2[24][12]\nTILING3_2 = (24, 12), \"\"\"\nCgMCCggDCgEACAoAAwQIAwUEAwAJBQMJBggHBgAIBgsDAAYDCwADCwkACwIBCQsBBwkEBwEJBwgA\nAQcABgEKBgABCQAGCQYFBAoFBAIKBAkBAgQBBwILBwECBwYKAQcKAgcLAgQHAgMIBAIIBQsGBQML\nBQoCAwUCCAYHCAoGCAQFCggFCwUGCwkFCwcECQsEBgULBQkLBAcLBAsJBwYIBgoIBQQIBQgKBgsF\nCwMFAgoFAgUDCwcCBwQCCAMCCAIECwIHAgEHCgYHCgcBBQoECgIEAQkEAQQCCgEGAQAGBgAJBQYJ\nBAkHCQEHAAgHAAcBAwALAAkLAQILAQsJBwgGCAAGAwsGAwYACAQDBAUDCQADCQMFAgMKAwgKAAEK\nAAoI\n\"\"\"\n\n#static const char tiling4_1[8][6]\nTILING4_1 = (8, 6), \"\"\"\nAAgDBQoGAAEJCwcGAQIKCAQHCQUEAgMLBAUJCwMCCgIBBwQICQEABgcLAwgABgoF\n\"\"\"\n\n#static const char tiling4_2[8][18]\nTILING4_2 = (8, 18), \"\"\"\nCAUABQgGAwYIBgMKAAoDCgAFCQYBBgkHAAcJBwALAQsACwEGCgcCBwoEAQQKBAEIAggBCAIHCwQD\nBAsFAgULBQIJAwkCCQMEAwQLBQsECwUCCQIFAgkDBAMJAgcKBAoHCgQBCAEEAQgCBwIIAQYJBwkG\nCQcACwAHAAsBBgELAAUIBggFCAYDCgMGAwoABQAK\n\"\"\"\n\n#static const char tiling5[48][9]\nTILING5 = (48, 9), \"\"\"\nAggDAgoICgkIAQsCAQkLCQgLBAEJBAcBBwMBCAUECAMFAwEFAAoBAAgKCAsKCwQHCwIEAgAEBwAI\nBwYABgIACQMACQUDBQcDAwYLAwAGAAQGAwkAAwsJCwoJBQIKBQQCBAACCQYFCQAGAAIGAAcIAAEH\nAQUHCgABCgYABgQABgMLBgUDBQEDCgcGCgEHAQMHAQQJAQIEAgYECwECCwcBBwUBCAIDCAQCBAYC\nAgUKAgMFAwcFBwoGBwgKCAkKBgkFBgsJCwgJBQgEBQoICgsIBAsHBAkLCQoLBAcLBAsJCQsKBQQI\nBQgKCggLBgUJBgkLCwkIBwYKBwoICAoJAgoFAgUDAwUHCAMCCAIEBAIGCwIBCwEHBwEFAQkEAQQC\nAgQGCgYHCgcBAQcDBgsDBgMFBQMBCgEACgAGBgAEAAgHAAcBAQcFCQUGCQYAAAYCBQoCBQIEBAIA\nAwAJAwkLCwkKAwsGAwYAAAYECQADCQMFBQMHBwgABwAGBgACCwcECwQCAgQAAAEKAAoICAoLCAQF\nCAUDAwUBBAkBBAEHBwEDAQILAQsJCQsIAgMIAggKCggJ\n\"\"\"\n\n#static const char tiling6_1_1[48][9]\nTILING6_1_1 = (48, 9), \"\"\"\nBgUKAwEICQgBCwcGCQMBAwkIAQIKBwAEAAcDAwAIBQIGAgUBBQQJAgALCAsACgYFCAIAAggLCgYF\nAAQDBwMEAwAIBgQKCQoECAMACgcFBwoLCAQHCgACAAoJBwYLAAIJCgkCAgMLBAEFAQQAAAEJBgMH\nAwYCCQABCwQGBAsICwcGAQUABAAFAAEJBwULCgsFBAcIAQMKCwoDCQUECwEDAQsKCgECCAUHBQgJ\nCAQHAgYBBQEGAQIKBAYICwgGAgMLBQcJCAkHCwIDCQYEBgkKCQUEAwcCBgIHBAUJAgcDBwIGAwIL\nBAYJCgkGCwMCCQcFBwkICgIBCAYEBggLBwQIAQYCBgEFAgEKBwUICQgFBAUJAwELCgsBCAcECgMB\nAwoLCQEACwUHBQsKBgcLAAUBBQAEAQAJBgQLCAsECQEABwMGAgYDCwMCBQEEAAQBCwYHCQIAAgkK\nBwQIAgAKCQoAAAMIBQcKCwoHCAADCgQGBAoJBQYKAwQABAMHBQYKAAIICwgCCQQFCwACAAsICAAD\nBgIFAQUCCgIBBAAHAwcABgcLAQMJCAkDCgUGCAEDAQgJ\n\"\"\"\n\n#static const char tiling6_1_2[48][27]\nTILING6_1_2 = (48, 27), \"\"\"\nAQwDDAoDBgMKAwYIBQgGCAUMDAkIAQkMDAUKAQwDAQsMCwEGCQYBBgkHDAcJCQgMDAgDCwcMBAwA\nBAEMAQQKBwoECgcCDAIHBwMMDAMAAQIMBgwCBgMMAwYIBQgGCAUADAAFBQEMDAECAwAMAAwCDAkC\nBQIJAgULBAsFCwQMDAgLAAgMDAQJAAwCAAoMCgAFCAUABQgGDAYICAsMDAsCCgYMBAwADAUACgAF\nAAoDBgMKAwYMDAcDBAcMDAYFBAwGDAgGAwYIBgMKAAoDCgAMDAkKBAkMDAAIBQwHBQgMCAUACgAF\nAAoDDAMKCgsMDAsHCAMMAgwAAggMCAIHCgcCBwoEDAQKCgkMDAkACAQMAgwADAsABwALAAcJBgkH\nCQYMDAoJAgoMDAYLBQwBBQIMAgULBAsFCwQDDAMEBAAMDAABAgMMBwwDBwAMAAcJBgkHCQYBDAEG\nBgIMDAIDAAEMBgwEBgkMCQYBCwEGAQsADAALCwgMDAgECQAMBQwBDAYBCwEGAQsABwALAAcMDAQA\nBQQMDAcGBQwHDAkHAAcJBwALAQsACwEMDAoLBQoMDAEJAwwBDAgBBAEIAQQKBwoECgcMDAsKAwsM\nDAcIAwwBAwkMCQMECwQDBAsFDAULCwoMDAoBCQUMBwwFBwoMCgcCCAIHAggBDAEICAkMDAkFCgEM\nBgwCDAcCCAIHAggBBAEIAQQMDAUBBgUMDAQHBgwEDAoEAQQKBAEIAggBCAIMDAsIBgsMDAIKBwwF\nDAsFAgULBQIJAwkCCQMMDAgJBwgMDAMLBAwGBAsMCwQDCQMEAwkCDAIJCQoMDAoGCwIMBwwDDAQD\nCQMEAwkCBQIJAgUMDAYCBwYMDAUEAwwHAwQMBAMJAgkDCQIFDAUCAgYMDAYHBAUMBgwEDAsEAwQL\nBAMJAgkDCQIMDAoJBgoMDAILBQwHBQsMCwUCCQIFAgkDDAMJCQgMDAgHCwMMBAwGBAoMCgQBCAEE\nAQgCDAIICAsMDAsGCgIMAgwGAgcMBwIIAQgCCAEEDAQBAQUMDAUGBwQMBQwHDAoHAgcKBwIIAQgC\nCAEMDAkIBQkMDAEKAQwDDAkDBAMJAwQLBQsECwUMDAoLAQoMDAUJAQwDAQgMCAEECgQBBAoHDAcK\nCgsMDAsDCAcMBwwFBwkMCQcACwAHAAsBDAELCwoMDAoFCQEMAQwFAQYMBgELAAsBCwAHDAcAAAQM\nDAQFBgcMBAwGDAkGAQYJBgELAAsBCwAMDAgLBAgMDAAJAwwHDAAHCQcABwkGAQYJBgEMDAIGAwIM\nDAEAAQwFDAIFCwUCBQsEAwQLBAMMDAAEAQAMDAMCAAwCAAsMCwAHCQcABwkGDAYJCQoMDAoCCwYM\nAAwCDAgCBwIIAgcKBAoHCgQMDAkKAAkMDAQIBwwFDAgFAAUIBQAKAwoACgMMDAsKBwsMDAMIBgwE\nBggMCAYDCgMGAwoADAAKCgkMDAkECAAMAAwEAAUMBQAKAwoACgMGDAYDAwcMDAcEBQYMAgwADAoA\nBQAKAAUIBggFCAYMDAsIAgsMDAYKAgwAAgkMCQIFCwUCBQsEDAQLCwgMDAgACQQMAgwGDAMGCAYD\nBggFAAUIBQAMDAEFAgEMDAADAAwEDAEECgQBBAoHAgcKBwIMDAMHAAMMDAIBAwwBDAsBBgELAQYJ\nBwkGCQcMDAgJAwgMDAcLAwwBAwoMCgMGCAYDBggFDAUICAkMDAkBCgUM\n\"\"\"\n\n#static const char tiling6_2[48][15]\nTILING6_2 = (48, 15), \"\"\"\nAQoDBgMKAwYIBQgGCAUJAQsDCwEGCQYBBgkHCAcJBAEAAQQKBwoECgcCAwIHBgMCAwYIBQgGCAUA\nAQAFAAkCBQIJAgULBAsFCwQIAAoCCgAFCAUABQgGCwYIBAUACgAFAAoDBgMKAwYHBAgGAwYIBgMK\nAAoDCgAJBQgHCAUACgAFAAoDCwMKAggACAIHCgcCBwoECQQKAgsABwALAAcJBgkHCQYKBQIBAgUL\nBAsFCwQDAAMEBwADAAcJBgkHCQYBAgEGBgkECQYBCwEGAQsACAALBQYBCwEGAQsABwALAAcEBQkH\nAAcJBwALAQsACwEKAwgBBAEIAQQKBwoECgcLAwkBCQMECwQDBAsFCgULBwoFCgcCCAIHAggBCQEI\nBgcCCAIHAggBBAEIAQQFBgoEAQQKBAEIAggBCAILBwsFAgULBQIJAwkCCQMIBAsGCwQDCQMEAwkC\nCgIJBwQDCQMEAwkCBQIJAgUGAwQHBAMJAgkDCQIFBgUCBgsEAwQLBAMJAgkDCQIKBQsHCwUCCQIF\nAgkDCAMJBAoGCgQBCAEEAQgCCwIIAgcGBwIIAQgCCAEEBQQBBQoHAgcKBwIIAQgCCAEJAQkDBAMJ\nAwQLBQsECwUKAQgDCAEECgQBBAoHCwcKBwkFCQcACwAHAAsBCgELAQYFBgELAAsBCwAHBAcABAkG\nAQYJBgELAAsBCwAIAwAHCQcABwkGAQYJBgECAQIFCwUCBQsEAwQLBAMAAAsCCwAHCQcABwkGCgYJ\nAAgCBwIIAgcKBAoHCgQJBwgFAAUIBQAKAwoACgMLBggECAYDCgMGAwoACQAKAAUEBQAKAwoACgMG\nBwYDAgoABQAKAAUIBggFCAYLAgkACQIFCwUCBQsECAQLAgMGCAYDBggFAAUIBQABAAEECgQBBAoH\nAgcKBwIDAwsBBgELAQYJBwkGCQcIAwoBCgMGCAYDBggFCQUI\n\"\"\"\n\n#static const char tiling7_1[16][9]\nTILING7_1 = (16, 9), \"\"\"\nCQUECgECCAMACwcGCAMACgECAwAIBQQJBwYLCAQHCQABCwIDCgYFCwIDCQABAAEJBgUKBAcIAQIK\nBwYLBQQJAgMLBAcIBgUKCwMCCAcECgUGCgIBCwYHCQQFCQEACgUGCAcEBQYKAwILAQAJBwQIAQAJ\nAwILCAADCQQFCwYHBgcLAAMIAgEKBAUJAgEKAAMI\n\"\"\"\n\n#static const char tiling7_2[16][3][15]\nTILING7_2 = (16, 3, 15), \"\"\"\nAQIKAwQIBAMFAAUDBQAJAwAICQEEAgQBBAIFCgUCCQUEAAoBCgAICggCAwIIAwAIAQYKBgEHAgcB\nBwILAQIKCwMGAAYDBgAHCAcACwcGAggDCAIKCAoAAQAKCQUECwMGAAYDBgAHCAcACwcGAwQIBAMF\nAAUDBQAJAwAIBAkHCwcJBQsJCwUGAAEJAgcLBwIEAwQCBAMIAgMLCAAHAQcABwEECQQBCAQHAwkA\nCQMLCQsBAgELAgMLAAUJBQAGAQYABgEKAAEJCgIFAwUCBQMGCwYDBgUKAQsCCwEJCwkDAAMJBgUK\nCAAHAQcABwEECQQBCAQHAAUJBQAGAQYABgEKAAEJBQoECAQKBggKCAYHCwcGCQEEAgQBBAIFCgUC\nCQUEAQYKBgEHAgcBBwILAQIKBgsFCQULBwkLCQcECAQHCgIFAwUCBQMGCwYDBgUKAgcLBwIEAwQC\nBAMIAgMLBwgGCgYIBAoICgQFBwQIBQIKAgUDBgMFAwYLCgUGCwcCBAIHAgQDCAMECwMCBggHCAYK\nCAoEBQQKBgcLBAEJAQQCBQIEAgUKBAUJCgYBBwEGAQcCCwIHCgIBBQsGCwUJCwkHBAcJCgUGBwAI\nAAcBBAEHAQQJBwQICQUABgAFAAYBCgEGCQEABAoFCgQICggGBwYICwMCCQUABgAFAAYBCgEGCQEA\nBQIKAgUDBgMFAwYLCgUGAgsBCQELAwkLCQMACQEACwcCBAIHAgQDCAMECwMCBwAIAAcBBAEHAQQJ\nBwQIAAkDCwMJAQsJCwECBAUJBgMLAwYABwAGAAcIBgcLCAQDBQMEAwUACQAFCAADBwkECQcLCQsF\nBgULCAADCgYBBwEGAQcCCwIHCgIBBgMLAwYABwAGAAcIBgcLAwgCCgIIAAoICgABCgIBCAQDBQME\nAwUACQAFCAADBAEJAQQCBQIEAgUKBAUJAQoACAAKAggKCAID\n\"\"\"\n\n#static const char tiling7_3[16][3][27]\nTILING7_3 = (16, 3, 27), \"\"\"\nDAIKDAoFDAUEDAQIDAgDDAMADAAJDAkBDAECDAUEDAQIDAgDDAMCDAIKDAoBDAEADAAJDAkFBQQM\nCgUMAgoMAwIMCAMMAAgMAQAMCQEMBAkMDAAIDAgHDAcGDAYKDAoBDAECDAILDAsDDAMADAcGDAYK\nDAoBDAEADAAIDAgDDAMCDAILDAsHBwYMCAcMAAgMAQAMCgEMAgoMAwIMCwMMBgsMCQUMAAkMAwAM\nCwMMBgsMBwYMCAcMBAgMBQQMAwAMCwMMBgsMBQYMCQUMBAkMBwQMCAcMAAgMDAMADAAJDAkFDAUG\nDAYLDAsHDAcEDAQIDAgDDAEJDAkEDAQHDAcLDAsCDAIDDAMIDAgADAABDAQHDAcLDAsCDAIBDAEJ\nDAkADAADDAMIDAgEBAcMCQQMAQkMAgEMCwIMAwsMAAMMCAAMBwgMDAMLDAsGDAYFDAUJDAkADAAB\nDAEKDAoCDAIDDAYFDAUJDAkADAADDAMLDAsCDAIBDAEKDAoGBgUMCwYMAwsMAAMMCQAMAQkMAgEM\nCgIMBQoMCgYMAQoMAAEMCAAMBwgMBAcMCQQMBQkMBgUMAAEMCAAMBwgMBgcMCgYMBQoMBAUMCQQM\nAQkMDAABDAEKDAoGDAYHDAcIDAgEDAQFDAUJDAkACwcMAgsMAQIMCQEMBAkMBQQMCgUMBgoMBwYM\nAQIMCQEMBAkMBwQMCwcMBgsMBQYMCgUMAgoMDAECDAILDAsHDAcEDAQJDAkFDAUGDAYKDAoBCAQM\nAwgMAgMMCgIMBQoMBgUMCwYMBwsMBAcMAgMMCgIMBQoMBAUMCAQMBwgMBgcMCwYMAwsMDAIDDAMI\nDAgEDAQFDAUKDAoGDAYHDAcLDAsCDAQIDAgDDAMCDAIKDAoFDAUGDAYLDAsHDAcEDAMCDAIKDAoF\nDAUEDAQIDAgHDAcGDAYLDAsDAwIMCAMMBAgMBQQMCgUMBgoMBwYMCwcMAgsMDAcLDAsCDAIBDAEJ\nDAkEDAQFDAUKDAoGDAYHDAIBDAEJDAkEDAQHDAcLDAsGDAYFDAUKDAoCAgEMCwIMBwsMBAcMCQQM\nBQkMBgUMCgYMAQoMDAYKDAoBDAEADAAIDAgHDAcEDAQJDAkFDAUGDAEADAAIDAgHDAcGDAYKDAoF\nDAUEDAQJDAkBAQAMCgEMBgoMBwYMCAcMBAgMBQQMCQUMAAkMCwMMBgsMBQYMCQUMAAkMAQAMCgEM\nAgoMAwIMBQYMCQUMAAkMAwAMCwMMAgsMAQIMCgEMBgoMDAUGDAYLDAsDDAMADAAJDAkBDAECDAIK\nDAoFCQEMBAkMBwQMCwcMAgsMAwIMCAMMAAgMAQAMBwQMCwcMAgsMAQIMCQEMAAkMAwAMCAMMBAgM\nDAcEDAQJDAkBDAECDAILDAsDDAMADAAIDAgHDAUJDAkADAADDAMLDAsGDAYHDAcIDAgEDAQFDAAD\nDAMLDAsGDAYFDAUJDAkEDAQHDAcIDAgAAAMMCQAMBQkMBgUMCwYMBwsMBAcMCAQMAwgMCAAMBwgM\nBgcMCgYMAQoMAgEMCwIMAwsMAAMMBgcMCgYMAQoMAAEMCAAMAwgMAgMMCwIMBwsMDAYHDAcIDAgA\nDAABDAEKDAoCDAIDDAMLDAsGCgIMBQoMBAUMCAQMAwgMAAMMCQAMAQkMAgEMBAUMCAQMAwgMAgMM\nCgIMAQoMAAEMCQAMBQkMDAQFDAUKDAoCDAIDDAMIDAgADAABDAEJDAkE\n\"\"\"\n\n#static const char tiling7_4_1[16][15]\nTILING7_4_1 = (16, 15), \"\"\"\nAwQIBAMKAgoDBAoFCQEAAQYKBgEIAAgBBggHCwMCCwMGCQYDBgkFAAkDBwQIAgcLBwIJAQkCBwkE\nCAADAAUJBQALAwsABQsGCgIBCAAHCgcABwoGAQoABAUJCQEECwQBBAsHAgsBBQYKCgIFCAUCBQgE\nAwgCBgcLBQIKAgUIBAgFAggDCwcGBAEJAQQLBwsEAQsCCgYFBwAIAAcKBgoHAAoBCQUECQUACwAF\nAAsDBgsFAQIKCwcCCQIHAgkBBAkHAwAIBgMLAwYJBQkGAwkACAQHCgYBCAEGAQgABwgGAgMLCAQD\nCgMEAwoCBQoEAAEJ\n\"\"\"\n\n#static const char tiling7_4_2[16][27]\nTILING7_4_2 = (16, 27), \"\"\"\nCQQIBAkFCgUJAQoJCgECAAIBAgADCAMACQgACwYKBgsHCAcLAwgLCAMAAgADAAIBCgECCwoCCwMI\nAAgDCAAJCAkEBQQJBAUHBgcFBwYLBwsICAcLBwgECQQIAAkICQABAwEAAQMCCwIDCAsDCgUJBQoG\nCwYKAgsKCwIDAQMCAwEACQABCgkBCAAJAQkACQEKCQoFBgUKBQYEBwQGBAcIBAgJCQEKAgoBCgIL\nCgsGBwYLBgcFBAUHBQQJBQkKCgILAwsCCwMICwgHBAcIBwQGBQYEBgUKBgoLCwIKAgsDCAMLBwgL\nCAcEBgQHBAYFCgUGCwoGCgEJAQoCCwIKBgsKCwYHBQcGBwUECQQFCgkFCQAIAAkBCgEJBQoJCgUG\nBAYFBgQHCAcECQgECQUKBgoFCgYLCgsCAwILAgMBAAEDAQAJAQkKCwcIBAgHCAQJCAkAAQAJAAED\nAgMBAwILAwsICAMLAwgACQAIBAkICQQFBwUEBQcGCwYHCAsHCgYLBwsGCwcICwgDAAMIAwACAQIA\nAgEKAgoLCAQJBQkECQUKCQoBAgEKAQIAAwACAAMIAAgJ\n\"\"\"\n\n#static const char tiling8[6][6]\nTILING8 = (6, 6), \"\"\"\nCQgKCggLAQUDAwUHAAQCBAYCAAIEBAIGAQMFAwcFCQoICgsI\n\"\"\"\n\n#static const char tiling9[8][12]\nTILING9 = (8, 12), \"\"\"\nAgoFAwIFAwUEAwQIBAcLCQQLCQsCCQIBCgcGAQcKAQgHAQAIAwYLAAYDAAUGAAkFAwsGAAMGAAYF\nAAUJCgYHAQoHAQcIAQgABAsHCQsECQILCQECAgUKAwUCAwQFAwgE\n\"\"\"\n\n#static const char tiling10_1_1[6][12]\nTILING10_1_1 = (6, 12), \"\"\"\nBQoHCwcKCAEJAQgDAQIFBgUCBAMAAwQHCwAIAAsCBAkGCgYJCQAKAgoABggECAYLBwIDAgcGAAEE\nBQQBBwkFCQcICgELAwsB\n\"\"\"\n\n#static const char tiling10_1_1_[6][12]\nTILING10_1_1_ = (6, 12), \"\"\"\nBQkHCAcJCwEKAQsDAwIHBgcCBAEAAQQFCgAJAAoCBAgGCwYICAALAgsABgkECQYKBQIBAgUGAAME\nBwQDBwoFCgcLCQEIAwgB\n\"\"\"\n\n#static const char tiling10_1_2[6][24]\nTILING10_1_2 = (6, 24), \"\"\"\nAwsHAwcICQgHBQkHCQUKCQoBAwEKCwMKBwYFBwUEAAQFAQAFAAECAAIDBwMCBgcCCwIKBgsKCwYE\nCwQIAAgECQAEAAkKAAoCCwIKCwoGBAYKCQQKBAkABAAICwgAAgsABwYFBAcFBwQABwADAgMAAQIA\nAgEFAgUGBwgDCwcDBwsKBwoFCQUKAQkKCQEDCQMI\n\"\"\"\n\n#static const char tiling10_2[6][24]\nTILING10_2 = (6, 24), \"\"\"\nDAUJDAkIDAgDDAMBDAEKDAoLDAsHDAcFDAEADAAEDAQHDAcDDAMCDAIGDAYFDAUBBAgMBgQMCgYM\nCQoMAAkMAgAMCwIMCAsMDAkEDAQGDAYLDAsIDAgADAACDAIKDAoJAAMMBAAMBQQMAQUMAgEMBgIM\nBwYMAwcMCgUMCwoMAwsMAQMMCQEMCAkMBwgMBQcM\n\"\"\"\n\n#static const char tiling10_2_[6][24]\nTILING10_2_ = (6, 24), \"\"\"\nCAcMCQgMAQkMAwEMCwMMCgsMBQoMBwUMBAUMAAQMAwAMBwMMBgcMAgYMAQIMBQEMDAsGDAYEDAQJ\nDAkKDAoCDAIADAAIDAgLBgoMBAYMCAQMCwgMAgsMAAIMCQAMCgkMDAcEDAQADAABDAEFDAUGDAYC\nDAIDDAMHDAcLDAsKDAoBDAEDDAMIDAgJDAkFDAUH\n\"\"\"\n\n#static const char tiling11[12][12]\nTILING11 = (12, 12), \"\"\"\nAgoJAgkHAgcDBwkEAQYCAQgGAQkICAcGCAMBCAEGCAYEBgEKAAgLAAsFAAUBBQsGCQUHCQcCCQIA\nAgcLBQAEBQsABQoLCwMABQQABQALBQsKCwADCQcFCQIHCQACAgsHAAsIAAULAAEFBQYLCAEDCAYB\nCAQGBgoBAQIGAQYIAQgJCAYHAgkKAgcJAgMHBwQJ\n\"\"\"\n\n#static const char tiling12_1_1[24][12]\nTILING12_1_1 = (24, 12), \"\"\"\nBwYLCgMCAwoICQgKBgUKCQIBAgkLCAsJCgYFBwkECQcBAwEHBwYLBAgFAwUIBQMBBQQJCAEAAQgK\nCwoIAQIKAAkDBQMJAwUHCgECAAsDCwAGBAYACAMAAgkBCQIEBgQCAwAIAgsBBwELAQcFBgUKBwsE\nAgQLBAIACQUEBggHCAYAAgAGCAMABwQLCQsECwkKBAcICwADAAsJCgkLBAcIBQkGAAYJBgACCwcG\nBAoFCgQCAAIECwIDAQgACAEHBQcBAAEJAwgCBAIIAgQGAgMLAQoABgAKAAYECQABAwoCCgMFBwUD\nCQABBAUICggFCAoLCAQHBQsGCwUDAQMFBQQJBgoHAQcKBwEDCgECBQYJCwkGCQsICwIDBgcKCAoH\nCggJ\n\"\"\"\n\n#static const char tiling12_1_1_[24][12]\nTILING12_1_1_ = (24, 12), \"\"\"\nAwILCgcGBwoICQgKAgEKCQYFBgkLCAsJCQQFBwoGCgcBAwEHBwQIBgsFAwULBQMBAQAJCAUEBQgK\nCwoIAQAJAgoDBQMKAwUHCwMCAAoBCgAGBAYACQEAAggDCAIEBgQCAwILAAgBBwEIAQcFBgcLBQoE\nAgQKBAIACAcEBgkFCQYAAgAGCAcEAwALCQsACwkKAAMICwQHBAsJCgkLBAUJBwgGAAYIBgACCgUG\nBAsHCwQCAAIECAADAQsCCwEHBQcBAAMIAQkCBAIJAgQGAgEKAwsABgALAAYECgIBAwkACQMFBwUD\nCQQFAAEICggBCAoLCwYHBQgECAUDAQMFBQYKBAkHAQcJBwEDCgUGAQIJCwkCCQsICwYHAgMKCAoD\nCggJ\n\"\"\"\n\n#static const char tiling12_1_2[24][24]\nTILING12_1_2 = (24, 24), \"\"\"\nBwMLAwcICQgHBgkHCQYKAgoGCwIGAgsDBgIKAgYLCAsGBQgGCAUJAQkFCgEFAQoCCgkFCQoBAwEK\nBgMKAwYHBAcGBQQGBAUJBwgLAwsICwMBCwEGBQYBBgUEBgQHCAcEBQEJAQUKCwoFBAsFCwQIAAgE\nCQAEAAkBAQkKBQoJCgUHCgcCAwIHAgMAAgABCQEACgsCCwoGBAYKAQQKBAEAAwABAgMBAwILCAkA\nCQgEBgQIAwYIBgMCAQIDAAEDAQAJAwsIBwgLCAcFCAUAAQAFAAECAAIDCwMCBgsKAgoLCgIACgAF\nBAUABQQHBQcGCwYHCQgECAkAAgAJBQIJAgUGBwYFBAcFBwQICAQACQAEAAkKAAoDCwMKAwsHAwcI\nBAgHBAAIAAQJCgkEBwoECgcLAwsHCAMHAwgABAkIAAgJCAACCAIHBgcCBwYFBwUECQQFCwoGCgsC\nAAILBwALAAcEBQQHBgUHBQYKCwgDCAsHBQcLAgULBQIBAAECAwACAAMIAAgJBAkICQQGCQYBAgEG\nAQIDAQMACAADAgoLBgsKCwYECwQDAAMEAwABAwECCgIBCQoBCgkFBwUJAAcJBwADAgMAAQIAAgEK\nCQUBCgEFAQoLAQsACAALAAgEAAQJBQkECAsHCwgDAQMIBAEIAQQFBgUEBwYEBgcLBQoJAQkKCQED\nCQMEBwQDBAcGBAYFCgUGCgYCCwIGAgsIAggBCQEIAQkFAQUKBgoFCwcDCAMHAwgJAwkCCgIJAgoG\nAgYLBwsG\n\"\"\"\n\n#static const char tiling12_2[24][24]\nTILING12_2 = (24, 24), \"\"\"\nCQgMCgkMAgoMAwIMCwMMBgsMBwYMCAcMCAsMCQgMAQkMAgEMCgIMBQoMBgUMCwYMAwEMBwMMBAcM\nCQQMBQkMBgUMCgYMAQoMDAMBDAEFDAUGDAYLDAsHDAcEDAQIDAgDCwoMCAsMAAgMAQAMCQEMBAkM\nBQQMCgUMDAUHDAcDDAMCDAIKDAoBDAEADAAJDAkFBAYMAAQMAQAMCgEMAgoMAwIMCwMMBgsMBgQM\nAgYMAwIMCAMMAAgMAQAMCQEMBAkMDAcFDAUBDAEADAAIDAgDDAMCDAILDAsHDAIADAAEDAQFDAUK\nDAoGDAYHDAcLDAsCAgAMBgIMBwYMCAcMBAgMBQQMCQUMAAkMDAkKDAoLDAsHDAcEDAQIDAgDDAMA\nDAAJCgkMCwoMBwsMBAcMCAQMAwgMAAMMCQAMDAACDAIGDAYHDAcIDAgEDAQFDAUJDAkAAAIMBAAM\nBQQMCgUMBgoMBwYMCwcMAgsMBQcMAQUMAAEMCAAMAwgMAgMMCwIMBwsMDAQGDAYCDAIDDAMIDAgA\nDAABDAEJDAkEDAYEDAQADAABDAEKDAoCDAIDDAMLDAsGBwUMAwcMAgMMCgIMAQoMAAEMCQAMBQkM\nDAoLDAsIDAgADAABDAEJDAkEDAQFDAUKAQMMBQEMBgUMCwYMBwsMBAcMCAQMAwgMDAEDDAMHDAcE\nDAQJDAkFDAUGDAYKDAoBDAsIDAgJDAkBDAECDAIKDAoFDAUGDAYLDAgJDAkKDAoCDAIDDAMLDAsG\nDAYHDAcI\n\"\"\"\n\n#static const char tiling12_2_[24][24]\nTILING12_2_ = (24, 24), \"\"\"\nDAILDAsHDAcGDAYKDAoJDAkIDAgDDAMCDAEKDAoGDAYFDAUJDAkIDAgLDAsCDAIBDAQFDAUKDAoG\nDAYHDAcDDAMBDAEJDAkEBwYMCAcMBAgMBQQMAQUMAwEMCwMMBgsMDAAJDAkFDAUEDAQIDAgLDAsK\nDAoBDAEAAQIMCQEMAAkMAwAMBwMMBQcMCgUMAgoMDAECDAILDAsDDAMADAAEDAQGDAYKDAoBDAMA\nDAAJDAkBDAECDAIGDAYEDAQIDAgDAwAMCwMMAgsMAQIMBQEMBwUMCAcMAAgMBgUMCwYMBwsMBAcM\nAAQMAgAMCgIMBQoMDAcEDAQJDAkFDAUGDAYCDAIADAAIDAgHCAcMAAgMAwAMCwMMCgsMCQoMBAkM\nBwQMDAcIDAgADAADDAMLDAsKDAoJDAkEDAQHBAcMCQQMBQkMBgUMAgYMAAIMCAAMBwgMDAUGDAYL\nDAsHDAcEDAQADAACDAIKDAoFDAADDAMLDAsCDAIBDAEFDAUHDAcIDAgAAAMMCQAMAQkMAgEMBgIM\nBAYMCAQMAwgMAgEMCwIMAwsMAAMMBAAMBgQMCgYMAQoMDAIBDAEJDAkADAADDAMHDAcFDAUKDAoC\nCQAMBQkMBAUMCAQMCwgMCgsMAQoMAAEMDAYHDAcIDAgEDAQFDAUBDAEDDAMLDAsGBQQMCgUMBgoM\nBwYMAwcMAQMMCQEMBAkMCgEMBgoMBQYMCQUMCAkMCwgMAgsMAQIMCwIMBwsMBgcMCgYMCQoMCAkM\nAwgMAgMM\n\"\"\"\n\n#static const char tiling13_1[2][12]\nTILING13_1 = (2, 12), \"\"\"\nCwcGAQIKCAMACQUECAQHAgMLCQABCgYF\n\"\"\"\n\n#static const char tiling13_1_[2][12]\nTILING13_1_ = (2, 12), \"\"\"\nBwQICwMCAQAJBQYKBgcLCgIBAAMIBAUJ\n\"\"\"\n\n#static const char tiling13_2[2][6][18]\nTILING13_2 = (2, 6, 18), \"\"\"\nAQIKCwcGAwQIBAMFAAUDBQAJCAMACwcGCQEEAgQBBAIFCgUCCQUECAMAAQYKBgEHAgcBBwILCQUE\nAQIKCwMGAAYDBgAHCAcACQUECwcGAAoBCgAICggCAwIIAQIKAwAIBAkHCwcJBQsJCwUGAgMLCAQH\nAAUJBQAGAQYABgEKCQABCAQHCgIFAwUCBQMGCwYDBgUKCQABAgcLBwIEAwQCBAMIBgUKAgMLCAAH\nAQcABwEECQQBBgUKCAQHAQsCCwEJCwkDAAMJAgMLAAEJBQoECAQKBggKCAYH\n\"\"\"\n\n#static const char tiling13_2_[2][6][18]\nTILING13_2_ = (2, 6, 18), \"\"\"\nCgUGCwMCBwAIAAcBBAEHAQQJCwMCBwQICQUABgAFAAYBCgEGAQAJBwQIBQIKAgUDBgMFAwYLCgUG\nAQAJCwcCBAIHAgQDCAMECgUGBwQIAgsBCQELAwkLCQMACwMCCQEABAoFCgQICggGBwYIBgcLCAAD\nBAEJAQQCBQIEAgUKCAADBAUJCgYBBwEGAQcCCwIHAgEKBAUJBgMLAwYABwAGAAcIBgcLAgEKCAQD\nBQMEAwUACQAFBgcLBAUJAwgCCgIIAAoICgABCAADCgIBBQsGCwUJCwkHBAcJ\n\"\"\"\n\n#static const char tiling13_3[2][12][30]\nTILING13_3 = (2, 12, 30), \"\"\"\nCwcGDAIKDAoFDAUEDAQIDAgDDAMADAAJDAkBDAECAQIKCQUMAAkMAwAMCwMMBgsMBwYMCAcMBAgM\nBQQMCwcGDAUEDAQIDAgDDAMCDAIKDAoBDAEADAAJDAkFAQIKDAMADAAJDAkFDAUGDAYLDAsHDAcE\nDAQIDAgDCAMACwcMAgsMAQIMCQEMBAkMBQQMCgUMBgoMBwYMCwcGBQQMCgUMAgoMAwIMCAMMAAgM\nAQAMCQEMBAkMCAMAAQIMCQEMBAkMBwQMCwcMBgsMBQYMCgUMAgoMCQUEDAAIDAgHDAcGDAYKDAoB\nDAECDAILDAsDDAMACQUEDAcGDAYKDAoBDAEADAAIDAgDDAMCDAILDAsHCAMADAECDAILDAsHDAcE\nDAQJDAkFDAUGDAYKDAoBCQUEBwYMCAcMAAgMAQAMCgEMAgoMAwIMCwMMBgsMAQIKAwAMCwMMBgsM\nBQYMCQUMBAkMBwQMCAcMAAgMCAQHDAMLDAsGDAYFDAUJDAkADAABDAEKDAoCDAIDAgMLCgYMAQoM\nAAEMCAAMBwgMBAcMCQQMBQkMBgUMCAQHDAYFDAUJDAkADAADDAMLDAsCDAIBDAEKDAoGAgMLDAAB\nDAEKDAoGDAYHDAcIDAgEDAQFDAUJDAkAAAEJCAQMAwgMAgMMCgIMBQoMBgUMCwYMBwsMBAcMCAQH\nBgUMCwYMAwsMAAMMCQAMAQkMAgEMCgIMBQoMCQABAgMMCgIMBQoMBAUMCAQMBwgMBgcMCwYMAwsM\nBgUKDAEJDAkEDAQHDAcLDAsCDAIDDAMIDAgADAABBgUKDAQHDAcLDAsCDAIBDAEJDAkADAADDAMI\nDAgECQABDAIDDAMIDAgEDAQFDAUKDAoGDAYHDAcLDAsCBgUKBAcMCQQMAQkMAgEMCwIMAwsMAAMM\nCAAMBwgMAgMLAAEMCAAMBwgMBgcMCgYMBQoMBAUMCQQMAQkM\n\"\"\"\n\n#static const char tiling13_3_[2][12][30]\nTILING13_3_ = (2, 12, 30), \"\"\"\nAwILCAcMAAgMAQAMCgEMBgoMBQYMCQUMBAkMBwQMBQYKDAILDAsHDAcEDAQJDAkBDAEADAAIDAgD\nDAMCCgUGDAcEDAQJDAkBDAECDAILDAsDDAMADAAIDAgHCwMCDAEADAAIDAgHDAcGDAYKDAoFDAUE\nDAQJDAkBBwQICwMMBgsMBQYMCQUMAAkMAQAMCgEMAgoMAwIMBwQIBQYMCQUMAAkMAwAMCwMMAgsM\nAQIMCgEMBgoMCwMCAQAMCgEMBgoMBwYMCAcMBAgMBQQMCQUMAAkMAQAJDAQIDAgDDAMCDAIKDAoF\nDAUGDAYLDAsHDAcEBwQIDAUGDAYLDAsDDAMADAAJDAkBDAECDAIKDAoFAQAJDAMCDAIKDAoFDAUE\nDAQIDAgHDAcGDAYLDAsDCgUGBwQMCwcMAgsMAQIMCQEMAAkMAwAMCAMMBAgMCQEAAwIMCAMMBAgM\nBQQMCgUMBgoMBwYMCwcMAgsMAAMICQQMAQkMAgEMCwIMBwsMBgcMCgYMBQoMBAUMCwYHDAMIDAgE\nDAQFDAUKDAoCDAIBDAEJDAkADAADBgcLDAQFDAUKDAoCDAIDDAMIDAgADAABDAEJDAkECAADDAIB\nDAEJDAkEDAQHDAcLDAsGDAYFDAUKDAoCBAUJCAAMBwgMBgcMCgYMAQoMAgEMCwIMAwsMAAMMBAUJ\nBgcMCgYMAQoMAAEMCAAMAwgMAgMMCwIMBwsMCAADAgEMCwIMBwsMBAcMCQQMBQkMBgUMCgYMAQoM\nAgEKDAUJDAkADAADDAMLDAsGDAYHDAcIDAgEDAQFBAUJDAYHDAcIDAgADAABDAEKDAoCDAIDDAML\nDAsGAgEKDAADDAMLDAsGDAYFDAUJDAkEDAQHDAcIDAgABgcLBAUMCAQMAwgMAgMMCgIMAQoMAAEM\nCQAMBQkMCgIBAAMMCQAMBQkMBgUMCwYMBwsMBAcMCAQMAwgM\n\"\"\"\n\n#static const char tiling13_4[2][4][36]\nTILING13_4 = (2, 4, 36), \"\"\"\nDAIKDAoFDAUGDAYLDAsHDAcEDAQIDAgDDAMADAAJDAkBDAECCwMMBgsMBwYMCAcMBAgMBQQMCQUM\nAAkMAQAMCgEMAgoMAwIMCQEMBAkMBQQMCgUMBgoMBwYMCwcMAgsMAwIMCAMMAAgMAQAMDAAIDAgH\nDAcEDAQJDAkFDAUGDAYKDAoBDAECDAILDAsDDAMADAMLDAsGDAYHDAcIDAgEDAQFDAUJDAkADAAB\nDAEKDAoCDAIDCAAMBwgMBAcMCQQMBQkMBgUMCgYMAQoMAgEMCwIMAwsMAAMMCgIMBQoMBgUMCwYM\nBwsMBAcMCAQMAwgMAAMMCQAMAQkMAgEMDAEJDAkEDAQFDAUKDAoGDAYHDAcLDAsCDAIDDAMIDAgA\nDAAB\n\"\"\"\n\n#static const char tiling13_5_1[2][4][18]\nTILING13_5_1 = (2, 4, 18), \"\"\"\nBwYLAQAJCgMCAwoFAwUIBAgFAQIKBwQIAwALBgsACQYABgkFAwAIBQYKAQIJBAkCCwQCBAsHBQQJ\nAwILCAEAAQgHAQcKBgoHBAcIAgEKCwADAAsGAAYJBQkGAgMLBAUJAAEIBwgBCgcBBwoGAAEJBgcL\nAgMKBQoDCAUDBQgEBgUKAAMICQIBAgkEAgQLBwsE\n\"\"\"\n\n#static const char tiling13_5_2[2][4][30]\nTILING13_5_2 = (2, 4, 30), \"\"\"\nAQAJBwQIBwgDBwMLAgsDCwIKCwoGBQYKBgUHBAcFBwQICwMCBgsCCgYCBgoFCQUKAQkKCQEAAgAB\nAAIDBQYKCQEABAkACAQABAgHCwcIAwsICwMCAAIDAgABAwILBQYKBQoBBQEJAAkBCQAICQgEBAgH\nBAcFBgUHAgEKBAUJBAkABAAIAwgACAMLCAsHBgcLBwYEBQQGBAUJCAADBwgDCwcDBwsGCgYLAgoL\nCgIBAwECAQMABgcLCgIBBQoBCQUBBQkECAQJAAgJCAADAQMAAwECAAMIBgcLBgsCBgIKAQoCCgEJ\nCgkFBQkEBQQGBwYE\n\"\"\"\n\n#static const char tiling14[12][12]\nTILING14 = (12, 12), \"\"\"\nBQkIBQgCBQIGAwIIAgEFAgUIAggLBAgFCQQGCQYDCQMBCwMGAQsKAQQLAQAEBwsECAIACAUCCAcF\nCgIFAAcDAAoHAAkKBgcKAAMHAAcKAAoJBgoHCAACCAIFCAUHCgUCAQoLAQsEAQQABwQLCQYECQMG\nCQEDCwYDAgUBAggFAgsIBAUIBQgJBQIIBQYCAwgC\n\"\"\"\n\n#static const char test3[24]\nTEST3 = (24,), \"\"\"\nBQEEBQECAgMEAwYG+vr9/P3+/v/7/P/7\n\"\"\"\n\n#static const char test4[8]\nTEST4 = (8,), \"\"\"\nBwcHB/n5+fk=\n\"\"\"\n\n#static const char test6[48][3]\nTEST6 = (48, 3), \"\"\"\nAgcKBAcLBQcBBQcDAQcJAwcKBgcFAQcIBAcIAQcIAwcLBQcCBQcAAQcJBgcGAgcJBAcIAgcJAgcK\nBgcHAwcKBAcLAwcLBgcE+vkE/fkL/PkL/fkK+vkH/vkK/vkJ/PkI/vkJ+vkG//kJ+/kA+/kC/fkL\n//kI/PkI//kI+vkF/fkK//kJ+/kD+/kB/PkL/vkK\n\"\"\"\n\n#static const char test7[16][5]\nTEST7 = (16, 5), \"\"\"\nAQIFBwEDBAUHAwQBBgcEBAEFBwACAwUHAgECBgcFAgMGBwYDBAYHB/38+vkH/v36+Qb//vr5Bf79\n+/kC/P/7+QD8//r5BP38+/kD//77+QE=\n\"\"\"\n\n#static const char test10[6][3]\nTEST10 = (6, 3), \"\"\"\nAgQHBQYHAQMHAQMHBQYHAgQH\n\"\"\"\n\n#static const char test12[24][4]\nTEST12 = (24, 4), \"\"\"\nBAMHCwMCBwoCBgcFBgQHBwIBBwkFAgcBBQMHAgUBBwAFBAcDBgMHBgEGBwQBBAcIBAEHCAYBBwQD\nBgcGBAUHAwEFBwADBQcCAgUHAQECBwkEBgcHBgIHBQIDBwoDBAcL\n\"\"\"\n\n#static const char test13[2][7]\nTEST13 = (2, 7), \"\"\"\nAQIDBAUGBwIDBAEFBgc=\n\"\"\"\n\n#static const char subconfig13[64]\nSUBCONFIG13 = (64,), \"\"\"\nAAECBwP/C/8ECP//Dv///wUJDBcP/xUmERT/JBohHiwGCg0TEP8ZJRIY/yMWIB0r////Iv//HCr/\nH/8pGygnLQ==\n\"\"\"\n"
  },
  {
    "path": "meshudf/meshudf.py",
    "content": "\"\"\" \nMeshing algorithm for UDFs from\n\"Meshudf: Fast and differentiable meshing of unsigned distance field networks.\" \nGuillard, Benoit, Federico Stella, and Pascal Fua. ECCV 2022.\n\nOriginal implementation: https://github.com/cvlab-epfl/MeshUDF\n\"\"\"\n\nimport math\nfrom collections import defaultdict\nfrom typing import Callable, Tuple\n\nimport numpy as np\nimport torch\nimport torch.nn.functional as F\nimport trimesh\nfrom scipy.sparse import coo_matrix\nfrom torch import Tensor\n\nfrom meshudf._marching_cubes_lewiner import udf_mc_lewiner\n\n\nclass GridFiller:\n    \"\"\"\n    Coarse to fine method for querying an SDF network, using cached grids.\n    #\n    We start by evaluating the field on a low resolution grid, and then\n    iteratively subdivide each voxel and re-evaluate the field only\n    where needed until we reach a desired grid resolution.\n    We subdivide voxels if the field absolute value on any of the voxel corners\n    is smaller than the voxel diagonal √2∆x, where ∆x denotes voxel size.\n    #\n    In practice the coarsest level is here hardcoded to be 32**3.\n    \"\"\"\n\n    def __init__(\n        self,\n        final_resolution: int,\n        voxel_origin: Tuple[int, int, int] = (-1, -1, -1),\n        cube_side_length: float = 2.0,\n    ):\n        # Save attributes\n        self.N_max = final_resolution\n        self.num_samples = final_resolution**3\n        self.N_levels = [32 * (2**i) for i in range(int(math.log2(self.N_max) - 4))]\n        self.voxel_origin = voxel_origin\n        self.cube_side_length = cube_side_length\n\n        # Construct grid, and precompute sparse masks, from 32 (coarsest grid) to final_resolution\n        \"\"\"\n        Create one empty grid (N,N,N,7) where the 7 channels are (x,y,z, UDF, +3 for gradients).\n        \"\"\"\n        voxel_size = self.cube_side_length / (self.N_max - 1)\n        self.voxel_size = voxel_size\n        overall_index = torch.arange(0, self.N_max**3, 1, out=torch.LongTensor())\n        samples = torch.zeros(self.N_max**3, 7)\n\n        # Transform the first 3 columns to be the x, y, z indices.\n        samples[:, 2] = overall_index % self.N_max\n        samples[:, 1] = (\n            torch.div(overall_index, self.N_max, rounding_mode=\"floor\") % self.N_max\n        )\n        samples[:, 0] = (\n            torch.div(\n                torch.div(overall_index, self.N_max, rounding_mode=\"floor\"),\n                self.N_max,\n                rounding_mode=\"floor\",\n            )\n            % self.N_max\n        )\n\n        # Then transform the first 3 columns to be the x, y, z coordinates.\n        samples[:, 0] = (samples[:, 0] * voxel_size) + voxel_origin[2]\n        samples[:, 1] = (samples[:, 1] * voxel_size) + voxel_origin[1]\n        samples[:, 2] = (samples[:, 2] * voxel_size) + voxel_origin[0]\n        samples.requires_grad = False\n        #samples.pin_memory()\n        self.samples = samples.cuda()\n\n        \"\"\"\n        Precompute binary masks for adressing the above grid at different resolutions.\n        \"\"\"\n        mask = torch.zeros(self.N_max**3).bool()\n        mask = mask.reshape(self.N_max, self.N_max, self.N_max)\n\n        # Fill dictionaries with precomputed masks.\n        self.masks_coarse = {}\n        self.masks_coarse_no_recompute = {}\n        self.idxs_coarse_neighbors_blocks = {}\n        for i, N in enumerate(self.N_levels):\n            #### 1: Subsample coarsely.\n            mask_coarse = mask.clone()\n            mask_coarse[\n                :: self.N_max // N, :: self.N_max // N, :: self.N_max // N\n            ] = True\n\n            # (N_max**3) array, with True only for indices of the coarse sampling (N**3 locations):\n            mask_coarse = mask_coarse.reshape(-1)\n            self.masks_coarse[i] = mask_coarse.clone().cuda()\n\n            #### 2: Compute the indices of neighboring blocks.\n            neighbors_block_coarse = mask.clone()\n            neighbors_block_coarse[\n                : self.N_max // N, : self.N_max // N, : self.N_max // N\n            ] = True\n            neighbors_block_coarse = neighbors_block_coarse.reshape(-1)\n            # Shape (N**3 / 64, 64): idxs_coarse_neighbors_blocks[i] represents the (N_max // N)**3 indices covered by coarse point i.\n            idxs_coarse_neighbors_blocks = torch.where(mask_coarse)[0].reshape(\n                -1, 1\n            ) + torch.where(neighbors_block_coarse)[0].reshape(1, -1)\n            self.idxs_coarse_neighbors_blocks[\n                i\n            ] = idxs_coarse_neighbors_blocks.clone().cuda()\n\n            #### 3: For levels finer than the coarsest one, do not recompute already queried SDFs.\n            if i > 0:\n                mask_coarse_no_recompute = mask_coarse.clone()\n                mask_coarse_no_recompute[self.masks_coarse[i - 1]] = False\n                self.masks_coarse_no_recompute[\n                    i\n                ] = mask_coarse_no_recompute.clone().cuda()\n\n    def fill_grid(\n        self, udf_func: Callable[[Tensor], Tensor], max_batch: int\n    ) -> Tuple[Tensor, Tensor]:\n        with torch.no_grad():\n            samples = self.samples.clone()\n            close_surface_masks = {}\n            idxs_coarse_neighbors_blocks_LOCAL = {}\n\n            for level, N in enumerate(self.N_levels):\n                \"\"\"Prepare masks based on previous levels\"\"\"\n                if level == 0:\n                    mask_coarse = self.masks_coarse[level]\n                    idxs_coarse_neighbors_blocks = self.idxs_coarse_neighbors_blocks[\n                        level\n                    ].clone()\n                    mask_coarse_no_recompute = self.masks_coarse[level]\n                else:\n                    # Mask using previous queries: binary mask.\n                    mask_coarse = self.masks_coarse[level].clone()\n                    for l in range(level):\n                        mask_coarse[\n                            idxs_coarse_neighbors_blocks_LOCAL[l][\n                                ~close_surface_masks[l]\n                            ]\n                        ] = False\n\n                    # Compute the corresponding indices tensor.\n                    if N < self.N_max:\n                        idxs_coarse_neighbors_blocks = (\n                            self.idxs_coarse_neighbors_blocks[level].clone()\n                        )\n                        idxs_coarse_neighbors_blocks = idxs_coarse_neighbors_blocks[\n                            mask_coarse[self.masks_coarse[level]]\n                        ]\n                    else:\n                        idxs_coarse_neighbors_blocks = (\n                            self.idxs_coarse_neighbors_blocks[level]\n                        )\n\n                    # The no_recompute version does not query the decoder for nodes that have\n                    # already been computed at coarser levels.\n                    mask_coarse_no_recompute = self.masks_coarse_no_recompute[\n                        level\n                    ].clone()\n                    for l in range(level):\n                        mask_coarse_no_recompute[\n                            idxs_coarse_neighbors_blocks_LOCAL[l][\n                                ~close_surface_masks[l]\n                            ]\n                        ] = False\n                idxs_coarse_neighbors_blocks_LOCAL[level] = idxs_coarse_neighbors_blocks\n\n                \"\"\" Query the network \"\"\"\n                xyz = samples[mask_coarse_no_recompute, 0:3].cuda()\n                # Query and fill grid.\n                samples[mask_coarse_no_recompute, 3] = sample_udf(\n                    udf_func, xyz, max_batch=max_batch\n                )\n\n                \"\"\" Prepare next levels queries \"\"\"\n                if N < self.N_max:\n                    ## Which samples are close to the surface?\n                    step_size = 2.0 / N\n                    close_surface_mask = (\n                        torch.abs(samples[mask_coarse, 3]) < 1.5 * 1.7 * step_size\n                    )\n                    close_surface_masks[level] = close_surface_mask\n\n                    # For those far of the surface, we can ignore them for the future and copy the high value to their neighbors\n                    samples[\n                        idxs_coarse_neighbors_blocks[~close_surface_mask], 3\n                    ] = samples[mask_coarse, 3][~close_surface_mask].unsqueeze(-1)\n\n            udf_values = samples[:, 3]\n            udf_values = udf_values.reshape(self.N_max, self.N_max, self.N_max)\n\n        # Compute gradients only where the predicted udf value is small.\n        mask_gradients = samples[:, 3] < (2.5 * self.cube_side_length / self.N_max)\n        samples[mask_gradients, 4:] = sample_grads(\n            udf_func, samples[mask_gradients, :3], max_batch=max_batch\n        )\n        gradients = samples[:, 4:]\n        gradients = gradients.reshape(self.N_max, self.N_max, self.N_max, 3)\n        return udf_values, gradients\n\n\ndef sample_udf(\n    udf_func: Callable[[Tensor], Tensor],\n    coords: Tensor,\n    max_batch: int,\n    grad: bool = False,\n) -> Tensor:\n    udf = torch.zeros(coords.shape[0]).cuda()\n    start = 0\n\n    while start < coords.shape[0]:\n        end = min(start + max_batch, coords.shape[0])\n        p = coords[start:end]\n        if grad:\n            udf[start:end] = udf_func(p)\n        else:\n            with torch.no_grad():\n                udf[start:end] = udf_func(p)\n        start = end\n\n    return udf\n\n\ndef sample_grads(\n    udf_func: Callable[[Tensor], Tensor],\n    coords: Tensor,\n    max_batch: int,\n) -> Tensor:\n    grads = torch.zeros(coords.shape[0], 3).cuda()\n    start = 0\n\n    while start < coords.shape[0]:\n        end = min(start + max_batch, coords.shape[0])\n        p = coords[start:end].detach().clone()\n        p.requires_grad = True\n        udf = udf_func(p)\n        udf.sum().backward()\n        g = p.grad\n        # norms = torch.norm(g, dim=-1)\n        # g[norms < 0.5] = torch.zeros(1, 3).cuda()\n        grads[start:end] = -F.normalize(g, dim=1)\n        start = end\n\n    return grads\n\n\ndef get_udf_and_grads(\n    udf_func: Callable[[Tensor], Tensor],\n    coords_range: Tuple[float, float],\n    max_dist: float,\n    N: int,\n    max_batch: int,\n) -> Tuple[Tensor, Tensor]:\n    \"\"\"\n    Fills a dense N*N*N regular grid by querying the given function.\n\n    Args:\n        udf_func: Function to call to get the udf values.\n        coords_range: The udf coordinates range.\n        max_dist: The udf clipping distance.\n        N: Grid resolution.\n        max_batch: The maximum number of points that we can evaluate simultaneously.\n\n    Returns:\n        - (N, N, N) tensor representing udf values on the grid.\n        - (N, N, N, 3) tensor representing gradients values on the grid.\n    \"\"\"\n    # compute origin of the volume and voxel size\n    origin = [coords_range[0]] * 3\n    spacing = (coords_range[1] - coords_range[0]) / (N - 1)\n\n    # prepare grid coordinates, each axis goes from 0 to (N - 1)\n    x = torch.arange(0, N)\n    coords_x, coords_y, coords_z = torch.meshgrid(x, x, x, indexing=\"ij\")\n    coords = torch.stack((coords_x, coords_y, coords_z), dim=-1).float()\n\n    # scale and shift coordinates so that each axis goes from coords_range[0] to coords_range[1]\n    coords *= spacing\n    coords += torch.tensor(origin)\n    coords = coords.reshape(N**3, 3)\n\n    # comput udf for every corner of the grid\n    zeros = torch.zeros(coords.shape[0], 4)\n    samples = torch.cat([coords, zeros], dim=-1).cuda()\n    samples[:, 3] = sample_udf(udf_func, samples[:, :3], max_batch)\n\n    # compute gradients only where the predicted udf value is small\n    mask = samples[:, 3] < (max_dist - 1e-3)\n    samples[mask, 4:] = sample_grads(udf_func, samples[mask, :3], max_batch // 4)\n\n    # separate values in udf and gradients\n    udf = samples[:, 3]\n    udf = udf.reshape(N, N, N)\n    grads = samples[:, 4:]\n    grads = grads.reshape(N, N, N, 3)\n\n    return udf, grads\n\n\ndef get_mesh_from_udf(\n    udf_func: Callable[[Tensor], Tensor],\n    coords_range: Tuple[float, float],\n    max_dist: float,\n    N: int = 128,\n    smooth_borders: bool = True,\n    differentiable: bool = True,\n    max_batch: int = 2**12,\n    use_fast_grid_filler: bool = True,\n) -> Tuple[Tensor, Tensor]:\n    \"\"\"\n    Computes a triangulated mesh from udf.\n\n    Args:\n        udf_func: Function to call to get the udf values.\n        coords_range: The udf coordinates range.\n        max_dist: The udf clipping distance.\n        N: Grid resolution.\n        smooth_borders: Do we smooth borders with a Laplacian?\n        differentiable: Do we need the mesh to be differentiable wrt the UDF?\n        max_batch: The maximum number of points that we can evaluate simultaneously.\n        use_fast_grid_filler: Use coarse to fine UDF grid evaluator, with cached coordinates.\n\n    Returns:\n        - Vertices of the mesh.\n        - Faces of the mesh.\n    \"\"\"\n    # sample udf grid\n    if not use_fast_grid_filler:\n        udf, gradients = get_udf_and_grads(\n            udf_func, coords_range, max_dist, N, max_batch\n        )\n    else:\n        fast_grid_filler = GridFiller(N)\n        udf, gradients = fast_grid_filler.fill_grid(udf_func, max_batch)\n    udf[udf < 0] = 0\n\n    # run custom marching cubes on it\n    N = udf.shape[0]\n    spacing = (coords_range[1] - coords_range[0]) / (N - 1)\n    udf = udf.cpu().detach().numpy()\n    gradients = gradients.cpu().detach().numpy()\n    vertices, faces, _, _ = udf_mc_lewiner(udf, gradients, spacing=[spacing] * 3)\n\n    # shift vertices according to the given range\n    vertices += coords_range[0]\n\n    mesh = trimesh.Trimesh(vertices, faces, process=False)\n\n    # remove faces whose vertices feature big udf values\n    # check not only vertices but also points in the middle of edges\n    points = np.vstack(\n        (\n            mesh.vertices[mesh.edges[:, 0]],\n            mesh.vertices[mesh.edges[:, 1]],\n            (mesh.vertices[mesh.edges[:, 0]] + mesh.vertices[mesh.edges[:, 1]]) / 2,\n        )\n    )\n    face_idxs = np.hstack([mesh.edges_face] * 3)\n\n    points = torch.from_numpy(points).float().cuda()\n    udf = sample_udf(udf_func, points, max_batch)\n    udf = udf.cpu().numpy()\n\n    # th_dist is the threshold udf to consider a point on the surface.\n    th_dist = 1 / N\n\n    mask = udf > th_dist\n    face_idxs_to_remove = np.unique(face_idxs[mask])\n    face_mask = np.full(mesh.faces.shape[0], True)\n    face_mask[face_idxs_to_remove] = False\n    filtered_faces = mesh.faces[face_mask]\n    mesh = trimesh.Trimesh(mesh.vertices, filtered_faces)\n\n    # remove NaNs, flat triangles, duplicate faces\n    mesh = mesh.process(validate=False)\n    mesh.remove_duplicate_faces()\n    mesh.remove_degenerate_faces()\n    # fill single triangle holes\n    mesh.fill_holes()\n\n    # re-process the mesh until it is stable:\n    mesh_2 = trimesh.Trimesh(mesh.vertices, mesh.faces)\n    n_verts, n_faces, n_iter = 0, 0, 0\n    while (n_verts, n_faces) != (\n        len(mesh_2.vertices),\n        len(mesh_2.faces),\n    ) and n_iter < 10:\n        mesh_2 = mesh_2.process(validate=False)\n        mesh_2.remove_duplicate_faces()\n        mesh_2.remove_degenerate_faces()\n        (n_verts, n_faces) = (len(mesh_2.vertices), len(mesh_2.faces))\n        n_iter += 1\n        mesh_2 = trimesh.Trimesh(mesh_2.vertices, mesh_2.faces)\n\n    mesh = trimesh.Trimesh(mesh_2.vertices, mesh_2.faces)\n\n    if smooth_borders:\n        # identify borders: those appearing only once\n        border_edges = trimesh.grouping.group_rows(mesh.edges_sorted, require_count=1)\n\n        # build a dictionnary of (u,l): l is the list of vertices that are adjacent to u\n        neighbours = defaultdict(lambda: [])\n        for u, v in mesh.edges_sorted[border_edges]:\n            neighbours[u].append(v)\n            neighbours[v].append(u)\n        border_vertices = np.array(list(neighbours.keys()))\n\n        # build a sparse matrix for computing laplacian\n        pos_i, pos_j = [], []\n        for k, ns in enumerate(neighbours.values()):\n            for j in ns:\n                pos_i.append(k)\n                pos_j.append(j)\n\n        sparse = coo_matrix(\n            (np.ones(len(pos_i)), (pos_i, pos_j)),  # put ones at these locations\n            shape=(len(border_vertices), len(mesh.vertices)),\n        )\n\n        # smoothing operation:\n        lambda_ = 0.3\n        for _ in range(20):\n            border_neighbouring_averages = sparse @ mesh.vertices / sparse.sum(axis=1)\n            laplacian = border_neighbouring_averages - mesh.vertices[border_vertices]\n            mesh.vertices[border_vertices] = (\n                mesh.vertices[border_vertices] + lambda_ * laplacian\n            )\n\n    final_verts = torch.tensor(mesh.vertices).float().cuda()\n    final_faces = torch.tensor(mesh.faces).long().cuda()\n\n    if differentiable:\n        # use the mesh to compute normals\n        normals = trimesh.geometry.weighted_vertex_normals(\n            vertex_count=len(mesh.vertices),\n            faces=mesh.faces,\n            face_normals=mesh.face_normals,\n            face_angles=mesh.face_angles,\n        )\n\n        # evaluate the udf around each vertex, based on normals\n        normals = torch.tensor(normals).float().cuda()\n        verts = torch.tensor(mesh.vertices).float().cuda()\n        xyz_s1 = verts + th_dist * normals\n        xyz_s2 = verts - th_dist * normals\n        s1 = sample_udf(udf_func, xyz_s1, max_batch, True).unsqueeze(-1)\n        s2 = sample_udf(udf_func, xyz_s2, max_batch, True).unsqueeze(-1)\n        # re-plug differentiability here, by this rewriting trick\n        z1 = th_dist * s1 * normals - th_dist * s2 * normals\n        z2 = (th_dist * s1 * normals - th_dist * s2 * normals).detach()\n        new_verts = verts - z1 + z2\n\n        # identify borders\n        border_edges = trimesh.grouping.group_rows(mesh.edges_sorted, require_count=1)\n\n        # build a dictionnary of (u,v) edges, such that each vertex on the border\n        # gets associated to exactly one border edge\n        border_edges_dict = {}\n        for u, v in mesh.edges_sorted[border_edges]:\n            border_edges_dict[u] = v\n            border_edges_dict[v] = u\n        u_v_border = np.array(list(border_edges_dict.items()))\n        u_border = u_v_border[:, 0]  # split border edges (u,v) into u and v arrays\n        v_border = u_v_border[:, 1]\n\n        # for each vertex on the border, take the cross product between\n        # its normal and the border's edge\n        normals_border = normals[u_border]\n        edge_border = mesh.vertices[v_border] - mesh.vertices[u_border]\n        edge_border = torch.tensor(edge_border).float().cuda()\n        out_vec = torch.cross(edge_border, normals_border, dim=1)\n        out_vec = out_vec / (\n            torch.norm(out_vec, dim=1, keepdim=True) + 1e-6\n        )  # make it unit length\n\n        # then we need to orient the out_vec such that they point outwards\n        # to do so, we evaluate at +- their offset, and take the corresponding max udf value\n        border_verts = torch.tensor(mesh.vertices[u_border]).float().cuda()\n        xyz_s1_border = border_verts + 3 * th_dist * out_vec\n        xyz_s2_border = border_verts - 3 * th_dist * out_vec\n        s1_border = sample_udf(udf_func, xyz_s1_border, max_batch, True).unsqueeze(-1)\n        s2_border = sample_udf(udf_func, xyz_s2_border, max_batch, True).unsqueeze(-1)\n        s1s2 = torch.stack((s1_border, s2_border))\n        sign_out_vec = -torch.argmax(s1s2, dim=0) * 2 + 1\n        out_vec = sign_out_vec * out_vec\n\n        # filter out the verts borders for which a displacement of out_vec still present\n        # a udf < th_dist, i.e. verts classified as borders which are not really so\n        mask = ((s1_border + s2_border)[:, 0] > th_dist).detach().cpu().numpy()\n        u_border_filtered = u_border[mask]\n        out_vec_filtered = out_vec[(s1_border + s2_border)[:, 0] > th_dist]\n        out_df_filtered = torch.max(s1_border, s2_border)[\n            (s1_border + s2_border) > th_dist\n        ]\n\n        # plug gradients to verts positions (fake zero, just to pass grads)\n        s_border = (th_dist * (out_df_filtered - out_df_filtered.detach())).unsqueeze(\n            -1\n        )\n        new_verts[u_border_filtered] = (\n            new_verts[u_border_filtered] - s_border * out_vec_filtered\n        )\n\n        final_verts = new_verts\n        final_faces = torch.tensor(mesh.faces).long().cuda()\n\n    return final_verts, final_faces\n"
  },
  {
    "path": "meshudf/setup.py",
    "content": "# python setup.py build_ext --inplace\nfrom setuptools import setup\nfrom Cython.Build import cythonize\nimport numpy as np\nimport os\n\nincludes_numpy = '-I ' + np.get_include() + ' '\nos.environ['CFLAGS'] = includes_numpy + (os.environ['CFLAGS'] if 'CFLAGS' in os.environ else '')\n\nsetup(\n    name=\"My MC\",\n    ext_modules=cythonize(\"_marching_cubes_lewiner_cy.pyx\", include_path=[np.get_include()], language=\"c++\"),\n)\n"
  },
  {
    "path": "meshudf/setup.sh",
    "content": "python3 setup.py build_ext --inplace"
  },
  {
    "path": "models/cfg_sampler.py",
    "content": "import numpy as np\nimport torch\nimport torch.nn as nn\nfrom copy import deepcopy\n\n# A wrapper model for Classifier-free guidance **SAMPLING** only\n# https://arxiv.org/abs/2207.12598\nclass ClassifierFreeSampleModel(nn.Module):\n\n    def __init__(self, model):\n        super().__init__()\n        self.model = model  # model is the actual model to run\n\n        #assert self.model.cond_mask_prob > 0, 'Cannot run a guided diffusion on a model that has not been trained with no conditions'\n\n        self.cond_mode = self.model.cond_mode\n        self.clip_version = self.model.clip_version\n\n    def forward(self, x, timesteps, y=None):\n        cond_mode = self.model.cond_mode\n        assert cond_mode in ['text', 'action']\n        y_uncond = deepcopy(y)\n        y_uncond['uncond'] = True\n        out = self.model(x, timesteps, y)\n        out_uncond = self.model(x, timesteps, y_uncond)\n        return out_uncond + (y['scale'].view(-1, 1, 1) * (out - out_uncond))\n\n"
  },
  {
    "path": "models/mdm.py",
    "content": "import torch\nimport torch.nn as nn\nimport clip\n\nimport torch\nimport torch.nn as nn\nfrom models.openaimodel import UNetModel\n\nclass MDM(nn.Module):\n\n    def __init__(self, modeltype, num_actions, dropout=0.1, activation=\"gelu\", legacy=False, dataset='deepfasion3d', clip_dim=512,\n                 arch='OpenUNet', clip_version=None, **kargs):\n        super().__init__()\n\n        self.legacy = legacy\n        self.modeltype = modeltype\n        self.num_actions = num_actions\n\n        self.dataset = dataset\n\n        self.dropout = dropout\n\n        self.activation = activation\n        self.clip_dim = clip_dim\n\n        self.cond_mode = kargs.get('cond_mode', 'no_cond')\n        self.cond_mask_prob = kargs.get('cond_mask_prob', 0.)\n        self.arch = arch\n\n        if self.arch == 'OpenUNet':\n            num_classes=None\n            if 'category' in self.cond_mode:\n                num_classes = self.num_actions\n            self.Unet = UNetModel(\n                in_channels=1,\n                model_channels=224,\n                out_channels=1,\n                num_res_blocks=2,\n                attention_resolutions=[ 4, 2, 1 ],\n                dropout=0,\n                channel_mult=(1, 2, 4, 4),\n                conv_resample=True,\n                dims=1,\n                num_classes=num_classes,\n                use_checkpoint=True,\n                use_fp16=False,\n                num_heads=8,\n                num_head_channels=-1,\n                num_heads_upsample=-1,\n                use_scale_shift_norm=False,\n                resblock_updown=False,\n                use_new_attention_order=False,\n                use_spatial_transformer=False,    # custom transformer support\n                transformer_depth=1,              # custom transformer support\n                context_dim=clip_dim,                 # custom transformer support\n                n_embed=None,                     # custom support for prediction of discrete ids into codebook of first stage vq model\n                legacy=False,)\n\n        self.clip_version = clip_version\n        if self.cond_mode != 'no_cond':\n            if 'text' in self.cond_mode:\n                #self.embed_text = nn.Linear(self.clip_dim, self.latent_dim)\n                print('EMBED TEXT')\n                print('Loading CLIP...')\n\n                self.clip_version = clip_version\n                self.clip_model = self.load_and_freeze_clip(clip_version)\n\n            if 'sketch' in self.cond_mode:\n                self.clip_version = clip_version\n\n    def parameters_wo_clip(self):\n        return [p for name, p in self.named_parameters() if not name.startswith('clip_model.')]\n\n    def load_and_freeze_clip(self, clip_version):\n        clip_model, _ = clip.load(clip_version, device='cpu',\n                                                jit=False)  # Must set jit=False for training\n        # Freeze CLIP weights\n        clip_model.eval()\n        for p in clip_model.parameters():\n            p.requires_grad = False\n\n        return clip_model\n\n\n    def encode_text(self, raw_text):\n        device = next(self.parameters()).device\n        texts = clip.tokenize(raw_text, truncate=True).to(device) \n        return self.clip_model.encode_text(texts).float()\n\n    def forward(self, x, timesteps, y=None):\n        \"\"\"\n        x: [batch_size, njoints, nfeats, max_frames], denoted x_t in the paper\n        timesteps: [batch_size] (int)\n        \"\"\"\n        if 'text' in self.cond_mode:\n            enc_text = self.encode_text(y['text'])\n\n\n        if 'sketch' in self.cond_mode or 'img' in self.cond_mode:\n            context = y['context']\n            output = self.Unet(x, timesteps=timesteps, context=context)\n        elif self.cond_mode == 'no_cond':\n            output = self.Unet(x, timesteps=timesteps, y=None)\n        elif 'text' in self.cond_mode:\n            output = self.Unet(x, timesteps=timesteps, context=enc_text)\n        else:\n            output = self.Unet(x, timesteps=timesteps, y=y['action_text'])\n\n        return output\n\n    def train(self, *args, **kwargs):\n        super().train(*args, **kwargs)\n\n\n"
  },
  {
    "path": "models/models.py",
    "content": "import torch\r\nimport torch.nn as nn\r\nimport torch.nn.functional as F\r\n\r\nfrom einops import rearrange\r\n\r\nclass LinearAttention(nn.Module):\r\n    def __init__(self, dim, heads=4, dim_head=32):\r\n        super().__init__()\r\n        self.heads = heads\r\n        hidden_dim = dim_head * heads\r\n        self.to_qkv = nn.Conv3d(dim, hidden_dim * 3, 1, bias = False)\r\n        self.to_out = nn.Conv3d(hidden_dim, dim, 1)\r\n\r\n    def forward(self, x):\r\n        b, c, d, h, w = x.shape\r\n        qkv = self.to_qkv(x)\r\n        q, k, v = rearrange(qkv, 'b (qkv heads c) h w -> qkv b heads c (h w)', heads = self.heads, qkv=3)\r\n        k = k.softmax(dim=-1)  \r\n        context = torch.einsum('bhdn,bhen->bhde', k, v)\r\n        out = torch.einsum('bhde,bhdn->bhen', context, q)\r\n        out = rearrange(out, 'b heads c (h w) -> b (heads c) h w', heads=self.heads, h=h, w=w)\r\n        return self.to_out(out)\r\n\r\nclass LinAttnBlock(LinearAttention):\r\n    \"\"\"to match AttnBlock usage\"\"\"\r\n    def __init__(self, in_channels):\r\n        super().__init__(dim=in_channels, heads=1, dim_head=in_channels)\r\n\r\nclass Downsample(nn.Module):\r\n    def __init__(self, in_channels, with_conv):\r\n        super().__init__()\r\n        self.with_conv = with_conv\r\n        if self.with_conv:\r\n            # no asymmetric padding in torch conv, must do it ourselves\r\n            self.conv = torch.nn.Conv3d(in_channels,\r\n                                        in_channels,\r\n                                        kernel_size=3,\r\n                                        stride=2,\r\n                                        padding=0)\r\n\r\n    def forward(self, x):\r\n        if self.with_conv:\r\n            pad = (0,1,0,1,0,1)\r\n            x = torch.nn.functional.pad(x, pad, mode=\"constant\", value=0)\r\n            x = self.conv(x)\r\n        else:\r\n            x = torch.nn.functional.avg_pool2d(x, kernel_size=2, stride=2)\r\n        return x\r\n\r\n\r\nclass Upsample(nn.Module):\r\n    def __init__(self, in_channels, with_conv):\r\n        super().__init__()\r\n        self.with_conv = with_conv\r\n        if self.with_conv:\r\n            self.conv = torch.nn.Conv3d(in_channels,\r\n                                        in_channels,\r\n                                        kernel_size=3,\r\n                                        stride=1,\r\n                                        padding=1)\r\n\r\n    def forward(self, x):\r\n        x = torch.nn.functional.interpolate(x, scale_factor=2.0, mode=\"trilinear\")\r\n        if self.with_conv:\r\n            x = self.conv(x)\r\n        return x\r\n\r\n\r\nclass AttnBlock(nn.Module):\r\n    def __init__(self, in_channels):\r\n        super().__init__()\r\n        self.in_channels = in_channels\r\n\r\n        self.norm = Normalize(in_channels)\r\n        self.q = torch.nn.Conv3d(in_channels,\r\n                                 in_channels,\r\n                                 kernel_size=1,\r\n                                 stride=1,\r\n                                 padding=0)\r\n        self.k = torch.nn.Conv3d(in_channels,\r\n                                 in_channels,\r\n                                 kernel_size=1,\r\n                                 stride=1,\r\n                                 padding=0)\r\n        self.v = torch.nn.Conv3d(in_channels,\r\n                                 in_channels,\r\n                                 kernel_size=1,\r\n                                 stride=1,\r\n                                 padding=0)\r\n        self.proj_out = torch.nn.Conv3d(in_channels,\r\n                                        in_channels,\r\n                                        kernel_size=1,\r\n                                        stride=1,\r\n                                        padding=0)\r\n\r\n\r\n    def forward(self, x):\r\n        h_ = x\r\n        h_ = self.norm(h_)\r\n        q = self.q(h_)\r\n        k = self.k(h_)\r\n        v = self.v(h_)\r\n\r\n        # compute attention\r\n        b,c,d,h,w = q.shape\r\n        q = q.reshape(b,c,h*w*d)\r\n        q = q.permute(0,2,1)   # b,hw,c\r\n        k = k.reshape(b,c,h*w*d) # b,c,hw\r\n        w_ = torch.bmm(q,k)     # b,hw,hw    w[b,i,j]=sum_c q[b,i,c]k[b,c,j]\r\n        w_ = w_ * (int(c)**(-0.5))\r\n        w_ = torch.nn.functional.softmax(w_, dim=2)\r\n\r\n        # attend to values\r\n        v = v.reshape(b,c,h*w*d)\r\n        w_ = w_.permute(0,2,1)   # b,hw,hw (first hw of k, second of q)\r\n        h_ = torch.bmm(v,w_)     # b, c,hw (hw of q) h_[b,c,j] = sum_i v[b,c,i] w_[b,i,j]\r\n        h_ = h_.reshape(b,c,d,h,w)\r\n\r\n        h_ = self.proj_out(h_)\r\n\r\n        return x+h_\r\n\r\n\r\n\r\ndef make_attn(in_channels, attn_type=\"vanilla\"):\r\n    assert attn_type in [\"vanilla\", \"linear\", \"none\"], f'attn_type {attn_type} unknown'\r\n    print(f\"making attention of type '{attn_type}' with {in_channels} in_channels\")\r\n    if attn_type == \"vanilla\":\r\n        return AttnBlock(in_channels)\r\n    elif attn_type == \"none\":\r\n        return nn.Identity(in_channels)\r\n    else:\r\n        return LinAttnBlock(in_channels)\r\n\r\ndef Normalize(in_channels, num_groups=4):\r\n    return torch.nn.GroupNorm(num_groups=num_groups, num_channels=in_channels, eps=1e-6, affine=True)\r\n\r\ndef nonlinearity(x):\r\n    # swish\r\n    #return x*torch.sigmoid(x)\r\n    return F.relu(x) ##test abs z\r\n\r\n\r\nclass ResnetBlock(nn.Module):\r\n    def __init__(self, *, in_channels, out_channels=None, conv_shortcut=False,\r\n                 dropout, temb_channels=512):\r\n        super().__init__()\r\n        self.in_channels = in_channels\r\n        out_channels = in_channels if out_channels is None else out_channels\r\n        self.out_channels = out_channels\r\n        self.use_conv_shortcut = conv_shortcut\r\n\r\n        self.norm1 = Normalize(in_channels)\r\n        self.conv1 = torch.nn.Conv3d(in_channels,\r\n                                     out_channels,\r\n                                     kernel_size=3,\r\n                                     stride=1,\r\n                                     padding=1)\r\n        if temb_channels > 0:\r\n            self.temb_proj = torch.nn.Linear(temb_channels,\r\n                                             out_channels)\r\n        self.norm2 = Normalize(out_channels)\r\n        self.dropout = torch.nn.Dropout(dropout)\r\n        self.conv2 = torch.nn.Conv3d(out_channels,\r\n                                     out_channels,\r\n                                     kernel_size=3,\r\n                                     stride=1,\r\n                                     padding=1)\r\n        if self.in_channels != self.out_channels:\r\n            if self.use_conv_shortcut:\r\n                self.conv_shortcut = torch.nn.Conv3d(in_channels,\r\n                                                     out_channels,\r\n                                                     kernel_size=3,\r\n                                                     stride=1,\r\n                                                     padding=1)\r\n            else:\r\n                self.nin_shortcut = torch.nn.Conv3d(in_channels,\r\n                                                    out_channels,\r\n                                                    kernel_size=1,\r\n                                                    stride=1,\r\n                                                    padding=0)\r\n\r\n    def forward(self, x, temb):\r\n        h = x\r\n        h = self.norm1(h)\r\n        h = nonlinearity(h)\r\n        h = self.conv1(h)\r\n\r\n        if temb is not None:\r\n            h = h + self.temb_proj(nonlinearity(temb))[:,:,None,None]\r\n\r\n        h = self.norm2(h)\r\n        h = nonlinearity(h)\r\n        h = self.dropout(h)\r\n        h = self.conv2(h)\r\n\r\n        if self.in_channels != self.out_channels:\r\n            if self.use_conv_shortcut:\r\n                x = self.conv_shortcut(x)\r\n            else:\r\n                x = self.nin_shortcut(x)\r\n\r\n        return x+h\r\n\r\n\r\n\r\n\r\n\r\n###\r\n#Old version of auto encoder\r\n###\r\nclass DoubleConv(nn.Module):\r\n    \"\"\"(convolution => [BN] => ReLU) * 2\"\"\"\r\n\r\n    def __init__(self, in_channels, out_channels, conv_type=nn.Conv3d, mid_channels=None):\r\n        super(DoubleConv, self).__init__()\r\n        if not mid_channels:\r\n            mid_channels = out_channels\r\n        #print('debug')\r\n        self.double_conv = nn.Sequential(\r\n            conv_type(in_channels, mid_channels, kernel_size=3, padding=1),\r\n            nn.BatchNorm3d(mid_channels),\r\n            nn.ReLU(inplace=True),\r\n            conv_type(mid_channels, out_channels, kernel_size=3, padding=1),\r\n            nn.BatchNorm3d(out_channels),\r\n            nn.ReLU(inplace=True)\r\n        )\r\n\r\n    def forward(self, x):\r\n        return self.double_conv(x)\r\n\r\n\r\nclass Down(nn.Module):\r\n    \"\"\"Downscaling with maxpool then double conv\"\"\"\r\n\r\n    def __init__(self, in_channels, out_channels, conv_type=nn.Conv3d):\r\n        super(Down, self).__init__()\r\n        self.maxpool_conv = nn.Sequential(\r\n            nn.MaxPool3d(2),\r\n            DoubleConv(in_channels, out_channels, conv_type=conv_type)\r\n        )\r\n\r\n    def forward(self, x):\r\n        return self.maxpool_conv(x)\r\n\r\n\r\nclass Up(nn.Module):\r\n    \"\"\"Upscaling then double conv\"\"\"\r\n\r\n    def __init__(self, in_channels, out_channels, trilinear=True):\r\n        super(Up, self).__init__()\r\n\r\n        # if trilinear, use the normal convolutions to reduce the number of channels\r\n        if trilinear:\r\n            self.up = nn.Upsample(scale_factor=2, mode='trilinear', align_corners=True)\r\n            self.conv = DoubleConv(in_channels, out_channels, mid_channels=in_channels // 2)\r\n        else:\r\n            self.up = nn.ConvTranspose3d(in_channels, in_channels // 2, kernel_size=2, stride=2)\r\n            self.conv = DoubleConv(in_channels, out_channels)\r\n\r\n\r\n    def forward(self, x1):\r\n        x = self.up(x1)\r\n        # input is CHW\r\n        # diffY = x2.size()[2] - x1.size()[2]\r\n        # diffX = x2.size()[3] - x1.size()[3]\r\n\r\n        # x1 = F.pad(x1, [diffX // 2, diffX - diffX // 2,\r\n        #                 diffY // 2, diffY - diffY // 2])\r\n        # if you have padding issues, see\r\n        # https://github.com/HaiyongJiang/U-Net-Pytorch-Unstructured-Buggy/commit/0e854509c2cea854e247a9c615f175f76fbb2e3a\r\n        # https://github.com/xiaopeng-liao/Pytorch-UNet/commit/8ebac70e633bac59fc22bb5195e513d5832fb3bd\r\n        #x = torch.cat([x2, x1], dim=1)\r\n        return self.conv(x)\r\n\r\n\r\n\r\n\r\nclass DepthwiseSeparableConv3d(nn.Module):\r\n    def __init__(self, nin, nout, kernel_size, padding, kernels_per_layer=1):\r\n        super(DepthwiseSeparableConv3d, self).__init__()\r\n        self.depthwise = nn.Conv3d(nin, nin * kernels_per_layer, kernel_size=kernel_size, padding=padding, groups=nin)\r\n        self.pointwise = nn.Conv3d(nin * kernels_per_layer, nout, kernel_size=1)\r\n\r\n    def forward(self, x):\r\n        out = self.depthwise(x)\r\n        out = self.pointwise(out)\r\n        return out\r\n\r\n\r\nclass Autoencoder_Old(nn.Module):\r\n    def __init__(self, n_channels=1, width_multiplier=1, trilinear=True, use_ds_conv=False) -> None:\r\n        super(Autoencoder_Old, self).__init__()\r\n        # _channels = (32, 64, 128, 256, 512)\r\n        _channels = (32, 64, 128, 256)\r\n        #_channels = (64, 128, 256, 512)\r\n        \r\n        self.n_channels = n_channels\r\n        self.channels = [int(c*width_multiplier) for c in _channels]\r\n        self.trilinear = trilinear\r\n        self.convtype = DepthwiseSeparableConv3d if use_ds_conv else nn.Conv3d\r\n\r\n        self.inc = DoubleConv(n_channels, self.channels[0], conv_type=self.convtype)\r\n        self.down1 = Down(self.channels[0], self.channels[1], conv_type=self.convtype)\r\n        self.down2 = Down(self.channels[1], self.channels[2], conv_type=self.convtype)\r\n        factor = 2 if trilinear else 1\r\n        self.down3 = Down(self.channels[2], self.channels[3], conv_type=self.convtype)\r\n\r\n        self.up1 = Up(self.channels[3], self.channels[2], trilinear)\r\n        self.up2 = Up(self.channels[2], self.channels[1], trilinear)\r\n        self.up3 = Up(self.channels[1], n_channels, trilinear)\r\n\r\n\r\n    def encode(self, x):\r\n        x1 = self.inc(x)\r\n        x2 = self.down1(x1)\r\n        x3 = self.down2(x2)\r\n        x4 = self.down3(x3)\r\n        \r\n        return x4\r\n\r\n    def decode(self, z):\r\n        x = self.up1(z)\r\n        x = self.up2(x)\r\n        x = self.up3(x)\r\n\r\n        return x\r\n\r\n    def forward(self, input):\r\n        z = self.encode(input)\r\n        dec = self.decode(z)\r\n\r\n        return dec"
  },
  {
    "path": "models/openaimodel.py",
    "content": "from abc import abstractmethod\r\nfrom functools import partial\r\nimport math\r\nfrom typing import Iterable\r\n\r\nimport numpy as np\r\nimport torch as th\r\nimport torch.nn as nn\r\nimport torch.nn.functional as F\r\n\r\nfrom utils.ldm_utils import (\r\n    checkpoint,\r\n    conv_nd,\r\n    linear,\r\n    avg_pool_nd,\r\n    zero_module,\r\n    normalization,\r\n    timestep_embedding,\r\n)\r\nfrom modules.attention import SpatialTransformer\r\n\r\n\r\n# dummy replace\r\ndef convert_module_to_f16(x):\r\n    pass\r\n\r\ndef convert_module_to_f32(x):\r\n    pass\r\n\r\n\r\n## go\r\nclass AttentionPool2d(nn.Module):\r\n    \"\"\"\r\n    Adapted from CLIP: https://github.com/openai/CLIP/blob/main/clip/model.py\r\n    \"\"\"\r\n\r\n    def __init__(\r\n        self,\r\n        spacial_dim: int,\r\n        embed_dim: int,\r\n        num_heads_channels: int,\r\n        output_dim: int = None,\r\n    ):\r\n        super().__init__()\r\n        self.positional_embedding = nn.Parameter(th.randn(embed_dim, spacial_dim ** 2 + 1) / embed_dim ** 0.5)\r\n        self.qkv_proj = conv_nd(1, embed_dim, 3 * embed_dim, 1)\r\n        self.c_proj = conv_nd(1, embed_dim, output_dim or embed_dim, 1)\r\n        self.num_heads = embed_dim // num_heads_channels\r\n        self.attention = QKVAttention(self.num_heads)\r\n\r\n    def forward(self, x):\r\n        b, c, *_spatial = x.shape\r\n        x = x.reshape(b, c, -1)  # NC(HW)\r\n        x = th.cat([x.mean(dim=-1, keepdim=True), x], dim=-1)  # NC(HW+1)\r\n        x = x + self.positional_embedding[None, :, :].to(x.dtype)  # NC(HW+1)\r\n        x = self.qkv_proj(x)\r\n        x = self.attention(x)\r\n        x = self.c_proj(x)\r\n        return x[:, :, 0]\r\n\r\n\r\nclass TimestepBlock(nn.Module):\r\n    \"\"\"\r\n    Any module where forward() takes timestep embeddings as a second argument.\r\n    \"\"\"\r\n\r\n    @abstractmethod\r\n    def forward(self, x, emb):\r\n        \"\"\"\r\n        Apply the module to `x` given `emb` timestep embeddings.\r\n        \"\"\"\r\n\r\n\r\nclass TimestepEmbedSequential(nn.Sequential, TimestepBlock):\r\n    \"\"\"\r\n    A sequential module that passes timestep embeddings to the children that\r\n    support it as an extra input.\r\n    \"\"\"\r\n\r\n    def forward(self, x, emb, context=None):\r\n        for layer in self:\r\n            if isinstance(layer, TimestepBlock):\r\n                x = layer(x, emb)\r\n            elif isinstance(layer, SpatialTransformer):\r\n                x = layer(x, context)\r\n            else:\r\n                x = layer(x)\r\n        return x\r\n\r\n\r\nclass Upsample(nn.Module):\r\n    \"\"\"\r\n    An upsampling layer with an optional convolution.\r\n    :param channels: channels in the inputs and outputs.\r\n    :param use_conv: a bool determining if a convolution is applied.\r\n    :param dims: determines if the signal is 1D, 2D, or 3D. If 3D, then\r\n                 upsampling occurs in the inner-two dimensions.\r\n    \"\"\"\r\n\r\n    def __init__(self, channels, use_conv, dims=3, out_channels=None, padding=1):\r\n        super().__init__()\r\n        self.channels = channels\r\n        self.out_channels = out_channels or channels\r\n        self.use_conv = use_conv\r\n        self.dims = dims\r\n        if use_conv:\r\n            self.conv = conv_nd(dims, self.channels, self.out_channels, 3, padding=padding)\r\n\r\n    def forward(self, x):\r\n        assert x.shape[1] == self.channels\r\n        if self.dims == 3:\r\n            x = F.interpolate(\r\n                x, (x.shape[2] * 2, x.shape[3] * 2, x.shape[4] * 2), mode=\"nearest\"\r\n            )\r\n        else:\r\n            x = F.interpolate(x, scale_factor=2, mode=\"nearest\")\r\n        if self.use_conv:\r\n            x = self.conv(x)\r\n        return x\r\n\r\nclass TransposedUpsample(nn.Module):\r\n    'Learned 2x upsampling without padding'\r\n    def __init__(self, channels, out_channels=None, ks=5):\r\n        super().__init__()\r\n        self.channels = channels\r\n        self.out_channels = out_channels or channels\r\n\r\n        self.up = nn.ConvTranspose2d(self.channels,self.out_channels,kernel_size=ks,stride=2)\r\n\r\n    def forward(self,x):\r\n        return self.up(x)\r\n\r\n\r\nclass Downsample(nn.Module):\r\n    \"\"\"\r\n    A downsampling layer with an optional convolution.\r\n    :param channels: channels in the inputs and outputs.\r\n    :param use_conv: a bool determining if a convolution is applied.\r\n    :param dims: determines if the signal is 1D, 2D, or 3D. If 3D, then\r\n                 downsampling occurs in the inner-two dimensions.\r\n    \"\"\"\r\n\r\n    def __init__(self, channels, use_conv, dims=3, out_channels=None,padding=1):\r\n        super().__init__()\r\n        self.channels = channels\r\n        self.out_channels = out_channels or channels\r\n        self.use_conv = use_conv\r\n        self.dims = dims\r\n        stride = 2 if dims != 3 else (2, 2, 2)\r\n        if use_conv:\r\n            self.op = conv_nd(\r\n                dims, self.channels, self.out_channels, 3, stride=stride, padding=padding\r\n            )\r\n        else:\r\n            assert self.channels == self.out_channels\r\n            self.op = avg_pool_nd(dims, kernel_size=stride, stride=stride)\r\n\r\n    def forward(self, x):\r\n        assert x.shape[1] == self.channels\r\n        return self.op(x)\r\n\r\n\r\nclass ResBlock(TimestepBlock):\r\n    \"\"\"\r\n    A residual block that can optionally change the number of channels.\r\n    :param channels: the number of input channels.\r\n    :param emb_channels: the number of timestep embedding channels.\r\n    :param dropout: the rate of dropout.\r\n    :param out_channels: if specified, the number of out channels.\r\n    :param use_conv: if True and out_channels is specified, use a spatial\r\n        convolution instead of a smaller 1x1 convolution to change the\r\n        channels in the skip connection.\r\n    :param dims: determines if the signal is 1D, 2D, or 3D.\r\n    :param use_checkpoint: if True, use gradient checkpointing on this module.\r\n    :param up: if True, use this block for upsampling.\r\n    :param down: if True, use this block for downsampling.\r\n    \"\"\"\r\n\r\n    def __init__(\r\n        self,\r\n        channels,\r\n        emb_channels,\r\n        dropout,\r\n        out_channels=None,\r\n        use_conv=False,\r\n        use_scale_shift_norm=False,\r\n        dims=3,\r\n        use_checkpoint=False,\r\n        up=False,\r\n        down=False,\r\n    ):\r\n        super().__init__()\r\n        self.channels = channels\r\n        self.emb_channels = emb_channels\r\n        self.dropout = dropout\r\n        self.out_channels = out_channels or channels\r\n        self.use_conv = use_conv\r\n        self.use_checkpoint = use_checkpoint\r\n        self.use_scale_shift_norm = use_scale_shift_norm\r\n\r\n        self.in_layers = nn.Sequential(\r\n            normalization(channels),\r\n            nn.SiLU(),\r\n            conv_nd(dims, channels, self.out_channels, 3, padding=1),\r\n        )\r\n\r\n        self.updown = up or down\r\n\r\n        if up:\r\n            self.h_upd = Upsample(channels, False, dims)\r\n            self.x_upd = Upsample(channels, False, dims)\r\n        elif down:\r\n            self.h_upd = Downsample(channels, False, dims)\r\n            self.x_upd = Downsample(channels, False, dims)\r\n        else:\r\n            self.h_upd = self.x_upd = nn.Identity()\r\n\r\n        self.emb_layers = nn.Sequential(\r\n            nn.SiLU(),\r\n            linear(\r\n                emb_channels,\r\n                2 * self.out_channels if use_scale_shift_norm else self.out_channels,\r\n            ),\r\n        )\r\n        self.out_layers = nn.Sequential(\r\n            normalization(self.out_channels),\r\n            nn.SiLU(),\r\n            nn.Dropout(p=dropout),\r\n            zero_module(\r\n                conv_nd(dims, self.out_channels, self.out_channels, 3, padding=1)\r\n            ),\r\n        )\r\n\r\n        if self.out_channels == channels:\r\n            self.skip_connection = nn.Identity()\r\n        elif use_conv:\r\n            self.skip_connection = conv_nd(\r\n                dims, channels, self.out_channels, 3, padding=1\r\n            )\r\n        else:\r\n            self.skip_connection = conv_nd(dims, channels, self.out_channels, 1)\r\n\r\n    def forward(self, x, emb):\r\n        \"\"\"\r\n        Apply the block to a Tensor, conditioned on a timestep embedding.\r\n        :param x: an [N x C x ...] Tensor of features.\r\n        :param emb: an [N x emb_channels] Tensor of timestep embeddings.\r\n        :return: an [N x C x ...] Tensor of outputs.\r\n        \"\"\"\r\n        return checkpoint(\r\n            self._forward, (x, emb), self.parameters(), self.use_checkpoint\r\n        )\r\n\r\n\r\n    def _forward(self, x, emb):\r\n        if self.updown:\r\n            in_rest, in_conv = self.in_layers[:-1], self.in_layers[-1]\r\n            h = in_rest(x)\r\n            h = self.h_upd(h)\r\n            x = self.x_upd(x)\r\n            h = in_conv(h)\r\n        else:\r\n            h = self.in_layers(x)\r\n        emb_out = self.emb_layers(emb).type(h.dtype)\r\n        while len(emb_out.shape) < len(h.shape):\r\n            emb_out = emb_out[..., None]\r\n        if self.use_scale_shift_norm:\r\n            out_norm, out_rest = self.out_layers[0], self.out_layers[1:]\r\n            scale, shift = th.chunk(emb_out, 2, dim=1)\r\n            h = out_norm(h) * (1 + scale) + shift\r\n            h = out_rest(h)\r\n        else:\r\n            h = h + emb_out\r\n            h = self.out_layers(h)\r\n        return self.skip_connection(x) + h\r\n\r\n\r\nclass AttentionBlock(nn.Module):\r\n    \"\"\"\r\n    An attention block that allows spatial positions to attend to each other.\r\n    Originally ported from here, but adapted to the N-d case.\r\n    https://github.com/hojonathanho/diffusion/blob/1e0dceb3b3495bbe19116a5e1b3596cd0706c543/diffusion_tf/models/unet.py#L66.\r\n    \"\"\"\r\n\r\n    def __init__(\r\n        self,\r\n        channels,\r\n        num_heads=1,\r\n        num_head_channels=-1,\r\n        use_checkpoint=False,\r\n        use_new_attention_order=False,\r\n    ):\r\n        super().__init__()\r\n        self.channels = channels\r\n        if num_head_channels == -1:\r\n            self.num_heads = num_heads\r\n        else:\r\n            assert (\r\n                channels % num_head_channels == 0\r\n            ), f\"q,k,v channels {channels} is not divisible by num_head_channels {num_head_channels}\"\r\n            self.num_heads = channels // num_head_channels\r\n        self.use_checkpoint = use_checkpoint\r\n        self.norm = normalization(channels)\r\n        self.qkv = conv_nd(1, channels, channels * 3, 1)\r\n        if use_new_attention_order:\r\n            # split qkv before split heads\r\n            self.attention = QKVAttention(self.num_heads)\r\n        else:\r\n            # split heads before split qkv\r\n            self.attention = QKVAttentionLegacy(self.num_heads)\r\n\r\n        self.proj_out = zero_module(conv_nd(1, channels, channels, 1))\r\n\r\n    def forward(self, x):\r\n        return checkpoint(self._forward, (x,), self.parameters(), True)   # TODO: check checkpoint usage, is True # TODO: fix the .half call!!!\r\n        #return pt_checkpoint(self._forward, x)  # pytorch\r\n\r\n    def _forward(self, x):\r\n        b, c, *spatial = x.shape\r\n        x = x.reshape(b, c, -1)\r\n        qkv = self.qkv(self.norm(x))\r\n        h = self.attention(qkv)\r\n        h = self.proj_out(h)\r\n        return (x + h).reshape(b, c, *spatial)\r\n\r\n\r\ndef count_flops_attn(model, _x, y):\r\n    \"\"\"\r\n    A counter for the `thop` package to count the operations in an\r\n    attention operation.\r\n    Meant to be used like:\r\n        macs, params = thop.profile(\r\n            model,\r\n            inputs=(inputs, timestamps),\r\n            custom_ops={QKVAttention: QKVAttention.count_flops},\r\n        )\r\n    \"\"\"\r\n    b, c, *spatial = y[0].shape\r\n    num_spatial = int(np.prod(spatial))\r\n    # We perform two matmuls with the same number of ops.\r\n    # The first computes the weight matrix, the second computes\r\n    # the combination of the value vectors.\r\n    matmul_ops = 2 * b * (num_spatial ** 2) * c\r\n    model.total_ops += th.DoubleTensor([matmul_ops])\r\n\r\n\r\nclass QKVAttentionLegacy(nn.Module):\r\n    \"\"\"\r\n    A module which performs QKV attention. Matches legacy QKVAttention + input/ouput heads shaping\r\n    \"\"\"\r\n\r\n    def __init__(self, n_heads):\r\n        super().__init__()\r\n        self.n_heads = n_heads\r\n\r\n    def forward(self, qkv):\r\n        \"\"\"\r\n        Apply QKV attention.\r\n        :param qkv: an [N x (H * 3 * C) x T] tensor of Qs, Ks, and Vs.\r\n        :return: an [N x (H * C) x T] tensor after attention.\r\n        \"\"\"\r\n        bs, width, length = qkv.shape\r\n        assert width % (3 * self.n_heads) == 0\r\n        ch = width // (3 * self.n_heads)\r\n        q, k, v = qkv.reshape(bs * self.n_heads, ch * 3, length).split(ch, dim=1)\r\n        scale = 1 / math.sqrt(math.sqrt(ch))\r\n        weight = th.einsum(\r\n            \"bct,bcs->bts\", q * scale, k * scale\r\n        )  # More stable with f16 than dividing afterwards\r\n        weight = th.softmax(weight.float(), dim=-1).type(weight.dtype)\r\n        a = th.einsum(\"bts,bcs->bct\", weight, v)\r\n        return a.reshape(bs, -1, length)\r\n\r\n    @staticmethod\r\n    def count_flops(model, _x, y):\r\n        return count_flops_attn(model, _x, y)\r\n\r\n\r\nclass QKVAttention(nn.Module):\r\n    \"\"\"\r\n    A module which performs QKV attention and splits in a different order.\r\n    \"\"\"\r\n\r\n    def __init__(self, n_heads):\r\n        super().__init__()\r\n        self.n_heads = n_heads\r\n\r\n    def forward(self, qkv):\r\n        \"\"\"\r\n        Apply QKV attention.\r\n        :param qkv: an [N x (3 * H * C) x T] tensor of Qs, Ks, and Vs.\r\n        :return: an [N x (H * C) x T] tensor after attention.\r\n        \"\"\"\r\n        bs, width, length = qkv.shape\r\n        assert width % (3 * self.n_heads) == 0\r\n        ch = width // (3 * self.n_heads)\r\n        q, k, v = qkv.chunk(3, dim=1)\r\n        scale = 1 / math.sqrt(math.sqrt(ch))\r\n        weight = th.einsum(\r\n            \"bct,bcs->bts\",\r\n            (q * scale).view(bs * self.n_heads, ch, length),\r\n            (k * scale).view(bs * self.n_heads, ch, length),\r\n        )  # More stable with f16 than dividing afterwards\r\n        weight = th.softmax(weight.float(), dim=-1).type(weight.dtype)\r\n        a = th.einsum(\"bts,bcs->bct\", weight, v.reshape(bs * self.n_heads, ch, length))\r\n        return a.reshape(bs, -1, length)\r\n\r\n    @staticmethod\r\n    def count_flops(model, _x, y):\r\n        return count_flops_attn(model, _x, y)\r\n\r\n\r\nclass UNetModel(nn.Module):\r\n    \"\"\"\r\n    The full UNet model with attention and timestep embedding.\r\n    :param in_channels: channels in the input Tensor.\r\n    :param model_channels: base channel count for the model.\r\n    :param out_channels: channels in the output Tensor.\r\n    :param num_res_blocks: number of residual blocks per downsample.\r\n    :param attention_resolutions: a collection of downsample rates at which\r\n        attention will take place. May be a set, list, or tuple.\r\n        For example, if this contains 4, then at 4x downsampling, attention\r\n        will be used.\r\n    :param dropout: the dropout probability.\r\n    :param channel_mult: channel multiplier for each level of the UNet.\r\n    :param conv_resample: if True, use learned convolutions for upsampling and\r\n        downsampling.\r\n    :param dims: determines if the signal is 1D, 2D, or 3D.\r\n    :param num_classes: if specified (as an int), then this model will be\r\n        class-conditional with `num_classes` classes.\r\n    :param use_checkpoint: use gradient checkpointing to reduce memory usage.\r\n    :param num_heads: the number of attention heads in each attention layer.\r\n    :param num_heads_channels: if specified, ignore num_heads and instead use\r\n                               a fixed channel width per attention head.\r\n    :param num_heads_upsample: works with num_heads to set a different number\r\n                               of heads for upsampling. Deprecated.\r\n    :param use_scale_shift_norm: use a FiLM-like conditioning mechanism.\r\n    :param resblock_updown: use residual blocks for up/downsampling.\r\n    :param use_new_attention_order: use a different attention pattern for potentially\r\n                                    increased efficiency.\r\n    \"\"\"\r\n\r\n    def __init__(\r\n        self,\r\n        in_channels,\r\n        model_channels,\r\n        out_channels,\r\n        num_res_blocks,\r\n        attention_resolutions,\r\n        dropout=0,\r\n        channel_mult=(1, 2, 4, 8),\r\n        conv_resample=True,\r\n        dims=3,\r\n        num_classes=None,\r\n        use_checkpoint=False,\r\n        use_fp16=False,\r\n        num_heads=-1,\r\n        num_head_channels=-1,\r\n        num_heads_upsample=-1,\r\n        use_scale_shift_norm=False,\r\n        resblock_updown=False,\r\n        use_new_attention_order=False,\r\n        use_spatial_transformer=False,    # custom transformer support\r\n        transformer_depth=1,              # custom transformer support\r\n        context_dim=None,                 # custom transformer support\r\n        n_embed=None,                     # custom support for prediction of discrete ids into codebook of first stage vq model\r\n        legacy=True,\r\n    ):\r\n        super().__init__()\r\n        # if use_spatial_transformer:\r\n        #     assert context_dim is not None, 'Fool!! You forgot to include the dimension of your cross-attention conditioning...'\r\n\r\n        # if context_dim is not None:\r\n        #     assert use_spatial_transformer, 'Fool!! You forgot to use the spatial transformer for your cross-attention conditioning...'\r\n        #     from omegaconf.listconfig import ListConfig\r\n        #     if type(context_dim) == ListConfig:\r\n        #         context_dim = list(context_dim)\r\n\r\n        if num_heads_upsample == -1:\r\n            num_heads_upsample = num_heads\r\n\r\n        if num_heads == -1:\r\n            assert num_head_channels != -1, 'Either num_heads or num_head_channels has to be set'\r\n\r\n        if num_head_channels == -1:\r\n            assert num_heads != -1, 'Either num_heads or num_head_channels has to be set'\r\n\r\n        self.in_channels = in_channels\r\n        self.model_channels = model_channels\r\n        self.out_channels = out_channels\r\n        self.num_res_blocks = num_res_blocks\r\n        self.attention_resolutions = attention_resolutions\r\n        self.dropout = dropout\r\n        self.channel_mult = channel_mult\r\n        self.conv_resample = conv_resample\r\n        self.num_classes = num_classes\r\n        self.use_checkpoint = use_checkpoint\r\n        self.dtype = th.float16 if use_fp16 else th.float32\r\n        self.num_heads = num_heads\r\n        self.num_head_channels = num_head_channels\r\n        self.num_heads_upsample = num_heads_upsample\r\n        self.predict_codebook_ids = n_embed is not None\r\n\r\n        time_embed_dim = model_channels * 4\r\n        self.time_embed = nn.Sequential(\r\n            linear(model_channels, time_embed_dim),\r\n            nn.SiLU(),\r\n            linear(time_embed_dim, time_embed_dim),\r\n        )\r\n        if self.num_classes is not None:\r\n            self.label_emb = nn.Embedding(num_classes, time_embed_dim)\r\n        if context_dim is not None:\r\n            #print(context_dim)\r\n            self.sketch_emb = nn.Linear(context_dim, time_embed_dim)\r\n\r\n        self.input_blocks = nn.ModuleList(\r\n            [\r\n                TimestepEmbedSequential(\r\n                    conv_nd(dims, in_channels, model_channels, 3, padding=1)\r\n                )\r\n            ]\r\n        )\r\n        self._feature_size = model_channels\r\n        input_block_chans = [model_channels]\r\n        ch = model_channels\r\n        ds = 1\r\n        for level, mult in enumerate(channel_mult):\r\n            for _ in range(num_res_blocks):\r\n                layers = [\r\n                    ResBlock(\r\n                        ch,\r\n                        time_embed_dim,\r\n                        dropout,\r\n                        out_channels=mult * model_channels,\r\n                        dims=dims,\r\n                        use_checkpoint=use_checkpoint,\r\n                        use_scale_shift_norm=use_scale_shift_norm,\r\n                    )\r\n                ]\r\n                ch = mult * model_channels\r\n                if ds in attention_resolutions:\r\n                    if num_head_channels == -1:\r\n                        dim_head = ch // num_heads\r\n                    else:\r\n                        num_heads = ch // num_head_channels\r\n                        dim_head = num_head_channels\r\n                    if legacy:\r\n                        #num_heads = 1\r\n                        dim_head = ch // num_heads if use_spatial_transformer else num_head_channels\r\n                    layers.append(\r\n                        AttentionBlock(\r\n                            ch,\r\n                            use_checkpoint=use_checkpoint,\r\n                            num_heads=num_heads,\r\n                            num_head_channels=dim_head,\r\n                            use_new_attention_order=use_new_attention_order,\r\n                        ) if not use_spatial_transformer else SpatialTransformer(\r\n                            ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim\r\n                        )\r\n                    )\r\n                self.input_blocks.append(TimestepEmbedSequential(*layers))\r\n                self._feature_size += ch\r\n                input_block_chans.append(ch)\r\n            if level != len(channel_mult) - 1:\r\n                out_ch = ch\r\n                self.input_blocks.append(\r\n                    TimestepEmbedSequential(\r\n                        ResBlock(\r\n                            ch,\r\n                            time_embed_dim,\r\n                            dropout,\r\n                            out_channels=out_ch,\r\n                            dims=dims,\r\n                            use_checkpoint=use_checkpoint,\r\n                            use_scale_shift_norm=use_scale_shift_norm,\r\n                            down=True,\r\n                        )\r\n                        if resblock_updown\r\n                        else Downsample(\r\n                            ch, conv_resample, dims=dims, out_channels=out_ch\r\n                        )\r\n                    )\r\n                )\r\n                ch = out_ch\r\n                input_block_chans.append(ch)\r\n                ds *= 2\r\n                self._feature_size += ch\r\n\r\n        if num_head_channels == -1:\r\n            dim_head = ch // num_heads\r\n        else:\r\n            num_heads = ch // num_head_channels\r\n            dim_head = num_head_channels\r\n        if legacy:\r\n            #num_heads = 1\r\n            dim_head = ch // num_heads if use_spatial_transformer else num_head_channels\r\n        self.middle_block = TimestepEmbedSequential(\r\n            ResBlock(\r\n                ch,\r\n                time_embed_dim,\r\n                dropout,\r\n                dims=dims,\r\n                use_checkpoint=use_checkpoint,\r\n                use_scale_shift_norm=use_scale_shift_norm,\r\n            ),\r\n            AttentionBlock(\r\n                ch,\r\n                use_checkpoint=use_checkpoint,\r\n                num_heads=num_heads,\r\n                num_head_channels=dim_head,\r\n                use_new_attention_order=use_new_attention_order,\r\n            ) if not use_spatial_transformer else SpatialTransformer(\r\n                            ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim\r\n                        ),\r\n            ResBlock(\r\n                ch,\r\n                time_embed_dim,\r\n                dropout,\r\n                dims=dims,\r\n                use_checkpoint=use_checkpoint,\r\n                use_scale_shift_norm=use_scale_shift_norm,\r\n            ),\r\n        )\r\n        self._feature_size += ch\r\n\r\n        self.output_blocks = nn.ModuleList([])\r\n        for level, mult in list(enumerate(channel_mult))[::-1]:\r\n            for i in range(num_res_blocks + 1):\r\n                ich = input_block_chans.pop()\r\n                layers = [\r\n                    ResBlock(\r\n                        ch + ich,\r\n                        time_embed_dim,\r\n                        dropout,\r\n                        out_channels=model_channels * mult,\r\n                        dims=dims,\r\n                        use_checkpoint=use_checkpoint,\r\n                        use_scale_shift_norm=use_scale_shift_norm,\r\n                    )\r\n                ]\r\n                ch = model_channels * mult\r\n                if ds in attention_resolutions:\r\n                    if num_head_channels == -1:\r\n                        dim_head = ch // num_heads\r\n                    else:\r\n                        num_heads = ch // num_head_channels\r\n                        dim_head = num_head_channels\r\n                    if legacy:\r\n                        #num_heads = 1\r\n                        dim_head = ch // num_heads if use_spatial_transformer else num_head_channels\r\n                    layers.append(\r\n                        AttentionBlock(\r\n                            ch,\r\n                            use_checkpoint=use_checkpoint,\r\n                            num_heads=num_heads_upsample,\r\n                            num_head_channels=dim_head,\r\n                            use_new_attention_order=use_new_attention_order,\r\n                        ) if not use_spatial_transformer else SpatialTransformer(\r\n                            ch, num_heads, dim_head, depth=transformer_depth, context_dim=context_dim\r\n                        )\r\n                    )\r\n                if level and i == num_res_blocks:\r\n                    out_ch = ch\r\n                    layers.append(\r\n                        ResBlock(\r\n                            ch,\r\n                            time_embed_dim,\r\n                            dropout,\r\n                            out_channels=out_ch,\r\n                            dims=dims,\r\n                            use_checkpoint=use_checkpoint,\r\n                            use_scale_shift_norm=use_scale_shift_norm,\r\n                            up=True,\r\n                        )\r\n                        if resblock_updown\r\n                        else Upsample(ch, conv_resample, dims=dims, out_channels=out_ch)\r\n                    )\r\n                    ds //= 2\r\n                self.output_blocks.append(TimestepEmbedSequential(*layers))\r\n                self._feature_size += ch\r\n\r\n        self.out = nn.Sequential(\r\n            normalization(ch),\r\n            nn.SiLU(),\r\n            zero_module(conv_nd(dims, model_channels, out_channels, 3, padding=1)),\r\n        )\r\n        if self.predict_codebook_ids:\r\n            self.id_predictor = nn.Sequential(\r\n            normalization(ch),\r\n            conv_nd(dims, model_channels, n_embed, 1),\r\n            #nn.LogSoftmax(dim=1)  # change to cross_entropy and produce non-normalized logits\r\n        )\r\n\r\n    def convert_to_fp16(self):\r\n        \"\"\"\r\n        Convert the torso of the model to float16.\r\n        \"\"\"\r\n        self.input_blocks.apply(convert_module_to_f16)\r\n        self.middle_block.apply(convert_module_to_f16)\r\n        self.output_blocks.apply(convert_module_to_f16)\r\n\r\n    def convert_to_fp32(self):\r\n        \"\"\"\r\n        Convert the torso of the model to float32.\r\n        \"\"\"\r\n        self.input_blocks.apply(convert_module_to_f32)\r\n        self.middle_block.apply(convert_module_to_f32)\r\n        self.output_blocks.apply(convert_module_to_f32)\r\n\r\n    def forward(self, x, timesteps=None, context=None, y=None, **kwargs):\r\n        \"\"\"\r\n        Apply the model to an input batch.\r\n        :param x: an [N x C x ...] Tensor of inputs.\r\n        :param timesteps: a 1-D batch of timesteps.\r\n        :param context: conditioning plugged in via crossattn\r\n        :param y: an [N] Tensor of labels, if class-conditional.\r\n        :return: an [N x C x ...] Tensor of outputs.\r\n        \"\"\"\r\n        # print(x.shape)\r\n        assert (y is not None) == (\r\n            self.num_classes is not None\r\n        ), \"must specify y if and only if the model is class-conditional\"\r\n        hs = []\r\n        t_emb = timestep_embedding(timesteps, self.model_channels, repeat_only=False)\r\n        emb = self.time_embed(t_emb)\r\n\r\n        if self.num_classes is not None:\r\n            #print('test_shape', y.shape, (x.shape[0],))\r\n            assert y.shape == (x.shape[0],)\r\n            emb = emb + self.label_emb(y)\r\n        if context is not None:\r\n            #print(context.shape, x.shape)\r\n            assert context.shape[0] == x.shape[0]\r\n            #print(context.dtype, self.sketch_emb.weight.dtype)\r\n            emb = emb + self.sketch_emb(context)\r\n\r\n        h = x.type(self.dtype)\r\n        for module in self.input_blocks:\r\n            h = module(h, emb, context)\r\n            hs.append(h)\r\n        h = self.middle_block(h, emb, context)\r\n        for module in self.output_blocks:\r\n            h = th.cat([h, hs.pop()], dim=1)\r\n            h = module(h, emb, context)\r\n        h = h.type(x.dtype)\r\n        if self.predict_codebook_ids:\r\n            return self.id_predictor(h)\r\n        else:\r\n            return self.out(h)\r\n\r\n\r\nclass EncoderUNetModel(nn.Module):\r\n    \"\"\"\r\n    The half UNet model with attention and timestep embedding.\r\n    For usage, see UNet.\r\n    \"\"\"\r\n\r\n    def __init__(\r\n        self,\r\n        image_size,\r\n        in_channels,\r\n        model_channels,\r\n        out_channels,\r\n        num_res_blocks,\r\n        attention_resolutions,\r\n        dropout=0,\r\n        channel_mult=(1, 2, 4, 8),\r\n        conv_resample=True,\r\n        dims=3,\r\n        use_checkpoint=False,\r\n        use_fp16=False,\r\n        num_heads=1,\r\n        num_head_channels=-1,\r\n        num_heads_upsample=-1,\r\n        use_scale_shift_norm=False,\r\n        resblock_updown=False,\r\n        use_new_attention_order=False,\r\n        pool=\"adaptive\",\r\n        *args,\r\n        **kwargs\r\n    ):\r\n        super().__init__()\r\n\r\n        if num_heads_upsample == -1:\r\n            num_heads_upsample = num_heads\r\n\r\n        self.in_channels = in_channels\r\n        self.model_channels = model_channels\r\n        self.out_channels = out_channels\r\n        self.num_res_blocks = num_res_blocks\r\n        self.attention_resolutions = attention_resolutions\r\n        self.dropout = dropout\r\n        self.channel_mult = channel_mult\r\n        self.conv_resample = conv_resample\r\n        self.use_checkpoint = use_checkpoint\r\n        self.dtype = th.float16 if use_fp16 else th.float32\r\n        self.num_heads = num_heads\r\n        self.num_head_channels = num_head_channels\r\n        self.num_heads_upsample = num_heads_upsample\r\n\r\n        time_embed_dim = model_channels * 4\r\n        self.time_embed = nn.Sequential(\r\n            linear(model_channels, time_embed_dim),\r\n            nn.SiLU(),\r\n            linear(time_embed_dim, time_embed_dim),\r\n        )\r\n\r\n        self.input_blocks = nn.ModuleList(\r\n            [\r\n                TimestepEmbedSequential(\r\n                    conv_nd(dims, in_channels, model_channels, 3, padding=1)\r\n                )\r\n            ]\r\n        )\r\n        self._feature_size = model_channels\r\n        input_block_chans = [model_channels]\r\n        ch = model_channels\r\n        ds = 1\r\n        for level, mult in enumerate(channel_mult):\r\n            for _ in range(num_res_blocks):\r\n                layers = [\r\n                    ResBlock(\r\n                        ch,\r\n                        time_embed_dim,\r\n                        dropout,\r\n                        out_channels=mult * model_channels,\r\n                        dims=dims,\r\n                        use_checkpoint=use_checkpoint,\r\n                        use_scale_shift_norm=use_scale_shift_norm,\r\n                    )\r\n                ]\r\n                ch = mult * model_channels\r\n                if ds in attention_resolutions:\r\n                    layers.append(\r\n                        AttentionBlock(\r\n                            ch,\r\n                            use_checkpoint=use_checkpoint,\r\n                            num_heads=num_heads,\r\n                            num_head_channels=num_head_channels,\r\n                            use_new_attention_order=use_new_attention_order,\r\n                        )\r\n                    )\r\n                self.input_blocks.append(TimestepEmbedSequential(*layers))\r\n                self._feature_size += ch\r\n                input_block_chans.append(ch)\r\n            if level != len(channel_mult) - 1:\r\n                out_ch = ch\r\n                self.input_blocks.append(\r\n                    TimestepEmbedSequential(\r\n                        ResBlock(\r\n                            ch,\r\n                            time_embed_dim,\r\n                            dropout,\r\n                            out_channels=out_ch,\r\n                            dims=dims,\r\n                            use_checkpoint=use_checkpoint,\r\n                            use_scale_shift_norm=use_scale_shift_norm,\r\n                            down=True,\r\n                        )\r\n                        if resblock_updown\r\n                        else Downsample(\r\n                            ch, conv_resample, dims=dims, out_channels=out_ch\r\n                        )\r\n                    )\r\n                )\r\n                ch = out_ch\r\n                input_block_chans.append(ch)\r\n                ds *= 2\r\n                self._feature_size += ch\r\n\r\n        self.middle_block = TimestepEmbedSequential(\r\n            ResBlock(\r\n                ch,\r\n                time_embed_dim,\r\n                dropout,\r\n                dims=dims,\r\n                use_checkpoint=use_checkpoint,\r\n                use_scale_shift_norm=use_scale_shift_norm,\r\n            ),\r\n            AttentionBlock(\r\n                ch,\r\n                use_checkpoint=use_checkpoint,\r\n                num_heads=num_heads,\r\n                num_head_channels=num_head_channels,\r\n                use_new_attention_order=use_new_attention_order,\r\n            ),\r\n            ResBlock(\r\n                ch,\r\n                time_embed_dim,\r\n                dropout,\r\n                dims=dims,\r\n                use_checkpoint=use_checkpoint,\r\n                use_scale_shift_norm=use_scale_shift_norm,\r\n            ),\r\n        )\r\n        self._feature_size += ch\r\n        self.pool = pool\r\n        if pool == \"adaptive\":\r\n            self.out = nn.Sequential(\r\n                normalization(ch),\r\n                nn.SiLU(),\r\n                nn.AdaptiveAvgPool2d((1, 1)),\r\n                zero_module(conv_nd(dims, ch, out_channels, 1)),\r\n                nn.Flatten(),\r\n            )\r\n        elif pool == \"attention\":\r\n            assert num_head_channels != -1\r\n            self.out = nn.Sequential(\r\n                normalization(ch),\r\n                nn.SiLU(),\r\n                AttentionPool2d(\r\n                    (image_size // ds), ch, num_head_channels, out_channels\r\n                ),\r\n            )\r\n        elif pool == \"spatial\":\r\n            self.out = nn.Sequential(\r\n                nn.Linear(self._feature_size, 2048),\r\n                nn.ReLU(),\r\n                nn.Linear(2048, self.out_channels),\r\n            )\r\n        elif pool == \"spatial_v2\":\r\n            self.out = nn.Sequential(\r\n                nn.Linear(self._feature_size, 2048),\r\n                normalization(2048),\r\n                nn.SiLU(),\r\n                nn.Linear(2048, self.out_channels),\r\n            )\r\n        else:\r\n            raise NotImplementedError(f\"Unexpected {pool} pooling\")\r\n\r\n    def convert_to_fp16(self):\r\n        \"\"\"\r\n        Convert the torso of the model to float16.\r\n        \"\"\"\r\n        self.input_blocks.apply(convert_module_to_f16)\r\n        self.middle_block.apply(convert_module_to_f16)\r\n\r\n    def convert_to_fp32(self):\r\n        \"\"\"\r\n        Convert the torso of the model to float32.\r\n        \"\"\"\r\n        self.input_blocks.apply(convert_module_to_f32)\r\n        self.middle_block.apply(convert_module_to_f32)\r\n\r\n    def forward(self, x, timesteps):\r\n        \"\"\"\r\n        Apply the model to an input batch.\r\n        :param x: an [N x C x ...] Tensor of inputs.\r\n        :param timesteps: a 1-D batch of timesteps.\r\n        :return: an [N x K] Tensor of outputs.\r\n        \"\"\"\r\n        emb = self.time_embed(timestep_embedding(timesteps, self.model_channels))\r\n\r\n        results = []\r\n        h = x.type(self.dtype)\r\n        for module in self.input_blocks:\r\n            h = module(h, emb)\r\n            if self.pool.startswith(\"spatial\"):\r\n                results.append(h.type(x.dtype).mean(dim=(2, 3)))\r\n        h = self.middle_block(h, emb)\r\n        if self.pool.startswith(\"spatial\"):\r\n            results.append(h.type(x.dtype).mean(dim=(2, 3)))\r\n            h = th.cat(results, axis=-1)\r\n            return self.out(h)\r\n        else:\r\n            h = h.type(x.dtype)\r\n            return self.out(h)\r\n\r\n"
  },
  {
    "path": "modules/attention.py",
    "content": "from inspect import isfunction\r\nimport math\r\nimport torch\r\nimport torch.nn.functional as F\r\nfrom torch import nn, einsum\r\nfrom einops import rearrange, repeat\r\n\r\nfrom utils.ldm_utils import checkpoint\r\n\r\n\r\ndef exists(val):\r\n    return val is not None\r\n\r\n\r\ndef uniq(arr):\r\n    return{el: True for el in arr}.keys()\r\n\r\n\r\ndef default(val, d):\r\n    if exists(val):\r\n        return val\r\n    return d() if isfunction(d) else d\r\n\r\n\r\ndef max_neg_value(t):\r\n    return -torch.finfo(t.dtype).max\r\n\r\n\r\ndef init_(tensor):\r\n    dim = tensor.shape[-1]\r\n    std = 1 / math.sqrt(dim)\r\n    tensor.uniform_(-std, std)\r\n    return tensor\r\n\r\n\r\n# feedforward\r\nclass GEGLU(nn.Module):\r\n    def __init__(self, dim_in, dim_out):\r\n        super().__init__()\r\n        self.proj = nn.Linear(dim_in, dim_out * 2)\r\n\r\n    def forward(self, x):\r\n        x, gate = self.proj(x).chunk(2, dim=-1)\r\n        return x * F.gelu(gate)\r\n\r\n\r\nclass FeedForward(nn.Module):\r\n    def __init__(self, dim, dim_out=None, mult=4, glu=False, dropout=0.):\r\n        super().__init__()\r\n        inner_dim = int(dim * mult)\r\n        dim_out = default(dim_out, dim)\r\n        project_in = nn.Sequential(\r\n            nn.Linear(dim, inner_dim),\r\n            nn.GELU()\r\n        ) if not glu else GEGLU(dim, inner_dim)\r\n\r\n        self.net = nn.Sequential(\r\n            project_in,\r\n            nn.Dropout(dropout),\r\n            nn.Linear(inner_dim, dim_out)\r\n        )\r\n\r\n    def forward(self, x):\r\n        return self.net(x)\r\n\r\n\r\ndef zero_module(module):\r\n    \"\"\"\r\n    Zero out the parameters of a module and return it.\r\n    \"\"\"\r\n    for p in module.parameters():\r\n        p.detach().zero_()\r\n    return module\r\n\r\n\r\ndef Normalize(in_channels):\r\n    return torch.nn.GroupNorm(num_groups=32, num_channels=in_channels, eps=1e-6, affine=True)\r\n\r\n\r\nclass LinearAttention(nn.Module):\r\n    def __init__(self, dim, heads=4, dim_head=32):\r\n        super().__init__()\r\n        self.heads = heads\r\n        hidden_dim = dim_head * heads\r\n        self.to_qkv = nn.Conv2d(dim, hidden_dim * 3, 1, bias = False)\r\n        self.to_out = nn.Conv2d(hidden_dim, dim, 1)\r\n\r\n    def forward(self, x):\r\n        b, c, h, w = x.shape\r\n        qkv = self.to_qkv(x)\r\n        q, k, v = rearrange(qkv, 'b (qkv heads c) h w -> qkv b heads c (h w)', heads = self.heads, qkv=3)\r\n        k = k.softmax(dim=-1)  \r\n        context = torch.einsum('bhdn,bhen->bhde', k, v)\r\n        out = torch.einsum('bhde,bhdn->bhen', context, q)\r\n        out = rearrange(out, 'b heads c (h w) -> b (heads c) h w', heads=self.heads, h=h, w=w)\r\n        return self.to_out(out)\r\n\r\n\r\nclass SpatialSelfAttention(nn.Module):\r\n    def __init__(self, in_channels):\r\n        super().__init__()\r\n        self.in_channels = in_channels\r\n\r\n        self.norm = Normalize(in_channels)\r\n        self.q = torch.nn.Conv2d(in_channels,\r\n                                 in_channels,\r\n                                 kernel_size=1,\r\n                                 stride=1,\r\n                                 padding=0)\r\n        self.k = torch.nn.Conv2d(in_channels,\r\n                                 in_channels,\r\n                                 kernel_size=1,\r\n                                 stride=1,\r\n                                 padding=0)\r\n        self.v = torch.nn.Conv2d(in_channels,\r\n                                 in_channels,\r\n                                 kernel_size=1,\r\n                                 stride=1,\r\n                                 padding=0)\r\n        self.proj_out = torch.nn.Conv2d(in_channels,\r\n                                        in_channels,\r\n                                        kernel_size=1,\r\n                                        stride=1,\r\n                                        padding=0)\r\n\r\n    def forward(self, x):\r\n        h_ = x\r\n        h_ = self.norm(h_)\r\n        q = self.q(h_)\r\n        k = self.k(h_)\r\n        v = self.v(h_)\r\n\r\n        # compute attention\r\n        b,c,h,w = q.shape\r\n        q = rearrange(q, 'b c h w -> b (h w) c')\r\n        k = rearrange(k, 'b c h w -> b c (h w)')\r\n        w_ = torch.einsum('bij,bjk->bik', q, k)\r\n\r\n        w_ = w_ * (int(c)**(-0.5))\r\n        w_ = torch.nn.functional.softmax(w_, dim=2)\r\n\r\n        # attend to values\r\n        v = rearrange(v, 'b c h w -> b c (h w)')\r\n        w_ = rearrange(w_, 'b i j -> b j i')\r\n        h_ = torch.einsum('bij,bjk->bik', v, w_)\r\n        h_ = rearrange(h_, 'b c (h w) -> b c h w', h=h)\r\n        h_ = self.proj_out(h_)\r\n\r\n        return x+h_\r\n\r\n\r\nclass CrossAttention(nn.Module):\r\n    def __init__(self, query_dim, context_dim=None, heads=8, dim_head=64, dropout=0.):\r\n        super().__init__()\r\n        inner_dim = dim_head * heads\r\n        context_dim = default(context_dim, query_dim)\r\n\r\n        self.scale = dim_head ** -0.5\r\n        self.heads = heads\r\n\r\n        self.to_q = nn.Linear(query_dim, inner_dim, bias=False)\r\n        self.to_k = nn.Linear(context_dim, inner_dim, bias=False)\r\n        self.to_v = nn.Linear(context_dim, inner_dim, bias=False)\r\n\r\n        self.to_out = nn.Sequential(\r\n            nn.Linear(inner_dim, query_dim),\r\n            nn.Dropout(dropout)\r\n        )\r\n\r\n    def forward(self, x, context=None, mask=None):\r\n        h = self.heads\r\n\r\n        q = self.to_q(x)\r\n        context = default(context, x)\r\n        k = self.to_k(context)\r\n        v = self.to_v(context)\r\n\r\n        q, k, v = map(lambda t: rearrange(t, 'b n (h d) -> (b h) n d', h=h), (q, k, v))\r\n\r\n        sim = einsum('b i d, b j d -> b i j', q, k) * self.scale\r\n\r\n        if exists(mask):\r\n            mask = rearrange(mask, 'b ... -> b (...)')\r\n            max_neg_value = -torch.finfo(sim.dtype).max\r\n            mask = repeat(mask, 'b j -> (b h) () j', h=h)\r\n            sim.masked_fill_(~mask, max_neg_value)\r\n\r\n        # attention, what we cannot get enough of\r\n        attn = sim.softmax(dim=-1)\r\n\r\n        out = einsum('b i j, b j d -> b i d', attn, v)\r\n        out = rearrange(out, '(b h) n d -> b n (h d)', h=h)\r\n        return self.to_out(out)\r\n\r\n\r\nclass BasicTransformerBlock(nn.Module):\r\n    def __init__(self, dim, n_heads, d_head, dropout=0., context_dim=None, gated_ff=True, checkpoint=True):\r\n        super().__init__()\r\n        self.attn1 = CrossAttention(query_dim=dim, heads=n_heads, dim_head=d_head, dropout=dropout)  # is a self-attention\r\n        self.ff = FeedForward(dim, dropout=dropout, glu=gated_ff)\r\n        self.attn2 = CrossAttention(query_dim=dim, context_dim=context_dim,\r\n                                    heads=n_heads, dim_head=d_head, dropout=dropout)  # is self-attn if context is none\r\n        self.norm1 = nn.LayerNorm(dim)\r\n        self.norm2 = nn.LayerNorm(dim)\r\n        self.norm3 = nn.LayerNorm(dim)\r\n        self.checkpoint = checkpoint\r\n\r\n    def forward(self, x, context=None):\r\n        return checkpoint(self._forward, (x, context), self.parameters(), self.checkpoint)\r\n\r\n    def _forward(self, x, context=None):\r\n        x = self.attn1(self.norm1(x)) + x\r\n        x = self.attn2(self.norm2(x), context=context) + x\r\n        x = self.ff(self.norm3(x)) + x\r\n        return x\r\n\r\n\r\nclass SpatialTransformer(nn.Module):\r\n    \"\"\"\r\n    Transformer block for image-like data.\r\n    First, project the input (aka embedding)\r\n    and reshape to b, t, d.\r\n    Then apply standard transformer action.\r\n    Finally, reshape to image\r\n    \"\"\"\r\n    def __init__(self, in_channels, n_heads, d_head,\r\n                 depth=1, dropout=0., context_dim=None):\r\n        super().__init__()\r\n        self.in_channels = in_channels\r\n        inner_dim = n_heads * d_head\r\n        self.norm = Normalize(in_channels)\r\n\r\n        self.proj_in = nn.Conv2d(in_channels,\r\n                                 inner_dim,\r\n                                 kernel_size=1,\r\n                                 stride=1,\r\n                                 padding=0)\r\n\r\n        self.transformer_blocks = nn.ModuleList(\r\n            [BasicTransformerBlock(inner_dim, n_heads, d_head, dropout=dropout, context_dim=context_dim)\r\n                for d in range(depth)]\r\n        )\r\n\r\n        self.proj_out = zero_module(nn.Conv2d(inner_dim,\r\n                                              in_channels,\r\n                                              kernel_size=1,\r\n                                              stride=1,\r\n                                              padding=0))\r\n\r\n    def forward(self, x, context=None):\r\n        # note: if no context is given, cross-attention defaults to self-attention\r\n        b, c, h, w = x.shape\r\n        x_in = x\r\n        x = self.norm(x)\r\n        x = self.proj_in(x)\r\n        x = rearrange(x, 'b c h w -> b (h w) c')\r\n        for block in self.transformer_blocks:\r\n            x = block(x, context=context)\r\n        x = rearrange(x, 'b (h w) c -> b c h w', h=h, w=w)\r\n        x = self.proj_out(x)\r\n        return x + x_in"
  },
  {
    "path": "sample/generate_cat.py",
    "content": "from utils.fixseed import fixseed\nimport os\n\nimport torch\nfrom utils.parser_util import generate_args\nfrom utils.model_util import create_model_and_diffusion, load_model_wo_clip\nfrom utils import dist_util\nfrom models.cfg_sampler import ClassifierFreeSampleModel\n\n\nfrom AutoEncoder.models.coordsenc import CoordsEncoder\nfrom AutoEncoder.models.cbndec import CbnDecoder\nfrom meshudf.meshudf import get_mesh_from_udf\nfrom utils.utils import get_o3d_mesh_from_tensors\n\nimport open3d as o3d\nfrom torch import Tensor\nimport pymeshlab as ml\n\n\ncat2name = {0: 'long_sleeve_upper', \n            1: 'short_sleeve_upper', \n            2: 'no_sleeve_upper', \n            3: 'long_sleeve_dress', \n            4: 'short_sleeve_dress', \n            5: 'no_sleeve_dress', \n            8: 'dress', \n            6: 'long_pants', \n            7: 'short_pants'}\n\ndef main():\n    args = generate_args()\n    out_path = args.output_dir\n    os.makedirs(out_path, exist_ok=True)\n\n    dist_util.setup_dist(args.device)\n\n\n    print(\"Creating model and diffusion...\")\n    model, diffusion = create_model_and_diffusion(args)\n\n    print(f\"Loading checkpoints from [{args.model_path}]...\")\n    state_dict = torch.load(args.model_path, map_location='cpu')\n    load_model_wo_clip(model, state_dict)\n\n    if args.guidance_param != 1:\n        model = ClassifierFreeSampleModel(model)   # wrapping model with the classifier-free sampler\n    model.to(dist_util.dev())\n    model.eval()  # disable random masking\n\n    cond = {}\n    cond[\"y\"] = {}\n    category = [args.category]*args.num_samples\n    \n    cond['y']['action'] = torch.tensor(category, dtype=torch.float).cuda()\n    cond['y']['action_text'] = torch.tensor(category, dtype=torch.int64).cuda()\n    print(\"You are running coditional generaion\")\n    print(\"Conidtion: \", cond['y']['action'] )\n    print(cond['y']['action'].shape)\n\n\n    ckpt = torch.load(args.ae_dir)\n    print(f'Load Drape From: {args.ae_dir}')\n\n    latent_size = 32\n    coords_encoder = CoordsEncoder()\n\n    hidden_dim = 512\n    num_hidden_layers = 5\n    decoder = CbnDecoder(\n        coords_encoder.out_dim,\n        latent_size,\n        hidden_dim,\n        num_hidden_layers,\n    )\n    decoder.load_state_dict(ckpt[\"decoder\"], strict=True)\n    decoder = decoder.cuda()\n    decoder.eval()\n    for param in decoder.parameters():\n        param.requires_grad = False\n\n    args.batch_size = args.num_samples\n    sample_fn = diffusion.p_sample_loop\n    sample = sample_fn(\n        model,\n        (\n        args.batch_size, 1, latent_size), # torch.Size([1, 1, 128, 128, 128])\n        clip_denoised=False,\n        model_kwargs=cond,\n        skip_timesteps=0,  # 0 is the default value - i.e. don't skip any step\n        init_image=None,\n        progress=True,\n        dump_steps=None,\n        noise=None,\n        const_noise=False,\n    )\n\n    udf_max_dist = 0.1\n    for k in range(args.batch_size):\n\n        lat = sample[k]\n\n        def udf_func(c: Tensor) -> Tensor:\n\n            c = coords_encoder.encode(c.unsqueeze(0))\n            p = decoder(c, lat).squeeze(0)\n            p = torch.sigmoid(p)\n            p = (1 - p) * udf_max_dist\n            return p\n\n        v, t = get_mesh_from_udf(\n            udf_func,\n            coords_range=(-1, 1),\n            max_dist=udf_max_dist,\n            N=args.resolution,\n            max_batch=2**16,\n            differentiable=False,\n        )\n\n        pred_mesh_o3d = get_o3d_mesh_from_tensors(v, t)\n        mesh_path = os.path.join(out_path, cat2name[args.category], f'{k}.obj')\n        os.makedirs(os.path.dirname(mesh_path), exist_ok=True)\n        o3d.io.write_triangle_mesh(mesh_path, pred_mesh_o3d)\n\n        print(f'saved results to {mesh_path}')\n        ms = ml.MeshSet()\n        ms.set_verbosity(False)\n        ms.load_new_mesh(mesh_path)\n        ms.apply_coord_laplacian_smoothing()\n        ms.meshing_remove_connected_component_by_face_number(mincomponentsize=2500)\n        ms.save_current_mesh(mesh_path)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "sample/generate_image.py",
    "content": "\nimport sys\n\nfrom utils.fixseed import fixseed\nimport os\nimport time\nimport numpy as np\nimport torch\nfrom utils.parser_util import generate_args\nfrom utils.model_util import create_model_and_diffusion, load_model_wo_clip\nfrom utils import dist_util\nfrom models.cfg_sampler import ClassifierFreeSampleModel\n\nfrom AutoEncoder.models.coordsenc import CoordsEncoder\nfrom AutoEncoder.models.cbndec import CbnDecoder\nfrom meshudf.meshudf import get_mesh_from_udf\nfrom utils.utils import get_o3d_mesh_from_tensors\nfrom data_loaders.dataset import mask2bbox, crop_square, _convert_image_to_rgb, _transform_rgb\n\nimport trimesh\nimport open3d as o3d\nfrom PIL import Image\nfrom torch import Tensor\nfrom utils.utils import GridFiller\nimport pymeshlab as ml\n\n\nfrom torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize\ntry:\n    from torchvision.transforms import InterpolationMode\n    BICUBIC = InterpolationMode.BICUBIC\nexcept ImportError:\n    BICUBIC = Image.BICUBIC\nimport clip\n\n\ndef load_and_freeze_clip(clip_version):\n    clip_model, _ = clip.load(clip_version, device='cpu',\n                                            jit=False)  # Must set jit=False for training\n    # clip.model.convert_weights(\n    #     clip_model)  # Actually this line is unnecessary since clip by default already on float16\n\n    # Freeze CLIP weights\n    clip_model.eval()\n    for p in clip_model.parameters():\n        p.requires_grad = False\n\n    return clip_model\n\ndef main():\n    args = generate_args()\n\n    os.makedirs(args.output_dir, exist_ok=True)\n\n    dist_util.setup_dist(args.device)\n\n    print(\"Creating model and diffusion...\")\n    model, diffusion = create_model_and_diffusion(args)\n\n    print(f\"Loading checkpoints from [{args.model_path}]...\")\n    state_dict = torch.load(args.model_path, map_location='cpu')\n    load_model_wo_clip(model, state_dict)\n\n    if args.guidance_param != 1:\n        model = ClassifierFreeSampleModel(model)   # wrapping model with the classifier-free sampler\n    model.to(dist_util.dev())\n    model.eval()  # disable random masking\n\n    clip_version = 'ViT-B/32'\n    clip_model = load_and_freeze_clip(clip_version)\n    clip_preprocess = _transform_rgb(224)\n\n    ckpt = torch.load(args.ae_dir)\n    print(f'Load AutoEncoder From: {args.ae_dir}')\n\n    latent_size = 64\n    coords_encoder = CoordsEncoder()\n    hidden_dim = 512\n    num_hidden_layers = 5\n    decoder = CbnDecoder(\n        coords_encoder.out_dim,\n        latent_size,\n        hidden_dim,\n        num_hidden_layers,\n    )\n    decoder.load_state_dict(ckpt[\"decoder\"], strict=True)\n    decoder = decoder.cuda()\n    decoder.eval()\n    for param in decoder.parameters():\n        param.requires_grad = False\n\n    img_path = args.image_path\n    img_name = img_path.split('/')[-1]\n    img_id = img_name.split('.')[0]\n    mask_path = args.mask_path\n\n    img_np = np.array(Image.open(img_path).convert('RGB'))\n    mask_np = np.array(Image.open(mask_path).convert('1'))\n\n    # get bbox from mask\n    x0, y0, x1, y1 = mask2bbox(mask_np)\n    bbox = [x0, y0, x1, y1]\n    \n    r = 0.7\n    img_comp = img_np * mask_np[:, :, None] + (1 - mask_np[:, :, None]) * (r*255 + (1 - r) * img_np)\n    img_comp = crop_square(img_comp.astype(np.uint8), bbox)\n\n    img_clean = img_np * mask_np[:, :, None]\n    img_clean = crop_square(img_clean.astype(np.uint8), bbox)\n\n    img = clip_preprocess(img_clean).unsqueeze(0)\n\n    cond = {}\n    cond[\"y\"] = {}\n    cond['y']['context'] = clip_model.encode_image(img).cuda()\n\n    print(\"You are running conditional generaion\")\n    print(\"Conidtion: image, Image path: \", img_path, mask_path)\n\n    args.batch_size = 1\n    sample_fn = diffusion.p_sample_loop\n    sample = sample_fn(\n        model,\n        (\n        args.batch_size, 1, latent_size),\n        clip_denoised=False,\n        model_kwargs=cond,\n        skip_timesteps=0,  # 0 is the default value - i.e. don't skip any step\n        init_image=None,\n        progress=True,\n        dump_steps=None,\n        noise=None,\n        const_noise=False,\n    )\n\n\n    udf_max_dist = 0.1\n\n    lat = sample[0]\n\n    def udf_func(c: Tensor) -> Tensor:\n        c = coords_encoder.encode(c.unsqueeze(0))\n        p = decoder(c, lat).squeeze(0)\n        p = torch.sigmoid(p)\n        p = (1 - p) * udf_max_dist\n        return p\n    mesh_path = os.path.join(args.output_dir, f'{img_id}.obj')\n    os.makedirs(os.path.dirname(mesh_path), exist_ok=True)\n\n    if args.watertight:\n        size = args.resolution\n        fast_grid_filler = GridFiller(size)\n        udf, _ = fast_grid_filler.fill_grid(udf_func, max_batch=2**16)\n        udf[udf < 0] = 0\n\n        # keep the max component of the extracted mesh\n        import mcubes\n        vertices, faces = mcubes.marching_cubes(udf.detach().cpu().numpy(), 0.01)\n        mesh = trimesh.Trimesh(vertices, faces)\n        components = mesh.split(only_watertight=False)\n        bbox = []\n        for k, c in enumerate(components):\n            bbmin = c.vertices.min(0)\n            bbmax = c.vertices.max(0)\n            bbox.append((bbmax - bbmin).max())\n            \n        max_component = np.argmax(bbox)\n        mesh = components[max_component]\n        mesh.vertices = mesh.vertices * (2.0 / size) - 1.0  # normalize it to [-1, 1]\n        os.makedirs(os.path.dirname(mesh_path), exist_ok=True)\n        trimesh.Trimesh(vertices=vertices, faces=faces).export(mesh_path)\n    else:\n        v, t = get_mesh_from_udf(\n            udf_func,\n            coords_range=(-1, 1),\n            max_dist=udf_max_dist,\n            N=args.resolution,\n            max_batch=2**16,\n            differentiable=False,\n        )\n\n        pred_mesh_o3d = get_o3d_mesh_from_tensors(v, t)\n        o3d.io.write_triangle_mesh(mesh_path, pred_mesh_o3d)\n        ms = ml.MeshSet()\n        ms.set_verbosity(False)\n        ms.load_new_mesh(mesh_path)\n        ms.apply_coord_laplacian_smoothing()\n        ms.meshing_remove_connected_component_by_face_number(mincomponentsize=2500)\n        ms.save_current_mesh(mesh_path)\n        print(f'saved results to {mesh_path}')\n\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "sample/generate_sketch.py",
    "content": "\nfrom utils.fixseed import fixseed\nimport os\nimport torch\nfrom utils.parser_util import generate_args\nfrom utils.model_util import create_model_and_diffusion, load_model_wo_clip\nfrom utils import dist_util\nfrom models.cfg_sampler import ClassifierFreeSampleModel\n\nfrom AutoEncoder.models.coordsenc import CoordsEncoder\nfrom AutoEncoder.models.cbndec import CbnDecoder\nfrom meshudf.meshudf import get_mesh_from_udf\nfrom utils.utils import get_o3d_mesh_from_tensors\nfrom data_loaders.dataset import _convert_image_to_rgb\n\nimport open3d as o3d\nfrom PIL import Image\nfrom torch import Tensor\nimport pymeshlab as ml\n\n\nfrom torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize\ntry:\n    from torchvision.transforms import InterpolationMode\n    BICUBIC = InterpolationMode.BICUBIC\nexcept ImportError:\n    BICUBIC = Image.BICUBIC\nimport clip\n\n\ndef _transform(n_px):\n    return Compose([\n        Resize(n_px, interpolation=BICUBIC),\n        CenterCrop(n_px),\n        _convert_image_to_rgb,\n        ToTensor(),\n        Normalize((0.48145466, 0.4578275, 0.40821073), (0.26862954, 0.26130258, 0.27577711)),\n    ])\n\ndef load_and_freeze_clip(clip_version):\n    clip_model, _ = clip.load(clip_version, device='cpu',\n                                            jit=False)  # Must set jit=False for training\n    # Freeze CLIP weights\n    clip_model.eval()\n    for p in clip_model.parameters():\n        p.requires_grad = False\n\n    return clip_model\n\ndef main():\n    args = generate_args()\n\n    out_path = args.output_dir\n    os.makedirs(out_path, exist_ok=True)\n\n    dist_util.setup_dist(args.device)\n\n    args.batch_size = 1 \n    print(\"Creating model and diffusion...\")\n    model, diffusion = create_model_and_diffusion(args)\n\n    print(f\"Loading checkpoints from [{args.model_path}]...\")\n    state_dict = torch.load(args.model_path, map_location='cpu')\n    load_model_wo_clip(model, state_dict)\n\n    if args.guidance_param != 1:\n        model = ClassifierFreeSampleModel(model)   # wrapping model with the classifier-free sampler\n    model.to(dist_util.dev())\n    model.eval()  # disable random masking\n\n    print(f'using sketch: {args.sketch_path}')\n\n\n    clip_version = 'ViT-B/32'\n    img = Image.open(args.sketch_path)\n    clip_preprocess = _transform(224)\n    img = clip_preprocess(img).unsqueeze(0)\n    clip_model = load_and_freeze_clip(clip_version)\n\n    cond = {}\n    cond[\"y\"] = {}\n    cond['y']['context'] = clip_model.encode_image(img).cuda()\n\n    print(\"You are running conditional generaion\")\n    print(\"Conidtion: sketch image, Image path: \", args.sketch_path)\n\n    ckpt = torch.load(args.ae_dir)\n    print(f'Load AutoEncoder From: {args.ae_dir}')\n\n    coords_encoder = CoordsEncoder()\n\n    hidden_dim = 512\n    num_hidden_layers = 5\n    decoder = CbnDecoder(\n        coords_encoder.out_dim,\n        32,\n        hidden_dim,\n        num_hidden_layers,\n    )\n    decoder.load_state_dict(ckpt[\"decoder\"], strict=True)\n    decoder = decoder.cuda()\n    decoder.eval()\n    for param in decoder.parameters():\n        param.requires_grad = False\n\n    sample_fn = diffusion.p_sample_loop\n    sample = sample_fn(\n        model,\n        (\n        args.batch_size, 1, 32),\n        clip_denoised=False,\n        model_kwargs=cond,\n        skip_timesteps=0,  # 0 is the default value - i.e. don't skip any step\n        init_image=None,\n        progress=True,\n        dump_steps=None,\n        noise=None,\n        const_noise=False,\n    )\n\n    udf_max_dist = 0.1\n\n    if args.sketch_path is not None:\n        id = args.sketch_path.split('/')[-1][:-4]\n        \n    lat = sample[0]\n\n    def udf_func(c: Tensor) -> Tensor:\n        c = coords_encoder.encode(c.unsqueeze(0))\n        p = decoder(c, lat).squeeze(0)\n        p = torch.sigmoid(p)\n        p = (1 - p) * udf_max_dist\n        return p\n\n    v, t = get_mesh_from_udf(\n        udf_func,\n        coords_range=(-1, 1),\n        max_dist=udf_max_dist,\n        N=args.resolution,\n        max_batch=2**16,\n        differentiable=False,\n    )\n\n    pred_mesh_o3d = get_o3d_mesh_from_tensors(v, t)\n    mesh_path = os.path.join(args.output_dir, f'sketch_{id}.obj')\n    os.makedirs(os.path.dirname(mesh_path), exist_ok=True)\n    o3d.io.write_triangle_mesh(mesh_path, pred_mesh_o3d)\n    ms = ml.MeshSet()\n    ms.set_verbosity(False)\n    ms.load_new_mesh(mesh_path)\n    ms.apply_coord_laplacian_smoothing()\n    ms.meshing_remove_connected_component_by_face_number(mincomponentsize=2500)\n    ms.save_current_mesh(mesh_path)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "sample/generate_text.py",
    "content": "\nimport os\n\nimport numpy as np\nimport torch\nfrom utils.parser_util import generate_args\nfrom utils.model_util import create_model_and_diffusion, load_model_wo_clip\nfrom utils import dist_util\nfrom models.cfg_sampler import ClassifierFreeSampleModel\n\nfrom AutoEncoder.models.coordsenc import CoordsEncoder\nfrom AutoEncoder.models.cbndec import CbnDecoder\nfrom meshudf.meshudf import get_mesh_from_udf\nfrom utils.utils import get_o3d_mesh_from_tensors\n\nimport trimesh\nimport open3d as o3d\nfrom PIL import Image\nfrom torch import Tensor\nfrom utils.utils import GridFiller\nimport pymeshlab as ml\n\nfrom torchvision.transforms import Compose, Resize, CenterCrop, ToTensor, Normalize\ntry:\n    from torchvision.transforms import InterpolationMode\n    BICUBIC = InterpolationMode.BICUBIC\nexcept ImportError:\n    BICUBIC = Image.BICUBIC\nimport clip\n\n\ndef load_and_freeze_clip(clip_version):\n    clip_model, _ = clip.load(clip_version, device='cpu',\n                                            jit=False)  # Must set jit=False for training\n    # clip.model.convert_weights(\n    #     clip_model)  # Actually this line is unnecessary since clip by default already on float16\n\n    # Freeze CLIP weights\n    clip_model.eval()\n    for p in clip_model.parameters():\n        p.requires_grad = False\n\n    return clip_model\n\ndef main():\n    args = generate_args()\n\n    out_path = args.output_dir\n    os.makedirs(out_path, exist_ok=True)\n\n    args.batch_size = args.num_samples  # Sampling a single batch from the testset, with exactly args.num_samples\n\n    print(\"Creating model and diffusion...\")\n    model, diffusion = create_model_and_diffusion(args)\n\n    print(args.guidance_param)\n    if args.guidance_param != 1: ## 3 for text\n        model = ClassifierFreeSampleModel(model)   # wrapping model with the classifier-free sampler\n\n    print(f\"Loading checkpoints from [{args.model_path}]...\")\n    state_dict = torch.load(args.model_path, map_location='cpu')\n    load_model_wo_clip(model, state_dict)\n\n\n    model.to(dist_util.dev())\n    model.eval()  # disable random masking\n\n    print(\"You are running conditional generaion\")\n\n    import csv\n    text2name = {}\n\n    cond = {}\n    cond['y'] = {}\n    \n\n    ckpt = torch.load(args.ae_dir)\n    print(f'Load AutoEncoder From: {args.ae_dir}')\n\n    latent_size = 64\n    coords_encoder = CoordsEncoder()\n\n    hidden_dim = 512\n    num_hidden_layers = 5\n    decoder = CbnDecoder(\n        coords_encoder.out_dim,\n        latent_size,\n        hidden_dim,\n        num_hidden_layers,\n    )\n    decoder.load_state_dict(ckpt[\"decoder\"], strict=True)\n    decoder = decoder.cuda()\n    decoder.eval()\n    for param in decoder.parameters():\n        param.requires_grad = False\n\n    cond['y']['text'] = [args.prompt]*args.batch_size\n    # for name in names:\n    print(\"You are running conditional generaion\")\n    print(\"Conidtion sample: \", cond['y']['text'][0])\n\n    args.batch_size = len(cond['y']['text'])\n    sample_fn = diffusion.p_sample_loop\n    sample = sample_fn(\n        model,\n        (\n        args.batch_size, 1, latent_size),\n        clip_denoised=False,\n        model_kwargs=cond,\n        skip_timesteps=0,  # 0 is the default value - i.e. don't skip any step\n        init_image=None,\n        progress=True,\n        dump_steps=None,\n        noise=None,\n        const_noise=False,\n    )\n\n    bs = len(cond['y']['text'])\n    udf_max_dist = 0.1\n    for k in range(bs):\n        id = k\n        lat = sample[k]\n        def udf_func(c: Tensor) -> Tensor:\n            c = coords_encoder.encode(c.unsqueeze(0))\n            p = decoder(c, lat).squeeze(0)\n            p = torch.sigmoid(p)\n            p = (1 - p) * udf_max_dist\n            return p\n\n        mesh_path = os.path.join(args.output_dir, cond['y']['text'][k].replace(\" \", \"-\").replace(\".\", \"\")[:100]+f'_{id}.obj')\n\n        if args.watertight:\n            size = args.resolution\n            fast_grid_filler = GridFiller(size)\n            udf, _ = fast_grid_filler.fill_grid(udf_func, max_batch=2**16)\n            udf[udf < 0] = 0\n\n            # keep the max component of the extracted mesh\n            import mcubes\n            vertices, faces = mcubes.marching_cubes(udf.detach().cpu().numpy(), 0.01)\n            mesh = trimesh.Trimesh(vertices, faces)\n            components = mesh.split(only_watertight=False)\n            bbox = []\n            for k, c in enumerate(components):\n                bbmin = c.vertices.min(0)\n                bbmax = c.vertices.max(0)\n                bbox.append((bbmax - bbmin).max())\n                \n            max_component = np.argmax(bbox)\n            mesh = components[max_component]\n            mesh.vertices = mesh.vertices * (2.0 / size) - 1.0  # normalize it to [-1, 1]\n            os.makedirs(os.path.dirname(mesh_path), exist_ok=True)\n            trimesh.Trimesh(vertices=vertices, faces=faces).export(mesh_path)\n            ms = ml.MeshSet()\n            ms.set_verbosity(False)\n            ms.load_new_mesh(mesh_path)\n            ms.meshing_remove_connected_component_by_face_number(mincomponentsize=5000)\n            ms.save_current_mesh(mesh_path)\n        else:\n            v, t = get_mesh_from_udf(\n                udf_func,\n                coords_range=(-1, 1),\n                max_dist=udf_max_dist,\n                N=args.resolution,\n                max_batch=2**16,\n                differentiable=False,\n            )\n            pred_mesh_o3d = get_o3d_mesh_from_tensors(v, t)\n            os.makedirs(os.path.dirname(mesh_path), exist_ok=True)\n            o3d.io.write_triangle_mesh(mesh_path, pred_mesh_o3d)\n\n    print(f\"saved to: {args.output_dir}\")\n\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "sample/generate_uncond.py",
    "content": "\nfrom utils.fixseed import fixseed\nimport os\nimport torch\nfrom utils.parser_util import generate_args\nfrom utils.model_util import create_model_and_diffusion, load_model_wo_clip\nfrom utils import dist_util\nfrom models.cfg_sampler import ClassifierFreeSampleModel\n\nfrom AutoEncoder.models.coordsenc import CoordsEncoder\nfrom AutoEncoder.models.cbndec import CbnDecoder\nfrom meshudf.meshudf import get_mesh_from_udf\nfrom utils.utils import get_o3d_mesh_from_tensors\n\nimport open3d as o3d\nfrom torch import Tensor\nimport pymeshlab as ml\nimport torch.nn.functional as F\n\n\ndef main():\n    args = generate_args()\n\n    out_path = args.output_dir\n    os.makedirs(out_path, exist_ok=True)\n\n    dist_util.setup_dist(args.device)\n\n    assert args.num_samples <= args.batch_size, \\\n        f'Please either increase batch_size({args.batch_size}) or reduce num_samples({args.num_samples})'\n\n    args.batch_size = args.num_samples  # Sampling a single batch from the testset, with exactly args.num_samples\n\n\n    print(\"Creating model and diffusion...\")\n    model, diffusion = create_model_and_diffusion(args)\n\n    print(f\"Loading checkpoints from [{args.model_path}]...\")\n    state_dict = torch.load(args.model_path, map_location='cpu')\n    load_model_wo_clip(model, state_dict)\n\n    if args.guidance_param != 1:\n        model = ClassifierFreeSampleModel(model)   # wrapping model with the classifier-free sampler\n    model.to(dist_util.dev())\n    model.eval()  # disable random masking\n\n    cond = {}\n    cond[\"y\"] = {}\n    print(\"You are running unconditional generaion\")\n\n\n    ckpt = torch.load(args.ae_dir)\n    print(f'Load AutoEncoder From: {args.ae_dir}')\n\n    latent_size = 32\n    coords_encoder = CoordsEncoder()\n\n    hidden_dim = 512\n    num_hidden_layers = 5\n    decoder = CbnDecoder(\n        coords_encoder.out_dim,\n        latent_size,\n        hidden_dim,\n        num_hidden_layers,\n    )\n    decoder.load_state_dict(ckpt[\"decoder\"], strict=True)\n    decoder = decoder.cuda()\n    decoder.eval()\n    for param in decoder.parameters():\n        param.requires_grad = False\n\n    sample_fn = diffusion.p_sample_loop\n    sample = sample_fn(\n        model,\n        (\n        args.batch_size, 1, latent_size), # torch.Size([1, 1, 128, 128, 128])\n        clip_denoised=False,\n        model_kwargs=cond,\n        skip_timesteps=0,  # 0 is the default value - i.e. don't skip any step\n        init_image=None,\n        progress=True,\n        dump_steps=None,\n        noise=None,\n        const_noise=False,\n    )\n\n\n    bs = args.batch_size\n    udf_max_dist = 0.1\n    for k in range(bs):\n\n        id = k\n\n        lat = sample[k]\n\n        def udf_func(c: Tensor) -> Tensor:\n            c = coords_encoder.encode(c.unsqueeze(0))\n            p = decoder(c, lat).squeeze(0)\n            p = torch.sigmoid(p)\n            p = (1 - p) * udf_max_dist\n            return p\n\n\n        v, t = get_mesh_from_udf(\n            udf_func,\n            coords_range=(-1, 1),\n            max_dist=udf_max_dist,\n            N=args.resolution,\n            max_batch=2**16,\n            differentiable=False,\n        )\n\n        pred_mesh_o3d = get_o3d_mesh_from_tensors(v, t)\n        mesh_path = os.path.join(args.output_dir, f'{id}.obj')\n        os.makedirs(os.path.dirname(mesh_path), exist_ok=True)\n        o3d.io.write_triangle_mesh(mesh_path, pred_mesh_o3d)\n        ms = ml.MeshSet()\n        ms.set_verbosity(False)\n        ms.load_new_mesh(mesh_path)\n        ms.apply_coord_laplacian_smoothing()\n        ms.meshing_remove_connected_component_by_face_number(mincomponentsize=2500)\n        ms.save_current_mesh(mesh_path)\n    print(f'saved results to {mesh_path}')\n\n\n\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "train_diffcloth.py",
    "content": "# This code is based on https://github.com/openai/guided-diffusion\n\"\"\"\nTrain a diffusion model on images.\n\"\"\"\n\nimport os\nimport json\nfrom utils.fixseed import fixseed\nfrom utils.parser_util import train_args\nfrom utils import dist_util\nfrom utils.logger import setup_logger\nfrom utils.comm import synchronize, is_main_process, get_rank, get_world_size, all_gather\nfrom utils.miscellaneous import mkdir, set_seed\nfrom training_loop_single import TrainLoop\nfrom models.cfg_sampler import ClassifierFreeSampleModel\n\nfrom utils.model_util import create_model_and_diffusion\n\nfrom data_loaders.dataset import UDFs3d\nimport os\nimport torch\nimport numpy as np\n\nclass TrainPlatform:\n    def __init__(self, save_dir):\n        pass\n\n    def report_scalar(self, name, value, iteration, group_name=None):\n        pass\n\n    def report_args(self, args, name):\n        pass\n\n    def close(self):\n        pass\n\n\nclass TensorboardPlatform(TrainPlatform):\n    def __init__(self, save_dir):\n        from torch.utils.tensorboard import SummaryWriter\n        self.writer = SummaryWriter(log_dir=save_dir)\n\n    def report_scalar(self, name, value, iteration, group_name=None):\n        self.writer.add_scalar(f'{group_name}/{name}', value, iteration)\n\n    def close(self):\n        self.writer.close()\n\n\nclass NoPlatform(TrainPlatform):\n    def __init__(self, save_dir):\n        pass\n\n\ndef make_data_sampler(dataset, shuffle, distributed):\n    if distributed:\n        return torch.utils.data.distributed.DistributedSampler(dataset, shuffle=shuffle)\n    if shuffle:\n        sampler = torch.utils.data.sampler.RandomSampler(dataset)\n    else:\n        sampler = torch.utils.data.sampler.SequentialSampler(dataset)\n    return sampler\n\n\nclass IterationBasedBatchSampler(torch.utils.data.sampler.BatchSampler):\n    \"\"\"\n    Wraps a BatchSampler, resampling from it until\n    a specified number of iterations have been sampled\n    \"\"\"\n\n    def __init__(self, batch_sampler, num_iterations, start_iter=0):\n        self.batch_sampler = batch_sampler\n        self.num_iterations = num_iterations\n        self.start_iter = start_iter\n\n    def __iter__(self):\n        iteration = self.start_iter\n        while iteration <= self.num_iterations:\n            # if the underlying sampler has a set_epoch method, like\n            # DistributedSampler, used for making each process see\n            # a different split of the dataset, then set it\n            if hasattr(self.batch_sampler.sampler, \"set_epoch\"):\n                self.batch_sampler.sampler.set_epoch(iteration)\n            for batch in self.batch_sampler:\n                iteration += 1\n                if iteration > self.num_iterations:\n                    break\n                yield batch\n\n    def __len__(self):\n        return self.num_iterations\n\ndef make_batch_data_sampler(sampler, images_per_gpu, num_iters=None, start_iter=0):\n    batch_sampler = torch.utils.data.sampler.BatchSampler(\n        sampler, images_per_gpu, drop_last=False\n    )\n    return batch_sampler\n\ndef main():\n    global logger\n    args = train_args()\n    fixseed(args.seed)\n\n    os.makedirs(args.save_dir, exist_ok=True)\n\n    args.num_gpus = int(os.environ['WORLD_SIZE']) if 'WORLD_SIZE' in os.environ else 1\n    args.distributed = args.num_gpus > 1\n    args.device = torch.device(args.device)\n\n    if args.distributed:\n        print(\"Init distributed training on local rank {} ({}), world size {}\".format(args.local_rank, int(os.environ[\"LOCAL_RANK\"]), args.num_gpus))\n        torch.cuda.set_device(args.local_rank)\n        torch.distributed.init_process_group(\n            backend='nccl', init_method='env://'\n        )\n        args.local_rank = int(os.environ[\"LOCAL_RANK\"])\n        synchronize()\n    logger = setup_logger(\"Diffcloth\", args.save_dir, get_rank())\n\n    if args.save_dir is None:\n        raise FileNotFoundError('save_dir was not specified.')\n    elif os.path.exists(args.save_dir) and not args.overwrite:\n        raise FileExistsError('save_dir [{}] already exists.'.format(args.save_dir))\n    elif not os.path.exists(args.save_dir):\n        os.makedirs(args.save_dir)\n    args_path = os.path.join(args.save_dir, 'args.json')\n    with open(args_path, 'w') as fw:\n        args4print = args\n        args4print.device = str(args4print.device)\n        json.dump(vars(args4print), fw, indent=4, sort_keys=True)\n    logger.info(\"Using {} GPUs\".format(args.num_gpus))\n\n    logger.info(\"creating data loader...\")\n\n\n    name = args.dataset\n    dset_root = args.data_dir\n    dset_category = 'train'\n    dataset_train = UDFs3d(name, dset_root, dset_category, args.cond_mode)\n\n    shuffle = True\n    \n    args.batch_size = 2 #4\n    images_per_gpu = args.batch_size\n    images_per_batch = images_per_gpu * get_world_size()\n    iters_per_batch = len(dataset_train) // images_per_batch\n    num_iters = args.num_steps\n    start_iter = 0\n    logger.info(\"Train with {} images per GPU.\".format(images_per_gpu))\n    logger.info(\"Total batch size {}\".format(images_per_batch))\n    logger.info(\"Total training steps {}\".format(num_iters))\n \n    sampler = make_data_sampler(dataset_train, shuffle, args.distributed)\n    \n    batch_sampler = make_batch_data_sampler(\n        sampler, images_per_gpu, num_iters, start_iter\n    )\n\n    dataloader_train = torch.utils.data.DataLoader(\n        dataset_train, args.batch_size, shuffle=True, num_workers=6,\n        pin_memory=True,\n    )\n    if args.unconstrained:\n        args.num_actions = None\n    \n\n    logger.info(\"creating model and diffusion...\")\n    diff_model, diffusion = create_model_and_diffusion(args)\n   \n    if args.guidance_param != 1:\n        print('classifier free')\n        diff_model = ClassifierFreeSampleModel(diff_model)   # wrapping model with the classifier-free sampler\n\n    print(args.guidance_param)\n    if args.distributed:\n        args.gpu = args.local_rank\n        args.world_size = torch.distributed.get_world_size()\n        diff_model = diff_model.to(args.local_rank)\n     \n        diff_model = torch.nn.parallel.DistributedDataParallel(\n            diff_model, device_ids=[args.local_rank], \n            output_device=args.local_rank,\n            find_unused_parameters=True,\n        )\n\n    else:\n        diff_model = diff_model.cuda()\n\n    inds = np.random.choice(100000, 10000, replace=False)\n    TrainLoop(args, diff_model, diffusion, dataloader_train, logger).run_loop(inds=inds)\n\n\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "training_loop_single.py",
    "content": "import functools\nimport os\nimport time\nimport numpy as np\n\nimport blobfile as bf\nimport torch\nfrom torch.optim import AdamW\n\nfrom diffusion import logger\nfrom utils import dist_util\nfrom diffusion.fp16_util import MixedPrecisionTrainer\nfrom diffusion.resample import LossAwareSampler\nfrom utils.comm import is_main_process\n\nfrom diffusion.resample import create_named_schedule_sampler\n\n\nfrom torch.utils.tensorboard import SummaryWriter\n\nfrom utils.utils import random_point_sampling\n\nfrom AutoEncoder.models.dgcnn import Dgcnn\nimport clip\n\n# For ImageNet experiments, this was a good default value.\n# We found that the lg_loss_scale quickly climbed to\n# 20-21 within the first ~1K steps of training.\nINITIAL_LOG_LOSS_SCALE = 20.0\n\n\nclass TrainLoop:\n    def __init__(self, args, model, diffusion, data, logger=None):\n        self.args = args\n        self.dataset = args.dataset\n        self.data_dir = args.data_dir\n        self.grid_size = args.grid_size\n        self.logger = logger\n\n\n        print(args.clip_value)\n        print(\"Apply clip: \", args.clip_value)\n\n        self.model = model\n        self.diffusion = diffusion\n        if args.distributed:\n            self.cond_mode = model.module.cond_mode\n            self.clip_version = model.module.clip_version\n        else:\n            self.clip_version = model.clip_version\n            self.cond_mode = model.cond_mode\n\n        self.data = data\n        self.batch_size = args.batch_size\n        self.microbatch = args.batch_size  # deprecating this option\n        self.lr = args.lr\n        self.log_interval = args.log_interval\n        self.save_interval = args.save_interval\n        self.resume_checkpoint = args.resume_checkpoint\n        self.use_fp16 = False  # deprecating this option\n        self.fp16_scale_growth = 1e-3  # deprecating this option\n        self.weight_decay = args.weight_decay\n        self.lr_anneal_steps = args.lr_anneal_steps\n        \n        self.step = 0\n        self.resume_step = 0\n        self.global_batch = self.batch_size # * dist.get_world_size()\n        self.num_steps = args.num_steps\n        print('num_actions: ', args.num_actions)\n        print('dataloader length: ', len(self.data))\n        self.num_epochs = self.num_steps // len(self.data) + 1\n\n        self.sync_cuda = torch.cuda.is_available()\n\n        print(\"batch_size:\", self.batch_size)\n\n        self._load_and_sync_parameters()\n        self.mp_trainer = MixedPrecisionTrainer(\n            model=self.model,\n            use_fp16=self.use_fp16,\n            fp16_scale_growth=self.fp16_scale_growth,\n        )\n\n        self.save_dir = args.save_dir\n        self.overwrite = args.overwrite\n\n        self.opt = AdamW(\n            self.mp_trainer.master_params, lr=self.lr, weight_decay=self.weight_decay\n        )\n\n        self.device = torch.device(\"cpu\")\n        if torch.cuda.is_available() and dist_util.dev() != 'cpu':\n            self.device = torch.device(dist_util.dev())\n\n        self.schedule_sampler_type = 'uniform'\n        self.schedule_sampler = create_named_schedule_sampler(self.schedule_sampler_type, diffusion)\n        self.eval_wrapper, self.eval_data, self.eval_gt_data = None, None, None\n\n        self.use_ddp = False\n        self.ddp_model = self.model\n        self.log_writer = SummaryWriter(self.save_dir+\"/logs\") # added.\n\n        if 'text' or 'img' in args.cond_mode:\n            latent_size = 64\n        else:\n            latent_size = 32\n        encoder = Dgcnn(latent_size)\n        self.encoder = encoder.eval()\n        ckpt = torch.load(args.ae_dir)\n        self.encoder.load_state_dict(ckpt[\"encoder\"], strict=True)\n\n        for param in self.encoder.parameters():\n            param.requires_grad = False\n\n        if args.distributed:\n            self.local_rank = int(os.environ[\"LOCAL_RANK\"])\n            self.vqvae = self.vqvae.to(device=self.local_rank)\n            self.device = self.local_rank\n        else:\n            self.encoder = self.encoder.to(device=self.args.device)\n\n        if 'sketch' in self.cond_mode or 'img' in self.cond_mode:\n            print('EMBED SKETCH IMAGE')\n            print('Loading CLIP...')\n            self.clip_model = self.load_and_freeze_clip(self.clip_version)\n\n    def _load_and_sync_parameters(self):\n        resume_checkpoint = find_resume_checkpoint() or self.resume_checkpoint\n\n        if resume_checkpoint:\n            self.resume_step = parse_resume_step_from_filename(resume_checkpoint)\n\n            self.logger.info(f\"loading model from checkpoint: {resume_checkpoint}...\")\n            \n            sd = dist_util.load_state_dict(\n                    resume_checkpoint, map_location=\"cpu\"\n                )\n\n            self.model.load_state_dict({k:v for k, v in sd.items()}, \n                                       strict=False\n            )\n\n    def load_and_freeze_clip(self, clip_version):\n        clip_model, _ = clip.load(clip_version, device='cpu',\n                                                jit=False)  # Must set jit=False for training\n\n        # Freeze CLIP weights\n        clip_model.eval()\n        for p in clip_model.parameters():\n            p.requires_grad = False\n\n        return clip_model\n\n    def worker_init_fn(self, worker_id):\n        np.random.seed(int(time.time() * 10000000) % 10000000 + worker_id)\n\n\n    def _load_optimizer_state(self):\n        main_checkpoint = find_resume_checkpoint() or self.resume_checkpoint\n        opt_checkpoint = bf.join(\n            bf.dirname(main_checkpoint), f\"opt{self.resume_step:09}.pt\"\n        )\n        if bf.exists(opt_checkpoint):\n            self.logger.log(f\"loading optimizer state from checkpoint: {opt_checkpoint}\")\n            \n            state_dict = dist_util.load_state_dict(\n                opt_checkpoint, map_location=dist_util.dev()\n            )\n            self.opt.load_state_dict(state_dict)\n\n    def randbool(self, *size):\n        return torch.randint(2, size) == torch.randint(2, size)\n    def run_loop(self, inds=None):\n        loss_L1 = torch.nn.L1Loss().cuda(self.device)\n        for epoch in range(self.num_epochs):\n            print(f'Starting epoch {epoch}')\n\n            for i, batch in enumerate(self.data):\n\n                if 'sketch' in self.cond_mode or 'img' in self.cond_mode:\n                    _, _, pcds, coords, gt_udf, gt_grad, img = batch\n                elif 'text' in self.cond_mode:\n                    _, _, pcds, coords, gt_udf, gt_grad, text = batch\n                elif 'category' in self.cond_mode:\n                    _, _, pcds, coords, gt_udf, gt_grad, label = batch\n                else:\n                    _, _, pcds, coords, gt_udf, gt_grad = batch\n                \n                loss_args = {}\n                pcds = pcds.cuda()\n\n                num_points_pcd = 10000\n                pcds = random_point_sampling(pcds, num_points_pcd, inds=inds)\n                latent_codes = self.encoder(pcds).unsqueeze(1)\n\n\n                if not (not self.lr_anneal_steps or self.step + self.resume_step < self.lr_anneal_steps):\n                    break\n\n                cond = {}\n                cond[\"y\"] = {}\n                if self.cond_mode == \"no_cond\":\n                    cond['y']['mask'] = torch.ones(latent_codes.shape, dtype=torch.bool).cuda()\n                elif self.cond_mode == \"category\":\n                    cond['y']['action'] = torch.tensor(label, dtype=torch.float).cuda()\n                    cond['y']['action_text'] = torch.tensor(label, dtype=torch.int64).cuda()\n                elif self.cond_mode == 'sketch' or self.cond_mode == 'img':\n                    cond['y']['context'] = self.clip_model.encode_image(img).cuda()\n                elif self.cond_mode == 'text':\n                    cond['y']['text'] = text\n                    cond['y']['scale'] = self.args.guidance_param * torch.ones((len(text),1)).cuda()\n\n                self.run_step(latent_codes, cond, loss_L1)\n\n                if (self.step % self.log_interval == 0) and ((self.args.distributed and is_main_process()==True) or not self.args.distributed):\n                    info_dict = logger.get_current().name2val\n                    for k,v in info_dict.items():\n                        if k == 'loss':\n\n                            log_str = 'step[{}]: loss[{:0.5f}]'.format(self.step+self.resume_step, v)\n                            self.logger.info(log_str)\n                            self.log_writer.add_scalar('Loss/loss', float(info_dict['loss']), self.step+self.resume_step)\n\n                        if k in ['step', 'samples'] or '_q' in k:\n                            continue\n\n                if self.step % self.save_interval == 0:\n                    if self.args.distributed:\n                        if is_main_process()==True:\n                            self.save_distributed()\n                    else:\n                        self.save()\n                    self.model.eval()\n                    self.evaluate()\n                    self.model.train()\n\n                    # Run for a finite amount of time in integration tests.\n                    if os.environ.get(\"DIFFUSION_TRAINING_TEST\", \"\") and self.step > 0:\n                        return\n                self.step += 1\n            if not (not self.lr_anneal_steps or self.step + self.resume_step < self.lr_anneal_steps):\n                break\n        # Save the last checkpoint if it wasn't already saved.\n        if (self.step - 1) % self.save_interval != 0:\n            if is_main_process()==True:\n                self.save()\n            self.evaluate()\n\n    def evaluate(self):\n\n        return\n\n\n    def run_step(self, batch, cond, loss_L1, loss_args=None):\n        self.forward_backward(batch, cond, loss_L1, loss_args=loss_args)\n        self.mp_trainer.optimize(self.opt)\n        self._anneal_lr()\n        self.log_step()\n\n    def forward_backward(self, batch, cond, loss_L1, loss_args=None):\n        self.mp_trainer.zero_grad()\n        for i in range(0, batch.shape[0], self.microbatch):\n            # Eliminates the microbatch feature\n            assert i == 0\n            assert self.microbatch == self.batch_size\n            micro = batch \n            micro_cond = cond\n            t, weights = self.schedule_sampler.sample(micro.shape[0], self.device)\n\n            compute_losses = functools.partial(\n                self.diffusion.training_losses,\n                self.ddp_model,\n                micro,  # [bs, ch, image_size, image_size]\n                t,  # [bs](int) sampled timesteps\n                loss_L1,\n                model_kwargs=micro_cond,\n                dataset=self.data.dataset,\n                loss_args=loss_args\n            )\n            \n            losses = compute_losses()\n            \n            if isinstance(self.schedule_sampler, LossAwareSampler):\n                self.schedule_sampler.update_with_local_losses(\n                    t, losses[\"loss\"].detach()\n                )\n\n            weights = weights.to(losses[\"loss\"].device)\n\n            loss = losses[\"loss\"]\n            \n\n            log_loss_dict(\n                self.diffusion, t, {k: v for k, v in losses.items()}\n            )\n            \n            self.mp_trainer.backward(loss)\n\n    def _anneal_lr(self, gama=0.9):\n        if self.step == 0:\n            return\n        if (self.step) % 1000 == 0:\n            if self.lr <= 1e-7:\n                return\n            lr = self.lr * gama\n            self.lr = lr\n            for param_group in self.opt.param_groups:\n                param_group[\"lr\"] = lr\n            print(f'adjust_lr:{lr}')\n\n    def log_step(self):\n        logger.logkv(\"step\", self.step + self.resume_step)\n        logger.logkv(\"samples\", (self.step + self.resume_step + 1) * self.global_batch)\n\n\n    def ckpt_file_name(self):\n        return f\"model{(self.step+self.resume_step):09d}.pt\"\n\n\n    def save_distributed(self):\n        print(\"main thread saving state dict.\")\n        model_to_save = self.model.module if hasattr(self.model, 'module') else self.model\n        \n        state_dict = model_to_save.state_dict()\n\n        def save_checkpoint_dis(state_dict):\n\n            # Do not save CLIP weights\n            clip_weights = [e for e in state_dict.keys() if e.startswith('clip_model.')]\n            for e in clip_weights:\n                del state_dict[e]\n\n            logger.log(f\"saving model...\")\n            filename = self.ckpt_file_name()\n            with bf.BlobFile(bf.join(self.save_dir, filename), \"wb\") as f:\n                torch.save(state_dict, f)\n\n        save_checkpoint_dis(state_dict)\n\n\n    def save(self):\n        def save_checkpoint(params):\n            state_dict = self.mp_trainer.master_params_to_state_dict(params)\n\n            # Do not save CLIP weights\n            clip_weights = [e for e in state_dict.keys() if e.startswith('clip_model.')]\n            for e in clip_weights:\n                del state_dict[e]\n\n            logger.log(f\"saving model...\")\n            filename = self.ckpt_file_name()\n            with bf.BlobFile(bf.join(self.save_dir, filename), \"wb\") as f:\n                torch.save(state_dict, f)\n\n        save_checkpoint(self.mp_trainer.master_params)\n\n\n\ndef parse_resume_step_from_filename(filename):\n    \"\"\"\n    Parse filenames of the form path/to/modelNNNNNN.pt, where NNNNNN is the\n    checkpoint's number of steps.\n    \"\"\"\n    split = filename.split(\"model\")\n    if len(split) < 2:\n        return 0\n    split1 = split[-1].split(\".\")[0]\n    try:\n        return int(split1)\n    except ValueError:\n        return 0\n\n\ndef get_blob_logdir():\n    # You can change this to be a separate path to save checkpoints to\n    # a blobstore or some external drive.\n    return logger.get_dir()\n\n\ndef find_resume_checkpoint():\n    # On your infrastructure, you may want to override this to automatically\n    # discover the latest checkpoint on your blob storage, etc.\n    return None\n\n\ndef log_loss_dict(diffusion, ts, losses):\n    for key, values in losses.items():\n        logger.logkv_mean(key, values.item())\n        "
  },
  {
    "path": "utils/PYTORCH3D_LICENSE",
    "content": "BSD License\n\nFor PyTorch3D software\n\nCopyright (c) Facebook, Inc. and its affiliates. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright notice, this\n    list of conditions and the following disclaimer.\n\n * Redistributions in binary form must reproduce the above copyright notice,\n    this list of conditions and the following disclaimer in the documentation\n       and/or other materials provided with the distribution.\n\n * Neither the name Facebook nor the names of its contributors may be used to\n    endorse or promote products derived from this software without specific\n       prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
  },
  {
    "path": "utils/__init__.py",
    "content": "from .logger import *\n\n"
  },
  {
    "path": "utils/comm.py",
    "content": "\"\"\"\nCopyright (c) Microsoft Corporation.\nLicensed under the MIT license.\n\nThis file contains primitives for multi-gpu communication.\nThis is useful when doing distributed training.\n\"\"\"\n\nimport pickle\nimport time\n\nimport torch\nimport torch.distributed as dist\n\n\ndef get_world_size():\n    if not dist.is_available():\n        return 1\n    if not dist.is_initialized():\n        return 1\n    return dist.get_world_size()\n\n\ndef get_rank():\n    if not dist.is_available():\n        return 0\n    if not dist.is_initialized():\n        return 0\n    return dist.get_rank()\n\n\ndef is_main_process():\n    return get_rank() == 0\n\n\ndef synchronize():\n    \"\"\"\n    Helper function to synchronize (barrier) among all processes when\n    using distributed training\n    \"\"\"\n    if not dist.is_available():\n        return\n    if not dist.is_initialized():\n        return\n    world_size = dist.get_world_size()\n    if world_size == 1:\n        return\n    dist.barrier()\n\n\ndef gather_on_master(data):\n    \"\"\"Same as all_gather, but gathers data on master process only, using CPU.\n    Thus, this does not work with NCCL backend unless they add CPU support.\n\n    The memory consumption of this function is ~ 3x of data size. While in\n    principal, it should be ~2x, it's not easy to force Python to release\n    memory immediately and thus, peak memory usage could be up to 3x.\n    \"\"\"\n    world_size = get_world_size()\n    if world_size == 1:\n        return [data]\n\n    # serialized to a Tensor\n    buffer = pickle.dumps(data)\n    # trying to optimize memory, but in fact, it's not guaranteed to be released\n    del data\n    storage = torch.ByteStorage.from_buffer(buffer)\n    del buffer\n    tensor = torch.ByteTensor(storage)\n\n    # obtain Tensor size of each rank\n    local_size = torch.LongTensor([tensor.numel()])\n    size_list = [torch.LongTensor([0]) for _ in range(world_size)]\n    dist.all_gather(size_list, local_size)\n    size_list = [int(size.item()) for size in size_list]\n    max_size = max(size_list)\n\n    if local_size != max_size:\n        padding = torch.ByteTensor(size=(max_size - local_size,))\n        tensor = torch.cat((tensor, padding), dim=0)\n        del padding\n\n    if is_main_process():\n        tensor_list = []\n        for _ in size_list:\n            tensor_list.append(torch.ByteTensor(size=(max_size,)))\n        dist.gather(tensor, gather_list=tensor_list, dst=0)\n        del tensor\n    else:\n        dist.gather(tensor, gather_list=[], dst=0)\n        del tensor\n        return\n\n    data_list = []\n    for tensor in tensor_list:\n        buffer = tensor.cpu().numpy().tobytes()\n        del tensor\n        data_list.append(pickle.loads(buffer))\n        del buffer\n\n    return data_list\n\n\ndef all_gather(data):\n    \"\"\"\n    Run all_gather on arbitrary picklable data (not necessarily tensors)\n    Args:\n        data: any picklable object\n    Returns:\n        list[data]: list of data gathered from each rank\n    \"\"\"\n    world_size = get_world_size()\n    if world_size == 1:\n        return [data]\n\n    # serialized to a Tensor\n    buffer = pickle.dumps(data)\n    storage = torch.ByteStorage.from_buffer(buffer)\n    tensor = torch.ByteTensor(storage).to(\"cuda\")\n\n    # obtain Tensor size of each rank\n    local_size = torch.LongTensor([tensor.numel()]).to(\"cuda\")\n    size_list = [torch.LongTensor([0]).to(\"cuda\") for _ in range(world_size)]\n    dist.all_gather(size_list, local_size)\n    size_list = [int(size.item()) for size in size_list]\n    max_size = max(size_list)\n\n    # receiving Tensor from all ranks\n    # we pad the tensor because torch all_gather does not support\n    # gathering tensors of different shapes\n    tensor_list = []\n    for _ in size_list:\n        tensor_list.append(torch.ByteTensor(size=(max_size,)).to(\"cuda\"))\n    if local_size != max_size:\n        padding = torch.ByteTensor(size=(max_size - local_size,)).to(\"cuda\")\n        tensor = torch.cat((tensor, padding), dim=0)\n    dist.all_gather(tensor_list, tensor)\n\n    data_list = []\n    for size, tensor in zip(size_list, tensor_list):\n        buffer = tensor.cpu().numpy().tobytes()[:size]\n        data_list.append(pickle.loads(buffer))\n\n    return data_list\n\n\ndef reduce_dict(input_dict, average=True):\n    \"\"\"\n    Args:\n        input_dict (dict): all the values will be reduced\n        average (bool): whether to do average or sum\n    Reduce the values in the dictionary from all processes so that process with rank\n    0 has the averaged results. Returns a dict with the same fields as\n    input_dict, after reduction.\n    \"\"\"\n    world_size = get_world_size()\n    if world_size < 2:\n        return input_dict\n    with torch.no_grad():\n        names = []\n        values = []\n        # sort the keys so that they are consistent across processes\n        for k in sorted(input_dict.keys()):\n            names.append(k)\n            values.append(input_dict[k])\n        values = torch.stack(values, dim=0)\n        dist.reduce(values, dst=0)\n        if dist.get_rank() == 0 and average:\n            # only main process gets accumulated, so only divide by\n            # world_size in this case\n            values /= world_size\n        reduced_dict = {k: v for k, v in zip(names, values)}\n    return reduced_dict\n"
  },
  {
    "path": "utils/dist_util.py",
    "content": "\"\"\"\nHelpers for distributed training.\n\"\"\"\n\nimport socket\n\nimport torch as th\nimport torch.distributed as dist\n\n# Change this to reflect your cluster layout.\n# The GPU for a given rank is (rank % GPUS_PER_NODE).\nGPUS_PER_NODE = 8\n\nSETUP_RETRY_COUNT = 3\n\nused_device = 0\n\ndef setup_dist(device=0):\n    \"\"\"\n    Setup a distributed process group.\n    \"\"\"\n    global used_device\n    used_device = device\n    if dist.is_initialized():\n        return\n    # os.environ[\"CUDA_VISIBLE_DEVICES\"] = str(device) # f\"{MPI.COMM_WORLD.Get_rank() % GPUS_PER_NODE}\"\n\n    # comm = MPI.COMM_WORLD\n    # backend = \"gloo\" if not th.cuda.is_available() else \"nccl\"\n\n    # if backend == \"gloo\":\n    #     hostname = \"localhost\"\n    # else:\n    #     hostname = socket.gethostbyname(socket.getfqdn())\n    # os.environ[\"MASTER_ADDR\"] = comm.bcast(hostname, root=0)\n    # os.environ[\"RANK\"] = str(comm.rank)\n    # os.environ[\"WORLD_SIZE\"] = str(comm.size)\n\n    # port = comm.bcast(_find_free_port(), root=used_device)\n    # os.environ[\"MASTER_PORT\"] = str(port)\n    # dist.init_process_group(backend=backend, init_method=\"env://\")\n\n\ndef dev():\n    \"\"\"\n    Get the device to use for torch.distributed.\n    \"\"\"\n    global used_device\n    if th.cuda.is_available() and used_device>=0:\n        return th.device(f\"cuda:{used_device}\")\n    return th.device(\"cpu\")\n\n\ndef load_state_dict(path, **kwargs):\n    \"\"\"\n    Load a PyTorch file without redundant fetches across MPI ranks.\n    \"\"\"\n    return th.load(path, **kwargs)\n\n\ndef sync_params(params):\n    \"\"\"\n    Synchronize a sequence of Tensors across ranks from rank 0.\n    \"\"\"\n    for p in params:\n        with th.no_grad():\n            dist.broadcast(p, 0)\n\n\ndef _find_free_port():\n    try:\n        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n        s.bind((\"\", 0))\n        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)\n        return s.getsockname()[1]\n    finally:\n        s.close()\n"
  },
  {
    "path": "utils/fixseed.py",
    "content": "import numpy as np\nimport torch\nimport random\n\n\ndef fixseed(seed):\n    print(f'setting seed: {seed}')\n    torch.backends.cudnn.benchmark = False\n    random.seed(seed)\n    np.random.seed(seed)\n    torch.manual_seed(seed)\n    torch.cuda.manual_seed(seed)\n    torch.random.manual_seed(seed)\n\n\n\n"
  },
  {
    "path": "utils/ldm_utils.py",
    "content": "# adopted from\r\n# https://github.com/openai/improved-diffusion/blob/main/improved_diffusion/gaussian_diffusion.py\r\n# and\r\n# https://github.com/lucidrains/denoising-diffusion-pytorch/blob/7706bdfc6f527f58d33f84b7b522e61e6e3164b3/denoising_diffusion_pytorch/denoising_diffusion_pytorch.py\r\n# and\r\n# https://github.com/openai/guided-diffusion/blob/0ba878e517b276c45d1195eb29f6f5f72659a05b/guided_diffusion/nn.py\r\n#\r\n# thanks!\r\n\r\n\r\nimport os\r\nimport math\r\nimport torch\r\nimport torch.nn as nn\r\nimport numpy as np\r\nfrom einops import repeat\r\nimport importlib\r\n\r\ndef instantiate_from_config(config):\r\n    if not \"target\" in config:\r\n        if config == '__is_first_stage__':\r\n            return None\r\n        elif config == \"__is_unconditional__\":\r\n            return None\r\n        raise KeyError(\"Expected key `target` to instantiate.\")\r\n    return get_obj_from_str(config[\"target\"])(**config.get(\"params\", dict()))\r\n\r\ndef get_obj_from_str(string, reload=False):\r\n    module, cls = string.rsplit(\".\", 1)\r\n    if reload:\r\n        module_imp = importlib.import_module(module)\r\n        importlib.reload(module_imp)\r\n    return getattr(importlib.import_module(module, package=None), cls)\r\n\r\ndef make_beta_schedule(schedule, n_timestep, linear_start=1e-4, linear_end=2e-2, cosine_s=8e-3):\r\n    if schedule == \"linear\":\r\n        betas = (\r\n                torch.linspace(linear_start ** 0.5, linear_end ** 0.5, n_timestep, dtype=torch.float64) ** 2\r\n        )\r\n\r\n    elif schedule == \"cosine\":\r\n        timesteps = (\r\n                torch.arange(n_timestep + 1, dtype=torch.float64) / n_timestep + cosine_s\r\n        )\r\n        alphas = timesteps / (1 + cosine_s) * np.pi / 2\r\n        alphas = torch.cos(alphas).pow(2)\r\n        alphas = alphas / alphas[0]\r\n        betas = 1 - alphas[1:] / alphas[:-1]\r\n        betas = np.clip(betas, a_min=0, a_max=0.999)\r\n\r\n    elif schedule == \"sqrt_linear\":\r\n        betas = torch.linspace(linear_start, linear_end, n_timestep, dtype=torch.float64)\r\n    elif schedule == \"sqrt\":\r\n        betas = torch.linspace(linear_start, linear_end, n_timestep, dtype=torch.float64) ** 0.5\r\n    else:\r\n        raise ValueError(f\"schedule '{schedule}' unknown.\")\r\n    return betas.numpy()\r\n\r\n\r\ndef make_ddim_timesteps(ddim_discr_method, num_ddim_timesteps, num_ddpm_timesteps, verbose=True):\r\n    if ddim_discr_method == 'uniform':\r\n        c = num_ddpm_timesteps // num_ddim_timesteps\r\n        ddim_timesteps = np.asarray(list(range(0, num_ddpm_timesteps, c)))\r\n    elif ddim_discr_method == 'quad':\r\n        ddim_timesteps = ((np.linspace(0, np.sqrt(num_ddpm_timesteps * .8), num_ddim_timesteps)) ** 2).astype(int)\r\n    else:\r\n        raise NotImplementedError(f'There is no ddim discretization method called \"{ddim_discr_method}\"')\r\n\r\n    # assert ddim_timesteps.shape[0] == num_ddim_timesteps\r\n    # add one to get the final alpha values right (the ones from first scale to data during sampling)\r\n    steps_out = ddim_timesteps + 1\r\n    if verbose:\r\n        print(f'Selected timesteps for ddim sampler: {steps_out}')\r\n    return steps_out\r\n\r\n\r\ndef make_ddim_sampling_parameters(alphacums, ddim_timesteps, eta, verbose=True):\r\n    # select alphas for computing the variance schedule\r\n    alphas = alphacums[ddim_timesteps]\r\n    alphas_prev = np.asarray([alphacums[0]] + alphacums[ddim_timesteps[:-1]].tolist())\r\n\r\n    # according the the formula provided in https://arxiv.org/abs/2010.02502\r\n    sigmas = eta * np.sqrt((1 - alphas_prev) / (1 - alphas) * (1 - alphas / alphas_prev))\r\n    if verbose:\r\n        print(f'Selected alphas for ddim sampler: a_t: {alphas}; a_(t-1): {alphas_prev}')\r\n        print(f'For the chosen value of eta, which is {eta}, '\r\n              f'this results in the following sigma_t schedule for ddim sampler {sigmas}')\r\n    return sigmas, alphas, alphas_prev\r\n\r\n\r\ndef betas_for_alpha_bar(num_diffusion_timesteps, alpha_bar, max_beta=0.999):\r\n    \"\"\"\r\n    Create a beta schedule that discretizes the given alpha_t_bar function,\r\n    which defines the cumulative product of (1-beta) over time from t = [0,1].\r\n    :param num_diffusion_timesteps: the number of betas to produce.\r\n    :param alpha_bar: a lambda that takes an argument t from 0 to 1 and\r\n                      produces the cumulative product of (1-beta) up to that\r\n                      part of the diffusion process.\r\n    :param max_beta: the maximum beta to use; use values lower than 1 to\r\n                     prevent singularities.\r\n    \"\"\"\r\n    betas = []\r\n    for i in range(num_diffusion_timesteps):\r\n        t1 = i / num_diffusion_timesteps\r\n        t2 = (i + 1) / num_diffusion_timesteps\r\n        betas.append(min(1 - alpha_bar(t2) / alpha_bar(t1), max_beta))\r\n    return np.array(betas)\r\n\r\n\r\ndef extract_into_tensor(a, t, x_shape):\r\n    b, *_ = t.shape\r\n    out = a.gather(-1, t)\r\n    return out.reshape(b, *((1,) * (len(x_shape) - 1)))\r\n\r\n\r\ndef checkpoint(func, inputs, params, flag):\r\n    \"\"\"\r\n    Evaluate a function without caching intermediate activations, allowing for\r\n    reduced memory at the expense of extra compute in the backward pass.\r\n    :param func: the function to evaluate.\r\n    :param inputs: the argument sequence to pass to `func`.\r\n    :param params: a sequence of parameters `func` depends on but does not\r\n                   explicitly take as arguments.\r\n    :param flag: if False, disable gradient checkpointing.\r\n    \"\"\"\r\n    if flag:\r\n        args = tuple(inputs) + tuple(params)\r\n        return CheckpointFunction.apply(func, len(inputs), *args)\r\n    else:\r\n        return func(*inputs)\r\n\r\n\r\nclass CheckpointFunction(torch.autograd.Function):\r\n    @staticmethod\r\n    def forward(ctx, run_function, length, *args):\r\n        ctx.run_function = run_function\r\n        ctx.input_tensors = list(args[:length])\r\n        ctx.input_params = list(args[length:])\r\n\r\n        with torch.no_grad():\r\n            output_tensors = ctx.run_function(*ctx.input_tensors)\r\n        return output_tensors\r\n\r\n    @staticmethod\r\n    def backward(ctx, *output_grads):\r\n        ctx.input_tensors = [x.detach().requires_grad_(True) for x in ctx.input_tensors]\r\n        with torch.enable_grad():\r\n            # Fixes a bug where the first op in run_function modifies the\r\n            # Tensor storage in place, which is not allowed for detach()'d\r\n            # Tensors.\r\n            shallow_copies = [x.view_as(x) for x in ctx.input_tensors]\r\n            output_tensors = ctx.run_function(*shallow_copies)\r\n        input_grads = torch.autograd.grad(\r\n            output_tensors,\r\n            ctx.input_tensors + ctx.input_params,\r\n            output_grads,\r\n            allow_unused=True,\r\n        )\r\n        del ctx.input_tensors\r\n        del ctx.input_params\r\n        del output_tensors\r\n        return (None, None) + input_grads\r\n\r\n\r\ndef timestep_embedding(timesteps, dim, max_period=10000, repeat_only=False):\r\n    \"\"\"\r\n    Create sinusoidal timestep embeddings.\r\n    :param timesteps: a 1-D Tensor of N indices, one per batch element.\r\n                      These may be fractional.\r\n    :param dim: the dimension of the output.\r\n    :param max_period: controls the minimum frequency of the embeddings.\r\n    :return: an [N x dim] Tensor of positional embeddings.\r\n    \"\"\"\r\n    if not repeat_only:\r\n        half = dim // 2\r\n        freqs = torch.exp(\r\n            -math.log(max_period) * torch.arange(start=0, end=half, dtype=torch.float32) / half\r\n        ).to(device=timesteps.device)\r\n        args = timesteps[:, None].float() * freqs[None]\r\n        embedding = torch.cat([torch.cos(args), torch.sin(args)], dim=-1)\r\n        if dim % 2:\r\n            embedding = torch.cat([embedding, torch.zeros_like(embedding[:, :1])], dim=-1)\r\n    else:\r\n        embedding = repeat(timesteps, 'b -> b d', d=dim)\r\n    return embedding\r\n\r\n\r\ndef zero_module(module):\r\n    \"\"\"\r\n    Zero out the parameters of a module and return it.\r\n    \"\"\"\r\n    for p in module.parameters():\r\n        p.detach().zero_()\r\n    return module\r\n\r\n\r\ndef scale_module(module, scale):\r\n    \"\"\"\r\n    Scale the parameters of a module and return it.\r\n    \"\"\"\r\n    for p in module.parameters():\r\n        p.detach().mul_(scale)\r\n    return module\r\n\r\n\r\ndef mean_flat(tensor):\r\n    \"\"\"\r\n    Take the mean over all non-batch dimensions.\r\n    \"\"\"\r\n    return tensor.mean(dim=list(range(1, len(tensor.shape))))\r\n\r\n\r\ndef normalization(channels):\r\n    \"\"\"\r\n    Make a standard normalization layer.\r\n    :param channels: number of input channels.\r\n    :return: an nn.Module for normalization.\r\n    \"\"\"\r\n    return GroupNorm32(32, channels)\r\n\r\n\r\n# PyTorch 1.7 has SiLU, but we support PyTorch 1.5.\r\nclass SiLU(nn.Module):\r\n    def forward(self, x):\r\n        return x * torch.sigmoid(x)\r\n\r\n\r\nclass GroupNorm32(nn.GroupNorm):\r\n    def forward(self, x):\r\n        return super().forward(x.float()).type(x.dtype)\r\n\r\ndef conv_nd(dims, *args, **kwargs):\r\n    \"\"\"\r\n    Create a 1D, 2D, or 3D convolution module.\r\n    \"\"\"\r\n    if dims == 1:\r\n        return nn.Conv1d(*args, **kwargs)\r\n    elif dims == 2:\r\n        return nn.Conv2d(*args, **kwargs)\r\n    elif dims == 3:\r\n        return nn.Conv3d(*args, **kwargs)\r\n    raise ValueError(f\"unsupported dimensions: {dims}\")\r\n\r\n\r\ndef linear(*args, **kwargs):\r\n    \"\"\"\r\n    Create a linear module.\r\n    \"\"\"\r\n    return nn.Linear(*args, **kwargs)\r\n\r\n\r\ndef avg_pool_nd(dims, *args, **kwargs):\r\n    \"\"\"\r\n    Create a 1D, 2D, or 3D average pooling module.\r\n    \"\"\"\r\n    if dims == 1:\r\n        return nn.AvgPool1d(*args, **kwargs)\r\n    elif dims == 2:\r\n        return nn.AvgPool2d(*args, **kwargs)\r\n    elif dims == 3:\r\n        return nn.AvgPool3d(*args, **kwargs)\r\n    raise ValueError(f\"unsupported dimensions: {dims}\")\r\n\r\n\r\nclass HybridConditioner(nn.Module):\r\n\r\n    def __init__(self, c_concat_config, c_crossattn_config):\r\n        super().__init__()\r\n        self.concat_conditioner = instantiate_from_config(c_concat_config)\r\n        self.crossattn_conditioner = instantiate_from_config(c_crossattn_config)\r\n\r\n    def forward(self, c_concat, c_crossattn):\r\n        c_concat = self.concat_conditioner(c_concat)\r\n        c_crossattn = self.crossattn_conditioner(c_crossattn)\r\n        return {'c_concat': [c_concat], 'c_crossattn': [c_crossattn]}\r\n\r\n\r\ndef noise_like(shape, device, repeat=False):\r\n    repeat_noise = lambda: torch.randn((1, *shape[1:]), device=device).repeat(shape[0], *((1,) * (len(shape) - 1)))\r\n    noise = lambda: torch.randn(shape, device=device)\r\n    return repeat_noise() if repeat else noise()"
  },
  {
    "path": "utils/logger.py",
    "content": "# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\nimport logging\nimport os\nimport sys\nfrom logging import StreamHandler, Handler, getLevelName\n\n\n# this class is a copy of logging.FileHandler except we end self.close()\n# at the end of each emit. While closing file and reopening file after each\n# write is not efficient, it allows us to see partial logs when writing to\n# fused Azure blobs, which is very convenient\nclass FileHandler(StreamHandler):\n    \"\"\"\n    A handler class which writes formatted logging records to disk files.\n    \"\"\"\n    def __init__(self, filename, mode='a', encoding=None, delay=False):\n        \"\"\"\n        Open the specified file and use it as the stream for logging.\n        \"\"\"\n        # Issue #27493: add support for Path objects to be passed in\n        filename = os.fspath(filename)\n        #keep the absolute path, otherwise derived classes which use this\n        #may come a cropper when the current directory changes\n        self.baseFilename = os.path.abspath(filename)\n        self.mode = mode\n        self.encoding = encoding\n        self.delay = delay\n        if delay:\n            #We don't open the stream, but we still need to call the\n            #Handler constructor to set level, formatter, lock etc.\n            Handler.__init__(self)\n            self.stream = None\n        else:\n            StreamHandler.__init__(self, self._open())\n\n    def close(self):\n        \"\"\"\n        Closes the stream.\n        \"\"\"\n        self.acquire()\n        try:\n            try:\n                if self.stream:\n                    try:\n                        self.flush()\n                    finally:\n                        stream = self.stream\n                        self.stream = None\n                        if hasattr(stream, \"close\"):\n                            stream.close()\n            finally:\n                # Issue #19523: call unconditionally to\n                # prevent a handler leak when delay is set\n                StreamHandler.close(self)\n        finally:\n            self.release()\n\n    def _open(self):\n        \"\"\"\n        Open the current base file with the (original) mode and encoding.\n        Return the resulting stream.\n        \"\"\"\n        return open(self.baseFilename, self.mode, encoding=self.encoding)\n\n    def emit(self, record):\n        \"\"\"\n        Emit a record.\n\n        If the stream was not opened because 'delay' was specified in the\n        constructor, open it before calling the superclass's emit.\n        \"\"\"\n        if self.stream is None:\n            self.stream = self._open()\n        StreamHandler.emit(self, record)\n        self.close()\n\n    def __repr__(self):\n        level = getLevelName(self.level)\n        return '<%s %s (%s)>' % (self.__class__.__name__, self.baseFilename, level)\n\n\ndef setup_logger(name, save_dir, distributed_rank, filename=\"log.txt\"):\n    logger = logging.getLogger(name)\n    logger.setLevel(logging.DEBUG)\n    # don't log results for the non-master process\n    if distributed_rank > 0:\n        return logger\n    ch = logging.StreamHandler(stream=sys.stdout)\n    ch.setLevel(logging.DEBUG)\n    formatter = logging.Formatter(\"%(asctime)s %(name)s %(levelname)s: %(message)s\")\n    ch.setFormatter(formatter)\n    logger.addHandler(ch)\n\n    if save_dir:\n        fh = FileHandler(os.path.join(save_dir, filename))\n        fh.setLevel(logging.DEBUG)\n        fh.setFormatter(formatter)\n        logger.addHandler(fh)\n\n    return logger\n"
  },
  {
    "path": "utils/misc.py",
    "content": "import torch\n\n\ndef to_numpy(tensor):\n    if torch.is_tensor(tensor):\n        return tensor.cpu().numpy()\n    elif type(tensor).__module__ != 'numpy':\n        raise ValueError(\"Cannot convert {} to numpy array\".format(\n            type(tensor)))\n    return tensor\n\n\ndef to_torch(ndarray):\n    if type(ndarray).__module__ == 'numpy':\n        return torch.from_numpy(ndarray)\n    elif not torch.is_tensor(ndarray):\n        raise ValueError(\"Cannot convert {} to torch tensor\".format(\n            type(ndarray)))\n    return ndarray\n\n\ndef cleanexit():\n    import sys\n    import os\n    try:\n        sys.exit(0)\n    except SystemExit:\n        os._exit(0)\n\ndef load_model_wo_clip(model, state_dict):\n    missing_keys, unexpected_keys = model.load_state_dict(state_dict, strict=False)\n    assert len(unexpected_keys) == 0\n    assert all([k.startswith('clip_model.') for k in missing_keys])\n\ndef freeze_joints(x, joints_to_freeze):\n    # Freezes selected joint *rotations* as they appear in the first frame\n    # x [bs, [root+n_joints], joint_dim(6), seqlen]\n    frozen = x.detach().clone()\n    frozen[:, joints_to_freeze, :, :] = frozen[:, joints_to_freeze, :, :1]\n    return frozen\n"
  },
  {
    "path": "utils/miscellaneous.py",
    "content": "# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\nimport errno\nimport os\nimport os.path as op\nimport re\nimport logging\nimport numpy as np\nimport torch\nimport random\nimport shutil\nfrom .comm import is_main_process\nimport yaml\n\n\ndef mkdir(path):\n    # if it is the current folder, skip.\n    # otherwise the original code will raise FileNotFoundError\n    if path == '':\n        return\n    try:\n        os.makedirs(path)\n    except OSError as e:\n        if e.errno != errno.EEXIST:\n            raise\n\n\ndef save_config(cfg, path):\n    if is_main_process():\n        with open(path, 'w') as f:\n            f.write(cfg.dump())\n\n\ndef config_iteration(output_dir, max_iter):\n    save_file = os.path.join(output_dir, 'last_checkpoint')\n    iteration = -1\n    if os.path.exists(save_file):\n        with open(save_file, 'r') as f:\n            fname = f.read().strip()\n        model_name = os.path.basename(fname)\n        model_path = os.path.dirname(fname)\n        if model_name.startswith('model_') and len(model_name) == 17:\n            iteration = int(model_name[-11:-4])\n        elif model_name == \"model_final\":\n            iteration = max_iter\n        elif model_path.startswith('checkpoint-') and len(model_path) == 18:\n            iteration = int(model_path.split('-')[-1])\n    return iteration\n\n\ndef get_matching_parameters(model, regexp, none_on_empty=True):\n    \"\"\"Returns parameters matching regular expression\"\"\"\n    if not regexp:\n        if none_on_empty:\n            return {}\n        else:\n            return dict(model.named_parameters())\n    compiled_pattern = re.compile(regexp)\n    params = {}\n    for weight_name, weight in model.named_parameters():\n        if compiled_pattern.match(weight_name):\n            params[weight_name] = weight\n    return params\n\n\ndef freeze_weights(model, regexp):\n    \"\"\"Freeze weights based on regular expression.\"\"\"\n    logger = logging.getLogger(\"maskrcnn_benchmark.trainer\")\n    for weight_name, weight in get_matching_parameters(model, regexp).items():\n        weight.requires_grad = False\n        logger.info(\"Disabled training of {}\".format(weight_name))\n\n\ndef unfreeze_weights(model, regexp, backbone_freeze_at=-1,\n        is_distributed=False):\n    \"\"\"Unfreeze weights based on regular expression.\n    This is helpful during training to unfreeze freezed weights after\n    other unfreezed weights have been trained for some iterations.\n    \"\"\"\n    logger = logging.getLogger(\"maskrcnn_benchmark.trainer\")\n    for weight_name, weight in get_matching_parameters(model, regexp).items():\n        weight.requires_grad = True\n        logger.info(\"Enabled training of {}\".format(weight_name))\n    if backbone_freeze_at >= 0:\n        logger.info(\"Freeze backbone at stage: {}\".format(backbone_freeze_at))\n        if is_distributed:\n            model.module.backbone.body._freeze_backbone(backbone_freeze_at)\n        else:\n            model.backbone.body._freeze_backbone(backbone_freeze_at)\n\n\ndef delete_tsv_files(tsvs):\n    for t in tsvs:\n        if op.isfile(t):\n            try_delete(t)\n        line = op.splitext(t)[0] + '.lineidx'\n        if op.isfile(line):\n            try_delete(line)\n\n\ndef concat_files(ins, out):\n    mkdir(op.dirname(out))\n    out_tmp = out + '.tmp'\n    with open(out_tmp, 'wb') as fp_out:\n        for i, f in enumerate(ins):\n            logging.info('concating {}/{} - {}'.format(i, len(ins), f))\n            with open(f, 'rb') as fp_in:\n                shutil.copyfileobj(fp_in, fp_out, 1024*1024*10)\n    os.rename(out_tmp, out)\n\n\ndef concat_tsv_files(tsvs, out_tsv):\n    concat_files(tsvs, out_tsv)\n    sizes = [os.stat(t).st_size for t in tsvs]\n    sizes = np.cumsum(sizes)\n    all_idx = []\n    for i, t in enumerate(tsvs):\n        for idx in load_list_file(op.splitext(t)[0] + '.lineidx'):\n            if i == 0:\n                all_idx.append(idx)\n            else:\n                all_idx.append(str(int(idx) + sizes[i - 1]))\n    with open(op.splitext(out_tsv)[0] + '.lineidx', 'w') as f:\n        f.write('\\n'.join(all_idx))\n\n\ndef load_list_file(fname):\n    with open(fname, 'r') as fp:\n        lines = fp.readlines()\n    result = [line.strip() for line in lines]\n    if len(result) > 0 and result[-1] == '':\n        result = result[:-1]\n    return result\n\n\ndef try_once(func):\n    def func_wrapper(*args, **kwargs):\n        try:\n            return func(*args, **kwargs)\n        except Exception as e:\n            logging.info('ignore error \\n{}'.format(str(e)))\n    return func_wrapper\n\n\n@try_once\ndef try_delete(f):\n    os.remove(f)\n\n\ndef set_seed(seed, n_gpu):\n    random.seed(seed)\n    np.random.seed(seed)\n    torch.manual_seed(seed)\n    if n_gpu > 0:\n        torch.cuda.manual_seed_all(seed)\n\n\ndef print_and_run_cmd(cmd):\n    print(cmd)\n    os.system(cmd)\n\n\ndef write_to_yaml_file(context, file_name):\n    with open(file_name, 'w') as fp:\n        yaml.dump(context, fp, encoding='utf-8')\n\n\ndef load_from_yaml_file(yaml_file):\n    with open(yaml_file, 'r') as fp:\n        return yaml.load(fp, Loader=yaml.CLoader)\n\n\n"
  },
  {
    "path": "utils/model_util.py",
    "content": "from models.mdm import MDM\nfrom diffusion import gaussian_diffusion as gd\nfrom diffusion.respace import SpacedDiffusion, space_timesteps\n\n\ndef load_model_wo_clip(model, state_dict):\n    missing_keys, _ = model.load_state_dict(state_dict, strict=False)\n\n    assert all([k.startswith('clip_model.') for k in missing_keys])\n\n\ndef create_model_and_diffusion(args):\n    model = MDM(**get_model_args(args))\n\n    diffusion = create_gaussian_diffusion(args)\n    return model, diffusion\n\n\ndef get_model_args(args):\n    '''\n    we do not set action number here.\n    '''\n    # default args\n    clip_version = 'ViT-B/32'\n    cond_mode = args.cond_mode\n\n    return {'modeltype': '', 'num_actions': args.num_actions,\n            'dropout': 0.1, 'activation': \"gelu\", 'cond_mode': cond_mode,\n            'arch': args.arch, 'clip_version': clip_version, 'dataset': args.dataset}\n\n\ndef create_gaussian_diffusion(args):\n    #\n    # default params\n    predict_xstart = True  # we always predict x_start (a.k.a. x0), that's our deal!\n\n    steps = 1000\n    scale_beta = 1.  # no scaling\n    timestep_respacing = ''  # can be used for ddim sampling, we don't use it.\n    learn_sigma = False\n    rescale_timesteps = False\n\n    betas = gd.get_named_beta_schedule(args.noise_schedule, steps, scale_beta)\n    loss_type = gd.LossType.MSE\n\n    if not timestep_respacing:\n        timestep_respacing = [steps]\n\n    return SpacedDiffusion(\n        use_timesteps=space_timesteps(steps, timestep_respacing),\n        betas=betas,\n        model_mean_type=(\n            gd.ModelMeanType.EPSILON if not predict_xstart else gd.ModelMeanType.START_X\n        ),\n        model_var_type=(\n            (\n                gd.ModelVarType.FIXED_LARGE\n                if not args.sigma_small\n                else gd.ModelVarType.FIXED_SMALL\n            )\n            if not learn_sigma\n            else gd.ModelVarType.LEARNED_RANGE\n        ),\n        loss_type=loss_type,\n        rescale_timesteps=rescale_timesteps,\n        args = args,\n    )"
  },
  {
    "path": "utils/parser_util.py",
    "content": "from argparse import ArgumentParser\nimport argparse\nimport os\nimport json\n\n\ndef parse_and_load_from_model(parser):\n    # args according to the loaded model\n    # do not try to specify them from cmd line since they will be overwritten\n    add_data_options(parser)\n    add_model_options(parser)\n    add_diffusion_options(parser)\n    args = parser.parse_args()\n    args_to_overwrite = []\n    for group_name in ['dataset', 'model', 'diffusion']:\n        args_to_overwrite += get_args_per_group_name(parser, args, group_name)\n\n    if args.cond_mask_prob == 0:\n        args.guidance_param = 1\n    return args\n\n\ndef get_args_per_group_name(parser, args, group_name):\n    for group in parser._action_groups:\n        if group.title == group_name:\n            group_dict = {a.dest: getattr(args, a.dest, None) for a in group._group_actions}\n            return list(argparse.Namespace(**group_dict).__dict__.keys())\n    return ValueError('group_name was not found.')\n\ndef get_model_path_from_args():\n    try:\n        dummy_parser = ArgumentParser()\n        dummy_parser.add_argument('model_path')\n        dummy_args, _ = dummy_parser.parse_known_args()\n        return dummy_args.model_path\n    except:\n        raise ValueError('model_path argument must be specified.')\n\n\ndef add_base_options(parser):\n    group = parser.add_argument_group('base')\n    group.add_argument(\"--num_actions\", default=9, type=int, help=\"num_classes.\")\n    group.add_argument(\"--cuda\", default=True, type=bool, help=\"Use cuda device, otherwise use CPU.\")\n    group.add_argument(\"--device\", default=0, type=int, help=\"Device id to use.\")\n    group.add_argument(\"--seed\", default=10, type=int, help=\"For fixing random seed.\")\n    group.add_argument(\"--batch_size\", default=64, type=int, help=\"Batch size during training.\")\n    group.add_argument(\"--distributed\", default=False, type=bool, help=\"Use ddp to train model\")\n\n\ndef add_diffusion_options(parser):\n    group = parser.add_argument_group('diffusion')\n    group.add_argument(\"--noise_schedule\", default='cosine', choices=['linear', 'cosine'], type=str,\n                       help=\"Noise schedule type\")\n    group.add_argument(\"--diffusion_steps\", default=1000, type=int,\n                       help=\"Number of diffusion steps (denoted T in the paper)\")\n    group.add_argument(\"--sigma_small\", default=True, type=bool, help=\"Use smaller sigma values.\")\n\n\ndef add_model_options(parser):\n    group = parser.add_argument_group('model')\n    group.add_argument(\"--arch\", default='OpenUNet',\n                       choices=['OpenUNet'], type=str,\n                       help=\"Architecture types as reported in the paper.\")\n    group.add_argument(\"--cond_mask_prob\", default=0, type=float,\n                       help=\"The probability of masking the condition during training.\"\n                            \" For classifier-free guidance learning.\")\n    group.add_argument(\"--unconstrained\", action='store_true',\n                       help=\"Model is trained unconditionally. That is, it is constrained by neither text nor action.\")\n    group.add_argument(\"--cond_mode\",\n                       choices=['no_cond', 'text', 'sketch', 'category', 'img'], type=str,required=True,\n                       help=\"condition type\")\n\n\ndef add_data_options(parser):\n    group = parser.add_argument_group('dataset')\n    group.add_argument(\"--dataset\", default='deepfashion3d', choices=['deepfashion3d', 'text2shape', 'pix3d', 'kcars'\n                                                                ], type=str,\n                       help=\"Dataset name (choose from list).\")\n    group.add_argument(\"--data_dir\", default=\"\", type=str,\n                       help=\"If empty, will use defaults according to the specified dataset.\")\n\n\ndef add_training_options(parser):\n    group = parser.add_argument_group('training')\n    group.add_argument(\"--save_dir\", required=True, type=str,\n                       help=\"Path to save checkpoints and results.\")\n\n    group.add_argument(\"--ae_dir\", required=False, type=str,\n                       help=\"Path to save checkpoints and results.\")\n\n    group.add_argument(\"--num_workers\", default=4, type=int, help=\"num_workers.\")\n\n    group.add_argument(\"--grid_size\", default=128, type=int, help=\"grid size.\")\n    group.add_argument(\"--overwrite\", action='store_true',\n                       help=\"If True, will enable to use an already existing save_dir.\")\n\n    group.add_argument(\"--lr\", default=1e-4, type=float, help=\"Learning rate.\")\n    group.add_argument(\"--weight_decay\", default=0.0, type=float, help=\"Optimizer weight decay.\")\n    group.add_argument(\"--lr_anneal_steps\", default=0, type=int, help=\"Number of learning rate anneal steps.\")\n\n    group.add_argument(\"--log_interval\", default=10, type=int,\n                       help=\"Log losses each N steps\")\n    group.add_argument(\"--save_interval\", default=50_000, type=int,\n                       help=\"Save checkpoints and run evaluation each N steps\")\n    group.add_argument(\"--num_steps\", default=600000, type=int,\n                       help=\"Training will stop after the specified number of steps.\")\n    group.add_argument(\"--resume_checkpoint\", default=\"\", type=str,\n                       help=\"If not empty, will start from the specified checkpoint (path to model###.pt file).\")\n    group.add_argument(\"--clip_value\", default=0.1, type=float, help=\"max_clipping value (0-max).\")\n    group.add_argument(\"--guidance_param\", default=1.0, type=float, help=\"Classifier Free Guidance\")#3.0\n\n\ndef add_sampling_options(parser):\n    group = parser.add_argument_group('sampling')\n    group.add_argument(\"--model_path\", required=True, type=str,\n                       help=\"Path to model####.pt file to be sampled.\")\n    group.add_argument(\"--output_dir\", default='', type=str,\n                       help=\"Path to results dir (auto created by the script). \"\n                            \"If empty, will create dir in parallel to checkpoint.\")\n    group.add_argument(\"--num_samples\", default=1, type=int,\n                       help=\"Maximal number of prompts to sample, \"\n                            \"if loading dataset from file, this field will be ignored.\")\n    group.add_argument(\"--guidance_param\", default=1.0, type=float,\n                       help=\"For classifier-free sampling - specifies the s parameter, as defined in the paper.\")\n    group.add_argument(\"--if_clip\", action='store_true',\n                       help=\"If True, will run evaluation during training.\")\n    group.add_argument(\"--clip_value\", default=0.1, type=float, help=\"max_clipping value (0-max).\")\n\n\n\ndef add_generate_options(parser):\n    group = parser.add_argument_group('generate')\n\n    group.add_argument(\"--grid_size\", default=128, type=int, help=\"grid size.\")\n    group.add_argument(\"--category\", default=0, type=int, required=False,\n                        help=\"Condition category.\")\n    group.add_argument(\"--sketch_path\", default=None, type=str, required=False,\n                       help=\"Path to the condition sketch image.\")\n    group.add_argument(\"--image_path\", default=None, type=str, required=False,\n                       help=\"Path to the condition image.\")\n    group.add_argument(\"--mask_path\", default=None, type=str, required=False,\n                       help=\"Path to the condition mask.\")\n    group.add_argument(\"--prompt\", default=None, type=str, required=False,\n                       help=\"text prompt for generation.\")\n    group.add_argument(\"--watertight\",  action='store_true',\n                       help=\"mesh attributes.\")\n    group.add_argument(\"--resolution\",  default=512, type=int, required=False,\n                       help=\"mesh resolution.\")\n    group.add_argument(\"--ae_dir\", default=None, type=str, help=\"Path to ae\")\n\n\n\ndef train_args():\n    parser = ArgumentParser()\n    add_base_options(parser)\n    add_data_options(parser)\n    add_model_options(parser)\n    add_diffusion_options(parser)\n    add_training_options(parser)\n    parser.add_argument(\"--local_rank\", type=int)\n    return parser.parse_args()\n\n\ndef generate_args():\n    parser = ArgumentParser()\n    # args specified by the user: (all other will be loaded from the model)\n    add_base_options(parser)\n    add_sampling_options(parser)\n    add_generate_options(parser)\n    return parse_and_load_from_model(parser)\n\n\ndef evaluation_parser():\n    parser = ArgumentParser()\n    # args specified by the user: (all other will be loaded from the model)\n    add_base_options(parser)\n    return parse_and_load_from_model(parser)"
  },
  {
    "path": "utils/utils.py",
    "content": "import torch\r\nfrom typing import Iterable, List, Tuple, Union, Callable\r\nfrom torch import Tensor\r\nimport open3d as o3d\r\nimport numpy as np\r\nimport math\r\n\r\ndef batchify(inputs: List[Tensor], required_dim: int) -> Tuple[bool, List[Tensor]]:\r\n    \"\"\"Batchify input tensors if needed.\r\n    All the input tensors with a number of dimensions smaller than\r\n    required_dim will be expanded with a leading batch dimension.\r\n    Args:\r\n        inputs: The tensors to batchify.\r\n        required_dim: The required number of dimensions.\r\n    Returns:\r\n        - A flag that indicates wether one of the inputs has been batchified.\r\n        - The batchified tensors.\r\n    \"\"\"\r\n    results: List[Tensor] = []\r\n    has_changed = False\r\n\r\n    for t in inputs:\r\n        has_changed = len(t.shape) < required_dim or has_changed\r\n        batched_t = torch.unsqueeze(t, dim=0) if has_changed else t\r\n        results.append(batched_t)\r\n\r\n    return has_changed, results\r\n\r\n\r\ndef unbatchify(inputs: List[Tensor]) -> List[Tensor]:\r\n    \"\"\"Remove batch dimension from input tensors.\r\n    Args:\r\n        inputs: The tensors to unbatchify.\r\n    Returns:\r\n        The unbatchified tensors.\r\n    \"\"\"\r\n    results: List[Tensor] = []\r\n    for t in inputs:\r\n        unbatched_t = torch.squeeze(t, dim=0)\r\n        results.append(unbatched_t)\r\n\r\n    return results\r\n\r\ndef random_point_sampling(pcd: Tensor, num_points: int, inds=None) -> Tensor:\r\n    \"\"\"Sample the requested number of points from the given point cloud(s).\r\n    Points are sampled randomly. If num_points is greater than NUM_POINTS,\r\n    then points are sampled with replacement.\r\n    Args:\r\n        pcd: The input point cloud(s) with shape ([B,] NUM_POINTS, D).\r\n        num_points: The number of points to sample.\r\n    Returns:\r\n        The sampled points with shape ([B,] NUM_SAMPLED_POINTS, D).\r\n    \"\"\"\r\n    #print(pcd.shape)\r\n    batched, [pcd] = batchify([pcd], 3)\r\n    \r\n    batch_size, original_num_points, _ = pcd.shape\r\n    #print(batch_size, original_num_points)\r\n    #torch.random.manual_seed(10)\r\n    if inds is None:\r\n        #print(original_num_points, num_points)\r\n        weights = torch.ones((batch_size, original_num_points), dtype=torch.float)\r\n        weights = weights.to(pcd.device)\r\n        replacement = original_num_points < num_points\r\n        indices_to_sample = torch.multinomial(weights, num_points, replacement=replacement)\r\n    else:\r\n        #print(original_num_points, num_points)\r\n        indices_to_sample = inds\r\n    #print(indices_to_sample)\r\n\r\n    batch_indices = torch.arange(batch_size).reshape(batch_size, 1)\r\n    sampled_points = pcd[batch_indices, indices_to_sample]\r\n\r\n    if batched:\r\n        [sampled_points] = unbatchify([sampled_points])\r\n\r\n    return sampled_points\r\n\r\ndef get_o3d_mesh_from_tensors(\r\n    vertices: Union[Tensor, np.ndarray],\r\n    triangles: Union[Tensor, np.ndarray],\r\n) -> o3d.geometry.TriangleMesh:\r\n    \"\"\"Get open3d mesh from either numpy arrays or torch tensors.\r\n    The input vertices must have shape (NUM_VERTICES, D), where D\r\n    can be 3 (only X,Y,Z), 6 (X,Y,Z and normals) or 9 (X,Y,Z, normals and colors).\r\n    The input triangles must have shape (NUM_TRIANGLES, D), where D can be 3\r\n    (only vertex indices) or 6 (vertex indices and normals).\r\n    Args:\r\n        vertices: The numpy array or torch tensor with vertices\r\n            with shape (NUM_VERTICES, D).\r\n        triangles: The numpy array or torch tensor with triangles\r\n            with shape (NUM_TRIANGLES, D).\r\n    Returns:\r\n        The open3d mesh.\r\n    \"\"\"\r\n    mesh_o3d = o3d.geometry.TriangleMesh()\r\n\r\n    if isinstance(vertices, Tensor):\r\n        v = vertices.clone().detach().cpu().numpy()\r\n    else:\r\n        v = np.copy(vertices)\r\n\r\n    if isinstance(triangles, Tensor):\r\n        t = triangles.clone().detach().cpu().numpy()\r\n    else:\r\n        t = np.copy(triangles)\r\n\r\n    mesh_o3d.vertices = o3d.utility.Vector3dVector(v[:, :3])\r\n\r\n    if v.shape[1] == 6:\r\n        mesh_o3d.vertex_normals = o3d.utility.Vector3dVector(v[:, 3:6])\r\n\r\n    if v.shape[1] == 9:\r\n        mesh_o3d.vertex_colors = o3d.utility.Vector3dVector(v[:, 6:9])\r\n\r\n    mesh_o3d.triangles = o3d.utility.Vector3iVector(t[:, :3])\r\n\r\n    if t.shape[1] == 6:\r\n        mesh_o3d.triangle_normals = o3d.utility.Vector3dVector(t[:, 3:6])\r\n\r\n    return mesh_o3d\r\n\r\ndef compute_gradients(x: Tensor, y: Tensor) -> Tensor:\r\n    grad_outputs = torch.ones_like(y)\r\n    grads = torch.autograd.grad(y, x, grad_outputs=grad_outputs, create_graph=True)[0]\r\n    return grads\r\n\r\ndef sample_udf(\r\n    udf_func: Callable[[Tensor], Tensor],\r\n    coords: Tensor,\r\n    max_batch: int,\r\n    grad: bool = False,\r\n) -> Tensor:\r\n    udf = torch.zeros(coords.shape[0]).cuda()\r\n    start = 0\r\n\r\n    while start < coords.shape[0]:\r\n        end = min(start + max_batch, coords.shape[0])\r\n        p = coords[start:end]\r\n        if grad:\r\n            udf[start:end] = udf_func(p)\r\n        else:\r\n            with torch.no_grad():\r\n                udf[start:end] = udf_func(p)\r\n        start = end\r\n\r\n    return udf\r\n\r\n\r\n\r\nclass GridFiller:\r\n    \"\"\"\r\n    Coarse to fine method for querying an SDF network, using cached grids.\r\n    #\r\n    We start by evaluating the field on a low resolution grid, and then\r\n    iteratively subdivide each voxel and re-evaluate the field only\r\n    where needed until we reach a desired grid resolution.\r\n    We subdivide voxels if the field absolute value on any of the voxel corners\r\n    is smaller than the voxel diagonal √2∆x, where ∆x denotes voxel size.\r\n    #\r\n    In practice the coarsest level is here hardcoded to be 32**3.\r\n    \"\"\"\r\n\r\n    def __init__(\r\n        self,\r\n        final_resolution: int,\r\n        voxel_origin: Tuple[int, int, int] = (-1, -1, -1),\r\n        cube_side_length: float = 2.0,\r\n    ):\r\n        # Save attributes\r\n        self.N_max = final_resolution\r\n        self.num_samples = final_resolution**3\r\n        self.N_levels = [32 * (2**i) for i in range(int(math.log2(self.N_max) - 4))]\r\n        self.voxel_origin = voxel_origin\r\n        self.cube_side_length = cube_side_length\r\n\r\n        # Construct grid, and precompute sparse masks, from 32 (coarsest grid) to final_resolution\r\n        \"\"\"\r\n        Create one empty grid (N,N,N,7) where the 7 channels are (x,y,z, UDF, +3 for gradients).\r\n        \"\"\"\r\n        voxel_size = self.cube_side_length / (self.N_max - 1)\r\n        self.voxel_size = voxel_size\r\n        overall_index = torch.arange(0, self.N_max**3, 1, out=torch.LongTensor())\r\n        samples = torch.zeros(self.N_max**3, 7)\r\n\r\n        # Transform the first 3 columns to be the x, y, z indices.\r\n        samples[:, 2] = overall_index % self.N_max\r\n        samples[:, 1] = (\r\n            torch.div(overall_index, self.N_max, rounding_mode=\"floor\") % self.N_max\r\n        )\r\n        samples[:, 0] = (\r\n            torch.div(\r\n                torch.div(overall_index, self.N_max, rounding_mode=\"floor\"),\r\n                self.N_max,\r\n                rounding_mode=\"floor\",\r\n            )\r\n            % self.N_max\r\n        )\r\n\r\n        # Then transform the first 3 columns to be the x, y, z coordinates.\r\n        samples[:, 0] = (samples[:, 0] * voxel_size) + voxel_origin[2]\r\n        samples[:, 1] = (samples[:, 1] * voxel_size) + voxel_origin[1]\r\n        samples[:, 2] = (samples[:, 2] * voxel_size) + voxel_origin[0]\r\n        samples.requires_grad = False\r\n        #samples.pin_memory()\r\n        #self.samples = samples.cuda()\r\n        self.samples = samples\r\n\r\n        \"\"\"\r\n        Precompute binary masks for adressing the above grid at different resolutions.\r\n        \"\"\"\r\n        mask = torch.zeros(self.N_max**3).bool()\r\n        mask = mask.reshape(self.N_max, self.N_max, self.N_max)\r\n\r\n        # Fill dictionaries with precomputed masks.\r\n        self.masks_coarse = {}\r\n        self.masks_coarse_no_recompute = {}\r\n        self.idxs_coarse_neighbors_blocks = {}\r\n        for i, N in enumerate(self.N_levels):\r\n            #### 1: Subsample coarsely.\r\n            mask_coarse = mask.clone()\r\n            mask_coarse[\r\n                :: self.N_max // N, :: self.N_max // N, :: self.N_max // N\r\n            ] = True\r\n\r\n            # (N_max**3) array, with True only for indices of the coarse sampling (N**3 locations):\r\n            mask_coarse = mask_coarse.reshape(-1)\r\n            self.masks_coarse[i] = mask_coarse.clone().cuda()\r\n\r\n            #### 2: Compute the indices of neighboring blocks.\r\n            neighbors_block_coarse = mask.clone()\r\n            neighbors_block_coarse[\r\n                : self.N_max // N, : self.N_max // N, : self.N_max // N\r\n            ] = True\r\n            neighbors_block_coarse = neighbors_block_coarse.reshape(-1)\r\n            # Shape (N**3 / 64, 64): idxs_coarse_neighbors_blocks[i] represents the (N_max // N)**3 indices covered by coarse point i.\r\n            idxs_coarse_neighbors_blocks = torch.where(mask_coarse)[0].reshape(\r\n                -1, 1\r\n            ) + torch.where(neighbors_block_coarse)[0].reshape(1, -1)\r\n            self.idxs_coarse_neighbors_blocks[\r\n                i\r\n            ] = idxs_coarse_neighbors_blocks.clone().cuda()\r\n\r\n            #### 3: For levels finer than the coarsest one, do not recompute already queried SDFs.\r\n            if i > 0:\r\n                mask_coarse_no_recompute = mask_coarse.clone()\r\n                mask_coarse_no_recompute[self.masks_coarse[i - 1]] = False\r\n                self.masks_coarse_no_recompute[\r\n                    i\r\n                ] = mask_coarse_no_recompute.clone().cuda()\r\n\r\n    def fill_grid(\r\n        self, udf_func: Callable[[Tensor], Tensor], max_batch: int\r\n    ) -> Tuple[Tensor, Tensor]:\r\n        with torch.no_grad():\r\n            samples = self.samples.clone()\r\n            close_surface_masks = {}\r\n            idxs_coarse_neighbors_blocks_LOCAL = {}\r\n\r\n            for level, N in enumerate(self.N_levels):\r\n                \"\"\"Prepare masks based on previous levels\"\"\"\r\n                if level == 0:\r\n                    mask_coarse = self.masks_coarse[level]\r\n                    idxs_coarse_neighbors_blocks = self.idxs_coarse_neighbors_blocks[\r\n                        level\r\n                    ].clone()\r\n                    mask_coarse_no_recompute = self.masks_coarse[level]\r\n                else:\r\n                    # Mask using previous queries: binary mask.\r\n                    mask_coarse = self.masks_coarse[level].clone()\r\n                    for l in range(level):\r\n                        mask_coarse[\r\n                            idxs_coarse_neighbors_blocks_LOCAL[l][\r\n                                ~close_surface_masks[l]\r\n                            ]\r\n                        ] = False\r\n\r\n                    # Compute the corresponding indices tensor.\r\n                    if N < self.N_max:\r\n                        idxs_coarse_neighbors_blocks = (\r\n                            self.idxs_coarse_neighbors_blocks[level].clone()\r\n                        )\r\n                        idxs_coarse_neighbors_blocks = idxs_coarse_neighbors_blocks[\r\n                            mask_coarse[self.masks_coarse[level]]\r\n                        ]\r\n                    else:\r\n                        idxs_coarse_neighbors_blocks = (\r\n                            self.idxs_coarse_neighbors_blocks[level]\r\n                        )\r\n\r\n                    # The no_recompute version does not query the decoder for nodes that have\r\n                    # already been computed at coarser levels.\r\n                    mask_coarse_no_recompute = self.masks_coarse_no_recompute[\r\n                        level\r\n                    ].clone()\r\n                    for l in range(level):\r\n                        mask_coarse_no_recompute[\r\n                            idxs_coarse_neighbors_blocks_LOCAL[l][\r\n                                ~close_surface_masks[l]\r\n                            ]\r\n                        ] = False\r\n                idxs_coarse_neighbors_blocks_LOCAL[level] = idxs_coarse_neighbors_blocks\r\n\r\n                \"\"\" Query the network \"\"\"\r\n                xyz = samples[mask_coarse_no_recompute, 0:3].cuda()\r\n                # Query and fill grid.\r\n                samples[mask_coarse_no_recompute, 3] = sample_udf(\r\n                    udf_func, xyz, max_batch=max_batch\r\n                ).cpu()\r\n\r\n                \"\"\" Prepare next levels queries \"\"\"\r\n                if N < self.N_max:\r\n                    ## Which samples are close to the surface?\r\n                    step_size = 2.0 / N\r\n                    close_surface_mask = (\r\n                        torch.abs(samples[mask_coarse, 3]) < 1.5 * 1.7 * step_size\r\n                    )\r\n                    close_surface_masks[level] = close_surface_mask\r\n\r\n                    # For those far of the surface, we can ignore them for the future and copy the high value to their neighbors\r\n                    samples[\r\n                        idxs_coarse_neighbors_blocks[~close_surface_mask], 3\r\n                    ] = samples[mask_coarse, 3][~close_surface_mask].unsqueeze(-1)\r\n\r\n            udf_values = samples[:, 3]\r\n            udf_values = udf_values.reshape(self.N_max, self.N_max, self.N_max)\r\n\r\n        #torch.cuda.empty_cache()\r\n        # Compute gradients only where the predicted udf value is small.\r\n        # mask_gradients = samples[:, 3] < (2.5 * self.cube_side_length / self.N_max)\r\n        # samples[mask_gradients, 4:] = sample_grads(\r\n        #     udf_func, samples[mask_gradients, :3].cuda(), max_batch=max_batch\r\n        # ).cpu()\r\n        # gradients = samples[:, 4:]\r\n        # gradients = gradients.reshape(self.N_max, self.N_max, self.N_max, 3)\r\n        gradients = None\r\n        del samples\r\n        torch.cuda.empty_cache()\r\n        return udf_values, gradients"
  }
]