diff --git a/.gitignore b/.gitignore index 3fd4889..2a257dd 100644 --- a/.gitignore +++ b/.gitignore @@ -145,4 +145,6 @@ corrupt/ wandb copy/ checkpoints/ temp/ -ids/ \ No newline at end of file +ids/ +examples/ +custom_data/dijkstra* diff --git a/Jumpsuit_00438_146_uv_body_pre.png b/Jumpsuit_00438_146_uv_body_pre.png new file mode 100644 index 0000000..ce5d80b Binary files /dev/null and b/Jumpsuit_00438_146_uv_body_pre.png differ diff --git a/Tshirt_01707_176.png b/Tshirt_01707_176.png new file mode 100644 index 0000000..e49bf7d Binary files /dev/null and b/Tshirt_01707_176.png differ diff --git a/analysis_curvature.py b/analysis_curvature.py index e69de29..e3b06a8 100644 --- a/analysis_curvature.py +++ b/analysis_curvature.py @@ -0,0 +1,114 @@ +import os +import sys +from configs.config_abl_skin_var_3 import config + +os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] +import tensorflow as tf + +gpus = tf.config.experimental.list_physical_devices('GPU') +if gpus: + try: + # Currently, memory growth needs to be the same across GPUs + for gpu in gpus: + tf.config.experimental.set_memory_growth(gpu, True) + logical_gpus = tf.config.experimental.list_logical_devices('GPU') + print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs") + except RuntimeError as e: + # Memory growth must be set before GPUs have been initialized + print(e) + +import glob +import time +import argparse +import wandb +import tqdm +import random +import numpy as np +import plotly.graph_objects as go +import plotly.express as ex +from PIL import Image +from postprocessing import fix_collision + +if config['is_skirt']: + from losses import edge_loss_skirt as edge_loss +else: + from losses import edge_loss + + + +from losses import collision_ratio, kl_loss #, concept_loss +# from losses import collision_penalty as collision_penalty +from losses import collision_loss as collision_penalty +from custom_utils.custom_utils import batch_to_dict, load_model, plot_3d, UV2Mesh, get_summary_html, maskFacesBatch, _maskFaces, plot_3d_collision, UV2MeshLabel +from dataset import DatasetFactory, StaticDataset +from custom_utils.smpl import SMPL +from models.cvae_model import CVAE +from custom_utils.supersmpl_io import writeOBJ + + +uv2mesh = UV2MeshLabel(res=256) + + +@tf.function +def step(batch): + pred, mean, logvar = model([batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature'], batch['uv_mask']]) + + mesh_pred = tf.math.argmax(uv2mesh(pred), axis=-1) + + return mesh_pred + + +if __name__ == '__main__': + # init_wandb() + parser = argparse.ArgumentParser(description='') + parser.add_argument('--name', type=str) + args = vars(parser.parse_args()) + + smpl = SMPL(use_one_hot=config['use_one_hot']) + skirt_modifier = '_skirt' if config['is_skirt'] else '' + + folder = config['test_dir'] + smpl = SMPL(use_one_hot=False) + model = CVAE(config) + + # str_split = config['name'].split('_') + # test_idx = str_split.index('test') + # checkpoint_name = '_'.join(str_split[:test_idx]) + checkpoint_name = config['name'] + + F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy").astype(np.int32) + + ids = os.listdir(os.path.join(folder, 'pose_shape')) + ids = [id.split('_')[0] for id in ids] + ids = set(ids) + + iteration = '70000' + + load_model(model, 'checkpoints/' + config['name'], iteration=iteration) + + + factory = DatasetFactory() + dataset_test = factory.get_dataset(folder=config['test_dir'], + batch_size=1, + signature=config['signature_dynamic'], + resolutions=[config['resolution']], + in_memory=False, + do_repeat=False, + use_one_hot=config['use_one_hot'], + use_no_orient=config['remove_global_orientation'], + frames_file='/home/workspace/data/dataset/test_ready/frames_pose_cluster_20_sample_10.txt') + static_dataset_test = StaticDataset(folder=config['test_dir'], + signature=config['signature_static'], + resolutions=[config['resolution']], + in_memory=True) + + # faces_folder = '/home/workspace/data/results/support/faces' + ('_skirt' if config['is_skirt'] else '') + # ids = os.listdir(faces_folder) + # ids = [id.split('.')[0] for id in ids] + # faces = {id : np.load(faces_folder + '/' + id + '.npy') for id in ids } + + for batch in tqdm.tqdm(dataset_test): + batch = static_dataset_test.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) + + + diff --git a/auto_encoder.py b/auto_encoder.py index d5fd861..2d60eea 100644 --- a/auto_encoder.py +++ b/auto_encoder.py @@ -124,7 +124,7 @@ class Bottleneck(tf.keras.Model): layer_scale_init_value=1e-6, prefix=f'bottleneck{j}') for j in range(5)] ) - def call(self, inputs, training=None): + def call(self, inputs, training): x = inputs x = self.bottleneck(x, training=training) @@ -145,7 +145,7 @@ class AutoEncoder(tf.keras.Model): self.decoder = ConvNeXtReverse(depths=list(reversed([3, 3, 9, 3])), dims=list(reversed([bottleneck_size, 128, 64, 16]))) - def call(self, inputs, training=None): + def call(self, inputs, training): x, uv_mask = inputs x = tf.transpose(x, [0,2,3,1]) @@ -328,7 +328,7 @@ if __name__ == '__main__': factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), 'pose_shape': (72 + 11,), # 'uv_posed': (3, 512, 256,), 'uv_body_posed': (3, 512, 256,), diff --git a/auto_encoder_body.py b/auto_encoder_body.py index a2a15bb..4a197e5 100644 --- a/auto_encoder_body.py +++ b/auto_encoder_body.py @@ -1,5 +1,6 @@ import os -from configs.config_ae_body import config +import sys +from configs.config_ae_body_post import config os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] import tensorflow as tf @@ -29,7 +30,7 @@ from tf_utils import check_tf_version, allow_memory_growth from losses import edge_loss, uv_mask_loss from dataset import DatasetFactory, StaticDataset from custom_utils.custom_utils import batch_to_dict, plot_3d -from models.cond_encoder import AutoEncoder +from models.cond_encoder import AutoEncoderNew as AutoEncoder def init_wandb(): @@ -37,12 +38,13 @@ def init_wandb(): artifact = wandb.Artifact('code', type='code') artifact.add_file('auto_encoder_body.py') artifact.add_file('losses.py') - artifact.add_file('configs/config_base.py') - artifact.add_file('configs/config_ae_body.py') artifact.add_file('models/base.py') artifact.add_file('models/cond_encoder.py') artifact.add_file('dataset.py') artifact.add_file('convnext/models/convnext_tf.py') + config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')] + for config_file_name in config_file_names: + artifact.add_file('/'.join(config_file_name.split('.')) + '.py') run.log_artifact(artifact) uv2mesh = UV2Mesh(res=256, is_smpl_orig=config['is_cape'], is_skirt=config['is_skirt']) @@ -164,10 +166,33 @@ if __name__ == '__main__': factory = DatasetFactory() - dataset_train = factory.get_dataset(folder=config['train_dir'], batch_size=config['batch_size'], signature=config['signature_dynamic'], use_filled=config['use_filled'], resolutions=[config['resolution']], in_memory=config['dataset_in_memory'], is_cape=config['is_cape']) - static_dataset_train = StaticDataset(folder=config['train_dir'], signature=config['signature_static'], use_filled=config['use_filled'], resolutions=[config['resolution']], in_memory=True, is_cape=config['is_cape']) - dataset_valid = factory.get_dataset(folder=config['valid_dir'], batch_size=config['batch_size'], signature=config['signature_dynamic'], use_filled=config['use_filled'], resolutions=[config['resolution']], in_memory=config['dataset_in_memory'], is_cape=config['is_cape']) - static_dataset_valid = StaticDataset(folder=config['valid_dir'], signature=config['signature_static'], use_filled=config['use_filled'], resolutions=[config['resolution']], in_memory=True, is_cape=config['is_cape']) + dataset_train = factory.get_dataset(folder=config['train_dir'], + batch_size=config['batch_size'], + signature=config['signature_dynamic'], + resolutions=[config['resolution']], + in_memory=config['dataset_in_memory'], + use_no_orient=config['remove_global_orientation'], + frames_file=config['frames_file'] if 'frames_file' in config.keys() else None, + is_cape=config['is_cape']) + static_dataset_train = StaticDataset(folder=config['train_dir'], + signature=config['signature_static'], + resolutions=[config['resolution']], + in_memory=True, + is_cape=config['is_cape']) + + dataset_valid = factory.get_dataset(folder=config['valid_dir'], + batch_size=config['batch_size'], + signature=config['signature_dynamic'], + resolutions=[config['resolution']], + in_memory=config['dataset_in_memory'], + use_no_orient=config['remove_global_orientation'], + frames_file=config['frames_file_valid'] if 'frames_file_valid' in config.keys() else None, + is_cape=config['is_cape']) + static_dataset_valid = StaticDataset(folder=config['valid_dir'], + signature=config['signature_static'], + resolutions=[config['resolution']], + in_memory=True, + is_cape=config['is_cape']) model = AutoEncoder(config['cond_ae']) optimizer = tf.optimizers.Adam(learning_rate=config['lr']) @@ -176,8 +201,8 @@ if __name__ == '__main__': # load_model(model.decoder, 'checkpoints/body_1_skirt_2_dec') ckpt_enc = tf.train.Checkpoint(model=model.encoder) - manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/' + config['name'] + '_enc', max_to_keep=20) + manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/post/' + config['name'] + '_enc', max_to_keep=20) ckpt_dec = tf.train.Checkpoint(model=model.decoder) - manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/' + config['name'] + '_dec', max_to_keep=20) + manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/post/' + config['name'] + '_dec', max_to_keep=20) train() \ No newline at end of file diff --git a/auto_encoder_curv.py b/auto_encoder_curv.py index 33ff70b..2756698 100644 --- a/auto_encoder_curv.py +++ b/auto_encoder_curv.py @@ -1,5 +1,6 @@ import os -from configs.config_ae_curv import config +import sys +from configs.config_ae_curv_post import config os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] import tensorflow as tf @@ -20,6 +21,7 @@ import argparse import wandb import random import numpy as np +import cmapy as cm from custom_utils.custom_utils import UV2Mesh, UV2MeshLabel, get_summary_html, maskFacesBatch @@ -29,7 +31,7 @@ import plotly.express as ex from tf_utils import check_tf_version, allow_memory_growth from dataset import DatasetFactory, StaticDataset from custom_utils.custom_utils import batch_to_dict -from models.cond_encoder import AutoEncoder +from models.cond_encoder import AutoEncoderNew as AutoEncoder testing = False @@ -39,12 +41,13 @@ def init_wandb(): artifact = wandb.Artifact('code', type='code') artifact.add_file('auto_encoder_curv.py') artifact.add_file('losses.py') - artifact.add_file('configs/config_base.py') - artifact.add_file('configs/config_ae_curv.py') artifact.add_file('models/base.py') artifact.add_file('models/cond_encoder.py') artifact.add_file('dataset.py') artifact.add_file('convnext/models/convnext_tf.py') + config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')] + for config_file_name in config_file_names: + artifact.add_file('/'.join(config_file_name.split('.')) + '.py') run.log_artifact(artifact) uv2mesh = UV2MeshLabel(res=256, is_skirt=config['is_skirt'], is_smpl_orig=config['is_cape']) @@ -99,16 +102,20 @@ def train_step(batch): ce_uv_loss = scce(tf.math.argmax(batch['uv_curvature'], axis=-1), pred) ms_ssim = tf.reduce_mean(tf.image.ssim(pred, batch['uv_curvature'], max_val=1)) - loss = ce_uv_loss - pred_mesh = tf.math.argmax(uv2mesh(pred), axis=-1) + mesh_pred = uv2mesh(pred) * batch['mesh_mask'][:,:,tf.newaxis] + mesh_orig = tf.cast(uv2mesh(tf.math.argmax(batch['uv_curvature'], axis=-1, output_type=tf.int32)), tf.float32) * batch['mesh_mask'] + ce_mesh_loss = scce(mesh_orig, mesh_pred) + + loss = ce_uv_loss + ce_mesh_loss + mean_iou = get_mean_iou(tf.math.argmax(batch['uv_curvature'], axis=-1), tf.math.argmax(pred, axis=-1)) - mean_iou_mesh = get_mean_iou(tf.cast(batch['mesh_curvature'], tf.float32) * batch['mesh_mask'], tf.cast(pred_mesh, tf.float32) * batch['mesh_mask']) dice = dice_dense(pred, batch['uv_curvature']) gradients = tape.gradient(loss, model.trainable_variables) optimizer.apply_gradients(zip(gradients, model.trainable_variables)) - return { 'train/loss': loss, 'train/ce_uv_loss': ce_uv_loss, 'train/ssim': ms_ssim, 'train/mean_iou': mean_iou, 'train/mean_iou_mesh': mean_iou_mesh, 'train/dice': dice } + return { 'train/loss': loss, 'train/ce_uv_loss': ce_uv_loss, 'train/ssim': ms_ssim, 'train/mean_iou': mean_iou, + 'train/dice': dice, 'train/ce_mesh_loss': ce_mesh_loss } @@ -118,14 +125,17 @@ def valid_step(batch): ce_uv_loss = scce(tf.math.argmax(batch['uv_curvature'], axis=-1), pred) ms_ssim = tf.reduce_mean(tf.image.ssim(pred, batch['uv_curvature'], max_val=1)) - loss = ce_uv_loss - pred_mesh = tf.math.argmax(uv2mesh(pred), axis=-1) + mesh_pred = uv2mesh(pred) * batch['mesh_mask'][:,:,tf.newaxis] + mesh_orig = tf.cast(uv2mesh(tf.math.argmax(batch['uv_curvature'], axis=-1, output_type=tf.int32)), tf.float32) * batch['mesh_mask'] + ce_mesh_loss = scce(mesh_orig, mesh_pred) + loss = ce_uv_loss + ce_mesh_loss + mean_iou = get_mean_iou(tf.math.argmax(batch['uv_curvature'], axis=-1), tf.math.argmax(pred, axis=-1)) - mean_iou_mesh = get_mean_iou(tf.cast(batch['mesh_curvature'], tf.float32) * batch['mesh_mask'], tf.cast(pred_mesh, tf.float32) * batch['mesh_mask']) dice = dice_dense(pred, batch['uv_curvature']) - return { 'valid/loss': loss, 'valid/ce_uv_loss': ce_uv_loss, 'valid/ssim': ms_ssim, 'valid/mean_iou': mean_iou, 'valid/mean_iou_mesh': mean_iou_mesh, 'valid/dice': dice } + return { 'valid/loss': loss, 'valid/ce_uv_loss': ce_uv_loss, 'valid/ssim': ms_ssim, 'valid/mean_iou': mean_iou, + 'valid/dice': dice, 'valid/ce_mesh_loss': ce_mesh_loss } def plot_everything(batch: dict, type: str): @@ -134,7 +144,14 @@ def plot_everything(batch: dict, type: str): orig_img = tf.math.argmax(batch['uv_curvature'], axis=-1, output_type=tf.dtypes.int32) pred_img = tf.math.argmax(pred, axis=-1, output_type=tf.dtypes.int32) img = tf.concat((orig_img, pred_img), axis=2).numpy() - imgs = { type + '/images': [wandb.Image(img[i,:,:,np.newaxis] / 6.0) for i in range(img.shape[0])] } + + colors = np.array([cm.color('jet', 1 - i) for i in np.linspace(0, 1, 6+1)]) + color_img = np.zeros((img.shape[0], img.shape[1], img.shape[2], 3), np.uint8) + for i in range(7): + color_img[img == i, :] = colors[i] + color_img = [wandb.Image(color_img[i]) for i in range(4)] + + imgs = { type + '/images': [wandb.Image(img[i,:,:,np.newaxis] / 6.0) for i in range(img.shape[0])], type + '/color_images': color_img } return imgs @@ -159,7 +176,7 @@ def train(): to_log = { **to_log, **train_figs, **valid_figs } if step == 0: to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } } - + wandb.log(to_log, step=step) print(step) @@ -202,18 +219,41 @@ if __name__ == '__main__': factory = DatasetFactory() - dataset_train = factory.get_dataset(folder=config['train_dir'], batch_size=config['batch_size'], signature=config['signature_dynamic'], use_filled=config['use_filled'], resolutions=[config['resolution']], in_memory=config['dataset_in_memory'], is_cape=config['is_cape']) - static_dataset_train = StaticDataset(folder=config['train_dir'], signature=config['signature_static'], use_filled=config['use_filled'], resolutions=[config['resolution']], in_memory=True, is_cape=config['is_cape']) - dataset_valid = factory.get_dataset(folder=config['valid_dir'], batch_size=config['batch_size'], signature=config['signature_dynamic'], use_filled=config['use_filled'], resolutions=[config['resolution']], in_memory=config['dataset_in_memory'], is_cape=config['is_cape']) - static_dataset_valid = StaticDataset(folder=config['valid_dir'], signature=config['signature_static'], use_filled=config['use_filled'], resolutions=[config['resolution']], in_memory=True, is_cape=config['is_cape']) + dataset_train = factory.get_dataset(folder=config['train_dir'], + batch_size=config['batch_size'], + signature=config['signature_dynamic'], + resolutions=[config['resolution']], + in_memory=config['dataset_in_memory'], + use_no_orient=config['remove_global_orientation'], + frames_file=config['frames_file'] if 'frames_file' in config.keys() else None, + is_cape=config['is_cape']) + static_dataset_train = StaticDataset(folder=config['train_dir'], + signature=config['signature_static'], + resolutions=[config['resolution']], + in_memory=True, + is_cape=config['is_cape']) + + dataset_valid = factory.get_dataset(folder=config['valid_dir'], + batch_size=config['batch_size'], + signature=config['signature_dynamic'], + resolutions=[config['resolution']], + in_memory=config['dataset_in_memory'], + use_no_orient=config['remove_global_orientation'], + frames_file=config['frames_file_valid'] if 'frames_file_valid' in config.keys() else None, + is_cape=config['is_cape']) + static_dataset_valid = StaticDataset(folder=config['valid_dir'], + signature=config['signature_static'], + resolutions=[config['resolution']], + in_memory=True, + is_cape=config['is_cape']) model = AutoEncoder(config['cond_ae']) optimizer = tf.optimizers.Adam(learning_rate=config['lr']) ckpt_enc = tf.train.Checkpoint(model=model.encoder) - manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/' + config['name'] + '_enc', max_to_keep=20) + manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/post/' + config['name'] + '_enc', max_to_keep=20) ckpt_dec = tf.train.Checkpoint(model=model.decoder) - manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/' + config['name'] + '_dec', max_to_keep=20) + manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/post/' + config['name'] + '_dec', max_to_keep=20) if testing: test() diff --git a/auto_encoder_static.py b/auto_encoder_static.py index 4c74fb4..9de1574 100644 --- a/auto_encoder_static.py +++ b/auto_encoder_static.py @@ -1,4 +1,5 @@ import os +import sys from configs.config_ae_static import config os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] @@ -32,7 +33,7 @@ else: from tf_utils import check_tf_version, allow_memory_growth from dataset import DatasetFactory, StaticDataset from custom_utils.custom_utils import batch_to_dict, plot_3d -from models.cond_encoder import AutoEncoder +from models.cond_encoder import AutoEncoderNew as AutoEncoder def init_wandb(): @@ -40,12 +41,13 @@ def init_wandb(): artifact = wandb.Artifact('code', type='code') artifact.add_file('auto_encoder_static.py') artifact.add_file('losses.py') - artifact.add_file('configs/config_base.py') - artifact.add_file('configs/config_ae_static.py') artifact.add_file('models/base.py') artifact.add_file('models/cond_encoder.py') artifact.add_file('dataset.py') artifact.add_file('convnext/models/convnext_tf.py') + config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')] + for config_file_name in config_file_names: + artifact.add_file('/'.join(config_file_name.split('.')) + '.py') run.log_artifact(artifact) uv2mesh = UV2Mesh(res=256, is_skirt=config['is_skirt'], is_smpl_orig=config['is_cape']) @@ -184,7 +186,7 @@ def test(): if __name__ == '__main__': init_wandb() - allow_memory_growth() + # allow_memory_growth() parser = argparse.ArgumentParser(description='') parser.add_argument('--name', type=str) args = vars(parser.parse_args()) @@ -198,10 +200,33 @@ if __name__ == '__main__': factory = DatasetFactory() - dataset_train = factory.get_dataset(folder=config['train_dir'], batch_size=config['batch_size'], signature=config['signature_dynamic'], use_filled=config['use_filled'], resolutions=[config['resolution']], in_memory=config['dataset_in_memory'], is_cape=config['is_cape']) - static_dataset_train = StaticDataset(folder=config['train_dir'], signature=config['signature_static'], use_filled=config['use_filled'], resolutions=[config['resolution']], in_memory=True, is_cape=config['is_cape']) - dataset_valid = factory.get_dataset(folder=config['valid_dir'], batch_size=config['batch_size'], signature=config['signature_dynamic'], use_filled=config['use_filled'], resolutions=[config['resolution']], in_memory=config['dataset_in_memory'], is_cape=config['is_cape']) - static_dataset_valid = StaticDataset(folder=config['valid_dir'], signature=config['signature_static'], use_filled=config['use_filled'], resolutions=[config['resolution']], in_memory=True, is_cape=config['is_cape']) + dataset_train = factory.get_dataset(folder=config['train_dir'], + batch_size=config['batch_size'], + signature=config['signature_dynamic'], + resolutions=[config['resolution']], + in_memory=config['dataset_in_memory'], + use_no_orient=config['remove_global_orientation'], + frames_file=config['frames_file'] if 'frames_file' in config.keys() else None, + is_cape=config['is_cape']) + static_dataset_train = StaticDataset(folder=config['train_dir'], + signature=config['signature_static'], + resolutions=[config['resolution']], + in_memory=True, + is_cape=config['is_cape']) + + dataset_valid = factory.get_dataset(folder=config['valid_dir'], + batch_size=config['batch_size'], + signature=config['signature_dynamic'], + resolutions=[config['resolution']], + in_memory=config['dataset_in_memory'], + use_no_orient=config['remove_global_orientation'], + frames_file=config['frames_file_valid'] if 'frames_file_valid' in config.keys() else None, + is_cape=config['is_cape']) + static_dataset_valid = StaticDataset(folder=config['valid_dir'], + signature=config['signature_static'], + resolutions=[config['resolution']], + in_memory=True, + is_cape=config['is_cape']) model : AutoEncoder = AutoEncoder(config['cond_ae']) optimizer = tf.optimizers.Adam(learning_rate=config['lr']) @@ -211,9 +236,9 @@ if __name__ == '__main__': load_model(model.decoder, config['pretrained_model'] + '_dec') ckpt_enc = tf.train.Checkpoint(model=model.encoder) - manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/' + config['name'] + '_enc', max_to_keep=20) + manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/post/' + config['name'] + '_enc', max_to_keep=20) ckpt_dec = tf.train.Checkpoint(model=model.decoder) - manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/' + config['name'] + '_dec', max_to_keep=20) + manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/post/' + config['name'] + '_dec', max_to_keep=20) # test() train() \ No newline at end of file diff --git a/calculate_error.py b/calculate_error.py index 4358089..61871d3 100644 --- a/calculate_error.py +++ b/calculate_error.py @@ -1,6 +1,6 @@ import os import sys -from configs.config_abl_abs_skirt import config +from configs.config_abl_all_post import config os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] # import tensorflow as tf @@ -59,13 +59,13 @@ if __name__ == '__main__': folder = config['test_dir'] checkpoint_name = config['name'] - iteration = '70000' + iteration = '' F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy").astype(np.int32) garment_type_table = np.load('custom_data/garment_type_table_test.npy', allow_pickle=True).item() - output_folder = '/home/workspace/data/results/' + checkpoint_name + '-' + iteration + output_folder = '/home/workspace/data/results/post/' + checkpoint_name + '-' + iteration faces_folder = '/home/workspace/data/results/support/faces' + ('_skirt' if config['is_skirt'] else '') @@ -73,7 +73,7 @@ if __name__ == '__main__': ids = [id.split('.')[0] for id in ids] faces = {id : np.load(faces_folder + '/' + id + '.npy') for id in ids } - masks_folder = '/home/workspace/data/dataset/test' + ('_skirt' if config['is_skirt'] else '') + '_ready/mesh_mask' + masks_folder = '/home/workspace/data/dataset/test' + ('_skirt' if config['is_skirt'] else '') + '_ready' + ('_2' if config['is_skirt'] else '') + '/mesh_mask' ids = os.listdir(masks_folder) ids = [id.split('.')[0] for id in ids] masks = {id : np.load(masks_folder + '/' + id + '.npy') for id in ids } @@ -107,7 +107,7 @@ if __name__ == '__main__': for key in per_garment_errors.keys(): print(key + ': ' + str(np.mean(per_garment_errors[key]))) - with open('/home/workspace/data/results/errors/' + checkpoint_name + '-' + iteration + '.csv', mode='w') as f: + with open('/home/workspace/data/results/errors/post/' + checkpoint_name + '-' + iteration + '.csv', mode='w') as f: file_writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) for key in sorted(errors.keys()): diff --git a/cape_convert.py b/cape_convert.py index a42a336..cd14ba2 100644 --- a/cape_convert.py +++ b/cape_convert.py @@ -659,7 +659,7 @@ if __name__ == '__main__': # create_posed_body() # create_static() # create_unposed() - # create_posed() + create_posed() # verify() pass diff --git a/cluster_poses.py b/cluster_poses.py index 0ec6a0e..843c8ca 100644 --- a/cluster_poses.py +++ b/cluster_poses.py @@ -50,13 +50,13 @@ def sample_from_cluster(file, n_sample, output_file): if __name__ == '__main__': - folder = '/home/workspace/data/dataset/test_ready' + folder = '/home/workspace/data/dataset/test_skirt_ready_2' - is_skirt = False + is_skirt = True F = np.load("custom_utils/smpl_faces" + ("_skirt" if is_skirt == 1 else "") + ".npy") - # generate_clusters(folder, 20) - sample_from_cluster('custom_data/test_ready_pose_cluster_20.csv', 10, '/home/workspace/data/dataset/test_ready/frames_pose_cluster_20_sample_10.txt') + generate_clusters(folder, 20) + # sample_from_cluster('custom_data/test_skirt_ready_pose_cluster_20.csv', 10, '/home/workspace/data/dataset/test_skirt_ready/frames_pose_cluster_20_sample_10.txt') # samples = df.groupby('label', group_keys=False).apply(lambda x: x.sample()) diff --git a/compare_cape.py b/compare_cape.py new file mode 100644 index 0000000..7b35325 --- /dev/null +++ b/compare_cape.py @@ -0,0 +1,293 @@ +import os +import sys + +os.environ["CUDA_VISIBLE_DEVICES"] = '6' +import tensorflow as tf + +gpus = tf.config.experimental.list_physical_devices('GPU') +if gpus: + try: + # Currently, memory growth needs to be the same across GPUs + for gpu in gpus: + tf.config.experimental.set_memory_growth(gpu, True) + logical_gpus = tf.config.experimental.list_logical_devices('GPU') + print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs") + except RuntimeError as e: + # Memory growth must be set before GPUs have been initialized + print(e) + +import tqdm +import shutil +import random +import numpy as np +import trimesh as tm +import plotly.express as ex +import plotly.graph_objects as go +from custom_utils.custom_utils import _maskFaces +from custom_utils.smpl import SMPL +from plotly.subplots import make_subplots +from scipy.spatial.transform import Rotation as R + + +def plot_fixed(mesh, faces, colors): + fig = go.Figure() + + fig.add_trace(go.Mesh3d( + x=mesh[:,0], + y=mesh[:,2], + z=mesh[:,1], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2], + text="", + vertexcolor=colors, + lighting={ 'ambient':0.8, 'diffuse':0.5, 'roughness':0.5 }, + + ),) + + + + fig.update_layout(scene_aspectmode='manual', scene_aspectratio=dict(x=1, y=1, z=1)) + helper = dict(xaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False), + yaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False), + zaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False),) + fig.update_layout(scene = helper) + + camera = dict( + up=dict(x=0, y=0, z=1), + center=dict(x=0, y=0, z=-0.05), + eye=dict(x=0.3, y=1.0, z=0.05) + ) + + fig.update_layout(scene_camera=camera, width=800, height=1100, autosize=False, + margin=dict(l=0, r=0, b=0, t=0, pad=0) + ) + + return fig + + +def plot_fixed_all(gt, cape, ours, error_cape, error_ours, faces, colors): + fig = make_subplots(rows=1, cols=3, start_cell="top-left", specs = [ [{ 'type': 'scene' } for _ in range(3)] ], horizontal_spacing=0) + + fig.add_trace(go.Mesh3d( + x=gt[:,0], + y=gt[:,2], + z=gt[:,1], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2], + text='GT', + vertexcolor=colors, + lighting={ 'ambient':0.8, 'diffuse':0.5, 'roughness':0.5 }, + ), + row=1, col=1) + + fig.add_trace(go.Mesh3d( + x=cape[:,0], + y=cape[:,2], + z=cape[:,1], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2], + text=str(error_cape), + vertexcolor=colors, + lighting={ 'ambient':0.8, 'diffuse':0.5, 'roughness':0.5 }, + ), + row=1, col=2) + + + fig.add_trace(go.Mesh3d( + x=ours[:,0], + y=ours[:,2], + z=ours[:,1], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2], + text=str(error_ours), + vertexcolor=colors, + lighting={ 'ambient':0.8, 'diffuse':0.5, 'roughness':0.5 }, + ), + row=1, col=3) + + + fig.update_layout(scene_aspectmode='manual', scene_aspectratio=dict(x=1, y=1, z=1), + scene2_aspectmode='manual', scene2_aspectratio=dict(x=1, y=1, z=1), + scene3_aspectmode='manual', scene3_aspectratio=dict(x=1, y=1, z=1)) + helper = dict(xaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False), + yaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False), + zaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False),) + fig.update_layout(scene = helper, + scene2 = helper, + scene3 = helper) + + camera = dict( + up=dict(x=0, y=0, z=1), + center=dict(x=0, y=-0.3, z=-0.05), + eye=dict(x=0.5, y=1.2, z=0.05) + ) + + fig.update_layout(scene_camera=camera, width=2000, height=1100, autosize=False, margin=dict(l=0, r=0, b=0, t=0, pad=0), + scene2_camera=camera, + scene3_camera=camera) + + return fig + + + +def custom_imshow(img): + fig = ex.imshow(np.flip(img, axis=0)) + fig.update_layout(margin=dict(l=0, r=0, b=0, t=0, pad=0), width=img.shape[1], height=img.shape[0]) + fig.update_xaxes(visible=False) + fig.update_yaxes(visible=False) + + return fig + + +def read_obj(path): + with open(path, 'r') as f: + obj = tm.exchange.obj.load_obj(f, skip_materials=True, maintain_order=True) + verts = obj['vertices'] + return verts + + +def read_frames_file(file): + with open(file, 'r') as f: + lines = f.readlines() + frames = ['_'.join(line.strip().split('.')[:-1]) for line in lines] + + # frames_lookup = dict() + + return frames + + +def get_cape_errors(file, frames): + out = dict() + errors = np.load(file).mean(-1) + + for frame, error in zip(frames, errors): + out[frame] = error + + return out + + +def get_errors(file): + out = dict() + with open(file, 'r') as f: + for line in f: + frame, error = line.split(' ') + out[frame] = float(error) + return out + + +def read_gt(folder, frame): + split = frame.split('_') + file = '_'.join(split[:-1]) + '.' + split[-1] + '.npz' + data = np.load(os.path.join(folder, file))['mesh_posed'] + return data + + +def add_global_orientation(mesh, frame, folder, inverse=False): + split = frame.split('_') + file = '_'.join(split[:-1]) + '.' + split[-1] + '.npy' + pose_shape = np.load(os.path.join(folder, file)) + + rodr = smpl.run_rodrigues(pose_shape[:72][np.newaxis,:].astype(np.float32)).numpy() + + r = R.from_matrix(rodr[0, 0, :, :]) + out = r.apply(mesh, inverse=inverse) + + return out + + +if __name__ == '__main__': + folder_f = 'CAPE/results/CAPE-affineconv_nz18_pose24_clotype8_female/test_reconstruction_objs_dataset_female_4clotypes' + folder_m = 'CAPE/results/CAPE-affineconv_nz18_pose24_clotype8_male/test_reconstruction_objs_dataset_male_4clotypes' + + frames_file_f = '/home/workspace/data/dataset/cape_processed/datasets/dataset_female_4clotypes_frames.txt' + frames_file_m = '/home/workspace/data/dataset/cape_processed/datasets/dataset_male_4clotypes_frames.txt' + + frames_f = read_frames_file(frames_file_f) + frames_f_to_i = { frame: i for i, frame in enumerate(frames_f) } + errors_cape_f = get_cape_errors('CAPE/results/CAPE-affineconv_nz18_pose24_clotype8_female/errors.npy', frames_f) + errors_cape_f = dict(reversed(sorted(errors_cape_f.items(), key=lambda item: item[1]))) + frames_m = read_frames_file(frames_file_m) + frames_m_to_i = { frame: i for i, frame in enumerate(frames_m) } + errors_cape_m = get_cape_errors('CAPE/results/CAPE-affineconv_nz18_pose24_clotype8_male/errors.npy', frames_m) + errors_cape_m = dict(reversed(sorted(errors_cape_m.items(), key=lambda item: item[1]))) + + errors_f = get_errors('temp/error_abl_2_pyr_64_128_256_512_cape_f.txt') + errors_m = get_errors('temp/error_abl_2_pyr_64_128_256_512_cape_m.txt') + + folder_pyr_f = '/home/workspace/data/results/cape/abl_2_pyr_64_128_256_512_cape_f' + folder_pyr_m = '/home/workspace/data/results/cape/abl_2_pyr_64_128_256_512_cape_m' + + gt_folder_f = '/home/workspace/local-data/cape_processed/test/female/mesh_posed' + gt_folder_m = '/home/workspace/local-data/cape_processed/test/male/mesh_posed' + + pose_folder_m = '/home/workspace/local-data/cape_processed/test/male/pose_shape' + pose_folder_f = '/home/workspace/local-data/cape_processed/test/female/pose_shape' + + + smpl = SMPL(orig_smpl=True) + # verts_idx = smpl.to_keep + clothing_verts_idx = np.load(os.path.join('CAPE', 'data', 'clothing_verts_idx.npy')) + cape_mask = np.zeros((6890), bool) + cape_mask[clothing_verts_idx] = True + cape_mask = cape_mask[smpl.to_keep] + J0 = np.load('custom_data/smpl_root_joint.npy') + + + _, faces = _maskFaces(np.zeros((3638, 3)), np.load('custom_utils/smpl_faces_orig.npy'), cape_mask) + colors = np.ones((3627, 3), np.int8) * 230 + + gender = 'male' + + if gender == 'male': + folder_cape = folder_m + errors_cape = errors_cape_m + folder = folder_pyr_m + errors = errors_m + frames_to_i = frames_m_to_i + gt_folder = gt_folder_m + pose_folder = pose_folder_m + else: + folder_cape = folder_f + errors_cape = errors_cape_f + folder = folder_pyr_f + errors = errors_f + frames_to_i = frames_f_to_i + gt_folder = gt_folder_f + pose_folder = pose_folder_f + + all_errors_1 = [] + all_errors_2 = [] + + # for key in tqdm.tqdm(errors_cape.keys()): + count = 0 + while True: + key = random.choice(list(errors_cape.keys())) + cape = read_obj(os.path.join(folder_cape, '{:0>4d}.obj'.format(frames_to_i[key])))[clothing_verts_idx, :] - J0[np.newaxis, :] + cape = add_global_orientation(cape, key, pose_folder, inverse=True) + if not os.path.exists(os.path.join(folder, key + '_posed.npy')): + continue + ours = np.load(os.path.join(folder, key + '_posed.npy'))[cape_mask, :] + # ours = add_global_orientation(ours, key, pose_folder) + gt = read_gt(gt_folder, key)[cape_mask, :] + gt = add_global_orientation(gt, key, pose_folder, inverse=True) + + # error_1 = np.sqrt(((gt - cape) ** 2).sum(-1)).mean() + # error_2 = np.sqrt(((gt - ours) ** 2).sum(-1)).mean() + + # all_errors_1.append(error_1) + # all_errors_2.append(error_2) + + # print(np.mean(all_errors_1)) + # print(np.mean(all_errors_2)) + + fig = plot_fixed_all(gt, cape, ours, errors_cape[key], errors[key], faces, colors) + fig.write_image('temp/cape/' + key + '.png') + + print(count) + count += 1 + + print() \ No newline at end of file diff --git a/compare_models.py b/compare_models.py new file mode 100644 index 0000000..7425a03 --- /dev/null +++ b/compare_models.py @@ -0,0 +1,273 @@ +import os +import sys +from configs.config_abl_all_skirt import config as config_a +from configs.config_abl_extra_loss_skirt import config as config_b +from configs.config_abl_norm_skirt import config as config_c + +os.environ["CUDA_VISIBLE_DEVICES"] = '6' +import tensorflow as tf + +gpus = tf.config.experimental.list_physical_devices('GPU') +if gpus: + try: + # Currently, memory growth needs to be the same across GPUs + for gpu in gpus: + tf.config.experimental.set_memory_growth(gpu, True) + logical_gpus = tf.config.experimental.list_logical_devices('GPU') + print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs") + except RuntimeError as e: + # Memory growth must be set before GPUs have been initialized + print(e) + +import glob +import time +import argparse +import wandb +import tqdm +import random +import numpy as np +import plotly.graph_objects as go +import plotly.express as ex +from PIL import Image +from postprocessing import fix_collision + +if config_a['is_skirt']: + from losses import edge_loss_skirt as edge_loss +else: + from losses import edge_loss + + + +from losses import collision_ratio, kl_loss #, concept_loss +# from losses import collision_penalty as collision_penalty +from losses import collision_loss as collision_penalty +from custom_utils.custom_utils import batch_to_dict, load_model, plot_3d, UV2Mesh, get_summary_html, maskFacesBatch, _maskFaces, plot_3d_collision +from dataset import DatasetFactory, StaticDataset +from custom_utils.smpl import SMPL +from models.cvae_model import CVAE +from custom_utils.supersmpl_io import writeOBJ +from plotly.subplots import make_subplots + + +uv2mesh = UV2Mesh(res=256, is_skirt=config_a['is_skirt'], is_adaptive=False) + + + +def plot(mesh_gt, pred_a, pred_b, pred_c, body, mask): + fig = make_subplots(rows=1, cols=4, start_cell="top-left", specs = [ [{ 'type': 'scene' } for _ in range(4)] ]) + + _, faces_garment = _maskFaces(np.zeros((14475, 3), np.float32), F, mask) + faces = np.concatenate((F, faces_garment + 14475), axis=0) + mesh_gt = np.concatenate((body, mesh_gt[mask, :]), axis=0) + pred_a = np.concatenate((body, pred_a[mask, :]), axis=0) + pred_b = np.concatenate((body, pred_b[mask, :]), axis=0) + pred_c = np.concatenate((body, pred_c[mask, :]), axis=0) + + colors = np.concatenate((np.ones_like(body, dtype=np.int32)*100, np.ones_like(mesh_gt, dtype=np.int32)*230), axis=0) + + fig.add_trace(go.Mesh3d( + x=mesh_gt[:,0], + y=mesh_gt[:,2], + z=mesh_gt[:,1], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2], + text="Ground Truth", + vertexcolor=colors, + ), + row=1, col=1) + + fig.add_trace(go.Mesh3d( + x=pred_a[:,0], + y=pred_a[:,2], + z=pred_a[:,1], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2], + text="Pred A", + vertexcolor=colors, + ), + row=1, col=2) + + fig.add_trace(go.Mesh3d( + x=pred_b[:,0], + y=pred_b[:,2], + z=pred_b[:,1], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2], + text="Pred B", + vertexcolor=colors, + ), + row=1, col=3) + + fig.add_trace(go.Mesh3d( + x=pred_c[:,0], + y=pred_c[:,2], + z=pred_c[:,1], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2], + text="Pred C", + vertexcolor=colors, + ), + row=1, col=4) + + + fig.update_layout(scene_aspectmode='manual', scene_aspectratio=dict(x=1, y=1, z=1), + scene2_aspectmode='manual', scene2_aspectratio=dict(x=1, y=1, z=1), + scene3_aspectmode='manual', scene3_aspectratio=dict(x=1, y=1, z=1), + scene4_aspectmode='manual', scene4_aspectratio=dict(x=1, y=1, z=1), + ) + helper = dict(xaxis = dict(nticks=4, range=[-1,1],), + yaxis = dict(nticks=4, range=[-1,1],), + zaxis = dict(nticks=4, range=[-1,1],),) + fig.update_layout(scene = helper, + scene2 = helper, + scene3 = helper, + scene4 = helper, + ) + + return fig + +def step(model, config, batch): + if config['use_skinning']: + uv_orig = batch['uv_unposed'] + else: + uv_orig = batch['uv_posed'] + + pred, _, _ = model([uv_orig, batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature'], batch['uv_mask']], training=False) + + mesh_pred = uv2mesh(pred) + + if config['use_skinning']: + shape = batch['pose_shape'][:, 72:] + gender = tf.cast(tf.greater_equal(shape[:, 10] , 0.5), tf.int32) + shape_offsets = tf.stack([tf.gather(tf.tensordot(shape[i,:10][tf.newaxis, :], smpl.shapedirs[gender[i]], axes=[[1], [2]])[0,:,:], smpl.to_keep, axis=0) for i in range(shape.shape[0])]) + + mesh_pred_shaped = mesh_pred + shape_offsets * batch['mesh_mask'][:,:,tf.newaxis] + mesh_pred_posed = smpl.run_garment(batch['pose_shape'][:, :72], batch['pose_shape'][:, 72:], mesh_pred_shaped) + else: + mesh_pred_posed = mesh_pred + + # mesh_pred_posed_fixed = fix_collision(mesh_pred_posed, batch['mesh_body_posed'], batch['mesh_mask']) + + return mesh_pred_posed, None #mesh_pred_posed_fixed + + +if __name__ == '__main__': + # init_wandb() + parser = argparse.ArgumentParser(description='') + parser.add_argument('--name', type=str) + args = vars(parser.parse_args()) + + skirt_modifier = '_skirt' if config_a['is_skirt'] else '' + + folder = config_a['test_dir'] + smpl = SMPL(use_one_hot=False) + + model_a = CVAE(config_a) + model_b = CVAE(config_b) + model_c = CVAE(config_c) + + + F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy").astype(np.int32) + + iteration = '70000' + + load_model(model_a, 'checkpoints/' + config_a['name'], iteration=iteration) + load_model(model_b, 'checkpoints/' + config_b['name'], iteration=iteration) + load_model(model_c, 'checkpoints/' + config_c['name'], iteration=iteration) + # load_model(model, 'checkpoints/' + 'abl_all_120k') + + assert config_a['remove_global_orientation'] == config_b['remove_global_orientation'] == config_c['remove_global_orientation'] + + factory = DatasetFactory() + dataset_a = factory.get_dataset(folder=config_a['test_dir'], + batch_size=config_a['batch_size'], + signature=config_a['signature_dynamic'], + resolutions=[config_a['resolution']], + in_memory=False, + do_repeat=False, + use_one_hot=config_a['use_one_hot'], + use_no_orient=config_a['remove_global_orientation'], + shuffle=False, + testing=True, + # frames_file='frames_abl.txt', + ) + static_dataset_a = StaticDataset(folder=config_a['test_dir'], + signature=config_a['signature_static'], + resolutions=[config_a['resolution']], + in_memory=True) + + dataset_b = factory.get_dataset(folder=config_b['test_dir'], + batch_size=config_b['batch_size'], + signature=config_b['signature_dynamic'], + resolutions=[config_b['resolution']], + in_memory=False, + do_repeat=False, + use_one_hot=config_b['use_one_hot'], + use_no_orient=config_b['remove_global_orientation'], + shuffle=False, + testing=True, + # frames_file='frames_abl.txt', + ) + static_dataset_b = StaticDataset(folder=config_b['test_dir'], + signature=config_b['signature_static'], + resolutions=[config_b['resolution']], + in_memory=True) + + dataset_c = factory.get_dataset(folder=config_c['test_dir'], + batch_size=config_c['batch_size'], + signature=config_c['signature_dynamic'], + resolutions=[config_c['resolution']], + in_memory=False, + do_repeat=False, + use_one_hot=config_c['use_one_hot'], + use_no_orient=config_c['remove_global_orientation'], + shuffle=False, + testing=True, + # frames_file='frames_abl.txt', + ) + static_dataset_c = StaticDataset(folder=config_c['test_dir'], + signature=config_c['signature_static'], + resolutions=[config_c['resolution']], + in_memory=True) + + iterator_a = iter(dataset_a) + iterator_b = iter(dataset_b) + iterator_c = iter(dataset_c) + + + faces_folder = '/home/workspace/data/results/support/faces' + ('_skirt' if config_a['is_skirt'] else '') + ids = os.listdir(faces_folder) + ids = [id.split('.')[0] for id in ids] + faces = {id : np.load(faces_folder + '/' + id + '.npy') for id in ids } + + + while True: + batch_a = iterator_a.get_next() + batch_b = iterator_b.get_next() + batch_c = iterator_c.get_next() + + batch_a = static_dataset_a.expand_batch(batch_to_dict(batch_a, config_a['signature_dynamic'])) + batch_b = static_dataset_b.expand_batch(batch_to_dict(batch_b, config_b['signature_dynamic'])) + batch_c = static_dataset_c.expand_batch(batch_to_dict(batch_c, config_c['signature_dynamic'])) + + mesh_pred_posed_a, mesh_pred_posed_fixed_a = step(model_a, config_a, batch_a) + mesh_pred_posed_b, mesh_pred_posed_fixed_b = step(model_b, config_b, batch_b) + mesh_pred_posed_c, mesh_pred_posed_fixed_c = step(model_c, config_c, batch_c) + + mesh_pred_posed_a = mesh_pred_posed_a.numpy() + mesh_pred_posed_b = mesh_pred_posed_b.numpy() + mesh_pred_posed_c = mesh_pred_posed_c.numpy() + mask = batch_a['mesh_mask'].numpy().astype(bool) + gt = batch_a['mesh_posed'].numpy() + body = batch_a['mesh_body_posed'].numpy() + + for i in range(mask.shape[0]): + id, frame_nr = batch_a['id'][i].numpy().decode("utf-8"), batch_a['frame_nr'][i].numpy().decode("utf-8") + plot(gt[i], mesh_pred_posed_a[i], mesh_pred_posed_b[i], mesh_pred_posed_c[i], body[i], mask[i]).show() + + print() + diff --git a/configs/config_abl_2_pyr_32.py b/configs/config_abl_2_pyr_32.py index 8cbdb80..38bb7a6 100644 --- a/configs/config_abl_2_pyr_32.py +++ b/configs/config_abl_2_pyr_32.py @@ -1,6 +1,6 @@ config = dict() -config['gpu'] = '1' +config['gpu'] = '6' config['name'] = 'abl_2_pyr_32' config['notes'] = 'fixed noise handling' config['tags'] = ['pyr_non_skirt_2'] diff --git a/configs/config_abl_2_pyr_32_64.py b/configs/config_abl_2_pyr_32_64.py index 99eee41..3a96b39 100644 --- a/configs/config_abl_2_pyr_32_64.py +++ b/configs/config_abl_2_pyr_32_64.py @@ -1,6 +1,6 @@ config = dict() -config['gpu'] = '4' +config['gpu'] = '6' config['name'] = 'abl_2_pyr_32_64' config['notes'] = 'fixed noise handling' config['tags'] = ['pyr_non_skirt_2'] diff --git a/configs/config_abl_2_pyr_32_64_128.py b/configs/config_abl_2_pyr_32_64_128.py new file mode 100644 index 0000000..3afbc0f --- /dev/null +++ b/configs/config_abl_2_pyr_32_64_128.py @@ -0,0 +1,186 @@ +config = dict() + +config['gpu'] = '6' +config['name'] = 'abl_2_pyr_32_64_128' +config['notes'] = 'fixed noise handling' +config['tags'] = ['pyr_non_skirt_2'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = False + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [32, 64, 128] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/abl_2_pyr_32_64' +config['pyramid']['pretrained_pyramid_iteration'] = '100000' +config['pyramid']['final_upscale_enhancer'] = 'checkpoints/128_512_3' + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = False + +config['dataset_in_memory'] = False +config['resolution'] = None +config['latent_dim'] = 128 + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.0001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['latent_dim'] = config['latent_dim'] +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + + +config['pyramid']['static_model'] = 'checkpoints/static_1' +config['pyramid']['body_model'] = 'checkpoints/body_1' +config['pyramid']['curvature_model'] = 'checkpoints/curv_1' +config['pyramid']['freeze_encoders'] = True + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 256] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [64, 128, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9, 9] + level['decoder_dims'] = [256, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_2'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = False + config['pyramid']['levels'].append(level) + elif res == 32: + level = dict() + level['resolution'] = 32 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 3 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [256, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9] + level['decoder_dims'] = [256, 256] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/32_512_4'#'checkpoints/up_3_d32_64_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] \ No newline at end of file diff --git a/configs/config_abl_2_pyr_32_64_128_256.py b/configs/config_abl_2_pyr_32_64_128_256.py new file mode 100644 index 0000000..dd6b9bb --- /dev/null +++ b/configs/config_abl_2_pyr_32_64_128_256.py @@ -0,0 +1,186 @@ +config = dict() + +config['gpu'] = '6' +config['name'] = 'abl_2_pyr_32_64_128_256' +config['notes'] = 'fixed noise handling' +config['tags'] = ['pyr_non_skirt_2'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = False + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [32, 64, 128, 256] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/abl_2_pyr_32_64_128' +config['pyramid']['pretrained_pyramid_iteration'] = '80000' +config['pyramid']['final_upscale_enhancer'] = 'checkpoints/256_512' + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = False + +config['dataset_in_memory'] = False +config['resolution'] = None +config['latent_dim'] = 128 + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.0001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['latent_dim'] = config['latent_dim'] +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + + +config['pyramid']['static_model'] = 'checkpoints/static_1' +config['pyramid']['body_model'] = 'checkpoints/body_1' +config['pyramid']['curvature_model'] = 'checkpoints/curv_1' +config['pyramid']['freeze_encoders'] = True + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 256] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/128_512_3'#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [64, 128, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9, 9] + level['decoder_dims'] = [256, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_2'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = False + config['pyramid']['levels'].append(level) + elif res == 32: + level = dict() + level['resolution'] = 32 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 3 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [256, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9] + level['decoder_dims'] = [256, 256] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/32_512_4'#'checkpoints/up_3_d32_64_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] \ No newline at end of file diff --git a/configs/config_abl_2_pyr_32_64_128_256_512.py b/configs/config_abl_2_pyr_32_64_128_256_512.py new file mode 100644 index 0000000..10d71ab --- /dev/null +++ b/configs/config_abl_2_pyr_32_64_128_256_512.py @@ -0,0 +1,191 @@ +config = dict() + +config['gpu'] = '6' +config['name'] = 'abl_2_pyr_32_64_128_256_512' +config['notes'] = 'fixed noise handling' +config['tags'] = ['pyr_non_skirt_2'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = False + +config['pretrained_model'] = 'checkpoints/abl_2_pyr_32_64_128_256_512' +config['pretrained_model_iteration'] = '50000' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [32, 64, 128, 256, 512] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/abl_2_pyr_32_64_128_256' +config['pyramid']['pretrained_pyramid_iteration'] = '70000' +config['pyramid']['final_upscale_enhancer'] = '' +config['pyramid']['upscale_enhancer_kernel_size'] = 3 + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = False + +config['dataset_in_memory'] = False +config['resolution'] = None +config['latent_dim'] = 128 + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.0001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['latent_dim'] = config['latent_dim'] +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + + +config['pyramid']['static_model'] = 'checkpoints/static_1' +config['pyramid']['body_model'] = 'checkpoints/body_1' +config['pyramid']['curvature_model'] = 'checkpoints/curv_1' +config['pyramid']['freeze_encoders'] = True + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/256_512'#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + level['upscale_enhancer_kernel_size'] = 3 + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 256] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/128_512_3'#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + level['upscale_enhancer_kernel_size'] = 3 + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [64, 128, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9, 9] + level['decoder_dims'] = [256, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_2'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = False + level['upscale_enhancer_kernel_size'] = 3 + config['pyramid']['levels'].append(level) + elif res == 32: + level = dict() + level['resolution'] = 32 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 3 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [256, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9] + level['decoder_dims'] = [256, 256] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/32_512_4'#'checkpoints/up_3_d32_64_2' + level['upscale_enhancer_freeze'] = True + level['upscale_enhancer_kernel_size'] = 3 + config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] \ No newline at end of file diff --git a/configs/config_abl_2_pyr_32_64_128_256_512_norm.py b/configs/config_abl_2_pyr_32_64_128_256_512_norm.py new file mode 100644 index 0000000..20eb9be --- /dev/null +++ b/configs/config_abl_2_pyr_32_64_128_256_512_norm.py @@ -0,0 +1,186 @@ +config = dict() + +config['gpu'] = '6' +config['name'] = 'abl_2_pyr_32_64_128_256_512_norm' +config['notes'] = 'fixed noise handling' +config['tags'] = ['pyr_non_skirt_2'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = True + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [32, 64, 128, 256, 512] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/abl_2_pyr_32_64_128_256' +config['pyramid']['pretrained_pyramid_iteration'] = '70000' +config['pyramid']['final_upscale_enhancer'] = '' + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = False + +config['dataset_in_memory'] = False +config['resolution'] = None +config['latent_dim'] = 128 + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.0001 +config['reg_loss_coeff'] = 1.0 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['latent_dim'] = config['latent_dim'] +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + + +config['pyramid']['static_model'] = 'checkpoints/static_1' +config['pyramid']['body_model'] = 'checkpoints/body_1' +config['pyramid']['curvature_model'] = 'checkpoints/curv_1' +config['pyramid']['freeze_encoders'] = True + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/256_512'#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 256] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/128_512_3'#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [64, 128, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9, 9] + level['decoder_dims'] = [256, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_2'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = False + config['pyramid']['levels'].append(level) + elif res == 32: + level = dict() + level['resolution'] = 32 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 3 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [256, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9] + level['decoder_dims'] = [256, 256] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/32_512_4'#'checkpoints/up_3_d32_64_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] \ No newline at end of file diff --git a/configs/config_abl_2_pyr_32_64_128_256_512_skirt.py b/configs/config_abl_2_pyr_32_64_128_256_512_skirt.py new file mode 100644 index 0000000..bbba36d --- /dev/null +++ b/configs/config_abl_2_pyr_32_64_128_256_512_skirt.py @@ -0,0 +1,189 @@ +config = dict() + +config['gpu'] = '5' +config['name'] = 'abl_2_pyr_32_64_128_256_512_skirt' +config['notes'] = '' +config['tags'] = ['pyr_skirt_2'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False + +config['use_norm_loss'] = False + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [32, 64, 128, 256, 512] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/abl_2_pyr_32_64_128_256_skirt' +config['pyramid']['pretrained_pyramid_iteration'] = '70000' +config['pyramid']['final_upscale_enhancer'] = '' + +config['train_dir'] = '/home/workspace/local-data/train_skirt' +config['valid_dir'] = '/home/workspace/local-data/valid_skirt' +config['test_dir'] = '/home/workspace/data/dataset/test_skirt_ready_2' +config['batch_size'] = 4 +config['is_skirt'] = True +config['is_cape'] = False + +config['pyramid']['static_model'] = 'checkpoints/static_1_skirt' +config['pyramid']['body_model'] = 'checkpoints/body_1_skirt_2_2' +config['pyramid']['curvature_model'] = 'checkpoints/curv_1_skirt' + +config['dataset_in_memory'] = False +config['resolution'] = None +config['latent_dim'] = 128 + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.0001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['latent_dim'] = config['latent_dim'] +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + + + +config['pyramid']['freeze_encoders'] = True + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/256_512_skirt'#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 256] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/128_512_skirt'#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [64, 128, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9, 9] + level['decoder_dims'] = [256, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_skirt'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = False + config['pyramid']['levels'].append(level) + elif res == 32: + level = dict() + level['resolution'] = 32 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 3 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [256, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9] + level['decoder_dims'] = [256, 256] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/32_512_skirt'#'checkpoints/up_3_d32_64_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] \ No newline at end of file diff --git a/configs/config_abl_2_pyr_32_64_128_256_512_test.py b/configs/config_abl_2_pyr_32_64_128_256_512_test.py new file mode 100644 index 0000000..de9e8cf --- /dev/null +++ b/configs/config_abl_2_pyr_32_64_128_256_512_test.py @@ -0,0 +1,190 @@ +config = dict() + +config['gpu'] = '4' +config['name'] = 'abl_2_pyr_32_64_128_256_512_test' +config['notes'] = 'fixed noise handling' +config['tags'] = ['pyr_non_skirt_2'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = False + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [256] +config['pyramid']['pretrained_pyramid'] = '' +config['pyramid']['pretrained_pyramid_iteration'] = '' +config['pyramid']['final_upscale_enhancer'] = 'x' + +config['frames_file'] = 'frames_00761_0.txt' +config['frames_file_valid'] = 'frames_00761_0.txt' +config['frames_file_test'] = 'frames_00761_0.txt' + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/train' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = False + +config['dataset_in_memory'] = True +config['resolution'] = None +config['latent_dim'] = 128 + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.0001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['latent_dim'] = config['latent_dim'] +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + + +config['pyramid']['static_model'] = 'checkpoints/static_1' +config['pyramid']['body_model'] = 'checkpoints/body_1' +config['pyramid']['curvature_model'] = 'checkpoints/curv_1' +config['pyramid']['freeze_encoders'] = True + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 256] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [64, 128, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9, 9] + level['decoder_dims'] = [256, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = False + config['pyramid']['levels'].append(level) + elif res == 32: + level = dict() + level['resolution'] = 32 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 3 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [256, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9] + level['decoder_dims'] = [256, 256] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d32_64_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] \ No newline at end of file diff --git a/configs/config_abl_2_pyr_32_64_128_256_skirt.py b/configs/config_abl_2_pyr_32_64_128_256_skirt.py new file mode 100644 index 0000000..97dfaf6 --- /dev/null +++ b/configs/config_abl_2_pyr_32_64_128_256_skirt.py @@ -0,0 +1,189 @@ +config = dict() + +config['gpu'] = '4' +config['name'] = 'abl_2_pyr_32_64_128_256_skirt' +config['notes'] = '' +config['tags'] = ['pyr_skirt_2'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False + +config['use_norm_loss'] = False + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [32, 64, 128, 256] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/abl_2_pyr_32_64_128_skirt' +config['pyramid']['pretrained_pyramid_iteration'] = '80000' +config['pyramid']['final_upscale_enhancer'] = 'checkpoints/256_512_skirt' + +config['train_dir'] = '/home/workspace/local-data/train_skirt' +config['valid_dir'] = '/home/workspace/local-data/valid_skirt' +config['test_dir'] = '/home/workspace/data/dataset/test_skirt_ready_2' +config['batch_size'] = 4 +config['is_skirt'] = True +config['is_cape'] = False + +config['pyramid']['static_model'] = 'checkpoints/static_1_skirt' +config['pyramid']['body_model'] = 'checkpoints/body_1_skirt_2_2' +config['pyramid']['curvature_model'] = 'checkpoints/curv_1_skirt' + +config['dataset_in_memory'] = False +config['resolution'] = None +config['latent_dim'] = 128 + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.0001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['latent_dim'] = config['latent_dim'] +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + + + +config['pyramid']['freeze_encoders'] = True + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 256] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/128_512_skirt'#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [64, 128, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9, 9] + level['decoder_dims'] = [256, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_skirt'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = False + config['pyramid']['levels'].append(level) + elif res == 32: + level = dict() + level['resolution'] = 32 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 3 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [256, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9] + level['decoder_dims'] = [256, 256] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/32_512_skirt'#'checkpoints/up_3_d32_64_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] \ No newline at end of file diff --git a/configs/config_abl_2_pyr_32_64_128_skirt.py b/configs/config_abl_2_pyr_32_64_128_skirt.py new file mode 100644 index 0000000..6dadb96 --- /dev/null +++ b/configs/config_abl_2_pyr_32_64_128_skirt.py @@ -0,0 +1,189 @@ +config = dict() + +config['gpu'] = '5' +config['name'] = 'abl_2_pyr_32_64_128_skirt' +config['notes'] = '' +config['tags'] = ['pyr_skirt_2'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False + +config['use_norm_loss'] = False + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [32, 64, 128] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/abl_2_pyr_32_64_skirt' +config['pyramid']['pretrained_pyramid_iteration'] = '' +config['pyramid']['final_upscale_enhancer'] = 'checkpoints/128_512_skirt' + +config['train_dir'] = '/home/workspace/local-data/train_skirt' +config['valid_dir'] = '/home/workspace/local-data/valid_skirt' +config['test_dir'] = '/home/workspace/data/dataset/test_skirt_ready_2' +config['batch_size'] = 4 +config['is_skirt'] = True +config['is_cape'] = False + +config['pyramid']['static_model'] = 'checkpoints/static_1_skirt' +config['pyramid']['body_model'] = 'checkpoints/body_1_skirt_2_2' +config['pyramid']['curvature_model'] = 'checkpoints/curv_1_skirt' + +config['dataset_in_memory'] = False +config['resolution'] = None +config['latent_dim'] = 128 + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.0001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['latent_dim'] = config['latent_dim'] +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + + + +config['pyramid']['freeze_encoders'] = True + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 256] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [64, 128, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9, 9] + level['decoder_dims'] = [256, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_skirt'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = False + config['pyramid']['levels'].append(level) + elif res == 32: + level = dict() + level['resolution'] = 32 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 3 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [256, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9] + level['decoder_dims'] = [256, 256] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/32_512_skirt'#'checkpoints/up_3_d32_64_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] \ No newline at end of file diff --git a/configs/config_abl_2_pyr_32_64_skirt.py b/configs/config_abl_2_pyr_32_64_skirt.py index 531fb15..f6513b5 100644 --- a/configs/config_abl_2_pyr_32_64_skirt.py +++ b/configs/config_abl_2_pyr_32_64_skirt.py @@ -1,6 +1,6 @@ config = dict() -config['gpu'] = '4' +config['gpu'] = '6' config['name'] = 'abl_2_pyr_32_64_skirt' config['notes'] = '' config['tags'] = ['pyr_skirt_2'] diff --git a/configs/config_abl_2_pyr_32_skirt.py b/configs/config_abl_2_pyr_32_skirt.py index b163504..89f9ae9 100644 --- a/configs/config_abl_2_pyr_32_skirt.py +++ b/configs/config_abl_2_pyr_32_skirt.py @@ -1,6 +1,6 @@ config = dict() -config['gpu'] = '4' +config['gpu'] = '6' config['name'] = 'abl_2_pyr_32_skirt' config['notes'] = '' config['tags'] = ['pyr_skirt_2'] diff --git a/configs/config_abl_2_pyr_64_128_256_512_cape_f.py b/configs/config_abl_2_pyr_64_128_256_512_cape_f.py index b65e891..4ae214e 100644 --- a/configs/config_abl_2_pyr_64_128_256_512_cape_f.py +++ b/configs/config_abl_2_pyr_64_128_256_512_cape_f.py @@ -1,6 +1,6 @@ config = dict() -config['gpu'] = '6' +config['gpu'] = '2' config['name'] = 'abl_2_pyr_64_128_256_512_cape_f' config['notes'] = '' config['tags'] = ['cape_f_2'] @@ -116,6 +116,7 @@ for res in config['pyramid']['resolutions']: level['avg_garment_path'] = '' level['upscale_enhancer'] = 'checkpoints/256_512_cape_f'#'checkpoints/up_3_d256_512_2' level['upscale_enhancer_freeze'] = True + level['upscale_enhancer_kernel_size'] = 3 config['pyramid']['levels'].append(level) elif res == 128: level = dict() @@ -130,6 +131,7 @@ for res in config['pyramid']['resolutions']: level['avg_garment_path'] = '' level['upscale_enhancer'] = 'checkpoints/128_512_cape_f'#'checkpoints/up_3_d128_256_2' level['upscale_enhancer_freeze'] = True + level['upscale_enhancer_kernel_size'] = 3 config['pyramid']['levels'].append(level) elif res == 64: level = dict() @@ -144,6 +146,7 @@ for res in config['pyramid']['resolutions']: level['avg_garment_path'] = '' level['upscale_enhancer'] = 'checkpoints/64_512_cape_f'#checkpoints/up_3_d64_128_2' level['upscale_enhancer_freeze'] = False + level['upscale_enhancer_kernel_size'] = 3 config['pyramid']['levels'].append(level) elif res == 32: level = dict() diff --git a/configs/config_abl_2_pyr_64_128_256_cape_m_00032_SL.py b/configs/config_abl_2_pyr_64_128_256_cape_m_00032_SL.py new file mode 100644 index 0000000..61bec84 --- /dev/null +++ b/configs/config_abl_2_pyr_64_128_256_cape_m_00032_SL.py @@ -0,0 +1,190 @@ +config = dict() + +config['gpu'] = '4' +config['name'] = 'abl_2_pyr_64_128_256_cape_m_00032_SL' +config['notes'] = '' +config['tags'] = ['cape_m_2'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = False + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [64, 128, 256] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/abl_2_pyr_64_128_cape_m_00032_SL' +config['pyramid']['final_upscale_enhancer'] = 'checkpoints/256_512_cape_m' + +config['train_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['valid_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['test_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = True + +config['frames_file'] = 'frames_00032_SL_train.txt' +config['frames_file_valid'] = 'frames_00032_SL_test.txt' + +config['pyramid']['static_model'] = 'checkpoints/static_1_cape_m' +config['pyramid']['body_model'] = 'checkpoints/body_1_cape_m' +config['pyramid']['curvature_model'] = 'checkpoints/curv_1_cape_m' + +config['dataset_in_memory'] = True +config['resolution'] = None +config['latent_dim'] = 128 + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.0001 +config['reg_loss_coeff'] = None # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['latent_dim'] = config['latent_dim'] +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + + + +config['pyramid']['freeze_encoders'] = True + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 256] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/128_512_cape_m'#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [64, 128, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9, 9] + level['decoder_dims'] = [256, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_cape_m'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = False + config['pyramid']['levels'].append(level) + elif res == 32: + level = dict() + level['resolution'] = 32 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 3 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [256, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9] + level['decoder_dims'] = [256, 256] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d32_64_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] \ No newline at end of file diff --git a/configs/config_abl_2_pyr_64_128_cape_m_00032_SL.py b/configs/config_abl_2_pyr_64_128_cape_m_00032_SL.py new file mode 100644 index 0000000..49b490a --- /dev/null +++ b/configs/config_abl_2_pyr_64_128_cape_m_00032_SL.py @@ -0,0 +1,190 @@ +config = dict() + +config['gpu'] = '2' +config['name'] = 'abl_2_pyr_64_128_cape_m_00032_SL' +config['notes'] = '' +config['tags'] = ['cape_m_2'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = False + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [64, 128] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/abl_2_pyr_64_cape_m_00032_SL' +config['pyramid']['final_upscale_enhancer'] = 'checkpoints/128_512_cape_m' + +config['train_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['valid_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['test_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = True + +config['frames_file'] = 'frames_00032_SL_train.txt' +config['frames_file_valid'] = 'frames_00032_SL_test.txt' + +config['pyramid']['static_model'] = 'checkpoints/static_1_cape_m' +config['pyramid']['body_model'] = 'checkpoints/body_1_cape_m' +config['pyramid']['curvature_model'] = 'checkpoints/curv_1_cape_m' + +config['dataset_in_memory'] = True +config['resolution'] = None +config['latent_dim'] = 128 + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.0001 +config['reg_loss_coeff'] = None # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['latent_dim'] = config['latent_dim'] +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + + + +config['pyramid']['freeze_encoders'] = True + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 256] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [64, 128, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9, 9] + level['decoder_dims'] = [256, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_cape_m'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = False + config['pyramid']['levels'].append(level) + elif res == 32: + level = dict() + level['resolution'] = 32 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 3 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [256, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9] + level['decoder_dims'] = [256, 256] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d32_64_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] \ No newline at end of file diff --git a/configs/config_abl_2_pyr_64_cape_f_03223_SS.py b/configs/config_abl_2_pyr_64_cape_f_03223_SS.py new file mode 100644 index 0000000..4183693 --- /dev/null +++ b/configs/config_abl_2_pyr_64_cape_f_03223_SS.py @@ -0,0 +1,190 @@ +config = dict() + +config['gpu'] = '1' +config['name'] = 'abl_2_pyr_64_cape_f_03223_SS' +config['notes'] = '' +config['tags'] = ['cape_f_2'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = False + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [64] +config['pyramid']['pretrained_pyramid'] = '' +config['pyramid']['final_upscale_enhancer'] = 'checkpoints/64_512_cape_f' + +config['train_dir'] = '/home/workspace/local-data/cape_processed/train/female' +config['valid_dir'] = '/home/workspace/local-data/cape_processed/test/female' +config['test_dir'] = '/home/workspace/local-data/cape_processed/test/female' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = True + +config['frames_file'] = 'frames_03223_SS.txt' +config['frames_file_valid'] = 'frames_03223_SS.txt' + +config['pyramid']['static_model'] = 'checkpoints/static_1_cape_f' +config['pyramid']['body_model'] = 'checkpoints/body_1_cape_f' +config['pyramid']['curvature_model'] = 'checkpoints/curv_1_cape_f' + +config['dataset_in_memory'] = True +config['resolution'] = None +config['latent_dim'] = 128 + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.0001 +config['reg_loss_coeff'] = None # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['latent_dim'] = config['latent_dim'] +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + + + +config['pyramid']['freeze_encoders'] = True + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 256] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [64, 128, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9, 9] + level['decoder_dims'] = [256, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = False + config['pyramid']['levels'].append(level) + elif res == 32: + level = dict() + level['resolution'] = 32 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 3 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [256, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9] + level['decoder_dims'] = [256, 256] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d32_64_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] \ No newline at end of file diff --git a/configs/config_abl_2_pyr_64_cape_m_00032_SL.py b/configs/config_abl_2_pyr_64_cape_m_00032_SL.py new file mode 100644 index 0000000..f1feab8 --- /dev/null +++ b/configs/config_abl_2_pyr_64_cape_m_00032_SL.py @@ -0,0 +1,190 @@ +config = dict() + +config['gpu'] = '2' +config['name'] = 'abl_2_pyr_64_cape_m_00032_SL' +config['notes'] = '' +config['tags'] = ['cape_m_2'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = False + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [64] +config['pyramid']['pretrained_pyramid'] = '' +config['pyramid']['final_upscale_enhancer'] = 'checkpoints/64_512_cape_m' + +config['train_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['valid_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['test_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = True + +config['frames_file'] = 'frames_00032_SL_train.txt' +config['frames_file_valid'] = 'frames_00032_SL_test.txt' + +config['pyramid']['static_model'] = 'checkpoints/static_1_cape_m' +config['pyramid']['body_model'] = 'checkpoints/body_1_cape_m' +config['pyramid']['curvature_model'] = 'checkpoints/curv_1_cape_m' + +config['dataset_in_memory'] = True +config['resolution'] = None +config['latent_dim'] = 128 + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.0001 +config['reg_loss_coeff'] = None # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['latent_dim'] = config['latent_dim'] +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + + + +config['pyramid']['freeze_encoders'] = True + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 256] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 256] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [64, 128, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9, 9] + level['decoder_dims'] = [256, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = False + config['pyramid']['levels'].append(level) + elif res == 32: + level = dict() + level['resolution'] = 32 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 3 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [256, 256] + level['decoder_input'] = (4, 2, 256) + level['decoder_depths'] = [9, 9] + level['decoder_dims'] = [256, 256] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d32_64_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] \ No newline at end of file diff --git a/configs/config_abl_50p_skin.py b/configs/config_abl_50p_skin.py new file mode 100644 index 0000000..fa74c6f --- /dev/null +++ b/configs/config_abl_50p_skin.py @@ -0,0 +1,118 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = False # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = False + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '6' +config['name'] = 'abl_50p_skin' +config['notes'] = '' + +config['avg_garment_path'] = '' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = False +config['is_cape'] = False + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['frames_file'] = 'frames_50p.txt' + +config['static_model'] = 'checkpoints/static_1' +config['body_model'] = 'checkpoints/body_1' +config['curvature_model'] = 'checkpoints/curv_1' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = '' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 0.0001 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (14475, 3,), + 'mesh_posed': (14475, 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (14475,), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (14475, 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.025 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/config_abl_all_post.py b/configs/config_abl_all_post.py new file mode 100644 index 0000000..5093733 --- /dev/null +++ b/configs/config_abl_all_post.py @@ -0,0 +1,126 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = True +config['only_curvatures'] = False + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '1' +config['name'] = 'al_all_post' +config['notes'] = '' + +config['avg_garment_path'] = 'custom_data/train_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = False +config['is_cape'] = False + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' + +# config['frames_file'] = 'frames_dress_30k.txt' +# config['frames_file_valid'] = 'frames_dress_30k.txt' +# config['frames_file_test'] = 'frames_dress_30k.txt' + +config['static_model'] = 'checkpoints/post/static_post_2' +config['body_model'] = 'checkpoints/post/body_post_2' +config['curvature_model'] = 'checkpoints/post/curv_post_1' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + + +config['pretrained_model'] = '' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 0.001 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (config['smpl_res'], 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.001 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256, 64] +config['cvae']['decoder_depths'] = config['cvae']['encoder_depths'] +config['cvae']['decoder_dims'] = config['cvae']['encoder_dims'] + + +config['cond_ae_static'] = dict() +config['cond_ae_static']['is_label'] = False +config['cond_ae_static']['kernel_size'] = 7 +config['cond_ae_static']['bottleneck_size'] = 8 +config['cond_ae_static']['encoder_depths'] = [3, 3, 3, 9, 3] +config['cond_ae_static']['encoder_dims'] = [16, 32, 64, 64, config['cond_ae_static']['bottleneck_size']] +config['cond_ae_static']['decoder_depths'] = config['cond_ae_static']['encoder_depths'] +config['cond_ae_static']['decoder_dims'] = config['cond_ae_static']['encoder_dims'] +config['cond_ae_static']['activation'] = 'tanh' + +config['cond_ae_curv'] = dict() +config['cond_ae_curv']['is_label'] = True +config['cond_ae_curv']['kernel_size'] = 7 +config['cond_ae_curv']['bottleneck_size'] = 40 +config['cond_ae_curv']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_curv']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_curv']['bottleneck_size']] +config['cond_ae_curv']['decoder_depths'] = config['cond_ae_curv']['encoder_depths'] +config['cond_ae_curv']['decoder_dims'] = config['cond_ae_curv']['encoder_dims'] +config['cond_ae_curv']['activation'] = 'tanh' + +config['cond_ae_body'] = dict() +config['cond_ae_body']['is_label'] = False +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['bottleneck_size'] = 16 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_body']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_depths'] = config['cond_ae_body']['encoder_depths'] +config['cond_ae_body']['decoder_dims'] = config['cond_ae_body']['encoder_dims'] +config['cond_ae_body']['activation'] = 'tanh' \ No newline at end of file diff --git a/configs/config_abl_norm.py b/configs/config_abl_norm.py index f639f28..ed8ab32 100644 --- a/configs/config_abl_norm.py +++ b/configs/config_abl_norm.py @@ -18,7 +18,7 @@ config['use_norm_loss'] = True ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) assert ablation_count == 1 or ablation_count == 0 -config['gpu'] = '2' +config['gpu'] = '6' config['name'] = 'abl_norm' config['notes'] = '' diff --git a/configs/config_abl_norm_skirt.py b/configs/config_abl_norm_skirt.py index d9adafb..7e5c2eb 100644 --- a/configs/config_abl_norm_skirt.py +++ b/configs/config_abl_norm_skirt.py @@ -18,7 +18,7 @@ config['use_norm_loss'] = True ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) assert ablation_count == 1 or ablation_count == 0 -config['gpu'] = '0' +config['gpu'] = '4' config['name'] = 'abl_norm_skirt' config['notes'] = '' diff --git a/configs/config_abl_overfit.py b/configs/config_abl_overfit.py new file mode 100644 index 0000000..b99de71 --- /dev/null +++ b/configs/config_abl_overfit.py @@ -0,0 +1,121 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = True + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '0' +config['name'] = 'abl_overfit' +config['notes'] = '' + +config['avg_garment_path'] = 'custom_data/train_00761_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = True +config['is_cape'] = False + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/train' +config['test_dir'] = '/home/workspace/local-data/train' + +config['frames_file'] = 'frames_00761.txt' +config['frames_file_valid'] = 'frames_00761.txt' +config['frames_file_test'] = 'frames_00761.txt' + +config['static_model'] = 'checkpoints/static_1' +config['body_model'] = 'checkpoints/body_1' +config['curvature_model'] = 'checkpoints/curv_1' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = '' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 0.0001 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (14475, 3,), + 'mesh_posed': (14475, 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (14475,), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (14475, 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.025 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/config_abl_overfit_dress.py b/configs/config_abl_overfit_dress.py new file mode 100644 index 0000000..998d052 --- /dev/null +++ b/configs/config_abl_overfit_dress.py @@ -0,0 +1,122 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = True +config['only_curvatures'] = True + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '4' +config['name'] = 'abl_overfit_dress' +config['notes'] = 'remove other conditions from input as well' + +config['avg_garment_path'] = 'custom_data/train_dress_30k_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['is_skirt'] = True +config['dataset_in_memory'] = True +config['is_cape'] = False + +config['train_dir'] = '/home/workspace/local-data/train_skirt' +config['valid_dir'] = '/home/workspace/local-data/train_skirt' +config['test_dir'] = '/home/workspace/local-data/train_skirt' + +config['frames_file'] = 'frames_dress_30k.txt' +config['frames_file_valid'] = 'frames_dress_30k.txt' +config['frames_file_test'] = 'frames_dress_30k.txt' + +config['static_model'] = 'checkpoints/static_1_skirt' +config['body_model'] = 'checkpoints/body_1_skirt_2_2' +config['curvature_model'] = 'checkpoints/curv_1_skirt' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = '' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 0.01 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (14475, 3,), + 'mesh_posed': (14475, 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (14475,), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (14475, 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.025 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/config_abl_overfit_dress_var.py b/configs/config_abl_overfit_dress_var.py new file mode 100644 index 0000000..ad2848c --- /dev/null +++ b/configs/config_abl_overfit_dress_var.py @@ -0,0 +1,123 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = True +config['only_curvatures'] = True + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '0' +config['name'] = 'abl_overfit_dress_var' +config['notes'] = 'remove other conditions from input as well' + +config['avg_garment_path'] = 'custom_data/train_dress_30k_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['is_skirt'] = True +config['dataset_in_memory'] = True +config['is_cape'] = False + +config['train_dir'] = '/home/workspace/local-data/train_skirt' +config['valid_dir'] = '/home/workspace/local-data/train_skirt' +config['test_dir'] = '/home/workspace/local-data/train_skirt' + +config['frames_file'] = 'frames_dress_30k.txt' +config['frames_file_valid'] = 'frames_dress_30k.txt' +config['frames_file_test'] = 'frames_dress_30k.txt' + +config['static_model'] = 'checkpoints/static_1_skirt' +config['body_model'] = 'checkpoints/body_1_skirt_2_2' +config['curvature_model'] = 'checkpoints/curv_1_skirt' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = 'checkpoints/abl_overfit_dress' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 1.0 +config['balancing_activation_limit'] = 0.013 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (14475, 3,), + 'mesh_posed': (14475, 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (14475,), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (14475, 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.025 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/config_abl_overfit_dress_var_2.py b/configs/config_abl_overfit_dress_var_2.py new file mode 100644 index 0000000..368622b --- /dev/null +++ b/configs/config_abl_overfit_dress_var_2.py @@ -0,0 +1,122 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = True +config['only_curvatures'] = True + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '1' +config['name'] = 'abl_overfit_dress_var_2' +config['notes'] = 'remove other conditions from input as well, divide values by 1000 before tanh' + +config['avg_garment_path'] = 'custom_data/train_dress_30k_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['is_skirt'] = True +config['dataset_in_memory'] = True +config['is_cape'] = False + +config['train_dir'] = '/home/workspace/local-data/train_skirt' +config['valid_dir'] = '/home/workspace/local-data/train_skirt' +config['test_dir'] = '/home/workspace/local-data/train_skirt' + +config['frames_file'] = 'frames_dress_30k.txt' +config['frames_file_valid'] = 'frames_dress_30k.txt' +config['frames_file_test'] = 'frames_dress_30k.txt' + +config['static_model'] = 'checkpoints/static_1_skirt' +config['body_model'] = 'checkpoints/body_1_skirt_2_2' +config['curvature_model'] = 'checkpoints/curv_1_skirt' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = '' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 0.1 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (14475, 3,), + 'mesh_posed': (14475, 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (14475,), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (14475, 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.001 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/config_abl_overfit_dress_var_3.py b/configs/config_abl_overfit_dress_var_3.py new file mode 100644 index 0000000..058b083 --- /dev/null +++ b/configs/config_abl_overfit_dress_var_3.py @@ -0,0 +1,122 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = True +config['only_curvatures'] = True + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '1' +config['name'] = 'abl_overfit_dress_var_3' +config['notes'] = 'remove other conditions from input as well, divide values by 1000 before tanh, continued from abl_overfit_dress_var_2' + +config['avg_garment_path'] = 'custom_data/train_dress_30k_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['is_skirt'] = True +config['dataset_in_memory'] = True +config['is_cape'] = False + +config['train_dir'] = '/home/workspace/local-data/train_skirt' +config['valid_dir'] = '/home/workspace/local-data/train_skirt' +config['test_dir'] = '/home/workspace/local-data/train_skirt' + +config['frames_file'] = 'frames_dress_30k.txt' +config['frames_file_valid'] = 'frames_dress_30k.txt' +config['frames_file_test'] = 'frames_dress_30k.txt' + +config['static_model'] = 'checkpoints/static_1_skirt' +config['body_model'] = 'checkpoints/body_1_skirt_2_2' +config['curvature_model'] = 'checkpoints/curv_1_skirt' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = 'checkpoints/abl_overfit_dress_var_2' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 1.0 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (14475, 3,), + 'mesh_posed': (14475, 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (14475,), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (14475, 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.001 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/config_abl_overfit_jumpsuit.py b/configs/config_abl_overfit_jumpsuit.py new file mode 100644 index 0000000..878f77e --- /dev/null +++ b/configs/config_abl_overfit_jumpsuit.py @@ -0,0 +1,122 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = True +config['only_curvatures'] = False + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '5' +config['name'] = 'abl_overfit_jumpsuit' +config['notes'] = 'remove other conditions from input as well' + +config['avg_garment_path'] = 'custom_data/train_jumpsuit_30k_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = True +config['is_cape'] = False + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/train' +config['test_dir'] = '/home/workspace/local-data/train' + +config['frames_file'] = 'frames_jumpsuit_30k.txt' +config['frames_file_valid'] = 'frames_jumpsuit_30k.txt' +config['frames_file_test'] = 'frames_jumpsuit_30k.txt' + +config['static_model'] = 'checkpoints/static_1' +config['body_model'] = 'checkpoints/body_1' +config['curvature_model'] = 'checkpoints/curv_1' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = '' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 0.01 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (14475, 3,), + 'mesh_posed': (14475, 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (14475,), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (14475, 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.025 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/config_abl_overfit_jumpsuit_2.py b/configs/config_abl_overfit_jumpsuit_2.py new file mode 100644 index 0000000..2125f42 --- /dev/null +++ b/configs/config_abl_overfit_jumpsuit_2.py @@ -0,0 +1,122 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = True +config['only_curvatures'] = True + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '5' +config['name'] = 'abl_overfit_jumpsuit_2' +config['notes'] = 'remove other conditions from input as well' + +config['avg_garment_path'] = 'custom_data/train_jumpsuit_30k_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = True +config['is_cape'] = False + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/train' +config['test_dir'] = '/home/workspace/local-data/train' + +config['frames_file'] = 'frames_jumpsuit_30k.txt' +config['frames_file_valid'] = 'frames_jumpsuit_30k.txt' +config['frames_file_test'] = 'frames_jumpsuit_30k.txt' + +config['static_model'] = 'checkpoints/static_1' +config['body_model'] = 'checkpoints/body_1' +config['curvature_model'] = 'checkpoints/curv_1' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = '' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 0.01 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (14475, 3,), + 'mesh_posed': (14475, 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (14475,), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (14475, 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.025 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/config_ae_body_post.py b/configs/config_ae_body_post.py new file mode 100644 index 0000000..d8368fd --- /dev/null +++ b/configs/config_ae_body_post.py @@ -0,0 +1,55 @@ +config = dict() + + +config['batch_size'] = 4 +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['use_filled'] = False +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = False +config['is_cape'] = False +config['remove_global_orientation'] = True + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 16 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_depths'] = config['cond_ae']['encoder_depths'] +config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims'] +config['cond_ae']['activation'] = 'tanh' + + +config['gpu'] = '2' +config['lr'] = 0.0001 +config['name'] = 'body_post_2' +config['notes'] = 'convnext + convnext, | \ + \ +| \ + deeper model | \ +| \ + ' + +config['cond_ae']['upscale_output'] = False +config['pretrained_model'] = '' + + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (3, 512, 256,), + 'mesh_body_posed': (config['smpl_res'], 3,), + } +config['signature_static'] = { + 'mesh_mask': (config['smpl_res'],), + } \ No newline at end of file diff --git a/configs/config_ae_curv_post.py b/configs/config_ae_curv_post.py new file mode 100644 index 0000000..9b6c971 --- /dev/null +++ b/configs/config_ae_curv_post.py @@ -0,0 +1,54 @@ +config = dict() + + +config['batch_size'] = 4 +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['use_filled'] = False +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = False +config['is_cape'] = False +config['remove_global_orientation'] = True + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = True +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 40 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_depths'] = config['cond_ae']['encoder_depths'] +config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims'] +config['cond_ae']['activation'] = 'tanh' + + +config['gpu'] = '3' +config['lr'] = 0.001 +config['name'] = 'curv_post_1' +config['notes'] = 'convnext + convnext, | \ + \ +| \ + deeper model | \ +| \ + ' + +config['cond_ae']['upscale_output'] = False +config['pretrained_model'] = '' + + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'uv_curvature': (512, 256, 7), + 'mesh_curvature': (config['smpl_res']) + } +config['signature_static'] = { 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } \ No newline at end of file diff --git a/configs/config_ae_static.py b/configs/config_ae_static.py index 0f5b031..c027578 100644 --- a/configs/config_ae_static.py +++ b/configs/config_ae_static.py @@ -1,13 +1,44 @@ -from configs.config_base import config +config = dict() -config['gpu'] = '4' + +config['batch_size'] = 4 +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['use_filled'] = False +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = True +config['is_cape'] = False +config['remove_global_orientation'] = True + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 8 +config['cond_ae']['encoder_depths'] = [3, 3, 3, 27, 3] +config['cond_ae']['encoder_dims'] = [8, 16, 32, 32, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_depths'] = config['cond_ae']['encoder_depths'] +config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims'] +config['cond_ae']['activation'] = 'linear' + + +config['gpu'] = '5' config['lr'] = 0.0005 -config['name'] = 'static_1_5' -config['notes'] = 'convnext + convnext, add dense with tanh at the end of reverse convnext, | \ - flattened latent dim to 128 | \ - train on 100 garments | \ +config['name'] = 'static_post_4' +config['notes'] = 'convnext + convnext, | \ + \ +| \ deeper model | \ - larger batch size | \ +linear activation| \ ' config['cond_ae']['upscale_output'] = False diff --git a/configs/config_base.py b/configs/config_base.py index 34ca867..4818e06 100644 --- a/configs/config_base.py +++ b/configs/config_base.py @@ -32,7 +32,7 @@ config['cond_ae']['bottleneck_size'] = 64 config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) -config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_depths'] = [3, 3, 9, 9, 3] config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] # config['cond_ae'] = dict() diff --git a/configs/config_cape_f_03223_SL_2.py b/configs/config_cape_f_03223_SL_2.py new file mode 100644 index 0000000..662e618 --- /dev/null +++ b/configs/config_cape_f_03223_SL_2.py @@ -0,0 +1,122 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = False # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = False + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '0' +config['name'] = 'cape_f_03223_SL_2' +config['notes'] = '' + +config['avg_garment_path'] = 'custom_data/train_cape_f_03223_SL_2_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['dataset_in_memory'] = True + +config['train_dir'] = '/home/workspace/local-data/cape_processed/train/female' +config['valid_dir'] = '/home/workspace/local-data/cape_processed/train/female' +config['test_dir'] = '/home/workspace/local-data/cape_processed/train/female' +config['is_skirt'] = False +config['is_cape'] = True + +config['frames_file'] = 'frames_03223_SL_train_2.txt' +config['frames_file_valid'] = 'frames_03223_SL_test_2.txt' +config['frames_file_test'] = 'frames_03223_SL_test_2.txt' + +config['static_model'] = 'checkpoints/static_1_cape_f' +config['body_model'] = 'checkpoints/body_1_cape_f' +config['curvature_model'] = 'checkpoints/curv_1_cape_f' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = '' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 0.0001 +config['balancing_activation_limit'] = 0.005 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (config['smpl_res'], 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.025 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/config_cape_f_03223_SS.py b/configs/config_cape_f_03223_SS.py new file mode 100644 index 0000000..14f8d57 --- /dev/null +++ b/configs/config_cape_f_03223_SS.py @@ -0,0 +1,120 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = False # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = False + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '4' +config['name'] = 'cape_f_03223_SS' +config['notes'] = '' + +config['avg_garment_path'] = 'custom_data/train_cape_f_03223_SS_no_shape_skirt_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['dataset_in_memory'] = True + +config['train_dir'] = '/home/workspace/local-data/cape_processed/train/female' +config['valid_dir'] = '/home/workspace/local-data/cape_processed/test/female' +config['test_dir'] = '/home/workspace/local-data/cape_processed/test/female' +config['is_skirt'] = False +config['is_cape'] = True + +config['frames_file'] = 'frames_03223_SS.txt' +config['frames_file_valid'] = 'frames_03223_SS.txt' + +config['static_model'] = 'checkpoints/static_1_cape_f' +config['body_model'] = 'checkpoints/body_1_cape_f' +config['curvature_model'] = 'checkpoints/curv_1_cape_f' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = '' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 0.0001 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (config['smpl_res'], 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.025 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/config_cape_f_03223_SS_2.py b/configs/config_cape_f_03223_SS_2.py new file mode 100644 index 0000000..8400035 --- /dev/null +++ b/configs/config_cape_f_03223_SS_2.py @@ -0,0 +1,122 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = False # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = False + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '0' +config['name'] = 'cape_f_03223_SS_2' +config['notes'] = '' + +config['avg_garment_path'] = 'custom_data/train_cape_f_03223_SS_2_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['dataset_in_memory'] = True + +config['train_dir'] = '/home/workspace/local-data/cape_processed/train/female' +config['valid_dir'] = '/home/workspace/local-data/cape_processed/train/female' +config['test_dir'] = '/home/workspace/local-data/cape_processed/train/female' +config['is_skirt'] = False +config['is_cape'] = True + +config['frames_file'] = 'frames_03223_SS_train_2.txt' +config['frames_file_valid'] = 'frames_03223_SS_test_2.txt' +config['frames_file_test'] = 'frames_03223_SS_test_2.txt' + +config['static_model'] = 'checkpoints/static_1_cape_f' +config['body_model'] = 'checkpoints/body_1_cape_f' +config['curvature_model'] = 'checkpoints/curv_1_cape_f' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = '' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 0.0001 +config['balancing_activation_limit'] = 0.005 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (config['smpl_res'], 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.025 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/config_cape_m_00032_SL.py b/configs/config_cape_m_00032_SL.py new file mode 100644 index 0000000..4fa3758 --- /dev/null +++ b/configs/config_cape_m_00032_SL.py @@ -0,0 +1,121 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = False # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = False + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '1' +config['name'] = 'cape_m_00032_SL' +config['notes'] = '' + +config['avg_garment_path'] = 'custom_data/train_cape_m_00032_SL_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['dataset_in_memory'] = True + +config['train_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['valid_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['test_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['is_skirt'] = False +config['is_cape'] = True + +config['frames_file'] = 'frames_00032_SL_train.txt' +config['frames_file_valid'] = 'frames_00032_SL_test.txt' +config['frames_file_test'] = 'frames_00032_SL_test.txt' + +config['static_model'] = 'checkpoints/static_1_cape_m' +config['body_model'] = 'checkpoints/body_1_cape_m' +config['curvature_model'] = 'checkpoints/curv_1_cape_m' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = '' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 0.0001 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (config['smpl_res'], 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.025 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/config_cape_m_00032_SL_2.py b/configs/config_cape_m_00032_SL_2.py new file mode 100644 index 0000000..17edb80 --- /dev/null +++ b/configs/config_cape_m_00032_SL_2.py @@ -0,0 +1,122 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = False # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = False + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '0' +config['name'] = 'cape_m_00032_SL_2' +config['notes'] = '' + +config['avg_garment_path'] = 'custom_data/train_cape_m_00032_SL_2_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['dataset_in_memory'] = True + +config['train_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['valid_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['test_dir'] = '/home/workspace/local-data/cape_processed/train/male' +config['is_skirt'] = False +config['is_cape'] = True + +config['frames_file'] = 'frames_00032_SL_train_2.txt' +config['frames_file_valid'] = 'frames_00032_SL_test_2.txt' +config['frames_file_test'] = 'frames_00032_SL_test_2.txt' + +config['static_model'] = 'checkpoints/static_1_cape_m' +config['body_model'] = 'checkpoints/body_1_cape_m' +config['curvature_model'] = 'checkpoints/curv_1_cape_m' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = '' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 0.0001 +config['balancing_activation_limit'] = 0.005 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (config['smpl_res'], 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.025 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/config_cvae_curv.py b/configs/config_cvae_curv.py index 30baf6d..7cbd5fa 100644 --- a/configs/config_cvae_curv.py +++ b/configs/config_cvae_curv.py @@ -1,8 +1,12 @@ config = dict() config['gpu'] = '2' -config['name'] = 'cvae_curv' -config['notes'] = '' +config['name'] = 'cvae_curv_8' +config['notes'] = 'no activation for decoder, softmax at the very end, lower balancing, output only 6 values, concatenate background | \ + same as 3 but use ce loss | \ + add ce mesh loss | \ + higher balancing coeff | \ + start from curv_5, but higher balancing ' config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision @@ -27,12 +31,13 @@ if config['is_cape']: config['latent_dim'] = 128 -config['pretrained_model'] = '' +config['pretrained_model'] = 'checkpoints/cvae_curv_5' +config['pretrained_model_iteration'] = '100000' ############### config['lr'] = 0.0001# 0.0001 ############### -config['starting_balancing_coeff'] = 0.1 +config['starting_balancing_coeff'] = 0.25 config['signature_dynamic'] = { 'id': (), 'frame_nr': (), 'pose_shape': (72 + 11,), diff --git a/configs/post/config_abl_all.py b/configs/post/config_abl_all.py new file mode 100644 index 0000000..1ec8467 --- /dev/null +++ b/configs/post/config_abl_all.py @@ -0,0 +1,117 @@ +config = dict() + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK AVG GARMENT USED + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_curvature'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = True + +config['use_norm_loss'] = True + +ablation_count = [config['use_skinning'], config['remove_global_orientation'], config['use_curvature'], config['use_extra_losses'], config['use_offsets']].count(False) +assert ablation_count == 1 or ablation_count == 0 + +config['gpu'] = '0' +config['name'] = 'abl_all' +config['notes'] = '' + +config['avg_garment_path'] = 'custom_data/train_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv +if config['use_skinning']: + assert (config['use_offsets'] and config['avg_garment_path'] != '') or (not config['use_offsets'] and config['avg_garment_path'] == '') + +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision + +config['batch_size'] = 4 +config['resolution'] = 512 +config['is_skirt'] = False +config['dataset_in_memory'] = False +config['is_cape'] = False + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' + +config['static_model'] = 'checkpoints/static_1' +config['body_model'] = 'checkpoints/body_1' +config['curvature_model'] = 'checkpoints/curv_1' + + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['latent_dim'] = 128 + +config['pretrained_model'] = '' + +############### +config['lr'] = 0.0001# 0.0001 +############### +config['starting_balancing_coeff'] = 0.0001 + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (14475, 3,), + 'mesh_posed': (14475, 3,), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (14475,), + 'uv_mask': (512, 256,), + } + +if config['use_skinning']: + config['signature_dynamic']['uv_unposed'] = (512, 256, 3) + config['signature_dynamic']['mesh_unposed'] = (14475, 3,) +else: + config['signature_dynamic']['uv_posed'] = (512, 256, 3) + + +config['upscale_enhancer'] = '' +config['freeze_encoders'] = True +config['use_one_hot'] = False + +config['cvae'] = dict() +config['cvae']['is_label'] = False +config['cvae']['latent_dim'] = config['latent_dim'] +config['cvae']['add_noise'] = True +config['cvae']['noise_amount'] = 0.025 + +config['cvae']['kernel_size'] = 7 +config['cvae']['encoder_depths'] = [3, 3, 9, 3] +config['cvae']['encoder_dims'] = [32, 64, 128, 256] +config['cvae']['decoder_input'] = (16, 8, 80) +config['cvae']['decoder_depths'] = [3, 3, 9, 3] +config['cvae']['decoder_dims'] = [256, 128, 64, 16] + + +config['cond_ae'] = dict() +config['cond_ae']['is_label'] = False +config['cond_ae']['upscale_output'] = False +config['cond_ae']['latent_dim'] = config['latent_dim'] +config['cond_ae']['kernel_size'] = 7 +config['cond_ae']['bottleneck_size'] = 64 +config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']] +config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size']) +config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3] +config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16] + +config['cond_ae_body'] = dict() +config['cond_ae_body']['latent_dim'] = config['latent_dim'] +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['upscale_output'] = True +config['cond_ae_body']['bottleneck_size'] = 512 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3] +config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size']) +config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3] +config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16] diff --git a/configs/post/config_abl_pyr_32.py b/configs/post/config_abl_pyr_32.py new file mode 100644 index 0000000..4836c52 --- /dev/null +++ b/configs/post/config_abl_pyr_32.py @@ -0,0 +1,184 @@ +config = dict() + +config['gpu'] = '2' +config['name'] = 'abl_pyr_32' +config['notes'] = 'fixed noise handling' +config['tags'] = ['pyr_post'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = True + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [32] +config['pyramid']['pretrained_pyramid'] = '' +config['pyramid']['final_upscale_enhancer'] = '' + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = False + +config['dataset_in_memory'] = False +config['resolution'] = None + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + +config['pyramid']['static_model'] = 'checkpoints/post/static_post_2' +config['pyramid']['body_model'] = 'checkpoints/post/body_post_2' +config['pyramid']['curvature_model'] = 'checkpoints/post/curv_post_1' +config['pyramid']['freeze_encoders'] = True + + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 64] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [64, 64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_2'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 32: + level = dict() + level['resolution'] = 32 + level['kernel_size'] = 3 + level['encoder_depths'] = [16] + level['encoder_dims'] = [64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/32_512_4'#'checkpoints/up_3_d32_64_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + +config['cond_ae_static'] = dict() +config['cond_ae_static']['is_label'] = False +config['cond_ae_static']['kernel_size'] = 7 +config['cond_ae_static']['bottleneck_size'] = 8 +config['cond_ae_static']['encoder_depths'] = [3, 3, 3, 9, 3] +config['cond_ae_static']['encoder_dims'] = [16, 32, 64, 64, config['cond_ae_static']['bottleneck_size']] +config['cond_ae_static']['decoder_depths'] = config['cond_ae_static']['encoder_depths'] +config['cond_ae_static']['decoder_dims'] = config['cond_ae_static']['encoder_dims'] +config['cond_ae_static']['activation'] = 'tanh' + +config['cond_ae_curv'] = dict() +config['cond_ae_curv']['is_label'] = True +config['cond_ae_curv']['kernel_size'] = 7 +config['cond_ae_curv']['bottleneck_size'] = 40 +config['cond_ae_curv']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_curv']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_curv']['bottleneck_size']] +config['cond_ae_curv']['decoder_depths'] = config['cond_ae_curv']['encoder_depths'] +config['cond_ae_curv']['decoder_dims'] = config['cond_ae_curv']['encoder_dims'] +config['cond_ae_curv']['activation'] = 'tanh' + +config['cond_ae_body'] = dict() +config['cond_ae_body']['is_label'] = False +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['bottleneck_size'] = 16 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_body']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_depths'] = config['cond_ae_body']['encoder_depths'] +config['cond_ae_body']['decoder_dims'] = config['cond_ae_body']['encoder_dims'] +config['cond_ae_body']['activation'] = 'tanh' \ No newline at end of file diff --git a/configs/post/config_abl_pyr_32_64.py b/configs/post/config_abl_pyr_32_64.py new file mode 100644 index 0000000..d0220bc --- /dev/null +++ b/configs/post/config_abl_pyr_32_64.py @@ -0,0 +1,184 @@ +config = dict() + +config['gpu'] = '1' +config['name'] = 'abl_pyr_32_64' +config['notes'] = 'fixed noise handling' +config['tags'] = ['pyr_post'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = True + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [32, 64] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/postabl_pyr_32' +config['pyramid']['final_upscale_enhancer'] = '' + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = False + +config['dataset_in_memory'] = False +config['resolution'] = None + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + +config['pyramid']['static_model'] = 'checkpoints/post/static_post_2' +config['pyramid']['body_model'] = 'checkpoints/post/body_post_2' +config['pyramid']['curvature_model'] = 'checkpoints/post/curv_post_1' +config['pyramid']['freeze_encoders'] = True + + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 64] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [64, 64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_2'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 32: + level = dict() + level['resolution'] = 32 + level['kernel_size'] = 3 + level['encoder_depths'] = [16] + level['encoder_dims'] = [64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/32_512_4'#'checkpoints/up_3_d32_64_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + +config['cond_ae_static'] = dict() +config['cond_ae_static']['is_label'] = False +config['cond_ae_static']['kernel_size'] = 7 +config['cond_ae_static']['bottleneck_size'] = 8 +config['cond_ae_static']['encoder_depths'] = [3, 3, 3, 9, 3] +config['cond_ae_static']['encoder_dims'] = [16, 32, 64, 64, config['cond_ae_static']['bottleneck_size']] +config['cond_ae_static']['decoder_depths'] = config['cond_ae_static']['encoder_depths'] +config['cond_ae_static']['decoder_dims'] = config['cond_ae_static']['encoder_dims'] +config['cond_ae_static']['activation'] = 'tanh' + +config['cond_ae_curv'] = dict() +config['cond_ae_curv']['is_label'] = True +config['cond_ae_curv']['kernel_size'] = 7 +config['cond_ae_curv']['bottleneck_size'] = 40 +config['cond_ae_curv']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_curv']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_curv']['bottleneck_size']] +config['cond_ae_curv']['decoder_depths'] = config['cond_ae_curv']['encoder_depths'] +config['cond_ae_curv']['decoder_dims'] = config['cond_ae_curv']['encoder_dims'] +config['cond_ae_curv']['activation'] = 'tanh' + +config['cond_ae_body'] = dict() +config['cond_ae_body']['is_label'] = False +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['bottleneck_size'] = 16 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_body']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_depths'] = config['cond_ae_body']['encoder_depths'] +config['cond_ae_body']['decoder_dims'] = config['cond_ae_body']['encoder_dims'] +config['cond_ae_body']['activation'] = 'tanh' \ No newline at end of file diff --git a/configs/post/config_abl_pyr_64.py b/configs/post/config_abl_pyr_64.py new file mode 100644 index 0000000..1c1280b --- /dev/null +++ b/configs/post/config_abl_pyr_64.py @@ -0,0 +1,186 @@ +config = dict() + +config['gpu'] = '0' +config['name'] = 'abl_pyr_64' +config['notes'] = 'fixed noise handling' +config['tags'] = ['pyr_post'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = True + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [64] +config['pyramid']['pretrained_pyramid'] = '' +config['pyramid']['final_upscale_enhancer'] = '' + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = False + +config['dataset_in_memory'] = False +config['resolution'] = None + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + +config['pyramid']['static_model'] = 'checkpoints/post/static_post_2' +config['pyramid']['body_model'] = 'checkpoints/post/body_post_2' +config['pyramid']['curvature_model'] = 'checkpoints/post/curv_post_1' +config['pyramid']['freeze_encoders'] = True + + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 5 + level['encoder_depths'] = [16, 9, 9, 9] + level['encoder_dims'] = [64, 128, 128, 64] + level['decoder_input'] = (4, 2, 128) + level['decoder_depths'] = [16, 9, 9, 9] + level['decoder_dims'] = [256, 128, 128, 64] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [64, 64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_2'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + # elif res == 32: + # level = dict() + # level['resolution'] = 32 + # level['latent_dim'] = config['latent_dim'] + # level['kernel_size'] = 3 + # level['encoder_depths'] = [9, 9] + # level['encoder_dims'] = [256, 256] + # level['decoder_input'] = (4, 2, 256) + # level['decoder_depths'] = [9, 9] + # level['decoder_dims'] = [256, 256] + # level['avg_garment_path'] = '' + # level['upscale_enhancer'] = ''#'checkpoints/up_3_d32_64_2' + # level['upscale_enhancer_freeze'] = True + # config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + +config['cond_ae_static'] = dict() +config['cond_ae_static']['is_label'] = False +config['cond_ae_static']['kernel_size'] = 7 +config['cond_ae_static']['bottleneck_size'] = 8 +config['cond_ae_static']['encoder_depths'] = [3, 3, 3, 9, 3] +config['cond_ae_static']['encoder_dims'] = [16, 32, 64, 64, config['cond_ae_static']['bottleneck_size']] +config['cond_ae_static']['decoder_depths'] = config['cond_ae_static']['encoder_depths'] +config['cond_ae_static']['decoder_dims'] = config['cond_ae_static']['encoder_dims'] +config['cond_ae_static']['activation'] = 'tanh' + +config['cond_ae_curv'] = dict() +config['cond_ae_curv']['is_label'] = True +config['cond_ae_curv']['kernel_size'] = 7 +config['cond_ae_curv']['bottleneck_size'] = 40 +config['cond_ae_curv']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_curv']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_curv']['bottleneck_size']] +config['cond_ae_curv']['decoder_depths'] = config['cond_ae_curv']['encoder_depths'] +config['cond_ae_curv']['decoder_dims'] = config['cond_ae_curv']['encoder_dims'] +config['cond_ae_curv']['activation'] = 'tanh' + +config['cond_ae_body'] = dict() +config['cond_ae_body']['is_label'] = False +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['bottleneck_size'] = 16 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_body']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_depths'] = config['cond_ae_body']['encoder_depths'] +config['cond_ae_body']['decoder_dims'] = config['cond_ae_body']['encoder_dims'] +config['cond_ae_body']['activation'] = 'tanh' \ No newline at end of file diff --git a/configs/post/config_abl_pyr_64_128.py b/configs/post/config_abl_pyr_64_128.py new file mode 100644 index 0000000..0f8ca44 --- /dev/null +++ b/configs/post/config_abl_pyr_64_128.py @@ -0,0 +1,185 @@ +config = dict() + +config['gpu'] = '0' +config['name'] = 'abl_pyr_64_128' +config['notes'] = '' +config['tags'] = ['pyr_post'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = True + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [64, 128] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/postabl_pyr_64' +config['pyramid']['final_upscale_enhancer'] = '' + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = False + +config['dataset_in_memory'] = False +config['resolution'] = None + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + +config['pyramid']['static_model'] = 'checkpoints/post/static_post_2' +config['pyramid']['body_model'] = 'checkpoints/post/body_post_2' +config['pyramid']['curvature_model'] = 'checkpoints/post/curv_post_1' +config['pyramid']['freeze_encoders'] = True + + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [32, 64, 64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/128_512_3'#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + level['upscale_enhancer_kernel_size'] = 3 + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [64, 64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_2'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + # elif res == 32: + # level = dict() + # level['resolution'] = 32 + # level['latent_dim'] = config['latent_dim'] + # level['kernel_size'] = 3 + # level['encoder_depths'] = [9, 9] + # level['encoder_dims'] = [256, 256] + # level['decoder_input'] = (4, 2, 256) + # level['decoder_depths'] = [9, 9] + # level['decoder_dims'] = [256, 256] + # level['avg_garment_path'] = '' + # level['upscale_enhancer'] = ''#'checkpoints/up_3_d32_64_2' + # level['upscale_enhancer_freeze'] = True + # config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + +config['cond_ae_static'] = dict() +config['cond_ae_static']['is_label'] = False +config['cond_ae_static']['kernel_size'] = 7 +config['cond_ae_static']['bottleneck_size'] = 8 +config['cond_ae_static']['encoder_depths'] = [3, 3, 3, 9, 3] +config['cond_ae_static']['encoder_dims'] = [16, 32, 64, 64, config['cond_ae_static']['bottleneck_size']] +config['cond_ae_static']['decoder_depths'] = config['cond_ae_static']['encoder_depths'] +config['cond_ae_static']['decoder_dims'] = config['cond_ae_static']['encoder_dims'] +config['cond_ae_static']['activation'] = 'tanh' + +config['cond_ae_curv'] = dict() +config['cond_ae_curv']['is_label'] = True +config['cond_ae_curv']['kernel_size'] = 7 +config['cond_ae_curv']['bottleneck_size'] = 40 +config['cond_ae_curv']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_curv']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_curv']['bottleneck_size']] +config['cond_ae_curv']['decoder_depths'] = config['cond_ae_curv']['encoder_depths'] +config['cond_ae_curv']['decoder_dims'] = config['cond_ae_curv']['encoder_dims'] +config['cond_ae_curv']['activation'] = 'tanh' + +config['cond_ae_body'] = dict() +config['cond_ae_body']['is_label'] = False +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['bottleneck_size'] = 16 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_body']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_depths'] = config['cond_ae_body']['encoder_depths'] +config['cond_ae_body']['decoder_dims'] = config['cond_ae_body']['encoder_dims'] +config['cond_ae_body']['activation'] = 'tanh' \ No newline at end of file diff --git a/configs/post/config_abl_pyr_64_128_2.py b/configs/post/config_abl_pyr_64_128_2.py new file mode 100644 index 0000000..53ab63b --- /dev/null +++ b/configs/post/config_abl_pyr_64_128_2.py @@ -0,0 +1,185 @@ +config = dict() + +config['gpu'] = '3' +config['name'] = 'abl_pyr_64_128_2' +config['notes'] = 'use offsets as input for higher levels' +config['tags'] = ['pyr_post'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = True + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [64, 128] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/postabl_pyr_64' +config['pyramid']['final_upscale_enhancer'] = '' + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = False + +config['dataset_in_memory'] = False +config['resolution'] = None + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + +config['pyramid']['static_model'] = 'checkpoints/post/static_post_2' +config['pyramid']['body_model'] = 'checkpoints/post/body_post_2' +config['pyramid']['curvature_model'] = 'checkpoints/post/curv_post_1' +config['pyramid']['freeze_encoders'] = True + + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [32, 64, 64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/128_512_3'#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + level['upscale_enhancer_kernel_size'] = 3 + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [64, 64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_2'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + # elif res == 32: + # level = dict() + # level['resolution'] = 32 + # level['latent_dim'] = config['latent_dim'] + # level['kernel_size'] = 3 + # level['encoder_depths'] = [9, 9] + # level['encoder_dims'] = [256, 256] + # level['decoder_input'] = (4, 2, 256) + # level['decoder_depths'] = [9, 9] + # level['decoder_dims'] = [256, 256] + # level['avg_garment_path'] = '' + # level['upscale_enhancer'] = ''#'checkpoints/up_3_d32_64_2' + # level['upscale_enhancer_freeze'] = True + # config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + +config['cond_ae_static'] = dict() +config['cond_ae_static']['is_label'] = False +config['cond_ae_static']['kernel_size'] = 7 +config['cond_ae_static']['bottleneck_size'] = 8 +config['cond_ae_static']['encoder_depths'] = [3, 3, 3, 9, 3] +config['cond_ae_static']['encoder_dims'] = [16, 32, 64, 64, config['cond_ae_static']['bottleneck_size']] +config['cond_ae_static']['decoder_depths'] = config['cond_ae_static']['encoder_depths'] +config['cond_ae_static']['decoder_dims'] = config['cond_ae_static']['encoder_dims'] +config['cond_ae_static']['activation'] = 'tanh' + +config['cond_ae_curv'] = dict() +config['cond_ae_curv']['is_label'] = True +config['cond_ae_curv']['kernel_size'] = 7 +config['cond_ae_curv']['bottleneck_size'] = 40 +config['cond_ae_curv']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_curv']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_curv']['bottleneck_size']] +config['cond_ae_curv']['decoder_depths'] = config['cond_ae_curv']['encoder_depths'] +config['cond_ae_curv']['decoder_dims'] = config['cond_ae_curv']['encoder_dims'] +config['cond_ae_curv']['activation'] = 'tanh' + +config['cond_ae_body'] = dict() +config['cond_ae_body']['is_label'] = False +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['bottleneck_size'] = 16 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_body']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_depths'] = config['cond_ae_body']['encoder_depths'] +config['cond_ae_body']['decoder_dims'] = config['cond_ae_body']['encoder_dims'] +config['cond_ae_body']['activation'] = 'tanh' \ No newline at end of file diff --git a/configs/post/config_abl_pyr_64_128_3.py b/configs/post/config_abl_pyr_64_128_3.py new file mode 100644 index 0000000..87f6bc6 --- /dev/null +++ b/configs/post/config_abl_pyr_64_128_3.py @@ -0,0 +1,185 @@ +config = dict() + +config['gpu'] = '3' +config['name'] = 'abl_pyr_64_128_3' +config['notes'] = 'use offsets as input for higher levels' +config['tags'] = ['pyr_post'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = True + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [64, 128] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/postabl_pyr_64' +config['pyramid']['final_upscale_enhancer'] = '' + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = False + +config['dataset_in_memory'] = False +config['resolution'] = None + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + +config['pyramid']['static_model'] = 'checkpoints/post/static_post_2' +config['pyramid']['body_model'] = 'checkpoints/post/body_post_2' +config['pyramid']['curvature_model'] = 'checkpoints/post/curv_post_1' +config['pyramid']['freeze_encoders'] = True + + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [64, 128, 64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/128_512_3'#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + level['upscale_enhancer_kernel_size'] = 3 + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [64, 64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_2'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + # elif res == 32: + # level = dict() + # level['resolution'] = 32 + # level['latent_dim'] = config['latent_dim'] + # level['kernel_size'] = 3 + # level['encoder_depths'] = [9, 9] + # level['encoder_dims'] = [256, 256] + # level['decoder_input'] = (4, 2, 256) + # level['decoder_depths'] = [9, 9] + # level['decoder_dims'] = [256, 256] + # level['avg_garment_path'] = '' + # level['upscale_enhancer'] = ''#'checkpoints/up_3_d32_64_2' + # level['upscale_enhancer_freeze'] = True + # config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + +config['cond_ae_static'] = dict() +config['cond_ae_static']['is_label'] = False +config['cond_ae_static']['kernel_size'] = 7 +config['cond_ae_static']['bottleneck_size'] = 8 +config['cond_ae_static']['encoder_depths'] = [3, 3, 3, 9, 3] +config['cond_ae_static']['encoder_dims'] = [16, 32, 64, 64, config['cond_ae_static']['bottleneck_size']] +config['cond_ae_static']['decoder_depths'] = config['cond_ae_static']['encoder_depths'] +config['cond_ae_static']['decoder_dims'] = config['cond_ae_static']['encoder_dims'] +config['cond_ae_static']['activation'] = 'tanh' + +config['cond_ae_curv'] = dict() +config['cond_ae_curv']['is_label'] = True +config['cond_ae_curv']['kernel_size'] = 7 +config['cond_ae_curv']['bottleneck_size'] = 40 +config['cond_ae_curv']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_curv']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_curv']['bottleneck_size']] +config['cond_ae_curv']['decoder_depths'] = config['cond_ae_curv']['encoder_depths'] +config['cond_ae_curv']['decoder_dims'] = config['cond_ae_curv']['encoder_dims'] +config['cond_ae_curv']['activation'] = 'tanh' + +config['cond_ae_body'] = dict() +config['cond_ae_body']['is_label'] = False +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['bottleneck_size'] = 16 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_body']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_depths'] = config['cond_ae_body']['encoder_depths'] +config['cond_ae_body']['decoder_dims'] = config['cond_ae_body']['encoder_dims'] +config['cond_ae_body']['activation'] = 'tanh' \ No newline at end of file diff --git a/configs/post/config_abl_pyr_64_128_4.py b/configs/post/config_abl_pyr_64_128_4.py new file mode 100644 index 0000000..cdb5823 --- /dev/null +++ b/configs/post/config_abl_pyr_64_128_4.py @@ -0,0 +1,185 @@ +config = dict() + +config['gpu'] = '0' +config['name'] = 'abl_pyr_64_128_4' +config['notes'] = 'use offsets as input for higher levels' +config['tags'] = ['pyr_post'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = True + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [64, 128] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/postabl_pyr_64' +config['pyramid']['final_upscale_enhancer'] = '' + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = False + +config['dataset_in_memory'] = False +config['resolution'] = None + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + +config['pyramid']['static_model'] = 'checkpoints/post/static_post_2' +config['pyramid']['body_model'] = 'checkpoints/post/body_post_2' +config['pyramid']['curvature_model'] = 'checkpoints/post/curv_post_1' +config['pyramid']['freeze_encoders'] = True + + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [256, 256, 64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/128_512_3'#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + level['upscale_enhancer_kernel_size'] = 3 + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [64, 64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_2'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + # elif res == 32: + # level = dict() + # level['resolution'] = 32 + # level['latent_dim'] = config['latent_dim'] + # level['kernel_size'] = 3 + # level['encoder_depths'] = [9, 9] + # level['encoder_dims'] = [256, 256] + # level['decoder_input'] = (4, 2, 256) + # level['decoder_depths'] = [9, 9] + # level['decoder_dims'] = [256, 256] + # level['avg_garment_path'] = '' + # level['upscale_enhancer'] = ''#'checkpoints/up_3_d32_64_2' + # level['upscale_enhancer_freeze'] = True + # config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + +config['cond_ae_static'] = dict() +config['cond_ae_static']['is_label'] = False +config['cond_ae_static']['kernel_size'] = 7 +config['cond_ae_static']['bottleneck_size'] = 8 +config['cond_ae_static']['encoder_depths'] = [3, 3, 3, 9, 3] +config['cond_ae_static']['encoder_dims'] = [16, 32, 64, 64, config['cond_ae_static']['bottleneck_size']] +config['cond_ae_static']['decoder_depths'] = config['cond_ae_static']['encoder_depths'] +config['cond_ae_static']['decoder_dims'] = config['cond_ae_static']['encoder_dims'] +config['cond_ae_static']['activation'] = 'tanh' + +config['cond_ae_curv'] = dict() +config['cond_ae_curv']['is_label'] = True +config['cond_ae_curv']['kernel_size'] = 7 +config['cond_ae_curv']['bottleneck_size'] = 40 +config['cond_ae_curv']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_curv']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_curv']['bottleneck_size']] +config['cond_ae_curv']['decoder_depths'] = config['cond_ae_curv']['encoder_depths'] +config['cond_ae_curv']['decoder_dims'] = config['cond_ae_curv']['encoder_dims'] +config['cond_ae_curv']['activation'] = 'tanh' + +config['cond_ae_body'] = dict() +config['cond_ae_body']['is_label'] = False +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['bottleneck_size'] = 16 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_body']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_depths'] = config['cond_ae_body']['encoder_depths'] +config['cond_ae_body']['decoder_dims'] = config['cond_ae_body']['encoder_dims'] +config['cond_ae_body']['activation'] = 'tanh' \ No newline at end of file diff --git a/configs/post/config_abl_pyr_64_128_5.py b/configs/post/config_abl_pyr_64_128_5.py new file mode 100644 index 0000000..b6f81fb --- /dev/null +++ b/configs/post/config_abl_pyr_64_128_5.py @@ -0,0 +1,185 @@ +config = dict() + +config['gpu'] = '0' +config['name'] = 'abl_pyr_64_128_5' +config['notes'] = 'use offsets as input for higher levels. use min-max normalization on offsets' +config['tags'] = ['pyr_post'] + +# DON'T FORGET TO RESET SSIM LOSS USAGE +# DON'T FORGET TO CHECK MODEL LOADING +# DON'T FORGET TO CHECK IF STORE IN MEMORY +# DON'T FORGET TO CHECK REG LOSS COEFF +# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 +# DON'T FORGET TO CHECK IF SKIRT +# DON'T FORGET TO CHECK IF CAPE +# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2 +# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS + +config['use_skinning'] = True # and deshaping +config['remove_global_orientation'] = True +config['use_extra_losses'] = True # edge, collision, 3d mesh +config['use_offsets'] = False +config['use_norm_loss'] = True + +config['pretrained_model'] = '' +config['pretrained_model_iteration'] = '' + +config['pyramid'] = dict() +config['pyramid']['resolutions'] = [64, 128] +config['pyramid']['pretrained_pyramid'] = 'checkpoints/postabl_pyr_64' +config['pyramid']['final_upscale_enhancer'] = '' + +config['train_dir'] = '/home/workspace/local-data/train' +config['valid_dir'] = '/home/workspace/local-data/valid' +config['test_dir'] = '/home/workspace/data/dataset/test_ready' +config['batch_size'] = 4 +config['is_skirt'] = False +config['is_cape'] = False + +config['dataset_in_memory'] = False +config['resolution'] = None + +config['smpl_res'] = 14475 +if config['is_cape']: + config['smpl_res'] = 3638 + +config['lr'] = 0.0001 +config['starting_balancing_coeff'] = 0.001 +config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision +config['avg_garment_path'] = '' + +config['signature_dynamic'] = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (config['smpl_res'], 3,), + 'mesh_posed': (config['smpl_res'], 3,), + 'mesh_unposed': (config['smpl_res'], 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + } +config['signature_static'] = { 'uv_static': (512, 256, 3), + 'mesh_mask': (config['smpl_res'],), + 'uv_mask': (512, 256,), + } + +config['pyramid']['is_label'] = False +config['pyramid']['add_noise'] = True +config['pyramid']['noise_amount'] = 0.001 + +config['pyramid']['loss_weights'] = [1,1,1,1,1] + +for res in config['pyramid']['resolutions']: + if res != 512: + res_modifier = '_' + str(res) + config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3) + config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7) + config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3) + config['signature_static']['uv_mask' + res_modifier] = (res, res//2) + +config['pyramid']['static_model'] = 'checkpoints/post/static_post_2' +config['pyramid']['body_model'] = 'checkpoints/post/body_post_2' +config['pyramid']['curvature_model'] = 'checkpoints/post/curv_post_1' +config['pyramid']['freeze_encoders'] = True + + +config['pyramid']['levels'] = [] +for res in config['pyramid']['resolutions']: + if res == 512: + level = dict() + level['resolution'] = 512 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [3, 3, 9, 3] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (16, 8, 80) + level['decoder_depths'] = [3, 3, 9, 3] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = '' + config['pyramid']['levels'].append(level) + elif res == 256: + level = dict() + level['resolution'] = 256 + level['latent_dim'] = config['latent_dim'] + level['kernel_size'] = 7 + level['encoder_depths'] = [9, 9, 9, 9] + level['encoder_dims'] = [32, 64, 128, 64] + level['decoder_input'] = (8, 4, 128) + level['decoder_depths'] = [9, 9, 9, 9] + level['decoder_dims'] = [256, 128, 64, 16] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + elif res == 128: + level = dict() + level['resolution'] = 128 + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9, 9] + level['encoder_dims'] = [256, 256, 64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/128_512_3'#'checkpoints/up_3_d128_256_2' + level['upscale_enhancer_freeze'] = True + level['upscale_enhancer_kernel_size'] = 3 + config['pyramid']['levels'].append(level) + elif res == 64: + level = dict() + level['resolution'] = 64 + level['kernel_size'] = 5 + level['encoder_depths'] = [9, 9] + level['encoder_dims'] = [64, 64] + level['decoder_depths'] = level['encoder_depths'] + level['decoder_dims'] = level['encoder_dims'] + level['avg_garment_path'] = '' + level['upscale_enhancer'] = 'checkpoints/64_512_2'#checkpoints/up_3_d64_128_2' + level['upscale_enhancer_freeze'] = True + config['pyramid']['levels'].append(level) + # elif res == 32: + # level = dict() + # level['resolution'] = 32 + # level['latent_dim'] = config['latent_dim'] + # level['kernel_size'] = 3 + # level['encoder_depths'] = [9, 9] + # level['encoder_dims'] = [256, 256] + # level['decoder_input'] = (4, 2, 256) + # level['decoder_depths'] = [9, 9] + # level['decoder_dims'] = [256, 256] + # level['avg_garment_path'] = '' + # level['upscale_enhancer'] = ''#'checkpoints/up_3_d32_64_2' + # level['upscale_enhancer_freeze'] = True + # config['pyramid']['levels'].append(level) + else: + raise NotImplementedError + +config['cond_ae_static'] = dict() +config['cond_ae_static']['is_label'] = False +config['cond_ae_static']['kernel_size'] = 7 +config['cond_ae_static']['bottleneck_size'] = 8 +config['cond_ae_static']['encoder_depths'] = [3, 3, 3, 9, 3] +config['cond_ae_static']['encoder_dims'] = [16, 32, 64, 64, config['cond_ae_static']['bottleneck_size']] +config['cond_ae_static']['decoder_depths'] = config['cond_ae_static']['encoder_depths'] +config['cond_ae_static']['decoder_dims'] = config['cond_ae_static']['encoder_dims'] +config['cond_ae_static']['activation'] = 'tanh' + +config['cond_ae_curv'] = dict() +config['cond_ae_curv']['is_label'] = True +config['cond_ae_curv']['kernel_size'] = 7 +config['cond_ae_curv']['bottleneck_size'] = 40 +config['cond_ae_curv']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_curv']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_curv']['bottleneck_size']] +config['cond_ae_curv']['decoder_depths'] = config['cond_ae_curv']['encoder_depths'] +config['cond_ae_curv']['decoder_dims'] = config['cond_ae_curv']['encoder_dims'] +config['cond_ae_curv']['activation'] = 'tanh' + +config['cond_ae_body'] = dict() +config['cond_ae_body']['is_label'] = False +config['cond_ae_body']['kernel_size'] = 7 +config['cond_ae_body']['bottleneck_size'] = 16 +config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3] +config['cond_ae_body']['encoder_dims'] = [16, 32, 64, 128, config['cond_ae_body']['bottleneck_size']] +config['cond_ae_body']['decoder_depths'] = config['cond_ae_body']['encoder_depths'] +config['cond_ae_body']['decoder_dims'] = config['cond_ae_body']['encoder_dims'] +config['cond_ae_body']['activation'] = 'tanh' \ No newline at end of file diff --git a/convert_to_uv_api.py b/convert_to_uv_api.py new file mode 100644 index 0000000..31751a8 --- /dev/null +++ b/convert_to_uv_api.py @@ -0,0 +1,349 @@ +import os +import sys +import glob +import tqdm +import math +import time +import random +import shutil +import collections +import argparse +import threading +import numpy as np +import scipy as sp +import trimesh as tm +import cmapy as cm +import scipy.io as sio +import scipy.interpolate as spi +import scipy.stats as stat +import cv2 +import plotly.express as ex +import plotly.graph_objects as go +from custom_utils.custom_utils import m2uv_array + + +def dilate(img): + uv_mask_2 = img != 0 + m = img.min() + # norm = img.max() - img.min() + img = (img - m) * uv_mask_2 #* (np.invert(uv_mask_2) * -1 + uv_mask_2) + size = 1 + shape = cv2.MORPH_CROSS # cv.MORPH_CROSS cv.MORPH_ELLIPSE MORPH_RECT + element = cv2.getStructuringElement(shape, (2 * size + 1, 2 * size + 1), (size, size)) + result = cv2.dilate(img, element, iterations=1) + result = (result + m) * uv_mask + return result + +def erode(img): + # m = img.min() + # norm = img.max() - img.min() + # img = (img - m) + size = 1 + shape = cv2.MORPH_CROSS # cv.MORPH_CROSS cv.MORPH_ELLIPSE MORPH_RECT + element = cv2.getStructuringElement(shape, (2 * size + 1, 2 * size + 1), (size, size)) + result = cv2.erode(img, element, iterations=2) + # result = result + m + return result + +def chunks(lst, n): + """Yield successive n-sized chunks from lst.""" + for i in range(0, len(lst), n): + yield lst[i:i + n] + + +def convert_to_uv(res, m2uv, uv_map, verts, neighbours=10, + mask=None, + method='rbf', + garment_uv_mask=None, + uv_map_mask=None, + uv_counter=None, + uv_map_discreet_unique=None, + rbf_dest=None, + uv_mask=None): + + verts_uv = np.zeros((res * 2, res, 3)) + uv_values = np.zeros((uv_map.shape[0], 3)) + uv_values[m2uv[:, 0]] = verts + uv_values[m2uv[:, 1]] += verts + uv_values = uv_values[uv_map_mask, :] # add garment mask + uv_values /= uv_counter[:, np.newaxis] + return_garment_uv_mask = False + + if mask is not None: + garment_mask = np.zeros((uv_map.shape[0]), dtype=bool) + garment_mask[m2uv[:, 0]] = mask + garment_mask[m2uv[:, 1]] += mask + garment_mask = garment_mask[uv_map_mask] # add garment mask + else: + garment_mask = np.sum(uv_values, axis=-1) != 0 + + # test + verts_uv[uv_map_discreet_unique[:, 0], uv_map_discreet_unique[:, 1], :] = uv_values + # verts_uv_save = verts_uv.copy() + + # garment_mask = np.sum(uv_values, axis=-1) != 0 + unique_uv_values = uv_values[garment_mask, :] + uv_map_discreet_unique_unique = uv_map_discreet_unique[garment_mask, :] + rbf_dest_current = rbf_dest + + if garment_uv_mask is None and mask is not None: + garment_uv_mask = np.zeros((res * 2, res)) + garment_uv_mask[uv_map_discreet_unique_unique[:, 0], uv_map_discreet_unique_unique[:, 1]] = 255 + garment_uv_mask = cv2.morphologyEx(garment_uv_mask, cv2.MORPH_CLOSE, cv2.getStructuringElement(cv2.MORPH_RECT, (4 * 2 + 1, 4 * 2 + 1), (4, 4)), iterations=4) + garment_uv_mask_border = garment_uv_mask.astype(bool) + garment_uv_mask = cv2.dilate(garment_uv_mask, cv2.getStructuringElement(cv2.MORPH_RECT, (2 * 2 + 1, 2 * 2 + 1), (2, 2)), iterations=2).astype(bool) + garment_uv_mask_border = ~garment_uv_mask_border & garment_uv_mask + garment_uv_mask = garment_uv_mask * uv_mask[:,:,0] + rbf_dest_current = rbf_dest * garment_uv_mask + return_garment_uv_mask = True + + + rbf_dest_current = np.nonzero(rbf_dest_current) + rbf_dest_current = np.array(rbf_dest_current).T + + # uv_verts_uniq = np.array(np.nonzero(np.sum(verts_uv, axis=-1))).T + if method == 'rbf': + interpolator = spi.RBFInterpolator(y=uv_map_discreet_unique_unique, d=unique_uv_values, neighbors=neighbours, kernel='linear') + elif method == 'nearest': + interpolator = spi.NearestNDInterpolator(x=uv_map_discreet_unique_unique, y=unique_uv_values) + else: + raise NotImplementedError + + final = interpolator(rbf_dest_current) + + result = np.zeros((res * 2, res, 3), np.float32) + + result[rbf_dest_current[:, 0], rbf_dest_current[:, 1], :] = final + result[uv_map_discreet_unique[:, 0], uv_map_discreet_unique[:, 1], :] = uv_values + if garment_uv_mask is not None: + result = result * garment_uv_mask[:,:,np.newaxis] + + + if return_garment_uv_mask: + return result, garment_uv_mask, garment_uv_mask_border + else: + return result + + + +def convert_to_uv_batch(res, m2uv, uv_map, verts, + neighbours=15, + mask=None, + method='rbf', + garment_uv_mask=None, + garment_uv_mask_border=None, + id=None, + uv_map_mask=None, + uv_counter=None, + uv_map_discreet_unique=None, + rbf_dest=None, + uv_mask=None): + batch = len(verts) + assert method == 'rbf' + + + assert mask is not None + garment_mask = np.zeros((uv_map.shape[0]), dtype=bool) + garment_mask[m2uv[:, 0]] = mask + garment_mask[m2uv[:, 1]] += mask + garment_mask = garment_mask[uv_map_mask] # add garment mask + + rbf_dest_current = rbf_dest + + # add back mesh vertices that are not part of the garment + uv_map_discreet_unique_unique_inv = uv_map_discreet_unique[np.invert(garment_mask), :] + rbf_dest_fill = np.zeros((res * 2, res), dtype=bool) + rbf_dest_fill[uv_map_discreet_unique_unique_inv[:, 0], uv_map_discreet_unique_unique_inv[:, 1]] = True + + assert not (garment_uv_mask is None and mask is not None) + assert garment_uv_mask is not None + rbf_dest_current = (rbf_dest + rbf_dest_fill) * garment_uv_mask + garment_uv_mask_border + + rbf_dest_current = np.nonzero(rbf_dest_current) + rbf_dest_current = np.array(rbf_dest_current).T + + + for i in range(batch): + print('processing frame: ' + str(i)) + + uv_values = np.zeros((uv_map.shape[0], 3)) + uv_values[m2uv[:, 0]] = verts[i] + uv_values[m2uv[:, 1]] += verts[i] + uv_values = uv_values[uv_map_mask, :] + uv_values /= uv_counter[:, np.newaxis] + + + unique_uv_values = uv_values[garment_mask, :] + uv_map_discreet_unique_unique = uv_map_discreet_unique[garment_mask, :] + + + interpolator = spi.RBFInterpolator(y=uv_map_discreet_unique_unique, d=unique_uv_values[:,:], neighbors=neighbours, kernel='linear') + result = np.zeros((res * 2, res, 3), np.float32) + result[rbf_dest_current[:, 0], rbf_dest_current[:, 1], :] = interpolator(rbf_dest_current) + result[uv_map_discreet_unique_unique[:, 0], uv_map_discreet_unique_unique[:, 1], :] = unique_uv_values[:,:] + + if garment_uv_mask is not None: + result *= garment_uv_mask[:,:,np.newaxis] + + return result + + assert False + + +def convert_to_uv_batch_label(res, m2uv, uv_map, values, neighbours=15, mask=None, method='rbf', garment_uv_mask=None, garment_uv_mask_border=None): + batch = values.shape[0] + values = (values + 1) * mask + values_uv = np.zeros((batch, res * 2, res)) + missing = np.zeros((res * 2, res)) + uv_values = np.zeros((batch, uv_map.shape[0])) + uv_values[:, m2uv[:, 0]] = values + uv_values[:, m2uv[:, 1]] = values + uv_values = uv_values[:, uv_map_mask] + return_garment_uv_mask = False + # test + # verts_uv_save = verts_uv.copy() + + # unique_uv_values_mask = np.sum(uv_values[0, :, :], axis=-1) != 0 + # unique_uv_values = uv_values[:, unique_uv_values_mask, :] + # uv_map_discreet_unique_unique = uv_map_discreet_unique[unique_uv_values_mask, :] + + if mask is not None: + garment_mask = np.zeros((uv_map.shape[0]), dtype=bool) + garment_mask[m2uv[:, 0]] = mask + garment_mask[m2uv[:, 1]] += mask + garment_mask = garment_mask[uv_map_mask] # add garment mask + else: + raise Exception + + # uv_values = uv_values * garment_mask + + # test + values_uv[:, uv_map_discreet_unique[:, 0], uv_map_discreet_unique[:, 1]] = uv_values + missing[uv_map_discreet_unique[:, 0], uv_map_discreet_unique[:, 1]] = (uv_values[0,:] == 0) + + unique_uv_values = uv_values[:, garment_mask] + uv_map_discreet_unique_unique = uv_map_discreet_unique[garment_mask, :] + # rbf_dest_current = rbf_dest.astype(bool) + garment_uv_mask_border * uv_mask[:,:,0] + + if garment_uv_mask is None and mask is not None: + garment_uv_mask = np.zeros((res * 2, res)) + garment_uv_mask[uv_map_discreet_unique_unique[:, 0], uv_map_discreet_unique_unique[:, 1]] = 255 + garment_uv_mask = cv2.morphologyEx(garment_uv_mask, cv2.MORPH_CLOSE, cv2.getStructuringElement(cv2.MORPH_RECT, (2 * 2 + 1, 2 * 2 + 1), (2, 2)), iterations=4) + garment_uv_mask = cv2.dilate(garment_uv_mask, cv2.getStructuringElement(cv2.MORPH_RECT, (2 * 2 + 1, 2 * 2 + 1), (2, 2)), iterations=2).astype(bool) + return_garment_uv_mask = True + + rbf_dest_current = rbf_dest * garment_uv_mask + missing * garment_uv_mask + rbf_dest_current = np.nonzero(rbf_dest_current) + rbf_dest_current = np.array(rbf_dest_current).T + + # uv_verts_uniq = np.array(np.nonzero(np.sum(verts_uv, axis=-1))).T + final = [] + for i in range(batch): + print('processing frame: ' + str(i)) + interpolator = spi.NearestNDInterpolator(x=uv_map_discreet_unique_unique, y=unique_uv_values[i,:]) + final.append(interpolator(rbf_dest_current)) + final = np.asarray(final) + + result = np.zeros((batch, res * 2, res)) + result[:, uv_map_discreet_unique[:, 0], uv_map_discreet_unique[:, 1]] = uv_values + result[:, rbf_dest_current[:, 0], rbf_dest_current[:, 1]] = final + if garment_uv_mask is not None: + result = result * garment_uv_mask[np.newaxis,:,:] + + if return_garment_uv_mask: + return result, garment_uv_mask + else: + return result + + +# https://stackoverflow.com/questions/38187286/find-unique-pairs-in-list-of-pairs +def unique_pairs(a): + a.sort(axis=1) + b = np.ascontiguousarray(a).view( + np.dtype((np.void, a.dtype.itemsize * a.shape[1])) + ) + _, inv, ct = np.unique(b, return_inverse=True, return_counts=True) + return ct[inv] == 1 + + +def unique_uv_map_mask(uv_map_discreet, uv_res): + mask = np.zeros((uv_map_discreet.shape[0]), dtype=bool) + temp = np.zeros((uv_res * 2, uv_res)) + for p in uv_map_discreet: + temp[p[0], p[1]] += 1 + # temp = temp == 1 + for i, p in enumerate(uv_map_discreet): + if temp[p[0], p[1]] == 1: + mask[i] = True + elif temp[p[0], p[1]] == 2: + mask[i] = True + temp[p[0], p[1]] = 0 + return mask + + +def convert_to_uv_api(to_convert, mask, is_skirt=False, uv_res=256): + print("skirt" if is_skirt == 1 else "not skirt") + + F = np.load("custom_utils/smpl_faces" + ("_skirt" if is_skirt == 1 else "") + ".npy") + uv_map = np.load('custom_utils/stretched_uv_map_' + ("skirt" if is_skirt == 1 else "3") + '.npy') + m2uv = np.load('custom_utils/m2uv' + ("_skirt" if is_skirt == 1 else "") + '.npy', allow_pickle=True).item() + m2uv = m2uv_array(m2uv) + uv_mask = np.load('custom_utils/mask_256x512' + ("_skirt" if is_skirt == 1 else "") + '.npy') + + uv_mask = (cv2.resize(uv_mask * 255.0, (uv_res, uv_res * 2)) / 255).astype(bool)[:, :, np.newaxis] + uv_mask = cv2.dilate(uv_mask.astype(np.float32), cv2.getStructuringElement(cv2.MORPH_RECT, (2 * 2 + 1, 2 * 2 + 1), (2, 2)), iterations=2).astype(bool)[:, :, np.newaxis] + + uv_map_discreet = np.floor(uv_map * uv_res).astype(np.int32) + uv_map_mask = unique_uv_map_mask(uv_map_discreet, uv_res) + + uv_counter = np.zeros((uv_map.shape[0])) + uv_counter[m2uv[:, 0]] = 1 + uv_counter[m2uv[:, 1]] += 1 + uv_counter = uv_counter[uv_map_mask] + + uv_map_discreet_unique = uv_map_discreet[uv_map_mask, :] + + rbf_dest = np.ones((uv_res * 2, uv_res)) + rbf_dest[uv_map_discreet_unique[:, 0], uv_map_discreet_unique[:, 1]] = 0 + rbf_dest[np.invert(uv_mask[:,:,0])] = 0 + + _, garment_uv_mask, garment_uv_mask_border = convert_to_uv(uv_res, m2uv, uv_map, to_convert, + neighbours=3, + mask=mask, + method='rbf', + garment_uv_mask=None, + uv_map_mask=uv_map_mask, + uv_counter=uv_counter, + uv_map_discreet_unique=uv_map_discreet_unique, + rbf_dest=rbf_dest, + uv_mask=uv_mask) + + uv = convert_to_uv_batch(uv_res, m2uv, uv_map, to_convert[np.newaxis,:,:], + neighbours=3, + mask=mask, + method='rbf', + garment_uv_mask=garment_uv_mask, + garment_uv_mask_border=garment_uv_mask_border, + uv_map_mask=uv_map_mask, + uv_counter=uv_counter, + uv_map_discreet_unique=uv_map_discreet_unique, + rbf_dest=rbf_dest, + uv_mask=uv_mask) + + return uv + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument("-n", "--name", help = "end of range", default='lhunor') + args = parser.parse_args() + + + start = time.perf_counter() + + uv = convert_to_uv_api(np.random.random((14475, 3)) - 0.5, np.ones((14475), bool), is_skirt=False) + + print(time.perf_counter() - start) + + print() + diff --git a/convnext/models/convnext_tf.py b/convnext/models/convnext_tf.py index c5878be..d570c30 100644 --- a/convnext/models/convnext_tf.py +++ b/convnext/models/convnext_tf.py @@ -29,7 +29,7 @@ class DropPath(tf.keras.layers.Layer): super().__init__() self.drop_prob = drop_prob - def call(self, x, training=None): + def call(self, x, training): return drop_path(x, self.drop_prob, training) @@ -66,19 +66,19 @@ class Block(Layer): name=f'{self.prefix}/gamma') self.built = True - def call(self, x): + def call(self, x, training): input = x - x = self.dwconv(x) + x = self.dwconv(x, training=training) # x = x.permute(0, 2, 3, 1) # (N, C, H, W) -> (N, H, W, C) - x = self.norm(x) - x = self.pwconv1(x) + x = self.norm(x, training=training) + x = self.pwconv1(x, training=training) x = self.act(x) - x = self.pwconv2(x) + x = self.pwconv2(x, training=training) if self.gamma is not None: x = self.gamma * x # x = x.permute(0, 3, 1, 2) # (N, H, W, C) -> (N, C, H, W) - x = input + self.drop_path(x) + x = input + self.drop_path(x, training=training) return x @@ -138,16 +138,16 @@ class ConvNeXt(tf.keras.Model): self.norm = None self.head = None - def forward_features(self, x): + def forward_features(self, x, training): for i in range(len(self.downsample_layers)): # x = self.downsample_layers[i](x) - x = self.downsample_layers[i][0](x) - x = self.downsample_layers[i][1](x) - x = self.stages[i](x) + x = self.downsample_layers[i][0](x, training=training) + x = self.downsample_layers[i][1](x, training=training) + x = self.stages[i](x, training=training) return x - def call(self, x): - x = self.forward_features(x) + def call(self, x, training): + x = self.forward_features(x, training=training) return x @@ -257,11 +257,11 @@ class ConvNeXtReverse(tf.keras.Model): self.last = Dense(3, activation='tanh') - def call(self, x): + def call(self, x, training): for i in reversed(range(len(self.upsample_layers))): - x = self.upsample_layers[i](x) - x = self.stages[i](x) - x = self.last(x) + x = self.upsample_layers[i](x, training=training) + x = self.stages[i](x, training=training) + x = self.last(x, training=training) return x @@ -366,13 +366,14 @@ class ConvNeXtReverseLabels(tf.keras.Model): self.stages.append(stage) cur += depths[i] - self.last = Dense(nr_of_classes, activation='softmax') + # self.last = Dense(nr_of_classes, activation='softmax') + self.last = Dense(nr_of_classes - 1) - def call(self, x): + def call(self, x, training): for i in reversed(range(len(self.downsample_layers))): - x = self.downsample_layers[i](x) - x = self.stages[i](x) - x = self.last(x) + x = self.downsample_layers[i](x, training=training) + x = self.stages[i](x, training=training) + x = self.last(x, training=training) return x diff --git a/convunext.py b/convunext.py index adf7150..1735536 100644 --- a/convunext.py +++ b/convunext.py @@ -413,7 +413,7 @@ if __name__ == '__main__': factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), 'pose_shape': (72 + 11,), # 'uv_posed': (3, 512, 256,), 'uv_body_posed': (3, 512, 256,), diff --git a/custom_data/garment_type_table.npy b/custom_data/garment_type_table.npy new file mode 100644 index 0000000..9d6d76e Binary files /dev/null and b/custom_data/garment_type_table.npy differ diff --git a/custom_data/model_f.pkl b/custom_data/model_f.pkl new file mode 100644 index 0000000..f5337df Binary files /dev/null and b/custom_data/model_f.pkl differ diff --git a/custom_data/tailornet_smpl_matching.npy b/custom_data/tailornet_smpl_matching.npy new file mode 100644 index 0000000..9517306 Binary files /dev/null and b/custom_data/tailornet_smpl_matching.npy differ diff --git a/custom_data/test_ready_pose_cluster_20.csv b/custom_data/test_ready_pose_cluster_20.csv new file mode 100644 index 0000000..1c8d045 --- /dev/null +++ b/custom_data/test_ready_pose_cluster_20.csv @@ -0,0 +1,69756 @@ +frame,label +00382_84,9 +00609_49,11 +02172_52,14 +01769_199,0 +00009_203,12 +00721_154,4 +001112_11,14 +00079_37,9 +02149_38,17 +00848_116,17 +01605_172,11 +01767_259,14 +00453_268,9 +009162_263,5 +011912_21,14 +00528_174,0 +01904_8,2 +02191_80,7 +00453_293,9 +01278_211,2 +01351_18,2 +01626_103,7 +00722_21,17 +02138_56,2 +021722_149,14 +01706_21,2 +019412_172,14 +01091_92,0 +010942_20,2 +000792_158,0 +00474_109,2 +01210_262,9 +00442_254,4 +017482_88,0 +008402_18,2 +007182_133,14 +00413_47,0 +01144_161,12 +00821_89,5 +006092_28,11 +017692_95,2 +01839_166,1 +019242_69,14 +02187_259,16 +009642_144,8 +00964_16,14 +01330_126,9 +01948_95,13 +01228_4,14 +00408_81,11 +012192_5,14 +00228_117,5 +004532_168,9 +00025_80,17 +000232_49,3 +00840_5,2 +00660_110,0 +01769_13,2 +016982_13,14 +02172_18,14 +020572_22,2 +008402_137,7 +00475_246,9 +00382_115,19 +01049_65,7 +010652_72,18 +02127_209,17 +012402_232,12 +01688_192,5 +01087_1,14 +01490_17,7 +01971_224,2 +01977_222,8 +01971_125,2 +007832_65,17 +018772_96,4 +012402_269,2 +01814_51,5 +016882_193,5 +007832_214,2 +007292_76,14 +01488_22,1 +017072_166,0 +00951_145,14 +01968_37,7 +01001_296,5 +00776_5,14 +00528_171,0 +011612_225,17 +01165_83,5 +02005_256,11 +01909_104,4 +01278_60,12 +00276_28,11 +00333_71,0 +01688_19,5 +02054_106,14 +016922_77,1 +020572_2,2 +002802_193,2 +00761_95,14 +00848_123,17 +02005_69,11 +00962_7,0 +00456_89,14 +008482_150,14 +00957_34,13 +00528_203,0 +000092_160,12 +02028_72,1 +01409_164,0 +01972_85,3 +00474_247,2 +005062_41,2 +019242_191,14 +02162_39,12 +01925_162,3 +00588_213,12 +00979_69,1 +00287_129,15 +00550_24,18 +00793_268,14 +00840_98,2 +018132_94,11 +017672_165,14 +01622_64,14 +02054_157,12 +00730_43,18 +01707_15,2 +00453_158,9 +01941_217,14 +00528_43,2 +02094_82,12 +01228_60,12 +01723_164,15 +01431_77,11 +01953_133,4 +009162_83,2 +00079_273,15 +01693_223,0 +01087_240,5 +00892_65,2 +008402_165,7 +00840_54,2 +02057_61,12 +01929_0,14 +01278_224,2 +010872_191,5 +01184_53,5 +00275_36,12 +01092_142,17 +018342_264,8 +01177_108,14 +00962_42,0 +00528_155,0 +010652_62,18 +01977_225,8 +00442_285,4 +01925_17,14 +012612_100,2 +00793_87,14 +012282_203,14 +00102_152,16 +01092_266,12 +01049_7,7 +01488_179,0 +013712_17,4 +01623_33,5 +01048_54,5 +00840_132,7 +01775_146,2 +018122_17,2 +00979_99,1 +00442_208,4 +020572_60,12 +00566_95,8 +00350_186,9 +012282_189,14 +00538_110,1 +00677_59,4 +002752_69,14 +014372_162,11 +001022_122,16 +016882_80,5 +02049_210,13 +004082_40,1 +01092_150,9 +007212_158,14 +020572_105,2 +004172_117,17 +00538_124,17 +00993_120,7 +00916_63,2 +01049_12,7 +00840_278,2 +01331_78,14 +008922_5,0 +00102_146,16 +021622_105,6 +00453_151,9 +00681_3,14 +020052_45,11 +00588_87,13 +01834_284,8 +011912_134,2 +00333_58,2 +00597_29,5 +017692_148,9 +010012_245,5 +012192_118,5 +00474_127,2 +00979_108,1 +017692_16,2 +00350_280,9 +019252_18,14 +01941_104,14 +01692_33,2 +017022_66,14 +014232_155,0 +01087_179,5 +009622_64,3 +01909_45,2 +02030_290,16 +007092_77,19 +00761_286,3 +005282_79,2 +00442_143,0 +02187_161,16 +019712_163,2 +01692_83,1 +01812_105,2 +00567_53,5 +009642_136,8 +01228_150,14 +021722_44,14 +01500_48,12 +00503_110,1 +00021_7,5 +012192_89,5 +00453_112,9 +00453_98,9 +00450_26,14 +02187_23,16 +00021_34,4 +01007_282,6 +01408_100,14 +01971_0,2 +004532_246,9 +018652_67,18 +01707_160,0 +01605_264,11 +00761_34,14 +01144_207,2 +018132_104,11 +017692_163,11 +02187_193,16 +00761_235,3 +012562_23,4 +01101_83,6 +018342_0,14 +01210_53,17 +014122_17,0 +02146_158,14 +01941_1,14 +01924_122,14 +00475_67,1 +01941_133,14 +01272_227,4 +02187_37,16 +01272_202,12 +00615_16,11 +00450_177,14 +01103_73,17 +00228_159,9 +005092_75,2 +00883_55,11 +017072_60,0 +014232_245,0 +01877_93,4 +020052_259,11 +014372_158,11 +01877_253,4 +00528_157,0 +004172_91,6 +01972_105,13 +018342_227,8 +00660_21,14 +014372_199,11 +008402_281,2 +00280_82,4 +014232_0,2 +00552_20,7 +00306_22,7 +01448_46,6 +01877_289,4 +017072_188,0 +01804_103,2 +01145_64,2 +009352_23,7 +01058_14,2 +01087_2,14 +00312_20,0 +005092_33,2 +00021_105,12 +00124_42,4 +009642_271,14 +017672_210,14 +01007_135,0 +00962_10,0 +01877_74,4 +00342_53,17 +00776_51,4 +00528_71,2 +01622_7,14 +01597_41,0 +007182_24,19 +017072_284,7 +000792_20,9 +00158_218,5 +016932_122,0 +01775_4,2 +01101_108,13 +007092_264,1 +021912_102,7 +014072_53,12 +00916_39,2 +00474_66,2 +01971_290,17 +00546_182,14 +00722_112,17 +002752_158,14 +01145_29,2 +016922_86,1 +00578_109,14 +01134_8,16 +01769_102,2 +01597_3,14 +017752_18,2 +00981_92,11 +009162_140,2 +00979_114,1 +012192_44,5 +01748_43,0 +01636_39,0 +007832_15,2 +01706_268,2 +01165_101,5 +018652_126,11 +00079_274,15 +01901_101,0 +019242_101,14 +00615_71,1 +010872_254,5 +01977_174,8 +00821_108,5 +009642_156,8 +00761_39,14 +01091_154,5 +005502_58,18 +01882_10,14 +000092_141,7 +01330_236,8 +01408_115,14 +01643_104,14 +01839_156,1 +02138_244,14 +004082_116,13 +01210_58,17 +02005_19,11 +00079_199,9 +007092_93,5 +01605_122,5 +01953_163,4 +021462_53,18 +01094_92,5 +00350_79,5 +00867_193,14 +017752_108,12 +00009_227,2 +01091_260,2 +00979_16,1 +00242_80,4 +01351_41,7 +02138_293,14 +01688_57,5 +00703_1,14 +00761_52,14 +00979_81,1 +012282_35,14 +00475_179,1 +00456_148,14 +012722_11,2 +01134_161,10 +01977_77,3 +01636_69,0 +00588_228,2 +01948_7,14 +009162_110,2 +00709_66,19 +00009_0,4 +01407_31,0 +01605_0,14 +01541_22,5 +00848_14,14 +01091_245,2 +01427_52,2 +00408_193,11 +008402_126,7 +007832_168,2 +00228_75,17 +01044_40,4 +01904_115,12 +00993_52,6 +01909_93,2 +011612_179,17 +00729_44,14 +014372_136,11 +000252_77,17 +01834_260,8 +00102_18,2 +004082_33,1 +001022_34,0 +00382_55,17 +020052_95,11 +01001_16,2 +01541_20,5 +00588_73,13 +00011_84,12 +00546_128,3 +008832_71,11 +00916_237,2 +00102_16,2 +01509_253,11 +016052_27,14 +02191_3,14 +00280_80,4 +012282_91,14 +00588_76,13 +01331_41,17 +00615_7,11 +005392_222,1 +007212_97,14 +00840_208,7 +012192_78,5 +01312_36,7 +00158_13,14 +01210_232,9 +00567_39,2 +01045_203,4 +01145_207,4 +021462_118,18 +00490_192,2 +00981_6,14 +00350_70,2 +00535_52,2 +00964_70,3 +00964_252,14 +00761_120,14 +01092_289,14 +01626_94,7 +01929_28,0 +014972_21,2 +00128_78,4 +00287_238,15 +02054_144,2 +00563_98,2 +018652_4,14 +004172_8,14 +007292_263,14 +01901_61,5 +00024_19,2 +00615_95,11 +01191_142,14 +018792_85,4 +01278_100,12 +00840_156,7 +00505_13,2 +017072_287,7 +01165_13,14 +00867_176,14 +01925_117,3 +004532_9,11 +01087_90,5 +00840_182,7 +00681_56,5 +009642_135,8 +004672_36,11 +02094_118,12 +01723_244,15 +01981_58,5 +00485_29,2 +01501_49,4 +019242_33,14 +00721_94,14 +01278_158,12 +01688_90,5 +01925_245,8 +00566_281,8 +00776_65,14 +01929_210,14 +01643_59,4 +000792_276,15 +000792_105,0 +00450_15,14 +00721_76,14 +01767_265,14 +00722_51,4 +01834_269,8 +00567_171,2 +02054_217,12 +001242_124,19 +01240_39,2 +00981_7,2 +01448_81,6 +00232_94,13 +00566_1,14 +004672_48,11 +00509_119,2 +00660_261,2 +020572_107,2 +00408_181,11 +005062_70,6 +01948_4,12 +00505_79,5 +00456_76,4 +01201_25,11 +009622_69,3 +00793_52,12 +00793_295,14 +01007_283,6 +011612_279,17 +00509_40,2 +00550_27,18 +014232_109,0 +010652_95,18 +01977_203,8 +02030_94,16 +01330_299,18 +00175_76,4 +013302_73,6 +01488_63,13 +019252_56,12 +02191_1,14 +00867_186,14 +00783_32,2 +00438_32,2 +01814_27,5 +01877_273,4 +008402_154,7 +004172_298,11 +00232_158,14 +00158_174,5 +01775_50,12 +00607_13,14 +02177_52,12 +014372_186,11 +01158_114,4 +013302_221,6 +01853_81,11 +00382_83,9 +01431_147,11 +00840_189,2 +014272_22,4 +01423_196,0 +01261_23,2 +013712_12,14 +02187_293,16 +000232_102,0 +00333_77,13 +01622_0,14 +011912_51,2 +02138_234,15 +01001_139,5 +00697_13,17 +017672_29,14 +00588_183,4 +01865_20,11 +00453_15,1 +00453_0,0 +02049_182,13 +007092_212,19 +00993_230,6 +004672_3,11 +01361_79,12 +01045_256,4 +00490_102,2 +02186_73,5 +017482_47,7 +01431_130,11 +00772_67,7 +01092_270,12 +01493_27,11 +00761_291,3 +00485_45,4 +00333_53,2 +00566_55,8 +01272_27,2 +00535_174,0 +01144_48,9 +00588_198,2 +00280_184,2 +01448_16,14 +00181_88,0 +005392_138,1 +01330_213,1 +017672_225,12 +016092_23,17 +00588_178,4 +01278_160,12 +00783_89,17 +01448_106,14 +010912_83,16 +00535_71,12 +014372_184,11 +017482_78,0 +01044_25,4 +01767_274,14 +00519_134,7 +012192_69,5 +01723_59,15 +009642_285,14 +01597_4,14 +01723_258,15 +00442_61,2 +01953_153,4 +01366_16,14 +00503_221,9 +00546_34,14 +00993_232,6 +010012_166,5 +019712_33,2 +00102_89,16 +00232_144,4 +00783_119,17 +01272_29,2 +019622_49,0 +01408_31,14 +013712_3,14 +00314_88,12 +01882_35,11 +02042_131,0 +010912_207,9 +02187_140,16 +01882_36,11 +02138_38,12 +00506_141,2 +02030_168,16 +01925_269,8 +00546_98,3 +00993_157,7 +013302_166,15 +01877_125,4 +02094_14,2 +004082_197,11 +01448_20,14 +00509_83,2 +01261_90,2 +00009_75,0 +009162_85,2 +00280_173,12 +01046_1,14 +021622_122,1 +021622_30,12 +019592_44,6 +01972_64,3 +01834_219,8 +01904_151,2 +018652_30,11 +012402_169,12 +016982_85,17 +00287_234,15 +015972_112,14 +00232_169,14 +01924_85,14 +017232_73,15 +01158_25,0 +02027_70,14 +01091_212,9 +01091_25,12 +00462_34,14 +01834_63,8 +020052_263,11 +00413_1,14 +00314_115,0 +00722_142,17 +02049_75,3 +020052_277,11 +00128_280,12 +00628_124,2 +00776_16,15 +01427_106,9 +01829_12,2 +01853_121,14 +01351_155,2 +01763_264,4 +00539_67,1 +01763_232,4 +009512_146,14 +00697_63,5 +00677_27,14 +014232_77,0 +001022_232,16 +01763_19,12 +017072_253,7 +00588_44,15 +00660_127,0 +00417_76,17 +009642_277,14 +01693_9,4 +00588_220,2 +01643_96,14 +00128_75,4 +01706_41,2 +00840_178,7 +010872_12,14 +01412_2,4 +01707_171,0 +01953_142,4 +01158_87,4 +00314_243,4 +008482_53,17 +00703_14,5 +009352_56,7 +01437_57,11 +008482_155,14 +01834_169,8 +001022_105,16 +007832_257,5 +01240_11,2 +019242_180,14 +00546_107,3 +008402_49,2 +00567_4,2 +01278_173,2 +01493_274,1 +00160_167,11 +004532_180,9 +01431_106,11 +021912_99,7 +01813_85,11 +004532_287,9 +01684_23,14 +01924_41,14 +01493_39,11 +01118_81,14 +00793_226,14 +014882_93,13 +01707_8,2 +02191_91,7 +00535_123,9 +01493_147,1 +00722_129,17 +019042_12,2 +007222_24,17 +00275_48,14 +00128_229,0 +00462_159,13 +005092_156,2 +02005_102,11 +00703_38,11 +007182_10,2 +01228_185,14 +02030_237,16 +012282_238,14 +012402_114,4 +009352_67,7 +01693_227,0 +01707_46,12 +01240_62,12 +01408_222,14 +009352_43,7 +00628_7,14 +004172_94,6 +011082_77,14 +01636_33,0 +010912_152,5 +010942_15,14 +01925_38,14 +00228_273,7 +010912_259,2 +01161_148,17 +007092_7,19 +01684_30,4 +01977_176,8 +01366_133,5 +011912_155,14 +01688_198,5 +00275_132,14 +007832_240,5 +00333_48,2 +00519_114,11 +001022_290,16 +012722_98,2 +01929_45,0 +01582_46,7 +00535_235,6 +00539_248,1 +00509_166,12 +01087_232,5 +01494_17,7 +003062_66,7 +00417_283,1 +00588_235,2 +00875_97,2 +01330_130,6 +02012_16,14 +001022_273,16 +006972_102,14 +005092_119,2 +00538_138,14 +00475_257,9 +01330_49,9 +000252_65,17 +00567_254,5 +014882_80,0 +00964_171,8 +00783_231,5 +01769_143,9 +01767_221,12 +01698_95,17 +01948_185,13 +02127_161,17 +010872_158,5 +02005_234,11 +019622_41,0 +005392_93,1 +00821_132,14 +01361_213,3 +005392_53,1 +01929_187,0 +008372_118,11 +016432_52,14 +01929_160,0 +00350_82,5 +018772_242,4 +01134_206,10 +00840_32,2 +00287_96,15 +00485_43,4 +000092_97,0 +005502_68,18 +00509_196,2 +02012_48,17 +00539_25,6 +02191_48,7 +02127_197,17 +02054_0,2 +021722_73,14 +01622_91,0 +005282_43,2 +00709_234,19 +00993_51,6 +016842_23,14 +01278_245,14 +01119_107,14 +00394_17,4 +00588_66,13 +00394_100,17 +01431_55,11 +012192_135,14 +01909_28,2 +00535_31,2 +017072_183,0 +01312_79,7 +010012_184,5 +019042_66,2 +014882_98,13 +00408_138,1 +019242_222,14 +02127_54,17 +00506_90,4 +009162_242,2 +016052_294,11 +01256_48,4 +000232_58,3 +010912_189,16 +018392_24,14 +01605_85,5 +01118_80,14 +01219_17,14 +01165_90,5 +02172_55,14 +000092_133,2 +000792_124,9 +004082_190,11 +00160_289,13 +02187_226,16 +017072_86,4 +005092_120,2 +004172_268,11 +01119_15,5 +008372_37,11 +00962_18,0 +01723_106,15 +02049_32,6 +00390_59,5 +02042_112,14 +01007_199,0 +02088_5,0 +016982_129,14 +00456_154,2 +01706_183,2 +017692_139,9 +020052_32,11 +016982_92,17 +00261_46,5 +02162_117,18 +00160_203,11 +01144_166,12 +01177_33,14 +01493_115,1 +019712_237,12 +01103_41,4 +00296_45,7 +002752_2,14 +005092_94,12 +02088_11,0 +000252_78,17 +009642_248,4 +02127_152,17 +011612_59,17 +019252_60,6 +01184_115,7 +01962_19,0 +00128_271,0 +01134_135,10 +00280_181,4 +02042_18,14 +01119_96,11 +006972_43,2 +019712_43,2 +012562_78,12 +02138_29,2 +00228_230,5 +00519_88,11 +01145_245,4 +019242_209,14 +004082_45,1 +016432_12,14 +00588_116,13 +00102_141,16 +00282_28,7 +01693_299,0 +01804_56,12 +00158_224,5 +005282_178,0 +01423_23,2 +01448_102,14 +00563_104,2 +020572_63,12 +019712_266,2 +00485_266,4 +019252_58,6 +00747_26,9 +00615_25,11 +00609_80,14 +00566_109,8 +01134_160,10 +01272_94,2 +01769_136,9 +00722_127,17 +00730_98,14 +02162_90,12 +007212_108,14 +00563_53,6 +00567_79,2 +019252_233,8 +00840_105,7 +006972_89,12 +00528_116,2 +01228_233,14 +01191_111,7 +00607_143,14 +003122_43,0 +005092_96,12 +019242_107,14 +00390_78,5 +008252_1,12 +01423_159,0 +01087_203,5 +01929_40,0 +01087_89,5 +00453_225,9 +00041_168,7 +00453_219,9 +01351_107,7 +004172_87,6 +01408_125,14 +009512_105,0 +00979_37,1 +00128_130,2 +01769_284,2 +009352_82,7 +018652_28,11 +00935_53,7 +01493_208,1 +01191_161,2 +00079_86,9 +00009_168,0 +01001_89,5 +01877_72,4 +00282_83,11 +00825_48,4 +010652_103,11 +00628_93,7 +01065_48,18 +012402_132,12 +00426_13,4 +02049_62,3 +02172_14,14 +000242_116,2 +01775_32,2 +000792_149,9 +01087_204,5 +00848_139,14 +01877_209,4 +01763_162,2 +01501_22,4 +00287_207,4 +019252_168,8 +01351_144,7 +00296_87,7 +00413_103,0 +01409_161,0 +00563_28,4 +01119_116,14 +007292_286,14 +016052_2,14 +018132_68,11 +02030_1,14 +016882_221,5 +012612_114,2 +012402_272,4 +00438_102,2 +00776_32,14 +010912_249,2 +00462_23,14 +008252_76,12 +00025_65,17 +01423_254,2 +01706_34,2 +00588_56,13 +02028_49,9 +00539_100,1 +02146_32,11 +00729_30,14 +01366_82,17 +016932_47,5 +01578_88,14 +01087_186,5 +021462_136,5 +01692_13,14 +011612_290,2 +001602_62,11 +00840_93,2 +01972_180,13 +01924_73,14 +02138_206,13 +00158_95,11 +01706_207,2 +019712_187,2 +01814_186,11 +008402_99,2 +012722_180,4 +00747_1,7 +02127_184,17 +01626_123,7 +01448_14,14 +00539_236,1 +01981_52,5 +01877_170,4 +000242_19,2 +01048_58,5 +01829_10,2 +00566_148,8 +01839_177,12 +01191_85,7 +00615_2,11 +004082_223,11 +00408_217,11 +00730_123,14 +00567_283,2 +00282_23,7 +01804_62,4 +000792_31,9 +019252_201,8 +00176_0,1 +00546_64,15 +00453_125,9 +00292_40,11 +00023_156,6 +00485_245,1 +017752_112,4 +01605_151,5 +01839_24,14 +01723_130,15 +01925_157,3 +016982_14,14 +00841_14,14 +01087_98,5 +009352_12,14 +00333_49,2 +017672_18,14 +002802_13,14 +012282_166,14 +00453_169,1 +007212_131,14 +019042_62,2 +02177_6,4 +001602_286,13 +001602_16,2 +01812_8,2 +00024_86,7 +01358_8,1 +003062_17,14 +012192_84,5 +007092_94,5 +01688_291,2 +00964_5,14 +016932_247,0 +007292_27,14 +017232_141,15 +00837_161,11 +009342_24,7 +01865_121,1 +02005_250,11 +019412_134,14 +01408_263,14 +00761_162,6 +01144_131,12 +002752_160,14 +012722_238,2 +00088_43,5 +00417_237,6 +01693_138,0 +00848_18,14 +01201_111,14 +01968_2,14 +01101_95,1 +01767_207,14 +02146_51,18 +01605_275,11 +016052_9,14 +016882_41,5 +01877_197,4 +00438_173,2 +00535_98,12 +01045_115,4 +019252_211,8 +01333_22,2 +01488_109,0 +004082_232,11 +01769_190,2 +001602_102,11 +01007_145,19 +00563_95,4 +00681_76,14 +02172_63,12 +007762_72,14 +016922_82,1 +00456_18,14 +018792_5,2 +001602_6,2 +01431_270,11 +00333_2,2 +011772_42,14 +01962_68,0 +01879_28,12 +00964_162,8 +00462_155,13 +00426_30,0 +00721_106,14 +01048_78,14 +01924_179,14 +004082_94,11 +014272_116,17 +01763_61,12 +01087_185,5 +00128_233,4 +01161_68,17 +01366_0,14 +008402_206,7 +021462_120,18 +007222_89,17 +01698_91,17 +00535_109,6 +00660_28,12 +00475_146,9 +014232_172,0 +01775_74,12 +01929_125,0 +01331_40,17 +01144_157,2 +01929_135,0 +02054_17,2 +01901_154,12 +00102_120,16 +01804_70,2 +01882_8,14 +00232_179,14 +00703_19,11 +00509_216,12 +019622_58,0 +005392_173,1 +01879_36,4 +01134_86,10 +01707_190,0 +00438_277,2 +005092_159,2 +01626_51,7 +01956_36,18 +005282_97,2 +00408_293,11 +00660_17,14 +00413_115,0 +017752_55,4 +007092_298,12 +01707_122,0 +02021_34,1 +00597_46,5 +00158_265,5 +020572_68,2 +012282_262,14 +01118_61,7 +01605_104,5 +00287_186,15 +018132_153,14 +018652_5,14 +00009_114,7 +020052_120,11 +00009_128,2 +01941_121,14 +01929_181,0 +021462_33,11 +005062_59,6 +00935_89,7 +020572_149,3 +01182_40,0 +00296_93,14 +01065_53,18 +000792_208,9 +00660_210,0 +021722_205,14 +01972_186,13 +00883_54,11 +00840_116,2 +01423_74,0 +00718_15,19 +01134_90,10 +00292_28,11 +007292_195,14 +01981_19,5 +00538_30,1 +01568_239,2 +002802_194,2 +00160_47,11 +00535_15,2 +02005_88,11 +00394_50,4 +00009_270,12 +00485_150,13 +01046_39,7 +020052_182,11 +016922_31,2 +00729_64,14 +00158_261,5 +005092_85,2 +01643_55,4 +016932_194,0 +00721_186,14 +01814_155,5 +02049_156,13 +00538_111,1 +01278_183,2 +00442_108,2 +01087_236,5 +01412_56,0 +01948_137,13 +00065_37,9 +00160_95,1 +00546_52,14 +016092_40,17 +02094_75,12 +01119_4,14 +02042_66,15 +01877_250,4 +01431_189,11 +00848_83,17 +00993_234,6 +00718_33,19 +01361_27,4 +00124_201,0 +00041_152,7 +007212_233,14 +016432_109,14 +012612_106,2 +009642_53,8 +013302_133,6 +02062_90,4 +01767_7,14 +004082_68,1 +017752_36,4 +01145_181,4 +007292_87,14 +01622_20,0 +00875_91,2 +01412_80,0 +01723_199,15 +02049_95,3 +02030_177,16 +01044_104,4 +00394_89,9 +01278_77,12 +01184_81,5 +00442_68,2 +016982_17,14 +02005_66,11 +01706_29,2 +01007_0,2 +01094_15,14 +01261_89,2 +00079_149,9 +01358_36,1 +00438_123,2 +00158_135,5 +01092_101,17 +017232_14,4 +01763_72,4 +00840_202,7 +012402_151,4 +02028_9,4 +01877_149,4 +02005_290,11 +019252_183,8 +00601_28,7 +007292_280,14 +01959_22,6 +01578_24,14 +00287_107,15 +02054_78,2 +01605_150,5 +01490_5,14 +01092_191,2 +01972_271,14 +007092_113,12 +01578_187,14 +00453_139,9 +01437_179,11 +00242_35,12 +00535_146,1 +00566_231,8 +00280_198,12 +00588_37,4 +01568_225,2 +01493_102,1 +00438_292,2 +01509_202,0 +01272_83,2 +009162_166,2 +01622_101,0 +00776_26,14 +01763_46,2 +00509_156,2 +00296_12,14 +00124_213,0 +017692_101,2 +018392_50,11 +00314_133,12 +01177_47,4 +019412_70,14 +01219_96,5 +00102_24,2 +009162_206,2 +020572_80,2 +00350_175,9 +00509_194,2 +01904_172,12 +000232_140,6 +00597_36,5 +00951_104,0 +00964_196,8 +016432_24,12 +01092_149,17 +02027_39,18 +01488_69,0 +00079_239,9 +01509_203,0 +019622_87,0 +00453_284,9 +02030_9,14 +011772_92,4 +001602_112,1 +00615_203,11 +008372_19,11 +01161_158,17 +001602_38,11 +00566_84,8 +00867_56,5 +01692_12,14 +007832_226,5 +015972_56,0 +01497_19,0 +009162_220,2 +00729_267,14 +014882_19,1 +01457_9,2 +02191_117,14 +014882_57,13 +01412_49,0 +009642_66,3 +02012_11,14 +00242_194,2 +00160_297,13 +000792_231,9 +01272_35,2 +00722_89,17 +01351_86,17 +00306_52,7 +00867_117,5 +01693_96,0 +00023_185,2 +00453_10,11 +00382_120,19 +01091_64,1 +00160_141,11 +00783_220,2 +012402_149,4 +00793_48,14 +02127_69,17 +01161_279,17 +01929_168,0 +00550_20,18 +011612_256,17 +00615_154,11 +00566_30,12 +001602_287,13 +012282_44,2 +01953_261,4 +00821_116,5 +02028_74,1 +00993_99,7 +00892_79,2 +00453_47,9 +02054_74,4 +00552_93,2 +01361_78,12 +01977_10,14 +02042_68,15 +01688_232,5 +009512_157,14 +019242_170,14 +01702_5,14 +01312_70,7 +00721_160,14 +00588_72,13 +00761_72,14 +017692_68,9 +011082_55,4 +01437_288,11 +00382_95,19 +009622_54,3 +02187_153,16 +01578_54,14 +010012_133,5 +01707_176,4 +01693_181,0 +01971_150,12 +00296_90,7 +010942_106,14 +00041_166,7 +00772_74,7 +017672_93,14 +01605_188,11 +00021_64,3 +00528_31,2 +00160_14,2 +00506_92,4 +017672_247,14 +01968_19,14 +021722_252,14 +02146_155,14 +000092_231,12 +01981_97,5 +007762_36,4 +00442_95,2 +00550_134,14 +021622_67,17 +009352_49,7 +01968_71,7 +008832_40,11 +01165_32,5 +00438_10,2 +00275_35,12 +00867_154,0 +00382_100,13 +01412_46,0 +013302_225,6 +01925_113,3 +011612_74,17 +01065_15,11 +019042_57,4 +01044_253,12 +01723_180,15 +008372_84,11 +021722_52,14 +01490_65,7 +00065_76,1 +01636_88,0 +000242_13,2 +01119_29,11 +00382_40,17 +01929_18,0 +01968_80,7 +00840_224,2 +017692_295,5 +02186_74,5 +007092_213,19 +01767_112,14 +00729_16,14 +009352_39,7 +010912_145,5 +01497_41,2 +011772_96,4 +01330_258,4 +01177_44,4 +00609_22,11 +00242_72,4 +021912_86,7 +007212_48,14 +00175_41,1 +00505_129,12 +000792_41,4 +004082_263,13 +001022_247,16 +018392_80,11 +017232_44,15 +01622_38,0 +002752_164,14 +00333_27,2 +02127_276,17 +00088_53,5 +00848_109,17 +01408_53,14 +01366_68,17 +01001_34,12 +01494_35,7 +01087_84,5 +00128_159,2 +00442_190,4 +01101_16,14 +007092_253,19 +001242_28,4 +01972_164,3 +017752_173,12 +00674_71,14 +01408_200,14 +020052_175,11 +01261_45,2 +01361_3,0 +01509_276,11 +00563_63,9 +00292_31,11 +00181_127,0 +00566_242,8 +00158_244,5 +018122_109,2 +014372_138,11 +00703_37,11 +01767_202,14 +01256_63,4 +00314_222,12 +01007_168,13 +00350_112,9 +010912_266,14 +00102_235,16 +00837_146,11 +019712_265,2 +00462_78,13 +00821_105,5 +01501_5,14 +017672_261,14 +012402_67,12 +00916_290,5 +01707_25,2 +00718_95,19 +001022_21,2 +01210_19,7 +00275_137,14 +017672_25,14 +00546_134,3 +01493_215,1 +018652_19,11 +014232_37,2 +01948_11,14 +017072_57,0 +006972_32,4 +00124_8,4 +02028_44,9 +004082_169,11 +01626_31,7 +016092_11,17 +02054_260,12 +009622_72,3 +007292_98,14 +00566_296,8 +00024_99,2 +01412_78,0 +019412_245,14 +01684_44,4 +00677_31,14 +01409_107,0 +02146_103,18 +01144_179,2 +01962_57,0 +00720_31,0 +000792_166,9 +01582_13,7 +00981_90,11 +005882_194,2 +020052_122,11 +01144_135,2 +02005_114,11 +016982_29,17 +00023_176,14 +00333_114,12 +01184_125,14 +00287_157,4 +02149_29,17 +00159_2,0 +01953_182,12 +00282_57,17 +01578_196,14 +00438_182,2 +00993_180,7 +01977_5,14 +000092_24,12 +004532_90,9 +00350_100,5 +01182_44,11 +008832_17,11 +007092_89,6 +004172_37,17 +01144_93,2 +00506_118,2 +00475_172,9 +01119_114,14 +00509_203,12 +000232_48,3 +01626_70,7 +00721_132,12 +00722_76,17 +01953_246,4 +00475_214,1 +011912_138,2 +00023_107,5 +00158_296,5 +01431_264,11 +017752_177,12 +019712_118,2 +011912_22,2 +018772_57,4 +00546_147,3 +00453_254,9 +01494_56,7 +01839_2,14 +01501_53,4 +02049_16,4 +005882_170,4 +014282_82,14 +02146_176,14 +01626_34,7 +01981_16,5 +01161_250,17 +007092_235,19 +01769_31,2 +00475_56,9 +01184_25,5 +00438_259,2 +009162_130,2 +00688_45,4 +00417_35,17 +001022_153,16 +01201_7,14 +00563_36,4 +021622_72,17 +00025_52,17 +00474_33,2 +01812_99,2 +003062_90,7 +01509_73,0 +01804_2,12 +020052_199,11 +00951_4,14 +013302_97,9 +010912_181,1 +017692_204,0 +009342_33,1 +013712_44,14 +00709_9,19 +00333_106,4 +01001_295,5 +01448_87,6 +01045_275,4 +00292_50,11 +01853_98,0 +00566_57,8 +00450_146,4 +000242_22,2 +02062_152,4 +01058_6,2 +01834_221,8 +007212_132,12 +00011_104,12 +01144_98,12 +005282_218,0 +01210_111,6 +02030_179,16 +02005_133,11 +009642_77,3 +01101_71,17 +01769_189,2 +007212_229,14 +00677_44,14 +019622_43,0 +008402_82,2 +00124_14,4 +00535_252,6 +00408_36,1 +01161_156,17 +02049_37,8 +005882_151,13 +000242_61,7 +018772_53,4 +00475_47,9 +01959_64,6 +01904_57,4 +00261_45,5 +01457_44,7 +00566_83,8 +017072_224,0 +00417_12,14 +018132_100,11 +00550_77,18 +017072_72,4 +00023_139,6 +01427_122,2 +00951_153,14 +00467_6,11 +01865_70,18 +020572_48,2 +01366_33,17 +01623_38,5 +00333_98,4 +00287_203,15 +00566_236,8 +00475_13,5 +01448_58,3 +01901_49,5 +02187_159,16 +00916_226,2 +01431_67,11 +01134_138,10 +010942_55,11 +02127_25,2 +01457_41,7 +01723_296,15 +02042_52,14 +01437_169,11 +00228_0,14 +017232_166,15 +00916_121,2 +01813_128,11 +012722_236,2 +000792_232,9 +01330_208,9 +021772_34,4 +00509_200,2 +01145_144,4 +01706_96,2 +00546_184,14 +01007_281,6 +01091_213,9 +01045_33,2 +00011_33,1 +00566_35,6 +000232_3,2 +01643_39,12 +00474_282,2 +00841_0,14 +007762_45,14 +014882_160,13 +00577_119,14 +00503_139,9 +00333_26,2 +00840_231,2 +01488_207,0 +02005_297,11 +00825_43,12 +02146_167,14 +02138_18,14 +00160_1,5 +02162_78,17 +012612_109,2 +01228_247,14 +00417_236,6 +017232_291,15 +00783_71,17 +00442_42,14 +007832_143,2 +019592_81,6 +011912_116,7 +00128_210,12 +017072_294,7 +00883_12,11 +001022_208,16 +00485_87,1 +00417_116,17 +021622_53,7 +01953_54,2 +01853_4,14 +01723_254,15 +000232_108,5 +01361_64,4 +01330_255,6 +00916_210,2 +00462_0,14 +00892_82,2 +014882_219,0 +00539_139,1 +01431_174,11 +00783_219,2 +01045_260,4 +01839_164,1 +01045_226,4 +00408_117,13 +005392_107,1 +01853_101,11 +009642_103,8 +00128_124,2 +01493_269,1 +01158_129,1 +016982_68,17 +01134_114,10 +01605_139,5 +00287_30,4 +021622_80,17 +01834_286,8 +00276_3,14 +02049_41,8 +016932_143,0 +00158_188,5 +00280_64,12 +008482_119,17 +00697_92,12 +01119_25,11 +008482_143,14 +02088_35,0 +02172_189,14 +00951_105,0 +01977_165,8 +01775_61,2 +01228_104,14 +00158_243,5 +01763_255,12 +01134_173,10 +001242_167,19 +00729_187,14 +00993_274,14 +00761_220,3 +01409_8,14 +00567_93,2 +00875_39,2 +00474_297,2 +010012_174,5 +009622_35,4 +00841_37,4 +013302_146,9 +014882_119,0 +00181_154,14 +02127_251,17 +01240_50,2 +01158_58,0 +021912_46,7 +01501_4,14 +00287_260,4 +011912_6,14 +005062_134,2 +007832_101,17 +003062_5,14 +01091_2,2 +01688_87,5 +007292_261,14 +01959_27,6 +01361_141,3 +00160_48,11 +00453_97,9 +02127_195,17 +01941_43,14 +000092_23,12 +00721_197,14 +008482_46,17 +014072_29,5 +02030_253,16 +019712_220,2 +00563_9,2 +01358_40,1 +00730_143,14 +021722_219,12 +01228_18,14 +01882_57,11 +00709_222,19 +010872_226,5 +01161_294,2 +01814_259,11 +009622_24,0 +00462_142,13 +01804_85,7 +000792_205,9 +002802_253,14 +000232_141,6 +000092_55,12 +01953_148,4 +01087_107,5 +019412_169,14 +00964_19,14 +018342_9,14 +010942_86,11 +01087_244,5 +00021_154,2 +00453_1,0 +013332_34,4 +01901_151,5 +001602_114,11 +00951_152,14 +01087_97,5 +011612_202,17 +014232_256,2 +00128_167,2 +009352_34,7 +01972_214,3 +01959_58,6 +01698_32,17 +00566_56,8 +001242_215,0 +00228_168,9 +02162_56,7 +00475_155,9 +01488_122,13 +01210_86,9 +00160_100,11 +00718_1,2 +01101_26,7 +01272_1,2 +015972_106,0 +00181_72,0 +01493_197,9 +01834_22,14 +009622_49,13 +01256_54,4 +02054_183,4 +00730_14,14 +01971_15,2 +01568_146,12 +01144_0,5 +00546_166,14 +00413_169,12 +014882_177,0 +00848_154,14 +01330_197,6 +02186_23,5 +01493_221,1 +01509_10,2 +020572_118,2 +001602_2,2 +01956_6,14 +018792_37,4 +00333_73,0 +016882_298,2 +01948_178,13 +01643_1,14 +008922_30,0 +00442_231,4 +00065_278,4 +01423_229,0 +00023_0,2 +012282_278,14 +00314_112,12 +01877_256,4 +01578_116,14 +010912_89,16 +006092_14,14 +01134_197,10 +000232_87,4 +01184_55,5 +005092_53,2 +00550_11,5 +014882_231,5 +01877_56,4 +018772_156,4 +01488_25,1 +00722_16,17 +018132_128,11 +01767_172,14 +00503_29,6 +01049_15,7 +008402_215,7 +01941_115,14 +012722_266,4 +00962_37,0 +003062_78,7 +00382_69,17 +014272_123,14 +02005_103,11 +00883_75,11 +010912_104,0 +00102_90,16 +02057_75,2 +010912_253,2 +00021_27,5 +00350_248,5 +00964_240,4 +01723_275,15 +01058_54,2 +00282_29,7 +00825_71,2 +000792_50,17 +00875_1,2 +01494_60,7 +02049_96,3 +01144_87,12 +01929_84,0 +00615_66,11 +00597_75,14 +01044_105,4 +00729_149,14 +005092_122,2 +014972_5,5 +008402_128,2 +002752_169,12 +011612_35,17 +01626_59,7 +01972_141,3 +01210_244,9 +007292_109,14 +01103_74,17 +01437_45,11 +005092_56,12 +01001_270,5 +01953_236,4 +01409_151,0 +01134_164,10 +018122_54,4 +008372_76,11 +01804_117,7 +01165_98,5 +019242_214,14 +021722_38,14 +019622_100,0 +01622_80,13 +019712_197,12 +00296_62,7 +008482_124,17 +004082_38,1 +01331_52,17 +006092_37,11 +02172_244,14 +00408_252,1 +01901_66,5 +01408_57,14 +00287_160,4 +01723_243,15 +018342_31,6 +02172_101,12 +00964_254,14 +00079_292,9 +01688_4,5 +009352_50,7 +01775_167,12 +00539_4,6 +01707_128,7 +00128_123,2 +00160_157,11 +016882_235,5 +005392_241,1 +00660_168,0 +018772_74,4 +00467_60,11 +02172_197,4 +01636_51,0 +01044_102,4 +01909_154,2 +01636_130,14 +00993_278,14 +00453_213,9 +004082_154,11 +01272_106,2 +019712_223,2 +01578_122,14 +01219_31,5 +016922_54,5 +01834_289,8 +00306_24,7 +000792_179,9 +00079_234,9 +002802_70,12 +00660_160,0 +012402_252,12 +020052_170,11 +007832_162,2 +01706_174,2 +017752_102,12 +01371_5,14 +00442_269,4 +00941_22,0 +01045_144,4 +00438_75,2 +018652_41,18 +00505_175,11 +00535_187,0 +02146_46,18 +00535_21,2 +01158_62,0 +020052_254,11 +00314_267,4 +01636_6,14 +01941_236,14 +007212_58,2 +00228_98,11 +01924_147,14 +00567_3,2 +01092_57,17 +01278_187,2 +01094_51,11 +00615_45,11 +00615_118,1 +013302_62,18 +00601_101,0 +016922_34,2 +01814_192,11 +012402_1,2 +01091_223,6 +00783_227,5 +016982_81,17 +01723_295,15 +020052_79,11 +01698_119,14 +01046_64,7 +016882_256,5 +014372_14,11 +01427_36,1 +00296_108,14 +003062_18,14 +00474_140,2 +018792_35,4 +02172_106,12 +000092_53,12 +00021_26,5 +00993_31,14 +00088_61,5 +01261_86,2 +00232_173,14 +00417_269,1 +00475_253,9 +00840_193,7 +01091_135,5 +01769_112,2 +02187_238,16 +01853_113,5 +01240_184,4 +014232_5,2 +001602_185,11 +010012_274,5 +00024_46,17 +008482_72,17 +00276_16,14 +02030_29,14 +00413_71,0 +00505_74,1 +00867_41,17 +018772_52,4 +01909_116,2 +005882_10,4 +02057_94,2 +016982_112,14 +016922_52,5 +009162_253,5 +00528_70,2 +00588_14,4 +01092_217,6 +00539_262,1 +017232_263,15 +01278_164,12 +001022_61,16 +02049_114,13 +00697_1,2 +00793_25,14 +012402_299,4 +00729_274,14 +01948_82,13 +01707_150,4 +011912_50,2 +007212_75,14 +00674_2,14 +00417_36,17 +008482_27,17 +001242_211,0 +014882_140,0 +00821_51,5 +01101_51,7 +008252_23,2 +01814_28,5 +01048_56,5 +01971_212,2 +00519_70,11 +01184_70,5 +02057_134,3 +01409_169,0 +01361_196,3 +01962_13,0 +00681_59,5 +012402_160,2 +016882_31,5 +01877_7,4 +00160_126,11 +01182_64,0 +01971_228,2 +02127_104,17 +00041_57,7 +01767_116,14 +01490_50,7 +019242_121,14 +00065_27,1 +002752_0,14 +001112_27,17 +00721_22,14 +008372_167,0 +01488_53,13 +00709_103,11 +01971_11,2 +014372_15,11 +017672_74,14 +01493_62,1 +00350_249,5 +00503_78,6 +01312_38,7 +00588_28,12 +01191_53,7 +01972_47,3 +02012_25,17 +00181_39,0 +00867_133,17 +02042_53,14 +014882_3,13 +00242_186,12 +001602_5,2 +01568_215,2 +01971_197,12 +018342_217,8 +012612_12,2 +01330_27,12 +01228_45,2 +01763_153,2 +004082_208,11 +010872_13,14 +00538_11,2 +016842_28,4 +01879_74,5 +016932_172,0 +018772_207,4 +01161_84,17 +01488_20,1 +009342_42,5 +00550_49,18 +00825_26,2 +011612_157,17 +01103_18,17 +00539_269,1 +01707_223,0 +014232_266,2 +00615_185,11 +006742_131,14 +00485_110,1 +007092_43,19 +008482_99,17 +005882_233,2 +01981_120,0 +02172_99,14 +01423_125,0 +00390_19,5 +00102_297,16 +01981_23,5 +00079_253,9 +01007_258,6 +019252_102,3 +01191_72,7 +00535_258,8 +001022_131,16 +01046_57,7 +01813_107,11 +01578_93,14 +00462_87,13 +00390_113,14 +01968_95,7 +017022_33,14 +00490_29,2 +016932_86,0 +01904_129,4 +021462_134,5 +00102_60,16 +01437_143,11 +018122_27,4 +016932_91,0 +01971_111,4 +01330_72,6 +000242_54,17 +01184_15,14 +00462_38,14 +01929_60,0 +00916_285,5 +00768_74,7 +01046_68,7 +00158_212,5 +018772_221,4 +014272_74,9 +00660_70,0 +011912_92,7 +008402_269,2 +013302_294,9 +00539_72,1 +00718_102,19 +018132_9,11 +01953_164,4 +01962_96,0 +00588_18,12 +01877_177,4 +02186_91,5 +000252_15,17 +019252_129,3 +017072_18,2 +00783_293,5 +01834_35,6 +01044_80,12 +01509_132,0 +007092_25,19 +01904_100,12 +00964_129,8 +009162_96,2 +010012_292,5 +00275_164,14 +00124_204,0 +007092_18,19 +007212_20,14 +00079_61,9 +00563_55,6 +00840_8,2 +004082_60,1 +00160_28,5 +01941_238,14 +009352_70,7 +014372_60,11 +01981_41,5 +011912_137,2 +01972_192,13 +00729_283,14 +02027_55,18 +00280_67,12 +00506_63,6 +00783_48,2 +00228_232,5 +008482_100,17 +011772_108,14 +01177_78,14 +01775_163,12 +010872_241,5 +02187_36,16 +00721_184,14 +000792_131,9 +012722_219,4 +005882_29,12 +00577_63,7 +012402_123,2 +021722_231,14 +019712_67,12 +01953_208,4 +017072_190,0 +01813_15,11 +01361_15,5 +01622_122,14 +01812_64,4 +018132_49,11 +00538_119,17 +00242_74,4 +00160_171,11 +02042_133,0 +00761_102,14 +01597_40,0 +01333_17,2 +012722_192,2 +00160_152,11 +016052_99,5 +02030_71,14 +01853_118,14 +02054_168,2 +00456_54,12 +013302_111,9 +005392_281,0 +01423_86,0 +01001_281,5 +007182_105,19 +007292_231,14 +00528_146,4 +019592_13,6 +01044_126,12 +006742_70,14 +00721_57,2 +012402_110,12 +01044_27,4 +016882_198,5 +000792_184,9 +017022_16,14 +01145_69,4 +00456_14,14 +00306_63,7 +02028_100,2 +017232_161,15 +003122_20,0 +00981_86,11 +014882_159,13 +00453_142,9 +02005_3,11 +00539_216,1 +018392_93,11 +00287_262,4 +00485_71,1 +012612_10,2 +012402_116,4 +000792_206,9 +019412_22,14 +00709_197,19 +01877_150,4 +010012_134,5 +019252_197,8 +00674_104,14 +00158_121,5 +011612_272,17 +01834_11,14 +00721_71,12 +00160_15,2 +01941_215,14 +017232_198,15 +01877_116,4 +00718_64,19 +014882_237,5 +00065_227,12 +00615_70,1 +018772_4,4 +007832_277,5 +01158_143,4 +01092_232,9 +00287_276,4 +00160_198,1 +01623_95,11 +01839_82,11 +02127_234,17 +017692_218,9 +01165_21,5 +016922_66,1 +02172_100,14 +000232_191,2 +00793_141,14 +02138_3,14 +00474_42,12 +018342_173,8 +00951_141,14 +00023_197,2 +00697_6,2 +01490_30,7 +01509_96,0 +020052_38,11 +014972_14,0 +01091_119,5 +00453_249,9 +01769_207,11 +017692_2,2 +01775_130,12 +014282_65,14 +00934_54,11 +02027_126,14 +00601_6,14 +01834_146,8 +009642_137,8 +016932_71,0 +004172_84,17 +01578_67,14 +00442_222,4 +010652_18,1 +00761_112,14 +01509_140,0 +01622_56,0 +01058_61,2 +00840_131,7 +000092_193,7 +00578_92,1 +019252_280,8 +00280_196,14 +00350_209,5 +01103_101,14 +00535_266,6 +00462_124,13 +019412_260,14 +00840_195,7 +00709_31,19 +01636_129,14 +00314_235,12 +00181_117,0 +01182_53,13 +000092_112,12 +01490_88,14 +00539_227,13 +00442_117,12 +01219_74,5 +01813_26,11 +00314_52,2 +004532_282,9 +00023_129,6 +01210_45,9 +01427_19,4 +01312_37,7 +00615_216,11 +02049_89,3 +01834_241,8 +00567_212,5 +01509_93,0 +004172_144,7 +00079_247,9 +00306_102,14 +005392_14,6 +02005_277,11 +00916_255,5 +00474_88,2 +00718_32,19 +01228_109,14 +02127_188,17 +000252_35,17 +02054_127,4 +00503_163,5 +00848_62,17 +01437_35,11 +007832_2,2 +021462_28,11 +01191_69,7 +01723_253,15 +014122_31,0 +01509_60,0 +01877_282,4 +017482_40,0 +00709_237,19 +00442_134,4 +00747_76,2 +02005_213,11 +01423_187,0 +019252_137,3 +00287_288,4 +01494_65,7 +017072_101,0 +00296_39,7 +00442_91,2 +016052_236,11 +016922_33,2 +00793_288,14 +021622_75,17 +00709_71,19 +00505_113,7 +00158_101,11 +00825_37,12 +01706_212,2 +02049_276,4 +01351_23,7 +010012_48,2 +012192_86,5 +01834_233,8 +01272_179,2 +00023_65,3 +00417_92,6 +00413_141,0 +000092_200,12 +01134_212,10 +005392_117,1 +00475_210,1 +005392_216,1 +01049_37,7 +00993_118,7 +01228_293,14 +00722_65,17 +01092_228,9 +01144_61,3 +004082_259,13 +01045_100,4 +007092_16,19 +00503_4,6 +00438_33,2 +01219_62,5 +01707_197,0 +010012_5,2 +021722_1,14 +007832_256,5 +007092_35,19 +007222_134,17 +00916_212,2 +01748_70,0 +001242_32,4 +007292_63,14 +00306_87,7 +020052_210,11 +018342_50,8 +01971_105,12 +014972_23,2 +01331_65,17 +007092_49,19 +01087_175,5 +01509_167,0 +01972_4,2 +00453_294,9 +01210_189,6 +01497_44,2 +01409_198,14 +00821_46,5 +00546_88,3 +01977_150,8 +01959_50,6 +00287_99,15 +00718_48,19 +01191_118,7 +01103_35,14 +004672_16,11 +019252_96,3 +01929_23,0 +00578_4,14 +000252_46,17 +010872_289,5 +01408_71,14 +00450_78,13 +001022_248,16 +00505_10,2 +01582_81,14 +00519_32,7 +00024_26,7 +00721_42,14 +00674_25,14 +017672_164,14 +00041_38,12 +014282_46,14 +019252_75,3 +018392_48,11 +004172_187,17 +00535_47,2 +000232_52,3 +01351_136,7 +001602_85,11 +00453_291,9 +01278_1,2 +007292_45,14 +01925_51,12 +00426_152,12 +01767_218,14 +021622_73,17 +02049_53,3 +018772_223,4 +02062_108,4 +00124_131,19 +014882_194,13 +00276_51,11 +012282_224,14 +00964_274,14 +00280_162,12 +01423_247,0 +00688_49,4 +00158_141,5 +006972_64,5 +01582_78,14 +014122_93,0 +01706_189,2 +00761_166,8 +000232_176,14 +01437_69,11 +009162_92,2 +01437_299,11 +011082_9,14 +019252_236,8 +00535_151,0 +00768_73,7 +004082_164,11 +00729_229,14 +018392_154,1 +01165_26,5 +02005_124,11 +02127_119,17 +00287_231,4 +01609_7,17 +017232_140,15 +01568_82,4 +01948_37,4 +001602_161,1 +01261_75,12 +00550_36,18 +01351_156,2 +00287_185,15 +01501_34,14 +00280_49,4 +01092_86,17 +00158_35,14 +01412_5,4 +00821_48,5 +01626_104,7 +02062_76,12 +01804_120,12 +01228_224,14 +00660_136,0 +00079_71,9 +018342_200,8 +021622_109,1 +01092_48,17 +00916_289,5 +01351_119,7 +017482_64,0 +02005_54,11 +00697_90,12 +01361_29,4 +00867_123,17 +01693_160,0 +01144_189,2 +01408_196,14 +005092_24,2 +006092_69,14 +01909_166,12 +000252_17,17 +004082_118,13 +00709_200,19 +02049_252,3 +00761_275,3 +00158_167,5 +01904_18,2 +00426_40,0 +00535_142,6 +00314_224,12 +013302_21,2 +01769_249,11 +00024_75,7 +01058_63,2 +01210_73,17 +01044_122,12 +01437_191,11 +00079_94,9 +011612_151,17 +00088_64,5 +01134_282,10 +01623_97,11 +012402_35,2 +02127_156,17 +02049_230,3 +00490_277,5 +018772_94,4 +006092_24,11 +01091_208,9 +001022_225,16 +00280_182,4 +02162_92,12 +01158_132,1 +01767_255,14 +00607_100,6 +01091_56,1 +01971_79,2 +017482_48,7 +012282_275,14 +01423_156,0 +00475_48,9 +001242_234,0 +005282_181,0 +01706_2,2 +000092_41,2 +00350_156,9 +00079_43,15 +00228_257,11 +02054_7,2 +00242_116,12 +00287_149,15 +01007_287,6 +00588_168,4 +02187_228,16 +01490_9,7 +02138_164,13 +001242_216,0 +00102_22,2 +01161_18,17 +01698_107,14 +009512_14,14 +00350_6,14 +012282_197,14 +016432_83,14 +004172_293,11 +01278_116,12 +014372_97,11 +02062_131,4 +02172_150,14 +013302_265,12 +02028_73,1 +01834_285,8 +005392_47,1 +014372_78,11 +01490_51,7 +01408_283,14 +021462_24,5 +01582_4,14 +01901_170,12 +01925_78,3 +01182_93,13 +00941_39,0 +009642_292,14 +01684_54,14 +00550_22,18 +00840_81,2 +00509_172,12 +00539_178,1 +019592_69,6 +02005_230,11 +02149_12,6 +021722_165,14 +01643_9,14 +018772_71,4 +01330_182,3 +01144_19,5 +01909_106,4 +021772_20,4 +01493_76,1 +01001_289,5 +01437_15,11 +01423_98,0 +02049_227,3 +014232_255,2 +009352_7,14 +01158_161,4 +01134_98,10 +01706_277,2 +01941_111,14 +00453_177,9 +00503_104,1 +011912_177,14 +00539_253,1 +02088_31,0 +02057_147,3 +01775_73,12 +00413_182,12 +019592_53,6 +008402_146,7 +01767_163,14 +01092_281,12 +00160_184,11 +00519_8,14 +004532_244,9 +01879_101,2 +01087_253,5 +00475_57,9 +01814_176,11 +01407_39,4 +012402_156,4 +00916_52,2 +001242_24,4 +00158_286,5 +00688_92,2 +02162_27,5 +00552_32,7 +019622_107,0 +00506_49,4 +00021_57,3 +01692_18,2 +01812_83,2 +018792_74,5 +010912_144,5 +01488_84,0 +02191_98,7 +019242_226,14 +01904_35,2 +01046_88,7 +00821_71,5 +00011_3,0 +00519_132,7 +013302_125,18 +01706_147,2 +021722_154,4 +016052_159,11 +01968_55,7 +009622_80,3 +01361_95,6 +001602_70,11 +00730_66,18 +01692_104,1 +01488_26,1 +01971_82,2 +01240_283,12 +00160_32,11 +004532_291,9 +00993_216,6 +02054_48,2 +012612_80,12 +00382_48,17 +01643_49,14 +02162_103,6 +00261_50,0 +01941_166,14 +000232_97,0 +018342_138,8 +016982_127,14 +018342_10,14 +000792_123,9 +00450_106,13 +01091_1,2 +00462_118,13 +01493_291,1 +01103_58,17 +01977_194,8 +011612_91,17 +01044_264,4 +00539_88,1 +021912_81,7 +019412_122,14 +00442_235,4 +016932_177,0 +005392_283,0 +00709_279,12 +00228_16,14 +00951_62,0 +009352_57,7 +008832_30,11 +007092_62,19 +01684_69,14 +00417_130,17 +02186_16,14 +01688_126,14 +016982_124,14 +00474_198,2 +00867_90,17 +00390_67,5 +01692_146,14 +01962_30,0 +00442_93,2 +019712_275,4 +01865_62,18 +00382_58,17 +00314_225,12 +01437_8,11 +013712_4,14 +000092_227,2 +014372_56,11 +012192_8,14 +00981_4,14 +007832_276,5 +01977_275,4 +00552_73,7 +01972_128,13 +00475_129,11 +001242_145,19 +00951_70,0 +01904_123,2 +01161_76,17 +018772_238,4 +007762_54,4 +005392_177,1 +01948_148,13 +00128_217,12 +00079_143,9 +01962_10,0 +01488_158,13 +00342_68,17 +01723_83,15 +02028_14,4 +014882_170,1 +008402_10,2 +019622_117,0 +02042_101,13 +00793_144,14 +01101_85,6 +01901_58,0 +009642_129,8 +01184_67,5 +00417_148,6 +01509_34,12 +00287_55,15 +01240_65,12 +01210_185,6 +014232_221,0 +010912_21,12 +00232_109,13 +00783_68,17 +00607_78,11 +00413_78,0 +01925_87,3 +01134_12,16 +00275_143,14 +014122_75,0 +00276_98,11 +017232_152,15 +00475_40,9 +01643_75,14 +017752_169,12 +01044_266,4 +00282_35,7 +01427_8,14 +01408_228,14 +00485_19,2 +021722_214,12 +01191_125,7 +008402_208,7 +01981_79,5 +00456_161,14 +01509_148,0 +00703_130,14 +00747_25,9 +01409_233,14 +01101_142,14 +004082_219,11 +00528_47,2 +01972_73,3 +01210_140,6 +00175_17,4 +01723_252,15 +00993_190,7 +00475_8,5 +01108_58,4 +000792_170,9 +017072_277,7 +01272_86,2 +00867_121,5 +00394_112,14 +00962_35,4 +01361_106,6 +021462_148,14 +00462_79,13 +00505_70,1 +01962_61,0 +00883_26,11 +01431_12,11 +00783_212,2 +017692_241,9 +00916_197,2 +004082_72,11 +00417_161,6 +001022_296,16 +00128_10,12 +018342_98,8 +01001_215,5 +01431_136,11 +005882_86,13 +02054_193,2 +017232_296,15 +001242_52,0 +00312_15,13 +020052_160,11 +02138_71,12 +012192_23,5 +00160_69,11 +00793_156,14 +009642_247,4 +01698_102,17 +01541_12,5 +01134_224,10 +018392_179,4 +011772_46,4 +00456_123,14 +01091_48,6 +01623_56,11 +001602_166,11 +01693_177,0 +00951_82,0 +014372_299,11 +01333_31,4 +000232_66,3 +01134_243,10 +00550_106,18 +00793_254,14 +01971_167,2 +00821_117,5 +016922_78,1 +01879_6,2 +010912_37,12 +00916_148,2 +00382_73,17 +01240_58,12 +00009_132,2 +016052_53,2 +00867_192,14 +01501_109,14 +01087_226,5 +001022_192,16 +011612_5,17 +001602_35,11 +018342_19,14 +01007_260,6 +01814_151,5 +018772_236,4 +02146_20,2 +00426_146,0 +01941_176,14 +00577_48,7 +021912_17,7 +00761_240,3 +00688_43,4 +007292_120,14 +00840_276,2 +00677_113,14 +00875_18,2 +00314_37,2 +01408_208,14 +004672_44,11 +010872_174,5 +00025_4,17 +009162_267,5 +01165_118,14 +00111_82,14 +00124_183,0 +001242_170,0 +004532_153,9 +01723_121,15 +00506_57,6 +00793_39,14 +01409_174,0 +010872_196,5 +02062_61,2 +00563_122,2 +005282_156,0 +008402_14,2 +01623_129,14 +007832_179,2 +018652_45,18 +00957_54,2 +01087_250,5 +00578_65,1 +00160_239,11 +01834_227,8 +018392_174,4 +01723_251,15 +014122_57,0 +01597_14,0 +00546_168,4 +017692_270,2 +00276_107,11 +020572_28,2 +004672_54,11 +016052_216,11 +01763_223,2 +01972_193,13 +00721_4,14 +014232_243,2 +01045_218,4 +01972_189,13 +01698_35,17 +017232_133,15 +01767_73,14 +00505_220,12 +01977_71,8 +019242_50,14 +01007_271,6 +00566_160,8 +00350_223,9 +009622_84,3 +021722_40,14 +01865_130,5 +00783_19,2 +002802_78,4 +00703_54,11 +00079_231,9 +00848_69,17 +010872_88,5 +000232_113,5 +007292_208,14 +005392_37,6 +018342_73,8 +01427_134,14 +00009_189,7 +00408_171,11 +007292_57,14 +01501_51,4 +012722_196,4 +00342_83,17 +01706_100,2 +01408_247,14 +00588_53,15 +01361_139,3 +00438_45,2 +00916_0,2 +01605_105,5 +020052_96,11 +00916_56,2 +00128_79,4 +01191_63,7 +00394_87,17 +02146_35,11 +00124_70,4 +001022_142,16 +01423_54,2 +01007_192,1 +00867_199,14 +00485_4,2 +01366_160,14 +00128_101,0 +004172_210,17 +02127_238,17 +016882_105,5 +01693_155,0 +021722_120,4 +01312_12,14 +008252_57,2 +00450_1,14 +001022_90,16 +01693_262,0 +00703_64,11 +007212_227,14 +02021_61,11 +00761_169,8 +00729_226,14 +00505_136,14 +00772_87,5 +008482_145,14 +00783_269,5 +02146_6,14 +007832_209,2 +00709_124,4 +00867_164,14 +014372_119,11 +01509_80,0 +007762_88,14 +012612_45,2 +00442_281,4 +01972_82,3 +010652_84,18 +00024_29,7 +014072_27,5 +01228_138,14 +00041_151,7 +00159_45,2 +01045_72,4 +01091_267,14 +00408_116,13 +00934_25,1 +01103_40,4 +000092_219,12 +008402_78,2 +01925_109,3 +01065_50,18 +011082_60,4 +010872_48,14 +014272_71,1 +01925_143,3 +01409_170,0 +01968_13,14 +01408_298,14 +01684_27,12 +019592_3,6 +00761_17,14 +00721_39,14 +001022_139,16 +00158_156,5 +02088_16,0 +01941_150,14 +02138_49,14 +01684_56,14 +00102_96,16 +01941_220,14 +01409_75,0 +019712_298,4 +01972_30,6 +013302_59,18 +00124_233,0 +007292_198,14 +014232_204,0 +01182_31,0 +00417_290,11 +008832_75,11 +00539_70,1 +01775_65,2 +00703_78,11 +010012_159,5 +01427_31,17 +00821_33,5 +00916_172,2 +01582_55,14 +00350_46,14 +018792_108,2 +014282_70,14 +01968_48,7 +00563_16,2 +01092_298,2 +004532_18,9 +00721_50,4 +01597_22,0 +01330_103,6 +01001_156,5 +00065_215,12 +02186_5,14 +006092_5,14 +012282_89,14 +009162_5,2 +00417_192,17 +00697_94,12 +010942_78,11 +01568_1,2 +00566_145,8 +00280_36,12 +01409_206,14 +00417_142,7 +006742_35,14 +01568_64,12 +00660_173,0 +00474_83,2 +00453_280,9 +016932_23,14 +00660_34,0 +01431_31,11 +008922_31,0 +00677_97,14 +02187_61,16 +00333_30,2 +004672_32,11 +007222_67,17 +01261_21,2 +00566_123,8 +01448_6,14 +021462_70,18 +010012_21,12 +01834_175,8 +012192_115,5 +00485_34,2 +00840_113,7 +01953_119,4 +006972_23,9 +00848_124,17 +00314_252,0 +01643_41,12 +01407_53,12 +01929_25,0 +017692_138,9 +00503_263,6 +002752_20,14 +01044_237,12 +005882_154,13 +01219_135,14 +009162_8,2 +00159_6,4 +01748_53,7 +01941_45,14 +01278_145,12 +00563_111,2 +00408_143,11 +01423_57,2 +00314_41,2 +01210_137,6 +00609_46,11 +01493_158,1 +017752_85,2 +014882_210,0 +00697_50,4 +01437_51,11 +016882_142,14 +00718_106,19 +00490_123,12 +01092_3,17 +00485_95,1 +016922_65,1 +00567_247,2 +00287_34,4 +01977_157,8 +00703_128,14 +01165_111,5 +00438_264,2 +01092_238,1 +00021_4,5 +019412_268,14 +00333_67,4 +019412_236,14 +007182_66,19 +01972_131,3 +01707_244,0 +01361_297,15 +00462_6,14 +012192_13,14 +017672_145,14 +02127_118,17 +010652_3,14 +02005_167,11 +002802_87,2 +000232_136,6 +012282_220,14 +01605_88,5 +01427_21,4 +01409_186,0 +02127_101,17 +00962_9,0 +00783_114,17 +01272_65,12 +00442_181,4 +00350_137,9 +00721_35,12 +01261_49,2 +01972_210,3 +001602_243,1 +00550_110,18 +00417_94,6 +00840_260,2 +02027_140,14 +00588_219,12 +02191_107,7 +01092_68,17 +00242_192,2 +01501_107,14 +01240_124,2 +018342_230,8 +00503_182,9 +01706_61,2 +000792_253,9 +021722_185,14 +01488_141,0 +01971_100,12 +000252_31,17 +02049_151,13 +01769_18,2 +01509_6,2 +000092_164,0 +006972_103,2 +00408_106,11 +01814_154,5 +01045_95,4 +019712_200,12 +00821_122,2 +000792_274,15 +00577_102,7 +01707_256,7 +01144_158,2 +00456_172,14 +01723_71,15 +014372_177,11 +00837_40,11 +00079_64,9 +00065_262,12 +00825_52,2 +00550_43,18 +00729_24,14 +01448_108,14 +019252_277,8 +01692_121,1 +020052_238,11 +00102_64,16 +020052_218,11 +00408_227,11 +00413_108,0 +010012_269,5 +01706_60,2 +00951_95,0 +01045_285,4 +008372_160,11 +005062_10,2 +01981_15,5 +00474_212,2 +005882_200,2 +01087_177,5 +00722_134,17 +008252_16,4 +005092_111,2 +01161_168,17 +020052_278,11 +01261_84,2 +01568_77,2 +017672_100,14 +00413_228,14 +01087_213,5 +007762_65,14 +02054_114,14 +00350_214,9 +00793_115,14 +01605_210,11 +01493_271,1 +01058_105,4 +021622_97,6 +00023_137,6 +01834_67,8 +009162_113,2 +01007_162,13 +00934_27,1 +01094_90,11 +012722_68,4 +01904_133,12 +000792_292,9 +00841_59,14 +00102_296,16 +012722_80,2 +01953_239,4 +01330_187,3 +00021_18,5 +01953_17,2 +009642_209,3 +00875_65,2 +009342_11,9 +00426_36,0 +01941_192,14 +01509_71,0 +01834_2,14 +017692_249,11 +01692_144,14 +01688_149,14 +001022_12,2 +01953_56,2 +01568_132,2 +00993_251,14 +011912_69,7 +011912_136,2 +00160_106,11 +00390_102,2 +021912_116,14 +01723_119,15 +00490_220,5 +017692_239,9 +00009_230,12 +01094_16,2 +00539_91,1 +008402_0,2 +00124_254,4 +01763_209,2 +011912_80,7 +000252_13,17 +01501_80,4 +02127_227,17 +00951_71,0 +00442_70,2 +01158_9,4 +00505_115,12 +00442_200,4 +00892_81,2 +00065_245,12 +01407_49,2 +00276_46,11 +02127_280,17 +01707_185,0 +001112_13,14 +009512_95,0 +02094_38,12 +00867_72,5 +01723_105,15 +02049_11,12 +01692_9,14 +019592_30,6 +01045_0,2 +00276_137,14 +016052_218,11 +014882_247,5 +01361_255,15 +01971_4,2 +001602_31,11 +01909_177,2 +010872_265,5 +00783_38,2 +00730_109,14 +004082_23,1 +01428_0,14 +02127_126,17 +017072_31,2 +00535_60,2 +01706_101,2 +00160_283,13 +005392_165,17 +01959_39,6 +00065_248,12 +01834_71,8 +021912_33,7 +017072_85,0 +00102_232,16 +01210_187,6 +01494_86,14 +01256_68,12 +020572_173,3 +014072_23,12 +01101_98,1 +00993_187,7 +01427_130,14 +02005_79,11 +00703_49,11 +00588_169,4 +00128_240,12 +01925_218,8 +00503_277,6 +00535_130,9 +00761_265,3 +01361_173,3 +019412_139,14 +01643_31,14 +00837_121,11 +007092_232,19 +012402_211,12 +00462_66,15 +00588_84,13 +01814_183,11 +018772_126,4 +012722_83,2 +017672_282,14 +00776_25,14 +01767_208,14 +01240_126,2 +01723_47,15 +00088_9,14 +00793_103,14 +00041_15,2 +00023_100,0 +00962_3,0 +01412_39,0 +00079_141,9 +00588_203,2 +00793_217,14 +01688_50,5 +00840_30,2 +00528_26,2 +00102_55,16 +00535_171,0 +005282_183,0 +017482_102,0 +00609_67,14 +02149_43,17 +018772_201,4 +01813_119,11 +017072_256,7 +00528_123,2 +00674_50,14 +00023_179,2 +01977_291,14 +00729_264,14 +01457_24,7 +018392_74,11 +02138_196,13 +00485_126,1 +00438_262,2 +00009_96,0 +01775_37,12 +004082_110,1 +010012_220,5 +01839_112,11 +000792_268,0 +019412_291,14 +00350_259,9 +01210_103,6 +01769_108,2 +002752_34,12 +01769_107,2 +016092_36,17 +00475_127,11 +01877_288,4 +00848_102,17 +00124_46,0 +01813_136,11 +00065_220,12 +01408_38,14 +016982_113,14 +02138_213,13 +01493_143,1 +02005_296,11 +00228_153,9 +017072_37,2 +02012_86,7 +01853_5,14 +01769_25,2 +01493_18,11 +02146_96,18 +01972_52,3 +004082_62,1 +01925_128,3 +02054_128,4 +00505_214,12 +021622_64,17 +00024_30,7 +00837_19,11 +01158_116,4 +006972_65,1 +017752_141,4 +00503_292,6 +02172_203,14 +02049_18,4 +01488_219,0 +01437_219,11 +00709_105,1 +01941_197,14 +01879_15,2 +01763_15,2 +01769_294,5 +00519_1,14 +002802_54,2 +00453_159,9 +00450_129,13 +02187_96,16 +01184_128,14 +00065_116,11 +01509_225,11 +007832_30,2 +006742_7,14 +01959_41,6 +00102_143,16 +001022_197,16 +00413_168,12 +007092_27,19 +020572_19,2 +017232_188,15 +019242_90,14 +01568_35,2 +01582_71,5 +012192_61,5 +00951_154,14 +019042_7,2 +017072_156,4 +000252_27,17 +00729_146,14 +003062_9,14 +01408_166,14 +002752_167,12 +00964_27,14 +02054_121,12 +01941_3,14 +007832_200,12 +00128_58,4 +010942_1,14 +001602_147,11 +01959_28,6 +01578_27,14 +01568_80,4 +011612_203,17 +010912_223,6 +018652_77,18 +01144_4,5 +00079_158,0 +012282_208,14 +00485_152,13 +00342_23,17 +01692_127,1 +00538_100,17 +001602_75,11 +01692_44,2 +02172_74,14 +00718_104,19 +02127_295,17 +00408_134,13 +00079_210,9 +00158_39,14 +01092_284,14 +020052_239,11 +00783_249,5 +01145_291,1 +00442_154,0 +01358_45,1 +02005_214,11 +010652_69,18 +00438_78,2 +01901_140,5 +012282_110,14 +002802_110,4 +00275_165,14 +00506_31,2 +02049_67,3 +01769_131,11 +008922_80,2 +01048_0,2 +00840_61,2 +00660_58,0 +01427_123,14 +01977_8,14 +01904_99,12 +009622_23,0 +007292_254,14 +01272_7,2 +01509_258,11 +005062_4,2 +00761_137,14 +01361_293,15 +02138_124,8 +01688_170,14 +00840_144,7 +019412_123,14 +00601_92,0 +01787_34,1 +01108_35,13 +007292_12,14 +01428_61,4 +02177_67,12 +01431_8,11 +01787_43,9 +005882_185,4 +01769_97,2 +01956_69,14 +005062_114,2 +01427_57,4 +01065_29,18 +013302_284,1 +00453_115,9 +01636_80,0 +02028_83,2 +014232_75,0 +00124_211,0 +01228_41,14 +00577_55,7 +012612_43,2 +01408_191,14 +01853_114,5 +00462_1,14 +019412_195,14 +01228_231,14 +00883_15,11 +00009_274,12 +00660_100,0 +011912_188,14 +02005_59,11 +01272_112,2 +005392_133,1 +014232_43,2 +01145_258,4 +00503_61,6 +012722_221,4 +01767_285,14 +00485_239,1 +012402_172,12 +004172_275,1 +018342_252,8 +00228_73,17 +021772_10,4 +000792_116,9 +00280_130,12 +00718_5,2 +017672_20,14 +01457_47,7 +00287_253,15 +00333_166,12 +012282_19,14 +00660_10,14 +00566_199,8 +019242_235,14 +00350_279,9 +01118_15,14 +00474_222,2 +00128_49,4 +01707_67,0 +02138_97,14 +00506_51,4 +00848_48,17 +016052_178,11 +01723_38,15 +01210_122,6 +00979_21,1 +00509_96,12 +00688_17,2 +01605_295,11 +014232_122,0 +007832_138,2 +00485_7,2 +00079_195,9 +00588_91,13 +00128_199,4 +01358_51,1 +01437_293,11 +00023_98,0 +00615_215,11 +00408_113,1 +02127_123,17 +019242_132,14 +00615_58,11 +01839_184,1 +002752_4,14 +004532_118,9 +00875_57,2 +010872_41,14 +01769_81,1 +00776_64,14 +01272_23,2 +01049_64,7 +00528_109,2 +011612_142,17 +00128_267,0 +00342_100,14 +005502_42,18 +00793_178,14 +01877_134,4 +01702_35,14 +016432_78,14 +01981_8,14 +00566_215,8 +00825_40,12 +002802_58,2 +007292_36,12 +011912_13,14 +002802_49,4 +00065_204,1 +00951_133,14 +021722_15,14 +00577_82,7 +00275_17,14 +010012_138,5 +01228_56,2 +00539_11,6 +00957_26,0 +00597_43,5 +00964_268,14 +00041_3,2 +00158_107,11 +009352_112,14 +00506_143,2 +00011_129,2 +01134_76,10 +00505_241,14 +006742_93,14 +009512_1,14 +00009_174,0 +00761_175,3 +01605_84,5 +004532_55,9 +00280_215,4 +02094_20,2 +00312_18,0 +01240_150,4 +01065_111,14 +00535_178,0 +01087_271,5 +009622_63,3 +01813_143,14 +01977_93,8 +000242_81,17 +02049_190,13 +00993_185,7 +01045_250,4 +01597_103,0 +009642_99,8 +01971_144,12 +00566_201,8 +00417_234,6 +01044_117,12 +01977_37,2 +00509_27,2 +00023_122,5 +00601_29,7 +02054_73,4 +01501_27,0 +018772_51,4 +01877_151,4 +01103_92,14 +00729_223,14 +01877_14,4 +00287_89,15 +01723_246,15 +016882_292,2 +00333_92,0 +011772_8,14 +005392_234,1 +00314_173,0 +00546_84,3 +00438_74,12 +019592_41,6 +01428_18,4 +00408_294,11 +00333_135,2 +00450_3,14 +014232_48,2 +01509_122,0 +01723_202,15 +01853_82,0 +005092_98,12 +004532_26,9 +01626_27,7 +018342_1,14 +010942_95,2 +017672_146,14 +02049_82,3 +01108_34,13 +01119_17,11 +010652_2,14 +00408_39,1 +017072_13,2 +00793_4,14 +007762_93,14 +021912_104,7 +01853_46,7 +001602_136,11 +01723_167,15 +00413_197,2 +01814_281,11 +02057_203,3 +011612_135,17 +016922_127,1 +01101_171,14 +00578_14,2 +01925_103,3 +00065_45,1 +01045_188,4 +00490_21,2 +00009_115,7 +01065_6,2 +00242_90,12 +00721_74,12 +01706_190,2 +01977_284,14 +012402_244,12 +018772_45,4 +006742_64,14 +01643_109,14 +021462_161,14 +01509_97,0 +00761_132,14 +00563_87,6 +00065_178,1 +02042_123,0 +00505_28,14 +00475_282,1 +01431_291,11 +01330_3,2 +01775_170,12 +013302_246,15 +01330_143,9 +00535_241,6 +00350_266,5 +001022_0,2 +01101_143,14 +01698_49,17 +01509_165,0 +00539_160,17 +00993_133,7 +01706_94,2 +02005_237,5 +00505_171,5 +012282_266,14 +000232_64,3 +00485_190,1 +01007_6,2 +01409_16,14 +00528_24,2 +01924_86,14 +00490_244,5 +012402_23,2 +00867_136,5 +01366_151,2 +00538_49,4 +000092_139,7 +00490_269,5 +000232_146,6 +00867_147,0 +01278_103,12 +00228_100,11 +01568_29,2 +021722_127,14 +01748_66,0 +01272_209,4 +01971_242,12 +00729_154,14 +00875_3,2 +004532_31,9 +00181_25,0 +018342_96,8 +01877_154,4 +01423_81,0 +00601_115,0 +01361_146,3 +01959_11,6 +00783_163,2 +01488_215,0 +01622_31,13 +005882_118,13 +017072_177,4 +01001_130,5 +00128_153,2 +01582_33,17 +01144_56,9 +00382_78,6 +02027_40,18 +019252_27,14 +02049_38,8 +00490_252,5 +021772_54,12 +01087_143,5 +02149_18,6 +00848_29,17 +017232_107,15 +01351_37,7 +00528_184,0 +01909_30,2 +00282_27,7 +001022_275,16 +00718_25,19 +010942_103,14 +02054_26,2 +007292_19,14 +01962_41,0 +01240_284,12 +014882_202,1 +00916_10,2 +01578_6,14 +019042_3,2 +007292_26,14 +01161_151,17 +01706_75,2 +01688_5,5 +009162_60,2 +013332_31,4 +00158_237,5 +01924_231,14 +01578_127,14 +00709_83,19 +00485_254,1 +01839_119,11 +01748_72,0 +000792_8,9 +02187_114,16 +00275_106,14 +005882_87,13 +01501_33,14 +00981_82,11 +02172_188,14 +011912_4,14 +00009_54,7 +010912_114,5 +00474_241,2 +00883_5,11 +01693_180,0 +01877_247,4 +01882_76,14 +01509_17,2 +009622_46,13 +00450_39,14 +012612_95,2 +02042_103,15 +01692_126,1 +00539_228,13 +007182_31,19 +019042_128,4 +00024_93,7 +01007_124,0 +00287_176,4 +01045_134,4 +01688_296,2 +01853_71,6 +001602_60,11 +00772_40,7 +009512_2,14 +007182_58,19 +010912_159,5 +007292_191,12 +01953_44,12 +008402_265,2 +00793_143,14 +00505_110,7 +02127_95,17 +007292_292,14 +01101_87,6 +01813_41,11 +01977_262,3 +01094_49,11 +01948_84,13 +017752_111,4 +00011_76,12 +01702_62,14 +00442_205,4 +019412_212,14 +00519_130,7 +01191_100,7 +003062_24,7 +009512_34,0 +01834_94,8 +00837_152,11 +02186_32,5 +00021_39,6 +01968_36,7 +001242_83,19 +01361_284,15 +017072_273,7 +018132_5,2 +00342_69,17 +00578_55,1 +01748_84,0 +004082_56,1 +01865_108,18 +016982_107,14 +00261_35,4 +00821_143,14 +00475_162,9 +00280_187,2 +01882_13,14 +01240_172,12 +005062_104,2 +020052_80,11 +00417_16,6 +00490_105,2 +01693_220,0 +00951_64,0 +01351_87,7 +00538_65,1 +00628_81,7 +00615_171,11 +01953_69,12 +00079_28,9 +01909_56,2 +019622_120,0 +00024_116,2 +009162_274,5 +01769_295,5 +007092_17,19 +00485_164,1 +01331_12,14 +01812_90,2 +00394_32,9 +00783_221,2 +01748_12,0 +00453_196,9 +01582_25,17 +02005_189,11 +01201_14,14 +01493_256,9 +01706_138,2 +016932_245,0 +012562_0,14 +01578_10,14 +00102_84,16 +00228_246,11 +006092_10,14 +01001_258,5 +01977_272,4 +00467_9,11 +011612_68,17 +01925_61,6 +01431_256,11 +002752_89,14 +00550_104,18 +00916_166,2 +00964_18,14 +01046_29,7 +01763_125,12 +002802_32,12 +00783_147,4 +01228_34,14 +01045_73,4 +00158_145,5 +01904_4,2 +02138_173,13 +01065_24,18 +01118_57,7 +010872_157,5 +009512_46,0 +01044_278,4 +009642_120,8 +00394_111,14 +004082_239,11 +011612_205,17 +00306_100,14 +00688_91,12 +00390_22,5 +01962_8,0 +00490_168,2 +01971_282,12 +00287_189,4 +00892_54,0 +01371_25,14 +00660_190,0 +01813_91,11 +01366_147,5 +00102_227,16 +01261_100,2 +01605_114,5 +01813_25,11 +00181_123,0 +007292_152,14 +00793_31,14 +00158_232,5 +00935_94,7 +01145_156,4 +01509_224,11 +00228_14,14 +016052_231,11 +01094_110,14 +01278_73,12 +00601_5,14 +01210_3,17 +00453_17,1 +00232_110,13 +001242_230,0 +01814_172,11 +00505_132,12 +021622_29,5 +007212_118,4 +016842_2,14 +00394_113,14 +00079_19,9 +00892_34,0 +00296_19,7 +01092_292,14 +016052_21,14 +007292_141,14 +01333_48,0 +004532_96,9 +00314_16,2 +012612_102,2 +001242_110,19 +007762_23,14 +01834_270,8 +00390_50,5 +01488_217,0 +00550_78,18 +013302_179,1 +014882_96,13 +00660_195,0 +01091_16,2 +00563_50,6 +01044_166,12 +000792_249,9 +01877_294,4 +01145_191,4 +01636_20,4 +006742_15,14 +00721_173,14 +01763_225,12 +01412_84,0 +001022_217,16 +01707_228,0 +00729_199,14 +01769_67,9 +01366_47,17 +01981_14,14 +00793_142,14 +010652_66,18 +00350_47,14 +01044_202,12 +01437_49,11 +01971_132,12 +010012_59,12 +00993_5,14 +01184_69,5 +00546_186,14 +01622_63,14 +014232_54,2 +00546_179,14 +00350_67,2 +00660_108,0 +00242_107,12 +00505_198,7 +00546_187,14 +01361_266,15 +01278_106,12 +016932_212,0 +00314_72,12 +005282_163,0 +01094_75,11 +01901_125,0 +01161_100,17 +00228_248,11 +007092_108,1 +02049_234,3 +00287_29,4 +00509_137,12 +021772_74,14 +00867_65,0 +01509_79,0 +00660_109,0 +02094_165,2 +00390_114,14 +019042_155,2 +01605_218,11 +019252_179,8 +00709_116,12 +01045_75,4 +00951_34,0 +01184_78,5 +01366_115,17 +00275_120,12 +00703_8,14 +009642_15,14 +00394_29,9 +00840_50,2 +00041_122,7 +019242_24,14 +011912_163,14 +016932_195,0 +001242_197,0 +00772_41,7 +001602_73,11 +007762_95,14 +00333_57,2 +00768_90,14 +011912_126,7 +00825_88,2 +01977_233,8 +01763_11,2 +000792_102,0 +01909_2,2 +00577_60,7 +014372_13,11 +003122_40,0 +02146_114,18 +00535_257,8 +007212_107,14 +01763_94,12 +02138_150,13 +009162_169,2 +01693_158,0 +014282_35,14 +01839_190,1 +001022_102,16 +00079_49,15 +008832_49,11 +01134_65,10 +000792_135,9 +00615_180,11 +00456_91,12 +00503_258,9 +001022_298,16 +01578_220,14 +01065_112,14 +00588_5,2 +00475_42,9 +01981_36,5 +012562_35,12 +000232_112,5 +002752_67,14 +01134_273,10 +00456_85,2 +019412_264,14 +00993_181,7 +01622_92,0 +01707_169,0 +00475_251,9 +02186_106,14 +012722_88,2 +00475_121,1 +02187_188,16 +00408_20,1 +019412_253,14 +01333_6,0 +01184_84,5 +001602_276,3 +00485_137,1 +00601_2,14 +01605_196,11 +02057_23,2 +02138_94,14 +011912_27,14 +00509_116,2 +014882_222,0 +01688_73,5 +00916_266,5 +01493_54,1 +021722_213,12 +011612_217,17 +01767_12,14 +02172_41,14 +01636_50,0 +017072_19,2 +00065_72,1 +00450_152,12 +020052_134,11 +00503_84,1 +010012_169,5 +01977_190,8 +01240_108,12 +01165_89,5 +019412_186,14 +01971_217,2 +00535_58,2 +01643_111,14 +002802_165,12 +014372_107,11 +00567_201,2 +01972_91,13 +00408_229,11 +02005_92,11 +00722_137,17 +009512_57,0 +019712_35,2 +011772_95,4 +00546_143,3 +01144_85,6 +01161_254,17 +01636_107,0 +01001_261,5 +008402_143,7 +017022_13,12 +000242_42,7 +017672_215,14 +00776_44,14 +017072_201,0 +01048_27,5 +01431_7,11 +01351_100,7 +02054_11,2 +00697_106,4 +00456_53,12 +01184_120,14 +01626_105,7 +005882_51,15 +00314_61,12 +00306_47,7 +012722_93,2 +01448_107,14 +002752_145,14 +005392_292,1 +009162_133,2 +01972_159,3 +01272_218,12 +02005_266,11 +02042_62,15 +00840_140,7 +005282_44,2 +00825_5,12 +01210_54,17 +02146_41,1 +00475_52,9 +01409_26,12 +017232_149,15 +02062_99,4 +01904_128,4 +01045_191,4 +012402_200,12 +005062_72,6 +00768_11,14 +01879_11,2 +00490_132,12 +00474_89,2 +00306_7,14 +018652_113,18 +01953_241,4 +01165_28,5 +02005_261,11 +01702_51,2 +01007_111,0 +00453_66,9 +010912_63,1 +01045_298,4 +02138_182,13 +006742_65,14 +01501_42,4 +00417_129,17 +01688_38,5 +003062_6,14 +02030_211,16 +00282_74,11 +00578_64,1 +01953_55,2 +00181_35,0 +00474_144,2 +00287_232,4 +01706_102,2 +006972_16,9 +004172_133,17 +015972_33,0 +019242_72,14 +00660_105,0 +01431_133,11 +01092_165,5 +021722_53,14 +005882_147,13 +02057_50,2 +01787_14,13 +00442_137,4 +02054_250,2 +00128_27,12 +00450_119,13 +00088_77,5 +013302_200,1 +00021_142,12 +01953_120,4 +01184_50,5 +02005_95,11 +013712_40,12 +02094_93,4 +02172_105,12 +004172_75,17 +01643_25,12 +01118_40,7 +00417_81,17 +01767_27,14 +00394_92,1 +01959_53,6 +00088_40,5 +005392_191,1 +019592_25,6 +01925_107,3 +004532_81,9 +01706_81,2 +01457_66,7 +00390_38,5 +00539_194,1 +00577_84,7 +00709_158,4 +01834_230,8 +00660_163,0 +00426_155,12 +00837_11,0 +001022_260,16 +00729_289,14 +012282_272,14 +008482_73,17 +00538_5,14 +018392_126,1 +01813_30,11 +009512_25,0 +008252_29,12 +014882_207,0 +00821_13,14 +02057_119,2 +00011_24,0 +00597_52,5 +016052_162,11 +02012_51,17 +00456_72,12 +02027_49,18 +00408_3,2 +01331_63,17 +02057_15,2 +01431_16,11 +01698_90,17 +014232_69,4 +01763_286,12 +01623_53,11 +01948_12,14 +00065_56,9 +00306_25,7 +01144_49,9 +01968_14,14 +00709_218,19 +01904_53,12 +01001_263,5 +01437_265,11 +01240_193,4 +011772_40,14 +019042_135,12 +01437_266,11 +00729_239,14 +00102_71,16 +00709_188,19 +01865_29,11 +004532_236,9 +019042_170,12 +00535_48,2 +00232_14,14 +00821_99,5 +01698_56,17 +01981_80,5 +01568_158,2 +00314_32,2 +007212_135,12 +009162_224,2 +01693_25,17 +00024_14,2 +020052_84,11 +018652_87,18 +005392_90,1 +00892_99,2 +02005_255,11 +00535_141,6 +00528_216,0 +001022_8,2 +017072_3,2 +01366_27,17 +019412_143,14 +01775_123,4 +01134_295,10 +01787_30,1 +00607_140,14 +00111_25,17 +00438_267,2 +02049_36,8 +00681_35,5 +001022_229,16 +012612_110,2 +01087_85,5 +005062_118,2 +00566_173,8 +017692_41,2 +02162_64,17 +00462_13,14 +01103_104,14 +01228_161,14 +01924_56,14 +010012_160,5 +02057_64,12 +01256_52,4 +00456_2,12 +019622_97,0 +00333_85,0 +00821_60,5 +01134_184,10 +008402_162,2 +00993_208,6 +019712_288,12 +01145_49,2 +000792_96,9 +01158_145,4 +01948_134,13 +01971_258,4 +021462_41,1 +01971_77,2 +00350_35,14 +01929_22,0 +016052_112,5 +019242_141,14 +01272_115,2 +019252_293,8 +00837_60,11 +016922_139,5 +01001_44,4 +002752_77,14 +01437_255,11 +00462_174,4 +00158_192,5 +00438_280,2 +00453_277,9 +01568_207,2 +01763_17,12 +01278_144,12 +011772_78,14 +012612_62,2 +00314_259,12 +007092_126,4 +01423_55,2 +009162_270,5 +01184_85,5 +02186_52,5 +01191_163,14 +021462_172,14 +01605_222,11 +007292_182,14 +01409_35,4 +017672_141,12 +01925_182,8 +00453_170,1 +01256_12,14 +01408_158,14 +007222_147,6 +00935_9,14 +01812_71,12 +014232_213,0 +00128_221,4 +010012_288,5 +01909_5,2 +01622_87,13 +009642_32,14 +01688_235,5 +01201_84,11 +00287_204,4 +01330_58,18 +02030_212,16 +01145_168,4 +021772_26,4 +00124_247,0 +02049_40,8 +00417_7,14 +00588_205,12 +01044_161,12 +01278_219,2 +01971_156,2 +021622_22,14 +012282_245,14 +01488_234,5 +00296_49,7 +01723_235,15 +00761_45,14 +01509_227,11 +02030_182,16 +00261_14,2 +008402_251,2 +00408_79,11 +009642_212,3 +00442_210,4 +01351_149,2 +01045_38,2 +01977_227,8 +005062_17,2 +005882_100,13 +013302_46,9 +019242_203,14 +012282_277,14 +00761_131,14 +017072_266,7 +00840_185,7 +021722_92,14 +02187_80,16 +00474_117,2 +001022_206,16 +010872_0,14 +00124_135,19 +00729_213,14 +016052_93,5 +00474_166,2 +00023_34,4 +018122_22,2 +006742_118,14 +00607_39,11 +01145_203,4 +01007_104,0 +02146_133,5 +00287_52,15 +000232_178,14 +01623_9,14 +00438_278,2 +007092_101,11 +01058_163,2 +00615_5,11 +011912_84,7 +00287_132,15 +01092_244,1 +00228_150,9 +01065_20,1 +021462_109,18 +00456_96,12 +008482_111,17 +004172_189,17 +01882_48,11 +01091_24,12 +00892_95,2 +001602_141,11 +007222_119,17 +015972_86,0 +002802_112,4 +01971_147,12 +005092_234,2 +01605_4,14 +00041_100,12 +00674_112,14 +01427_59,17 +016932_106,12 +00935_68,7 +00102_196,16 +00158_262,5 +00438_217,12 +01605_248,11 +009352_108,14 +021722_260,14 +00158_49,14 +018392_153,1 +020572_152,3 +009162_221,2 +01941_286,14 +013302_88,1 +00509_204,12 +00503_3,6 +004172_271,1 +01437_97,11 +01769_244,1 +01853_54,6 +00821_12,14 +00783_66,17 +00821_138,14 +01977_139,8 +01210_288,9 +018342_137,8 +01834_243,8 +00228_34,14 +00158_269,5 +019712_159,2 +008372_108,11 +01941_283,14 +01058_95,2 +02187_281,16 +01839_49,11 +00505_240,14 +00426_114,0 +00442_140,0 +01408_256,14 +00350_29,14 +00296_89,7 +01693_35,2 +007092_145,19 +002802_182,4 +013302_115,1 +01748_95,0 +00615_4,11 +004082_15,12 +01865_40,18 +01091_264,14 +01925_115,3 +01941_94,14 +01814_111,11 +014232_261,2 +005282_7,2 +02127_58,17 +016882_253,5 +016932_221,0 +00934_4,1 +00312_8,0 +009622_66,3 +00503_275,6 +01366_65,17 +00660_267,2 +00772_86,5 +00721_174,14 +004082_299,11 +01924_29,14 +00566_264,8 +012192_54,5 +01488_27,1 +01959_8,6 +019252_258,8 +01330_292,9 +01092_263,12 +00892_62,2 +00916_252,5 +01158_155,4 +009162_63,2 +01423_9,2 +01972_216,3 +000092_206,12 +00761_154,6 +020572_58,12 +01007_269,6 +01929_90,0 +019592_58,6 +017752_133,2 +010012_285,5 +005062_11,2 +00546_150,3 +00597_69,14 +01865_57,18 +02057_199,3 +00009_268,0 +00615_40,11 +019412_132,14 +018772_77,4 +02054_261,12 +016052_259,11 +00065_40,1 +01272_251,12 +01118_69,7 +019412_53,14 +00485_103,1 +018392_88,11 +019622_131,0 +01834_30,6 +005392_296,1 +00228_95,11 +00442_111,2 +004082_8,2 +00681_51,5 +02021_84,11 +019712_114,4 +01118_78,14 +02127_205,17 +00350_129,9 +01228_279,14 +009162_114,2 +00681_10,5 +01007_85,0 +01775_136,12 +01409_109,0 +007832_192,12 +01044_56,4 +017692_247,11 +007182_9,2 +01941_123,14 +01568_208,2 +01371_10,14 +00729_116,14 +00350_264,9 +01412_48,0 +00677_101,14 +00312_13,0 +00546_31,14 +01839_138,1 +00703_0,14 +00964_95,8 +01706_195,2 +009352_54,7 +00729_275,14 +00158_239,5 +00674_66,14 +012612_38,2 +016842_16,14 +01210_215,6 +00282_84,11 +014972_35,2 +005882_223,2 +01049_39,7 +00314_286,0 +00242_59,12 +00485_184,1 +021462_145,14 +00538_66,1 +01692_88,1 +00539_261,1 +01145_124,4 +00730_17,14 +00242_99,12 +01748_87,0 +02030_249,16 +01092_113,17 +01787_20,13 +00275_2,14 +01767_237,14 +018772_78,4 +01007_149,13 +00964_212,3 +008832_50,11 +01044_236,12 +02030_26,14 +010012_264,5 +00158_146,5 +017072_99,0 +00979_65,1 +012612_84,2 +00453_148,9 +01351_7,2 +02062_13,2 +012612_71,4 +019712_173,12 +01201_97,14 +017672_291,14 +00761_31,14 +01941_196,14 +007092_69,19 +02042_40,14 +00024_71,7 +00703_93,11 +008482_68,17 +00333_130,2 +00314_99,4 +00709_23,19 +00528_80,2 +00793_222,14 +00567_94,5 +000092_216,7 +019712_12,2 +00837_104,11 +019412_225,14 +005502_14,5 +01423_215,0 +021912_35,7 +012282_66,14 +01087_299,5 +01087_168,5 +01767_182,14 +00519_74,11 +00124_116,19 +00566_147,8 +00848_46,17 +009162_191,2 +00023_102,0 +01763_273,2 +01509_291,11 +01437_272,11 +018392_57,11 +00408_234,11 +01767_288,14 +00442_71,2 +01971_246,12 +01568_30,2 +012722_162,12 +01431_245,11 +014282_76,14 +00417_212,17 +00467_59,11 +00674_67,14 +021912_16,7 +00783_170,2 +019042_16,2 +017672_116,14 +01763_201,2 +01767_270,14 +01278_5,2 +01877_222,4 +00065_129,1 +00578_44,17 +005882_130,13 +008372_29,11 +01962_18,0 +01901_50,5 +02049_7,12 +01956_58,14 +001022_3,2 +01184_116,7 +014282_43,4 +01702_46,14 +01256_1,14 +00505_251,14 +01968_113,14 +01145_281,4 +00660_199,0 +008482_136,14 +02054_119,12 +01427_89,4 +008482_153,14 +00462_120,13 +01161_237,17 +01804_113,7 +01578_41,14 +01165_106,5 +00867_35,5 +00761_238,3 +007832_156,2 +00677_106,14 +01045_266,4 +017692_206,5 +012402_194,2 +004082_80,11 +01879_5,2 +00276_33,11 +01767_31,14 +01091_236,12 +00607_7,14 +008372_120,11 +01423_63,2 +01330_105,6 +01901_28,0 +02049_189,13 +00485_148,13 +014232_108,0 +00158_257,5 +00474_132,2 +02028_105,2 +01490_47,7 +005392_52,1 +018392_143,1 +018392_84,11 +00390_12,14 +00934_51,11 +005392_187,1 +00703_83,11 +01044_210,12 +005392_261,1 +017232_230,15 +00159_64,2 +00065_177,1 +01046_13,14 +01210_132,6 +01423_167,0 +01834_106,8 +01787_12,13 +020052_140,11 +00721_101,14 +01877_185,4 +014122_87,0 +017752_91,2 +00282_88,11 +01045_66,4 +01407_37,4 +021462_44,18 +01643_74,14 +001022_283,16 +00934_43,0 +01814_17,5 +01769_180,2 +00883_19,11 +00772_27,7 +01925_205,8 +00505_0,2 +00550_17,5 +017672_171,14 +00783_280,5 +02162_88,12 +01493_117,1 +01488_196,13 +00287_109,15 +007182_45,19 +00242_83,4 +01814_233,5 +01161_128,17 +00417_217,7 +00567_280,2 +00438_236,2 +02030_0,14 +008482_74,17 +016052_13,14 +00772_17,14 +005282_126,2 +01924_207,14 +00867_30,0 +01688_114,5 +011082_19,12 +01228_222,14 +00588_65,13 +00957_46,4 +01092_144,17 +00697_26,9 +017072_158,0 +00009_84,2 +008372_141,11 +017692_145,9 +01048_84,14 +01228_172,14 +00848_80,17 +014972_24,2 +007222_41,17 +001602_199,11 +012562_109,14 +01272_145,4 +019412_185,14 +012402_64,12 +005062_97,4 +01959_70,6 +015972_103,0 +018392_96,11 +00275_118,12 +00232_11,14 +019622_56,0 +011082_59,4 +01972_197,3 +01953_76,12 +00228_85,1 +01240_267,2 +019042_132,12 +01001_172,5 +00768_75,7 +01541_53,5 +01972_7,2 +01408_122,14 +00232_127,13 +01723_142,15 +00607_80,11 +01240_68,12 +00730_78,18 +00722_41,17 +005392_112,1 +00024_82,17 +002802_82,4 +00450_57,4 +01437_123,11 +01693_125,0 +00674_105,14 +00490_215,7 +00519_42,7 +007092_225,19 +021912_39,7 +011612_257,17 +00065_59,1 +01118_99,14 +00546_126,3 +01351_171,14 +00916_286,5 +00867_5,14 +01904_149,2 +01278_30,2 +00474_55,2 +006742_41,14 +00729_235,14 +01044_178,4 +009512_5,14 +00413_187,4 +01707_296,7 +00280_122,2 +01688_190,5 +007762_2,14 +01161_121,17 +011912_59,7 +01706_112,2 +00681_87,14 +018132_121,11 +00485_48,4 +00408_144,11 +00674_52,14 +00475_192,1 +02005_194,11 +01045_107,4 +00474_164,2 +005092_26,2 +016842_35,4 +00287_97,15 +01361_24,0 +00552_18,7 +005282_105,2 +00607_60,6 +00718_73,19 +01623_89,11 +01981_51,5 +005502_19,5 +014072_54,12 +011612_150,17 +011912_122,7 +01941_170,14 +005092_121,2 +01408_76,14 +01210_7,9 +017692_140,9 +018772_55,4 +019592_77,6 +00232_38,12 +018772_250,4 +00528_144,4 +00160_117,11 +00292_43,11 +012722_171,2 +00528_160,0 +00041_47,12 +01941_105,14 +01351_73,17 +00102_193,16 +005882_48,15 +00566_214,8 +018392_106,11 +01361_288,15 +012722_260,12 +01597_92,0 +01568_106,12 +02138_28,2 +008482_52,17 +00761_147,12 +00506_119,2 +00567_83,2 +00509_24,2 +01092_267,12 +016922_36,2 +011912_173,14 +01578_97,14 +018342_160,8 +01065_1,14 +01597_29,0 +01256_94,2 +00677_37,14 +007832_102,17 +01693_135,0 +00041_44,12 +021722_257,14 +01707_142,1 +005092_126,2 +01500_22,4 +01693_144,0 +01371_56,14 +02162_82,17 +019242_55,14 +02191_50,7 +00474_65,2 +01431_288,11 +02042_34,13 +00951_51,0 +016882_239,5 +00916_103,2 +01001_201,5 +016842_66,14 +014882_190,13 +008372_136,11 +00688_54,4 +019252_156,3 +019042_63,2 +00462_76,13 +00761_21,14 +00964_102,8 +014272_12,14 +005282_114,2 +01427_20,4 +01924_3,14 +01688_209,5 +014372_81,11 +00287_282,4 +02027_82,14 +02146_54,18 +005502_56,18 +01767_40,14 +01145_150,4 +011082_42,5 +00783_36,2 +01101_20,14 +019412_88,14 +00539_23,6 +00408_271,13 +01408_60,14 +00539_129,1 +00450_92,13 +00720_24,0 +00462_104,13 +00280_55,2 +018652_7,14 +01158_44,4 +00023_105,11 +00128_205,4 +00628_15,7 +00158_53,14 +011912_172,14 +02054_65,2 +00935_2,14 +00228_58,11 +01568_73,2 +01723_267,15 +011912_47,2 +01723_13,4 +01431_110,11 +00793_267,14 +014372_275,11 +01605_45,14 +018772_58,4 +00102_248,16 +000232_1,2 +01001_112,5 +00567_287,2 +01688_98,5 +010012_24,12 +01330_251,15 +016932_8,4 +00628_72,7 +01623_117,14 +02127_294,17 +01582_73,5 +004532_4,5 +01145_132,4 +01134_84,10 +01278_170,4 +01182_91,13 +012402_86,2 +00768_58,7 +01509_207,0 +00697_67,0 +020052_142,11 +01330_230,8 +005882_34,4 +007212_175,12 +01431_272,11 +01119_47,11 +00306_60,7 +01331_72,7 +021622_47,17 +000792_84,9 +00674_35,14 +005092_173,12 +019242_220,14 +014232_173,0 +01643_100,14 +01626_38,7 +00674_3,14 +01775_78,12 +01769_236,9 +020572_190,3 +01145_129,4 +018342_57,8 +011912_97,7 +01605_251,11 +009512_50,0 +00677_47,14 +019412_284,14 +014232_244,2 +00342_72,17 +00546_40,14 +01330_246,15 +00079_285,9 +018792_44,4 +01184_123,14 +008402_101,2 +01981_73,5 +01361_21,0 +01688_251,5 +00546_45,14 +02127_262,17 +009162_297,5 +017232_283,15 +019712_148,12 +005882_145,13 +00505_225,12 +012722_13,2 +009342_25,1 +01272_122,2 +00438_146,2 +01488_62,13 +01330_28,12 +009352_116,14 +016922_84,1 +007092_91,6 +000792_160,15 +01636_55,0 +00546_69,15 +021622_36,12 +00747_67,2 +01839_163,1 +01877_157,4 +01437_292,11 +01361_256,15 +00175_53,2 +01812_12,2 +00394_107,14 +01693_20,14 +006742_109,14 +020052_249,11 +01428_79,14 +01366_144,5 +01509_174,0 +018772_284,4 +00981_36,11 +01568_199,2 +00450_105,13 +01929_134,0 +01408_221,14 +00607_32,11 +01769_8,2 +007182_49,19 +00456_95,12 +000792_218,15 +00588_161,15 +017072_71,4 +00475_158,9 +01925_164,3 +004172_226,7 +00490_186,2 +016052_94,5 +00228_289,2 +00242_185,2 +007222_111,17 +019592_6,6 +00280_101,12 +00793_235,14 +01228_205,14 +01925_261,8 +01500_56,4 +006972_53,12 +00875_24,2 +016882_6,5 +00552_49,7 +01144_46,9 +020572_161,3 +01636_135,14 +00722_138,17 +001022_236,16 +00426_83,0 +01210_286,9 +00964_149,8 +01087_277,5 +00475_139,11 +021462_86,18 +01605_37,14 +009622_73,3 +00528_190,0 +00729_251,14 +021462_7,14 +014072_52,12 +00232_102,13 +01044_31,4 +013302_242,6 +02172_33,14 +001242_109,19 +00314_203,12 +00280_15,14 +010872_297,5 +00840_109,7 +021462_54,18 +00681_63,5 +01636_9,14 +016092_12,17 +016882_214,5 +01101_119,0 +017692_61,9 +01045_6,2 +011912_17,14 +002752_101,14 +00883_72,11 +01605_247,11 +017022_70,14 +01622_75,0 +002802_60,12 +01813_104,11 +01692_68,1 +007832_69,17 +00552_72,7 +008482_5,14 +016052_102,5 +01493_68,1 +015972_61,0 +01240_191,4 +01490_14,7 +007222_93,17 +00840_85,2 +01330_239,8 +00011_71,4 +01787_8,13 +019042_109,12 +01706_44,2 +00181_22,0 +00825_7,12 +00333_86,0 +01049_46,7 +01904_155,2 +01240_82,4 +01045_148,4 +00438_31,2 +017232_85,15 +00993_255,14 +010012_96,5 +010012_163,5 +01763_176,12 +01371_66,14 +00535_88,2 +014972_17,0 +01312_68,7 +019712_211,2 +000092_270,12 +00546_177,14 +01509_51,0 +01431_3,11 +007292_123,14 +01177_69,15 +01101_159,14 +00916_187,2 +007292_298,14 +019412_83,14 +00964_150,8 +007092_50,19 +01158_156,4 +009352_35,7 +011612_64,17 +01723_192,15 +011912_190,14 +000232_103,11 +00709_156,6 +00535_274,6 +01814_253,5 +014272_76,9 +01091_228,7 +00296_4,14 +01119_82,11 +019712_244,12 +01361_6,5 +00783_87,17 +01366_136,5 +01165_0,14 +00935_36,7 +01330_131,6 +00160_92,11 +00588_180,4 +017692_271,2 +01184_57,5 +01437_32,11 +01065_89,18 +020572_98,12 +01091_145,5 +01145_284,4 +01707_266,7 +000242_62,7 +01877_27,4 +00660_147,0 +001022_84,16 +014122_16,0 +01688_25,5 +01814_223,5 +00505_46,2 +01834_164,8 +01877_114,4 +01158_92,4 +018652_59,18 +01626_10,2 +007292_171,14 +02149_0,17 +00567_74,2 +02186_93,5 +01158_120,4 +017232_4,4 +011912_187,14 +01351_80,17 +00964_0,14 +00628_32,7 +00550_58,18 +00474_172,2 +01971_280,12 +00941_36,0 +01948_0,12 +007222_13,17 +014232_162,0 +00408_59,1 +00934_41,5 +00456_25,12 +00721_235,14 +016052_95,5 +017022_89,14 +00503_294,6 +01437_78,11 +014272_92,2 +00935_79,7 +00783_159,2 +00916_274,5 +01956_40,1 +00964_262,14 +000232_187,2 +001602_154,11 +00528_108,2 +01839_159,1 +018392_95,11 +013302_82,6 +004532_103,9 +000792_24,9 +012722_125,4 +01001_210,5 +010872_182,5 +00916_157,2 +004532_148,9 +019042_21,2 +00021_141,12 +01371_57,14 +01971_103,12 +019252_77,3 +00951_147,14 +005882_89,13 +00793_43,14 +00175_84,2 +015972_20,0 +01723_98,15 +01929_190,0 +019042_13,2 +01001_72,12 +003062_39,7 +00628_119,7 +00718_69,19 +00158_155,5 +01283_77,14 +00688_56,4 +00228_201,9 +01145_48,2 +00382_50,17 +006092_27,11 +01769_269,2 +017752_96,12 +00474_21,2 +01748_101,0 +00793_298,14 +010012_32,12 +01609_34,17 +01834_272,8 +011082_29,15 +02054_58,2 +01977_47,12 +02062_91,4 +004532_65,9 +01210_242,9 +01001_45,4 +00916_111,2 +011612_9,17 +00306_95,14 +01091_96,0 +01408_97,14 +012722_113,2 +02057_58,12 +002752_23,14 +01971_218,2 +000092_196,12 +01240_105,12 +007182_75,19 +01626_86,7 +008252_49,4 +01804_12,7 +019712_218,2 +00509_3,2 +007832_154,2 +02127_96,17 +01959_34,6 +01134_257,10 +01707_111,1 +007222_65,17 +007092_291,12 +01165_43,5 +00438_271,2 +006092_18,5 +01488_137,1 +017692_40,2 +01144_9,5 +00793_122,14 +01623_122,14 +00761_107,14 +012722_245,12 +00503_11,6 +021912_31,7 +01723_261,15 +00413_107,0 +013302_47,9 +01643_35,12 +00088_30,5 +007222_105,17 +01622_3,14 +00566_196,8 +00840_136,7 +017672_123,14 +00566_225,8 +01706_222,2 +01493_279,1 +00563_44,7 +017692_170,0 +01423_34,2 +00408_189,11 +00242_153,12 +012282_252,14 +02138_35,14 +00577_85,7 +01261_25,2 +018652_103,18 +00350_145,5 +01165_82,5 +02049_91,3 +00024_45,7 +00916_145,2 +00577_36,7 +001602_262,13 +016052_270,11 +00390_61,5 +009512_52,0 +001112_85,14 +01977_261,3 +019242_79,14 +00825_42,12 +01210_52,17 +01972_215,3 +01877_281,4 +00079_184,9 +010872_26,14 +02172_93,14 +00761_153,6 +00024_47,17 +008922_56,0 +01568_133,2 +00287_183,15 +00275_131,14 +009162_237,2 +00282_60,14 +017072_21,2 +00124_60,4 +01723_139,15 +004672_50,11 +00660_244,2 +007092_181,19 +00709_162,4 +01972_190,13 +02149_36,17 +013712_71,14 +019412_77,14 +01261_97,2 +00681_31,5 +00546_132,3 +00993_77,6 +00509_177,2 +02172_4,14 +01182_88,13 +01358_61,1 +01210_82,9 +019042_9,2 +009352_16,14 +01210_68,17 +01623_58,11 +01909_121,2 +000092_129,2 +01901_191,14 +008402_31,2 +008252_32,12 +00892_47,0 +01165_5,14 +00916_66,2 +004532_159,9 +00875_9,2 +00840_101,2 +00730_155,14 +01108_83,14 +00350_1,14 +01361_294,15 +008402_111,7 +016882_118,14 +000792_66,9 +007092_36,19 +014232_149,0 +010012_49,2 +01882_55,11 +00438_145,2 +01509_46,0 +017232_189,15 +01959_20,6 +01001_64,12 +01853_68,5 +00840_125,7 +006972_109,4 +00729_236,14 +02057_169,3 +00539_136,1 +000242_26,7 +02172_256,14 +01493_284,1 +019712_155,2 +01706_76,2 +01407_8,2 +014372_294,11 +01769_205,0 +00490_210,2 +02057_66,2 +00128_145,2 +01191_81,7 +01261_54,2 +004082_6,2 +004532_80,9 +012722_5,2 +010012_34,12 +02127_151,17 +01814_83,11 +005882_71,13 +013712_49,14 +00747_5,7 +02187_120,16 +00503_160,5 +00916_123,2 +00776_3,14 +02172_15,14 +01488_95,13 +01901_11,14 +01693_244,0 +00394_40,17 +02028_41,9 +01834_229,8 +02062_159,4 +01144_116,2 +01001_163,5 +00350_30,14 +01366_63,17 +00128_213,12 +00979_26,1 +02187_273,16 +01509_213,0 +001602_57,11 +003122_6,0 +01909_160,2 +006742_71,14 +00776_30,14 +016882_102,5 +00426_39,0 +02127_141,17 +02027_23,18 +008402_27,2 +01493_205,1 +01877_263,4 +016052_97,5 +00566_288,8 +00390_8,14 +00916_40,2 +02187_208,16 +00597_81,14 +000792_284,9 +01972_205,3 +019622_9,0 +00475_71,9 +01182_37,11 +01161_286,17 +00718_122,19 +021772_37,4 +01228_92,14 +01408_213,14 +01707_144,1 +01956_49,15 +02049_164,13 +00426_18,0 +005882_84,13 +01968_88,17 +001242_227,0 +02062_2,2 +01763_177,12 +01409_6,14 +02021_47,11 +00275_162,14 +02162_128,5 +017752_137,12 +01941_237,14 +01278_79,12 +01094_78,11 +01706_255,2 +01981_13,14 +01882_75,14 +017672_142,14 +018392_173,4 +01201_28,11 +01358_37,1 +00539_103,1 +019252_2,14 +00793_220,14 +018132_98,11 +01048_15,14 +01971_201,2 +011912_182,14 +005092_6,2 +01688_70,5 +01092_222,6 +00276_24,11 +00175_91,2 +01925_104,3 +02088_14,0 +019712_240,12 +016922_62,5 +00276_59,11 +01201_65,11 +016052_265,11 +016932_24,17 +00232_97,13 +00519_71,11 +010912_19,12 +008372_127,11 +01509_30,2 +02054_179,4 +00124_90,19 +01488_161,13 +01977_57,14 +00567_68,2 +00566_271,8 +00506_16,2 +01692_65,1 +01351_11,2 +000092_116,7 +000792_220,15 +007832_134,12 +002802_77,4 +019042_86,4 +01812_57,4 +00538_84,12 +00567_219,2 +00528_110,2 +00041_54,12 +007092_259,6 +00535_96,12 +01688_249,5 +02138_116,4 +01568_33,2 +00453_103,9 +019242_95,14 +01191_14,14 +00242_5,2 +01261_92,2 +01568_2,2 +00951_86,0 +01879_80,12 +013712_70,14 +01351_111,7 +01929_103,0 +01219_1,14 +01509_220,11 +005282_167,0 +01767_243,14 +01924_148,14 +00296_58,7 +01412_10,0 +02049_207,13 +01636_46,0 +01834_214,8 +007292_234,14 +00442_92,2 +01769_144,9 +00128_218,12 +01087_106,5 +00776_45,14 +00041_5,2 +017692_257,2 +019252_140,3 +01158_41,4 +00111_54,17 +01409_92,0 +01161_99,17 +00761_92,14 +00079_257,9 +01001_43,4 +01971_84,4 +00450_201,14 +00964_234,15 +00519_78,11 +00535_103,12 +01769_62,9 +01361_20,0 +00413_29,0 +01049_10,7 +017072_15,2 +00761_29,14 +01431_170,11 +005282_81,2 +00588_49,15 +002752_122,14 +01431_284,11 +01767_200,14 +018342_210,8 +00128_68,12 +01448_42,6 +01101_49,7 +010012_148,5 +00783_63,2 +019242_51,14 +00025_42,17 +01007_203,0 +01877_237,4 +00232_167,14 +007182_62,19 +00342_25,17 +01361_238,15 +02062_118,4 +00158_175,5 +00474_294,2 +01925_28,14 +01240_90,2 +00159_61,2 +00490_219,7 +00607_83,11 +01058_116,4 +01091_237,12 +004172_236,6 +00490_184,2 +00697_69,0 +013302_190,13 +00539_209,1 +01091_87,16 +00158_96,11 +00350_58,14 +00011_88,4 +005502_118,5 +00546_58,4 +01001_284,5 +007092_111,1 +01431_88,5 +00588_21,12 +00783_208,2 +021722_13,14 +01312_101,14 +02054_298,4 +00729_100,14 +007212_50,4 +00417_111,6 +00065_47,1 +01331_62,17 +01702_68,14 +012282_21,14 +01879_33,4 +021622_118,18 +005502_54,18 +00793_74,14 +01161_69,17 +012282_62,12 +01767_38,14 +01723_237,15 +01509_173,0 +001022_259,16 +012282_298,14 +01865_110,18 +013302_252,15 +013332_23,2 +006972_1,2 +01509_104,0 +01706_72,2 +00552_30,7 +012562_1,14 +01001_86,5 +00528_145,4 +02012_90,17 +01408_48,14 +00111_9,14 +01423_178,0 +01977_183,8 +017232_221,15 +01909_100,2 +009162_0,2 +01427_91,12 +01582_45,7 +01909_14,2 +00957_75,4 +01813_38,11 +02030_48,14 +01007_209,0 +01839_171,4 +018652_118,18 +005092_86,2 +01177_10,14 +016922_109,1 +007212_141,12 +01007_22,12 +01366_97,17 +007092_210,19 +00506_47,2 +00282_53,17 +01261_105,2 +01909_94,2 +007182_21,19 +00467_58,11 +01228_228,14 +00079_6,9 +00509_120,2 +01877_152,4 +004082_236,11 +000092_144,7 +00276_99,11 +01941_74,14 +01431_95,11 +01968_85,7 +009512_51,0 +01693_277,0 +00566_142,8 +00228_214,9 +009162_190,2 +018342_194,8 +00417_298,11 +019712_217,2 +01636_63,0 +007182_119,19 +000792_156,0 +019242_84,14 +00306_17,14 +01688_223,5 +01769_177,2 +017672_250,14 +01972_115,13 +01977_122,8 +00413_124,0 +02030_17,14 +000232_160,5 +007092_285,12 +01763_108,4 +00783_6,2 +02005_49,11 +00232_147,4 +00475_243,9 +00566_112,8 +01431_4,11 +02149_44,17 +017482_84,0 +01929_167,0 +01437_116,11 +02172_166,14 +01626_12,2 +00065_274,12 +01814_239,5 +01240_188,4 +00041_85,12 +004082_122,13 +01210_130,6 +016432_66,4 +00546_8,14 +00128_56,4 +018392_65,11 +02005_65,11 +00697_39,2 +00840_210,7 +01007_153,13 +00475_27,5 +01578_33,14 +004172_53,17 +01879_66,4 +00615_83,11 +01693_203,0 +017072_106,0 +00793_264,14 +017672_242,14 +014272_105,9 +00261_3,4 +01493_251,1 +00577_40,7 +00079_63,9 +01707_280,7 +01578_171,14 +00453_235,9 +01366_66,17 +01636_133,14 +016932_117,0 +00821_2,14 +00181_9,14 +01046_79,7 +01423_90,0 +00124_174,0 +01048_18,5 +01330_220,6 +012722_84,2 +007182_27,19 +00413_221,14 +00490_112,2 +01500_43,4 +00009_9,2 +00102_291,16 +005062_105,2 +004172_31,6 +01361_298,15 +016932_56,0 +018792_42,5 +015972_32,0 +02127_270,17 +00883_74,11 +00009_153,12 +01048_41,5 +005882_212,12 +012282_263,14 +019242_174,14 +01605_132,5 +00442_159,0 +00761_80,14 +00041_30,12 +003062_68,7 +01256_78,12 +019412_97,14 +017672_82,14 +015972_0,14 +018392_144,1 +00962_15,0 +01283_78,14 +009642_295,14 +02054_257,2 +01240_214,12 +014372_130,11 +01605_1,14 +01134_255,10 +01763_97,2 +00475_6,5 +01158_61,0 +00442_178,4 +00964_119,8 +013302_43,9 +00588_236,2 +018342_293,8 +01261_32,2 +018392_8,2 +00282_26,7 +011772_90,4 +00490_182,2 +00674_101,14 +02138_151,13 +00841_61,14 +02146_87,18 +01924_38,14 +006972_2,2 +01361_82,4 +00314_214,4 +01688_62,5 +01272_91,2 +00825_85,2 +01698_14,14 +00979_126,4 +00720_13,0 +02187_117,16 +003062_0,14 +00450_7,14 +01091_220,6 +005282_6,2 +014122_60,0 +005282_221,0 +017692_124,0 +01272_210,4 +00528_153,0 +004532_45,9 +01693_0,2 +009512_110,0 +00761_78,14 +00232_65,13 +00528_132,4 +00442_144,0 +00408_5,2 +00124_105,19 +01953_277,12 +00761_140,14 +02187_215,16 +01330_127,9 +00453_248,9 +00314_103,4 +018652_135,14 +01622_119,14 +02172_20,14 +00023_10,2 +00535_185,0 +012402_198,2 +01622_110,0 +00490_264,5 +01330_284,1 +01065_61,18 +02172_176,14 +00079_145,9 +00509_136,12 +008372_43,11 +005392_252,1 +012402_46,2 +021462_111,18 +01688_88,5 +00242_202,12 +00261_28,2 +02094_76,12 +00242_266,4 +01622_95,5 +00867_27,14 +00413_176,12 +00426_139,0 +00024_34,7 +00175_32,13 +010012_263,5 +01044_23,4 +00867_38,5 +016982_69,17 +00721_78,12 +00509_12,12 +01493_175,1 +01834_76,8 +00442_138,4 +001112_78,14 +00729_190,12 +00615_96,11 +01177_70,15 +01437_36,11 +021622_125,1 +01948_152,13 +019412_202,14 +02127_97,17 +01210_195,6 +00462_77,13 +00314_213,4 +00158_22,14 +00783_250,5 +020572_38,2 +01228_91,14 +00964_287,14 +01500_10,9 +01412_86,0 +00102_214,16 +02094_122,12 +00474_111,2 +00615_9,11 +00981_61,11 +01769_83,11 +019252_95,3 +01953_138,4 +00588_202,2 +01812_109,2 +00615_145,11 +01636_87,0 +01490_61,7 +001022_67,16 +008402_74,2 +00160_53,11 +00935_87,7 +004532_186,9 +014232_152,0 +00993_0,14 +000092_117,7 +00453_23,9 +000792_6,9 +021622_3,14 +016052_161,11 +01119_99,11 +01763_157,2 +02057_128,6 +01972_219,3 +01814_211,11 +009342_40,5 +01929_176,0 +01901_34,5 +00993_116,7 +011612_94,17 +01814_139,5 +007292_288,14 +01408_185,14 +00761_63,14 +004082_228,11 +007292_222,14 +008482_110,17 +00485_54,1 +00615_85,11 +018652_86,18 +016432_76,14 +007092_102,11 +01493_152,1 +005502_120,14 +01597_79,0 +00962_84,3 +017022_4,14 +01509_168,0 +018342_107,8 +012722_59,4 +00228_219,5 +01437_29,11 +00567_164,2 +02054_21,2 +00721_253,14 +02162_41,12 +019712_291,17 +00065_231,12 +011612_211,17 +008482_61,17 +00505_160,12 +01693_79,0 +01007_89,0 +00009_150,0 +02054_75,4 +02172_115,14 +00314_31,2 +01568_97,2 +01493_45,11 +012402_39,2 +00485_229,1 +002802_154,2 +01804_13,7 +017672_113,14 +00490_276,5 +00021_50,3 +013302_75,3 +01408_170,14 +008832_66,11 +02146_163,14 +004082_111,1 +01953_112,4 +00453_46,9 +010652_14,11 +02149_5,17 +00747_29,9 +00588_135,13 +00128_251,12 +019412_255,14 +00490_298,5 +017752_28,2 +00841_76,14 +02138_149,13 +02127_114,17 +014232_228,0 +01904_164,12 +00485_253,1 +007832_44,2 +00306_39,7 +01688_27,5 +013302_156,18 +018652_24,11 +01968_16,14 +01091_6,2 +00883_8,11 +01201_109,14 +00275_107,14 +007092_245,19 +011612_262,17 +01330_89,1 +00442_170,4 +01091_161,5 +01924_35,14 +01723_72,15 +01541_47,5 +00538_1,14 +004672_14,11 +00951_50,0 +002802_186,2 +001242_244,0 +00102_163,16 +016932_165,0 +00023_169,2 +01272_77,2 +01409_53,4 +020572_204,3 +018772_213,4 +00821_134,14 +005882_216,12 +02054_140,2 +01427_71,1 +008372_91,11 +01351_128,7 +020052_30,11 +00124_84,19 +01568_255,2 +00390_109,14 +02127_6,2 +00282_43,17 +01702_36,14 +01684_28,4 +00413_171,12 +01723_190,15 +00065_2,5 +00450_25,14 +018652_60,18 +01228_163,14 +01688_148,14 +00490_234,5 +00124_107,19 +01488_118,0 +00934_57,11 +021772_21,4 +00158_297,5 +02062_40,2 +000792_189,9 +01698_10,14 +00456_153,2 +01962_83,0 +005882_102,13 +00102_28,0 +00438_160,2 +01941_294,14 +00848_87,17 +00615_119,11 +00408_90,11 +00837_68,11 +007292_158,14 +02054_152,12 +00709_88,6 +01775_158,12 +00509_232,2 +01351_109,7 +01409_59,4 +020572_11,2 +021722_83,14 +00892_25,0 +01361_186,3 +01877_195,4 +002752_8,14 +01228_226,14 +00160_183,11 +01158_37,12 +000792_263,9 +01437_205,11 +007222_32,17 +02028_55,0 +01877_32,4 +01626_139,2 +012192_67,5 +01092_46,17 +01767_115,14 +01001_252,5 +00408_161,11 +01925_8,14 +005092_185,2 +00875_58,2 +01361_126,3 +013302_76,3 +00761_229,3 +01330_297,9 +01330_175,1 +020052_233,11 +01366_157,14 +008832_31,11 +01941_155,14 +01046_86,7 +01351_2,2 +01605_270,11 +02030_90,16 +01448_85,6 +01877_16,4 +00577_31,7 +017072_221,0 +005392_48,1 +01787_1,13 +001602_194,1 +019592_83,6 +00287_16,4 +006092_77,14 +00916_164,2 +01977_117,8 +02030_191,16 +001602_275,3 +00722_4,17 +005092_90,2 +021462_160,14 +00453_138,9 +01853_14,2 +012402_24,2 +01948_86,13 +00709_54,19 +01941_229,14 +021622_48,17 +00394_55,17 +00934_8,9 +007832_152,2 +01775_133,2 +007212_29,12 +00453_259,9 +005882_68,13 +005092_136,12 +01688_84,5 +00783_255,5 +005092_182,12 +01769_218,9 +01877_120,15 +02138_264,14 +02049_109,13 +014372_180,11 +02005_160,11 +01191_57,7 +007222_36,17 +004082_292,11 +00588_134,13 +00261_55,12 +006092_3,14 +01901_19,2 +00577_61,7 +01723_262,15 +018132_131,11 +021622_19,14 +02049_155,13 +01437_261,11 +01007_210,0 +01087_176,5 +01331_4,14 +01145_239,4 +01941_84,14 +00730_65,18 +016922_85,1 +00793_50,14 +00287_134,15 +010872_133,5 +01228_2,14 +018792_105,2 +018652_115,18 +01228_124,14 +01706_157,2 +00228_260,11 +018342_95,8 +00867_194,14 +00382_112,19 +018122_20,2 +014122_95,0 +019412_107,14 +01814_287,11 +01981_25,5 +005882_116,13 +001602_183,11 +01582_52,2 +00128_107,4 +021772_40,4 +021622_57,7 +01597_49,0 +01144_112,4 +01925_198,8 +018342_53,8 +005392_141,1 +00232_152,14 +00306_70,7 +00761_75,14 +01853_117,14 +00011_25,0 +013302_89,1 +017072_125,0 +01698_128,14 +005502_91,18 +01087_72,5 +019622_36,0 +02030_88,16 +01812_87,2 +02057_141,3 +02172_172,14 +00597_50,5 +007292_79,14 +00601_37,7 +00964_206,8 +01568_20,2 +00453_211,9 +01971_133,12 +01968_42,7 +02042_25,4 +01605_118,5 +00456_138,12 +009642_111,8 +01578_245,14 +00964_84,3 +01568_149,12 +01925_274,8 +01568_15,2 +00079_271,0 +01103_102,14 +00275_109,14 +01769_59,9 +00993_210,6 +01046_2,14 +01763_78,2 +019622_101,0 +01901_88,0 +00408_285,11 +00519_137,7 +00964_13,14 +010942_58,11 +02049_221,3 +01158_36,7 +00438_0,2 +006742_19,14 +00979_44,1 +01437_238,11 +01228_250,14 +01493_10,11 +00079_20,9 +01723_115,15 +01688_6,5 +005392_254,1 +01283_13,2 +02146_21,5 +01706_68,2 +016052_50,2 +01626_16,2 +02127_240,17 +00506_48,2 +007182_35,19 +01767_138,12 +00761_159,6 +02138_243,14 +004672_28,11 +01065_33,18 +00660_56,0 +01261_9,2 +01177_58,4 +01493_100,1 +00848_61,17 +01044_235,12 +00660_238,0 +01977_101,8 +01228_270,14 +018132_20,11 +00957_66,2 +00783_238,5 +01219_109,5 +01210_123,6 +01767_60,14 +00550_54,18 +019242_36,14 +019712_280,12 +01622_132,14 +019592_27,6 +016932_79,0 +006972_34,4 +02062_71,12 +01977_108,8 +01058_51,2 +018342_146,8 +01605_70,5 +004172_6,14 +01134_137,10 +00009_78,12 +00615_153,11 +021722_76,14 +01437_247,11 +01814_1,5 +01707_2,2 +00453_229,9 +02187_105,16 +00519_11,14 +01144_204,12 +01427_94,17 +01330_76,3 +007092_64,19 +01158_11,4 +01412_54,0 +021722_45,14 +02012_127,14 +01582_27,17 +01428_62,12 +012402_234,12 +016932_99,0 +014232_6,2 +00160_73,11 +01971_165,2 +00509_34,2 +01605_245,11 +01953_195,4 +00462_150,13 +01879_47,2 +013302_55,18 +02138_219,13 +01228_89,14 +01578_184,14 +00509_60,12 +00450_195,14 +02172_167,14 +000092_152,12 +01748_16,0 +018342_287,8 +017072_267,7 +00505_38,2 +02049_44,3 +00287_294,4 +001602_268,13 +00181_81,0 +01045_212,4 +00287_102,15 +00567_202,2 +017482_75,0 +01427_33,17 +004532_67,9 +012402_124,2 +00821_92,5 +01981_92,5 +00160_238,11 +00111_55,17 +004172_118,17 +00442_164,0 +01813_51,11 +01201_44,11 +00615_122,11 +000092_246,12 +017752_15,2 +011612_243,17 +01007_55,0 +00390_30,5 +02094_22,2 +00160_142,11 +010872_136,5 +019712_203,2 +01693_241,0 +02172_207,14 +01437_220,11 +01134_13,16 +01091_113,5 +00688_55,4 +00102_149,16 +01437_157,11 +01488_211,0 +01409_73,0 +014882_150,0 +00453_71,9 +00350_155,9 +001112_50,17 +00181_71,0 +001602_204,11 +01119_36,11 +012402_19,2 +010942_44,11 +01925_0,14 +00709_92,5 +02172_138,12 +021912_68,7 +00287_121,4 +010652_67,18 +01688_281,2 +00490_242,5 +01228_90,14 +012722_151,2 +00506_26,2 +01494_58,7 +012722_29,2 +00287_0,4 +01865_18,11 +01431_195,11 +00333_55,2 +01182_7,14 +00417_83,17 +014372_137,11 +01210_222,9 +012282_133,14 +02187_221,16 +000792_19,9 +021462_43,18 +01158_100,4 +017672_289,14 +017692_147,9 +00128_249,12 +00417_199,17 +01134_294,10 +01865_35,5 +010652_13,11 +00615_204,11 +01622_29,13 +01959_84,6 +01948_3,12 +00426_129,0 +00228_124,9 +01407_0,4 +013302_145,9 +00660_61,0 +02186_13,14 +01044_89,4 +01925_167,8 +00282_52,17 +004532_265,9 +01087_29,14 +00577_76,7 +01767_75,14 +01775_16,2 +021722_183,14 +00964_241,4 +01972_169,13 +018772_151,4 +01361_182,3 +017692_248,11 +01145_231,4 +016052_203,11 +00490_250,5 +005092_138,12 +02042_87,14 +01361_291,15 +005282_184,0 +020052_53,11 +01333_33,4 +00964_17,14 +01283_59,2 +00964_133,8 +001602_178,1 +00848_3,14 +000092_184,2 +01007_146,19 +01427_2,14 +018772_41,4 +01879_21,2 +00783_297,5 +018652_62,18 +01371_26,14 +00160_205,11 +01814_255,5 +01437_146,11 +021772_3,12 +005092_17,12 +00609_75,14 +01045_261,4 +01494_41,7 +00333_104,4 +01118_13,14 +010912_173,11 +00840_223,2 +01182_65,0 +019592_5,6 +01371_3,14 +009162_108,2 +018122_95,2 +01834_69,8 +00916_202,2 +00390_35,5 +01488_131,13 +01501_6,14 +00677_15,14 +00287_18,4 +009642_56,3 +01968_68,7 +01191_121,7 +012722_209,4 +00228_70,12 +01948_172,13 +01431_132,11 +01605_246,11 +00528_186,0 +00390_69,5 +000232_65,3 +02094_33,12 +00837_8,12 +00333_51,2 +02187_54,16 +00438_149,2 +01636_45,0 +004082_22,1 +00041_71,12 +007292_59,14 +00282_41,17 +02162_62,7 +01723_17,4 +008372_31,11 +00776_28,14 +01493_184,1 +00413_201,12 +01953_114,4 +01119_46,11 +018132_143,14 +00442_173,4 +021722_51,14 +018342_152,8 +02057_30,2 +019042_1,2 +00528_9,2 +00228_88,11 +019252_208,8 +012402_207,12 +016982_2,14 +00314_181,12 +02062_10,2 +005282_78,2 +004082_185,11 +01924_192,14 +012192_40,5 +00025_18,17 +00546_185,14 +007092_14,19 +00588_36,4 +00111_3,14 +01924_176,14 +010652_1,14 +01101_91,1 +02127_71,17 +00962_58,3 +008482_151,14 +01767_181,14 +01981_65,5 +00485_70,1 +016092_8,17 +00176_3,1 +018772_163,15 +017692_46,5 +01568_139,2 +00660_126,0 +008252_12,12 +01219_25,5 +00761_116,14 +00485_244,1 +01256_87,4 +01839_128,1 +00102_72,16 +02191_18,7 +007832_64,2 +005282_180,0 +00660_48,0 +00158_130,5 +01609_25,17 +00065_139,1 +01929_118,0 +02177_14,4 +01278_171,4 +01103_93,14 +00128_283,12 +01493_167,1 +02191_81,7 +00935_62,7 +00175_35,13 +020052_244,11 +007832_186,2 +00079_5,9 +00158_267,5 +013302_33,17 +00467_47,11 +00021_88,2 +01953_230,4 +00550_82,18 +01103_2,14 +00438_20,2 +010872_7,14 +008372_52,11 +00567_73,2 +00408_208,11 +010012_65,12 +00442_23,14 +00539_279,0 +018132_133,11 +01283_43,2 +00793_128,14 +019252_51,12 +01048_76,14 +02042_90,15 +00065_50,1 +00474_207,2 +01688_158,14 +01437_58,11 +01501_71,14 +01158_151,4 +00009_59,12 +00102_247,16 +00456_129,12 +01007_4,2 +00935_10,14 +00306_48,7 +01500_20,19 +01361_138,3 +018392_184,1 +01953_235,4 +01977_63,6 +016932_0,2 +01361_227,15 +00528_151,0 +01839_142,1 +01191_173,14 +012722_35,2 +01412_69,0 +01493_49,1 +00102_259,16 +00450_135,13 +008832_45,11 +01688_183,5 +000092_128,2 +01623_69,11 +018132_40,11 +012402_137,12 +017692_9,2 +02146_165,14 +01541_21,5 +00892_8,0 +01431_249,11 +00552_38,7 +01431_267,11 +018772_54,4 +01767_142,14 +01366_18,14 +01541_62,5 +02138_225,8 +012722_52,2 +00783_174,2 +02049_238,3 +016882_267,5 +00124_147,19 +00426_101,0 +011612_55,17 +01312_45,7 +01371_14,12 +01767_209,14 +01509_194,0 +01723_120,15 +01210_102,6 +00023_59,3 +01001_0,2 +012722_138,4 +01953_225,4 +00102_15,2 +01509_115,0 +02088_32,0 +011612_119,17 +01688_218,5 +01909_81,12 +00588_52,15 +02049_43,8 +01408_178,14 +01087_69,5 +00825_75,12 +01092_89,17 +00417_22,6 +021462_90,18 +017672_167,14 +01177_62,4 +01707_42,12 +01330_106,9 +005062_57,6 +01959_82,6 +00729_124,14 +01688_96,5 +01184_122,14 +019242_80,14 +005092_95,12 +01330_152,9 +01622_78,0 +02005_58,11 +01981_115,5 +00519_67,11 +00567_191,5 +01707_9,2 +01431_182,11 +00314_47,2 +00485_163,1 +00282_62,5 +005282_42,2 +010012_20,12 +019242_108,14 +00607_77,11 +00413_184,12 +00528_191,0 +01578_11,14 +01407_46,2 +00941_4,19 +01272_93,2 +01582_57,2 +001602_267,13 +02054_270,12 +01145_214,4 +007092_154,5 +012402_9,2 +00528_99,2 +00280_31,12 +01409_239,14 +00730_19,14 +01925_102,3 +01971_260,4 +00159_4,4 +001602_58,11 +016052_17,14 +009162_82,2 +02005_254,11 +01775_157,12 +016432_107,14 +016052_205,11 +008482_39,17 +00615_10,11 +019252_276,8 +00979_101,1 +019712_45,2 +01723_76,15 +011912_183,14 +000792_246,9 +016052_133,5 +000792_188,9 +01210_171,6 +00503_188,9 +01408_24,14 +00438_180,2 +00615_212,11 +00011_58,12 +00438_237,2 +00539_21,6 +00563_99,2 +01941_71,14 +00065_82,5 +01278_150,12 +02172_97,14 +018652_131,5 +018342_245,8 +00485_265,4 +00935_71,7 +00111_45,17 +009622_30,0 +00993_55,6 +00563_20,2 +017482_103,0 +008482_62,17 +004082_225,11 +01007_151,13 +01092_156,6 +00546_119,3 +01578_29,14 +00426_51,0 +014882_147,0 +02057_101,12 +00951_155,14 +01087_26,14 +008402_7,2 +016842_8,14 +012562_57,4 +00490_4,2 +00408_151,11 +016052_39,14 +00535_133,9 +00065_181,1 +00287_94,15 +01748_78,0 +012282_258,14 +00160_62,11 +01330_59,18 +02027_26,18 +00761_193,3 +01578_215,14 +00467_55,11 +013302_271,15 +00065_118,11 +02172_80,14 +00442_250,4 +02146_134,5 +02054_154,12 +00490_227,5 +00408_74,11 +00158_168,5 +01814_145,5 +01177_60,4 +01693_61,0 +00088_15,2 +009512_131,14 +00660_135,0 +018792_50,4 +00538_63,1 +00729_55,14 +01971_109,12 +005282_100,2 +01839_135,1 +00408_64,1 +01145_83,4 +01763_163,2 +010652_74,18 +00875_96,2 +019622_135,0 +01228_251,14 +00275_14,12 +02030_18,14 +00539_299,1 +01177_110,14 +00577_9,14 +01568_185,12 +007222_7,17 +000092_153,12 +01692_11,14 +018792_60,4 +00453_267,9 +00382_24,7 +00065_239,12 +009512_163,14 +017072_197,0 +02127_30,2 +01358_24,1 +00979_47,1 +01094_3,14 +017072_127,7 +01278_191,2 +00474_13,2 +00467_27,11 +017232_264,15 +01488_132,13 +00821_29,5 +01210_10,9 +00475_104,9 +00079_151,9 +00783_229,5 +019592_74,6 +014882_33,0 +00964_33,4 +01240_52,12 +01087_154,5 +01144_137,2 +01834_121,8 +019712_29,2 +01578_85,14 +01118_59,7 +00916_4,2 +01366_131,5 +01605_135,5 +00538_101,17 +01763_262,2 +00867_91,17 +00503_87,1 +01968_53,7 +01330_53,9 +00981_44,11 +004172_111,6 +01240_192,4 +005882_171,4 +009512_71,0 +00730_74,18 +009162_188,2 +017672_59,14 +00964_23,14 +01953_139,4 +01228_280,14 +01283_37,2 +01409_214,14 +00128_1,12 +00128_196,12 +00848_13,14 +01092_261,17 +00539_230,13 +01145_176,4 +016922_38,2 +00306_23,7 +00729_202,14 +01493_113,1 +014232_148,0 +012402_227,12 +01191_21,14 +007092_186,19 +00079_74,9 +01101_141,14 +01361_277,15 +000092_266,7 +011612_294,2 +01605_133,5 +005392_227,13 +01814_34,5 +01769_74,9 +004672_21,11 +00916_120,2 +00793_75,14 +011912_31,14 +00578_98,17 +01240_106,12 +020052_192,11 +00450_100,13 +01428_66,14 +01228_179,14 +00681_38,5 +00552_86,2 +01045_274,4 +018772_20,4 +016052_290,11 +00474_116,2 +00450_80,13 +00721_165,14 +00102_268,16 +01924_22,14 +00981_30,11 +02172_135,12 +019042_53,12 +01623_49,11 +01834_281,8 +00964_78,3 +00232_49,4 +018122_8,2 +00314_189,4 +01909_137,2 +00776_101,14 +01331_69,7 +00065_48,1 +00175_14,4 +016882_213,5 +01692_43,2 +01091_38,12 +018122_100,2 +01046_8,14 +01330_209,9 +005092_79,2 +00916_124,2 +019412_177,14 +002802_1,14 +004172_128,17 +01409_136,0 +01228_51,2 +00964_204,8 +02187_27,16 +01161_251,17 +01048_42,5 +01408_50,14 +01698_21,17 +001022_281,16 +001602_22,2 +01804_130,4 +01814_169,11 +00535_9,2 +021912_85,7 +021622_41,12 +014882_114,0 +02012_17,14 +01101_145,14 +02021_16,5 +019412_57,14 +00951_74,0 +00181_93,0 +00408_122,13 +01941_26,14 +01769_243,1 +017022_24,4 +02054_245,2 +02062_142,4 +00438_254,2 +02042_95,15 +009642_180,8 +00615_108,11 +01707_130,7 +005282_129,4 +02027_152,14 +01330_261,4 +01929_169,0 +01706_67,2 +00761_142,14 +00867_161,14 +02186_50,5 +000232_104,11 +012192_140,14 +00538_58,17 +00413_33,0 +01437_228,11 +017072_44,12 +01723_104,15 +00228_158,9 +009622_45,0 +01706_251,2 +01541_24,5 +021462_63,18 +01578_34,14 +016882_159,14 +005882_63,13 +00609_81,14 +01412_71,0 +01763_146,2 +005392_34,6 +01763_219,12 +00485_168,1 +00065_270,12 +00793_227,14 +007762_1,14 +00417_265,11 +00848_151,14 +020052_103,11 +00462_55,4 +01145_71,4 +01707_107,0 +01427_99,17 +005092_84,2 +02146_57,18 +013302_54,18 +01707_183,0 +00280_19,14 +008402_160,7 +01723_80,15 +00628_103,7 +004082_163,11 +007212_185,14 +00674_126,14 +001602_4,2 +01767_266,14 +02062_113,4 +00111_24,17 +01048_82,14 +00867_43,17 +01769_100,2 +00242_204,4 +00916_256,5 +01622_51,0 +00503_271,6 +01119_77,11 +01925_83,3 +020572_36,2 +014882_204,1 +004172_110,6 +019712_247,12 +01431_246,11 +00394_4,14 +01092_243,1 +00539_81,1 +017752_49,12 +019412_33,14 +002802_11,14 +00867_14,14 +00314_79,4 +00660_263,2 +01839_80,11 +00721_3,14 +01509_181,0 +01158_64,0 +017232_207,15 +00768_17,14 +00124_161,19 +000252_79,17 +008402_122,7 +00280_4,14 +01814_150,5 +00333_159,2 +01331_10,14 +01692_32,2 +00721_232,14 +009162_47,2 +01748_96,0 +01144_124,12 +002752_17,14 +01494_47,7 +021722_210,14 +01977_109,8 +00128_270,0 +00597_25,5 +00761_179,3 +001022_7,2 +00009_177,2 +00577_103,7 +000092_278,12 +02088_9,0 +00485_44,4 +00528_8,2 +009342_13,9 +018392_47,11 +009162_23,2 +01568_112,2 +012722_60,4 +000092_99,12 +019242_223,14 +01904_135,12 +00768_101,14 +000252_5,17 +017072_217,0 +007292_106,14 +01578_82,14 +01962_75,0 +01953_228,12 +01407_1,4 +00722_115,17 +018122_28,4 +00825_44,12 +00282_69,11 +02127_245,17 +01119_117,14 +007832_185,2 +019712_285,12 +018772_5,4 +00023_171,2 +00535_290,2 +00160_263,13 +019242_245,14 +01488_195,13 +00160_210,1 +02187_17,16 +00503_137,1 +01941_50,14 +01707_184,0 +00394_109,14 +019412_179,14 +00993_74,6 +007212_176,12 +007222_26,17 +01191_178,2 +00721_133,12 +014272_120,2 +012722_253,12 +01972_108,13 +01605_8,14 +000792_43,15 +018772_100,4 +00485_83,1 +00450_69,13 +02138_280,14 +01488_188,13 +01813_61,11 +00519_107,11 +01723_41,15 +02012_55,17 +01118_95,14 +017692_77,9 +00793_104,14 +00867_113,0 +018342_233,8 +003122_0,0 +02138_257,14 +016982_19,14 +01877_235,4 +00538_133,2 +00158_215,5 +009352_3,14 +01971_191,12 +00242_209,4 +010012_50,2 +01865_76,18 +01813_76,11 +00333_54,2 +01853_67,5 +00772_55,7 +008372_135,11 +000792_87,9 +004172_218,7 +013302_93,9 +007832_3,2 +01688_76,5 +018792_98,2 +017232_51,15 +01865_100,18 +00588_133,13 +01161_179,17 +021912_8,7 +019712_128,2 +021722_35,14 +01723_81,15 +01956_47,15 +02127_103,17 +018342_45,8 +01177_8,14 +009642_195,8 +00024_44,7 +01134_180,10 +01001_298,5 +019242_124,14 +01408_262,14 +01568_61,12 +007212_27,12 +01698_7,14 +019242_20,14 +00697_89,12 +00160_36,11 +01901_181,14 +008482_90,17 +01408_194,14 +00721_213,14 +00720_12,0 +01707_95,0 +00475_195,1 +008402_279,2 +02049_54,3 +019252_147,3 +019412_131,14 +018392_192,1 +02191_45,7 +01605_185,11 +01971_19,2 +00485_216,1 +00681_39,5 +01407_25,5 +00456_32,14 +01488_186,0 +00485_197,1 +02030_123,16 +01191_24,14 +010012_215,5 +00261_42,4 +01007_67,0 +01007_71,0 +01408_102,14 +00453_255,9 +00539_243,1 +01145_106,4 +008402_260,2 +01941_31,14 +02149_21,17 +02138_78,12 +009342_55,11 +018652_56,18 +01431_91,11 +021772_66,12 +00538_64,1 +01925_3,14 +019622_119,0 +02138_286,14 +02127_120,17 +00709_217,19 +00718_54,19 +00442_8,2 +00964_174,8 +00546_195,14 +01814_37,5 +00519_6,14 +01707_103,0 +017072_9,2 +01493_61,1 +00721_170,12 +01065_32,18 +01007_231,0 +01087_270,5 +00475_169,9 +007832_288,5 +018772_273,4 +009622_44,0 +01643_107,14 +00181_16,0 +01706_24,2 +012722_61,12 +00232_138,4 +00287_26,4 +01702_34,14 +01278_101,12 +00475_277,1 +01901_156,12 +01108_28,15 +01201_53,11 +019042_50,12 +02005_6,11 +00916_55,2 +00506_13,2 +009512_88,0 +020572_42,2 +008372_130,11 +00438_175,2 +012402_118,4 +00722_109,17 +00566_21,14 +01925_26,12 +00721_17,14 +011612_162,17 +00772_18,7 +00128_46,4 +01046_105,14 +01568_8,2 +00578_25,1 +00160_264,13 +01278_66,12 +02030_72,14 +01361_223,15 +00837_89,11 +02094_42,12 +001602_201,11 +009642_44,6 +00709_52,19 +01925_6,14 +00442_74,2 +00505_1,2 +01707_76,0 +005882_136,13 +010872_114,5 +00505_83,5 +009162_283,5 +016882_189,5 +00485_208,1 +00314_34,2 +019712_222,2 +00916_58,2 +01145_240,4 +01210_256,9 +01437_125,11 +00883_0,11 +01688_0,5 +016052_173,11 +007182_128,5 +005282_127,4 +012282_69,14 +017072_124,0 +019412_52,14 +01787_24,13 +00793_274,14 +018392_70,11 +01191_127,7 +00175_69,4 +00160_291,3 +01448_8,14 +01748_27,0 +017232_30,15 +010872_173,5 +017672_111,14 +02127_286,17 +02030_234,16 +00438_44,2 +01045_82,4 +00287_165,15 +02005_38,11 +00718_82,19 +01877_102,4 +016932_90,0 +00160_39,11 +01330_278,3 +004532_178,9 +00628_27,7 +00730_71,18 +006092_23,11 +00275_156,14 +02005_270,11 +00783_154,2 +006972_40,2 +00442_121,12 +00025_51,17 +01909_109,4 +013302_10,2 +01058_62,2 +00607_135,14 +01272_253,12 +007092_76,19 +014282_4,14 +01622_36,0 +00721_33,12 +019622_115,0 +01568_135,2 +012282_134,14 +00390_49,5 +00009_60,12 +017072_170,0 +00601_45,17 +02138_223,13 +00566_246,8 +00951_14,14 +00485_13,2 +02054_10,2 +00840_282,2 +00102_209,16 +017752_95,12 +001602_209,1 +01101_21,14 +00730_139,14 +021622_136,14 +00306_77,7 +02146_19,2 +005092_131,12 +00688_65,4 +00408_87,11 +01971_170,12 +016882_232,5 +019622_40,0 +005392_51,1 +018392_167,1 +00993_121,7 +01763_283,12 +00677_63,14 +02062_146,4 +02186_107,14 +00275_59,14 +001022_71,16 +01046_23,7 +00474_200,2 +00505_219,12 +01904_29,2 +01366_37,17 +019412_299,14 +00783_199,12 +01804_129,4 +01972_165,13 +01408_187,14 +00417_78,17 +01865_27,11 +016052_82,5 +00729_31,14 +00615_123,11 +00916_7,2 +02054_60,2 +01134_162,10 +00535_62,2 +021912_14,7 +002802_37,12 +01158_30,0 +01058_102,4 +010652_77,18 +01145_276,4 +01001_241,5 +00660_35,0 +00840_238,2 +014232_133,0 +00242_82,4 +009642_60,3 +001112_9,14 +016882_277,2 +02127_67,17 +02162_61,7 +019622_126,0 +01692_58,5 +00577_32,7 +01165_42,5 +011082_14,14 +02146_85,18 +00609_0,14 +00275_138,14 +00505_65,1 +00567_128,2 +00916_152,2 +01437_172,11 +00883_40,11 +01706_290,2 +012282_214,14 +00079_60,9 +01094_97,2 +00776_85,4 +01001_10,2 +01813_52,11 +01767_235,14 +02012_4,14 +005062_1,2 +01924_214,14 +001112_80,14 +014882_38,0 +010912_93,0 +012402_158,2 +01693_34,2 +01763_41,2 +021462_64,18 +000232_175,14 +00128_89,12 +01941_235,14 +00951_91,0 +001602_26,5 +00772_56,7 +02127_230,17 +01333_37,4 +00718_56,19 +005882_201,2 +01693_191,0 +02054_197,2 +02028_15,4 +02030_214,16 +018342_290,8 +00228_152,9 +02127_77,17 +01278_202,2 +001602_193,11 +01044_158,12 +011082_58,4 +017072_237,0 +02191_66,7 +001602_133,11 +00021_24,5 +00456_157,14 +007092_68,19 +01901_175,14 +010942_97,2 +00730_151,14 +011912_159,2 +01423_143,0 +01693_273,0 +018122_105,2 +02005_120,11 +01853_59,5 +00350_110,9 +019242_219,14 +01333_27,2 +02172_12,14 +00761_243,3 +017482_86,0 +01877_243,4 +01643_83,14 +008372_64,11 +01568_159,2 +01256_45,4 +01145_67,2 +01956_17,15 +00102_68,16 +016052_171,11 +005502_93,18 +007832_239,5 +016052_152,5 +00916_299,5 +00023_64,3 +012282_13,14 +01048_2,2 +01706_63,2 +006092_16,5 +01925_188,8 +01698_86,17 +00837_83,11 +00394_18,4 +012192_131,14 +01763_59,12 +005882_191,2 +007222_37,17 +02186_113,14 +01698_116,14 +00413_183,12 +02088_0,0 +01144_155,2 +00546_15,14 +01971_52,12 +011612_15,17 +020052_52,11 +018792_53,4 +01767_56,14 +019252_54,12 +005092_199,2 +01408_33,14 +01108_66,14 +00567_140,5 +00102_284,16 +01972_126,13 +016932_248,0 +016842_50,4 +017072_212,0 +00722_104,17 +004672_12,11 +00550_83,18 +002802_146,4 +01134_67,10 +01748_88,0 +00539_40,6 +01953_256,4 +00065_135,1 +00628_40,7 +00688_59,4 +01623_124,14 +001242_37,4 +014272_60,17 +00394_80,12 +00892_61,2 +00916_16,2 +016052_58,5 +01161_137,17 +001022_104,16 +010012_68,12 +01134_237,10 +00951_46,0 +00228_210,9 +02030_166,16 +008922_8,0 +01431_72,5 +019712_55,12 +00993_203,6 +01941_83,14 +00962_14,0 +01568_198,2 +009622_86,3 +00438_113,2 +00538_54,14 +004172_195,17 +007092_8,19 +00350_62,14 +01839_35,2 +017072_47,4 +01941_87,14 +00563_15,2 +01408_255,14 +018772_42,4 +01578_95,14 +009622_74,3 +00442_225,4 +00660_37,0 +01058_45,2 +00009_68,12 +009352_81,7 +02021_2,14 +00528_159,0 +01045_93,4 +01494_16,7 +00175_80,4 +008252_43,12 +01748_8,11 +00535_289,2 +017072_131,7 +00242_103,12 +00848_26,17 +01605_124,5 +01509_19,2 +00607_99,6 +01165_29,5 +021462_126,11 +017232_110,15 +00883_52,11 +01981_40,5 +000232_67,3 +018772_218,4 +01408_215,14 +02127_170,17 +00550_107,18 +01065_44,18 +01431_282,11 +00840_190,7 +00993_151,7 +00772_89,2 +006972_46,2 +01184_38,5 +00509_135,12 +01058_83,4 +01877_159,4 +00021_153,2 +01834_187,8 +01775_47,12 +004532_285,9 +008372_88,11 +005392_2,6 +01272_182,4 +01775_18,2 +02146_115,18 +00660_206,0 +00875_75,2 +00503_251,9 +01493_74,1 +000092_19,12 +00442_9,2 +01879_86,4 +01605_236,11 +02054_296,4 +01423_18,2 +005092_223,2 +01428_3,14 +00456_121,14 +00275_58,14 +00160_261,13 +01007_161,13 +01145_11,2 +00768_28,7 +017232_225,15 +019412_265,14 +00981_35,11 +000252_51,17 +019252_253,8 +01706_257,2 +007212_104,14 +020052_34,11 +010912_168,0 +004532_162,9 +01094_42,11 +00181_115,0 +01108_65,14 +00442_169,4 +00601_127,14 +01812_15,2 +00552_17,7 +01925_70,6 +01698_42,17 +002752_123,14 +00566_247,8 +00674_11,14 +004172_254,5 +009622_50,13 +00438_190,2 +007292_68,14 +01210_201,6 +01763_148,2 +00821_109,5 +00490_258,5 +012282_115,14 +02191_43,7 +00382_106,13 +001602_202,11 +01948_119,13 +01278_217,2 +019252_210,8 +01219_92,5 +00993_107,7 +001242_73,4 +02005_121,11 +00840_46,2 +011912_60,7 +016092_4,17 +010942_67,11 +007292_69,14 +01045_160,4 +00883_23,11 +00228_39,5 +00296_22,7 +00009_242,7 +00979_124,4 +00615_90,1 +00159_74,4 +010912_210,9 +020052_14,11 +01161_140,17 +00088_75,5 +000232_16,2 +00567_5,2 +00442_85,2 +003122_32,0 +010652_5,2 +01091_240,2 +01091_67,1 +01457_79,14 +00607_59,6 +00892_85,2 +021722_187,14 +00417_75,17 +018772_219,4 +00776_82,4 +01330_110,9 +00453_181,9 +00768_81,7 +02042_20,14 +00024_36,7 +00023_143,6 +01408_266,14 +001112_72,7 +002752_80,14 +003062_69,7 +00993_83,7 +00287_239,15 +008402_242,2 +017072_59,0 +01045_123,4 +00840_284,2 +01240_295,4 +00721_194,14 +009642_83,3 +01904_159,4 +00438_245,2 +007832_48,2 +00088_7,14 +01981_140,14 +00417_219,7 +01412_11,4 +00720_25,0 +01707_114,1 +01283_75,14 +00485_100,1 +00993_49,6 +01408_249,14 +02127_90,17 +01853_112,5 +01924_110,14 +00768_52,7 +010012_279,5 +020572_142,3 +00442_55,2 +01134_166,10 +014232_22,2 +01904_173,12 +001242_206,0 +001022_176,16 +004172_168,6 +01814_234,5 +00475_268,1 +016052_5,14 +01358_43,1 +016092_32,17 +012282_186,14 +02021_23,1 +00916_181,2 +01145_172,4 +01331_64,17 +01839_85,11 +010872_249,5 +01605_186,11 +00528_136,4 +00462_197,14 +000792_163,15 +000092_125,2 +017692_284,2 +00490_42,2 +00957_74,4 +016842_27,12 +00783_182,2 +01643_57,4 +01312_53,7 +01101_178,14 +019242_155,14 +01158_78,4 +01144_153,2 +010652_101,11 +00009_198,12 +00505_169,5 +01134_77,10 +002802_52,2 +004082_214,11 +01144_182,2 +00485_115,1 +00677_107,14 +01941_35,14 +00111_80,14 +01001_93,5 +01108_76,14 +01953_202,4 +018772_276,4 +01272_162,12 +01161_136,17 +00793_6,14 +00578_88,1 +005282_34,2 +010872_61,14 +01087_75,5 +018342_183,8 +02062_102,4 +02172_191,14 +00703_17,11 +020052_126,11 +00867_173,14 +021622_131,5 +018342_202,8 +01693_46,5 +01693_194,0 +01968_25,7 +00041_20,2 +006742_132,14 +01437_160,11 +00607_51,6 +00546_192,14 +013302_40,9 +02186_34,5 +016052_115,5 +00703_52,11 +017022_38,14 +012192_126,5 +01605_97,5 +005282_197,0 +01769_52,9 +00979_118,0 +001602_64,1 +01046_111,14 +01331_19,14 +00306_3,14 +009512_87,0 +01702_33,14 +00703_105,5 +021462_114,18 +000792_209,9 +00875_33,2 +00442_256,4 +00408_32,1 +01431_87,11 +02057_209,3 +01693_4,2 +010012_124,5 +00023_14,2 +00761_253,3 +011772_62,4 +01879_3,2 +00426_158,12 +01408_86,14 +02127_174,17 +007832_195,12 +01977_237,8 +01423_190,0 +01877_96,4 +01605_288,11 +00475_50,9 +01161_218,17 +01493_285,1 +012282_39,14 +00505_43,14 +021912_55,7 +00041_77,12 +01333_36,4 +00342_70,17 +00287_236,15 +005062_20,2 +005092_186,2 +008372_133,11 +019042_125,2 +01001_216,5 +01330_219,6 +007762_57,4 +01427_10,14 +009352_24,7 +00546_146,3 +00964_258,14 +01971_70,4 +016052_169,11 +01145_290,1 +01953_149,4 +00883_41,11 +009162_105,2 +00957_22,4 +00350_128,9 +01409_137,0 +01877_112,4 +01087_288,5 +017672_138,12 +011612_145,17 +020572_41,2 +00490_243,5 +012402_136,12 +00677_20,14 +01901_168,12 +01091_209,9 +01636_35,0 +009512_130,0 +01283_35,2 +01437_30,11 +02138_92,14 +00505_37,2 +01408_244,14 +017752_146,2 +00314_104,4 +017752_114,2 +00438_43,2 +01865_31,11 +00709_131,12 +00981_51,11 +00703_77,11 +014282_23,14 +007292_291,14 +01409_118,0 +00124_225,0 +02054_215,12 +013302_72,6 +00242_276,4 +00628_67,7 +00275_170,12 +00721_55,4 +007212_61,2 +01361_83,4 +00535_199,5 +01058_114,4 +00660_145,0 +01087_56,14 +004672_25,11 +01814_65,11 +01333_7,0 +00761_250,3 +01045_119,4 +01488_33,0 +00577_81,7 +00519_148,14 +021722_80,14 +01909_138,2 +01909_33,2 +00577_12,14 +018342_116,8 +016882_157,14 +02177_72,14 +00539_96,1 +00660_167,0 +01877_297,4 +02094_158,2 +00709_192,19 +01145_89,4 +02186_85,5 +01953_160,4 +00535_177,0 +01909_152,2 +00456_166,12 +018342_161,8 +010872_52,14 +01134_157,10 +001602_195,1 +01278_17,2 +00041_18,2 +011912_79,7 +01925_194,8 +014232_68,4 +00011_39,1 +01134_69,10 +01240_155,4 +01007_36,4 +00567_56,2 +018772_179,4 +018132_120,11 +00993_242,14 +01493_235,1 +01877_268,4 +006092_2,14 +01144_186,2 +01210_220,9 +00934_42,5 +00021_67,3 +001602_105,11 +000092_180,2 +02138_258,14 +017672_88,14 +00350_17,14 +01201_61,11 +01775_104,12 +01568_246,2 +021722_243,14 +019712_281,12 +014232_178,0 +016092_0,17 +00287_20,4 +00837_136,11 +00718_53,19 +010942_56,11 +00287_8,4 +00578_48,4 +005502_109,18 +020572_208,3 +02049_132,13 +00703_109,14 +009642_151,8 +00287_235,15 +00660_69,0 +00011_2,0 +01366_109,17 +01191_135,2 +02187_40,16 +00567_257,2 +020052_36,11 +01092_24,17 +00840_87,2 +01087_46,14 +005502_88,18 +00282_47,17 +00417_251,6 +00916_92,2 +01723_114,15 +01361_144,3 +018652_85,18 +01045_122,4 +007092_138,4 +005092_183,12 +000232_46,6 +01161_154,17 +002802_57,2 +01956_61,14 +01161_41,17 +013302_49,9 +00962_78,3 +00841_87,14 +02057_73,2 +014372_295,11 +01330_94,9 +021912_32,7 +00124_64,4 +005062_51,4 +00628_141,14 +01007_68,0 +00333_61,2 +021462_14,14 +01723_32,15 +00840_20,2 +01092_23,17 +007212_7,14 +00160_123,11 +00550_19,5 +02186_41,5 +007212_130,14 +010652_59,18 +01767_69,14 +01684_7,14 +00438_117,2 +014372_129,11 +02162_32,12 +010912_12,2 +005392_95,1 +01431_78,5 +00158_74,5 +011612_196,17 +01814_122,11 +00350_190,5 +011082_79,14 +01145_75,4 +00023_89,4 +01134_250,10 +019252_226,8 +010012_88,5 +02127_46,2 +016982_11,14 +01272_54,4 +01941_156,14 +01509_294,11 +00709_55,19 +01408_44,14 +014282_8,14 +000232_90,0 +01834_158,8 +01767_216,14 +00314_162,0 +000092_36,0 +012402_264,4 +00287_62,15 +01829_27,2 +018772_143,4 +00438_115,2 +01941_2,14 +00566_162,8 +000242_14,2 +00009_207,12 +01092_163,5 +01605_155,11 +02057_4,2 +021722_170,14 +01839_60,11 +014372_7,11 +008372_113,11 +012722_24,2 +01177_17,4 +00935_12,14 +008922_23,0 +00721_43,14 +00837_144,11 +01044_119,12 +00505_114,12 +00993_182,7 +00730_100,14 +00552_101,2 +016052_215,11 +006972_87,12 +01101_100,1 +00287_266,15 +016982_77,17 +01044_41,4 +00408_280,11 +011912_102,7 +017692_213,1 +01568_92,2 +020572_71,2 +00528_215,0 +00232_136,13 +01091_166,0 +00314_81,4 +008482_132,17 +019242_208,14 +00124_97,19 +01092_49,17 +019712_25,2 +00242_161,2 +00025_31,17 +009162_26,2 +00102_160,16 +011612_255,17 +00503_196,9 +001022_60,16 +019242_205,14 +019412_232,14 +01044_113,12 +02127_70,17 +01103_77,17 +000092_9,2 +01953_73,12 +018342_274,8 +00552_56,7 +008402_115,7 +01904_153,2 +01046_83,7 +01437_107,11 +00837_5,14 +008252_48,4 +01636_13,14 +012722_22,2 +01184_11,14 +00394_121,14 +015972_55,0 +00128_135,2 +01971_177,2 +01636_100,0 +021622_18,14 +00703_9,14 +01877_22,4 +005882_56,13 +004172_109,6 +00567_227,5 +007222_92,17 +01977_295,14 +001602_95,1 +00729_71,14 +01092_121,17 +012282_130,14 +004532_197,9 +01048_68,5 +01045_161,4 +010912_49,6 +02057_80,2 +020572_27,2 +02027_68,14 +019622_52,0 +008922_74,2 +000092_223,2 +00793_229,14 +00261_32,12 +01882_60,11 +00485_243,1 +00382_9,11 +00509_205,12 +01493_71,1 +00102_269,16 +012612_41,2 +01423_158,0 +00442_177,4 +01330_225,6 +00993_87,7 +014882_128,13 +010912_273,14 +00566_211,8 +02138_247,14 +009512_161,14 +021722_169,14 +000092_96,0 +01763_205,2 +019622_10,0 +00552_52,7 +00607_43,19 +02127_182,17 +01813_36,11 +02057_107,2 +007832_272,5 +011912_148,14 +01001_9,2 +02146_145,14 +01582_58,2 +007092_274,9 +011612_156,17 +018342_150,8 +02054_184,4 +010012_41,4 +01361_130,3 +010942_80,11 +01007_29,12 +019412_114,14 +00287_172,15 +01723_269,15 +014232_32,2 +01145_265,4 +016052_239,11 +01358_15,1 +01409_195,14 +01366_5,14 +018652_84,18 +013302_70,9 +00228_236,5 +008482_51,17 +00382_52,17 +01058_88,4 +005092_187,2 +01865_6,14 +019412_73,14 +01007_131,0 +00964_122,8 +01626_147,2 +00506_127,2 +00566_275,8 +018392_151,1 +018342_65,8 +01962_118,0 +009642_75,3 +00660_189,0 +004172_295,11 +01007_47,5 +021722_21,14 +01278_204,2 +01001_96,5 +018342_269,8 +019712_273,4 +00979_71,1 +021622_27,5 +00729_194,14 +00506_135,2 +01941_64,14 +00567_266,2 +00729_184,2 +007182_86,19 +007222_23,17 +01240_132,12 +009162_208,2 +00840_290,2 +00528_63,2 +01688_233,5 +01767_143,14 +00577_91,7 +01058_144,2 +00490_154,12 +00011_100,4 +01278_46,2 +02177_68,12 +01427_3,14 +01101_24,7 +00350_246,9 +01007_186,13 +01568_223,2 +016932_107,12 +01968_99,7 +02146_68,18 +01272_167,2 +02062_19,2 +01707_208,0 +012282_117,14 +019712_0,2 +00462_189,14 +014072_26,5 +01879_102,2 +02057_125,6 +01408_64,14 +00021_49,3 +02021_62,11 +00011_72,4 +019622_2,0 +02127_116,17 +02177_56,12 +01087_32,14 +01101_166,14 +01493_266,1 +01371_36,12 +009162_32,2 +01409_97,0 +01092_158,6 +00546_127,3 +01371_46,14 +019042_148,4 +01165_125,14 +013712_48,14 +00768_62,7 +017072_68,0 +00242_108,12 +01929_2,14 +017232_88,15 +00228_282,14 +01144_51,9 +01924_53,14 +01144_169,12 +00837_147,11 +014372_179,11 +01191_80,7 +00350_287,9 +00408_11,2 +00840_255,2 +01134_230,10 +007762_82,4 +00485_22,2 +01165_102,5 +006092_0,14 +02162_38,12 +01219_61,5 +00962_61,3 +02127_219,17 +011912_135,2 +01605_22,14 +01240_183,4 +018342_118,8 +021462_96,18 +007292_103,14 +01431_224,11 +00840_289,2 +004532_292,9 +00467_42,11 +01191_168,14 +01723_15,4 +00563_48,6 +01501_40,4 +017672_154,14 +01692_81,1 +020052_227,11 +005392_77,1 +01693_129,0 +018342_237,8 +00729_14,14 +00506_144,2 +02049_154,13 +00892_78,2 +00312_25,0 +000232_33,4 +019252_252,8 +01007_255,0 +00840_187,7 +00124_74,19 +010912_191,16 +01092_75,17 +02094_78,12 +021722_198,4 +000092_281,12 +00128_20,12 +00314_227,12 +00128_98,0 +008372_26,11 +00009_271,12 +01509_170,0 +02030_98,16 +005282_217,0 +01688_1,5 +016842_40,4 +01423_152,0 +019712_166,2 +00597_6,14 +01707_27,2 +00840_273,2 +01698_123,14 +02042_102,13 +01272_8,2 +01509_255,11 +02005_77,11 +01688_206,5 +012282_88,14 +01272_254,12 +01161_212,17 +009162_68,2 +02005_7,11 +01001_97,5 +01981_101,5 +01865_94,18 +007292_21,14 +00567_36,2 +012282_11,14 +021912_10,7 +00474_61,2 +002802_138,12 +016052_128,5 +010012_105,5 +00408_295,11 +00793_91,14 +00438_42,2 +00453_185,9 +00709_127,4 +00848_127,17 +01493_176,1 +00228_22,14 +01092_56,17 +018342_40,8 +014232_189,0 +011772_44,4 +01007_136,0 +00438_291,2 +01278_157,12 +010912_217,9 +01094_53,11 +00840_21,2 +019042_161,12 +01161_155,17 +00546_66,15 +020572_12,2 +010942_36,11 +02030_60,14 +007212_39,14 +00509_43,2 +019412_294,14 +001602_197,1 +02049_170,13 +00462_116,13 +02005_253,11 +01972_248,14 +001242_165,19 +01688_99,5 +010942_88,11 +01626_95,7 +00539_20,6 +01087_184,5 +014282_64,14 +02030_133,16 +01046_52,7 +005392_205,1 +02088_10,0 +01972_139,3 +00450_44,12 +01058_101,4 +012722_223,4 +00567_133,2 +019412_141,14 +011612_260,17 +02028_45,9 +01437_233,11 +02172_36,14 +01094_71,11 +01541_14,5 +000092_237,7 +01707_175,4 +018392_5,14 +019592_20,6 +018772_183,4 +01925_241,8 +00232_89,13 +01423_131,0 +01046_14,14 +01707_5,2 +01058_135,2 +00467_3,11 +01001_115,5 +016052_181,11 +019042_69,12 +021462_36,11 +00342_34,17 +00413_142,0 +019412_277,14 +00124_238,0 +00426_110,0 +01924_83,14 +00306_88,7 +01814_279,11 +01134_52,10 +00660_194,0 +01941_225,14 +00730_86,18 +002802_23,14 +00688_62,4 +008402_108,7 +01044_37,4 +01971_240,12 +01278_122,12 +02172_213,12 +001242_89,19 +020572_207,3 +00160_201,11 +01578_218,14 +00417_223,7 +02187_130,16 +01330_88,1 +011772_84,14 +00065_16,17 +010872_139,5 +005392_71,1 +01971_277,12 +000232_174,2 +01408_123,14 +018652_124,1 +006092_73,14 +018772_237,4 +010872_78,5 +00158_294,5 +00761_24,14 +01706_142,2 +009352_1,14 +00350_73,2 +00280_225,14 +01007_102,0 +017692_60,9 +00848_143,14 +01331_23,7 +01977_52,14 +00566_99,3 +005062_101,2 +016882_85,5 +00677_55,4 +01091_49,6 +00567_104,2 +013712_42,14 +00577_30,7 +00079_228,9 +016882_257,5 +013302_215,6 +00485_178,1 +00413_160,0 +014232_182,0 +00390_55,5 +01692_73,1 +00588_77,13 +000092_42,4 +00417_227,7 +01408_66,14 +00747_14,6 +02187_143,16 +01953_77,12 +00287_118,15 +00567_111,2 +00597_2,14 +00453_134,9 +01626_89,7 +01977_160,8 +00314_210,4 +01643_106,14 +01829_24,12 +01201_92,5 +01578_64,14 +013302_174,9 +00382_86,9 +002802_100,12 +005282_70,2 +00916_206,2 +008252_22,2 +01509_134,0 +00280_117,2 +01767_78,14 +00160_120,11 +00382_42,17 +00964_11,14 +01977_95,8 +004172_160,6 +01605_194,11 +01437_202,11 +01707_35,2 +01953_98,4 +008252_84,2 +00964_51,8 +00539_167,6 +01092_59,17 +02138_62,4 +01977_250,3 +00697_103,2 +007762_38,4 +00535_162,0 +00306_83,7 +016052_104,5 +00821_49,5 +00485_142,1 +01158_40,4 +01706_80,2 +00509_68,2 +000232_25,2 +005392_210,1 +005392_258,1 +012612_105,2 +01092_147,17 +01333_20,2 +01007_15,2 +004082_167,11 +019712_164,2 +019712_138,12 +01134_37,10 +00768_25,7 +01877_85,4 +009642_282,14 +00962_41,0 +007092_261,5 +00840_252,2 +00124_103,19 +01007_76,0 +014882_163,13 +017752_21,2 +01953_61,2 +007292_37,12 +005882_163,15 +00280_189,14 +01358_38,1 +00450_40,14 +014372_21,11 +01971_64,12 +009162_93,2 +00964_244,4 +018392_134,1 +00438_57,2 +01423_262,2 +01361_134,3 +01431_85,11 +00509_1,2 +00021_159,12 +01261_102,2 +00957_67,2 +009642_5,14 +018342_142,8 +004082_274,1 +01901_93,0 +01094_54,11 +00124_231,0 +01240_130,12 +01609_11,17 +00228_186,9 +01901_8,14 +01924_19,14 +01366_92,17 +01256_18,4 +016052_238,11 +017072_202,0 +01879_67,4 +00681_68,5 +00128_255,12 +01948_93,13 +017692_27,2 +01877_63,4 +01853_19,5 +005062_73,6 +00475_153,9 +00979_109,1 +007092_105,1 +01688_92,5 +01330_138,6 +00160_149,11 +00041_127,7 +02127_291,17 +00979_31,1 +00159_94,0 +00697_38,2 +016932_126,0 +00993_273,14 +011912_166,14 +019712_79,2 +00993_142,7 +01636_36,0 +02127_13,2 +010872_49,14 +01134_57,10 +019042_164,12 +003062_23,7 +01901_75,5 +01092_182,17 +02138_284,14 +01409_11,14 +01240_139,12 +00892_36,0 +00011_124,2 +01094_67,11 +00837_88,11 +01597_19,0 +01161_231,17 +00390_106,14 +019592_10,6 +005282_37,2 +018392_124,1 +02049_128,13 +01044_212,2 +00102_113,16 +000092_209,12 +01361_178,3 +016052_96,5 +01688_211,5 +01001_142,5 +00578_87,1 +00761_64,14 +01582_28,17 +00261_5,4 +01184_1,14 +00160_18,2 +01578_58,14 +02030_14,14 +00550_135,14 +00964_246,4 +01909_113,2 +00417_185,17 +015972_116,14 +02030_114,16 +01493_195,9 +01909_6,2 +00350_162,9 +006972_99,12 +016882_282,2 +006972_84,4 +004532_255,9 +002752_45,14 +01829_46,2 +00456_150,2 +010012_13,2 +000242_52,17 +018132_41,11 +01427_58,12 +02127_258,17 +02012_122,14 +00453_292,9 +02177_21,4 +00793_266,14 +02172_11,14 +01879_96,2 +01693_22,14 +01087_37,14 +00474_79,2 +014232_226,0 +00892_29,0 +00181_46,0 +014282_72,14 +01829_4,2 +013302_285,1 +00509_132,12 +017232_163,15 +018772_63,4 +014232_248,0 +01509_70,0 +01101_117,13 +01240_92,12 +00503_80,9 +01775_12,2 +00350_75,2 +021772_5,4 +01158_14,0 +01877_244,4 +00282_108,14 +007832_180,2 +01877_87,4 +016052_156,11 +01597_98,0 +018132_89,11 +01501_26,0 +02005_139,11 +010942_108,14 +01763_29,2 +01488_214,0 +01145_10,2 +01087_227,5 +002752_38,12 +01813_82,11 +02028_40,9 +001022_266,16 +01423_198,0 +01941_5,14 +01882_79,14 +02057_104,2 +01092_272,12 +00867_15,14 +01909_115,2 +007212_55,4 +00065_96,11 +000232_177,14 +00175_67,4 +00181_69,0 +010012_142,5 +01879_51,4 +010012_111,5 +00628_51,7 +02172_5,14 +000232_125,5 +017692_100,2 +00964_179,8 +01087_100,5 +007832_110,6 +020572_178,3 +020052_1,11 +01488_120,13 +00697_20,9 +01361_153,3 +00783_158,2 +01427_62,17 +016432_39,12 +01968_8,14 +00688_1,2 +00490_143,2 +017692_201,0 +00453_285,9 +00825_2,12 +00840_204,7 +01972_277,14 +019412_191,14 +01161_120,17 +009642_239,4 +00660_271,2 +01228_130,14 +02057_124,6 +00158_77,5 +01804_75,12 +014372_201,11 +00566_91,8 +00578_78,4 +019252_49,12 +020572_155,3 +01901_12,14 +00467_57,11 +018652_36,5 +02177_11,4 +02042_33,15 +01622_107,0 +01723_154,15 +00883_24,11 +00729_162,14 +011612_133,17 +01103_95,14 +008372_154,11 +017232_255,15 +00615_120,11 +000792_85,9 +01161_264,17 +016882_181,5 +01688_193,5 +00306_46,7 +017232_295,15 +01578_56,14 +01177_67,15 +00181_159,14 +01101_11,14 +016882_86,5 +012402_102,12 +008402_227,2 +01437_207,11 +01702_50,2 +00490_71,2 +00490_256,5 +00228_97,11 +00761_2,14 +021912_28,7 +02057_172,3 +01144_202,12 +01568_86,2 +00688_86,4 +00720_14,0 +00408_259,13 +00102_222,16 +01509_139,0 +01261_95,2 +00615_11,11 +01812_2,2 +01103_27,9 +00287_153,15 +002802_30,12 +00841_73,14 +02042_14,14 +00981_31,11 +002752_166,14 +016932_293,0 +01058_53,2 +00703_39,11 +01693_12,2 +01427_129,14 +021462_151,14 +008922_87,2 +01087_256,5 +016092_14,17 +01971_292,12 +00342_64,17 +016432_75,14 +00350_222,9 +01437_218,11 +01925_210,8 +01953_121,4 +01094_64,11 +02172_192,14 +02049_84,3 +01707_235,0 +009512_144,14 +01968_111,14 +02186_47,5 +017752_81,4 +00485_25,2 +01609_26,17 +01240_113,4 +00275_119,12 +00314_30,2 +00550_57,18 +00296_110,14 +001602_298,13 +00783_285,5 +00158_41,14 +00506_34,2 +00485_269,12 +01909_202,12 +02172_200,2 +00535_214,5 +00011_95,2 +00438_19,2 +012192_30,5 +01210_231,9 +01103_44,14 +01161_204,17 +00417_65,17 +00442_32,14 +00729_263,14 +00674_36,14 +01925_249,8 +012402_286,12 +00509_70,12 +02138_88,14 +01748_39,0 +017232_292,15 +01210_40,1 +01423_217,0 +00793_211,14 +00475_247,9 +00160_177,1 +01972_92,13 +01707_267,7 +016932_186,0 +019242_128,14 +00597_22,5 +01177_6,14 +00519_35,7 +016052_194,11 +00474_238,2 +001242_133,19 +00607_76,11 +00314_278,4 +02042_0,14 +01092_253,17 +016052_87,5 +01813_73,11 +01909_86,12 +01706_286,2 +00709_168,19 +00426_4,14 +02172_243,14 +00124_62,4 +011082_39,0 +00242_150,2 +02172_190,14 +004082_124,13 +016052_251,11 +00228_133,9 +00158_260,5 +00688_51,4 +011612_159,17 +01101_140,14 +01953_264,4 +014272_49,17 +009512_77,0 +000792_194,9 +01494_89,14 +000242_53,17 +00941_6,9 +016982_46,17 +00892_10,0 +007292_196,14 +009342_51,11 +00350_150,9 +00490_149,2 +008402_198,7 +01371_48,14 +00287_271,15 +01972_166,13 +02054_202,2 +02028_75,1 +012722_17,2 +001242_135,19 +01981_20,5 +017672_258,14 +006742_86,4 +01094_18,2 +00390_111,14 +00916_245,5 +00660_116,0 +00761_33,14 +010012_115,5 +02054_99,12 +00102_273,16 +007832_120,17 +01609_12,17 +00964_34,6 +00181_151,14 +02187_112,16 +01692_67,1 +01493_95,1 +02005_242,11 +018772_185,4 +01901_128,5 +01228_9,14 +00128_182,4 +00021_63,3 +01763_6,2 +01427_75,9 +01182_15,4 +00519_140,7 +01706_231,2 +010912_254,2 +01240_69,12 +01493_222,1 +017692_156,9 +00485_136,1 +01582_36,17 +02186_30,5 +00490_55,2 +01427_116,17 +00041_24,2 +004532_36,9 +01423_47,2 +02062_119,4 +00350_244,9 +01087_109,5 +019242_171,14 +013712_33,14 +00128_29,12 +01909_103,2 +021622_4,14 +01924_246,14 +016882_270,2 +02012_84,7 +004532_115,9 +018342_126,8 +00079_266,1 +012402_162,2 +01702_89,14 +00408_209,11 +017072_235,0 +01261_64,2 +001242_61,4 +00506_10,2 +00065_291,1 +00232_129,13 +00413_42,0 +00979_112,1 +01351_54,7 +006972_48,2 +01948_54,13 +00867_50,17 +01182_61,0 +01240_288,12 +02028_108,2 +01959_71,6 +00490_113,2 +00688_74,5 +00275_159,14 +00296_18,7 +01092_0,17 +00282_11,14 +01092_299,2 +00021_0,5 +00567_113,2 +004532_175,1 +00951_103,0 +00793_215,14 +02005_111,11 +010872_235,5 +00102_46,16 +01177_51,4 +00490_183,2 +01058_124,12 +00413_136,0 +01134_228,10 +01723_42,15 +020572_209,3 +018652_31,11 +01177_26,15 +019712_228,2 +01091_239,2 +01145_145,4 +00567_156,2 +01158_20,0 +00417_273,1 +00848_76,17 +012282_70,14 +00350_286,9 +00417_195,17 +00567_29,2 +01814_202,11 +014372_84,11 +01191_51,2 +009162_17,2 +01065_113,14 +00783_27,2 +02042_88,14 +011612_2,17 +001602_123,11 +011082_6,14 +00450_6,14 +01272_169,2 +01101_46,7 +019712_4,2 +01706_279,2 +01804_92,12 +01431_83,11 +019252_37,14 +01882_58,11 +01959_9,6 +000242_80,17 +018652_107,18 +01501_88,14 +019622_55,0 +00490_161,2 +01924_221,14 +007212_79,12 +00474_230,2 +00721_244,14 +017672_42,14 +02030_67,14 +02187_277,16 +02146_138,14 +019252_20,14 +01333_12,4 +00426_156,12 +01693_133,0 +012612_67,2 +01351_110,7 +00674_28,14 +017232_287,15 +00232_155,14 +00588_12,4 +00964_148,8 +001602_27,5 +00867_68,0 +01428_34,14 +014232_10,2 +017692_224,9 +02027_32,18 +01879_59,2 +01877_18,4 +01812_7,2 +018132_141,5 +00566_221,8 +004172_190,17 +00721_221,14 +00837_58,11 +00681_1,14 +000092_185,0 +01333_2,0 +01541_44,5 +00485_14,2 +01568_190,12 +000092_52,12 +00426_81,0 +007092_266,1 +004172_222,7 +018132_84,11 +02042_119,0 +01427_11,14 +02049_111,13 +00417_5,14 +00721_236,14 +00509_91,2 +00394_24,17 +001022_207,16 +00528_76,2 +00566_54,8 +00467_46,11 +009512_80,0 +01144_128,12 +00390_87,5 +00009_36,0 +00875_112,2 +005092_145,12 +00981_113,14 +01924_211,14 +000242_6,2 +00456_112,4 +004172_201,17 +008402_219,7 +01145_243,4 +000252_71,17 +018772_50,4 +011612_52,17 +02162_80,17 +01853_0,14 +00041_67,7 +009162_107,2 +01929_127,0 +01007_224,0 +00962_1,0 +016932_255,0 +01087_221,5 +00783_244,5 +009642_262,14 +02054_223,12 +01261_71,4 +016432_32,14 +01001_279,5 +01814_11,5 +01412_15,0 +01748_92,0 +00453_52,9 +008482_7,14 +00503_222,9 +02187_146,16 +00660_68,0 +01210_149,6 +014272_34,17 +00509_228,2 +00450_16,14 +018132_12,11 +00314_87,12 +01278_163,12 +01409_209,14 +00567_100,2 +01769_167,11 +01748_93,0 +01103_84,9 +007212_151,14 +01361_279,15 +00993_1,14 +00867_157,0 +01228_55,2 +02049_77,3 +01228_143,14 +01437_287,11 +01161_192,17 +01045_101,4 +01118_54,7 +02005_263,11 +00453_82,9 +01834_117,8 +02149_9,17 +00413_145,0 +016932_63,0 +01688_54,5 +02186_56,5 +005882_181,4 +005062_142,2 +014372_20,11 +00539_293,1 +01358_18,1 +01622_46,0 +01210_241,9 +01941_177,14 +00506_11,2 +01769_63,9 +00509_77,2 +01103_14,4 +005392_271,1 +012282_86,14 +005392_151,1 +00111_38,17 +007292_289,14 +00408_176,11 +02094_147,2 +016052_233,11 +00505_86,12 +01409_142,0 +008372_71,11 +00475_16,5 +02028_25,15 +00722_106,17 +001602_20,2 +00102_74,16 +011082_44,0 +00490_54,2 +01706_252,2 +020052_154,11 +00957_40,0 +00232_79,13 +01953_251,4 +00242_56,12 +00079_148,9 +00490_222,5 +00729_70,14 +008482_38,17 +016982_120,14 +01240_29,2 +00721_100,14 +00158_38,14 +015972_15,0 +01490_59,7 +012192_100,5 +01706_294,2 +01769_235,9 +02054_77,2 +012722_58,4 +007222_27,17 +01351_53,7 +00065_113,11 +01925_124,3 +01929_33,0 +00314_7,2 +01278_13,2 +01814_10,5 +008832_57,11 +00417_255,5 +00296_79,7 +005502_8,5 +01007_208,0 +01191_61,7 +01182_99,4 +007222_144,17 +01437_34,11 +00951_139,14 +011772_35,14 +013302_299,18 +00350_77,2 +017072_250,0 +004672_13,11 +020052_243,11 +007292_41,14 +01437_65,11 +00490_74,2 +01210_276,9 +01272_133,12 +003062_40,7 +011612_147,17 +021722_241,14 +008402_3,2 +01578_226,14 +00159_51,2 +00841_32,4 +01834_294,8 +01941_56,14 +010912_166,0 +00588_209,12 +01769_267,2 +00158_290,5 +01240_142,12 +00609_61,5 +02146_28,11 +00837_17,11 +00503_150,9 +018792_72,0 +00539_146,13 +01210_252,9 +01408_17,14 +014232_129,0 +013302_247,15 +01688_258,5 +01688_260,5 +004172_207,17 +00417_229,7 +01578_255,14 +019712_26,2 +01787_38,1 +00837_116,11 +00450_203,14 +00747_72,4 +01698_101,17 +006092_48,11 +00883_3,11 +01877_106,4 +00601_52,6 +00009_22,12 +00730_89,17 +00442_17,14 +00721_192,14 +01272_161,12 +011612_126,17 +009162_158,2 +018342_109,8 +01981_105,11 +000092_30,7 +01134_7,16 +007292_82,14 +01877_45,4 +01692_142,14 +008372_115,11 +01977_87,8 +00128_131,2 +00783_143,2 +02030_139,16 +008832_70,11 +012402_296,4 +00697_82,4 +00709_42,19 +00539_104,1 +000232_28,2 +007212_110,14 +019242_30,14 +00535_127,9 +004172_121,17 +01879_108,2 +02054_299,4 +019042_145,12 +00408_286,11 +01839_65,11 +01049_22,7 +01412_83,0 +01636_93,0 +01767_154,14 +019712_241,12 +013332_0,0 +01182_92,13 +01448_9,14 +00462_111,13 +00506_30,2 +012282_23,14 +01707_105,0 +00124_9,4 +000232_94,0 +00314_82,4 +02138_298,14 +01879_114,2 +01877_223,4 +010872_34,14 +00426_115,0 +002752_124,14 +01775_165,12 +00721_111,14 +008372_129,11 +010912_228,7 +00681_18,5 +011082_0,14 +018772_204,4 +01968_65,7 +00721_231,14 +021912_89,7 +00413_101,0 +00413_8,14 +01134_85,10 +01007_49,5 +01929_201,12 +02127_40,2 +00041_148,7 +008372_27,11 +000232_19,2 +001242_65,4 +01409_175,0 +010942_101,14 +00578_19,4 +00333_184,2 +00729_126,14 +001242_198,0 +00793_225,14 +014272_95,17 +010942_79,11 +00413_172,12 +01361_234,15 +015972_95,0 +008372_137,11 +01924_72,14 +005092_132,12 +001602_129,11 +01278_42,2 +021462_15,14 +01834_296,8 +018122_26,4 +00160_285,13 +00867_76,5 +01331_25,17 +017752_71,12 +018342_42,8 +01437_178,11 +01693_32,17 +005282_219,0 +02127_200,17 +005882_141,13 +007092_87,9 +005282_27,2 +00450_184,14 +00841_54,4 +01769_283,2 +00566_228,8 +009162_285,5 +00280_224,14 +00390_54,5 +00503_93,1 +00474_232,2 +01609_22,17 +02054_290,4 +01948_23,14 +01177_97,4 +00505_18,2 +017692_272,2 +01578_9,14 +00837_78,11 +00577_71,7 +01330_116,1 +020052_16,11 +00426_82,0 +01428_12,14 +01184_93,5 +00314_48,2 +01437_181,11 +01272_40,2 +01839_58,11 +01877_165,15 +018772_144,4 +01044_70,12 +01144_200,12 +01278_47,2 +01007_141,19 +01119_39,11 +00840_10,2 +011612_45,17 +01065_79,18 +00041_7,2 +01145_233,4 +01812_38,4 +01045_171,4 +00601_119,2 +00065_247,12 +018132_116,11 +00023_39,4 +01909_198,2 +014972_11,0 +00660_204,0 +01622_113,4 +01177_22,15 +004082_26,1 +01330_104,6 +01500_7,9 +018122_40,4 +00722_17,17 +00160_93,11 +010012_202,5 +00065_188,1 +01941_89,14 +01804_97,4 +00041_128,7 +01119_49,11 +017022_53,2 +014372_271,11 +007092_220,19 +01929_207,14 +00442_57,2 +00506_87,4 +004082_290,11 +00228_149,9 +01636_72,0 +01972_179,13 +005092_41,2 +00539_214,1 +00023_20,2 +01723_61,15 +00124_138,19 +01261_106,2 +00282_34,7 +00474_12,2 +017072_259,7 +02127_179,17 +00563_5,2 +017672_237,14 +01769_113,2 +01748_58,0 +01953_167,4 +02049_160,13 +002802_31,12 +01493_78,1 +01706_292,2 +00275_4,14 +00588_58,13 +00566_4,14 +00280_156,14 +00041_82,12 +020052_11,11 +021622_1,14 +01330_203,9 +008372_34,11 +00280_0,14 +00306_104,14 +01948_115,13 +00535_39,2 +00296_80,7 +009352_76,7 +00124_21,4 +000092_284,4 +01423_101,0 +016982_23,17 +01941_131,14 +02172_132,14 +00718_107,19 +00539_84,1 +00535_166,0 +010872_234,5 +00674_12,14 +017072_134,7 +018392_45,11 +00102_213,16 +02062_143,4 +01909_132,12 +01692_86,1 +01177_61,4 +00546_103,3 +02172_206,14 +01693_226,0 +00962_67,3 +01134_240,10 +02138_25,2 +004672_18,11 +001242_49,0 +00408_6,2 +01909_59,2 +00314_63,12 +001242_20,4 +009622_12,0 +00615_175,11 +012612_94,2 +019712_74,4 +01925_142,3 +01058_91,2 +01723_102,15 +02049_59,3 +020052_83,11 +01509_121,0 +007092_142,19 +00041_73,6 +00848_8,14 +02057_159,3 +00102_131,16 +01058_77,4 +01490_93,14 +00607_47,6 +00993_79,4 +01065_51,18 +01407_54,12 +00597_80,14 +01707_181,4 +010942_85,11 +01769_226,9 +02054_182,4 +01977_140,8 +01763_14,2 +007182_57,19 +00993_17,14 +00535_159,0 +01853_33,5 +021912_111,14 +00442_80,2 +021722_89,14 +02054_294,4 +01228_21,14 +00417_17,6 +00892_40,0 +01145_59,2 +02127_1,2 +02138_171,13 +00916_29,2 +00485_194,1 +01145_194,4 +01165_132,14 +01161_257,17 +02021_91,11 +00841_38,4 +00124_73,4 +01509_90,0 +01787_69,9 +00840_154,7 +01972_100,13 +00783_288,5 +02005_149,11 +005502_10,5 +00333_170,2 +00993_114,7 +005392_224,13 +019252_67,6 +01981_45,5 +01693_285,0 +00505_151,12 +017072_75,4 +00867_8,14 +01091_244,2 +005282_28,2 +01582_72,5 +01813_68,11 +002802_140,12 +00442_118,12 +00821_47,5 +02186_54,5 +014372_205,11 +01953_82,7 +002802_119,2 +02054_206,2 +01045_166,4 +015972_45,0 +00867_158,0 +00065_97,11 +01509_5,2 +010912_72,1 +013302_248,15 +01145_41,2 +000092_66,12 +00314_262,0 +00450_46,12 +00550_102,18 +00597_15,14 +01879_38,4 +00506_1,2 +009512_123,0 +000252_52,17 +01706_208,2 +010652_117,14 +01929_229,14 +013302_61,18 +01582_80,14 +016842_51,4 +00275_8,14 +00783_117,17 +01609_0,17 +02054_94,12 +01972_1,2 +01578_126,14 +018342_170,8 +019242_39,14 +01707_276,7 +01541_46,5 +00821_120,5 +004172_46,17 +01119_12,5 +007212_177,12 +00242_20,2 +00721_242,14 +00475_171,9 +00848_30,17 +00505_25,14 +01049_14,7 +016932_140,0 +00382_130,5 +00681_54,5 +01007_26,12 +02062_47,2 +00128_8,12 +00519_125,7 +01219_78,5 +01101_7,14 +01091_143,5 +012192_56,5 +01763_129,12 +00505_232,14 +01763_155,2 +001242_163,19 +01058_9,2 +014072_40,2 +00102_2,2 +016842_31,4 +01448_117,14 +00009_106,12 +01431_292,11 +02054_297,4 +018652_49,18 +01001_236,5 +01272_265,4 +01706_168,2 +017482_53,7 +01161_225,17 +00280_58,2 +013302_187,3 +01240_144,12 +00841_91,14 +02054_115,14 +01351_123,7 +02054_3,2 +01723_110,15 +01361_228,15 +000092_147,7 +00848_108,17 +005282_12,2 +01925_159,3 +004172_167,6 +02027_84,14 +01702_28,4 +014282_44,12 +00539_16,6 +02005_188,11 +01578_25,14 +02005_279,11 +01706_87,2 +00916_143,2 +01748_99,0 +019242_25,14 +01092_33,17 +007762_41,4 +00783_254,5 +00181_10,2 +02172_194,14 +00287_25,4 +01578_105,14 +011612_228,17 +02049_121,13 +00892_13,0 +019242_96,14 +01925_111,3 +01829_29,12 +00709_225,19 +01929_24,0 +010012_280,5 +00314_246,4 +005882_92,13 +00964_10,14 +00840_199,7 +00563_114,2 +014972_16,0 +01272_262,4 +018772_9,4 +00566_171,8 +00539_9,6 +014232_33,2 +00228_212,9 +001022_45,16 +004172_49,17 +00892_51,0 +00442_221,4 +008402_262,2 +01165_96,5 +003062_49,7 +004532_243,9 +00761_30,14 +01409_190,14 +01001_135,5 +01045_159,4 +01094_47,11 +00993_162,7 +00941_0,0 +018122_101,2 +017072_36,2 +01707_120,0 +00546_140,3 +019412_296,14 +01541_15,5 +012402_30,2 +01622_93,5 +00578_114,14 +01046_31,7 +008922_19,0 +00883_28,11 +01688_22,5 +00566_217,8 +01165_85,5 +004532_79,9 +014232_24,2 +01904_48,12 +00382_121,19 +00158_220,5 +01191_128,7 +00228_250,11 +007092_272,9 +004532_219,9 +010872_9,14 +00282_50,17 +02030_110,16 +00065_5,5 +02146_12,14 +00783_262,5 +01568_59,12 +005282_69,2 +012282_213,14 +018122_68,4 +009342_0,0 +00552_14,7 +01330_17,2 +00456_158,14 +01007_249,19 +01636_137,14 +00503_299,6 +01191_175,14 +00747_13,6 +01409_3,14 +01091_95,0 +01877_156,4 +00981_20,11 +00981_2,14 +017692_234,9 +014372_122,11 +00503_279,6 +00314_156,12 +01605_56,5 +00408_148,11 +01331_48,17 +01929_137,0 +00793_184,14 +00916_89,2 +00964_124,8 +018132_48,11 +001602_234,11 +01605_25,14 +00079_252,9 +00417_126,17 +02054_263,12 +02172_94,14 +00462_45,12 +01882_27,5 +00981_21,11 +01312_92,14 +01366_90,17 +007222_16,17 +01448_37,19 +02054_246,2 +017072_143,1 +00453_41,9 +00438_77,2 +01582_16,7 +02138_228,8 +00065_91,11 +01877_83,4 +01240_157,4 +01366_45,17 +010652_29,18 +00485_64,1 +01925_209,8 +01971_57,12 +00841_50,4 +01191_186,14 +01775_48,12 +00840_180,7 +021772_4,4 +02049_150,13 +02021_58,11 +001242_114,19 +007292_8,14 +01767_276,14 +02054_36,2 +015972_41,0 +01748_97,0 +00413_128,0 +00417_98,6 +021622_40,12 +00442_197,4 +02042_59,15 +011612_238,17 +01493_98,1 +014122_54,0 +00160_63,11 +01971_233,12 +00505_157,14 +00505_71,1 +01605_235,11 +004532_163,9 +017672_96,14 +018342_24,14 +010012_27,2 +01331_31,17 +02027_92,14 +01490_64,7 +01775_11,2 +01706_191,2 +00761_281,3 +01191_25,14 +00505_120,12 +000242_68,7 +00993_46,6 +007092_286,12 +016052_252,11 +016882_273,2 +00158_193,5 +01007_126,0 +00567_253,5 +020572_160,3 +00453_75,9 +00079_135,9 +01568_136,2 +007182_80,19 +00475_133,11 +00848_88,17 +02191_14,7 +021462_16,14 +00607_123,5 +001112_65,17 +014882_12,13 +01941_174,14 +01767_217,14 +00312_39,0 +01578_189,14 +01971_284,12 +005282_85,2 +02054_236,4 +00505_242,14 +01007_93,0 +004082_151,11 +01161_281,17 +00408_283,11 +01813_140,5 +02012_14,14 +00088_8,14 +01448_33,0 +01723_265,15 +00276_40,11 +00509_84,2 +00181_18,0 +014272_38,1 +02172_164,14 +00128_110,4 +00607_117,5 +01977_79,3 +014072_35,0 +01769_14,2 +02162_55,7 +004532_106,9 +00350_12,14 +00607_103,6 +017232_3,4 +000242_69,7 +010012_55,2 +012282_90,14 +005882_226,2 +02187_86,16 +00703_56,11 +00474_94,2 +00538_135,14 +008372_162,11 +00841_72,14 +008252_64,12 +011612_51,17 +00941_54,0 +00981_88,11 +00485_223,1 +013332_3,0 +01767_178,14 +005882_128,13 +00721_34,12 +002752_109,14 +00474_130,2 +002802_21,14 +02191_67,7 +00628_80,7 +007292_131,14 +01814_138,5 +004172_296,11 +00519_153,14 +00566_13,14 +010652_63,18 +00709_270,9 +014122_23,0 +01091_132,5 +020052_104,11 +01977_257,3 +01643_50,14 +014882_127,13 +01723_174,15 +00546_62,15 +01707_113,1 +00158_238,5 +01968_28,7 +01769_89,0 +00550_86,18 +00462_113,13 +00413_30,0 +00935_8,14 +02049_215,13 +01361_118,3 +00840_110,7 +00539_286,0 +02005_11,11 +02062_111,4 +01972_125,13 +007832_38,2 +00181_96,0 +01134_83,10 +01219_15,14 +01331_80,14 +020052_268,11 +01330_160,9 +01437_246,11 +001022_140,16 +008372_93,11 +00124_248,0 +02027_57,18 +00490_73,2 +017022_15,14 +01723_160,15 +00867_190,14 +01427_23,4 +02049_20,4 +00841_17,14 +01834_52,8 +00761_27,14 +01813_152,14 +017232_142,15 +01361_123,3 +014372_152,11 +00280_70,12 +01925_234,8 +01437_270,11 +02146_89,18 +00450_158,14 +018132_105,11 +01981_47,5 +010912_230,7 +02057_185,3 +00848_15,14 +01161_56,17 +01092_276,12 +010652_80,18 +007292_294,14 +016922_97,1 +02187_94,16 +018772_225,4 +01707_139,0 +00509_146,12 +01409_234,14 +00840_127,2 +00761_246,3 +017672_150,14 +02172_129,14 +01981_33,5 +01813_148,14 +01119_100,5 +009642_241,4 +02094_55,4 +00628_102,7 +007832_47,2 +00783_167,2 +019412_223,14 +00342_36,17 +01488_166,13 +019252_16,14 +009642_254,14 +00474_167,2 +00867_49,17 +01804_8,7 +01769_240,9 +01408_288,14 +02042_98,15 +01087_27,14 +017692_262,2 +00709_53,19 +02191_33,7 +006092_87,14 +00261_56,12 +00413_91,0 +02127_208,17 +02057_57,2 +000792_198,9 +00160_75,11 +00485_241,1 +02005_157,11 +00450_134,13 +016882_231,5 +021722_114,14 +01814_80,11 +02191_112,14 +01001_27,2 +017232_187,15 +01087_254,5 +01261_96,2 +00597_30,5 +00490_100,2 +010012_197,5 +014232_60,2 +018122_115,2 +01058_121,12 +01144_178,2 +01723_189,15 +01578_110,14 +01693_270,0 +02138_265,14 +01865_39,18 +00837_32,11 +01948_122,13 +01409_65,0 +01605_27,14 +01501_18,4 +01509_164,0 +007832_283,5 +010942_111,14 +007292_287,14 +00079_194,9 +01865_69,18 +00867_168,14 +01763_116,2 +01972_263,14 +008402_201,7 +00821_50,5 +005282_10,2 +01333_28,2 +00951_119,0 +014372_248,11 +005392_274,1 +01161_171,17 +021722_19,14 +01044_208,12 +01044_250,12 +021912_41,7 +00408_279,11 +02187_125,16 +01605_60,5 +00025_34,17 +01045_224,4 +017482_20,0 +009512_62,0 +00011_70,4 +00467_7,11 +019622_92,0 +00159_79,4 +018772_43,4 +01909_203,12 +014372_124,11 +02172_258,14 +00181_75,0 +004172_76,17 +006742_61,14 +005502_103,18 +014882_245,5 +019242_34,14 +018342_271,8 +00840_163,2 +02177_16,4 +00011_109,12 +01044_218,2 +01972_70,3 +001242_38,4 +008402_239,2 +01882_5,14 +007292_170,14 +02005_293,11 +00840_286,2 +01493_242,1 +00867_0,14 +00615_129,1 +01605_18,14 +01977_277,14 +006742_5,14 +01977_94,8 +010912_258,2 +01272_241,4 +00088_83,14 +01692_37,2 +012722_233,2 +016922_6,14 +02172_29,14 +001602_213,1 +014372_209,11 +01769_80,1 +01091_23,12 +011772_52,4 +01184_77,5 +010872_87,5 +01182_87,13 +01767_135,14 +007212_236,14 +01814_254,5 +00674_0,14 +000792_224,17 +016922_8,14 +019712_282,12 +02162_8,14 +00296_11,14 +01058_16,2 +01408_289,14 +01688_137,14 +00615_80,11 +009642_108,8 +00280_32,12 +01929_96,0 +01706_79,2 +000232_88,4 +01688_184,5 +00957_69,2 +01065_66,18 +001242_18,4 +01092_77,17 +00783_290,5 +01045_202,4 +010012_211,5 +01366_62,17 +02054_201,2 +01787_70,9 +007832_51,2 +01706_73,2 +01240_4,2 +011912_61,7 +00312_38,0 +01971_122,2 +00660_111,0 +01582_11,7 +01423_79,0 +01240_13,2 +00128_257,12 +014282_57,14 +00390_93,11 +00314_202,4 +00848_34,17 +005282_211,0 +015972_97,0 +00528_205,0 +006092_79,14 +01578_66,14 +007092_288,12 +01045_232,4 +00282_95,5 +01814_107,11 +008252_24,2 +00175_2,2 +00242_81,4 +00660_15,14 +007092_38,19 +01769_220,9 +01408_269,14 +01977_13,14 +00588_42,4 +01044_233,12 +012192_113,5 +000242_36,7 +02005_72,11 +012402_84,2 +019622_54,0 +00462_86,13 +012402_82,4 +01272_140,4 +01145_204,4 +00783_120,17 +020572_9,2 +01804_63,7 +003122_10,0 +016922_155,14 +01977_119,8 +00475_255,9 +00159_72,12 +000792_57,9 +00892_55,0 +00674_133,14 +01909_172,12 +01412_16,0 +01775_20,2 +008402_120,7 +01407_56,12 +00552_87,2 +01448_66,3 +00462_80,13 +02042_58,15 +02062_48,2 +00242_211,4 +00426_85,0 +00296_102,14 +010912_52,1 +02191_77,7 +01001_53,2 +000792_183,9 +02049_124,13 +01769_252,0 +00475_198,1 +00761_234,3 +00102_194,16 +02146_79,18 +01044_98,4 +01272_201,12 +014272_1,14 +02127_196,17 +01981_0,14 +016982_1,14 +002752_59,14 +01953_41,2 +01804_90,7 +00821_111,5 +01408_276,14 +016052_80,5 +01972_88,3 +019252_190,8 +017482_1,11 +01191_32,14 +01219_84,5 +01643_105,14 +00065_42,1 +01804_94,4 +021622_44,17 +01409_207,14 +02186_99,14 +01351_150,2 +014372_31,11 +010872_208,5 +007292_203,14 +00333_23,2 +010942_25,5 +01001_278,5 +01698_106,14 +009162_294,5 +00408_1,2 +00718_79,19 +009642_198,8 +01045_69,4 +017692_179,2 +01879_62,4 +001242_53,0 +01240_217,4 +012282_228,14 +00442_253,4 +00453_195,9 +01409_48,4 +00535_180,5 +00128_112,12 +017672_50,14 +00615_230,11 +01228_296,14 +00505_243,14 +005392_46,6 +007292_240,14 +01256_7,14 +000792_126,9 +002802_150,2 +01623_92,11 +021722_207,14 +00462_198,14 +01049_44,7 +00783_21,2 +01240_294,4 +00382_63,17 +005092_158,2 +01972_120,13 +016052_34,14 +01087_190,5 +00979_48,1 +02030_156,16 +017482_77,0 +00535_197,5 +017072_97,0 +01597_115,14 +01909_193,2 +02021_86,11 +009642_251,4 +00761_61,14 +01145_174,4 +016882_47,5 +00181_146,14 +019242_196,14 +02027_101,14 +005882_169,4 +005092_23,2 +00462_4,14 +00916_199,2 +01763_217,12 +008922_45,0 +00962_34,4 +005392_13,6 +00841_9,14 +01925_270,8 +01812_45,2 +01240_287,12 +012402_168,12 +018132_115,11 +00124_82,19 +00697_98,2 +00314_171,0 +00456_113,4 +01706_47,2 +01707_255,7 +01929_107,0 +008402_151,2 +018132_61,11 +00102_26,2 +01814_93,11 +01144_21,5 +010872_38,14 +00408_137,1 +01448_100,14 +01839_78,11 +01191_192,14 +017072_276,7 +004082_188,11 +020052_123,11 +01210_146,6 +01769_170,0 +008922_17,0 +02172_118,14 +01925_165,3 +017752_106,12 +00503_166,5 +018652_134,14 +02028_110,2 +00563_8,2 +00276_53,11 +01971_121,2 +01834_60,8 +01091_147,5 +00261_19,0 +00550_32,18 +00688_70,4 +01597_33,0 +01924_230,14 +00718_62,19 +02027_37,18 +00721_36,12 +01623_70,11 +00485_250,1 +01101_172,14 +01087_188,5 +01706_127,2 +02057_6,2 +01698_12,14 +01698_109,14 +01877_86,4 +014372_74,11 +01272_79,2 +01706_66,2 +01977_83,3 +014282_48,14 +00503_38,6 +014232_118,0 +00124_180,0 +00875_99,2 +00102_172,16 +01723_132,15 +01278_55,2 +00841_10,14 +01240_179,12 +014882_82,0 +00467_19,11 +014882_158,13 +00350_132,9 +000242_82,17 +00709_48,19 +00747_34,6 +00957_0,0 +005392_50,1 +01865_37,5 +00837_74,11 +00567_258,2 +00539_195,1 +021722_240,14 +01568_67,12 +019712_184,4 +00041_72,6 +00079_35,9 +01706_161,2 +001602_54,11 +01094_84,11 +004532_91,9 +01144_113,2 +02054_101,12 +01161_32,17 +010872_244,5 +020052_89,11 +00535_272,6 +02177_57,12 +001602_117,11 +00314_261,0 +007222_46,17 +016882_34,11 +008482_104,17 +00768_83,7 +01953_231,4 +01775_105,12 +014372_216,11 +010652_110,14 +010012_268,5 +00160_37,11 +01330_294,9 +014372_102,11 +01007_194,0 +012192_15,14 +01977_50,14 +01971_26,2 +006742_116,14 +018342_52,8 +016922_59,5 +02186_90,5 +00160_265,13 +01144_206,2 +01901_41,0 +00088_59,5 +006742_4,14 +005882_37,4 +00102_170,16 +003062_84,7 +00550_88,18 +02005_205,11 +01962_24,0 +02138_111,4 +012722_241,4 +016932_104,12 +01087_0,14 +01351_69,17 +010912_105,0 +01161_37,17 +001022_148,16 +02138_245,14 +00916_61,2 +010872_155,5 +020052_100,11 +00768_29,7 +00674_60,14 +021722_193,14 +00688_82,4 +01853_90,0 +009642_13,14 +01901_96,12 +00538_41,17 +01240_93,12 +01582_12,7 +017672_207,14 +015972_31,0 +02088_23,0 +00280_155,2 +01201_112,14 +019242_195,14 +006092_13,14 +01925_203,8 +01622_120,14 +01929_26,0 +01182_1,14 +00563_17,2 +014282_39,4 +017692_83,11 +00176_1,1 +01361_63,4 +01977_298,14 +01972_181,13 +00964_59,3 +00242_124,12 +01431_165,11 +01879_103,2 +017232_80,15 +02057_187,3 +01688_176,2 +01688_238,5 +017232_76,15 +00065_23,9 +007212_174,14 +00314_296,0 +013712_34,14 +01787_48,9 +014882_75,0 +00417_181,6 +017752_159,12 +01256_105,14 +00747_70,4 +00528_213,0 +014882_63,13 +02177_5,4 +01330_92,9 +01177_89,4 +00453_182,9 +009642_246,4 +01763_133,12 +01925_298,8 +01184_43,5 +020052_235,11 +01044_274,4 +011082_5,14 +01977_34,2 +012402_221,4 +01971_53,12 +00837_10,0 +00505_244,14 +01161_270,17 +004082_264,13 +01134_46,10 +01423_65,2 +021912_84,7 +00837_170,14 +011082_20,0 +01351_24,7 +00292_22,11 +017672_204,14 +007292_17,14 +00607_124,5 +00519_100,11 +019622_78,0 +004082_57,1 +00916_297,5 +00023_124,5 +01767_229,14 +001022_88,16 +01924_65,14 +011612_176,17 +00467_52,11 +00490_65,2 +00450_93,13 +014882_48,0 +018122_62,4 +014372_220,11 +020572_124,6 +010872_36,14 +00408_94,11 +010012_35,12 +01688_182,5 +01834_118,8 +008402_19,2 +00276_12,14 +01853_37,7 +00438_65,2 +00840_236,2 +01977_73,8 +00783_85,17 +01191_10,14 +01839_91,11 +016052_174,11 +01423_26,2 +01578_28,14 +01605_163,11 +01118_43,7 +00951_39,0 +00539_161,17 +01769_239,9 +01626_124,7 +01145_249,4 +010912_244,2 +014372_148,11 +01693_28,17 +01748_61,0 +009512_91,0 +00474_35,2 +00848_51,17 +01427_14,14 +00314_237,12 +016922_140,14 +00505_51,4 +007212_111,14 +00546_16,14 +00729_242,14 +01409_187,0 +01693_147,0 +01177_11,14 +018132_70,11 +01423_256,2 +01509_267,11 +008832_25,11 +01688_214,5 +01431_276,11 +005282_71,2 +00025_69,17 +005882_41,4 +01941_226,14 +007292_248,14 +01688_160,14 +01929_61,0 +00539_6,6 +01161_282,17 +014232_3,2 +011612_22,17 +01804_54,12 +00607_119,5 +01962_129,0 +01201_13,14 +01165_104,5 +01361_119,3 +00342_0,14 +010012_82,5 +00442_290,4 +00280_141,12 +00957_19,1 +01901_153,12 +01431_80,5 +013302_81,6 +010872_282,5 +00280_157,12 +00768_43,7 +008922_78,2 +02094_163,2 +02186_71,5 +00934_39,5 +004082_27,1 +00506_60,6 +00009_251,4 +00848_118,17 +00462_11,14 +005502_110,18 +00342_93,14 +01428_72,14 +02127_173,17 +01437_200,11 +018132_52,11 +00539_198,6 +007832_107,6 +01134_99,10 +00413_149,0 +01723_209,15 +01423_150,0 +00102_289,16 +00158_105,11 +00951_148,14 +00578_41,17 +01134_155,10 +00124_45,0 +01706_213,2 +00793_147,14 +001242_169,19 +02030_103,16 +00232_172,14 +00768_102,14 +020052_99,11 +00660_158,0 +00023_69,3 +019592_1,6 +010872_103,5 +02054_141,2 +00102_215,16 +01210_129,6 +00456_137,12 +02030_278,16 +02057_39,2 +00951_73,0 +00408_292,11 +01877_249,4 +01775_45,2 +01767_224,12 +008252_54,2 +00993_167,7 +00442_29,14 +01366_48,17 +019252_70,6 +01272_6,2 +00951_36,0 +005502_1,14 +00628_41,7 +00490_25,2 +02005_217,11 +01049_3,7 +01134_231,10 +021462_38,11 +00793_251,14 +01636_138,14 +00528_95,2 +00474_224,2 +00124_30,4 +00102_189,16 +00160_296,1 +01904_25,2 +01853_47,1 +00228_114,5 +014072_47,2 +01228_107,14 +01775_66,2 +008372_75,11 +01219_7,14 +01278_244,14 +004172_27,6 +008402_187,7 +00772_12,14 +01428_10,14 +00729_219,14 +01488_75,0 +01423_133,0 +005392_41,6 +00314_219,0 +01210_267,9 +018342_8,14 +01925_86,3 +00519_38,7 +01261_36,2 +00538_128,14 +00009_205,12 +017692_297,5 +01904_89,2 +01423_78,0 +01240_226,12 +017672_118,14 +00993_192,7 +006742_48,14 +018392_38,2 +00505_29,2 +01103_94,14 +00350_7,14 +00079_17,9 +00228_262,11 +009352_40,7 +01578_241,14 +01161_260,17 +01408_95,14 +01924_138,14 +01879_77,12 +000242_94,7 +01161_118,17 +01839_10,2 +00175_37,13 +012282_82,14 +01723_28,15 +00079_10,9 +00837_14,0 +01839_157,1 +00350_171,5 +013302_19,2 +00793_96,14 +017672_218,14 +003062_72,7 +00697_54,12 +00840_128,2 +00505_149,12 +009352_80,7 +00023_106,11 +01228_292,14 +00275_60,14 +01769_3,2 +01119_85,11 +01457_64,7 +011772_50,4 +021722_105,12 +00453_31,9 +02049_102,13 +01437_14,11 +007222_125,17 +00615_28,11 +01956_8,14 +018772_191,4 +016882_48,5 +017692_187,2 +005502_128,14 +019252_136,3 +010912_201,1 +00729_56,14 +00867_95,5 +00175_88,2 +00505_216,12 +012192_112,5 +01092_106,17 +00729_143,14 +001022_68,16 +00242_33,12 +01191_130,7 +01622_100,0 +012402_173,12 +01568_240,2 +00021_155,2 +019412_11,14 +02191_68,7 +01361_245,15 +017692_99,2 +001242_72,4 +019042_42,12 +01044_107,4 +00280_124,14 +00892_83,2 +017232_174,15 +005502_39,18 +00160_21,2 +006972_61,5 +01210_62,17 +01145_101,4 +02187_99,16 +01959_60,6 +01058_13,2 +01101_121,0 +000792_65,9 +01494_84,14 +01493_200,1 +00761_10,14 +01448_60,3 +001022_130,16 +021622_107,1 +00528_51,2 +02054_84,2 +00102_10,2 +00280_160,12 +00840_65,2 +001112_31,17 +016052_7,14 +01813_127,11 +00021_10,5 +016982_0,14 +01968_21,14 +01693_211,0 +017672_71,14 +01371_13,14 +02030_20,14 +01839_43,5 +00124_143,19 +00539_31,6 +00821_10,14 +00840_1,2 +02162_37,12 +01925_254,8 +01775_58,2 +00567_259,2 +00181_144,14 +00660_79,0 +01330_189,13 +01924_140,14 +00981_115,14 +01769_179,2 +01158_142,4 +00567_91,2 +00660_151,0 +01925_212,8 +01488_229,5 +01901_60,5 +011772_4,14 +02030_221,16 +018392_34,14 +01684_45,4 +01488_21,1 +01278_12,2 +01941_208,12 +00314_201,4 +007292_24,14 +018772_251,4 +01144_140,2 +018772_111,4 +001022_242,16 +01692_145,14 +01165_35,5 +007292_34,14 +02062_120,4 +01101_37,7 +00615_201,11 +010912_185,13 +021722_94,14 +01366_78,17 +00709_3,19 +019252_120,3 +01184_26,5 +01839_59,11 +00840_219,7 +01941_63,14 +00993_28,14 +019042_32,2 +00979_140,14 +01045_17,2 +01865_17,5 +01101_94,1 +00729_270,12 +00730_48,18 +00916_46,2 +01568_176,2 +01437_154,11 +01813_50,11 +00509_50,2 +009642_222,3 +000092_165,0 +00417_214,17 +00124_182,0 +001112_74,7 +014122_63,0 +000092_8,4 +00276_119,11 +018772_263,4 +01437_131,11 +01437_46,11 +00350_174,9 +017752_48,12 +00979_144,14 +00503_144,9 +00426_130,0 +01839_102,11 +001242_245,0 +01366_119,17 +01941_62,14 +00158_21,14 +00242_148,2 +02146_121,1 +02062_132,4 +018342_20,14 +014272_20,4 +00535_139,6 +01256_53,4 +01693_186,0 +01361_218,15 +021722_0,14 +01605_160,11 +01929_82,0 +01333_44,0 +02127_83,17 +01929_104,0 +01853_55,6 +02149_14,6 +00124_202,0 +01437_221,11 +01977_164,8 +02138_221,13 +00124_57,0 +02054_37,2 +01330_172,6 +01048_88,14 +02005_274,11 +01145_189,4 +02127_271,17 +00011_64,2 +01723_138,15 +01924_103,14 +00550_35,18 +01158_90,4 +00065_85,11 +01877_69,4 +01834_19,14 +01763_81,2 +00546_170,14 +01929_57,0 +01437_175,11 +007832_236,5 +02187_205,16 +021462_144,14 +018122_107,2 +00505_61,6 +00503_244,9 +008372_53,11 +01763_204,2 +006742_121,14 +00124_76,19 +01101_57,7 +02057_85,12 +00475_32,5 +01448_47,6 +01145_277,4 +00450_104,13 +00024_110,2 +01493_219,1 +01839_21,14 +00228_30,14 +00490_94,2 +02094_125,4 +009162_213,2 +01312_24,7 +000792_164,15 +01904_157,2 +00566_82,8 +00124_155,19 +013712_31,14 +018772_245,4 +01087_211,5 +017072_25,2 +01509_201,0 +011612_144,17 +004172_38,17 +012722_226,4 +01707_125,0 +009162_218,2 +00840_16,2 +018132_3,14 +01948_44,15 +00730_115,14 +008482_6,14 +009352_8,14 +00550_108,18 +02012_29,17 +004172_150,6 +00703_84,11 +01256_23,4 +020052_211,11 +01201_55,11 +01626_22,7 +01597_91,0 +01428_9,14 +00821_14,14 +02138_192,13 +00475_252,9 +00232_92,13 +00709_25,19 +018132_146,14 +01210_42,9 +01001_109,5 +01488_232,5 +01488_104,13 +01813_63,11 +008372_58,11 +017232_186,15 +00941_50,4 +01427_112,17 +01177_111,14 +005392_137,1 +02030_96,16 +01490_2,14 +00979_98,1 +01007_57,0 +016982_82,17 +019042_141,12 +017672_195,14 +004172_100,6 +012722_259,12 +01058_78,4 +01045_168,4 +010652_33,18 +00892_80,2 +00660_216,0 +00456_103,12 +00875_113,2 +019042_107,12 +01046_81,7 +017232_279,15 +01901_136,0 +014072_24,12 +004172_136,17 +00453_276,9 +01688_222,5 +00601_12,7 +01184_75,5 +014272_50,14 +00490_185,2 +02062_81,4 +01278_104,12 +01134_51,10 +00228_278,2 +00588_229,2 +01278_32,2 +000792_30,9 +00563_84,6 +00228_206,9 +00964_232,3 +02049_199,13 +017672_92,14 +00519_87,11 +01007_147,19 +008832_58,11 +00539_215,1 +004172_146,7 +02030_145,16 +00841_79,14 +01972_116,13 +00158_75,5 +01509_195,0 +00228_179,9 +01161_247,17 +013302_281,9 +00962_5,16 +00588_210,12 +005392_152,1 +01812_34,4 +002802_149,2 +002802_198,12 +02012_9,14 +011612_187,17 +01813_19,11 +00102_0,2 +00840_22,2 +01210_94,6 +00453_105,9 +014232_196,0 +01092_93,17 +00456_169,12 +00438_231,2 +01493_107,1 +01092_105,17 +00539_225,13 +001242_12,4 +01706_262,2 +00821_34,5 +000792_147,9 +00474_299,2 +01901_141,5 +018772_239,4 +01787_83,9 +007292_194,14 +00475_205,1 +01497_48,12 +00567_114,2 +005092_72,12 +01622_68,14 +021722_168,14 +000092_204,12 +00528_125,2 +02177_69,14 +007832_141,2 +01901_127,5 +02057_26,2 +00181_1,14 +01972_110,13 +010912_263,14 +017482_22,0 +002802_18,14 +00505_201,17 +00993_69,6 +01769_154,9 +018132_151,14 +00506_22,2 +01145_167,4 +01706_20,2 +01609_14,17 +01228_254,14 +000252_56,17 +01693_291,0 +017692_243,1 +019242_58,14 +00276_48,11 +01448_57,3 +01094_10,14 +01925_216,8 +00567_195,2 +00783_191,4 +01184_23,5 +01605_223,11 +01901_109,5 +00228_274,7 +00677_12,14 +00485_181,1 +00394_35,1 +01101_77,6 +016052_254,11 +01814_235,5 +01767_119,14 +016932_102,0 +01361_55,2 +01763_106,4 +01488_183,0 +00628_82,7 +01623_98,11 +004532_5,5 +00783_118,17 +01877_198,4 +010872_276,5 +00417_95,6 +00697_33,4 +00567_200,2 +012562_45,4 +01812_58,4 +01568_0,2 +018342_288,8 +009342_54,11 +00124_89,19 +01814_89,11 +01408_32,14 +01813_135,11 +02127_274,17 +01497_51,12 +01201_93,14 +018122_25,4 +02027_62,14 +01839_176,12 +001022_108,16 +00519_156,14 +01423_70,4 +00438_263,2 +01623_5,14 +006972_101,12 +018392_63,11 +008482_70,17 +019592_9,6 +00128_37,12 +02172_221,12 +00709_70,19 +01437_280,11 +01161_46,17 +00065_120,11 +003062_53,7 +00674_85,4 +00916_57,2 +019252_260,8 +00128_21,12 +01182_109,14 +009642_205,8 +01361_219,15 +01007_215,0 +00453_24,9 +00442_238,4 +014072_8,2 +01045_193,4 +01702_58,2 +018652_79,18 +00453_176,1 +012282_83,14 +01361_290,15 +005392_225,13 +01272_260,12 +00519_106,11 +01201_59,11 +00503_198,9 +01118_55,7 +01101_149,14 +00228_29,14 +00079_161,15 +000792_264,1 +01971_14,2 +00342_74,17 +017692_194,2 +019712_170,12 +01623_81,11 +01941_209,12 +001022_37,16 +01423_22,2 +005092_197,2 +018392_78,11 +018392_16,2 +01605_65,5 +006742_130,14 +00509_56,12 +01688_215,5 +019252_194,8 +01145_200,4 +00747_3,7 +01692_117,1 +002802_131,12 +01431_184,11 +00490_129,2 +019252_267,8 +01049_5,7 +01924_43,14 +01626_45,7 +021462_45,18 +01626_62,7 +018392_30,14 +00041_58,7 +00102_62,16 +00394_105,14 +004532_295,9 +010652_45,18 +01182_8,14 +01488_145,0 +010912_172,11 +00280_119,2 +01901_91,0 +017232_29,15 +01191_140,2 +00821_129,14 +01723_248,15 +00408_50,1 +017692_235,9 +01427_78,17 +010912_237,12 +00453_224,9 +01853_62,5 +00837_110,11 +009162_186,2 +00306_97,14 +01605_287,11 +01408_58,14 +00509_49,2 +00503_171,5 +02012_74,17 +00417_226,7 +01103_75,17 +01145_94,4 +000792_1,9 +01865_60,18 +007832_290,5 +00024_103,2 +00840_39,2 +01929_159,0 +00840_3,2 +00916_45,2 +005092_30,2 +00935_108,14 +001242_188,0 +019242_105,14 +017232_56,15 +01493_120,1 +00296_78,7 +01959_83,6 +00065_161,1 +01361_217,15 +00079_230,9 +01541_67,5 +011772_97,4 +00333_90,0 +00979_143,14 +021722_104,12 +017072_234,0 +00722_39,17 +005882_18,12 +01834_45,8 +00730_34,18 +00228_8,14 +011772_122,14 +00128_186,12 +012562_106,14 +00552_8,2 +00280_200,12 +00462_185,14 +01769_22,2 +00342_87,14 +01144_22,5 +011612_220,17 +02138_156,13 +01101_150,14 +01366_11,14 +00867_155,0 +014282_2,14 +008402_8,2 +01366_99,17 +00009_167,0 +00009_39,2 +00456_159,14 +00535_126,9 +00628_53,7 +009342_3,1 +016432_110,14 +019622_3,0 +01948_98,13 +004532_166,9 +01134_227,10 +01763_47,2 +014282_63,12 +001022_107,16 +00490_179,2 +005282_116,2 +01427_53,12 +012722_103,2 +01763_234,2 +01925_147,3 +01045_219,4 +00509_29,2 +00009_246,12 +005062_126,2 +01971_298,4 +00567_143,5 +016932_131,0 +00287_192,4 +00539_63,1 +00158_180,5 +01145_153,4 +00079_241,9 +00964_157,8 +00021_147,2 +00660_76,0 +01767_254,14 +00041_89,12 +01605_111,5 +01962_85,0 +010912_39,12 +01161_175,17 +00588_48,15 +01045_147,4 +007832_175,2 +020572_113,2 +001602_238,11 +019242_133,14 +00941_51,13 +00450_59,4 +02005_210,11 +02138_200,13 +02172_205,14 +01427_83,2 +008372_142,11 +005502_96,18 +01134_167,10 +00228_225,14 +00242_289,12 +00962_57,3 +02012_23,17 +00280_177,4 +01981_95,5 +00793_174,14 +00442_259,4 +017692_265,2 +01971_163,2 +01909_16,2 +017232_94,15 +00275_33,14 +019712_83,4 +00776_41,4 +013712_1,14 +00981_42,11 +01769_33,2 +01182_36,11 +02012_37,17 +01431_50,11 +01184_119,14 +01692_55,5 +00957_33,0 +00709_266,1 +017232_156,15 +01971_261,4 +013302_112,9 +014232_11,2 +010872_187,5 +009642_172,8 +00840_124,7 +020052_5,11 +01956_55,4 +005392_156,17 +02138_169,13 +01839_74,11 +01219_67,5 +01431_275,11 +00718_52,19 +00009_62,12 +00578_30,1 +017692_244,1 +00628_44,7 +000092_40,2 +01165_119,14 +01688_16,5 +00442_123,4 +00979_86,1 +01971_214,2 +021462_149,14 +01058_7,2 +007292_94,14 +00566_260,8 +007222_42,17 +01941_132,14 +01091_30,12 +000232_147,6 +00242_12,2 +018342_162,8 +00703_28,11 +01814_134,5 +02138_279,14 +01001_54,2 +01834_135,8 +00242_133,2 +00503_49,6 +01494_12,14 +01177_79,14 +00601_11,7 +01049_4,7 +02191_118,14 +01707_260,7 +004532_270,9 +01201_99,14 +01929_211,14 +007222_81,17 +01901_13,14 +00609_38,11 +00426_90,0 +00408_27,1 +01240_228,12 +01494_27,7 +000242_100,2 +01706_223,2 +01769_224,9 +01101_47,7 +01423_112,0 +02187_210,16 +00394_47,14 +014272_85,2 +00041_17,2 +00837_94,11 +00721_121,2 +00475_20,5 +01045_163,4 +004172_270,1 +019622_31,0 +010872_168,5 +01693_5,4 +00957_12,0 +019592_4,6 +01351_141,7 +00721_163,14 +00275_136,14 +00450_173,14 +00158_229,5 +017672_47,14 +02094_103,2 +016052_98,5 +00287_9,4 +00552_57,7 +00981_0,14 +017692_268,2 +01636_48,0 +00840_201,7 +01929_144,0 +00408_276,11 +009352_51,7 +02030_220,16 +017672_197,14 +00793_1,14 +01929_221,14 +02094_30,12 +01925_19,14 +00721_156,4 +018792_69,4 +01941_296,14 +01493_185,1 +00601_125,14 +016882_289,2 +01118_89,14 +00287_60,15 +02191_20,7 +01597_39,0 +00660_89,0 +016052_149,5 +00426_50,0 +008922_52,0 +016922_119,1 +019412_276,14 +01924_88,14 +002752_41,14 +00993_39,14 +00009_233,12 +01834_140,8 +001602_67,11 +00509_99,12 +016882_44,5 +02127_157,17 +019412_98,14 +01769_55,9 +01144_63,3 +00722_68,17 +00566_163,8 +01877_95,4 +009162_84,2 +00535_222,4 +001602_155,11 +008482_91,17 +01968_18,14 +00703_7,14 +000232_197,2 +01437_249,11 +00280_43,12 +02005_207,11 +00993_19,14 +00023_72,3 +010872_130,5 +00390_4,14 +008482_48,17 +01044_94,4 +01431_52,11 +01813_94,11 +02187_198,16 +01813_17,11 +017232_243,15 +017672_77,14 +01723_11,4 +007292_20,14 +00503_51,6 +01568_203,2 +017072_251,0 +00883_42,11 +01901_47,5 +009642_188,8 +01959_62,6 +01775_128,12 +020052_129,11 +01814_258,11 +01177_15,4 +00474_197,2 +01134_35,10 +00503_296,6 +01437_254,11 +021772_44,14 +00485_109,1 +00729_27,14 +01953_58,2 +005392_109,1 +007212_78,12 +01007_143,19 +008832_1,11 +00124_203,0 +019712_15,2 +012562_103,14 +00730_110,14 +007092_28,19 +02191_119,14 +01882_64,11 +01007_144,19 +01145_260,4 +008252_75,12 +01351_98,7 +02062_128,4 +00848_22,17 +00276_133,14 +01962_126,0 +00566_166,8 +00160_233,11 +02094_148,2 +001242_151,19 +00628_14,7 +00615_0,11 +02187_177,16 +00296_27,7 +00438_151,2 +011612_195,17 +009342_37,0 +018342_195,8 +00025_49,17 +00158_166,5 +01877_267,4 +01763_191,2 +014882_121,13 +01971_24,2 +006972_37,2 +01091_169,0 +01103_19,17 +012402_76,4 +01834_100,8 +014122_20,0 +00417_289,11 +01972_109,13 +01045_246,4 +017072_28,2 +00722_24,17 +01509_105,0 +01409_146,0 +018652_69,18 +012282_167,14 +016882_278,2 +01509_4,2 +00837_98,11 +00417_85,17 +000792_265,1 +01707_106,0 +00011_17,0 +02094_102,2 +01182_108,14 +019252_88,3 +012402_292,4 +018772_39,4 +00840_129,7 +00024_76,7 +00021_43,3 +021722_116,14 +01240_22,2 +005092_7,2 +009162_175,2 +01901_1,14 +01706_89,2 +01812_69,4 +01953_299,2 +011612_7,17 +012402_222,4 +01184_124,14 +009352_117,14 +02186_42,5 +00009_87,12 +00979_136,2 +018342_185,8 +01609_31,17 +00601_79,1 +01044_108,4 +02187_43,16 +01431_53,11 +003122_5,0 +01924_17,14 +00720_18,0 +017692_3,2 +00438_210,12 +00426_106,0 +01578_243,14 +00535_245,6 +01431_113,11 +016922_106,1 +014272_117,17 +01007_297,1 +00761_252,3 +011912_105,7 +01191_120,7 +00916_12,2 +01493_7,11 +00718_63,19 +01723_152,15 +01219_14,14 +00535_179,5 +011772_28,4 +02187_255,16 +02005_86,11 +018792_66,4 +01698_38,17 +01423_85,0 +009162_152,2 +00128_144,2 +017672_132,14 +001022_152,16 +01605_181,11 +01427_82,17 +016982_61,17 +00158_255,5 +00128_190,12 +00772_70,7 +005392_155,17 +01312_51,7 +02012_27,17 +00280_243,14 +01058_43,2 +01578_42,14 +008402_289,2 +00462_166,15 +009642_122,8 +019412_159,14 +00941_1,0 +01094_52,11 +01971_119,2 +01834_278,8 +00768_47,7 +01767_49,14 +012722_49,2 +00275_64,14 +01272_39,2 +01977_147,8 +00841_78,14 +01814_72,11 +001022_188,16 +014372_116,11 +01688_60,5 +010872_42,14 +01044_296,4 +01361_133,3 +00772_42,7 +01228_115,14 +014972_22,2 +01119_78,11 +015972_73,0 +01853_87,0 +00503_243,9 +016932_42,2 +02138_186,13 +00025_35,17 +007832_24,2 +01087_298,5 +00597_77,14 +01814_120,11 +00951_99,0 +01723_159,15 +00979_142,14 +02054_256,2 +018392_188,1 +00709_140,5 +006972_14,9 +009512_40,0 +01804_17,12 +016932_199,0 +016882_236,5 +00450_202,14 +02172_25,14 +01763_36,4 +01108_41,0 +018392_121,11 +00539_245,1 +01693_85,0 +01493_220,1 +02162_49,17 +01748_40,0 +01971_102,12 +01623_55,11 +00413_84,0 +00088_93,14 +01924_134,14 +01210_98,6 +021462_11,14 +00438_250,2 +007222_116,17 +01161_123,17 +012562_11,14 +01490_25,7 +009162_67,2 +02030_281,16 +02162_65,17 +01103_99,14 +000092_149,0 +01361_273,15 +00793_5,14 +01684_22,14 +010012_26,2 +017232_119,15 +019252_144,3 +014372_168,11 +010912_59,1 +01488_77,0 +02127_107,17 +000792_259,9 +01408_128,14 +008402_234,2 +02094_116,12 +00709_115,12 +01622_23,0 +00609_63,5 +00438_3,2 +012562_61,4 +01145_187,4 +00776_38,4 +00597_31,5 +00964_178,8 +00628_18,7 +01119_87,11 +01118_66,7 +008402_272,2 +014282_54,14 +017672_175,14 +00490_78,2 +00660_38,0 +02146_143,14 +01044_111,4 +01493_111,1 +01161_165,17 +01769_153,9 +01457_69,2 +01228_135,14 +01865_59,18 +00475_199,1 +017692_104,2 +007222_124,17 +012722_211,4 +01977_230,8 +008372_32,11 +00453_278,9 +00566_172,8 +01834_160,8 +01493_196,9 +014282_32,14 +00722_87,17 +019622_16,0 +01161_272,17 +00722_101,17 +01688_32,11 +01272_114,2 +001602_63,11 +017022_61,14 +00442_214,4 +00546_74,3 +01351_32,7 +01813_56,11 +01134_70,10 +00242_174,2 +01981_100,5 +01877_162,15 +01312_69,7 +017072_222,0 +017692_259,2 +01763_258,12 +01568_162,4 +01853_72,6 +017072_163,0 +019412_12,14 +018132_88,11 +019412_115,14 +01044_252,12 +00390_103,14 +01240_277,12 +00102_93,16 +013302_135,6 +009512_79,0 +01541_3,14 +01706_78,2 +01210_64,17 +003122_39,0 +002752_168,12 +01488_7,13 +00783_46,2 +01431_177,11 +00721_251,14 +00981_41,11 +00535_250,9 +02094_99,2 +005062_80,6 +005882_124,13 +01330_163,15 +008482_9,14 +001602_159,11 +00287_88,15 +00242_243,12 +00567_173,2 +00721_151,14 +01812_56,4 +02012_126,14 +01094_101,14 +01001_224,5 +021462_104,18 +01775_55,4 +00776_37,4 +008402_45,2 +01723_141,15 +01045_23,2 +010012_284,5 +01688_225,5 +010012_19,12 +01191_182,14 +019712_213,2 +019252_91,3 +002802_103,12 +004082_195,11 +017692_256,2 +00474_158,2 +01490_63,7 +004082_159,11 +005282_38,2 +01228_113,14 +01804_55,12 +010942_7,14 +00438_124,2 +01834_129,8 +02005_46,11 +00772_92,14 +018342_184,8 +00709_196,19 +00607_31,11 +00462_71,13 +00009_93,0 +00776_21,4 +00875_7,2 +007292_187,14 +014232_198,0 +004532_70,9 +01971_65,12 +014882_131,13 +01775_91,2 +02062_87,4 +009642_93,8 +01968_24,7 +01707_297,7 +017232_95,15 +009162_204,2 +012402_295,4 +01929_224,14 +01941_59,14 +01228_127,14 +00485_127,1 +00408_95,11 +00588_17,12 +00009_11,2 +008372_99,11 +004672_53,11 +00821_114,5 +00721_224,14 +01272_121,2 +01045_289,4 +00793_296,14 +01165_25,5 +01814_84,11 +01834_56,8 +019622_61,0 +02186_87,5 +00783_259,5 +00783_247,5 +017072_155,4 +01882_83,14 +00408_203,11 +014372_286,11 +02187_124,16 +00102_217,16 +016932_294,0 +00993_6,14 +01101_168,14 +01431_42,5 +00181_84,0 +01688_17,5 +01423_221,0 +00453_230,9 +00128_157,2 +014372_224,11 +02146_53,18 +02049_5,12 +00505_194,7 +01763_156,2 +01626_67,7 +01953_170,12 +005502_4,14 +01361_211,3 +019592_63,6 +01361_137,3 +01423_260,2 +00009_32,7 +01626_14,2 +00065_93,11 +00609_17,5 +02030_91,16 +011612_251,17 +00783_213,2 +01493_206,1 +00287_226,4 +00709_102,11 +006972_106,4 +01092_74,17 +001022_99,16 +01145_86,4 +00837_124,11 +00793_181,14 +01431_100,11 +00538_2,14 +00821_57,5 +00394_10,14 +00023_135,6 +00287_179,15 +017692_96,2 +02172_227,14 +00450_185,14 +00509_133,12 +016882_197,5 +01494_73,7 +01182_107,14 +00065_74,1 +014282_19,4 +00009_193,7 +00615_181,11 +01877_295,4 +012282_253,14 +00485_205,1 +019712_229,2 +01228_200,14 +01161_43,17 +017072_53,0 +01814_103,11 +01707_121,0 +00577_19,14 +00124_98,19 +010872_76,5 +00979_33,1 +01119_1,14 +01091_248,2 +00462_156,13 +01045_296,4 +00314_28,2 +009162_211,2 +00438_13,2 +01924_59,14 +01971_279,12 +020572_6,2 +001602_182,11 +016882_223,5 +005392_161,17 +01941_272,14 +009512_153,14 +00729_206,14 +00382_4,5 +00875_71,2 +012722_19,2 +00979_147,14 +00023_181,2 +005282_57,2 +01191_160,2 +00509_63,2 +018392_49,11 +02127_136,17 +018122_3,2 +01865_84,18 +00578_3,14 +00462_180,14 +01834_17,14 +01191_144,14 +00993_198,7 +00275_5,14 +00009_206,12 +016932_1,2 +01272_98,2 +016882_37,5 +01977_264,3 +00577_111,14 +00552_58,7 +015972_34,0 +02138_108,4 +01688_24,5 +00314_4,2 +01622_72,0 +01929_34,0 +000242_92,7 +01330_199,6 +016982_72,17 +01812_31,4 +013332_49,0 +01330_52,9 +00158_133,5 +00615_182,11 +005502_17,5 +01044_62,4 +01408_137,14 +013302_12,2 +00160_260,13 +00962_8,0 +00390_20,5 +01501_61,0 +00567_263,2 +01165_46,5 +009642_284,14 +01723_143,15 +01361_100,6 +00674_57,4 +01767_240,14 +00408_56,1 +019412_136,14 +01981_54,5 +000092_60,12 +009642_245,4 +00546_167,14 +00417_45,17 +00462_17,14 +00747_15,6 +01623_25,14 +004172_98,6 +01688_31,5 +00438_299,2 +011912_197,14 +01240_189,4 +016882_291,2 +01408_297,14 +00124_193,0 +00615_27,11 +00688_52,4 +00417_268,11 +018772_92,4 +01767_267,14 +005092_65,2 +000092_232,12 +01688_234,5 +01493_290,1 +00841_68,14 +000092_93,0 +00528_39,2 +00892_42,0 +01953_147,4 +009162_231,5 +00761_85,14 +019622_68,0 +017692_171,0 +00519_96,11 +00011_94,2 +01182_52,13 +01865_80,18 +007092_236,19 +00962_70,3 +001022_80,16 +01351_147,7 +012722_20,2 +01493_141,1 +00280_223,14 +01925_110,3 +002752_170,12 +00023_133,6 +01706_256,2 +01330_161,6 +02005_198,11 +00674_129,14 +019592_45,6 +01723_35,15 +01901_45,5 +01909_13,2 +019592_48,6 +00450_123,13 +019592_50,6 +01092_44,17 +012282_264,14 +00261_40,4 +00660_259,2 +01371_55,14 +01144_199,12 +00601_44,17 +02094_132,4 +008402_34,2 +00474_48,2 +020052_70,11 +007762_102,14 +00935_80,7 +00528_168,0 +00729_164,14 +01605_200,11 +001022_177,16 +01437_142,11 +02172_32,14 +004172_241,6 +01108_61,4 +00181_74,0 +01044_9,4 +01688_10,5 +00350_202,5 +01431_198,11 +00697_51,12 +01763_295,2 +01351_79,7 +00821_23,2 +005092_81,2 +02172_61,14 +01044_36,4 +004082_12,2 +00450_19,14 +01769_53,9 +008402_218,7 +01431_152,11 +01412_72,0 +01941_248,14 +010872_170,5 +000252_23,17 +00023_99,0 +014072_19,12 +001602_244,1 +01814_44,5 +01578_53,14 +014232_202,0 +01210_175,6 +01813_60,11 +00993_84,7 +016982_50,17 +01256_108,14 +00503_114,1 +012722_218,12 +00011_120,4 +00333_37,2 +01981_108,11 +00867_32,0 +004532_277,9 +021772_42,14 +003062_54,7 +00916_287,5 +012402_199,12 +02054_153,12 +010912_62,1 +00993_71,6 +01409_24,12 +02049_201,13 +014122_38,0 +01901_169,12 +01597_13,0 +01707_4,2 +00242_296,12 +017752_117,2 +01366_79,17 +01134_80,10 +00065_83,11 +01904_104,12 +012612_6,2 +016092_38,17 +01568_186,12 +00840_155,7 +00102_8,2 +01448_63,3 +01044_3,2 +00242_207,4 +01941_37,14 +01693_265,0 +01763_160,2 +00993_156,7 +014232_247,0 +001022_241,16 +00964_199,8 +01437_150,11 +01834_222,8 +01541_54,5 +00964_72,3 +00528_188,0 +014882_97,13 +011912_20,14 +01813_132,11 +000092_241,7 +01144_100,12 +00023_142,6 +015972_3,14 +01812_36,4 +02030_245,16 +01256_101,14 +010652_93,18 +01045_121,4 +00674_23,14 +02054_135,2 +00292_4,11 +021622_59,7 +002802_2,14 +016882_60,5 +00453_65,9 +00242_48,12 +00408_65,1 +00181_44,0 +02127_130,17 +005882_62,13 +004532_62,9 +00280_163,12 +00703_98,11 +01834_191,8 +017692_195,2 +010872_47,14 +010872_3,14 +01240_18,2 +012612_103,2 +00181_126,0 +00729_65,14 +01087_193,5 +00350_299,5 +00009_161,12 +00426_15,0 +01767_63,14 +00280_83,4 +005392_246,1 +00840_176,2 +00660_247,2 +007832_20,2 +00333_154,2 +00951_140,14 +01509_28,2 +014272_119,2 +018652_109,18 +011612_42,17 +013302_136,6 +01144_2,5 +00041_43,12 +00793_68,14 +00730_26,17 +00539_138,1 +01134_270,10 +014282_53,14 +00023_168,2 +00539_60,1 +007832_253,5 +01087_92,5 +01048_24,5 +009162_189,2 +01427_17,2 +004532_119,9 +01977_217,8 +01578_237,14 +00993_123,7 +01437_260,11 +017692_76,9 +01087_272,5 +01953_296,2 +014072_9,2 +004082_270,13 +00124_188,0 +009352_13,14 +00607_73,5 +014882_183,0 +00462_12,14 +01605_205,11 +01423_21,2 +01977_98,8 +014882_79,0 +02172_112,14 +01437_282,11 +001242_155,19 +018792_100,2 +01134_193,10 +00453_282,9 +01177_109,14 +01568_25,2 +01972_136,3 +01330_183,3 +017692_88,11 +013302_41,9 +018122_61,4 +00160_51,1 +00964_154,8 +01909_182,4 +00009_249,12 +014232_98,0 +01427_120,2 +01723_206,15 +00721_234,14 +01981_55,5 +00462_122,13 +00721_171,12 +01092_201,14 +00475_154,9 +02187_223,16 +007182_88,19 +008252_6,2 +01623_77,11 +01001_222,5 +00128_92,12 +00837_142,11 +017022_27,4 +01144_197,12 +00041_155,7 +019412_246,14 +00160_293,13 +00964_219,3 +020052_221,11 +017752_89,2 +00677_88,14 +00065_243,12 +01490_62,7 +018132_16,11 +019042_93,2 +017022_8,14 +021722_111,14 +00275_110,14 +01219_75,5 +011912_154,14 +02005_122,11 +01144_105,4 +007182_11,2 +00505_111,7 +00546_174,14 +00729_117,14 +00761_16,14 +006972_92,12 +01924_82,14 +00181_4,14 +01118_37,7 +00837_22,11 +019712_258,4 +00730_44,18 +01007_60,0 +00841_83,14 +00124_119,19 +02012_49,17 +005092_9,2 +01366_140,5 +00124_220,0 +014072_13,2 +017752_109,12 +00567_193,2 +00609_20,11 +00588_132,13 +01488_245,5 +00993_225,6 +00993_228,6 +02005_2,11 +01058_103,4 +01971_262,4 +01925_163,3 +02012_104,17 +01929_29,0 +01748_73,0 +01256_32,12 +005282_99,2 +01956_72,14 +01853_18,5 +006742_28,14 +01692_136,5 +02127_2,2 +01829_8,2 +00160_79,1 +018132_95,11 +00287_258,4 +004172_57,17 +01925_287,8 +01228_181,14 +00615_193,11 +01044_54,4 +01953_224,4 +01007_53,5 +01962_137,0 +00567_151,2 +019042_81,12 +00588_163,15 +01119_81,11 +00023_71,3 +00837_166,0 +001242_202,0 +01763_170,12 +00951_57,0 +02138_175,13 +02172_114,14 +00079_174,9 +00442_255,4 +009642_238,4 +016882_35,11 +00577_107,14 +002802_35,12 +018792_30,4 +016982_36,17 +01688_33,11 +01158_74,4 +01879_72,0 +01787_15,13 +010872_120,5 +00722_123,17 +010942_13,14 +01723_196,15 +01488_114,0 +01597_34,0 +01361_18,5 +00312_5,0 +000252_10,17 +02172_35,14 +00793_136,14 +00160_199,11 +016432_31,14 +017672_33,14 +00941_41,0 +018122_31,4 +00993_102,7 +01058_68,2 +00747_49,4 +02005_146,11 +019622_27,0 +01977_138,8 +00102_124,16 +01045_43,2 +01092_172,17 +014882_179,0 +02162_83,17 +00563_13,2 +01839_52,11 +00438_281,12 +017232_60,15 +02005_251,11 +01623_18,14 +012402_236,12 +00011_1,0 +01509_81,0 +02127_23,2 +007092_170,19 +00442_246,4 +01941_250,14 +01767_236,14 +007832_229,5 +01723_77,15 +00242_169,2 +00275_10,14 +01953_269,12 +014272_84,2 +01278_175,2 +01865_43,18 +017232_49,15 +01144_78,6 +00438_101,12 +001112_73,7 +017692_65,9 +02177_41,14 +01161_117,17 +01692_54,5 +017672_153,14 +01361_109,3 +01048_44,5 +007832_172,2 +019712_71,4 +005092_200,2 +01925_64,6 +019412_84,14 +00025_39,17 +00490_233,5 +00011_16,0 +01423_154,0 +005392_231,1 +01272_102,2 +01412_79,0 +00550_105,18 +02127_229,17 +01839_174,4 +01941_142,14 +02146_83,18 +01605_28,14 +01158_42,4 +00333_146,2 +00761_7,14 +01272_87,2 +00597_83,14 +012722_191,2 +004172_255,5 +00709_77,19 +00474_283,2 +00588_160,13 +001602_188,11 +00528_20,2 +01087_126,5 +00697_23,9 +007092_119,17 +01228_63,12 +00287_63,15 +01219_58,5 +01626_57,7 +005882_98,13 +01361_0,5 +00503_288,6 +01578_120,14 +01707_117,1 +00783_10,2 +013302_121,18 +00242_70,4 +01924_210,14 +01001_228,5 +00840_24,2 +007832_223,5 +02054_118,14 +00159_26,4 +017692_58,9 +007092_214,19 +021722_194,14 +001602_77,11 +01278_192,2 +012402_157,4 +01058_99,2 +00275_151,14 +00382_10,11 +00232_18,14 +00490_164,2 +00957_1,0 +01767_30,14 +010872_83,5 +00916_87,2 +02027_139,14 +02062_85,4 +008402_221,7 +009352_58,7 +00761_298,3 +021462_3,14 +02028_36,8 +01048_28,5 +00821_128,14 +004082_81,11 +01101_40,7 +016932_50,0 +000792_60,9 +02005_29,11 +02021_79,11 +00314_175,4 +02042_77,14 +00276_112,11 +00567_198,2 +00333_3,2 +004532_250,9 +001022_205,16 +01272_271,2 +00674_115,14 +00456_107,12 +02191_105,7 +00011_74,12 +00550_128,14 +01605_193,11 +014372_285,11 +02172_38,14 +011082_80,14 +01134_242,10 +02138_184,13 +01901_188,14 +00232_130,13 +00552_12,2 +01001_127,5 +01812_115,2 +01091_105,0 +01767_291,14 +007832_36,2 +00475_19,5 +00276_49,11 +00615_48,11 +00688_46,4 +00111_74,7 +01693_204,0 +016932_83,0 +002802_141,12 +00934_45,0 +01568_47,2 +010012_173,5 +01763_138,12 +008372_144,11 +00456_15,14 +01929_146,0 +016052_187,11 +02027_124,14 +00079_242,9 +005392_74,1 +02028_33,3 +00102_292,16 +011612_229,17 +02005_30,11 +009162_87,2 +00065_110,1 +00280_235,12 +01775_96,12 +01901_72,0 +017072_168,0 +01812_119,2 +00292_41,11 +019412_38,14 +01723_227,15 +00159_87,0 +010012_203,5 +00509_209,12 +01925_25,12 +00729_155,14 +006742_17,14 +02187_203,16 +019252_243,8 +019592_64,6 +01909_141,2 +01182_18,4 +00722_116,17 +00840_256,2 +019242_52,14 +00462_43,12 +01972_254,14 +02054_295,4 +00546_198,14 +00761_216,3 +00124_236,0 +00088_85,14 +00453_222,9 +01977_130,8 +01877_148,4 +01500_12,1 +00964_295,14 +009622_58,3 +00761_171,8 +01693_123,0 +01971_13,2 +02005_269,11 +020052_10,11 +02049_235,3 +006972_100,12 +01582_64,2 +001112_15,14 +00660_156,0 +013302_141,9 +00306_73,7 +014882_216,0 +00674_103,14 +013302_272,15 +007292_52,14 +014882_27,1 +02049_9,12 +01408_133,14 +01094_24,5 +010872_238,5 +00993_106,7 +01834_91,8 +021462_165,14 +017672_137,12 +01834_93,8 +00566_266,8 +01769_152,9 +01953_68,12 +01278_229,2 +00660_262,2 +00462_15,14 +00697_52,12 +017022_69,14 +00848_85,17 +00041_88,12 +01972_233,3 +008402_253,2 +010912_243,2 +00350_87,5 +00703_27,11 +01948_126,13 +005882_119,13 +01688_112,5 +01578_249,14 +001602_17,2 +01007_286,6 +010652_99,11 +008372_178,14 +02057_111,2 +016882_228,5 +01165_38,5 +004532_299,9 +01814_137,5 +01605_107,5 +01408_126,14 +00840_230,2 +00456_13,14 +00578_117,14 +016932_156,0 +01509_63,0 +00783_171,2 +01161_25,17 +01045_209,4 +008482_135,14 +004082_35,1 +02177_4,4 +01688_125,14 +004172_229,7 +00287_128,15 +01361_67,4 +01087_291,5 +02191_15,7 +01767_41,14 +01092_36,17 +02028_92,2 +01909_58,2 +01706_111,2 +00065_286,1 +00503_276,6 +01272_9,2 +00079_152,9 +01707_195,0 +00475_254,9 +00474_256,2 +019412_137,14 +01366_71,17 +00776_57,4 +004532_12,11 +01118_29,7 +01706_243,2 +00709_123,4 +020572_194,3 +016932_75,0 +00916_253,5 +00333_175,2 +02094_34,12 +00566_3,14 +001602_53,11 +00102_12,2 +00721_254,14 +009342_19,1 +00453_60,9 +007292_181,14 +01228_153,14 +012192_38,5 +00709_51,19 +01087_142,5 +019412_262,12 +00011_117,4 +019242_10,14 +01775_49,12 +00408_26,1 +01959_55,6 +018342_282,8 +016882_178,5 +004172_48,17 +019242_173,14 +010942_39,11 +00776_33,14 +01158_32,0 +00350_125,5 +01001_217,5 +010012_172,5 +014882_104,13 +015972_67,0 +00009_259,2 +00840_123,7 +01272_128,12 +01493_35,11 +00546_191,14 +00408_170,11 +01971_160,2 +01877_9,4 +00772_4,14 +01351_72,17 +018792_32,4 +00566_118,8 +00474_9,2 +01909_189,2 +00607_69,5 +00730_45,18 +001602_266,13 +01092_123,17 +00413_54,0 +01501_105,14 +016982_39,17 +018132_27,11 +008372_131,11 +01431_271,11 +01775_84,2 +011612_3,17 +005502_119,14 +01366_9,14 +00563_108,2 +00232_150,14 +000232_11,2 +017232_212,15 +00280_195,14 +02138_287,14 +00442_262,4 +00111_44,17 +021722_34,14 +00941_8,19 +00607_106,6 +02042_136,0 +01568_201,4 +00677_19,14 +00660_59,0 +02162_30,12 +00783_283,5 +00783_224,5 +01692_1,14 +01839_180,4 +012722_154,4 +01971_93,12 +018652_34,5 +00350_167,5 +01437_129,11 +01723_266,15 +01049_49,7 +019712_257,4 +00426_32,0 +00916_53,2 +018342_124,8 +008402_177,7 +011912_145,14 +01597_52,0 +00456_6,4 +01814_131,5 +01865_64,18 +01814_48,5 +00503_149,9 +01431_204,11 +01605_237,11 +01925_258,8 +01769_60,9 +01118_68,7 +01723_112,15 +00490_48,2 +00485_278,4 +02030_56,14 +00065_6,5 +01240_25,2 +01769_198,2 +01219_114,5 +000792_202,9 +000092_111,12 +02138_91,14 +01971_48,12 +01568_74,2 +00993_245,14 +004082_87,11 +00607_84,11 +004172_32,17 +01956_13,15 +01408_118,14 +010012_178,5 +018772_203,4 +00535_247,9 +000092_46,12 +02049_169,13 +01501_73,4 +01490_58,7 +00160_185,11 +00776_84,4 +019412_74,14 +014272_113,17 +00681_58,5 +01702_83,14 +001602_256,19 +00306_67,7 +01636_65,0 +00730_131,14 +01361_53,2 +01853_75,6 +00102_31,0 +01219_60,5 +001022_20,2 +00703_60,11 +00408_150,11 +00450_199,14 +012612_13,2 +01210_198,6 +00382_98,19 +01924_71,14 +001242_88,19 +00951_52,0 +006742_110,14 +02030_112,16 +01165_34,5 +016432_71,14 +007092_73,19 +00467_16,11 +00505_144,14 +01879_89,12 +00065_197,1 +001022_174,16 +00867_58,0 +007212_206,14 +01044_276,4 +008372_157,11 +018772_10,4 +007222_9,17 +01457_16,7 +011772_73,4 +012282_199,14 +00964_242,4 +014232_237,2 +00276_63,11 +00660_22,14 +011772_101,4 +01981_71,5 +01929_116,0 +017692_35,2 +00394_39,17 +01256_27,4 +01240_221,4 +019412_78,14 +007212_35,12 +01925_101,3 +01412_70,0 +017672_189,14 +016922_74,1 +01144_122,2 +01605_176,11 +01256_50,4 +007182_25,19 +019592_67,6 +00993_226,6 +01509_83,0 +00729_128,14 +01968_117,14 +01769_296,5 +01698_110,14 +010912_208,9 +001602_260,13 +02005_39,11 +01509_247,11 +00408_132,13 +007092_257,9 +00916_194,2 +01045_14,2 +017022_59,14 +007832_119,17 +00503_28,6 +017672_64,14 +00426_29,0 +01431_278,11 +00730_145,14 +007212_126,14 +01879_60,4 +00306_72,7 +01361_125,3 +017232_144,15 +01929_173,0 +01568_21,2 +01925_283,8 +00009_159,12 +00159_73,12 +00505_9,2 +00993_129,7 +017692_0,2 +01948_127,13 +01972_49,3 +01839_57,11 +01423_151,0 +01409_102,0 +009162_246,5 +01925_192,8 +00703_127,14 +000792_165,15 +00160_267,13 +001602_289,13 +005392_84,1 +00287_213,4 +014372_291,11 +01431_32,11 +010012_194,5 +00688_107,2 +00546_200,14 +00768_97,14 +00490_26,2 +01605_15,14 +010012_80,12 +01007_118,0 +000092_273,12 +00721_230,14 +00490_246,5 +00761_217,3 +01228_267,14 +00023_33,4 +01103_16,17 +01361_295,15 +00979_77,1 +00079_236,9 +00382_54,17 +00124_113,19 +00674_18,14 +00485_10,2 +021722_248,14 +004532_215,9 +008922_6,0 +02057_88,12 +005282_191,0 +001602_169,11 +01423_73,0 +00287_17,4 +00721_10,14 +00023_166,2 +014882_196,13 +00065_267,12 +007292_247,14 +01626_121,7 +00615_64,11 +00535_114,6 +013302_137,6 +018122_12,2 +017692_48,5 +01145_237,4 +01001_227,5 +01219_139,14 +00023_16,2 +019712_98,12 +00578_94,1 +01684_63,14 +01366_122,17 +00697_14,9 +00287_263,4 +00951_26,0 +000252_33,17 +00088_41,5 +01501_25,0 +02042_132,0 +01597_89,0 +01094_44,11 +01272_275,2 +013332_29,2 +010012_7,2 +01331_73,7 +02191_63,7 +008482_43,17 +016932_220,0 +01834_220,8 +00158_40,14 +01929_177,0 +01578_2,14 +00128_7,12 +00609_44,11 +01046_108,14 +014372_29,11 +00761_98,14 +01605_21,14 +008372_70,11 +00697_24,9 +00793_60,14 +00280_42,12 +02172_224,14 +01839_188,1 +00848_141,14 +00413_48,0 +01087_116,5 +00709_148,5 +019412_71,14 +00079_140,9 +007092_48,19 +02127_145,17 +00456_56,12 +00509_101,2 +01948_144,13 +01953_192,4 +004532_152,9 +002802_135,12 +012282_255,14 +01698_9,14 +01408_148,14 +00964_87,3 +017232_265,15 +00485_65,1 +01981_18,5 +00333_0,2 +00023_25,2 +01431_119,11 +00964_75,3 +01834_31,6 +00993_56,6 +00228_63,11 +01118_83,14 +00160_241,1 +00453_28,9 +00021_47,3 +016432_19,12 +00837_45,11 +00181_156,14 +002802_215,4 +019712_152,12 +01049_6,7 +01769_85,11 +010872_283,5 +00721_117,4 +00124_223,0 +02054_222,12 +00776_20,4 +01351_92,7 +002802_106,12 +019242_204,14 +01814_110,11 +00296_76,7 +000792_72,9 +00567_12,2 +00793_51,14 +02094_169,2 +01001_63,12 +01351_142,7 +005392_170,1 +02138_188,13 +01775_44,12 +01283_52,2 +02021_78,11 +019592_33,6 +00566_67,8 +020572_87,12 +00720_26,0 +00718_98,19 +017232_183,15 +00474_251,2 +01278_162,12 +01361_117,3 +01814_248,5 +000092_192,7 +009642_161,8 +001242_60,4 +01330_241,6 +00783_15,2 +009642_185,8 +019252_61,6 +01201_31,11 +00916_268,5 +009642_76,3 +019252_47,12 +02005_184,11 +00519_143,5 +00674_125,14 +012402_215,12 +00312_24,0 +00453_183,9 +01044_47,4 +021722_146,14 +00615_61,11 +010012_154,5 +008372_8,12 +01829_28,2 +01924_178,14 +018652_48,18 +01775_21,2 +01568_229,2 +01184_27,5 +02138_204,13 +01623_94,11 +007832_215,2 +016922_17,14 +01582_6,2 +009162_3,2 +004532_231,9 +01437_243,11 +01091_8,2 +012562_96,14 +018772_184,4 +01977_68,6 +014272_97,17 +00519_73,11 +02030_235,16 +00175_68,4 +00837_108,11 +00242_60,12 +00228_11,14 +010012_235,5 +00628_3,14 +00609_41,11 +01330_244,15 +00426_92,0 +00503_227,5 +00709_164,4 +00761_160,6 +02030_254,16 +01161_139,17 +00382_56,17 +01877_13,4 +02021_48,11 +00709_263,1 +010912_23,12 +01693_58,0 +00314_193,4 +014282_1,14 +017232_155,15 +01423_258,2 +00597_9,14 +01431_97,11 +00474_29,2 +01901_105,0 +00566_103,3 +01366_114,17 +02146_61,18 +01925_29,14 +01693_169,0 +02027_105,14 +02138_145,13 +00009_188,7 +00314_118,4 +00158_68,2 +02162_116,18 +014882_198,13 +012612_30,2 +00485_51,4 +010912_187,1 +02138_21,2 +01184_103,5 +002752_105,14 +01001_106,5 +01948_40,4 +005392_9,6 +016982_102,17 +01145_226,4 +01437_70,11 +004532_147,9 +00111_0,14 +01941_16,14 +00413_203,12 +00287_19,4 +00964_224,3 +01108_12,14 +018772_118,4 +00232_180,14 +00009_7,4 +01184_98,5 +00588_212,12 +00158_219,5 +00979_111,1 +00021_12,5 +01158_88,4 +00280_76,4 +00783_127,6 +01493_148,1 +01228_75,14 +01578_37,14 +001022_38,16 +012612_83,2 +01423_50,2 +01767_194,14 +01959_57,6 +00158_266,5 +01087_149,5 +007092_112,1 +00729_293,14 +01605_234,11 +009512_129,0 +00979_100,1 +000092_255,4 +01769_2,2 +00490_86,2 +02005_282,11 +01228_197,14 +00287_73,15 +00485_120,1 +01578_161,14 +00730_22,14 +01909_139,2 +01959_86,6 +011772_119,14 +01001_82,5 +00721_218,14 +009162_222,2 +009642_126,8 +001242_209,0 +01191_87,7 +01707_104,0 +00509_71,12 +008482_14,14 +00065_209,1 +01971_171,12 +017022_68,14 +01953_272,12 +01977_209,8 +01488_9,13 +01333_1,0 +008832_7,11 +01626_80,7 +00111_79,14 +00158_44,14 +00677_23,14 +014372_266,11 +014232_125,0 +020052_145,11 +01509_232,11 +00342_12,14 +01684_4,14 +016922_44,2 +021912_42,7 +018772_190,4 +01094_95,2 +00009_19,12 +01312_96,14 +02021_19,11 +018392_18,2 +01509_59,0 +00065_88,11 +017072_129,7 +01707_53,0 +01330_41,9 +00783_291,5 +020052_12,11 +02005_275,11 +001602_164,11 +004082_14,2 +00159_10,4 +01184_7,14 +01331_57,17 +013302_159,9 +021622_42,12 +003062_36,7 +00964_15,14 +01688_150,14 +016932_46,5 +01409_57,4 +02149_27,17 +01437_170,11 +00287_166,15 +01693_83,0 +007182_123,19 +01048_10,14 +01972_8,2 +014882_189,13 +012402_186,4 +016882_61,5 +011772_79,14 +00729_90,14 +01412_32,0 +01330_22,2 +00350_168,5 +01488_154,0 +012612_28,2 +01767_131,14 +00009_137,2 +007182_54,19 +01688_51,5 +01182_84,4 +012282_15,14 +01001_290,5 +00306_80,7 +01834_192,8 +01636_8,14 +00628_129,14 +00242_30,12 +00025_14,17 +00475_88,9 +00519_30,7 +01702_59,14 +01158_43,4 +002752_73,14 +01490_79,7 +019412_241,14 +00408_264,13 +016052_26,14 +018392_0,14 +01688_205,5 +01228_232,14 +01423_259,2 +004082_205,11 +005882_135,13 +017232_258,15 +02187_31,16 +016932_151,0 +00128_0,12 +01488_170,1 +01971_205,2 +01408_203,14 +009352_110,14 +014232_28,2 +01582_83,14 +01723_281,15 +02062_109,4 +00242_93,12 +00588_139,13 +00729_103,14 +01240_153,4 +003122_48,0 +01177_121,14 +012282_165,14 +00408_85,11 +00981_87,11 +00709_99,11 +019252_171,8 +014232_90,0 +00837_20,11 +00023_67,3 +00776_90,14 +00485_26,2 +012722_95,2 +00023_110,5 +011612_61,17 +00567_95,5 +01488_12,13 +01597_45,0 +011912_24,14 +00342_3,14 +00597_73,14 +011612_6,17 +014232_156,0 +017752_149,2 +00951_75,0 +001112_29,17 +02057_103,2 +00875_26,2 +01228_65,14 +01901_179,14 +01748_42,0 +01605_278,11 +008402_225,2 +000792_162,15 +01092_37,17 +002802_163,12 +00442_194,4 +018392_170,4 +019252_111,3 +01228_31,14 +01706_30,2 +00065_121,11 +00333_158,2 +01007_264,6 +00577_3,14 +00158_217,5 +014372_101,11 +00102_242,16 +02057_110,2 +018652_75,18 +00474_162,2 +001112_4,14 +00287_4,4 +017692_4,2 +00729_93,14 +020572_141,3 +00474_169,2 +00550_33,18 +00490_37,2 +005882_157,13 +01971_247,12 +008372_163,11 +01775_5,2 +00228_111,5 +01118_21,14 +00453_228,9 +00761_224,3 +005882_207,12 +01361_231,15 +01437_92,11 +00159_56,2 +00417_174,6 +01431_187,11 +018132_0,14 +00567_166,2 +00951_157,14 +00509_222,2 +011612_284,17 +00674_120,14 +01134_118,10 +00528_37,2 +00916_59,2 +009622_67,3 +00228_251,11 +00417_261,11 +01046_45,7 +01184_2,14 +02030_216,16 +00160_213,1 +00426_34,0 +00306_12,14 +019252_143,3 +01597_96,0 +01688_253,5 +007292_176,14 +01698_72,17 +007832_286,5 +008402_259,2 +00783_241,5 +00024_92,7 +02127_217,17 +01707_278,7 +00837_67,11 +01161_230,17 +006972_13,17 +017232_171,15 +00674_65,14 +001112_26,17 +00951_31,0 +007092_204,19 +01058_75,2 +00539_1,6 +007832_188,4 +000232_158,5 +008832_62,11 +00475_217,1 +02187_241,16 +018132_142,14 +01201_20,2 +00442_48,2 +01437_145,11 +01763_260,12 +014122_28,0 +01448_2,14 +01228_164,14 +00242_179,2 +01065_57,18 +01882_14,2 +01191_198,14 +02187_191,16 +01087_290,5 +01361_221,15 +02021_35,1 +017072_213,0 +007292_258,14 +01437_297,11 +00079_42,4 +009162_182,2 +01007_184,13 +005392_168,6 +006092_75,14 +02021_114,14 +012402_283,12 +01312_4,14 +01371_15,4 +01924_93,14 +007182_97,19 +02138_237,4 +01901_22,12 +00456_173,12 +00503_77,6 +02138_109,4 +011772_47,4 +012402_81,4 +00474_179,2 +00528_183,0 +01688_297,2 +01431_109,11 +02187_24,16 +01494_77,7 +00875_115,2 +01941_136,14 +01924_141,14 +008372_42,11 +01622_22,0 +008252_36,12 +009162_256,5 +000252_86,17 +019242_7,14 +01007_121,0 +005502_59,18 +01626_120,7 +00979_62,1 +01065_60,18 +00840_214,7 +01272_108,2 +00287_21,4 +008922_65,2 +006972_42,2 +00450_121,13 +004532_155,9 +00729_101,14 +00776_75,14 +01925_63,6 +00242_166,2 +00747_39,4 +01692_28,2 +01962_5,0 +00426_145,0 +012402_87,2 +00462_42,12 +001022_4,2 +016882_77,5 +00232_32,12 +02005_260,11 +01210_284,9 +00729_238,14 +017692_54,9 +00312_12,0 +01457_27,7 +007222_12,17 +007212_120,4 +000092_135,2 +017672_44,14 +021772_63,12 +01981_48,5 +01144_32,5 +00292_30,11 +01134_36,10 +02021_51,11 +01924_119,14 +016882_242,5 +021722_115,14 +00128_70,4 +005392_189,1 +016932_153,0 +001022_252,16 +00282_10,14 +01605_128,5 +01409_173,0 +000792_14,9 +00342_88,14 +000232_31,2 +007212_146,14 +018392_162,1 +01582_37,7 +021722_124,2 +018342_236,8 +019252_195,8 +00916_288,5 +00509_139,2 +001602_29,11 +02062_45,2 +00505_98,12 +00821_136,14 +01001_143,5 +012562_79,12 +01698_62,17 +01904_141,12 +018342_295,8 +008402_191,7 +01219_57,5 +01605_224,11 +01101_27,7 +00964_116,8 +011912_67,7 +01351_124,7 +00993_73,6 +00453_83,9 +021912_18,7 +020052_0,11 +010872_160,5 +01001_26,2 +01045_278,4 +00825_77,12 +00408_289,11 +009162_243,5 +00588_128,13 +007092_85,19 +00485_225,1 +01240_83,4 +00783_218,2 +004082_265,13 +01693_40,2 +007762_60,4 +000232_14,2 +005282_143,4 +000792_11,9 +00840_35,2 +004082_147,11 +00065_273,12 +01145_90,4 +00382_45,17 +007832_56,2 +016932_275,0 +014282_83,14 +017072_241,0 +01956_26,1 +00539_75,1 +006742_102,14 +007292_15,14 +01578_236,14 +02187_216,16 +01509_117,0 +00916_232,5 +000792_286,9 +01493_151,1 +014882_152,0 +00566_255,8 +00342_61,17 +00242_25,2 +00628_43,7 +00588_79,13 +018772_98,4 +01423_195,0 +020052_21,11 +017752_178,12 +02172_163,14 +00079_297,9 +00535_161,0 +01240_246,12 +01091_17,2 +011912_10,14 +01091_262,14 +00934_33,1 +005092_188,2 +016882_194,5 +007292_116,14 +00550_16,5 +01358_44,1 +00962_49,13 +000792_227,9 +01182_73,0 +009642_25,14 +004532_279,9 +00993_224,6 +01488_189,13 +008832_41,11 +007292_133,14 +00490_85,2 +01165_51,5 +000092_170,0 +01767_156,14 +00342_15,17 +00563_65,9 +007292_119,14 +01423_267,2 +00993_103,7 +00280_45,12 +00867_69,0 +000242_103,2 +01605_255,11 +014372_278,11 +007092_177,19 +00825_25,2 +01698_82,17 +00475_269,1 +001022_120,16 +001242_189,0 +00111_28,17 +01423_105,0 +007292_223,14 +013302_264,12 +02030_251,16 +01972_42,3 +009512_134,14 +02021_108,14 +02062_115,4 +021622_0,14 +00721_69,12 +00993_43,14 +00079_53,9 +00935_15,14 +00729_147,14 +012562_82,12 +01494_69,7 +01007_236,4 +00102_229,16 +01500_49,12 +00588_225,2 +02094_134,2 +00607_146,14 +00124_207,0 +000252_62,17 +02162_97,6 +01409_39,4 +02057_135,3 +01161_273,17 +018392_112,11 +01723_211,15 +01437_209,11 +00519_26,7 +005062_85,4 +01763_245,2 +01331_37,17 +019252_275,8 +01431_143,11 +01272_123,2 +012192_47,5 +01408_201,14 +01968_39,7 +017232_8,4 +01177_112,14 +00793_125,14 +02149_23,17 +01924_174,14 +01972_90,13 +02030_47,14 +02177_22,4 +01423_192,0 +01578_170,14 +000092_253,4 +00408_123,13 +02187_50,16 +01909_52,2 +01767_37,14 +01909_157,2 +00079_279,9 +021772_71,14 +02186_2,14 +00275_69,14 +00718_136,14 +00065_203,1 +008832_32,11 +01956_4,14 +02138_260,14 +00841_49,4 +01623_44,11 +007092_148,5 +00408_2,2 +017232_169,15 +01448_65,3 +003062_27,7 +018772_28,4 +01702_25,4 +01145_242,4 +00128_87,12 +00519_0,14 +02127_191,17 +00306_16,14 +01623_141,14 +02187_78,16 +00768_49,7 +00503_224,5 +00111_26,17 +01219_82,5 +01101_84,6 +00721_237,14 +01493_258,9 +01240_249,12 +017672_166,14 +008372_62,11 +018772_30,4 +00124_123,19 +00394_41,17 +018342_61,8 +00280_77,4 +001022_284,16 +01240_262,4 +016052_287,11 +001242_185,0 +007212_68,12 +00535_29,2 +006972_77,5 +00128_168,2 +004532_151,9 +01814_3,5 +01493_40,11 +021772_69,14 +01972_117,13 +00276_100,11 +00408_120,13 +01597_80,0 +000252_88,17 +00413_72,0 +01361_214,3 +00275_141,14 +00709_16,19 +00674_130,14 +02030_31,14 +00660_130,0 +00417_124,17 +01427_72,1 +011612_58,17 +02191_120,14 +00276_69,11 +01948_30,14 +000232_101,0 +01228_117,14 +00306_43,7 +00677_61,14 +01118_24,7 +00840_56,2 +011612_226,17 +01437_237,11 +00837_47,11 +000232_139,6 +011082_23,0 +006972_54,12 +009622_17,0 +01813_39,11 +01622_16,14 +018342_251,8 +01693_57,0 +003062_76,7 +01953_253,4 +00981_1,14 +02138_10,14 +00609_11,14 +00768_55,7 +010012_239,5 +01361_206,3 +02057_144,3 +01272_110,2 +01278_142,4 +020572_201,3 +01493_109,1 +010012_43,4 +000092_234,12 +00567_62,2 +00718_45,19 +016922_154,14 +01092_128,9 +007182_99,19 +021722_131,14 +017232_130,15 +021462_97,18 +00505_56,6 +01177_28,4 +018772_117,4 +01118_73,7 +016432_45,14 +00041_172,7 +00681_48,5 +00485_169,1 +001242_79,19 +017692_229,9 +01723_23,15 +01972_96,13 +01145_126,0 +00772_90,2 +00875_86,2 +014882_115,0 +01007_213,0 +00025_85,17 +01103_69,4 +01351_9,2 +014372_155,11 +007212_180,14 +009642_119,8 +01330_257,6 +010872_18,14 +02054_130,4 +004082_119,13 +02187_42,16 +00546_12,14 +00160_50,1 +00350_115,9 +00607_72,5 +009162_266,5 +01929_172,0 +002802_216,4 +017232_178,15 +018772_56,4 +01045_85,4 +00474_84,2 +02012_78,17 +01925_252,8 +00883_60,11 +01692_96,1 +01361_22,0 +01044_177,4 +00124_20,4 +00550_131,14 +00503_33,6 +00729_222,14 +009162_22,2 +007222_63,4 +00883_49,11 +01134_176,10 +00228_102,11 +020572_13,2 +010012_200,5 +00721_65,14 +02054_235,4 +00509_229,2 +01924_166,14 +00413_158,0 +02030_202,16 +000792_190,9 +00688_114,2 +014232_41,2 +01972_255,14 +017692_109,2 +00009_173,0 +01813_77,11 +018132_136,11 +01165_73,5 +01049_61,7 +01161_49,17 +01272_261,2 +01813_79,11 +01001_50,2 +008402_241,2 +01948_96,13 +01707_251,0 +01582_23,17 +00528_134,4 +010942_110,14 +016922_91,1 +00509_13,12 +012282_128,14 +00306_92,14 +01272_51,2 +01723_43,15 +021912_60,7 +01144_60,3 +00390_13,14 +01977_180,8 +005092_221,2 +00333_180,2 +02172_65,12 +00840_34,2 +00509_10,2 +00761_276,3 +019252_3,14 +02062_29,2 +005282_188,0 +00578_46,4 +01775_97,12 +00509_107,12 +013302_7,2 +00848_112,17 +001022_202,16 +01877_2,4 +005882_153,13 +010652_55,18 +02027_118,14 +00703_44,11 +01763_229,2 +01228_94,14 +00312_7,0 +00426_111,0 +004082_74,11 +01769_222,9 +01045_10,2 +02021_85,11 +01044_147,4 +00426_86,0 +01092_9,17 +01877_258,4 +00382_109,13 +00660_112,0 +007832_182,2 +02172_242,14 +009512_142,14 +00729_46,14 +011612_165,17 +01423_36,2 +012612_97,2 +02027_58,18 +00660_11,14 +01278_83,4 +01767_169,14 +01240_3,2 +00314_180,12 +010872_190,5 +01494_19,7 +01103_11,4 +003062_29,7 +01201_103,14 +01702_63,14 +00505_41,2 +00979_122,0 +008482_29,17 +00628_62,7 +016932_266,0 +01693_89,0 +01330_77,3 +00280_89,2 +00505_17,2 +010012_117,5 +011612_271,17 +01158_109,4 +00128_215,12 +021722_87,14 +00993_138,7 +01925_32,14 +00128_65,12 +01278_57,2 +01707_237,0 +009622_28,4 +01723_182,15 +00280_213,12 +02186_33,5 +01488_60,13 +00475_103,9 +011612_21,17 +02030_215,16 +017232_150,15 +00729_250,14 +01707_37,2 +02138_52,14 +01814_76,11 +007092_159,4 +014372_229,11 +01763_188,12 +00509_233,2 +01698_3,14 +006972_50,4 +01609_24,17 +01330_113,9 +014272_42,9 +00314_275,0 +00242_64,12 +01775_147,2 +011772_43,4 +00079_259,9 +00475_211,1 +00408_114,1 +012402_298,4 +01698_24,17 +02127_79,17 +01812_78,2 +01972_196,3 +012192_24,5 +01408_103,14 +010012_256,5 +016882_295,2 +01219_136,14 +01119_71,11 +014282_67,14 +009512_54,0 +00566_192,8 +00456_86,2 +01256_81,12 +01437_211,11 +01693_16,2 +007832_246,5 +011912_130,7 +00503_63,6 +00528_104,2 +01094_31,11 +00462_21,14 +02186_94,14 +01925_247,8 +01953_62,2 +01191_43,14 +01001_181,5 +019042_130,12 +01723_213,15 +01488_223,0 +00442_192,4 +016932_164,0 +00009_160,12 +020052_234,11 +01971_162,2 +02027_138,14 +01509_196,0 +01366_98,17 +004082_58,1 +004172_276,1 +01044_123,12 +01108_37,13 +00490_62,2 +012192_102,5 +01971_181,4 +00535_135,9 +00709_0,19 +007092_143,19 +00242_253,4 +01925_189,8 +002752_27,14 +01278_34,2 +001602_215,11 +01769_286,2 +00703_73,11 +01812_4,2 +00280_166,12 +01044_22,4 +00528_158,0 +01119_62,11 +01191_109,7 +00442_34,14 +007212_63,14 +00474_267,2 +010012_257,5 +01201_29,11 +00867_138,5 +008482_93,17 +01240_41,2 +012282_279,14 +01278_134,2 +00505_140,14 +02005_126,11 +00350_275,9 +018342_36,6 +004082_34,1 +00588_101,13 +00729_97,14 +00041_0,2 +004172_124,17 +01834_290,8 +01948_173,13 +002752_19,14 +00158_57,14 +005092_102,2 +009642_264,14 +01091_170,11 +01707_136,7 +01972_11,2 +001022_151,16 +01971_143,12 +01423_117,0 +014882_106,0 +00442_56,2 +00426_49,0 +00837_33,11 +01256_85,2 +017752_138,12 +01210_226,9 +01968_26,7 +017692_134,9 +01092_206,17 +01605_148,5 +00314_139,0 +01001_30,2 +01488_87,13 +00509_165,2 +011912_121,7 +01045_94,4 +01977_245,8 +00538_53,12 +00729_217,14 +016842_58,14 +00825_21,2 +01423_264,2 +00720_16,0 +01283_44,2 +00475_231,1 +00426_69,0 +00546_102,3 +00111_12,14 +00783_152,2 +01448_7,14 +008372_49,11 +018132_63,11 +00783_189,4 +01408_229,14 +00442_185,4 +00528_29,2 +01693_281,0 +00342_2,14 +00883_31,11 +01240_47,2 +01228_97,14 +01568_161,2 +01494_20,7 +004082_16,12 +017232_276,15 +00456_136,12 +01278_167,4 +01948_73,13 +016842_25,14 +01331_76,14 +01191_136,2 +01501_114,14 +005092_40,2 +01509_210,0 +00158_125,5 +00776_79,4 +00408_157,11 +01087_195,5 +005882_60,13 +00509_98,12 +00280_142,4 +005882_172,4 +00475_248,9 +010012_95,5 +01693_208,0 +00718_58,19 +01962_100,0 +00892_19,0 +009642_279,12 +01948_174,13 +01488_68,1 +00296_109,14 +00539_158,17 +01877_4,4 +01814_54,5 +01272_234,2 +01158_81,4 +01909_164,12 +01108_60,4 +009642_281,14 +00601_18,7 +01688_246,5 +00721_98,14 +008372_55,11 +021462_146,14 +021722_132,14 +002752_97,14 +017672_31,14 +02187_288,16 +00287_86,15 +01007_187,13 +00275_25,14 +01488_67,1 +01971_134,12 +02005_186,11 +020052_196,11 +00490_20,2 +00450_24,14 +01692_103,1 +01201_72,11 +02127_115,17 +01501_70,14 +02005_89,11 +00242_89,12 +00275_96,14 +02191_8,7 +006092_43,11 +01962_63,0 +007292_285,14 +01804_84,12 +00024_108,2 +01045_194,4 +01427_102,9 +00280_81,4 +01045_48,4 +01330_218,6 +009642_265,14 +00009_28,7 +004082_43,1 +01877_39,4 +01582_35,17 +01941_219,14 +021462_141,14 +00993_175,7 +00588_217,12 +01497_10,0 +00539_54,1 +02162_84,12 +01240_177,12 +01330_81,6 +00660_276,2 +01087_297,5 +021772_46,14 +012402_101,12 +01427_109,9 +01924_219,14 +005062_31,2 +01775_35,2 +01408_273,14 +00242_13,2 +00382_29,7 +00453_57,9 +01688_298,2 +00021_132,12 +02138_58,2 +01134_30,10 +010012_168,5 +016882_73,5 +00485_283,4 +001022_126,16 +00128_192,12 +01210_144,9 +017752_56,4 +00442_126,4 +00453_192,9 +00709_159,4 +00709_181,19 +00275_38,12 +01707_86,4 +004532_102,9 +001022_53,16 +00550_41,18 +00175_29,13 +01769_285,2 +002802_228,14 +00102_186,16 +01941_65,14 +00292_47,11 +02146_174,14 +018392_31,14 +00417_232,6 +00793_199,14 +00721_102,14 +01412_40,0 +00761_91,14 +02054_219,12 +01161_89,17 +02030_131,16 +00228_40,5 +02127_228,17 +011082_45,0 +009622_70,3 +007832_254,5 +00538_109,1 +02187_180,16 +000092_269,0 +00535_51,2 +002752_115,14 +00158_37,14 +004532_57,9 +002752_94,12 +016432_50,14 +007212_246,14 +021772_48,12 +01626_54,7 +010012_158,5 +01977_107,8 +00552_60,7 +01605_269,11 +00350_207,5 +00021_89,2 +00703_88,11 +016882_206,5 +00688_23,2 +011912_89,7 +00660_24,14 +018132_8,0 +01409_105,0 +01087_287,5 +01882_38,11 +01184_16,14 +01968_104,14 +01497_50,12 +01490_7,14 +01839_68,11 +01981_60,5 +007222_25,17 +00718_67,19 +00181_129,0 +016932_290,0 +014232_31,2 +01763_114,2 +018792_58,2 +000232_55,3 +00350_108,5 +01977_9,14 +00242_3,2 +01723_4,4 +00102_118,16 +010912_150,5 +01001_266,5 +00023_37,4 +02049_180,13 +02030_294,16 +00761_219,3 +006972_49,4 +00485_85,1 +01626_83,7 +00408_7,2 +012402_68,12 +00721_255,14 +00242_65,4 +02057_102,12 +01108_81,14 +017752_74,12 +01636_127,14 +00417_258,11 +002752_120,12 +02042_118,0 +007832_260,5 +012612_113,2 +01493_43,11 +02005_107,11 +01623_68,11 +01812_60,4 +007182_106,19 +01693_283,0 +00588_200,2 +00041_4,2 +01500_35,4 +01775_102,12 +01001_146,5 +01134_208,10 +00506_53,4 +00280_158,12 +00660_279,2 +01431_153,11 +005502_82,18 +020052_114,11 +01775_33,2 +00783_99,17 +01636_15,14 +00721_134,12 +001022_251,16 +00280_192,2 +01119_64,11 +01767_126,14 +01001_203,5 +01813_44,11 +00601_46,17 +00546_5,14 +02172_37,14 +02030_149,16 +01941_277,14 +02057_208,3 +00566_235,8 +01509_233,11 +00021_128,4 +016432_89,14 +01490_19,7 +01953_40,2 +01956_9,14 +01929_99,0 +01330_132,6 +01834_159,8 +005282_182,0 +00848_150,14 +01941_291,14 +02042_145,14 +01909_48,2 +00228_197,9 +014272_66,17 +00821_104,5 +008402_147,7 +018792_6,2 +02127_93,17 +02146_95,18 +00892_53,0 +009642_39,6 +00158_36,14 +00677_75,14 +01971_47,12 +00417_260,11 +01210_250,9 +00674_119,14 +00009_82,2 +00916_100,2 +01962_124,0 +00660_150,0 +009512_112,0 +004082_7,2 +018392_189,1 +018342_76,8 +017232_192,15 +005062_3,2 +005502_108,18 +001022_116,16 +01814_251,5 +016092_37,17 +01804_40,12 +00703_112,14 +014272_44,17 +01045_237,4 +00160_138,11 +019042_154,2 +01119_59,11 +005062_56,6 +02146_135,5 +01702_13,12 +00021_152,2 +010912_25,12 +01145_26,2 +00475_111,9 +004532_214,9 +00175_19,4 +017752_136,12 +005882_31,12 +01707_156,4 +011772_82,14 +02172_125,2 +00597_34,5 +00607_2,14 +01361_205,3 +01509_27,2 +002802_39,14 +01091_165,0 +000092_151,0 +02005_24,11 +00821_74,5 +01692_47,2 +021622_126,5 +001602_203,11 +01909_207,12 +001242_84,19 +006742_67,14 +01087_86,5 +010012_176,5 +01087_157,5 +010872_51,14 +01330_165,15 +007292_270,12 +005882_115,13 +002802_115,4 +00674_33,14 +017752_67,12 +00450_183,14 +014882_28,1 +00601_56,6 +01707_286,7 +00181_158,14 +01688_219,5 +008402_35,2 +01134_211,10 +00314_91,12 +016882_119,14 +01605_216,11 +020052_207,11 +00981_50,11 +01177_50,4 +008372_17,11 +013302_26,12 +01256_84,2 +017692_43,0 +01501_99,14 +01108_48,0 +00993_227,6 +00102_48,16 +019412_171,14 +010012_243,5 +02054_211,12 +00128_97,4 +004172_247,6 +01087_172,5 +02191_89,7 +00467_24,11 +01184_30,5 +01361_85,4 +00783_179,2 +01865_89,18 +014272_51,2 +00951_1,14 +010012_100,5 +01065_99,11 +01219_33,5 +00474_20,2 +01684_1,14 +01423_114,0 +002752_144,14 +011612_231,17 +01092_107,17 +00314_176,4 +005282_147,0 +00821_39,5 +012192_138,14 +00111_48,17 +015972_80,0 +00674_113,14 +017692_216,9 +009342_34,4 +018122_45,2 +02028_50,9 +00552_55,7 +00160_52,11 +014372_242,11 +01001_100,5 +00729_13,14 +010912_241,2 +01045_54,4 +01431_173,11 +012192_9,14 +01924_205,14 +01924_194,14 +01814_23,5 +00519_13,14 +00475_151,9 +01941_18,14 +00563_124,2 +01971_138,12 +01597_12,12 +00747_60,4 +007212_0,14 +018122_29,4 +01044_180,4 +002802_169,12 +01330_83,6 +00721_144,14 +01787_59,9 +01941_214,14 +00175_40,13 +01240_260,4 +014372_183,11 +014882_186,0 +00718_55,19 +007092_23,19 +00079_245,9 +012612_64,2 +01045_167,4 +01706_276,2 +02172_169,14 +016922_71,1 +00390_25,5 +00883_7,11 +01500_55,4 +00382_14,11 +01045_96,4 +00539_240,1 +01839_154,1 +02162_130,5 +00413_207,12 +001022_200,16 +00175_46,5 +011612_39,17 +00314_55,2 +01877_202,4 +001112_44,17 +01431_213,0 +01312_104,14 +00601_130,14 +01092_153,6 +007292_127,14 +007212_255,14 +00528_42,2 +01182_57,13 +01977_210,8 +00287_194,4 +012722_109,2 +00280_150,2 +00964_245,4 +00718_51,19 +00793_193,14 +01981_107,11 +00761_3,14 +01007_137,0 +01240_257,4 +018342_239,8 +001022_97,16 +00242_130,2 +016982_3,14 +01763_192,2 +002802_200,12 +012282_148,14 +017232_281,15 +003062_19,14 +00333_75,13 +007292_251,14 +02027_145,14 +003062_46,7 +01119_19,11 +010912_110,0 +01165_1,14 +001602_240,1 +00539_55,1 +00761_180,3 +01924_185,14 +00793_63,14 +017232_28,15 +00128_201,4 +01698_46,17 +01134_229,10 +01909_11,2 +010012_298,5 +01763_252,12 +02062_51,2 +017072_132,7 +01119_54,11 +00538_104,18 +00102_9,2 +00761_123,14 +00490_200,2 +01769_57,9 +014272_130,14 +004082_230,11 +01145_61,2 +00417_188,17 +00597_33,5 +00783_194,12 +00474_206,2 +010912_186,13 +011912_85,7 +01767_192,14 +00023_192,2 +01698_83,17 +00413_210,14 +00607_44,19 +01812_70,4 +000232_2,2 +002752_82,14 +00282_101,14 +017752_19,2 +00588_189,4 +00505_174,11 +00350_116,9 +00674_64,14 +00228_145,9 +01261_101,2 +01706_220,2 +01769_87,11 +018132_24,11 +01972_3,2 +011082_49,14 +01165_105,5 +02172_117,14 +00287_106,15 +00023_68,3 +01165_36,5 +01361_151,3 +01094_69,11 +01092_189,17 +01814_130,5 +013302_66,18 +01488_16,13 +01909_122,2 +00567_149,2 +01201_6,14 +01490_34,7 +00503_135,1 +00417_293,11 +02146_159,14 +009622_41,0 +01723_205,15 +00567_77,2 +017072_297,7 +01431_43,5 +016052_44,14 +012722_55,4 +016932_9,4 +011612_75,17 +00228_151,9 +008922_39,0 +021772_51,12 +012722_82,2 +01457_53,7 +016932_210,0 +012282_247,14 +00567_176,2 +01272_66,12 +00722_143,17 +02062_59,2 +00232_159,14 +00535_68,12 +00296_33,7 +012722_168,2 +018122_36,4 +00841_55,4 +004172_256,5 +00509_31,2 +007292_272,14 +01144_104,4 +01971_297,12 +00538_126,12 +00729_52,14 +01953_245,4 +00282_90,11 +019592_87,6 +007762_21,4 +007212_114,14 +00601_121,14 +00934_50,0 +010872_292,5 +018772_253,4 +00306_84,7 +020052_20,11 +011612_265,17 +009352_55,7 +00563_106,2 +01144_126,12 +00609_26,11 +01087_167,5 +01813_33,11 +007292_93,14 +00567_197,2 +01968_56,7 +00350_91,5 +005502_94,18 +01568_72,2 +01723_93,15 +008922_64,2 +01582_38,7 +011912_19,14 +02127_235,17 +02057_198,3 +00023_159,5 +01813_125,11 +01707_186,0 +01431_259,11 +01702_75,14 +00979_41,1 +01763_247,12 +02057_132,3 +00567_55,5 +00280_109,12 +000792_258,9 +00519_91,11 +00413_211,14 +01698_60,17 +018342_172,8 +02042_3,14 +01578_80,14 +00578_42,17 +010652_94,18 +016432_9,14 +02049_257,3 +009642_153,8 +01941_149,14 +00417_88,6 +020052_136,11 +00761_19,14 +01763_32,12 +00597_70,14 +019712_103,12 +01693_163,0 +016922_39,2 +00964_151,8 +00314_27,2 +01228_219,14 +013332_2,0 +012282_250,14 +00730_119,14 +00160_217,11 +005062_94,4 +01210_29,1 +00538_121,17 +01904_12,2 +01775_127,12 +00681_9,2 +02005_288,11 +00528_105,2 +00848_115,17 +00964_47,6 +01509_230,11 +00660_176,0 +01493_202,1 +016982_104,14 +00242_61,12 +00011_121,4 +00228_140,9 +00681_60,5 +01165_130,14 +020052_23,11 +01488_135,13 +00333_126,2 +00280_245,14 +02049_70,3 +00979_88,1 +00681_30,5 +01092_192,2 +02127_266,17 +001022_185,16 +00474_77,2 +00505_107,12 +00296_63,7 +01972_127,13 +01144_180,2 +004082_212,11 +014282_74,14 +00158_97,11 +00160_135,11 +009622_60,3 +00503_142,9 +00314_129,4 +01769_257,2 +01457_58,7 +01877_193,4 +01972_204,3 +00729_7,14 +00023_126,5 +018342_26,12 +007832_123,6 +00474_125,2 +000242_46,17 +00485_273,12 +01605_170,11 +017672_148,14 +02187_201,16 +00722_61,4 +00505_42,2 +01493_140,1 +00729_205,14 +00394_94,1 +00408_42,1 +000092_156,12 +01351_21,7 +01971_46,2 +019622_123,0 +00951_16,14 +01901_166,12 +006742_9,14 +00011_6,0 +004532_7,5 +00979_135,2 +019592_49,6 +01184_60,5 +00567_222,2 +006972_6,2 +01865_8,14 +00563_94,4 +01977_202,8 +018772_138,4 +01924_47,14 +02049_262,3 +007292_262,14 +00242_292,12 +01814_40,5 +00964_101,8 +001022_218,16 +00535_238,6 +014372_18,11 +014282_3,14 +01191_191,14 +014272_19,4 +007092_63,19 +00475_185,1 +019412_89,14 +000092_242,7 +016922_141,14 +013302_8,2 +021622_95,6 +008482_94,17 +00546_183,14 +01941_223,14 +001602_189,11 +01568_120,2 +01423_103,0 +02030_78,16 +01839_182,1 +000792_79,9 +01007_138,13 +01048_80,14 +02187_285,16 +007212_188,14 +01626_47,7 +019712_296,12 +00840_102,2 +00729_269,12 +00539_93,1 +007832_57,2 +005282_21,2 +01103_61,17 +020572_17,2 +00079_88,9 +00660_293,2 +021912_57,7 +01272_231,4 +00280_169,12 +00841_85,14 +00772_98,14 +00474_208,2 +00485_31,2 +00867_81,17 +008402_104,7 +018342_177,8 +01623_51,11 +004082_287,11 +02127_124,17 +00503_250,9 +01278_63,12 +00519_101,11 +01578_162,14 +00867_37,5 +00840_78,2 +01925_21,14 +02027_88,14 +007092_0,19 +01007_128,0 +01001_20,12 +01431_172,11 +00848_121,17 +00158_12,14 +018772_229,4 +01769_251,0 +00394_98,1 +00709_224,19 +00588_158,13 +005502_111,18 +01702_77,14 +018652_50,18 +013712_2,14 +00158_298,5 +00065_192,1 +01201_107,14 +02054_186,4 +01358_3,1 +009162_261,5 +002802_64,12 +018342_41,8 +01278_26,2 +00567_45,2 +00232_15,14 +01767_2,14 +01929_119,0 +014272_64,17 +01048_7,14 +01929_36,0 +01924_52,14 +007762_68,14 +007292_168,14 +021462_81,18 +00009_240,7 +01834_247,8 +009162_195,2 +01330_285,1 +008372_2,14 +017482_56,7 +004082_132,13 +00709_199,19 +020052_121,11 +01488_240,5 +00567_229,5 +00390_105,14 +00079_221,15 +00408_78,11 +002802_237,12 +00382_46,17 +005092_103,2 +01578_30,14 +00442_5,2 +000792_35,9 +005882_121,13 +00528_219,0 +00566_254,8 +00660_95,0 +016982_80,17 +01409_238,14 +01278_96,4 +01924_118,14 +00578_95,17 +01045_8,2 +00563_14,2 +00703_22,11 +012282_123,14 +011612_227,17 +00280_6,14 +007182_70,19 +01092_32,17 +01904_84,12 +01882_70,5 +01568_43,2 +02005_258,11 +00577_95,7 +00292_24,1 +00417_203,17 +00413_200,14 +00993_109,7 +013302_277,3 +012402_100,12 +007092_58,19 +018122_119,2 +014282_56,14 +00993_239,14 +008402_245,2 +014372_96,11 +00503_13,6 +01044_293,4 +00535_191,0 +018392_187,1 +00563_27,2 +00128_35,12 +00456_36,12 +004172_230,7 +01879_9,2 +016932_184,0 +00128_185,12 +00539_251,1 +019712_287,12 +01001_253,5 +01228_40,14 +01971_55,12 +02062_32,2 +02146_123,11 +019622_90,0 +010912_95,0 +002802_55,2 +00485_204,1 +00275_30,14 +009622_10,0 +004172_233,6 +01929_124,0 +019412_85,14 +00102_236,16 +008402_170,7 +00490_292,11 +012282_259,14 +01331_15,14 +013332_9,0 +00660_143,0 +010872_127,5 +00697_84,4 +01184_79,5 +014372_111,11 +00535_280,12 +01941_198,14 +00993_263,14 +017692_172,0 +01065_94,18 +018342_51,8 +02042_96,15 +01622_131,14 +01839_51,11 +007092_200,19 +018122_42,2 +01044_167,12 +00426_59,0 +02191_0,14 +00761_182,3 +01182_76,14 +006972_12,17 +01145_184,4 +02138_60,14 +001242_136,19 +00160_55,11 +01972_78,3 +02049_268,6 +01101_52,7 +00821_66,5 +019242_169,14 +019622_63,0 +00382_49,17 +02172_57,14 +01568_69,2 +00124_55,0 +00009_214,7 +004172_18,6 +00102_77,16 +00128_171,2 +017692_105,2 +010942_49,11 +000252_25,17 +011772_104,14 +00490_128,2 +00413_27,0 +000092_45,12 +004082_204,11 +00535_18,2 +01272_267,4 +00567_274,2 +006092_45,11 +01568_126,2 +00314_233,12 +01409_193,14 +01941_191,14 +01623_104,5 +00588_195,2 +02049_149,13 +00394_85,17 +00528_211,0 +00242_245,12 +00505_223,12 +019242_164,14 +01981_124,0 +00503_164,5 +00442_263,4 +01184_18,14 +00475_168,9 +01909_170,12 +01058_40,2 +002752_152,14 +017692_153,9 +000252_39,17 +020052_97,11 +02146_39,11 +00023_21,2 +00041_105,12 +017022_3,14 +00993_58,6 +00875_34,2 +00408_83,11 +01358_34,1 +020052_139,11 +01953_252,4 +00628_33,7 +014232_55,2 +01261_107,2 +01103_29,17 +01948_74,13 +005282_75,2 +017672_245,14 +001602_21,2 +01692_89,1 +00475_182,1 +01366_73,17 +000092_67,12 +005392_8,6 +00503_225,5 +00417_225,7 +02177_74,14 +00474_290,2 +00509_55,12 +00475_240,9 +01007_44,5 +008402_161,7 +00721_51,4 +019712_177,2 +00964_270,14 +016982_96,17 +00916_190,2 +019412_103,14 +01877_230,4 +01706_50,2 +007762_25,14 +01351_122,7 +01409_42,4 +004532_56,9 +01007_142,19 +00413_170,12 +01568_110,12 +00102_47,16 +01045_141,4 +00875_19,2 +00709_36,19 +01924_209,14 +01623_136,14 +012612_92,2 +01971_49,12 +007092_163,4 +00159_85,0 +00718_28,19 +012722_250,12 +01968_67,7 +01541_18,5 +005062_15,2 +00964_7,14 +00128_12,12 +00964_218,3 +00503_159,5 +00875_106,2 +00588_204,12 +01007_140,19 +02187_20,16 +00426_22,0 +00314_15,2 +01688_100,5 +02030_171,16 +017482_49,7 +01488_220,0 +017022_30,4 +01901_82,0 +016432_86,14 +00181_122,0 +00417_167,6 +01767_129,14 +009342_14,9 +012282_125,14 +013302_153,18 +00677_0,14 +01509_199,0 +01688_191,5 +00660_43,0 +01087_189,5 +00916_130,2 +01582_40,7 +00550_4,14 +01813_150,14 +02186_81,5 +01165_10,14 +00867_59,0 +00840_83,2 +01278_14,2 +01201_26,11 +02062_8,2 +011912_33,14 +010912_101,0 +01948_198,13 +01904_116,4 +00761_42,14 +018772_123,4 +01046_90,7 +01925_92,3 +01962_58,0 +01693_21,14 +00390_104,14 +01924_217,14 +00023_75,3 +01877_207,4 +02187_26,16 +00124_3,4 +010942_61,11 +012282_232,14 +01161_12,17 +00509_230,2 +01956_16,15 +014272_101,9 +006742_84,4 +01283_66,14 +01901_67,5 +01813_105,11 +00079_113,15 +00413_105,0 +00009_158,12 +02094_62,2 +021722_43,14 +01119_74,11 +009352_26,7 +000232_186,2 +00160_154,11 +012402_130,12 +009162_254,5 +00408_177,11 +01272_247,12 +005062_33,2 +011912_147,14 +00408_254,13 +01829_43,2 +00041_171,7 +00124_22,4 +01488_169,1 +00009_116,7 +00490_18,2 +00160_219,11 +016882_251,5 +01361_145,3 +01001_178,5 +004532_150,9 +000242_25,7 +01688_41,5 +01605_9,14 +00408_49,1 +00615_116,11 +01191_1,14 +00490_108,2 +007762_56,4 +02012_40,17 +016052_278,11 +01219_129,5 +00981_117,14 +00456_50,12 +01283_1,14 +010872_149,5 +01814_269,11 +01909_44,2 +01977_154,8 +01877_19,4 +019252_71,6 +00934_44,0 +01829_5,2 +00280_79,4 +01582_89,14 +02127_256,17 +00660_197,0 +00509_92,2 +00539_22,6 +012282_229,14 +017482_27,0 +015972_105,0 +00609_54,11 +00578_66,1 +016052_116,5 +01408_243,14 +01158_35,7 +01087_182,5 +012282_256,14 +01814_299,11 +00350_154,9 +00232_66,13 +004082_126,13 +001602_111,1 +010012_206,5 +009512_92,0 +00503_185,9 +00413_20,2 +01087_24,14 +00232_50,4 +009342_36,0 +012562_8,14 +01509_106,0 +007762_10,4 +021772_39,4 +01228_5,14 +019042_120,2 +019242_65,14 +02062_64,4 +005502_57,18 +017072_247,0 +01706_291,2 +00550_103,18 +005882_99,13 +01261_83,2 +01578_96,14 +01366_58,17 +00475_175,9 +013302_132,6 +01087_55,14 +00490_293,11 +01769_204,0 +01948_110,13 +012562_70,12 +01058_59,2 +00102_165,16 +01767_146,14 +00158_81,5 +01623_135,14 +012562_73,12 +01427_0,14 +01191_184,14 +017072_191,0 +01500_28,15 +01191_39,14 +01191_89,7 +00688_26,2 +01278_198,2 +007832_151,2 +00941_27,4 +007832_86,17 +01091_232,12 +00867_109,0 +01423_144,0 +02049_6,12 +017672_131,14 +013302_202,9 +004172_162,6 +009512_109,0 +01312_84,7 +014232_265,2 +019252_288,8 +02005_231,11 +01605_36,14 +01972_217,3 +004172_214,17 +00503_37,6 +01578_146,14 +00783_42,2 +01636_83,0 +00158_214,5 +01272_272,2 +00011_79,12 +00503_203,9 +016842_59,14 +00485_96,1 +01500_1,0 +00275_98,14 +01707_201,0 +00840_267,2 +017672_177,14 +00453_275,9 +00793_102,14 +01408_0,14 +01409_219,14 +009162_216,2 +01688_156,14 +007182_63,19 +014232_227,0 +018342_46,8 +01834_137,8 +009162_143,2 +009162_76,2 +00538_116,17 +01812_72,12 +01748_36,0 +012282_78,14 +00609_82,14 +01272_111,2 +010652_17,1 +00772_65,7 +000232_89,4 +004082_51,1 +016982_67,17 +00837_56,11 +016882_120,14 +021622_69,17 +013302_255,6 +017072_164,0 +01351_56,7 +00505_105,12 +012722_186,2 +01494_13,14 +01145_32,2 +01240_74,4 +00793_231,14 +019042_84,12 +011612_78,17 +018392_110,11 +000232_78,3 +01087_148,5 +00287_193,4 +01929_217,14 +014232_158,0 +01568_163,4 +014372_258,11 +017672_125,14 +01702_44,14 +01184_102,5 +01144_208,2 +00390_11,14 +01493_191,9 +01501_54,4 +01409_152,0 +019252_279,8 +00660_29,12 +016982_108,14 +007212_224,14 +01698_47,17 +02146_9,14 +00485_237,1 +01272_152,2 +01834_112,8 +01941_15,14 +01877_62,4 +00450_147,4 +00768_13,14 +01693_51,0 +01366_88,17 +00709_233,19 +02127_287,17 +00041_170,7 +02127_290,17 +009162_35,2 +00566_297,8 +01091_34,12 +01924_32,14 +01427_92,2 +012612_55,2 +011612_128,17 +01046_112,14 +01409_220,14 +02049_275,4 +00993_131,7 +019242_86,14 +01045_170,4 +00350_159,9 +01702_87,14 +00128_53,4 +016982_41,17 +012722_16,2 +00729_257,14 +02127_250,17 +02028_20,15 +01427_110,9 +00426_171,14 +01409_218,14 +01493_90,1 +01622_99,0 +02030_201,16 +01358_57,1 +00079_287,9 +014122_34,0 +00552_66,7 +01165_92,5 +01605_14,14 +02005_238,11 +010652_102,11 +01493_5,11 +00916_295,5 +00535_33,2 +01941_232,14 +00485_141,1 +01272_74,4 +00535_82,12 +007762_75,14 +01158_48,0 +000092_118,7 +01272_105,2 +00546_122,3 +00009_284,4 +01509_287,11 +005062_109,2 +001022_5,2 +00577_90,7 +02138_98,14 +018652_114,18 +011772_56,4 +015972_63,0 +00490_116,2 +01605_161,11 +01423_237,2 +00490_205,2 +01049_29,7 +01210_48,17 +016432_68,14 +00442_237,4 +02172_107,12 +00697_25,9 +00462_50,12 +019242_181,14 +00023_123,5 +01001_186,5 +00747_27,9 +00964_191,8 +017232_172,15 +00160_292,3 +007292_269,12 +008372_1,14 +004172_177,6 +01956_14,15 +01177_23,15 +00474_252,2 +009162_272,5 +01210_21,7 +01092_209,17 +01977_224,8 +00979_5,14 +01904_95,2 +01839_61,11 +01134_62,10 +00128_260,12 +00747_38,4 +00160_288,13 +008402_264,2 +00567_71,2 +02162_5,14 +02187_5,11 +004082_90,11 +00462_131,13 +020572_179,3 +01977_145,8 +013712_9,14 +00408_188,11 +01278_147,12 +00128_33,12 +021622_113,1 +01177_72,15 +008252_55,2 +006972_73,4 +009642_3,14 +01622_15,14 +019252_114,3 +021622_17,14 +01787_63,9 +004532_154,9 +01312_95,14 +00841_69,14 +007222_71,17 +01834_202,8 +007762_50,4 +01707_263,7 +00597_41,5 +005062_135,2 +01578_240,14 +00535_149,0 +008482_106,17 +00275_32,14 +019242_182,14 +01968_84,7 +00350_215,9 +01240_151,4 +01256_106,14 +00506_120,2 +01457_0,14 +018792_109,2 +000792_256,9 +009162_192,2 +00475_63,9 +01501_108,14 +00709_101,11 +00615_110,11 +00088_1,14 +00474_264,2 +00721_202,14 +010872_245,5 +00442_83,2 +01814_261,11 +00567_60,2 +00417_79,17 +00025_38,17 +00232_72,13 +009642_160,8 +02057_31,2 +01144_167,12 +00566_224,8 +01909_142,2 +005092_141,12 +01865_14,5 +00485_200,1 +02186_62,5 +010012_219,5 +00688_100,2 +01623_73,11 +01494_39,7 +004532_177,9 +01904_22,2 +01046_59,7 +00941_47,4 +00314_14,2 +009512_133,14 +01007_190,4 +00538_51,4 +007212_163,14 +01813_110,11 +01144_72,8 +00442_31,14 +00506_93,4 +00102_138,16 +00577_27,7 +016052_139,5 +02005_204,11 +00761_263,3 +01497_13,0 +01839_183,1 +02021_97,11 +000252_20,17 +00993_206,6 +01500_17,0 +01879_68,4 +00709_18,19 +018392_193,1 +01210_51,17 +00528_7,2 +00333_68,4 +01408_59,14 +00505_69,1 +01972_59,3 +02172_179,14 +00438_159,2 +008482_77,17 +02012_24,17 +01058_139,2 +01182_2,14 +01972_31,6 +01597_83,0 +00783_274,5 +01493_19,11 +00111_11,14 +01087_248,5 +00232_101,13 +016882_248,5 +00730_102,14 +01929_147,0 +007222_137,17 +01723_165,15 +00408_118,13 +01431_277,11 +01929_196,0 +00697_28,9 +01688_203,5 +019412_274,14 +018342_110,8 +018772_36,4 +02088_34,0 +00783_278,5 +016922_132,5 +00490_284,5 +00475_160,9 +005392_172,1 +01428_48,14 +01904_163,12 +01177_5,14 +00485_235,1 +017692_129,11 +00761_4,14 +00438_289,2 +00539_77,1 +00159_43,2 +00951_37,0 +007832_116,17 +012402_128,2 +012612_111,2 +01165_44,5 +01769_253,0 +01272_36,2 +012562_93,2 +01493_53,1 +00703_126,14 +01240_110,12 +002802_0,14 +017022_54,2 +01763_85,2 +012722_96,2 +004082_276,11 +00450_63,15 +01045_126,4 +011082_40,0 +00490_140,2 +01834_225,8 +00175_1,2 +00607_46,6 +01134_64,10 +00287_48,15 +01161_109,17 +00417_57,17 +001112_5,14 +010652_22,18 +01924_202,14 +00566_100,3 +01330_107,9 +00628_69,7 +01901_68,0 +02191_54,7 +011772_19,4 +00065_183,1 +02172_222,14 +01312_31,7 +017022_6,14 +019622_66,0 +00408_104,11 +014882_4,13 +00453_122,9 +00979_121,0 +01278_45,2 +01065_108,5 +004532_3,5 +016432_104,14 +00128_154,2 +00426_135,0 +00009_4,4 +02021_92,11 +01408_37,14 +01568_143,12 +00567_88,2 +00475_11,5 +011912_100,7 +007222_126,17 +00563_77,6 +01959_47,6 +00242_58,12 +01330_63,18 +019712_264,2 +012562_6,14 +013302_280,9 +018342_213,8 +01161_127,17 +007092_75,19 +011082_69,14 +01971_112,4 +00450_115,13 +00867_167,14 +00528_180,0 +00023_111,5 +01707_243,0 +02187_207,16 +00023_172,2 +01457_14,7 +00772_20,7 +008482_105,17 +01924_25,14 +01201_85,11 +019252_198,8 +01091_53,1 +00160_216,11 +014372_226,11 +020052_110,11 +01431_160,11 +012192_141,14 +019252_274,8 +01901_189,14 +01688_283,2 +02057_117,2 +016882_99,5 +00867_84,17 +00475_61,9 +02177_76,14 +019412_201,14 +01371_69,14 +018392_123,1 +00079_117,9 +00709_273,9 +01283_12,2 +01240_152,4 +01605_178,11 +01283_60,14 +00588_107,13 +01767_124,14 +02146_74,18 +002802_62,12 +00228_175,9 +01161_252,17 +02187_196,16 +014882_228,5 +01087_146,5 +00280_136,12 +01408_147,14 +016842_21,14 +00957_64,2 +00962_24,0 +02186_10,14 +016932_192,0 +01622_59,0 +00442_288,4 +01763_141,2 +00609_33,11 +01763_119,2 +014882_234,5 +00783_211,2 +00721_77,12 +00306_29,7 +01134_115,10 +000232_198,2 +01541_66,5 +01769_260,2 +01428_81,14 +018772_18,4 +00124_80,19 +00261_36,4 +01408_186,14 +01001_108,5 +01956_27,18 +020052_190,11 +017672_168,14 +002802_203,12 +01261_40,2 +01210_258,9 +00242_286,12 +01408_46,14 +02127_45,2 +01925_99,3 +000792_176,9 +01108_69,14 +012402_152,4 +02127_273,17 +00981_94,11 +00128_41,12 +01361_270,15 +005502_95,18 +012282_188,14 +02057_79,2 +012722_150,2 +019412_155,14 +00111_57,17 +001242_48,0 +00021_158,4 +01048_92,14 +019712_158,2 +00417_51,17 +01814_108,11 +01058_70,2 +00722_30,17 +00282_2,14 +00314_282,12 +01001_141,5 +01909_27,2 +007092_139,4 +00475_258,9 +019252_138,3 +013712_54,14 +01428_54,14 +00275_57,14 +007182_51,19 +017072_98,0 +01769_54,9 +00566_263,8 +01948_83,13 +01201_16,14 +01423_169,0 +01161_261,17 +01959_17,6 +00660_14,14 +00674_46,14 +00892_22,0 +01509_270,11 +01118_98,14 +014282_59,12 +00417_171,6 +01283_46,2 +018772_24,4 +019712_279,12 +01278_94,4 +00280_26,14 +01578_111,14 +01457_65,7 +00718_41,19 +00761_226,3 +013712_35,12 +01948_165,13 +01839_155,1 +01101_163,14 +00287_268,15 +01706_298,2 +014232_20,2 +02162_129,5 +01813_53,11 +01210_72,17 +00011_22,0 +00609_29,11 +021722_217,12 +017072_11,2 +00993_139,7 +000242_58,7 +019242_26,14 +00287_78,15 +019712_256,12 +00875_66,2 +00408_184,11 +00528_78,2 +00761_89,14 +00722_88,17 +00709_160,4 +014122_18,0 +020052_223,11 +00021_71,6 +01953_191,4 +00776_87,4 +01877_201,4 +01366_59,17 +012402_45,2 +01044_259,4 +019242_67,14 +001022_216,16 +00462_195,14 +00837_155,11 +02054_149,4 +00761_245,3 +020052_237,5 +011612_201,17 +01351_106,7 +020572_172,3 +01278_119,12 +01568_88,2 +01092_7,17 +01330_108,9 +00718_93,19 +00681_72,2 +020052_64,11 +01210_76,17 +01256_65,4 +01723_272,15 +01879_26,2 +01091_131,5 +005092_115,2 +000242_32,7 +00993_195,7 +01814_52,5 +00730_9,14 +01330_176,1 +011772_59,4 +017692_225,9 +01865_66,18 +009512_152,14 +00333_79,13 +01228_112,14 +00023_81,3 +01119_69,11 +01636_86,0 +00519_40,7 +01626_69,7 +01272_203,4 +00825_9,12 +001022_46,16 +00011_30,1 +01240_182,12 +01971_34,2 +00709_206,19 +012722_263,4 +001022_32,0 +02172_159,14 +02030_121,16 +00566_204,8 +017022_40,14 +019242_15,14 +01312_52,7 +012402_43,2 +01361_113,3 +00761_35,14 +00306_85,7 +00840_240,2 +02030_159,16 +01423_180,0 +00350_141,9 +010652_54,18 +01361_35,2 +017072_141,1 +00413_66,0 +01408_47,14 +00158_52,14 +00628_48,7 +017232_120,15 +01191_75,7 +009342_2,1 +00848_47,17 +001602_94,11 +01158_45,4 +00242_26,2 +00350_177,9 +00957_86,0 +01877_111,4 +01409_82,0 +00462_139,13 +00729_140,14 +01509_85,0 +01044_120,12 +017232_62,15 +01331_42,17 +00841_71,14 +00426_93,0 +018792_28,12 +007832_238,5 +00474_68,2 +005092_1,2 +010942_68,11 +007212_83,4 +004082_104,11 +01582_29,17 +00503_153,9 +011612_1,17 +006092_80,14 +011772_12,14 +01431_49,11 +019252_139,3 +01272_48,2 +013302_114,9 +01924_87,14 +01688_56,5 +01494_64,7 +00413_154,0 +00597_61,2 +006742_83,4 +00840_232,2 +01045_88,4 +00276_96,11 +009162_125,2 +02028_42,9 +01497_34,4 +015972_100,0 +01568_232,2 +017072_230,0 +00450_191,14 +00892_52,0 +016922_14,14 +01065_26,18 +007292_230,14 +01087_208,5 +01693_249,0 +00577_24,7 +00394_14,14 +02030_36,14 +016432_72,14 +014122_13,4 +010912_77,1 +009642_47,6 +019252_286,8 +01065_22,18 +016052_60,5 +007182_136,14 +00875_60,2 +012282_52,2 +01626_48,7 +000232_59,3 +01929_3,14 +01184_56,5 +019412_170,14 +00111_40,17 +01692_154,14 +010012_131,5 +01278_221,2 +02012_50,17 +01358_49,1 +014882_191,13 +01431_142,11 +00677_95,14 +00841_2,14 +016052_260,11 +01541_13,5 +018122_32,4 +00793_12,14 +01058_64,2 +01882_24,5 +02028_1,4 +00453_245,9 +00490_291,11 +00546_106,3 +005392_67,1 +019252_107,3 +02057_78,2 +01834_108,8 +01787_73,9 +01972_74,3 +01058_120,4 +019412_271,14 +00280_133,12 +01144_14,5 +02012_56,7 +010652_50,18 +002802_207,12 +01636_131,14 +017692_128,11 +018772_270,4 +01853_83,0 +01087_269,5 +00158_264,5 +007832_227,5 +00128_174,2 +00009_33,0 +00509_195,2 +01769_229,9 +02186_60,5 +00615_130,1 +00721_67,12 +00837_134,11 +01953_222,4 +01500_29,15 +012402_181,12 +01941_40,14 +01578_102,14 +00681_41,5 +00111_32,17 +01684_51,4 +00528_93,2 +01437_294,11 +011912_16,14 +00601_90,11 +012402_66,12 +02127_297,17 +013712_61,14 +014232_207,0 +00660_117,0 +02057_151,3 +02062_37,2 +005282_109,2 +01981_85,5 +02149_22,17 +014882_66,1 +00660_220,0 +012402_180,12 +00674_31,14 +01879_83,4 +002752_156,14 +00607_70,5 +00848_78,17 +016982_99,17 +011912_168,14 +01278_216,2 +00382_107,13 +00837_122,11 +008482_130,17 +00503_16,6 +00505_167,5 +01941_281,14 +010912_113,5 +01853_50,6 +00417_235,6 +00282_16,2 +01977_247,3 +007182_53,19 +01775_125,12 +02005_9,11 +00528_18,2 +007212_64,14 +005392_19,6 +012402_148,12 +00981_34,11 +01330_16,2 +01094_17,2 +00475_161,9 +00065_61,1 +00783_40,2 +00128_139,2 +00438_251,2 +01578_203,14 +00128_152,2 +012722_264,4 +016882_131,14 +015972_101,0 +00660_2,14 +02146_152,14 +013712_57,14 +01839_160,1 +00394_30,9 +00567_138,5 +01959_87,6 +000252_41,17 +01201_38,11 +00158_88,11 +00456_99,14 +00677_45,14 +010872_180,5 +017232_34,15 +017072_185,0 +01210_34,1 +00088_14,2 +00674_107,14 +00065_73,1 +01509_198,0 +00566_191,8 +02177_36,4 +00718_87,19 +01953_237,4 +00567_203,2 +01707_192,0 +00065_51,1 +00009_176,2 +012282_138,14 +00505_166,12 +02049_106,13 +01228_276,14 +00709_81,19 +010872_1,14 +00456_111,4 +002802_252,14 +00793_53,12 +00065_39,1 +01706_115,2 +020572_119,2 +01904_73,12 +00024_28,7 +00729_181,14 +00475_94,9 +01431_290,11 +00962_6,0 +00021_60,3 +00021_97,12 +01977_251,3 +00413_159,0 +00503_55,6 +013712_39,4 +009642_29,14 +01925_40,14 +01228_47,4 +01568_105,12 +00474_193,2 +01371_1,14 +00453_238,9 +01494_76,7 +01882_6,14 +000232_9,2 +00535_292,2 +00768_60,7 +005062_128,2 +016932_213,0 +00408_13,2 +01962_135,0 +01366_21,14 +000792_193,9 +01210_169,6 +02049_265,8 +01706_225,2 +017692_200,0 +009352_90,7 +007222_70,17 +020052_28,11 +005092_87,2 +017672_205,14 +00563_54,6 +00660_87,0 +01210_221,9 +01767_81,14 +01161_187,17 +002802_114,4 +00837_120,11 +019712_80,2 +012282_164,14 +01272_26,2 +01001_256,5 +01977_232,8 +019042_104,12 +01177_0,14 +00314_119,4 +01007_11,2 +004082_254,13 +01494_74,7 +01177_36,14 +018652_38,18 +00776_39,4 +00450_140,15 +012402_285,12 +00011_4,0 +010912_120,5 +02146_113,18 +01144_37,5 +018392_71,11 +01769_127,11 +02146_14,14 +00485_111,1 +01044_130,4 +01812_113,2 +00703_108,14 +01007_27,12 +00408_76,11 +00674_86,4 +002802_136,12 +01981_111,5 +01087_222,5 +00607_14,14 +00535_173,0 +01693_258,0 +01087_113,5 +01001_21,12 +00276_58,11 +00011_73,4 +02027_110,14 +01688_164,14 +00783_197,12 +02187_127,16 +00417_156,6 +00282_77,11 +019042_74,12 +01636_112,2 +00041_19,2 +01493_227,1 +016882_59,5 +01448_40,6 +001602_251,11 +01578_92,14 +00793_29,14 +014882_195,13 +01941_75,14 +01929_100,0 +02191_46,7 +000242_64,7 +012722_267,4 +01706_288,2 +011082_82,14 +019042_72,12 +01103_87,17 +00577_56,7 +010012_121,5 +00102_208,16 +01493_241,1 +00280_106,12 +007092_162,4 +01409_155,0 +007292_229,14 +01500_44,4 +001602_138,11 +021722_63,12 +01091_130,5 +012722_213,12 +01582_19,17 +01622_105,0 +01001_59,12 +016932_32,17 +01437_25,11 +00350_220,9 +01763_40,4 +01228_169,14 +00729_75,14 +01688_293,2 +01882_71,5 +02012_92,17 +01437_11,11 +01877_89,4 +00535_89,2 +008482_81,17 +017752_113,4 +01698_31,17 +01408_52,14 +01490_57,7 +01184_32,5 +01769_98,2 +01879_0,2 +00314_152,4 +00453_4,5 +00333_100,4 +02186_29,5 +00550_115,5 +01312_35,7 +01087_30,14 +000232_131,6 +00442_120,12 +00588_113,13 +012282_235,14 +00417_14,14 +00539_179,13 +01541_52,5 +00426_88,0 +019252_151,3 +00023_63,3 +00981_52,11 +00577_29,7 +01904_169,2 +01134_81,10 +00718_76,19 +00475_115,9 +01048_75,14 +016932_256,0 +01904_154,2 +00296_75,7 +00102_230,16 +01087_42,14 +01578_143,14 +01240_173,12 +00660_254,14 +016982_49,17 +001242_55,0 +00539_206,1 +01769_212,1 +00747_75,2 +00528_79,2 +00292_20,11 +01501_60,4 +00993_277,14 +01092_28,17 +01706_211,2 +00951_61,0 +012282_42,12 +008482_30,17 +00729_183,2 +00981_27,11 +01431_220,11 +01787_23,13 +00505_76,1 +016882_188,5 +01812_116,2 +00394_43,17 +02187_214,16 +01924_161,14 +01941_12,14 +001602_212,1 +00079_70,9 +00660_124,0 +012562_62,4 +00509_109,2 +01007_18,2 +002802_24,14 +006092_29,11 +018652_33,11 +01877_31,4 +01693_205,0 +00390_43,5 +01091_39,12 +009162_185,2 +00538_13,12 +000092_85,12 +00413_58,0 +017672_52,14 +01351_81,17 +01901_92,0 +005092_73,2 +00825_19,2 +02054_82,2 +00065_242,12 +00535_19,2 +01834_23,14 +016882_19,5 +001242_142,19 +00102_295,16 +01706_299,2 +011772_34,14 +01948_156,13 +02191_39,7 +00505_213,12 +014372_44,11 +00102_107,16 +01706_71,2 +00079_238,9 +021462_65,18 +008832_46,11 +01091_40,12 +00314_245,4 +019252_22,14 +016882_285,2 +00456_5,4 +00709_214,19 +000242_49,17 +01972_48,3 +01158_50,0 +017752_59,2 +00535_194,0 +009512_61,0 +00485_191,1 +01412_6,4 +02094_80,12 +00128_82,4 +014272_115,17 +01723_176,15 +01312_65,7 +00883_2,11 +00597_14,2 +007832_293,5 +00124_71,4 +01182_74,14 +008402_40,2 +01165_47,5 +010912_274,14 +006742_143,14 +00768_42,7 +01501_12,14 +019712_252,12 +000792_27,9 +00413_131,0 +00607_142,14 +01688_47,5 +00417_297,11 +00703_41,11 +004532_46,9 +014372_231,11 +01723_127,15 +01044_207,12 +004532_105,9 +00287_155,4 +007222_128,17 +011612_275,17 +01049_26,7 +01626_58,7 +007212_45,14 +01626_74,7 +01948_141,13 +01145_244,4 +004532_161,9 +018652_136,14 +000792_178,9 +01437_67,11 +012402_109,12 +02054_279,12 +01769_105,2 +018772_267,4 +012722_239,4 +016052_258,11 +00566_25,14 +004082_9,2 +00009_144,7 +01240_253,12 +00539_260,1 +02094_98,2 +018652_88,18 +00490_44,2 +01707_213,0 +01813_67,11 +01161_122,17 +01087_17,14 +001242_27,4 +017672_105,14 +02127_49,2 +01409_167,0 +005882_75,13 +019242_216,14 +02054_137,2 +00720_6,0 +00721_153,4 +008402_66,2 +01437_245,11 +01568_9,2 +014372_24,11 +01331_54,17 +01568_180,2 +014372_98,11 +00528_131,4 +019252_248,8 +01971_231,2 +009642_291,14 +01968_89,17 +01688_128,14 +001602_175,11 +00065_284,1 +00677_81,14 +01119_53,11 +01331_67,17 +000092_145,7 +006742_32,14 +008482_139,14 +00993_279,14 +00021_14,5 +02049_56,3 +001242_91,19 +01240_244,12 +009162_129,2 +021722_102,12 +017072_203,0 +018652_78,18 +01092_125,17 +00597_74,14 +00438_38,2 +01929_80,0 +00025_13,17 +02028_95,2 +021462_164,14 +00438_275,2 +01813_16,11 +01839_98,11 +004672_59,11 +00550_132,14 +01723_37,15 +007762_49,4 +014972_51,12 +00628_98,7 +01904_10,2 +02177_63,12 +01087_284,5 +017692_283,2 +01804_22,4 +00979_117,1 +01228_71,14 +00160_49,1 +004532_171,1 +00505_210,12 +01609_20,17 +004082_75,11 +01330_274,15 +01929_9,14 +01693_229,0 +021722_64,12 +008922_42,0 +007832_34,2 +016052_46,14 +01134_102,10 +00102_86,16 +00442_286,4 +01101_10,14 +010012_170,5 +00438_152,2 +01091_111,0 +01007_43,4 +00450_161,14 +00709_74,19 +008372_79,11 +00312_10,0 +004082_222,11 +01240_51,2 +01769_44,0 +007182_103,19 +00417_121,17 +00296_30,7 +01240_95,12 +01272_142,4 +004532_198,9 +00079_41,4 +00490_272,5 +01763_149,2 +00935_39,7 +01493_92,1 +01605_54,5 +01787_50,9 +011612_132,17 +00528_189,0 +00485_11,2 +00761_150,6 +001112_37,17 +02030_223,16 +02049_110,13 +02187_10,11 +01775_29,2 +00079_196,9 +01134_286,10 +01256_4,14 +01240_252,12 +01108_80,14 +01971_45,2 +00009_50,12 +01161_241,17 +016052_275,11 +020572_47,2 +017482_12,0 +01182_24,13 +00821_84,5 +010872_255,5 +00964_118,8 +01804_53,12 +00462_101,13 +00413_73,0 +00550_90,18 +00535_155,0 +00158_184,5 +01767_187,14 +020572_43,2 +00505_161,12 +008402_25,2 +02127_199,17 +016882_187,5 +00079_124,9 +014272_7,14 +00314_90,12 +00314_154,12 +01161_57,17 +01119_16,11 +00079_153,1 +018772_87,4 +011612_134,17 +00065_36,9 +016932_160,0 +002752_63,14 +004532_142,9 +017232_50,15 +017022_77,14 +009642_117,8 +01228_3,14 +01330_12,2 +01948_17,14 +00964_120,8 +02062_63,2 +017482_38,0 +00506_82,6 +01493_31,11 +01409_128,0 +01366_74,17 +00079_15,9 +019242_76,14 +01330_145,9 +019042_65,2 +00242_275,4 +011612_13,17 +01767_80,14 +005502_102,18 +014372_91,11 +00160_86,11 +00287_296,4 +00993_231,6 +01977_270,4 +00350_11,14 +021722_46,14 +00079_97,9 +00721_130,14 +01767_74,14 +01829_26,12 +01723_126,15 +00490_267,5 +018132_130,11 +02005_170,11 +00024_109,2 +01165_75,5 +01437_81,11 +00597_39,5 +00535_234,6 +019712_297,12 +010012_253,5 +00566_293,8 +01929_175,0 +012282_16,14 +01087_224,5 +000092_115,7 +012722_43,2 +01877_211,4 +00519_5,14 +01065_98,11 +00509_23,2 +000232_79,3 +01134_73,10 +01240_212,12 +00546_111,3 +01775_53,12 +007182_113,19 +00892_37,0 +01723_45,15 +005392_291,5 +000252_7,17 +00287_174,4 +01158_141,4 +01201_46,11 +002802_214,4 +01971_256,12 +00333_34,2 +00509_18,2 +01448_41,6 +01488_218,0 +014882_235,5 +019412_79,14 +018772_293,4 +02005_283,11 +00275_169,12 +00601_23,7 +017752_123,4 +005062_19,2 +01001_162,5 +01058_17,2 +010872_194,5 +019242_77,14 +00722_55,4 +009352_73,7 +01693_26,17 +00350_289,9 +01045_177,4 +02030_172,16 +00009_57,12 +003062_99,14 +016092_5,17 +011082_27,15 +01272_99,2 +01488_61,13 +00837_62,11 +01256_100,14 +01007_154,13 +01925_180,8 +008482_33,17 +00677_72,14 +001602_90,11 +018772_90,4 +014882_197,13 +01240_30,2 +02057_86,12 +017672_229,14 +000232_180,2 +00840_139,2 +00721_62,2 +01578_252,14 +02042_67,15 +005882_180,4 +00111_5,14 +02042_39,0 +008922_67,2 +00546_77,3 +02177_64,12 +014232_190,0 +00350_34,14 +01605_134,5 +01723_210,15 +02030_11,14 +01330_192,13 +00681_88,14 +01707_18,2 +00628_9,2 +007292_80,14 +018792_16,2 +00793_17,14 +017672_11,14 +00709_15,19 +02187_218,16 +00697_42,2 +01101_157,14 +01191_74,7 +011612_252,17 +01509_184,0 +01408_149,14 +01901_152,12 +00867_64,0 +01977_252,3 +01161_132,17 +01191_195,14 +01904_125,2 +02094_133,4 +01948_43,4 +009162_117,2 +00287_169,15 +01431_139,11 +01191_96,7 +018342_238,8 +01493_243,1 +01087_15,14 +014882_154,0 +01161_78,17 +01767_35,14 +01877_175,4 +012562_64,4 +01763_238,2 +01087_153,5 +00160_163,11 +014372_70,11 +00628_126,2 +00566_282,8 +01769_117,0 +017072_148,4 +01044_127,12 +005062_131,2 +001242_175,0 +017072_249,0 +016882_261,5 +02146_131,5 +01092_152,6 +01814_97,11 +00232_131,13 +02062_39,2 +01358_17,1 +01046_47,7 +002802_91,12 +00729_131,14 +00065_71,1 +01044_48,4 +007212_3,14 +019252_265,8 +018132_21,11 +004172_29,6 +00296_29,7 +02187_87,16 +01605_174,11 +01144_175,2 +00474_199,2 +01283_31,2 +02172_165,14 +00475_12,5 +00450_34,14 +01457_17,7 +01924_203,14 +01409_85,0 +01688_111,5 +00342_75,17 +00916_273,5 +01500_15,0 +01702_48,14 +00729_161,14 +017692_137,9 +00160_2,2 +01431_17,11 +01240_80,4 +00539_182,13 +014282_27,14 +01087_16,14 +021722_136,12 +004082_101,11 +007212_123,14 +01219_22,5 +00566_18,14 +003062_95,14 +014232_179,0 +014272_23,4 +01240_279,12 +00538_92,2 +011612_72,17 +01366_56,17 +01228_16,14 +00840_261,2 +00964_264,14 +00539_157,17 +00588_16,4 +01493_72,1 +01408_268,14 +01256_13,14 +01953_28,2 +02127_224,17 +01493_144,1 +010912_219,9 +01210_24,7 +002802_48,4 +007182_43,19 +00615_59,1 +01191_42,14 +02054_155,12 +00840_89,2 +019042_98,4 +01409_15,14 +01787_19,13 +00124_99,19 +00350_219,9 +016932_244,0 +00314_260,12 +01605_64,5 +01158_12,4 +01693_84,0 +01437_257,11 +014882_109,0 +00709_201,19 +01333_26,2 +01623_99,11 +00413_181,12 +01909_25,2 +006742_63,14 +01959_78,6 +00848_71,17 +00601_109,0 +00474_159,2 +00160_125,11 +019242_227,14 +009512_135,14 +00280_128,12 +00314_19,2 +01161_101,17 +000092_247,12 +00438_129,2 +013302_90,1 +01971_266,2 +017672_49,14 +02172_28,14 +021462_117,18 +01707_198,0 +01330_75,3 +00413_177,12 +00296_101,14 +01092_246,12 +00333_19,2 +012722_190,2 +01948_77,13 +00413_65,0 +02177_40,4 +001242_122,19 +02094_156,2 +00426_128,0 +012722_153,2 +01312_25,7 +006972_96,12 +00546_4,14 +00228_264,11 +016932_201,0 +014372_1,11 +01804_16,12 +00729_15,14 +00181_94,0 +00964_165,8 +00314_167,4 +01948_78,13 +02146_129,11 +01272_20,2 +017752_164,12 +009512_99,0 +01048_43,5 +00718_8,2 +01767_43,14 +01597_85,0 +01240_20,2 +00528_90,2 +01804_27,2 +00023_19,2 +01977_75,3 +00783_287,5 +011912_63,7 +010912_134,5 +01693_288,0 +01971_78,2 +01853_15,2 +018772_131,4 +00417_103,6 +01312_56,7 +01058_79,4 +005392_118,1 +01501_92,14 +018342_103,8 +004172_41,17 +00232_42,12 +012192_64,5 +00314_114,12 +016922_35,2 +01046_106,14 +01045_81,4 +01924_170,14 +01182_80,14 +01091_90,0 +017672_53,14 +02138_1,14 +00350_180,9 +01814_92,11 +00228_275,2 +016932_43,2 +016052_246,11 +016052_51,2 +004532_184,9 +00079_202,9 +01626_133,2 +017672_178,14 +01977_65,6 +019592_32,6 +00563_125,2 +01007_133,0 +00578_56,1 +02012_116,2 +00350_228,5 +00159_71,12 +013302_278,3 +015972_53,0 +00456_38,4 +00242_181,2 +020572_50,2 +01240_37,2 +01839_162,1 +01101_132,0 +01707_292,7 +01909_67,2 +00181_8,14 +01971_265,2 +008402_41,2 +019252_48,12 +000792_62,9 +01636_141,14 +01692_7,14 +00688_4,2 +00342_78,17 +02057_38,2 +016932_257,0 +01240_231,12 +012402_5,2 +00615_211,11 +016882_122,14 +00588_94,13 +001242_127,19 +004082_193,11 +02005_295,11 +01448_12,14 +01767_29,14 +00964_60,3 +01693_77,0 +00660_185,0 +01971_239,12 +01767_170,14 +001022_109,16 +01925_193,8 +01948_168,13 +00776_58,4 +01272_136,4 +00601_25,7 +01972_111,13 +01431_265,11 +018652_89,18 +00426_163,14 +00503_285,6 +014882_73,0 +00158_189,5 +00718_22,19 +00275_147,14 +00578_22,1 +01092_208,17 +02027_137,14 +01191_197,14 +00453_114,9 +011912_109,7 +01046_53,7 +01409_55,4 +01688_295,2 +01688_188,5 +00597_86,14 +00793_216,14 +00438_35,2 +01437_215,11 +005392_86,1 +00276_4,14 +00442_60,2 +00442_167,4 +009352_44,7 +012402_50,2 +01706_237,2 +01909_63,2 +00509_197,2 +00350_188,5 +013302_270,15 +00462_152,13 +00417_267,11 +00993_44,14 +01882_15,2 +010012_149,5 +001602_50,1 +00588_165,15 +012562_99,14 +02162_21,14 +00761_196,3 +00503_20,14 +00867_9,14 +00793_110,14 +01145_219,4 +012612_96,2 +007292_296,14 +000232_13,2 +008832_48,11 +00677_9,14 +002752_131,14 +01706_35,2 +016842_17,14 +008832_14,11 +01144_123,2 +01509_102,0 +021622_135,14 +01706_261,2 +01767_61,14 +00505_2,2 +00840_169,7 +016052_69,5 +006742_59,14 +00718_34,19 +02127_142,17 +01962_25,0 +019712_175,12 +00159_92,0 +014972_37,2 +011612_77,17 +009512_66,0 +00438_11,2 +01437_55,11 +01134_222,10 +02062_127,4 +017752_17,2 +004532_234,9 +00467_33,11 +01909_169,12 +00442_114,2 +016882_250,5 +018132_114,11 +01494_57,7 +016052_120,5 +01240_297,4 +01684_15,14 +005392_223,13 +016432_101,14 +02054_28,2 +01582_70,5 +00490_66,2 +01182_110,14 +01813_120,11 +008922_102,2 +01763_120,2 +01087_45,14 +010012_260,5 +000792_260,9 +00539_5,6 +010872_261,5 +01118_16,14 +019712_284,12 +00124_189,0 +01941_173,14 +00350_135,9 +012192_42,5 +00867_185,14 +00041_139,7 +00102_231,16 +005392_18,6 +00776_93,14 +01962_112,0 +00768_3,14 +019712_72,4 +01278_186,2 +00342_17,17 +01144_1,5 +01578_174,14 +02146_112,18 +00456_115,2 +01330_254,15 +017672_106,14 +01493_172,1 +01428_19,4 +00350_169,5 +00408_25,1 +00718_127,5 +01091_160,5 +009642_134,8 +005502_116,5 +00776_60,4 +007182_3,2 +01787_16,13 +01261_4,2 +01312_28,7 +02054_275,12 +01706_245,2 +00390_70,5 +00503_97,1 +016052_248,11 +004532_107,9 +01763_250,12 +00578_54,17 +01091_227,7 +01941_122,14 +00453_184,9 +01046_22,7 +00681_42,5 +00462_107,13 +01839_144,1 +019412_283,14 +00567_108,2 +01609_21,17 +019622_132,0 +01101_3,14 +00474_288,2 +00024_8,2 +018122_43,2 +02054_165,12 +01044_92,4 +021722_24,14 +009622_56,3 +01693_103,12 +01693_95,0 +02027_10,17 +00628_110,7 +00228_21,14 +02187_179,16 +01877_94,4 +00450_178,14 +012612_104,2 +02088_33,0 +01706_185,2 +00438_69,12 +00065_87,11 +019252_241,8 +00475_125,11 +00041_109,12 +00535_176,0 +00722_52,4 +01971_234,12 +01087_151,5 +01045_178,4 +00475_239,9 +00450_70,13 +01366_155,14 +00660_169,0 +016092_19,17 +019042_119,2 +01427_132,14 +01688_261,5 +01228_192,14 +018772_288,4 +000092_74,0 +01161_67,17 +021722_60,14 +019242_70,14 +00333_145,2 +017692_98,2 +016052_229,11 +01763_69,2 +02088_1,0 +00729_175,14 +01707_265,7 +010012_258,5 +008402_189,2 +011772_13,14 +01977_137,8 +021912_34,7 +011772_106,14 +018392_165,1 +01045_92,4 +01044_292,4 +01118_7,14 +00535_279,12 +01092_5,17 +00438_25,2 +01048_66,5 +00438_242,2 +008482_54,17 +02005_191,11 +01692_34,2 +00413_99,0 +01490_49,7 +01045_36,2 +003062_13,14 +01953_107,4 +01865_74,18 +01901_87,0 +005882_40,4 +02062_137,4 +021462_8,14 +007212_1,14 +01877_214,4 +00607_35,11 +00242_183,2 +010012_187,5 +01493_165,1 +00563_66,9 +00722_58,4 +012282_0,14 +007092_280,12 +01723_168,15 +009622_25,4 +01834_124,8 +011912_2,14 +01256_15,14 +00350_103,5 +001242_192,0 +02186_20,5 +00021_134,12 +01693_66,0 +00350_65,14 +01210_164,6 +01044_297,4 +00456_20,14 +01134_104,10 +00550_29,18 +02177_46,14 +009642_194,8 +01092_60,17 +014882_218,0 +01283_42,2 +00475_244,9 +016882_286,2 +021722_222,14 +01427_16,14 +01165_49,5 +00065_41,1 +017072_254,7 +01044_231,12 +017072_196,0 +00962_75,3 +00848_58,17 +01814_141,5 +00601_107,0 +01366_153,17 +00382_132,5 +013302_57,18 +00993_269,14 +01048_9,14 +00417_47,17 +01981_135,14 +01219_94,5 +00677_39,14 +00768_79,7 +01210_196,6 +02005_98,11 +019712_46,2 +00546_100,3 +01948_107,13 +006742_112,14 +007092_149,5 +015972_17,0 +00275_121,12 +00276_127,14 +01145_155,4 +019622_33,0 +00761_15,14 +01144_45,6 +01448_89,6 +012192_10,14 +01330_54,18 +005092_236,2 +013302_128,9 +00535_16,2 +01457_10,2 +01775_115,2 +00450_98,13 +017072_261,7 +00768_88,14 +01972_129,3 +00825_17,2 +01879_106,2 +02054_180,4 +01351_58,17 +006742_44,14 +01977_54,14 +00721_6,14 +01877_82,4 +00292_29,11 +00275_99,14 +000792_78,9 +00041_55,7 +02042_35,13 +00793_27,14 +00160_147,11 +01045_157,4 +01488_73,0 +005882_104,13 +019242_146,14 +00417_113,17 +02127_106,17 +00456_171,12 +02005_135,11 +00292_19,11 +00793_134,14 +010872_252,5 +00729_118,14 +00848_72,17 +00453_290,9 +00394_110,14 +013302_287,1 +01925_1,14 +007832_292,5 +01091_194,16 +019242_48,14 +00935_54,7 +01161_9,17 +010912_127,5 +01834_274,8 +00697_59,5 +007832_92,17 +01423_239,2 +00442_75,2 +00783_96,17 +005502_72,18 +01145_54,2 +00124_17,4 +01427_61,17 +01158_51,0 +01092_286,14 +01769_258,2 +02187_171,16 +001022_123,16 +00011_5,0 +00979_119,0 +007092_2,19 +00102_129,16 +00578_62,1 +012282_216,14 +00552_0,2 +00275_123,14 +005502_66,18 +00342_5,14 +00426_95,0 +002802_71,12 +020052_90,11 +012612_40,2 +01769_210,11 +00242_96,12 +016882_177,5 +01578_183,14 +00578_7,14 +01001_180,5 +005392_262,1 +019242_89,14 +01693_209,0 +00916_293,5 +010012_99,5 +00287_171,15 +01693_268,0 +00159_65,2 +004172_3,14 +021622_117,18 +00793_206,14 +01240_255,2 +01509_280,11 +000232_98,0 +012282_77,14 +001602_99,11 +00768_14,14 +019712_96,12 +01865_118,18 +02028_57,15 +018772_17,4 +010872_31,14 +00552_34,7 +00916_278,5 +01962_29,0 +011912_83,7 +01144_115,2 +019252_213,8 +01834_141,8 +01925_280,8 +01272_197,4 +01161_258,17 +00490_196,2 +01330_286,1 +01283_51,2 +01044_222,2 +01049_13,7 +017232_251,15 +01007_232,0 +00703_33,11 +000232_165,2 +02030_136,16 +004172_239,6 +01953_7,2 +020052_157,11 +01763_96,2 +01925_166,3 +00509_85,2 +01134_247,10 +010012_146,5 +00957_14,0 +02146_81,18 +00538_38,17 +00607_65,12 +00350_60,14 +01428_53,14 +00456_45,14 +01707_285,7 +01493_190,9 +00993_197,7 +01959_56,6 +019242_5,14 +005882_199,2 +009162_116,2 +00567_97,5 +000232_53,3 +009512_72,0 +014882_94,13 +01497_8,0 +01228_237,14 +01767_213,14 +011772_7,14 +016922_47,2 +016882_244,5 +004172_102,6 +00535_119,6 +017232_157,15 +017232_128,15 +00628_22,7 +00761_60,14 +01044_132,4 +01929_230,14 +01962_109,0 +01044_78,12 +010912_57,1 +004532_133,9 +009642_81,3 +00228_87,11 +016932_185,0 +00867_183,14 +019712_131,12 +00021_157,4 +01001_80,12 +016932_162,0 +01144_92,12 +01879_49,12 +01182_35,11 +018792_88,4 +014232_104,0 +019712_292,12 +01145_58,2 +012192_133,14 +01971_210,2 +014372_159,11 +01007_226,0 +00957_82,0 +02187_110,16 +00535_8,2 +01210_126,6 +01501_63,14 +00158_134,5 +02028_6,4 +01501_36,4 +01787_81,9 +00505_27,14 +01813_34,11 +00128_143,2 +01707_50,4 +000092_150,0 +021622_134,14 +009512_162,14 +00021_75,4 +00601_10,7 +008922_90,2 +00722_49,17 +019712_151,12 +00528_162,0 +01977_136,8 +00023_136,6 +000792_42,4 +01693_218,0 +01409_68,0 +01331_51,17 +01330_146,9 +00442_270,4 +007212_87,14 +004082_18,1 +014122_55,0 +01787_82,9 +00160_130,11 +00519_25,7 +016842_45,4 +02057_109,2 +02042_44,14 +01804_111,7 +01509_252,11 +01191_171,14 +005392_144,13 +01623_106,5 +01177_54,12 +01953_29,2 +005392_243,1 +00023_175,14 +01941_175,14 +00287_61,15 +004172_289,11 +01490_86,14 +00394_16,12 +009162_91,2 +02057_158,3 +017072_54,0 +009162_54,2 +01182_75,14 +01427_86,4 +00567_8,2 +014882_95,13 +00485_276,12 +017482_16,0 +000252_85,17 +01605_286,11 +018772_137,4 +01626_102,7 +01134_147,10 +01488_32,0 +01045_221,4 +00677_90,14 +00350_119,9 +00287_184,15 +000252_58,17 +01007_73,0 +00703_55,11 +011612_129,17 +00506_78,6 +01953_124,12 +01568_210,2 +01145_3,2 +00350_49,14 +005092_10,2 +01490_67,7 +01494_87,14 +00160_58,11 +007292_162,14 +01493_232,1 +004082_48,1 +02094_21,2 +00314_122,4 +01509_88,0 +00475_183,1 +01924_80,14 +017692_102,2 +00024_7,2 +018772_252,4 +01698_112,14 +02042_61,15 +010872_116,5 +01626_2,2 +01331_39,17 +01361_220,15 +004532_40,9 +01568_177,2 +00413_70,0 +00681_27,5 +00539_150,1 +01361_162,3 +01437_5,11 +02094_64,2 +00566_33,12 +000252_54,17 +00721_53,4 +013302_178,1 +01001_226,5 +01767_157,14 +00825_82,2 +000092_33,0 +01228_144,14 +02030_228,16 +01941_261,12 +00474_152,2 +01001_134,5 +01091_243,2 +00709_72,19 +009642_182,8 +01272_185,4 +012402_104,12 +00609_74,14 +011612_169,17 +02172_160,14 +01509_44,0 +01688_108,5 +00552_65,7 +00730_18,14 +021722_7,14 +000252_0,17 +01092_180,17 +01182_28,13 +00837_154,11 +00065_130,1 +011082_26,15 +01044_226,2 +01065_67,18 +01814_133,5 +019252_153,3 +01929_83,0 +014372_38,11 +005062_127,2 +017692_207,11 +01448_91,14 +00485_231,1 +00916_163,2 +00450_75,13 +00490_207,2 +00024_97,2 +02027_97,14 +01494_40,7 +02146_122,11 +01924_158,14 +00287_76,15 +00577_2,14 +01145_247,4 +01423_185,0 +00747_40,4 +007292_56,14 +010652_113,14 +012402_55,12 +01971_32,2 +01144_154,2 +012402_105,12 +00825_60,2 +00793_241,14 +01977_161,8 +01767_6,14 +012192_34,5 +00287_105,15 +00916_116,2 +00287_15,4 +017672_151,14 +010872_55,14 +00528_206,0 +016922_118,1 +01219_115,5 +00124_78,19 +00674_116,14 +00892_18,0 +021722_90,14 +01134_66,10 +00079_108,14 +00729_221,14 +020572_158,3 +016432_70,14 +016052_284,11 +00181_53,0 +009162_137,2 +007222_47,17 +005882_203,2 +01431_150,11 +008482_67,17 +006742_58,4 +005392_131,1 +00503_207,9 +01877_153,4 +01962_89,0 +00413_117,0 +017072_70,0 +02191_58,7 +00539_184,13 +00601_13,7 +02138_67,12 +00566_68,8 +02049_204,13 +01423_204,0 +01623_96,11 +01578_84,14 +018342_241,8 +012612_112,2 +02146_86,18 +01767_28,14 +007222_29,17 +01366_41,17 +00674_92,14 +018342_242,8 +00588_140,13 +00609_62,5 +00413_35,0 +01605_99,5 +00681_71,2 +01605_191,11 +01408_183,14 +01278_155,12 +007832_112,17 +00124_43,4 +017232_68,15 +00578_79,4 +011612_261,17 +019712_92,12 +00438_138,2 +02030_59,14 +00993_68,6 +01813_29,11 +01457_19,7 +01582_9,7 +00837_91,11 +00718_61,19 +00505_49,2 +02094_24,2 +01541_56,5 +016932_163,0 +01568_91,2 +00892_86,2 +01693_217,0 +00721_112,14 +00079_93,9 +02028_17,15 +010012_293,5 +02005_68,11 +02162_132,5 +012282_28,14 +01623_65,11 +010012_230,5 +01723_113,15 +00456_120,14 +020052_51,11 +008402_144,7 +01707_236,0 +00333_28,2 +014272_17,2 +014372_202,11 +000092_174,0 +00312_6,0 +00408_291,11 +00128_248,12 +01509_129,0 +00964_97,8 +00292_42,11 +00242_239,12 +017752_121,2 +01707_47,4 +00993_136,7 +018792_47,2 +01165_94,5 +00840_229,2 +02138_7,14 +00450_81,13 +01228_46,4 +01351_25,7 +02027_0,14 +01210_104,6 +000232_164,5 +00417_15,6 +00772_69,7 +008252_56,2 +01001_183,5 +016882_38,5 +001022_9,2 +01763_20,12 +00450_116,13 +00837_16,11 +01813_4,14 +00160_158,11 +00160_277,3 +01981_88,5 +017232_271,15 +01813_144,14 +01134_53,10 +00607_25,5 +01693_88,0 +01767_50,14 +01158_13,4 +00607_64,6 +01272_73,4 +018132_71,11 +01904_26,2 +00505_124,12 +01045_37,2 +00993_184,7 +01001_5,2 +02021_68,11 +01941_138,14 +02146_90,18 +008252_31,12 +014232_167,0 +00079_73,9 +00009_26,7 +012612_20,2 +01748_75,0 +01707_159,0 +018392_79,11 +01688_259,5 +01358_55,1 +018132_65,11 +00453_110,9 +014882_138,0 +01240_154,4 +00160_3,2 +014232_141,0 +01605_241,11 +00287_125,4 +00128_282,12 +014372_289,11 +00333_29,2 +000792_52,9 +00709_109,1 +017672_85,14 +00124_112,19 +00079_137,9 +00539_53,1 +00408_199,11 +01371_7,14 +00314_49,2 +01101_133,0 +01001_285,5 +01501_64,14 +00935_14,14 +00697_8,2 +00276_89,11 +00102_80,16 +01046_73,7 +017072_240,0 +019712_95,12 +019712_210,2 +00023_26,2 +00111_16,14 +01962_128,0 +01272_153,2 +00282_48,17 +01597_38,0 +014882_199,13 +00721_149,14 +005392_69,1 +00158_210,5 +00729_134,14 +00102_97,16 +00124_141,19 +00023_92,0 +01623_36,5 +014232_92,0 +00566_153,8 +021722_189,14 +01423_48,2 +01210_148,6 +01962_50,0 +01087_111,5 +018792_79,12 +01210_297,9 +02054_139,2 +01972_98,13 +00124_173,0 +02030_284,16 +01839_168,1 +012612_5,2 +02057_65,12 +004082_200,11 +00566_110,8 +01488_37,0 +021772_35,4 +010912_85,16 +01977_167,8 +019712_249,12 +01412_55,0 +014372_146,11 +02138_131,8 +00065_206,1 +019252_105,3 +00688_30,4 +01001_99,5 +01330_275,15 +01962_66,0 +01219_98,5 +00567_144,5 +00158_86,5 +001112_12,14 +00776_50,4 +00837_0,14 +01161_64,17 +02127_194,17 +00528_17,2 +01578_101,14 +00951_85,0 +00287_275,4 +016882_165,14 +01693_199,0 +007832_144,2 +00413_98,0 +02187_202,16 +00729_244,14 +000792_9,9 +014232_264,2 +016052_240,11 +01219_123,5 +01813_145,14 +010942_42,11 +009642_62,3 +01688_104,5 +00601_75,1 +01814_153,5 +00158_45,14 +02054_194,2 +010872_132,5 +01457_2,14 +01688_65,5 +017232_70,15 +011612_185,17 +012402_261,4 +00450_193,14 +016932_169,0 +02172_24,14 +01408_93,14 +00160_179,1 +01622_10,14 +00350_9,14 +01853_48,1 +00462_81,13 +00628_46,7 +016982_20,17 +010012_213,5 +01228_103,14 +00722_43,17 +01767_277,14 +017232_17,4 +00721_138,12 +01813_102,11 +02172_51,14 +00438_293,2 +016932_52,0 +00312_44,0 +00350_59,14 +00228_244,11 +00160_228,1 +01925_181,8 +006742_49,14 +016052_8,14 +01769_193,2 +00275_20,14 +01493_273,1 +00837_3,14 +00456_44,4 +01283_26,2 +009162_228,2 +01091_71,1 +00957_3,4 +02172_96,14 +01158_123,1 +00124_214,0 +01578_106,14 +01493_87,1 +016932_286,0 +02005_220,11 +01706_3,2 +01812_14,2 +007182_19,19 +00607_74,11 +01431_114,11 +014372_174,11 +01925_273,8 +01879_87,4 +01045_142,4 +01597_10,14 +016882_210,5 +008372_65,11 +01165_31,5 +014272_99,17 +010652_104,5 +01101_105,1 +002802_5,14 +01909_71,2 +01007_265,6 +01948_81,13 +014972_29,4 +00505_119,12 +012722_2,2 +01626_115,7 +01351_0,2 +00875_16,2 +00609_5,14 +01184_117,14 +01058_47,2 +00490_99,2 +00588_60,13 +01925_24,12 +01804_121,12 +00413_88,0 +01925_170,8 +00793_159,14 +009642_236,15 +02162_125,1 +01330_188,3 +01358_11,1 +01161_246,17 +02054_207,12 +002802_128,12 +02012_60,7 +01804_118,7 +004172_238,6 +00505_224,12 +01493_289,1 +01361_169,3 +02162_67,17 +021462_105,18 +01161_280,17 +01182_117,14 +01165_135,14 +00228_285,14 +01812_23,2 +00509_128,2 +020572_120,4 +00175_55,2 +01763_107,4 +012402_262,4 +01509_208,0 +00438_112,2 +00023_153,6 +01437_190,11 +00160_275,3 +01723_187,15 +00730_90,17 +01145_24,2 +014272_128,14 +01177_120,14 +010942_3,14 +00535_70,12 +00538_71,1 +01882_32,11 +005502_126,14 +01767_215,14 +01272_130,12 +00503_85,1 +010872_37,14 +00875_102,2 +01219_4,14 +01941_260,14 +00503_107,1 +01134_254,10 +02094_63,2 +016922_107,1 +02177_77,14 +00867_130,17 +01184_47,5 +006972_105,4 +013302_134,6 +006742_144,14 +017672_219,14 +000792_241,9 +01448_3,14 +01108_14,14 +01101_18,14 +00025_24,17 +00390_116,14 +009162_280,5 +01925_187,8 +00079_217,0 +01622_9,14 +01272_67,4 +00333_56,2 +02042_65,15 +00793_118,14 +00783_155,2 +010652_88,18 +00509_231,2 +00474_277,2 +00793_119,14 +01981_31,5 +020052_66,11 +019242_176,14 +007762_77,4 +00474_250,2 +00408_154,11 +014122_62,0 +016982_48,17 +01007_227,0 +005392_76,1 +01493_275,1 +01813_57,11 +018122_71,12 +00041_134,7 +008922_97,2 +01688_200,5 +01839_140,1 +01622_13,14 +008482_97,17 +00467_45,11 +01001_15,2 +01972_18,2 +001242_164,19 +01361_45,12 +018132_74,11 +02030_282,16 +01044_213,2 +02094_171,2 +00979_25,1 +007832_190,4 +010912_135,5 +00088_12,14 +00023_188,2 +00821_86,5 +00462_148,13 +009642_189,8 +012282_47,4 +00957_35,4 +00280_159,12 +01636_24,0 +010942_65,11 +00242_288,12 +00232_12,14 +01228_189,14 +01693_110,0 +00390_1,14 +01412_92,0 +02030_238,16 +00660_277,2 +007092_72,19 +01623_87,11 +01698_29,17 +01412_35,0 +021722_180,14 +007092_13,19 +01605_87,5 +02054_274,12 +02005_182,11 +02172_151,4 +021622_39,12 +001112_38,17 +02172_141,12 +00505_150,12 +00793_99,14 +01813_10,11 +01044_165,12 +02030_143,16 +00503_193,9 +01408_18,14 +02027_109,14 +005092_181,12 +00941_53,0 +00276_84,11 +012562_94,2 +01541_1,17 +00009_25,12 +00426_72,0 +00350_72,2 +00390_117,14 +01330_202,9 +00442_168,4 +00660_26,12 +00837_130,11 +01941_284,14 +00883_16,11 +00538_59,17 +01092_282,14 +01971_172,12 +01707_61,0 +00761_208,3 +01877_23,4 +00408_40,1 +01431_73,5 +00065_31,17 +01814_45,5 +004532_233,9 +021722_178,14 +01623_32,5 +02138_132,13 +01103_109,14 +002752_70,14 +017482_59,0 +00024_39,7 +00490_238,5 +00768_23,7 +01044_216,2 +010872_232,5 +017232_93,15 +019412_124,14 +01605_214,11 +01829_17,12 +00729_177,14 +00024_95,2 +00350_224,9 +012612_37,2 +00242_127,2 +01814_243,5 +01623_138,14 +01814_296,11 +005062_44,2 +01568_241,2 +00065_18,17 +009642_118,8 +01371_38,4 +01092_278,12 +012282_218,14 +008372_44,11 +00426_96,0 +01144_99,12 +010872_74,5 +01763_147,2 +014122_71,0 +01049_53,7 +00506_68,6 +01493_265,1 +00462_97,13 +001022_270,16 +00964_253,14 +013302_158,9 +02191_30,7 +005062_67,6 +01968_6,14 +004532_257,9 +01972_148,3 +012402_57,12 +00128_91,12 +01623_47,11 +00079_227,9 +01118_42,7 +02094_36,12 +01044_6,12 +00722_132,17 +01707_283,7 +00528_202,0 +01283_41,2 +00490_230,5 +004172_291,11 +01118_39,7 +01925_5,14 +01568_182,12 +01509_2,2 +00413_122,0 +00588_23,4 +017232_267,15 +00505_246,14 +01210_44,9 +01191_132,2 +007212_115,14 +014272_24,4 +003122_9,0 +009622_20,0 +019622_103,0 +00490_43,2 +00453_162,9 +01361_77,12 +02005_281,11 +00609_73,14 +01087_133,5 +017022_42,14 +00577_110,14 +01361_172,3 +01853_73,6 +019242_22,14 +01971_193,12 +01814_96,11 +01968_0,14 +012722_224,4 +00566_272,8 +008922_79,2 +01643_62,4 +005502_53,18 +00390_60,5 +01972_212,3 +01145_241,4 +01448_71,3 +01929_128,0 +015972_26,0 +01707_36,2 +00567_256,5 +00181_118,0 +00761_118,14 +01688_105,5 +007292_95,14 +00041_162,7 +00588_215,12 +013302_243,6 +007092_121,17 +01046_120,14 +021722_96,14 +004082_32,1 +009512_24,0 +00102_128,16 +01605_67,5 +00793_100,14 +011612_212,17 +01065_23,18 +01688_64,5 +01431_134,11 +014372_115,11 +01201_49,11 +01834_268,8 +00964_278,14 +01814_210,11 +01272_195,2 +005392_132,1 +000792_275,15 +00438_197,2 +01134_267,10 +02012_75,17 +00276_111,11 +02172_261,14 +01278_177,2 +014232_128,0 +00128_243,12 +00563_4,2 +005392_99,1 +01145_50,2 +01688_163,14 +00474_44,12 +01091_234,12 +00761_266,3 +00442_243,4 +00677_41,14 +02005_267,11 +016932_64,0 +005062_83,6 +02049_233,3 +00601_114,0 +00535_294,2 +00065_128,1 +00768_54,7 +00021_114,4 +00578_52,17 +01092_16,17 +00102_294,16 +00128_265,12 +009642_148,8 +01968_54,7 +009512_151,14 +01948_31,14 +008372_15,0 +014372_175,11 +01962_125,0 +01007_25,12 +02049_143,13 +02005_208,11 +00394_31,9 +01977_240,8 +01693_75,0 +01119_45,11 +00505_54,4 +01145_85,4 +01909_95,2 +00951_49,0 +00538_50,4 +021722_179,14 +010652_108,5 +01437_162,11 +01834_50,8 +01161_71,17 +019252_234,8 +012282_36,14 +00102_175,16 +00160_221,11 +00160_248,11 +01488_152,0 +00721_96,14 +012192_122,5 +01091_42,12 +00721_249,14 +00124_221,0 +01091_29,12 +007292_190,12 +007832_225,5 +00837_171,14 +004172_73,17 +01597_47,0 +01706_123,2 +01605_184,11 +009642_167,8 +00475_207,1 +019252_216,8 +00793_84,14 +00962_79,3 +01087_171,5 +01853_45,7 +01924_95,14 +016932_70,0 +00467_49,11 +01065_90,18 +00382_89,1 +00485_270,12 +00793_188,14 +00228_32,14 +00490_166,2 +01578_128,14 +000092_126,2 +02027_115,14 +00456_164,12 +01144_36,5 +012192_136,14 +00462_140,13 +019242_218,14 +01001_233,5 +00848_50,17 +005062_54,4 +01693_165,0 +00722_136,17 +019242_35,14 +00128_136,2 +002802_34,12 +01941_92,14 +01261_109,2 +01904_41,12 +007212_99,14 +01626_30,7 +00539_188,1 +01158_80,4 +00394_119,14 +017672_2,14 +00761_90,14 +00275_115,14 +01182_9,14 +01568_211,2 +010872_82,5 +005882_186,4 +01977_182,8 +00475_219,1 +00628_123,7 +01228_162,14 +00776_46,14 +01361_264,15 +00394_83,17 +00024_73,7 +00837_80,11 +01330_240,6 +01091_110,0 +00681_24,5 +01048_91,14 +01007_160,13 +00041_68,7 +01488_34,0 +00490_39,2 +005092_60,12 +00883_37,11 +004082_243,11 +01184_118,14 +01541_2,14 +001602_170,11 +00128_279,12 +00729_41,14 +014372_12,11 +009642_109,8 +00442_16,14 +00011_62,4 +01706_108,2 +013302_227,6 +01240_181,12 +019242_60,14 +00729_182,14 +00840_0,2 +01953_279,12 +02191_44,7 +01331_35,17 +01044_66,4 +018342_30,6 +00453_161,9 +01256_109,14 +012192_87,5 +00783_5,2 +020052_105,11 +00718_110,19 +00588_185,4 +017692_15,2 +01706_246,2 +019252_189,8 +01901_32,5 +01962_3,0 +00519_94,11 +01962_14,0 +01706_196,2 +013302_118,1 +003122_35,0 +01605_204,11 +017672_156,14 +000252_1,17 +00601_71,9 +01101_30,7 +01408_87,14 +00442_266,4 +00628_85,7 +00462_103,13 +01972_38,6 +00567_147,2 +00128_211,12 +00867_129,17 +018652_20,11 +01330_10,2 +01058_160,2 +005282_26,2 +01091_218,9 +004532_121,9 +004172_152,6 +02054_145,2 +00837_44,11 +00761_174,3 +00941_24,13 +00228_258,11 +02191_56,7 +001602_11,2 +012402_36,2 +014122_68,0 +00503_25,6 +02187_6,11 +014232_163,0 +01769_195,2 +006742_137,14 +00747_37,4 +00009_155,12 +00597_45,5 +01044_64,4 +02030_217,16 +01814_290,11 +013302_198,6 +00577_43,7 +016922_152,14 +01941_129,14 +00729_33,14 +01412_41,0 +016432_88,14 +003062_16,14 +019242_0,14 +016882_238,5 +019252_225,8 +018772_27,4 +01748_26,0 +005392_278,0 +00314_57,2 +01707_220,0 +00408_232,11 +01184_58,5 +01283_71,14 +00350_23,14 +00563_81,6 +00474_124,2 +00175_90,2 +00079_0,9 +00567_54,5 +01804_91,12 +01693_27,17 +01568_60,12 +00474_93,2 +00519_63,17 +01191_166,14 +00783_187,2 +01219_101,5 +01134_296,10 +021622_15,14 +01605_166,11 +01240_289,12 +00730_137,14 +01101_164,14 +003122_27,0 +007292_51,14 +009642_240,4 +01953_229,12 +00505_209,12 +014972_41,2 +017072_78,0 +01948_200,13 +00566_94,8 +01623_41,11 +01924_236,14 +005882_143,13 +007212_81,4 +01839_114,11 +01578_68,14 +01775_122,2 +00607_0,14 +00079_126,9 +01228_171,14 +008832_43,11 +01283_7,14 +007292_260,14 +02030_189,16 +001022_43,16 +01046_85,7 +00490_241,5 +01877_184,4 +018652_95,18 +010012_103,5 +02027_128,14 +00453_136,9 +00350_218,9 +01775_177,12 +02027_47,18 +001602_39,11 +01578_115,14 +012612_15,2 +009642_112,8 +01972_201,3 +00228_216,7 +00009_172,0 +01941_57,14 +012722_265,4 +00025_58,17 +00011_110,12 +01971_157,2 +01636_56,0 +021622_127,5 +02021_29,1 +020052_166,11 +01408_51,14 +01636_92,0 +018122_66,4 +00390_101,7 +019412_275,14 +00009_269,0 +014972_18,0 +003062_22,7 +00009_38,4 +02005_130,11 +014122_81,0 +02028_11,4 +00242_279,12 +00453_13,1 +01407_27,5 +01103_12,4 +00660_235,0 +00333_13,2 +01408_177,14 +00528_142,4 +014232_257,2 +00485_122,1 +00761_172,8 +01091_114,5 +00892_1,0 +00761_99,14 +007832_142,2 +013302_173,6 +01437_242,11 +01972_16,2 +00490_125,12 +014232_7,2 +01948_53,13 +00009_111,12 +00413_106,0 +01834_295,8 +01044_125,12 +00941_16,0 +01177_13,14 +005282_141,4 +01448_29,0 +02062_31,2 +00159_55,2 +01509_49,0 +01605_137,5 +011772_113,14 +019252_269,8 +01184_82,5 +01145_140,12 +018652_130,5 +005392_75,1 +004532_188,9 +01045_139,4 +00408_216,11 +00426_2,14 +014072_14,2 +01497_5,5 +011772_105,14 +007212_49,4 +00609_21,11 +00688_21,2 +00242_157,12 +002802_121,2 +00892_5,0 +00660_265,2 +01191_159,2 +00442_211,4 +001242_63,4 +01184_112,5 +01924_165,14 +00413_7,14 +01941_24,14 +01706_92,2 +01509_271,11 +00041_102,12 +00408_70,1 +01901_51,5 +00528_86,2 +00703_35,11 +01278_189,2 +01134_248,10 +01330_159,9 +02146_93,18 +01693_73,0 +00588_199,2 +02057_165,3 +014882_46,0 +019712_127,2 +00158_230,5 +007832_270,5 +021912_43,7 +02094_117,12 +00490_286,5 +014232_137,0 +01763_179,12 +02005_287,11 +00485_108,1 +00490_87,2 +007832_140,2 +02187_7,11 +00474_154,2 +013302_177,1 +00475_117,9 +00442_230,4 +019252_215,8 +00951_118,0 +00503_204,9 +01636_94,0 +02191_4,14 +01578_251,14 +00342_7,14 +013712_65,14 +015972_70,0 +016432_51,14 +00280_86,2 +01962_90,0 +007092_263,1 +001022_73,16 +00722_97,17 +00979_138,14 +00350_206,5 +02138_146,13 +016882_208,5 +014232_58,2 +00296_68,7 +00242_19,2 +02062_68,12 +01941_90,14 +01688_227,5 +00628_8,14 +01161_184,17 +02172_72,14 +008832_19,11 +01924_187,14 +01597_28,0 +00088_95,14 +01972_156,3 +00875_63,2 +00993_160,7 +014372_80,11 +012282_120,14 +00079_47,15 +014882_166,13 +00413_40,0 +010872_266,5 +01688_167,14 +00539_28,6 +016882_116,5 +00793_146,14 +01959_81,6 +01448_0,14 +007222_78,17 +01494_81,7 +00417_87,6 +00485_73,1 +00993_267,14 +01358_50,1 +00462_203,14 +01971_88,4 +01091_268,14 +01272_95,2 +01692_124,1 +007212_168,12 +01351_31,7 +01865_58,18 +00314_70,12 +004172_203,17 +007212_159,14 +02094_66,12 +01001_128,5 +00721_158,14 +005392_186,1 +01457_34,7 +01278_27,2 +005092_4,2 +01623_100,5 +00550_61,18 +01904_43,12 +003062_104,14 +00456_21,14 +00615_208,11 +01493_160,1 +01007_42,4 +00628_117,7 +00768_36,7 +01977_294,14 +00721_195,14 +017072_220,0 +01769_156,9 +00567_243,2 +01007_272,6 +00426_55,0 +00102_226,16 +01134_278,10 +016052_142,5 +00793_35,14 +00079_76,9 +00964_296,14 +00124_126,19 +008922_35,0 +000242_9,2 +008482_115,17 +00709_76,19 +01119_3,14 +021462_123,11 +00729_43,14 +02028_24,15 +01330_124,18 +014232_103,0 +00730_101,14 +00158_292,5 +01882_46,11 +01092_260,17 +01688_155,14 +00390_94,11 +00111_56,17 +01763_268,4 +017482_62,0 +02057_100,12 +007762_91,14 +02187_181,16 +01948_123,13 +019242_47,14 +01201_73,11 +01161_207,17 +017672_32,14 +012562_75,12 +000792_295,9 +00550_38,18 +00453_149,9 +018342_143,8 +01769_30,2 +00783_234,5 +00793_212,14 +02162_13,14 +01968_11,14 +01929_21,0 +00964_21,14 +00314_158,0 +01145_183,4 +000232_107,5 +00128_198,4 +00677_32,14 +01046_74,7 +00408_43,1 +00102_262,16 +01834_55,8 +00490_114,2 +01962_28,0 +01065_82,18 +014882_6,13 +00729_45,14 +00747_59,4 +017672_260,14 +00577_114,14 +021622_63,17 +00426_24,0 +005092_92,2 +01493_47,11 +01408_280,14 +01431_98,11 +014122_10,0 +018772_103,4 +017072_40,2 +012282_1,14 +019412_64,14 +019712_66,12 +01706_98,2 +01108_45,0 +00993_90,7 +01407_43,2 +00456_22,14 +00681_73,14 +00674_135,14 +01968_66,7 +007832_16,2 +01925_288,8 +019592_22,6 +016052_276,11 +021912_12,7 +00615_227,11 +004082_136,1 +01541_43,5 +01941_91,14 +00287_139,4 +005392_244,1 +005092_43,2 +01925_220,8 +018652_39,18 +01909_183,4 +02186_100,14 +01578_107,14 +01091_44,6 +01497_3,5 +019412_61,14 +01161_131,17 +00011_75,12 +018132_118,11 +01427_66,17 +00124_176,0 +01366_28,17 +01087_20,14 +01877_65,4 +01408_145,14 +00232_114,13 +01839_122,11 +00747_19,6 +016922_149,14 +01145_98,4 +01145_95,4 +02187_68,16 +01968_73,7 +00535_101,12 +02138_191,13 +01201_8,14 +01409_74,0 +02191_115,14 +01956_52,15 +01145_70,4 +01813_58,11 +010012_31,2 +00567_239,2 +01813_141,5 +02062_130,4 +01272_237,2 +00567_98,5 +01971_158,2 +01065_86,18 +00474_16,2 +017072_113,1 +01977_242,8 +01065_16,11 +009512_90,0 +01925_286,8 +013302_129,9 +00761_176,3 +00709_67,19 +006092_31,11 +00840_196,7 +00935_110,14 +00453_212,9 +01423_44,2 +02042_13,14 +014882_175,0 +005392_106,1 +01145_257,4 +007182_46,19 +00503_130,1 +01962_69,0 +02162_112,1 +011612_87,17 +01814_194,11 +00783_128,12 +01118_72,7 +01692_98,1 +021462_143,14 +00228_13,14 +01092_262,17 +00065_258,12 +00475_51,9 +00916_9,2 +018772_234,4 +005062_76,6 +007092_247,19 +000092_217,0 +01769_157,9 +017752_68,12 +02187_246,16 +012402_268,2 +00577_73,7 +019252_6,14 +00474_51,2 +00793_82,14 +002752_91,12 +019592_70,6 +00442_294,4 +00438_176,2 +00450_163,14 +01428_7,14 +01924_49,14 +00228_57,11 +01448_115,14 +01001_2,2 +02186_37,5 +00538_7,14 +00566_19,14 +012562_43,4 +01568_95,2 +019712_31,2 +01134_285,10 +021622_110,1 +01087_280,5 +00721_84,14 +00041_83,12 +01814_105,11 +004532_13,1 +000242_102,2 +00550_126,14 +009162_181,2 +001022_100,16 +00102_122,16 +016842_56,14 +00538_112,1 +00578_36,1 +011772_17,4 +017072_76,0 +007092_47,19 +01941_254,14 +009162_194,2 +01605_149,5 +00660_207,0 +02021_73,11 +009642_163,8 +02138_23,2 +01488_103,13 +010012_45,4 +011612_93,17 +009622_5,16 +01261_28,2 +009642_40,6 +01457_35,7 +01684_20,14 +018772_182,4 +01488_101,13 +016092_29,17 +00462_47,12 +00485_76,1 +018772_178,4 +01688_201,5 +00024_113,2 +02172_208,14 +004172_96,6 +00041_10,2 +01488_222,0 +010872_293,5 +00703_101,11 +01698_40,17 +00979_120,0 +01971_107,12 +01219_54,5 +01058_1,2 +016432_42,12 +00438_298,12 +01865_48,18 +01228_160,14 +01909_101,2 +007212_204,14 +004082_271,13 +01707_291,7 +01623_82,11 +020572_198,3 +02186_63,5 +013302_42,9 +018342_165,8 +018772_281,4 +016432_74,14 +005092_21,2 +017752_131,12 +02187_75,16 +01091_116,5 +00840_177,7 +01058_46,2 +00065_212,12 +00981_80,11 +012282_99,14 +01045_185,4 +01901_59,0 +02027_119,14 +01119_68,11 +00102_171,16 +01971_294,12 +02127_239,17 +01692_16,14 +01134_198,10 +011612_127,17 +01509_76,0 +01509_216,0 +00957_23,4 +00462_141,13 +00935_59,7 +00417_68,17 +00588_230,2 +00024_89,7 +00783_223,5 +016932_66,0 +01228_257,14 +016882_266,5 +00993_94,7 +021462_157,14 +02027_136,14 +00276_30,11 +00841_27,12 +00450_101,13 +00282_64,5 +01091_18,12 +015972_62,0 +00417_64,17 +01431_274,11 +00615_6,11 +01706_130,2 +01929_213,14 +008372_81,11 +016882_179,5 +021622_2,14 +01007_80,0 +005392_11,6 +00280_252,14 +00588_207,12 +017752_60,2 +00730_40,18 +00935_19,7 +01423_233,12 +00747_57,4 +00296_46,7 +00408_207,11 +007212_40,14 +02138_127,8 +021722_11,14 +01331_44,17 +017232_86,15 +01971_42,2 +00509_115,2 +01693_261,0 +017752_46,2 +00462_69,13 +02187_41,16 +01182_119,14 +02062_112,4 +00350_69,2 +014882_32,0 +00475_64,9 +017072_108,1 +01007_233,0 +00730_12,14 +01941_188,14 +005392_119,1 +02127_34,2 +005502_18,5 +00934_16,9 +004532_74,9 +009162_14,2 +01909_206,12 +01853_23,5 +00964_249,4 +00615_229,11 +02062_54,2 +00935_83,7 +016932_144,0 +017232_215,15 +00088_19,5 +02030_272,16 +01488_212,0 +001022_164,16 +012402_203,12 +011612_258,17 +01834_282,8 +018772_277,4 +00228_94,11 +017692_160,9 +01007_219,0 +00280_33,12 +004172_79,17 +00761_272,3 +00730_49,18 +01804_24,4 +00438_282,12 +00505_97,12 +01971_195,12 +00660_154,0 +01605_195,11 +001602_177,1 +016932_287,0 +00009_217,0 +00768_1,14 +009512_81,0 +00102_228,16 +01568_169,2 +001112_17,14 +00417_172,6 +01578_86,14 +01058_12,2 +00793_72,14 +005282_1,2 +008252_70,12 +02012_5,14 +01877_277,4 +012282_14,14 +01423_230,12 +01119_86,11 +021462_4,14 +01044_280,4 +007292_150,14 +01092_115,17 +00158_111,11 +00312_37,0 +007832_197,12 +01108_29,15 +005392_65,1 +001022_215,16 +01283_54,2 +00539_10,6 +02054_54,2 +00957_52,2 +00841_13,14 +00761_241,3 +01605_281,11 +00475_230,1 +01087_108,5 +02186_80,5 +00009_123,0 +00720_29,0 +016922_11,14 +01103_71,14 +012562_38,4 +00681_12,5 +01045_90,4 +00160_96,1 +001242_143,19 +00825_47,4 +008402_181,7 +00697_72,4 +017672_233,14 +01748_77,0 +00848_20,14 +01101_58,5 +01763_195,4 +019042_108,12 +001022_113,16 +018392_67,11 +00628_20,7 +00916_91,2 +00242_94,12 +004082_237,11 +00793_34,14 +004082_268,13 +01488_105,0 +02138_168,13 +00550_66,18 +008482_28,17 +017692_110,2 +01814_294,11 +008402_81,2 +000792_201,9 +016882_90,5 +00475_280,1 +01877_224,4 +017692_55,9 +01509_126,0 +01423_234,12 +019042_26,2 +00158_98,11 +01184_68,5 +00025_77,17 +01333_21,2 +00567_187,5 +016052_222,11 +01134_187,10 +017232_234,15 +01578_75,14 +00276_83,11 +00158_246,5 +00438_227,2 +001112_8,14 +018342_44,8 +00128_176,0 +008402_202,7 +01210_270,9 +00825_22,2 +01972_6,2 +00102_7,2 +01578_50,14 +01775_34,2 +016932_214,0 +012722_275,2 +01688_131,14 +01045_269,4 +017232_238,15 +01423_1,2 +01748_29,0 +015972_50,0 +00607_66,5 +01909_80,12 +01219_132,14 +01001_247,5 +00350_74,2 +018392_180,4 +00539_45,6 +020052_130,11 +00453_64,9 +02127_253,17 +013332_27,2 +021722_48,4 +008252_14,4 +02172_79,14 +01351_152,2 +021722_128,14 +005092_150,2 +00761_128,14 +012402_59,12 +007832_85,17 +00979_105,1 +00981_122,14 +00916_160,2 +00840_120,7 +00867_111,0 +01814_32,5 +00490_32,2 +01578_136,14 +01145_161,4 +01707_13,2 +01045_204,4 +013302_201,1 +00124_191,0 +000252_16,17 +00761_141,14 +02146_33,11 +005392_204,6 +01941_264,14 +01182_111,14 +005502_65,18 +010652_0,14 +01412_65,0 +007292_165,14 +00505_80,5 +00539_66,1 +005392_5,6 +01431_60,11 +01814_132,5 +01437_73,11 +01578_234,14 +005392_179,13 +01865_113,18 +02054_57,2 +02191_7,2 +00566_117,8 +012282_38,14 +007222_114,17 +01087_173,5 +01407_12,2 +01707_118,1 +016882_70,5 +00292_1,11 +00158_228,5 +01134_47,10 +00065_226,12 +01087_261,5 +014372_141,11 +00453_132,9 +01582_53,2 +00535_4,2 +017072_174,4 +008832_76,11 +00124_36,4 +021722_117,14 +01278_235,2 +01834_33,6 +02187_8,11 +007832_106,17 +00467_35,11 +01748_18,0 +009642_110,8 +00567_142,5 +02177_60,12 +01723_146,15 +021722_167,14 +00506_131,2 +01001_250,5 +01839_127,1 +011612_183,17 +00242_85,4 +00883_45,11 +015972_2,14 +01007_48,5 +01688_66,5 +00276_35,11 +021722_175,14 +02138_73,12 +01145_236,4 +01058_4,2 +017072_299,7 +019242_83,14 +01191_190,14 +01366_127,5 +011912_36,14 +01924_78,14 +00505_63,1 +00768_41,7 +008482_137,14 +014122_42,0 +02127_47,2 +000232_35,4 +010912_91,0 +00761_185,3 +00079_54,9 +02030_192,16 +01901_124,0 +018132_102,11 +00566_63,8 +01877_183,4 +00721_216,14 +01145_120,13 +00128_25,12 +00688_14,2 +00709_287,12 +017482_39,0 +01408_21,14 +01101_50,7 +005282_173,0 +009642_71,3 +01924_1,14 +010012_295,5 +00025_76,17 +007292_137,14 +01698_53,17 +00730_35,18 +02005_57,11 +00567_165,2 +01119_32,11 +01541_40,5 +010912_1,2 +01145_110,4 +001022_258,16 +00333_108,4 +01092_154,6 +007092_147,5 +008372_119,11 +01813_75,11 +004082_117,13 +00552_68,7 +01977_228,8 +020572_40,2 +003122_3,0 +01909_171,12 +01423_68,4 +005092_27,2 +02005_192,11 +00350_254,9 +00453_26,9 +00793_62,14 +01977_159,8 +00475_4,5 +01948_194,13 +01941_162,14 +005392_79,1 +01144_172,2 +01623_48,11 +004082_65,1 +00474_272,2 +019242_199,14 +02162_11,14 +009642_100,8 +01457_59,7 +006742_125,14 +01941_239,14 +00124_91,19 +00979_116,1 +01240_43,2 +007182_61,19 +02042_125,0 +008402_276,2 +00280_219,4 +01769_254,0 +00720_4,0 +01007_30,12 +01812_104,2 +018392_52,11 +01702_32,14 +01622_5,14 +00730_5,14 +00102_148,16 +010012_234,5 +01158_149,4 +009642_37,6 +01134_49,10 +012722_28,2 +01909_181,4 +00024_106,2 +001602_131,11 +01210_100,6 +01763_210,2 +01769_264,2 +01609_37,17 +018772_114,4 +01191_62,7 +004672_20,11 +00023_5,2 +01366_60,17 +01578_224,14 +005882_219,12 +01161_88,17 +02005_172,11 +011082_43,0 +00408_275,1 +01748_91,0 +00566_129,8 +017692_182,2 +00426_56,0 +01161_287,17 +00296_81,7 +02042_47,14 +01909_7,2 +00697_37,2 +00793_93,14 +009162_121,2 +01909_120,2 +00867_94,5 +01877_48,4 +016432_20,12 +018122_70,4 +00615_53,11 +01879_34,4 +00546_125,3 +01981_102,5 +001022_94,16 +02186_66,5 +01145_30,2 +00577_6,14 +02138_177,13 +00601_50,6 +00539_185,1 +00065_246,12 +01210_249,9 +01578_113,14 +01228_204,14 +017692_132,1 +00158_248,5 +007292_18,14 +00535_218,0 +01001_83,5 +00390_16,2 +00181_40,0 +007832_280,5 +01240_73,12 +02187_187,16 +000092_54,7 +00875_56,2 +00841_64,14 +00025_0,17 +00505_104,12 +00772_57,7 +00124_229,0 +00159_28,0 +004082_71,1 +01408_67,14 +021722_137,12 +01278_64,12 +01087_67,2 +00408_46,1 +016052_127,5 +01423_228,0 +00503_24,6 +00282_79,11 +02049_163,13 +004082_99,11 +01165_95,5 +005062_82,6 +00964_109,8 +00628_139,14 +00333_137,2 +018132_154,14 +015972_7,14 +00993_145,7 +008922_81,2 +02030_35,14 +01829_38,4 +010012_287,5 +01493_34,11 +004172_26,6 +017672_120,14 +01643_60,4 +01953_248,4 +012562_115,14 +018342_69,8 +00660_13,14 +019242_87,14 +00916_281,5 +01272_243,12 +021462_171,14 +00628_36,7 +009622_0,0 +00916_96,2 +00841_7,14 +019042_144,12 +009162_238,2 +02138_195,13 +00242_277,4 +008402_103,2 +00615_76,11 +019412_99,14 +01748_15,0 +005502_131,14 +02030_275,16 +02138_117,4 +00718_75,19 +00417_2,14 +02005_246,11 +02049_158,13 +01493_29,11 +018772_99,4 +00848_135,14 +01490_45,7 +02138_106,4 +00462_213,14 +00783_149,2 +02177_25,4 +00567_69,2 +02186_40,5 +01177_115,14 +001022_133,16 +00721_64,14 +02094_121,12 +00485_99,1 +018122_63,4 +012402_61,12 +017022_56,2 +00597_10,14 +00509_211,12 +01853_24,5 +00390_80,5 +007212_12,14 +017692_269,2 +00181_6,14 +007292_78,14 +00783_240,5 +01972_178,13 +010912_28,12 +01775_173,12 +017482_55,7 +01956_67,14 +02057_194,3 +01048_86,14 +00964_93,8 +00438_191,2 +01929_216,14 +018652_76,18 +00772_81,5 +00128_95,4 +02054_9,2 +01971_155,2 +00417_29,6 +01087_114,5 +005502_25,18 +017752_135,12 +01330_85,1 +014232_114,0 +018342_214,8 +018342_112,8 +005882_228,2 +02054_30,2 +01145_146,4 +00505_130,12 +014882_176,0 +00232_7,14 +005392_43,6 +021722_209,14 +00041_153,7 +01977_231,8 +01007_7,2 +00535_99,12 +00079_112,15 +01408_168,14 +01812_29,4 +00506_25,2 +01488_175,0 +00181_110,0 +00296_36,7 +00688_75,5 +016052_210,11 +01412_75,0 +01948_70,13 +01448_1,14 +00426_160,12 +00503_228,5 +018772_246,4 +017672_159,14 +00314_138,0 +01191_113,7 +018772_61,4 +000092_68,12 +014272_27,17 +01509_20,2 +00709_69,19 +017692_185,2 +016052_12,14 +01351_135,7 +00552_35,7 +02127_127,17 +01272_225,4 +00674_41,14 +01877_228,4 +00566_168,8 +01813_114,11 +02030_266,16 +012282_61,12 +005282_113,2 +01981_70,5 +01706_267,2 +00275_70,14 +000242_17,2 +00761_81,12 +00242_67,4 +01158_110,4 +01953_0,2 +00730_107,14 +01605_23,14 +00475_245,9 +00287_245,4 +00607_138,14 +01210_183,6 +00709_78,19 +01161_51,17 +00660_198,0 +01046_32,7 +01431_227,11 +02172_110,14 +01108_77,14 +01948_135,13 +00228_121,9 +00916_38,2 +005282_205,0 +00124_240,0 +001602_192,11 +00535_17,2 +01134_9,16 +01707_100,0 +00417_99,6 +00232_53,4 +00011_15,0 +01201_68,11 +007292_74,14 +01929_85,0 +00021_56,3 +016982_4,14 +004082_153,11 +008832_9,11 +00729_77,14 +01431_23,11 +02054_163,12 +019042_106,12 +01959_16,6 +01144_148,2 +01261_13,2 +005392_36,6 +019242_200,14 +000232_115,5 +00490_90,2 +00232_148,4 +02005_99,11 +00474_289,2 +01953_83,7 +008922_98,2 +01953_108,4 +016052_119,5 +00535_84,4 +012402_135,12 +01877_161,4 +021722_3,14 +00721_108,14 +009642_257,14 +01330_268,15 +008922_62,2 +01767_8,14 +019412_188,14 +02146_17,14 +017672_16,14 +02127_87,17 +00088_51,5 +02146_139,14 +01959_14,6 +01769_50,5 +00677_73,14 +00567_42,2 +012282_239,14 +00688_31,4 +01494_104,14 +00528_143,4 +01948_133,13 +01330_214,6 +01968_90,17 +018342_106,8 +00485_173,1 +00578_45,4 +00390_41,5 +014232_84,0 +001022_230,16 +002802_59,2 +02021_4,14 +008482_12,14 +00957_4,4 +00721_179,12 +01814_56,5 +00506_89,4 +01981_77,5 +00601_129,14 +00964_61,3 +001242_199,0 +01007_159,13 +00783_207,2 +00453_264,9 +017072_252,7 +02062_62,2 +010912_167,0 +00292_34,11 +00550_75,18 +00128_147,2 +01707_79,0 +01184_87,5 +00475_274,1 +00697_35,4 +02162_99,6 +011612_95,17 +00417_190,17 +014372_244,11 +00567_174,2 +01158_84,4 +00450_62,4 +01775_108,12 +01191_95,7 +00721_215,14 +00875_59,2 +001602_174,11 +00287_152,15 +02172_130,14 +019252_289,8 +010652_71,18 +01977_283,14 +00333_45,2 +01134_78,10 +00408_239,11 +007182_38,19 +002802_242,14 +01228_57,12 +02027_22,18 +019242_154,14 +00979_61,1 +000232_44,6 +00232_151,14 +00475_84,9 +00102_211,16 +020052_158,11 +017072_96,0 +01769_82,11 +02005_56,11 +018392_152,1 +01813_71,11 +00475_225,1 +01118_8,14 +00840_91,2 +01775_148,2 +01165_115,2 +01091_219,9 +01578_129,12 +01509_86,0 +00160_76,11 +01058_107,4 +005062_84,6 +01161_185,17 +018342_39,8 +00993_258,14 +01210_237,9 +005392_64,1 +01351_63,7 +02054_35,2 +01144_10,5 +00475_22,5 +008402_141,7 +011912_144,14 +00296_17,7 +01804_81,12 +017232_288,15 +00462_70,13 +01046_107,14 +007092_269,1 +01877_118,4 +00228_240,11 +01351_166,14 +01457_39,7 +00124_118,19 +02054_68,4 +02057_121,4 +02127_299,17 +00837_70,11 +01723_123,15 +01044_97,4 +01971_269,4 +00747_7,7 +018342_67,8 +01423_49,2 +00674_117,14 +01351_170,14 +00280_175,12 +016882_2,5 +01804_101,2 +00413_153,0 +01437_156,11 +017692_238,9 +00102_4,2 +01488_110,0 +016052_163,11 +01636_139,14 +02187_66,16 +00539_212,1 +018122_118,2 +00160_206,11 +007092_70,19 +014282_81,14 +01134_101,10 +01094_37,11 +020052_180,11 +01924_223,14 +01134_221,10 +012282_64,12 +007292_281,14 +00453_70,9 +01361_185,3 +018392_82,11 +00450_172,14 +00426_133,0 +01103_21,17 +00563_35,4 +02030_65,14 +00550_21,18 +01829_37,4 +00408_256,13 +01723_242,15 +021722_140,12 +00426_125,0 +007762_101,14 +02138_34,14 +01814_16,5 +01509_68,0 +00079_32,9 +00417_74,17 +01493_252,1 +01688_244,5 +00394_95,1 +00837_148,11 +009162_289,5 +00232_90,13 +02138_104,4 +02146_36,11 +00721_182,14 +01228_199,14 +01693_269,0 +00729_153,14 +00453_172,1 +01431_70,5 +017072_214,0 +016982_45,17 +00181_132,0 +01091_163,0 +00563_102,2 +00761_111,14 +000792_25,9 +01834_104,8 +01541_11,5 +00453_12,11 +00242_104,12 +004082_130,13 +01605_108,5 +01228_273,14 +00065_298,1 +01901_172,14 +00438_83,12 +01240_242,12 +021622_114,1 +01240_120,2 +007832_261,5 +021772_32,4 +01953_156,4 +021622_12,14 +01971_199,12 +01929_203,14 +012282_175,14 +011612_121,17 +006972_86,12 +02127_242,17 +01161_157,17 +01087_101,5 +00539_107,1 +00916_204,2 +00009_73,0 +007092_130,12 +01177_24,15 +01161_30,17 +00768_37,7 +01283_17,2 +01568_6,2 +001022_98,16 +01272_92,2 +01775_119,2 +017692_292,0 +009512_97,0 +01101_72,17 +01408_223,14 +02094_53,4 +01408_240,14 +001022_190,16 +00588_11,4 +01351_35,7 +00730_56,18 +00280_174,12 +00730_67,18 +010912_272,14 +01046_36,7 +00588_194,2 +010872_159,5 +00485_259,12 +00312_4,0 +00181_20,0 +01509_292,11 +00761_149,12 +01219_107,5 +009512_89,0 +01457_49,7 +014372_9,11 +004172_224,7 +02191_41,7 +01829_19,12 +02054_129,4 +012402_155,4 +02172_218,12 +001602_176,11 +00474_173,2 +00280_248,14 +00768_34,7 +021722_41,14 +01423_56,2 +00111_85,14 +018132_35,11 +01409_225,14 +018652_21,11 +01688_78,5 +02057_193,3 +01692_19,2 +00124_184,0 +00160_284,13 +00588_175,4 +00867_29,14 +01636_19,4 +010912_87,16 +001242_59,0 +00128_22,12 +01509_142,0 +00474_150,2 +018792_54,4 +018132_85,11 +018392_62,11 +016982_59,17 +002802_51,4 +01959_65,6 +00065_159,1 +005392_135,1 +00703_94,11 +00567_220,2 +00964_188,8 +00023_4,2 +01971_97,12 +00783_4,2 +018132_44,11 +012722_45,2 +014372_131,11 +006972_30,1 +01839_153,1 +01256_113,14 +019412_108,14 +00453_78,9 +01609_2,17 +01568_22,2 +01953_103,4 +017692_80,1 +00674_69,14 +00314_254,4 +00275_45,14 +01201_57,11 +012402_91,2 +008482_134,14 +02049_267,6 +003062_51,7 +007832_224,5 +02028_68,3 +01981_87,5 +00607_23,5 +01693_98,0 +010912_74,1 +000232_100,0 +01493_116,1 +010872_72,5 +01748_63,0 +008252_59,2 +02138_46,2 +01834_249,8 +00660_42,0 +00729_189,14 +00417_216,7 +010912_188,16 +004172_119,17 +01769_35,2 +00615_157,11 +01191_41,14 +014372_104,11 +006092_81,14 +00485_227,1 +01092_17,17 +01045_132,4 +00528_173,0 +00065_99,11 +005392_269,1 +00539_213,1 +00951_88,0 +000792_71,9 +014372_233,11 +012192_119,5 +018772_241,4 +01358_10,1 +00009_80,12 +00964_228,3 +005092_66,2 +01119_70,11 +00438_239,2 +012722_73,4 +00456_60,12 +012402_254,2 +018392_128,1 +00490_201,2 +018342_27,6 +00306_82,7 +00413_185,4 +00730_106,14 +00837_177,14 +005882_133,13 +00175_36,13 +00009_136,2 +00228_228,14 +01431_21,5 +00875_62,2 +015972_98,0 +01065_34,18 +019042_96,2 +00503_132,1 +016922_69,1 +00721_178,12 +00588_216,12 +01877_77,4 +001242_250,0 +00993_238,14 +009342_50,0 +01693_287,0 +00768_78,7 +010012_4,2 +01706_65,2 +014972_34,4 +00566_29,14 +00124_132,19 +01408_16,14 +01636_42,0 +01361_31,2 +01091_85,16 +00979_34,1 +019242_175,14 +00390_89,11 +00408_111,1 +00840_15,2 +00993_127,7 +00578_31,1 +00761_207,3 +00232_139,4 +00079_216,0 +00709_276,12 +01044_153,4 +008402_62,2 +00535_231,6 +00065_54,1 +01962_31,0 +00442_283,4 +01256_2,14 +00475_68,1 +01909_130,12 +005502_22,18 +00485_224,1 +01312_58,7 +00490_58,2 +01108_42,5 +00538_137,14 +014272_9,14 +01134_41,10 +01622_50,0 +00768_24,7 +00875_6,2 +002802_175,12 +02127_288,17 +01145_104,4 +00456_84,2 +01693_3,2 +01330_23,2 +00232_160,14 +007762_5,14 +00475_147,9 +018792_36,4 +01941_193,14 +00160_223,11 +01509_206,0 +01723_34,15 +01201_78,11 +00417_151,6 +01210_285,9 +01488_127,13 +01049_20,7 +011082_21,0 +001602_184,11 +00453_246,9 +00821_97,5 +01431_156,11 +00601_17,7 +014232_193,0 +01834_59,8 +018122_7,2 +01493_52,1 +00413_56,0 +01371_8,14 +01087_163,5 +018342_145,8 +00475_72,9 +002752_128,14 +00128_42,12 +01925_44,4 +00296_26,7 +02012_87,17 +00951_142,14 +00065_287,1 +01007_277,6 +01177_113,14 +01423_53,2 +01501_7,14 +01312_20,7 +00280_28,12 +00567_268,2 +01769_104,2 +01723_229,15 +00793_90,14 +00674_137,14 +012282_72,14 +00681_6,14 +00456_124,14 +021722_156,4 +02042_111,14 +01578_108,14 +00408_44,1 +004172_16,6 +000792_49,15 +00957_51,4 +00228_181,1 +01408_171,14 +00453_63,9 +012282_170,14 +01814_224,5 +00538_45,12 +00158_76,5 +00567_105,2 +017672_279,14 +00566_158,8 +00124_224,0 +00417_145,7 +00539_97,1 +01769_228,9 +01924_21,14 +00158_26,14 +01044_194,4 +013302_102,6 +015972_35,0 +01956_50,15 +017022_25,4 +00688_60,4 +010912_204,9 +01103_51,17 +019252_221,8 +015972_57,0 +011912_88,7 +009352_87,7 +01431_262,11 +016882_130,14 +00660_291,2 +01092_203,17 +001022_214,16 +01044_74,12 +01488_144,0 +01971_286,12 +013332_47,13 +021912_62,7 +012612_44,2 +00261_27,12 +00761_109,14 +00490_60,2 +019252_99,3 +00867_131,17 +00025_28,17 +01901_25,0 +00718_112,19 +00475_260,9 +00552_11,2 +011912_118,7 +017672_187,14 +00951_9,14 +018342_171,8 +00875_10,2 +00546_23,14 +02057_156,3 +010012_54,2 +01490_16,7 +00456_128,12 +01941_34,14 +00456_12,14 +01431_71,5 +01201_18,14 +007092_180,19 +01007_100,0 +010012_114,5 +019252_45,12 +011612_138,17 +00607_71,5 +02162_20,14 +00413_198,2 +00009_138,2 +00607_114,5 +00793_98,14 +01853_126,14 +01775_164,12 +017752_165,12 +017072_152,4 +00453_111,9 +01045_200,4 +018772_76,4 +00442_97,2 +007832_111,17 +01423_257,2 +001242_67,4 +016982_66,17 +01045_229,4 +00840_220,7 +01408_25,14 +00287_197,4 +01044_87,4 +004082_152,11 +009642_42,6 +00159_1,0 +01834_293,8 +00417_73,17 +00688_25,2 +01636_102,0 +01046_25,7 +007832_133,12 +01622_128,14 +02127_220,17 +00408_146,11 +01977_106,8 +00158_46,14 +02146_151,14 +01494_88,14 +00601_84,11 +00528_5,2 +01972_273,2 +00660_93,0 +00408_98,11 +014232_192,0 +01877_219,4 +01707_202,0 +01929_69,0 +018772_212,4 +017072_126,7 +01228_137,14 +00506_15,2 +01161_63,17 +00503_122,1 +00417_245,6 +01626_61,7 +017752_43,12 +01431_68,11 +00916_95,2 +01568_170,2 +00729_68,14 +01145_220,4 +010652_70,18 +00485_211,1 +000092_27,7 +00993_161,7 +019242_163,14 +02054_23,2 +00503_41,6 +00588_25,4 +01371_50,14 +010872_77,5 +01228_295,14 +012402_182,12 +00242_237,12 +00065_78,5 +00730_118,14 +00703_42,11 +01001_76,12 +00124_226,0 +00160_111,1 +01361_49,12 +01904_6,2 +01929_73,0 +01409_5,14 +01272_127,4 +01769_40,2 +01158_65,0 +00296_115,14 +01688_268,5 +01834_256,8 +01058_154,2 +012282_67,14 +012722_144,4 +007832_183,2 +014072_44,2 +00951_38,0 +00505_203,17 +000232_71,3 +01814_212,11 +007832_5,2 +01582_14,7 +018772_195,4 +01044_189,4 +00825_89,2 +010912_256,2 +00825_61,12 +008402_5,2 +00456_190,14 +01904_86,4 +01283_53,2 +008402_91,2 +021462_76,18 +01092_66,17 +014372_16,11 +010912_107,0 +005062_117,2 +01408_207,14 +00292_44,11 +00287_222,4 +010942_71,11 +01578_40,14 +00563_46,6 +01240_31,2 +014232_177,0 +01409_121,0 +017232_132,15 +01948_197,13 +01839_167,1 +01240_238,12 +01408_68,14 +01693_76,0 +01834_95,8 +00783_200,12 +00228_90,11 +00567_288,2 +00128_278,12 +01723_30,15 +00453_168,9 +01804_131,2 +014272_13,14 +01509_55,0 +01145_262,4 +017672_38,14 +00916_70,2 +00993_137,7 +00453_79,9 +00875_48,2 +01597_105,0 +009642_97,8 +01688_186,5 +00941_20,0 +019042_41,12 +00588_0,2 +005882_85,13 +00848_134,14 +02146_84,18 +01501_19,4 +01723_60,15 +00597_48,5 +001602_127,1 +00242_259,4 +01091_252,2 +01924_68,14 +02172_201,14 +000092_250,12 +00009_90,0 +00674_108,14 +010012_129,5 +01509_169,0 +00535_100,12 +014372_204,11 +012402_245,12 +016052_107,5 +00453_175,1 +01049_54,7 +012402_201,12 +00287_227,4 +00776_35,4 +01929_89,0 +01882_19,5 +003062_14,14 +018772_125,4 +00821_101,5 +013302_160,9 +014232_195,0 +007092_182,19 +00840_170,7 +016922_79,1 +004532_29,9 +00438_111,2 +00505_202,17 +00490_268,5 +01941_228,14 +01865_1,14 +010652_107,5 +00394_88,9 +018772_232,4 +00588_173,4 +017022_21,12 +01423_137,0 +008372_183,14 +00408_80,11 +01948_47,13 +01437_127,11 +01813_6,2 +01437_168,11 +007212_36,12 +00578_33,1 +01977_42,14 +018392_190,1 +009622_62,3 +00490_273,5 +01045_258,4 +00390_42,5 +005392_142,1 +001602_48,11 +01045_206,4 +000792_287,9 +00993_179,7 +017672_155,14 +01191_60,7 +009642_287,14 +01925_39,14 +020572_57,2 +02062_56,2 +00382_131,5 +011772_18,4 +00158_127,5 +00841_11,14 +00181_43,0 +00041_95,12 +00697_29,9 +00916_73,2 +01331_47,17 +01636_128,14 +01493_104,1 +00021_144,4 +01568_129,2 +00128_34,12 +01769_47,5 +01834_267,8 +02012_52,17 +014282_14,14 +00475_265,9 +01693_120,0 +00124_217,0 +00102_11,2 +012192_91,5 +00228_51,11 +00394_0,14 +01977_153,8 +01901_24,0 +018792_84,4 +01707_33,2 +016052_211,11 +00993_199,7 +017232_168,15 +018342_99,8 +01948_162,13 +01091_175,11 +00462_109,13 +00916_112,2 +00747_62,4 +00475_281,1 +00703_40,11 +02138_285,14 +01706_57,2 +001022_288,16 +005282_8,2 +00729_203,14 +00453_204,9 +010872_11,14 +01692_40,2 +009162_178,2 +02191_94,7 +01929_39,0 +00660_172,0 +00124_68,4 +01953_38,2 +00993_207,6 +000792_64,9 +01643_11,14 +008372_97,11 +020052_128,11 +01904_14,2 +00566_287,8 +01493_218,1 +01813_81,11 +00721_129,14 +001602_221,11 +01177_117,14 +014122_52,0 +00242_265,4 +00628_50,7 +01049_0,0 +00528_62,2 +00282_71,11 +01643_42,12 +02138_144,13 +01428_56,14 +01814_78,11 +01500_5,1 +00242_149,2 +01101_15,14 +014272_90,4 +00578_28,1 +010872_299,5 +008252_40,12 +01001_161,5 +00729_180,14 +01578_8,14 +008402_256,2 +01769_76,9 +01787_18,13 +01361_246,15 +007832_171,2 +00276_9,14 +009352_93,7 +012562_55,4 +00916_64,2 +00848_28,17 +01941_97,14 +00333_122,2 +00453_11,11 +01578_149,14 +01804_79,12 +016932_249,0 +007832_21,2 +00848_146,14 +011772_120,14 +00413_226,14 +017752_129,12 +01087_276,5 +019412_37,14 +01971_202,2 +01925_267,8 +00681_49,5 +007832_62,2 +00825_11,12 +01049_36,7 +01962_22,0 +001242_139,19 +01048_19,5 +00761_233,3 +01437_102,11 +00158_216,5 +00747_32,9 +01688_172,14 +01091_174,11 +009162_33,2 +014372_182,11 +00722_77,17 +00709_62,19 +01834_157,8 +020052_31,11 +00287_98,15 +010012_281,5 +01272_212,12 +01814_247,5 +012402_266,2 +00729_123,14 +00567_34,2 +00124_121,19 +019712_205,2 +00287_144,15 +010912_24,12 +001022_240,16 +00474_56,2 +017482_94,0 +01045_135,4 +01597_87,0 +00550_15,5 +01812_13,2 +02172_13,14 +002752_54,14 +001602_84,11 +00660_208,0 +007832_178,2 +00535_211,5 +00456_1,14 +00538_22,17 +00023_121,5 +01007_276,6 +00160_43,11 +008482_86,17 +01092_1,17 +01228_49,4 +00747_68,2 +019622_48,0 +01941_231,14 +01278_85,4 +00964_83,3 +01877_169,4 +00793_162,14 +01948_196,13 +01423_92,0 +005282_101,2 +01977_134,8 +007182_110,19 +01698_78,17 +008252_72,2 +01261_16,2 +00485_105,1 +010872_121,5 +00825_83,2 +007832_18,2 +00438_71,12 +005062_88,4 +01775_178,12 +010912_58,1 +00506_43,2 +005092_28,2 +016922_61,5 +017072_269,7 +00535_86,2 +01971_257,4 +017672_276,14 +01763_291,12 +020572_10,2 +00848_43,17 +00128_86,12 +01358_13,1 +00957_15,13 +010872_144,5 +01723_118,15 +02191_100,7 +00159_12,4 +01045_235,4 +016922_116,1 +02049_244,3 +01087_13,14 +01161_5,17 +019412_46,14 +007092_90,6 +00503_60,6 +021722_151,4 +01623_20,14 +00453_131,9 +00552_91,2 +005882_192,2 +00275_78,14 +01941_41,14 +01058_108,4 +00242_109,12 +01184_88,5 +02138_17,14 +014882_233,5 +01977_22,2 +00102_181,16 +01839_96,11 +01698_89,17 +00408_194,11 +020052_150,11 +004172_269,1 +021622_104,6 +001242_172,0 +01228_128,14 +01091_50,1 +01331_68,17 +003062_85,7 +02005_113,11 +00024_40,7 +00535_85,4 +016052_157,11 +01813_98,11 +01972_80,3 +010012_207,5 +001242_223,0 +010942_112,14 +007762_73,14 +01184_42,5 +013332_8,0 +01688_195,5 +012722_216,12 +00453_91,9 +02172_149,14 +00158_252,5 +01636_32,0 +00228_254,11 +018392_178,12 +018122_19,2 +01330_147,9 +00566_150,8 +00228_31,14 +00413_28,0 +014272_33,17 +019412_41,14 +02042_69,15 +02057_161,3 +017692_81,1 +009162_46,2 +000792_46,15 +01948_35,4 +019242_44,14 +008402_178,7 +00993_212,6 +00280_108,12 +00408_174,11 +008402_273,2 +002752_1,14 +009512_36,0 +00837_129,11 +00578_16,4 +01706_113,2 +017232_282,15 +005392_182,13 +00840_37,2 +00333_147,2 +00282_76,11 +01144_55,9 +01488_128,13 +001602_297,13 +00426_138,0 +01046_19,7 +01145_116,4 +02177_45,14 +016882_39,5 +00041_26,2 +01909_173,2 +019042_27,2 +00609_56,11 +01366_69,17 +00505_45,2 +01161_159,17 +000092_182,2 +01763_126,12 +01366_111,17 +01437_17,11 +01134_175,10 +00242_163,2 +01626_26,7 +00350_88,5 +02187_150,16 +00729_11,14 +01925_299,8 +00124_208,0 +02138_129,8 +01312_100,14 +02162_23,14 +01101_107,1 +00450_97,13 +01046_62,7 +00350_36,14 +01448_111,14 +00128_43,12 +006092_42,11 +00160_229,1 +01971_98,12 +017072_39,2 +01103_49,17 +00232_10,14 +019592_18,6 +01361_286,15 +008402_42,2 +01865_28,11 +018132_67,11 +01407_11,2 +01330_134,6 +00951_23,0 +016052_47,14 +01865_23,11 +00840_135,7 +01431_297,11 +00503_239,9 +00242_115,12 +005392_193,1 +00768_82,7 +00709_173,19 +01706_55,2 +005882_167,4 +01953_247,4 +00490_69,2 +01361_232,15 +00280_226,14 +021622_10,14 +017692_217,9 +010942_105,14 +01045_74,4 +006742_0,14 +01578_239,14 +00426_61,0 +00722_75,17 +00772_68,7 +01769_37,2 +00417_6,14 +00772_72,7 +01693_143,0 +00867_128,17 +00615_187,11 +00079_100,1 +018652_93,18 +00079_82,9 +00160_175,11 +00528_97,2 +00721_219,14 +007762_78,4 +00957_70,4 +01001_129,5 +017072_2,2 +00102_116,16 +01968_40,7 +005392_1,6 +000792_134,9 +005092_205,12 +00102_207,16 +01330_271,15 +01636_60,0 +002802_7,14 +004532_218,9 +00011_82,12 +01448_68,3 +00453_258,9 +01256_46,4 +013302_67,18 +00296_107,14 +001112_82,14 +00841_4,14 +00025_83,17 +016922_1,14 +00721_139,12 +006972_17,9 +007762_7,4 +01272_120,2 +012402_249,12 +01692_108,1 +01834_133,8 +00023_193,2 +00417_198,17 +009642_193,8 +01877_36,4 +00024_102,2 +01702_30,4 +01494_59,7 +01351_91,7 +01924_15,14 +00333_7,2 +02054_72,4 +021912_87,7 +00628_76,7 +02030_19,14 +00350_28,14 +00768_77,7 +01184_90,5 +018132_86,11 +017072_243,0 +016932_196,0 +01929_185,0 +00232_68,13 +01007_33,12 +010872_39,14 +00242_212,4 +00102_87,16 +008402_246,2 +01457_30,7 +009352_72,7 +01929_136,0 +02138_249,14 +01901_80,5 +012402_188,4 +00158_153,5 +012722_184,4 +00408_253,1 +01428_2,14 +01087_293,5 +005282_65,2 +016932_234,0 +01698_100,17 +01723_157,15 +00417_287,11 +01804_42,12 +01622_52,0 +019252_4,14 +011772_51,4 +01118_28,7 +004172_169,6 +01763_132,12 +01953_190,4 +01578_22,14 +014272_15,14 +00615_62,11 +01228_206,14 +01448_56,3 +00021_22,5 +00280_94,12 +02027_27,18 +01493_157,1 +01423_253,2 +001242_105,19 +005282_112,2 +012722_70,4 +016922_111,1 +00124_235,0 +00538_61,17 +01457_43,7 +01145_263,4 +01767_21,14 +02042_104,15 +01769_51,5 +01925_197,8 +00615_137,11 +001022_57,16 +02191_38,7 +00314_92,12 +01361_50,12 +01706_202,2 +02094_15,2 +00453_210,9 +019242_43,14 +01437_213,11 +01839_70,11 +019252_212,8 +00761_56,14 +013302_193,6 +00009_166,0 +00546_59,4 +00158_18,14 +01457_18,7 +00160_214,11 +00160_276,3 +01092_18,17 +01240_79,4 +01925_129,3 +01256_62,4 +00607_144,14 +01045_3,2 +01688_248,5 +00628_112,7 +00840_86,2 +02138_203,13 +007092_282,12 +01091_137,5 +00539_98,1 +00563_26,2 +01134_186,10 +00783_198,12 +010012_110,5 +00535_125,9 +00287_12,4 +008832_39,11 +00538_78,17 +01437_50,11 +017072_61,0 +00124_215,0 +01688_217,5 +01045_128,4 +00578_74,4 +01948_27,14 +00951_78,0 +00588_184,4 +01448_35,4 +000252_80,17 +00025_6,17 +02062_67,12 +016982_42,17 +00453_253,9 +00462_123,13 +00228_76,17 +01091_172,11 +01707_116,1 +00566_120,8 +010912_4,2 +00306_38,7 +00232_16,14 +00848_105,17 +007092_158,4 +021722_55,14 +01948_186,13 +01161_189,17 +01101_147,14 +016932_230,0 +017232_275,15 +00528_207,0 +01877_58,4 +00552_81,7 +01101_167,14 +00124_195,0 +01684_50,4 +01626_130,2 +008832_38,11 +020052_133,11 +01981_130,14 +017752_29,2 +01408_69,14 +00840_111,7 +01161_7,17 +012722_269,2 +00718_120,19 +01437_113,11 +00681_70,5 +01929_81,0 +008252_13,4 +017672_161,14 +00539_165,17 +00475_202,1 +00456_156,14 +01977_218,8 +00577_105,7 +00228_295,7 +01119_22,11 +01134_199,10 +01769_211,1 +00718_92,19 +00023_6,2 +01924_84,14 +01219_108,5 +00916_201,2 +01361_147,3 +017692_158,9 +008402_194,7 +000092_146,7 +01431_74,11 +01161_29,17 +02042_71,15 +02138_176,13 +01361_39,2 +01092_233,9 +01769_299,5 +00535_108,12 +00232_33,12 +00124_133,19 +01953_293,2 +00065_151,1 +00848_33,17 +017022_86,14 +017672_39,14 +00981_40,11 +01925_37,14 +00934_30,1 +006742_136,14 +011612_240,17 +01787_67,9 +018792_82,12 +00761_40,14 +008402_77,2 +01981_128,14 +01877_203,4 +01272_147,2 +007092_183,19 +012282_154,14 +01366_19,14 +019412_44,14 +00535_248,9 +00660_44,0 +00519_129,7 +01049_1,0 +01058_127,12 +00333_6,2 +004082_155,11 +01330_30,12 +00718_83,19 +02146_108,18 +004172_244,6 +01058_100,2 +00438_17,2 +02012_88,17 +01578_250,14 +008402_124,7 +007292_32,14 +014232_139,0 +01108_50,14 +019252_164,3 +00413_222,14 +00916_1,2 +01101_44,7 +01103_15,17 +008402_286,2 +011612_276,17 +00181_14,0 +02005_142,11 +013712_19,4 +01412_91,0 +011612_268,17 +01119_57,11 +01636_134,14 +00840_222,2 +00867_28,14 +00681_55,5 +00438_246,2 +01941_205,14 +00408_205,11 +017692_36,2 +01101_135,0 +00566_222,8 +019592_23,6 +01981_69,5 +01145_57,2 +00503_236,1 +011772_68,15 +01509_185,0 +020052_67,11 +00438_226,2 +000232_0,2 +00607_6,14 +00761_295,3 +00546_180,14 +01087_197,5 +02162_1,14 +00102_260,16 +01165_91,5 +01605_232,11 +001022_257,16 +010942_43,11 +00577_34,7 +017692_107,2 +006972_39,2 +018392_43,5 +02191_64,7 +01228_198,14 +017672_277,14 +01092_55,17 +021462_158,14 +00065_283,4 +000232_181,2 +01972_101,13 +000242_47,17 +00280_247,14 +00721_148,14 +02049_55,3 +01101_170,14 +001602_219,11 +005882_122,13 +00333_35,2 +005282_175,0 +00601_20,7 +004082_246,11 +02191_34,7 +00390_52,5 +00159_76,4 +02187_109,16 +01092_187,17 +00009_238,7 +01688_153,14 +018772_290,4 +00539_133,1 +01001_101,5 +01924_128,14 +01007_14,2 +015972_90,0 +011912_146,14 +02162_100,6 +00993_9,14 +016842_38,14 +00841_28,4 +003062_79,7 +007222_61,4 +02057_55,2 +012282_92,14 +00417_228,7 +012722_156,4 +00128_85,12 +02054_79,2 +00615_41,11 +00287_190,4 +00567_236,2 +00761_214,3 +013332_11,0 +00916_272,5 +00475_174,9 +01775_54,4 +003062_20,7 +01366_152,2 +01904_38,12 +01488_190,13 +02172_216,12 +00718_130,14 +000792_80,9 +01256_91,4 +01427_27,17 +02012_68,17 +010872_101,5 +00490_278,5 +00394_57,17 +01351_82,17 +01219_72,5 +00287_287,4 +01977_206,8 +004532_290,9 +01431_197,11 +01692_116,1 +00025_37,17 +00539_242,1 +02049_274,4 +000242_56,17 +00892_39,0 +007212_112,14 +01101_131,0 +00025_75,17 +00021_21,5 +01087_170,5 +02012_67,17 +010872_128,5 +00408_105,11 +00506_136,2 +00282_75,11 +02062_74,12 +018392_111,11 +000792_99,1 +00408_63,1 +02049_73,3 +01568_243,2 +01272_62,12 +01240_211,12 +00021_31,4 +001602_206,11 +007832_291,5 +00408_88,11 +008402_69,2 +005392_10,6 +00503_194,9 +00793_282,14 +018772_15,4 +00390_86,5 +01366_110,17 +00783_236,5 +01953_32,2 +01210_200,6 +00287_182,15 +020572_128,6 +00462_37,14 +012612_60,2 +00124_44,4 +01145_148,4 +00552_83,7 +020572_188,3 +00567_141,5 +009352_36,7 +01261_103,2 +00079_115,9 +01007_35,12 +01210_257,9 +01087_19,14 +00160_280,13 +02012_21,14 +02172_39,14 +01877_121,15 +005392_282,0 +00597_63,2 +014232_126,0 +018772_121,15 +008372_14,0 +01605_20,14 +01044_238,12 +01182_82,4 +01408_120,14 +00730_64,18 +01161_240,17 +00535_28,2 +006742_29,14 +005062_90,4 +014372_93,11 +02042_130,0 +018772_247,4 +01045_183,4 +01814_71,11 +01769_200,0 +01428_59,12 +00350_101,5 +00761_242,3 +00292_0,11 +02062_34,2 +00065_49,1 +01769_213,1 +01509_62,0 +01497_33,4 +01412_36,0 +016092_22,17 +00280_37,12 +01177_106,14 +01431_22,5 +00761_130,14 +015972_60,0 +007182_4,2 +00607_36,11 +02005_41,11 +00538_103,18 +01087_53,14 +00442_150,0 +012192_108,5 +009352_11,14 +01158_10,4 +01409_32,12 +00546_118,3 +01813_74,11 +012722_166,2 +01007_120,0 +014272_37,1 +01488_146,0 +009642_50,8 +01693_100,0 +01412_4,4 +01272_109,2 +018132_23,11 +00159_90,0 +010012_125,5 +007292_13,14 +008482_63,17 +02057_205,3 +01909_31,2 +008372_112,11 +00475_236,9 +00546_32,14 +01408_142,14 +01693_252,0 +00883_48,11 +01493_20,11 +02127_132,17 +01431_226,11 +02146_50,18 +01879_10,2 +00011_66,2 +021722_65,12 +019252_205,8 +00275_152,14 +00535_189,0 +01605_211,11 +007092_169,19 +01044_159,12 +00783_122,6 +005092_32,2 +00079_251,9 +012722_145,4 +00941_3,19 +01707_246,0 +009642_219,3 +01087_155,5 +01834_61,8 +012722_75,2 +01007_37,4 +00566_104,3 +01228_101,14 +006972_18,9 +02049_269,6 +01839_81,11 +019252_169,8 +01948_102,13 +018122_69,4 +02030_273,16 +02172_89,14 +00065_237,12 +00009_118,7 +01118_38,7 +01094_33,11 +01256_59,4 +01103_105,14 +016432_97,14 +014272_131,14 +01948_61,13 +01001_102,5 +01431_207,11 +00761_236,3 +008922_7,0 +02094_74,12 +01925_36,14 +020572_21,2 +00660_275,2 +01044_140,4 +01144_187,2 +00306_75,7 +00709_170,19 +020572_181,3 +00413_139,0 +00160_8,2 +00539_57,1 +017022_63,14 +01578_227,14 +00159_80,4 +01509_89,0 +00535_131,9 +016052_279,11 +01578_79,14 +009642_72,3 +02005_27,11 +01161_285,17 +01103_45,17 +011912_75,7 +00615_140,11 +00390_62,5 +004532_227,9 +02042_45,14 +00124_88,19 +00408_215,11 +01706_297,2 +017692_188,2 +00438_240,2 +00456_42,4 +001022_269,16 +016882_3,5 +008482_108,17 +00485_158,1 +00065_207,1 +020572_90,12 +017672_15,14 +001242_213,0 +00438_21,2 +01925_246,8 +005392_176,1 +01879_91,12 +004082_296,11 +00821_133,14 +00535_87,2 +00413_175,12 +01044_26,4 +00681_64,5 +01925_152,3 +008252_5,12 +02187_56,16 +016882_74,5 +018132_62,11 +020572_66,2 +014232_234,12 +01087_235,5 +018132_108,11 +01493_139,1 +021622_94,12 +01412_82,0 +00394_73,17 +000252_2,17 +01184_108,5 +017672_162,14 +01045_19,2 +01877_242,4 +00102_216,16 +006092_52,11 +00009_130,2 +006092_64,5 +01145_115,4 +021912_92,7 +011612_189,17 +01161_193,17 +01240_107,12 +01134_92,10 +007212_162,14 +00535_216,5 +01948_10,14 +01145_113,12 +01904_156,2 +014232_71,0 +005092_144,12 +02162_35,12 +00840_175,2 +00041_101,12 +007212_243,14 +02062_86,4 +017692_120,0 +00438_58,2 +00242_164,2 +00697_101,12 +01769_73,9 +017692_115,0 +01972_244,6 +01272_52,2 +016922_102,1 +001022_195,16 +019412_273,14 +01210_246,9 +009512_8,14 +016922_117,1 +00490_212,7 +00350_130,9 +00783_217,2 +001022_141,16 +01929_56,0 +012282_174,14 +00041_147,7 +00962_73,3 +01494_10,14 +01145_254,4 +00228_198,9 +010912_139,5 +00615_176,11 +019042_153,2 +02012_95,17 +00674_27,14 +00729_165,14 +00417_3,14 +00438_114,2 +01210_156,6 +00438_66,2 +00509_97,12 +01972_274,14 +019042_5,2 +00160_87,11 +01813_108,11 +00102_121,16 +016932_6,4 +000242_63,7 +01091_178,11 +00506_27,2 +00628_136,14 +00697_18,9 +02030_193,16 +006742_31,14 +00709_209,19 +02049_212,13 +01366_53,17 +00747_50,4 +01568_78,4 +017482_4,11 +010872_291,5 +02138_53,2 +00485_53,1 +001112_66,17 +01977_168,8 +004172_237,6 +00438_228,2 +00287_148,15 +007092_9,19 +01767_160,14 +01101_59,5 +01219_83,5 +019252_41,14 +003062_98,14 +02172_139,12 +01256_82,12 +01361_103,6 +02172_257,14 +005282_84,2 +00490_41,2 +01058_87,4 +02127_102,17 +014372_25,11 +004172_51,17 +01813_55,11 +01493_131,1 +01272_56,4 +009162_207,2 +01312_103,14 +002802_179,4 +00314_207,12 +01101_36,7 +004082_224,11 +004532_202,9 +020572_52,2 +00688_15,2 +00287_228,4 +009512_30,0 +01812_103,2 +01087_68,2 +007092_250,19 +005502_48,18 +01707_133,7 +01048_87,14 +00837_6,14 +01210_22,7 +00566_59,8 +01101_101,1 +01330_55,18 +016052_277,11 +00438_203,2 +00490_287,5 +010012_127,5 +00509_47,2 +017672_139,12 +012192_59,5 +00158_276,5 +010652_114,14 +01568_213,2 +00261_11,2 +00453_164,9 +00102_142,16 +00597_26,5 +002802_247,14 +00181_148,14 +00509_38,2 +01366_67,17 +01161_262,17 +017692_133,1 +02030_299,16 +00566_259,8 +02138_139,13 +01493_64,1 +00124_185,0 +00490_263,5 +021622_85,12 +005092_74,2 +000092_282,4 +00011_116,12 +01219_128,5 +01968_5,14 +01046_51,7 +00394_82,17 +00503_278,6 +01144_185,2 +005282_17,2 +00519_152,14 +00503_229,5 +00577_35,7 +019622_121,0 +01814_204,11 +017692_275,2 +01812_85,2 +01330_144,9 +02054_225,12 +00703_120,14 +01723_162,15 +01001_265,5 +00280_131,12 +01283_74,14 +01804_7,7 +00128_52,4 +01643_68,14 +01330_111,9 +02042_138,14 +01882_29,11 +005882_67,13 +01605_173,11 +01767_164,14 +01834_143,8 +00597_68,14 +01045_18,2 +01977_279,14 +01134_177,10 +00275_26,14 +00729_211,14 +00539_183,13 +01240_178,12 +00474_74,2 +014882_227,5 +01007_66,0 +009352_4,14 +01909_39,2 +00628_52,7 +00280_105,12 +00232_2,14 +00275_66,14 +00566_184,8 +01707_262,7 +01091_7,2 +00875_50,2 +00615_34,11 +02012_73,17 +01044_72,12 +017072_165,0 +00505_238,14 +01144_159,2 +005092_224,2 +00550_48,18 +01457_73,14 +011912_142,14 +007832_289,5 +01853_44,7 +004532_288,9 +00535_190,0 +005092_169,12 +012722_41,2 +004172_103,6 +00539_145,13 +012722_124,4 +00768_20,7 +01409_93,0 +00721_145,14 +001602_100,11 +01091_231,7 +00793_207,14 +00426_119,0 +01812_67,4 +01769_293,0 +01361_195,3 +00232_77,13 +014882_83,0 +00628_86,7 +00065_281,4 +01412_68,0 +001242_68,4 +00578_84,1 +003062_44,7 +01578_39,14 +00442_72,2 +019712_270,4 +01407_35,0 +01488_176,0 +01210_28,1 +01812_1,2 +000092_248,12 +00783_184,2 +00333_128,2 +00964_298,14 +017022_50,2 +020052_216,11 +018392_53,11 +00840_67,2 +001022_110,16 +00674_47,14 +016932_88,0 +00485_249,1 +01775_72,12 +00934_52,11 +020052_206,11 +02049_31,6 +00566_10,14 +01541_48,5 +01767_190,14 +006742_23,14 +014882_41,0 +00761_122,14 +01509_57,0 +01769_10,2 +01925_71,6 +00981_91,11 +02021_66,11 +01959_52,6 +01763_230,2 +005062_119,2 +02186_76,5 +02062_15,2 +012402_185,4 +01814_220,5 +011612_198,17 +00417_10,14 +01437_86,11 +00916_114,2 +011612_118,17 +01351_26,7 +02021_7,14 +012722_169,2 +017232_104,15 +00041_69,12 +01707_146,1 +009162_187,2 +014882_169,1 +01431_11,11 +01968_108,14 +005502_130,14 +005882_229,2 +007292_28,14 +01707_124,0 +01693_50,0 +00567_246,2 +02030_148,16 +00228_7,14 +001242_57,0 +00024_91,7 +00382_79,6 +01101_66,17 +01272_194,2 +01605_31,14 +02042_115,0 +012282_288,14 +007222_85,17 +00993_280,14 +008402_22,2 +01431_215,11 +016922_15,14 +014232_1,2 +00408_166,11 +01493_114,1 +016932_296,0 +016052_154,11 +01839_186,1 +009162_199,2 +01240_88,2 +00867_42,17 +01145_65,2 +01953_105,4 +02005_218,11 +00840_80,2 +01597_93,0 +00935_114,14 +01775_39,12 +016932_34,2 +019622_89,0 +02030_69,14 +018792_73,0 +00438_258,2 +017072_63,0 +008402_123,7 +01977_234,8 +004532_72,9 +00916_156,2 +01904_7,2 +008402_294,2 +00566_46,8 +00539_155,17 +01904_59,2 +00709_149,5 +021722_57,14 +01001_131,5 +01331_38,17 +001242_249,0 +002752_161,14 +011612_209,17 +00601_81,11 +00024_115,2 +018392_58,11 +004082_229,11 +01312_19,7 +00840_118,7 +014372_281,11 +008832_69,11 +00837_101,11 +01953_207,4 +01578_169,14 +01144_191,2 +009162_98,2 +01261_114,2 +018342_93,8 +017692_154,9 +014372_178,11 +00875_11,2 +011912_14,14 +01962_11,0 +021462_140,14 +005092_233,2 +00776_14,4 +012562_12,14 +01767_123,14 +00462_89,13 +006742_27,14 +02005_257,11 +01578_200,14 +006092_82,14 +00158_85,5 +01219_97,5 +00088_24,5 +00228_297,7 +007832_27,2 +00232_31,12 +02049_123,13 +01834_255,8 +008402_230,2 +00718_131,14 +00280_253,14 +009352_115,14 +00128_108,4 +01929_155,0 +016932_298,0 +00979_9,5 +004532_203,9 +01909_19,2 +01361_69,4 +01134_213,10 +00503_252,9 +01748_37,0 +02191_61,7 +02021_70,11 +00867_152,0 +01972_56,3 +013302_2,2 +00456_110,4 +01191_2,14 +00660_141,0 +01427_4,14 +011772_24,15 +01706_164,2 +01924_104,14 +010012_259,5 +00768_65,7 +01228_74,14 +00438_276,2 +01948_166,13 +01968_74,7 +01977_148,8 +00567_232,5 +00528_178,0 +01488_228,5 +016922_76,1 +00840_40,2 +00729_74,14 +00729_148,14 +01688_35,11 +00023_17,2 +018792_113,2 +00009_42,4 +014282_10,14 +02162_87,12 +01366_107,17 +010012_3,2 +010012_11,2 +01049_33,7 +01623_75,11 +01702_74,14 +017482_89,0 +00175_7,12 +00350_217,9 +01191_15,14 +00979_123,0 +00474_160,2 +016052_191,11 +02042_23,4 +00024_38,7 +00660_85,0 +01775_176,12 +002802_176,4 +00232_87,13 +01144_73,8 +01977_191,8 +003122_16,13 +01161_96,17 +019242_185,14 +00128_59,4 +00102_190,16 +00761_158,6 +010872_258,5 +01769_84,11 +01045_31,2 +00158_299,5 +00228_169,9 +00394_77,12 +01361_260,15 +01698_77,17 +021912_45,7 +005882_134,13 +01256_35,12 +011612_76,17 +01707_129,7 +00023_112,5 +00450_108,13 +00426_153,12 +00505_128,12 +01879_25,2 +01161_107,17 +004532_156,9 +009162_15,2 +004082_252,1 +01437_124,11 +01909_159,2 +020052_106,11 +02127_265,17 +011772_25,15 +01330_97,9 +02146_148,14 +00709_281,12 +00837_162,11 +018392_168,1 +00175_48,17 +01409_67,0 +00519_111,11 +01101_67,17 +01769_171,0 +00160_77,11 +01490_4,14 +01118_3,14 +00848_64,17 +00709_130,12 +00296_86,7 +01853_78,1 +00485_18,2 +020572_62,12 +000792_180,9 +00761_256,3 +007762_31,14 +01706_254,2 +01972_62,3 +01494_34,7 +00964_222,3 +00538_32,1 +00867_125,17 +02030_44,14 +00566_116,8 +01182_33,0 +007292_282,14 +00951_138,14 +00292_49,11 +00509_161,2 +019622_32,0 +00426_118,0 +01423_248,0 +01929_204,2 +005882_227,2 +017692_178,2 +011772_37,14 +004082_226,11 +01941_186,14 +01091_124,5 +02005_131,11 +00417_102,6 +01210_32,1 +014232_174,0 +00314_160,0 +00413_151,0 +01814_109,11 +01091_76,1 +01723_40,15 +010912_163,0 +013302_197,6 +00453_43,9 +01839_193,1 +01972_24,14 +00453_252,9 +016882_243,5 +01092_112,17 +01977_74,3 +00181_142,14 +00660_272,2 +00703_48,11 +00957_30,0 +02030_10,14 +00474_285,2 +012722_237,2 +02172_156,4 +009622_87,3 +007212_21,14 +016922_2,14 +009342_12,9 +01272_132,12 +016052_132,5 +01437_128,11 +00503_231,5 +01500_25,6 +005502_33,18 +019252_115,3 +018772_176,4 +01278_240,14 +02187_249,16 +00426_141,0 +00474_174,2 +00474_263,2 +01971_216,2 +02191_19,7 +011612_280,17 +00597_44,5 +00539_153,17 +01261_1,2 +01330_82,6 +01814_9,5 +00450_197,14 +018132_60,11 +00761_258,3 +00615_164,11 +00025_33,17 +000232_154,6 +018132_76,11 +014372_66,11 +001602_283,13 +002802_185,2 +02042_6,14 +007222_130,17 +02191_25,7 +01981_117,5 +01045_273,4 +014272_11,14 +014372_34,11 +00729_279,14 +00417_152,6 +01161_48,17 +013332_38,4 +00821_145,14 +01981_78,5 +00578_100,17 +008402_257,2 +00242_24,2 +01366_87,17 +01904_64,2 +00761_259,3 +01948_108,13 +01103_80,9 +01134_290,10 +00296_83,7 +00567_35,2 +01636_82,0 +01622_27,0 +02172_235,14 +01001_57,2 +01087_34,14 +00390_71,5 +00793_179,14 +017692_296,5 +00102_249,16 +00275_24,14 +00709_134,12 +017752_0,2 +01763_216,12 +01853_3,14 +01431_175,11 +00453_9,11 +01145_14,2 +016432_103,14 +00426_0,14 +01925_9,14 +00314_56,2 +00916_146,2 +00840_55,2 +01767_32,14 +01702_60,14 +00426_97,0 +020572_167,3 +00783_233,5 +00730_52,18 +01256_20,4 +002752_87,14 +01065_31,18 +01904_33,2 +02088_2,0 +01865_92,18 +00426_62,0 +00935_1,14 +01145_202,4 +000792_269,0 +00456_16,14 +01941_93,14 +02186_14,14 +004672_19,11 +013302_113,9 +02094_159,2 +00615_141,11 +018342_43,8 +01877_103,4 +01366_93,17 +021622_74,17 +00688_27,2 +01228_98,14 +00601_95,0 +00783_16,2 +017232_89,15 +00578_59,1 +017022_20,12 +00681_23,5 +01692_38,2 +00276_32,11 +007832_129,12 +00709_150,5 +019712_194,12 +02187_244,16 +001602_28,5 +00079_289,9 +011772_70,15 +02138_84,14 +019712_277,12 +01605_238,11 +009642_143,8 +02186_7,14 +017672_209,14 +007212_43,14 +01091_109,0 +01001_138,5 +007212_145,14 +00840_253,2 +00023_97,0 +007212_41,14 +00776_74,14 +016932_299,0 +00506_21,2 +01568_191,2 +01361_7,5 +00566_61,8 +010912_221,6 +017672_238,14 +01228_17,14 +007092_83,19 +01091_149,5 +01087_251,5 +010912_156,5 +012402_270,2 +01829_15,2 +00442_128,4 +009162_252,5 +014882_188,13 +009162_48,2 +017752_132,12 +00566_15,14 +000092_173,0 +02138_122,4 +014282_22,4 +00681_79,14 +00475_120,1 +01045_251,4 +01134_124,10 +02054_253,2 +005502_51,18 +007292_202,14 +01707_182,4 +00538_122,17 +00287_280,4 +02049_250,3 +01767_167,14 +00442_142,0 +00538_48,4 +01087_292,5 +000092_73,0 +02030_61,14 +007292_99,14 +00232_135,13 +01101_35,7 +010872_298,5 +009642_296,14 +000792_244,9 +018122_85,2 +00160_174,11 +00768_93,14 +01448_15,14 +020572_14,2 +012192_123,5 +019412_110,14 +005882_94,13 +01813_99,11 +01693_38,2 +00509_151,2 +00979_3,14 +00011_81,12 +00597_0,14 +007212_10,14 +005882_208,12 +00837_151,11 +00821_123,14 +02062_84,4 +01568_54,12 +01977_193,8 +017692_196,2 +019242_21,14 +009162_72,2 +00079_26,9 +01045_231,4 +016922_63,5 +00768_72,7 +00228_123,9 +001602_270,13 +01145_15,2 +01058_109,4 +001242_181,0 +00722_7,17 +01767_188,14 +009642_272,14 +00159_13,4 +01763_38,4 +02094_16,2 +017672_222,12 +01582_63,2 +01219_65,5 +01408_219,14 +000092_198,12 +019712_199,12 +01941_9,14 +00102_252,16 +01488_178,0 +005882_232,2 +01184_74,5 +019412_80,14 +00519_138,7 +021722_14,14 +00660_243,12 +00181_135,0 +00709_228,19 +01045_169,4 +01853_77,1 +01698_98,17 +01578_242,14 +01409_29,12 +004672_27,11 +00124_40,4 +00292_6,11 +00350_138,9 +01509_283,11 +017072_225,0 +01968_94,7 +00837_181,14 +00730_111,14 +00426_143,0 +01210_69,17 +00577_72,7 +01582_85,14 +02028_4,4 +01953_60,2 +00128_45,12 +01925_178,8 +00681_13,5 +00519_141,7 +00793_228,14 +01693_171,0 +020052_266,11 +00088_13,2 +01929_183,0 +001602_258,13 +00111_72,7 +019592_55,6 +016882_212,5 +008922_57,2 +00566_187,8 +01948_154,13 +01431_269,11 +01693_173,0 +01804_21,4 +02162_136,14 +00567_99,5 +00485_67,1 +00660_51,0 +00528_91,2 +011772_30,4 +01688_55,5 +00674_80,14 +00159_57,2 +017072_137,0 +00453_296,9 +00474_60,2 +01493_199,1 +012612_54,2 +00394_84,17 +00783_94,17 +01092_145,17 +010872_294,5 +019242_229,14 +018772_35,4 +016922_148,14 +005092_168,12 +019252_187,8 +014882_123,13 +01769_29,2 +00825_66,12 +005392_150,1 +01767_168,14 +00475_58,9 +00242_187,12 +00539_278,0 +01494_8,14 +02127_41,2 +018392_66,11 +00390_85,5 +00102_13,2 +01423_119,0 +008402_6,2 +017752_126,12 +021722_226,14 +01493_42,11 +016922_75,1 +007292_97,14 +019712_202,2 +000092_56,12 +01775_90,2 +018132_82,11 +01582_84,14 +02030_8,14 +013712_6,14 +005092_83,2 +009162_260,5 +010942_113,14 +01046_46,7 +00567_43,2 +01814_61,11 +01091_79,16 +01437_108,11 +008252_37,12 +00417_231,6 +007212_247,14 +02021_105,14 +009352_68,7 +00539_204,6 +00566_230,8 +00709_30,19 +00552_39,7 +02012_81,17 +01044_4,2 +01161_116,17 +01877_128,4 +021912_73,7 +01165_88,5 +00181_50,0 +00282_20,7 +01834_125,8 +00793_55,14 +00079_57,9 +01228_274,14 +00102_195,16 +00681_52,5 +01431_121,11 +012722_139,4 +01108_15,14 +02028_59,15 +019252_292,8 +00578_119,14 +01972_225,3 +012402_17,2 +01693_119,0 +00722_40,17 +02062_144,4 +01723_292,15 +00450_196,14 +008922_33,0 +000092_175,2 +01103_60,17 +00607_21,5 +019242_162,14 +00503_117,1 +013302_260,4 +00730_46,18 +019242_161,14 +008252_62,12 +017752_50,12 +00709_28,19 +01924_57,14 +019252_217,8 +01494_78,7 +01261_74,12 +02094_161,2 +02172_229,14 +00563_101,2 +016982_103,17 +01763_233,4 +007092_262,5 +007092_195,19 +008402_255,2 +00314_178,4 +010872_295,5 +01839_100,11 +01210_150,6 +000232_80,3 +00475_152,9 +000792_172,9 +003062_80,7 +019712_88,4 +01702_38,14 +00729_234,14 +017072_210,0 +00079_31,9 +007292_112,14 +00333_47,2 +00287_142,4 +00506_18,2 +00287_150,15 +01045_87,4 +01904_113,12 +00442_81,2 +00314_229,12 +01001_218,5 +00474_4,2 +012562_90,4 +013302_117,1 +01972_68,3 +00159_63,2 +01488_6,13 +00697_11,12 +016922_138,5 +02146_11,14 +00588_193,2 +01272_60,4 +00964_136,8 +00539_285,0 +00456_65,14 +02005_97,11 +01929_55,0 +007762_35,4 +01409_122,0 +00442_36,14 +008402_28,2 +010912_257,2 +01509_64,0 +01165_64,5 +00282_4,14 +00761_284,3 +01407_9,2 +01145_20,2 +01333_11,0 +00916_154,2 +01118_79,14 +01763_200,2 +012402_58,12 +01568_96,2 +01853_53,17 +007292_242,14 +005092_165,2 +004672_4,11 +002752_7,14 +010012_97,5 +01228_96,14 +01119_44,11 +00964_227,3 +00979_28,1 +00023_80,3 +00450_91,13 +010872_145,5 +00065_29,17 +012722_38,2 +012722_77,2 +007092_228,19 +01775_6,2 +00577_49,7 +01509_251,11 +004172_154,6 +00382_23,7 +00509_145,12 +01184_51,5 +00821_44,5 +01814_6,5 +01087_14,14 +005882_46,15 +02138_278,14 +014882_65,13 +01707_132,7 +00350_251,5 +002802_86,2 +01706_204,2 +004082_157,11 +01622_103,0 +012722_48,2 +007222_120,17 +02005_137,11 +01865_61,18 +01948_138,13 +005882_148,13 +01948_48,13 +01877_40,4 +00841_93,14 +007832_74,17 +00408_255,13 +01972_57,3 +00413_9,14 +00474_40,12 +01049_24,7 +00841_94,14 +006742_10,14 +00175_47,1 +004172_170,6 +018792_52,4 +00181_5,14 +02030_204,16 +00024_2,2 +00462_115,13 +00957_55,2 +016882_293,2 +001602_122,11 +01568_40,2 +021622_5,14 +01145_87,4 +000092_26,7 +00768_95,14 +01240_271,2 +018342_115,8 +019042_44,12 +017752_44,12 +00314_126,0 +01977_274,4 +01693_106,12 +02062_110,4 +00993_222,6 +01904_32,2 +01494_82,7 +020572_61,12 +00709_146,19 +007212_194,14 +018392_72,11 +00721_205,14 +01007_52,5 +005502_41,18 +00660_170,0 +00567_40,2 +00793_213,14 +001242_44,4 +00681_4,14 +00935_95,7 +020052_276,11 +00485_157,1 +001602_14,2 +016052_237,11 +006972_52,12 +01941_242,14 +00009_23,12 +01877_246,4 +002752_132,14 +00021_40,3 +01541_5,14 +01707_6,2 +00509_32,2 +020052_186,11 +005092_151,2 +01330_118,1 +007092_15,19 +02127_80,17 +010912_30,12 +02172_40,14 +00964_276,14 +009162_223,2 +016932_273,0 +01688_241,5 +00175_77,4 +01145_288,1 +001602_52,11 +02012_31,17 +01007_163,13 +01437_85,11 +01191_49,2 +01001_251,5 +02062_26,2 +009642_105,8 +01605_63,5 +00350_258,9 +01693_167,0 +00282_18,7 +01045_79,4 +000792_44,15 +017672_114,14 +021722_141,12 +00566_273,8 +00158_258,5 +002752_52,14 +007762_67,14 +006742_94,14 +00021_127,4 +020052_119,11 +00597_21,5 +00840_84,2 +019712_271,4 +01605_30,14 +00065_14,17 +01707_52,4 +01877_24,4 +01437_152,11 +00314_186,0 +000792_254,9 +005282_3,2 +01182_68,0 +00276_34,11 +00128_96,4 +011612_79,17 +00841_47,4 +00964_66,3 +005392_171,1 +00485_167,1 +01049_30,7 +01692_25,2 +00023_95,0 +01134_216,10 +016052_79,5 +01092_64,17 +007832_221,2 +01361_43,12 +01941_118,14 +00158_58,14 +00306_58,7 +01145_267,4 +005062_53,4 +02054_208,12 +01924_171,14 +021722_229,14 +008402_118,7 +01161_73,17 +00729_99,14 +00776_54,4 +01330_265,12 +01210_261,9 +011772_72,15 +010872_89,5 +016882_202,5 +01953_10,2 +01688_43,5 +014272_103,9 +017692_197,2 +01219_137,14 +004082_241,11 +00609_65,5 +00306_66,7 +012282_231,14 +01622_112,4 +001602_241,1 +00280_25,14 +01177_85,14 +02062_96,4 +021772_31,4 +016922_19,2 +00841_77,14 +01568_138,2 +01509_211,0 +00124_83,19 +01929_205,2 +00350_10,14 +00088_94,14 +012562_3,14 +00417_170,6 +019252_271,8 +00408_221,11 +00883_63,11 +016842_26,12 +013302_262,12 +01431_251,11 +020572_175,3 +00793_234,14 +012282_195,14 +02186_97,14 +012402_150,4 +00721_214,14 +012722_85,2 +02027_134,14 +014232_239,2 +01431_293,11 +009642_30,14 +01493_154,1 +00282_70,11 +01812_42,2 +00023_145,6 +00287_122,4 +00350_158,9 +018772_261,4 +01509_161,0 +012562_26,4 +00566_131,8 +01407_28,5 +012402_16,2 +009512_60,0 +007762_14,4 +005282_168,0 +02172_131,14 +01956_68,14 +001112_18,14 +00079_155,0 +01201_106,14 +00065_124,1 +01834_171,8 +00276_103,11 +00660_200,0 +01437_206,11 +01929_222,14 +017692_49,5 +02054_44,2 +009642_165,8 +00456_47,14 +02057_204,3 +01219_118,5 +00935_17,14 +00519_23,7 +00697_49,4 +010012_232,5 +00761_48,14 +01953_260,4 +01161_145,17 +00535_11,2 +018652_98,18 +00867_12,14 +00837_158,11 +009512_32,0 +01626_125,7 +00721_32,12 +01409_139,0 +00456_180,4 +00128_162,2 +001602_19,2 +009352_84,7 +00951_127,0 +01182_90,13 +002802_192,2 +008482_87,17 +01804_124,12 +00462_96,13 +01091_197,16 +00124_59,0 +002802_241,14 +02005_202,11 +009162_247,5 +019252_87,3 +00607_110,6 +00242_158,2 +02187_156,16 +00124_197,0 +00722_13,17 +00333_160,2 +00519_122,7 +00783_58,2 +000092_87,12 +019412_5,14 +01007_178,13 +007092_174,19 +01333_25,2 +00964_265,14 +00280_241,14 +01925_89,3 +009512_28,0 +01981_136,14 +01191_11,14 +00697_78,5 +01688_95,5 +02187_137,16 +00453_156,9 +009162_34,2 +00615_183,11 +01622_79,13 +00674_100,14 +01622_126,14 +01804_102,2 +00892_3,0 +00408_297,11 +01408_98,14 +005392_213,1 +00456_184,4 +021772_23,4 +012722_121,2 +007092_277,12 +014882_221,0 +00840_19,2 +01256_79,12 +00674_20,14 +017672_94,14 +012282_190,14 +00011_44,0 +00158_124,5 +00729_144,14 +01366_29,17 +00703_36,11 +014882_102,13 +016052_73,5 +01971_263,2 +00503_133,1 +008402_291,2 +01688_208,5 +002802_36,12 +00102_166,16 +01929_63,0 +004082_121,13 +00333_64,2 +00128_23,12 +00079_4,9 +00350_66,14 +000092_222,2 +01409_19,14 +01707_200,0 +005882_196,2 +01769_217,9 +01330_74,6 +018342_235,8 +020052_285,11 +005092_117,2 +000092_2,4 +01959_46,6 +006092_57,11 +01769_120,0 +00528_112,2 +007212_155,4 +00761_157,6 +00628_29,7 +005882_36,4 +01909_53,2 +016932_239,0 +021462_152,14 +01972_250,14 +02138_240,4 +008372_175,14 +01494_33,7 +009642_174,8 +018792_97,2 +01636_66,0 +018392_161,1 +01707_45,12 +01688_263,5 +02049_225,3 +00934_2,1 +016882_297,2 +02021_82,11 +01953_255,4 +00848_149,14 +010012_94,5 +00009_163,12 +00825_34,12 +012562_15,14 +00506_20,2 +00783_116,17 +02049_187,13 +00768_89,14 +008482_47,17 +019412_113,14 +01427_96,17 +01358_5,1 +011912_103,7 +000242_72,7 +01423_102,0 +021722_192,14 +016092_34,17 +01775_67,12 +00475_241,9 +01972_17,2 +01578_204,14 +01968_31,7 +00490_253,5 +00102_61,16 +01597_100,0 +00721_54,4 +00528_68,2 +00588_70,13 +01001_239,5 +018132_80,11 +00442_271,4 +02030_102,16 +019412_228,14 +01959_30,6 +009642_179,8 +010912_98,0 +017072_157,0 +01409_44,4 +00417_50,17 +017672_213,14 +00730_20,14 +02027_36,18 +00615_22,11 +007832_176,2 +00609_57,11 +016922_0,14 +01578_49,14 +00566_212,8 +019712_206,2 +00503_64,6 +01877_280,4 +01909_145,4 +00394_6,14 +00528_45,2 +00280_146,4 +008402_86,2 +01044_52,4 +00841_25,12 +00417_104,6 +00848_42,17 +00021_95,4 +009162_58,2 +009642_35,6 +01622_118,14 +007292_31,14 +00588_92,13 +01330_112,9 +02187_155,16 +00867_151,0 +01158_89,4 +01924_241,14 +01431_138,11 +01901_142,5 +01092_110,17 +01688_144,14 +000792_230,9 +00408_162,11 +007222_108,17 +00296_112,14 +02172_116,14 +00840_287,2 +01693_253,0 +00453_86,9 +01366_77,17 +00729_40,14 +012402_240,12 +002802_162,12 +005502_117,5 +01509_274,11 +01904_152,2 +007182_126,5 +00079_175,9 +01144_108,4 +007222_99,17 +000252_69,17 +01145_128,4 +01240_269,2 +010012_267,5 +00546_81,3 +012402_208,12 +00228_20,14 +01278_214,2 +014372_128,11 +00490_295,5 +00588_96,13 +014072_21,12 +01065_5,2 +00875_30,2 +00175_62,0 +01953_194,4 +01865_122,1 +00539_283,0 +01972_94,13 +01092_108,17 +00935_104,7 +00837_182,14 +01977_113,8 +01272_38,2 +01361_242,15 +017672_55,14 +00124_232,0 +012402_21,2 +00578_99,17 +00840_250,2 +00009_127,2 +00023_86,4 +00607_88,19 +018132_29,11 +00848_122,17 +00079_183,9 +016052_172,11 +00825_3,12 +00287_59,15 +00505_84,12 +00232_168,14 +005392_145,13 +019712_156,2 +00981_10,5 +007212_94,14 +00102_88,16 +01144_18,5 +00413_114,0 +01001_286,5 +01219_131,14 +014072_30,5 +02146_100,18 +01962_105,0 +01812_98,2 +006972_45,2 +00160_11,2 +017232_43,15 +007292_244,14 +01210_105,6 +00314_197,0 +017692_86,11 +00957_16,13 +00314_212,4 +00475_166,9 +020572_129,6 +018392_56,11 +00287_199,15 +007832_294,5 +00535_243,6 +000792_251,9 +02149_40,17 +017672_172,14 +007212_215,14 +00505_204,17 +005392_299,1 +01228_294,14 +02054_98,12 +019622_95,0 +00539_249,1 +00578_5,14 +02127_24,2 +00287_170,15 +00505_24,14 +00688_78,4 +01953_152,4 +010012_141,5 +01457_7,2 +012402_120,2 +01228_265,14 +017022_58,2 +00772_96,14 +01578_12,14 +01256_74,12 +01423_153,0 +00535_156,0 +018392_20,14 +02030_76,14 +014122_59,0 +01361_28,4 +017232_1,4 +01953_48,12 +00546_194,14 +021722_246,14 +00993_235,6 +00462_75,13 +01103_85,17 +018652_104,18 +01210_5,17 +00677_93,14 +007182_121,19 +011082_68,14 +02028_19,15 +00079_224,17 +00438_27,2 +00296_28,7 +008372_153,11 +00417_168,6 +00413_49,0 +00485_62,1 +01578_81,14 +00382_21,7 +021722_68,12 +021622_66,17 +00709_37,19 +00567_249,2 +00776_67,14 +020052_86,11 +00350_131,9 +001112_28,17 +01767_262,14 +01210_199,6 +01177_65,15 +021912_15,7 +000092_154,12 +00282_33,7 +00539_290,5 +01597_70,0 +02030_240,16 +01409_176,0 +00102_283,16 +00275_157,14 +008372_92,11 +016882_269,5 +012722_50,2 +02057_157,3 +00768_94,14 +006092_22,11 +00964_221,3 +00916_134,2 +001112_19,17 +01787_57,9 +009162_291,5 +002802_93,12 +00979_129,14 +00567_52,5 +00438_295,12 +000792_239,9 +01568_156,2 +012402_184,4 +01045_253,4 +00793_186,14 +01371_34,14 +00413_80,0 +00413_83,0 +00490_181,2 +019252_29,14 +00761_267,3 +01177_102,4 +001242_80,19 +01431_46,5 +007092_271,9 +00957_38,0 +000252_36,17 +019042_158,2 +01501_1,14 +01210_281,9 +001242_100,19 +014122_8,4 +00009_190,7 +00867_140,5 +01134_218,10 +00232_145,4 +00467_43,11 +00350_189,5 +006972_104,4 +00722_108,17 +00350_242,9 +00628_131,14 +01814_146,5 +004532_98,9 +005092_50,2 +00538_72,17 +02027_64,14 +01488_123,13 +01228_25,14 +02146_1,14 +00892_89,2 +01044_181,4 +00721_136,12 +012402_209,12 +00438_269,2 +01437_236,11 +01423_166,0 +01636_117,14 +01568_17,2 +01240_265,4 +00935_7,14 +00314_13,2 +013302_291,9 +007182_40,19 +00088_55,5 +007222_103,17 +01568_204,2 +01118_25,7 +019242_82,14 +01500_27,15 +02054_292,4 +01092_205,17 +01953_187,4 +00538_79,17 +019412_3,14 +01568_85,2 +015972_81,0 +012612_58,2 +005392_287,0 +01643_43,12 +01256_55,4 +016882_29,5 +00261_48,5 +00485_125,1 +013712_8,14 +017672_264,14 +01941_4,14 +004172_219,7 +02027_11,17 +01814_147,5 +01048_39,5 +004172_13,14 +01767_290,14 +00041_62,7 +011082_74,14 +00442_82,2 +017022_26,4 +01210_84,9 +00674_83,4 +01692_22,2 +019242_212,14 +013302_124,18 +00232_52,4 +00875_76,2 +00124_205,0 +00509_210,12 +02088_21,0 +00287_292,4 +00628_90,7 +01763_1,4 +005092_142,12 +00709_277,12 +001602_272,13 +01330_78,6 +00567_175,2 +00916_32,2 +016982_10,14 +007832_6,2 +01331_74,14 +007292_212,14 +010912_123,5 +00333_52,2 +01977_235,8 +014882_59,13 +01049_42,7 +00722_114,17 +02049_138,13 +017692_293,0 +01956_43,13 +01145_295,1 +02049_185,13 +01488_4,13 +01493_283,1 +01092_196,2 +00535_239,6 +01814_88,11 +01959_61,6 +00490_72,2 +01814_275,11 +01330_148,9 +008922_24,0 +01702_14,12 +01609_38,17 +00681_17,5 +01769_219,9 +00722_140,17 +018792_51,4 +00615_170,11 +016052_243,11 +00566_127,8 +01953_168,12 +00709_265,1 +00660_256,14 +00688_7,2 +01092_67,17 +01219_120,5 +00509_176,2 +001242_178,0 +01877_73,4 +00413_189,4 +00607_17,14 +01351_42,7 +00841_84,14 +014372_10,11 +00883_17,11 +00503_184,9 +01904_109,12 +007222_21,17 +005392_253,1 +01904_127,4 +00474_187,2 +00158_178,5 +01959_0,6 +00275_158,14 +01509_275,11 +00535_277,6 +011612_143,17 +016932_278,0 +01769_90,0 +00228_6,14 +00124_38,4 +00588_171,4 +01210_41,1 +01605_89,5 +01775_121,2 +01959_38,6 +00181_24,0 +00485_282,4 +02062_147,4 +021622_9,14 +02062_95,4 +010872_28,14 +00793_40,14 +004082_93,11 +01877_105,4 +01972_245,6 +009162_79,2 +00509_19,2 +01087_266,5 +01643_78,14 +01134_2,16 +00065_250,12 +018342_108,8 +00848_92,17 +00519_135,7 +01953_9,2 +01165_97,5 +00181_55,0 +01972_243,6 +00450_89,13 +01769_145,9 +01228_165,14 +02054_63,2 +00867_162,14 +005282_9,2 +01775_152,2 +00228_160,9 +00607_141,14 +01210_213,6 +018132_59,11 +01272_159,4 +01814_195,11 +021722_26,14 +016432_18,12 +00867_144,0 +01219_81,5 +02088_30,0 +011772_48,4 +00350_283,9 +019412_75,14 +001602_81,1 +017692_136,9 +012562_113,14 +00821_55,5 +007212_5,14 +00287_219,15 +010912_164,0 +02054_136,2 +000792_132,9 +01723_33,15 +00840_207,7 +00408_247,11 +021622_56,7 +016922_67,1 +01814_102,11 +008252_50,2 +010652_10,5 +009642_146,8 +016982_109,14 +011612_181,17 +00232_69,13 +00674_98,14 +01941_265,14 +001242_159,19 +017232_191,15 +01814_7,5 +01366_120,17 +00350_268,5 +00462_132,13 +01767_4,14 +01087_38,14 +019412_184,14 +005282_131,4 +01366_139,5 +00772_91,14 +01812_43,2 +01692_102,1 +01045_11,2 +00333_164,2 +000792_281,9 +004172_81,17 +00426_58,0 +00160_194,1 +00450_133,13 +01636_97,0 +02177_23,4 +00158_259,5 +00505_108,7 +01101_70,17 +007182_108,19 +00628_26,7 +01488_11,13 +005882_14,4 +00703_131,14 +01228_286,14 +017672_9,14 +004082_289,11 +004082_281,11 +00567_250,2 +00102_49,16 +01437_241,11 +021912_3,14 +01723_6,4 +018392_136,1 +00160_139,11 +016882_271,2 +00566_240,8 +00041_1,2 +000792_26,9 +00485_74,1 +01412_45,0 +02054_16,2 +001242_35,4 +01144_97,2 +010872_14,14 +00628_95,7 +017232_103,15 +00065_175,1 +01813_115,11 +00941_34,13 +014272_133,14 +00009_226,2 +01366_31,17 +02187_28,16 +00438_118,2 +00509_131,12 +00102_158,16 +00729_145,14 +016882_52,5 +01165_134,14 +00867_98,5 +012282_221,14 +02030_142,16 +017072_289,7 +01361_299,15 +00124_117,19 +01144_165,12 +01643_16,12 +01977_286,14 +01509_0,2 +01853_80,1 +021912_30,7 +02005_55,11 +00776_43,12 +01968_33,7 +00681_26,5 +012282_126,14 +010872_274,5 +01901_122,0 +01361_271,15 +01488_40,0 +01853_95,0 +011612_81,17 +00677_14,14 +016052_226,11 +01182_41,0 +00242_71,4 +01158_23,0 +01065_27,18 +017232_176,15 +00475_3,0 +02057_120,4 +011912_81,7 +004082_97,11 +01769_268,2 +01092_103,17 +00287_214,15 +01144_35,5 +010942_22,5 +010872_2,14 +00333_60,2 +005392_294,1 +01007_274,6 +01092_138,9 +01775_145,2 +00413_190,4 +01228_262,14 +00342_33,17 +010872_104,5 +01814_201,11 +01108_17,14 +00916_137,2 +00934_14,9 +02049_13,12 +00505_118,12 +01191_3,14 +02191_113,14 +016882_252,5 +00280_88,2 +014882_185,0 +02049_115,13 +00462_29,14 +01972_149,3 +005092_13,12 +00088_34,5 +012282_104,14 +01804_9,7 +00964_161,8 +02062_65,12 +00408_266,13 +00280_127,12 +01407_5,4 +00287_72,15 +021462_87,18 +011612_27,17 +012612_8,2 +017672_263,14 +005282_194,0 +00228_92,11 +00535_207,0 +010012_199,5 +02054_83,2 +00993_171,7 +00563_115,2 +00783_30,2 +02012_72,17 +01240_6,2 +01312_18,7 +02054_50,2 +00128_223,4 +00601_24,7 +01044_151,4 +009352_28,7 +02062_23,2 +018392_86,11 +005882_79,13 +01065_11,11 +007212_203,14 +02049_145,13 +007832_258,5 +01312_39,7 +02138_45,14 +007762_94,14 +00607_87,11 +014372_54,11 +019712_77,2 +01144_23,5 +01145_215,4 +012192_92,5 +010912_271,14 +00720_32,0 +01767_70,14 +010872_213,5 +00417_274,1 +00314_113,12 +00021_165,12 +01769_274,2 +007292_124,14 +02172_225,14 +00837_96,11 +005392_87,1 +01953_24,2 +004172_47,17 +02049_33,6 +007292_39,12 +010872_290,5 +01494_93,14 +019042_49,12 +01049_45,7 +00426_172,14 +013302_105,6 +01007_164,13 +012722_189,2 +00079_85,9 +01509_107,0 +01692_118,1 +01509_41,0 +000092_100,12 +02172_195,14 +00181_149,14 +008832_61,11 +02012_102,17 +01182_43,11 +010872_225,5 +002802_108,12 +02127_28,2 +01431_10,11 +01698_121,14 +02005_61,11 +02187_116,16 +00793_46,14 +005092_134,12 +01351_168,14 +019412_183,14 +014272_25,4 +01702_22,4 +00314_143,4 +019592_79,6 +01044_263,4 +00041_64,7 +007222_48,17 +01228_81,14 +017232_45,15 +01626_99,7 +02177_65,12 +00159_22,4 +00503_173,5 +00128_118,2 +00538_25,1 +01812_77,2 +009642_130,8 +00009_257,2 +01568_65,12 +016932_82,0 +00011_77,12 +01977_29,2 +016052_288,11 +00232_134,13 +00768_46,7 +010942_87,11 +02057_21,2 +01158_158,4 +00509_153,2 +01201_4,14 +010012_130,5 +01622_17,14 +018342_66,8 +00993_196,7 +005092_71,12 +00350_196,5 +014122_89,0 +003062_61,7 +01706_86,2 +01924_199,14 +01723_236,15 +02094_26,2 +01971_35,2 +00408_99,11 +01622_74,0 +01643_33,14 +012192_11,14 +018772_262,4 +01134_215,10 +01046_27,7 +007092_141,5 +00041_130,7 +012612_65,2 +001242_107,19 +00408_262,13 +00916_22,2 +004532_85,9 +005062_87,4 +01488_79,0 +007762_12,4 +01330_136,6 +019712_82,2 +01623_86,11 +005062_103,2 +00674_13,14 +00474_135,2 +02191_101,7 +018122_15,2 +01049_43,7 +00840_122,7 +00601_70,9 +01901_95,5 +014232_140,0 +017072_178,4 +00181_147,14 +00951_93,0 +00563_85,6 +01643_0,14 +02172_82,14 +01144_5,5 +012282_192,14 +00333_25,2 +00951_48,0 +010872_71,5 +009162_240,2 +00023_24,2 +012722_152,2 +010912_16,2 +00242_171,2 +01981_57,5 +010942_23,5 +01158_18,0 +000092_203,12 +019712_93,12 +00475_216,1 +021722_99,14 +019712_20,2 +017072_211,0 +01007_106,0 +00342_41,17 +010912_203,9 +02138_172,13 +000252_66,17 +00821_32,5 +00566_140,8 +010012_277,5 +012192_71,5 +00181_120,0 +00242_10,2 +02191_78,7 +00505_212,12 +00124_145,19 +00408_238,11 +00426_42,0 +00175_8,12 +00462_98,13 +00535_150,0 +00539_17,6 +011082_37,13 +02172_22,14 +002752_98,14 +01272_211,4 +01813_37,11 +02057_2,2 +011082_22,0 +00160_23,2 +01909_118,2 +01427_70,1 +01366_123,2 +018652_54,18 +00993_164,7 +00615_169,11 +02057_176,3 +00450_143,15 +00848_99,17 +013302_165,15 +007762_61,4 +002752_3,14 +01804_73,2 +018342_280,8 +007092_116,12 +021722_237,14 +020052_250,11 +01925_46,12 +00503_241,9 +019622_124,0 +00840_146,7 +00607_10,14 +00730_8,14 +012402_219,4 +016052_33,14 +01578_238,14 +006972_66,11 +014372_237,11 +007092_79,19 +00916_155,2 +01769_196,2 +00490_229,5 +021462_113,18 +00021_93,4 +00306_14,14 +00578_40,17 +01769_151,9 +02138_12,14 +00350_148,9 +00761_210,3 +01767_155,14 +02042_106,4 +00280_50,4 +01707_191,0 +00011_113,12 +01007_69,0 +00228_256,11 +017692_13,2 +02027_69,14 +01972_72,3 +01092_35,17 +008252_71,2 +017072_176,4 +01330_248,15 +01605_145,5 +01706_159,2 +02030_243,16 +018652_112,18 +01509_238,11 +018342_111,8 +00535_2,2 +01145_96,4 +00703_121,14 +01191_45,14 +008372_80,11 +01201_62,11 +01361_116,3 +00474_53,2 +01431_20,11 +00628_68,7 +01578_176,14 +00417_276,1 +02186_19,14 +005062_120,2 +01046_56,7 +00065_112,1 +00709_73,19 +01968_30,7 +00615_1,11 +01962_47,0 +021722_258,14 +00503_22,6 +01361_101,6 +01901_26,0 +018772_22,4 +001022_66,16 +007832_222,5 +01045_238,4 +01091_157,5 +016932_161,0 +01981_68,5 +00088_22,5 +02054_240,4 +016982_114,14 +005092_38,2 +001242_217,0 +00041_156,7 +01684_58,14 +00607_116,5 +018772_196,4 +009642_157,8 +00607_49,6 +01007_202,0 +020572_101,12 +00993_81,7 +00964_184,8 +013302_149,9 +00438_64,2 +01409_14,14 +01814_113,11 +000232_45,6 +010012_272,5 +01161_1,17 +00079_186,9 +01431_223,11 +006742_114,14 +019252_170,8 +00228_221,2 +00292_9,11 +021462_35,11 +011772_94,4 +00776_96,14 +017672_90,14 +00892_46,0 +000232_122,5 +01278_44,2 +01834_245,8 +004082_78,11 +01092_61,17 +01763_105,4 +021462_1,14 +016052_153,11 +01622_32,13 +00456_135,12 +01437_248,11 +009162_275,5 +017692_186,2 +01094_82,11 +00475_55,9 +000092_124,2 +00840_43,2 +01437_296,11 +00628_12,7 +01582_0,14 +00160_38,11 +01813_133,11 +01431_34,5 +00660_246,2 +01101_97,1 +018342_155,8 +01118_47,7 +010652_75,18 +005062_64,6 +01103_34,14 +01118_96,14 +02030_126,16 +02191_90,7 +00506_108,2 +01094_36,11 +002752_142,14 +02172_214,12 +016052_266,11 +018792_56,4 +00840_211,7 +01065_77,18 +01865_129,5 +007092_134,12 +01437_177,11 +000242_99,2 +00102_251,16 +004172_253,5 +00314_94,12 +017672_112,14 +00474_177,2 +00009_112,12 +008482_82,17 +01924_184,14 +01813_2,14 +01272_177,12 +00111_84,14 +02177_51,12 +00848_106,17 +01767_83,14 +00916_291,5 +014232_251,0 +012282_268,14 +004672_33,11 +02042_50,14 +02187_113,16 +021772_56,12 +00588_181,4 +00601_131,14 +00242_119,12 +01165_123,14 +000792_182,9 +00709_293,12 +01058_34,2 +00821_0,14 +01972_58,3 +00442_186,4 +00394_115,14 +02012_117,2 +014282_85,14 +01408_35,14 +00703_62,11 +00550_85,18 +00417_40,17 +00485_8,2 +011912_82,7 +00509_225,2 +019042_17,2 +01834_68,8 +009162_50,2 +00408_231,11 +01953_89,12 +01767_99,14 +02127_159,17 +014232_267,2 +00951_160,14 +009642_270,14 +00462_160,13 +016052_296,11 +02049_105,13 +00442_51,2 +00503_140,9 +01901_186,14 +00474_99,2 +00158_295,5 +007212_205,14 +00934_22,7 +00506_116,2 +01953_265,4 +00964_2,14 +008372_46,11 +00566_229,8 +000092_274,12 +016932_288,0 +00228_281,14 +016052_37,14 +01814_295,11 +01959_12,6 +000232_159,5 +010652_89,18 +01813_139,5 +01853_64,5 +021462_130,5 +02127_165,17 +00793_203,14 +01408_267,14 +00979_58,1 +01161_221,17 +001022_103,16 +01330_128,9 +01191_194,14 +02138_207,13 +02012_118,2 +014882_90,13 +01007_116,0 +02005_23,11 +01283_6,14 +009162_66,2 +019242_81,14 +00916_21,2 +010942_82,11 +01767_278,14 +01626_108,7 +01240_202,12 +012722_106,2 +019712_5,2 +014972_42,2 +01001_150,5 +01636_62,0 +00417_230,7 +010912_46,6 +00709_94,5 +00102_35,16 +014372_165,11 +00509_69,12 +02138_65,12 +014072_32,0 +01692_135,5 +02127_113,17 +017672_188,14 +017072_186,0 +000252_18,17 +00509_134,12 +012282_179,14 +005392_200,6 +01953_184,4 +00160_88,11 +01775_138,12 +00550_130,14 +00009_21,12 +00228_279,14 +017692_286,2 +01977_84,3 +01769_65,9 +000242_106,2 +016882_275,2 +00350_98,5 +01769_96,2 +00088_65,5 +017752_174,12 +01834_172,8 +016932_57,0 +013302_22,2 +00128_216,12 +00490_221,5 +01865_104,18 +00793_173,14 +00242_227,12 +016882_265,5 +010872_106,5 +01953_87,12 +01834_223,8 +02187_253,16 +01409_86,0 +00450_122,13 +00474_246,2 +01437_103,11 +00159_40,2 +00462_99,13 +013302_99,9 +004172_58,17 +00456_139,14 +00025_71,17 +004082_52,1 +01045_62,4 +00453_289,9 +019592_34,6 +01924_135,14 +016922_151,14 +008482_1,14 +01706_270,2 +00175_22,4 +02127_63,17 +014272_68,9 +01228_121,14 +00023_127,6 +01948_163,13 +02042_135,0 +014232_263,2 +018342_258,8 +00821_16,14 +010012_155,5 +01408_156,14 +00442_206,4 +01812_24,4 +01407_14,2 +016432_11,14 +018342_63,8 +01688_146,14 +00722_33,17 +01240_256,4 +01509_278,11 +021722_256,14 +01007_158,13 +00546_19,14 +01839_89,11 +008372_51,11 +01597_75,0 +00280_63,12 +02049_65,3 +020052_54,11 +01693_286,0 +01448_38,19 +02049_254,3 +00442_213,4 +01509_293,11 +00065_35,17 +01431_140,11 +02021_100,5 +01501_50,4 +01941_276,14 +001022_157,16 +00160_298,13 +01046_98,7 +00916_191,2 +00023_18,2 +01278_69,12 +00438_127,2 +000092_243,7 +02049_131,13 +01767_95,14 +00287_167,15 +01909_23,2 +00934_35,4 +014232_231,12 +01748_24,0 +016882_246,5 +019042_14,2 +00442_212,4 +010872_143,5 +00588_59,13 +00916_65,2 +011082_28,15 +005882_88,13 +018392_90,11 +01865_79,18 +004082_177,11 +00867_17,14 +016932_38,2 +01767_25,14 +02127_223,17 +00563_38,12 +017072_198,0 +00287_269,15 +00509_105,2 +012402_79,4 +00729_176,14 +00160_109,11 +01101_155,14 +00577_65,7 +012282_260,14 +01278_197,2 +00660_122,0 +000792_161,15 +01001_221,5 +019242_53,14 +00981_33,11 +013332_48,0 +002752_95,12 +01488_193,13 +01161_77,17 +00677_62,14 +00535_205,0 +01904_145,12 +012282_183,14 +00079_65,9 +00160_266,13 +01971_115,4 +01977_265,3 +00442_223,4 +014372_296,11 +001242_251,0 +016092_21,17 +01948_65,13 +00837_23,11 +007292_237,14 +00242_170,2 +004082_275,1 +00768_30,7 +01431_192,11 +00408_124,13 +010942_60,11 +00729_252,14 +010912_8,2 +01118_60,7 +016932_93,0 +020052_137,11 +004532_76,9 +01814_252,5 +01578_247,14 +021462_72,18 +020572_162,3 +01118_27,7 +01437_182,11 +00601_82,11 +00793_124,14 +000092_28,7 +00721_5,14 +00720_30,0 +011612_0,17 +00462_63,15 +01457_20,7 +00761_77,14 +01210_85,9 +00783_35,2 +00306_20,7 +016882_42,5 +01087_112,5 +01509_13,2 +00566_53,8 +00628_2,14 +00761_76,14 +01877_33,4 +00957_87,0 +01971_136,12 +019412_9,14 +01228_243,14 +00474_194,2 +00660_40,0 +01312_97,14 +02042_9,14 +01219_79,5 +01834_89,8 +02030_224,16 +00837_41,11 +01702_9,12 +00566_81,8 +01494_6,14 +01578_131,14 +00124_190,0 +00390_0,14 +002802_196,14 +00228_47,11 +01953_128,4 +001022_204,16 +011912_140,2 +018122_98,2 +00462_60,15 +00979_146,14 +00793_259,12 +01706_216,2 +01929_145,0 +00505_82,5 +01568_51,2 +01834_44,8 +01358_0,1 +008252_79,4 +00160_136,11 +00609_2,14 +01904_55,4 +01118_6,14 +00783_82,17 +01813_137,11 +014232_153,0 +00821_93,5 +00124_96,19 +00280_44,12 +00677_96,14 +00275_146,14 +01493_46,11 +00941_26,4 +007832_267,5 +01804_34,7 +00102_176,16 +01941_290,14 +020572_205,3 +00065_167,1 +00607_107,6 +00993_20,14 +01684_12,14 +004082_170,11 +00450_198,14 +00242_73,4 +01829_11,2 +00394_65,1 +01118_64,7 +00528_221,0 +00979_102,1 +01191_64,7 +00102_105,16 +009162_2,2 +014882_0,13 +01177_68,15 +00761_222,3 +01812_100,2 +018122_73,12 +00601_21,7 +02021_75,11 +01948_149,13 +00505_14,2 +001112_10,14 +01605_80,5 +00563_70,9 +01046_109,14 +00287_284,4 +01191_35,14 +02062_94,4 +00776_56,4 +02138_248,12 +01001_65,12 +012192_105,5 +00333_91,0 +01813_116,11 +018772_244,4 +01723_78,15 +01045_150,4 +000252_70,17 +02187_212,16 +01622_55,0 +00417_62,17 +00681_78,14 +004082_249,11 +005092_127,2 +018652_17,5 +007092_295,12 +00160_178,1 +01228_120,14 +00848_104,17 +01568_49,2 +01706_171,2 +002802_231,12 +017672_160,14 +00350_136,9 +01839_126,1 +01834_275,8 +00730_84,18 +01879_73,0 +017022_18,12 +007212_101,14 +00350_142,5 +008402_213,7 +00962_66,3 +01228_168,14 +001112_52,17 +01929_139,0 +004082_293,11 +00065_249,12 +010912_131,5 +01087_294,5 +02187_29,16 +007182_36,19 +00475_208,1 +02127_20,2 +002752_96,14 +01909_98,2 +017692_119,0 +01706_178,2 +01968_34,7 +012562_66,12 +00607_133,14 +008402_184,7 +017022_36,14 +007092_22,19 +00793_8,14 +017752_88,2 +000232_72,3 +019252_176,8 +01094_45,11 +007832_121,6 +00282_14,14 +014232_9,2 +003062_100,14 +00390_65,5 +005062_95,4 +01877_271,4 +021462_27,11 +00916_47,2 +00442_38,14 +019412_7,14 +01971_146,12 +014282_73,14 +013332_22,2 +00628_21,7 +01723_69,15 +01813_35,11 +00783_102,17 +014882_174,0 +00729_227,14 +00314_35,2 +00450_41,14 +02094_11,4 +01723_156,15 +00474_96,2 +007292_61,14 +01431_180,11 +00158_179,5 +00538_46,4 +013302_31,17 +01177_74,4 +01605_257,11 +00426_63,0 +001602_210,1 +01210_135,6 +00128_261,12 +01408_227,14 +00867_197,14 +00111_53,17 +01775_126,12 +00021_76,4 +018132_138,5 +01509_3,2 +01977_273,4 +00993_188,7 +013332_14,12 +02042_60,15 +01049_2,7 +02127_231,17 +00577_112,14 +01706_238,2 +012612_68,4 +01578_19,14 +00124_239,0 +000232_195,2 +02028_2,4 +02054_220,12 +01001_74,12 +00677_10,14 +005092_3,2 +01228_234,14 +01046_96,7 +016982_122,14 +02049_259,3 +00722_86,17 +004172_272,1 +02028_47,9 +01065_115,14 +01044_150,4 +01103_50,17 +01278_9,2 +004532_64,9 +012192_142,14 +01767_26,14 +01509_29,2 +010872_65,14 +00474_122,2 +015972_21,0 +017022_81,14 +02057_60,12 +02057_48,2 +00729_35,12 +00021_59,3 +01184_12,14 +00840_285,2 +01901_71,0 +019252_235,8 +009622_88,3 +018772_188,4 +02094_77,12 +01879_44,4 +01007_92,0 +00181_108,0 +00490_249,5 +01814_256,11 +00783_178,2 +01901_102,0 +01763_274,2 +00528_98,2 +005392_174,1 +013302_263,12 +01045_257,4 +00721_40,14 +01775_106,12 +021722_218,12 +00509_198,2 +00776_15,15 +00242_78,4 +00535_65,2 +00783_279,5 +00703_125,14 +01578_55,14 +00528_69,2 +01763_9,2 +01219_90,5 +01161_52,17 +00503_266,6 +005092_14,12 +00065_150,1 +00837_131,11 +01929_54,0 +00102_150,16 +01007_45,5 +01409_63,0 +00456_109,4 +01834_201,8 +00503_181,5 +014972_13,0 +01161_253,17 +001022_226,16 +02057_27,2 +01437_22,11 +01879_55,4 +01044_169,12 +003062_71,7 +02049_213,13 +009512_27,0 +01256_33,12 +01351_15,2 +00567_153,2 +01839_148,1 +01541_32,5 +00350_163,9 +016982_43,17 +00615_132,11 +01219_13,14 +00588_26,12 +00025_64,17 +01804_98,4 +01278_233,2 +002802_239,12 +01045_89,4 +01228_131,14 +00228_277,2 +018392_191,1 +01278_135,2 +010872_142,5 +01134_252,10 +01929_114,0 +00102_244,16 +01210_239,9 +01977_297,14 +00128_263,12 +021912_51,7 +01981_30,5 +01423_223,0 +01977_15,14 +01929_151,0 +00314_273,4 +01007_230,0 +01924_31,14 +01605_74,5 +02054_2,2 +01331_5,14 +01626_143,2 +00490_174,2 +004532_88,9 +01929_220,14 +01087_39,14 +018772_95,4 +01636_81,0 +00793_160,14 +00821_30,5 +014232_64,2 +01228_193,14 +01623_11,14 +00722_11,17 +005282_176,0 +00450_83,13 +00506_132,2 +00875_55,2 +008372_106,11 +01092_134,9 +02028_56,4 +018132_79,11 +00761_230,3 +011082_54,14 +01091_200,1 +00023_125,5 +005882_146,13 +01210_178,6 +01007_5,2 +001242_146,19 +01437_98,11 +00287_7,4 +014232_135,0 +019412_278,14 +02049_103,13 +01007_216,0 +01971_36,2 +01812_20,2 +01865_131,5 +00011_105,12 +01959_74,6 +02138_93,14 +01692_50,2 +00993_276,14 +014282_12,14 +01509_98,0 +017752_63,2 +00041_11,2 +00009_108,12 +01953_218,12 +02027_44,18 +01278_185,2 +008832_15,11 +007182_17,19 +01092_27,17 +00023_76,3 +02049_218,3 +00158_205,5 +01568_118,2 +00951_65,0 +00964_168,8 +01144_162,12 +01007_51,5 +01626_126,2 +00438_87,12 +01953_134,4 +008922_84,2 +00721_248,14 +02005_169,11 +018392_172,4 +021722_152,4 +00566_268,8 +01408_281,14 +018772_269,4 +01045_180,4 +00825_16,4 +00563_19,2 +007092_42,19 +020572_111,2 +00382_126,5 +006972_19,9 +00588_106,13 +01219_70,5 +009162_200,2 +02005_239,11 +00821_103,5 +01371_4,14 +02094_110,12 +009622_81,3 +00793_244,14 +008482_113,17 +01361_276,15 +01882_82,14 +01158_126,1 +004172_64,17 +01045_190,4 +010912_109,0 +007762_84,4 +010872_112,5 +000092_176,2 +016932_15,2 +00426_45,0 +007292_143,14 +00442_40,14 +017232_47,15 +01272_150,2 +00722_28,17 +017232_27,15 +00539_175,1 +021462_179,14 +019412_118,14 +01972_174,13 +01834_116,8 +01351_46,7 +001022_29,0 +02057_70,2 +012402_129,12 +00597_58,5 +00275_77,14 +008482_84,17 +01804_4,12 +00867_24,14 +01962_56,0 +01981_32,5 +02187_233,16 +00783_115,17 +00282_67,11 +00761_183,3 +02138_262,14 +00539_41,6 +00041_66,7 +014272_56,4 +014122_53,0 +00892_35,0 +01693_124,0 +02054_110,14 +00935_34,7 +00181_45,0 +02005_147,11 +00065_225,12 +009342_15,9 +01409_116,0 +001112_69,14 +00228_83,1 +00485_72,1 +012562_68,12 +01331_20,14 +000232_68,3 +02054_271,12 +00840_294,2 +01814_273,11 +008372_39,11 +007212_242,14 +01877_168,4 +00729_3,14 +00615_173,11 +000252_75,17 +01044_257,4 +007832_231,5 +00158_191,5 +020052_43,11 +00474_69,2 +010912_171,11 +00287_2,4 +01500_13,11 +00011_78,12 +018342_11,14 +00287_237,15 +01924_175,14 +009512_98,0 +005882_45,15 +01865_75,18 +00287_293,4 +019412_280,14 +01437_286,11 +00535_158,0 +00957_77,4 +014232_117,0 +00720_2,0 +021722_129,14 +016052_54,5 +010872_64,14 +00703_18,11 +00426_65,0 +00333_138,2 +01371_40,12 +01210_4,17 +00964_62,3 +01331_36,17 +012722_197,4 +01210_174,6 +02191_75,7 +01948_112,13 +00242_189,12 +00567_89,2 +00993_98,7 +01706_59,2 +017692_67,9 +018772_187,4 +01877_252,4 +00426_94,0 +017072_248,0 +00181_21,0 +00747_33,6 +017232_108,15 +00390_10,14 +00314_204,12 +00232_36,12 +01407_36,4 +01431_131,11 +018342_157,8 +00729_285,14 +01582_54,2 +02127_233,17 +01804_104,2 +01623_31,5 +00242_247,4 +01330_179,1 +00456_62,12 +01118_48,7 +00503_126,1 +01702_21,12 +00729_38,12 +01423_186,0 +007292_246,14 +01228_27,14 +018792_39,4 +02187_93,16 +01804_96,4 +02027_95,14 +002802_4,14 +020052_151,11 +007212_193,14 +00539_105,1 +00535_117,6 +014372_151,11 +004172_9,14 +00011_9,0 +00615_104,11 +01409_34,4 +005092_18,2 +00840_215,7 +01909_131,12 +00503_154,9 +01058_52,2 +01427_29,17 +01134_178,10 +020052_241,11 +00709_171,19 +01981_49,5 +00025_15,17 +00023_163,5 +01787_25,1 +016932_26,17 +01001_166,5 +01437_161,11 +016882_112,5 +01409_210,14 +01134_226,10 +01182_69,0 +000242_18,2 +019252_193,8 +017692_233,9 +00023_52,3 +01769_230,9 +017232_246,15 +01948_79,13 +021722_202,14 +00021_131,12 +007292_210,14 +00550_28,18 +00821_5,14 +007212_88,14 +002802_189,14 +01688_61,5 +01948_62,13 +01101_81,6 +01358_53,1 +019242_242,14 +01706_226,2 +01201_102,14 +011082_15,14 +01904_132,12 +004172_22,6 +00951_22,0 +00821_9,14 +01929_130,0 +007292_213,14 +01228_235,14 +01333_15,12 +01044_241,12 +00951_100,0 +01497_12,0 +01228_252,14 +00426_41,0 +00840_258,2 +01971_285,12 +016932_48,0 +00158_170,5 +01578_248,14 +00535_128,9 +01191_40,14 +00287_27,4 +02191_74,7 +00158_283,5 +01706_296,2 +01431_61,5 +01210_228,9 +01769_261,2 +00275_167,12 +00503_94,1 +01228_139,14 +01044_176,4 +01971_275,4 +00242_272,4 +00021_38,6 +01094_104,14 +01636_126,14 +00660_155,0 +018792_40,4 +019622_25,0 +017232_205,15 +014232_262,2 +01787_80,9 +00158_55,14 +00438_128,2 +016052_299,11 +006742_91,14 +01366_126,5 +00009_221,2 +01361_292,15 +009512_86,0 +00916_276,5 +01101_113,13 +02062_36,2 +018132_22,11 +02012_10,14 +014272_121,2 +01408_257,14 +01924_61,14 +011082_7,14 +01431_230,11 +017692_210,11 +001602_0,5 +011912_95,7 +017232_223,15 +02028_39,9 +01834_53,8 +012192_19,14 +001022_265,16 +012282_155,14 +01091_184,1 +02186_88,5 +00867_61,0 +01494_46,7 +02012_85,7 +018342_284,8 +019252_76,3 +014972_19,0 +005882_101,13 +002802_109,12 +00783_142,2 +01261_93,2 +019412_72,14 +019242_3,14 +020572_4,2 +00505_230,14 +01431_296,11 +00848_25,17 +00456_59,12 +01134_117,10 +01813_1,14 +00566_5,14 +00453_120,9 +00275_3,14 +014232_191,0 +00350_262,9 +00025_11,17 +00485_61,1 +017692_39,2 +009642_278,14 +014272_52,2 +008402_150,2 +009642_65,3 +00546_83,3 +00563_10,2 +01971_69,4 +019712_243,12 +00588_90,13 +018392_44,11 +017672_8,14 +01351_113,7 +00453_234,9 +01509_42,0 +017752_134,2 +01834_6,14 +016432_73,14 +01278_76,12 +000092_257,2 +001112_77,14 +018772_2,4 +00628_16,7 +01882_49,11 +017692_10,2 +00867_6,14 +00242_236,12 +019252_74,3 +02030_105,16 +00722_74,17 +002802_44,12 +01787_28,1 +01626_76,7 +007212_2,14 +02021_14,5 +00837_106,11 +019412_203,14 +00228_237,11 +00287_216,15 +01605_182,11 +013302_28,12 +01423_10,2 +01240_100,12 +01278_181,2 +019412_235,14 +01423_129,0 +01361_167,3 +01001_47,2 +00528_122,2 +010912_160,5 +00509_155,2 +008402_15,2 +00883_71,11 +01219_55,5 +001602_89,11 +001022_183,16 +00160_189,11 +00228_188,9 +00314_21,2 +00306_1,14 +00567_241,2 +013302_65,18 +012722_181,4 +01092_274,12 +00566_295,8 +02191_84,7 +00175_75,4 +02127_241,17 +00979_0,14 +01948_22,14 +00413_133,0 +00124_79,19 +01437_112,11 +01490_84,14 +01431_258,11 +01977_48,12 +01240_206,12 +01698_94,17 +005392_116,1 +01087_40,14 +00394_46,14 +01228_37,14 +01814_98,11 +01723_9,4 +001242_116,19 +00485_92,1 +02042_146,14 +00506_4,2 +00128_24,12 +01839_38,2 +014882_224,0 +018392_85,11 +01488_151,0 +00065_236,12 +016432_38,12 +00535_275,6 +005502_134,14 +00242_197,12 +01101_60,17 +00275_51,14 +01953_59,2 +00519_113,11 +01877_144,4 +01351_27,7 +01007_189,4 +00697_4,2 +01977_259,3 +02027_98,14 +00528_33,2 +019412_164,14 +017692_250,11 +00519_149,14 +016882_79,5 +007292_75,14 +01240_123,2 +01693_37,2 +010012_108,5 +014882_70,0 +019592_62,6 +00729_129,14 +01158_5,12 +012282_140,14 +01490_22,7 +00023_170,2 +00528_179,0 +00159_82,0 +01814_214,11 +01787_76,9 +02187_104,16 +00011_12,0 +01278_215,2 +005392_68,1 +00350_20,14 +01091_125,5 +00296_85,7 +01361_258,15 +016982_83,17 +005062_47,2 +017752_13,2 +012192_48,5 +00519_76,11 +01045_295,4 +01953_90,12 +02187_206,16 +016432_85,14 +00783_97,17 +00024_22,2 +00718_21,19 +01692_155,14 +016882_199,5 +014972_44,2 +012282_75,14 +01688_280,2 +01240_282,12 +001022_224,16 +02149_17,6 +00772_58,7 +00242_188,12 +02005_117,11 +00601_15,7 +02057_87,12 +00538_29,1 +00703_43,11 +007292_154,14 +011612_113,17 +017752_35,2 +00660_49,0 +00505_162,12 +000792_199,9 +01366_4,14 +018772_186,4 +003062_89,7 +01605_250,11 +00417_266,11 +00390_112,14 +00503_32,6 +00079_188,9 +00282_8,14 +01007_252,4 +00528_117,2 +008402_290,2 +01272_274,2 +00709_97,11 +01272_186,2 +014232_194,0 +01408_258,14 +019252_38,14 +00538_93,12 +01723_24,15 +01423_168,0 +014372_52,11 +019242_129,14 +01853_108,5 +01909_47,2 +004172_249,6 +01228_184,14 +01366_13,14 +01767_230,14 +01165_117,14 +00964_64,3 +01092_241,1 +00578_111,14 +01272_68,4 +01092_13,17 +01312_86,7 +01814_73,11 +017752_151,2 +00721_73,12 +01134_214,10 +01493_97,1 +019412_69,14 +012612_74,12 +00768_66,7 +01145_152,4 +01925_285,8 +01609_15,17 +00566_113,8 +01431_201,11 +01643_71,14 +016052_11,14 +00550_133,14 +018392_130,1 +00232_44,12 +01813_121,11 +007762_44,14 +01775_3,2 +01972_282,14 +013302_11,2 +014232_216,0 +00607_81,11 +01501_24,4 +01134_182,10 +00848_94,17 +00505_87,12 +01948_161,13 +01636_77,0 +021462_112,18 +02177_3,12 +00538_31,1 +00413_3,14 +014882_24,1 +00276_79,11 +00450_175,14 +012192_79,5 +00506_62,6 +01283_62,2 +01118_4,14 +00181_56,0 +011912_46,12 +009642_197,8 +019712_73,4 +01351_29,7 +01688_141,14 +019622_106,0 +007212_200,14 +01829_52,2 +00506_17,2 +02191_62,7 +001242_226,0 +00467_32,11 +011082_47,0 +001022_165,16 +018342_261,8 +01972_259,14 +00102_104,16 +01953_67,12 +02049_92,3 +01568_117,2 +005882_202,2 +008402_212,7 +01351_165,14 +018652_32,11 +01693_267,0 +01272_72,4 +020052_112,11 +02162_29,5 +01431_194,11 +00951_15,14 +01968_43,7 +019412_54,14 +02012_8,14 +016922_100,1 +007292_243,14 +01437_144,11 +00709_246,19 +005392_279,0 +00883_14,11 +01769_92,0 +017232_248,15 +00442_59,2 +01643_112,14 +00722_64,17 +01094_112,14 +018652_40,18 +02030_30,14 +00485_16,2 +00442_187,4 +01312_88,7 +006972_25,9 +004532_205,9 +017752_84,2 +02028_94,2 +01045_196,4 +00287_154,15 +02021_69,11 +01144_143,2 +007292_121,14 +00883_11,11 +00453_202,9 +009642_17,14 +014372_288,11 +01134_63,10 +001602_288,13 +01272_88,2 +016922_68,1 +019252_220,8 +00181_41,0 +01001_202,5 +017752_157,12 +01184_72,5 +00892_32,0 +02049_101,13 +01423_64,2 +019242_143,14 +01431_66,11 +01925_256,8 +00674_56,14 +00158_287,5 +00761_69,14 +00730_116,14 +019412_180,14 +00567_13,2 +01240_247,12 +01568_155,2 +01101_69,17 +00456_178,14 +012562_89,4 +010012_242,5 +00615_207,11 +01941_79,14 +017692_47,5 +01044_7,12 +01177_94,4 +001602_223,11 +00287_124,4 +00597_67,14 +001112_87,14 +01210_184,6 +00426_170,14 +00730_99,14 +01953_6,2 +01706_83,2 +00875_15,2 +01723_65,15 +00519_110,11 +013712_63,14 +020052_25,11 +02146_147,14 +000252_45,17 +00837_84,11 +00964_197,8 +00761_186,3 +019622_104,0 +007832_173,2 +00438_184,2 +01692_49,2 +010872_96,5 +02027_90,14 +007182_109,19 +009352_45,7 +00475_126,11 +00124_237,0 +01968_32,7 +00609_6,14 +01568_66,12 +014272_122,2 +01981_22,5 +00535_12,2 +02146_72,18 +02042_139,14 +01948_106,13 +01971_27,2 +00506_133,2 +004532_217,9 +01814_168,11 +01371_64,14 +00793_85,14 +00848_81,17 +02042_144,14 +00566_111,8 +01924_151,14 +012192_51,5 +00280_2,14 +01763_113,2 +000792_247,9 +00280_151,2 +00951_158,14 +004532_211,9 +01622_58,0 +01748_56,7 +00875_31,2 +00296_64,7 +01924_200,14 +01191_117,7 +007092_209,19 +018772_16,4 +01191_193,14 +02005_74,11 +01488_93,13 +00462_14,14 +00703_69,11 +00761_261,3 +01361_111,3 +00280_230,14 +007292_66,14 +014232_166,0 +00306_4,14 +00159_50,2 +00825_50,2 +01925_176,8 +007092_299,12 +021772_67,12 +00546_24,14 +01901_150,5 +00490_155,12 +00438_122,2 +010872_164,5 +01941_199,14 +007182_69,19 +00688_111,2 +011612_253,17 +004082_211,11 +00783_136,12 +007182_93,19 +00546_10,14 +01091_99,0 +01145_118,4 +009622_3,0 +011912_171,14 +00552_67,7 +00503_199,9 +01210_160,6 +00024_60,7 +01408_43,14 +00228_178,9 +01437_18,11 +010872_46,14 +00535_40,2 +008372_33,11 +005062_69,6 +014122_84,0 +005092_109,2 +00505_109,7 +011912_195,14 +00615_184,11 +01457_70,2 +00539_270,1 +00505_68,1 +00413_96,0 +00275_62,14 +001022_295,16 +006742_85,4 +00761_218,3 +01272_155,4 +00875_82,2 +01065_109,5 +01431_116,11 +010012_231,5 +00280_8,14 +01971_5,2 +01091_11,2 +00962_71,3 +01956_42,1 +020052_72,11 +020052_46,11 +01494_100,14 +01412_81,0 +018772_6,4 +009162_278,5 +01007_125,0 +007222_54,4 +01361_46,12 +00426_124,0 +01437_210,11 +01622_8,14 +00124_48,0 +016982_76,17 +004082_112,1 +02177_2,14 +01623_63,11 +00390_92,11 +01045_117,4 +01706_93,2 +00413_87,0 +019622_8,0 +01094_30,11 +00079_198,9 +018392_182,1 +018342_205,8 +00413_32,0 +00793_59,14 +013332_40,4 +01065_10,5 +002752_157,14 +016882_63,5 +016932_2,2 +00275_76,14 +009642_202,8 +00892_45,0 +01409_43,4 +00964_32,14 +00577_101,7 +00280_99,12 +00979_103,1 +016052_131,5 +01925_225,8 +02186_75,5 +02062_106,4 +00550_37,18 +01427_39,1 +010012_283,5 +00709_274,9 +00088_37,5 +00453_59,9 +016052_136,5 +00709_243,19 +00350_216,9 +01423_108,0 +01094_99,2 +01001_195,5 +01423_71,0 +00009_148,0 +010912_50,1 +01977_287,14 +00160_12,2 +01605_101,5 +00159_89,0 +003062_26,7 +00718_30,19 +01925_13,14 +01134_23,16 +014232_224,0 +00009_156,12 +000092_50,12 +01437_203,11 +016052_272,11 +01541_23,5 +005282_154,0 +016922_7,14 +01814_187,11 +01706_274,2 +01865_36,5 +01748_0,11 +017482_32,0 +007182_95,19 +00615_225,11 +00474_217,2 +01972_140,3 +01877_6,4 +01501_113,14 +01045_249,4 +00181_106,0 +00287_13,4 +00964_85,3 +016882_203,5 +012282_3,14 +00408_139,11 +01877_129,4 +01045_47,4 +00159_54,2 +00538_89,2 +00578_101,17 +01962_110,0 +01707_193,0 +01972_87,3 +010872_215,5 +01144_67,8 +00417_141,6 +00840_104,7 +020052_195,11 +012612_57,2 +00840_200,7 +016882_9,5 +01834_75,8 +00578_51,4 +002802_46,4 +02054_67,4 +013302_210,18 +017482_92,0 +02057_115,2 +007762_89,14 +010872_102,5 +01775_80,12 +009622_47,13 +016882_262,5 +00158_139,5 +01065_110,14 +02138_209,13 +007762_39,4 +00566_285,8 +02138_22,2 +007092_237,19 +01228_33,14 +017232_101,15 +00128_60,12 +00021_1,5 +019252_55,12 +02028_84,2 +01366_146,5 +00333_88,0 +018132_75,11 +01044_13,4 +01769_56,9 +01488_249,5 +015972_22,0 +01692_76,1 +00280_194,2 +01493_211,1 +01423_130,0 +01007_1,2 +00426_76,0 +009352_75,7 +00438_40,2 +01813_113,11 +01692_77,1 +01161_95,17 +011612_122,17 +017232_250,15 +00450_88,13 +00442_52,2 +017022_45,14 +01272_103,2 +01702_31,4 +003062_88,7 +004082_176,11 +00453_119,9 +01814_297,11 +01775_79,12 +02057_166,3 +001112_43,17 +014122_58,0 +00588_164,15 +01240_194,2 +00718_43,19 +00993_128,7 +00535_154,0 +02005_285,11 +011082_50,14 +00408_268,13 +001022_62,16 +00111_66,17 +00342_11,14 +000792_229,9 +00601_34,7 +00079_185,9 +01787_21,13 +007292_249,14 +00159_5,4 +00350_164,9 +01101_62,17 +01428_33,14 +00462_165,15 +00709_22,19 +01605_53,2 +01706_217,2 +00761_14,14 +01087_4,14 +012282_185,14 +01210_35,1 +00981_14,11 +00467_38,11 +01007_79,0 +01909_54,2 +01707_294,7 +001112_54,17 +01144_160,2 +020572_44,2 +007212_192,14 +01763_115,2 +016432_67,14 +02138_292,14 +014122_29,0 +00128_219,12 +01409_56,4 +01108_56,4 +010912_239,2 +02027_94,14 +00503_187,9 +01261_63,2 +017692_57,9 +00160_113,11 +01371_28,14 +01968_9,14 +011612_89,17 +005392_108,1 +015972_59,0 +01924_63,14 +00394_12,14 +00964_30,14 +00485_230,1 +02005_151,11 +00350_106,5 +00837_52,11 +01007_90,0 +01763_33,2 +01901_182,14 +005502_75,18 +01693_60,0 +019412_209,12 +00453_21,9 +01437_226,11 +01909_204,12 +009162_219,2 +007832_113,17 +01929_195,0 +01145_177,4 +00065_143,1 +00703_114,14 +00079_299,9 +017692_202,0 +00296_32,7 +018772_44,4 +016932_121,0 +01493_267,1 +02162_86,12 +016882_24,5 +00957_50,4 +019712_176,2 +011612_164,17 +00490_134,2 +00609_42,11 +00964_248,4 +019042_60,2 +007212_169,12 +02049_21,4 +019412_140,14 +00442_292,4 +00875_38,2 +01814_209,11 +00841_58,14 +010912_126,5 +014372_230,11 +00783_101,17 +009162_30,2 +00275_86,14 +01103_0,14 +000092_132,2 +02187_16,16 +019712_186,2 +01626_114,7 +01877_245,4 +00453_62,9 +01972_151,3 +01971_176,2 +02127_215,17 +014372_50,11 +02062_139,4 +01272_156,4 +01219_93,5 +020572_16,2 +00578_35,1 +019712_113,4 +01605_242,11 +02030_286,16 +00934_20,1 +020052_219,11 +00475_38,9 +019592_38,6 +01366_158,14 +00158_91,11 +01977_133,8 +015972_109,2 +00408_282,11 +00505_176,11 +01161_289,2 +01493_233,1 +01092_80,17 +01210_205,6 +017072_114,1 +000232_32,2 +01272_264,4 +01839_12,2 +00772_100,14 +017692_25,2 +00024_37,7 +01688_89,5 +000092_245,12 +00408_211,11 +02187_266,16 +00160_240,1 +00519_139,7 +005282_123,2 +020572_1,2 +02027_144,14 +01879_4,2 +011612_174,17 +019042_103,12 +00282_94,5 +00287_173,4 +01045_214,4 +008482_13,14 +02054_81,2 +006742_119,14 +00628_137,14 +01191_108,7 +01158_34,7 +018342_176,8 +00287_151,15 +01879_32,4 +00442_7,2 +021462_107,18 +00793_105,14 +01094_86,11 +01330_61,18 +00382_0,5 +00697_56,12 +00825_49,4 +01977_100,8 +008372_90,11 +012722_66,12 +016052_35,14 +00009_185,0 +00475_43,9 +00567_85,2 +00417_146,7 +00079_268,0 +01578_94,14 +02012_120,2 +00438_235,2 +01431_211,0 +013302_275,15 +01609_1,17 +010872_6,14 +01001_114,5 +01407_22,12 +010872_284,5 +00408_61,1 +01636_78,0 +019712_162,2 +01044_206,12 +01509_218,0 +02146_52,18 +01925_206,8 +01953_36,2 +004532_167,9 +00438_56,2 +01909_18,2 +02149_51,17 +02054_148,12 +00041_117,7 +02042_80,14 +02138_55,2 +01941_47,14 +012612_107,2 +00993_220,6 +00350_255,9 +00503_242,9 +00275_42,14 +01330_279,3 +01941_55,14 +017692_294,5 +00840_151,2 +01437_174,11 +018652_13,5 +00408_175,11 +01210_264,9 +00867_86,17 +00442_119,12 +019712_24,2 +02054_45,2 +001112_21,17 +007092_244,19 +007212_124,14 +00566_60,8 +01044_135,4 +004082_3,2 +00588_27,12 +00128_146,2 +007832_228,5 +012402_74,4 +012402_119,4 +019412_152,14 +01971_124,2 +013302_259,4 +01488_44,0 +00718_10,2 +01428_42,4 +00158_143,5 +00475_150,9 +012722_120,2 +01087_263,5 +018652_117,18 +004172_266,11 +017232_143,15 +00041_150,7 +01723_96,15 +017482_42,0 +00875_72,2 +00021_139,12 +02127_108,17 +01045_255,4 +00979_78,1 +012612_79,12 +01001_188,5 +00566_202,8 +01977_132,8 +018792_101,2 +00314_77,4 +00567_57,2 +01228_151,14 +00615_33,11 +00783_164,2 +00382_41,17 +019412_39,14 +00453_240,9 +01408_275,14 +00825_24,2 +005882_179,4 +012722_76,2 +002752_46,14 +01767_102,14 +021622_11,14 +010652_76,18 +00578_11,14 +006742_45,14 +00681_5,14 +017672_66,14 +011912_150,14 +00552_21,7 +01959_44,6 +001022_91,16 +02187_295,16 +01210_154,6 +01494_96,14 +01134_179,10 +01312_91,14 +00981_79,11 +00546_159,4 +00539_36,6 +01219_41,5 +00840_126,7 +00390_73,5 +00041_176,7 +014272_102,9 +00567_233,5 +02049_48,3 +02030_99,16 +016882_93,5 +00242_63,12 +02049_251,3 +01924_225,14 +01877_221,4 +00607_29,11 +013332_18,2 +01058_36,2 +00065_32,17 +02094_46,12 +007222_1,17 +005882_19,12 +00825_78,12 +00242_267,4 +02057_180,3 +01707_28,2 +014232_19,2 +014372_298,11 +00916_150,2 +01228_263,14 +00848_86,17 +008922_54,0 +01351_157,2 +014372_181,11 +01769_242,9 +000792_155,0 +00607_33,11 +019242_243,14 +00681_75,14 +00314_230,12 +00485_219,1 +02127_92,17 +01145_213,4 +00768_26,7 +01623_93,11 +021912_119,14 +00041_125,7 +02012_77,17 +02030_49,14 +004532_139,9 +017692_189,2 +00837_149,11 +016882_176,2 +00883_34,11 +016982_26,17 +00490_259,5 +010872_218,5 +021462_37,11 +01087_206,5 +01493_81,1 +017752_100,12 +01144_69,8 +001242_54,0 +02146_116,18 +009162_55,2 +00776_52,4 +018772_226,4 +00729_49,14 +000232_29,2 +01427_113,17 +005282_33,2 +00718_115,19 +01119_60,11 +019622_51,0 +000232_116,5 +019042_24,2 +02177_42,14 +00442_275,4 +00342_52,17 +01177_40,14 +00088_78,5 +014372_170,11 +002802_129,12 +005392_66,1 +01509_205,0 +02186_36,5 +01839_150,1 +01134_195,10 +01240_222,4 +00438_230,2 +02030_54,14 +018342_32,6 +011772_111,14 +01853_25,0 +01839_8,2 +019252_167,8 +018792_91,12 +02094_87,4 +00505_135,14 +00232_17,14 +00729_232,14 +014882_81,0 +01145_31,2 +00128_77,4 +01578_228,14 +01272_18,2 +00509_28,2 +01118_41,7 +01605_297,11 +00538_141,14 +00350_256,9 +01191_0,2 +01769_298,5 +019252_296,8 +009352_66,7 +012282_124,14 +00964_134,8 +02021_74,11 +00535_113,6 +01437_186,11 +00964_144,8 +00588_3,2 +00128_183,4 +020052_101,11 +003062_15,14 +02027_112,14 +00456_133,12 +005392_238,1 +02162_6,14 +02138_233,15 +018122_111,2 +017072_62,0 +02057_17,2 +00275_129,14 +00552_99,2 +000242_7,2 +00021_112,12 +010012_74,12 +005882_106,13 +008402_148,7 +00417_163,6 +019712_235,12 +008372_107,11 +008922_10,0 +00567_44,2 +01457_15,7 +00474_7,2 +01688_173,14 +01877_64,4 +01272_22,2 +01201_70,11 +014372_236,11 +019712_64,12 +01956_28,18 +01605_291,11 +002802_84,2 +016922_135,5 +012402_170,12 +01427_49,17 +00528_21,2 +016932_253,0 +011082_35,13 +00456_188,14 +007762_86,4 +01044_0,14 +00102_144,16 +01219_3,14 +01272_24,2 +01839_22,14 +00503_76,6 +00964_113,8 +01509_249,11 +01692_3,14 +011612_66,17 +02138_79,14 +01103_3,14 +005282_139,4 +01853_97,0 +01865_45,18 +01626_71,7 +01210_121,6 +01134_233,10 +02172_3,14 +001602_69,11 +01787_58,9 +00535_57,2 +017072_173,4 +01240_66,12 +00721_250,14 +01901_7,14 +00730_81,18 +00485_42,4 +00964_238,4 +014072_39,4 +02057_1,2 +00681_37,5 +01228_70,14 +00475_218,1 +001022_65,16 +00417_108,6 +017022_87,14 +00160_145,1 +007212_37,12 +019412_256,14 +021462_61,18 +01977_229,8 +01977_144,8 +00474_118,2 +00688_84,4 +00506_23,2 +017692_280,2 +00453_221,9 +00509_181,12 +02030_274,16 +01706_170,2 +021722_112,14 +00628_88,7 +002752_25,14 +01091_101,0 +00450_168,4 +01707_258,7 +01693_251,0 +00242_22,2 +00793_248,14 +00934_48,0 +00453_205,9 +014232_131,0 +01431_250,11 +005282_50,2 +020572_195,3 +01001_60,12 +018132_156,14 +01409_87,0 +01977_241,8 +00408_237,11 +00837_7,12 +00821_82,5 +01437_192,11 +00490_299,5 +01092_82,17 +001022_15,2 +01941_275,14 +018652_119,18 +01763_67,2 +021912_96,7 +008252_69,12 +003122_41,0 +00382_44,17 +006742_79,14 +00535_255,6 +00848_91,17 +00175_71,4 +01219_69,5 +010012_190,5 +010872_99,5 +00615_30,11 +00021_96,4 +00721_143,14 +01044_283,4 +00475_292,9 +00475_82,9 +009512_148,14 +01065_74,18 +00840_25,2 +00350_54,14 +00474_72,2 +00275_128,14 +019252_89,3 +00981_71,11 +01278_188,2 +01814_70,11 +01092_47,17 +016432_64,4 +02146_75,18 +00485_187,1 +01058_10,2 +01688_157,14 +009342_16,9 +01834_78,8 +01361_71,4 +00935_99,7 +01358_30,1 +00577_18,14 +02057_210,3 +019412_229,14 +01087_234,5 +005092_170,12 +01706_118,2 +014882_101,13 +017482_35,0 +01706_18,2 +007292_138,14 +01493_63,1 +00417_136,17 +00312_47,0 +01977_28,2 +01351_10,2 +00242_156,12 +019622_69,0 +01087_141,5 +00079_291,9 +00282_61,5 +01091_86,16 +01092_8,17 +01134_156,10 +02054_175,2 +01087_198,5 +01787_79,9 +01972_171,13 +01431_225,11 +01119_112,14 +019592_78,6 +001022_231,16 +016882_111,5 +009342_56,11 +00275_6,14 +01091_210,9 +00962_86,3 +00729_240,14 +00979_134,2 +01330_46,9 +00677_4,14 +00408_186,11 +01228_298,14 +01330_291,9 +00128_178,0 +00467_8,11 +00011_85,12 +01568_121,2 +01877_163,15 +00703_124,14 +019412_192,14 +00474_146,2 +01977_38,2 +007092_115,12 +00506_61,6 +00609_45,11 +00228_163,9 +01707_48,4 +02187_230,16 +01692_57,5 +001242_214,0 +017752_51,12 +01184_41,5 +01723_49,15 +005392_230,13 +00065_101,11 +01261_69,4 +01219_100,5 +014882_108,0 +01972_187,13 +011912_124,7 +02021_17,11 +00041_118,7 +017022_7,14 +01431_51,11 +00021_74,4 +008482_25,17 +00615_57,11 +01948_132,13 +01312_34,7 +00793_164,12 +006742_8,14 +01578_231,14 +00674_22,14 +00957_10,0 +00615_162,11 +015972_108,2 +00394_20,4 +00160_173,11 +01361_226,15 +004532_78,9 +00615_214,11 +00615_38,11 +01769_246,11 +00979_42,1 +01692_128,5 +00722_84,17 +01261_34,2 +000092_134,2 +00228_52,11 +02187_254,16 +017482_15,0 +013302_244,15 +00519_82,11 +004532_190,9 +01929_66,0 +017672_21,14 +017692_193,2 +01769_11,2 +00935_82,7 +01972_267,14 +014882_143,0 +01094_39,11 +00747_42,4 +01834_251,8 +00124_148,19 +02005_108,11 +012282_248,14 +01925_223,8 +007212_74,12 +01693_140,0 +00567_154,2 +016882_109,5 +00793_180,14 +01568_250,2 +008402_76,2 +00314_1,2 +019412_285,14 +01366_156,14 +00275_83,14 +01437_227,11 +014372_218,11 +004082_278,11 +01769_281,2 +00181_38,0 +01839_44,11 +00408_4,2 +011082_48,0 +00232_29,12 +00720_7,0 +00158_67,14 +00793_195,14 +01693_132,0 +01283_28,2 +00158_159,5 +00793_285,14 +00474_38,12 +01145_107,4 +00840_281,2 +016932_112,0 +01048_6,14 +01228_32,14 +009162_45,2 +01767_250,14 +018392_17,2 +01240_230,12 +00566_43,6 +016842_15,14 +017672_5,14 +020572_67,2 +01191_177,14 +000232_167,2 +01161_34,17 +00102_135,16 +01972_33,6 +009512_136,14 +01834_182,8 +00442_107,2 +007212_129,14 +000242_71,7 +01283_57,2 +01145_99,4 +01431_203,11 +01490_37,7 +019252_282,8 +00485_174,1 +017752_162,12 +01948_28,14 +00506_3,2 +01191_98,7 +008402_107,7 +01787_74,9 +007762_8,4 +00761_136,14 +00776_102,14 +01191_8,14 +00535_111,6 +010012_29,2 +00539_131,1 +01094_21,5 +01161_11,17 +00615_223,11 +01971_142,12 +00160_249,11 +017482_68,0 +00296_77,7 +02005_259,11 +00703_96,11 +00160_108,11 +01509_128,0 +00567_46,2 +016932_171,0 +014072_50,12 +01431_111,11 +002752_30,14 +010872_153,5 +01488_233,5 +005502_89,18 +00111_27,17 +016982_71,17 +01948_33,14 +01929_171,0 +01488_66,1 +012562_44,4 +014972_40,2 +00438_198,2 +021622_90,12 +00628_130,14 +02005_183,11 +02021_88,11 +00761_129,14 +00841_29,4 +01877_254,4 +00772_77,7 +00442_260,4 +01597_0,14 +007222_3,17 +009162_104,2 +018792_67,4 +01091_198,16 +017692_117,0 +00730_76,18 +00703_97,11 +01423_67,4 +01698_70,17 +018132_110,11 +01707_63,0 +01904_68,4 +01763_161,2 +01134_126,10 +01839_6,14 +009352_2,14 +01693_178,0 +01497_39,2 +00981_106,5 +016432_82,14 +00314_279,4 +00747_17,6 +017672_68,14 +015972_114,14 +014972_1,5 +02005_247,11 +01161_14,17 +01763_58,12 +00041_52,12 +02187_283,16 +01723_66,15 +01103_9,14 +01706_260,2 +02127_155,17 +00456_43,4 +00509_88,2 +00417_178,6 +014272_118,2 +00729_278,14 +004082_53,1 +00503_89,1 +007212_70,12 +01605_11,14 +00011_37,1 +01065_73,18 +01814_86,11 +016052_85,5 +01409_132,0 +00993_4,14 +01144_174,2 +00993_149,7 +005062_75,6 +007832_177,2 +013712_32,14 +01877_142,4 +007832_147,4 +016932_11,4 +01092_90,17 +016882_135,14 +012722_227,4 +00456_40,4 +01423_91,0 +02127_133,17 +019412_200,14 +017072_33,2 +01929_108,0 +005062_13,2 +01977_169,8 +01145_111,12 +01044_101,4 +013302_45,9 +00674_88,14 +01119_11,14 +01948_192,13 +01044_198,12 +00563_82,6 +01045_268,4 +02094_131,4 +01497_35,2 +002802_107,12 +00079_150,9 +01956_24,1 +00761_125,14 +00124_114,19 +01240_46,2 +02049_49,3 +016882_234,5 +01693_64,0 +01091_123,5 +00408_30,1 +00408_155,11 +00506_129,2 +017692_240,9 +00916_127,2 +01361_212,3 +007212_23,14 +00306_59,7 +00306_15,14 +020572_133,3 +01330_13,2 +014232_238,2 +013302_234,8 +010652_100,11 +00840_150,2 +01941_269,14 +006742_62,14 +021722_144,14 +01219_12,14 +01490_33,7 +00228_139,9 +00275_153,14 +01981_83,5 +00342_56,17 +01423_5,2 +02186_28,5 +009642_150,8 +01763_213,12 +001602_264,13 +00276_74,11 +00509_0,2 +017232_159,15 +012562_88,4 +01568_56,12 +000232_134,6 +01877_51,4 +01091_180,1 +01409_154,0 +01044_12,4 +00566_193,8 +00394_103,17 +007292_188,14 +02177_35,4 +012192_125,5 +00333_18,2 +00821_124,14 +01962_59,0 +02177_39,4 +014882_45,0 +01971_192,12 +00485_84,1 +019252_174,8 +01490_44,7 +007832_89,17 +01331_81,14 +00519_44,17 +00158_247,5 +00721_183,14 +02057_201,3 +00287_69,15 +00729_48,14 +01953_155,4 +01622_61,12 +01092_283,14 +00567_180,2 +018792_49,12 +021622_49,17 +01134_40,10 +011912_165,14 +00228_283,14 +014372_23,11 +003122_30,0 +02030_258,16 +012282_87,14 +01500_18,0 +00729_112,14 +016842_5,14 +01684_31,4 +02138_126,8 +01272_50,2 +01366_44,17 +01488_59,13 +010912_56,1 +00535_14,2 +014232_53,2 +010872_33,14 +01924_75,14 +00550_87,18 +017752_5,2 +013712_37,4 +012722_185,4 +00729_188,14 +004172_104,6 +017072_121,0 +00607_120,5 +01165_72,5 +012282_201,14 +005502_85,18 +01605_296,11 +01605_254,11 +01853_105,11 +01145_159,4 +00506_65,6 +00333_83,0 +00350_42,14 +00426_43,0 +00776_2,14 +00350_230,5 +00124_219,0 +00821_121,2 +01134_246,10 +01929_86,0 +017232_253,15 +007832_130,12 +01240_234,12 +00228_247,11 +00588_143,13 +01408_116,14 +004172_148,6 +01045_52,4 +01091_189,16 +00793_221,14 +01972_79,3 +01578_123,14 +01091_117,5 +01953_189,4 +01813_20,11 +014372_86,11 +017022_88,14 +011912_34,14 +017752_116,2 +00275_93,12 +01091_167,0 +015972_19,0 +01509_133,0 +00563_120,2 +00552_85,2 +007212_252,14 +021912_36,7 +016842_41,4 +00350_31,14 +00128_264,12 +01568_124,4 +00993_119,7 +02187_151,16 +02021_13,5 +01904_118,4 +00438_232,2 +021722_6,14 +01044_88,4 +00552_7,2 +01877_292,4 +000092_107,12 +01723_215,15 +00577_75,7 +00306_54,7 +00916_241,2 +007832_285,5 +010912_162,5 +00677_16,14 +01977_267,4 +00615_111,11 +017072_275,7 +01101_45,7 +01723_25,15 +02088_25,0 +01814_0,2 +014232_147,0 +019412_145,14 +009512_82,0 +017022_32,14 +01361_88,4 +01161_146,17 +01723_140,15 +011612_241,17 +01622_4,14 +017072_239,0 +006092_20,11 +01925_168,8 +00505_106,12 +01134_94,10 +016882_67,5 +01509_186,0 +00128_64,12 +00462_5,14 +012722_136,4 +02127_68,17 +01959_35,6 +01144_110,4 +014882_162,13 +00509_147,12 +01366_83,17 +004082_84,11 +02138_118,4 +00228_195,9 +01834_97,8 +00964_107,8 +016882_7,5 +014232_83,0 +008372_20,11 +016932_292,0 +01643_110,14 +00474_71,2 +02021_107,14 +01839_107,11 +001602_10,2 +01497_20,12 +00607_105,6 +00413_223,14 +01702_53,2 +009642_164,8 +00660_133,0 +004172_299,11 +01763_4,2 +01228_118,14 +005392_192,1 +01240_229,12 +005092_42,2 +00567_109,2 +01330_43,9 +00350_210,5 +010872_205,5 +01145_127,0 +021772_65,12 +017022_22,4 +02030_5,14 +01814_280,11 +00506_86,4 +001022_158,16 +00382_36,7 +00697_44,2 +018122_92,2 +00228_93,11 +012562_98,14 +005092_61,12 +01605_289,11 +02177_59,12 +00681_21,5 +008922_21,0 +02030_51,14 +00228_190,9 +016932_109,0 +01693_162,0 +00232_26,2 +006092_32,11 +01431_238,11 +00453_109,9 +00993_178,7 +01814_114,11 +01048_67,5 +02187_234,16 +00287_42,15 +019252_207,8 +02172_143,14 +01490_56,7 +00821_53,5 +01578_192,14 +01813_69,11 +008372_161,11 +01877_164,15 +01103_86,17 +00453_165,9 +00426_144,0 +01044_131,4 +00539_130,1 +00490_107,2 +01228_105,14 +00456_71,12 +01775_59,2 +00438_67,2 +02012_83,7 +01240_103,12 +01219_112,5 +01408_164,14 +01924_136,14 +01423_32,2 +013712_52,14 +020572_151,3 +01219_105,5 +018342_167,8 +00628_71,7 +01092_70,17 +001602_15,2 +01165_129,14 +01953_297,2 +01568_230,2 +007292_29,14 +00761_164,8 +00776_72,14 +018772_29,4 +01087_295,5 +000232_77,3 +019412_2,14 +011612_197,17 +00840_257,2 +00009_64,12 +00124_244,0 +01331_6,14 +00453_123,9 +00783_141,2 +02005_155,11 +00688_64,4 +005392_94,1 +001242_242,0 +00490_88,2 +01929_115,0 +01723_57,15 +01423_33,2 +01948_191,13 +00456_69,12 +001602_167,11 +009642_183,8 +012282_94,14 +02030_124,16 +00462_173,4 +01272_53,2 +01568_171,2 +01767_242,14 +02030_213,16 +019712_269,4 +01494_67,7 +016052_19,14 +00275_139,14 +007092_33,19 +00453_5,5 +01108_10,14 +01045_197,4 +018122_38,4 +01706_192,2 +00382_101,13 +00935_118,14 +01045_9,2 +015972_65,0 +00023_104,11 +016052_134,5 +001602_171,11 +004672_51,11 +00088_92,14 +01769_245,11 +016982_91,17 +00228_106,11 +019252_25,12 +016882_117,5 +01877_123,4 +007222_68,17 +006972_75,4 +017672_121,14 +00709_75,19 +016982_52,17 +00438_93,2 +02027_106,14 +00009_6,4 +00588_110,13 +017752_24,2 +02127_98,17 +01210_139,6 +01972_241,6 +00490_169,2 +00793_70,14 +015972_71,0 +02027_75,14 +02054_237,4 +01457_76,14 +00287_58,15 +01509_266,11 +000232_114,5 +012282_217,14 +00674_77,14 +01371_71,14 +001022_63,16 +00228_209,9 +01158_21,0 +017752_103,12 +01971_91,12 +005502_122,14 +004172_149,6 +00282_59,17 +01158_91,4 +01240_163,2 +01493_25,11 +01814_49,5 +009162_264,5 +01228_211,14 +00981_77,11 +01408_206,14 +00505_96,12 +01578_140,14 +00993_125,7 +01158_121,4 +01165_50,5 +01161_206,17 +01568_63,12 +01240_118,4 +00342_50,17 +00350_201,5 +009162_118,2 +00697_88,12 +01044_81,12 +014372_241,11 +00158_152,5 +00993_111,7 +00539_223,13 +01925_236,8 +00382_57,17 +02049_203,13 +00280_10,14 +01092_226,9 +00964_180,8 +00730_127,14 +01877_191,4 +00462_175,4 +02138_148,13 +00883_58,11 +00287_111,15 +02187_267,16 +001602_25,2 +01769_121,0 +017692_246,11 +010652_85,18 +01371_53,14 +02030_147,16 +00442_27,14 +02021_36,1 +017232_21,0 +01330_40,9 +00916_203,2 +002752_58,14 +00128_158,2 +00275_72,14 +01101_4,14 +01723_223,15 +010942_47,11 +01953_43,2 +00729_245,14 +010942_102,14 +01877_90,4 +00390_5,14 +02042_74,4 +01956_20,15 +00312_32,0 +01723_289,15 +01692_94,1 +01431_171,11 +00065_187,1 +00124_19,4 +02005_105,11 +00709_89,6 +01431_108,11 +000792_33,9 +02042_143,14 +00158_118,11 +01636_22,0 +019622_21,0 +00505_26,14 +000242_113,2 +00578_26,1 +00519_49,17 +01775_76,12 +01210_289,9 +021722_32,14 +00023_194,2 +01118_14,14 +00793_114,14 +007832_287,5 +01087_58,14 +016882_107,5 +01240_266,2 +004672_34,11 +01972_121,13 +00722_45,17 +00709_20,19 +02127_204,17 +00721_185,14 +00485_189,1 +01101_122,0 +00821_17,14 +00567_273,2 +014272_109,9 +01956_60,14 +00761_37,14 +01427_114,17 +00426_64,0 +00232_28,12 +01578_165,14 +01272_96,2 +00276_29,11 +01228_15,14 +021912_49,7 +01065_84,18 +01448_48,6 +02186_104,14 +00697_74,4 +009642_200,8 +01256_39,4 +01488_148,0 +01972_144,3 +009162_276,5 +01134_170,10 +01956_38,1 +00314_270,4 +01941_151,14 +00417_123,17 +00394_101,17 +020052_13,11 +001242_40,4 +004082_156,11 +012402_239,12 +00408_206,11 +01428_8,14 +002752_74,14 +01972_237,6 +01568_12,2 +00280_180,4 +01119_21,11 +01706_176,2 +00615_75,11 +00709_57,19 +019252_86,3 +01972_276,14 +01087_289,5 +016982_28,17 +00128_273,12 +02062_154,4 +01191_9,14 +00588_211,12 +01834_288,8 +02088_4,0 +008252_4,12 +010872_257,5 +01956_73,14 +005392_209,1 +00408_16,12 +00282_82,11 +00158_147,5 +01597_86,0 +018392_81,11 +01044_229,2 +01045_263,4 +00280_29,12 +00333_134,2 +019242_139,14 +01814_272,11 +00505_226,12 +01044_83,12 +01431_75,11 +01706_22,2 +00160_83,11 +00951_102,0 +014372_55,11 +00747_35,5 +01901_62,14 +00601_54,6 +02030_276,16 +02172_77,14 +00314_69,12 +01144_138,2 +00761_209,3 +00840_141,7 +01693_164,0 +00408_38,1 +01488_180,0 +01048_26,5 +019242_49,14 +01909_140,2 +00021_45,3 +01924_212,14 +007212_95,14 +00793_250,14 +01261_50,2 +01431_36,5 +01092_297,4 +02030_83,16 +00228_203,9 +01688_152,14 +00450_21,14 +01597_110,14 +017232_112,15 +00539_235,1 +00867_78,5 +00342_73,17 +02028_89,2 +00021_110,12 +01134_271,10 +02057_153,3 +020052_269,11 +01428_26,14 +01814_197,11 +01145_133,4 +00442_247,4 +014372_268,11 +01877_234,4 +017672_244,14 +02146_76,18 +00453_7,5 +01692_53,5 +00462_95,13 +02005_243,11 +00761_73,14 +01272_168,2 +00408_18,1 +01904_96,2 +00567_16,2 +019622_34,0 +00566_218,8 +01865_78,18 +00505_158,14 +000092_265,7 +017752_168,12 +012722_252,12 +01361_36,2 +00793_54,14 +01134_17,16 +016922_126,1 +02005_206,11 +00660_269,2 +00079_244,9 +017072_146,1 +00821_76,5 +012192_18,14 +00761_25,14 +008832_16,11 +000252_32,17 +01101_109,13 +019412_16,14 +010912_94,0 +00276_68,11 +00660_285,2 +00577_62,7 +02162_15,14 +00041_149,7 +006972_7,2 +011912_56,7 +01707_62,0 +018392_105,11 +01636_1,14 +01431_149,11 +02191_55,7 +01058_151,2 +00993_13,14 +01941_227,14 +00009_56,12 +00528_218,0 +00228_9,14 +018122_37,4 +010872_129,5 +007092_223,19 +00519_146,14 +01767_101,14 +00546_80,3 +01431_161,11 +00729_166,14 +004082_37,1 +00025_68,17 +00490_61,2 +00426_28,0 +000252_29,17 +00709_190,19 +02094_139,2 +017752_166,12 +010912_47,6 +00550_84,18 +01087_60,14 +00462_212,14 +01763_280,12 +007762_98,14 +007092_184,19 +00342_42,17 +01165_113,5 +01437_183,11 +00867_75,5 +00261_31,12 +01904_36,4 +00350_76,2 +01813_70,11 +01488_197,13 +01834_266,8 +00840_28,2 +010872_73,5 +00793_81,14 +02027_56,18 +01331_30,17 +010912_27,12 +01623_30,5 +00539_156,17 +00821_1,14 +01228_95,14 +00841_56,4 +00867_31,0 +021772_29,4 +00840_149,7 +01804_52,12 +009342_47,0 +01925_75,3 +008372_40,11 +01578_43,14 +00314_263,0 +004532_93,9 +00124_171,0 +009352_18,7 +01092_109,17 +020572_184,3 +016882_279,2 +01448_11,14 +00438_296,12 +000232_148,6 +00567_210,5 +01605_162,11 +01962_55,0 +00079_233,9 +001022_221,16 +01283_27,2 +00993_240,14 +014372_235,11 +01972_13,2 +012192_16,14 +01904_102,12 +00509_183,12 +01953_216,12 +00539_284,0 +01087_194,5 +01767_128,14 +01623_142,14 +017482_100,0 +00261_37,4 +00601_48,17 +02094_59,2 +01688_26,5 +00280_11,14 +016092_24,17 +02138_77,12 +00697_47,2 +00935_84,7 +00916_275,5 +005062_24,2 +00993_143,7 +001022_124,16 +00567_23,2 +01597_43,0 +01423_107,0 +01044_187,4 +00160_165,11 +009512_121,0 +014272_82,17 +012722_101,2 +014372_47,11 +021722_56,14 +019412_292,14 +019042_165,12 +01813_111,11 +02005_200,11 +007292_89,14 +01723_137,15 +01769_149,9 +020052_61,11 +014232_123,0 +00023_132,6 +00442_220,4 +020052_135,11 +01877_66,4 +01692_129,5 +01622_84,13 +02049_208,13 +00314_269,4 +01839_158,1 +018122_55,4 +00875_68,2 +011912_64,7 +007832_95,17 +008372_138,11 +01177_75,4 +000092_272,12 +01605_78,5 +00783_157,2 +00111_39,17 +01622_53,0 +01977_18,14 +00566_125,8 +016982_24,17 +02127_94,17 +01412_61,0 +002802_159,12 +01272_259,12 +01001_283,5 +008482_107,17 +01094_50,11 +016052_55,5 +01058_115,4 +014882_230,5 +014882_149,0 +00550_69,18 +020572_3,2 +01408_146,14 +009642_299,14 +01045_201,4 +01702_41,14 +00964_233,3 +01901_192,14 +00841_34,4 +00287_3,4 +007832_125,6 +00011_46,0 +01904_46,12 +00485_101,1 +00916_265,5 +007292_126,14 +01578_212,14 +005282_53,2 +01145_166,4 +00314_110,12 +013302_130,6 +01977_293,14 +00709_47,19 +00538_20,17 +018392_133,1 +00438_288,2 +01092_212,17 +01046_5,14 +019712_233,12 +01358_35,1 +020572_192,3 +01775_52,12 +01431_144,11 +012562_19,4 +016052_268,11 +00503_101,1 +01693_148,0 +02162_51,17 +019242_57,14 +00276_38,11 +012402_263,4 +014372_169,11 +00546_71,3 +00539_135,1 +00442_78,2 +00538_88,2 +007212_238,14 +02054_20,2 +018342_260,8 +011912_18,14 +009162_164,2 +014372_163,11 +00228_224,14 +01578_221,14 +00768_68,7 +010012_128,5 +01698_51,17 +002752_113,14 +01177_83,14 +00475_145,9 +02027_93,14 +01165_48,5 +00079_215,1 +018342_289,8 +014282_34,14 +001602_116,11 +01723_288,15 +01636_116,14 +019042_87,4 +017022_0,14 +01959_4,6 +019252_112,3 +01001_179,5 +014372_227,11 +00848_59,17 +01904_16,2 +00840_76,2 +00875_79,2 +01428_78,14 +01972_231,3 +01437_28,11 +00456_189,14 +013302_245,15 +01091_251,2 +021722_25,14 +01879_39,4 +009162_131,2 +01763_246,12 +00275_108,14 +000092_207,12 +00761_54,14 +02005_13,11 +01091_69,1 +01767_256,14 +01431_163,11 +00475_35,5 +018652_22,11 +00509_124,2 +00021_77,4 +01578_173,14 +01256_11,14 +00761_203,3 +021912_107,7 +016932_154,0 +017692_279,2 +01956_65,14 +01707_92,0 +011612_266,17 +01330_272,15 +011912_196,14 +012192_95,5 +009512_75,0 +01924_240,14 +01058_110,4 +01092_76,17 +00703_115,14 +00442_233,4 +00934_29,1 +00021_125,2 +00916_6,2 +00718_134,14 +00892_94,2 +00382_28,7 +00892_92,2 +01412_19,0 +018342_240,8 +01201_15,14 +017752_97,12 +00821_112,5 +00011_13,0 +00993_112,7 +008252_7,12 +008372_69,11 +00552_27,7 +01812_26,4 +01272_55,4 +01865_123,1 +00957_39,0 +00159_62,2 +02028_29,15 +00509_89,2 +005092_34,2 +008402_280,2 +00408_235,11 +01184_3,14 +00276_26,11 +01953_233,4 +00228_299,7 +01684_41,4 +01493_181,1 +018122_52,4 +00729_287,14 +00761_57,14 +01049_17,7 +017752_147,2 +001242_123,19 +01748_11,0 +021462_62,18 +004172_163,6 +00287_112,15 +00688_16,2 +01688_20,5 +00550_125,14 +019252_9,14 +019242_116,14 +01977_14,14 +002802_133,12 +02030_257,16 +01431_217,11 +00417_89,6 +006742_111,14 +00840_26,2 +02027_80,14 +011912_29,14 +00730_57,18 +01240_164,12 +01605_103,5 +00181_87,0 +01488_2,13 +012282_297,14 +012192_60,5 +016932_55,0 +000792_192,9 +01428_15,12 +00408_55,1 +01412_50,0 +01693_121,0 +00474_92,2 +00567_110,2 +01924_127,14 +019252_46,12 +005092_204,12 +01058_92,2 +02030_158,16 +014122_25,0 +000092_120,0 +007832_208,2 +009162_56,2 +005092_78,2 +00729_167,14 +01191_155,14 +000092_131,2 +00535_200,0 +016432_62,4 +01361_201,3 +021722_103,12 +00729_135,14 +00124_136,19 +010872_63,14 +001602_153,11 +00840_259,2 +01814_26,5 +016982_65,17 +00840_153,7 +007292_256,14 +000792_280,9 +00509_26,2 +02127_160,17 +00552_33,7 +00761_44,14 +017482_6,11 +010012_72,12 +01909_110,4 +00628_142,14 +00793_185,14 +00677_65,14 +02049_39,8 +00102_179,16 +00490_171,2 +01962_36,0 +00951_53,0 +00528_126,2 +00509_180,12 +00793_232,14 +017692_263,2 +02005_294,11 +006092_65,5 +004532_269,9 +00535_220,4 +014372_240,11 +00951_84,0 +008482_18,14 +004172_62,17 +01941_143,14 +01045_118,4 +00519_75,11 +001022_22,2 +009512_125,0 +019712_84,4 +014372_69,11 +01971_81,2 +01814_85,11 +01748_49,7 +012562_80,12 +00697_100,12 +00730_85,18 +009642_89,3 +00079_67,9 +00761_254,3 +018342_225,8 +005882_206,12 +01488_36,0 +01145_131,4 +01409_232,14 +01901_16,14 +01953_275,12 +019042_156,2 +018132_1,14 +01956_74,14 +01769_134,9 +001242_14,4 +01972_229,3 +007832_196,12 +014882_22,1 +00793_196,14 +00506_110,2 +01493_60,1 +01412_47,0 +00768_44,7 +01007_127,0 +00793_14,14 +005282_136,4 +01904_138,12 +01494_21,7 +013302_207,9 +017692_70,9 +001112_62,17 +01804_119,12 +00588_95,13 +00021_36,6 +01144_82,6 +00417_279,1 +00509_162,2 +00394_104,17 +00709_24,19 +01228_180,14 +00128_242,12 +01228_7,14 +019252_192,8 +01767_220,12 +008402_138,2 +018342_120,8 +01351_117,7 +017672_23,14 +010942_62,11 +00009_195,0 +005502_127,14 +00539_94,1 +00601_22,7 +01045_228,4 +00453_299,9 +004532_273,9 +00566_8,14 +01423_69,4 +01865_109,18 +02094_83,12 +00475_108,9 +00660_237,0 +007212_256,14 +018132_28,11 +00509_54,2 +01177_30,4 +00776_91,14 +000232_153,6 +010872_183,5 +02057_99,12 +010872_256,5 +007092_74,19 +01688_221,5 +01490_10,7 +00709_213,19 +02030_97,16 +00079_23,9 +00761_26,14 +02127_275,17 +01501_82,4 +00160_110,11 +00588_138,13 +01977_268,4 +02030_187,16 +00474_30,2 +01578_198,14 +01488_125,13 +00314_67,12 +00296_10,14 +01582_87,2 +001022_159,16 +00456_163,12 +01065_55,18 +021622_6,14 +01457_74,14 +00729_210,14 +01909_186,4 +00287_264,4 +01312_2,14 +012402_44,2 +00438_208,2 +010012_241,5 +016982_125,14 +01409_183,0 +021722_142,12 +01829_0,2 +012722_261,2 +00588_124,13 +01087_59,14 +01597_31,0 +00837_1,14 +00962_46,13 +000792_273,15 +00916_131,2 +01457_81,14 +020052_213,11 +002802_90,2 +020572_15,2 +01972_283,14 +01853_103,11 +01909_10,2 +012192_120,5 +019252_285,8 +01431_6,11 +00660_8,14 +021772_0,14 +00867_141,5 +00837_172,14 +016882_137,14 +01261_53,2 +01929_227,14 +02057_175,3 +01929_228,14 +01330_210,18 +00025_16,17 +01144_133,2 +019252_158,3 +01953_173,12 +01091_20,12 +019412_166,14 +00677_68,14 +01437_115,11 +00535_73,12 +00041_167,7 +01144_136,2 +02094_143,2 +01058_141,2 +008402_214,7 +00697_93,12 +00023_138,6 +021462_6,14 +02127_36,2 +01812_59,4 +00442_217,4 +01145_43,2 +00242_79,4 +01977_99,8 +010912_261,14 +012282_12,14 +01953_50,2 +00505_62,6 +01509_256,11 +02191_47,7 +009512_64,0 +01058_129,2 +01408_264,14 +00506_104,2 +01956_32,18 +003062_82,7 +00761_11,14 +01134_129,10 +021462_88,18 +01240_218,4 +01437_268,11 +00021_81,4 +01813_151,14 +004532_49,9 +00837_75,11 +016882_155,14 +016092_35,17 +01101_2,14 +001602_115,11 +018652_122,1 +00729_171,14 +01769_287,2 +01623_15,14 +00916_78,2 +01769_165,11 +02012_125,14 +01812_22,2 +01412_94,0 +011082_36,13 +00841_88,14 +01184_63,5 +01941_100,14 +01834_161,8 +01853_10,14 +007292_84,14 +007832_53,2 +00232_164,14 +011612_254,17 +00505_95,12 +01693_183,0 +00475_76,9 +00503_213,9 +02187_65,16 +00509_163,2 +001242_182,0 +019242_138,14 +01092_100,17 +00729_230,14 +021912_91,7 +00475_83,9 +00232_117,13 +02030_178,16 +017232_102,15 +020572_73,2 +021462_168,14 +00550_23,18 +009642_19,14 +00535_106,12 +016932_197,0 +00867_149,0 +00538_28,1 +001022_10,2 +016882_274,2 +00840_82,2 +01929_37,0 +008402_65,2 +00867_26,14 +01626_17,2 +011772_89,4 +01437_47,11 +01924_133,14 +01962_95,0 +00438_168,2 +010012_233,5 +007292_118,14 +00588_78,13 +000242_30,7 +00981_22,11 +010942_109,14 +00041_22,2 +00296_106,14 +00462_167,15 +01108_33,15 +02054_33,2 +00456_80,4 +00079_218,15 +01493_127,1 +01941_120,14 +00588_111,13 +00703_111,14 +000792_234,9 +00280_154,2 +01158_1,12 +01977_171,8 +01622_35,13 +01834_162,8 +00916_264,5 +01330_20,2 +01877_38,4 +02049_229,3 +02191_76,7 +005392_125,1 +021462_127,11 +00615_81,11 +01091_37,12 +01091_186,13 +018772_128,4 +01145_138,12 +02094_92,4 +01692_60,5 +000092_276,2 +00275_160,14 +01692_123,1 +00462_151,13 +010012_112,5 +02049_193,13 +009642_128,8 +00566_119,8 +018772_59,4 +01312_9,14 +02028_8,4 +02027_50,18 +00519_57,17 +00011_128,2 +01431_268,11 +00628_104,7 +013302_35,17 +014272_45,17 +02054_213,12 +007832_230,5 +00242_34,12 +00490_150,12 +001602_205,11 +00519_145,14 +01228_178,14 +01929_191,0 +012282_204,14 +00438_285,2 +019252_254,8 +017232_162,15 +01814_143,5 +00993_62,6 +00314_144,4 +010872_54,14 +019252_132,3 +008482_109,17 +00292_3,11 +00158_222,5 +00825_8,12 +01626_43,7 +01568_116,2 +00535_0,2 +01948_101,13 +00242_260,4 +018342_174,8 +01437_13,11 +01007_235,0 +002752_118,12 +021772_41,14 +021772_72,14 +01769_94,2 +00314_161,0 +02138_103,12 +00660_72,0 +02030_117,16 +01145_81,4 +017672_130,14 +01814_140,5 +01769_233,9 +011612_293,2 +01408_175,14 +02054_264,12 +019252_272,8 +01351_71,17 +00438_24,2 +00941_23,0 +00438_134,2 +00916_183,2 +00519_61,17 +01814_12,5 +00674_14,14 +01240_122,2 +00417_120,17 +00158_92,11 +019412_286,14 +01924_34,14 +01723_268,15 +00242_214,12 +01161_82,17 +02127_281,17 +01981_125,0 +009162_217,2 +014372_284,11 +00916_36,2 +001602_56,11 +02030_163,16 +01706_90,2 +014122_56,0 +01636_16,4 +01045_136,4 +01144_25,5 +02062_18,2 +00964_170,8 +01361_197,3 +00275_122,14 +00934_21,1 +01706_145,2 +01092_255,17 +016922_95,1 +012402_293,4 +00825_51,2 +017072_246,0 +01046_4,14 +01091_74,1 +01929_15,12 +01509_50,0 +01158_4,12 +00442_166,4 +010652_42,18 +00718_66,19 +01065_72,18 +00730_72,18 +019242_172,14 +018392_64,11 +01643_36,12 +007222_51,4 +01925_15,14 +01134_190,10 +012722_258,12 +00041_114,7 +00124_110,19 +007292_275,14 +011772_16,4 +014282_52,14 +01723_212,15 +01877_70,4 +01568_216,2 +00519_120,7 +00160_252,11 +01428_28,14 +01723_67,15 +012722_79,2 +010872_126,5 +019042_116,4 +00462_171,4 +00597_11,14 +00426_21,0 +01925_226,8 +014882_201,1 +00550_98,18 +01330_245,15 +012282_139,14 +01929_179,0 +008402_188,2 +011772_115,14 +01929_208,14 +009622_19,0 +01643_38,12 +005282_134,4 +002802_204,12 +00951_117,0 +004532_251,9 +00228_103,11 +01909_66,2 +01605_71,5 +02012_28,17 +017672_127,14 +01605_6,14 +02021_89,11 +01882_78,14 +017232_146,15 +01493_3,11 +01879_46,12 +00413_111,0 +013302_53,9 +018342_136,8 +001242_148,19 +019042_18,2 +00761_146,12 +01723_274,15 +01431_129,11 +00688_19,2 +00761_152,6 +014372_109,11 +007222_52,4 +009642_57,3 +00609_85,14 +005392_60,1 +009162_122,2 +02057_136,3 +00535_152,0 +01813_142,14 +01767_3,14 +01161_238,17 +00840_292,2 +000232_128,6 +02127_110,17 +00079_21,9 +00474_147,2 +00287_110,15 +02094_151,2 +00228_288,2 +012562_71,12 +00962_23,0 +00916_27,2 +021912_118,14 +00462_56,4 +01092_186,17 +00009_241,7 +010652_98,11 +01968_7,14 +00688_39,4 +00124_168,19 +00793_294,14 +003062_102,14 +00601_108,0 +00783_112,17 +01879_7,2 +00709_290,12 +006742_43,14 +00382_20,7 +00009_12,2 +000792_210,9 +00280_186,2 +00867_10,14 +01044_76,12 +00276_88,11 +01001_12,2 +00280_97,12 +008402_287,2 +00276_97,11 +01134_275,10 +01971_116,2 +00475_46,9 +00709_239,19 +019242_225,14 +00688_98,2 +00506_138,2 +016882_84,5 +01769_4,2 +019592_37,6 +00688_9,2 +017482_11,0 +019252_97,3 +01981_29,5 +000092_101,12 +019412_194,14 +01787_32,1 +000232_54,3 +01924_149,14 +01707_247,0 +017672_43,14 +009622_11,0 +00615_20,11 +008372_109,11 +02030_86,16 +00280_57,2 +01493_247,1 +00628_45,7 +00567_162,2 +00160_94,11 +02162_53,7 +014372_11,11 +02094_106,12 +00417_166,6 +00503_257,9 +016842_34,4 +018772_7,4 +008922_13,0 +02005_241,11 +01046_40,7 +01901_30,5 +00660_129,0 +00242_298,12 +00442_113,2 +016932_166,0 +01767_149,14 +01706_8,2 +016882_89,5 +008402_163,2 +017692_93,0 +007222_109,17 +013302_144,9 +01065_62,18 +01058_137,2 +01775_135,12 +01049_34,7 +01813_146,14 +01087_49,14 +00503_68,6 +01814_42,5 +018132_32,11 +01971_208,2 +00674_4,14 +00011_26,4 +00722_111,17 +00442_264,4 +00981_56,11 +02172_158,14 +01145_100,4 +004532_92,9 +00615_178,11 +007212_65,14 +00552_70,7 +021912_19,7 +013302_181,3 +01948_187,13 +00408_183,11 +00242_27,2 +01431_234,11 +012612_70,4 +02186_38,5 +00282_86,11 +01488_35,0 +00563_0,2 +001022_135,16 +01182_21,13 +01044_30,4 +01165_112,5 +02027_86,14 +01272_144,4 +00408_35,1 +01087_74,5 +01437_253,11 +02186_98,14 +017692_231,9 +000232_168,2 +00709_27,19 +00509_207,12 +01706_128,2 +00160_148,11 +00528_102,2 +01191_17,14 +01578_194,14 +007212_254,14 +02094_100,2 +00438_194,2 +010872_189,5 +01423_38,2 +01929_87,0 +009512_68,0 +021772_38,4 +001242_187,0 +00462_214,14 +01427_50,14 +02187_0,11 +01108_82,14 +01925_237,8 +01437_277,11 +000092_58,12 +008922_48,0 +01087_214,5 +01901_159,12 +014372_40,11 +00160_186,11 +010872_53,14 +01045_288,4 +002802_15,14 +01101_179,14 +004082_86,11 +01568_166,2 +00981_8,2 +000252_19,17 +00772_105,14 +00837_31,11 +00729_265,14 +012722_251,12 +00783_11,2 +01191_82,7 +01423_203,0 +020052_94,11 +01361_143,3 +019252_223,8 +01330_262,12 +00158_72,2 +01882_51,11 +005392_124,1 +001022_168,16 +00467_21,11 +00875_21,2 +00566_49,8 +00601_19,7 +01330_154,18 +00462_145,13 +020052_172,11 +01219_5,14 +00793_133,14 +007762_80,4 +00566_80,8 +016922_136,5 +02030_77,14 +00160_234,11 +00607_93,6 +01201_50,11 +006972_90,12 +017692_29,2 +00417_173,6 +00276_21,5 +00181_34,0 +016052_72,5 +009162_9,2 +01814_81,11 +01509_285,11 +005392_0,6 +01693_91,0 +02162_3,14 +02012_66,17 +01161_60,17 +006972_55,12 +00276_56,11 +00079_3,9 +016922_88,1 +00979_4,14 +00539_33,6 +005282_146,4 +01118_74,7 +00546_133,3 +00242_40,12 +01972_5,2 +01201_39,11 +01609_18,17 +01834_49,8 +00660_123,0 +00964_160,8 +01568_28,2 +01692_137,5 +005282_132,4 +020052_229,11 +01707_71,4 +012402_107,12 +02127_109,17 +00964_54,3 +015972_14,0 +01981_118,0 +019252_92,3 +00079_290,9 +00417_242,6 +005092_51,2 +006742_127,14 +00292_36,11 +00761_177,3 +005092_55,12 +01971_230,2 +01493_296,1 +008252_35,12 +00883_47,11 +009642_158,8 +00783_25,2 +00840_33,2 +00660_65,0 +016982_53,17 +01597_108,2 +020052_184,11 +01929_10,14 +011912_37,14 +00729_193,14 +006092_21,11 +01948_116,13 +00128_38,12 +00228_61,11 +017232_196,15 +012192_43,5 +00475_124,11 +00528_23,2 +01924_28,14 +00228_128,1 +00417_9,14 +00567_213,5 +00957_7,0 +01045_165,4 +01763_199,2 +00124_165,19 +01971_30,2 +01240_121,2 +01065_116,14 +00065_142,1 +01101_127,0 +00509_199,2 +007292_50,14 +011912_170,14 +01909_136,12 +00280_113,4 +00287_289,4 +017692_127,11 +01158_125,1 +017752_144,4 +009342_49,0 +01623_8,14 +01448_82,6 +01972_268,14 +018792_112,2 +01924_37,14 +00519_19,7 +00840_241,2 +00615_24,11 +00275_88,14 +01767_203,14 +009622_77,3 +00009_35,0 +01636_0,14 +00242_140,2 +01409_115,0 +011612_26,17 +017692_169,11 +01091_225,6 +01283_32,2 +00875_36,2 +004172_223,7 +00503_189,9 +00079_178,9 +015972_46,0 +01723_3,4 +01763_75,2 +01706_114,2 +00111_69,14 +00474_209,2 +00282_54,17 +01091_168,0 +01158_67,0 +001022_154,16 +01605_208,11 +021462_166,14 +009622_26,4 +012612_85,2 +02027_103,14 +01044_34,4 +01684_33,4 +02162_95,6 +00065_199,1 +018342_224,8 +00563_47,6 +00011_133,12 +01091_235,12 +001602_228,1 +00025_78,17 +004082_165,11 +017072_5,2 +00009_263,7 +020572_54,2 +000792_173,9 +00009_66,12 +00438_187,2 +020052_60,11 +00124_130,19 +00408_130,13 +00674_53,14 +00462_184,14 +01161_194,17 +00474_36,2 +00021_29,4 +013302_48,9 +00041_144,7 +00102_83,16 +00718_109,19 +00539_224,13 +01493_225,1 +00962_69,3 +00615_65,11 +01493_179,1 +02062_6,2 +01693_159,0 +00615_13,11 +00242_126,12 +01278_169,4 +02054_156,12 +01427_5,14 +02057_177,3 +01001_39,4 +01210_282,9 +01408_129,14 +007762_92,14 +01971_215,2 +018342_125,8 +005282_122,2 +009162_286,5 +00453_94,9 +00413_205,12 +021462_119,18 +01092_218,6 +01953_188,4 +00102_155,16 +00578_15,12 +00601_38,7 +00102_182,16 +008482_40,17 +005092_212,2 +00546_30,14 +01692_143,14 +01968_107,14 +019242_14,14 +005502_98,18 +00160_41,11 +005882_204,12 +01091_73,1 +00588_226,2 +007222_50,17 +00567_282,2 +001242_171,0 +001022_64,16 +005392_114,1 +00935_112,14 +019242_63,14 +01941_30,14 +02162_123,1 +01330_293,9 +00159_19,0 +00505_196,7 +00660_215,0 +01839_147,1 +01693_279,0 +01925_112,3 +01693_55,0 +00722_105,17 +02187_100,16 +01723_185,15 +00848_93,17 +01787_56,9 +012722_78,2 +01493_249,1 +017482_51,7 +01409_79,0 +01812_27,4 +01787_53,9 +01330_5,2 +00350_26,14 +01331_49,17 +00382_30,7 +019042_10,2 +00709_211,19 +00296_99,14 +00306_50,7 +007292_113,14 +00275_18,14 +00009_20,12 +00934_40,5 +02005_196,11 +013332_30,2 +018392_54,11 +00993_92,7 +00935_31,7 +00566_108,3 +01261_6,2 +018342_147,8 +01408_181,14 +02057_143,3 +00453_88,9 +00456_29,12 +00011_132,4 +00916_77,2 +00453_287,9 +00709_203,19 +01182_116,14 +01283_14,2 +00232_39,12 +01448_112,14 +002752_125,14 +01693_90,0 +02172_202,14 +010872_22,14 +00011_65,2 +00296_72,7 +01101_65,17 +01636_85,0 +01108_2,14 +005392_58,1 +00261_12,2 +00964_31,14 +01706_186,2 +00453_19,9 +00413_137,0 +00615_138,11 +01091_35,12 +00539_221,1 +00519_29,7 +00941_13,19 +01210_168,6 +01925_42,4 +007212_245,14 +00079_131,9 +01330_151,9 +01409_182,0 +01509_257,11 +01437_153,11 +017692_113,2 +00628_24,7 +02049_153,13 +00993_259,14 +004172_20,6 +01423_205,0 +01046_87,7 +01636_67,0 +00875_22,2 +005502_2,14 +001602_43,11 +011612_249,17 +00275_134,14 +012282_161,14 +01723_117,15 +00021_51,3 +001022_243,16 +006742_13,14 +007212_19,14 +00951_107,0 +01201_60,11 +00677_108,14 +00721_223,14 +02094_65,2 +02127_143,17 +004532_170,1 +01626_145,2 +01707_221,0 +00462_33,14 +02146_97,18 +01087_80,5 +02054_212,12 +00275_95,12 +01408_3,14 +01839_53,11 +017482_58,0 +01092_287,14 +007222_45,17 +00160_0,5 +00528_55,2 +01092_239,1 +017672_268,14 +01622_11,14 +018342_134,8 +00314_257,4 +01929_102,0 +00342_80,17 +00312_23,0 +009162_172,2 +018132_7,0 +00287_218,15 +014372_8,11 +014272_58,12 +00475_2,0 +004532_289,9 +00677_52,4 +00722_85,17 +01330_102,6 +01972_257,14 +01568_125,2 +01256_38,4 +00287_246,4 +007092_44,19 +00490_162,2 +01877_270,4 +009162_31,2 +01087_210,5 +01814_260,11 +01877_296,4 +004532_158,9 +00722_59,4 +01509_187,0 +016432_8,14 +009642_98,8 +019712_236,12 +021912_114,14 +00552_94,2 +01597_2,14 +017022_19,12 +019042_142,12 +001602_8,2 +01578_158,14 +00503_151,9 +00528_187,0 +005502_26,18 +00102_29,0 +02187_245,16 +01240_116,4 +007092_252,19 +01706_184,2 +01087_6,14 +01409_72,0 +01723_107,15 +00588_102,13 +00993_213,6 +012282_6,14 +01493_118,1 +00552_78,7 +021622_102,6 +00535_276,6 +02186_45,5 +008482_141,14 +00474_259,2 +00490_84,2 +001602_259,13 +020052_169,11 +01134_14,16 +018342_86,8 +01118_51,7 +01748_80,0 +00088_49,5 +016882_121,14 +005392_207,1 +00703_82,11 +01145_297,1 +00840_79,2 +02042_82,14 +008372_123,11 +021772_43,14 +007212_127,14 +019592_82,6 +00453_81,9 +00566_277,8 +01092_291,14 +005392_127,1 +00023_27,2 +01228_39,14 +01636_75,0 +00535_90,2 +00475_60,9 +01044_139,4 +00475_163,9 +01272_70,4 +02186_109,14 +02042_1,14 +01437_166,11 +02057_45,2 +00825_58,2 +02127_128,17 +00761_213,3 +005882_81,13 +00175_70,4 +004532_267,9 +01408_277,14 +017232_244,15 +00951_67,0 +00287_162,4 +00450_71,13 +00615_133,11 +00709_289,12 +00485_24,2 +016932_200,0 +018792_33,4 +000792_191,9 +009512_159,14 +00128_125,2 +009342_30,1 +00550_127,14 +000242_89,7 +005392_188,1 +008482_37,17 +00578_116,14 +00550_67,18 +01191_103,7 +01877_213,4 +017752_77,12 +01219_89,5 +01578_44,14 +00124_245,0 +017692_122,0 +009642_210,3 +01240_8,2 +00567_252,5 +010012_177,5 +00578_90,1 +01968_70,7 +00025_41,17 +00160_7,2 +019412_252,14 +020052_257,11 +02187_58,16 +01493_288,1 +01702_65,14 +01165_19,5 +00124_241,0 +019712_40,2 +00615_156,11 +01977_102,8 +016052_108,5 +00275_163,14 +00709_248,19 +00821_11,14 +01045_186,4 +01605_68,5 +000232_123,5 +00546_196,14 +01578_135,14 +01767_125,14 +00408_200,11 +00158_65,14 +00609_27,11 +01763_5,2 +018652_106,18 +00128_31,12 +00413_18,14 +02149_25,17 +016432_28,14 +00282_89,11 +02094_154,2 +017692_146,9 +004532_131,9 +00426_73,0 +020052_124,11 +01692_31,2 +01278_43,2 +02127_186,17 +007222_97,17 +007762_17,15 +012722_114,2 +008252_0,12 +010942_77,11 +00697_79,5 +01693_45,5 +008372_143,11 +01134_108,10 +020572_110,2 +010942_53,11 +02187_108,16 +00783_111,17 +01904_65,2 +006742_80,14 +009352_20,7 +02149_26,17 +020052_152,11 +00674_48,14 +01101_96,1 +00539_239,1 +011912_45,14 +00578_71,17 +01769_215,9 +01953_193,4 +01001_165,5 +011612_20,17 +00552_28,7 +00408_263,13 +01812_101,2 +00535_45,2 +00065_265,12 +01763_74,4 +01087_125,5 +00390_53,5 +00981_29,11 +00232_111,13 +020572_29,2 +020572_88,12 +00730_80,18 +020052_176,11 +01767_239,14 +02138_163,13 +00021_136,12 +00453_286,9 +02005_174,11 +00159_20,0 +00382_26,7 +00417_153,6 +01925_122,3 +00503_146,9 +002802_236,12 +01941_130,14 +00883_27,11 +01184_73,5 +01763_172,12 +017672_54,14 +021462_58,18 +016932_168,0 +02146_42,1 +005882_217,12 +01924_111,14 +00840_167,7 +009512_117,0 +021772_53,12 +01787_64,9 +01981_86,5 +019242_97,14 +021622_88,12 +01497_23,2 +021722_195,14 +00282_25,7 +004172_259,11 +020572_123,6 +01007_191,1 +01834_14,14 +00474_236,2 +009162_29,2 +012192_62,5 +00442_104,2 +01177_31,4 +01065_103,11 +02127_243,17 +017072_88,4 +00951_151,14 +00009_1,4 +00883_73,11 +007832_35,2 +011912_119,7 +014372_287,11 +00867_21,14 +01437_289,11 +01925_268,8 +00079_237,9 +01272_216,12 +00462_170,4 +005092_177,2 +00588_57,13 +00588_137,13 +001112_58,17 +02062_145,4 +00964_81,3 +017752_110,12 +008402_51,2 +00916_51,2 +00567_160,2 +00841_26,12 +00306_64,7 +01769_125,11 +01494_42,7 +00438_52,2 +003062_25,7 +013302_77,3 +01692_4,14 +02049_93,3 +01493_194,9 +01568_23,2 +005282_223,0 +00546_13,14 +01108_8,14 +00079_176,9 +00721_240,14 +00941_43,13 +01707_119,0 +00158_28,14 +00287_54,15 +00875_49,2 +00314_93,12 +013302_192,13 +01787_65,9 +00025_88,17 +018772_257,4 +008832_20,11 +008922_82,2 +02012_41,17 +00462_129,13 +00009_245,12 +01427_85,2 +01272_192,2 +001602_152,11 +01865_86,18 +00934_17,9 +007092_206,19 +00793_10,14 +016882_169,14 +016932_150,0 +00768_61,7 +01119_104,5 +01065_8,5 +00280_203,12 +009162_95,2 +02177_43,14 +00730_59,18 +00964_173,8 +01605_262,11 +002752_40,12 +00730_135,14 +012282_10,14 +016932_113,0 +00730_138,14 +00485_166,1 +01240_19,2 +014372_264,11 +00688_58,4 +021622_129,5 +009642_107,8 +01261_37,2 +01623_3,14 +005092_176,2 +020052_294,11 +012722_32,2 +005282_73,2 +01924_239,14 +01240_40,2 +00175_73,4 +01423_12,2 +01775_51,12 +00892_66,2 +01972_15,2 +01763_43,2 +01977_32,2 +00024_65,7 +01500_54,4 +00275_22,14 +00793_73,14 +01568_141,12 +00438_14,2 +01501_35,14 +01787_51,9 +018792_34,4 +02027_133,14 +01001_18,12 +00023_48,3 +007212_33,12 +02027_4,14 +01814_227,5 +01431_232,5 +017692_52,9 +010872_220,5 +00280_56,2 +01901_100,5 +00519_147,14 +010942_17,2 +016982_31,17 +00615_159,11 +01684_11,14 +017692_236,9 +01877_238,4 +01605_129,5 +012722_207,4 +00462_67,13 +00503_100,1 +01834_48,8 +02187_232,16 +01693_175,0 +005282_193,0 +01877_11,4 +002802_255,14 +01814_101,11 +01058_123,12 +00607_115,5 +01371_68,14 +019242_247,14 +01045_28,2 +01500_39,19 +00394_25,17 +01278_141,4 +005092_147,12 +01597_68,0 +00821_79,5 +00413_63,0 +021622_16,14 +018122_112,2 +016932_167,0 +01501_72,12 +00729_91,14 +01597_102,0 +00979_92,1 +02186_86,5 +01210_74,17 +007222_73,17 +01941_221,14 +00462_24,14 +00011_11,0 +01045_59,4 +021722_47,4 +00979_36,1 +01366_22,14 +01706_229,2 +00729_32,14 +008402_67,2 +01698_74,17 +016882_54,5 +01948_164,13 +012402_144,12 +00079_39,1 +005392_288,5 +012402_53,12 +019242_151,14 +000242_48,17 +016932_193,0 +00276_124,5 +02172_157,2 +01688_143,14 +014882_69,0 +01767_238,14 +01161_276,17 +00709_299,12 +00158_90,11 +000232_81,3 +02146_38,11 +01101_48,7 +008402_156,7 +01457_3,14 +01366_137,5 +000092_119,7 +01578_211,14 +000792_243,9 +01605_144,5 +00793_45,14 +000792_127,9 +02062_9,2 +00615_55,11 +01698_97,17 +02172_102,12 +00408_24,1 +00232_133,13 +00793_284,14 +00761_59,14 +01408_136,14 +01767_68,14 +01853_125,14 +00566_233,8 +01091_146,5 +00979_35,1 +02062_129,4 +00825_87,2 +00417_38,17 +005882_35,4 +010912_202,1 +00023_57,3 +01044_228,2 +00709_8,19 +01901_83,0 +009162_136,2 +01977_31,2 +01509_18,2 +00783_2,2 +005062_50,4 +02094_126,4 +017232_40,15 +007182_29,19 +00382_125,5 +00916_115,2 +00509_48,2 +00615_42,11 +00793_49,14 +019622_85,0 +01428_43,4 +01272_235,2 +02146_130,5 +00981_76,11 +010012_76,12 +02021_43,1 +014232_120,0 +00892_44,0 +00041_159,7 +018122_78,2 +01626_97,7 +01261_26,2 +014372_114,11 +014232_101,0 +01769_129,11 +00628_10,2 +00450_48,12 +02049_28,6 +01500_11,1 +021722_98,14 +00009_18,12 +01901_133,0 +00382_122,19 +01578_4,14 +012562_2,14 +007832_252,5 +01959_45,6 +00426_60,0 +00916_173,2 +01091_136,5 +01924_216,14 +01161_119,17 +016882_133,14 +02054_59,2 +019412_165,14 +01228_62,12 +01272_41,2 +01048_36,5 +01804_67,4 +017482_96,0 +00232_141,4 +00867_198,14 +00566_245,8 +01693_248,0 +00528_89,2 +02172_86,14 +016432_63,4 +001242_180,0 +00509_6,2 +02049_188,13 +00228_138,9 +008402_233,2 +012722_21,2 +01045_297,4 +02027_117,14 +00688_29,12 +00228_2,14 +017692_176,2 +002752_47,14 +012192_127,5 +01001_91,5 +00462_194,14 +01723_20,0 +02187_72,16 +002802_98,12 +00783_225,5 +007092_132,12 +018792_9,2 +00528_114,2 +015972_1,14 +016882_173,14 +019042_126,2 +00079_171,9 +011772_5,14 +00408_178,11 +00546_115,3 +001242_112,19 +01723_277,15 +00474_216,2 +00280_246,14 +01103_56,9 +004172_191,17 +01240_131,12 +016052_117,5 +007092_230,19 +00275_161,14 +00793_44,14 +00306_9,14 +00519_39,7 +01119_51,11 +016432_91,14 +01723_293,15 +00175_58,2 +01925_257,8 +019242_110,14 +00718_81,19 +01001_267,5 +00394_125,14 +00703_10,14 +01707_40,2 +013302_296,9 +016982_118,14 +019712_261,4 +00438_178,2 +00456_33,14 +00709_244,19 +01272_97,2 +01007_262,6 +008372_47,11 +009352_74,7 +008482_149,14 +01977_269,4 +01962_108,0 +01775_151,2 +00506_55,6 +01118_31,7 +01568_99,12 +01706_144,2 +00417_86,17 +02138_30,2 +021912_6,14 +004532_192,9 +00964_289,14 +005062_36,2 +016882_191,5 +01058_147,2 +01191_181,14 +007092_29,19 +008402_224,2 +00722_12,17 +01092_127,9 +007222_76,17 +02127_176,17 +01692_30,2 +01909_165,12 +01493_293,1 +00528_96,2 +01693_192,0 +01201_121,14 +01361_179,3 +02146_132,5 +005282_118,2 +019622_19,0 +00979_68,1 +018392_9,2 +01184_97,5 +00550_72,18 +00490_10,2 +00128_36,12 +00566_253,8 +01101_68,17 +02030_130,16 +00453_145,9 +01001_157,5 +00772_34,7 +00721_228,14 +01901_15,14 +00837_119,11 +00567_168,2 +00102_70,16 +00535_35,2 +01812_117,2 +017752_2,2 +00287_49,15 +00159_66,2 +011912_49,2 +01763_135,12 +00503_43,6 +01953_219,12 +012192_128,5 +01366_118,17 +017482_71,0 +000792_236,9 +00535_213,5 +01853_34,7 +01256_6,14 +01909_32,2 +005392_218,1 +00768_84,14 +018392_39,5 +00453_263,9 +00232_95,13 +00065_216,12 +02138_154,13 +007832_153,2 +010872_40,14 +01210_37,1 +00467_20,11 +01091_126,5 +012722_117,2 +00181_58,0 +007832_167,2 +01509_265,11 +00718_17,19 +01834_120,8 +00275_73,14 +00475_233,1 +00102_253,16 +007182_44,19 +00993_24,14 +01972_150,3 +004082_83,11 +00158_93,11 +01877_41,4 +021462_101,18 +00011_99,4 +007212_38,14 +00350_257,9 +00993_148,7 +01044_24,4 +017072_49,4 +019592_28,6 +00065_145,1 +01351_130,7 +00993_34,14 +01972_236,3 +007092_157,6 +001602_65,1 +00041_119,7 +005062_112,2 +01953_270,12 +00474_17,2 +00462_84,13 +01103_26,9 +01839_115,11 +00181_13,2 +01494_3,14 +01007_87,0 +012562_31,12 +00607_132,14 +02191_92,7 +01437_59,11 +004172_80,17 +01409_129,0 +00242_135,2 +01839_0,14 +00280_176,4 +00158_3,14 +00628_118,7 +01698_71,17 +02057_81,2 +00228_141,9 +007182_15,19 +01330_243,6 +01971_149,12 +016932_297,0 +00350_50,14 +01044_18,4 +02146_4,14 +01626_21,7 +017752_79,12 +01925_289,8 +017482_72,0 +010872_192,5 +02005_150,11 +01962_17,0 +009642_26,14 +01228_66,14 +018772_109,4 +00601_106,0 +00539_87,1 +00009_204,12 +021772_45,14 +02030_239,16 +00462_178,14 +01865_65,18 +01500_32,12 +00475_173,9 +00417_183,17 +01597_17,0 +02057_206,3 +00535_6,2 +02049_205,13 +01493_280,1 +01488_50,13 +014272_16,14 +02005_8,11 +01834_155,8 +014882_14,13 +01184_0,14 +01184_113,5 +00793_293,14 +01134_19,16 +017692_89,0 +016052_192,11 +00128_61,12 +001242_101,19 +00718_23,19 +004172_202,17 +02146_55,18 +00408_272,1 +00280_148,4 +01091_133,5 +00417_11,14 +02021_81,11 +01087_110,5 +00709_259,6 +01839_30,14 +01201_81,11 +00490_178,2 +01597_55,0 +019252_264,8 +00417_296,11 +00761_198,3 +018652_73,18 +00837_72,11 +018342_226,8 +012402_273,4 +00567_231,5 +00021_91,4 +02162_57,7 +01568_58,12 +00390_96,11 +00703_81,11 +00503_18,14 +00450_160,14 +013712_64,14 +010912_142,5 +00474_262,2 +019412_295,14 +008372_28,11 +016052_144,5 +02005_284,11 +00065_234,12 +00528_10,2 +01457_78,14 +00485_215,1 +01707_214,0 +02172_251,14 +01605_81,5 +01361_131,3 +00475_18,5 +013332_35,4 +01509_180,0 +018652_91,18 +00306_26,7 +01210_254,9 +00506_102,2 +01834_12,14 +01605_263,11 +00333_65,2 +00730_88,18 +02186_12,14 +01493_12,11 +00503_62,6 +017232_270,15 +02005_0,11 +00485_175,1 +02054_267,12 +00041_161,7 +01256_8,14 +00314_101,4 +001602_257,13 +00721_126,14 +005282_145,4 +01145_36,2 +01408_179,14 +009642_235,15 +01091_80,16 +01972_262,14 +000792_0,9 +010872_50,14 +01087_12,14 +01044_49,4 +019592_42,6 +01358_60,1 +01693_49,0 +00228_12,14 +00577_17,14 +00102_51,16 +01605_256,11 +01877_236,4 +00453_100,9 +019412_167,14 +01839_77,11 +01767_47,14 +01272_64,12 +00793_138,14 +01423_72,0 +00528_36,2 +009162_154,2 +02187_115,16 +00697_107,4 +01605_229,11 +00181_101,0 +01968_60,7 +008402_248,2 +00577_58,7 +01568_209,2 +01423_218,0 +01161_31,17 +01134_120,10 +01134_153,10 +016932_33,14 +010872_90,5 +00588_167,4 +018652_120,18 +00079_214,9 +01161_275,17 +01972_133,3 +00761_126,14 +010942_57,11 +00124_186,0 +01968_87,17 +002752_165,14 +002752_154,14 +00275_145,14 +01366_94,17 +02127_150,17 +01044_133,4 +011612_63,17 +00394_97,1 +009642_217,3 +005092_29,2 +00566_194,8 +01948_118,13 +01423_174,0 +01578_199,14 +004532_48,9 +00957_17,13 +01046_97,7 +00552_23,7 +00768_67,7 +00964_53,8 +00314_85,4 +00793_121,14 +00350_187,5 +02127_74,17 +018772_271,4 +007092_3,19 +00102_258,16 +011612_60,17 +002752_5,14 +01408_193,14 +021912_120,14 +00350_294,5 +005062_100,2 +010012_209,5 +00677_86,14 +00009_254,4 +01240_171,12 +01058_157,2 +007832_139,2 +01448_36,4 +001242_99,19 +012562_92,2 +000252_12,17 +00840_70,2 +01134_277,10 +01371_35,12 +00761_70,14 +016052_221,11 +01103_33,17 +011772_102,4 +02127_189,17 +001242_77,19 +012282_200,14 +01045_247,4 +016882_72,5 +01541_4,14 +02057_149,3 +008402_129,7 +02088_26,0 +01763_80,2 +00709_210,19 +00009_285,4 +01366_3,14 +00761_231,3 +009642_187,8 +017692_82,11 +02127_72,17 +01278_78,12 +02028_13,4 +01351_34,7 +00128_228,0 +01490_0,14 +007292_184,2 +00128_47,4 +02049_222,3 +00729_172,14 +016882_171,14 +017232_203,15 +013712_45,14 +01177_48,4 +00588_1,2 +01582_56,14 +00503_169,5 +00287_230,4 +02030_2,14 +00916_296,5 +01767_137,12 +019622_29,0 +00350_16,14 +009162_183,2 +001022_132,16 +002752_85,14 +01161_2,17 +00276_72,11 +01693_256,0 +00314_108,4 +017232_278,15 +02172_120,4 +01228_249,14 +01046_7,14 +02094_61,2 +00535_136,9 +000232_150,6 +01361_233,15 +02021_112,14 +01909_191,2 +007292_266,14 +018772_124,4 +014272_40,1 +01408_153,14 +00011_91,2 +016882_21,5 +01448_73,3 +017232_54,15 +00442_3,2 +002802_167,12 +01623_103,5 +00276_2,14 +01048_53,5 +016432_47,14 +00674_84,4 +01834_84,8 +01924_238,14 +00503_7,6 +00840_9,2 +017232_100,15 +00848_27,17 +017072_180,4 +010872_278,5 +02028_27,15 +00021_44,3 +01144_168,12 +00065_67,1 +00793_135,14 +00159_31,0 +01158_76,4 +01972_152,3 +017692_298,5 +01909_91,2 +01688_37,5 +00628_107,7 +016052_206,11 +02005_226,11 +00124_227,0 +01636_11,14 +00228_119,9 +01423_89,0 +010012_192,5 +00528_120,2 +00535_209,0 +00677_48,4 +00883_35,11 +02172_210,14 +007292_105,14 +00280_145,4 +01278_212,2 +00426_121,0 +00408_110,1 +019712_149,12 +019592_17,6 +00563_88,4 +02005_171,11 +00474_275,2 +00688_20,2 +00709_33,19 +02005_4,11 +012612_14,2 +01058_11,2 +01909_180,2 +009512_83,0 +01568_181,12 +00837_30,11 +01925_160,3 +009162_112,2 +01423_197,0 +016922_50,2 +018652_35,5 +007832_263,5 +00382_75,17 +002802_248,14 +01158_69,12 +00539_267,1 +00674_44,14 +02062_30,2 +00413_146,0 +005392_158,17 +01108_68,14 +01437_117,11 +007222_43,17 +02138_269,14 +00607_11,14 +01408_292,14 +00024_41,7 +01118_56,7 +01909_82,12 +00453_216,9 +01331_22,7 +00065_79,5 +00588_35,4 +021912_82,7 +00021_138,12 +02172_30,14 +01457_31,7 +00242_69,4 +01769_232,9 +00962_29,0 +00181_150,14 +001602_42,11 +01829_42,2 +02042_43,14 +01261_5,2 +00506_46,2 +00280_239,12 +010912_119,5 +004532_260,9 +016052_138,5 +00023_167,2 +01361_112,3 +01007_220,0 +001602_162,1 +019252_36,14 +01879_50,4 +00837_153,11 +01626_29,7 +001602_229,1 +020052_174,11 +00660_257,2 +00438_241,2 +01623_125,14 +01501_30,0 +00730_33,17 +01925_90,3 +00024_49,17 +01953_109,4 +00280_217,4 +00677_53,4 +02057_34,2 +02049_165,13 +00783_137,2 +00438_109,2 +01763_251,12 +00462_209,14 +01981_64,5 +000252_4,17 +02172_255,14 +019252_17,14 +00546_67,15 +007292_279,14 +00276_14,14 +005392_49,1 +01182_54,13 +00821_70,5 +00456_90,14 +00390_47,5 +009512_138,14 +008482_76,17 +00276_93,11 +02021_39,1 +01706_210,2 +00729_10,14 +01145_201,4 +007092_255,6 +01769_72,9 +01408_199,14 +017072_159,0 +01330_50,9 +012562_41,4 +00709_100,11 +01001_293,5 +019412_1,14 +00242_191,2 +020052_87,11 +01045_227,4 +02172_217,12 +01929_166,0 +01092_169,17 +00979_70,1 +019042_168,12 +01929_184,0 +01272_78,2 +00453_6,5 +01092_242,1 +01145_34,2 +004532_108,9 +01261_87,2 +01091_207,9 +00111_62,17 +019242_73,14 +012282_74,14 +00730_16,14 +01361_66,4 +01161_26,17 +005282_102,2 +01769_174,0 +00783_55,2 +01977_76,3 +018772_12,4 +02177_0,14 +01804_74,2 +00065_55,1 +01134_130,10 +011612_292,2 +01924_229,14 +00242_193,2 +014372_153,11 +01118_63,7 +00490_82,2 +01134_276,10 +01834_226,8 +00350_185,9 +00490_109,2 +01210_287,9 +00538_10,2 +00261_53,12 +002802_130,12 +00314_53,2 +00124_52,0 +01092_181,17 +019712_147,12 +00916_246,5 +00729_151,14 +00475_70,1 +01007_40,4 +021722_62,12 +008252_74,12 +01877_231,4 +00503_267,6 +00660_166,0 +02057_160,3 +010012_25,12 +007182_132,14 +00697_19,9 +013712_20,4 +01882_65,11 +02062_116,4 +01437_225,11 +017672_86,14 +014972_31,4 +00287_257,4 +00848_147,14 +019712_278,12 +01643_76,14 +01493_125,16 +01094_103,14 +019412_222,14 +020052_24,11 +01853_86,0 +01723_122,15 +01161_86,17 +01103_98,14 +018652_65,18 +00578_106,14 +00883_65,11 +007212_96,14 +001602_82,11 +01007_237,4 +006742_56,14 +02162_24,12 +01748_94,0 +01901_48,5 +004532_258,9 +00875_100,2 +00079_284,9 +018342_207,8 +005392_81,1 +01092_224,6 +01723_201,15 +00408_153,11 +000242_111,2 +01626_8,2 +01804_50,12 +01953_57,2 +00079_295,9 +00772_95,14 +01228_140,14 +01092_130,9 +01623_121,14 +010872_233,5 +007212_69,12 +012612_1,2 +00128_203,4 +018342_156,8 +00979_12,5 +01568_165,2 +01087_152,5 +01048_50,5 +00228_28,14 +00825_56,2 +010012_238,5 +00615_74,11 +00426_105,0 +02138_72,12 +00474_148,2 +01408_94,14 +00382_134,5 +01925_73,3 +00475_237,9 +01814_177,11 +00128_189,12 +01924_168,14 +009642_171,8 +00065_264,12 +00509_118,2 +01001_175,5 +021622_65,17 +01578_0,14 +007832_251,5 +02028_52,9 +00615_146,1 +00350_229,5 +004172_279,1 +019712_209,2 +01046_118,14 +016922_28,2 +01488_85,0 +00951_10,14 +00566_23,14 +01103_17,17 +01901_18,2 +01509_166,0 +014232_253,2 +000792_3,9 +018342_3,14 +01045_233,4 +00552_90,2 +00776_10,4 +020052_232,11 +016882_182,5 +02127_153,17 +00841_52,4 +00772_76,7 +008372_132,11 +00747_11,7 +00761_199,3 +00535_153,0 +01723_234,15 +01101_0,14 +00158_185,5 +01698_76,17 +00837_39,11 +00783_256,5 +01228_146,14 +00660_153,0 +01812_106,2 +019712_290,17 +00065_111,1 +005092_172,12 +01134_279,10 +00729_19,14 +009352_46,7 +014232_12,2 +011772_58,4 +01448_72,3 +017752_98,12 +01597_44,0 +012282_106,14 +00232_4,14 +01210_163,6 +00660_281,2 +00505_59,6 +01457_62,7 +00768_10,14 +00242_151,12 +008402_231,2 +004172_292,11 +02177_58,12 +00314_163,0 +019042_105,12 +019712_260,4 +00280_47,4 +00660_152,0 +02030_25,14 +018392_91,11 +00009_27,7 +00721_162,14 +019252_150,3 +01366_102,17 +010912_137,5 +007212_72,12 +00567_290,2 +01501_59,4 +014882_77,0 +005882_61,13 +008372_50,11 +00160_4,2 +00546_20,14 +01119_56,11 +01001_232,5 +01201_83,11 +01971_72,4 +01448_52,3 +00615_63,11 +02005_51,11 +00916_294,5 +02030_229,16 +009622_89,3 +00697_62,5 +007092_160,4 +017232_121,15 +018652_90,18 +00563_96,2 +01568_212,2 +00566_279,8 +005882_114,13 +00550_114,18 +02094_1,2 +02127_99,17 +00709_58,19 +01829_40,2 +02162_44,17 +00350_52,14 +00503_219,9 +01622_12,14 +004532_109,9 +010012_255,5 +00023_177,14 +000232_51,3 +01134_234,10 +016882_217,5 +01119_75,11 +017232_32,15 +01693_68,0 +019252_178,8 +01091_107,0 +00382_71,17 +01371_39,4 +00023_119,5 +00450_180,14 +00025_23,17 +018392_97,11 +00505_229,14 +006972_47,2 +01707_89,4 +018392_125,1 +00916_171,2 +01972_258,14 +019712_142,12 +02186_101,14 +01001_67,12 +00490_281,5 +02005_163,11 +01423_220,0 +012722_248,12 +01490_46,7 +00964_130,8 +01834_28,6 +01408_131,14 +020052_171,11 +01493_240,1 +000092_18,12 +02027_150,14 +017672_185,14 +02127_169,17 +00509_152,2 +00426_79,0 +01688_29,5 +016052_90,5 +01494_49,7 +00503_119,1 +01448_93,14 +00350_117,9 +00601_73,9 +00417_133,17 +007832_97,17 +00158_6,14 +00041_173,7 +01228_170,14 +02057_32,2 +01953_132,4 +01330_298,18 +00628_113,7 +02187_107,16 +00011_96,2 +004172_93,6 +017072_257,7 +00242_290,12 +02172_84,14 +019622_96,0 +01767_82,14 +02094_157,2 +02042_32,15 +01091_195,16 +007092_267,1 +00287_91,15 +00102_103,16 +00442_47,2 +01929_180,0 +012722_222,4 +00079_220,15 +01706_70,2 +00840_75,2 +01448_84,6 +00442_62,2 +005882_112,13 +005882_149,13 +01191_38,14 +005282_138,4 +010942_28,11 +018772_215,4 +02049_1,14 +02054_142,2 +00276_115,11 +01769_135,9 +01044_251,12 +00848_73,17 +021462_100,18 +020052_261,11 +00242_54,12 +004082_279,11 +01118_71,7 +01972_53,3 +01834_170,8 +01161_224,17 +00413_46,0 +01256_75,12 +001242_69,4 +01488_106,0 +01448_51,3 +01091_224,6 +011912_117,7 +00128_30,12 +00993_16,14 +01707_257,7 +01094_8,14 +009642_125,8 +00456_105,12 +00615_101,1 +00506_111,2 +00079_205,9 +010912_218,9 +01048_74,14 +02012_65,17 +017692_252,0 +01977_211,8 +019042_166,12 +019712_204,2 +017752_1,2 +01448_75,3 +002752_117,12 +01568_221,2 +001022_56,16 +00124_16,4 +00079_260,9 +01488_43,0 +00993_163,7 +01351_6,2 +00772_7,14 +01091_199,1 +00065_106,1 +00417_125,17 +00768_35,7 +019242_106,14 +001602_106,11 +00021_98,12 +01865_117,18 +00474_5,2 +014372_283,11 +007292_149,14 +01767_246,14 +012282_127,14 +00287_95,15 +01091_12,2 +01769_169,11 +01045_34,2 +021772_18,4 +00628_94,7 +01046_117,14 +00964_159,8 +01972_157,3 +000092_39,2 +007292_53,14 +00276_87,11 +00825_10,12 +00841_45,4 +00578_53,17 +008372_171,14 +00709_87,9 +017692_143,9 +01707_126,7 +01763_48,2 +003122_31,0 +00282_0,14 +020572_59,12 +00475_87,9 +01001_110,5 +020572_75,2 +00588_74,13 +004672_57,11 +00660_177,0 +00442_24,14 +01578_20,14 +00128_50,4 +00539_190,1 +003062_73,7 +02146_69,18 +01605_5,14 +004532_75,9 +01007_182,13 +01201_10,14 +00102_38,16 +010872_202,5 +021462_169,14 +01087_10,14 +021722_138,12 +019252_43,4 +01272_181,4 +00102_63,16 +01706_31,2 +00538_85,12 +00181_26,0 +009642_293,14 +01909_17,2 +01087_242,5 +01769_150,9 +00761_225,3 +01693_275,0 +00509_25,2 +01256_114,14 +005092_47,2 +01371_6,14 +00674_17,14 +01256_29,4 +01959_7,6 +00783_168,2 +00660_30,12 +021462_159,14 +00566_298,8 +01929_4,14 +00722_141,17 +010912_64,1 +018792_62,4 +00688_10,2 +00615_103,1 +01865_22,11 +017232_19,0 +02005_110,11 +01191_6,14 +00979_84,1 +01045_243,4 +012612_27,2 +00065_282,4 +010012_40,4 +00287_123,4 +010912_75,1 +01643_98,14 +01605_299,11 +018122_74,12 +01001_198,5 +02187_158,16 +00124_125,19 +00783_138,2 +02005_75,11 +00697_61,5 +02012_0,14 +00588_41,4 +01493_69,1 +000092_127,2 +005282_64,2 +004172_115,17 +016842_32,4 +01408_55,14 +00350_71,2 +00979_20,1 +01058_74,2 +00009_77,12 +02054_138,2 +018772_136,4 +00450_33,14 +00333_144,2 +01134_18,16 +000092_271,12 +01643_13,14 +00567_216,2 +021912_76,7 +02149_19,6 +02127_269,17 +00475_24,5 +00442_291,4 +00474_202,2 +006742_99,14 +01240_84,2 +004172_267,11 +00601_86,11 +008402_109,7 +01134_204,10 +00848_24,17 +01877_205,4 +00417_239,6 +007762_96,14 +00111_15,14 +00417_63,17 +007212_133,12 +00867_114,5 +01924_130,14 +00677_42,14 +01605_217,11 +000092_84,2 +00011_92,2 +00390_28,5 +02030_260,16 +00280_234,12 +00729_271,14 +005092_226,2 +01953_201,6 +01834_138,8 +010872_228,5 +007092_289,12 +01748_4,11 +021722_163,14 +00181_27,0 +00475_122,1 +00783_276,5 +00462_102,13 +016932_29,17 +012192_77,5 +01409_130,0 +012402_22,2 +00426_48,0 +00528_53,2 +01501_62,0 +00776_27,14 +02138_113,4 +01925_54,12 +011912_76,7 +017072_66,0 +01693_280,0 +00962_45,0 +01924_232,14 +00840_234,2 +005882_165,15 +01158_147,4 +019412_211,14 +00538_87,2 +00287_92,15 +01877_190,4 +00242_264,4 +004172_43,17 +00242_147,2 +00490_156,12 +01240_208,12 +02088_22,0 +00674_121,14 +018652_12,5 +00417_264,11 +01045_293,4 +00408_17,4 +00550_101,18 +01001_87,5 +00382_68,17 +01158_115,4 +00783_17,2 +016932_211,0 +00935_55,7 +02042_99,13 +00993_50,6 +016882_91,5 +015972_13,0 +01924_159,14 +01046_18,7 +010912_122,5 +00503_200,9 +02094_7,4 +01045_51,4 +00721_256,14 +02138_9,14 +00709_93,5 +014882_89,13 +01925_202,8 +002802_212,12 +018652_51,18 +01191_154,14 +01408_184,14 +012722_104,2 +00821_27,5 +019042_160,12 +00615_189,11 +012402_278,12 +00776_31,14 +00475_143,1 +00102_220,16 +00550_44,18 +013302_106,9 +010012_193,5 +02146_13,14 +01626_3,2 +009642_230,3 +012402_72,12 +00979_90,1 +01409_30,12 +01977_21,14 +02186_112,14 +01333_0,0 +007222_131,17 +00935_32,7 +02012_70,17 +006742_60,14 +001602_44,11 +01763_277,2 +00275_49,14 +002802_33,12 +02042_70,15 +005882_131,13 +019622_22,0 +00024_68,7 +01278_231,2 +01814_231,5 +02057_145,3 +018772_102,4 +001602_36,11 +00567_136,2 +02027_24,18 +019252_98,3 +00408_9,2 +001242_9,4 +018772_14,4 +020052_167,11 +01333_50,0 +00528_6,2 +00438_22,2 +01767_140,12 +00981_46,11 +00519_3,14 +004082_85,11 +018652_133,14 +010872_17,14 +01144_190,2 +01049_62,7 +01412_38,0 +01582_17,7 +01636_40,0 +00088_27,5 +010012_249,5 +014072_48,2 +00280_104,12 +007292_2,14 +019712_245,12 +004082_103,11 +01948_169,13 +00292_13,11 +01210_11,9 +001242_43,4 +02005_112,11 +00793_272,14 +014882_172,0 +01578_13,14 +00011_114,12 +00783_91,17 +01210_67,17 +00181_98,0 +01182_46,11 +01134_134,10 +01941_180,14 +010872_92,5 +014882_55,13 +009642_36,6 +000092_59,12 +01814_196,11 +005392_275,0 +018342_88,8 +01408_198,14 +012722_65,12 +01065_105,5 +01007_77,0 +021912_37,7 +016052_78,5 +02094_129,4 +017672_76,14 +01256_30,12 +01001_211,5 +019622_76,0 +01087_63,14 +01493_238,1 +00550_8,5 +016882_226,5 +003062_35,7 +02012_22,14 +021462_94,18 +01240_56,12 +01909_41,2 +00783_145,4 +01428_21,4 +019252_199,8 +01407_24,12 +01101_41,7 +01361_16,5 +000242_112,2 +01228_210,14 +00025_32,17 +004082_173,11 +020052_189,11 +01092_231,9 +016052_14,14 +01283_9,14 +01941_148,14 +00709_291,12 +01457_72,2 +01210_263,9 +002752_36,12 +01427_101,9 +012722_172,12 +01763_22,12 +01065_46,18 +01490_24,7 +00456_106,12 +012722_157,4 +02127_65,17 +00442_299,4 +00721_9,14 +00442_54,2 +00660_46,0 +017232_33,15 +01409_165,0 +00350_151,9 +01877_37,4 +005282_92,2 +00535_41,2 +019252_108,3 +01101_162,14 +018772_264,4 +016922_29,2 +020572_70,2 +01408_293,14 +01941_17,14 +01161_135,17 +01501_94,14 +00674_49,14 +01597_66,0 +01361_268,15 +01408_107,14 +00485_58,1 +00793_139,14 +00793_57,14 +01763_222,2 +02005_47,11 +018772_68,4 +01877_1,4 +01283_50,2 +00160_115,11 +006742_97,14 +01865_135,14 +011612_146,17 +00009_110,12 +00660_182,0 +00509_215,12 +001242_232,0 +00065_154,1 +018122_75,2 +00729_281,14 +00314_151,4 +007222_53,4 +01065_118,14 +005502_135,14 +005282_162,0 +01278_88,4 +02138_295,14 +01046_72,7 +020572_191,3 +00875_35,2 +01497_27,2 +00615_69,1 +012402_69,12 +00535_203,0 +01144_27,5 +00024_31,7 +018772_48,4 +000252_38,17 +00280_121,2 +00783_1,2 +008402_119,7 +014122_6,4 +01256_61,4 +00962_51,13 +01706_99,2 +012402_192,4 +00276_135,14 +00242_141,2 +00102_246,16 +00597_17,14 +00916_242,2 +004532_207,9 +008482_58,17 +01865_72,18 +014882_67,1 +00342_30,17 +00566_220,8 +01191_28,14 +01643_28,14 +004172_235,6 +01201_75,11 +00485_268,12 +00450_74,13 +00282_55,17 +00181_48,0 +00417_189,17 +021722_199,4 +00175_66,4 +00467_54,11 +00588_233,2 +001602_232,11 +00490_124,12 +01929_219,14 +00306_86,7 +01228_242,14 +00181_119,0 +02042_64,15 +01829_33,12 +00528_28,2 +00485_38,2 +00158_194,5 +018392_118,11 +02127_187,17 +001022_219,16 +01101_156,14 +01272_32,2 +001022_44,16 +00793_245,14 +01865_68,18 +005882_43,4 +009162_100,2 +008482_131,17 +00761_8,14 +01409_7,14 +00490_27,2 +00408_147,11 +017072_4,2 +00709_46,19 +00588_153,13 +00475_80,9 +010912_125,5 +01228_167,14 +01423_210,0 +00993_47,6 +012722_206,4 +00021_9,5 +01087_178,5 +01256_102,14 +017232_232,15 +00023_96,0 +00848_84,17 +01929_189,0 +00160_45,11 +00535_168,0 +012722_159,4 +02042_15,14 +01941_293,14 +01643_84,14 +005092_77,2 +01103_89,17 +007832_75,17 +016052_56,5 +02127_249,17 +013302_182,3 +01568_128,2 +00475_201,1 +01698_39,17 +005392_259,1 +017672_285,14 +00023_23,2 +00009_232,12 +006092_61,5 +01144_170,2 +020052_57,11 +01879_45,4 +01972_206,3 +00158_201,5 +01909_192,2 +00546_0,14 +00160_16,2 +00011_67,2 +00065_115,11 +00761_97,14 +007182_85,19 +007292_23,14 +017482_101,0 +01488_242,5 +00793_201,14 +019412_55,14 +00417_271,1 +017692_11,2 +01092_30,17 +01161_47,17 +01488_14,13 +004532_193,9 +00588_62,13 +01882_34,11 +01488_0,13 +00382_32,7 +00342_67,17 +017752_39,12 +01312_21,7 +02187_217,16 +00993_264,14 +00287_265,15 +01046_75,7 +00916_277,5 +00688_79,4 +021772_62,12 +005392_25,6 +01493_89,1 +02146_77,18 +00503_201,9 +01877_293,4 +01605_127,5 +00567_196,2 +01240_170,12 +010652_44,18 +01977_285,14 +01706_121,2 +01925_132,3 +01814_250,5 +010872_236,5 +00730_126,14 +00024_5,2 +014072_56,12 +007092_110,1 +00160_35,11 +01959_1,6 +004532_274,9 +017232_96,15 +01493_145,1 +00729_51,14 +019412_176,14 +008252_78,12 +001242_141,19 +00079_125,9 +013712_23,14 +000792_4,9 +01971_206,2 +01161_23,17 +01145_256,4 +012562_63,4 +00475_85,9 +01688_11,5 +01941_207,12 +00232_122,13 +018132_26,11 +00065_266,12 +00776_17,15 +00783_61,2 +01971_187,2 +00413_15,14 +00783_56,2 +014882_68,1 +01427_73,9 +00160_295,1 +02146_166,14 +017232_109,15 +00124_150,19 +014882_39,0 +007212_225,14 +000092_249,12 +01108_53,14 +005882_9,2 +01256_103,14 +01509_36,0 +001022_145,16 +018772_200,4 +01769_101,2 +000232_23,2 +01977_70,8 +01578_181,14 +02005_264,11 +00417_149,6 +00709_236,19 +013302_131,6 +001602_265,13 +000792_121,9 +009162_88,2 +01977_121,8 +01977_170,8 +00535_43,2 +01044_149,4 +01101_139,5 +008402_157,7 +013302_231,8 +01228_77,14 +01228_58,12 +004532_32,9 +00408_204,11 +00102_115,16 +01748_9,11 +017672_214,14 +00979_133,14 +00275_9,14 +00065_276,4 +016052_101,5 +012282_137,14 +016882_224,5 +00840_88,2 +00021_85,2 +00840_145,7 +01201_5,14 +00088_52,5 +005092_48,2 +01409_162,0 +00442_11,14 +01044_110,4 +005502_63,18 +01925_34,14 +01941_259,14 +00509_125,2 +00539_110,1 +00450_150,12 +00417_27,6 +014232_176,0 +02054_205,2 +01087_192,5 +00490_177,2 +00442_131,4 +01605_113,5 +008482_2,14 +00158_154,5 +007092_241,19 +010912_236,12 +00729_86,14 +00438_290,2 +02049_161,13 +01091_221,6 +01767_120,14 +00722_37,17 +00979_40,1 +008252_58,2 +01045_264,4 +02127_237,17 +02049_94,3 +00079_129,9 +01134_111,10 +00467_34,11 +010912_53,1 +016932_269,0 +00567_235,2 +00505_197,7 +00979_130,14 +01763_227,2 +00615_91,11 +00102_250,16 +00538_24,1 +01834_87,8 +01775_70,12 +01769_7,2 +011612_125,17 +01408_232,14 +00160_254,11 +02057_68,2 +018122_57,4 +01509_269,11 +00079_87,9 +021772_2,14 +012192_50,5 +01684_66,14 +02049_126,13 +001602_217,11 +00456_187,14 +01488_28,1 +009352_107,14 +008482_83,17 +00567_240,2 +019242_28,14 +00462_133,13 +00935_77,7 +01829_31,12 +002752_163,14 +02146_15,14 +014272_31,17 +007212_34,12 +01118_85,14 +00442_161,0 +00417_30,6 +00160_46,11 +005282_179,0 +01091_233,12 +011082_10,14 +00615_217,11 +01272_223,4 +00539_142,1 +01409_10,14 +017672_208,14 +00382_11,11 +009642_79,3 +004082_186,11 +00709_121,17 +00535_122,6 +00453_236,9 +010912_78,16 +01488_205,1 +01272_273,2 +016052_165,11 +00566_219,8 +00181_92,0 +01834_0,14 +01457_68,7 +01087_278,5 +00721_241,14 +01145_230,4 +01278_2,2 +01091_270,14 +01094_102,14 +000092_260,2 +01582_10,7 +00438_196,2 +01001_177,5 +00474_139,2 +02187_9,11 +01044_175,4 +01278_58,2 +01787_77,9 +00566_170,8 +01968_22,14 +012402_147,12 +00009_253,4 +01366_35,17 +014882_156,13 +01045_182,4 +011612_96,17 +00709_238,19 +02027_146,14 +00660_78,0 +01924_94,14 +00934_1,1 +00394_93,1 +00023_152,6 +01407_45,2 +016092_1,17 +01007_246,13 +009512_19,4 +00282_91,11 +01723_239,15 +005392_289,5 +00079_164,15 +00577_99,7 +019252_206,8 +00024_12,2 +01201_35,11 +02027_34,18 +00729_286,14 +020572_210,3 +005092_157,2 +00333_42,2 +01437_251,11 +00709_269,1 +01804_93,4 +000792_214,9 +007222_113,17 +011612_248,17 +00841_44,4 +02012_93,17 +012402_165,12 +004532_296,9 +01361_14,5 +00567_242,2 +006972_33,4 +00333_149,2 +01158_94,4 +004082_272,1 +01272_85,2 +01814_165,11 +019252_166,3 +02005_233,11 +01972_76,3 +01448_28,0 +01767_1,14 +01839_50,11 +00964_285,14 +01423_59,2 +005062_39,2 +019252_125,3 +000092_254,4 +00023_38,4 +01636_4,14 +016092_41,17 +01865_34,5 +000792_144,9 +00242_95,12 +006092_78,14 +01972_106,13 +01865_4,14 +01087_48,14 +00158_51,14 +010012_270,5 +00342_101,14 +02062_122,4 +017672_241,14 +01409_47,4 +01219_11,14 +01787_35,1 +01688_117,5 +005392_97,1 +018772_189,4 +02057_178,3 +004082_25,1 +01058_29,2 +01839_48,11 +01904_28,2 +00417_286,11 +01351_88,7 +010012_61,12 +00088_56,5 +01145_4,2 +00296_111,14 +01094_40,11 +010912_106,0 +00453_157,9 +01509_35,12 +00538_17,17 +000242_0,2 +01045_32,2 +01879_97,2 +00528_149,0 +01977_90,8 +018342_132,8 +01924_125,14 +008252_46,4 +000242_74,7 +018772_106,4 +02005_10,11 +00228_220,5 +00601_39,7 +005502_74,18 +01901_155,12 +00232_105,13 +018772_139,4 +000792_240,9 +01423_42,2 +00342_32,17 +019712_2,2 +019252_263,8 +007762_9,4 +02005_276,11 +01882_52,11 +001602_277,3 +021622_81,17 +01853_74,6 +01145_255,4 +00837_141,11 +01925_214,8 +02030_206,16 +014882_99,13 +002802_224,14 +002802_104,12 +00426_149,0 +014882_229,5 +00011_80,12 +000242_28,7 +00609_19,11 +005392_7,6 +00825_64,12 +00181_76,0 +017482_28,0 +00282_106,14 +00821_78,5 +01597_6,14 +00475_194,1 +005092_209,12 +00840_66,2 +01925_96,3 +013332_25,2 +01423_45,2 +00509_160,2 +00453_84,9 +004532_232,9 +009622_14,0 +00350_263,9 +00566_270,8 +008402_278,2 +02186_25,5 +00934_18,9 +00438_148,2 +01813_130,11 +00867_70,0 +017752_58,2 +01763_294,2 +01228_236,14 +00519_150,14 +01191_30,14 +00941_15,0 +00024_25,7 +00546_14,14 +01272_180,4 +00964_25,14 +011612_168,17 +016982_79,17 +01804_61,4 +007182_116,19 +014882_44,0 +01501_103,14 +020052_118,11 +01853_7,14 +017692_56,9 +02042_19,14 +01091_192,16 +01134_220,10 +02088_20,0 +00566_124,8 +00892_77,2 +00088_20,5 +00102_19,2 +018792_111,2 +00567_262,2 +01219_102,5 +01409_185,0 +00934_9,9 +00729_169,14 +02042_97,15 +00783_107,6 +001602_231,11 +018132_132,11 +01692_130,5 +00840_95,2 +00228_38,5 +00160_202,11 +000792_289,9 +02054_123,4 +02005_229,11 +001022_155,16 +01968_96,7 +01941_287,14 +01158_49,0 +00718_57,19 +00160_128,1 +01134_146,10 +01767_20,14 +00703_71,11 +00287_274,4 +01065_92,18 +00314_38,2 +021912_69,7 +00535_147,0 +007292_96,14 +018122_91,2 +01707_127,7 +00111_22,17 +01929_13,14 +012722_72,4 +00615_44,11 +01582_76,2 +01240_239,12 +011912_3,14 +00442_94,2 +01431_247,11 +01924_42,14 +00841_30,4 +00485_264,4 +00450_189,14 +01408_230,14 +004082_13,2 +01904_97,4 +01184_105,5 +01007_290,3 +012722_140,4 +00079_50,17 +02057_186,3 +00993_158,7 +01044_294,4 +01161_188,17 +018342_7,14 +005392_268,1 +02054_227,14 +00528_111,2 +017482_41,0 +019412_109,14 +018392_115,11 +00783_294,5 +01643_24,12 +004672_5,11 +02049_270,4 +00228_10,14 +009512_149,14 +014232_96,0 +01437_274,11 +007092_155,6 +00041_32,12 +01409_211,14 +018772_256,4 +00009_258,2 +02146_25,11 +01437_141,11 +00462_119,13 +01707_279,7 +008402_105,7 +02186_1,14 +009342_35,4 +013332_39,4 +00456_134,12 +019242_120,14 +00417_24,6 +01626_137,2 +01977_223,8 +011612_154,17 +00041_16,2 +019622_38,0 +011082_18,14 +007292_91,14 +009352_37,7 +00024_85,17 +019042_83,12 +00506_56,6 +012402_7,2 +017232_184,15 +007832_43,2 +01488_163,13 +011912_132,2 +02146_125,11 +01108_1,14 +004532_38,9 +011612_112,17 +01925_158,3 +016052_145,5 +00102_23,2 +00408_96,11 +014882_85,0 +00783_108,6 +002752_12,14 +02094_141,2 +01437_75,11 +017752_40,12 +007292_209,14 +008252_51,2 +00228_199,9 +00867_102,0 +007832_282,5 +014282_78,14 +02028_43,9 +00783_205,2 +01497_36,2 +01158_27,0 +00159_78,4 +01358_54,1 +008482_116,17 +018772_265,4 +01877_29,4 +00159_47,2 +019622_116,0 +02172_168,14 +001022_35,16 +009512_106,0 +00009_228,2 +014882_249,5 +017672_67,14 +01804_15,7 +01044_46,4 +02054_234,4 +01182_51,0 +01909_111,4 +008402_185,7 +00485_251,1 +007832_39,2 +00160_235,11 +009162_37,2 +020052_161,11 +012722_178,12 +001022_162,16 +01177_116,14 +00390_9,14 +016922_58,5 +004172_116,17 +01901_39,0 +01501_55,4 +009642_38,6 +01953_130,4 +00567_275,2 +008372_173,14 +010652_112,14 +00607_28,11 +01361_108,3 +00280_216,4 +02138_216,13 +01901_3,14 +00578_68,17 +01834_148,8 +00280_75,4 +001602_145,1 +016922_56,5 +00453_25,9 +01834_250,8 +00783_237,5 +00128_141,2 +00453_77,9 +01814_215,11 +01437_61,11 +01490_66,7 +007212_9,14 +01219_86,5 +00528_175,0 +00848_129,17 +02191_42,7 +009512_104,0 +02049_147,13 +00607_108,6 +01578_222,14 +019592_68,6 +021722_30,14 +019242_78,14 +02054_39,2 +01409_78,0 +00957_63,2 +004532_276,9 +01813_43,11 +001602_225,11 +00577_33,7 +02127_29,2 +01423_139,0 +014372_149,11 +00079_95,9 +02028_93,2 +00079_36,9 +018342_101,8 +01119_118,14 +00718_108,19 +00615_12,11 +00009_99,12 +01087_103,5 +00159_17,0 +02094_35,12 +00474_203,2 +002752_43,14 +015972_48,0 +00442_172,4 +013302_261,4 +00566_58,8 +01853_43,7 +01094_107,14 +007292_42,14 +00342_96,14 +01408_82,14 +00280_78,4 +00783_13,2 +017672_284,14 +01408_254,14 +00453_153,9 +00916_37,2 +01865_9,14 +00660_55,0 +01688_39,5 +01092_220,6 +00280_66,12 +01145_225,4 +012282_169,14 +00506_115,2 +018122_89,2 +01763_34,2 +01865_71,18 +00768_53,7 +00916_176,2 +005392_226,13 +016982_86,17 +02094_142,2 +01408_20,14 +00506_99,2 +00128_164,2 +00721_14,14 +01707_275,7 +001242_64,4 +00578_18,4 +00450_84,13 +006972_83,4 +001242_29,4 +00065_140,1 +00503_272,6 +01448_61,3 +01971_219,2 +01490_83,14 +01763_169,2 +00730_120,14 +01184_110,5 +01853_22,5 +01261_98,2 +004172_205,17 +000792_104,0 +02172_148,14 +00475_132,11 +004082_102,11 +00550_14,5 +004082_41,1 +00296_43,7 +01981_27,5 +012562_91,4 +00232_0,14 +012282_119,14 +01278_195,2 +01767_107,14 +00761_101,14 +014122_92,0 +01165_68,5 +00964_8,14 +01925_242,8 +009162_249,5 +021722_139,12 +01813_124,11 +00981_118,14 +00314_249,4 +007092_231,19 +001602_282,13 +01045_153,4 +01597_37,0 +006742_123,14 +01165_52,5 +01925_84,3 +01092_210,17 +01909_99,2 +00577_113,14 +004172_83,17 +01423_266,2 +01834_86,8 +009162_13,2 +00350_13,14 +006742_135,14 +018392_46,11 +01044_75,12 +00442_102,2 +01423_211,0 +01977_111,8 +001242_158,19 +00721_222,14 +02057_49,2 +00578_57,1 +010872_271,5 +017072_95,0 +01971_270,4 +00761_5,14 +00287_250,15 +018772_233,4 +01240_26,2 +01769_184,2 +01909_146,4 +016432_96,14 +00703_21,11 +01488_138,0 +004532_41,9 +01045_21,2 +01767_113,14 +01623_140,14 +01361_174,3 +002802_153,2 +00821_37,5 +00242_23,2 +01437_244,11 +01707_51,4 +01407_23,12 +00242_295,12 +00709_288,12 +018792_14,2 +00462_138,13 +01706_214,2 +00506_6,2 +02127_206,17 +00509_168,12 +00342_24,17 +012722_182,4 +01228_53,2 +002802_29,12 +008402_110,7 +02021_5,14 +02062_140,4 +00528_85,2 +01087_200,5 +02062_97,4 +02005_153,11 +00837_50,11 +01058_145,2 +00677_64,14 +00442_89,2 +01048_11,14 +01493_28,11 +01959_85,6 +00282_24,7 +01101_34,7 +00475_95,9 +02172_180,14 +00023_134,6 +015972_83,0 +001022_223,16 +010012_275,5 +00535_201,0 +01597_53,0 +014882_72,0 +01953_169,12 +00539_166,17 +008402_254,2 +016982_105,14 +01924_120,14 +01541_25,5 +01901_98,12 +01177_45,4 +00011_14,0 +01001_137,5 +018392_150,1 +005392_146,13 +01643_26,14 +008402_36,2 +018132_126,11 +009642_28,14 +008482_60,17 +01437_239,11 +01812_81,2 +01240_204,12 +004172_0,14 +01428_20,4 +01497_9,0 +01431_151,11 +00681_62,5 +00607_92,6 +00681_53,5 +00065_102,11 +00867_118,5 +00394_116,14 +01977_112,8 +017232_220,15 +02191_23,7 +012722_71,4 +00993_241,14 +01953_23,2 +01882_33,11 +01813_134,11 +01001_213,5 +01494_53,7 +00697_43,2 +00158_236,5 +018342_102,8 +000792_59,9 +00840_192,7 +008832_67,11 +02127_282,17 +01971_140,12 +01191_122,7 +01692_113,1 +01210_128,6 +02054_286,4 +01901_176,14 +002752_88,14 +02094_167,2 +01813_153,14 +017692_69,9 +016052_23,14 +005092_230,2 +02005_245,11 +01101_89,6 +00023_101,0 +00065_46,1 +00709_212,19 +01763_236,2 +00993_141,7 +01431_188,11 +020052_251,11 +019242_18,14 +00158_149,5 +01767_33,14 +00450_17,14 +01948_188,13 +008922_50,0 +02138_96,14 +01091_226,7 +002752_90,12 +01706_173,2 +01331_32,17 +00964_169,8 +015972_10,14 +01351_138,7 +00718_132,14 +00597_8,14 +009352_99,7 +00242_224,12 +007092_248,19 +01278_223,2 +018792_23,2 +01091_58,1 +004082_20,1 +021912_24,7 +00314_62,12 +00111_31,17 +00546_176,14 +00456_88,14 +01981_2,14 +017672_19,14 +01201_0,14 +00916_221,2 +00102_290,16 +021722_236,14 +00729_121,14 +017692_208,11 +01578_210,14 +00703_51,11 +01643_108,14 +019042_149,2 +01161_17,17 +00519_59,17 +01839_79,11 +01493_1,11 +00102_157,16 +017692_157,9 +02138_6,14 +00674_99,14 +019412_51,14 +013302_168,15 +01698_57,17 +01048_73,5 +016922_142,14 +01092_190,2 +01330_290,9 +02005_26,11 +00941_11,19 +020052_264,11 +013712_22,14 +01767_71,14 +021462_9,14 +013302_30,12 +00688_11,2 +012722_102,2 +01448_53,3 +00426_140,0 +00577_42,7 +008252_86,2 +01509_87,0 +00538_37,17 +02057_92,2 +01177_63,4 +01092_269,12 +01972_142,3 +00181_68,0 +00772_32,7 +01408_42,14 +01058_117,4 +01605_169,11 +00009_46,12 +02127_59,17 +02187_106,16 +00567_295,2 +012612_19,2 +00417_241,6 +01165_14,14 +00729_83,14 +018652_14,5 +01723_228,15 +00597_47,5 +014972_15,0 +01812_30,4 +01684_43,4 +018342_135,8 +02012_76,17 +01184_40,5 +01977_219,8 +00506_130,2 +020052_231,11 +01609_8,17 +01948_199,13 +00567_181,2 +016982_44,17 +016932_4,2 +01568_103,12 +00962_25,4 +008372_121,11 +00485_80,1 +00276_110,11 +019252_152,3 +00041_56,7 +00413_0,14 +01409_144,0 +021722_100,14 +00280_249,14 +00159_23,4 +02012_47,17 +013302_78,6 +01839_41,5 +01623_35,5 +00941_12,19 +01007_225,0 +002802_80,4 +00848_40,17 +00079_288,9 +00456_160,14 +00535_137,6 +013302_283,9 +02042_49,14 +005092_67,2 +01707_281,7 +02127_225,17 +02146_60,18 +00438_47,2 +001602_168,11 +001602_149,11 +017692_135,9 +007212_152,4 +02127_10,2 +009162_229,2 +01775_107,12 +01568_109,12 +01184_71,5 +008482_50,17 +00124_242,0 +01408_39,14 +002802_96,12 +00276_130,14 +00453_167,9 +00567_285,2 +00783_201,2 +020572_131,15 +00957_13,0 +01968_59,7 +01407_42,2 +017072_64,0 +01256_110,14 +00677_102,14 +01623_144,14 +01688_224,5 +01929_27,0 +01763_7,2 +00228_207,9 +01972_252,14 +00350_38,14 +021462_128,11 +01361_72,4 +01161_277,17 +012282_132,14 +00023_83,4 +00567_90,2 +00065_104,11 +01929_72,0 +00509_95,12 +02012_124,14 +017072_263,7 +018772_84,4 +00382_31,7 +01813_92,11 +005392_122,1 +01814_121,11 +02138_68,12 +01182_67,0 +00761_145,12 +00417_157,6 +00417_233,6 +007182_59,19 +021722_18,14 +000092_262,7 +016982_56,17 +01045_265,4 +00577_16,14 +02191_32,7 +00009_279,12 +014882_31,0 +00688_96,2 +012612_51,2 +00509_110,2 +01101_129,0 +013302_194,6 +02030_186,16 +007832_212,2 +00597_79,14 +01092_170,17 +020052_267,11 +01045_156,4 +00314_268,4 +01330_141,9 +01636_71,0 +01007_270,6 +01092_148,17 +01145_269,4 +02172_146,14 +01412_85,0 +00916_31,2 +01428_23,14 +01698_67,17 +00793_269,14 +00772_97,14 +01240_133,12 +00474_75,2 +02021_33,1 +00292_5,11 +01909_46,2 +00628_97,7 +00474_214,2 +01971_225,2 +008372_7,12 +02094_124,4 +008372_74,11 +005392_15,6 +01972_103,13 +016092_42,17 +02172_53,14 +01605_175,11 +017232_13,4 +02186_51,5 +01431_18,11 +00242_91,12 +00041_160,7 +00261_17,0 +01953_136,4 +016882_146,14 +021722_250,14 +00128_258,12 +01409_83,0 +00350_40,14 +01509_47,0 +00528_4,2 +01953_95,4 +01182_39,0 +01706_273,2 +008402_249,2 +02127_166,17 +01775_19,2 +01904_67,4 +000232_76,3 +010912_215,9 +01044_129,12 +01769_221,9 +01971_236,12 +01688_53,5 +00025_3,17 +00417_117,17 +01272_263,4 +010652_31,18 +01829_20,12 +008372_105,11 +01814_181,11 +00490_47,2 +01118_5,14 +006092_86,14 +01007_81,0 +01094_13,14 +02172_92,14 +00964_172,8 +001022_119,16 +00450_170,4 +01145_122,4 +01684_26,12 +00729_170,14 +019412_102,14 +00450_53,4 +01909_29,2 +01971_130,12 +00729_110,14 +01358_26,1 +016882_160,14 +01351_112,7 +01101_33,7 +016052_241,11 +00793_33,14 +01578_185,14 +017072_161,0 +01007_289,6 +01144_42,5 +02172_209,14 +01924_97,14 +01044_50,4 +018392_116,11 +005392_30,6 +004532_164,9 +00228_193,9 +01622_44,0 +00025_44,17 +01948_147,13 +019252_15,14 +007212_221,14 +01812_96,2 +009642_58,3 +01693_14,2 +01723_86,15 +00546_73,3 +01087_233,5 +00160_116,11 +01769_225,9 +016842_42,4 +00503_19,14 +02062_141,4 +00783_215,2 +01094_76,11 +00474_248,2 +007292_174,14 +013302_94,9 +00390_18,2 +00503_56,6 +00417_84,17 +005502_7,5 +01045_5,2 +010012_66,12 +00837_26,11 +01493_171,1 +00964_80,3 +01541_28,5 +01134_258,10 +01228_29,14 +018392_60,11 +00821_144,14 +00242_167,2 +00314_172,0 +00546_109,3 +019252_268,8 +017672_122,14 +01813_65,11 +01087_268,5 +009642_297,14 +00519_108,11 +00697_102,14 +010912_60,1 +01145_298,1 +010012_228,5 +00382_129,5 +019252_33,14 +019712_193,12 +01909_0,2 +00721_85,2 +01971_120,2 +00539_29,6 +008922_40,0 +00567_64,2 +009512_140,14 +00079_180,9 +00566_143,8 +00181_140,14 +01191_34,14 +016982_32,17 +009342_38,5 +019592_36,6 +01101_31,7 +00426_11,4 +02138_267,14 +00041_90,12 +00280_237,12 +017752_156,12 +007832_247,5 +004172_78,17 +004532_95,9 +00567_122,2 +011612_65,17 +016842_48,4 +01597_58,0 +01134_151,10 +01191_138,2 +00314_299,0 +02030_41,14 +00413_120,0 +01622_82,13 +004172_165,6 +01541_33,5 +01702_76,14 +01108_40,0 +01879_14,2 +016922_22,2 +00563_1,2 +005502_71,18 +02049_173,13 +00102_279,16 +01814_286,11 +010012_227,5 +01101_177,14 +005392_163,17 +016932_264,0 +002752_14,12 +01541_39,5 +00840_58,2 +01812_5,2 +01839_86,11 +01437_6,11 +00609_30,11 +02057_76,2 +006742_107,14 +01049_28,7 +007832_220,2 +01763_144,2 +00503_261,6 +00681_19,5 +01087_274,5 +01763_28,2 +005502_79,18 +01929_165,0 +00350_118,9 +004172_176,6 +00088_35,5 +01636_108,4 +00729_237,14 +00102_288,16 +02062_125,4 +017232_99,15 +02186_64,5 +00128_134,2 +01065_47,18 +00503_8,6 +017752_61,2 +00065_109,1 +02127_78,17 +018122_65,4 +019042_169,2 +01693_86,0 +00474_280,2 +00009_133,2 +01493_129,1 +010912_198,16 +00601_4,14 +01423_175,0 +004532_294,9 +00065_80,5 +01330_45,9 +01877_21,4 +01748_47,7 +01643_21,12 +01775_89,2 +00601_123,14 +00023_31,2 +00442_63,2 +013302_258,4 +00159_67,2 +01643_101,14 +01101_114,13 +01494_4,14 +01087_11,14 +018392_51,11 +00761_239,3 +001242_19,4 +00875_40,2 +017672_14,14 +020052_156,11 +00772_0,14 +00261_8,4 +00577_1,14 +01763_101,12 +00588_98,13 +00601_96,0 +00615_194,11 +00079_163,15 +00566_164,8 +019242_94,14 +01351_43,7 +01437_271,11 +00509_191,2 +01605_239,11 +01877_17,4 +00287_242,4 +00276_42,11 +00041_107,12 +00729_82,14 +01909_184,4 +017482_54,7 +02021_76,11 +00867_112,0 +019042_136,12 +009512_111,0 +01814_163,11 +01814_271,11 +00916_49,2 +01839_67,11 +005092_45,2 +00438_171,2 +00175_20,4 +020572_144,3 +01568_34,2 +019042_88,4 +02005_82,11 +00964_123,8 +009162_176,2 +012282_270,14 +01408_110,14 +020052_9,11 +00442_242,4 +021722_110,14 +01643_73,14 +02042_10,14 +01904_2,2 +02054_88,2 +010912_225,6 +00615_192,11 +01605_52,2 +01091_61,1 +01834_105,8 +00438_206,2 +018342_178,8 +016932_254,0 +01493_134,1 +01775_159,12 +005392_206,1 +008482_19,14 +00023_12,2 +009642_88,3 +01228_240,14 +00979_52,1 +00550_120,14 +00721_38,14 +02127_203,17 +00342_20,17 +01044_190,4 +00453_250,9 +00041_87,12 +016052_228,11 +01605_2,14 +01582_61,2 +01763_266,4 +017672_99,14 +00709_282,12 +01001_168,5 +02021_49,11 +019712_216,2 +01804_46,12 +00438_131,2 +017692_290,2 +018342_48,8 +01144_117,2 +01814_238,5 +01501_41,4 +010912_136,5 +00350_8,14 +01427_121,2 +01767_204,14 +02054_218,12 +00509_112,2 +01118_58,7 +01493_226,1 +01767_284,14 +00660_161,0 +008402_277,2 +00535_23,2 +00566_26,14 +00934_53,11 +006972_8,2 +01007_117,0 +006742_2,14 +00837_115,11 +01834_264,8 +00674_102,14 +00124_177,0 +016882_284,2 +016052_196,11 +00721_24,14 +02094_85,12 +016932_191,0 +00065_213,12 +01094_87,11 +01597_25,0 +00009_255,4 +00503_120,1 +00688_71,0 +01953_84,12 +017232_0,4 +00282_21,7 +011912_72,7 +010912_233,12 +00306_8,14 +00729_26,14 +00609_7,14 +00546_160,4 +02012_35,7 +00242_121,12 +01767_185,14 +02187_298,16 +00065_297,1 +01501_106,14 +01706_250,2 +01272_69,4 +014882_148,0 +016432_35,12 +01210_136,6 +00892_21,0 +02088_36,0 +02191_31,7 +00065_43,1 +019252_219,8 +01804_122,12 +00993_12,14 +01408_286,14 +00160_102,11 +02187_239,16 +00442_25,14 +01853_106,5 +00597_53,5 +020052_191,11 +01509_295,11 +011772_20,4 +017672_288,14 +01636_44,0 +010872_197,5 +002802_202,12 +00009_45,12 +010872_154,5 +00462_25,14 +01412_95,0 +018392_145,1 +018392_73,11 +01977_6,14 +01981_82,5 +02030_259,16 +010912_265,14 +01330_250,15 +007222_135,17 +01191_44,14 +01134_154,10 +00718_70,19 +01158_47,0 +007762_3,14 +00506_101,2 +00413_196,2 +00772_3,14 +01953_131,4 +02094_96,2 +00382_53,17 +018792_94,2 +01087_64,14 +008832_23,11 +01145_154,4 +01568_173,2 +00276_114,11 +013302_237,8 +00280_87,2 +009642_69,3 +01045_15,2 +010872_171,5 +01767_150,14 +01706_280,2 +01568_153,2 +01256_77,12 +01929_206,2 +01853_30,5 +01091_141,5 +01909_133,12 +00768_9,14 +00566_244,8 +01578_145,14 +007292_206,14 +00503_23,6 +001022_291,16 +00333_101,4 +01161_129,17 +02186_65,5 +00883_70,11 +00962_83,3 +012722_133,12 +012402_3,2 +00821_62,5 +00566_291,8 +01007_169,13 +00485_198,1 +01578_154,14 +00709_205,19 +00848_6,14 +01158_93,4 +009162_99,2 +01046_41,7 +00102_261,16 +00528_127,4 +000242_105,2 +019592_73,6 +00333_1,2 +01488_82,0 +01437_10,11 +010872_201,5 +00729_249,14 +006092_83,14 +012402_10,2 +01201_43,11 +02149_2,17 +00993_147,7 +005502_106,18 +01968_75,7 +00935_105,14 +01812_46,4 +02062_75,12 +00783_245,5 +02127_285,17 +01428_52,14 +00709_272,9 +01283_20,2 +00280_126,12 +00597_32,5 +00703_87,11 +01977_146,8 +021462_108,18 +01161_104,17 +01929_199,12 +01814_13,5 +011612_244,17 +00979_32,1 +01865_125,11 +016432_65,4 +01971_21,2 +01971_95,12 +00981_12,5 +00306_0,14 +01834_102,8 +00697_55,12 +00232_100,13 +00485_267,4 +01977_105,8 +01228_238,14 +01959_10,6 +01448_114,14 +001022_89,16 +00761_104,14 +00951_6,14 +001242_150,19 +017692_78,9 +00566_159,8 +01636_106,0 +01361_248,15 +00021_162,12 +01184_104,5 +01087_3,14 +01409_77,0 +01330_289,1 +01044_242,12 +012612_18,2 +00729_47,14 +01834_246,8 +01972_209,3 +005392_134,1 +008252_81,4 +01092_111,17 +021722_22,14 +00296_7,14 +01145_108,4 +01182_97,4 +00128_127,2 +01091_140,5 +00228_200,9 +01853_91,0 +00475_167,9 +002752_66,14 +018652_74,18 +000792_270,0 +00867_79,5 +02027_13,17 +009642_51,8 +00677_109,14 +00490_92,2 +00333_148,2 +011772_121,14 +007762_64,14 +01813_93,11 +007222_90,17 +007092_233,19 +00916_132,2 +00009_154,12 +00025_25,17 +00793_289,14 +019592_57,6 +007182_117,19 +02187_77,16 +008402_47,2 +01839_92,11 +00660_191,0 +01684_5,14 +01948_97,13 +00934_55,11 +010912_29,12 +00916_250,5 +009642_52,8 +00577_100,7 +01972_220,3 +016052_164,11 +009162_41,2 +010942_30,11 +021722_36,14 +01688_285,2 +01707_288,7 +011912_120,7 +00438_223,2 +01361_73,2 +00065_162,1 +00453_37,9 +00867_169,14 +00503_46,6 +01879_64,4 +000792_211,9 +01191_76,7 +00181_65,0 +02028_23,15 +01962_70,0 +00242_256,4 +019412_287,14 +00475_276,1 +017072_181,4 +000792_90,9 +01228_201,14 +02146_141,14 +02012_30,17 +00128_81,4 +00160_246,11 +00413_17,14 +01161_40,17 +01219_91,5 +01165_66,5 +017232_139,15 +01046_63,7 +009352_42,7 +00677_98,14 +00567_70,2 +01161_266,17 +00697_97,2 +00065_201,1 +00296_14,14 +01929_142,0 +01158_101,12 +01812_49,4 +01210_109,6 +00280_140,12 +017072_83,0 +009342_6,9 +01210_233,9 +00535_260,8 +01804_100,2 +00981_15,11 +021912_54,7 +01007_268,6 +01763_2,4 +01636_124,14 +00242_125,12 +00964_257,14 +01813_80,11 +01763_124,12 +01228_245,14 +01091_183,1 +02191_11,7 +01256_66,12 +01909_163,12 +01953_161,4 +016052_0,14 +00722_48,17 +01693_117,0 +01769_138,9 +01948_15,14 +01278_98,14 +005882_39,4 +018342_253,8 +01626_117,7 +01228_42,12 +01904_136,12 +00535_221,4 +00722_3,17 +005092_217,12 +003122_12,0 +01488_3,13 +00490_163,2 +02172_246,14 +00607_145,14 +01962_87,0 +00964_52,8 +01901_79,5 +000792_10,9 +00934_6,9 +00674_7,14 +01692_36,2 +00761_1,14 +009162_51,2 +02027_41,18 +005392_295,1 +01977_239,8 +01134_0,16 +00981_111,14 +001022_14,2 +011772_109,14 +011612_109,17 +01605_249,11 +01210_114,6 +02012_44,17 +00438_90,2 +012402_138,12 +01626_33,7 +006092_9,14 +01191_97,7 +00840_6,2 +010872_60,14 +01706_193,2 +01437_279,11 +00628_28,7 +02094_137,2 +01191_67,7 +012192_52,5 +01091_201,1 +01763_77,2 +01087_229,5 +01431_125,11 +01330_224,6 +01901_115,5 +01763_254,12 +01158_72,4 +004532_100,9 +008482_49,17 +01161_91,17 +00276_39,11 +01048_65,5 +01428_13,14 +017692_230,9 +00821_131,14 +000242_29,7 +01001_55,2 +01763_137,12 +00417_284,1 +01877_290,4 +00916_251,5 +01091_5,2 +00964_250,4 +000792_22,9 +00417_165,6 +016932_149,0 +00566_283,8 +01240_186,4 +00505_32,2 +02191_26,7 +010912_92,0 +00023_191,2 +02094_9,4 +01953_267,12 +018132_137,11 +007292_16,14 +00747_69,2 +00485_128,1 +00181_2,14 +001602_239,11 +01787_66,9 +01578_219,14 +00867_11,14 +01049_63,7 +00509_20,2 +01500_37,19 +01767_151,14 +018342_211,8 +00506_40,2 +000792_95,9 +00490_274,5 +01763_288,12 +00837_113,11 +01101_13,14 +01814_46,5 +00867_188,14 +01877_67,4 +01723_186,15 +01177_59,4 +00175_63,4 +016882_96,5 +00729_114,14 +01423_60,2 +01118_94,14 +00342_21,17 +00979_131,14 +00563_37,4 +01904_162,12 +01091_156,5 +00729_139,14 +010942_5,14 +02172_69,12 +02162_68,17 +016982_62,17 +013302_109,9 +01804_48,12 +008402_238,2 +01457_8,2 +019412_26,14 +00474_62,2 +01058_8,2 +01769_188,2 +01971_113,4 +019242_187,14 +01001_214,5 +010012_139,5 +01488_227,5 +01371_51,14 +01210_131,6 +01879_93,2 +00552_96,2 +01427_80,17 +01431_148,11 +01240_138,12 +009642_90,3 +00296_52,7 +014272_124,14 +01578_193,14 +014372_223,11 +012612_2,2 +00979_89,1 +01191_179,2 +01568_227,2 +00539_288,5 +012612_16,2 +008372_169,14 +00539_69,1 +01087_264,5 +01707_137,0 +01962_120,0 +010012_126,5 +00474_239,2 +01145_80,4 +00539_163,17 +006972_58,12 +01330_70,9 +00535_264,6 +02030_248,16 +00505_3,2 +01161_222,17 +01044_282,4 +004172_156,6 +019252_238,8 +00159_38,2 +01261_81,2 +01108_23,0 +014272_126,14 +01144_149,2 +012402_41,2 +01240_75,4 +011912_65,7 +02054_34,2 +021772_27,4 +010912_38,12 +018772_220,4 +00382_105,13 +00350_124,9 +00506_134,2 +00981_114,14 +00505_193,7 +01924_193,14 +017752_69,12 +00615_86,1 +01228_13,14 +01929_5,14 +00456_108,12 +02042_7,14 +01092_6,17 +00333_89,0 +00296_74,7 +01948_184,13 +00175_9,12 +01879_17,2 +010912_54,1 +01962_91,0 +00660_201,0 +014232_63,2 +00181_130,0 +00417_110,6 +004172_159,6 +019412_226,14 +00840_119,7 +02049_26,6 +007832_11,2 +008482_55,17 +011612_289,2 +00021_150,2 +01182_66,0 +00408_67,1 +01119_106,14 +01763_185,12 +012722_228,4 +00979_64,1 +018122_103,2 +01044_42,4 +02138_36,14 +01877_298,4 +00772_33,7 +016932_67,0 +00709_17,19 +01165_116,2 +02187_139,16 +00009_145,7 +005882_24,4 +00065_66,1 +009342_32,1 +01046_113,14 +007212_213,14 +016882_87,5 +012722_116,2 +016052_86,5 +00550_97,18 +000092_235,12 +017752_52,12 +02162_28,5 +009162_97,2 +01582_24,17 +01240_57,12 +002802_27,14 +00935_38,7 +01834_147,8 +008372_148,11 +01007_157,13 +00721_142,12 +018342_62,8 +019412_111,14 +01044_224,2 +004172_252,6 +01488_165,13 +00065_126,1 +00128_245,12 +02042_42,14 +01568_39,2 +00793_7,14 +00825_57,2 +00783_78,17 +02191_60,7 +00837_167,0 +02172_185,14 +01693_145,0 +01877_265,4 +01092_85,17 +00413_134,0 +010012_132,5 +01804_25,4 +018132_123,11 +008372_63,11 +01972_275,14 +01330_93,9 +007832_148,4 +019042_47,12 +005502_73,18 +00660_120,0 +01568_27,2 +005062_21,2 +020572_164,3 +02028_48,9 +00578_60,1 +004172_129,17 +005282_48,2 +005282_199,0 +01767_36,14 +00009_30,7 +01134_107,10 +008372_114,11 +01812_112,2 +01956_29,18 +00394_72,17 +00981_32,11 +00490_68,2 +017482_9,11 +01134_71,10 +00892_20,0 +01981_133,14 +008402_263,2 +00158_275,5 +000232_37,4 +000232_110,5 +00450_128,13 +01493_178,1 +013302_289,1 +016052_160,11 +00102_91,16 +00550_91,18 +01351_116,7 +012282_180,14 +02186_9,14 +00567_11,2 +018132_13,11 +007292_117,14 +01256_3,14 +01877_172,4 +00065_289,1 +00124_61,4 +01240_274,12 +00462_149,13 +02138_20,2 +01877_68,4 +011912_99,7 +01853_60,5 +00793_152,14 +00088_57,5 +01971_83,4 +01092_20,17 +01228_214,14 +001242_10,4 +01134_106,10 +00681_85,14 +021772_19,4 +01161_143,17 +012722_174,12 +005392_293,1 +00979_83,1 +01568_68,12 +017692_17,2 +002802_240,14 +01767_52,14 +00021_28,5 +02005_128,11 +017692_227,9 +00660_284,2 +00875_27,2 +000792_217,0 +00160_31,11 +00417_70,17 +019712_28,2 +005392_214,1 +00597_40,5 +01501_96,14 +012402_229,12 +016932_65,0 +019252_249,8 +01330_62,18 +002802_180,4 +01901_53,5 +007832_250,5 +00287_120,4 +00883_76,11 +01853_29,5 +01408_111,14 +00546_53,4 +01626_32,7 +02005_17,11 +01358_27,1 +018342_58,8 +01119_108,14 +01165_74,5 +01812_62,4 +01972_172,13 +00538_107,1 +00519_99,11 +00242_8,2 +01929_225,14 +014232_112,0 +01882_7,14 +009162_142,2 +019712_181,4 +01948_190,13 +004172_39,17 +00660_232,0 +02187_85,16 +001602_126,11 +01693_196,0 +00660_36,0 +01145_66,2 +016932_84,0 +01409_160,0 +011612_155,17 +002752_112,14 +001022_286,16 +019242_29,14 +007212_138,12 +00609_40,11 +000232_132,6 +02054_97,12 +004672_63,11 +005092_35,2 +017692_287,2 +01763_109,2 +021622_70,17 +00709_4,19 +018342_215,8 +012722_220,4 +011082_65,14 +01007_103,0 +012282_100,14 +010872_216,5 +01044_134,4 +001602_80,1 +020572_196,3 +007832_33,2 +01108_55,4 +018652_97,18 +01427_9,14 +01582_32,17 +017072_281,7 +019712_34,2 +01409_208,14 +01182_22,13 +020052_4,11 +00601_9,7 +013302_203,9 +01853_93,0 +01813_118,11 +00538_132,2 +00875_95,2 +00615_224,11 +01924_44,14 +00124_35,4 +01763_183,2 +00761_68,14 +00729_185,14 +01925_284,8 +01925_293,8 +01971_188,2 +002752_135,14 +00601_118,5 +00519_66,11 +01427_34,17 +01261_79,12 +01509_138,0 +007092_96,11 +00539_222,1 +014372_189,11 +01623_10,14 +00128_11,12 +02054_171,2 +01158_60,0 +02054_131,4 +00867_106,0 +014882_130,13 +01901_52,5 +01723_260,15 +00314_200,4 +01431_273,11 +00242_282,12 +01494_52,7 +000232_5,2 +006092_8,14 +00506_24,2 +02005_12,11 +00539_46,6 +00718_44,19 +014372_265,11 +01210_116,6 +019242_150,14 +018772_112,4 +017072_194,0 +020052_109,11 +00538_62,17 +01763_231,4 +00538_16,4 +01065_97,1 +00535_296,2 +000092_16,12 +01409_91,0 +009162_160,2 +009642_85,3 +010872_165,5 +01108_73,14 +00840_142,7 +004082_47,1 +00718_39,19 +019712_3,2 +000792_74,9 +00615_161,11 +007762_13,4 +01240_174,12 +00102_285,16 +00503_298,6 +01767_132,14 +000252_3,17 +02094_111,12 +00306_93,14 +006972_9,12 +00382_15,7 +01408_114,14 +00538_90,2 +00567_48,5 +00697_41,2 +012192_22,5 +005092_58,12 +017232_118,15 +01058_126,12 +01959_67,6 +00408_165,11 +01814_263,11 +010912_124,5 +01091_91,0 +010012_63,12 +00450_151,12 +00350_173,5 +009162_149,2 +00261_29,2 +01748_10,11 +019712_42,2 +00009_223,2 +01161_178,17 +017232_293,15 +00528_27,2 +01769_91,0 +00957_9,0 +01177_27,15 +00394_69,17 +01161_269,17 +007292_44,14 +008372_164,0 +004082_105,11 +008482_95,17 +01953_287,2 +016432_90,14 +018342_25,14 +00703_32,11 +00088_90,14 +009622_43,0 +006742_106,14 +012402_75,4 +011612_47,17 +01813_149,14 +019592_12,6 +00009_210,12 +001242_201,0 +019252_256,8 +017072_282,7 +00474_70,2 +020052_92,11 +01977_256,3 +01865_49,18 +014232_85,0 +01901_103,0 +00729_208,14 +00539_35,6 +01046_54,7 +000092_214,7 +01497_21,2 +02138_256,14 +005062_129,2 +01191_134,2 +020572_153,3 +00506_121,2 +00453_173,1 +02186_105,14 +01358_62,1 +00438_294,12 +01636_109,4 +00875_8,2 +01767_211,14 +017752_38,12 +021772_50,12 +019622_134,0 +014232_14,2 +01092_122,17 +013302_52,9 +01839_9,2 +01972_146,3 +01144_75,6 +00538_35,1 +01331_21,14 +00467_39,11 +01219_110,5 +007092_196,19 +01829_23,12 +01597_77,0 +00783_260,5 +018772_107,4 +02049_81,3 +00382_66,17 +01144_12,5 +00413_113,0 +01161_134,17 +01272_107,2 +02172_123,4 +00287_103,4 +010912_68,1 +01879_79,12 +012722_173,12 +00539_274,1 +00456_119,14 +00041_79,12 +01428_37,14 +014972_43,2 +01001_28,2 +01361_142,3 +008402_83,2 +01763_42,2 +00567_281,2 +01707_219,0 +009352_91,7 +01134_148,10 +00475_178,1 +02054_224,12 +01643_79,14 +01272_187,2 +00729_125,14 +01901_54,0 +01929_123,0 +011612_259,17 +01941_233,14 +00840_23,2 +01977_177,8 +01953_116,7 +009352_97,7 +007762_90,14 +010872_80,5 +02028_32,15 +001602_226,1 +01261_58,2 +00567_278,2 +002802_126,12 +007292_173,14 +006092_25,11 +005882_95,13 +00232_75,13 +00275_11,14 +01688_91,5 +00709_12,19 +014232_210,0 +00025_61,17 +012562_46,4 +01707_1,2 +01775_75,2 +001022_48,16 +007292_10,14 +00709_56,19 +011912_153,14 +01272_10,2 +02030_197,16 +005282_15,2 +01283_58,2 +01437_9,11 +013712_41,14 +00588_64,13 +01509_239,11 +00783_62,2 +00021_118,2 +017022_76,14 +00450_64,15 +00474_82,2 +005062_98,2 +00276_132,14 +021622_61,7 +02005_248,11 +01045_130,4 +01968_81,7 +017692_31,2 +00408_12,2 +009642_234,15 +00535_246,9 +00413_79,0 +019252_224,8 +01763_299,2 +01431_45,5 +016052_176,11 +00417_256,5 +01688_262,5 +00697_99,12 +01423_6,2 +00417_193,17 +01972_66,3 +018772_274,4 +01409_159,0 +00021_90,2 +01698_26,17 +01007_114,0 +012722_179,2 +00552_48,7 +00474_171,2 +01044_277,4 +007182_6,2 +01834_131,8 +00660_205,0 +007292_14,14 +014232_252,2 +010872_269,5 +01091_120,5 +01488_72,0 +02049_68,3 +00993_135,7 +016882_156,14 +00951_126,0 +003062_83,7 +01431_196,11 +01448_39,19 +01103_23,9 +01091_68,1 +01688_185,5 +00505_148,12 +01333_4,4 +00280_38,14 +00503_178,5 +01165_67,5 +01578_91,14 +01001_199,5 +00721_61,2 +005392_297,1 +00065_8,1 +00088_72,5 +013712_38,4 +01330_34,17 +00474_136,2 +01118_97,14 +01145_2,2 +01278_71,12 +02049_272,4 +01437_269,11 +005282_11,2 +001602_93,11 +007212_178,12 +00578_58,1 +00314_188,4 +00350_277,9 +02138_259,14 +004082_55,1 +00563_76,6 +011772_77,14 +00566_27,14 +019712_253,12 +01723_68,15 +00306_49,7 +020052_228,11 +016052_232,11 +00128_166,2 +02028_60,15 +02030_66,14 +01925_244,8 +012402_29,2 +01497_49,12 +00709_226,19 +00011_0,0 +020572_138,3 +01972_102,13 +01408_173,14 +01240_245,12 +00442_165,4 +009512_44,0 +00730_23,17 +00232_76,13 +00721_210,14 +00721_26,14 +003122_22,0 +00490_254,5 +021462_92,18 +01839_101,11 +00674_39,12 +009642_147,8 +01240_77,4 +00783_180,2 +00408_270,13 +017752_26,2 +00867_105,0 +00567_172,2 +010942_37,11 +02187_211,16 +00475_232,1 +00674_45,14 +000092_64,12 +01605_82,5 +019712_295,12 +01007_196,19 +014882_117,0 +02057_89,12 +01448_10,14 +018792_107,2 +00761_184,3 +00242_234,12 +010012_271,5 +00438_214,12 +01058_67,2 +009162_257,5 +00417_93,6 +004532_6,5 +00128_200,4 +02172_223,14 +012402_126,2 +00242_206,4 +01643_99,14 +00628_77,7 +00474_175,2 +01412_27,0 +005092_175,2 +008252_82,2 +01925_74,3 +007832_201,2 +00438_59,2 +004532_185,9 +02146_179,14 +01693_65,0 +021912_22,7 +007182_94,19 +014072_16,12 +01707_187,0 +02172_66,12 +00729_0,14 +000792_125,9 +004532_280,9 +012282_65,14 +012282_287,14 +017232_105,15 +01278_208,2 +008252_65,12 +01804_14,7 +00025_36,17 +004532_97,9 +01361_161,3 +00124_29,4 +018792_13,2 +007092_283,12 +016932_20,14 +00546_96,3 +017672_12,14 +01877_283,4 +01706_154,2 +00783_7,2 +019712_157,2 +005882_129,13 +01210_8,9 +01971_255,12 +00503_124,1 +00275_149,14 +003062_4,14 +01977_124,8 +01228_187,14 +00660_184,0 +01962_98,0 +02191_12,7 +00528_121,2 +01925_279,8 +02042_46,14 +00993_166,7 +01431_191,11 +01763_50,2 +01688_171,14 +020052_131,11 +004172_140,6 +01092_200,14 +00242_106,12 +02138_138,13 +01814_285,11 +005882_237,2 +01688_8,5 +01177_103,12 +01001_176,5 +006972_63,5 +00503_180,5 +017672_283,14 +01240_10,2 +005062_45,2 +00588_142,13 +007832_249,5 +012192_97,5 +01312_8,14 +00840_269,2 +004532_63,9 +01488_94,13 +00615_18,11 +01001_287,5 +001242_134,19 +005282_24,2 +010872_20,14 +005092_59,12 +019712_195,12 +016842_29,4 +00450_165,14 +002802_190,14 +01981_89,5 +02054_100,12 +00883_1,11 +01767_5,14 +00124_153,19 +016882_220,5 +01087_160,5 +00275_74,14 +01812_10,2 +01058_24,2 +00228_164,9 +01904_5,2 +01278_3,2 +01977_151,8 +00730_122,14 +010872_10,14 +01119_91,11 +01108_27,15 +01698_103,17 +001602_78,11 +00175_78,4 +00793_11,14 +00041_41,12 +00490_247,5 +01094_11,14 +00761_71,14 +01877_192,4 +01228_26,14 +01834_299,8 +000792_299,9 +01834_217,8 +01877_212,4 +00442_147,0 +005062_28,2 +00867_52,5 +011912_194,14 +01134_4,16 +008402_149,7 +00840_242,2 +00158_253,5 +011912_125,7 +00021_30,4 +012402_276,12 +00228_60,11 +00041_98,12 +002802_17,14 +01977_85,3 +02012_114,14 +014882_206,0 +01692_115,1 +000092_114,7 +007092_124,4 +005502_77,18 +004532_271,9 +019412_142,14 +00475_295,9 +00563_121,2 +018132_55,11 +020572_91,12 +009342_27,1 +009642_256,14 +01103_8,14 +02062_52,2 +01877_3,4 +01693_198,0 +01256_107,14 +02030_230,16 +00993_165,7 +007832_79,17 +021622_78,17 +02030_271,16 +01101_29,7 +00563_91,4 +008482_146,14 +00350_121,9 +00280_144,4 +00703_11,14 +00660_241,12 +01500_0,0 +013332_45,4 +00935_47,7 +017232_218,15 +012612_7,2 +00314_159,0 +005392_166,17 +01361_236,15 +00314_209,4 +00088_44,5 +017692_126,11 +018122_81,2 +004082_98,11 +01924_131,14 +010012_14,2 +02187_121,16 +01177_29,4 +002752_42,14 +01044_193,4 +02005_127,11 +005882_97,13 +00546_154,15 +01509_91,0 +01423_263,2 +00228_18,14 +01605_147,5 +00102_184,16 +02028_66,3 +01909_114,2 +008922_77,2 +00957_84,0 +006972_78,5 +01165_81,5 +01941_119,14 +01707_38,2 +018392_164,1 +007212_137,12 +00228_296,7 +013302_163,15 +00837_112,11 +01925_195,8 +014232_2,2 +01108_71,14 +00287_143,15 +01134_136,10 +019592_72,6 +021722_122,4 +01707_179,4 +00848_145,14 +00009_24,12 +00456_186,14 +008482_152,14 +000252_82,17 +00009_47,12 +00485_193,1 +01428_36,14 +014972_4,5 +00408_136,1 +005392_120,1 +02138_16,14 +000232_8,2 +00709_151,5 +01909_134,12 +021462_25,11 +00519_115,11 +014882_220,0 +011772_32,14 +01361_51,12 +01409_131,0 +02191_95,7 +00550_95,18 +004532_200,9 +01582_39,7 +00102_130,16 +01351_163,14 +02127_22,2 +00718_14,2 +016432_87,14 +02005_37,11 +016922_45,2 +01706_32,2 +00128_272,12 +01804_72,2 +01692_61,5 +00160_151,11 +00709_229,19 +01509_43,0 +013712_43,14 +01925_12,14 +001022_149,16 +014882_135,13 +02094_3,2 +01493_101,1 +012722_203,4 +001022_246,16 +00793_19,14 +00462_136,13 +01118_86,14 +01134_281,10 +02094_69,12 +00408_93,11 +00709_251,19 +01007_20,12 +00475_107,9 +010872_8,14 +019412_8,14 +00158_109,11 +02028_77,5 +01182_4,14 +012722_210,4 +01351_64,7 +020052_200,11 +00979_56,1 +01228_246,14 +00128_69,4 +00159_32,4 +00509_102,2 +016932_178,0 +01706_199,2 +00546_178,14 +01787_71,9 +01191_104,7 +001602_163,11 +01707_224,0 +017232_199,15 +01488_210,0 +00566_195,8 +01723_89,15 +01094_59,11 +00730_154,14 +017482_69,0 +009162_174,2 +000092_137,2 +011612_86,17 +00287_225,4 +01834_142,8 +01144_39,5 +01134_141,10 +01605_106,5 +016052_189,11 +016882_259,5 +01330_260,4 +02191_24,7 +012562_49,4 +018342_14,14 +005282_36,2 +02138_198,13 +01622_73,0 +00160_159,11 +02042_28,15 +00867_166,14 +01087_223,5 +00993_15,14 +01972_278,14 +000092_86,12 +007212_84,14 +02187_194,16 +01853_9,14 +014372_161,11 +01437_37,11 +010872_199,5 +005882_109,13 +005282_216,0 +019412_47,14 +00382_67,17 +008482_120,17 +01007_170,13 +00417_285,1 +00563_123,2 +004532_77,9 +00916_79,2 +01046_3,14 +01165_121,14 +009642_199,8 +01408_282,14 +01723_233,15 +01101_146,14 +005882_105,13 +00721_81,4 +00276_1,14 +01623_101,5 +00306_37,7 +01707_153,4 +008372_165,0 +01904_120,2 +007092_117,17 +00578_76,4 +009352_65,7 +00848_12,14 +02127_140,17 +01408_70,14 +00660_288,2 +01763_271,2 +006092_15,2 +007212_100,14 +010912_45,6 +00490_251,5 +002802_208,12 +017672_194,14 +00475_30,5 +001602_119,11 +01091_43,12 +012402_267,2 +02021_101,5 +01210_18,7 +01161_45,17 +019712_68,12 +017232_247,15 +01409_191,14 +00242_270,4 +007212_209,14 +02187_55,16 +02186_89,5 +01407_33,0 +019242_157,14 +00442_273,4 +018342_243,8 +004532_21,9 +01283_45,2 +01568_236,2 +012192_35,5 +007182_87,19 +00426_103,0 +01134_163,10 +010012_120,5 +00783_228,5 +01775_94,12 +01877_133,4 +00232_22,2 +001602_146,11 +00503_17,6 +004082_282,11 +00588_234,2 +01813_49,11 +01693_63,0 +004172_211,17 +01702_57,2 +001022_106,16 +018122_93,2 +00609_70,14 +00474_73,2 +01839_13,2 +00840_99,2 +016842_12,14 +002752_155,14 +01814_25,5 +02172_127,14 +009622_18,0 +01688_127,14 +01909_20,2 +01941_211,14 +008252_41,12 +007292_47,14 +00721_155,4 +00528_11,2 +02186_46,5 +00438_103,2 +00462_154,13 +00793_204,14 +005502_40,18 +00539_71,1 +00539_106,1 +01706_45,2 +013302_269,15 +00528_209,0 +01161_8,17 +01853_127,14 +00102_126,16 +012722_175,12 +01210_207,6 +00993_37,14 +01904_140,12 +00462_134,13 +01763_71,4 +00563_45,7 +011082_53,14 +014232_81,0 +01924_9,14 +01953_273,12 +01501_37,4 +00181_83,0 +017752_45,2 +00535_77,12 +02054_178,4 +019252_14,14 +01144_3,5 +01723_172,15 +007832_81,17 +01427_119,2 +00538_21,17 +01953_118,4 +00916_216,2 +017232_227,15 +01956_23,1 +01427_13,14 +013302_91,1 +01948_42,4 +00314_211,4 +001112_34,17 +02127_212,17 +00453_113,9 +019712_37,2 +01769_166,11 +004172_17,6 +00539_220,1 +01865_73,18 +01769_197,2 +01941_116,14 +01972_246,12 +02138_69,12 +01278_200,2 +01929_77,0 +01501_66,14 +018342_34,6 +01423_146,0 +01101_161,14 +01407_51,12 +004082_76,11 +00509_51,2 +01748_52,7 +01723_181,15 +00674_140,14 +01058_89,2 +019242_232,14 +019592_39,6 +006092_1,14 +00314_274,0 +01688_180,5 +005282_56,2 +00350_64,14 +009642_177,8 +00453_283,9 +00628_96,7 +01371_21,12 +017672_254,14 +016052_227,11 +005502_24,18 +01497_28,2 +00772_79,7 +00011_115,12 +01853_116,2 +01045_109,4 +01948_181,13 +001602_156,11 +010652_30,18 +02049_71,3 +004172_172,6 +01622_1,14 +01767_67,14 +012282_151,14 +01877_196,4 +01448_78,3 +012402_88,2 +00964_58,3 +00546_202,14 +010912_69,1 +00333_69,4 +00916_106,2 +005282_215,0 +00793_200,14 +019412_116,14 +010652_53,18 +01161_125,17 +007292_110,14 +01087_91,5 +016882_8,5 +00160_247,11 +016882_106,5 +01748_31,0 +014272_48,17 +01361_80,12 +005882_140,13 +00485_81,1 +01688_145,14 +004172_10,14 +01283_47,2 +009162_61,2 +01972_46,3 +02030_195,16 +01941_249,14 +02062_16,2 +000792_151,9 +00729_158,14 +014372_200,11 +01158_107,4 +008482_121,17 +01210_296,9 +008402_209,7 +00242_257,4 +009352_30,7 +012282_152,14 +00550_63,18 +01210_170,6 +00390_81,5 +00567_277,2 +00490_126,12 +01119_103,5 +01706_95,2 +018772_47,4 +01813_42,11 +009642_20,14 +02054_230,14 +00546_117,3 +007762_20,4 +010012_150,5 +01706_7,2 +00535_49,2 +01428_30,14 +01568_217,2 +01094_66,11 +018132_101,11 +01210_110,6 +01904_105,12 +017672_186,14 +01977_17,14 +01684_38,14 +004532_116,9 +02062_79,12 +01688_133,14 +00453_73,9 +01101_174,14 +01877_141,4 +00607_85,11 +01834_37,6 +016052_110,5 +01684_59,14 +016052_109,5 +010872_16,14 +015972_11,12 +00567_82,2 +02012_113,2 +001022_147,16 +01092_258,17 +00102_1,2 +01366_38,17 +01981_66,5 +00350_0,14 +00567_269,2 +01769_208,11 +00609_58,11 +02027_12,17 +00546_28,14 +02030_288,16 +01092_45,17 +02094_101,2 +00609_36,11 +00783_124,6 +00935_40,7 +01971_169,12 +01568_178,2 +00519_151,14 +01228_176,14 +01494_94,14 +019712_100,12 +00761_189,3 +007092_24,19 +005882_83,13 +003062_65,7 +012612_31,2 +01118_101,14 +018122_114,2 +00837_66,11 +01044_172,4 +01134_113,10 +01145_39,2 +019712_283,12 +01767_127,14 +017752_163,12 +00718_20,19 +01210_182,6 +01568_107,12 +012402_205,12 +009642_106,8 +005282_60,2 +01283_72,14 +02094_140,2 +00041_91,12 +00793_69,14 +00709_298,12 +01134_59,10 +00287_136,15 +01177_18,4 +018772_31,4 +00528_152,0 +016882_272,2 +016932_54,0 +011772_65,15 +002752_146,14 +020572_32,2 +001242_85,19 +00506_35,2 +01045_175,4 +005882_110,13 +001022_112,16 +01001_225,5 +00009_196,12 +01971_8,2 +019622_93,0 +00438_50,2 +019412_197,14 +009162_259,5 +021912_63,7 +004082_261,13 +016922_21,2 +00566_252,8 +005092_135,12 +016882_258,5 +007832_45,2 +02162_89,12 +00546_47,14 +01182_79,14 +00124_101,19 +00228_56,11 +01707_110,1 +016882_151,14 +017072_79,0 +016932_49,0 +01578_69,14 +00509_81,2 +01219_44,5 +010012_93,5 +01948_55,13 +00609_25,11 +01879_85,4 +01707_269,7 +00442_179,4 +00951_55,0 +01044_270,4 +02138_133,13 +02138_26,2 +014282_84,14 +00413_129,0 +018392_28,14 +01001_58,12 +018392_69,11 +00793_171,14 +00088_87,14 +00041_86,12 +02030_157,16 +00730_103,14 +005282_170,0 +001022_129,16 +02162_127,5 +00417_213,17 +02162_60,7 +01118_75,7 +01622_81,13 +007092_189,19 +01423_41,2 +00981_59,11 +00158_114,11 +00021_161,12 +01688_273,2 +02012_59,7 +01134_55,10 +01834_149,8 +018392_37,2 +00528_118,2 +01330_216,6 +01493_161,1 +016922_96,1 +02042_114,0 +00951_134,14 +006742_36,14 +00867_13,14 +00538_82,12 +00506_91,4 +01692_0,14 +01962_121,0 +01493_135,1 +00079_213,9 +017692_223,9 +018792_106,2 +01501_91,14 +014972_46,12 +018772_197,4 +02042_108,4 +01407_4,4 +00503_215,9 +004082_251,1 +01578_191,14 +00761_248,3 +01092_62,17 +01092_143,17 +00124_81,19 +004082_149,11 +01763_297,2 +00951_101,0 +02027_16,17 +011772_75,4 +005882_159,13 +01048_81,14 +01161_268,17 +003122_23,0 +01409_1,14 +00025_1,17 +01408_180,14 +00776_13,4 +00041_123,7 +00962_27,4 +009512_48,0 +00772_36,7 +01834_259,8 +00453_20,9 +003122_21,0 +00528_30,2 +014882_246,5 +01448_5,14 +00023_154,6 +007182_83,19 +01626_23,7 +00023_62,3 +00079_8,9 +00242_232,12 +01045_40,2 +00615_35,11 +01087_8,14 +01145_171,4 +007832_128,12 +02049_167,13 +005092_107,12 +01769_168,11 +00892_69,2 +01366_23,17 +001602_97,1 +017692_237,9 +017672_202,14 +00438_98,12 +02054_167,12 +02005_232,11 +00729_94,14 +01158_7,12 +00505_249,14 +00567_119,5 +011912_38,14 +01408_259,14 +00158_103,11 +02138_159,13 +00408_278,11 +010012_122,5 +00783_210,2 +00916_85,2 +01909_22,2 +019042_4,2 +02042_56,15 +01423_222,0 +00793_192,14 +016982_51,17 +00892_91,2 +007832_193,12 +00079_229,9 +01702_12,12 +01684_65,14 +000792_76,9 +00837_29,11 +00296_51,7 +00503_59,6 +011082_75,14 +01977_59,4 +01210_223,9 +00232_163,14 +00506_38,2 +00567_129,2 +01361_210,3 +00615_67,11 +02094_54,4 +01643_87,14 +005282_198,0 +00730_63,18 +01706_84,2 +00009_202,12 +01977_163,8 +008372_21,11 +00660_188,0 +00124_50,0 +00607_8,14 +007832_199,12 +02030_152,16 +01962_42,0 +01134_200,10 +01330_142,9 +01925_16,14 +01904_91,2 +02187_35,16 +007292_148,14 +01165_62,5 +021622_55,7 +01256_9,14 +002752_140,14 +00688_37,4 +02030_233,16 +005392_102,1 +007222_145,6 +01408_105,14 +00677_17,14 +00677_60,14 +011612_163,17 +016052_63,5 +02127_149,17 +01261_88,2 +01684_42,4 +021462_147,14 +01361_263,15 +01775_81,4 +01045_27,2 +00503_103,1 +020572_25,2 +01605_207,11 +00228_176,9 +00567_78,2 +019592_31,6 +01094_55,11 +01953_66,2 +00546_37,14 +02049_247,3 +019622_24,0 +01723_294,15 +006972_60,5 +01001_40,4 +00475_90,9 +01494_54,7 +01044_290,4 +01953_223,4 +01959_24,6 +00158_120,5 +01804_109,7 +01698_115,14 +00539_191,1 +015972_51,0 +004172_1,14 +00408_115,13 +00065_0,5 +019252_242,8 +001602_134,11 +00342_16,17 +009622_71,3 +01333_3,0 +00993_154,7 +00539_50,1 +01688_207,5 +01925_137,3 +000242_114,2 +01045_276,4 +00041_33,12 +00892_33,0 +00128_104,4 +017752_160,12 +012722_14,2 +01103_66,14 +00079_246,9 +00660_280,2 +02057_142,3 +00467_62,11 +01925_120,3 +01428_25,14 +009162_59,2 +008372_146,11 +001022_271,16 +01177_52,4 +01981_84,5 +01283_24,2 +02162_50,17 +00550_80,18 +00159_41,2 +01877_35,4 +01361_42,12 +01144_111,4 +014232_188,0 +00916_67,2 +01834_79,8 +004082_166,11 +008832_4,11 +01201_17,14 +01119_73,11 +01493_287,1 +01707_261,7 +003122_14,0 +00408_97,11 +00314_218,0 +01240_147,12 +018342_278,8 +00041_158,7 +01361_156,3 +01643_72,14 +00577_104,7 +019622_108,0 +00848_74,17 +01092_240,1 +005092_178,12 +00474_229,2 +019592_54,6 +01046_11,14 +01044_28,4 +00474_105,2 +01191_112,7 +021722_134,12 +00957_68,2 +00503_129,1 +01256_83,2 +00821_87,5 +005282_196,0 +00509_224,2 +00450_117,13 +01568_242,2 +01972_203,3 +01044_145,4 +01769_9,2 +00535_186,0 +01626_53,7 +00538_91,2 +000232_170,2 +014232_21,2 +016052_40,14 +00438_179,2 +00567_41,2 +00964_68,3 +010872_198,5 +00426_131,0 +021622_116,18 +001242_246,0 +01767_18,14 +01158_63,0 +01977_110,8 +01605_279,11 +007212_57,2 +02062_104,4 +009642_55,3 +02028_35,3 +02030_75,14 +01007_105,0 +02138_70,12 +00475_177,9 +02049_171,13 +00535_44,2 +007292_62,14 +01261_14,2 +00840_197,7 +01092_43,17 +01929_101,0 +02172_186,14 +007182_56,19 +012562_95,2 +01977_23,2 +00158_60,14 +00314_148,0 +00721_141,12 +01959_32,6 +01134_103,10 +00350_193,5 +01924_96,14 +014282_5,14 +00721_70,12 +00021_52,3 +00350_241,9 +00009_86,12 +00509_52,2 +00065_182,1 +009642_269,14 +00761_292,3 +00228_144,9 +00747_44,4 +00709_135,12 +008922_99,2 +02187_57,16 +00088_28,5 +00962_48,13 +02186_4,14 +00538_136,14 +019242_98,14 +018772_297,4 +01331_3,14 +007292_71,14 +017072_219,0 +01693_149,0 +00837_179,14 +00722_47,17 +00840_130,7 +01981_114,5 +016982_74,17 +01904_34,2 +007292_220,14 +000792_109,15 +00709_13,19 +00442_30,14 +01626_77,7 +002802_144,4 +00350_81,5 +00009_61,12 +01423_88,0 +01058_28,2 +00505_159,14 +018342_119,8 +01437_33,11 +00181_152,14 +00490_297,5 +01925_161,3 +00519_85,11 +00730_58,18 +01909_50,2 +01423_82,0 +016052_92,5 +007222_19,17 +02162_18,14 +00674_96,14 +01488_39,0 +00442_39,14 +00674_110,14 +013302_126,9 +00242_242,12 +01134_188,10 +00730_11,14 +00009_149,0 +00577_97,7 +00314_220,4 +006092_40,11 +01092_280,12 +000092_140,7 +00011_123,2 +019622_37,0 +01693_41,2 +00993_27,14 +01688_58,5 +00453_16,1 +007182_92,19 +00333_131,2 +013302_50,9 +00280_116,4 +02191_57,7 +01948_124,13 +00840_184,7 +01361_283,15 +00021_58,3 +005502_80,18 +000232_152,6 +001242_247,0 +00962_43,0 +00783_51,2 +00442_298,4 +01182_16,4 +00588_149,13 +01707_97,0 +01191_170,14 +00677_112,14 +02012_45,17 +012402_190,4 +01191_107,7 +01448_110,14 +01045_64,4 +02138_39,12 +01134_201,10 +00474_244,2 +00538_56,17 +00837_79,11 +012402_127,2 +00023_74,3 +01925_281,8 +001602_198,1 +012402_99,12 +00729_67,14 +00528_161,0 +01366_80,17 +017692_245,11 +01457_57,7 +01723_203,15 +01437_263,11 +01962_27,0 +018392_142,1 +01044_197,12 +00314_40,2 +01191_157,14 +01228_174,14 +01948_57,13 +00935_91,7 +00023_117,5 +00935_4,14 +01769_126,11 +00228_174,9 +02049_258,3 +00490_95,2 +019252_251,8 +01901_65,12 +00382_74,17 +005092_206,12 +00261_15,2 +00276_105,11 +001022_70,16 +02187_30,16 +01814_265,11 +020052_201,11 +01488_1,13 +00505_190,7 +005392_245,1 +005282_150,0 +00408_62,1 +02094_12,4 +011612_282,17 +01210_162,6 +02005_166,11 +00408_202,11 +016932_98,0 +01578_160,14 +00697_40,2 +019242_144,14 +00442_124,4 +012402_154,4 +005392_202,6 +01568_93,2 +009162_25,2 +01909_128,12 +00394_114,14 +016932_262,0 +01929_200,12 +016882_17,5 +01769_19,2 +01834_298,8 +01001_13,2 +01698_36,17 +01605_49,14 +00065_165,1 +011912_74,7 +01901_117,5 +01228_72,14 +00128_230,0 +005392_267,1 +01941_222,14 +016052_20,14 +01201_77,11 +005502_92,18 +00783_263,5 +00394_51,4 +010652_32,18 +00567_260,2 +018772_172,4 +00607_91,6 +00916_26,2 +01431_24,11 +00964_132,8 +01706_53,2 +00009_135,2 +00981_100,11 +00475_44,9 +02177_24,4 +00951_116,0 +01882_26,5 +00485_261,4 +012722_108,2 +01046_94,7 +01494_68,7 +00242_41,12 +01330_95,9 +01706_104,2 +014282_86,14 +01882_20,5 +007292_33,14 +00892_43,0 +01769_206,5 +010942_12,14 +013302_119,1 +01145_193,4 +008372_12,0 +00453_32,9 +017752_73,12 +014882_84,0 +00160_200,11 +00609_12,14 +00021_163,12 +01210_176,6 +00505_195,7 +00065_256,12 +00128_239,12 +00677_8,14 +010652_28,18 +00848_132,17 +00962_85,3 +007092_53,19 +01688_216,5 +014882_192,13 +007092_249,19 +021722_135,12 +012282_237,14 +018342_35,6 +007292_46,14 +016052_208,11 +01048_62,5 +00350_21,14 +01948_153,13 +014372_41,11 +00840_272,2 +005092_235,2 +021772_14,4 +00718_27,19 +019252_50,12 +007832_63,2 +007832_49,2 +01351_151,2 +00677_6,14 +01423_95,0 +00607_16,14 +01045_189,4 +01361_56,2 +016882_260,5 +014282_40,4 +013302_58,18 +01812_44,2 +01706_110,2 +005392_180,13 +01044_164,12 +00505_103,12 +00567_96,5 +012612_17,2 +00011_103,12 +01693_19,14 +015972_18,0 +01972_213,3 +009162_53,2 +019622_79,0 +00181_104,0 +01145_268,4 +00566_47,8 +00475_275,1 +00793_218,14 +000232_21,2 +019042_37,4 +01145_296,1 +01092_65,17 +02146_49,18 +01161_290,2 +01904_50,12 +01971_278,12 +01210_280,9 +00837_157,11 +00539_264,1 +00509_11,12 +006092_53,11 +00079_118,9 +019252_126,3 +01161_242,17 +01240_67,12 +01693_161,0 +00916_8,2 +01428_69,14 +01119_52,11 +02191_6,14 +009352_113,14 +01605_123,5 +00282_105,14 +010872_239,5 +00314_10,2 +01723_90,15 +00567_264,2 +01924_62,14 +02062_24,2 +016932_58,0 +00079_275,15 +00979_79,1 +01261_12,2 +00546_157,15 +00041_113,7 +01312_6,14 +01706_143,2 +018132_58,11 +01925_140,3 +012562_40,4 +01688_228,5 +01044_298,4 +001022_17,2 +00450_192,14 +007832_187,2 +01312_49,7 +00981_39,11 +00563_60,9 +02030_153,16 +018772_272,4 +01972_143,3 +006742_47,14 +00408_225,11 +00935_111,14 +007092_290,12 +00729_12,14 +016932_198,0 +016922_113,1 +00840_107,7 +019622_129,0 +01087_262,5 +01007_254,0 +02146_124,11 +00124_41,4 +00538_108,1 +004532_66,9 +00935_74,7 +00519_17,14 +005392_263,1 +01087_220,5 +00474_185,2 +01953_16,2 +00079_16,9 +00546_151,3 +004172_2,14 +01688_9,5 +016432_80,14 +00552_13,2 +02146_118,18 +01636_114,14 +01351_13,2 +01437_12,11 +00567_218,2 +00111_65,17 +002752_79,14 +018792_8,2 +01707_148,4 +00768_96,14 +01925_43,4 +000252_22,17 +008402_136,7 +01706_131,2 +00916_279,5 +01904_9,2 +00394_44,17 +00578_80,17 +012282_291,14 +005392_249,1 +01643_54,4 +01623_12,14 +01706_236,2 +014232_52,2 +021722_216,12 +006092_17,5 +007212_103,14 +012402_56,12 +011912_129,7 +00342_102,14 +01423_206,0 +011912_5,14 +01409_172,0 +00490_176,2 +02027_33,18 +01312_80,7 +01707_56,0 +014232_62,2 +00535_50,2 +01622_86,13 +018132_15,11 +01272_269,2 +00280_123,2 +014372_267,11 +01763_90,12 +00390_46,5 +01210_31,1 +018792_1,2 +02138_162,13 +01431_115,11 +00597_62,2 +02094_68,12 +007212_208,14 +01609_41,17 +00024_69,7 +00848_16,14 +010912_147,5 +01972_32,6 +008832_10,11 +01702_10,12 +017482_7,11 +009642_22,14 +01901_171,14 +012722_170,2 +00916_249,5 +01118_23,7 +00703_50,11 +000792_267,1 +016052_6,14 +00563_30,4 +01001_234,5 +004532_127,9 +021722_245,14 +012192_88,5 +01431_48,11 +017672_280,14 +02172_59,14 +00462_32,14 +013302_107,9 +01431_266,11 +01834_39,8 +009162_65,2 +010012_57,2 +000792_34,9 +00280_34,12 +01688_18,5 +02187_209,16 +016932_291,0 +00009_222,2 +00821_7,14 +00539_197,6 +001602_144,1 +01210_157,6 +00065_271,12 +00509_217,12 +005282_206,0 +00160_20,2 +01058_2,2 +01953_210,4 +00282_31,7 +00009_41,2 +02186_31,5 +00490_175,2 +01408_236,14 +00158_181,5 +01763_70,2 +01408_176,14 +007222_22,17 +007212_51,4 +016932_101,0 +000092_155,12 +01769_110,2 +01366_159,14 +00413_121,0 +010942_83,11 +01636_89,0 +01693_293,0 +00964_177,8 +005392_88,1 +01044_234,12 +00615_112,11 +01748_103,0 +016922_124,1 +01007_207,0 +00552_4,2 +00453_244,9 +01497_31,4 +00721_95,14 +01371_44,14 +01626_4,2 +00660_183,0 +00747_6,7 +00065_133,1 +02049_228,3 +01423_40,2 +01351_127,7 +004172_77,17 +019042_40,12 +00314_228,12 +004172_70,17 +01490_18,7 +01582_2,14 +01119_93,11 +00450_27,14 +02187_174,16 +01865_10,14 +01119_6,14 +01509_54,0 +01948_16,14 +01877_126,4 +01428_22,4 +018772_279,4 +00485_28,2 +019622_5,0 +01191_23,14 +01769_61,9 +02027_87,14 +02057_37,2 +01834_25,14 +01834_253,8 +00350_80,5 +00688_72,0 +01688_46,5 +01408_45,14 +00314_127,0 +01087_164,5 +00722_92,17 +002802_219,4 +007832_1,2 +01351_159,14 +01706_136,2 +00772_60,7 +01609_17,17 +00088_18,2 +021912_48,7 +019412_240,14 +01723_31,15 +01256_70,12 +00102_57,16 +00442_45,2 +01065_43,18 +001602_292,3 +00730_38,18 +00916_158,2 +01693_47,5 +01509_183,0 +00282_39,17 +00721_118,4 +01643_44,14 +00628_111,7 +010912_34,12 +01929_182,0 +02062_22,2 +000792_174,9 +01643_80,14 +00615_139,11 +01723_101,15 +02042_110,14 +004532_68,9 +00577_70,7 +00011_102,12 +00821_69,5 +017692_214,9 +00102_185,16 +00628_0,14 +02094_32,12 +00041_80,12 +00721_147,14 +01431_237,11 +00772_47,7 +012722_183,4 +01706_56,2 +01688_169,14 +00528_12,2 +00916_214,2 +019242_206,14 +010872_206,5 +00721_176,12 +004172_139,17 +00111_21,17 +00566_76,8 +01044_204,12 +01351_94,7 +01351_84,17 +00981_47,11 +01924_186,14 +008402_199,7 +008832_24,11 +020052_299,11 +00314_54,2 +004082_191,11 +01490_82,14 +01007_101,0 +00607_98,6 +01853_102,11 +00160_60,11 +00438_192,2 +00442_252,4 +01145_12,2 +008402_223,2 +018122_23,2 +01351_22,7 +00025_70,17 +01953_135,4 +01853_100,0 +007092_278,12 +01330_33,17 +00709_59,19 +014372_53,11 +00306_74,7 +01962_123,0 +01045_208,4 +00065_180,1 +01058_133,2 +006092_26,11 +017752_37,12 +00718_38,19 +01623_67,11 +004532_27,9 +01953_242,4 +01901_81,5 +01702_54,2 +000092_12,2 +01865_132,2 +01210_230,9 +000092_35,0 +00609_48,11 +00417_134,17 +012282_37,14 +00601_112,0 +010012_46,4 +006972_68,0 +01767_162,14 +01723_133,15 +01877_166,15 +017692_33,2 +02005_44,11 +007212_220,14 +00768_70,7 +00981_45,11 +019622_94,0 +01283_55,2 +02005_221,11 +014232_74,0 +008402_250,2 +019412_150,14 +01001_32,12 +00538_139,14 +01007_9,2 +017672_65,14 +00718_85,19 +01775_40,12 +008922_53,0 +01272_258,12 +014372_33,11 +004082_29,1 +02187_19,16 +02030_73,14 +01769_272,2 +019042_138,12 +016842_39,14 +00232_162,14 +007292_178,14 +017232_74,15 +01330_186,3 +00475_78,9 +01501_84,14 +01804_39,12 +01488_10,13 +00772_85,5 +01775_113,4 +019042_124,2 +01448_97,14 +00102_41,16 +02138_226,8 +019242_64,14 +01626_84,7 +00333_116,12 +01103_97,14 +01769_241,9 +01092_223,6 +00417_100,6 +00628_79,7 +00079_173,9 +007292_60,14 +01409_46,4 +01723_131,15 +008402_55,2 +016982_75,17 +004082_284,11 +00462_9,14 +011912_193,14 +00883_46,11 +00729_225,14 +008402_90,2 +020052_281,11 +013302_100,9 +01605_140,5 +00916_178,2 +00962_16,0 +01767_9,14 +01829_55,12 +018772_259,4 +01044_2,2 +004532_183,9 +01158_24,0 +005282_142,4 +01144_132,2 +016432_5,14 +01145_33,2 +00453_186,9 +021772_25,4 +00394_61,9 +005882_139,13 +00490_31,2 +009162_135,2 +018772_192,4 +008372_9,0 +011612_97,17 +020572_137,3 +00490_76,2 +00783_156,2 +01312_29,7 +00490_294,11 +00175_24,4 +009622_29,0 +017022_28,4 +00721_189,14 +00181_133,0 +00413_227,14 +00761_270,3 +00276_61,11 +01119_115,14 +018342_59,8 +012282_285,14 +00158_24,14 +00485_165,1 +01787_7,13 +01144_151,2 +02042_113,0 +00475_110,9 +00783_92,17 +018132_69,11 +019042_64,2 +00772_28,7 +00413_165,0 +01058_30,2 +00509_61,12 +00519_69,11 +005882_175,4 +00503_245,9 +012562_17,14 +016982_64,17 +01953_46,12 +02127_3,2 +014882_36,0 +01702_72,14 +01007_109,0 +00539_78,1 +01108_57,4 +00009_37,0 +01706_203,2 +00128_232,4 +00566_73,8 +01437_39,11 +00128_4,12 +018652_57,18 +00124_7,4 +012402_77,4 +00438_5,2 +01272_178,12 +00729_73,14 +00747_28,9 +00793_153,14 +00793_190,14 +020052_245,11 +01929_121,0 +00609_50,11 +01278_161,12 +004672_24,11 +004172_181,6 +01437_298,11 +00065_186,1 +009622_8,0 +01145_103,4 +00519_103,11 +00677_33,14 +01688_204,5 +00993_236,6 +009642_91,8 +01578_157,14 +01702_56,2 +00674_124,14 +00333_127,2 +010912_116,5 +00503_53,6 +01972_158,3 +01201_41,11 +005062_61,6 +02030_81,16 +010872_177,5 +00609_68,14 +018342_100,8 +016922_83,1 +019592_76,6 +00287_138,15 +01924_169,14 +00314_66,12 +01228_275,14 +01144_64,3 +01361_17,5 +008402_20,2 +01191_33,14 +01423_30,2 +01605_284,11 +00503_121,1 +00783_139,2 +005392_265,1 +01437_230,11 +00438_158,2 +017672_144,14 +018772_89,4 +01929_67,0 +00450_205,14 +011912_1,14 +01488_246,5 +01330_223,6 +00438_126,2 +00438_185,2 +018772_248,4 +00333_17,2 +01001_189,5 +021622_76,17 +00417_91,6 +01702_4,14 +01278_176,2 +012722_177,12 +01865_133,14 +00546_44,14 +01568_148,12 +00703_117,14 +00772_2,14 +00282_37,7 +017232_55,15 +01723_287,15 +017232_151,15 +00821_18,14 +01882_47,11 +00442_244,4 +016922_92,1 +016882_69,5 +01094_61,11 +01045_277,4 +000092_13,2 +01605_294,11 +002752_130,14 +00159_34,4 +00296_48,7 +02138_140,13 +00772_66,7 +00102_201,16 +01330_237,8 +00276_10,14 +02162_25,5 +011612_31,17 +00709_191,19 +00539_252,1 +00287_51,15 +008402_203,7 +017752_143,4 +01636_123,14 +01901_121,0 +01144_102,12 +01371_65,14 +00438_91,2 +001602_248,11 +02138_14,14 +021622_106,1 +000092_240,7 +01091_256,2 +01702_27,4 +01968_78,7 +002802_243,14 +012722_25,2 +019242_234,14 +00438_80,2 +01044_205,12 +021722_242,14 +00720_3,0 +017232_31,15 +021772_77,14 +01767_196,14 +01977_78,3 +00275_103,14 +01001_151,5 +00539_132,1 +01118_45,7 +007092_45,19 +014232_184,0 +00282_45,17 +01161_236,17 +02146_8,14 +004172_180,6 +00566_72,8 +00456_152,2 +01509_7,2 +004172_251,6 +01941_103,14 +00175_79,4 +00607_137,14 +01834_83,8 +007092_275,12 +01423_115,0 +02021_104,14 +019252_154,3 +00793_16,14 +00041_39,12 +011912_96,7 +00333_173,2 +00242_29,12 +010912_0,2 +01962_53,0 +01409_153,0 +012402_177,12 +00280_20,14 +01210_217,9 +01956_0,14 +01804_18,12 +00287_74,15 +00674_89,14 +00721_175,12 +00506_39,2 +00962_31,0 +01941_263,14 +019712_123,2 +007092_88,6 +01058_119,4 +01101_137,0 +01688_15,5 +02162_104,6 +01091_66,1 +00160_195,1 +020052_93,11 +005882_173,4 +005882_197,2 +00111_61,17 +01412_89,0 +00292_8,11 +01767_260,14 +01493_216,1 +01493_136,1 +017692_150,9 +016882_110,5 +01962_106,0 +01045_241,4 +007092_187,19 +001242_102,19 +01144_156,2 +01813_59,11 +021462_55,18 +00951_129,0 +00408_75,11 +02005_94,11 +010012_73,12 +01408_132,14 +010872_56,14 +01087_105,5 +02177_53,12 +01272_175,12 +00601_67,9 +00474_218,2 +00628_19,7 +01490_36,7 +00475_187,1 +020572_145,3 +00916_80,2 +00124_194,0 +01541_63,5 +007212_199,14 +01953_14,2 +008832_63,11 +00408_86,11 +00875_92,2 +009162_212,2 +02042_24,4 +00709_155,6 +00729_228,14 +01091_55,1 +00535_265,6 +00840_270,2 +00280_23,14 +001242_144,19 +018122_77,2 +01272_75,2 +00722_69,17 +00485_155,1 +012402_178,12 +00124_15,4 +00490_111,2 +00394_81,12 +02027_71,14 +016882_264,5 +00292_35,11 +00438_121,2 +00408_223,11 +00088_17,2 +01972_75,3 +01882_2,14 +00232_47,4 +017232_197,15 +01597_104,0 +01427_133,14 +000792_77,9 +008832_59,11 +00848_54,17 +02042_27,15 +01493_108,1 +00024_9,2 +021722_249,14 +005882_177,4 +00981_104,5 +00709_32,19 +00697_60,5 +00505_99,12 +01407_52,12 +00438_253,2 +00296_53,7 +00588_166,4 +019412_220,14 +001602_294,13 +01261_62,2 +02057_98,12 +018132_81,11 +017752_10,2 +01182_56,13 +017692_166,11 +01256_76,12 +00009_243,7 +018392_139,1 +00438_256,2 +01568_57,12 +01953_150,4 +007212_232,14 +01623_21,14 +019242_166,14 +00438_233,2 +021622_23,14 +00181_64,0 +01948_59,13 +000092_218,0 +01431_101,11 +01240_258,4 +007092_99,11 +00588_123,13 +01643_82,14 +01981_38,5 +011772_49,4 +007092_31,19 +00506_117,2 +01428_68,14 +012562_25,4 +02191_110,14 +00485_260,12 +019712_111,4 +00160_68,11 +00528_176,0 +01693_200,0 +00840_246,2 +016052_43,14 +00025_57,17 +00546_97,3 +00456_61,12 +00342_65,17 +01201_71,11 +02030_101,16 +01256_56,4 +009642_196,8 +015972_64,0 +00474_137,2 +01541_34,5 +008252_39,2 +02005_162,11 +00474_25,2 +00674_21,14 +01763_218,12 +00475_134,11 +00350_261,9 +00964_29,14 +000092_238,7 +02030_6,14 +00588_15,4 +01228_223,14 +01219_27,5 +010912_90,0 +00474_102,2 +01431_176,11 +01972_97,13 +00747_45,4 +007222_75,17 +01925_27,14 +01706_15,2 +000252_89,17 +00916_229,2 +00981_73,11 +01331_43,17 +01493_162,1 +009622_68,3 +01490_89,14 +00124_77,19 +007832_100,17 +01182_19,13 +00485_172,1 +02012_53,17 +012282_187,14 +00287_36,4 +001242_94,19 +01240_195,2 +00660_91,0 +007212_212,14 +00394_27,17 +01431_263,11 +01500_52,4 +01210_61,17 +00503_92,1 +01182_72,0 +011612_233,17 +01865_116,18 +01814_203,11 +009642_242,4 +00535_224,5 +01065_18,1 +01929_157,0 +01763_86,12 +010872_287,5 +005392_211,1 +01962_81,0 +01437_158,11 +017072_245,0 +00718_103,19 +01092_19,17 +01605_158,11 +00485_68,1 +004532_221,9 +01941_212,14 +01972_163,3 +020572_7,2 +00228_86,11 +00314_33,2 +00228_74,17 +01953_243,4 +000092_157,12 +00729_37,12 +02127_255,17 +008252_21,2 +019252_297,8 +01091_190,16 +01161_220,17 +00453_265,9 +009512_11,14 +02187_199,16 +01626_111,7 +01134_261,10 +00287_240,4 +01046_102,14 +01707_84,0 +01330_282,9 +00025_17,17 +00509_149,2 +019042_15,2 +02177_9,4 +01493_239,1 +012722_130,12 +019412_261,12 +014272_94,17 +00228_4,14 +02030_22,14 +018792_99,2 +016922_93,1 +017072_23,2 +00539_152,1 +00761_36,14 +00840_90,2 +01688_275,2 +011612_19,17 +000252_48,17 +00981_75,11 +000792_120,9 +00011_106,12 +01723_298,15 +019252_116,3 +00350_114,9 +012562_59,4 +01500_45,6 +02138_50,14 +00475_29,5 +00783_98,17 +011612_214,17 +001602_128,1 +01605_225,11 +014232_233,12 +01688_30,5 +014232_144,0 +01001_107,5 +018122_80,2 +007832_232,5 +00296_114,14 +01693_48,0 +00124_104,19 +01769_28,2 +01853_66,5 +01767_233,14 +00442_26,14 +00567_170,2 +00024_87,7 +00964_86,3 +004172_21,6 +01706_167,2 +01748_71,0 +00079_110,15 +00102_114,16 +01412_66,0 +01901_162,12 +01108_16,14 +01692_152,14 +011082_70,14 +02186_102,14 +014072_37,4 +010942_31,11 +007092_221,19 +002802_142,4 +00333_82,0 +018652_83,18 +016932_60,0 +02005_203,11 +005882_28,12 +01427_56,4 +009642_170,8 +00597_51,5 +01812_61,4 +02012_99,17 +004082_182,11 +02049_22,4 +01046_65,7 +010912_264,14 +00306_21,7 +01087_144,5 +008922_43,0 +014882_203,1 +008372_77,11 +014882_18,1 +018132_122,11 +01427_131,14 +005062_7,2 +00615_209,11 +00783_209,2 +019412_62,14 +018792_65,4 +01091_148,5 +00314_58,2 +01448_27,0 +00041_35,12 +01853_65,5 +008402_216,7 +01044_43,4 +00314_248,4 +014372_293,11 +00124_166,19 +014282_49,14 +00729_233,14 +01763_3,4 +010652_65,18 +019242_45,14 +01278_182,2 +011612_102,17 +00275_102,14 +01240_87,2 +01134_93,10 +00539_282,0 +00660_121,0 +00442_151,0 +00567_207,2 +00475_113,9 +01408_109,14 +01094_22,5 +00314_130,4 +00993_95,7 +01706_241,2 +02027_59,5 +000092_92,0 +01929_188,0 +02030_120,16 +00722_130,17 +01408_99,14 +00837_69,11 +01423_106,0 +00475_10,5 +00721_120,4 +00615_126,11 +00505_170,5 +007832_262,5 +007832_52,2 +00426_47,0 +016882_108,5 +02127_35,2 +00490_214,7 +02162_85,12 +01228_88,14 +01490_42,7 +01091_60,1 +01161_198,17 +015972_12,12 +01578_152,14 +01044_29,4 +01971_204,2 +00462_130,13 +00450_76,13 +02054_231,12 +006742_126,14 +00837_48,11 +00158_59,14 +016922_46,2 +01134_6,16 +01007_58,0 +01972_194,13 +01924_90,14 +00546_203,14 +014122_15,0 +00578_103,17 +012402_231,12 +01941_268,14 +00962_21,0 +00867_19,14 +02138_81,14 +013332_17,2 +01775_114,2 +01814_190,11 +010912_130,5 +00408_109,1 +014882_146,0 +00783_151,2 +02177_75,14 +00280_74,12 +018792_21,2 +02187_136,16 +00783_271,5 +020052_247,11 +01839_39,5 +00128_119,2 +01312_102,14 +01144_65,3 +01361_261,15 +021772_73,14 +02005_14,11 +021462_170,14 +018652_111,18 +01283_5,14 +00615_134,11 +01901_31,5 +01953_286,2 +01007_221,0 +01087_47,14 +01877_217,4 +01493_30,11 +00490_7,2 +014372_126,11 +014372_0,11 +000092_221,2 +017232_213,15 +019622_0,0 +00485_86,1 +02127_11,2 +00382_7,5 +00474_143,2 +020572_96,2 +01879_111,2 +018772_70,4 +01488_203,1 +00563_39,12 +00382_128,5 +000242_73,7 +01814_208,11 +01408_117,14 +00776_98,14 +00242_2,2 +01437_136,11 +00450_65,15 +016052_36,14 +00776_55,4 +016922_73,1 +01058_58,2 +02005_96,11 +02138_74,12 +00566_105,3 +001602_249,11 +01692_35,2 +001022_28,0 +02062_11,2 +00342_79,17 +01568_46,2 +01981_9,14 +01972_222,3 +016932_36,2 +020052_198,11 +01813_3,14 +00722_9,17 +007292_218,14 +00442_53,2 +017022_78,14 +016432_106,14 +00528_196,0 +01904_143,12 +021722_223,14 +01834_213,8 +00837_168,0 +00718_101,19 +00485_153,1 +01423_113,0 +01431_202,11 +01688_45,5 +01509_92,0 +006972_108,4 +003062_55,7 +00615_202,11 +00840_248,2 +00528_73,2 +01702_19,12 +00550_3,14 +00124_37,4 +01763_121,12 +00674_37,14 +01623_46,11 +01408_85,14 +01431_38,5 +00275_140,14 +00292_14,11 +01045_35,2 +00292_27,11 +00088_60,5 +00957_27,0 +00350_239,9 +00577_108,14 +01423_29,2 +01366_32,17 +00413_6,14 +006972_24,9 +00837_71,11 +01693_67,0 +009512_21,0 +00158_140,5 +021772_75,14 +01358_12,1 +000792_108,14 +01972_118,13 +011612_204,17 +00979_115,1 +01191_119,7 +01045_248,4 +00413_164,0 +00607_67,5 +00935_24,7 +008372_59,11 +02146_43,18 +01408_65,14 +02021_52,11 +00124_170,0 +01941_101,14 +00232_120,13 +00578_108,14 +01144_43,6 +012722_23,2 +00783_185,2 +00628_49,7 +01971_232,12 +00261_33,12 +01272_131,12 +00450_141,15 +01962_116,0 +012282_95,14 +01490_74,7 +01272_255,12 +013302_256,6 +01488_113,0 +01134_61,10 +004172_130,17 +017672_267,14 +009512_160,14 +01814_125,11 +005092_114,2 +01423_188,0 +01948_5,12 +01423_240,2 +008402_100,2 +00709_261,5 +00964_140,8 +01839_27,14 +01272_12,2 +00158_62,14 +00528_139,4 +01437_100,11 +01330_47,9 +01578_63,14 +00287_156,4 +01108_46,0 +005882_120,13 +00964_88,3 +007212_195,14 +01428_11,14 +011612_192,17 +005092_25,2 +02030_256,16 +02062_70,12 +001602_271,13 +00935_6,14 +00382_25,7 +01578_14,14 +002802_79,4 +018652_6,14 +01049_35,7 +01723_63,15 +00024_74,7 +007092_226,19 +01007_292,3 +014372_208,11 +01814_270,11 +01488_159,13 +01578_98,14 +02146_153,14 +000792_272,4 +007092_129,12 +001602_242,1 +001112_48,17 +005282_177,0 +00065_241,12 +001602_290,13 +01423_242,2 +007292_293,14 +02054_96,12 +00722_110,17 +01693_195,0 +00566_115,8 +00892_96,2 +012402_191,4 +005392_83,1 +00546_27,14 +00128_129,2 +01904_75,12 +00848_138,14 +01007_32,12 +01409_27,12 +01119_94,11 +012282_129,14 +01488_119,0 +00333_44,2 +01240_14,2 +01953_123,12 +00065_219,12 +01707_164,0 +00065_285,1 +00552_40,7 +003062_42,7 +00342_63,17 +017232_290,15 +01953_47,12 +01622_25,0 +01144_146,2 +00503_79,6 +013302_120,1 +00867_156,0 +00023_103,11 +017752_70,12 +007212_231,14 +00577_52,7 +01723_249,15 +00342_14,14 +014232_46,2 +000232_57,3 +017232_211,15 +01103_76,17 +016882_51,5 +00242_16,2 +018392_29,14 +01437_198,11 +01351_38,7 +019412_17,14 +013302_87,1 +00408_152,11 +00276_62,11 +017672_220,12 +00023_157,6 +01763_292,2 +00088_4,14 +00503_246,9 +00350_44,14 +014072_51,12 +012282_274,14 +00426_6,14 +01058_57,2 +012282_122,14 +017072_187,0 +007762_30,14 +00065_163,1 +00615_46,11 +00528_1,2 +01853_70,5 +018772_282,4 +01488_57,13 +01045_140,4 +001242_233,0 +017672_169,14 +01182_113,14 +00721_66,12 +00021_79,4 +01423_193,0 +020572_203,3 +021722_9,14 +000252_63,17 +007222_143,17 +019042_129,4 +00981_67,11 +01272_101,2 +01501_9,14 +00475_65,9 +01693_295,0 +014232_17,2 +016882_163,14 +01058_3,2 +00539_207,1 +006742_1,14 +01723_198,15 +01044_230,2 +02027_8,14 +01948_160,13 +00102_266,16 +00840_186,7 +00306_96,14 +01240_176,12 +01909_74,2 +01240_276,12 +005502_27,18 +017692_291,0 +000242_85,17 +01684_6,14 +01693_221,0 +00475_54,9 +009622_2,0 +00453_106,9 +00505_93,12 +01351_133,7 +00474_190,2 +00783_253,5 +00776_49,4 +01044_118,12 +019042_140,12 +018792_2,2 +007292_1,14 +01924_248,14 +01497_29,4 +00408_22,1 +00981_74,11 +01437_77,11 +01101_88,6 +009352_95,7 +014282_38,12 +02054_147,12 +020052_82,11 +02049_141,13 +01366_164,14 +007832_118,17 +01087_5,14 +018132_145,14 +01001_158,5 +01408_248,14 +00023_113,5 +01706_272,2 +01698_64,17 +019412_129,14 +007212_187,14 +01924_11,14 +01330_193,6 +004172_193,17 +004082_257,13 +00505_228,14 +00615_73,1 +02049_66,3 +00567_115,2 +01108_21,0 +00660_103,0 +017232_24,15 +00450_171,14 +01509_209,0 +01763_256,2 +01925_81,3 +01962_26,0 +00660_282,2 +01182_59,13 +01706_224,2 +007222_95,17 +00181_157,14 +01636_41,0 +010652_41,18 +00528_185,0 +00228_24,14 +00535_110,6 +016882_150,14 +018392_157,1 +01981_132,14 +00601_85,11 +01457_67,7 +00615_36,11 +006972_0,2 +00503_143,9 +00730_96,14 +01049_8,7 +00160_124,11 +019412_216,14 +001112_2,14 +01684_64,14 +02146_66,18 +00475_221,1 +005092_193,2 +017672_234,14 +01953_198,4 +01643_18,12 +00747_20,6 +02021_93,11 +02162_40,12 +011772_61,4 +00314_134,12 +01431_216,11 +018132_36,11 +00993_191,7 +01001_25,12 +01956_5,14 +01044_85,12 +02187_92,16 +00747_55,4 +00916_238,2 +00821_110,5 +01118_76,7 +019252_273,8 +019412_81,14 +00776_19,4 +01330_211,1 +007222_79,17 +00729_109,14 +002802_191,2 +017692_198,2 +01261_91,2 +01541_26,5 +009352_69,7 +00730_37,18 +018342_71,8 +01007_228,0 +00825_79,4 +01904_122,2 +014372_49,11 +001602_59,11 +02062_46,2 +00552_82,7 +00350_225,9 +01240_9,2 +01769_163,11 +01787_11,13 +01925_76,3 +01623_131,14 +00535_20,2 +01333_46,13 +00462_51,12 +001602_245,11 +02054_86,2 +00677_111,14 +00709_178,19 +00747_4,7 +00567_117,5 +01924_33,14 +01228_84,14 +021912_29,7 +00550_50,18 +01044_5,2 +01366_163,14 +007092_10,19 +02127_7,2 +00783_192,12 +01046_35,7 +017672_173,14 +01118_0,14 +01412_64,0 +01948_66,13 +01118_44,7 +005882_235,2 +01775_24,2 +01161_205,17 +00964_1,14 +01839_94,11 +01804_3,12 +01578_253,14 +01423_155,0 +00538_42,17 +00280_172,12 +019712_120,2 +00009_187,7 +00772_5,14 +001112_25,17 +00159_58,2 +00566_34,6 +00718_4,2 +014232_89,0 +01228_216,14 +021622_32,12 +00490_270,5 +02030_119,16 +00729_273,14 +01605_198,11 +00475_223,1 +005092_69,12 +014372_215,11 +01065_85,18 +018122_30,4 +00505_222,12 +01001_95,5 +01046_49,7 +00413_53,0 +01408_13,14 +02027_63,14 +007762_100,14 +00867_187,14 +01240_296,4 +00088_45,5 +00456_168,12 +00957_20,1 +00021_140,12 +00993_186,7 +00951_40,0 +00228_129,1 +01358_31,1 +00413_173,12 +019252_228,8 +01972_208,3 +00720_15,0 +00474_292,2 +01431_257,11 +00550_122,14 +00509_53,2 +00535_143,1 +00021_2,5 +000792_97,9 +02127_75,17 +01493_201,1 +00875_105,2 +01981_138,14 +01103_65,14 +01161_152,17 +016052_151,5 +01812_47,4 +004082_266,13 +010942_74,11 +000092_47,12 +00408_261,13 +00535_163,0 +01814_184,11 +019412_36,14 +00503_220,9 +01839_110,11 +01493_11,11 +02027_83,14 +002802_102,12 +01058_98,2 +01877_291,4 +01092_99,17 +01707_242,0 +01541_19,5 +01409_81,0 +005092_128,2 +02094_120,12 +01924_226,14 +01623_130,14 +01882_84,14 +019042_31,2 +02127_137,17 +01879_78,12 +01134_122,10 +00729_5,14 +00519_155,14 +00916_211,2 +00747_73,4 +01134_283,10 +007832_0,2 +01278_151,12 +010912_55,1 +018652_100,18 +00566_130,8 +01101_136,0 +005282_62,2 +010872_167,5 +02127_84,17 +007182_90,19 +007832_7,2 +002752_100,14 +00275_23,14 +01358_28,1 +006972_93,12 +00674_24,14 +014072_33,0 +01493_33,11 +000232_6,2 +01929_92,0 +014232_246,0 +00314_145,4 +01804_106,2 +01626_142,2 +01045_98,4 +01763_212,12 +014272_80,17 +01145_139,12 +01568_32,2 +01578_142,14 +00506_94,4 +01877_49,4 +017232_9,4 +01941_159,14 +00382_22,7 +02054_288,4 +018342_275,8 +00503_291,6 +00102_123,16 +012282_54,2 +00242_168,2 +000242_38,7 +00962_19,0 +00550_89,18 +02138_157,13 +01693_259,0 +001242_174,0 +00382_60,17 +01904_81,12 +00485_222,1 +013302_37,9 +01045_236,4 +00413_31,0 +004172_85,17 +02054_150,4 +017072_120,0 +01145_264,4 +02162_134,14 +00761_170,8 +00776_97,14 +01804_66,4 +01272_59,4 +01879_13,2 +01971_94,12 +01623_64,11 +021622_115,18 +00535_278,6 +00025_21,17 +00867_120,5 +01839_23,14 +00079_92,9 +00563_93,4 +008252_67,12 +01191_124,7 +02138_119,4 +01048_1,2 +01707_264,7 +001022_76,16 +02027_132,14 +01929_110,0 +00535_210,5 +005392_4,6 +02146_73,18 +00783_29,2 +018792_68,4 +00065_86,11 +00158_160,5 +02054_169,2 +00181_73,0 +00280_152,2 +00539_109,1 +00394_11,14 +019712_81,2 +01509_113,0 +005092_149,2 +01351_115,7 +01707_101,0 +00577_93,7 +00721_113,14 +00450_18,14 +01853_99,0 +00957_53,2 +012402_214,12 +00505_154,14 +01045_271,4 +016052_83,5 +01048_32,5 +01834_242,8 +008372_0,14 +00408_119,13 +00509_193,2 +00462_52,4 +02030_209,16 +00275_80,14 +011612_286,17 +01210_268,9 +005062_132,2 +01330_84,6 +00175_89,2 +00506_70,6 +012402_217,4 +018792_114,2 +021722_186,14 +012402_257,4 +01623_128,14 +01688_166,14 +00280_111,4 +01103_72,17 +01351_97,7 +01134_109,10 +007182_64,19 +01210_191,6 +00079_293,9 +01769_164,11 +00009_100,12 +013712_0,14 +01693_289,0 +014882_167,13 +018132_78,11 +01706_151,2 +00628_133,14 +00450_5,14 +001022_69,16 +01925_67,6 +00462_121,13 +01568_205,2 +01971_251,12 +00934_12,9 +014882_164,13 +012192_94,5 +017692_62,9 +01049_48,7 +02042_91,15 +00261_6,4 +02049_264,8 +02005_219,11 +000232_12,2 +01688_242,5 +00102_43,16 +002802_3,14 +01007_132,0 +010872_268,5 +00951_96,0 +008372_82,11 +00102_82,16 +00475_101,9 +014122_27,0 +00474_201,2 +02021_96,11 +009642_34,6 +00111_50,17 +02094_45,12 +00503_54,6 +007092_222,19 +01423_236,12 +01210_78,6 +00453_124,9 +010942_14,14 +012612_63,2 +02030_265,16 +020052_29,11 +00181_31,0 +012402_195,2 +00442_234,4 +01158_31,0 +02054_40,2 +02177_10,4 +010942_2,14 +00490_59,2 +010912_65,1 +02177_26,4 +01048_20,5 +01144_76,6 +01622_85,13 +00394_38,9 +00841_22,14 +00011_97,2 +00275_126,14 +01330_288,1 +00660_181,0 +00964_145,8 +008482_41,17 +014372_225,11 +001112_84,14 +019412_25,14 +00158_211,5 +002752_138,14 +00993_144,7 +00490_228,5 +00841_60,14 +02049_0,14 +00242_39,12 +00688_104,2 +010912_35,12 +008832_2,11 +010012_145,5 +00426_99,0 +02127_148,17 +012612_66,2 +00875_44,2 +01494_102,14 +018132_83,11 +02127_39,2 +013332_50,0 +014972_20,12 +002802_205,12 +01698_44,17 +01145_164,0 +01804_29,2 +01312_26,7 +00462_135,13 +004082_260,13 +008402_169,7 +00503_284,6 +00065_254,12 +01272_205,4 +00011_55,12 +01058_104,4 +00916_42,2 +000242_110,2 +00390_15,14 +008372_110,11 +02127_164,17 +00475_290,9 +01941_255,14 +01941_230,14 +009162_43,2 +00793_158,14 +00276_73,11 +00128_6,12 +00462_3,14 +01623_29,2 +01941_141,14 +01371_24,14 +01177_91,4 +01165_80,5 +004082_240,11 +005092_82,2 +018772_97,4 +017232_286,15 +019712_38,2 +02094_79,12 +019712_227,2 +00276_123,5 +00382_51,17 +01184_136,14 +01636_30,0 +00228_261,11 +00417_207,17 +00840_14,2 +02057_69,2 +01007_46,5 +02027_20,17 +01045_207,4 +01488_23,1 +02191_108,7 +007212_239,14 +02028_58,15 +00563_51,6 +01448_26,0 +00382_8,11 +01497_26,2 +02030_269,16 +02054_85,2 +00413_39,0 +00721_12,14 +01956_30,18 +00957_25,4 +012612_39,2 +01877_199,4 +01158_117,4 +01901_161,12 +004672_30,11 +01622_133,14 +013302_155,18 +01048_52,5 +00535_217,5 +01763_57,12 +01065_63,18 +010872_221,5 +00703_2,14 +01925_72,6 +00768_22,7 +017752_34,2 +02057_190,3 +00535_64,2 +018392_102,11 +00567_6,2 +007092_161,4 +003062_2,14 +01490_70,7 +000252_84,17 +016052_24,14 +01971_23,2 +00024_27,7 +017672_134,14 +01103_48,17 +00848_77,17 +00160_172,11 +00438_284,12 +00892_90,2 +00442_196,4 +012402_271,2 +01488_121,13 +01839_113,11 +00964_235,15 +017232_81,15 +00729_53,14 +01865_19,11 +01361_166,3 +004172_232,6 +00776_86,4 +00275_133,14 +01272_217,12 +00535_281,2 +00567_291,2 +01240_299,4 +01948_71,13 +012612_56,2 +01330_122,18 +01698_79,17 +012402_145,12 +019592_8,6 +016432_26,14 +01968_17,14 +00567_194,2 +014882_60,13 +00941_35,0 +01688_69,5 +019042_29,2 +01001_193,5 +00181_7,14 +00867_99,5 +010012_157,5 +010872_105,5 +00474_64,2 +00128_161,2 +007292_157,14 +01497_18,0 +01493_198,1 +01509_299,11 +00721_199,14 +014272_59,17 +00916_122,2 +00964_89,3 +02057_9,2 +000792_23,9 +02021_12,5 +00009_58,12 +02057_170,3 +01698_80,17 +00567_72,2 +019712_189,2 +001602_137,11 +01763_99,12 +01925_196,8 +019412_147,14 +00350_33,14 +009162_20,2 +01925_20,14 +00841_23,12 +00408_168,11 +01210_80,9 +00964_297,14 +01210_290,9 +00772_11,14 +01723_99,15 +00438_201,2 +01877_187,4 +00065_194,1 +00413_36,0 +01092_214,17 +00276_104,11 +01693_172,0 +017232_12,4 +01763_184,2 +01723_225,15 +01493_263,1 +01408_104,14 +00111_35,17 +01829_2,2 +00314_198,4 +01706_163,2 +00490_138,4 +00462_114,13 +007182_89,19 +01929_156,0 +01953_284,12 +00793_15,14 +01312_77,7 +00438_265,2 +014272_114,17 +018132_129,11 +004082_202,11 +00503_156,9 +005882_113,13 +00024_94,7 +01431_169,11 +01278_48,2 +00175_81,4 +01834_122,8 +00660_45,0 +00124_167,19 +00475_130,11 +007182_41,19 +01707_229,0 +01693_74,0 +018392_42,5 +01366_105,17 +004172_24,6 +02187_48,16 +00519_22,7 +009512_113,0 +01240_197,2 +01814_59,11 +00453_50,9 +01597_35,0 +01501_74,4 +01775_69,12 +00703_85,11 +00567_284,2 +004082_234,11 +00312_36,0 +00079_79,9 +008372_124,11 +00408_160,11 +01158_82,4 +00709_258,6 +007212_60,2 +007292_130,14 +00232_13,14 +01877_92,4 +00009_143,7 +00597_20,14 +00578_63,1 +00228_67,2 +00462_62,15 +020572_69,2 +01278_131,4 +01044_168,12 +00718_0,2 +01769_201,0 +02028_71,1 +00660_287,2 +00306_10,14 +017752_158,12 +005282_83,2 +018132_87,11 +019252_250,8 +016932_137,0 +009342_45,0 +00793_246,14 +01901_2,14 +01904_49,12 +01409_145,0 +016882_36,5 +01044_223,2 +01901_27,0 +017692_142,9 +00462_20,14 +000792_55,9 +00296_21,7 +00615_198,11 +01623_39,5 +01101_22,14 +01261_39,2 +00128_99,0 +00674_136,14 +00539_208,1 +004532_59,9 +01145_223,4 +00417_139,17 +016842_1,14 +01423_209,0 +01045_267,4 +00485_5,2 +019622_35,0 +00979_55,1 +010872_32,14 +00390_118,14 +01839_149,1 +01853_13,2 +00102_25,2 +01959_59,6 +01636_110,4 +009642_244,4 +02054_192,4 +00282_3,14 +014372_142,11 +00474_233,2 +00793_2,14 +01812_37,4 +00916_97,2 +01158_75,4 +00382_34,7 +01597_81,0 +00065_275,4 +01775_156,12 +00228_110,5 +01924_77,14 +01829_41,2 +010012_81,5 +01972_265,14 +001242_190,0 +01048_85,14 +02186_84,5 +00228_84,1 +00709_104,1 +005282_4,2 +00296_73,7 +01925_179,8 +01707_254,7 +01283_79,14 +01261_17,2 +005392_270,1 +01191_106,7 +01541_8,14 +01953_127,4 +016882_30,5 +00242_62,12 +00009_165,0 +00729_294,14 +00065_68,1 +017022_9,12 +017232_242,15 +00916_192,2 +01330_167,15 +01578_16,14 +00772_43,7 +00729_150,14 +004532_39,9 +00688_109,2 +00962_28,4 +00485_119,1 +01048_3,2 +01929_198,12 +02172_64,12 +01925_108,3 +00287_70,15 +02127_14,2 +01626_79,7 +01707_232,0 +01134_264,10 +010872_69,5 +00275_135,14 +01769_282,2 +00722_56,4 +00128_275,12 +01909_148,4 +00601_3,14 +012562_58,4 +00772_49,7 +019712_1,2 +00474_98,2 +010012_198,5 +00761_167,8 +00287_272,15 +00024_33,7 +00426_16,0 +00456_66,12 +01767_258,14 +02005_70,11 +012402_281,12 +00475_196,1 +00577_45,7 +018792_11,2 +016882_25,5 +019712_234,12 +01909_117,2 +01134_238,10 +018342_75,8 +00276_138,14 +02187_144,16 +011612_177,17 +01371_49,14 +00382_77,6 +00505_52,4 +00563_117,2 +000242_31,7 +01578_177,14 +01597_26,0 +01165_109,5 +00456_11,14 +01501_20,4 +02187_220,16 +00475_278,1 +00505_208,12 +02054_52,2 +00160_153,11 +00722_50,17 +008372_116,11 +011912_128,7 +01448_32,0 +01812_75,2 +00102_14,2 +012722_204,4 +00450_200,14 +021772_68,12 +01693_52,0 +00158_15,14 +00821_107,5 +00709_112,1 +00181_0,14 +00228_68,2 +00413_178,12 +00342_39,17 +014882_151,0 +02146_137,2 +00761_294,3 +00660_196,0 +016052_81,5 +01693_170,0 +00566_121,8 +007212_25,14 +00981_5,14 +00474_165,2 +004532_54,9 +01578_156,14 +009352_27,7 +00232_125,13 +00660_115,0 +01101_104,1 +00509_87,2 +00505_247,14 +001242_119,19 +01879_112,2 +01763_173,12 +00703_23,11 +017692_45,0 +013712_56,14 +017672_224,12 +01330_125,18 +01044_262,4 +00390_2,14 +01092_277,12 +00314_205,12 +01045_262,4 +007212_144,14 +01272_81,2 +00228_101,11 +01045_2,2 +01953_146,4 +00935_88,7 +00505_16,2 +01541_64,5 +01787_29,1 +00934_47,0 +000092_239,7 +008372_86,11 +00408_102,11 +01684_53,14 +02162_54,7 +01431_299,11 +007212_253,14 +02005_33,11 +02094_108,12 +02012_6,14 +019252_83,3 +00979_19,1 +01956_35,18 +01228_218,14 +02138_61,4 +00276_122,5 +001242_21,4 +006742_12,14 +002752_64,14 +00009_266,7 +01692_100,1 +01228_132,14 +01763_186,12 +004172_179,6 +014972_52,12 +005092_106,2 +01769_172,0 +01240_114,4 +014972_53,12 +014282_6,14 +01437_60,11 +009162_155,2 +014232_180,0 +01191_188,14 +00722_6,17 +01045_84,4 +00261_23,12 +01407_16,12 +006742_89,14 +018132_57,11 +01924_244,14 +009162_70,2 +02138_193,13 +01971_222,2 +00276_118,11 +00840_94,2 +01161_255,17 +017692_219,9 +01925_123,3 +01240_48,2 +001022_299,16 +009162_127,2 +01882_0,14 +00761_279,3 +02187_229,16 +01493_24,11 +00438_222,2 +00333_8,2 +01103_78,17 +01001_259,5 +00993_66,6 +005392_185,1 +00228_165,9 +007212_91,14 +01228_217,14 +02057_127,6 +01977_58,4 +004532_52,9 +02030_70,14 +012722_244,12 +019622_74,0 +01423_118,0 +01972_61,3 +018342_117,8 +019242_179,14 +01622_104,0 +00228_290,2 +00660_33,0 +00601_99,0 +01636_21,4 +017672_252,14 +001602_61,11 +00962_68,3 +021622_46,17 +00065_131,1 +017022_82,14 +009162_19,2 +017692_106,2 +00660_278,2 +00079_189,9 +020572_18,2 +01091_196,16 +01769_88,11 +01431_40,5 +00011_48,12 +01488_90,13 +016432_10,14 +00417_278,1 +02127_52,2 +01582_44,7 +010872_100,5 +00314_109,12 +013712_29,14 +001602_255,11 +01119_43,11 +005392_233,1 +014882_1,13 +016882_218,5 +001112_40,17 +01981_61,5 +01882_63,11 +01058_90,2 +00296_44,7 +02138_31,2 +01877_115,4 +00282_73,11 +00088_82,2 +002752_75,14 +009352_53,7 +001022_75,16 +00128_180,0 +01597_72,0 +01278_232,2 +017752_124,4 +01134_299,10 +01272_226,4 +02127_180,17 +01144_30,5 +017672_198,14 +00825_15,4 +001022_175,16 +00563_89,4 +018772_23,4 +01834_151,8 +00462_59,15 +01423_76,0 +01408_2,14 +00677_35,14 +008482_36,17 +006972_4,2 +007212_241,14 +002802_220,4 +017232_284,15 +017692_289,2 +01609_28,17 +00314_2,2 +01493_58,1 +020052_39,11 +01813_28,11 +01488_15,13 +00730_153,14 +01045_272,4 +00490_89,2 +00607_113,4 +007182_8,2 +00783_76,17 +00442_171,4 +00394_126,14 +01330_201,1 +01272_124,4 +01643_86,14 +00426_20,0 +00467_2,11 +01408_271,14 +000792_150,9 +00453_256,9 +016932_175,0 +01706_198,2 +018342_268,8 +00721_31,12 +01925_60,6 +020572_84,2 +01408_113,14 +01134_165,10 +00025_89,17 +014232_197,0 +00935_70,7 +00588_45,15 +01609_35,17 +00546_57,4 +00703_68,11 +00102_234,16 +00342_106,14 +010872_209,5 +00615_107,11 +012402_228,12 +01007_129,0 +011772_27,15 +01924_235,14 +00793_129,14 +00158_94,11 +01371_58,14 +00539_295,1 +002752_29,14 +01092_50,17 +00528_64,2 +004532_143,9 +021462_106,18 +010872_122,5 +02062_44,2 +021722_106,12 +00793_255,14 +00065_19,9 +00709_204,19 +00840_239,2 +01058_26,2 +01839_63,11 +016432_37,12 +02005_181,11 +01787_40,1 +01977_213,8 +01971_291,17 +01240_129,12 +01707_14,2 +01161_166,17 +00981_25,11 +01330_276,15 +021462_49,18 +020572_106,2 +00408_173,11 +00550_70,18 +018652_94,18 +00158_48,14 +00628_115,7 +01177_9,14 +02054_158,12 +01877_59,4 +00546_142,3 +00772_83,5 +00490_204,2 +012402_258,4 +012282_102,14 +00413_208,14 +00287_181,15 +01048_38,5 +00176_2,1 +00442_50,2 +01145_283,4 +00079_269,0 +020052_8,11 +00588_179,4 +00342_44,17 +00467_5,11 +012562_51,4 +018132_125,11 +00128_44,12 +00747_64,4 +004082_194,11 +00718_37,19 +01134_268,10 +00578_115,14 +00128_277,12 +00721_68,12 +009642_173,8 +016432_1,14 +016052_249,11 +02028_64,3 +01145_62,2 +00102_237,16 +00128_40,12 +004082_210,11 +00588_4,2 +00442_146,0 +01904_44,12 +009162_165,2 +00566_161,8 +018772_88,4 +016052_67,5 +00287_220,15 +00722_144,17 +01108_79,14 +00025_86,17 +01814_100,11 +01953_204,4 +00776_0,14 +00503_273,6 +00535_198,5 +00342_71,17 +00761_20,14 +004672_60,11 +005502_28,18 +00282_99,2 +012402_250,12 +001242_147,19 +00601_49,17 +01493_224,1 +01409_111,0 +020572_182,3 +01437_7,11 +01437_176,11 +021912_53,7 +00490_117,2 +018132_56,11 +00538_14,4 +01748_48,7 +013332_1,0 +01065_39,18 +01134_34,10 +01981_99,5 +006092_72,14 +005882_220,2 +01948_175,13 +00546_110,3 +021622_86,12 +007092_144,19 +012722_92,2 +010872_115,5 +00079_136,9 +02088_13,0 +00509_234,2 +01953_11,2 +01962_93,0 +01409_203,14 +00292_26,11 +00024_21,2 +00009_141,7 +01007_278,6 +01971_185,2 +00550_109,18 +018772_171,4 +01865_54,18 +02049_240,3 +01929_122,0 +00577_94,7 +00841_46,4 +01692_62,5 +00128_57,4 +018342_192,8 +01748_35,0 +00837_165,0 +01909_144,2 +012402_225,12 +00417_252,6 +00546_11,14 +01210_240,9 +012562_83,2 +01839_165,1 +02187_51,16 +00296_23,7 +01145_252,4 +010652_78,18 +00024_16,2 +00306_65,7 +00282_40,17 +00296_67,7 +01144_20,5 +00566_114,8 +01814_29,5 +00550_117,5 +01408_11,14 +01909_72,2 +01748_104,14 +01578_164,14 +00485_140,1 +00964_231,3 +01165_65,5 +017022_34,14 +001022_172,16 +004532_208,9 +00535_72,12 +00023_70,3 +011612_136,17 +01622_90,0 +01409_135,0 +00426_137,0 +01091_139,5 +016922_101,1 +00079_278,15 +018342_97,8 +01924_51,14 +02146_80,18 +01763_182,2 +016932_142,0 +018652_8,14 +003122_13,0 +02138_57,2 +01423_140,0 +00535_46,2 +009642_229,3 +00660_178,0 +00875_54,2 +00417_257,5 +014372_210,11 +01688_13,5 +00539_297,1 +01941_137,14 +00475_138,11 +01408_62,14 +011612_88,17 +01087_219,5 +010912_112,0 +001112_70,14 +00442_100,2 +01941_251,14 +00875_110,2 +001242_152,19 +016052_76,5 +01001_235,5 +00962_50,13 +01094_6,14 +01065_91,18 +019412_219,14 +01228_1,14 +02127_131,17 +01909_84,12 +02054_191,4 +01048_14,14 +01501_44,4 +01161_176,17 +00102_187,16 +00840_53,2 +01877_220,4 +005392_92,1 +00160_61,11 +020052_88,11 +007182_102,19 +01706_150,2 +011612_239,17 +01351_95,7 +00840_69,2 +01065_119,14 +02127_183,17 +00793_107,14 +01409_119,0 +012402_92,12 +009512_78,0 +00467_48,11 +019242_201,14 +01361_157,3 +00601_0,14 +01488_136,1 +005502_76,18 +01767_289,14 +02049_45,3 +019252_122,3 +00314_65,12 +00490_191,2 +00453_269,9 +014122_61,0 +00417_66,17 +02138_89,14 +00688_36,4 +01769_275,2 +00490_199,2 +01427_128,14 +00314_142,4 +00413_74,0 +012612_77,12 +000252_59,17 +00232_59,13 +00981_99,11 +01091_122,5 +002802_45,12 +01182_6,14 +02005_289,11 +01901_76,5 +00615_94,11 +00505_168,5 +01228_244,14 +00578_118,14 +00615_72,1 +01692_64,5 +017072_258,7 +014232_146,0 +02027_43,18 +011612_103,17 +00703_25,11 +012612_61,2 +009352_31,7 +005392_140,1 +016882_170,14 +020052_22,11 +000232_151,6 +00453_174,1 +00503_168,5 +00079_56,9 +01423_104,0 +011772_71,15 +008402_85,2 +017672_51,14 +02186_67,5 +01427_74,9 +021462_129,11 +00601_16,7 +01879_22,2 +01423_202,0 +01605_177,11 +01814_63,11 +00588_99,13 +02054_93,12 +00390_75,5 +014122_85,0 +01330_247,15 +00065_69,1 +01423_127,0 +01622_88,0 +00276_27,11 +00964_214,3 +01769_1,2 +02030_4,14 +01256_67,12 +01972_168,13 +003062_12,14 +00009_220,12 +01087_130,5 +00025_82,17 +01636_47,0 +014882_226,5 +008482_85,17 +007092_20,19 +01330_31,17 +009642_228,3 +01698_48,17 +00009_8,4 +00567_137,2 +01058_49,2 +00453_143,9 +00660_94,0 +009642_286,14 +01094_68,11 +01145_209,4 +00009_280,12 +00023_88,4 +003062_86,7 +01044_268,4 +00158_100,11 +018772_149,4 +016922_153,14 +01228_272,14 +02187_276,16 +00314_165,4 +009162_27,2 +00934_46,0 +01428_44,12 +01814_53,5 +01693_62,0 +011912_101,7 +01134_10,16 +01879_71,0 +019622_114,0 +009512_84,0 +00528_56,2 +019712_154,4 +00453_99,9 +011612_98,17 +00709_85,19 +00456_77,4 +01693_113,0 +012722_6,2 +00916_35,2 +01924_99,14 +01723_95,15 +00768_5,14 +00111_52,17 +01953_18,2 +017072_135,7 +00475_209,1 +00350_37,14 +02027_46,18 +01087_136,5 +004082_125,13 +01977_116,8 +01490_48,7 +00011_127,2 +00350_56,14 +00287_90,15 +009162_141,2 +016982_84,17 +00261_20,12 +01688_48,5 +01191_20,14 +017232_48,15 +00962_17,0 +01706_249,2 +00128_122,2 +011912_12,14 +009622_38,0 +00729_179,14 +010872_181,5 +000252_24,17 +01956_25,1 +01437_121,11 +00417_112,6 +00703_70,11 +01101_9,14 +019412_168,14 +01834_77,8 +011612_167,17 +021722_147,14 +00009_85,12 +00503_65,6 +02187_170,16 +01278_243,14 +000232_184,2 +02030_32,14 +01829_9,2 +01981_113,5 +01087_88,5 +012402_140,12 +006092_56,11 +00021_92,4 +019042_20,2 +01769_27,2 +021462_137,2 +02030_222,16 +01361_76,2 +01437_48,11 +017232_249,15 +01948_94,13 +014372_173,11 +00160_242,1 +02005_15,11 +00722_128,17 +009162_210,2 +016932_235,0 +01087_279,5 +01427_55,4 +01165_60,5 +00102_106,16 +00088_0,14 +000232_50,3 +00528_198,0 +018792_29,12 +019242_140,14 +00588_120,13 +008832_55,11 +019412_95,14 +02138_179,13 +008402_268,2 +00232_8,14 +01361_41,2 +02127_27,2 +01161_4,17 +016882_33,11 +01091_97,0 +018132_124,11 +000092_22,12 +01767_111,14 +00462_179,14 +016882_201,5 +009162_24,2 +004172_99,6 +00916_144,2 +00840_92,2 +000792_15,9 +01925_105,3 +00314_24,2 +00509_223,2 +00703_100,11 +004172_19,6 +012402_139,12 +02127_86,17 +000092_38,4 +00721_79,12 +01145_38,2 +02187_47,16 +01044_69,12 +00413_50,0 +01763_290,12 +019252_101,3 +00768_45,7 +004172_257,5 +018342_220,8 +014372_3,11 +011612_130,17 +00485_281,4 +00503_162,5 +01904_72,12 +00124_228,0 +000092_158,12 +004172_262,11 +00677_84,14 +01814_62,11 +00729_85,14 +01161_28,17 +00413_4,14 +005092_62,12 +01707_248,0 +018132_155,14 +00232_46,12 +00722_82,17 +00453_223,9 +00607_86,11 +00102_127,16 +02005_179,11 +02054_122,4 +00761_200,3 +00588_231,2 +00232_78,13 +00935_42,7 +01707_274,7 +01509_193,0 +02012_36,17 +00306_53,7 +01877_145,4 +00793_157,14 +00981_68,11 +00413_43,0 +01941_27,14 +01108_7,14 +006972_21,9 +00567_18,2 +001022_150,16 +01605_26,14 +01228_87,14 +01210_265,9 +01493_230,1 +00314_239,12 +00577_26,7 +020572_34,2 +00382_35,7 +009162_7,2 +00660_131,0 +01925_141,3 +01568_7,2 +007182_47,19 +016052_285,11 +01488_236,5 +004532_2,0 +01330_191,13 +01371_62,14 +01087_228,5 +01968_10,14 +00280_197,12 +00674_141,14 +014372_39,11 +00426_31,0 +02062_27,2 +00102_169,16 +00079_286,9 +016052_269,11 +01351_153,2 +00442_136,4 +02030_107,16 +00312_34,0 +02187_269,16 +008482_128,17 +01058_44,2 +00761_255,3 +01707_69,0 +00772_62,7 +01490_53,7 +00981_26,11 +02162_124,1 +00453_163,9 +005092_0,2 +01804_49,12 +01839_32,14 +018772_135,4 +01007_195,0 +001112_71,7 +016882_233,5 +01968_69,7 +00729_6,14 +007182_131,14 +01688_240,5 +00503_108,1 +000092_83,2 +00628_6,14 +02049_15,12 +007762_59,4 +01971_54,12 +01977_4,14 +00102_59,16 +02172_49,14 +014882_5,13 +00697_105,4 +01045_282,4 +004082_146,11 +002752_61,14 +005392_26,6 +02138_291,14 +00314_264,12 +01763_44,2 +00009_53,12 +02062_25,2 +01748_46,0 +00509_7,2 +00677_104,14 +004172_242,6 +01228_158,14 +01767_252,14 +00875_12,2 +02030_116,16 +00519_83,11 +01509_21,2 +010012_171,5 +00964_243,4 +012612_24,2 +01431_252,11 +00160_268,13 +001602_121,11 +01261_24,2 +01134_133,10 +010012_188,5 +019252_175,8 +019242_103,14 +00660_31,12 +01972_211,3 +00566_238,8 +01092_124,17 +008402_37,2 +005882_162,15 +021912_50,7 +00453_260,9 +01044_38,4 +01812_108,2 +01812_48,4 +01692_91,1 +004082_180,11 +00825_81,4 +01953_289,2 +01371_59,14 +01971_141,12 +016882_124,14 +001022_173,16 +00588_154,13 +018342_199,8 +007212_170,12 +01605_212,11 +005392_215,1 +00456_0,14 +01834_231,8 +01118_52,7 +00011_89,4 +00588_38,4 +001602_284,13 +00456_149,14 +02027_9,14 +01228_79,14 +01431_159,11 +003062_34,7 +020052_125,11 +009642_288,14 +011612_287,17 +010942_54,11 +01929_97,0 +005392_250,1 +02042_73,4 +007092_127,4 +00718_74,19 +020052_147,11 +00566_256,8 +020572_157,3 +01366_124,2 +00677_56,4 +006972_31,1 +012562_102,14 +01775_63,2 +019252_163,3 +016922_40,2 +004082_298,11 +005502_64,18 +01278_143,4 +01330_207,9 +02042_12,14 +00350_250,5 +01177_95,4 +00550_116,5 +00538_6,14 +006742_76,14 +004082_88,11 +00438_181,2 +00408_258,13 +00964_271,14 +00747_46,4 +01361_239,15 +00535_81,12 +013302_286,1 +00408_164,11 +01814_268,11 +01769_26,2 +002752_60,14 +02049_122,13 +01636_23,0 +00793_223,14 +01723_221,15 +019622_39,0 +01240_225,12 +01901_94,0 +010942_107,14 +013302_110,9 +00916_258,5 +02057_197,3 +00892_87,2 +00456_67,12 +016922_49,2 +005882_211,12 +00916_260,5 +00761_134,14 +01134_181,10 +00124_10,4 +007292_163,14 +008372_159,11 +00867_142,5 +014232_97,0 +00688_42,5 +00615_135,11 +00023_182,2 +02138_282,14 +00390_26,5 +019252_278,8 +01972_239,6 +013712_11,14 +00228_5,14 +00413_90,0 +00962_33,0 +007222_101,17 +01044_179,4 +00453_214,9 +01693_215,0 +00111_43,17 +005092_218,12 +01044_188,4 +00505_187,5 +01706_64,2 +02005_132,11 +00280_201,12 +00475_99,9 +02138_210,13 +00535_273,6 +01092_120,17 +01959_76,6 +009342_29,1 +01707_99,0 +01767_210,14 +00964_73,3 +01065_42,18 +00505_133,12 +01693_139,0 +02042_37,0 +00660_27,12 +00023_11,2 +01692_14,14 +010872_113,5 +00761_215,3 +00509_201,2 +01924_58,14 +006092_60,11 +010012_144,5 +02191_51,7 +00578_10,14 +00128_177,0 +00228_226,14 +004172_204,17 +00505_227,12 +01693_212,0 +00079_119,9 +01605_285,11 +01145_227,4 +00993_32,14 +01693_193,0 +005282_35,2 +01692_110,1 +01423_96,0 +01087_180,5 +006092_50,11 +01091_250,2 +01144_171,2 +00228_192,9 +007092_270,9 +00124_154,19 +01092_69,17 +007212_164,14 +01145_229,4 +00462_18,14 +01118_53,7 +01330_155,18 +005282_133,4 +01428_45,14 +017672_46,14 +01981_28,5 +00660_20,14 +01001_125,5 +00577_47,7 +00111_86,14 +01834_200,8 +00722_1,17 +005282_0,2 +00490_236,5 +006972_80,5 +01351_20,7 +00875_13,2 +02049_181,13 +01813_21,11 +02127_185,17 +014372_276,11 +017482_80,0 +00079_219,15 +005092_49,2 +02172_71,14 +01723_245,15 +01953_274,12 +00916_240,2 +005062_91,4 +00413_213,14 +00546_25,14 +01882_22,5 +00467_40,11 +00175_12,12 +019252_5,14 +01058_94,2 +00041_42,12 +00768_76,7 +01834_90,8 +01488_13,13 +021462_139,14 +01948_143,13 +01901_129,5 +02028_91,2 +01636_61,0 +01219_80,5 +00916_239,2 +00848_95,17 +01184_107,5 +01091_21,12 +010942_69,11 +01693_69,0 +01853_26,0 +01839_1,14 +00350_134,9 +00065_9,18 +019042_22,2 +01272_157,4 +02012_80,17 +02028_30,15 +012562_104,14 +01901_99,5 +011912_48,2 +00628_106,7 +00519_60,17 +01001_41,4 +00550_76,18 +013302_186,3 +01423_138,0 +00350_105,5 +007092_152,5 +021462_51,18 +01568_48,2 +00951_60,0 +00793_273,14 +01283_48,2 +01812_0,2 +00088_67,5 +00021_143,12 +01578_15,14 +00023_183,2 +005392_6,6 +00160_29,11 +014122_9,0 +004532_228,9 +007182_0,2 +00697_48,2 +020052_155,11 +01877_8,4 +00722_131,17 +00485_66,1 +01201_37,11 +007762_46,14 +00721_21,14 +00979_128,14 +01706_146,2 +01092_161,5 +01804_83,12 +00535_240,6 +00848_148,14 +01409_12,14 +01046_30,7 +01091_10,2 +019242_230,14 +001112_24,17 +021462_39,11 +00503_290,6 +01706_126,2 +00506_14,2 +01144_88,12 +00761_232,3 +00729_241,14 +01962_21,0 +01493_183,1 +00485_106,1 +01865_3,14 +004082_148,11 +00228_272,11 +00503_289,6 +00242_229,12 +01409_114,0 +00287_116,15 +00993_122,7 +00840_264,2 +00041_29,4 +004172_231,6 +00840_179,7 +01959_63,6 +00306_33,7 +01901_131,0 +01457_33,7 +009622_78,3 +01748_50,7 +01437_188,11 +01065_41,18 +01977_27,2 +00505_50,4 +005882_111,13 +01361_184,3 +00490_202,2 +018392_113,11 +02030_55,14 +00280_188,2 +00566_261,8 +00962_82,3 +00159_42,2 +007182_52,19 +005882_161,15 +01366_1,14 +01925_235,8 +00681_84,14 +00677_94,14 +01330_162,15 +017072_110,1 +00697_12,17 +017672_0,14 +01706_149,2 +01578_74,14 +00964_22,14 +00453_68,9 +001022_118,16 +00964_108,8 +00509_64,2 +00720_23,0 +01684_40,4 +00519_136,7 +00837_55,11 +01408_19,14 +007212_248,14 +014882_165,13 +007292_278,14 +00475_203,1 +01877_98,4 +017232_69,15 +016052_244,11 +004672_8,11 +014232_212,0 +009342_4,1 +005092_54,2 +01092_141,17 +01707_85,0 +00306_57,7 +000242_97,2 +01909_143,12 +01692_39,2 +01578_163,14 +016052_61,5 +000092_105,12 +01490_11,7 +012402_28,2 +00535_36,2 +00079_99,1 +016882_144,14 +00720_5,0 +00577_7,14 +02005_299,11 +007832_184,2 +00709_43,19 +01623_105,5 +01605_83,5 +012282_281,14 +018342_114,8 +011912_90,7 +004532_134,9 +00079_208,9 +001602_107,11 +017232_41,15 +00709_63,19 +02027_127,14 +01813_97,11 +01968_62,7 +02172_253,14 +01925_136,3 +01065_12,11 +01240_61,12 +00023_147,6 +020052_293,11 +017752_22,2 +01437_87,11 +01091_59,1 +008372_83,11 +010872_30,14 +017672_286,14 +02021_102,14 +01948_167,13 +000792_169,9 +00276_57,11 +00503_264,6 +01065_100,11 +02030_241,16 +01693_36,2 +016842_52,14 +00450_82,13 +018342_180,8 +020572_79,2 +00079_78,9 +00158_9,14 +01361_1,5 +014882_211,0 +011912_115,7 +00601_47,17 +00660_253,14 +013302_63,18 +01962_97,0 +014882_71,0 +00660_71,0 +00426_169,14 +019622_44,0 +00776_76,4 +016932_124,0 +01839_189,1 +000092_106,12 +00009_197,12 +02005_20,11 +01437_126,11 +00660_138,0 +01118_100,14 +01904_30,2 +00768_92,14 +010012_87,5 +01488_81,0 +00793_58,14 +012402_97,12 +01953_106,4 +007832_145,4 +02172_21,14 +00539_289,5 +02049_51,3 +00088_25,5 +016882_230,5 +01094_0,14 +016882_127,14 +01182_86,4 +012402_0,2 +00041_46,12 +009162_226,2 +02094_166,2 +01698_96,17 +013302_230,8 +01228_260,14 +001602_280,13 +007182_50,19 +018772_101,4 +007182_60,19 +00703_122,14 +01001_207,5 +00438_270,2 +00021_111,12 +018772_294,4 +01804_65,4 +01431_19,11 +019242_149,14 +00158_25,14 +00709_292,12 +01219_64,5 +011612_224,17 +019242_91,14 +01605_130,5 +00535_286,2 +02146_5,14 +008482_142,14 +02021_77,11 +01048_51,5 +00883_66,11 +007292_179,14 +00350_204,5 +016932_219,0 +012562_111,14 +00453_130,9 +00730_2,14 +01972_270,14 +016882_98,5 +00287_285,4 +009512_38,0 +009642_7,14 +014882_50,13 +007212_228,14 +010872_193,5 +008922_34,0 +015972_91,0 +01904_1,2 +01488_111,0 +00848_153,14 +01578_17,14 +01597_97,0 +013712_13,14 +01409_89,0 +01044_138,4 +016052_126,5 +01046_119,14 +01941_200,14 +00993_63,6 +006972_107,4 +00041_129,7 +00158_186,5 +001112_23,17 +00453_74,9 +01493_192,9 +00867_57,5 +02054_95,12 +00601_76,1 +00505_179,11 +00503_152,9 +012562_13,14 +00783_12,2 +018792_24,2 +01769_255,0 +016932_251,0 +004532_248,9 +019592_16,6 +01929_16,0 +00539_89,1 +00783_148,4 +00566_189,8 +000092_3,4 +01834_10,14 +009512_22,0 +01953_65,2 +00128_246,12 +00314_36,2 +00160_101,11 +01953_212,4 +01261_61,2 +01706_175,2 +01101_160,14 +00588_214,12 +020572_108,2 +016932_263,0 +008402_48,2 +007292_48,14 +00546_188,14 +00158_199,5 +00935_69,7 +00025_84,17 +00601_26,7 +00840_174,7 +00776_22,4 +019622_122,0 +00709_256,9 +018392_148,1 +017692_53,9 +00566_51,8 +008372_170,14 +02054_47,2 +00009_74,0 +01959_48,6 +004172_25,6 +014372_167,11 +007222_69,17 +001242_243,0 +001022_239,16 +01597_51,0 +01879_27,2 +01953_151,4 +01437_66,11 +00825_41,12 +02021_87,11 +020052_116,11 +00761_9,14 +00506_95,4 +00720_33,0 +02027_1,14 +00041_108,12 +011612_114,17 +00467_4,11 +018122_35,4 +010012_83,5 +01408_197,14 +019412_6,14 +013302_3,2 +00023_40,6 +01058_65,2 +01437_16,11 +010942_33,11 +01437_62,11 +01605_154,11 +00350_260,9 +01877_155,4 +014372_94,11 +01158_38,12 +00079_211,9 +00333_50,2 +007182_20,19 +00837_175,14 +00417_182,6 +01853_42,7 +01065_64,18 +00793_94,14 +018772_266,4 +017072_207,0 +004082_64,1 +01688_79,5 +01094_74,11 +00124_24,4 +00417_1,14 +013302_219,6 +018392_55,11 +01956_45,13 +00438_16,2 +01698_2,14 +019252_131,3 +00128_63,12 +00079_162,15 +019042_78,12 +00951_76,0 +02172_48,4 +00979_23,1 +00232_171,14 +012402_213,12 +01044_77,12 +00964_44,6 +021722_61,14 +00509_167,12 +018342_6,14 +021912_25,7 +00709_38,19 +01972_184,13 +009642_33,4 +00181_52,0 +02127_100,17 +00242_138,2 +00462_30,14 +01488_206,0 +01775_0,2 +01437_184,11 +017482_10,11 +00916_167,2 +00964_284,14 +01361_159,3 +01948_195,13 +013302_199,6 +018792_77,12 +00677_85,14 +017022_46,14 +00772_99,14 +00159_37,2 +016052_292,11 +01924_153,14 +019042_171,12 +016932_190,0 +01351_65,7 +00408_167,11 +006972_20,9 +01448_59,3 +01972_89,3 +001602_186,11 +014122_32,0 +006972_15,9 +00158_79,5 +011772_99,4 +018772_173,4 +01879_69,4 +017672_269,14 +013302_80,6 +02094_86,4 +01366_26,17 +02127_5,2 +00023_130,6 +00848_36,17 +005392_228,13 +007292_284,14 +02027_17,17 +00350_84,5 +01408_140,14 +00350_233,5 +004172_125,17 +017072_109,1 +00567_182,5 +01094_77,11 +01971_39,2 +00490_137,4 +001022_249,16 +00588_7,2 +016882_68,5 +02049_61,3 +01423_132,0 +01971_60,12 +018122_59,4 +012192_3,14 +02172_124,2 +01977_158,8 +00041_23,2 +01044_269,4 +01330_270,15 +01962_107,0 +00413_156,0 +01118_77,14 +01210_39,1 +00280_68,12 +021912_64,7 +002802_14,14 +02049_148,13 +019712_70,4 +014122_51,0 +01972_81,3 +01312_54,7 +002802_187,2 +00552_3,2 +02062_77,12 +00993_25,14 +01045_294,4 +01707_241,0 +00848_32,17 +00475_86,9 +00382_99,19 +01698_124,14 +01953_1,2 +00021_103,12 +00535_27,2 +00505_165,12 +012402_251,12 +00718_124,19 +01804_108,12 +01044_146,4 +009162_102,2 +014372_272,11 +01688_294,2 +007092_82,19 +00964_71,3 +01412_8,4 +00342_4,14 +017482_46,0 +00485_143,1 +00535_167,0 +01210_143,6 +011912_123,7 +02062_42,2 +00539_151,1 +009162_235,5 +00628_99,7 +00951_2,14 +021722_203,14 +00181_33,0 +02191_49,7 +01161_169,17 +018652_15,5 +016052_146,5 +00475_140,1 +01953_178,12 +017482_29,0 +017232_294,15 +00079_55,9 +00566_93,8 +01165_137,14 +00009_224,2 +01134_219,10 +004172_194,17 +01509_84,0 +018392_13,2 +00333_121,2 +019242_228,14 +00539_7,6 +001022_222,16 +00232_70,13 +005502_87,18 +00993_29,14 +00539_247,1 +008402_183,7 +01972_279,14 +02030_190,16 +00964_229,3 +00563_2,2 +01361_12,5 +004172_155,6 +00475_188,1 +01814_205,11 +001112_68,17 +00503_128,1 +013712_69,14 +01509_286,11 +01909_107,4 +016052_88,5 +00761_22,14 +00528_177,0 +010942_104,14 +01092_168,17 +01578_118,14 +00837_174,14 +00709_65,19 +00840_4,2 +00413_199,2 +021622_120,18 +01904_103,12 +00282_102,14 +004532_182,9 +00158_1,14 +01409_149,0 +02057_41,2 +014372_117,11 +01165_20,5 +016932_100,0 +003062_77,7 +01882_4,14 +00588_197,2 +00964_55,3 +00242_36,12 +02054_203,2 +01361_65,4 +00065_168,1 +008372_103,11 +00450_176,14 +00232_104,13 +00875_81,2 +016882_56,5 +00841_63,14 +01706_27,2 +00485_246,1 +00841_6,14 +02030_58,14 +017232_58,15 +00024_66,7 +00242_231,12 +00025_59,17 +011612_160,17 +02057_7,2 +01044_152,4 +017072_74,4 +01101_111,13 +00709_118,17 +019042_95,2 +01582_60,2 +00314_292,4 +01228_93,14 +018772_194,4 +01366_125,2 +005282_67,2 +00660_230,0 +00342_38,17 +01568_188,12 +01087_161,5 +00535_236,6 +00342_91,14 +00158_270,5 +00566_40,6 +00916_235,5 +00282_15,14 +016882_140,14 +014282_68,14 +00916_169,2 +02162_26,5 +013302_236,8 +01488_177,0 +017672_126,14 +011612_71,17 +005882_142,13 +00475_112,9 +01361_5,0 +01972_107,13 +000232_121,5 +016932_246,0 +01158_111,4 +01045_155,4 +01366_34,17 +009512_0,14 +00158_202,5 +00563_58,9 +018772_85,4 +018772_80,4 +002802_178,4 +016052_75,5 +00730_95,14 +011082_1,14 +00160_160,1 +00181_3,14 +00024_53,17 +01228_194,14 +00350_278,9 +01134_74,10 +02057_62,12 +017672_206,14 +01971_16,2 +01578_48,14 +00041_96,12 +01177_98,4 +01834_265,8 +00577_10,14 +01834_136,8 +00453_42,9 +01767_133,14 +02054_277,12 +00413_110,0 +018392_109,11 +02030_80,16 +017072_80,0 +00282_56,17 +00962_30,0 +004082_39,1 +00729_66,14 +00041_51,12 +008402_283,2 +00124_95,19 +00964_201,8 +00456_140,14 +00615_68,1 +00413_60,0 +013302_167,15 +016932_76,0 +00729_156,14 +00261_41,4 +007212_150,14 +00242_249,4 +02094_58,2 +00505_189,7 +00467_41,11 +01684_37,14 +014282_55,14 +00442_98,2 +00503_212,9 +00438_183,2 +007212_121,2 +01490_92,14 +00916_90,2 +01201_64,11 +00916_168,2 +01201_80,11 +014282_66,14 +000092_211,7 +01058_27,2 +00023_35,4 +007182_67,19 +01941_86,14 +01605_62,5 +01767_39,14 +01706_74,2 +01161_94,17 +011772_76,14 +01092_126,9 +01684_19,14 +005092_164,2 +01001_187,5 +01879_100,2 +019042_30,2 +02030_225,16 +000232_179,2 +02187_284,16 +02191_5,14 +017752_170,12 +00528_75,2 +01924_70,14 +01605_243,11 +02042_36,13 +01941_201,14 +02127_158,17 +01775_56,4 +004082_100,11 +00519_126,7 +016432_21,12 +01045_124,4 +010012_123,5 +00474_110,2 +01191_196,14 +00875_108,2 +00475_93,9 +01228_11,14 +009342_1,1 +005392_219,1 +01693_99,0 +02062_1,2 +00503_118,1 +01001_42,4 +01763_190,2 +01623_111,14 +01427_97,17 +00729_298,14 +018342_163,8 +01409_127,0 +00588_119,13 +00709_223,19 +01904_78,12 +01092_211,17 +00160_89,11 +01407_21,12 +00793_290,14 +01972_44,3 +00228_148,9 +019712_112,4 +00979_11,5 +00538_77,17 +01723_26,15 +00312_42,0 +00979_80,1 +01144_177,2 +00793_95,14 +00538_80,17 +009642_101,8 +00546_54,4 +01769_291,0 +01814_232,5 +02054_278,12 +00011_131,4 +02187_3,11 +019712_41,2 +01767_118,14 +00601_122,14 +00951_27,0 +007832_150,2 +02049_162,13 +01048_4,2 +00783_193,12 +00242_203,12 +017672_271,14 +01904_63,2 +01312_14,7 +00916_175,2 +018342_77,8 +01879_105,2 +02138_199,13 +01706_37,2 +016932_268,0 +02172_193,14 +007292_205,14 +01707_43,12 +01408_238,14 +000792_48,15 +01001_242,5 +01698_87,17 +021462_156,14 +007292_107,14 +00333_157,2 +017692_205,0 +014972_45,2 +00563_7,2 +00578_27,1 +02138_27,2 +01865_95,18 +014372_166,11 +00408_290,11 +01814_298,11 +00503_235,5 +01767_14,14 +006742_54,14 +01925_79,3 +00674_32,14 +01767_241,14 +020572_147,3 +00160_98,11 +021912_59,7 +000242_86,7 +008402_207,7 +00158_226,5 +00509_104,2 +00287_68,15 +01692_70,1 +01904_108,12 +007762_71,14 +02049_216,3 +008402_153,7 +01901_104,0 +001242_177,0 +00601_43,6 +01643_93,14 +01488_192,13 +008372_16,11 +00825_14,4 +019252_231,8 +014282_17,4 +010912_141,5 +00539_115,1 +00535_192,0 +000092_233,12 +014232_27,2 +00242_278,4 +01605_46,14 +01929_74,0 +01541_57,5 +01428_5,14 +00563_34,4 +01087_118,5 +013302_266,15 +00721_200,14 +01457_71,2 +02094_149,2 +01643_94,14 +01707_23,2 +00588_182,4 +00158_14,14 +009162_39,2 +02094_115,12 +00021_17,5 +01165_99,5 +018122_116,2 +017482_30,0 +01001_269,5 +00382_76,6 +00721_201,14 +007762_42,4 +01605_290,11 +00709_49,19 +01256_0,14 +00462_172,4 +00287_281,4 +01977_143,8 +02049_220,3 +00079_2,9 +00729_130,14 +020052_117,11 +02021_31,1 +02094_18,2 +01330_135,6 +01972_256,14 +01767_152,14 +01924_26,14 +00993_214,6 +00261_34,12 +00597_72,14 +009622_15,0 +00964_203,8 +016982_121,14 +019412_15,14 +00417_162,6 +02057_67,2 +00242_228,12 +010012_23,12 +00296_34,7 +01509_243,11 +01924_89,14 +017072_123,0 +011612_4,17 +009642_233,3 +01361_287,15 +00916_138,2 +017752_83,4 +02062_20,2 +00009_236,7 +00390_17,2 +011772_55,12 +00505_116,12 +00916_254,5 +01763_139,2 +01962_113,0 +01767_179,14 +01045_56,4 +01108_32,15 +01775_60,2 +017692_75,9 +01448_17,14 +01272_174,12 +00981_54,11 +005392_248,1 +01045_280,4 +02138_37,12 +01769_93,0 +01924_76,14 +00721_92,14 +00964_48,8 +01134_209,10 +00467_26,11 +00964_142,8 +01500_38,19 +00566_294,8 +000232_40,6 +01962_127,0 +01924_4,14 +018652_64,18 +00964_45,6 +017752_150,2 +00490_235,5 +01493_56,1 +017672_163,14 +012612_81,2 +01500_46,6 +01925_125,3 +01814_43,5 +02057_18,2 +01693_182,0 +02021_65,11 +02062_21,2 +00025_2,17 +001242_5,4 +01431_162,11 +01879_61,4 +01210_278,9 +018652_116,18 +02028_98,2 +02162_122,1 +01219_50,5 +01092_229,9 +017232_37,15 +005092_210,12 +01408_294,14 +00721_115,14 +016932_14,2 +00079_200,9 +01698_65,17 +01240_15,2 +020052_71,11 +00158_104,11 +00314_12,2 +01333_8,0 +00729_220,14 +01145_73,4 +014372_251,11 +014282_51,14 +01509_26,2 +00951_162,14 +01812_32,4 +00962_36,4 +00840_160,7 +00475_37,9 +01948_6,12 +02172_215,12 +02127_181,17 +01091_246,2 +00981_53,11 +01981_34,5 +01972_119,13 +01605_226,11 +012722_42,2 +00615_39,11 +01977_184,8 +00160_78,11 +01748_17,0 +00867_115,5 +01877_146,4 +01108_78,14 +014232_254,2 +01046_114,14 +012402_98,12 +02187_21,16 +018342_283,8 +01001_273,5 +014882_92,13 +01366_8,14 +00413_19,2 +00124_178,0 +00408_47,1 +00539_241,1 +02005_43,11 +016922_143,14 +01723_255,15 +01101_165,14 +018792_83,4 +00916_200,2 +01431_9,5 +016922_130,5 +01278_7,2 +00314_168,4 +00408_100,11 +01971_229,2 +00474_103,2 +010942_38,11 +00892_16,0 +01877_227,4 +01256_14,14 +001022_13,2 +017752_54,4 +01046_38,7 +00275_168,12 +009162_282,5 +00709_143,19 +00535_233,6 +00228_177,9 +011612_30,17 +02138_90,14 +00721_86,2 +00158_115,11 +013302_1,2 +004532_84,9 +014282_37,14 +02127_247,17 +00474_161,2 +01924_181,14 +02191_29,7 +00232_20,2 +00837_178,14 +00065_17,17 +00475_17,5 +01272_80,2 +01901_63,14 +00287_286,4 +00768_50,7 +01330_4,2 +019712_19,2 +011772_57,4 +00467_30,11 +001242_96,19 +00841_65,14 +00567_296,2 +000092_43,4 +01361_191,3 +005062_89,4 +010652_57,18 +00450_99,13 +012282_226,14 +004172_23,6 +004532_191,9 +01201_21,2 +021722_8,14 +01941_202,14 +001242_82,19 +00505_67,1 +00979_17,1 +01007_108,0 +01087_238,5 +00228_266,11 +01210_194,6 +01500_33,4 +01626_138,2 +01941_181,14 +00485_207,1 +00280_255,14 +00730_0,14 +01509_219,11 +02186_17,14 +005282_72,2 +02005_78,11 +00935_72,7 +02172_88,14 +017072_286,7 +01493_91,1 +017672_227,14 +00993_194,7 +01272_171,2 +00528_137,4 +00160_227,1 +00519_93,11 +01909_26,2 +007832_4,2 +01423_123,0 +00232_146,4 +01272_220,4 +01706_6,2 +002802_132,12 +00993_205,6 +00709_98,11 +00417_131,17 +013302_74,6 +00011_34,1 +02088_15,0 +00024_98,2 +00588_162,15 +014882_15,13 +02057_118,2 +01971_211,2 +01706_135,2 +012722_26,2 +01568_193,2 +02054_195,2 +019252_290,8 +01925_50,12 +01582_5,14 +00228_17,14 +01941_48,14 +00509_72,12 +01312_67,7 +00993_177,7 +01623_108,5 +001602_79,1 +001242_205,0 +020052_62,11 +01493_282,1 +006092_36,11 +00021_62,3 +00993_223,6 +01962_37,0 +019242_17,14 +02162_63,17 +018772_216,4 +01509_189,0 +017672_73,14 +02177_48,12 +00951_8,14 +013332_20,2 +01702_71,14 +00079_45,15 +00535_5,2 +02049_217,3 +021722_232,4 +01045_76,4 +012192_101,5 +01702_49,2 +006742_6,14 +00079_81,9 +00979_18,1 +00566_7,14 +00462_182,14 +00503_21,6 +01049_41,7 +00505_78,5 +010942_63,11 +00021_94,4 +02186_68,5 +008372_117,11 +020052_141,11 +018652_52,18 +018392_122,11 +00509_78,2 +02138_170,13 +01948_76,13 +00102_153,16 +004532_128,9 +02030_151,16 +01909_149,4 +00519_20,7 +01971_12,2 +012282_150,14 +01763_187,12 +01431_82,11 +01605_215,11 +00916_267,5 +008482_31,17 +01423_147,0 +004532_275,9 +01904_58,2 +019592_47,6 +01409_66,0 +01767_42,14 +00964_39,6 +00962_53,3 +014232_236,12 +00287_82,15 +018342_197,8 +00079_34,9 +01351_77,7 +016432_100,14 +008402_159,7 +009512_70,0 +00280_229,14 +01834_273,8 +00841_18,14 +007292_189,14 +005502_115,5 +02187_176,16 +01953_271,12 +00124_140,19 +017072_179,4 +01706_177,2 +00535_59,2 +00124_106,19 +010012_224,5 +018132_34,11 +00825_31,12 +016932_40,2 +01941_256,14 +01191_180,2 +00566_237,8 +01272_16,2 +01240_76,4 +005282_222,0 +00382_97,19 +01953_154,4 +016052_125,5 +021722_239,14 +00505_147,14 +008402_167,7 +02094_47,14 +00128_170,2 +02054_4,2 +00314_132,12 +01707_58,0 +00821_88,5 +00242_32,12 +01331_50,17 +00848_120,17 +01941_213,14 +014882_113,0 +00505_36,2 +01431_206,11 +00588_152,13 +01144_94,2 +01977_123,8 +011912_62,7 +02054_102,12 +01191_18,14 +019252_181,8 +005282_148,0 +00280_5,14 +01706_12,2 +00505_91,12 +01622_2,14 +000242_27,7 +00292_38,11 +00462_207,14 +01408_272,14 +00024_101,2 +01972_10,2 +00935_57,7 +01145_197,4 +01092_29,17 +008372_149,11 +00390_24,5 +01001_121,5 +00916_133,2 +00588_201,2 +01488_45,0 +00509_178,12 +008922_1,0 +01158_79,4 +01044_221,2 +01366_129,5 +005392_129,1 +007212_89,14 +011612_43,17 +01882_11,14 +010912_247,2 +01278_35,2 +01497_32,4 +008402_71,2 +00023_3,2 +02030_27,14 +00660_84,0 +016052_130,5 +01240_104,12 +01981_127,14 +018652_72,18 +014282_42,4 +02127_298,17 +01161_190,17 +017072_139,0 +00722_8,17 +01924_198,14 +019042_117,4 +01210_260,9 +01145_222,4 +00111_19,17 +00462_147,13 +00333_103,4 +01568_11,2 +00703_29,11 +014372_145,11 +00261_39,4 +00111_20,17 +005092_215,12 +01971_226,2 +01879_30,4 +01044_39,4 +012722_105,2 +01688_266,5 +01626_128,2 +02162_75,17 +01767_249,14 +00128_62,12 +00660_97,0 +00417_101,6 +011612_69,17 +00475_96,9 +021462_89,18 +01956_71,14 +01904_167,12 +005882_137,13 +019622_67,0 +01948_117,13 +00615_220,11 +008402_228,2 +00314_294,4 +00417_249,6 +001602_158,11 +00474_155,2 +01813_23,11 +01045_16,2 +020052_19,11 +001022_287,16 +00088_69,5 +017072_293,7 +01457_45,7 +01834_207,8 +00761_289,3 +016932_21,14 +02186_39,5 +014372_45,11 +01007_293,6 +00024_17,2 +00993_108,7 +014232_138,0 +008372_3,14 +01879_113,2 +01882_54,11 +00588_172,4 +014232_249,0 +01046_0,14 +00578_70,17 +009352_92,7 +00951_20,0 +007092_292,12 +017482_52,7 +00981_57,11 +00951_54,0 +02094_105,12 +01312_85,7 +019412_290,14 +014882_8,13 +00837_132,11 +008372_98,11 +01044_93,4 +017672_110,14 +01769_271,2 +00079_29,9 +00079_283,9 +00841_70,14 +01814_152,5 +01044_17,4 +00993_93,7 +003122_44,0 +014372_67,11 +01605_265,11 +019412_243,14 +001602_261,13 +01605_220,11 +000232_69,3 +020572_20,2 +001022_95,16 +00837_183,14 +01605_51,2 +00567_251,5 +01437_52,11 +019252_130,3 +004082_5,2 +01210_186,6 +00276_85,11 +02172_75,14 +00065_15,17 +01493_207,1 +00065_70,1 +005282_90,2 +004082_59,1 +008402_247,2 +00539_140,1 +010012_266,5 +00102_44,16 +00287_178,15 +02187_98,16 +00102_267,16 +01839_173,4 +01623_119,14 +00438_89,2 +00128_235,4 +01971_59,12 +008402_134,7 +017692_288,2 +017232_177,15 +00962_22,0 +00023_162,5 +019252_24,12 +012722_158,4 +02127_62,17 +01948_69,13 +01959_36,6 +01953_93,4 +014372_103,11 +019252_227,8 +016842_33,4 +01500_34,4 +00783_268,5 +000232_120,5 +01161_196,17 +01865_67,18 +02146_30,11 +01045_173,4 +010912_102,0 +00228_104,11 +00993_126,7 +01437_256,11 +01240_203,12 +00382_88,1 +00280_39,14 +00450_154,12 +01834_134,8 +01767_171,14 +01256_69,12 +018132_147,14 +00979_22,1 +00567_148,2 +00578_2,14 +002802_43,12 +00159_69,2 +00761_133,14 +01767_226,12 +01145_136,12 +012282_181,14 +01501_10,14 +018792_75,5 +00892_59,2 +01408_261,14 +005092_108,12 +01948_151,13 +00509_150,2 +00456_101,14 +01706_156,2 +00306_78,7 +01044_295,4 +018792_45,4 +02030_118,16 +019042_36,4 +01853_17,5 +02177_20,4 +014372_125,11 +01423_181,0 +01409_197,14 +01427_68,9 +00729_160,14 +000792_140,9 +00438_167,2 +01361_140,3 +01119_0,14 +001022_201,16 +010872_108,5 +005282_187,0 +00578_110,14 +02186_82,5 +009342_28,1 +004172_280,1 +013302_206,9 +016882_57,5 +00761_135,14 +01901_9,14 +016432_93,14 +01509_100,0 +00509_187,2 +02187_189,16 +00079_1,9 +02028_31,15 +02187_53,16 +00475_0,2 +00485_91,1 +01953_137,4 +007292_177,14 +00793_123,14 +007092_41,19 +01901_173,14 +00848_68,17 +00615_125,11 +00021_54,3 +01723_94,15 +004532_24,9 +00442_46,2 +017072_52,4 +01044_186,4 +00490_9,2 +00474_287,2 +001242_218,0 +00588_206,12 +01488_156,13 +01493_209,1 +02138_128,8 +00102_174,16 +01228_110,14 +01278_226,2 +004082_183,11 +01925_232,8 +00485_160,1 +00350_272,9 +01853_96,0 +00552_61,7 +016432_112,14 +011612_23,17 +01643_15,12 +002752_72,14 +00023_84,4 +02042_79,14 +01092_38,17 +00462_186,14 +01977_254,3 +00442_278,4 +01001_116,5 +00506_67,6 +002802_113,4 +00674_72,14 +00519_64,1 +02005_90,11 +007182_129,14 +016932_28,17 +011082_57,4 +007292_77,14 +01501_16,4 +01977_141,8 +02057_116,2 +01272_15,2 +00761_293,3 +013302_268,15 +01092_225,9 +00607_129,14 +01494_0,14 +014272_89,4 +01706_133,2 +01925_292,8 +018392_14,2 +01184_62,5 +01953_117,4 +011612_90,17 +01361_274,15 +01065_88,18 +01698_99,17 +019412_272,14 +00280_51,4 +00550_47,18 +02028_18,15 +00413_68,0 +009642_166,8 +02062_153,4 +01626_122,7 +01775_26,2 +00718_12,2 +006742_105,14 +01605_197,11 +008402_24,2 +013302_79,6 +01256_99,14 +019412_175,14 +00232_157,14 +012282_207,14 +016882_27,5 +01748_76,0 +01688_254,5 +009512_122,0 +01103_38,4 +009162_148,2 +01331_18,14 +01865_83,18 +00892_27,0 +01423_17,2 +019712_299,4 +00964_42,6 +00615_218,11 +014272_21,4 +016432_99,14 +01007_148,19 +012402_242,12 +00242_218,12 +01165_93,5 +01423_99,0 +00450_136,13 +01144_183,2 +00730_148,14 +00450_72,13 +01046_115,14 +00023_178,14 +01925_146,3 +01925_130,3 +01408_4,14 +00519_131,7 +007832_278,5 +012722_240,4 +02146_168,14 +01240_248,12 +01834_237,8 +01509_229,11 +00505_44,14 +00275_89,14 +01706_227,2 +01909_35,2 +01423_51,2 +00578_85,1 +00892_2,0 +00158_231,5 +00261_18,0 +020572_72,2 +01161_199,17 +01839_103,11 +00793_21,14 +01948_146,13 +014232_35,2 +00475_249,9 +02162_115,18 +00993_72,6 +02054_46,2 +011082_17,14 +00474_181,2 +00660_98,0 +00453_239,9 +01981_94,5 +01814_174,11 +02030_196,16 +02094_168,2 +00280_179,4 +008402_252,2 +01091_62,1 +017692_22,2 +00768_12,14 +00964_28,14 +016932_238,0 +00102_183,16 +00442_189,4 +01568_84,2 +01812_89,2 +008832_33,11 +021772_6,4 +01240_146,12 +019252_69,6 +00821_43,5 +00934_31,1 +021722_54,14 +01058_93,2 +00408_142,11 +00287_277,4 +00276_116,11 +012402_12,2 +010652_23,18 +01001_148,5 +02172_239,14 +01597_111,14 +005282_172,0 +00709_39,19 +009352_41,7 +013302_29,12 +01191_65,7 +011912_111,7 +01877_55,4 +008832_72,11 +017022_60,14 +01407_50,12 +00417_196,17 +016882_247,5 +01977_80,3 +00964_99,8 +00314_6,2 +01706_247,2 +009642_221,3 +012562_30,12 +01814_77,11 +00567_267,2 +01626_0,2 +01702_78,14 +006972_27,9 +01623_109,5 +00065_224,12 +007182_42,19 +019712_108,12 +013302_188,3 +00588_192,2 +00462_49,12 +00709_128,4 +02187_119,16 +00837_38,11 +01877_158,4 +019412_65,14 +01065_75,18 +013302_101,6 +012402_15,2 +021722_125,2 +012282_107,14 +00453_76,9 +00703_67,11 +013302_257,6 +00438_116,2 +01361_282,15 +004532_111,9 +00382_70,17 +00390_21,5 +02162_118,18 +005062_58,6 +000232_47,3 +00567_261,2 +01228_20,14 +01972_26,4 +01568_13,2 +008832_13,11 +004532_298,9 +01044_128,12 +01118_33,7 +01509_14,2 +007762_52,4 +00485_255,4 +00128_111,12 +00660_274,2 +01909_185,4 +01210_127,6 +009352_62,7 +007182_114,19 +01968_100,14 +00025_10,17 +01723_1,4 +01092_256,17 +012402_63,12 +01118_1,14 +00697_58,12 +01210_118,6 +00280_84,2 +012402_26,2 +008252_17,2 +00674_93,14 +016882_15,5 +01184_52,5 +018792_43,5 +00660_264,2 +008402_270,2 +01769_34,2 +01693_257,0 +014122_90,0 +018342_228,8 +005392_121,1 +008922_2,0 +01161_249,17 +01448_113,14 +02028_46,9 +005062_110,2 +01853_49,1 +021622_119,18 +00503_260,6 +00394_42,17 +01165_2,14 +01210_77,17 +016882_207,5 +00729_105,14 +01001_81,5 +02172_58,14 +00505_75,1 +02054_174,2 +00417_206,17 +00981_95,11 +02138_190,13 +00390_99,5 +01877_108,4 +01437_262,11 +00314_208,4 +005392_45,6 +007832_244,5 +01971_89,12 +01272_256,12 +01092_72,17 +015972_115,14 +01119_76,11 +019252_31,14 +00160_226,1 +016842_37,14 +00065_11,18 +00566_208,8 +01698_43,17 +02012_42,17 +01909_15,2 +01044_95,4 +00566_226,8 +01968_23,14 +019412_204,14 +004082_69,1 +003122_33,0 +01924_50,14 +00783_22,2 +01407_15,2 +01191_187,14 +01408_10,14 +00024_63,7 +00474_57,2 +00772_25,7 +004532_239,9 +01144_96,2 +01210_275,9 +00546_89,3 +001602_55,11 +019712_178,2 +01568_71,2 +00475_220,1 +01261_38,2 +02172_175,14 +01605_92,5 +01636_132,14 +007292_72,14 +01408_101,14 +011912_156,14 +00079_59,9 +01228_154,14 +010872_140,5 +01767_121,14 +016842_10,14 +008482_112,17 +004082_273,1 +001022_289,16 +017232_125,15 +01210_272,9 +02191_10,7 +00535_7,2 +02146_160,14 +00681_2,14 +016052_59,5 +016842_63,14 +000792_88,9 +005092_191,2 +007092_151,5 +01158_33,7 +006972_91,12 +00160_74,11 +00390_27,5 +01046_67,7 +01813_0,14 +002802_99,12 +01834_36,6 +006092_59,11 +01775_111,4 +02005_222,11 +00783_113,17 +01877_226,4 +00892_41,0 +01103_46,17 +01366_55,17 +01145_123,4 +018772_298,4 +00550_96,18 +00772_14,14 +01763_197,4 +00025_74,17 +01177_25,15 +02062_49,2 +01769_279,2 +01622_117,14 +00408_284,11 +02021_42,1 +01763_53,12 +011612_18,17 +007832_84,17 +01941_23,14 +017692_174,0 +006972_56,12 +01578_114,14 +019712_251,12 +00519_154,14 +007212_106,14 +01981_5,14 +01769_142,9 +012192_76,5 +00287_28,4 +00840_226,2 +005282_86,2 +012402_134,12 +00660_223,0 +02146_119,18 +007092_243,19 +00681_32,5 +01839_121,11 +00160_196,1 +02057_12,2 +01767_234,14 +01865_81,18 +00578_96,17 +00503_287,6 +01448_69,3 +012722_15,2 +01582_1,14 +00282_36,7 +01953_185,4 +00793_247,14 +01622_40,0 +00475_9,5 +014122_22,0 +00296_20,7 +01228_76,14 +000792_86,9 +01706_122,2 +00993_75,6 +000792_207,9 +01901_57,0 +02054_241,4 +005092_130,12 +00242_53,12 +00509_214,12 +01723_179,15 +000232_157,6 +01626_39,7 +016842_65,14 +00837_64,11 +02012_34,7 +00282_51,17 +00793_42,14 +019242_131,14 +01045_145,4 +01065_106,5 +01092_219,6 +019412_128,14 +004082_92,11 +01813_100,11 +005062_116,2 +02054_41,2 +00772_9,14 +01953_33,2 +016882_138,14 +01834_8,14 +01834_119,8 +00509_111,2 +00287_233,4 +00314_98,4 +000092_123,0 +01423_0,2 +00709_166,19 +01929_71,0 +001022_191,16 +01814_242,5 +00528_170,0 +01972_235,3 +007832_160,2 +01698_85,17 +007092_107,1 +00588_97,13 +01971_161,2 +014272_53,12 +01929_20,0 +02057_138,3 +008402_131,7 +00275_148,14 +00578_93,1 +00709_184,19 +01007_54,0 +01058_131,2 +018342_250,8 +019242_189,14 +01925_35,14 +01094_109,14 +019712_106,12 +010872_21,14 +018792_93,2 +014372_190,11 +00382_13,11 +018132_6,2 +00761_288,3 +00793_89,14 +008372_41,11 +01879_56,4 +01087_202,5 +01723_64,15 +00079_80,9 +02127_279,17 +01101_25,7 +010012_167,5 +01065_13,11 +00438_172,2 +01191_183,14 +01431_65,11 +00546_33,14 +01814_193,11 +010912_36,12 +00867_96,5 +00609_60,11 +01361_98,6 +02042_16,14 +00588_19,12 +00296_1,14 +011612_106,17 +007292_253,14 +01829_47,2 +00934_38,5 +01972_247,12 +01904_54,4 +02057_63,12 +00158_171,5 +01775_22,2 +02030_34,14 +00102_154,16 +02042_5,14 +01688_212,5 +01161_27,17 +008482_101,17 +01597_18,0 +00124_179,0 +005882_0,2 +02191_102,7 +00442_79,2 +00394_34,1 +01261_73,12 +00552_54,7 +00474_151,2 +01045_290,4 +01968_83,7 +01904_15,2 +00883_29,11 +010912_209,9 +006972_82,4 +01165_3,14 +00729_224,14 +00503_286,6 +00567_17,2 +005282_159,0 +00485_69,1 +021722_212,14 +005092_148,2 +01351_28,7 +00848_155,14 +014282_0,14 +00783_44,2 +00730_141,14 +014372_99,11 +00825_46,4 +01622_66,14 +005392_284,0 +016932_233,0 +01814_68,11 +01769_227,9 +000232_62,3 +019412_233,14 +014232_57,2 +00772_84,5 +004172_15,6 +00552_100,2 +01331_0,14 +017022_64,14 +00442_88,2 +005062_0,2 +01228_123,14 +01541_36,5 +019042_159,4 +00793_83,14 +00453_95,9 +005282_151,0 +00232_149,14 +01688_264,5 +00442_110,2 +01412_23,0 +01493_123,16 +00730_15,14 +009512_127,0 +007222_6,17 +01210_141,6 +00160_143,1 +01044_184,4 +018392_19,2 +017692_144,9 +017482_33,0 +01488_168,13 +01813_117,11 +019242_6,14 +01706_125,2 +01366_17,14 +01814_221,5 +007182_91,19 +01161_44,17 +00729_231,14 +01108_19,12 +01787_75,9 +01007_273,6 +01904_112,12 +014232_99,0 +01853_110,5 +008832_42,11 +00722_145,6 +005062_122,2 +004082_235,11 +005502_69,18 +02162_102,6 +02186_58,5 +019622_71,0 +00450_13,14 +00065_292,1 +007212_165,14 +02191_88,7 +01493_182,1 +01834_18,14 +018792_19,2 +01941_178,14 +01925_230,8 +013302_195,6 +003062_10,14 +000242_11,2 +01101_120,0 +02138_123,4 +00350_192,5 +02138_252,14 +004082_135,1 +00314_289,4 +01437_104,11 +00821_94,5 +004172_243,6 +01065_37,18 +01261_19,2 +00875_103,2 +02021_94,11 +01981_17,5 +02057_146,3 +01804_77,12 +007292_7,14 +00768_51,7 +000242_79,7 +019712_289,12 +007212_167,12 +01134_33,10 +012282_173,14 +018122_5,2 +00709_284,12 +02149_4,17 +00079_258,9 +00160_197,1 +01007_150,13 +000092_279,12 +018342_129,8 +019412_282,14 +021462_133,5 +01775_82,4 +004532_15,1 +00677_67,14 +01804_95,4 +000092_199,12 +01804_35,7 +01219_125,5 +01044_106,4 +00158_249,5 +01423_100,0 +008372_177,14 +01427_103,9 +00426_161,14 +00023_78,3 +018122_79,2 +01119_109,14 +012282_227,14 +01924_39,14 +007292_101,14 +00697_10,12 +00601_103,0 +008372_45,11 +00490_193,2 +00474_274,2 +008372_100,11 +01272_34,2 +02162_14,14 +00485_236,1 +00793_117,14 +00660_73,0 +01240_198,2 +018792_76,5 +01488_18,1 +00021_108,12 +01092_265,12 +017232_182,15 +00729_157,14 +00128_191,12 +01929_105,0 +01763_214,12 +008922_70,2 +001242_176,0 +018772_146,4 +00783_183,2 +01692_42,2 +00506_12,2 +01706_82,2 +00964_135,8 +01437_95,11 +012282_211,14 +00588_61,13 +02146_40,1 +01408_165,14 +019412_68,14 +00350_22,14 +00009_147,7 +00951_18,4 +01834_234,8 +016052_158,11 +012722_160,12 +00382_61,17 +01769_46,5 +01684_62,14 +01201_69,11 +00993_260,14 +00566_262,8 +02177_27,4 +009162_279,5 +007212_80,4 +01834_7,14 +01351_162,14 +00276_20,0 +016932_141,0 +00875_70,2 +01688_271,2 +006972_38,2 +00474_11,2 +01261_66,2 +00729_196,14 +008402_84,2 +00442_245,4 +01007_21,12 +01924_8,14 +00242_144,2 +01707_271,7 +01688_245,5 +01578_5,14 +01763_178,12 +017482_104,14 +00023_55,3 +00426_5,14 +00009_44,4 +00175_64,4 +018772_86,4 +01972_123,13 +00128_94,4 +01103_6,14 +01408_204,14 +01688_197,5 +01787_45,9 +01330_26,12 +016092_6,17 +019252_232,8 +00660_41,0 +00287_146,15 +012192_28,5 +010942_19,2 +01058_35,2 +002752_148,14 +007222_140,17 +00528_14,2 +008402_271,2 +00282_100,14 +018342_298,8 +007832_205,2 +00793_256,12 +00342_85,14 +00793_76,14 +016432_92,14 +01423_62,2 +01184_127,14 +00567_15,2 +01488_164,13 +00935_117,14 +01763_166,2 +016052_62,5 +021912_52,7 +006972_59,5 +00242_11,2 +00453_191,9 +017692_121,0 +01692_41,2 +00848_4,14 +01723_184,15 +01045_45,4 +00729_95,14 +002802_244,14 +00528_44,2 +01278_159,12 +019252_214,8 +017752_175,12 +01977_103,8 +00242_15,2 +02138_166,13 +01775_155,12 +00729_276,14 +00993_26,14 +00181_29,0 +01177_92,4 +012722_62,12 +00128_138,2 +02088_8,0 +01240_187,4 +01046_12,14 +018342_17,14 +00979_141,14 +004532_17,1 +012282_149,14 +00079_294,9 +01119_66,11 +00916_24,2 +01977_198,8 +01684_24,14 +02094_52,4 +01361_222,15 +00333_16,2 +00474_291,2 +00128_155,2 +012562_108,14 +00490_172,2 +01775_41,12 +010912_177,11 +00438_162,2 +01834_127,8 +019042_67,4 +01702_79,14 +01723_247,15 +01058_134,2 +004172_166,6 +02187_11,0 +00394_99,1 +00009_184,2 +01597_1,14 +00475_144,1 +01412_18,0 +00079_46,15 +01007_23,12 +01723_226,15 +002752_151,14 +017482_87,0 +01408_84,14 +012722_131,12 +01091_47,6 +01953_8,2 +004672_38,11 +014372_255,11 +005882_76,13 +01007_166,13 +00563_69,9 +020052_290,11 +01707_83,0 +00628_35,7 +005092_162,2 +01437_42,11 +00935_45,7 +01853_11,14 +01351_105,7 +01622_123,14 +01210_161,6 +01509_110,0 +02030_12,14 +02088_41,0 +01272_82,2 +00892_49,0 +00783_203,2 +01707_32,2 +00228_143,9 +016932_159,0 +00275_37,12 +007832_169,2 +01431_33,11 +01240_149,4 +02149_39,17 +00474_163,2 +00550_34,18 +00718_65,19 +017692_21,2 +01048_17,5 +00438_51,2 +00509_106,2 +00535_69,12 +00539_273,1 +018392_94,11 +01256_28,4 +002752_139,14 +01812_50,4 +011082_64,14 +006742_129,14 +007092_52,19 +01091_14,2 +009642_10,14 +009512_108,0 +014372_82,11 +005092_216,12 +01568_231,2 +02057_52,2 +01962_94,0 +02162_111,1 +000092_179,2 +01769_182,2 +01972_65,3 +016052_68,5 +01437_91,11 +02172_81,14 +00456_141,14 +00747_21,9 +00718_46,19 +00747_30,9 +00394_106,14 +00474_211,2 +01948_182,13 +00964_57,3 +01605_143,5 +018652_121,1 +00535_164,0 +004172_4,14 +009342_52,11 +001242_137,19 +016982_22,17 +01763_275,2 +00793_271,14 +00546_112,3 +00041_59,7 +00390_14,14 +00519_45,17 +00821_80,5 +00333_132,2 +01210_159,6 +00535_26,2 +01283_69,14 +00158_8,14 +00964_193,8 +007832_297,5 +01568_214,2 +00721_238,14 +018122_4,2 +00350_122,9 +00011_98,2 +01001_206,5 +001022_30,0 +001022_169,16 +01925_175,8 +008402_175,2 +01409_95,0 +01408_152,14 +00503_145,9 +00408_219,11 +000232_133,6 +00519_46,17 +01007_97,0 +00535_148,0 +00892_17,0 +00438_94,2 +01371_2,14 +00485_238,1 +01437_23,11 +01707_44,12 +02054_265,12 +01929_163,0 +02042_147,14 +018772_62,4 +00417_246,6 +00474_134,2 +00009_113,12 +02127_64,17 +00128_5,12 +00438_107,2 +01145_134,12 +00979_106,1 +002752_141,14 +020052_58,11 +00793_243,14 +00490_83,2 +012402_260,4 +00296_24,7 +00840_103,2 +019252_185,8 +01278_154,12 +00709_117,17 +007292_135,14 +01007_288,6 +00709_82,19 +01046_44,7 +02030_68,14 +00841_75,14 +016092_28,17 +00660_260,2 +01331_26,17 +01693_179,0 +010912_117,5 +005882_156,13 +00280_183,4 +00024_61,7 +00848_100,17 +00837_87,11 +000242_37,7 +00528_100,2 +01971_168,12 +00442_2,2 +010652_56,18 +01804_112,7 +000092_142,7 +01901_130,5 +01541_17,5 +00660_114,0 +007212_148,14 +002802_10,14 +021722_238,14 +008402_64,2 +00175_43,1 +013302_254,15 +02172_249,14 +02187_274,16 +00021_145,4 +00503_208,9 +00242_84,4 +01702_37,14 +011082_56,4 +005282_169,0 +01101_73,17 +01622_115,4 +01956_46,15 +00232_96,13 +007222_34,17 +00314_44,2 +01787_36,1 +004672_55,11 +008402_43,2 +00485_6,2 +014882_214,0 +00453_171,1 +008402_293,2 +00730_24,17 +00916_118,2 +00350_191,5 +00021_46,3 +01925_199,8 +00160_286,13 +00450_47,12 +01723_111,15 +00840_280,2 +01901_84,0 +01904_60,2 +019252_281,8 +015972_77,0 +004172_34,17 +00408_19,1 +02027_60,5 +00282_42,17 +01427_44,17 +00065_22,9 +01278_209,2 +000792_197,9 +01087_230,5 +005062_144,2 +000792_81,9 +00041_143,7 +00539_172,1 +002802_38,14 +02088_24,0 +01108_5,14 +006972_79,5 +01956_66,14 +00875_52,2 +018132_148,14 +01698_58,17 +009162_173,2 +00276_19,0 +00474_296,2 +020052_17,11 +00024_4,2 +01578_217,14 +01748_32,0 +00729_59,14 +017232_193,15 +00747_63,4 +01182_32,0 +00840_221,7 +01929_126,0 +00628_84,7 +01509_178,0 +01161_24,17 +01330_217,6 +014972_6,0 +01330_109,9 +019712_62,12 +01330_32,17 +01953_72,12 +00282_78,11 +00867_175,14 +010912_232,12 +01582_20,17 +00546_137,3 +018342_277,8 +00776_18,4 +01901_157,12 +010872_188,5 +00821_68,5 +01092_215,17 +001602_222,11 +01058_20,2 +00841_62,14 +011612_48,17 +001242_138,19 +016882_211,5 +005882_236,2 +00350_55,14 +00242_102,12 +00535_160,0 +01046_37,7 +01331_70,7 +011912_160,2 +005392_96,1 +00490_70,2 +012402_297,4 +00079_249,9 +014232_168,0 +00793_242,14 +017692_24,2 +00159_95,0 +009512_12,14 +01448_22,14 +00660_47,0 +01501_112,14 +008402_210,7 +01925_151,3 +01045_259,4 +00721_180,14 +01184_14,14 +01568_195,2 +01748_60,0 +019412_50,14 +00158_16,14 +00306_76,7 +01448_45,6 +02028_22,15 +00475_128,11 +01165_61,5 +02187_133,16 +009512_73,0 +01158_131,1 +01626_20,2 +02162_48,17 +01925_100,3 +01044_35,4 +009512_132,14 +01240_209,12 +00456_81,4 +00041_169,7 +00539_187,1 +007292_180,14 +00438_297,12 +01971_62,12 +017692_63,9 +017072_10,2 +01409_230,14 +01904_158,2 +017672_48,14 +01692_6,14 +01698_28,17 +01119_98,11 +00607_104,6 +00722_35,17 +02042_29,15 +00768_85,14 +00079_109,15 +00490_110,2 +00287_229,4 +00128_71,4 +007092_51,19 +01941_14,14 +00793_30,14 +010912_206,9 +01045_102,4 +018342_18,14 +021722_17,14 +016982_94,17 +01497_42,2 +00566_138,8 +01361_188,3 +016432_111,14 +01184_20,14 +016932_89,0 +01509_176,0 +012402_80,4 +01901_123,0 +01568_55,12 +01457_54,7 +01707_3,2 +01688_178,5 +00467_14,11 +021722_59,14 +01272_245,12 +01924_101,14 +02172_67,12 +01767_17,14 +011612_267,17 +007182_39,19 +00342_47,17 +01361_13,5 +003122_26,0 +01767_114,14 +004172_54,17 +020572_102,12 +013302_51,9 +018792_104,2 +01134_119,10 +01834_188,8 +00128_266,0 +00783_26,2 +007292_40,14 +01278_20,2 +00660_142,0 +01437_232,11 +01578_213,14 +02049_30,6 +00417_209,17 +01688_162,14 +01924_139,14 +010012_136,5 +017692_276,2 +00697_71,4 +01578_18,14 +00567_299,2 +00485_179,1 +02062_28,2 +010912_73,1 +02127_31,2 +00453_194,9 +02094_107,12 +012282_147,14 +01488_19,1 +007762_16,15 +014272_61,17 +00280_254,14 +011612_200,17 +019412_66,14 +012192_137,14 +00528_135,4 +01509_281,11 +017752_104,12 +011772_103,12 +01953_81,7 +010912_18,12 +00577_23,7 +00981_60,11 +00941_18,0 +01240_36,2 +00674_5,14 +00438_72,12 +00821_72,5 +00128_32,12 +00065_44,1 +02049_137,13 +01626_42,7 +012562_86,2 +004082_178,11 +020052_248,11 +01924_182,14 +02027_45,18 +021622_25,5 +004532_132,9 +019242_241,14 +010012_15,2 +002752_57,14 +01278_236,14 +01977_92,8 +02030_287,16 +02172_173,14 +01804_105,2 +01702_42,14 +001242_103,19 +015972_79,0 +00688_85,4 +019712_232,12 +004172_161,6 +00783_72,17 +017692_165,11 +00539_112,1 +00485_149,13 +01865_51,18 +00730_105,14 +00867_195,14 +012612_35,2 +02028_79,5 +005282_61,2 +01007_130,0 +00413_112,0 +02186_49,5 +00350_107,5 +01925_91,3 +02054_56,2 +009622_9,0 +00660_268,2 +01272_204,4 +020052_113,11 +00539_43,6 +00793_161,14 +00840_271,2 +01045_287,4 +01210_206,6 +00597_54,5 +01882_23,5 +00333_143,2 +01692_48,2 +01092_15,17 +017692_191,2 +017072_29,2 +017072_292,7 +01256_93,2 +010012_85,5 +01219_87,5 +01971_43,2 +01331_56,17 +01971_67,12 +021912_61,7 +01007_112,0 +005392_239,1 +01158_136,12 +00314_95,4 +00681_15,5 +01361_251,15 +02049_226,3 +018122_113,2 +01145_135,12 +02030_280,16 +01763_150,2 +01865_114,18 +01688_140,14 +00509_5,2 +01210_253,9 +006742_37,14 +021912_5,14 +02049_25,6 +00426_162,14 +01488_153,0 +01706_97,2 +019412_34,14 +009162_179,2 +00528_208,0 +02186_57,5 +00350_247,9 +008402_61,2 +02187_236,16 +00772_106,14 +02054_216,12 +004672_6,11 +01145_280,4 +017232_210,15 +01177_86,14 +00124_162,19 +00065_12,18 +016842_7,14 +00242_120,12 +01509_158,0 +016882_26,5 +016932_206,0 +01865_137,14 +00124_209,0 +00485_192,1 +01813_66,11 +00528_0,2 +01904_107,12 +01707_19,2 +02138_33,2 +00935_37,7 +010912_76,1 +005882_33,4 +00677_36,14 +016922_120,1 +01968_91,7 +007292_114,14 +02186_69,5 +01925_208,8 +01929_76,0 +00485_247,1 +01044_248,4 +004532_223,9 +01330_123,18 +005392_105,1 +01283_70,14 +01925_295,8 +01814_18,5 +00275_46,14 +017232_126,15 +01509_156,0 +01094_98,2 +00065_141,1 +01184_65,5 +01490_32,7 +016922_9,14 +007092_122,12 +01184_8,14 +00442_77,2 +00280_93,12 +019622_77,0 +00993_45,14 +000232_124,5 +01977_278,14 +01763_10,2 +00280_90,2 +018132_39,11 +00079_235,9 +00506_109,2 +02021_22,1 +01693_214,0 +01361_240,15 +00490_211,5 +01103_96,14 +01769_41,2 +019242_109,14 +00601_55,6 +01201_9,14 +00519_80,11 +01853_1,14 +014232_171,0 +01219_37,5 +01366_113,17 +00280_218,4 +000092_205,12 +00506_28,2 +01541_59,5 +017072_89,4 +00065_60,1 +02054_162,12 +017072_51,4 +005502_30,18 +017692_71,9 +000792_128,9 +014372_171,11 +01161_181,17 +01941_20,14 +01493_168,1 +00535_219,0 +007292_228,14 +00490_67,2 +018392_158,1 +01578_205,14 +019412_173,14 +01748_19,0 +01707_81,0 +00041_121,7 +01493_86,1 +00485_41,4 +01962_82,0 +02127_248,17 +00390_6,14 +01568_101,12 +005282_203,0 +01497_37,2 +017692_285,2 +007092_281,12 +01161_90,17 +01007_65,0 +01092_216,6 +01256_37,4 +01412_14,4 +00079_102,0 +00566_2,14 +00128_113,12 +01044_90,4 +008372_72,11 +01925_173,8 +01408_231,14 +00519_160,14 +001022_134,16 +00124_65,4 +01408_75,14 +01423_183,0 +00394_108,14 +00490_24,2 +00761_94,14 +01925_82,3 +014272_36,1 +00761_115,14 +00566_250,8 +01045_162,4 +013302_25,12 +01228_227,14 +01366_121,17 +02057_196,3 +020052_165,11 +01366_25,17 +008922_60,2 +006742_30,14 +01814_123,11 +020052_55,11 +02127_111,17 +01953_244,4 +011912_162,14 +01578_150,14 +00722_14,17 +00102_75,16 +017672_287,14 +01045_215,4 +01605_94,5 +00588_129,13 +00709_110,1 +004532_272,9 +01358_46,1 +01228_261,14 +00674_30,14 +00535_67,12 +014122_5,4 +01448_83,6 +00793_270,14 +00342_13,14 +01201_24,5 +01578_208,14 +00079_204,9 +012282_141,14 +02054_248,2 +01278_201,2 +00102_108,16 +00964_98,8 +010012_101,5 +00350_221,9 +00011_49,12 +00228_127,1 +00485_89,1 +01925_291,8 +02021_27,1 +01609_3,17 +01044_192,4 +01972_54,3 +01948_105,13 +02172_7,14 +01924_215,14 +01219_111,5 +01048_22,5 +00546_39,14 +018122_53,4 +001602_66,1 +004082_28,1 +00681_0,14 +00597_4,14 +019042_51,12 +01045_106,4 +017072_1,2 +00159_96,0 +00417_270,1 +004082_82,11 +00065_255,12 +00079_255,9 +001602_68,11 +012562_21,4 +00539_280,0 +00088_71,5 +005282_111,2 +000092_267,0 +014372_261,11 +01813_101,11 +01904_94,2 +004172_174,6 +01092_221,6 +01568_196,2 +00287_77,15 +00065_53,1 +01909_78,12 +02005_265,11 +00793_97,14 +00509_67,2 +02057_168,3 +01834_209,8 +00011_50,12 +01161_173,17 +019042_172,12 +00546_175,14 +02027_35,18 +02094_145,2 +00111_73,7 +01278_153,12 +01044_227,2 +00539_219,1 +012722_4,2 +00607_38,11 +01968_115,14 +02054_38,2 +02162_7,14 +011082_16,14 +01763_143,2 +01103_5,14 +00314_64,12 +00088_68,5 +01423_189,0 +00747_47,4 +01723_257,15 +00730_6,14 +01972_240,6 +00306_34,7 +02012_119,2 +01048_64,5 +018342_294,8 +00282_80,11 +02094_48,4 +00772_16,14 +013302_214,6 +00158_102,11 +01834_72,8 +00021_113,4 +010872_43,14 +005062_74,6 +019252_119,3 +00041_61,7 +01636_136,14 +00417_164,6 +008252_68,12 +00242_217,12 +00342_29,17 +007762_33,14 +017672_26,14 +01493_137,1 +02186_44,5 +00124_198,0 +021462_18,14 +01723_284,15 +01924_2,14 +018342_158,8 +018132_134,11 +00578_1,14 +01330_215,6 +00841_42,4 +00228_81,17 +012612_48,2 +00840_62,2 +01767_87,14 +00456_130,12 +02186_72,5 +008372_140,11 +005092_161,2 +007222_107,17 +00102_50,16 +00128_51,4 +00408_125,13 +01240_196,2 +01177_118,14 +00450_66,15 +00747_58,4 +00588_69,13 +00962_47,13 +016882_299,2 +01219_63,5 +00408_192,11 +00333_14,2 +00181_137,0 +01240_298,4 +01839_19,2 +00438_248,2 +01877_84,4 +01145_285,4 +000792_45,15 +012722_246,12 +02172_113,14 +00382_90,11 +01909_190,2 +00009_109,12 +00503_158,5 +00408_233,11 +00546_93,3 +007832_248,5 +01161_39,17 +010912_6,2 +019712_30,2 +018342_148,8 +020572_0,2 +005882_44,15 +01971_66,12 +00709_84,19 +012722_53,2 +01161_87,17 +00453_180,9 +01971_254,12 +00546_63,15 +01767_46,14 +02094_90,4 +00417_144,7 +01240_45,2 +005392_38,6 +00009_281,12 +02042_127,0 +014372_212,11 +01366_76,17 +014882_236,5 +012402_60,12 +02054_15,2 +00175_27,13 +016052_71,5 +01901_185,14 +012562_5,14 +00892_50,0 +01361_115,3 +021772_33,4 +018122_97,2 +014232_220,0 +01330_139,6 +004082_221,11 +02005_225,11 +01948_183,13 +00079_69,9 +00158_165,5 +01228_28,14 +002752_56,14 +00453_144,9 +01813_96,11 +011612_56,17 +01145_266,4 +00438_219,4 +01706_162,2 +01165_63,5 +01087_187,5 +010012_38,12 +01814_180,11 +00628_121,7 +00456_87,14 +001022_92,16 +017232_59,15 +011612_104,17 +00280_9,14 +02088_6,0 +004172_284,1 +00079_51,17 +02187_175,16 +00783_47,2 +01272_44,2 +00783_59,2 +000792_195,9 +01437_76,11 +00883_9,11 +00232_71,13 +00426_122,0 +00577_44,7 +00566_31,12 +00124_163,19 +01605_259,11 +000252_50,17 +016922_122,1 +012282_118,14 +02138_194,13 +021622_24,12 +008482_79,17 +00280_242,14 +00941_30,4 +00503_172,5 +014372_147,11 +02054_14,2 +020052_26,11 +01228_277,14 +00232_178,14 +018342_204,8 +01351_101,7 +00729_209,14 +01048_5,2 +01408_284,14 +012282_116,14 +00021_11,5 +011612_92,17 +01813_18,11 +00025_54,17 +00916_54,2 +00453_273,9 +01568_237,2 +017232_185,15 +02162_121,18 +002752_153,14 +01361_204,3 +01228_64,12 +01962_0,0 +00475_81,9 +00382_91,11 +016052_217,11 +009642_141,8 +01953_238,4 +01693_44,5 +00783_135,12 +00761_206,3 +00660_75,0 +016052_193,11 +019042_118,4 +00588_145,13 +009162_106,2 +00474_257,2 +005882_20,12 +01165_56,5 +02057_5,2 +00413_64,0 +01706_42,2 +007212_15,14 +00875_90,2 +01707_212,0 +017232_11,4 +01877_60,4 +020052_59,11 +01431_14,11 +00314_106,4 +012562_67,12 +016932_31,17 +01409_101,0 +014232_130,0 +01191_115,7 +00793_176,14 +00160_122,11 +00941_31,4 +00474_156,2 +004082_297,11 +01001_117,5 +00079_114,9 +00276_80,11 +01330_119,1 +00867_77,5 +00158_27,14 +00242_136,2 +01007_251,15 +00674_139,14 +01094_57,11 +00242_250,4 +00578_38,17 +00722_20,17 +000232_63,3 +01977_126,8 +00009_182,2 +01331_60,17 +01541_0,17 +00552_10,2 +017072_172,4 +00314_240,12 +01101_78,6 +00505_245,14 +01953_75,12 +02127_214,17 +021462_71,18 +01707_147,4 +01925_144,3 +00729_89,14 +02177_73,14 +01091_142,5 +004672_42,11 +00509_90,2 +02030_261,16 +007182_122,19 +001112_35,17 +02186_48,5 +01134_3,16 +00721_146,14 +01094_23,5 +01853_88,0 +014882_86,13 +01493_88,1 +01688_239,5 +01423_261,2 +00688_0,2 +005092_70,12 +01901_55,0 +00546_51,14 +00296_37,7 +004082_21,1 +01582_22,17 +01582_41,7 +00883_53,11 +00450_4,14 +00242_213,12 +00438_132,2 +01723_74,15 +00111_13,14 +010912_13,2 +00563_59,9 +01812_97,2 +02030_183,16 +00703_91,11 +00964_141,8 +01191_12,14 +016882_158,14 +00350_182,9 +01091_82,16 +01210_71,17 +01972_167,13 +02021_113,14 +01977_26,2 +01578_38,14 +01877_269,4 +00615_148,1 +02191_28,7 +00413_102,0 +016932_281,0 +00951_89,0 +02054_69,4 +00296_59,7 +02049_159,13 +00450_188,14 +00721_207,14 +02162_107,1 +018392_89,11 +01814_119,11 +00528_154,0 +001602_220,11 +00102_298,16 +00158_112,11 +01929_178,0 +01509_118,0 +009512_65,0 +01046_10,14 +009162_101,2 +00474_39,12 +00964_128,8 +010912_157,5 +009162_215,2 +00124_53,0 +01688_250,5 +007222_102,17 +00426_148,0 +01161_19,17 +020572_180,3 +014282_15,12 +00660_221,0 +01103_106,14 +00867_159,0 +01597_107,2 +01804_76,12 +00181_30,0 +00546_99,3 +010942_21,5 +01924_242,14 +00160_64,1 +01210_236,9 +00506_5,2 +01925_134,3 +013302_218,6 +01941_278,14 +019242_1,14 +00102_271,16 +009162_161,2 +016932_41,2 +01541_51,5 +01763_279,2 +01501_90,14 +01087_22,14 +00160_281,13 +01408_253,14 +00160_24,2 +01582_30,17 +012722_225,4 +018652_53,18 +008402_23,2 +01145_273,4 +017232_216,15 +014072_11,2 +00718_31,19 +02127_42,2 +01272_139,4 +01623_74,11 +02186_55,5 +00892_93,2 +00916_107,2 +003122_37,0 +018652_138,14 +00505_48,2 +00935_51,7 +00546_94,3 +00342_81,17 +00242_97,12 +00474_221,2 +016432_53,14 +02054_173,2 +01605_16,14 +01423_43,2 +02062_134,4 +02162_43,12 +01941_113,14 +00841_41,4 +02054_291,4 +00837_164,0 +00306_5,14 +009162_10,2 +01706_263,2 +000092_75,0 +01688_77,5 +00503_186,9 +02187_168,16 +005882_230,2 +01361_199,3 +00382_33,7 +00761_211,3 +01904_66,2 +01330_206,9 +00009_55,12 +00442_156,0 +01333_23,2 +00993_61,6 +01240_285,12 +005502_34,18 +01437_275,11 +00312_30,0 +007832_194,12 +00408_133,13 +010912_234,12 +012722_194,2 +00721_208,14 +00761_67,14 +01044_163,12 +00128_17,12 +00158_282,5 +005882_108,13 +01767_191,14 +002752_110,14 +019412_35,14 +00660_80,0 +001112_75,14 +00892_73,2 +01775_132,12 +00688_68,4 +00467_15,11 +01007_95,0 +00474_67,2 +012192_46,5 +00009_98,0 +01769_122,0 +00519_10,14 +019622_15,0 +00490_167,2 +009622_22,0 +00934_37,0 +01087_43,14 +01925_266,8 +00776_88,14 +017072_272,7 +012402_174,12 +02186_3,14 +016932_74,0 +00438_140,2 +01509_182,0 +01853_20,5 +01865_136,14 +000242_1,2 +00124_4,4 +01201_100,14 +00577_96,7 +02191_106,7 +01814_226,5 +00772_1,14 +01145_210,4 +01707_108,1 +01839_136,1 +009642_18,14 +00023_151,6 +01882_69,5 +00539_189,1 +00597_12,14 +000792_16,9 +004082_109,1 +01101_90,1 +00964_79,3 +01182_34,11 +01228_78,14 +012722_87,2 +012282_105,14 +01605_117,5 +017072_118,1 +000792_177,9 +01366_2,14 +01623_113,14 +01407_40,2 +012562_84,2 +009642_21,14 +01879_88,4 +019592_65,6 +017672_196,14 +00276_82,11 +017022_67,14 +014232_164,0 +009642_201,8 +00519_62,17 +00546_61,15 +013302_116,1 +01909_85,12 +012282_108,14 +02094_91,4 +00837_160,11 +008372_68,11 +02138_276,14 +01763_237,2 +012402_103,12 +00408_163,11 +00552_69,7 +00721_252,14 +02138_135,13 +001602_279,13 +014372_164,11 +002802_20,14 +00546_70,3 +000242_76,7 +014882_26,1 +01707_55,0 +00566_249,8 +01813_89,11 +010872_19,14 +01431_286,11 +01001_3,2 +00563_116,2 +010912_169,0 +00539_298,1 +00506_123,2 +01272_199,4 +00783_267,5 +01457_40,7 +016932_94,0 +00867_1,14 +00503_155,9 +019592_29,6 +019242_192,14 +021722_27,14 +02030_252,16 +01278_38,2 +01045_179,4 +01953_186,4 +01977_179,8 +016932_242,0 +01087_252,5 +014882_43,0 +002752_99,14 +012192_49,5 +01044_11,4 +00503_66,6 +00456_17,14 +017672_136,12 +010912_252,2 +01763_130,12 +01490_40,7 +01501_21,4 +01240_254,2 +01201_52,11 +00688_95,2 +008252_19,2 +00837_118,11 +00505_236,14 +018652_102,18 +00242_44,12 +01201_33,11 +021722_69,12 +010912_5,2 +00065_221,12 +021722_244,14 +012722_200,4 +004082_158,11 +00793_71,14 +01158_104,12 +00102_203,16 +01351_146,7 +00535_182,5 +010912_132,5 +00350_93,5 +00867_89,17 +014272_111,17 +01643_10,14 +01240_63,12 +00181_85,0 +02027_91,14 +01929_149,0 +01706_105,2 +01925_185,8 +01134_253,10 +004532_22,9 +00601_97,0 +01924_116,14 +01228_69,14 +00566_64,8 +007212_198,14 +01044_288,4 +00768_80,7 +00688_67,4 +012722_3,2 +01044_182,4 +00021_15,5 +00065_190,1 +01605_138,5 +00601_128,14 +014282_29,14 +00450_124,13 +01087_243,5 +010012_262,5 +00312_26,0 +01278_128,4 +00490_79,2 +02138_217,13 +00442_188,4 +01723_39,15 +01924_91,14 +00350_184,9 +00703_65,11 +01210_225,9 +005282_192,0 +01636_99,0 +004082_44,1 +018772_152,4 +014372_64,11 +014122_41,0 +001602_109,11 +017672_273,14 +011082_12,14 +012192_103,5 +00567_24,2 +007092_202,19 +00660_3,14 +013332_6,0 +008402_53,2 +007092_191,19 +01814_126,11 +00158_271,5 +01877_189,4 +00509_154,2 +01191_37,14 +00242_230,12 +017232_98,15 +010912_270,14 +012402_164,12 +02030_62,14 +00506_80,6 +01228_145,14 +004672_31,11 +000232_70,3 +00474_183,2 +01228_269,14 +007182_125,19 +01191_145,14 +01103_110,14 +01361_10,5 +02057_22,2 +01092_102,17 +01702_45,14 +01622_45,0 +018342_78,8 +018342_296,8 +01865_88,18 +00892_102,2 +01045_234,4 +016882_114,5 +01787_27,1 +02049_192,13 +007212_8,14 +01219_99,5 +01971_61,12 +02172_108,12 +00413_143,0 +01210_202,6 +00964_67,3 +005502_60,18 +00442_226,4 +00916_261,5 +020572_170,3 +017692_277,2 +019252_246,8 +01692_79,1 +013302_169,15 +014372_256,11 +01330_29,12 +00935_76,7 +01191_84,7 +017482_67,0 +02138_32,2 +01144_176,2 +01692_71,1 +01177_53,4 +02187_235,16 +01007_261,6 +000232_24,2 +000232_38,4 +021722_172,14 +005502_84,18 +00160_188,11 +01044_142,4 +00021_149,2 +019042_71,12 +005282_174,0 +01977_55,14 +01924_6,14 +017672_115,14 +019412_67,14 +00306_2,14 +01804_5,12 +00181_82,0 +00941_46,4 +01145_165,4 +02062_88,4 +01971_37,2 +018772_205,4 +019412_30,14 +00474_254,2 +02094_128,4 +020052_74,11 +01312_40,7 +00730_79,18 +01490_23,7 +00772_23,7 +01427_118,2 +00041_99,12 +00964_82,3 +014122_21,0 +00566_178,8 +00535_227,5 +021462_115,18 +00228_122,9 +01941_152,14 +01706_109,2 +00841_89,14 +01814_164,11 +00382_110,19 +00474_249,2 +01144_57,9 +01488_173,0 +01161_226,17 +01748_64,0 +00722_83,17 +00065_176,1 +009642_249,4 +012562_48,4 +006092_55,11 +00413_116,0 +01108_9,14 +00350_53,14 +02028_81,5 +01834_168,8 +00450_86,13 +01953_97,4 +00124_39,4 +01707_98,0 +02172_228,14 +005062_79,6 +008922_11,0 +00776_68,14 +01191_123,7 +01101_75,17 +00242_17,2 +01877_25,4 +006742_38,14 +000792_56,9 +005882_188,4 +007092_268,1 +00232_98,13 +007212_14,14 +019712_230,2 +019252_19,14 +00408_250,1 +00546_156,15 +016882_49,5 +01497_4,5 +02028_90,2 +01409_141,0 +01693_42,2 +01959_26,6 +019252_188,8 +011772_31,4 +01693_31,17 +00628_58,7 +00552_47,7 +011912_149,14 +00993_189,7 +017072_288,7 +01812_95,2 +00175_85,2 +01924_24,14 +01408_174,14 +01065_107,5 +00088_63,5 +005882_70,13 +00065_259,12 +00228_162,9 +01361_68,4 +015972_49,0 +010942_94,5 +01971_139,12 +01698_20,17 +000092_208,12 +014232_175,0 +01684_18,14 +02186_108,14 +021722_211,14 +013302_157,9 +008832_47,11 +00747_71,4 +02172_137,12 +021912_110,14 +01044_291,4 +016052_48,14 +00528_92,2 +00539_65,1 +019242_248,14 +016982_95,17 +000232_127,6 +01134_26,17 +01568_254,2 +01941_163,14 +008402_236,2 +01643_102,14 +01210_2,17 +00566_292,8 +012612_42,2 +00503_31,6 +01812_33,4 +00280_139,12 +018792_25,2 +01692_45,2 +01431_178,11 +00102_52,16 +02094_13,4 +00102_33,0 +00776_92,14 +01087_117,5 +014372_260,11 +00065_295,1 +00442_228,4 +01702_15,14 +00539_92,1 +002802_9,14 +01643_67,14 +018792_27,2 +01693_202,0 +01371_61,14 +000092_51,12 +02012_15,14 +01312_42,7 +00350_293,9 +00408_121,13 +00729_272,14 +019252_202,8 +00296_0,14 +01272_146,2 +00840_143,7 +01044_96,4 +008372_85,11 +016092_30,17 +013302_239,8 +01804_82,12 +017072_232,0 +00563_31,4 +00597_35,5 +01210_291,9 +00509_4,2 +01693_271,0 +011612_190,17 +01812_51,4 +01210_192,6 +008922_61,2 +00506_98,2 +019252_124,3 +01972_183,13 +01568_108,12 +01091_206,9 +00550_60,18 +007832_91,17 +01161_293,2 +00567_1,14 +02062_160,4 +00065_269,12 +004172_36,17 +01228_166,14 +01134_144,10 +01283_18,2 +00023_15,2 +01509_136,0 +00783_64,2 +00474_131,2 +008402_139,2 +008482_89,17 +00916_196,2 +01278_56,2 +00964_138,8 +007832_37,2 +009512_119,0 +02028_34,3 +01971_289,12 +014282_18,4 +014272_110,9 +018392_149,1 +00607_27,11 +00916_227,2 +01331_59,17 +00563_103,2 +012282_49,4 +021772_58,12 +02127_268,17 +01977_66,6 +01408_135,14 +00485_271,12 +006092_51,11 +01091_241,2 +00793_277,2 +01909_199,12 +00660_9,14 +00528_166,0 +005092_152,2 +00021_129,12 +02187_257,16 +00546_189,14 +00567_190,5 +018392_146,1 +00578_81,17 +00474_24,2 +01283_56,2 +016092_20,17 +01962_6,0 +007222_82,17 +01497_15,0 +01240_159,2 +000792_68,9 +02042_116,0 +02054_170,2 +017672_170,14 +01312_89,7 +02187_297,16 +01941_169,14 +00023_91,0 +01909_61,2 +002802_88,2 +00720_20,0 +018342_222,8 +01261_60,2 +01091_36,12 +01972_135,3 +02054_8,2 +012722_202,12 +01431_255,11 +01045_108,4 +00628_37,7 +01158_146,4 +02005_64,11 +01981_3,14 +01001_126,5 +01201_115,14 +019412_23,14 +00578_104,12 +00160_255,11 +00552_41,7 +01877_46,4 +00009_129,2 +012402_40,2 +00088_88,14 +01723_264,15 +020572_174,3 +01001_219,5 +019252_160,3 +007092_61,19 +01044_232,12 +00314_298,0 +01101_76,17 +01312_61,7 +00528_128,4 +00009_192,7 +01001_1,2 +010012_214,5 +00417_248,6 +012612_21,2 +005882_27,12 +00011_28,1 +01219_2,14 +00677_58,4 +00009_146,7 +009642_215,3 +007292_236,14 +00566_37,6 +012722_141,4 +00519_54,17 +00721_152,4 +017672_109,14 +02146_88,18 +021462_103,18 +01001_292,5 +00111_4,14 +007212_44,14 +008402_117,7 +01144_139,12 +01775_129,12 +019622_83,0 +00242_210,4 +019412_250,14 +00577_115,14 +00674_128,14 +00941_9,19 +01351_17,2 +016052_41,14 +00730_104,14 +01330_184,3 +00660_6,14 +01707_204,0 +004172_52,17 +021722_4,14 +00456_41,4 +01767_174,14 +00709_137,4 +009642_294,14 +003062_3,14 +005882_6,2 +02057_148,3 +00417_288,11 +01001_103,5 +021912_77,7 +01145_114,12 +00442_35,14 +018652_1,14 +01493_270,1 +01706_141,2 +00023_60,3 +00703_3,14 +014372_243,11 +017692_222,9 +01240_135,12 +00088_62,5 +016432_23,12 +00567_215,5 +00979_75,1 +018772_161,4 +00718_117,19 +00916_33,2 +01219_116,5 +00964_9,14 +01723_144,15 +00729_63,14 +00242_196,12 +01219_130,14 +01977_35,2 +02057_181,3 +01962_122,0 +01693_210,0 +019042_75,12 +00768_0,14 +004532_240,9 +00280_221,2 +01834_32,6 +02012_43,17 +01134_95,10 +00009_89,0 +000792_237,9 +018342_299,8 +00821_19,14 +01361_37,2 +005062_93,4 +00275_71,14 +00287_104,4 +00837_95,11 +019242_246,14 +00413_104,0 +01272_221,4 +019712_13,2 +02054_12,2 +00837_127,11 +00490_225,5 +00503_74,6 +01366_134,5 +00783_214,2 +00280_212,12 +014122_48,0 +01962_78,0 +008482_42,17 +00426_17,0 +02162_110,1 +010942_64,11 +01087_104,5 +016932_115,0 +01044_240,12 +00916_99,2 +002802_134,12 +001602_237,11 +00314_20,2 +00519_33,7 +019712_208,2 +01767_130,14 +01941_49,14 +005062_9,2 +02127_213,17 +01409_71,0 +01775_88,2 +016922_115,1 +021622_68,17 +00703_80,11 +00721_63,14 +01184_5,14 +00935_61,7 +007092_297,12 +004082_248,11 +01409_60,4 +01763_56,12 +01408_299,14 +01161_36,17 +02054_228,14 +00456_147,14 +014122_37,0 +01366_143,5 +00721_2,14 +02094_95,2 +00242_258,4 +01240_250,12 +00503_14,6 +01351_48,17 +02030_207,16 +00079_106,0 +00916_119,2 +00490_5,2 +01437_26,11 +02005_177,11 +00232_154,14 +01158_150,4 +016092_33,17 +01488_102,13 +00111_75,14 +007222_127,17 +010912_61,1 +00535_42,2 +012562_60,4 +00709_193,19 +01493_257,9 +009352_103,7 +02057_162,3 +014282_47,14 +01091_83,16 +018342_23,14 +02054_243,4 +00228_180,9 +00867_146,0 +00314_22,2 +00124_157,19 +01091_78,16 +01256_10,14 +01968_47,7 +011772_39,14 +00175_34,13 +00275_7,14 +00867_196,14 +014272_125,14 +01804_59,4 +01044_124,12 +00688_106,2 +001022_31,0 +004082_61,1 +01707_226,0 +02030_134,16 +010912_245,2 +013712_27,14 +00567_30,2 +01488_42,0 +01330_153,18 +01901_46,5 +00916_180,2 +005392_266,1 +00840_158,7 +01431_35,5 +01643_4,14 +01092_271,12 +00065_21,9 +017232_273,15 +021772_9,4 +012562_14,14 +01748_79,0 +01684_10,14 +00840_283,2 +005392_164,17 +017232_237,15 +01103_31,17 +00242_252,4 +01693_219,0 +01839_146,1 +00280_129,12 +00442_58,2 +01501_43,4 +009622_1,0 +00158_132,5 +01839_187,1 +02062_14,2 +00506_88,4 +019042_121,2 +00228_134,9 +02138_155,13 +019712_183,4 +009162_138,2 +01210_248,9 +01901_116,5 +009162_227,2 +00242_87,4 +00175_61,0 +01330_190,13 +01901_44,0 +02021_83,11 +003062_64,7 +01707_205,0 +019412_218,14 +021462_10,14 +008402_11,2 +00408_224,11 +00350_109,9 +00124_49,0 +01812_28,4 +020572_193,3 +008252_3,12 +00519_142,7 +00228_107,11 +001022_50,16 +00503_109,1 +00442_133,4 +00408_244,11 +00413_21,4 +01437_180,11 +01941_234,14 +012192_27,5 +01177_82,14 +01692_59,5 +019712_272,4 +00577_5,14 +02028_109,2 +01001_49,2 +01500_36,19 +01702_70,14 +01929_129,0 +02187_243,16 +020572_115,2 +00181_12,2 +01409_215,14 +01839_145,1 +00474_180,2 +007292_81,14 +017672_226,12 +01698_120,14 +01278_117,12 +005392_154,17 +00721_122,14 +00021_20,5 +00535_74,12 +01272_57,4 +016982_60,17 +021912_13,7 +019042_39,12 +02005_40,11 +010912_246,2 +014072_25,5 +011912_131,7 +00962_11,0 +011912_184,14 +00722_90,17 +01834_99,8 +00566_126,8 +019042_76,12 +02162_96,6 +02127_89,17 +00993_244,14 +02049_178,13 +01693_108,0 +00128_281,12 +014282_36,14 +007292_276,14 +00475_191,1 +00128_259,12 +00453_2,0 +02021_103,14 +014272_14,14 +009162_62,2 +01904_148,4 +00840_11,2 +01904_98,4 +01834_216,8 +01693_137,0 +010942_89,11 +00505_102,12 +00485_75,1 +00867_110,0 +013712_18,4 +00721_46,14 +01145_0,2 +01408_7,14 +01366_150,2 +01191_5,14 +00024_79,7 +018122_34,4 +00535_107,12 +00535_202,0 +02172_178,14 +01968_3,14 +00009_107,12 +01145_1,2 +005882_7,2 +01977_289,14 +02187_287,16 +008482_71,17 +00709_247,19 +01261_48,2 +01283_8,14 +00578_120,14 +014972_2,5 +00276_126,14 +01065_87,18 +01094_43,11 +02057_54,2 +00934_23,7 +01044_209,12 +00413_82,0 +014232_199,0 +01045_210,4 +00474_114,2 +00722_73,17 +00287_53,15 +010012_36,12 +000792_226,9 +01201_76,11 +01119_80,11 +02049_100,13 +016932_260,0 +017692_103,2 +007832_136,12 +019412_270,14 +01763_241,2 +00615_142,11 +00490_56,2 +01488_74,0 +016982_93,17 +01763_66,2 +00417_191,17 +01158_148,4 +012402_167,12 +017482_73,0 +00660_54,0 +00426_57,0 +01941_154,14 +01165_69,5 +002802_95,12 +01431_166,11 +017232_285,15 +00821_90,5 +01812_65,4 +00490_13,2 +01001_208,5 +00957_48,4 +020572_126,6 +01278_62,12 +01865_52,18 +019242_16,14 +000242_3,2 +018392_40,5 +008372_87,11 +00793_23,14 +01001_88,5 +009162_94,2 +01045_57,4 +00688_81,4 +02162_73,17 +008482_15,14 +02012_39,17 +00181_100,0 +01882_30,11 +00761_117,14 +01494_15,7 +01312_71,7 +00552_64,7 +01541_27,5 +00287_195,4 +001022_127,16 +01094_106,14 +007292_55,14 +01049_57,7 +019412_259,14 +02127_218,17 +00242_233,12 +00275_142,14 +00506_79,6 +021462_66,18 +01448_24,0 +00228_268,11 +01366_75,17 +01501_29,0 +01219_48,5 +01330_137,6 +02030_122,16 +00793_155,14 +01578_60,14 +019412_24,14 +018122_82,2 +01839_5,14 +014282_41,4 +008832_26,11 +01272_189,2 +014882_74,0 +014372_5,11 +01351_139,7 +00474_255,2 +00674_114,14 +00768_40,7 +006092_54,11 +019242_123,14 +00442_163,0 +02172_26,14 +02187_173,16 +01437_71,11 +016922_112,1 +00718_84,19 +01879_90,12 +005092_232,2 +01161_98,17 +01087_285,5 +01191_56,7 +014232_209,0 +021722_161,14 +00825_62,12 +013302_92,9 +008372_166,0 +02172_198,4 +005392_153,17 +00228_227,14 +00509_126,2 +00079_225,17 +00546_165,14 +00021_73,4 +01693_122,0 +02049_172,13 +00485_36,2 +00840_38,2 +018392_4,14 +00709_145,19 +017072_229,0 +02187_52,16 +01493_26,11 +00490_121,12 +00474_195,2 +012282_96,14 +01904_168,12 +00158_69,2 +00333_93,0 +008482_125,17 +00577_98,7 +00485_78,1 +00390_98,5 +00021_87,2 +01228_285,14 +01423_80,0 +00935_0,14 +000232_111,5 +009162_177,2 +01228_119,14 +01409_237,14 +00276_70,11 +019252_73,3 +00761_228,3 +00721_89,14 +01191_150,14 +014232_65,2 +00729_282,14 +00102_238,16 +01228_241,14 +00312_27,0 +02005_268,11 +01767_282,14 +00296_98,14 +00475_242,9 +01688_292,2 +00941_55,0 +02030_92,16 +01582_79,14 +004172_277,1 +012282_55,2 +001022_227,16 +017072_144,1 +007222_17,17 +01007_223,0 +001602_208,11 +01775_13,2 +00417_77,17 +012402_115,4 +01283_10,14 +00841_40,4 +02187_82,16 +004172_132,17 +01001_37,12 +00981_112,14 +01048_37,5 +00442_176,4 +00503_262,6 +01623_57,11 +006972_5,2 +020572_183,3 +00979_59,1 +01971_28,2 +01688_229,5 +016052_150,5 +00951_136,14 +01706_197,2 +01091_265,14 +01767_177,14 +005502_81,18 +00505_88,12 +00009_282,4 +00181_37,0 +01001_52,2 +00601_57,6 +00417_211,17 +01877_287,4 +00111_42,17 +00175_28,13 +015972_5,14 +00350_284,9 +007222_31,17 +019622_73,0 +002752_114,14 +00181_90,0 +01839_64,11 +01877_119,4 +01924_163,14 +01692_140,14 +016842_9,14 +00509_14,12 +00490_223,5 +00282_97,5 +001242_235,0 +014372_100,11 +01278_92,4 +00841_51,4 +00490_45,2 +01693_189,0 +007292_132,14 +00079_223,15 +007292_233,14 +004532_254,9 +00485_0,2 +00964_163,8 +01094_93,5 +011612_283,17 +019042_82,12 +004532_224,9 +01707_277,7 +005092_225,2 +00158_47,14 +016052_219,11 +002752_159,14 +00721_191,14 +00453_137,9 +00615_105,11 +00821_83,5 +01693_216,0 +00979_95,1 +02187_147,16 +00292_39,11 +010012_116,5 +00935_41,7 +014072_4,4 +01191_78,7 +012282_32,14 +02054_269,12 +017692_1,2 +00577_88,7 +01763_261,12 +00505_94,12 +009352_33,7 +01101_99,1 +010012_195,5 +00883_30,11 +00538_118,17 +01134_174,10 +01161_172,17 +01428_76,14 +016052_298,11 +01191_50,2 +013712_14,12 +01361_62,4 +020052_108,11 +012562_56,4 +01219_0,14 +014372_73,11 +00475_157,9 +01925_106,3 +007182_79,19 +00825_6,2 +012282_73,14 +017672_231,14 +01775_139,12 +01775_57,2 +005392_28,6 +01578_206,14 +01605_79,5 +021462_5,14 +01706_46,2 +01901_85,0 +000252_72,17 +010012_37,12 +00567_81,2 +01134_245,10 +00848_97,17 +014372_65,11 +00024_13,2 +01605_42,14 +00228_45,11 +01065_17,1 +00837_111,11 +002752_48,14 +00102_178,16 +01769_231,9 +017072_227,0 +00102_73,16 +00426_67,0 +010652_9,5 +01568_206,2 +012282_22,14 +004532_146,9 +01723_36,15 +00314_96,4 +01493_264,1 +00474_213,2 +01948_139,13 +021772_55,12 +01948_18,14 +00462_201,14 +01182_104,14 +01977_201,8 +00615_78,11 +01240_16,2 +010872_59,14 +01829_39,4 +02030_169,16 +00474_149,2 +01941_206,14 +01723_5,4 +00408_129,13 +01865_13,5 +00175_39,13 +001242_115,19 +02186_78,5 +014072_1,4 +00935_81,7 +000232_27,2 +011772_85,14 +00475_299,9 +00382_72,17 +016052_289,11 +00426_12,4 +01494_61,7 +01091_238,2 +00503_255,9 +01977_221,8 +019252_110,3 +00509_219,12 +00296_70,7 +00282_12,14 +02054_1,2 +002802_232,12 +00964_195,8 +01865_101,18 +01145_212,4 +01971_18,2 +01278_61,12 +01509_38,0 +01118_62,7 +018392_120,11 +010872_204,5 +00535_138,6 +02062_4,2 +00228_269,11 +01981_39,5 +018342_154,8 +00314_244,4 +021722_119,4 +00892_97,2 +004532_1,0 +005062_107,2 +000252_74,17 +00079_264,1 +01408_182,14 +02030_109,16 +019252_59,6 +01924_204,14 +004532_206,9 +014372_172,11 +019712_196,12 +01361_84,4 +01161_111,17 +00009_34,0 +00729_111,14 +00474_219,2 +00552_63,7 +01048_57,5 +00408_296,11 +01256_71,12 +019412_13,14 +01688_202,5 +01763_211,12 +02177_17,4 +01723_50,15 +01748_38,0 +00688_57,4 +01877_52,4 +017072_67,0 +01941_279,14 +01924_69,14 +02030_146,16 +010652_8,5 +001602_32,11 +00783_74,17 +00607_53,6 +01007_72,0 +01707_199,0 +00350_291,9 +019252_26,12 +00660_180,0 +00128_175,0 +01409_192,14 +01007_279,12 +005062_35,2 +001242_11,4 +00475_34,5 +01408_92,14 +019412_242,14 +00761_18,14 +00615_152,11 +017692_8,2 +00721_13,14 +005062_81,6 +01108_72,14 +02187_1,11 +01092_213,17 +01971_243,12 +01578_139,14 +01692_119,1 +00065_38,9 +001112_30,17 +01493_93,1 +00312_41,0 +019242_156,14 +00160_257,13 +00102_188,16 +01929_1,14 +00475_184,1 +00588_100,13 +01427_64,17 +01228_59,12 +02186_24,5 +016882_145,14 +01219_126,5 +01437_83,11 +01087_128,5 +00837_13,0 +00793_130,14 +02054_107,14 +00528_222,0 +019712_90,12 +01877_78,4 +00597_49,5 +00426_107,0 +01723_44,15 +01361_47,12 +007762_47,14 +02030_292,16 +02062_53,2 +01763_198,4 +00941_37,0 +01407_55,12 +01568_114,2 +00729_8,14 +00772_75,7 +00892_23,0 +01045_41,2 +00333_112,4 +00660_255,14 +01412_58,0 +012282_8,14 +009162_123,2 +01787_9,13 +01493_248,1 +00601_8,14 +00567_186,5 +00688_22,2 +01361_207,3 +01103_7,14 +01134_297,10 +01941_112,14 +021722_164,14 +01929_43,0 +01493_66,1 +00181_109,0 +00848_156,14 +00563_83,6 +01804_20,4 +000252_28,17 +018792_81,12 +00413_212,14 +00287_200,15 +01763_196,4 +012282_294,14 +017482_37,0 +01723_62,15 +01240_237,12 +019242_61,14 +012282_114,14 +00718_116,19 +00490_23,2 +00721_257,14 +00413_166,0 +01091_93,0 +00280_204,12 +01597_16,0 +01408_26,14 +01623_139,14 +007292_271,14 +01312_78,7 +014882_217,0 +00450_36,14 +01351_57,7 +01568_130,2 +01272_176,12 +018772_240,4 +007092_153,5 +00721_60,2 +01688_68,5 +00456_98,12 +00539_8,6 +00350_146,5 +00485_102,1 +01643_2,14 +007092_146,19 +006972_85,4 +01210_292,9 +00442_18,14 +010872_237,5 +01622_62,14 +01427_100,17 +01707_30,2 +01431_261,11 +000792_122,9 +005282_144,4 +01094_26,11 +00538_99,17 +019242_42,14 +01767_72,14 +021622_62,7 +01177_4,14 +02054_281,14 +013302_209,9 +00450_22,14 +01409_200,14 +01692_72,1 +01219_10,14 +020052_111,11 +00916_230,2 +01278_39,2 +014372_17,11 +00588_141,13 +01330_56,18 +01494_66,7 +00079_159,15 +00964_237,15 +008482_56,17 +01977_1,14 +00539_121,1 +016432_4,14 +01351_52,7 +00408_33,1 +00535_195,5 +01145_208,4 +019412_93,14 +002752_76,14 +014122_76,0 +01161_216,17 +01278_149,12 +018772_0,4 +00840_191,7 +016932_187,0 +00021_19,5 +01812_80,2 +00563_40,12 +005062_99,2 +01488_167,13 +01182_45,11 +018772_142,4 +00563_92,4 +00721_80,4 +00041_103,12 +01182_50,0 +00350_144,5 +01834_27,6 +00079_182,9 +01877_233,4 +00450_43,12 +00567_22,2 +01605_72,5 +017692_50,5 +00158_131,5 +00011_18,0 +00601_111,0 +001602_33,11 +01165_8,14 +00566_24,14 +00065_211,12 +00892_100,2 +017232_22,15 +014372_132,11 +021462_75,18 +011912_94,7 +00951_97,0 +00475_262,9 +020572_185,3 +011082_63,14 +01834_74,8 +02138_253,14 +016882_195,5 +009162_281,5 +00009_262,7 +00128_83,12 +008482_10,14 +00160_170,11 +00350_298,5 +00065_164,1 +00442_96,2 +007762_63,4 +01423_84,0 +01981_134,14 +00567_86,2 +012192_129,5 +010012_265,5 +01488_225,5 +01882_45,11 +01693_276,0 +02005_235,11 +01956_11,4 +012722_270,2 +01509_237,11 +01924_197,14 +00535_140,6 +00772_19,7 +00242_205,4 +00282_30,7 +00577_41,7 +02005_73,11 +00601_77,1 +021912_9,7 +01904_79,12 +00490_50,2 +00588_190,2 +001022_33,0 +01953_129,4 +010012_179,5 +00382_47,17 +00158_89,11 +00287_22,4 +014232_38,2 +000242_83,17 +01877_124,4 +00615_199,11 +00875_111,2 +00993_54,6 +005092_189,2 +02187_260,16 +019252_247,8 +01597_67,0 +011612_153,17 +002752_26,14 +00867_48,17 +00158_278,5 +01045_174,4 +01044_114,12 +01058_76,2 +009512_10,14 +019622_88,0 +008832_37,11 +014882_145,0 +00941_17,0 +006092_68,14 +00442_289,4 +01977_62,6 +00840_114,7 +018652_47,18 +00306_103,14 +007292_4,14 +000232_119,5 +014232_23,2 +00462_8,14 +01351_75,7 +00783_243,5 +00009_273,12 +003062_30,7 +01065_83,18 +01605_32,14 +00509_46,2 +01684_29,4 +006742_42,14 +011612_182,17 +01767_89,14 +00588_224,2 +005392_113,1 +007292_104,14 +02005_81,11 +01408_242,14 +01101_12,14 +00088_58,5 +00158_207,5 +017022_29,4 +00485_279,4 +00475_261,9 +01925_30,14 +01578_223,14 +00158_280,5 +007212_143,14 +00453_206,9 +00840_27,2 +01578_195,14 +010872_4,14 +01210_30,1 +01240_70,12 +00720_21,0 +016882_184,5 +01145_206,4 +00025_87,17 +02191_69,7 +004532_137,9 +02127_53,17 +01488_88,13 +01767_222,12 +010652_96,1 +01578_72,14 +01839_20,14 +01058_96,2 +00720_17,0 +00567_25,2 +00475_62,9 +009162_151,2 +00296_54,7 +00674_8,14 +013302_23,2 +00474_107,2 +00840_49,2 +00772_8,14 +011612_105,17 +01371_33,14 +001242_46,0 +007212_257,14 +02127_210,17 +011612_278,17 +02030_135,16 +01134_31,10 +02054_244,4 +007092_201,19 +00867_46,17 +01962_74,0 +01636_68,0 +00563_61,9 +019252_79,3 +02187_231,16 +00577_57,7 +007212_226,14 +00314_23,2 +02054_287,4 +01948_14,14 +000242_8,2 +00615_131,1 +02027_131,14 +01879_70,4 +01834_130,8 +00729_20,14 +00079_66,9 +00453_127,9 +01509_259,11 +00528_220,0 +00426_7,14 +01723_188,15 +007292_232,14 +01144_58,9 +00783_60,2 +00342_60,17 +01045_217,4 +01706_179,2 +009642_73,3 +01605_95,5 +014232_79,0 +01158_119,4 +01448_25,0 +01145_251,4 +01623_126,14 +00628_30,7 +01953_15,2 +00615_150,11 +00509_113,2 +01977_299,14 +020052_76,11 +01568_10,2 +007832_204,2 +00282_32,7 +01177_12,14 +00703_106,5 +00688_69,4 +00783_131,12 +00287_248,4 +006742_68,14 +01191_91,7 +005882_195,2 +01494_32,7 +014272_0,14 +01924_64,14 +00837_53,11 +019412_48,14 +00232_21,2 +012282_243,14 +020052_15,11 +00979_87,1 +00601_14,7 +004532_229,9 +016052_135,5 +00417_294,11 +00490_96,2 +00935_33,7 +00394_75,14 +00761_163,6 +010872_97,5 +00962_56,3 +00615_3,11 +012562_85,2 +01623_120,14 +00025_26,17 +02172_45,14 +007832_202,2 +000092_166,0 +01045_1,2 +008922_14,0 +01165_103,5 +01834_238,8 +02012_106,14 +00563_3,2 +00709_163,4 +01904_23,2 +00228_293,7 +02138_95,14 +01688_168,14 +00128_184,4 +01941_108,14 +01488_224,0 +013332_12,4 +00535_208,0 +01879_52,4 +012402_11,2 +00438_195,2 +01431_199,11 +00413_10,14 +00962_77,3 +00408_66,1 +00181_57,0 +00475_228,1 +01065_28,18 +00453_55,9 +003122_4,0 +02146_117,18 +00607_40,11 +01184_54,5 +01437_54,11 +01240_96,12 +02021_30,1 +01191_79,7 +00296_92,14 +00697_27,9 +004082_19,1 +00916_177,2 +00413_94,0 +011082_46,0 +00563_29,4 +01087_239,5 +01240_216,12 +017072_102,0 +01877_206,4 +00474_189,2 +014372_238,11 +009642_190,8 +02187_240,16 +00009_275,12 +00538_117,17 +01261_29,2 +007832_284,5 +01948_75,13 +00159_60,2 +02177_70,14 +01158_95,12 +01605_267,11 +00102_275,16 +00628_64,7 +01330_0,2 +018772_170,4 +00413_191,2 +00024_20,2 +01488_191,13 +017072_193,0 +007212_186,14 +012722_217,12 +003122_38,0 +011612_111,17 +007212_4,14 +01045_39,2 +02187_262,16 +01191_4,14 +01494_91,14 +004172_40,17 +01272_125,4 +015972_87,0 +01702_1,14 +00413_219,14 +00065_279,4 +00350_123,9 +01184_101,5 +016932_25,17 +00023_150,6 +00941_14,4 +00408_236,11 +02146_171,14 +010012_86,5 +01924_92,14 +01723_21,0 +004082_216,11 +017752_90,2 +010872_231,5 +017752_125,12 +021622_79,17 +01210_90,9 +00519_133,7 +01431_37,5 +00875_85,2 +010652_109,5 +01145_63,2 +017692_264,2 +01814_284,11 +016882_254,5 +00275_28,14 +011912_143,14 +00333_36,2 +01103_54,9 +00509_140,2 +007832_10,2 +000232_82,6 +01877_285,4 +01693_260,0 +01423_201,0 +010912_231,7 +00867_47,17 +010872_230,5 +00128_140,2 +01925_248,8 +00490_103,2 +00102_206,16 +00506_85,4 +018342_149,8 +014882_37,0 +017672_129,14 +00088_70,5 +02028_62,3 +021722_200,2 +001022_54,16 +00535_112,6 +012612_101,2 +01409_205,14 +016932_237,0 +002802_76,4 +01972_191,13 +02187_225,16 +00462_200,14 +01210_16,9 +010942_99,2 +01412_51,0 +01161_256,17 +01879_37,4 +00287_215,15 +01769_259,2 +02027_52,18 +02187_204,16 +00783_132,12 +019242_92,14 +00601_40,7 +00981_3,14 +00009_69,12 +01582_49,2 +009162_288,5 +012192_74,5 +00567_155,2 +00546_101,3 +02021_24,1 +01091_263,14 +00242_112,12 +01423_184,0 +00485_196,1 +00729_50,14 +01814_64,11 +010912_146,5 +00390_90,11 +00475_286,9 +017072_41,2 +00546_87,3 +00567_49,5 +018772_49,4 +01412_74,0 +00474_273,2 +017692_149,9 +007292_54,14 +01201_12,14 +01853_39,7 +00485_213,1 +00342_8,14 +00841_12,14 +00009_51,12 +017692_12,2 +012722_33,2 +01568_189,12 +01407_13,2 +021722_85,14 +00296_6,14 +01210_173,6 +017232_236,15 +000092_159,12 +008252_28,12 +006092_19,11 +00261_51,0 +001602_135,11 +01087_212,5 +01941_80,14 +00065_229,12 +01361_128,3 +00957_72,4 +00935_85,7 +00102_241,16 +01283_36,2 +01971_128,2 +01409_178,0 +00417_291,11 +00503_138,1 +011912_32,14 +01953_86,12 +01278_165,12 +00916_102,2 +01488_29,1 +007092_203,19 +001602_24,2 +00941_44,0 +00065_117,11 +006742_87,14 +016842_18,14 +01834_29,6 +01509_23,2 +01698_50,17 +00563_68,9 +01972_238,6 +00539_256,1 +00503_125,1 +001242_254,4 +01763_174,12 +01626_134,2 +016052_179,11 +019622_7,0 +016882_216,5 +00275_100,14 +00772_103,14 +01177_1,14 +01853_58,6 +02012_115,2 +01693_126,0 +01145_21,2 +00124_6,4 +017672_152,14 +010912_176,11 +00306_94,14 +000792_133,9 +00552_92,2 +02030_144,16 +01578_65,14 +01568_187,12 +00287_211,4 +01787_3,13 +019592_2,6 +01971_194,12 +01427_126,14 +00438_92,2 +00597_57,5 +019712_18,2 +00314_234,12 +01578_3,14 +004172_199,17 +018132_38,11 +00490_81,2 +00453_44,9 +01333_47,13 +00158_172,5 +010872_5,14 +019712_129,12 +00175_31,13 +010012_185,5 +00382_93,19 +00783_216,17 +01165_120,14 +01161_61,17 +01145_157,4 +009512_26,0 +01431_59,11 +01707_64,0 +014282_61,4 +00228_64,11 +01092_197,14 +00730_27,17 +01448_79,3 +014882_120,13 +01834_20,14 +02149_28,17 +01001_190,5 +019712_9,2 +01045_91,4 +00681_34,5 +00566_258,8 +00519_92,11 +016932_139,0 +01144_147,2 +00729_76,14 +010912_195,16 +00867_122,17 +02187_195,16 +00314_45,2 +021772_7,4 +00718_128,5 +01904_37,4 +01972_69,3 +00935_29,7 +01001_255,5 +01775_101,12 +00160_169,11 +017482_93,0 +01723_53,15 +01044_170,12 +00962_65,3 +01118_93,14 +00539_244,1 +00567_199,2 +01103_24,9 +01904_119,2 +01134_239,10 +00709_136,4 +00703_119,14 +006742_133,14 +00128_132,2 +01488_98,13 +018392_83,11 +00993_174,7 +00158_151,5 +021722_71,14 +018122_48,4 +01839_137,1 +017022_49,2 +01228_177,14 +00314_216,0 +011912_113,7 +007092_136,4 +014972_26,2 +01909_208,2 +021912_65,7 +01177_16,4 +014232_183,0 +01361_296,15 +018132_140,5 +01431_158,11 +00417_23,6 +00025_7,17 +02162_106,1 +01763_118,2 +011612_148,17 +01877_160,4 +00124_120,19 +01191_172,14 +00867_137,5 +01578_201,14 +01330_87,1 +017232_201,15 +01568_5,2 +02187_258,16 +01423_128,0 +009512_102,0 +000092_94,0 +00841_81,14 +00528_19,2 +01688_196,5 +010872_68,2 +00840_166,7 +017672_246,14 +019242_12,14 +01909_153,2 +00509_44,2 +018392_138,1 +01087_246,5 +01161_102,17 +00333_41,2 +008922_89,2 +00628_105,7 +00681_65,5 +01087_99,5 +000092_188,7 +008832_35,11 +02138_112,4 +010912_158,5 +00276_43,11 +018792_17,2 +00426_134,0 +01693_131,0 +01925_271,8 +01058_80,4 +012562_74,12 +02149_7,17 +01622_109,0 +000092_71,0 +01568_90,2 +004082_280,11 +014282_31,14 +01210_293,9 +017232_148,15 +011912_198,14 +01091_103,0 +00159_88,0 +02042_78,14 +00021_119,2 +01693_141,0 +021722_158,14 +00546_50,14 +00761_191,3 +009512_103,0 +000242_40,7 +02057_189,3 +01509_31,2 +00242_180,2 +00102_287,16 +001242_225,0 +01924_145,14 +00597_37,5 +00550_25,18 +01568_179,2 +016882_101,5 +01101_134,0 +01087_267,5 +01839_88,11 +014972_28,2 +000792_282,9 +00519_16,14 +00275_47,14 +02094_144,2 +01693_245,0 +00438_164,2 +01763_298,2 +01240_165,12 +00021_117,4 +00964_164,8 +00456_28,12 +00722_0,17 +01702_66,14 +009642_181,8 +021622_83,17 +01748_2,11 +011772_38,14 +00837_173,14 +01909_73,2 +01330_280,9 +00506_140,2 +00720_19,0 +01044_55,4 +01423_35,2 +00417_34,17 +00718_94,19 +017072_223,0 +011082_2,14 +01118_92,14 +00009_211,7 +016882_5,5 +01427_104,9 +02138_277,14 +00413_130,0 +01767_93,14 +021462_40,1 +004172_60,17 +01351_99,7 +01358_39,1 +010652_91,18 +00456_31,14 +00128_19,12 +00462_100,13 +02172_220,12 +021722_145,14 +01706_264,2 +01956_18,15 +014122_11,4 +007292_145,14 +019712_130,12 +00578_24,1 +01879_95,2 +000242_87,7 +012192_134,14 +010872_163,5 +00783_248,5 +00916_15,2 +01408_154,14 +01775_174,12 +00660_231,0 +014232_94,0 +00474_243,2 +01623_19,14 +00552_29,7 +00660_214,0 +02012_108,14 +01101_118,13 +02146_149,14 +00709_21,19 +01044_271,4 +01490_85,14 +017232_39,15 +00009_265,7 +00981_96,11 +00709_79,19 +007092_179,19 +01261_35,2 +00722_121,17 +012282_276,14 +00242_46,12 +00677_51,4 +01437_89,11 +01968_41,7 +01509_143,0 +00128_126,2 +00538_70,1 +016842_62,14 +00041_25,2 +016932_231,0 +017752_57,2 +01407_26,5 +014372_83,11 +01904_80,12 +01904_42,12 +01103_107,14 +00413_140,0 +01210_214,6 +00841_31,4 +010012_118,5 +014272_77,17 +02012_91,17 +01706_285,2 +01968_101,14 +011082_66,14 +00242_178,2 +004172_127,17 +004082_267,13 +005092_46,2 +01240_71,12 +000792_261,9 +004532_16,1 +018342_89,8 +00382_17,7 +01626_68,7 +01865_46,18 +01007_74,0 +00875_42,2 +004172_28,6 +00550_74,18 +01240_148,12 +00509_73,2 +005282_135,4 +011912_71,7 +01568_200,4 +01948_91,13 +016882_97,5 +009162_299,5 +01228_38,14 +00287_261,4 +01219_28,5 +02028_97,2 +01219_133,14 +007762_66,14 +016842_57,14 +00296_95,14 +01814_175,11 +01814_144,5 +018772_73,4 +017232_226,15 +00821_142,14 +000242_66,7 +01605_283,11 +01877_229,4 +01865_11,14 +00228_125,9 +00688_32,4 +01953_145,4 +01228_50,2 +00181_134,0 +01087_156,5 +00567_58,2 +00242_4,2 +01091_4,2 +01272_137,4 +01490_72,7 +00601_53,6 +00729_247,14 +010872_23,14 +00485_98,1 +00158_150,5 +00535_175,0 +00964_182,8 +00783_73,17 +019242_115,14 +00718_96,19 +01707_161,0 +018772_162,15 +00566_227,8 +009642_207,8 +00721_220,14 +01366_166,14 +01853_109,5 +01901_56,0 +016982_9,14 +01643_5,14 +00509_22,2 +01408_74,14 +01428_57,14 +00538_12,2 +008252_89,2 +02127_129,17 +01361_253,15 +01924_208,14 +005502_43,18 +01877_5,4 +01488_182,0 +01582_34,17 +01361_48,12 +00453_54,9 +000792_91,9 +00312_16,13 +001242_86,19 +00883_61,11 +00287_32,4 +016932_170,0 +020052_115,11 +016052_177,11 +02049_74,3 +00065_173,1 +01972_264,14 +014232_229,0 +00102_32,0 +02094_17,2 +01437_197,11 +01509_75,0 +00588_50,15 +01578_167,14 +00275_16,14 +01087_207,5 +007092_97,11 +00023_144,6 +00892_4,0 +01626_5,2 +000232_10,2 +00688_112,2 +00102_198,16 +005092_167,12 +02054_104,12 +01707_29,2 +019412_86,14 +01924_10,14 +00160_10,2 +00011_21,0 +00721_91,14 +00628_66,7 +01412_25,0 +00438_165,2 +008482_44,17 +00280_233,12 +00417_49,17 +01092_288,14 +00883_43,11 +01814_277,11 +01767_34,14 +00935_109,14 +01578_23,14 +01597_84,0 +004082_196,11 +00417_137,17 +01437_281,11 +01001_182,5 +01879_84,4 +01813_87,11 +008402_196,7 +01165_41,5 +01058_155,2 +00609_77,14 +005062_49,4 +01134_143,10 +012402_25,2 +02021_115,14 +014972_25,2 +005092_99,12 +005062_12,2 +01210_55,17 +01924_18,14 +00009_71,0 +01688_71,5 +01118_12,14 +00783_50,2 +00450_145,4 +01706_120,2 +019712_238,12 +00840_217,7 +02094_19,2 +01941_29,14 +00776_6,14 +00535_223,5 +00242_280,12 +02027_143,14 +01597_57,0 +02172_70,12 +019412_59,14 +019412_56,14 +01814_24,5 +007292_239,14 +00228_35,14 +00566_213,8 +00041_76,12 +00546_114,3 +01431_233,5 +017232_57,15 +02028_70,1 +01361_132,3 +00102_212,16 +00607_79,11 +01901_106,0 +00417_187,17 +01431_0,11 +007212_160,14 +009162_6,2 +01688_135,14 +00821_106,5 +00793_208,14 +01330_232,8 +00128_244,12 +00979_107,1 +00021_41,3 +014272_55,4 +01924_121,14 +01161_274,17 +01119_14,5 +00567_125,2 +019242_99,14 +00567_189,5 +008482_117,17 +00840_121,7 +000792_148,9 +01144_74,8 +00475_234,9 +00417_69,17 +01769_95,2 +00601_104,0 +014372_282,11 +01312_87,7 +00761_257,3 +01879_8,2 +005062_130,2 +00453_241,9 +00821_24,5 +01962_4,0 +00158_99,11 +00577_37,7 +01707_151,4 +010942_10,14 +00490_208,2 +002802_210,12 +01605_180,11 +00567_145,2 +00490_35,2 +021722_33,14 +00729_186,14 +00772_82,5 +01509_108,0 +016052_148,5 +00539_168,6 +00450_206,14 +01909_69,2 +00503_72,6 +005392_44,6 +01108_59,4 +000232_15,2 +008372_25,11 +00124_28,4 +01177_77,14 +002752_102,14 +01763_215,12 +000242_43,7 +00607_12,14 +01134_251,10 +011082_71,14 +01684_2,14 +00776_8,4 +016432_36,12 +01925_177,8 +01767_283,14 +00720_0,0 +02021_59,11 +00485_27,2 +021462_85,18 +00128_172,2 +01493_166,1 +01361_194,3 +00490_261,5 +02172_19,14 +01723_278,15 +00041_116,7 +004172_171,6 +013302_16,2 +01763_270,2 +00535_30,2 +000242_91,7 +00475_41,9 +006972_62,5 +003062_48,7 +01501_110,14 +01371_47,14 +01813_155,14 +019242_71,14 +013332_26,2 +00175_82,12 +013302_15,2 +00721_137,12 +012722_134,12 +01278_129,4 +020572_140,3 +01412_0,4 +016882_123,14 +01622_77,0 +01865_21,11 +007092_103,11 +01219_119,5 +01693_230,0 +010872_66,2 +01578_87,14 +00546_22,14 +01509_296,11 +004172_65,17 +00538_140,14 +00535_79,12 +00539_292,1 +01184_21,14 +019242_88,14 +010912_248,2 +00065_134,1 +01261_11,2 +01767_175,14 +01763_110,2 +02057_129,6 +00442_106,2 +01045_222,4 +01609_29,17 +00242_132,2 +00783_75,17 +017672_61,14 +01278_126,4 +000092_78,12 +016882_141,14 +01330_157,9 +00276_64,11 +00729_21,14 +00721_161,14 +00485_9,2 +01361_60,12 +00023_9,2 +01044_20,4 +00535_170,0 +021912_97,7 +001112_22,17 +00228_294,7 +00275_87,14 +00158_128,5 +01925_7,14 +009342_43,0 +01707_143,1 +00730_144,14 +01361_120,3 +02187_169,16 +018122_46,4 +00761_28,14 +00102_159,16 +01408_30,14 +00275_31,14 +00242_6,2 +001242_25,4 +017232_138,15 +01145_60,2 +00528_141,4 +00158_30,14 +00783_125,6 +01763_84,2 +01804_64,7 +00688_2,2 +00720_22,0 +01501_48,4 +018772_145,4 +00703_59,11 +02030_293,16 +01684_0,14 +019252_44,4 +02187_162,16 +00783_161,2 +01256_90,4 +021722_81,14 +02177_13,4 +01101_126,0 +01804_88,7 +018342_208,8 +00552_51,7 +019412_104,14 +00023_195,2 +02049_47,3 +01971_183,4 +01101_56,7 +019712_27,2 +02049_219,3 +005392_78,1 +01001_204,5 +00519_79,11 +01001_92,5 +00721_97,14 +00490_257,5 +01901_33,5 +02162_74,17 +01767_88,14 +00065_62,1 +02177_50,12 +005502_21,18 +00282_92,11 +006092_11,14 +019252_135,3 +01509_66,0 +01437_130,11 +000232_163,5 +00783_53,2 +02027_19,17 +01977_290,14 +01261_41,2 +00160_218,11 +010012_84,5 +01091_26,12 +01959_13,6 +00333_99,4 +00442_175,4 +018652_16,5 +021622_58,7 +016052_184,11 +01407_6,2 +019252_64,6 +00280_16,14 +000232_172,2 +02094_57,2 +016842_69,14 +00578_75,4 +01228_173,14 +00275_154,14 +00490_265,5 +00485_248,1 +001242_126,19 +018772_67,4 +01001_249,5 +01693_8,4 +00567_112,2 +01177_14,12 +01706_43,2 +00837_54,11 +01901_0,14 +01366_40,17 +01240_166,12 +019592_14,6 +01001_56,2 +00280_100,12 +00747_16,6 +01412_21,0 +01191_102,7 +01330_234,8 +00280_125,12 +00065_185,1 +010872_175,5 +00450_111,13 +000232_95,0 +00350_24,14 +01763_257,2 +001112_83,14 +01240_55,12 +019622_30,0 +00242_98,12 +01145_19,2 +016432_2,14 +01706_282,2 +01941_44,14 +003062_81,7 +01488_96,13 +01201_82,11 +00867_148,0 +017752_23,2 +012282_41,14 +02005_80,11 +01490_90,14 +01723_75,15 +010012_182,5 +01977_248,3 +007222_86,17 +01692_148,14 +00730_142,14 +00009_5,4 +01087_129,5 +00350_269,9 +004172_153,6 +017232_117,15 +012282_56,2 +00282_104,14 +01941_288,14 +00506_72,6 +01953_213,4 +00450_51,4 +01693_102,0 +00158_11,14 +019712_198,12 +00916_219,2 +019042_55,4 +00546_149,3 +00490_16,2 +01493_187,1 +00350_147,5 +01956_33,18 +01636_52,0 +00505_66,1 +016052_188,11 +00867_163,14 +01568_87,2 +01493_13,11 +00456_55,12 +00761_296,3 +020572_197,3 +00232_143,4 +007212_26,14 +00981_13,11 +018772_132,4 +011612_8,17 +01787_46,9 +00916_86,2 +01981_104,11 +01582_42,7 +020052_220,11 +005502_83,18 +014882_133,13 +00660_239,0 +00158_162,5 +00567_158,2 +01119_37,11 +002802_8,14 +007832_207,2 +01092_11,17 +01191_169,14 +005062_96,4 +00916_215,2 +02062_5,2 +00703_113,14 +00041_111,12 +00158_197,5 +01622_60,4 +02030_3,14 +016882_287,2 +00228_223,14 +01161_227,17 +016932_289,0 +009352_15,14 +00490_144,2 +00546_75,3 +00232_142,4 +012282_296,14 +01748_57,7 +01490_55,7 +019242_118,14 +00993_14,14 +01134_262,10 +004532_99,9 +016882_283,2 +01165_70,5 +01643_64,4 +01145_102,4 +004082_218,11 +02149_31,17 +01161_141,17 +01457_11,2 +00588_136,13 +01623_110,5 +00041_40,12 +00539_13,6 +00528_148,0 +02138_165,13 +02149_8,17 +01427_117,17 +01001_262,5 +018392_119,11 +01228_281,14 +00394_123,14 +001242_108,19 +00964_290,14 +019712_219,2 +012722_163,2 +021462_178,14 +01103_4,14 +01812_6,2 +01409_96,0 +000252_53,17 +00703_24,11 +00275_85,14 +00413_13,14 +01977_36,2 +021722_234,14 +00535_115,6 +018342_68,8 +02027_111,14 +01763_16,12 +006742_66,14 +003062_103,14 +016092_31,17 +02057_171,3 +02027_38,18 +017072_91,0 +01145_18,2 +00314_84,4 +010012_297,5 +014232_95,0 +01184_76,5 +01813_31,11 +01134_44,10 +01493_32,11 +005282_155,0 +01693_255,0 +01812_18,2 +00041_49,12 +010912_84,16 +00848_55,17 +01769_192,2 +01879_58,2 +01877_54,4 +00438_60,2 +007182_37,19 +01049_55,7 +008922_38,0 +01707_245,0 +017672_128,14 +000092_90,0 +007292_70,14 +00535_288,2 +02127_264,17 +00503_234,5 +01692_125,1 +00408_31,1 +00993_146,7 +00025_30,17 +017692_20,2 +01431_229,11 +01605_298,11 +02138_254,14 +01981_72,5 +00350_120,9 +01643_52,14 +00730_93,17 +007292_147,14 +00979_93,1 +01814_36,5 +01409_18,14 +01814_106,11 +00408_249,11 +00609_53,11 +009162_71,2 +00102_224,16 +017232_124,15 +010652_82,18 +009162_18,2 +00772_30,7 +00505_117,12 +016932_279,0 +00333_5,2 +01953_199,4 +00821_77,5 +00601_110,0 +020052_292,11 +00607_131,14 +016882_183,5 +01158_159,4 +00350_197,5 +00718_11,2 +014282_79,14 +01509_116,0 +016882_153,14 +01366_112,17 +02027_89,14 +005092_105,2 +017482_90,0 +02127_105,17 +02138_102,12 +00718_99,19 +012722_100,2 +01161_66,17 +00438_8,2 +01948_39,4 +00840_161,7 +00102_240,16 +020572_89,12 +014882_111,0 +00793_108,14 +00450_28,14 +007292_156,14 +01210_75,17 +01693_92,0 +00567_26,2 +01968_109,14 +02054_226,14 +00867_54,5 +00730_136,14 +014372_139,11 +001242_149,19 +019252_173,8 +01814_20,5 +01904_131,12 +00776_1,14 +01853_115,2 +01119_42,11 +00674_55,14 +01361_281,15 +01953_125,4 +00181_36,0 +009512_100,0 +02187_268,16 +00546_68,15 +009512_7,14 +020052_240,11 +01909_105,4 +010652_52,18 +01909_75,2 +017752_47,12 +01058_42,2 +021772_17,4 +007092_238,19 +008372_181,14 +01929_164,0 +00160_70,11 +003122_34,0 +01877_127,4 +00783_258,5 +00280_137,12 +005282_52,2 +00312_48,0 +021722_182,14 +00957_71,4 +017232_195,15 +017672_278,14 +00793_47,14 +010872_179,5 +00607_42,19 +01278_102,12 +01165_27,5 +02030_74,14 +01909_167,12 +012722_86,2 +00793_106,14 +01228_142,14 +00228_233,5 +01692_26,2 +02172_126,2 +01605_59,5 +00280_161,12 +01814_216,11 +00761_127,14 +01948_193,13 +00413_38,0 +01948_114,13 +018342_121,8 +01626_129,2 +00528_106,2 +00485_139,1 +00390_79,5 +017672_157,14 +014972_47,12 +00615_115,11 +005282_98,2 +005092_68,2 +00467_18,11 +006742_134,14 +01924_188,14 +00588_130,13 +008832_36,11 +00607_102,6 +00793_126,14 +019412_298,14 +007832_90,17 +01622_34,13 +01228_122,14 +011612_120,17 +00916_71,2 +01941_185,14 +00550_129,14 +01330_296,9 +00503_30,6 +012282_163,14 +01256_44,4 +002752_81,14 +01046_21,7 +016932_51,0 +02054_66,2 +01582_15,7 +010872_224,5 +008402_166,7 +01091_249,2 +017752_161,12 +00546_3,14 +001242_2,4 +01144_130,12 +018122_56,4 +01488_70,0 +01134_1,16 +01158_28,0 +01091_51,1 +00609_31,11 +00009_83,2 +001022_1,2 +004532_117,9 +00588_47,15 +01045_125,4 +012612_91,2 +01813_123,11 +01007_245,1 +00588_10,4 +00729_152,14 +011612_273,17 +016922_18,2 +00681_40,5 +00993_42,14 +01007_139,13 +01981_37,5 +00674_10,14 +00228_69,2 +00462_164,15 +004172_138,17 +00677_11,14 +01261_43,2 +00276_94,11 +00475_264,9 +01839_170,4 +02177_31,4 +012722_64,12 +02186_21,5 +00417_263,11 +01191_162,14 +01941_96,14 +01103_57,9 +00453_27,9 +00993_76,6 +016052_29,14 +01804_107,12 +01278_53,2 +01814_82,11 +010012_147,5 +020052_202,11 +01044_84,12 +00892_64,2 +001602_247,11 +01092_12,17 +01145_79,4 +01568_4,2 +00450_109,13 +00490_91,2 +016882_268,5 +018772_206,4 +014372_133,11 +01361_225,15 +00615_88,1 +015972_40,0 +007292_255,14 +005282_110,2 +01972_12,2 +017072_43,12 +01636_38,0 +01145_279,4 +014122_91,0 +00566_149,8 +018342_74,8 +007212_214,14 +020052_225,11 +01636_95,0 +018392_61,11 +017752_130,12 +01578_182,14 +007292_201,14 +00382_111,19 +00505_250,14 +012402_71,12 +00892_68,2 +01839_172,4 +02057_179,3 +01134_87,10 +00729_168,14 +01909_119,2 +00474_80,2 +01210_133,6 +016052_245,11 +01278_190,2 +018772_115,4 +02057_53,2 +00314_192,4 +00280_211,12 +005502_0,14 +01605_261,11 +01839_76,11 +01049_21,7 +00475_7,5 +00729_197,14 +014882_51,13 +01219_47,5 +00718_133,14 +00314_174,4 +02012_121,14 +02146_101,18 +01087_127,5 +01706_284,2 +02012_61,7 +01723_170,15 +02012_109,14 +01423_255,2 +00539_85,1 +000792_152,9 +01044_285,4 +00660_134,0 +00730_130,14 +00821_25,5 +01901_6,14 +01001_66,12 +01165_16,14 +00228_286,14 +00962_2,0 +000792_153,1 +007762_34,14 +005882_107,13 +007222_15,17 +02172_232,4 +01408_291,14 +01707_135,7 +00350_226,5 +01497_38,2 +00160_104,11 +014072_28,5 +00934_26,1 +01853_28,5 +01981_1,14 +00505_146,14 +007212_31,12 +01177_49,4 +014272_104,9 +00867_36,5 +01490_69,7 +01877_178,4 +018122_104,2 +016882_172,14 +004082_67,1 +00088_89,14 +013302_18,2 +01278_227,2 +005092_5,2 +021462_57,18 +011772_88,4 +019712_185,2 +016922_48,2 +017022_79,14 +01145_92,4 +00722_10,17 +00722_113,17 +02054_25,2 +016052_32,14 +00088_31,5 +00964_236,15 +005392_3,6 +017072_103,0 +02005_197,11 +00628_83,7 +004532_123,9 +02146_82,18 +01684_60,14 +00485_50,4 +01688_40,5 +00964_225,3 +00566_52,8 +00821_67,5 +02057_40,2 +016842_67,14 +01763_240,2 +01706_5,2 +00993_250,14 +012562_97,14 +01158_108,4 +01692_151,14 +01941_160,14 +00079_250,9 +02030_291,16 +01707_112,1 +01488_171,1 +00408_10,2 +02127_246,17 +00413_25,0 +01706_244,2 +00951_24,0 +002802_229,14 +007292_257,14 +01769_64,9 +00261_24,12 +00721_124,14 +01091_182,1 +00566_200,8 +00588_176,4 +017232_92,15 +02138_205,13 +012282_246,14 +00721_247,14 +017672_274,14 +004172_225,7 +01509_61,0 +021462_60,18 +00503_210,9 +01578_144,14 +00720_1,0 +00563_75,6 +01278_109,12 +01597_62,0 +01953_49,2 +00577_78,7 +00951_81,0 +01865_91,18 +01366_43,17 +00505_15,2 +00011_29,1 +00993_91,7 +00981_121,14 +00426_147,0 +01953_206,4 +00722_34,17 +01901_118,5 +017232_200,15 +00426_151,12 +01161_106,17 +007832_146,4 +00280_118,2 +00721_135,12 +001112_6,14 +01643_56,4 +009642_80,3 +012402_2,2 +00566_38,6 +01962_131,0 +00287_71,15 +01423_141,0 +02054_266,12 +005392_85,1 +01494_103,14 +009162_156,2 +00964_183,8 +01814_207,11 +00848_53,17 +005282_54,2 +014232_40,2 +009352_63,7 +009162_64,2 +00628_135,14 +00128_72,4 +00408_273,1 +019042_147,4 +01605_38,14 +00674_138,14 +00021_151,2 +01643_85,14 +00563_113,2 +016922_70,1 +000092_224,2 +01643_7,14 +00079_134,9 +00275_124,14 +01956_1,14 +02042_120,0 +010872_184,5 +02138_230,8 +01925_211,8 +00342_94,14 +020052_73,11 +01812_82,2 +01582_50,2 +00079_179,9 +00519_4,14 +00607_61,6 +00964_46,6 +001602_253,11 +01748_5,11 +009162_287,5 +01366_7,14 +00535_181,5 +001112_36,17 +00566_156,8 +002802_173,12 +007832_181,2 +00474_141,2 +019242_186,14 +00979_24,1 +00456_82,2 +01723_87,15 +01925_183,8 +00776_4,14 +01748_23,0 +01046_15,14 +00417_42,17 +018122_106,2 +00883_25,11 +01423_212,0 +00681_81,14 +00490_1,2 +013302_251,15 +02027_116,14 +01582_88,2 +01909_24,2 +021912_100,7 +018392_185,1 +01924_114,14 +002802_68,12 +018772_296,4 +00964_65,3 +00546_43,14 +01134_54,10 +01834_185,8 +01065_30,18 +01437_110,11 +007092_5,19 +00597_60,2 +00128_121,2 +01045_99,4 +020572_177,3 +01769_114,2 +019252_85,3 +01371_16,4 +00697_81,5 +008402_114,7 +01814_31,5 +011612_232,17 +00721_30,12 +01623_116,14 +00867_104,0 +00615_77,11 +005092_57,12 +010872_161,5 +00509_41,2 +01191_143,14 +01087_225,5 +01412_62,0 +018772_64,4 +00538_74,17 +00287_131,15 +016932_80,0 +00837_176,14 +000092_187,7 +009352_105,14 +01431_27,11 +01972_63,3 +01948_92,13 +003122_18,0 +00342_62,17 +018772_165,15 +00730_147,14 +00730_39,18 +00413_163,0 +00275_130,14 +00408_212,11 +014232_222,0 +02127_82,17 +00981_64,11 +004172_143,7 +01509_12,2 +005282_31,2 +011612_67,17 +01423_94,0 +012722_51,2 +02005_115,11 +01834_258,8 +000792_159,15 +016982_38,17 +00088_54,5 +00079_83,9 +017232_26,15 +005282_29,2 +00563_80,6 +01437_137,11 +01839_133,1 +01877_232,4 +018342_16,14 +00350_211,5 +019712_169,12 +018122_90,2 +01877_97,4 +004172_142,7 +01228_248,14 +00475_14,5 +01094_111,14 +00528_38,2 +00009_219,12 +01330_229,8 +01877_20,4 +02028_38,9 +02187_154,16 +01706_180,2 +00505_55,6 +01091_273,14 +005502_46,18 +01929_158,0 +01087_247,5 +02027_65,14 +00242_190,12 +011912_43,14 +019242_2,14 +01909_64,2 +00306_31,7 +00793_257,12 +00261_1,4 +02042_4,14 +00474_59,2 +01144_95,2 +01834_15,14 +00023_13,2 +01091_188,16 +019242_221,14 +01956_64,14 +008482_17,14 +01001_61,12 +001242_26,4 +007092_135,12 +001242_210,0 +014882_88,13 +00102_225,16 +018122_58,4 +02094_39,12 +00783_232,5 +018132_73,11 +017072_38,2 +019242_134,14 +00503_131,1 +01219_19,14 +005282_66,2 +00287_11,4 +00242_51,12 +01272_250,12 +02138_41,12 +02012_64,17 +00964_239,4 +009162_168,2 +00382_133,5 +00821_3,14 +01087_147,5 +021722_220,12 +014122_88,0 +004172_185,17 +01723_217,15 +00718_40,19 +01834_239,8 +00538_134,2 +004172_248,6 +01210_218,9 +007182_135,14 +02146_102,18 +00979_94,1 +005392_183,13 +02049_144,13 +012282_202,14 +01091_22,12 +00175_56,2 +007182_14,2 +003062_45,7 +018122_13,2 +00783_69,17 +01361_91,4 +01707_270,7 +00503_268,6 +01330_66,18 +00772_52,7 +01094_4,14 +01959_43,6 +014122_82,0 +004532_235,9 +01427_65,17 +01048_25,5 +01408_195,14 +01094_65,11 +00228_77,17 +017072_154,4 +00124_127,19 +01953_99,4 +01330_212,1 +003062_92,14 +00025_43,17 +01865_47,18 +016052_273,11 +00413_188,4 +00453_61,9 +00538_106,1 +00981_120,14 +01431_244,11 +02054_6,2 +01901_177,14 +01909_188,2 +00993_243,14 +00079_91,9 +002802_156,14 +02187_251,16 +018772_33,4 +00276_121,5 +01877_147,4 +00065_3,5 +02062_7,2 +00566_183,8 +01971_117,2 +01925_229,8 +01134_284,10 +00438_61,2 +00292_46,11 +00350_90,5 +00546_17,14 +01431_86,11 +018132_18,11 +01091_104,0 +01948_52,13 +01361_209,3 +00314_18,2 +01272_193,2 +00597_5,14 +009642_250,4 +02162_69,17 +00475_206,1 +00065_77,5 +01091_216,9 +00761_269,3 +00111_29,17 +011772_93,4 +01134_125,10 +01493_2,11 +01981_126,5 +020052_41,11 +00485_2,2 +00772_35,7 +016882_167,14 +008372_176,14 +00578_23,1 +01091_63,1 +00506_106,2 +00703_104,5 +01145_195,4 +01201_116,14 +00783_140,2 +00722_93,17 +01636_118,14 +00382_116,19 +01431_28,11 +019252_28,14 +00314_277,4 +00957_83,0 +01877_257,4 +000092_283,4 +01972_226,3 +00607_62,6 +00601_100,0 +01763_168,2 +01437_171,11 +002802_254,14 +002802_41,14 +00009_272,12 +02138_229,8 +004082_256,13 +008372_18,11 +005882_64,13 +01977_30,2 +01509_254,11 +02030_250,16 +00729_256,14 +01103_59,17 +00941_7,19 +00485_233,1 +00467_44,11 +016982_116,14 +019712_97,12 +01509_272,11 +00024_3,2 +011612_123,17 +00837_12,0 +00065_138,1 +01103_88,17 +00793_101,14 +01626_146,2 +014072_0,4 +00065_195,1 +02057_8,2 +005092_213,12 +00793_22,14 +01283_40,2 +005282_22,2 +00475_119,1 +01775_68,12 +00280_232,12 +010012_17,2 +009162_295,5 +00730_13,14 +01101_1,14 +01901_69,0 +01431_214,0 +00993_60,6 +00408_158,11 +007092_46,19 +00718_29,19 +01351_102,7 +00840_279,2 +02021_60,11 +008402_113,7 +01191_73,7 +00417_82,17 +01605_7,14 +00088_50,5 +00505_205,17 +020052_75,11 +02187_123,16 +00024_105,2 +01941_88,14 +01769_178,2 +00722_133,17 +00065_65,1 +00242_7,2 +00981_101,11 +007182_2,2 +01001_31,2 +02030_138,16 +01431_104,11 +01091_204,9 +00453_226,9 +00761_12,14 +01597_78,0 +008252_42,12 +019252_34,14 +01941_167,14 +01448_94,14 +01092_254,17 +01767_248,14 +016922_90,1 +01623_7,14 +01007_16,2 +00413_41,0 +01210_153,6 +005392_136,1 +014232_115,0 +01693_232,0 +01145_275,4 +01929_17,0 +01488_117,0 +02005_175,11 +00485_63,1 +01165_59,5 +00442_148,0 +00009_49,12 +00333_172,2 +00474_104,2 +01101_14,14 +01901_126,12 +00840_268,2 +01968_4,14 +004172_44,17 +01622_83,13 +005502_16,5 +01941_164,14 +016092_25,17 +014232_154,0 +02027_81,14 +000092_251,4 +00474_43,12 +00456_175,12 +00721_1,14 +002752_143,14 +02187_152,16 +00503_136,1 +00011_56,12 +00485_262,4 +01448_4,14 +017072_50,4 +020052_44,11 +005392_247,1 +00282_38,7 +014282_60,4 +00607_52,6 +02172_236,14 +00453_18,9 +014272_93,17 +00566_89,8 +002802_145,4 +01706_253,2 +02049_24,4 +00730_42,18 +00485_3,2 +01723_52,15 +00941_52,13 +02138_290,14 +009352_88,7 +014272_26,17 +011612_107,17 +00703_74,11 +00722_31,17 +00578_47,4 +000792_196,9 +02030_85,16 +004532_225,9 +013302_127,9 +01925_275,8 +01161_214,17 +02030_53,14 +01748_30,0 +00840_115,7 +01578_104,14 +00721_0,14 +01428_41,4 +010652_92,18 +00588_13,4 +011912_175,14 +007832_159,2 +010912_79,16 +01605_292,11 +01692_74,1 +00821_28,5 +00601_35,7 +00442_193,4 +016932_97,0 +00228_120,9 +00588_222,2 +00350_232,5 +02094_28,12 +00567_228,5 +008402_132,7 +01812_94,2 +014372_37,11 +007212_109,14 +01272_214,12 +016432_54,4 +002752_83,14 +01948_87,13 +00287_85,15 +017672_87,14 +008402_145,7 +02127_18,2 +021462_78,18 +00462_7,14 +00709_111,1 +005392_33,6 +01101_115,13 +01767_231,14 +01210_43,9 +01493_180,1 +01144_40,5 +01814_246,5 +00964_96,8 +000232_109,5 +010012_251,5 +01330_101,6 +00350_172,5 +01007_152,13 +019712_57,12 +01408_121,14 +007832_96,17 +00503_141,9 +00232_62,13 +00519_36,7 +007212_218,14 +000792_137,9 +001022_11,2 +014882_141,0 +00588_177,4 +00314_283,0 +01161_186,17 +01448_103,14 +00538_36,17 +01877_180,4 +018792_64,4 +018122_94,2 +01568_154,2 +01210_13,9 +01007_256,0 +01158_16,0 +00160_208,11 +00462_188,14 +004532_262,9 +016932_119,0 +00021_137,12 +00276_67,11 +01956_63,14 +02127_296,17 +01001_85,5 +007212_76,14 +012402_42,2 +02162_101,6 +00342_10,14 +010912_224,6 +016052_15,14 +004082_233,11 +00941_25,4 +017232_122,15 +01688_103,5 +00456_125,12 +014882_184,0 +01829_3,2 +005502_104,18 +01134_235,10 +01240_235,12 +01925_219,8 +00128_106,4 +00314_255,4 +01493_79,1 +004172_188,17 +001602_230,11 +014122_65,0 +01488_38,0 +02057_47,2 +02054_247,2 +00124_33,4 +00503_96,1 +01358_9,1 +02127_26,2 +018652_37,5 +009642_263,14 +00503_295,6 +01748_6,11 +01044_144,4 +01865_77,18 +01092_97,17 +016932_72,0 +00450_87,13 +012282_261,14 +01813_9,11 +016932_87,0 +00438_133,2 +00964_251,4 +008372_174,14 +000092_162,12 +01001_145,5 +02057_163,3 +00729_207,14 +00228_234,5 +00426_164,14 +01956_21,15 +01941_52,14 +013302_98,9 +017672_200,14 +00102_94,16 +01813_78,11 +017232_35,15 +02005_223,11 +00528_35,2 +010942_72,11 +008402_226,2 +010012_104,5 +01448_50,6 +01490_1,14 +001602_103,11 +009162_115,2 +00577_118,14 +00438_86,12 +01578_76,14 +00158_117,11 +008252_45,12 +007222_84,17 +019242_197,14 +01767_45,14 +01929_62,0 +01763_259,12 +01763_64,2 +02012_12,14 +01707_93,0 +005882_22,12 +018792_57,4 +01904_39,12 +00503_75,6 +016932_30,17 +005882_91,13 +01177_93,4 +00124_187,0 +01904_3,2 +00333_139,2 +011082_61,4 +012192_63,5 +018342_12,14 +011612_186,17 +012402_20,2 +00539_149,1 +00228_252,11 +00282_103,14 +00660_132,0 +020572_166,3 +00793_210,14 +01804_114,7 +00280_132,12 +02146_91,18 +00276_65,11 +01605_260,11 +01408_217,14 +01493_277,1 +00993_22,14 +01351_4,2 +01707_163,0 +01431_41,5 +005092_195,2 +00350_96,5 +01925_114,3 +01134_5,16 +01767_134,14 +011772_67,15 +01804_116,7 +00941_21,0 +00442_219,4 +00438_212,12 +02054_282,14 +00566_132,8 +00474_76,2 +00102_56,16 +00722_107,17 +012612_34,2 +01698_113,14 +01331_33,17 +01834_145,8 +02172_199,4 +01331_2,14 +01962_117,0 +01210_147,6 +010872_152,5 +012282_79,14 +01182_49,0 +01158_70,12 +004082_199,11 +01278_22,2 +00718_97,19 +01366_149,2 +02049_27,6 +00567_75,2 +00159_91,0 +018652_125,11 +018392_108,11 +00793_236,14 +02057_46,2 +016932_283,0 +00841_80,14 +01605_153,11 +01972_114,13 +02030_33,14 +00475_298,9 +006092_41,11 +01834_232,8 +018792_110,2 +00916_224,2 +017072_73,4 +01688_272,2 +00485_121,1 +01813_122,11 +00394_71,17 +01312_57,7 +00506_76,6 +01007_123,0 +01228_208,14 +01119_23,11 +00041_124,7 +01351_8,2 +009342_41,5 +01210_33,1 +009642_223,3 +005282_220,0 +01407_3,4 +02088_39,0 +017692_251,0 +00729_246,14 +019042_6,2 +00793_261,14 +000092_44,4 +02054_252,2 +02191_93,7 +02127_121,17 +01723_54,15 +00709_198,19 +00660_159,0 +001022_181,16 +016052_212,11 +00577_39,7 +00453_135,9 +00761_66,14 +01007_10,2 +00837_107,11 +020052_65,11 +01091_112,0 +00453_274,9 +01045_286,4 +00417_8,14 +00041_135,7 +01929_132,0 +01408_279,14 +00825_4,12 +00474_220,2 +00453_200,9 +004082_206,11 +02162_31,12 +00993_21,14 +008372_179,14 +016922_10,14 +011612_11,17 +01813_90,11 +019242_136,14 +007222_141,17 +02191_17,7 +01144_66,3 +02191_114,14 +009352_19,7 +014972_48,12 +009642_191,8 +01636_14,14 +01219_34,5 +01877_113,4 +01901_114,5 +00023_42,6 +00242_129,2 +02049_42,8 +00011_10,0 +00102_136,16 +008372_101,11 +01278_230,2 +01058_85,4 +01971_200,12 +00490_57,2 +016092_10,17 +019412_289,14 +019412_193,14 +019252_128,3 +00546_35,14 +00314_120,4 +01698_52,17 +018342_196,8 +006742_46,14 +00485_37,2 +013302_229,8 +01688_139,14 +01490_29,7 +00840_117,7 +01953_22,2 +00793_194,14 +01767_257,14 +02187_145,16 +014272_83,2 +00776_99,14 +016092_13,17 +00841_92,14 +01161_210,17 +005882_184,4 +01161_267,17 +00688_66,4 +00957_78,4 +01636_37,0 +02049_152,13 +018132_43,11 +00539_143,1 +01165_33,5 +02138_107,4 +009352_94,7 +01578_89,14 +010942_35,11 +012402_235,12 +014372_2,11 +01409_61,4 +01007_134,0 +01814_291,11 +016432_14,14 +02062_133,4 +001022_41,16 +00993_150,7 +00124_58,0 +019412_199,14 +00160_54,11 +00825_35,12 +02138_4,14 +021722_160,14 +00563_97,2 +00519_117,11 +00578_29,1 +01261_76,12 +00490_101,2 +017752_65,2 +018772_202,4 +01428_74,14 +004532_50,9 +01409_147,0 +02186_27,5 +00539_32,6 +017692_91,0 +00957_85,0 +017232_97,15 +00065_244,12 +00916_2,2 +01134_68,10 +01829_32,12 +00837_156,11 +00677_1,14 +00964_282,14 +018132_111,11 +00128_76,4 +01001_243,5 +01623_112,14 +00474_228,2 +007182_118,19 +02094_60,2 +01509_135,0 +009642_175,8 +00408_84,11 +00333_151,2 +01087_23,14 +02005_173,11 +02191_116,14 +019252_104,3 +016052_65,5 +00490_194,2 +003122_25,0 +01706_235,2 +01643_91,14 +01437_21,11 +00475_15,5 +006972_3,2 +02049_3,14 +00011_32,1 +01509_279,11 +01283_67,14 +004172_263,11 +00438_137,2 +02028_65,3 +010012_201,5 +01568_50,2 +01091_217,9 +00128_225,4 +01643_47,14 +01787_37,1 +01278_0,2 +01623_102,5 +01636_73,0 +01091_121,5 +01865_26,11 +012282_7,14 +017072_209,0 +01361_9,5 +02054_200,2 +01351_16,2 +00160_140,11 +00729_198,14 +01839_130,1 +00175_4,2 +01431_298,11 +02042_2,14 +018772_286,4 +00768_2,14 +01272_113,2 +00709_240,19 +001022_182,16 +00528_83,2 +01428_51,14 +01568_31,2 +00474_279,2 +01865_128,11 +00417_253,5 +00628_70,7 +00721_116,14 +00408_107,11 +017232_79,15 +00306_40,7 +01977_152,8 +01956_19,15 +00505_206,12 +00413_118,0 +00128_187,12 +01769_75,9 +00546_85,3 +00821_137,14 +01240_185,4 +012722_46,2 +008402_98,2 +01925_148,3 +00681_28,5 +00159_39,2 +01046_58,7 +00462_72,13 +02005_272,11 +00783_3,2 +01219_124,5 +01948_56,13 +019242_4,14 +00102_95,16 +011082_4,14 +02054_254,2 +019242_193,14 +02146_71,18 +01977_246,3 +020052_212,11 +00718_72,19 +00242_143,2 +01804_19,4 +00287_117,15 +01228_207,14 +00875_80,2 +00490_296,5 +00964_91,8 +00597_76,14 +018392_6,14 +000792_143,9 +01423_120,0 +01688_161,14 +02049_113,13 +01959_6,6 +00709_268,1 +01568_44,2 +00660_4,14 +01688_274,2 +010012_75,12 +00011_27,4 +00503_42,6 +00462_22,14 +00158_196,5 +00394_22,17 +00228_196,9 +01427_47,17 +00867_126,17 +018122_108,2 +00552_6,2 +02057_150,3 +02027_107,14 +01094_7,14 +013302_20,2 +01210_155,6 +02057_0,2 +010652_81,18 +01688_82,5 +00688_90,12 +01092_21,17 +00505_77,5 +01044_174,4 +00776_42,4 +01330_8,2 +01407_20,12 +021622_54,7 +00505_155,14 +01500_53,4 +00519_127,7 +01158_71,12 +02172_16,14 +01877_176,4 +00124_160,19 +00837_82,11 +00916_76,2 +01605_179,11 +01330_263,12 +00578_13,14 +017692_5,2 +01813_32,11 +00442_277,4 +019622_125,0 +018772_120,15 +01161_124,17 +02127_146,17 +019242_159,14 +019252_255,8 +01877_100,4 +00382_114,19 +016842_13,14 +00426_91,0 +01145_42,2 +00456_151,2 +01971_273,4 +017232_36,15 +01428_6,14 +01971_76,2 +00485_112,1 +009162_120,2 +000232_73,3 +01643_12,14 +005392_98,1 +00941_49,4 +008372_151,11 +01158_153,4 +00722_135,17 +02138_251,14 +01437_43,11 +00475_193,1 +009512_15,14 +01834_153,8 +01437_234,11 +01834_292,8 +01972_147,3 +016882_225,5 +00783_272,5 +01941_95,14 +00462_193,14 +01158_98,4 +00111_64,17 +01058_140,2 +01948_58,13 +016882_227,5 +007292_197,14 +01925_217,8 +01723_207,15 +016932_152,0 +01045_112,4 +01094_9,14 +01582_3,14 +02049_58,3 +01278_75,12 +001022_292,16 +00783_282,5 +000092_225,2 +00546_152,15 +008922_20,0 +014272_32,17 +014882_103,13 +001602_37,11 +009352_5,14 +00350_57,14 +01330_64,18 +01829_25,12 +00506_54,4 +02021_11,14 +019712_136,12 +000792_221,15 +005092_166,12 +021622_96,6 +01407_19,12 +00840_165,7 +01240_97,12 +01605_230,11 +018122_41,2 +001242_120,19 +00228_245,11 +00761_65,14 +00962_0,0 +01256_112,14 +01693_70,0 +01423_24,2 +01706_117,2 +01145_224,4 +010012_79,12 +00408_128,13 +020572_114,2 +007832_22,2 +01182_3,14 +01501_69,14 +01366_61,17 +00475_291,9 +010872_134,5 +00314_164,4 +01228_106,14 +01909_96,2 +01423_37,2 +014882_178,0 +01622_21,0 +01118_9,14 +00394_8,14 +00552_77,7 +00848_65,17 +01814_266,11 +01228_209,14 +01769_176,2 +009512_126,0 +00783_264,5 +004672_23,11 +01693_81,0 +01210_23,7 +00588_39,4 +005502_38,18 +009642_87,3 +01278_205,2 +021462_177,14 +02005_168,11 +00793_32,14 +01582_65,5 +01977_188,8 +01048_89,14 +01065_70,18 +01925_224,8 +01087_159,5 +000792_235,9 +01834_194,8 +02094_8,4 +01834_110,8 +00232_123,13 +00128_160,2 +01748_67,0 +01981_7,14 +00438_186,2 +00528_34,2 +01723_8,4 +01423_145,0 +01330_150,9 +014372_85,11 +007832_31,2 +01091_151,5 +00935_23,7 +01145_78,4 +00160_6,2 +019712_119,2 +012722_232,2 +01158_162,4 +00730_140,14 +00128_114,12 +00761_49,14 +00660_250,14 +01165_57,5 +005092_220,12 +00280_250,14 +00024_23,7 +021462_21,5 +012722_193,2 +02187_134,16 +015972_89,0 +00333_102,4 +01191_146,14 +01431_93,11 +017232_84,15 +017072_270,7 +00041_165,7 +009352_79,7 +01865_115,18 +01333_51,0 +02030_242,16 +01977_24,2 +007222_146,6 +01184_46,5 +02187_141,16 +004172_290,11 +00993_253,14 +020052_282,11 +00821_100,5 +02177_34,4 +01191_137,2 +00021_146,4 +01814_47,5 +00474_129,2 +018392_104,11 +007292_227,14 +00509_9,2 +01568_137,2 +019252_123,3 +01953_104,4 +00417_159,6 +00837_126,11 +019412_125,14 +01909_209,2 +00228_72,17 +00490_188,2 +019042_61,2 +01058_86,4 +00567_139,5 +005882_5,2 +00490_203,2 +00535_269,6 +017022_73,14 +005092_80,2 +00615_127,11 +01814_262,11 +016982_73,17 +01361_252,15 +02028_63,3 +00783_252,5 +009622_13,0 +00505_101,12 +01046_76,7 +00563_73,9 +00342_89,14 +00567_289,2 +01108_49,14 +014232_211,0 +02138_11,14 +013332_46,13 +02049_17,4 +00721_227,14 +017232_147,15 +020572_139,3 +00721_150,14 +00438_199,2 +005062_140,2 +00588_114,13 +02054_64,2 +014232_230,12 +018652_123,1 +002802_61,12 +017482_99,0 +00442_112,2 +016052_170,11 +01493_203,1 +01953_263,4 +00456_145,14 +00703_6,14 +017692_151,9 +01448_23,0 +00102_133,16 +00228_215,9 +01161_167,17 +01909_210,2 +016052_3,14 +014372_197,11 +01283_21,2 +00426_19,0 +01605_268,11 +00485_218,1 +005282_195,0 +010012_58,12 +01219_26,5 +00232_74,13 +01597_36,0 +00709_64,19 +013302_151,9 +01094_91,11 +005282_39,2 +016052_167,11 +00175_26,13 +006742_77,14 +00413_85,0 +01493_84,1 +01101_53,7 +01409_88,0 +00350_267,5 +004532_34,9 +00456_35,12 +01007_50,5 +00588_223,2 +012722_187,2 +01240_49,2 +01118_26,7 +005502_20,18 +004172_264,11 +02186_114,14 +00124_246,0 +01119_28,11 +00539_34,6 +018792_10,2 +01210_212,6 +00916_43,2 +00957_28,0 +02057_95,2 +01962_73,0 +015972_39,0 +00485_40,4 +00506_139,2 +01431_280,11 +016092_7,17 +01814_5,5 +00456_100,14 +016932_158,0 +016842_54,14 +000792_146,9 +00490_46,2 +01839_3,14 +010912_235,12 +00102_272,16 +00159_46,2 +00566_180,8 +02054_108,14 +00941_45,4 +00390_44,5 +01145_51,2 +01092_184,17 +01330_37,9 +017752_53,12 +02042_140,14 +01457_50,7 +000232_166,2 +01692_78,1 +016882_81,5 +00079_121,9 +00550_119,14 +00453_129,9 +01278_93,4 +002802_53,2 +008402_79,2 +01256_51,4 +00159_14,4 +011082_13,14 +013302_152,9 +02127_177,17 +010872_86,5 +004532_195,9 +01228_290,14 +02146_26,11 +00825_68,12 +00964_143,8 +00761_201,3 +01412_76,0 +01409_125,0 +01707_207,0 +016052_64,5 +01278_41,2 +01134_24,16 +00609_8,14 +00588_108,13 +01134_236,10 +00721_16,14 +009162_233,5 +01278_81,4 +00382_102,13 +00490_195,2 +02021_40,1 +00442_207,4 +01048_77,14 +01228_67,14 +01161_81,17 +00674_106,14 +01688_107,5 +02127_283,17 +01092_195,2 +01240_128,2 +004172_122,17 +01001_17,2 +00023_155,6 +01688_210,5 +011912_40,14 +00453_218,9 +00535_244,6 +00539_127,1 +01219_52,5 +014372_207,11 +004172_7,14 +004082_201,11 +01177_105,14 +007762_22,4 +01901_158,12 +00993_59,6 +011772_118,14 +02187_163,16 +00848_117,17 +02005_164,11 +021722_50,14 +01278_172,4 +016932_147,0 +00079_38,9 +001022_167,16 +01941_257,14 +00538_94,17 +01924_20,14 +00550_1,14 +019412_138,14 +010912_41,12 +014122_50,0 +01490_6,14 +01839_40,5 +00962_63,3 +01723_214,15 +019622_65,0 +01959_18,6 +02172_119,4 +007212_134,12 +001242_162,19 +01493_189,1 +010872_162,5 +018772_243,4 +00793_67,14 +01001_78,12 +01541_38,5 +021772_8,4 +019712_110,4 +008922_49,0 +01707_268,7 +01272_5,2 +00102_223,16 +00287_210,4 +02149_1,17 +02138_241,14 +00490_120,12 +01622_108,0 +01144_62,3 +00181_145,14 +012282_143,14 +00021_42,3 +014122_7,4 +02027_53,18 +01119_18,11 +00660_106,0 +00438_202,2 +01769_79,9 +007092_114,12 +00957_45,0 +005282_213,0 +02094_31,12 +01278_234,2 +000092_89,0 +01165_87,5 +00660_32,0 +004082_129,13 +02057_24,2 +00840_52,2 +01509_188,0 +01184_59,5 +019242_145,14 +001022_263,16 +01165_84,5 +01977_88,8 +00848_90,17 +00519_109,11 +017022_51,2 +007092_123,4 +01981_67,5 +02172_2,14 +01087_209,5 +00065_257,12 +01706_40,2 +01688_230,5 +01184_45,5 +00242_223,12 +01688_116,5 +007182_22,19 +00981_49,11 +01103_91,14 +00021_72,6 +01046_92,7 +01953_281,12 +00276_52,11 +018652_139,14 +00503_238,1 +01351_85,17 +016052_283,11 +01972_260,14 +00280_170,12 +00981_38,11 +01272_76,2 +01045_195,4 +018792_95,2 +01048_35,5 +01312_41,7 +019242_213,14 +019252_11,14 +006092_39,11 +00567_65,2 +021462_99,18 +00550_53,18 +00242_160,2 +012282_24,14 +01972_198,3 +00181_86,0 +00951_128,0 +01437_195,11 +00474_120,2 +01210_25,9 +013302_172,6 +01941_195,14 +009162_144,2 +01161_138,17 +01706_233,2 +01929_46,0 +00390_68,5 +001022_85,16 +01925_95,3 +007292_238,14 +00825_86,2 +010912_51,1 +01145_47,2 +017692_232,9 +005282_41,2 +00011_7,0 +021622_128,5 +02138_289,14 +00546_108,3 +00228_44,11 +018652_82,18 +01684_39,14 +00761_297,3 +012192_106,5 +016922_13,14 +01723_220,15 +00350_86,5 +00935_58,7 +02094_44,12 +02057_131,15 +00160_131,11 +017692_266,2 +00242_241,12 +016922_43,2 +00306_68,7 +00957_80,0 +01941_285,14 +00509_175,2 +01158_118,4 +021622_92,12 +01423_165,0 +02028_69,6 +017232_64,15 +00867_143,0 +02172_62,12 +00697_45,2 +008402_174,7 +00350_27,14 +01941_13,14 +007212_237,14 +01693_231,0 +00821_64,5 +011612_178,17 +00490_248,5 +014372_68,11 +012192_107,5 +02187_271,16 +01044_217,2 +018392_155,1 +007222_80,17 +011772_86,14 +005062_63,6 +010652_51,18 +00703_102,11 +018772_110,4 +01272_141,4 +02062_138,4 +00009_126,2 +002752_28,14 +013302_96,9 +00232_107,13 +01493_186,1 +00519_124,7 +004082_36,1 +004172_209,17 +00875_89,2 +00158_245,5 +00490_282,5 +02127_88,17 +01877_75,4 +00848_35,17 +01814_191,11 +00761_283,3 +01358_29,1 +010012_296,5 +00729_113,14 +00538_34,1 +00009_139,7 +01972_25,4 +00021_69,3 +020572_35,2 +00417_90,6 +01240_264,4 +00503_280,6 +00688_35,4 +01177_38,14 +00160_272,13 +00761_271,3 +001022_136,16 +00681_25,5 +00160_127,1 +01541_49,5 +00567_255,5 +00951_5,14 +00837_139,11 +00088_38,5 +00228_109,11 +00718_68,19 +00382_119,19 +01158_26,0 +01723_204,15 +010942_93,5 +014372_57,11 +00567_101,2 +014882_58,13 +00102_112,16 +01488_100,13 +00160_13,2 +012282_295,14 +00453_179,9 +01497_17,0 +00175_51,2 +01283_33,2 +00993_152,7 +00506_122,2 +00979_14,1 +012282_222,14 +008252_25,2 +02127_201,17 +019252_35,14 +00490_127,2 +005092_174,2 +012282_142,14 +021462_135,5 +012722_63,12 +00509_142,12 +01814_206,11 +01007_253,0 +00417_158,6 +018392_11,2 +01448_67,3 +001112_79,14 +020052_148,11 +01834_47,8 +00442_241,4 +00660_92,0 +01330_196,6 +00474_2,2 +00703_72,11 +006092_67,14 +00677_77,14 +02149_52,17 +007292_153,14 +00697_31,1 +00546_41,14 +01488_238,5 +00567_87,2 +012402_96,12 +013332_36,4 +013332_41,0 +00660_57,0 +01361_189,3 +016842_4,14 +00840_60,2 +01578_216,14 +01228_287,14 +00417_160,6 +01409_156,0 +004172_227,7 +01092_245,12 +01693_207,0 +01423_66,2 +01423_58,2 +021722_162,14 +01087_169,5 +00964_294,14 +01748_51,7 +01948_24,14 +00408_126,13 +012612_59,2 +01972_153,3 +021462_59,18 +019712_10,2 +01953_214,4 +02049_202,13 +016052_1,14 +01706_259,2 +00528_133,4 +01448_116,14 +01272_208,4 +02127_61,17 +007092_171,19 +02030_267,16 +00438_97,12 +019712_75,4 +019042_123,2 +01087_205,5 +00528_150,0 +00935_92,7 +017752_12,2 +00566_234,8 +012722_268,2 +01361_110,3 +00160_271,13 +00916_69,2 +016052_113,5 +010012_1,2 +01688_14,5 +00314_281,4 +00538_125,12 +01144_121,2 +00462_16,14 +009642_43,6 +01272_0,2 +00079_243,9 +02172_136,12 +001242_106,19 +00934_56,11 +016932_207,0 +005882_158,13 +00528_210,0 +016882_237,5 +00314_141,4 +01501_45,4 +00718_114,19 +000242_77,7 +00041_146,7 +01971_118,2 +00588_125,13 +018772_79,4 +02027_121,14 +00242_182,2 +00158_289,5 +01361_32,2 +00426_126,0 +017672_7,14 +000232_4,2 +00962_59,3 +01001_84,5 +01087_286,5 +01879_12,2 +00408_185,11 +01330_277,3 +00011_119,4 +01707_222,0 +008252_44,12 +005392_240,1 +02187_192,16 +01046_43,7 +01605_34,14 +01626_98,7 +01001_4,2 +00916_248,5 +00721_187,14 +00951_79,0 +007832_40,2 +00453_34,9 +00607_54,6 +01165_76,5 +01261_111,2 +00181_15,0 +01501_95,14 +00413_150,0 +00979_66,1 +005062_22,2 +01058_37,2 +011612_28,17 +014122_2,4 +019042_102,12 +00718_111,19 +00528_32,2 +01929_209,14 +005882_96,13 +012722_40,2 +020572_159,3 +019242_177,14 +01423_109,0 +00721_103,14 +000252_34,17 +017672_41,14 +02057_56,2 +01423_3,2 +01408_23,14 +021912_7,2 +01045_137,4 +00160_270,13 +016052_199,11 +014232_105,0 +00563_112,2 +00426_35,0 +00821_125,14 +00935_3,14 +01972_84,3 +017752_176,12 +00837_169,14 +01058_150,2 +00503_281,6 +007212_53,4 +01971_108,12 +00475_226,1 +00350_15,14 +015972_42,0 +00981_98,11 +00730_73,18 +00509_127,2 +00993_80,7 +00009_256,4 +00981_110,14 +01161_54,17 +021912_88,7 +01578_124,14 +00776_78,4 +00962_89,3 +001242_184,0 +01941_36,14 +009642_268,14 +00588_186,4 +012192_17,14 +018132_14,11 +00413_180,12 +01145_46,2 +01494_5,14 +017752_76,12 +00681_8,2 +00539_238,1 +00438_95,2 +00160_204,11 +000092_264,7 +00563_11,2 +01763_60,12 +00408_149,11 +00674_63,14 +01007_205,0 +01948_67,13 +00563_64,9 +010012_218,5 +00342_48,17 +01775_118,2 +01358_32,1 +02027_3,14 +00485_39,4 +00282_49,17 +008402_116,2 +01184_132,14 +002802_97,12 +014122_19,0 +01959_15,6 +019252_134,3 +01626_118,7 +008922_55,0 +00721_45,14 +00394_53,17 +02177_61,12 +007832_25,2 +00079_170,9 +01457_75,14 +01968_110,14 +011772_9,14 +00280_13,14 +02054_49,2 +01256_34,12 +00793_65,14 +01692_139,5 +00490_237,5 +00951_33,0 +00793_281,2 +01493_15,11 +001112_88,14 +017672_182,14 +01177_81,14 +01087_65,14 +009512_154,14 +01707_49,4 +01493_223,1 +00546_91,3 +000092_259,2 +01767_100,14 +00442_295,4 +012282_182,14 +01693_13,2 +01423_160,0 +01877_264,4 +00390_33,5 +019252_266,8 +01423_39,2 +01210_269,9 +02027_74,14 +009642_59,3 +01972_253,14 +00550_2,14 +00102_274,16 +01877_34,4 +00503_283,6 +001022_40,16 +00128_276,12 +008922_29,0 +02030_37,14 +000792_40,0 +01191_16,14 +00232_140,4 +00566_135,8 +00768_27,7 +00079_256,9 +00462_206,14 +005392_17,6 +004172_208,17 +00567_226,2 +009162_134,2 +00506_97,4 +007832_103,17 +00730_125,14 +007092_242,19 +00160_191,11 +019712_109,12 +00535_22,2 +00232_116,13 +01361_19,5 +00721_226,14 +008402_52,2 +018132_10,11 +01488_157,13 +00916_292,5 +01092_173,17 +00550_79,18 +00867_153,0 +01423_7,2 +01431_63,5 +008922_26,0 +008402_155,7 +01693_284,0 +01971_73,4 +00413_127,0 +000792_215,1 +00408_179,11 +00722_78,17 +004172_35,17 +011912_192,14 +02005_5,11 +013332_43,0 +00730_1,14 +01407_41,2 +00761_113,14 +019712_239,12 +00951_120,0 +019622_82,0 +02149_16,6 +00128_169,2 +00079_165,15 +00417_119,17 +00703_95,11 +017072_255,7 +00160_9,2 +01707_227,0 +01118_49,7 +012612_25,2 +00535_232,6 +02027_48,18 +00408_51,1 +00442_274,4 +01423_191,0 +00875_98,2 +00280_244,14 +016932_181,0 +020052_197,11 +017672_57,14 +00747_31,9 +01409_213,14 +00333_169,12 +01423_244,2 +01488_133,13 +00607_56,6 +004532_20,9 +02030_175,16 +00475_123,1 +01959_33,6 +00111_46,17 +009512_37,0 +017232_261,15 +01972_280,14 +01605_41,14 +01972_137,3 +01092_285,14 +01834_279,8 +016982_58,17 +01706_36,2 +02054_89,2 +014882_243,5 +01953_203,4 +00485_147,13 +00660_289,2 +01103_82,9 +01312_30,7 +007292_108,14 +019622_113,0 +000792_238,9 +009642_220,3 +00442_99,2 +012192_0,14 +01408_81,14 +00609_79,14 +00159_36,4 +014232_232,12 +02057_182,3 +01500_6,9 +017672_135,14 +007092_192,19 +009642_6,14 +012722_165,2 +00848_136,14 +02057_164,3 +005502_13,5 +01219_104,5 +00417_202,17 +00350_198,5 +01409_148,0 +00438_68,2 +00720_27,0 +009352_32,7 +00566_32,12 +01101_106,1 +01909_42,2 +00993_275,14 +00333_62,2 +00964_14,14 +00566_74,8 +011912_106,7 +017752_87,2 +012402_275,12 +018392_141,1 +017072_111,1 +004172_220,7 +00181_107,0 +012402_47,2 +01007_211,0 +010912_183,1 +021622_77,17 +000242_59,7 +00485_17,2 +016052_111,5 +01427_108,9 +01366_154,14 +00102_85,16 +00916_93,2 +01158_39,12 +02005_195,11 +001242_193,0 +01351_45,7 +01971_180,2 +01283_19,2 +01161_80,17 +001022_285,16 +001022_77,16 +00024_55,17 +005502_112,18 +01331_7,14 +01968_102,14 +01767_77,14 +00783_266,5 +01763_136,12 +00721_167,12 +00539_147,1 +019712_87,4 +01578_209,14 +00993_193,7 +00660_211,0 +00957_6,13 +00730_150,14 +01091_211,9 +01044_156,12 +01929_170,0 +00417_118,17 +00413_55,0 +009512_120,0 +011612_124,17 +005882_80,13 +005392_62,1 +005882_225,2 +01568_184,12 +01948_32,14 +01626_65,7 +00588_32,4 +018772_8,4 +01119_31,11 +005062_40,2 +014232_203,0 +001602_96,1 +004172_11,14 +00951_143,14 +00350_236,9 +007832_117,17 +016052_168,11 +01283_23,2 +00475_135,11 +00158_32,14 +02186_0,14 +012282_177,14 +017232_298,15 +007212_184,14 +013302_222,6 +01210_14,9 +010942_70,11 +00276_55,11 +021722_251,14 +00535_144,1 +00951_108,0 +00628_122,7 +00160_258,13 +01144_163,12 +01134_97,10 +01412_12,4 +01497_45,2 +00453_56,9 +001242_220,0 +019042_2,2 +010012_60,12 +00677_99,14 +01769_263,2 +007212_46,14 +01882_1,14 +01134_263,10 +021772_30,4 +01948_155,13 +01144_198,12 +01361_23,0 +00709_195,19 +01763_242,2 +01457_80,14 +01408_8,14 +02030_155,16 +00314_83,4 +018132_51,11 +017692_85,11 +003062_52,7 +01622_39,0 +01145_188,4 +00102_110,16 +00467_22,11 +017072_117,1 +01812_79,2 +01278_70,12 +01925_62,6 +01001_11,2 +01748_55,7 +02149_30,17 +02005_152,11 +00160_134,11 +008252_18,2 +018392_10,2 +017072_216,0 +016052_103,5 +01692_84,1 +00539_173,1 +01723_55,15 +018772_32,4 +02054_146,12 +00275_104,14 +001022_254,16 +00181_79,0 +01748_65,0 +01103_67,4 +01834_62,8 +01929_8,14 +01929_192,0 +00981_83,11 +01437_72,11 +008922_22,0 +01361_200,3 +01408_124,14 +01787_5,13 +00417_28,6 +01497_43,2 +02054_111,14 +00009_122,0 +01366_84,17 +00964_74,3 +00282_19,7 +02146_70,18 +01909_62,2 +00462_158,13 +005502_15,5 +00535_129,9 +00382_59,17 +00539_48,1 +001112_46,17 +01853_111,5 +02094_97,2 +006742_11,14 +019412_49,14 +014882_193,13 +01706_278,2 +002802_195,14 +00475_266,9 +00519_28,7 +001242_179,0 +020572_81,2 +01177_20,4 +01497_40,2 +01219_43,5 +01578_109,14 +021622_91,12 +02138_185,13 +01408_1,14 +02049_223,3 +001022_198,16 +01065_14,11 +01834_13,14 +00065_272,12 +00793_219,14 +01698_27,17 +00282_66,11 +01044_203,12 +01044_220,2 +01331_28,17 +00962_54,3 +014072_22,12 +013302_103,6 +01240_199,12 +00160_99,11 +00609_69,14 +010912_182,1 +00160_161,1 +00413_76,0 +001022_234,16 +018342_104,8 +014372_280,11 +01814_240,5 +016882_104,5 +01509_101,0 +012282_191,14 +001242_212,0 +00979_97,1 +01962_111,0 +001242_6,4 +01812_120,2 +00563_56,6 +019242_190,14 +01623_79,11 +00417_61,17 +01698_34,17 +00951_21,0 +01091_115,5 +01509_204,0 +02030_84,16 +01692_141,14 +01210_145,6 +01094_94,5 +005282_189,0 +01092_174,17 +00729_174,14 +01929_161,0 +001242_90,19 +01191_131,7 +01706_209,2 +00102_164,16 +021462_83,18 +01568_98,2 +00566_122,8 +010942_45,11 +02021_109,14 +00009_31,7 +00772_24,7 +014372_245,11 +01904_126,2 +01431_167,11 +02042_21,14 +00567_244,2 +019252_157,3 +000242_93,7 +002752_37,12 +00601_120,14 +008482_102,17 +01412_37,0 +002752_49,14 +012722_262,4 +00935_18,7 +004532_249,9 +00535_157,0 +02057_14,2 +01494_95,14 +01210_63,17 +02186_61,5 +00588_67,13 +01812_40,4 +01568_81,4 +01312_3,14 +02049_186,13 +007832_189,4 +01956_54,15 +01707_73,4 +010652_97,1 +01509_160,0 +004172_158,6 +016882_276,2 +004532_89,9 +001022_24,2 +01412_93,0 +01278_36,2 +00390_3,14 +01423_148,0 +01007_294,6 +02042_72,15 +00242_244,12 +008252_83,2 +01493_121,1 +012612_50,2 +00783_43,2 +00783_173,2 +01693_190,0 +00916_34,2 +013302_142,9 +01814_58,11 +01972_99,13 +01763_220,12 +019252_237,8 +018342_54,8 +00567_135,2 +016882_147,14 +020572_169,3 +02146_162,14 +018132_144,14 +01094_46,11 +01693_59,0 +01925_174,8 +01045_67,4 +005392_232,1 +001022_235,16 +01953_63,2 +01971_2,2 +010872_146,5 +00024_84,17 +001602_101,11 +01493_142,1 +01626_63,7 +01044_136,4 +00660_148,0 +012192_90,5 +00228_126,9 +02172_95,14 +00160_81,1 +00546_204,14 +00597_66,14 +000232_83,4 +00413_193,2 +010942_92,5 +00296_61,7 +00467_61,11 +01488_160,13 +01409_49,4 +01177_19,4 +00841_3,14 +00503_265,6 +00567_178,2 +02172_212,14 +00934_32,1 +008252_2,12 +01787_39,1 +00390_63,5 +017072_12,2 +01877_138,4 +00261_25,12 +00793_26,14 +007222_18,17 +01901_184,14 +00841_1,14 +004532_173,1 +019712_168,12 +00438_153,2 +00867_82,17 +01087_281,5 +001602_47,11 +01103_20,17 +01091_138,5 +00228_184,9 +00776_59,4 +004082_11,2 +01626_37,7 +00065_90,11 +01702_16,14 +00242_246,12 +00276_76,11 +01706_26,2 +00660_213,0 +01158_103,12 +00462_41,12 +01693_151,0 +01769_186,2 +00079_254,9 +01361_243,15 +007292_167,14 +01901_113,5 +007832_203,2 +00848_110,17 +008482_138,14 +01431_253,11 +00660_162,0 +00438_163,2 +02187_39,16 +00128_227,0 +00159_93,0 +018342_181,8 +02187_250,16 +00232_88,13 +017692_23,2 +017692_226,9 +02146_120,18 +00793_148,14 +012722_212,12 +00848_70,17 +01240_27,2 +00546_6,14 +00821_127,14 +005882_123,13 +00916_184,2 +000092_138,2 +01707_167,0 +01094_12,14 +016922_57,5 +02186_70,5 +01448_105,14 +00287_180,15 +00793_182,14 +01494_37,7 +00601_1,14 +01623_4,14 +01972_175,13 +01046_100,7 +017692_278,2 +02030_289,16 +00993_221,6 +00408_195,11 +00660_18,14 +00160_19,2 +00242_146,2 +01283_29,2 +01814_99,11 +01158_133,1 +007832_46,2 +01144_71,8 +00111_36,17 +00065_290,1 +00535_212,5 +00934_36,0 +00242_152,12 +01909_126,12 +00314_155,12 +00408_251,1 +01423_194,0 +014372_26,11 +00761_148,12 +02146_107,18 +00438_229,2 +01094_29,11 +02191_36,7 +00490_64,2 +01361_168,3 +00287_37,4 +00875_32,2 +000792_279,9 +01431_102,11 +009642_149,8 +00721_58,2 +01493_105,1 +00456_49,14 +00232_177,14 +00607_9,14 +016052_28,14 +02021_110,14 +00158_50,14 +00009_16,12 +02191_27,7 +004532_33,9 +01278_8,2 +01145_17,2 +000792_277,15 +01161_149,17 +01210_181,6 +012612_11,2 +00158_177,5 +017692_177,2 +00009_76,0 +01158_66,0 +010872_85,5 +007092_251,19 +009162_150,2 +017232_202,15 +01044_53,4 +00417_247,6 +01707_284,7 +01361_175,3 +01161_6,17 +00681_74,14 +01201_95,14 +013302_228,6 +016882_161,14 +01769_223,9 +018342_153,8 +01925_69,6 +007222_57,4 +01814_257,11 +00453_22,9 +014372_42,11 +00009_247,12 +01977_253,3 +01568_111,2 +001022_96,16 +01692_15,14 +01423_14,2 +021462_176,14 +016092_18,17 +01925_290,8 +00628_57,7 +019412_269,14 +00783_9,2 +019412_40,14 +00342_1,14 +00275_112,14 +01001_118,5 +01191_68,7 +01488_54,13 +012402_176,12 +016932_271,0 +01058_32,2 +01968_51,7 +02138_214,13 +00287_206,4 +01361_11,5 +00228_99,11 +00793_276,2 +01578_175,14 +00475_1,2 +007092_215,19 +01962_45,0 +010912_214,9 +01408_220,14 +00442_41,14 +00413_162,0 +00993_8,14 +01877_241,4 +01045_58,4 +01408_6,14 +017672_63,14 +01707_225,0 +00550_68,18 +00550_112,18 +02127_134,17 +01698_68,17 +01925_222,8 +02005_134,11 +009512_147,14 +00228_173,9 +00721_8,14 +00535_61,2 +009512_4,14 +011612_149,17 +00772_71,7 +002752_86,14 +00964_37,6 +00539_128,1 +00957_11,0 +02162_19,14 +00079_98,9 +00916_153,2 +01272_213,12 +00730_7,14 +01191_93,7 +01971_189,2 +00350_265,9 +002752_107,14 +00282_107,14 +007222_33,17 +00041_133,7 +01767_199,14 +021622_26,5 +00607_126,5 +02030_108,16 +001242_47,0 +02187_200,16 +00615_166,11 +008402_284,2 +01636_27,0 +017072_65,0 +01428_1,14 +00761_38,14 +00588_31,12 +00730_68,18 +01408_226,14 +01877_272,4 +01044_67,4 +00519_112,11 +016052_242,11 +01283_34,2 +020052_153,11 +014072_10,2 +01904_165,12 +00158_54,14 +01278_178,2 +012402_204,12 +01494_14,14 +00442_204,4 +007762_0,14 +01427_69,9 +00442_44,2 +017232_175,15 +017752_72,12 +01707_90,0 +00228_187,9 +007222_5,17 +01977_118,8 +00485_183,1 +00023_45,6 +01971_135,12 +014272_6,14 +01494_50,7 +01182_55,13 +01007_240,1 +017672_45,14 +012562_18,4 +00102_69,16 +01361_70,4 +01977_266,4 +00128_55,4 +01953_283,12 +005882_222,2 +00181_89,0 +000232_156,6 +010012_9,2 +01278_210,2 +01240_145,12 +009512_63,0 +009162_80,2 +010912_174,11 +018342_140,8 +00442_296,4 +00674_91,14 +01956_31,18 +01437_94,11 +01278_97,2 +00709_285,12 +01605_19,14 +018342_232,8 +01769_173,0 +014232_160,0 +01688_243,5 +007182_98,19 +00232_175,14 +00615_195,11 +00175_0,2 +02030_95,16 +001242_157,19 +01814_39,5 +02027_85,14 +01431_112,11 +016052_235,11 +00566_157,8 +01361_30,2 +01134_169,10 +01049_59,7 +00578_61,1 +009352_77,7 +01087_138,5 +017692_30,2 +01924_16,14 +005392_27,6 +01045_20,2 +01925_184,8 +02162_12,14 +00408_274,1 +01145_97,4 +01925_135,3 +01278_123,4 +00935_50,7 +018772_168,4 +01834_177,8 +005882_58,13 +00333_161,2 +010912_251,2 +02030_176,16 +00475_294,9 +008252_61,12 +01007_88,0 +01684_16,14 +00916_117,2 +00588_191,2 +01065_114,14 +00509_108,12 +00306_42,7 +00566_20,14 +01423_27,2 +01134_207,10 +01924_45,14 +02049_88,3 +00438_188,2 +00722_60,4 +01119_5,14 +01626_107,7 +000232_194,2 +00408_242,11 +01488_235,5 +00962_81,3 +01134_139,10 +00474_188,2 +01839_17,2 +00475_222,1 +017232_114,15 +01688_23,5 +019042_139,12 +01272_135,4 +01853_61,5 +005392_194,1 +01007_239,4 +011772_54,12 +00607_125,5 +00993_172,7 +02049_206,13 +00350_157,9 +02138_76,12 +01509_149,0 +00703_34,11 +00503_147,9 +00442_22,14 +01707_203,0 +00242_52,12 +01605_119,5 +018652_42,18 +01723_263,15 +007832_99,17 +00776_63,4 +008482_34,17 +01437_118,11 +00783_296,5 +01814_241,5 +01409_50,4 +00413_61,0 +016432_84,14 +01103_70,14 +001242_51,0 +005282_165,0 +01706_172,2 +01161_3,17 +01219_45,5 +01001_119,5 +02172_262,14 +00793_169,14 +005282_93,2 +01597_101,0 +010012_229,5 +007092_293,12 +00275_65,14 +00228_33,14 +02049_248,3 +01901_119,5 +01108_26,15 +00951_28,0 +000092_143,7 +00009_2,4 +00509_182,12 +01351_93,7 +005092_104,2 +01968_106,14 +01044_86,4 +021722_261,14 +019622_128,0 +000092_220,12 +00722_2,17 +00181_51,0 +016932_78,0 +02062_35,2 +01448_99,14 +007832_211,2 +01423_176,0 +01839_97,11 +01622_43,0 +00102_257,16 +00490_145,2 +02172_60,14 +01330_195,6 +02172_231,14 +001602_130,11 +01210_134,6 +01693_104,12 +021912_108,7 +00079_40,0 +00535_121,6 +00158_43,14 +01763_24,12 +00539_74,1 +00588_208,12 +01108_54,14 +009342_44,0 +00528_124,2 +00962_4,0 +01706_39,2 +00892_15,0 +015972_43,0 +01007_61,0 +00453_288,9 +00535_291,2 +00023_73,3 +018392_2,14 +01145_6,2 +01408_205,14 +01812_16,2 +017672_72,14 +00528_87,2 +00079_193,9 +017072_285,7 +00506_29,2 +00474_32,2 +009642_253,14 +01501_47,4 +00747_48,4 +00688_93,2 +016882_75,5 +00916_233,5 +02049_118,13 +00102_180,16 +01412_67,0 +00232_41,12 +00628_132,14 +00577_0,14 +01431_154,11 +01763_142,2 +01948_49,13 +000092_31,7 +00453_38,9 +02005_236,11 +02187_279,16 +00475_170,9 +02088_40,0 +002802_188,2 +018772_83,4 +02054_198,2 +01092_136,9 +00761_212,3 +01707_20,2 +01144_164,12 +01428_85,14 +005392_160,17 +01767_11,14 +00709_253,19 +018772_235,4 +01261_78,12 +01953_92,4 +01201_45,11 +01108_38,13 +021772_47,12 +00848_75,17 +00993_261,14 +018652_44,18 +017072_69,0 +01201_87,11 +01182_102,14 +01177_64,15 +018652_58,18 +01763_54,12 +02162_114,1 +00730_61,18 +01408_144,14 +01834_26,12 +019622_45,0 +005392_169,1 +00413_217,14 +00287_145,15 +007222_58,4 +016052_70,5 +014282_21,4 +01839_18,2 +01626_131,2 +019252_21,14 +01941_146,14 +01971_1,2 +00722_124,17 +01134_27,10 +01977_260,3 +00837_103,11 +00916_198,2 +01408_9,14 +00697_16,9 +000242_90,7 +01578_1,14 +00456_92,12 +02021_6,14 +009512_59,0 +01210_91,6 +02005_271,11 +014882_180,0 +02057_10,2 +017232_209,15 +00011_53,12 +02187_25,16 +01702_85,14 +00916_271,5 +017232_154,15 +021722_204,14 +01693_33,14 +010872_277,5 +00413_81,0 +01145_88,4 +00417_177,6 +01814_14,5 +017232_235,15 +00175_15,4 +00883_21,11 +00964_273,14 +00660_62,0 +00475_165,9 +01228_212,14 +01161_72,17 +02005_228,11 +02030_162,16 +01977_155,8 +00546_18,14 +018392_15,2 +010872_285,5 +019712_125,2 +01692_138,5 +01278_152,12 +008402_211,7 +01228_68,14 +02057_191,3 +01541_9,14 +01839_99,11 +001242_222,0 +00697_76,5 +016932_215,0 +00350_205,5 +01101_148,14 +00382_96,19 +01853_69,5 +016922_37,2 +01924_100,14 +004532_30,9 +00475_270,1 +00456_118,2 +01707_189,0 +017232_259,15 +01161_170,17 +00474_231,2 +01723_177,15 +01007_201,0 +00413_202,12 +00709_297,12 +019242_74,14 +00546_1,14 +000092_229,2 +00485_82,1 +01094_73,11 +012402_85,2 +00228_66,7 +007222_8,17 +01626_52,7 +00462_10,14 +01494_38,7 +01925_65,6 +005392_111,1 +000792_93,9 +01853_8,14 +00438_204,2 +00160_97,1 +01144_26,5 +01688_151,14 +01493_110,1 +00456_73,12 +009512_18,4 +010912_154,5 +017752_171,12 +011612_213,17 +00772_13,14 +01092_155,6 +01501_77,4 +02138_272,14 +014372_228,11 +019252_72,6 +01361_102,6 +009512_128,0 +02187_76,16 +02127_9,2 +000092_6,4 +00772_94,14 +00079_201,9 +01119_2,14 +00462_40,12 +019252_57,6 +00567_32,2 +00546_201,14 +01210_26,9 +014882_208,0 +004532_101,9 +00709_176,19 +00993_262,14 +00588_144,13 +02177_38,4 +00674_94,14 +01145_253,4 +007292_290,14 +000092_195,0 +00703_47,11 +01145_5,2 +020052_183,11 +01272_11,2 +01948_130,13 +01351_137,7 +016922_105,1 +00228_189,9 +02028_10,4 +019622_112,0 +005502_121,14 +00009_119,7 +010912_9,2 +01201_96,14 +00442_109,2 +01046_20,7 +007212_102,14 +01161_229,17 +01333_18,2 +01046_116,14 +00275_144,14 +01158_122,4 +002802_155,2 +01568_42,2 +011612_184,17 +009352_6,14 +00485_274,12 +01045_216,4 +006742_3,14 +00490_148,2 +01948_113,13 +009162_119,2 +01240_236,12 +007832_132,12 +01161_180,17 +01839_93,11 +01448_101,14 +018652_26,11 +01488_78,0 +00935_46,7 +01769_155,9 +00552_36,7 +01431_58,11 +02187_49,16 +016982_8,14 +00709_167,19 +016052_257,11 +02027_25,18 +00875_43,2 +004532_11,11 +01001_196,5 +00276_5,14 +00438_41,2 +01698_30,17 +010872_141,5 +00450_0,14 +01688_123,14 +019712_225,2 +01092_236,9 +017692_167,11 +01578_172,14 +007292_86,14 +016932_105,12 +00314_170,4 +010872_151,5 +00709_208,19 +01408_119,14 +01839_131,1 +012562_81,12 +006742_96,14 +01427_95,17 +014882_132,13 +02021_54,11 +02054_61,2 +019252_244,8 +01210_277,9 +01929_94,0 +01707_12,2 +01501_85,14 +007092_208,19 +004672_52,11 +00916_139,2 +014372_113,11 +01228_264,14 +02054_109,14 +01962_133,0 +00981_37,11 +01201_118,14 +01909_1,2 +004172_213,17 +01748_41,0 +02054_177,4 +009642_184,8 +00535_132,9 +012402_287,12 +00158_33,14 +00394_90,9 +02138_86,14 +008482_88,17 +01787_44,9 +01358_47,1 +00021_25,5 +001022_6,2 +005502_132,14 +018342_292,8 +005392_63,1 +01330_117,1 +010942_59,11 +00413_224,14 +00314_199,4 +018392_160,1 +02127_193,17 +01925_227,8 +01707_233,0 +001022_189,16 +01948_179,13 +01904_93,2 +011772_11,14 +00709_257,9 +00079_72,9 +00024_15,2 +00456_114,4 +010012_119,5 +01049_47,7 +01622_14,14 +00158_10,14 +011912_139,2 +00677_105,14 +00102_78,16 +009642_280,12 +013302_56,18 +02042_41,14 +00597_19,14 +00538_68,1 +01045_279,4 +01092_296,4 +00160_42,11 +00232_166,14 +009642_214,3 +004172_63,17 +00160_82,11 +00539_205,1 +018772_113,4 +008482_154,14 +01046_55,7 +00474_95,2 +007212_190,14 +00474_226,2 +004082_220,11 +012402_193,4 +00677_76,14 +01568_131,2 +01605_13,14 +009162_205,2 +01684_25,14 +00509_220,12 +019712_115,4 +01087_51,14 +01428_14,14 +016932_228,0 +019412_90,14 +01408_245,14 +01877_216,4 +01977_67,6 +00242_47,12 +00485_257,12 +01977_187,8 +01409_180,0 +02172_154,4 +001602_120,11 +00474_205,2 +00158_254,5 +021722_206,14 +01437_201,11 +01228_268,14 +02138_212,13 +018342_218,8 +019252_13,14 +01428_47,14 +007292_38,12 +02021_50,11 +01839_75,11 +005282_185,0 +00964_272,14 +01568_235,2 +01094_62,11 +00509_157,2 +00228_118,5 +01925_56,12 +00242_195,2 +01814_283,11 +01924_109,14 +01688_175,2 +01044_16,4 +010872_94,5 +00024_57,17 +019712_268,4 +02057_112,2 +00964_259,14 +00615_15,11 +000792_223,15 +00065_268,12 +00280_54,2 +019042_77,12 +02162_58,7 +01501_100,14 +00721_229,14 +01007_86,0 +01698_59,17 +01351_70,17 +009642_162,8 +02030_246,16 +00566_28,14 +01609_33,17 +01423_213,0 +018392_22,14 +020052_40,11 +01488_107,0 +00158_144,5 +00588_227,2 +01091_242,2 +00128_241,12 +01953_79,7 +01087_196,5 +009162_258,5 +01605_24,14 +01941_274,14 +01431_221,11 +02005_25,11 +01210_36,1 +007832_269,5 +00474_293,2 +00615_37,11 +01763_159,2 +005392_242,1 +01409_108,0 +00793_20,14 +01977_2,14 +021722_255,14 +01228_82,14 +00867_25,14 +00615_23,11 +00957_43,0 +02042_129,0 +016932_133,0 +00772_53,7 +01219_122,5 +01184_13,14 +00438_247,2 +00079_84,9 +01972_223,3 +00768_63,7 +02138_294,14 +00394_26,17 +018392_100,11 +01901_37,0 +010912_103,0 +000792_103,0 +010012_282,5 +005882_2,2 +02187_167,16 +00181_60,0 +021912_95,7 +01408_163,14 +00394_124,14 +008482_69,17 +01787_22,13 +02094_123,4 +007222_49,17 +00539_193,1 +001242_104,19 +01924_23,14 +02030_43,14 +012612_108,2 +01228_19,14 +01158_152,4 +010912_240,2 +00306_28,7 +014122_64,0 +012562_37,4 +01609_30,17 +00567_223,2 +000252_60,17 +00935_90,7 +01541_41,5 +007182_77,19 +004532_141,9 +00964_20,14 +00314_86,4 +01500_26,3 +01161_13,17 +00875_46,2 +01901_139,5 +01877_208,4 +00314_285,0 +00578_77,4 +007212_211,14 +01493_82,1 +00158_158,5 +01094_100,2 +012282_210,14 +00287_147,15 +021772_28,4 +00566_12,14 +003062_7,14 +00538_0,14 +00333_165,12 +021462_150,14 +000252_55,17 +012402_14,2 +00474_168,2 +01240_12,2 +00417_43,17 +014232_200,0 +01767_153,14 +009642_2,14 +019412_117,14 +00848_56,17 +00916_13,2 +01971_267,2 +018772_81,4 +01191_126,7 +01409_54,4 +01007_206,0 +005502_55,18 +01698_117,14 +02186_22,5 +008482_156,14 +00065_105,11 +00519_116,11 +012282_240,14 +009642_23,14 +017232_228,15 +00065_149,1 +01437_24,11 +02030_64,14 +01882_80,14 +021462_124,11 +00566_137,8 +012282_121,14 +019412_119,14 +00609_24,11 +000232_74,3 +01971_75,4 +01953_262,4 +011612_170,17 +01707_234,0 +000792_83,9 +00390_51,5 +01161_288,17 +018342_229,8 +00079_197,9 +01977_258,3 +012722_97,2 +00509_39,2 +00079_232,9 +01977_82,3 +00615_188,11 +01065_45,18 +01609_36,17 +01219_134,14 +014882_248,5 +00528_40,2 +00546_116,3 +00837_24,11 +01568_233,2 +02062_38,2 +01001_254,5 +009642_298,14 +01929_120,0 +018392_117,11 +016932_295,0 +01001_209,5 +01046_121,14 +001242_121,19 +02005_176,11 +017692_228,9 +00628_75,7 +01134_260,10 +00490_147,2 +00615_191,11 +01408_167,14 +020052_242,11 +018772_119,4 +00453_51,9 +01924_79,14 +01101_169,14 +01045_127,4 +02146_136,5 +02054_284,12 +011612_193,17 +01698_66,17 +020572_199,3 +00228_229,5 +00677_79,14 +00417_55,17 +01834_166,8 +01494_24,7 +00181_59,0 +017232_67,15 +00721_203,14 +00597_38,5 +00688_13,2 +01210_38,1 +00475_180,1 +014232_100,0 +00408_222,11 +01877_50,4 +00102_199,16 +002752_11,14 +010872_223,5 +02049_263,3 +00709_154,5 +00674_51,14 +001022_86,16 +00563_57,6 +01046_61,7 +00453_271,9 +010912_180,1 +00578_83,1 +005392_264,1 +02049_256,3 +021462_174,14 +02012_103,17 +012402_113,4 +00848_17,14 +01636_5,14 +000092_244,12 +01240_125,2 +00426_1,14 +019252_32,14 +01201_114,14 +007182_23,19 +01509_146,0 +00503_88,1 +012722_142,4 +01058_33,2 +00567_177,2 +00615_19,11 +00609_34,11 +004532_210,9 +019712_224,2 +005502_123,14 +008922_63,2 +00718_36,19 +020572_103,2 +00160_146,11 +00296_15,14 +01065_38,18 +02028_102,2 +00546_193,14 +016882_32,11 +01240_219,4 +00703_63,11 +018342_221,8 +01094_56,11 +00783_202,2 +00660_104,0 +00175_33,13 +01103_1,14 +01972_199,3 +02054_134,2 +007212_161,14 +018342_49,8 +02088_37,0 +014232_25,2 +00729_296,14 +02187_252,16 +00841_57,14 +00916_213,2 +01568_70,2 +02088_17,0 +007092_164,4 +016052_282,11 +01490_38,7 +00280_35,12 +01609_42,17 +007092_246,19 +01161_211,17 +00848_45,17 +000242_88,7 +017232_214,15 +01087_61,14 +01834_156,8 +00505_233,14 +00722_139,17 +018342_249,8 +00417_105,6 +00607_4,14 +014372_4,11 +020572_122,4 +00615_177,11 +02054_126,4 +01707_298,7 +00242_37,12 +019412_248,14 +01804_99,4 +00783_79,17 +008832_12,11 +02162_120,18 +014882_124,13 +00453_30,9 +019712_17,2 +00538_73,17 +01431_242,11 +00475_197,1 +02005_199,11 +001242_203,0 +007292_6,14 +01219_32,5 +009352_109,14 +019712_76,2 +00021_100,12 +00490_173,2 +01358_48,1 +00916_50,2 +01702_55,2 +01044_195,12 +01924_126,14 +01145_250,4 +001022_115,16 +00503_270,6 +01278_4,2 +00438_272,2 +01210_274,9 +008402_135,7 +001022_280,16 +016922_64,5 +01904_21,2 +01134_274,10 +01184_86,5 +02177_32,4 +00417_282,1 +00408_187,11 +016882_245,5 +00160_274,13 +01924_5,14 +00722_66,17 +006742_75,14 +00417_53,17 +007762_48,12 +01723_97,15 +01925_251,8 +01707_238,0 +009512_31,0 +00287_5,4 +004172_137,17 +01582_62,2 +01626_13,2 +01877_12,4 +01578_117,14 +00729_291,14 +01814_8,5 +01688_122,14 +008402_44,2 +01763_21,12 +01853_16,2 +00314_284,0 +017232_42,15 +000252_8,17 +00951_110,0 +013302_226,6 +01361_148,3 +008402_229,2 +02127_48,2 +00993_38,14 +00697_22,9 +000792_70,9 +00577_117,14 +00935_116,14 +00175_45,11 +00721_20,14 +01501_87,14 +00709_242,19 +01119_88,11 +02049_273,4 +02012_89,17 +01723_286,15 +00892_76,2 +01814_167,11 +01412_31,0 +01688_142,14 +00453_188,9 +00438_30,2 +01001_105,5 +02030_93,16 +01501_15,4 +000232_162,5 +01877_255,4 +01272_206,4 +005882_160,13 +000792_107,14 +012562_34,12 +000232_34,4 +00840_247,2 +012402_90,2 +02054_262,12 +01144_29,5 +010652_4,2 +01948_176,13 +01688_288,2 +00550_9,5 +016052_105,5 +02062_17,2 +00539_79,1 +012282_131,14 +01953_183,12 +01493_177,1 +01622_65,14 +00160_91,11 +019412_156,14 +004532_212,9 +008482_140,14 +01929_112,0 +017752_140,12 +01684_36,14 +01623_27,14 +00509_174,2 +00394_76,12 +001602_274,13 +021622_123,1 +00438_154,2 +00566_42,6 +01698_118,14 +002802_125,12 +01568_115,2 +00474_286,2 +00538_102,18 +018772_283,4 +008482_147,14 +018772_217,4 +00566_144,8 +00793_279,2 +00840_96,2 +01494_44,7 +019412_214,14 +016052_57,5 +00761_173,3 +001022_93,16 +012192_109,5 +01457_22,7 +00505_89,12 +012722_167,2 +00413_86,0 +01953_294,2 +01622_19,14 +008482_122,17 +012722_129,12 +00567_63,2 +00079_280,9 +00450_58,4 +010652_11,11 +019042_46,12 +009162_255,5 +00566_210,8 +00538_142,14 +00601_116,0 +00535_237,6 +00934_49,0 +004082_120,13 +00232_56,4 +007222_64,17 +01118_17,14 +018772_158,4 +01412_24,4 +02187_89,16 +007292_92,14 +01182_26,13 +00528_167,0 +00041_36,12 +01597_73,0 +00783_177,2 +01775_9,2 +012282_292,14 +01509_273,11 +014372_19,11 +01597_59,0 +00426_14,4 +012282_158,14 +014232_4,2 +011772_60,4 +01568_192,2 +01904_147,4 +01119_113,14 +017692_79,9 +007092_190,19 +010652_34,18 +01877_76,4 +01493_292,1 +00875_20,2 +00825_74,12 +01972_35,6 +00041_93,12 +00438_136,2 +00916_280,5 +011772_33,14 +00467_31,11 +014372_196,11 +008482_78,17 +00124_109,19 +005282_2,2 +00450_142,15 +017692_180,2 +005392_101,1 +001022_111,16 +01693_80,0 +01278_133,2 +011612_108,17 +01423_122,0 +01058_71,2 +010872_58,14 +016432_49,14 +00025_12,17 +02027_72,14 +02138_51,14 +01962_43,0 +019592_24,6 +005392_39,6 +02049_119,13 +01184_10,14 +004172_196,17 +018652_96,18 +01693_153,0 +00688_53,4 +01904_111,12 +01578_133,14 +00883_33,11 +01787_49,9 +007762_69,14 +017072_233,0 +021622_14,14 +00408_21,1 +01409_204,14 +01427_7,14 +009642_24,14 +017072_93,0 +01605_171,11 +02030_296,16 +00539_122,1 +01702_82,14 +00993_64,6 +008402_68,2 +00535_3,2 +01161_147,17 +00228_292,7 +001602_140,11 +02021_64,11 +020052_2,11 +00280_60,12 +021462_67,18 +01437_1,11 +01493_255,9 +00793_287,14 +01108_70,14 +02054_164,12 +02054_80,2 +02127_122,17 +017672_60,14 +017692_64,9 +00550_55,18 +00242_261,4 +00718_16,19 +018132_152,14 +00287_224,4 +00102_299,16 +00721_157,4 +00228_276,2 +00102_21,2 +02030_173,16 +01278_19,2 +01948_34,4 +01488_47,0 +020572_55,2 +00128_66,12 +00296_16,14 +00993_100,7 +00312_17,0 +00160_156,11 +01210_89,9 +021722_174,14 +01941_267,14 +00128_90,12 +016932_39,2 +019242_85,14 +000232_189,2 +00333_155,2 +01228_85,14 +01087_258,5 +01046_17,14 +00417_19,6 +01488_199,13 +00462_83,13 +007212_251,14 +00677_5,14 +01925_276,8 +000242_41,7 +014882_153,0 +00566_36,6 +01767_62,14 +008372_111,11 +01763_82,2 +01312_27,7 +021912_44,7 +00825_80,4 +007092_84,19 +01312_17,7 +013302_148,9 +016932_176,0 +01145_119,13 +02057_20,2 +016982_90,17 +01839_117,11 +018772_153,4 +00102_255,16 +01578_257,14 +01929_212,2 +002802_85,2 +01763_221,2 +00722_42,17 +01977_173,8 +01834_40,8 +017022_43,14 +00128_2,12 +019242_152,14 +01692_92,1 +011612_53,17 +00023_115,5 +001242_228,0 +006742_74,14 +010012_152,5 +00280_52,2 +021772_57,12 +00509_93,12 +01001_229,5 +00964_121,8 +00228_287,14 +00102_36,16 +00722_54,4 +00128_18,12 +013712_58,14 +01622_102,0 +00453_33,9 +00674_73,14 +014882_134,13 +01698_122,14 +01953_292,2 +00350_41,14 +01361_105,6 +008482_148,14 +00567_214,5 +00102_192,16 +00892_12,0 +01007_275,6 +00181_28,0 +008402_173,7 +01184_33,5 +016882_154,14 +016432_55,4 +00102_280,16 +01408_108,14 +02127_73,17 +020052_181,11 +008402_133,7 +007222_110,17 +02049_209,13 +00577_66,7 +020572_171,3 +01409_235,14 +008832_18,11 +01161_33,17 +008922_75,2 +01497_53,12 +00350_288,9 +012612_33,2 +001112_16,14 +01929_117,0 +00485_94,1 +007762_87,4 +01605_202,11 +00761_139,14 +01901_86,0 +00442_160,0 +01879_42,5 +012722_215,12 +010012_8,2 +00677_69,14 +01623_134,14 +01909_162,2 +000792_111,15 +01706_271,2 +009512_13,14 +01358_52,1 +01971_223,2 +005882_132,13 +01972_67,3 +006972_72,4 +01981_6,14 +01767_212,14 +010912_184,1 +01494_11,14 +00453_108,9 +00065_169,1 +01767_223,12 +00438_70,12 +021462_82,18 +00867_45,17 +02027_14,17 +01767_225,12 +01953_31,2 +01981_90,5 +019042_48,12 +01219_71,5 +01568_134,2 +01839_4,14 +01283_4,14 +01333_14,12 +01161_203,17 +02042_31,15 +017072_6,2 +01568_145,12 +00276_31,11 +018122_50,4 +019242_237,14 +01501_3,14 +01706_221,2 +000792_37,9 +008402_50,2 +00729_290,14 +01597_27,0 +012562_47,4 +01228_148,14 +00408_131,13 +02094_114,12 +01959_42,6 +01240_160,2 +007212_13,14 +007212_30,12 +01623_0,14 +02028_99,2 +00783_295,5 +01201_105,14 +00503_191,9 +012562_4,14 +018772_249,4 +02146_3,14 +01191_129,7 +01605_213,11 +00453_3,5 +00175_10,12 +002802_28,12 +01448_96,14 +00065_94,11 +010872_212,5 +00413_167,0 +01877_10,4 +010912_211,9 +017752_139,12 +00535_165,0 +01706_239,2 +01272_151,2 +00993_11,14 +007832_8,2 +021772_22,4 +02012_128,14 +00287_137,15 +019622_75,0 +019592_46,6 +01688_247,5 +01044_61,4 +01219_9,14 +01184_137,14 +008922_59,2 +008832_29,11 +01813_109,11 +002802_12,14 +01431_127,11 +00350_140,9 +01509_45,0 +01814_162,11 +01371_0,14 +012562_9,14 +00660_295,14 +004082_24,1 +00242_42,12 +013302_27,12 +00079_270,0 +01431_254,11 +00607_128,14 +01723_194,15 +01278_113,12 +01929_70,0 +010872_229,5 +00417_48,17 +021462_110,18 +01361_254,15 +004082_89,11 +008372_57,11 +02149_37,17 +01953_88,12 +010012_246,5 +007832_26,2 +01865_41,18 +01366_52,17 +00413_209,14 +00688_41,4 +006972_71,4 +00065_75,1 +02191_65,7 +01103_37,12 +010872_200,5 +01330_100,9 +01184_131,14 +020052_284,11 +006092_71,14 +000792_138,9 +00128_88,12 +01763_103,2 +01161_215,17 +01007_242,1 +01201_79,11 +01210_299,9 +01971_221,2 +019412_127,14 +01065_36,18 +005282_40,2 +017072_182,4 +01904_90,2 +01201_113,14 +00505_182,5 +01490_8,14 +00296_2,14 +00761_202,3 +011772_10,14 +00609_28,11 +00124_5,4 +00601_59,9 +006972_69,0 +01813_88,11 +00601_61,9 +01312_46,7 +00128_194,12 +00588_196,2 +01144_106,4 +00601_65,9 +007212_153,4 +004172_147,7 +014272_86,4 +00462_143,13 +00312_0,0 +01044_58,4 +01493_272,1 +01723_161,15 +001602_252,11 +00597_56,5 +01437_258,11 +006972_11,12 +01767_166,14 +016052_106,5 +00503_112,1 +00011_40,1 +01007_174,13 +00916_179,2 +005282_214,0 +00615_168,11 +00840_73,2 +00442_64,2 +017482_76,0 +019622_17,0 +01407_30,5 +00232_51,4 +014072_7,2 +00588_232,2 +00124_11,4 +019242_54,14 +02012_107,14 +010912_260,2 +01626_135,2 +00916_18,2 +018342_133,8 +007832_42,2 +00342_51,17 +009342_57,11 +000092_4,4 +00065_114,11 +00408_135,1 +00578_21,1 +01962_79,0 +02062_78,12 +01968_79,7 +00023_186,2 +018122_11,2 +011082_78,14 +01408_260,14 +01448_76,3 +02172_27,14 +00024_111,2 +021462_84,18 +00964_56,3 +007212_216,14 +005062_124,2 +01312_73,7 +02030_285,16 +00550_31,18 +018342_179,8 +018392_176,12 +01409_217,14 +00426_166,14 +017672_192,14 +021462_68,18 +000092_48,12 +016092_27,17 +00768_19,7 +007092_19,19 +008402_80,2 +01087_137,5 +01437_3,11 +01228_100,14 +012722_54,4 +001242_156,19 +02162_137,14 +01182_14,4 +00729_96,14 +019712_190,12 +00456_94,12 +017752_92,4 +01865_50,18 +00722_94,17 +005282_208,0 +01605_277,11 +00287_244,4 +00979_63,1 +00566_185,8 +01191_7,14 +01953_162,4 +01256_88,4 +00552_26,7 +009642_139,8 +012722_89,2 +00867_92,5 +00350_208,5 +01959_21,6 +01201_110,14 +00158_227,5 +01144_101,12 +01702_84,14 +00697_36,4 +01941_33,14 +00102_125,16 +01493_244,1 +007092_55,19 +01058_159,2 +01058_19,2 +00519_47,17 +005282_164,0 +01428_73,14 +005062_86,4 +00951_58,0 +00660_236,0 +01775_134,2 +00539_59,1 +01578_159,14 +01909_108,4 +01228_288,14 +01219_88,5 +012282_17,14 +018652_132,2 +00783_261,5 +00158_233,5 +01493_50,1 +00160_220,11 +01361_187,3 +004172_212,17 +019252_133,3 +016882_12,5 +020572_92,2 +01431_179,11 +00840_205,7 +00011_19,0 +014232_215,0 +02127_259,17 +007212_249,14 +00021_124,2 +012282_84,14 +007292_25,14 +008482_45,17 +01201_66,11 +004082_150,11 +007212_128,14 +00438_23,2 +018652_92,18 +00615_155,11 +004532_297,9 +01568_151,2 +010912_2,2 +01702_52,2 +00607_1,14 +01191_174,14 +013302_38,9 +02005_138,11 +00314_136,0 +014372_222,11 +01597_15,0 +00160_290,13 +008252_73,12 +00840_64,2 +00848_60,17 +00718_86,19 +01814_148,5 +01210_1,17 +012282_85,14 +00442_257,4 +001602_118,11 +01001_272,5 +01948_128,13 +00065_81,5 +00539_180,13 +01488_140,0 +01219_35,5 +01901_107,0 +014232_51,2 +007182_28,19 +008402_70,2 +00413_52,0 +01879_63,4 +01626_136,2 +010872_296,5 +01094_63,11 +016922_80,1 +00287_130,15 +021912_67,7 +01001_122,5 +00292_18,11 +00417_272,1 +00102_205,16 +002752_6,14 +001242_208,0 +01058_38,2 +01775_109,12 +01092_10,17 +004532_286,9 +01814_157,11 +01358_16,1 +01971_101,12 +02042_57,15 +01408_274,14 +00314_107,4 +00124_13,4 +018772_37,4 +00609_64,5 +010912_197,16 +000092_14,4 +000232_171,2 +00088_23,5 +01423_149,0 +01145_121,13 +01767_98,14 +00438_225,2 +01804_126,4 +01723_16,4 +01278_107,12 +00417_39,17 +00718_13,2 +00306_55,7 +00875_109,2 +016922_53,5 +004532_238,9 +00718_90,19 +01427_45,17 +01158_112,4 +01261_56,2 +01278_89,4 +00408_228,11 +01879_43,5 +01541_16,5 +017672_253,14 +011912_107,7 +01145_221,4 +00453_281,9 +01145_234,4 +01707_282,7 +004532_104,9 +01953_268,12 +01228_255,14 +00688_48,2 +021722_190,14 +01184_24,5 +00228_208,9 +01834_280,8 +004082_137,1 +00242_262,4 +017752_62,2 +01145_192,4 +01941_98,14 +00314_231,12 +00350_270,9 +019252_141,3 +017232_16,4 +01509_74,0 +00102_27,0 +017482_31,0 +01909_175,2 +01636_28,0 +01693_263,0 +019042_73,12 +00528_50,2 +01409_37,4 +001022_211,16 +01494_28,7 +01688_278,2 +017752_16,2 +01509_228,11 +02191_83,7 +00607_101,6 +00552_50,7 +01971_92,12 +001602_98,11 +01707_165,0 +01091_102,0 +02028_101,2 +00607_97,6 +016092_16,17 +012192_26,5 +00079_111,15 +008402_112,7 +004172_294,11 +00280_138,12 +00009_101,12 +00041_21,2 +01278_196,2 +00287_135,15 +01763_8,2 +01865_32,11 +01853_2,14 +01763_165,2 +01684_57,14 +01941_82,14 +00837_36,11 +001602_125,11 +00772_51,7 +008922_12,0 +00158_268,5 +00916_149,2 +019592_75,6 +001602_273,13 +00539_174,1 +00567_118,5 +00729_262,14 +001242_237,0 +01501_39,4 +00607_96,6 +00009_276,2 +00024_11,2 +00709_187,19 +015972_38,0 +00916_5,2 +02138_115,4 +01366_51,17 +017692_18,2 +00867_172,14 +01775_120,2 +02005_286,11 +01693_82,0 +01909_205,12 +00242_45,12 +011612_237,17 +017752_80,12 +00674_1,14 +01210_108,6 +01924_81,14 +010912_97,0 +01626_64,7 +00314_121,4 +01924_113,14 +018342_56,8 +01839_118,11 +007092_176,19 +01256_5,14 +01763_269,4 +00065_147,1 +01048_46,5 +007212_201,14 +000792_233,9 +00793_240,14 +00390_83,5 +00841_66,14 +002802_157,12 +01968_57,7 +01769_292,0 +007292_88,14 +01161_133,17 +00539_192,1 +02162_17,14 +016432_48,14 +015972_27,0 +01210_47,17 +01941_165,14 +01941_183,14 +018772_295,4 +00546_113,3 +01643_77,14 +00021_104,12 +016922_60,5 +01684_68,14 +017752_66,2 +00102_132,16 +00528_101,2 +009622_61,3 +00505_47,2 +005282_161,0 +007182_12,2 +01707_7,2 +00453_209,9 +00102_177,16 +00730_70,18 +00509_213,12 +000232_43,6 +004172_131,17 +01371_18,4 +00519_27,7 +018122_64,4 +00450_132,13 +00674_29,14 +00793_37,14 +01582_86,14 +00535_83,4 +00783_77,17 +01909_158,2 +01091_134,5 +01092_257,17 +011912_30,14 +009162_170,2 +00981_16,11 +02138_197,13 +00314_166,4 +011082_32,15 +018792_46,12 +00438_143,2 +00566_101,3 +009642_142,8 +014882_100,13 +00567_225,2 +001602_207,11 +00280_114,4 +01144_6,5 +00333_153,2 +01330_259,4 +017692_199,0 +01431_56,11 +00539_234,1 +016932_209,0 +016882_166,14 +00011_122,2 +019712_165,2 +001242_125,19 +009342_8,9 +01087_41,14 +00993_219,6 +01092_31,17 +00935_66,7 +012722_39,2 +00841_24,12 +00528_223,0 +02005_85,11 +00342_28,17 +002752_21,14 +00875_83,2 +00718_26,19 +01723_259,15 +00306_90,7 +000792_53,9 +01408_28,14 +021462_79,18 +003062_58,7 +01423_246,0 +01497_2,5 +00981_17,11 +008482_126,17 +00314_78,4 +01330_287,1 +01092_235,9 +01865_87,18 +02172_238,14 +00607_24,5 +01623_2,14 +01431_26,11 +014232_124,0 +00333_129,2 +008252_53,2 +00342_31,17 +00577_106,14 +005882_190,2 +014272_41,9 +02127_284,17 +00916_88,2 +01865_63,18 +00350_178,9 +017232_252,15 +00783_52,2 +021722_93,14 +01182_71,0 +00160_193,11 +01437_40,11 +01158_85,4 +011912_87,7 +01509_78,0 +02042_137,14 +007212_85,2 +00703_107,5 +00023_51,3 +019412_288,14 +00242_299,12 +013302_279,3 +007212_230,14 +01959_2,6 +010012_22,12 +01959_25,6 +00538_97,17 +012282_212,14 +01769_45,0 +00768_4,14 +01636_140,14 +017022_80,14 +001022_245,16 +01723_155,15 +00609_16,5 +01488_30,0 +020572_132,3 +01877_79,4 +01925_126,3 +02049_79,3 +00408_240,11 +00503_6,6 +016432_7,14 +012282_113,14 +021912_70,7 +01804_71,2 +00681_50,5 +01161_177,17 +01437_64,11 +00837_100,11 +014372_195,11 +00462_168,4 +005282_115,2 +00158_251,5 +01578_51,14 +00729_80,14 +01408_250,14 +005882_42,4 +01278_180,2 +019712_201,2 +00761_165,8 +017692_116,0 +01191_29,14 +01948_171,13 +00597_24,5 +003122_46,0 +00993_117,7 +00718_71,19 +01091_187,1 +019242_198,14 +00438_110,2 +016432_43,12 +01909_112,2 +00761_0,14 +01045_61,4 +000232_129,6 +00485_60,1 +01431_236,11 +02187_101,16 +00566_276,8 +01692_51,5 +01457_1,14 +00021_126,4 +01941_298,14 +004532_220,9 +014072_46,2 +01046_66,7 +00793_111,14 +01707_299,7 +017482_3,11 +00350_295,5 +00438_96,2 +01814_189,11 +01184_37,5 +02146_156,14 +00228_115,5 +020572_65,12 +00394_2,14 +01971_44,2 +021462_34,11 +016882_95,5 +016882_78,5 +01144_90,12 +01977_7,14 +005882_8,2 +00485_131,1 +00840_159,7 +00916_205,2 +01702_43,14 +010912_43,12 +02162_10,14 +002802_63,12 +007292_161,14 +01812_84,2 +00837_99,11 +01775_93,4 +009642_8,14 +01839_123,1 +00519_9,14 +01769_109,2 +00242_77,4 +018132_91,11 +02005_62,11 +00442_227,4 +01541_58,5 +00837_128,11 +00935_43,7 +01578_147,14 +018772_116,4 +005282_117,2 +00566_62,8 +01962_9,0 +00503_34,6 +01493_112,1 +00721_114,14 +00021_115,4 +00079_120,9 +01272_3,2 +009162_124,2 +012282_172,14 +01929_6,14 +010652_118,14 +01582_66,5 +02005_141,11 +008832_28,11 +017692_215,9 +00467_53,11 +00287_255,4 +00287_50,15 +00342_22,17 +00768_7,14 +01091_214,9 +02172_6,14 +00916_270,5 +01201_108,14 +01853_94,0 +001112_81,14 +01158_128,1 +01924_132,14 +00474_34,2 +00382_123,5 +00761_124,14 +00413_23,4 +007222_122,17 +004532_216,9 +000232_138,6 +00509_30,2 +01457_83,14 +01953_181,12 +019042_131,12 +01044_225,2 +01437_216,11 +01256_47,4 +00722_147,6 +00601_66,9 +01948_159,13 +00840_218,7 +00287_188,4 +015972_111,14 +00916_104,2 +01103_81,9 +005092_139,2 +01578_151,14 +00408_52,1 +01879_1,2 +01409_52,4 +000232_169,2 +01437_149,11 +01144_103,12 +002802_73,12 +00916_48,2 +00567_159,2 +01182_101,14 +01953_290,2 +00552_45,7 +007292_245,14 +00721_7,14 +00232_132,13 +019242_147,14 +011912_86,7 +012192_31,5 +01693_107,12 +00916_19,2 +00408_257,13 +00951_114,0 +00021_68,3 +00981_105,5 +004172_90,6 +00867_2,14 +00442_132,4 +001022_170,16 +005282_207,0 +00350_296,5 +002802_249,14 +00506_50,4 +00438_62,2 +000092_25,12 +01437_96,11 +01228_141,14 +00088_86,14 +01278_95,4 +00079_96,9 +00102_202,16 +00768_39,7 +01941_244,14 +01509_171,0 +01723_48,15 +00011_86,12 +00296_97,14 +01493_38,11 +01693_56,0 +00951_69,0 +011612_62,17 +02027_73,14 +01145_179,4 +00709_179,19 +017232_190,15 +00023_118,5 +02187_18,16 +00783_286,5 +01775_142,4 +02049_246,3 +02054_71,4 +01839_143,1 +00660_5,14 +01814_156,5 +01045_245,4 +02146_67,18 +01228_278,14 +001112_56,17 +01578_132,14 +020052_222,11 +02172_44,14 +021722_254,14 +01134_100,10 +00314_60,2 +01048_45,5 +009352_101,7 +01968_49,7 +000092_258,2 +01488_130,13 +00821_119,5 +00964_247,4 +00408_41,1 +00761_249,3 +01134_269,10 +01909_83,12 +00674_144,14 +00588_156,13 +01312_64,7 +01924_124,14 +02094_72,12 +01351_126,7 +01494_22,7 +01493_65,1 +00681_7,2 +000092_194,0 +02042_51,14 +005062_121,2 +01924_177,14 +012562_54,4 +00158_293,5 +01358_56,1 +01879_98,2 +00158_288,5 +02012_112,2 +01261_68,4 +009642_178,8 +00979_76,1 +012402_171,12 +01972_266,14 +01568_172,2 +01834_132,8 +01261_113,2 +00840_29,2 +00761_88,14 +01145_160,4 +008372_152,11 +01431_122,11 +009352_47,7 +00660_146,0 +00124_47,0 +014372_135,11 +01261_20,2 +00312_40,0 +01431_235,11 +011912_58,7 +008922_88,2 +01134_88,10 +017692_152,9 +01358_6,1 +021462_13,14 +01161_162,17 +00721_245,14 +01702_2,14 +00490_30,2 +01351_145,7 +02042_128,0 +00023_187,2 +00438_18,2 +01706_248,2 +019042_173,12 +005882_218,12 +00417_37,17 +02049_243,3 +01904_77,12 +007292_83,14 +02191_99,7 +00011_111,12 +01707_10,2 +00615_228,11 +00276_77,11 +021912_109,14 +000792_32,9 +01044_254,4 +01108_13,14 +00296_105,14 +021722_221,12 +008832_65,11 +00566_70,8 +00962_60,3 +008372_38,11 +01839_72,11 +00280_65,12 +014372_157,11 +00964_260,14 +017672_230,14 +01409_21,14 +010012_70,12 +02187_67,16 +01879_92,2 +017692_141,9 +02042_38,0 +01972_28,4 +010012_289,5 +009342_9,9 +01437_278,11 +01962_114,0 +018652_61,18 +000792_58,9 +007292_250,14 +01490_39,7 +019252_284,8 +018342_113,8 +018342_209,8 +013302_290,9 +012402_218,4 +01925_119,3 +02049_69,3 +00951_121,0 +001022_228,16 +010912_42,12 +00282_7,14 +019252_65,6 +00342_6,14 +01272_28,2 +01001_246,5 +01423_182,0 +000792_18,9 +00552_89,2 +00628_25,7 +007182_5,2 +007832_127,6 +016432_61,4 +00159_0,0 +008402_97,2 +016882_43,5 +02146_58,18 +00601_83,11 +01361_135,3 +01361_275,15 +020572_82,2 +018772_177,4 +01490_31,7 +01366_81,17 +01953_64,2 +00282_9,14 +014272_88,4 +01626_93,7 +00509_164,2 +01568_244,2 +01698_105,14 +00350_194,5 +02021_1,14 +00578_91,1 +00935_96,7 +00442_215,4 +00660_164,0 +00674_70,14 +01953_37,2 +01941_110,14 +01330_1,2 +01877_240,4 +00609_83,14 +01361_250,15 +01929_214,14 +008402_275,2 +01408_54,14 +006092_62,5 +01351_61,7 +021462_125,11 +005882_234,2 +017072_149,4 +005882_231,2 +00840_12,2 +01813_147,14 +01431_76,11 +00350_45,14 +012282_265,14 +00450_138,13 +00539_80,1 +00280_193,2 +00503_44,6 +005392_285,0 +01044_183,4 +01767_251,14 +01427_24,4 +00718_91,19 +009162_197,2 +007832_126,6 +00615_54,11 +01702_18,12 +00417_292,11 +00009_164,0 +00538_40,17 +01046_24,7 +01977_91,8 +019712_47,12 +00505_90,12 +018392_129,1 +01493_103,1 +012722_112,2 +018772_159,4 +00506_59,6 +00408_288,11 +00964_110,8 +00025_55,17 +00417_220,7 +02062_3,2 +02057_3,2 +01210_112,6 +00546_38,14 +00721_246,14 +004532_125,9 +00417_250,6 +004082_160,11 +01210_238,9 +01924_137,14 +013712_55,14 +00442_216,4 +01643_70,14 +001022_27,0 +00916_17,2 +008402_180,7 +013332_10,0 +00957_44,0 +01643_17,12 +00566_14,14 +01103_90,17 +018772_65,4 +00615_99,1 +008372_122,11 +008372_5,14 +01605_43,14 +01763_37,4 +00588_218,12 +004672_26,11 +000092_163,12 +01431_105,11 +01968_63,7 +00426_80,0 +01684_13,14 +016052_280,11 +00567_265,2 +02162_133,5 +00681_66,5 +02187_128,16 +014882_129,13 +01330_71,9 +00709_186,19 +007092_104,1 +011912_41,14 +00462_93,13 +00453_178,9 +016052_155,11 +00314_291,4 +020572_26,2 +00417_115,17 +008482_64,17 +00709_207,19 +00124_222,0 +00588_43,4 +00607_75,11 +01959_68,6 +01706_219,2 +01626_56,7 +01228_221,14 +01361_122,3 +005092_116,2 +01763_25,12 +018122_16,2 +007292_273,14 +01457_4,14 +001242_75,19 +013302_162,15 +00438_161,2 +004532_126,9 +00588_147,13 +01775_162,12 +00688_40,4 +00567_92,2 +01834_254,8 +008922_41,0 +00761_79,14 +01158_102,12 +009512_150,14 +021622_8,14 +01568_160,2 +00840_228,2 +00761_178,3 +00509_62,12 +01494_99,14 +018652_43,18 +01643_8,14 +01968_35,7 +01045_55,4 +00505_6,2 +01977_212,8 +01693_17,2 +00467_13,11 +018122_9,2 +00941_19,0 +002752_32,14 +018342_166,8 +01748_44,0 +016932_130,0 +02057_126,6 +00041_175,7 +01101_32,7 +00721_190,14 +011612_263,17 +005882_26,12 +010872_79,5 +02186_77,5 +007292_259,14 +00841_35,4 +00474_240,2 +01834_178,8 +017232_277,15 +01924_60,14 +01058_111,4 +00485_176,1 +00275_40,12 +010652_58,18 +01228_30,14 +005282_77,2 +010912_33,12 +01007_96,0 +01787_13,13 +00474_121,2 +00503_297,6 +00519_68,11 +00837_90,11 +00079_123,9 +013302_60,18 +00490_115,2 +017072_169,0 +01437_93,11 +017022_1,14 +005882_126,13 +016052_123,5 +00660_296,14 +02138_153,13 +005282_51,2 +01597_50,0 +018792_7,2 +019622_102,0 +02057_155,3 +02027_141,14 +00475_149,9 +00793_202,14 +00848_63,17 +01278_127,4 +00438_209,2 +01261_44,2 +00721_204,14 +00546_131,3 +01636_91,0 +01278_65,12 +02049_4,12 +01145_37,2 +01688_7,5 +010872_169,5 +01688_94,5 +017232_111,15 +00793_189,14 +00282_98,2 +00287_66,15 +01177_7,14 +01065_95,18 +00314_111,12 +017482_0,11 +005392_104,1 +00528_2,2 +012612_75,12 +018342_191,8 +01201_47,11 +010012_248,5 +01865_93,18 +01509_245,11 +01688_129,14 +01044_99,4 +02012_2,14 +00390_84,5 +002752_147,14 +014122_47,0 +01087_123,5 +01702_86,14 +00453_227,9 +01044_79,12 +01091_176,11 +00124_102,19 +01044_200,12 +01622_96,5 +005882_224,2 +009162_40,2 +00009_88,0 +004532_263,9 +01767_76,14 +00453_101,9 +005092_118,2 +01977_249,3 +01431_219,11 +012192_81,5 +01941_240,14 +018392_183,1 +001242_39,4 +01228_80,14 +00506_19,2 +02146_45,18 +01210_266,9 +01597_48,0 +016932_10,4 +014232_110,0 +007212_32,12 +01929_215,14 +01145_199,4 +007762_53,4 +001242_231,0 +00242_268,4 +01693_296,0 +00314_295,0 +001022_282,16 +01437_148,11 +01622_37,0 +000092_20,12 +00993_218,6 +010012_140,5 +018392_21,14 +01834_208,8 +01953_25,2 +00840_97,2 +02028_106,2 +000232_161,5 +006742_73,14 +01488_86,13 +00660_251,14 +00916_151,2 +01693_30,17 +016932_108,0 +00776_9,4 +008402_94,2 +010912_212,9 +00546_95,3 +017232_78,15 +011912_93,7 +017752_41,12 +00462_82,13 +018772_275,4 +00160_56,11 +018342_186,8 +02127_207,17 +01636_103,0 +01119_9,14 +00729_84,14 +002752_116,14 +004532_293,9 +01427_60,17 +00957_60,2 +01493_70,1 +01688_287,2 +014882_205,1 +012612_88,2 +00462_65,15 +00776_62,4 +00408_54,1 +01184_35,5 +00546_60,15 +01767_117,14 +01184_9,14 +016882_139,14 +00883_57,11 +01971_287,12 +021772_36,4 +00840_164,7 +012192_12,14 +014122_0,4 +00275_54,14 +01001_77,12 +01103_32,17 +01971_71,4 +02028_3,4 +00609_59,11 +007212_116,14 +00417_58,17 +01048_79,14 +00009_140,7 +00408_45,1 +00342_49,17 +01161_20,17 +01568_252,2 +01924_105,14 +01972_261,14 +001602_235,11 +00350_63,14 +00761_260,3 +01971_196,12 +001242_161,19 +02027_114,14 +02138_296,14 +001022_297,16 +01330_51,9 +02094_81,12 +01968_38,7 +009622_82,3 +01962_101,0 +02162_52,17 +00993_104,7 +00539_250,1 +01568_152,2 +01698_61,17 +00916_14,2 +00159_53,2 +00453_150,9 +00009_94,0 +007092_40,19 +01684_52,14 +00660_283,2 +00009_235,12 +02062_121,4 +01494_90,14 +00563_110,2 +012722_8,2 +02187_160,16 +019712_267,2 +00023_164,5 +00979_7,2 +00333_9,2 +020052_230,11 +02030_247,16 +012282_233,14 +00567_61,2 +014232_169,0 +01044_239,12 +017232_72,15 +012192_68,5 +01045_225,4 +01210_57,17 +01437_189,11 +00607_109,6 +01488_147,0 +014372_250,11 +020572_186,3 +00538_76,17 +00505_58,6 +008252_20,2 +013302_249,15 +014282_11,14 +01408_150,14 +011612_221,17 +00023_189,2 +00993_265,14 +01767_176,14 +01330_295,9 +01065_0,14 +02057_140,3 +009642_11,14 +007212_217,14 +01812_41,2 +01623_28,14 +01158_99,4 +01972_145,3 +007832_9,2 +016922_110,1 +01767_271,14 +018772_69,4 +01977_40,2 +016982_55,17 +011772_23,15 +00951_29,0 +00467_37,11 +008482_24,17 +00276_113,11 +01812_17,2 +00697_85,4 +00825_54,2 +00588_68,13 +01007_78,0 +009162_201,2 +012402_280,12 +003062_96,14 +02054_293,4 +01046_16,14 +01134_11,16 +00287_159,4 +00768_71,7 +011612_34,17 +002802_92,12 +019712_121,2 +00462_73,13 +01971_220,2 +02028_12,4 +00390_110,14 +01145_151,4 +018122_0,2 +00450_30,14 +016932_95,0 +017692_211,1 +01261_99,2 +018392_147,1 +01968_64,7 +007832_83,17 +00660_186,0 +01437_222,11 +01094_72,11 +01509_25,2 +017692_118,0 +02187_222,16 +00287_291,4 +00509_158,2 +00821_146,14 +00505_40,2 +01201_74,11 +01941_218,14 +00009_231,12 +01879_53,4 +00964_41,6 +01643_90,14 +00951_92,0 +01804_110,7 +012402_38,2 +02138_13,14 +021912_58,7 +01488_41,0 +01693_234,0 +020572_109,2 +00474_101,2 +017692_59,9 +016932_155,0 +00124_164,19 +01201_101,14 +00730_82,18 +01366_91,17 +013302_24,2 +01048_16,5 +00160_133,11 +009512_139,14 +00681_22,5 +00867_3,14 +00485_272,12 +011912_39,14 +00597_27,5 +01437_273,11 +002802_101,12 +00342_58,17 +01351_40,7 +01330_227,6 +00102_137,16 +012192_4,14 +00158_169,5 +00772_107,14 +01904_121,2 +009642_168,8 +00505_138,14 +00688_5,2 +00660_128,0 +00475_98,9 +01623_34,5 +001022_52,16 +01814_198,11 +008372_145,11 +02138_80,14 +004172_106,6 +000092_181,2 +01706_0,2 +01058_128,12 +007092_193,19 +01065_4,2 +007832_114,17 +018772_141,4 +01001_98,5 +004082_187,11 +00505_30,2 +00867_18,14 +00505_221,12 +016982_111,14 +01437_276,11 +005392_298,1 +007092_11,19 +01488_80,0 +021462_0,14 +00747_74,4 +01431_2,11 +016842_6,14 +02138_180,13 +01684_35,4 +002802_238,12 +00242_145,2 +01769_115,0 +01049_32,7 +005882_213,12 +00453_243,9 +00124_200,0 +020572_46,2 +000252_26,17 +019042_35,2 +019252_162,3 +00456_9,4 +004532_157,9 +01261_112,2 +016052_255,11 +01134_38,10 +019592_26,6 +01161_191,17 +007832_164,2 +01278_156,12 +01191_88,7 +02138_43,12 +00935_102,7 +00442_180,4 +02005_48,11 +00721_75,14 +01688_49,5 +01767_90,14 +018342_234,8 +00535_229,5 +00951_80,0 +00312_45,0 +02054_209,12 +01091_75,1 +01488_185,0 +01582_21,17 +000092_183,2 +000092_210,12 +01901_132,0 +01763_128,12 +00964_209,3 +00588_93,13 +00160_67,11 +01361_89,4 +016882_100,5 +007832_206,2 +00306_30,7 +01834_109,8 +02187_184,16 +00718_18,19 +01962_35,0 +01493_77,1 +011772_0,14 +018792_96,2 +016882_263,5 +00546_190,14 +00506_33,2 +01330_180,13 +00438_268,2 +011612_234,17 +01688_269,5 +01748_68,0 +00883_69,11 +019712_174,12 +014232_181,0 +019712_65,12 +00111_76,14 +01706_201,2 +01948_68,13 +01431_94,11 +01428_24,14 +01834_206,8 +012402_210,12 +02012_111,2 +01261_10,2 +021912_21,7 +019242_8,14 +001022_58,16 +01693_290,0 +00490_130,2 +01509_109,0 +00024_112,2 +01509_192,0 +021622_43,12 +00546_78,3 +01698_25,17 +019412_160,14 +01145_248,4 +000092_215,7 +02030_227,16 +01977_172,8 +01814_200,11 +00350_48,14 +01941_204,14 +00503_9,6 +012282_299,14 +01622_26,0 +00503_248,9 +02172_8,14 +01427_76,9 +01423_161,0 +00722_29,17 +01058_31,2 +019242_31,14 +00503_282,6 +01001_152,5 +00681_16,5 +012722_243,12 +019042_28,2 +00709_107,1 +00993_101,7 +01813_54,11 +00957_36,4 +015972_96,0 +005502_99,18 +01408_80,14 +01706_152,2 +00128_9,12 +00615_17,11 +00275_63,14 +01431_164,11 +016982_100,17 +017232_160,15 +014232_49,2 +01901_134,0 +00768_64,7 +02005_101,11 +02162_135,14 +01007_171,13 +00128_274,12 +00041_145,7 +017232_194,15 +00546_55,4 +010912_153,5 +00350_253,5 +01330_269,15 +004172_55,17 +011082_51,14 +00677_25,14 +01834_111,8 +009162_298,5 +01688_81,5 +00539_108,1 +01201_104,14 +00023_141,6 +010652_83,18 +02030_38,14 +008832_34,11 +02021_38,1 +02187_272,16 +01333_40,4 +01688_231,5 +01058_106,4 +017072_81,0 +00567_230,5 +01272_230,4 +01361_163,3 +01409_240,14 +006972_94,12 +01358_41,1 +018392_7,14 +01092_198,14 +01924_157,14 +00506_103,2 +012192_55,5 +019622_81,0 +01184_48,5 +00276_6,14 +00793_145,14 +01134_131,10 +00566_139,8 +00697_15,9 +01134_266,10 +01769_183,2 +00709_283,12 +007292_283,14 +02187_71,16 +017672_248,14 +019242_102,14 +020052_226,11 +00539_68,1 +00550_92,18 +016982_40,17 +01814_278,11 +01118_19,14 +00314_128,4 +00438_120,2 +01145_130,4 +02172_250,14 +01605_33,14 +00438_29,2 +00539_0,6 +02062_82,4 +01763_287,12 +018132_112,11 +00474_258,2 +00124_151,19 +007092_185,19 +010652_27,18 +02027_149,14 +018392_76,11 +01501_2,14 +014882_110,0 +00688_87,4 +00566_248,8 +02042_142,14 +00009_104,12 +014232_119,0 +00467_25,11 +02149_46,17 +019622_59,0 +00242_131,2 +008482_16,14 +009162_147,2 +00566_265,8 +018342_281,8 +000092_161,12 +014272_47,17 +01119_105,5 +01877_110,4 +00181_139,0 +005502_52,18 +00438_142,2 +00475_23,5 +01924_162,14 +01953_51,2 +000232_7,2 +01092_51,17 +01769_202,0 +004082_174,11 +00718_47,19 +01877_30,4 +01971_209,2 +00539_170,1 +001022_262,16 +00567_127,2 +01688_279,2 +00314_105,4 +014882_62,13 +00566_176,8 +021462_121,1 +01065_81,18 +00023_174,2 +010942_41,11 +00490_213,7 +00538_130,14 +00394_122,14 +014372_35,11 +02138_143,13 +02138_130,8 +00761_192,3 +021722_88,14 +017232_123,15 +00703_103,5 +00892_70,2 +007832_245,5 +01092_52,17 +00438_34,2 +018772_260,4 +01007_167,13 +01283_11,2 +02030_164,16 +01228_116,14 +01971_106,12 +02062_156,4 +010872_251,5 +01929_140,0 +01775_99,12 +010652_15,11 +00552_102,2 +02021_18,11 +01972_50,3 +00282_87,11 +00615_14,11 +00382_124,5 +00009_52,12 +00709_35,19 +019042_33,2 +004532_266,9 +017072_14,2 +00242_18,2 +00079_267,1 +00453_45,9 +01948_111,13 +02094_56,2 +01597_82,0 +018122_110,2 +01568_45,2 +000242_101,2 +00023_190,2 +018132_30,11 +01509_172,0 +01688_97,5 +00697_57,12 +014122_1,4 +00615_196,11 +01144_77,6 +01210_15,9 +013712_62,14 +00124_152,19 +012402_48,2 +019242_135,14 +01693_236,0 +004532_189,9 +00681_67,5 +000792_262,9 +017752_14,2 +01865_85,18 +00462_64,15 +010912_66,1 +00024_88,7 +01509_127,0 +01769_273,2 +001242_207,0 +00539_113,1 +00456_79,4 +00509_21,2 +016932_69,0 +02187_132,16 +005282_128,4 +01578_179,14 +019712_246,12 +00009_260,2 +01909_76,2 +00314_3,2 +01693_94,0 +008922_28,0 +00840_262,2 +01706_88,2 +00783_153,2 +017752_167,12 +017692_112,2 +00350_240,9 +00552_5,2 +008402_171,7 +01423_142,0 +01626_100,7 +00438_135,2 +00287_256,4 +00485_130,1 +01941_145,14 +01929_93,0 +01408_63,14 +019042_99,12 +02138_189,13 +01925_156,3 +010912_226,7 +00474_284,2 +004172_97,6 +000242_20,2 +01636_2,14 +008402_186,7 +013302_86,1 +02146_78,18 +000252_42,17 +00242_283,12 +01972_2,2 +010872_247,5 +018132_50,11 +00503_233,5 +01423_238,2 +00674_54,14 +019042_89,2 +01044_244,12 +003062_43,7 +01626_88,7 +00408_73,11 +01834_114,8 +01597_109,2 +01488_91,13 +00577_80,7 +01312_48,7 +00837_37,11 +011912_186,14 +020052_47,11 +01493_174,1 +00287_113,15 +00306_45,7 +00566_289,8 +007222_138,17 +01103_55,9 +014232_260,2 +02146_2,14 +010912_86,16 +01118_82,14 +001022_220,16 +00674_79,14 +014122_78,0 +00674_38,14 +017072_265,7 +01748_54,7 +01228_188,14 +01748_102,0 +012612_49,2 +00417_210,17 +00025_48,17 +006972_10,12 +01001_174,5 +01001_264,5 +00128_128,2 +00021_78,4 +01767_92,14 +021772_24,4 +00442_4,2 +013332_16,2 +00539_86,1 +01361_107,3 +007222_100,17 +01636_53,0 +00102_65,16 +00607_41,19 +01622_47,0 +00181_66,0 +01272_173,12 +00528_164,0 +01693_142,0 +01165_22,5 +01763_228,2 +00462_36,14 +01177_2,14 +01767_106,14 +01941_114,14 +00660_144,0 +01240_275,12 +010942_9,14 +00875_4,2 +00474_90,2 +017482_97,0 +00242_226,12 +00280_220,4 +00892_11,0 +01351_44,7 +00474_45,12 +000252_43,17 +01145_182,4 +01509_236,11 +020052_295,11 +009512_114,0 +012402_146,12 +00350_61,14 +016922_27,2 +019412_257,14 +00697_70,4 +01925_231,8 +01144_16,5 +00535_78,12 +01145_198,4 +01144_79,6 +00776_47,14 +01493_96,1 +00065_136,1 +00474_85,2 +00979_132,14 +02012_69,17 +017692_161,1 +01723_218,15 +01182_42,0 +02191_40,7 +01706_19,2 +01925_45,12 +01049_9,7 +00793_3,14 +010912_179,11 +01829_16,12 +01692_133,5 +00462_202,14 +005882_49,15 +01049_16,7 +00505_64,1 +02027_6,14 +00011_134,12 +019592_85,6 +01901_38,0 +00825_30,12 +01688_72,5 +005282_91,2 +00566_85,8 +01361_96,6 +00382_27,7 +017752_64,2 +01582_47,7 +01763_181,12 +01501_32,14 +01087_241,5 +00964_202,8 +018122_47,4 +01488_108,0 +020052_217,11 +01228_102,14 +02187_102,16 +01839_169,4 +004532_53,9 +01493_36,11 +01839_62,11 +01814_2,5 +02138_5,14 +002752_162,14 +01351_148,7 +01948_157,13 +00426_116,0 +00417_96,6 +01812_114,2 +01834_58,8 +012722_111,2 +01437_259,11 +02005_291,11 +01091_0,2 +01361_280,15 +018652_0,14 +00350_252,5 +006742_120,14 +00023_148,6 +01763_117,2 +008482_133,14 +00023_87,4 +009622_75,3 +018652_46,18 +00783_31,2 +020052_102,11 +013302_273,15 +01941_109,14 +010912_213,9 +013302_292,9 +019712_60,12 +01045_133,4 +00023_85,4 +016932_22,14 +02162_46,17 +01909_97,2 +017232_262,15 +00417_175,6 +02054_268,12 +01210_95,6 +01924_227,14 +00175_52,2 +02027_30,18 +01707_102,0 +011612_223,17 +01693_1,2 +01692_63,5 +00793_286,14 +012192_110,5 +01568_147,12 +00474_269,2 +017022_47,14 +005882_166,4 +019412_182,14 +00721_49,4 +019712_215,2 +01981_50,5 +018772_289,4 +010912_14,2 +01431_5,11 +01092_91,17 +01001_276,5 +01804_115,7 +011772_74,4 +009642_46,6 +00280_210,12 +019712_61,12 +00550_100,18 +00747_66,2 +01501_52,4 +013302_235,8 +004172_173,6 +01882_18,5 +005502_49,18 +010872_109,5 +018772_148,4 +00519_65,1 +011612_180,17 +01330_79,6 +021462_23,5 +00509_82,2 +02005_159,11 +02030_50,14 +00175_59,2 +00408_82,11 +00382_3,5 +00539_211,1 +00783_299,5 +00413_67,0 +00474_54,2 +00011_47,12 +01144_188,2 +01091_32,12 +01605_252,11 +01007_19,2 +01044_287,4 +00158_138,5 +01971_179,2 +017022_11,12 +017692_261,2 +01904_144,12 +004532_19,9 +00453_92,9 +005502_6,5 +00426_132,0 +019242_119,14 +01578_83,14 +017672_91,14 +007832_210,2 +005392_32,6 +01493_51,1 +01814_69,11 +00535_10,2 +01972_83,3 +00979_91,1 +01330_14,2 +007212_182,14 +00979_82,1 +01408_41,14 +00382_1,5 +01953_113,4 +01853_57,6 +01959_69,6 +01925_4,14 +012282_20,14 +00721_59,2 +00242_1,2 +00660_149,0 +01103_43,14 +00607_30,11 +02172_174,14 +01509_221,11 +01568_75,2 +01092_96,17 +012282_53,2 +007092_4,19 +01501_79,4 +009352_96,7 +01941_81,14 +00840_188,2 +02030_161,16 +00628_144,14 +00160_25,2 +004532_169,1 +00607_68,5 +02062_12,2 +015972_93,0 +01278_16,2 +020052_162,11 +00840_172,7 +00720_10,0 +00840_254,2 +01953_226,4 +00232_91,13 +01330_114,9 +00993_70,6 +00124_1,4 +00503_113,1 +011082_62,4 +01278_37,2 +010872_117,5 +017752_33,2 +00628_92,7 +02138_15,14 +01278_179,2 +01145_149,4 +00506_66,6 +021722_58,14 +007292_58,14 +01769_234,9 +021462_2,14 +00539_271,1 +01423_177,0 +01877_194,4 +00837_145,11 +01058_39,2 +00102_39,16 +00159_44,2 +01829_51,2 +01941_46,14 +00475_36,5 +011772_6,14 +01609_40,17 +01636_111,2 +00102_98,16 +00128_226,0 +01091_254,2 +02030_79,16 +00867_101,0 +01605_272,11 +01977_51,14 +004532_8,11 +00509_235,2 +00350_212,5 +016982_63,17 +01409_216,14 +01541_10,14 +01272_266,4 +00567_130,2 +00697_68,0 +016052_262,11 +00837_21,11 +00578_89,1 +01834_152,8 +00566_45,8 +01968_103,14 +01330_19,2 +00417_154,6 +01693_156,0 +000092_80,12 +01909_124,2 +016922_20,2 +02057_11,2 +01330_44,9 +00505_188,5 +01330_228,6 +00079_27,9 +01953_4,2 +00314_75,4 +02030_244,16 +008922_85,2 +01457_25,7 +01161_284,17 +01448_98,14 +01092_129,9 +007092_30,19 +007832_55,2 +01763_243,2 +01706_13,2 +02172_104,12 +01622_125,14 +01144_184,2 +001602_46,11 +018772_140,4 +01636_43,0 +01045_86,4 +001602_13,2 +018392_135,1 +01488_5,13 +01622_30,13 +02054_124,4 +00730_54,18 +00024_72,7 +00041_97,12 +012402_175,12 +00783_181,2 +02146_140,14 +01437_101,11 +00417_109,6 +00333_46,2 +00490_53,2 +021622_87,12 +01688_290,2 +01331_45,17 +00111_37,17 +01228_149,14 +007222_44,17 +014372_6,11 +02191_109,14 +01431_99,11 +00102_167,16 +000242_12,2 +018652_10,14 +01643_81,14 +00450_95,13 +020052_7,11 +01210_211,6 +018342_64,8 +003062_105,14 +01643_32,14 +01909_68,2 +01278_111,12 +00276_75,11 +009622_6,0 +01834_128,8 +01423_77,0 +017672_58,14 +00962_76,3 +00158_221,5 +00009_208,12 +010012_71,12 +004532_71,9 +01219_40,5 +002752_136,14 +009162_132,2 +00124_250,0 +00088_11,14 +01145_141,4 +00566_179,8 +00660_81,0 +00442_183,4 +001242_78,19 +00124_75,19 +01723_116,15 +00867_103,0 +01879_48,2 +01408_89,14 +00124_149,19 +00688_94,2 +000092_136,2 +021462_102,18 +000792_89,9 +00413_97,0 +011082_3,14 +01210_151,6 +01706_160,2 +01330_166,15 +00601_63,9 +00539_52,1 +00160_176,11 +00450_179,14 +01358_33,1 +01597_106,0 +00021_148,2 +017072_175,4 +01693_150,0 +01941_262,12 +00506_112,2 +00721_131,14 +01977_207,8 +01622_127,14 +009342_17,9 +01101_175,14 +00538_67,1 +012612_22,2 +01622_41,0 +01087_82,5 +02062_72,12 +017482_61,0 +01278_112,12 +001242_236,0 +021462_131,5 +020052_56,11 +01787_68,9 +02094_164,2 +01853_107,5 +00102_276,16 +018132_25,11 +00228_161,9 +000092_285,4 +00442_116,12 +01092_117,17 +01191_58,7 +01001_260,5 +00485_129,1 +01578_134,14 +000792_12,9 +014072_20,12 +00935_101,7 +00677_21,14 +007182_130,14 +017232_219,15 +016882_164,14 +014882_29,1 +013302_9,2 +019242_240,14 +01814_128,5 +01501_98,14 +010652_86,18 +00840_162,2 +00566_207,8 +009512_9,14 +012402_255,2 +00722_44,17 +01775_103,12 +005062_111,2 +014272_29,17 +017022_31,4 +020572_49,2 +01272_46,2 +01839_42,5 +00566_177,8 +000792_82,9 +00528_169,0 +00688_47,2 +02191_111,14 +00609_43,11 +009162_209,2 +01948_99,13 +00158_31,14 +020572_33,2 +01693_235,0 +01001_94,5 +00535_287,2 +004082_49,1 +01509_223,11 +00509_121,2 +00793_38,14 +016052_291,11 +01977_44,12 +00509_117,2 +01763_134,12 +01488_184,0 +00485_159,1 +00382_127,5 +01879_2,2 +00158_273,5 +01509_222,11 +01723_158,15 +00158_213,5 +016932_243,0 +014272_91,12 +00761_47,14 +01971_127,2 +011772_1,14 +00442_6,2 +017232_38,15 +00124_172,0 +00287_198,4 +016432_94,14 +00793_109,14 +01210_295,9 +02162_42,12 +00519_41,7 +018792_3,2 +021912_2,14 +01622_49,0 +01182_29,13 +00021_48,3 +01210_224,9 +00793_28,14 +02127_51,2 +01330_253,15 +00538_33,1 +021722_79,14 +01428_64,14 +016432_15,12 +012562_22,4 +000232_105,11 +01358_2,1 +013302_17,2 +01493_299,1 +009162_284,5 +02005_201,11 +01977_197,8 +00677_40,14 +01412_57,0 +02172_234,14 +014232_50,2 +00009_250,12 +00607_26,11 +01981_10,14 +018122_18,2 +00456_70,12 +00951_94,0 +00175_42,1 +01094_96,2 +00550_5,14 +01509_151,0 +01210_96,6 +014072_36,4 +02042_84,14 +00287_283,4 +01087_21,14 +01427_67,9 +01769_250,11 +00840_41,2 +018772_160,4 +02138_222,13 +005092_207,12 +01636_31,0 +00450_125,13 +01283_63,2 +00023_184,2 +00292_7,11 +00065_125,1 +01509_226,11 +017752_6,2 +00450_2,14 +01814_124,11 +00993_248,14 +01763_79,2 +01278_87,4 +00563_41,7 +01058_148,2 +010012_102,5 +00102_76,16 +00456_183,4 +00681_83,14 +00009_209,12 +001602_211,1 +01901_144,5 +000092_98,0 +007832_70,17 +00567_221,2 +01144_81,6 +00697_17,9 +00577_38,7 +00729_36,12 +01769_15,2 +00426_46,0 +00837_49,11 +01371_9,14 +02138_275,14 +01578_31,14 +02057_90,12 +019412_297,14 +01261_85,2 +017692_183,2 +00242_263,4 +01623_72,11 +01272_14,2 +01228_213,14 +00964_115,8 +00408_28,1 +00453_118,9 +016052_25,14 +00181_11,2 +00474_271,2 +01210_283,9 +00609_35,11 +00490_6,2 +00722_125,17 +01877_81,4 +02030_89,16 +011772_41,14 +014072_41,2 +01839_178,12 +00023_58,3 +001602_49,1 +018132_103,11 +01972_162,3 +012722_12,2 +00314_125,4 +017672_36,14 +00382_12,11 +01044_215,2 +017072_278,7 +005392_126,1 +01623_137,14 +01769_159,9 +00102_34,0 +016982_37,17 +017232_239,15 +014232_165,0 +00450_31,14 +011082_34,13 +00124_2,4 +005062_141,2 +00993_254,14 +01882_72,14 +01228_136,14 +01278_28,2 +018772_155,4 +008482_8,14 +021912_103,7 +00539_124,1 +01219_73,5 +01091_118,5 +01901_74,0 +01977_64,6 +001242_56,0 +010872_84,5 +01879_104,2 +01925_10,14 +01702_47,14 +02191_85,7 +016922_123,1 +00916_60,2 +01769_32,2 +00232_121,13 +008402_17,2 +00601_7,14 +020052_127,11 +01044_10,4 +01092_73,17 +02162_76,17 +01493_122,1 +009512_101,0 +00160_121,11 +012402_243,12 +00660_240,0 +02030_82,16 +01767_268,14 +01256_72,12 +019252_39,14 +000232_193,2 +00287_46,15 +004172_260,11 +017232_5,4 +00342_97,14 +016052_261,11 +00438_252,2 +01901_23,12 +010942_98,2 +00232_30,12 +013332_28,2 +01925_138,3 +00228_23,14 +00761_151,6 +02057_154,3 +00275_29,14 +01331_8,14 +005392_286,0 +01184_28,5 +000092_121,0 +01144_31,5 +009162_296,5 +00552_75,7 +01707_60,0 +01312_23,7 +01423_8,2 +01763_289,12 +00417_13,14 +01698_114,14 +00793_64,14 +00615_56,11 +01623_76,11 +01763_296,2 +016982_33,17 +00783_160,2 +013302_83,6 +021912_66,7 +00102_30,0 +008922_4,0 +01763_62,2 +01228_83,14 +01158_138,4 +02057_106,2 +00314_42,2 +004532_82,9 +00442_49,2 +00509_189,2 +005282_13,2 +005502_35,18 +00242_198,12 +01925_297,8 +00721_18,14 +01953_166,4 +01448_104,14 +01158_77,4 +01578_148,14 +01007_8,2 +00041_70,12 +01087_62,14 +019712_6,2 +010012_273,5 +01351_39,7 +02057_200,3 +00848_79,17 +00935_48,7 +01769_66,9 +01597_71,0 +01145_205,4 +01693_118,0 +018392_33,14 +01775_124,4 +01707_17,2 +017072_90,0 +00390_100,5 +018342_276,8 +02187_64,16 +014282_71,14 +01158_157,4 +016932_222,0 +012192_85,5 +00993_36,14 +01001_185,5 +02057_211,3 +019042_127,4 +02094_89,4 +004082_213,11 +01092_83,17 +01201_86,11 +00490_152,12 +01046_77,7 +01972_230,3 +01144_114,2 +01500_16,0 +001242_191,0 +01228_54,2 +00793_205,14 +018652_71,18 +00718_80,19 +010012_240,5 +011912_114,7 +01924_144,14 +00841_20,14 +018792_26,2 +000232_56,3 +01428_63,12 +007092_256,9 +016932_250,0 +017072_160,0 +01814_182,11 +00761_23,14 +00892_103,2 +00312_50,0 +01065_101,11 +02172_76,14 +016052_22,14 +01092_78,17 +01087_132,5 +00490_2,2 +00506_124,2 +00550_30,18 +01201_54,11 +00964_77,3 +005282_104,2 +01058_56,2 +01643_6,14 +02049_177,13 +00535_268,6 +005392_157,17 +01330_164,15 +013712_66,14 +005502_113,18 +01049_18,7 +017022_14,12 +01494_43,7 +01240_109,12 +01228_114,14 +01448_70,3 +017672_183,14 +01087_35,14 +016932_96,0 +00951_13,14 +01879_54,4 +01839_7,14 +01191_94,7 +00438_220,2 +00677_50,4 +01767_97,14 +00660_294,14 +00867_189,14 +01605_96,5 +004672_58,11 +010012_44,4 +01044_173,4 +00413_123,0 +00242_216,12 +01144_59,3 +000792_67,9 +00883_68,11 +01925_18,14 +016882_281,2 +01228_284,14 +00776_61,4 +014232_186,0 +00453_215,9 +00490_104,2 +00408_108,1 +014232_16,2 +00539_12,6 +01834_174,8 +01261_30,2 +01228_155,14 +000092_5,4 +00730_28,17 +018122_2,2 +01001_291,5 +017072_45,12 +01839_83,11 +00503_209,9 +00539_14,6 +01361_164,3 +01240_200,12 +01428_46,14 +00993_249,14 +017672_103,14 +00394_48,12 +01626_116,7 +007832_191,4 +01578_26,14 +01948_89,13 +00287_108,15 +00506_73,6 +00729_133,14 +01706_140,2 +00438_6,2 +005282_87,2 +016932_145,0 +01723_197,15 +01448_31,0 +007182_1,2 +00892_67,2 +014882_112,0 +011612_41,17 +00453_40,9 +01941_125,14 +01702_40,14 +00567_134,2 +021622_124,1 +01191_19,14 +001022_42,16 +00776_29,14 +00772_102,14 +01228_230,14 +01091_261,14 +01177_56,4 +01688_194,5 +01278_99,14 +00867_73,5 +016932_252,0 +01182_70,0 +00841_16,14 +01210_210,6 +01091_129,5 +010942_75,11 +000792_141,9 +01001_71,12 +02162_36,12 +01431_283,11 +007092_32,19 +017752_105,12 +01048_12,14 +019252_257,8 +01493_212,1 +01437_250,11 +02030_141,16 +00993_110,7 +01094_85,11 +003122_7,0 +00841_15,14 +01210_167,6 +01092_264,12 +01108_6,14 +000232_192,2 +00761_277,3 +00490_187,2 +01578_197,14 +018342_168,8 +00456_46,14 +010912_140,5 +00916_140,2 +014232_13,2 +007212_154,4 +019622_53,0 +004532_209,9 +02146_23,5 +005882_198,2 +01568_238,2 +010912_32,12 +012722_229,4 +01409_223,14 +02042_86,14 +016932_265,0 +02030_42,14 +01882_50,11 +00158_173,5 +02005_280,11 +01698_8,14 +00566_90,8 +01371_30,14 +019252_94,3 +00793_238,14 +01767_85,14 +01956_53,15 +004082_192,11 +00674_61,14 +016432_77,14 +002752_15,12 +007762_85,4 +00128_214,12 +010012_16,2 +004172_278,1 +010912_7,2 +01240_21,2 +011612_269,17 +01091_52,1 +01706_106,2 +01882_25,5 +004172_74,17 +01210_166,6 +01909_79,12 +02172_182,14 +01904_170,12 +00438_216,12 +01763_164,2 +000232_106,11 +009342_26,1 +016092_3,17 +01643_14,14 +01001_169,5 +01165_127,14 +010012_186,5 +00505_143,14 +02088_19,0 +01092_92,17 +012282_184,14 +00276_109,11 +00503_269,6 +00475_283,1 +009512_6,14 +02005_50,11 +00450_35,14 +00490_0,2 +00729_159,14 +02172_47,4 +011612_10,17 +016932_110,0 +00314_100,4 +01929_223,14 +02127_163,17 +013332_5,0 +01941_61,14 +019712_248,12 +01272_172,12 +01981_106,11 +012192_117,5 +00935_22,7 +012722_27,2 +00563_33,4 +017072_205,0 +01431_157,11 +01191_77,7 +00462_85,13 +01877_278,4 +00729_72,14 +01256_24,4 +00848_113,17 +005392_256,1 +010912_269,14 +01161_160,17 +007832_299,5 +01953_171,12 +001022_163,16 +02028_67,3 +006742_25,14 +009512_53,0 +00333_168,12 +01408_210,14 +00509_236,2 +02005_109,11 +01094_19,2 +00314_9,2 +00232_27,2 +00065_7,1 +00088_66,5 +01925_116,3 +02027_42,18 +02062_101,4 +01568_168,2 +01767_144,14 +006742_141,14 +00535_183,0 +00287_297,4 +01046_104,14 +01191_105,7 +017232_206,15 +01901_120,0 +017672_236,14 +02187_219,16 +01094_35,11 +00768_8,14 +010652_7,2 +021462_46,18 +00935_27,7 +01834_204,8 +00462_57,15 +00552_97,2 +01834_51,8 +02030_219,16 +01723_173,15 +00456_7,4 +010912_128,5 +01101_92,1 +00111_63,17 +00181_42,0 +019712_144,12 +008482_75,17 +02062_124,4 +00474_37,12 +004172_33,17 +01924_66,14 +02162_126,5 +01509_231,11 +02177_66,12 +00709_185,19 +01953_3,2 +00009_252,4 +00485_113,1 +018122_21,2 +007832_275,5 +007832_235,5 +018342_198,8 +01972_86,3 +01366_14,14 +019252_222,8 +00287_278,4 +00456_155,2 +001242_153,19 +01948_25,14 +01428_50,14 +004532_201,9 +00951_83,0 +019252_109,3 +01707_77,0 +00875_64,2 +01882_77,14 +012402_153,4 +00442_199,4 +00721_104,14 +00228_205,9 +00228_172,9 +01423_136,0 +00875_94,2 +020052_27,11 +00761_83,14 +008402_164,7 +01158_19,0 +01261_57,2 +01962_84,0 +01001_240,5 +00721_211,14 +005282_130,4 +01924_107,14 +00296_50,7 +01953_240,4 +01972_51,3 +009162_184,2 +007182_107,19 +01925_250,8 +007222_136,17 +01698_18,14 +00475_263,9 +007212_93,14 +00438_88,2 +018342_72,8 +01882_31,11 +01431_295,11 +01108_39,0 +016882_94,5 +00546_2,14 +01941_21,14 +01622_67,14 +006742_139,14 +00837_135,11 +010012_261,5 +005882_193,2 +005882_74,13 +019042_110,12 +018122_72,12 +00408_213,11 +01605_61,5 +01509_157,0 +01497_6,0 +009622_32,0 +016052_89,5 +01045_184,4 +01272_158,4 +00721_206,14 +010872_118,5 +00382_82,9 +01427_22,4 +01787_17,13 +007222_14,17 +01605_293,11 +02138_152,13 +01509_290,11 +014282_77,14 +01882_59,11 +000242_5,2 +01184_109,5 +00242_208,4 +01240_270,2 +00453_146,9 +02049_12,12 +01882_53,11 +01971_296,12 +01605_93,5 +00453_102,9 +01501_89,14 +00438_144,2 +00280_206,12 +01929_14,12 +004672_35,11 +021912_117,14 +01769_43,0 +006972_81,5 +01763_49,2 +001602_143,1 +007222_40,17 +014372_106,11 +01981_11,14 +00979_110,1 +01448_62,3 +013332_24,2 +009162_196,2 +01494_75,7 +019622_1,0 +01962_88,0 +00703_92,11 +01839_105,11 +014882_137,1 +00677_89,14 +00772_37,7 +01408_88,14 +00009_218,0 +00287_175,4 +00408_60,1 +008482_66,17 +01161_112,17 +00628_63,7 +00550_62,18 +00065_198,1 +00981_85,11 +00552_9,2 +01134_185,10 +01045_63,4 +00462_199,14 +001022_237,16 +00160_224,11 +02172_226,14 +00390_32,5 +009352_89,7 +010872_138,5 +01509_289,11 +01165_110,5 +005882_127,13 +005282_76,2 +00505_35,2 +01723_109,15 +009642_227,3 +006742_117,14 +01972_22,14 +018652_11,14 +00408_112,1 +00275_21,14 +005392_89,1 +00628_128,14 +018792_80,12 +008922_94,2 +01981_96,5 +01488_237,5 +00079_116,9 +010912_22,12 +01408_130,14 +012282_81,14 +00563_105,2 +01044_185,4 +00957_58,2 +016882_229,5 +02030_154,16 +01092_79,17 +016882_53,5 +01693_15,2 +01161_164,17 +012282_215,14 +01044_267,4 +01145_8,2 +00011_112,12 +01706_49,2 +01877_200,4 +01597_32,0 +01045_223,4 +02127_202,17 +02030_104,16 +007292_73,14 +00485_57,1 +002752_18,14 +01272_71,4 +00761_114,14 +00825_36,12 +016052_166,11 +007762_58,4 +00721_128,14 +00528_199,0 +01605_35,14 +00159_35,4 +01423_235,12 +00660_248,2 +017482_36,0 +01723_150,15 +004172_200,17 +018772_72,4 +00462_94,13 +00783_292,5 +01272_90,2 +018792_59,2 +00709_262,5 +00261_13,2 +017692_44,0 +013302_185,3 +00761_46,14 +00390_64,5 +00025_29,17 +01423_13,2 +017752_172,12 +01839_33,14 +00677_92,14 +00041_31,12 +018132_113,11 +00535_116,6 +01437_53,11 +017672_107,14 +018772_66,4 +00065_63,1 +01767_272,14 +01087_115,5 +019712_101,12 +016052_100,5 +00442_272,4 +00848_131,17 +016882_209,5 +010912_175,11 +00916_228,2 +005882_47,15 +00456_117,2 +00761_188,3 +00538_127,12 +017482_25,0 +01962_44,0 +010012_47,2 +00916_161,2 +00519_144,14 +01165_77,5 +00962_13,0 +01962_16,0 +00981_89,11 +00848_11,14 +016842_36,14 +016432_57,4 +01853_31,5 +01437_224,11 +014272_107,9 +00490_3,2 +009512_45,0 +019592_59,6 +003062_67,7 +00720_34,0 +00964_198,8 +00539_281,0 +01423_19,2 +00539_95,1 +00024_0,2 +01001_69,12 +019412_100,14 +00490_262,5 +01158_86,4 +01493_150,1 +010872_250,5 +016932_202,0 +01684_21,14 +00783_37,2 +01968_98,7 +00426_27,0 +00023_149,6 +00462_112,13 +00505_145,14 +010012_165,5 +01184_95,5 +003062_94,14 +02062_41,2 +01007_98,0 +008922_58,2 +00709_5,19 +006092_74,14 +007762_27,14 +00935_13,14 +01145_72,4 +00840_31,2 +00588_122,13 +00588_126,13 +00506_44,2 +00503_115,1 +00474_6,2 +02021_9,14 +015972_66,0 +00394_5,14 +01959_40,6 +01191_114,7 +005392_40,6 +007212_147,14 +014372_292,11 +00761_100,14 +01351_5,2 +01409_90,0 +01925_49,12 +01108_20,0 +007212_6,14 +01605_219,11 +00128_220,12 +00503_123,1 +001242_195,0 +01423_15,2 +011612_57,17 +00538_123,17 +008482_22,17 +01488_172,0 +01968_20,14 +005882_16,4 +00538_43,17 +011772_21,15 +00722_67,17 +00567_21,2 +02042_92,15 +01007_24,12 +018342_83,8 +01272_184,4 +00935_52,7 +01956_3,14 +01092_249,15 +00552_59,7 +00730_113,14 +01144_142,2 +00721_209,14 +00674_75,14 +02094_127,4 +00408_23,1 +01330_256,6 +000792_245,9 +01748_25,0 +01578_90,14 +01763_206,2 +005092_110,2 +02127_125,17 +00577_83,7 +01409_181,0 +008402_168,7 +01007_31,12 +02127_232,17 +00417_221,7 +02054_160,12 +01161_245,17 +016882_115,5 +01706_28,2 +00729_98,14 +02187_122,16 +01941_270,14 +02027_130,14 +00413_179,12 +01161_235,17 +01161_0,17 +01494_29,7 +016932_224,0 +01045_164,4 +01087_145,5 +00450_9,14 +00065_144,1 +00503_206,9 +02030_174,16 +01834_81,8 +02187_261,16 +000092_37,0 +00722_81,17 +01814_159,11 +01941_292,14 +017232_245,15 +02030_39,14 +00474_191,2 +02005_34,11 +01407_2,4 +01240_224,4 +02094_5,2 +00394_28,9 +01578_244,14 +00306_101,14 +01457_42,7 +00709_122,12 +01272_196,4 +00916_259,5 +019242_37,14 +00993_134,7 +01256_25,4 +00160_256,19 +008252_47,4 +007292_221,14 +012402_289,12 +00350_271,9 +00783_230,5 +01812_19,2 +00628_116,7 +00546_136,3 +007292_166,14 +019252_218,8 +007092_197,19 +00615_49,11 +008372_156,11 +00228_89,11 +01925_200,8 +01177_66,15 +00280_178,4 +00442_268,4 +01684_32,4 +01769_266,2 +01962_102,0 +01191_141,14 +01431_281,11 +01865_102,18 +01427_38,1 +02187_38,16 +00408_214,11 +01366_54,17 +015972_58,0 +01622_54,0 +02162_33,12 +00228_191,9 +01877_248,4 +01007_82,0 +001022_55,16 +01278_146,12 +009512_74,0 +01767_44,14 +01144_24,5 +01427_111,17 +00729_39,12 +00964_267,14 +014882_242,5 +00528_59,2 +01007_172,13 +01693_23,14 +01278_29,2 +02146_146,14 +01877_259,4 +02187_242,16 +00552_37,7 +01509_263,11 +01044_245,12 +017752_107,12 +019242_27,14 +01829_21,12 +02057_29,2 +00275_114,14 +00382_16,7 +001242_117,19 +007212_54,4 +00550_59,18 +001022_161,16 +00296_103,14 +00158_284,5 +00426_26,0 +012282_241,14 +01953_249,4 +00848_19,14 +005062_65,6 +00159_77,4 +01948_1,12 +02149_33,17 +01044_281,4 +01568_62,12 +00505_152,14 +00841_33,4 +00023_56,3 +013302_184,3 +00450_181,14 +01941_106,14 +01228_36,14 +00023_120,5 +01767_13,14 +018122_67,4 +004082_127,13 +00867_174,14 +012282_205,14 +00761_190,3 +02021_67,11 +01330_48,9 +00761_195,3 +00837_59,11 +00783_49,2 +00761_50,14 +00474_133,2 +009342_10,9 +00993_105,7 +012282_282,14 +00840_216,7 +01865_82,18 +00535_124,9 +01688_119,14 +01941_19,14 +01366_141,5 +009162_111,2 +019252_81,3 +014272_134,14 +01578_61,14 +01219_38,5 +02030_277,16 +01597_61,0 +01331_66,17 +019622_130,0 +00475_285,9 +00474_260,2 +00951_111,0 +00024_42,7 +00601_33,7 +01877_136,4 +02005_84,11 +00296_65,7 +02138_40,12 +009512_33,0 +00674_34,14 +005062_46,2 +02054_273,12 +00474_192,2 +00413_214,14 +016432_34,14 +00793_252,14 +00474_8,2 +00408_241,11 +019412_239,14 +01103_63,14 +01929_154,0 +00567_205,2 +017692_92,0 +01240_98,12 +00761_103,14 +00024_83,17 +015972_107,2 +010012_161,5 +01865_112,18 +02054_280,14 +005502_50,18 +00729_22,14 +00128_150,2 +01692_109,1 +00848_119,17 +00628_134,14 +01865_2,14 +00102_293,16 +001112_45,17 +01408_77,14 +01597_95,0 +00021_16,5 +01814_222,5 +01702_26,4 +01091_45,6 +014232_30,2 +019412_60,14 +00761_93,14 +01769_160,9 +00848_142,14 +019042_23,2 +01210_119,6 +01161_93,17 +00242_0,2 +01240_215,12 +00528_41,2 +01953_27,2 +00426_37,0 +019412_213,14 +01165_24,5 +01065_102,11 +000252_30,17 +01427_37,1 +01609_39,17 +01119_84,11 +01046_50,7 +01423_265,2 +00837_81,11 +00962_12,0 +01165_71,5 +019712_49,12 +012282_40,14 +00783_86,17 +005092_113,2 +01488_99,13 +01094_28,11 +01094_113,14 +02054_159,12 +00228_96,11 +01497_25,2 +00566_71,8 +00503_190,9 +00102_92,16 +002752_129,14 +00079_13,9 +00450_174,14 +01134_192,10 +012402_8,2 +020572_130,6 +01261_22,2 +01924_12,14 +00964_279,12 +00793_263,14 +01210_92,6 +00312_19,0 +00228_116,5 +007832_17,2 +005092_208,12 +00475_106,9 +007832_104,17 +002802_160,12 +02177_18,4 +013302_84,6 +00394_49,12 +01568_83,4 +00079_24,9 +02054_251,2 +012722_214,12 +005062_113,2 +01240_273,4 +01692_66,1 +00505_181,5 +00158_71,2 +017752_101,12 +017672_10,14 +01058_158,2 +01959_72,6 +01971_10,2 +01775_150,2 +01981_53,5 +020572_156,3 +01240_0,2 +00729_28,14 +018792_12,2 +01877_99,4 +01272_257,12 +02177_29,4 +014122_43,0 +01597_7,14 +005392_251,1 +01007_234,0 +00102_254,16 +005502_100,18 +005502_47,18 +01272_25,2 +00490_19,2 +01409_163,0 +01763_282,12 +020052_164,11 +01904_40,12 +013332_51,0 +001602_224,11 +01956_48,15 +01688_189,5 +005882_38,4 +00578_37,1 +013712_60,14 +008922_36,0 +00567_192,2 +01001_220,5 +00867_184,14 +016882_249,5 +00964_147,8 +01431_145,11 +01707_57,0 +009162_103,2 +005092_100,12 +00528_181,0 +014882_239,5 +02054_283,14 +01568_53,2 +013332_15,12 +01877_26,4 +001022_87,16 +02172_144,14 +00688_97,2 +00697_77,5 +00475_271,1 +00128_105,4 +02057_122,4 +01769_276,2 +00916_159,2 +01448_44,6 +013712_7,14 +00474_23,2 +019412_238,14 +00456_52,12 +018132_149,14 +01941_76,14 +00588_157,13 +00413_119,0 +00160_209,1 +00783_277,5 +01763_35,4 +01924_167,14 +00535_196,5 +006742_81,14 +00681_77,14 +01165_12,14 +00793_214,14 +00848_44,17 +02162_22,14 +00538_15,4 +01509_72,0 +01358_20,1 +00175_60,2 +01145_9,2 +018772_108,4 +01981_44,5 +00490_136,4 +016432_22,12 +004672_61,11 +00306_11,14 +010872_242,5 +01924_190,14 +00438_49,2 +02028_54,1 +00158_129,5 +01001_238,5 +00867_171,14 +01278_241,14 +00296_82,7 +00450_96,13 +014372_297,11 +01707_230,0 +00883_6,11 +00065_132,1 +007212_47,14 +01118_90,14 +01048_59,5 +009642_274,14 +019412_279,14 +00597_71,14 +01493_237,1 +01804_45,12 +00417_205,17 +00242_101,12 +00442_202,4 +01568_220,2 +007092_287,12 +00892_30,0 +007222_4,17 +01500_23,4 +01623_6,14 +01437_214,11 +00528_25,2 +00964_155,8 +01707_259,7 +00280_62,12 +01092_40,17 +00688_77,12 +00261_30,12 +02127_198,17 +019712_44,2 +01904_110,12 +00505_139,14 +00453_126,9 +01971_173,12 +018392_137,1 +011612_38,17 +01272_240,4 +00426_100,0 +012402_70,12 +01693_166,0 +00688_102,2 +01431_168,11 +00964_156,8 +01953_42,2 +01501_11,14 +01134_223,10 +01605_203,11 +001242_132,19 +01541_45,5 +00280_209,12 +00242_123,12 +001022_186,16 +004082_175,11 +00729_29,14 +012562_52,4 +01210_227,9 +00228_43,11 +01509_111,0 +01278_166,12 +00124_0,4 +00442_153,0 +01001_36,12 +00875_23,2 +01431_155,11 +00709_157,6 +00776_94,14 +00588_151,13 +01688_136,14 +01087_245,5 +002752_106,14 +014232_36,2 +00503_218,9 +019712_167,2 +000242_24,7 +00009_201,12 +02057_83,2 +00490_34,2 +01956_12,4 +02054_133,4 +008482_98,17 +000792_39,1 +005882_57,13 +00314_26,2 +01219_68,5 +00079_298,9 +00065_137,1 +00124_63,4 +00703_86,11 +016982_97,17 +00709_7,19 +01693_237,0 +021722_181,14 +00709_119,17 +018132_117,11 +00287_87,15 +012192_72,5 +00509_192,2 +00505_235,14 +01333_32,4 +01488_142,0 +017022_83,14 +011612_270,17 +00342_103,14 +004172_217,7 +005282_107,2 +01049_25,7 +01058_136,2 +010012_162,5 +000252_76,17 +000242_78,7 +01437_204,11 +01706_134,2 +01977_166,8 +005092_36,2 +00314_287,0 +013712_5,14 +002802_111,4 +01182_27,13 +00474_196,2 +00628_59,7 +00485_202,1 +00505_122,12 +01839_71,11 +01351_120,7 +01272_13,2 +001022_233,16 +01108_3,14 +01813_129,11 +00287_209,4 +004532_122,9 +01361_127,3 +02028_53,1 +014272_100,17 +019712_143,12 +009162_74,2 +00609_4,14 +001022_49,16 +00442_13,14 +01493_286,1 +00485_161,1 +012282_153,14 +01330_235,8 +01692_8,14 +01134_20,16 +001112_41,17 +00232_23,2 +018772_134,4 +01428_65,14 +019712_286,12 +01058_113,4 +015972_84,0 +01626_91,7 +00009_171,0 +00009_175,2 +000092_148,0 +00783_105,17 +01423_251,0 +00730_124,14 +007832_268,5 +01769_77,9 +00453_48,9 +02162_93,12 +00993_57,6 +00242_199,12 +00041_141,7 +00916_82,2 +00442_236,4 +001602_74,11 +01941_241,14 +01909_127,12 +00793_165,12 +01412_60,0 +00563_12,2 +00962_20,0 +017072_142,1 +02028_78,5 +00721_19,14 +016842_68,14 +00607_48,6 +01092_95,17 +00160_187,11 +01904_13,2 +01904_20,2 +012282_162,14 +00615_113,11 +00721_56,2 +00519_12,14 +014232_206,0 +012722_143,4 +00503_71,6 +017672_22,14 +00128_195,12 +00867_40,5 +01283_22,2 +02177_37,4 +00350_231,5 +012402_288,12 +00981_62,11 +004082_161,11 +00475_190,1 +010912_238,2 +014372_246,11 +00280_1,14 +014372_140,11 +01568_144,12 +01240_167,12 +01723_166,15 +00282_96,5 +00538_129,14 +01408_278,14 +01865_124,1 +00490_216,7 +00065_119,11 +00426_10,2 +02172_42,14 +01145_299,1 +01814_229,5 +01834_240,8 +01972_251,14 +01763_31,12 +01045_30,2 +016882_175,2 +00408_15,12 +005282_18,2 +00979_30,1 +01001_191,5 +01091_258,2 +00065_189,1 +00535_188,0 +00413_204,12 +017232_10,4 +01509_163,0 +00660_119,0 +01706_289,2 +017752_154,2 +00442_145,0 +00729_4,14 +01091_153,5 +00628_13,7 +000792_225,17 +00490_153,12 +01723_58,15 +02028_86,2 +016882_200,5 +000792_113,15 +00506_71,6 +018342_55,8 +004532_283,9 +00539_226,13 +00312_11,0 +00783_81,17 +00485_226,1 +01605_116,5 +012722_132,12 +00456_179,14 +01045_70,4 +01219_56,5 +008252_60,2 +01509_123,0 +000092_268,0 +020572_104,2 +00768_57,7 +010912_165,0 +02127_50,2 +01501_97,14 +002802_122,2 +01953_21,2 +01763_151,2 +00578_32,1 +016932_16,2 +01201_58,11 +019712_137,12 +01775_140,12 +00567_179,2 +01941_77,14 +019712_153,4 +00453_96,9 +01045_49,4 +00837_140,11 +00065_28,1 +00957_31,0 +00228_65,11 +00413_109,0 +00688_12,2 +01500_47,12 +00467_51,11 +01330_242,6 +000242_55,17 +01839_55,11 +016922_114,1 +01643_48,14 +00941_33,13 +013332_19,2 +02062_126,4 +018132_106,11 +007092_165,19 +01941_147,14 +007212_181,14 +02049_46,3 +01312_82,7 +01371_12,14 +01361_241,15 +01423_208,0 +02062_155,4 +02057_183,3 +00490_33,2 +000092_197,12 +019242_184,14 +011912_174,14 +01693_93,0 +01804_60,4 +010912_196,16 +01058_69,2 +00867_107,0 +01001_223,5 +005882_205,12 +01361_58,12 +02054_214,12 +00333_22,2 +00023_198,2 +01972_272,14 +01058_165,2 +010912_82,16 +01707_87,4 +01839_124,1 +01045_105,4 +00228_183,1 +00275_27,14 +02127_19,2 +01201_48,11 +005092_89,2 +00160_262,13 +011082_31,15 +00079_177,9 +008402_87,2 +01366_116,17 +021722_108,12 +01814_87,11 +01597_117,14 +01119_30,11 +00535_134,9 +00688_103,2 +00490_209,2 +01330_24,2 +00703_5,14 +02005_144,11 +00475_227,1 +012722_128,12 +021912_94,7 +01605_91,5 +01134_289,10 +01509_217,0 +00503_161,5 +000092_63,12 +00442_224,4 +01909_135,12 +012722_164,2 +00456_23,12 +014882_241,5 +01626_18,2 +00450_45,12 +01312_44,7 +00390_74,5 +00505_131,12 +01769_237,9 +001022_144,16 +00503_106,1 +01001_144,5 +00438_106,2 +003122_49,0 +021912_38,7 +006972_28,9 +000232_142,6 +019252_12,14 +00350_195,5 +012282_176,14 +00462_31,14 +01636_79,0 +018122_60,4 +00867_66,0 +01431_89,5 +00467_1,11 +00607_55,6 +019412_205,14 +00567_20,2 +019252_106,3 +004672_49,11 +00825_65,12 +02028_103,2 +005062_2,2 +00588_118,13 +013302_64,18 +02146_0,14 +019622_26,0 +00721_196,14 +014272_10,14 +01366_101,17 +010012_208,5 +000792_69,9 +01901_36,5 +01044_289,4 +00442_86,2 +02054_103,12 +00442_152,0 +01058_21,2 +009162_203,2 +00539_126,1 +00509_212,2 +00417_299,11 +021722_262,14 +00394_63,1 +00079_146,9 +00528_65,2 +01804_127,4 +00276_22,11 +00503_81,9 +01044_143,4 +01423_214,0 +01509_39,0 +010912_44,6 +00453_87,9 +01312_59,7 +00102_218,16 +00503_39,6 +01330_99,9 +007182_100,19 +000242_117,2 +016432_29,14 +01597_113,12 +005882_209,12 +00697_9,12 +01423_28,2 +019252_184,8 +01834_113,8 +021622_84,12 +00916_170,2 +02030_262,16 +01087_135,5 +021912_105,7 +00280_48,4 +01953_215,4 +021912_74,7 +017482_34,0 +00450_73,13 +017692_97,2 +00314_250,0 +01191_83,7 +01407_47,2 +011082_30,15 +019252_240,8 +01706_275,2 +00438_221,2 +00848_49,17 +00159_75,4 +00962_26,4 +00456_102,14 +02138_250,14 +00964_104,8 +00450_103,13 +01261_52,2 +00935_20,7 +01007_59,0 +01769_140,9 +01901_42,0 +018392_26,14 +01977_196,8 +00615_197,11 +00993_3,14 +003062_33,7 +01723_224,15 +00761_55,14 +010012_90,5 +01941_153,14 +005882_72,13 +002752_93,12 +008402_130,7 +00660_217,0 +00442_184,4 +008482_92,17 +01953_26,2 +00181_121,0 +00442_248,4 +005882_187,4 +01144_141,2 +000092_72,0 +00023_29,2 +00079_30,9 +00312_3,0 +017752_4,2 +01882_44,11 +005092_219,12 +01330_231,8 +00065_202,1 +00951_90,0 +00730_69,18 +01330_35,17 +01929_150,0 +009642_114,8 +016052_143,5 +00519_121,7 +00821_6,14 +018122_96,2 +00438_125,2 +01962_130,0 +005092_160,2 +00567_163,2 +00292_16,11 +00535_172,0 +01001_113,5 +00503_15,6 +01087_215,5 +00660_67,0 +01228_44,2 +01408_290,14 +01707_115,1 +00474_63,2 +010012_290,5 +01509_179,0 +00382_108,13 +017752_9,2 +019252_52,12 +019242_238,14 +007092_66,19 +01437_199,11 +00023_173,2 +00160_259,13 +01509_284,11 +00840_277,2 +00509_75,2 +00021_101,12 +000092_191,7 +00450_68,15 +01448_30,0 +02172_240,14 +00333_80,13 +00314_137,0 +018392_87,11 +004082_184,11 +00088_47,5 +00011_23,0 +01210_115,6 +00442_43,2 +00011_68,2 +00306_105,14 +010012_247,5 +00681_57,5 +02005_35,11 +01001_245,5 +019712_263,2 +01706_293,2 +01228_8,14 +00722_103,17 +001112_7,14 +01044_57,4 +01568_76,2 +01087_18,14 +016922_89,1 +007832_243,5 +01941_158,14 +00079_157,0 +016932_261,0 +01108_43,0 +00128_222,4 +00475_186,1 +00722_95,17 +00957_49,4 +01568_164,4 +00232_153,14 +00730_114,14 +00783_188,4 +01423_31,2 +00528_57,2 +019712_116,2 +01929_186,0 +01182_5,14 +00660_226,0 +019712_117,2 +01427_28,17 +01091_150,5 +00825_27,2 +009512_23,0 +01968_114,14 +00475_66,9 +016932_123,0 +010012_216,5 +005882_189,4 +01228_182,14 +01045_83,4 +02057_192,3 +00065_84,11 +01877_167,4 +01578_202,14 +017672_201,14 +00721_11,14 +01145_53,2 +009162_4,2 +011612_141,17 +00993_246,14 +014232_34,2 +02049_271,4 +00261_49,0 +001022_268,16 +016922_98,1 +00607_37,11 +007212_179,12 +00342_76,17 +01865_12,5 +00837_9,0 +018792_92,2 +00462_74,13 +00546_48,14 +00417_180,6 +01636_29,0 +016982_57,17 +018342_201,8 +01431_1,11 +01158_6,12 +00546_86,3 +00287_267,15 +004082_30,1 +014272_67,9 +00840_18,2 +01161_271,17 +00867_20,14 +00979_127,4 +00450_190,14 +01001_231,5 +00601_113,0 +00825_69,12 +011082_83,14 +01091_266,14 +00462_169,4 +00065_196,1 +011612_36,17 +01045_283,4 +007762_70,14 +00023_82,6 +005882_178,4 +005092_196,2 +020052_255,11 +000092_57,12 +01626_44,7 +008252_10,12 +00577_13,14 +012402_196,2 +02088_12,0 +00825_12,12 +007832_174,2 +02005_227,11 +01775_141,4 +021622_7,14 +00539_169,1 +017232_91,15 +005092_214,12 +01045_138,4 +016932_118,0 +000232_130,6 +00528_194,0 +020052_6,11 +019712_192,12 +00333_113,4 +02172_241,14 +01706_205,2 +00390_39,5 +02005_216,11 +017072_56,0 +00124_92,19 +01605_48,14 +000242_108,2 +00772_48,7 +019412_133,14 +00552_44,7 +01706_206,2 +01941_6,14 +01692_27,2 +00979_85,1 +00552_79,7 +014232_150,0 +020572_189,3 +01101_116,13 +02094_84,12 +02028_80,5 +02138_231,8 +006742_39,12 +00453_90,9 +01182_83,4 +005392_22,6 +005882_215,12 +016882_149,14 +00124_251,0 +01877_61,4 +02057_36,2 +008482_35,17 +01901_108,0 +006972_95,12 +01692_20,2 +01184_17,14 +00474_22,2 +009642_218,3 +00490_97,2 +007222_94,17 +01981_76,5 +01941_224,14 +018792_86,4 +01058_25,2 +02049_2,14 +021462_22,5 +019712_231,2 +01497_1,5 +007832_71,17 +001022_25,2 +009162_251,5 +01839_192,1 +00768_6,14 +02146_126,11 +00793_299,14 +010012_191,5 +00474_19,2 +019042_45,12 +01118_50,7 +01813_8,0 +018652_129,5 +00450_182,14 +01929_109,0 +00438_224,2 +00021_70,3 +00242_162,2 +00837_25,11 +02191_72,7 +00442_76,2 +00550_99,18 +00490_190,2 +00088_39,5 +00761_274,3 +02191_96,7 +012282_194,14 +00962_38,0 +007212_66,12 +01702_80,14 +01500_8,9 +014122_46,0 +02057_114,2 +00793_18,14 +00261_26,12 +00841_19,14 +016922_137,5 +00567_234,5 +007182_71,19 +00840_194,7 +01161_197,17 +008832_73,11 +007292_100,14 +02127_254,17 +00160_40,11 +02049_146,13 +01775_17,2 +017232_7,4 +00160_44,11 +01488_244,5 +010872_273,5 +01948_80,13 +021912_23,7 +02005_36,11 +019622_11,0 +00282_6,14 +01228_299,14 +001602_71,11 +01693_130,0 +00840_198,7 +01509_144,0 +010012_212,5 +00485_15,2 +00175_6,2 +01968_50,7 +00456_83,2 +00793_275,14 +015972_113,12 +00490_206,2 +01636_113,2 +01578_233,14 +001022_272,16 +000792_136,9 +00485_124,1 +01748_14,0 +01437_151,11 +01001_6,2 +012722_148,2 +01437_217,11 +00916_165,2 +00128_115,2 +01045_53,4 +02049_136,13 +01723_250,15 +00674_118,14 +00342_98,14 +01787_55,9 +02042_76,14 +01044_21,4 +00793_230,14 +00287_101,15 +00314_223,12 +01707_211,0 +012562_36,4 +01578_186,14 +00474_31,2 +01108_67,14 +00417_107,6 +01007_263,6 +00011_20,0 +012402_284,12 +01865_138,14 +01622_116,14 +009642_4,14 +00783_246,5 +01769_21,2 +01427_125,14 +021622_45,17 +01058_41,2 +00935_26,7 +018342_248,8 +019412_207,12 +00674_9,14 +01924_115,14 +01144_127,12 +01693_238,0 +012402_238,12 +019242_11,14 +00609_72,14 +017752_86,2 +002802_246,14 +01605_75,5 +01706_188,2 +01853_119,14 +01007_99,0 +01423_173,0 +01448_74,3 +001242_0,4 +01001_194,5 +01087_50,14 +016052_281,11 +019712_69,4 +010872_214,5 +02054_187,4 +01804_23,4 +01924_7,14 +004172_215,17 +00709_177,19 +009622_42,0 +01813_5,2 +02030_181,16 +00485_116,1 +00505_142,14 +019412_263,14 +000092_32,7 +00503_90,1 +01488_56,13 +01953_196,4 +02146_106,18 +007212_113,14 +01501_0,14 +00490_198,2 +00867_63,0 +02028_104,2 +01158_127,1 +00453_133,9 +009162_38,2 +02127_91,17 +00578_17,4 +00519_24,7 +021462_154,14 +010872_281,5 +01423_163,0 +00821_63,5 +00821_96,5 +001022_277,16 +01636_122,14 +00993_173,7 +00993_86,7 +00382_6,5 +01509_240,11 +01278_91,4 +01723_178,15 +02028_88,2 +00776_77,4 +00456_26,12 +010872_27,14 +009162_16,2 +008402_204,7 +00041_6,2 +00390_29,5 +016932_12,2 +009162_126,2 +00503_98,1 +016932_35,2 +017072_167,0 +005282_153,0 +01408_78,14 +01971_186,2 +01688_102,5 +000092_189,7 +00981_119,14 +020052_149,11 +01497_7,0 +01165_11,14 +019242_239,14 +00718_50,19 +00793_278,2 +00709_180,19 +001022_210,16 +00628_125,2 +01497_16,0 +017072_268,7 +01001_35,12 +017232_299,15 +00181_23,0 +01161_244,17 +01366_39,17 +01158_160,4 +01312_55,7 +004082_244,11 +00577_51,7 +00709_232,19 +01962_38,0 +00660_258,2 +018122_24,4 +00793_297,14 +01948_177,13 +00102_99,16 +00615_43,11 +01643_65,4 +01623_132,14 +01597_56,0 +00509_129,2 +01582_82,14 +00503_202,9 +02094_138,2 +010912_118,5 +01971_40,2 +01909_34,2 +01134_50,10 +01767_227,14 +02088_28,0 +01626_141,2 +009512_42,0 +010012_164,5 +00456_64,14 +00065_100,11 +01775_86,2 +01091_164,0 +011772_98,4 +004082_31,1 +01108_64,14 +00588_127,13 +00462_106,13 +00438_155,2 +00111_71,7 +01493_163,1 +01366_103,17 +01094_27,11 +01941_28,14 +01007_119,0 +01953_259,4 +004172_175,6 +019412_10,14 +009162_244,5 +00417_150,6 +017232_179,15 +001112_61,17 +01904_45,12 +017482_91,0 +017232_52,15 +00993_67,6 +01409_112,0 +012192_41,5 +01769_69,9 +01330_65,18 +00729_292,14 +02138_63,4 +005502_61,18 +017672_147,14 +02187_183,16 +014372_36,11 +00023_44,6 +00981_18,11 +02049_129,13 +011772_110,14 +00567_123,2 +00276_106,11 +00730_97,14 +01924_146,14 +01219_77,5 +00729_119,14 +00503_217,9 +016882_66,5 +01158_137,12 +01210_190,6 +01981_62,5 +01622_98,0 +01977_220,8 +00287_290,4 +00456_78,4 +011772_117,14 +01161_223,17 +01877_117,4 +019622_111,0 +01904_160,12 +019242_114,14 +00025_60,17 +01909_195,2 +00160_211,1 +00528_61,2 +00528_182,0 +00916_25,2 +007092_219,19 +01058_149,2 +01428_77,14 +00228_48,11 +004082_181,11 +01812_39,4 +00840_63,2 +02149_35,17 +00509_35,2 +01597_114,14 +02012_62,7 +017482_18,0 +01834_167,8 +01490_80,7 +01877_204,4 +01145_173,4 +00563_23,2 +005282_46,2 +01769_194,2 +00350_126,5 +01879_57,4 +01977_97,8 +00567_27,2 +006742_21,14 +00314_179,4 +02127_147,17 +009512_115,0 +014272_79,17 +01707_210,0 +01493_245,1 +02042_22,14 +01361_278,15 +00538_47,4 +007832_158,2 +00509_144,12 +017752_30,2 +019242_215,14 +01412_43,0 +01240_17,2 +014122_49,0 +016982_54,17 +01748_33,0 +00577_59,7 +018132_37,11 +02062_135,4 +01977_69,6 +00528_15,2 +01144_80,6 +01626_101,7 +01108_18,14 +00840_72,2 +011082_52,14 +00181_143,14 +02021_10,14 +01834_173,8 +01351_12,2 +016932_134,0 +00761_194,3 +007182_32,19 +01219_121,5 +00462_35,14 +01972_9,2 +007762_62,4 +00776_11,4 +00413_186,4 +02177_47,12 +007292_204,14 +00546_138,3 +00160_80,1 +01494_55,7 +00314_241,12 +01693_11,4 +001242_252,0 +00628_143,14 +00079_248,9 +00333_136,2 +00462_90,13 +01605_280,11 +01119_101,5 +00023_61,3 +01698_23,17 +013332_44,0 +01578_52,14 +01723_208,15 +01145_91,4 +011612_230,17 +018772_75,4 +004172_192,17 +00065_214,12 +00660_245,2 +01493_259,9 +00296_42,7 +01865_111,18 +011912_0,2 +01977_19,14 +01953_285,2 +01568_245,2 +005282_14,2 +019242_153,14 +01509_52,0 +021722_66,12 +01723_183,15 +008372_168,0 +01240_168,12 +004082_91,11 +004532_35,9 +00550_93,18 +008402_192,7 +019252_298,8 +00275_166,14 +003062_47,7 +01278_15,2 +01201_98,14 +009352_83,7 +00442_284,4 +00314_59,2 +00519_118,11 +01723_22,15 +00709_139,4 +01813_86,11 +01582_51,2 +00232_58,15 +02054_51,2 +01501_75,4 +00546_197,14 +00538_27,1 +00768_48,7 +003062_57,7 +001022_244,16 +019242_32,14 +00292_33,11 +01182_89,13 +00567_28,2 +018772_255,4 +00009_191,7 +02138_0,14 +021462_56,18 +00242_285,12 +00065_210,1 +00009_237,7 +01228_196,14 +00475_31,5 +00009_152,12 +001602_108,11 +01201_90,5 +007832_170,2 +01605_167,11 +014372_95,11 +01101_6,14 +00102_204,16 +01331_13,14 +00993_237,6 +02030_203,16 +009642_145,8 +00709_129,12 +016052_264,11 +014882_157,13 +00535_251,6 +01706_158,2 +005882_54,15 +02057_123,6 +007762_29,14 +011912_199,14 +01541_7,14 +017672_181,14 +00709_147,5 +01493_188,1 +01058_125,12 +01488_64,13 +01101_124,0 +01101_5,14 +001022_79,16 +016932_111,0 +00539_101,1 +02054_113,14 +00916_110,2 +00730_132,14 +00505_53,4 +01161_234,17 +00563_109,2 +01605_282,11 +00509_159,2 +017482_2,11 +01775_85,2 +00597_28,5 +00160_90,11 +014882_168,13 +00111_33,17 +01134_256,10 +016882_152,14 +00242_114,12 +005392_12,6 +01366_96,17 +01278_108,12 +00916_193,2 +012722_7,2 +00539_2,6 +00450_112,13 +01278_68,12 +00539_276,0 +01103_42,4 +01971_288,12 +01748_13,0 +017672_179,14 +012282_9,14 +02127_267,17 +010012_92,5 +01423_83,0 +00528_54,2 +01330_200,1 +010652_20,1 +00552_15,7 +00677_3,14 +01210_113,6 +01804_87,7 +00450_56,4 +01706_266,2 +017232_65,15 +00438_85,12 +00009_103,12 +014972_7,0 +010012_286,5 +00232_103,13 +00660_252,14 +01981_119,0 +01804_78,12 +00539_73,1 +018342_254,8 +01437_164,11 +01044_71,12 +017072_283,7 +00280_103,12 +01839_31,14 +01007_244,1 +01240_290,12 +00916_298,5 +011612_245,17 +00993_130,7 +00528_130,4 +00158_190,5 +00438_174,2 +02049_50,3 +01706_4,2 +01145_261,4 +014232_26,2 +01330_174,9 +00567_208,5 +019242_125,14 +01182_23,13 +017232_256,15 +006972_70,4 +00875_107,2 +007832_198,12 +00721_110,14 +012722_274,2 +012282_109,14 +017022_48,14 +01767_198,14 +014882_125,13 +00979_74,1 +01904_69,12 +01094_79,11 +01929_11,14 +016052_297,11 +01001_170,5 +02187_62,16 +01853_6,14 +000092_169,0 +00979_113,1 +019622_46,0 +01509_125,0 +00041_74,6 +012192_53,5 +01087_36,14 +005392_276,0 +00840_71,2 +00124_192,0 +01568_3,2 +01812_53,4 +01210_179,6 +00979_39,1 +00314_271,4 +01769_111,2 +013712_59,14 +01272_198,4 +01605_273,11 +00848_10,14 +00475_21,5 +019252_127,3 +00228_155,9 +01219_138,14 +007222_96,17 +005062_60,6 +01924_155,14 +00314_182,0 +00951_17,4 +02021_8,14 +02127_85,17 +008832_5,11 +017072_153,4 +01706_148,2 +01158_52,0 +02054_112,14 +014372_118,11 +017072_100,0 +00578_112,14 +00841_48,4 +002752_10,14 +02138_238,4 +008922_71,2 +01409_158,0 +00011_87,12 +00729_115,14 +00453_160,9 +01431_248,11 +001112_47,17 +02127_17,2 +02162_4,14 +00660_228,0 +008402_13,2 +001602_148,11 +02187_103,16 +01769_132,1 +01144_203,12 +00577_87,7 +014232_250,0 +01924_102,14 +01578_225,14 +02042_83,14 +01134_132,10 +011912_8,14 +004532_237,9 +01044_255,4 +009642_208,3 +01693_109,0 +01605_29,14 +00158_285,5 +005092_91,2 +017692_254,0 +00128_109,4 +01165_4,14 +02054_199,2 +01775_131,12 +00674_142,14 +00413_155,0 +00450_159,14 +00438_53,2 +01092_118,17 +018342_188,8 +012402_31,2 +00160_192,11 +016052_183,11 +01925_80,3 +02177_7,4 +01839_129,1 +00916_236,5 +01494_98,14 +01182_95,4 +001022_138,16 +004082_203,11 +00159_24,4 +01804_31,7 +00730_50,18 +00128_253,12 +00539_56,1 +01092_159,2 +008922_91,2 +01408_296,14 +01909_155,2 +01161_59,17 +005282_94,2 +012282_57,12 +01971_174,12 +018342_91,8 +00456_48,14 +00981_102,11 +008922_103,2 +00485_162,1 +01048_30,5 +01509_137,0 +014072_55,12 +019412_163,14 +010652_106,5 +008922_92,2 +01941_67,14 +000092_228,2 +002752_149,14 +00413_100,0 +002802_19,14 +00462_88,13 +00588_159,13 +012282_27,14 +01962_67,0 +016922_131,5 +01702_20,12 +018772_208,4 +01814_67,11 +00505_39,2 +012282_168,14 +01094_88,11 +00951_45,0 +01909_70,2 +01839_95,11 +007212_189,14 +00280_21,14 +00453_297,9 +00783_103,17 +01351_78,7 +01853_85,0 +01283_73,14 +01091_94,0 +00065_235,12 +01330_283,9 +00442_218,4 +00474_46,12 +01948_50,13 +001602_173,11 +00783_0,2 +00993_202,6 +00793_154,14 +01091_229,7 +01201_27,11 +012402_163,2 +02146_98,18 +00588_82,13 +00566_22,14 +01158_106,4 +01924_196,14 +02149_48,17 +01977_276,14 +01065_76,18 +00761_223,3 +00442_139,0 +00009_151,0 +00079_281,9 +01361_38,2 +00722_91,17 +01769_128,11 +00287_164,15 +00538_26,1 +01493_236,1 +00505_178,11 +01909_8,2 +00394_13,14 +016882_126,14 +00776_69,14 +00442_155,0 +00453_53,9 +01457_52,7 +01909_9,2 +01981_109,5 +00242_291,12 +019242_68,14 +00528_204,0 +00333_117,12 +01044_103,4 +02054_91,2 +01813_11,11 +004532_113,9 +007182_101,19 +00628_78,7 +00615_190,11 +00011_38,1 +011912_104,7 +00503_197,9 +01578_190,14 +01134_96,10 +01278_52,2 +02149_20,17 +00021_164,12 +00546_162,4 +01351_121,7 +00124_72,4 +02172_140,12 +01044_137,4 +014272_57,4 +00688_76,5 +005092_203,12 +00041_140,7 +007182_34,19 +00892_74,2 +00519_72,11 +016882_148,14 +004532_112,9 +02042_134,0 +01688_165,14 +00442_19,14 +00709_41,19 +016432_69,14 +01605_192,11 +00840_171,7 +02049_72,3 +01971_85,4 +00577_50,7 +018392_156,1 +00840_235,2 +01707_194,0 +01814_19,5 +00964_139,8 +00021_156,4 +02054_272,12 +02191_13,7 +00783_273,5 +00382_92,11 +00697_96,12 +00793_170,14 +01509_94,0 +00287_254,4 +00475_28,5 +01119_40,11 +01358_4,1 +019622_13,0 +021912_0,14 +00442_229,4 +01839_73,11 +01972_218,3 +00538_98,17 +021462_69,18 +00333_133,2 +01094_80,11 +004082_10,2 +00475_176,9 +000232_92,0 +01119_38,11 +02149_47,17 +01707_96,0 +004082_63,1 +00709_95,11 +00964_299,14 +02030_255,16 +01977_280,14 +00442_209,4 +01240_111,12 +00546_139,3 +02127_263,17 +017692_34,2 +01763_203,2 +00519_34,7 +017072_34,2 +01925_262,8 +01278_184,2 +00242_142,2 +019712_105,12 +00609_84,14 +01707_239,0 +00535_262,6 +01962_2,0 +01909_187,2 +01431_240,11 +01201_23,5 +02146_94,18 +00306_89,7 +009642_261,14 +01145_169,4 +005282_157,0 +021622_21,14 +01240_42,2 +00776_53,4 +011912_77,7 +00242_113,12 +00528_217,0 +01165_9,14 +00474_123,2 +004172_66,17 +00124_137,19 +011612_73,17 +00333_185,2 +009162_139,2 +00674_134,14 +001602_180,1 +00124_100,19 +00615_121,11 +00394_54,17 +01240_7,2 +017672_70,14 +00417_128,17 +011612_285,17 +00314_157,12 +017672_270,14 +01767_232,14 +01962_23,0 +017672_143,14 +00821_61,5 +001242_221,0 +00772_63,7 +00242_117,12 +009162_292,5 +02021_80,11 +02138_121,4 +01331_24,7 +009512_55,0 +00408_53,1 +005882_117,13 +01158_54,0 +00577_86,7 +01119_27,11 +011612_32,17 +01330_121,18 +013302_217,6 +01412_88,0 +018772_46,4 +017232_204,15 +01626_66,7 +00276_66,11 +01256_96,14 +00615_52,11 +01597_99,0 +004532_253,9 +01437_231,11 +00453_80,9 +01929_133,0 +00276_13,14 +016432_79,14 +02138_263,14 +01001_164,5 +01767_53,14 +01144_205,2 +01707_216,0 +00718_77,19 +00503_57,6 +00065_232,12 +00232_34,12 +01692_101,1 +00519_90,11 +018772_231,4 +01971_241,12 +01693_197,0 +01834_210,8 +009162_159,2 +01509_130,0 +004172_246,6 +00485_277,4 +00438_169,2 +01909_21,2 +01409_243,14 +02054_87,2 +011912_157,14 +00450_137,13 +00722_100,17 +01283_49,2 +01272_188,2 +00981_70,11 +00009_63,12 +008252_77,12 +01182_106,14 +017022_44,14 +01165_30,5 +01272_242,12 +00124_218,0 +01278_84,4 +01330_133,6 +01971_259,4 +00426_123,0 +01058_112,4 +00275_82,14 +00535_193,0 +01437_84,11 +016932_208,0 +02049_142,13 +00628_74,7 +00413_14,14 +012722_230,4 +00567_2,14 +00242_105,12 +020572_116,2 +01161_53,17 +01361_86,4 +01626_109,7 +01877_284,4 +00181_70,0 +00102_162,16 +000092_226,2 +00426_108,0 +021722_2,14 +006972_22,9 +01688_124,14 +00065_200,1 +01103_108,14 +007292_241,14 +017232_87,15 +005092_97,12 +00485_151,13 +019412_281,14 +002802_16,14 +008402_258,2 +018772_230,4 +018122_86,2 +00993_268,14 +01767_96,14 +00275_90,12 +017022_57,2 +00065_148,1 +01408_189,14 +004532_176,1 +00041_94,12 +01707_209,0 +00232_19,2 +02187_290,16 +01775_1,2 +002802_206,12 +01568_251,2 +00567_276,2 +00232_170,14 +01448_54,3 +00578_39,17 +01278_6,2 +00232_156,14 +018132_42,11 +01001_73,12 +01409_184,0 +00041_92,12 +01134_29,10 +01977_192,8 +01240_115,4 +00552_71,7 +009642_92,8 +000792_92,9 +01001_257,5 +019242_168,14 +005062_139,2 +007212_92,14 +01814_249,5 +00453_147,9 +01971_145,12 +01904_62,2 +00783_172,2 +01158_130,1 +018342_38,6 +00964_3,14 +01941_187,14 +01941_273,14 +01431_209,0 +00709_86,9 +017752_145,2 +00417_184,17 +00875_104,2 +00394_78,12 +00867_165,14 +00282_85,11 +01331_9,14 +01228_159,14 +00442_33,14 +01568_104,12 +01707_152,4 +02172_0,14 +00941_29,4 +01045_13,2 +01956_10,14 +012722_37,2 +016922_129,5 +00280_69,12 +00821_73,5 +017752_122,2 +01007_284,6 +00160_22,2 +00413_37,0 +02049_179,13 +00539_24,6 +00314_131,12 +00761_264,3 +00306_56,7 +00567_209,5 +00993_252,14 +01312_50,7 +00160_231,11 +014282_25,14 +01330_73,6 +014372_150,11 +01361_44,12 +01437_159,11 +020572_83,2 +00539_201,6 +008832_11,11 +011612_277,17 +00506_125,2 +00102_5,2 +01048_33,5 +019622_14,0 +009512_41,0 +01723_10,4 +004532_130,9 +000792_278,15 +01605_199,11 +012282_50,2 +00981_43,11 +01775_117,2 +01044_63,4 +01707_250,0 +01925_277,8 +01723_51,15 +002802_152,2 +019242_231,14 +01723_195,15 +00539_258,1 +00821_31,5 +01091_31,12 +01101_54,7 +004532_58,9 +00951_44,0 +01901_193,14 +01769_256,2 +01158_55,0 +00783_93,17 +00314_272,4 +010872_264,5 +000792_106,0 +00916_186,2 +01693_2,2 +01493_153,1 +012192_114,5 +02127_139,17 +00485_123,1 +00538_19,17 +01941_179,14 +004082_73,11 +016982_27,17 +02030_283,16 +02138_167,13 +00453_190,9 +01007_91,0 +01210_120,6 +00793_78,14 +00509_227,2 +02187_4,11 +016932_138,0 +014272_69,9 +00462_46,12 +01636_96,0 +02127_211,17 +02187_111,16 +00503_259,9 +01909_65,2 +016882_28,5 +00566_17,14 +01763_55,12 +00840_48,2 +02057_108,2 +01909_37,2 +01092_273,12 +018342_266,8 +012722_67,4 +00175_65,4 +00287_100,15 +00350_5,14 +01493_298,1 +001112_51,17 +011772_87,14 +00509_143,12 +02030_100,16 +01929_68,0 +00993_183,7 +009162_153,2 +00509_123,2 +02005_63,11 +001602_139,11 +01431_103,11 +018342_267,8 +017072_87,4 +00485_186,1 +00628_17,7 +01092_185,17 +005062_18,2 +006742_95,14 +01261_108,2 +01278_125,4 +00503_2,6 +014972_32,4 +00296_55,7 +01767_55,14 +01909_12,2 +01901_73,0 +006972_97,2 +02172_17,14 +00228_55,11 +01431_228,11 +02028_51,9 +01813_106,11 +019252_68,6 +01144_134,2 +005882_52,15 +00462_68,13 +010012_113,5 +01707_273,7 +011772_63,4 +005092_228,2 +00567_157,2 +01001_70,12 +00577_109,14 +02127_66,17 +01145_185,4 +00181_19,0 +001022_74,16 +00475_200,1 +01001_111,5 +01839_84,11 +01161_208,17 +01941_127,14 +00964_205,8 +00951_42,0 +005062_42,2 +00840_243,2 +01210_259,9 +01361_94,6 +01144_195,2 +009642_41,6 +01046_84,7 +00128_173,2 +00350_200,5 +01366_6,14 +02027_79,14 +012282_145,14 +00394_45,14 +019242_202,14 +014122_36,0 +011612_54,17 +019622_136,0 +014072_38,4 +017482_50,7 +01134_91,10 +01769_119,0 +02187_97,16 +01981_12,14 +01210_152,6 +01605_258,11 +01423_170,0 +00709_80,19 +00312_2,0 +014372_90,11 +01865_25,11 +01636_18,4 +01134_293,10 +010012_299,5 +01437_173,11 +004172_182,6 +010942_26,11 +014972_36,2 +00413_216,14 +00892_31,0 +01775_169,12 +01941_38,14 +00825_23,2 +018342_285,8 +017072_290,7 +01490_13,7 +02030_218,16 +01144_109,4 +01707_80,0 +00729_173,14 +00841_21,14 +003122_45,0 +00280_102,12 +01145_163,0 +021462_175,14 +021462_32,11 +00934_3,1 +02012_96,17 +01488_46,0 +016882_58,5 +02162_16,14 +00761_138,14 +00934_19,1 +01351_154,2 +01834_228,8 +00021_82,4 +02146_7,14 +00453_198,9 +013302_14,2 +01351_55,7 +01437_74,11 +009162_89,2 +00417_56,17 +01623_22,14 +01408_79,14 +002802_74,12 +00102_100,16 +00228_113,5 +00413_95,0 +01706_119,2 +00993_155,7 +01723_163,15 +001242_168,19 +01626_96,7 +02138_236,4 +01622_130,14 +000792_157,0 +00426_117,0 +01423_241,2 +012402_133,12 +00660_212,0 +01119_63,11 +02094_10,4 +00333_38,2 +01201_88,11 +00175_83,2 +01956_37,18 +00453_155,9 +00721_119,4 +01087_183,5 +007832_82,17 +01091_13,2 +00509_130,12 +00709_29,19 +019712_133,12 +00729_284,14 +01763_87,12 +006972_76,5 +001242_128,19 +002802_6,14 +012402_73,12 +004082_131,13 +017232_83,15 +00021_53,3 +001022_160,16 +019592_56,6 +01688_282,2 +02187_91,16 +01423_2,2 +01853_21,5 +00709_40,19 +01834_46,8 +01959_54,6 +01839_106,11 +018792_55,4 +01623_1,14 +00453_262,9 +01044_115,12 +00474_100,2 +018772_287,4 +00677_13,14 +01941_190,14 +006972_41,2 +010652_35,18 +012282_25,14 +01707_206,0 +00535_256,8 +00462_127,13 +007292_297,14 +00242_128,2 +00456_132,12 +01692_95,1 +019242_137,14 +00128_54,4 +01901_163,12 +01490_68,7 +00730_32,17 +01853_92,0 +01626_55,7 +017072_231,0 +000242_96,2 +004082_77,11 +00314_256,4 +01092_4,17 +01488_31,0 +00509_141,12 +00578_82,17 +009642_9,14 +01578_57,14 +01981_26,5 +02049_127,13 +017072_77,0 +008372_128,11 +01775_87,2 +00485_1,2 +01877_122,4 +01409_177,0 +00837_150,11 +01541_50,5 +01134_43,10 +008482_65,17 +00607_57,6 +00528_192,0 +011612_80,17 +012282_136,14 +02028_107,2 +012402_37,2 +005392_208,1 +00539_144,13 +00848_5,14 +01925_260,8 +01412_34,0 +006972_74,4 +01763_27,2 +00747_41,4 +00426_167,14 +01834_123,8 +009162_241,2 +017232_115,15 +00535_284,2 +018342_270,8 +00453_104,9 +00957_32,0 +010012_51,2 +01240_291,12 +00588_33,4 +01144_28,5 +01437_0,11 +019712_140,12 +01351_89,7 +01119_41,11 +01177_122,14 +01834_73,8 +002752_39,12 +017672_56,14 +009642_133,8 +00935_106,14 +014072_45,2 +00503_102,1 +00024_10,2 +012722_205,4 +01108_84,14 +01814_15,5 +01407_48,2 +00242_173,2 +003122_36,0 +02021_37,1 +00011_118,4 +017022_5,14 +007212_149,14 +00390_76,5 +00825_32,12 +019042_101,12 +01144_8,5 +014882_20,1 +01865_7,14 +002802_250,14 +01707_75,4 +00503_240,9 +01501_78,4 +01488_71,0 +01092_88,17 +019252_245,8 +01144_86,12 +01924_164,14 +01723_240,15 +016842_30,4 +01058_146,2 +004532_28,9 +003062_75,7 +00287_298,4 +01158_8,12 +02187_14,16 +013302_208,9 +019252_8,14 +021912_1,14 +01437_187,11 +005882_13,4 +000092_10,2 +01623_85,11 +01409_22,14 +001242_97,19 +00688_105,2 +00628_108,7 +017022_65,14 +016982_7,14 +01948_64,13 +01813_112,11 +00175_87,2 +02042_89,4 +00390_48,5 +00505_248,14 +01578_7,14 +01272_238,2 +000092_91,0 +00615_32,11 +02146_47,18 +01636_101,0 +009352_104,7 +01971_86,4 +004532_83,9 +01977_104,8 +02187_265,16 +01007_185,13 +014372_22,11 +01941_135,14 +01001_277,5 +00729_295,14 +017752_128,12 +00535_34,2 +001022_36,16 +01261_51,2 +007182_73,19 +016882_82,5 +00350_285,9 +01165_23,5 +02057_184,3 +013302_233,8 +00158_263,5 +00837_15,0 +00772_38,7 +01707_31,2 +00709_172,19 +006742_16,14 +02187_22,16 +00282_58,17 +00703_26,11 +00577_64,7 +01351_131,7 +005502_3,14 +01698_88,17 +006742_57,4 +01775_42,12 +00485_258,12 +018342_131,8 +020052_193,11 +00438_193,2 +02172_23,14 +00485_203,1 +01763_65,2 +01636_104,0 +00333_11,2 +01723_171,15 +00615_106,11 +01330_18,2 +009642_140,8 +007832_265,5 +017482_21,0 +01437_122,11 +01118_91,14 +00951_161,14 +01046_6,14 +00538_23,17 +01568_222,2 +004082_50,1 +00158_250,5 +00102_42,16 +002802_22,14 +00840_47,2 +01256_41,4 +00065_157,1 +012562_112,14 +01118_36,7 +00474_86,2 +00159_68,2 +00102_263,16 +00776_73,14 +007092_175,19 +01493_260,9 +02049_99,13 +01706_38,2 +01210_188,6 +007222_60,4 +00981_97,11 +01044_299,4 +00660_233,0 +010942_96,2 +013712_15,4 +016932_226,0 +00490_93,2 +00280_208,12 +01723_216,15 +007212_140,12 +018392_169,4 +00456_3,12 +009642_204,8 +005502_133,14 +00475_297,9 +020052_275,11 +020572_24,2 +02094_25,2 +02187_278,16 +012192_75,5 +00563_100,2 +01941_25,14 +00111_81,14 +016982_101,17 +017752_115,2 +00916_283,5 +01834_224,8 +01091_205,9 +02162_70,17 +00450_29,14 +01228_291,14 +003062_101,14 +01812_35,4 +011612_12,17 +012562_42,4 +00964_207,8 +00722_62,4 +012402_4,2 +004532_135,9 +00535_118,6 +01941_299,14 +001602_196,1 +01692_56,5 +00408_230,11 +02172_252,14 +005392_24,6 +00333_167,12 +01333_39,4 +012402_121,2 +01261_47,2 +013712_16,4 +009642_290,14 +01272_134,12 +020572_127,6 +01108_24,0 +01723_70,15 +014882_161,13 +016922_144,14 +02138_283,14 +016882_125,14 +01804_89,7 +00718_89,19 +01693_71,0 +004082_242,11 +00158_83,5 +009342_46,0 +020052_271,11 +00538_131,2 +00729_268,14 +01925_240,8 +000232_137,6 +00009_157,12 +01423_124,0 +00128_234,4 +00539_164,17 +00761_51,14 +016932_68,0 +010872_267,5 +00674_87,14 +002802_168,12 +019592_71,6 +02042_54,4 +00314_80,4 +01437_80,11 +012282_98,14 +014272_98,17 +00124_23,4 +00709_133,12 +021772_15,4 +00674_95,14 +012612_86,2 +01814_94,11 +01145_238,4 +01240_2,2 +012282_26,14 +016882_14,5 +00242_184,2 +00875_78,2 +000792_115,9 +021462_20,2 +00546_72,3 +010012_56,2 +007292_64,14 +017692_258,2 +01240_213,12 +00128_179,0 +01191_164,14 +00951_135,14 +021722_188,14 +02187_70,16 +01087_259,5 +017072_112,1 +000792_29,9 +019252_204,8 +00729_191,12 +02162_109,1 +00951_47,0 +017072_271,7 +018392_166,1 +01839_191,1 +013712_47,14 +01408_287,14 +00453_217,9 +017752_42,12 +01134_159,10 +01953_78,7 +01626_73,7 +01278_124,4 +01769_185,2 +007292_264,14 +00009_14,4 +01834_150,8 +019712_135,12 +01431_294,11 +00456_142,14 +02191_86,7 +016922_121,1 +00761_251,3 +02149_50,17 +016052_77,5 +01605_276,11 +00079_128,9 +00535_283,2 +01091_9,2 +00935_100,7 +015972_74,0 +018342_29,6 +01161_248,17 +00697_5,2 +017232_127,15 +00607_20,5 +00916_223,2 +02042_30,15 +01968_92,7 +016882_205,5 +01698_15,14 +01814_217,11 +00475_137,11 +005092_194,2 +004172_245,6 +007092_120,17 +01763_0,4 +00951_113,0 +000232_145,6 +01045_270,4 +016982_106,14 +00951_77,0 +01158_29,0 +01428_70,14 +011772_83,14 +00848_21,14 +00660_209,0 +01814_276,11 +01145_259,4 +005392_260,1 +01723_193,15 +01330_205,9 +01962_7,0 +011912_70,7 +01240_1,2 +018132_66,11 +00485_209,1 +01605_12,14 +009352_98,7 +001602_269,13 +01045_26,2 +01578_119,14 +00588_83,13 +00474_26,2 +007292_267,14 +014232_78,0 +017232_173,15 +01622_18,14 +007762_6,14 +002802_234,12 +00438_211,12 +005092_11,12 +00615_149,11 +00438_249,2 +01972_176,13 +00772_54,7 +01177_107,14 +00660_16,14 +004082_141,11 +009352_29,7 +00597_7,14 +01769_161,1 +00916_142,2 +016932_59,0 +00892_101,2 +00181_49,0 +00588_75,13 +00009_10,2 +007092_21,19 +021772_52,12 +00875_114,2 +017072_128,7 +01605_168,11 +01804_33,7 +02146_144,14 +01813_138,5 +012562_50,4 +01490_87,14 +00287_43,15 +01925_154,3 +02012_58,7 +00892_7,0 +01787_60,9 +004172_45,17 +018792_63,4 +004172_135,17 +00674_82,4 +01904_0,2 +002802_223,14 +003062_56,7 +01177_99,4 +00718_123,19 +010912_133,5 +00158_235,5 +01879_94,2 +001242_98,19 +00009_17,12 +00677_87,14 +016882_132,14 +01767_161,14 +01684_3,14 +01091_257,2 +00282_5,14 +004082_17,4 +01240_34,2 +007292_136,14 +01437_20,11 +01972_37,6 +00485_56,1 +00079_68,9 +00408_140,11 +00892_26,0 +01692_10,14 +00578_105,12 +000252_68,17 +01001_147,5 +00314_140,4 +00503_170,5 +002752_55,14 +00821_15,14 +00350_51,14 +011912_164,14 +01134_217,10 +020572_53,2 +014272_81,17 +00840_293,2 +012402_259,4 +018392_75,11 +01228_203,14 +01968_1,14 +01643_22,12 +00535_24,2 +019042_68,4 +013332_4,4 +007292_67,14 +01693_278,0 +016052_271,11 +00124_115,19 +00011_59,4 +02062_136,4 +01091_255,2 +01693_224,0 +00490_119,12 +00475_213,1 +01626_90,7 +01427_127,14 +015972_9,14 +00276_0,14 +00228_27,14 +02012_18,2 +01853_38,7 +010872_110,5 +02187_46,16 +01865_30,11 +01103_64,14 +00535_249,9 +00721_87,14 +018342_272,8 +00242_86,4 +017692_28,2 +005092_37,2 +01977_149,8 +01283_0,14 +01688_289,2 +02027_77,14 +009642_82,3 +01953_221,4 +01366_145,5 +00709_19,19 +019622_47,0 +012722_155,4 +014372_120,11 +016922_32,2 +019592_66,6 +017482_24,0 +01134_75,10 +02021_20,11 +01091_33,12 +00783_14,2 +008252_34,12 +01568_52,2 +02162_71,17 +00287_279,4 +00450_38,14 +00793_113,14 +00519_89,11 +01333_43,0 +009642_155,8 +005282_82,2 +00503_256,9 +001112_55,17 +013302_220,6 +00485_201,1 +01007_280,6 +01278_222,2 +00718_42,19 +00840_209,7 +00079_160,15 +007832_98,17 +00505_112,7 +00390_37,5 +00709_280,12 +006742_20,14 +01161_233,17 +00079_105,0 +00721_41,14 +00837_34,11 +019242_75,14 +01431_222,11 +007222_72,17 +01119_111,14 +020572_31,2 +016882_71,5 +00709_235,19 +00474_3,2 +01693_274,0 +014232_157,0 +017072_119,0 +012402_52,12 +01834_80,8 +01371_20,4 +00729_106,14 +012282_286,14 +01834_291,8 +01184_114,7 +00102_3,2 +01953_34,2 +01839_56,11 +01568_174,2 +013302_5,2 +01283_3,14 +016982_88,17 +017752_127,12 +01210_142,6 +00993_204,6 +00408_29,1 +01775_8,2 +02172_204,14 +007832_131,12 +001242_33,4 +00065_240,12 +012562_114,14 +01925_243,8 +00242_219,12 +00276_81,11 +00941_38,0 +020052_274,11 +018392_159,1 +00128_250,12 +01182_0,14 +017022_35,14 +01490_60,7 +00837_109,11 +01693_154,0 +00615_31,11 +00840_17,2 +00261_9,2 +00025_56,17 +001112_49,17 +00615_179,11 +01813_64,11 +00242_201,12 +00709_227,19 +00228_154,9 +00450_14,14 +019622_20,0 +000092_34,0 +01814_60,11 +017072_22,2 +019412_94,14 +00546_120,3 +00426_9,2 +01366_86,17 +00065_146,1 +003062_38,7 +011612_116,17 +01814_237,5 +01763_12,2 +00102_6,2 +01044_157,12 +000232_17,2 +018392_127,1 +01763_104,2 +01488_112,0 +00867_178,14 +01493_9,11 +010012_156,5 +01240_243,12 +012192_1,14 +00821_35,5 +01361_26,4 +01865_127,11 +009352_106,14 +01953_200,6 +01145_162,4 +00709_286,12 +01101_64,17 +009642_45,6 +00232_1,14 +01261_33,2 +01509_197,0 +01972_41,6 +01423_93,0 +02187_275,16 +02049_196,13 +01408_112,14 +009162_78,2 +00475_215,1 +00041_14,2 +01723_282,15 +01877_44,4 +01494_25,7 +01493_228,1 +004172_88,6 +021722_12,14 +01361_198,3 +01210_193,6 +00506_113,2 +00408_260,13 +01240_240,12 +018342_169,8 +007212_219,14 +01409_221,14 +02012_46,17 +01948_189,13 +000092_201,12 +01707_168,0 +00453_233,9 +014122_72,0 +01879_82,12 +00546_26,14 +01501_68,14 +01812_9,2 +00597_84,14 +01968_118,14 +019252_113,3 +02172_196,14 +01333_30,2 +01578_153,14 +02049_133,13 +01901_174,14 +01501_111,14 +00306_41,7 +016882_192,5 +011612_194,17 +01045_187,4 +01814_158,11 +017672_265,14 +01959_51,6 +007092_137,4 +01972_221,3 +00546_21,14 +01769_216,9 +01692_106,1 +01972_60,3 +00597_23,5 +019242_66,14 +00840_225,2 +00450_23,14 +005392_35,6 +01312_13,14 +01623_118,14 +020572_134,3 +00628_56,7 +02094_2,2 +01626_132,2 +00450_102,13 +01904_124,2 +00867_62,0 +015972_94,0 +00538_39,17 +00628_42,7 +00490_17,2 +00417_262,11 +01366_70,17 +01119_83,11 +00438_1,2 +00011_35,1 +01582_77,2 +011772_64,15 +00181_78,0 +005092_171,12 +00761_41,14 +017672_259,14 +019242_236,14 +02187_88,16 +00539_64,1 +01953_211,4 +01191_47,2 +01693_206,0 +016882_103,5 +01909_200,12 +00567_271,2 +00175_57,2 +008372_104,11 +01684_17,14 +02057_152,3 +009642_96,8 +00588_9,2 +01046_89,7 +012562_27,4 +01941_172,14 +00181_17,0 +01427_90,4 +01490_28,7 +020052_298,11 +020052_78,11 +00312_21,0 +01145_235,4 +00023_2,2 +01953_159,4 +01007_183,13 +012282_219,14 +00438_274,2 +007832_271,5 +01901_143,5 +00875_101,2 +005092_12,12 +021722_113,14 +02172_211,14 +01278_120,12 +007222_118,17 +00941_2,11 +01925_66,6 +00979_145,14 +007092_12,19 +013302_191,13 +021462_93,18 +00333_76,13 +00228_242,11 +012192_37,5 +019252_148,3 +01509_145,0 +01134_79,10 +00729_195,14 +005062_137,2 +00505_60,6 +012402_279,12 +010912_11,2 +01879_23,2 +01971_3,2 +00615_47,11 +02187_74,16 +017672_17,14 +00242_38,12 +01428_60,4 +000792_288,9 +005392_42,6 +00024_114,2 +00011_54,12 +01707_177,4 +01488_51,13 +01941_68,14 +01962_64,0 +004532_230,9 +010872_29,14 +00228_284,14 +016052_274,11 +01702_64,14 +005392_195,1 +02127_38,2 +00951_124,0 +005392_272,1 +00674_16,14 +02049_120,13 +01408_127,14 +00709_183,19 +00660_179,0 +000792_13,9 +01437_223,11 +00124_129,19 +00023_77,3 +01972_232,3 +00567_292,2 +00505_21,14 +00729_107,14 +002802_116,4 +00314_11,2 +00601_98,0 +000792_145,9 +010012_236,5 +01882_28,11 +02030_205,16 +00718_119,19 +00490_135,2 +006742_101,14 +006742_18,14 +00681_61,5 +00505_127,12 +01091_171,11 +00490_157,12 +00964_261,14 +00282_13,14 +02028_28,15 +00417_59,17 +01330_21,2 +021912_112,14 +016932_19,14 +01177_100,4 +01702_39,14 +01087_95,5 +009642_131,8 +016882_134,14 +008402_232,2 +01330_273,15 +00232_118,13 +01509_242,11 +01278_140,4 +01493_132,1 +00282_81,11 +00528_107,2 +01331_58,17 +01626_15,2 +00539_159,17 +01877_91,4 +00024_104,2 +00709_295,12 +02177_12,4 +00261_47,5 +01643_51,14 +005092_15,12 +01829_30,12 +005282_80,2 +01693_272,0 +00333_156,2 +01924_98,14 +01972_27,4 +01693_247,0 +012192_6,14 +00009_67,12 +01706_269,2 +004532_145,9 +00567_59,2 +001022_2,2 +00506_128,2 +00677_2,14 +004172_286,11 +00287_140,4 +01901_137,0 +002752_78,14 +02138_268,14 +004172_101,6 +01191_52,7 +014372_279,11 +01158_15,0 +01431_118,11 +00563_107,2 +00228_136,9 +00413_148,0 +01763_284,12 +00674_76,14 +000792_63,9 +00181_99,0 +00722_99,17 +00065_122,11 +01408_34,14 +012562_100,14 +01423_199,0 +00597_64,2 +013332_21,2 +00951_11,14 +01409_40,12 +017692_32,2 +005282_158,0 +00875_37,2 +00697_32,4 +00426_157,12 +00697_75,4 +00628_91,7 +00021_83,4 +00503_211,9 +00102_81,16 +01331_55,17 +007762_19,4 +019412_112,14 +01500_24,4 +017482_66,0 +01941_289,14 +02127_4,2 +011612_152,17 +013302_4,2 +005502_62,18 +01219_42,5 +006742_138,14 +014372_112,11 +01272_268,2 +01001_133,5 +00024_70,7 +01145_27,2 +00721_23,14 +00957_8,0 +015972_82,0 +01488_150,0 +01049_27,7 +00438_207,2 +004082_253,1 +00474_27,2 +01597_8,14 +01707_158,0 +01814_91,11 +00578_107,14 +00160_59,11 +01493_17,11 +00314_17,2 +005392_220,1 +014372_30,11 +02062_114,4 +018652_66,18 +01007_165,13 +00703_30,11 +018652_29,11 +01723_125,15 +01423_20,2 +016092_9,17 +020052_286,11 +004082_115,13 +00426_84,0 +01437_106,11 +01929_231,14 +00772_15,14 +00951_109,0 +01962_62,0 +002802_158,12 +00485_59,1 +00232_40,12 +007832_137,2 +01182_25,13 +00964_114,8 +01119_13,5 +01045_239,4 +01706_218,2 +00821_85,5 +01312_83,7 +001022_180,16 +004082_66,1 +005092_154,2 +007182_120,19 +00892_14,0 +021722_235,14 +02030_295,16 +01312_60,7 +00450_139,13 +00159_86,0 +00011_8,0 +016932_272,0 +000252_57,17 +00413_77,0 +00232_82,13 +01500_2,11 +004532_199,9 +019712_145,12 +009622_53,3 +00528_81,2 +01191_149,14 +020052_265,11 +02030_264,16 +01161_243,17 +02049_80,3 +00413_2,14 +01431_81,5 +01839_25,14 +01941_7,14 +01091_173,11 +01977_16,14 +01431_289,11 +00312_14,0 +00660_234,0 +01626_85,7 +00660_137,0 +01092_140,17 +01134_244,10 +00426_23,0 +00287_217,15 +012282_45,2 +01692_85,1 +001022_279,16 +00729_201,14 +00350_25,14 +01853_120,14 +001022_121,16 +02027_104,14 +00951_163,14 +014232_142,0 +00875_25,2 +005882_17,12 +01044_260,4 +01925_68,6 +00079_240,9 +021462_73,18 +002802_251,14 +01904_171,12 +009622_59,3 +00768_100,14 +00628_109,7 +01605_244,11 +01834_193,8 +01184_134,14 +00065_179,1 +00503_216,9 +01609_27,17 +017692_281,2 +01312_62,7 +01882_42,11 +00242_55,12 +008922_51,0 +00065_293,1 +01925_53,12 +010872_75,5 +008482_26,17 +01228_24,14 +000232_173,2 +01767_104,12 +01812_25,4 +012402_282,12 +01953_165,4 +02030_184,16 +01775_98,12 +012192_73,5 +01948_36,4 +00519_84,11 +007182_13,2 +017022_72,14 +021462_173,14 +009642_260,14 +000092_108,12 +01493_83,1 +01058_153,2 +000242_65,7 +01001_244,5 +00426_87,0 +01834_5,14 +010872_137,5 +004082_198,11 +01351_132,7 +00453_121,9 +019252_42,4 +014122_12,4 +00128_74,4 +00793_151,14 +01702_0,14 +018392_140,1 +014232_218,0 +01101_39,7 +00761_62,14 +009162_162,2 +00588_29,12 +00382_62,17 +019242_112,14 +01134_105,10 +011912_52,7 +00333_12,2 +01812_73,12 +01045_252,4 +00503_179,5 +01692_153,14 +02146_104,18 +00979_46,1 +00783_257,5 +01046_69,7 +001022_117,16 +01953_19,2 +01007_3,2 +01210_70,17 +00417_295,11 +01968_61,7 +00597_18,14 +007832_237,5 +01427_32,17 +009512_85,0 +007292_3,14 +00287_65,15 +00242_122,12 +01839_11,2 +00111_34,17 +01763_158,2 +01278_80,4 +01351_60,17 +00535_25,2 +01901_183,14 +018132_139,5 +007292_9,14 +012402_247,12 +014372_79,11 +006742_69,14 +00964_36,6 +01769_280,2 +01165_7,14 +01582_59,2 +012722_69,4 +01331_17,14 +017232_77,15 +00837_123,11 +00314_236,12 +00438_156,2 +019592_84,6 +01909_36,2 +00916_129,2 +018772_25,4 +01500_30,12 +00160_33,11 +01240_33,2 +02146_59,18 +00314_102,4 +012722_36,2 +00615_206,11 +018772_147,4 +00158_164,5 +00718_35,19 +00009_179,2 +00566_165,8 +007832_135,12 +017232_217,15 +00287_127,4 +00837_117,11 +02146_99,18 +01925_278,8 +012192_65,5 +010012_106,5 +012612_72,12 +01048_13,14 +00783_110,6 +01361_155,3 +006742_51,14 +01408_12,14 +00333_125,2 +00539_148,1 +000232_18,2 +00588_54,15 +00462_208,14 +00821_58,5 +01763_26,12 +020052_187,11 +02054_255,2 +000242_104,2 +00768_33,7 +01643_29,14 +00314_280,4 +017672_13,14 +00729_266,14 +01597_60,0 +00232_161,14 +01904_139,12 +01814_22,5 +000792_130,9 +020052_209,11 +01493_210,1 +019622_91,0 +016982_47,17 +012282_156,14 +017692_192,2 +00111_68,17 +01971_129,12 +00450_37,14 +01959_77,6 +01901_17,2 +012282_206,14 +014232_80,0 +00242_155,12 +01941_140,14 +01953_282,12 +016932_204,0 +014272_65,17 +00485_49,4 +012282_51,2 +00962_44,0 +01804_125,4 +01182_114,14 +01605_125,5 +01272_163,2 +020052_49,11 +01101_125,0 +008922_37,0 +00837_102,11 +012722_81,2 +00456_30,14 +00390_23,5 +00615_97,1 +000792_257,9 +00474_204,2 +005392_143,1 +007092_199,19 +001242_183,0 +00450_127,13 +01278_110,12 +009162_36,2 +01597_74,0 +00509_80,2 +01145_175,4 +008832_74,11 +012562_107,14 +00535_145,1 +00505_7,2 +00503_177,5 +017482_74,0 +00563_79,6 +02187_270,16 +000242_44,7 +01210_216,6 +017072_236,0 +00660_171,0 +02149_15,6 +01971_154,4 +00390_31,5 +01361_92,6 +00628_47,7 +014122_35,0 +01488_213,0 +01184_31,5 +01748_82,0 +011912_26,14 +01118_35,7 +004672_56,11 +02054_32,2 +000092_88,0 +008402_267,2 +007222_121,17 +00539_83,1 +012402_159,2 +005062_143,2 +00964_186,8 +01909_150,4 +004172_126,17 +004532_179,9 +01145_82,4 +00718_88,19 +000092_172,0 +00276_108,11 +00228_131,9 +01977_96,8 +01092_250,12 +012402_34,2 +01834_205,8 +00566_197,8 +009512_56,0 +00408_218,11 +00342_57,17 +019242_122,14 +01972_29,6 +014282_45,14 +01428_82,14 +01814_136,5 +01834_212,8 +018772_21,4 +01092_139,17 +00175_54,2 +01643_92,14 +00025_40,17 +005392_103,1 +01145_282,4 +02049_85,3 +00916_3,2 +00242_110,12 +01568_253,2 +00350_290,9 +01412_73,0 +00546_145,3 +009642_86,3 +012192_21,5 +011772_116,14 +00563_118,2 +00566_9,14 +018342_94,8 +01723_14,4 +00413_192,2 +010012_221,5 +01909_55,2 +014272_106,9 +012612_82,2 +001022_51,16 +00957_57,2 +00567_184,5 +007292_211,14 +00350_104,5 +01007_17,2 +00025_63,17 +00730_47,18 +011772_53,4 +01366_128,5 +00867_181,14 +00333_105,4 +000792_175,9 +00964_94,8 +01626_87,7 +008832_21,11 +018392_1,14 +005882_214,12 +000242_50,17 +00703_13,2 +011612_206,17 +01448_18,14 +00350_297,5 +00709_68,19 +00566_205,8 +018392_132,1 +02057_25,2 +005282_55,2 +00065_218,12 +00563_25,2 +01813_47,11 +014072_12,2 +000252_37,17 +00474_142,2 +00729_34,14 +010012_222,5 +00490_52,2 +00426_68,0 +01330_11,2 +00296_40,7 +01210_83,9 +018652_80,18 +01087_66,2 +00503_86,1 +001602_132,11 +017692_299,5 +00951_149,14 +02062_60,2 +00228_255,11 +00242_100,12 +00462_44,12 +02177_54,12 +01971_252,12 +01688_120,14 +000252_11,17 +001602_218,11 +016882_290,2 +010012_225,5 +00021_37,6 +00024_54,17 +014122_39,0 +009642_192,8 +00128_268,0 +01706_281,2 +00417_26,6 +01087_25,14 +01044_272,4 +00783_106,17 +00660_50,0 +00867_132,17 +017072_94,0 +00426_98,0 +01948_20,14 +008922_32,0 +009642_266,14 +008402_73,2 +01366_15,14 +012722_56,4 +00280_46,4 +01909_174,2 +01904_56,4 +00875_53,2 +01925_190,8 +00314_71,12 +01119_89,11 +007092_229,19 +004082_142,11 +00628_34,7 +00124_181,0 +01065_54,18 +02172_259,14 +01330_25,12 +00506_52,4 +01693_112,0 +00964_92,8 +00729_87,14 +00703_45,11 +012562_32,12 +006742_113,14 +01278_148,12 +014122_74,0 +01971_213,2 +017072_147,4 +005392_80,1 +00916_20,2 +01001_123,5 +018792_22,2 +00312_43,0 +005062_29,2 +011772_14,12 +00566_44,8 +01065_21,1 +00588_148,13 +016982_34,17 +01423_4,2 +00628_1,14 +00242_293,12 +01804_10,7 +009642_243,4 +01278_24,2 +019412_144,14 +005092_198,2 +01904_71,12 +019042_163,12 +01813_95,11 +00124_67,4 +01331_1,14 +00875_41,2 +01058_48,2 +02049_200,13 +017752_120,2 +01092_247,12 +02187_44,16 +00442_135,4 +02187_142,16 +01044_1,2 +02094_135,2 +019712_32,2 +00382_80,6 +01706_182,2 +00841_36,4 +00607_136,14 +01219_36,5 +01497_22,2 +014372_32,11 +00280_199,12 +016922_145,14 +00503_247,9 +015972_29,0 +005092_229,2 +01775_154,2 +019712_146,12 +007292_252,14 +01087_201,5 +01909_77,2 +016882_219,5 +00158_63,14 +009642_289,14 +00242_176,2 +017072_30,2 +01134_196,10 +001602_7,2 +00677_30,14 +01834_16,14 +01103_39,4 +018772_104,4 +00296_38,7 +00041_106,12 +01804_0,12 +00088_16,2 +01925_85,3 +007092_1,19 +00009_248,12 +00674_62,14 +00535_93,2 +01981_112,5 +00159_84,0 +00916_105,2 +01001_237,5 +00729_1,14 +01763_73,4 +00993_153,7 +00350_102,5 +01312_43,7 +00102_233,16 +005092_2,2 +005092_123,2 +00453_270,9 +01161_62,17 +018772_60,4 +011772_81,14 +01007_12,2 +01409_41,12 +00390_40,5 +02187_34,16 +00474_227,2 +00287_133,15 +00609_51,11 +01901_20,2 +019622_137,0 +00065_34,17 +00011_125,2 +013302_150,9 +007832_216,17 +00394_66,1 +004082_283,11 +02094_146,2 +010012_210,5 +01488_139,0 +001602_250,11 +01427_43,9 +02057_207,3 +01457_13,7 +004082_258,13 +00079_276,15 +018122_117,2 +02021_3,14 +009342_5,9 +02146_92,18 +00128_224,4 +021912_75,7 +01925_145,3 +00503_214,9 +00962_40,0 +01423_25,2 +01431_84,11 +02186_15,14 +00566_65,8 +016922_42,2 +01971_29,2 +00438_26,2 +01804_41,12 +01972_134,3 +00158_291,5 +011612_46,17 +00158_17,14 +00577_54,7 +01412_53,0 +01001_124,5 +00124_122,19 +01134_127,10 +01706_10,2 +01962_48,0 +019592_11,6 +021722_72,14 +019042_92,2 +005282_140,4 +014122_66,0 +01361_4,0 +00408_141,11 +00181_112,0 +01929_49,0 +008252_9,12 +00079_282,9 +01119_34,11 +019252_1,14 +00601_93,0 +00506_0,2 +01312_33,7 +00709_175,19 +01882_12,14 +01256_60,4 +009642_152,8 +00993_78,4 +00306_27,7 +002802_217,4 +01361_152,3 +01431_285,11 +02027_99,14 +02187_15,16 +005882_182,4 +018342_193,8 +00306_71,7 +00450_113,13 +000092_190,7 +01693_187,0 +00964_167,8 +00287_191,4 +01941_280,14 +002802_148,4 +01330_266,15 +00065_158,1 +00528_163,0 +00848_152,14 +005092_146,12 +00964_293,14 +00528_52,2 +01361_171,3 +00837_159,11 +00462_92,13 +01165_131,14 +02062_57,2 +01177_57,4 +00783_109,6 +013302_175,1 +01330_252,15 +001602_87,11 +008832_27,11 +01092_293,14 +002752_126,14 +00552_2,2 +01228_14,14 +00413_93,0 +017232_297,15 +013712_46,14 +008402_4,2 +00333_70,0 +008372_147,11 +00025_45,17 +01228_23,14 +00413_59,0 +01541_42,5 +011912_66,7 +00276_47,11 +00462_48,12 +01184_64,5 +00660_229,0 +017672_101,14 +005392_201,6 +00102_239,16 +004532_196,9 +009512_47,0 +00892_84,2 +01408_251,14 +009162_239,2 +01767_158,14 +010912_15,2 +008402_9,2 +01493_204,1 +00964_50,8 +007222_139,17 +01165_37,5 +00566_0,14 +018122_99,2 +02005_136,11 +00333_96,0 +01605_274,11 +001242_200,0 +01688_179,5 +00350_243,9 +005282_152,0 +008372_94,11 +00228_49,11 +018772_122,4 +00475_114,9 +00793_9,14 +00296_88,7 +02027_142,14 +00607_19,14 +00951_66,0 +00721_125,14 +02049_130,13 +008372_4,14 +005392_184,13 +004672_15,11 +018342_151,8 +010012_237,5 +00916_75,2 +009162_73,2 +00567_185,5 +01177_46,4 +014882_56,13 +012612_89,2 +01723_82,15 +00287_40,15 +00964_277,14 +00867_60,0 +00280_207,12 +012192_96,5 +00721_243,14 +01182_96,4 +012722_99,2 +01605_90,5 +019712_221,2 +019712_293,12 +01371_29,14 +01925_41,14 +01261_65,2 +017072_228,0 +014882_181,0 +017482_85,0 +00505_192,7 +00232_93,13 +00783_80,17 +00065_30,17 +018342_81,8 +004082_108,1 +00709_10,19 +001242_15,4 +01366_57,17 +00588_103,13 +016932_182,0 +001242_23,4 +01087_120,5 +00350_176,9 +00390_115,14 +01509_24,2 +02027_54,18 +00718_105,19 +00509_148,2 +01813_84,11 +01134_112,10 +00158_19,14 +01351_83,17 +000792_119,9 +00287_79,15 +00228_157,9 +008832_52,11 +01769_247,11 +00609_76,14 +00011_51,12 +00453_166,9 +00438_36,2 +01882_40,11 +00722_79,17 +01428_39,4 +02021_46,1 +01968_82,7 +00793_260,14 +01161_108,17 +00709_194,19 +00333_124,2 +01046_110,14 +00065_251,12 +00490_271,5 +01834_115,8 +01092_237,1 +016932_157,0 +00709_219,19 +00867_180,14 +01161_144,17 +005092_133,12 +008482_59,17 +00011_60,4 +00276_41,11 +01408_270,14 +016932_258,0 +003122_29,0 +01177_84,14 +007832_60,2 +02146_65,18 +009512_76,0 +02172_155,4 +00688_113,2 +004532_261,9 +01182_94,4 +01901_187,14 +01044_162,12 +00509_65,2 +00674_42,14 +00474_298,2 +00276_54,11 +00567_152,2 +00660_174,0 +01278_31,2 +00485_23,2 +00660_96,0 +01361_259,15 +00837_138,11 +016982_21,17 +006092_49,11 +00505_5,14 +00088_6,14 +01623_13,14 +000232_190,2 +00232_24,2 +011612_173,17 +01688_174,2 +019712_207,2 +01272_21,2 +00535_63,2 +01775_38,12 +00287_163,15 +00453_49,9 +01092_151,9 +00615_93,11 +014122_86,0 +002752_104,14 +00546_65,15 +00505_185,5 +00079_18,9 +00729_261,14 +019042_59,2 +020052_215,11 +01046_101,14 +016882_45,5 +01622_71,14 +00158_198,5 +016982_25,17 +00065_238,12 +016432_13,14 +01427_115,17 +006972_98,2 +005392_149,1 +00566_75,8 +001602_187,11 +014372_221,11 +00350_92,5 +00761_282,3 +01706_283,2 +00609_37,11 +01812_76,2 +00867_22,14 +00450_164,14 +01509_234,11 +01904_106,12 +00490_122,12 +02127_8,2 +00609_47,11 +02138_297,14 +02127_277,17 +01361_170,3 +01500_40,19 +00417_18,6 +00128_100,0 +005282_124,2 +00677_70,14 +007832_94,17 +00503_293,6 +01437_120,11 +017232_135,15 +00124_142,19 +012612_23,2 +005062_92,4 +00442_67,2 +00768_86,14 +00041_120,7 +016052_10,14 +01045_110,4 +01804_57,12 +00867_145,0 +017672_83,14 +01118_18,14 +01953_80,7 +00916_108,2 +01865_24,11 +012402_13,2 +01692_93,1 +00292_17,11 +02005_60,11 +014972_12,0 +02005_125,11 +00413_75,0 +00761_155,6 +012282_223,14 +01953_180,12 +014232_235,12 +016882_162,14 +00721_225,14 +004532_86,9 +01134_45,10 +004532_136,9 +00417_240,6 +00601_133,14 +01877_286,4 +02005_76,11 +01182_81,4 +00128_181,0 +00128_193,12 +016882_128,14 +01763_45,2 +00413_69,0 +00490_118,12 +016932_241,0 +00979_73,1 +014232_73,0 +01101_110,13 +00242_200,12 +016982_126,14 +015972_6,14 +01409_25,12 +008402_12,2 +00729_25,14 +005392_273,1 +02138_87,14 +012562_24,4 +01210_172,6 +007832_73,17 +01767_84,14 +01568_100,12 +01094_5,14 +01431_279,5 +00485_79,1 +00539_266,1 +00628_114,7 +01366_12,14 +00275_61,14 +007212_86,2 +01787_2,13 +00867_182,14 +00552_74,7 +009512_93,0 +00158_73,2 +00442_129,4 +00408_248,11 +02094_67,12 +01901_111,5 +004532_60,9 +00993_96,7 +005282_190,0 +005882_176,4 +01001_23,12 +00474_242,2 +01971_250,12 +01769_58,9 +00296_35,7 +00261_44,2 +01643_27,14 +00467_50,11 +00566_174,8 +01834_41,8 +01228_73,14 +00490_224,5 +00021_122,2 +00342_95,14 +021722_176,14 +01240_232,12 +00009_95,0 +017672_281,14 +01981_116,5 +01636_70,0 +00566_251,8 +018392_12,2 +01412_42,0 +020572_176,3 +00951_159,14 +01161_22,17 +01688_52,5 +004532_264,9 +01787_10,13 +01839_14,2 +014232_66,2 +007292_164,14 +018342_80,8 +019252_149,3 +00023_32,2 +020052_188,11 +00111_17,14 +00660_139,0 +01119_24,11 +00009_170,0 +019042_122,2 +010012_223,5 +01091_162,5 +018772_3,4 +00453_279,9 +002802_147,4 +00503_223,5 +01643_19,12 +00979_57,1 +00124_210,0 +00408_34,1 +00287_247,4 +01623_78,11 +018132_19,11 +00181_141,14 +01182_98,4 +019412_198,14 +01087_79,5 +017692_125,11 +00158_137,5 +00438_170,2 +008922_18,0 +00539_119,1 +01431_183,11 +00333_177,2 +00957_76,4 +00567_279,2 +01723_100,15 +010942_32,11 +020052_50,11 +01877_28,4 +014072_17,12 +009642_283,14 +016052_42,14 +00287_64,15 +011912_127,7 +016842_64,14 +008252_87,2 +02138_274,14 +00709_44,19 +02030_128,16 +016932_270,0 +00128_116,2 +01092_251,17 +00546_135,3 +00747_51,4 +02028_7,4 +001602_41,11 +00979_53,1 +01578_235,14 +02186_110,14 +005882_82,13 +01493_276,1 +01509_191,0 +00721_198,14 +008922_68,2 +01103_79,9 +01941_282,14 +01240_220,4 +01408_285,14 +00490_12,2 +01839_46,11 +00503_274,6 +005882_66,13 +00490_289,11 +01161_265,17 +01925_14,14 +014072_2,4 +00079_133,9 +01901_145,5 +00934_13,9 +00079_207,9 +01240_210,12 +014072_18,12 +007832_76,17 +01240_91,2 +01605_77,5 +01161_174,17 +00505_57,6 +00475_224,1 +003122_28,0 +00609_66,14 +007832_61,2 +01812_91,2 +00333_84,0 +021772_13,4 +00292_11,11 +00538_83,12 +02042_55,4 +00681_11,5 +00079_144,9 +01622_6,14 +01804_30,7 +01001_51,2 +00390_77,5 +016932_37,2 +00509_122,2 +00079_103,0 +011612_166,17 +008482_0,14 +00729_78,14 +01953_85,12 +020572_99,12 +005282_119,2 +02146_34,11 +00825_73,12 +01448_109,14 +01578_155,14 +01210_87,9 +02094_40,12 +016932_17,2 +019042_150,2 +01698_75,17 +01924_14,14 +001242_93,19 +006092_34,11 +01409_17,14 +00539_233,1 +000792_2,9 +01904_114,12 +011612_210,17 +00450_79,13 +005062_106,2 +01361_216,15 +019252_103,3 +02049_261,3 +01087_257,5 +012402_93,12 +01177_39,14 +020052_69,11 +017672_266,14 +00783_121,6 +018342_90,8 +01775_153,2 +01092_175,17 +01636_59,0 +01108_44,0 +00333_115,12 +00287_187,15 +01877_135,4 +01493_278,1 +00124_139,19 +01904_101,12 +01087_217,5 +00539_154,17 +01977_115,8 +01431_260,11 +01371_41,14 +018132_31,11 +01191_46,12 +01330_169,15 +01500_42,4 +00124_169,19 +01814_288,11 +021722_77,14 +01834_179,8 +01578_141,14 +009162_214,2 +017072_48,4 +00539_137,1 +00772_104,14 +019412_96,14 +004082_269,13 +006742_78,14 +01706_169,2 +02187_59,16 +00519_157,14 +019042_167,12 +01423_46,2 +010012_77,12 +00102_40,16 +00275_117,12 +01775_116,2 +00287_10,4 +010012_175,5 +009162_293,5 +02187_33,16 +00160_105,11 +00390_34,5 +01953_20,2 +015972_28,0 +00417_169,6 +00124_158,19 +01408_239,14 +00450_52,4 +01409_99,0 +00761_121,14 +00892_58,2 +00721_37,12 +01904_76,12 +00722_146,6 +02172_133,14 +017072_122,0 +00729_254,14 +00519_81,11 +020572_45,2 +01409_110,0 +01977_142,8 +018342_297,8 +02186_83,5 +00394_23,17 +01839_45,11 +00438_81,2 +000792_271,0 +01769_214,9 +01092_58,17 +00442_279,4 +00768_18,14 +01145_228,4 +00275_41,14 +00848_130,17 +02186_11,14 +000792_117,9 +00567_38,2 +005282_47,2 +02127_154,17 +01541_37,5 +005282_59,2 +00566_86,8 +013302_288,1 +01493_193,9 +00228_298,7 +00883_59,11 +012722_235,2 +017072_92,0 +01408_5,14 +00456_34,14 +00333_179,2 +013332_7,0 +01956_15,15 +014122_73,0 +01509_159,0 +00772_88,5 +00783_57,2 +01278_67,12 +01358_59,1 +01408_225,14 +009162_248,5 +00729_277,14 +01134_232,10 +009622_48,13 +017692_273,2 +01272_160,12 +00426_112,0 +01361_203,3 +01623_84,11 +01636_121,14 +016882_76,5 +012282_2,14 +00275_56,14 +018342_273,8 +00677_66,14 +01626_11,2 +01228_48,4 +01767_57,14 +00588_88,13 +01941_243,14 +02138_19,2 +018772_175,4 +00688_44,4 +01184_121,14 +010872_70,5 +01698_33,17 +02049_135,13 +00417_20,6 +010872_25,14 +012282_43,2 +00228_146,9 +00111_70,14 +021722_49,14 +00474_128,2 +01693_168,0 +00314_39,2 +019412_293,14 +00916_68,2 +017232_280,15 +00456_181,4 +00462_191,14 +00721_127,14 +018652_23,11 +01541_60,5 +00079_75,9 +019412_221,14 +002802_26,14 +00408_246,11 +00503_254,9 +01103_68,4 +00916_231,5 +009642_252,14 +00793_233,14 +008372_30,11 +014372_232,11 +021772_76,14 +00390_72,5 +016932_136,0 +00111_87,14 +007092_284,12 +014882_21,1 +00390_119,14 +00462_53,4 +00697_66,11 +005062_23,2 +02054_53,2 +016432_16,12 +003062_93,14 +01769_278,2 +020052_256,11 +00840_181,7 +01775_95,12 +01968_112,14 +01968_105,14 +013302_154,18 +02127_0,2 +01045_211,4 +01409_133,0 +012402_290,12 +02162_98,6 +00935_28,7 +009162_250,5 +00563_32,4 +00981_28,11 +01278_40,2 +02187_129,16 +00438_15,2 +00350_245,9 +016982_15,14 +004672_46,11 +01834_92,8 +01877_261,4 +004532_87,9 +013302_240,6 +00721_107,14 +00261_10,2 +00088_10,14 +00841_43,4 +010912_170,11 +019252_121,3 +000092_256,4 +02146_142,14 +01044_109,4 +017072_104,0 +01409_51,4 +00761_262,3 +00485_90,1 +019712_126,2 +002802_47,4 +012282_236,14 +00941_32,4 +00333_120,2 +016932_277,0 +005282_202,0 +008482_80,17 +01045_154,4 +00242_49,12 +00011_57,12 +01834_126,8 +01767_244,14 +00867_93,5 +009352_38,7 +010652_26,18 +00993_256,14 +018132_150,14 +00160_222,11 +00023_116,5 +00783_289,5 +00615_222,11 +01210_65,17 +00456_68,12 +01941_58,14 +01165_78,5 +010872_91,5 +001242_219,0 +005092_112,2 +021772_70,14 +01437_133,11 +00350_83,5 +00964_76,3 +01763_193,2 +00280_167,12 +00601_27,7 +005282_149,0 +01228_190,14 +017072_295,7 +00688_101,2 +01045_146,4 +009162_277,5 +02127_21,2 +01145_84,4 +01058_97,2 +00729_69,14 +017752_32,2 +00475_73,9 +008402_29,2 +00287_44,15 +00159_3,0 +00426_127,0 +00228_222,14 +01371_37,4 +017072_262,7 +017482_14,0 +01877_109,4 +01834_57,8 +01007_198,0 +00539_181,13 +01929_79,0 +00660_175,0 +00993_53,6 +016932_282,0 +01623_17,14 +01423_225,0 +000792_142,9 +008402_92,2 +00417_208,17 +01605_110,5 +007212_24,14 +019622_99,0 +00350_39,14 +01509_58,0 +005282_88,2 +00158_64,14 +00442_240,4 +020052_253,11 +016052_220,11 +00158_281,5 +01409_0,14 +02138_242,14 +02127_138,17 +01494_9,14 +01767_183,14 +008402_26,2 +01431_128,11 +01925_149,3 +005092_129,2 +01493_214,1 +00567_10,2 +01407_44,2 +005092_180,12 +02062_50,2 +001602_246,11 +014372_188,11 +01972_161,3 +021462_142,14 +00563_21,2 +01623_80,11 +01219_24,5 +016982_6,14 +01925_118,3 +009162_109,2 +00275_43,14 +02191_104,7 +01228_152,14 +01423_172,0 +02127_60,17 +009162_273,5 +00607_34,11 +017072_24,2 +01977_12,14 +002802_137,12 +00232_106,13 +00333_95,0 +018342_4,14 +019412_21,14 +01971_178,2 +01626_36,7 +007222_55,4 +016932_53,0 +006972_26,9 +01412_3,4 +00350_14,14 +00783_45,2 +018772_130,4 +01723_7,4 +004172_123,17 +01814_33,5 +018122_84,2 +02162_59,7 +01240_161,2 +02138_59,14 +02012_98,17 +00916_81,2 +00024_81,17 +01044_160,12 +01775_64,2 +00079_90,9 +01605_152,5 +01693_114,0 +001022_276,16 +01688_177,5 +02186_18,14 +00957_62,2 +016922_104,1 +00065_172,1 +01423_224,0 +01278_168,4 +019622_28,0 +01007_113,0 +014372_134,11 +014272_73,9 +008922_15,0 +01312_90,7 +01698_11,14 +01925_127,3 +02149_49,17 +01278_74,12 +017022_71,14 +00079_156,0 +01977_46,12 +01191_152,14 +01092_178,17 +014232_88,0 +01457_63,7 +00964_280,12 +000092_7,4 +013332_13,4 +012282_76,14 +01972_14,2 +00840_249,2 +00825_76,12 +01706_107,2 +01092_116,17 +014372_58,11 +01929_19,0 +00079_296,9 +000092_167,0 +002802_209,12 +000092_110,12 +014272_132,14 +01877_171,4 +00287_212,4 +00528_140,4 +01240_293,4 +00509_173,12 +014232_132,0 +01953_30,2 +01623_60,11 +00426_173,14 +016052_118,5 +00697_64,5 +014372_273,11 +009642_267,14 +00837_65,11 +01045_22,2 +00793_166,12 +01228_35,14 +00128_163,2 +011912_78,7 +00333_111,4 +016882_83,5 +01490_12,7 +01065_19,1 +00681_86,14 +004532_140,9 +01361_150,3 +01094_14,14 +01925_264,8 +01184_130,14 +01941_124,14 +00539_232,1 +000242_51,17 +01092_193,2 +017672_80,14 +008402_222,2 +008922_46,0 +00041_63,7 +01509_95,0 +00021_33,4 +01834_163,8 +02146_154,14 +014232_29,2 +00934_11,9 +01256_97,14 +001112_33,17 +004172_67,17 +01045_158,4 +01962_77,0 +00721_239,14 +00578_121,14 +02062_0,2 +01956_44,13 +017022_39,14 +01626_119,7 +00825_70,12 +014272_70,1 +019042_11,2 +00490_80,2 +012722_0,2 +00761_58,14 +019712_179,2 +00503_27,6 +01490_77,7 +02005_21,11 +02012_101,17 +01488_126,13 +012722_47,2 +012402_226,12 +01094_2,14 +00181_131,0 +013712_24,14 +01240_223,4 +02021_45,1 +01981_24,5 +00287_252,15 +02127_272,17 +01361_54,2 +01092_94,17 +017072_26,2 +00450_110,13 +01814_57,5 +01201_63,11 +010652_61,18 +00128_254,12 +015972_102,0 +01971_6,2 +009642_232,3 +005282_19,2 +00124_111,19 +01929_75,0 +01865_96,18 +00588_174,4 +014882_209,0 +014372_262,11 +018792_48,2 +00718_60,19 +00228_263,11 +014232_70,4 +01723_153,15 +001242_81,19 +00453_232,9 +01882_56,11 +019412_20,14 +00528_113,2 +00588_46,15 +01812_86,2 +007292_169,14 +000792_171,9 +014882_215,0 +010872_246,5 +00709_189,19 +019622_118,0 +00160_237,11 +01210_209,6 +00567_47,5 +01210_0,17 +00102_281,16 +01925_207,8 +00546_153,15 +01048_29,5 +01929_113,0 +019042_8,2 +01407_18,12 +011912_112,7 +005882_25,4 +00160_278,13 +01901_148,5 +003062_21,7 +01623_127,14 +00275_75,14 +01210_247,9 +00875_93,2 +00275_39,12 +019412_189,14 +010912_81,16 +01953_53,2 +007212_59,2 +01693_233,0 +02094_113,12 +004532_278,9 +00102_111,16 +02042_126,0 +00783_54,2 +008252_66,12 +01706_54,2 +00426_38,0 +00578_73,4 +008372_67,11 +01706_25,2 +012612_26,2 +00453_261,9 +000792_61,9 +00333_150,2 +014232_241,2 +017072_192,0 +01767_286,14 +017022_41,14 +00503_134,1 +02027_66,14 +00730_121,14 +00837_163,11 +010942_27,11 +00588_150,13 +00539_30,6 +014372_46,11 +01119_61,11 +00964_216,3 +009642_203,8 +00552_80,7 +018772_127,4 +00438_266,2 +016052_180,11 +011612_70,17 +021462_98,18 +01091_106,0 +02186_115,14 +00503_230,5 +012282_230,14 +01636_125,14 +02054_190,4 +02191_71,7 +016882_50,5 +01272_37,2 +00505_215,12 +007092_294,12 +00747_61,4 +000792_38,9 +01706_287,2 +01087_76,5 +009342_20,1 +01834_96,8 +00287_202,15 +007832_217,2 +00506_107,2 +007292_299,14 +012722_231,4 +007212_139,12 +016932_227,0 +011612_140,17 +014882_47,0 +02127_252,17 +00722_70,17 +01134_39,10 +019712_132,12 +00703_53,11 +021722_259,14 +00981_107,5 +00729_218,14 +01882_66,5 +00552_31,7 +00456_185,4 +01371_52,14 +01048_49,5 +01953_157,4 +018772_254,4 +00228_185,9 +01692_24,2 +01351_74,7 +007292_128,14 +013302_183,3 +016932_92,0 +00024_77,7 +019412_244,14 +01158_140,4 +01001_46,4 +01956_62,14 +01091_203,9 +00730_133,14 +018342_286,8 +00417_244,6 +001602_83,11 +00025_8,17 +02146_29,11 +01065_96,1 +017672_176,14 +012402_18,2 +01767_287,14 +01046_103,14 +00102_101,16 +02027_148,14 +01427_25,4 +01351_160,14 +00729_58,14 +02177_28,4 +00837_114,11 +01623_43,11 +01962_20,0 +00306_18,14 +01769_181,2 +00793_258,12 +019252_23,12 +00490_15,2 +01408_151,14 +00382_19,7 +012402_241,12 +01261_67,2 +00160_129,11 +006092_66,14 +00964_210,3 +01953_111,4 +01941_102,14 +01409_80,0 +01007_70,0 +01256_80,12 +014122_67,0 +017692_131,11 +00783_83,17 +001242_196,0 +00282_72,11 +02049_104,13 +02012_32,17 +00566_133,8 +00453_154,9 +016882_204,5 +018122_33,4 +01971_264,2 +02172_254,14 +00426_71,0 +01144_144,2 +01723_290,15 +00681_29,5 +00563_22,2 +01427_88,4 +00883_4,11 +01597_21,0 +00442_130,4 +001112_76,14 +01814_185,11 +01065_78,18 +00567_169,2 +02162_131,5 +00729_204,14 +00276_92,11 +01693_10,4 +01623_62,11 +007212_82,4 +00783_39,2 +009352_114,14 +01814_228,5 +012192_116,5 +00964_4,14 +01351_67,7 +01423_111,0 +009642_1,14 +02057_71,2 +00467_11,11 +01312_93,14 +00417_155,6 +02030_298,16 +00957_47,4 +003122_50,0 +00413_132,0 +01007_299,19 +00660_219,0 +01971_80,2 +00102_117,16 +01707_149,4 +00848_57,17 +018342_212,8 +01748_45,0 +01408_72,14 +008252_63,12 +00474_157,2 +01119_65,11 +010012_64,12 +008402_176,2 +00509_76,2 +000792_252,9 +00567_270,2 +011612_33,17 +00280_112,4 +01045_7,2 +00825_72,2 +02094_51,4 +01977_282,14 +00722_72,17 +014232_201,0 +01087_216,5 +00296_5,14 +01509_175,0 +012192_121,5 +00065_24,9 +01494_101,14 +005062_14,2 +00475_116,9 +016882_196,5 +01184_4,14 +02062_83,4 +01977_128,8 +01091_269,14 +005062_138,2 +00837_63,11 +01408_212,14 +00729_255,14 +00674_43,14 +01001_29,2 +008252_30,12 +02172_263,14 +01278_86,4 +01578_214,14 +00776_95,14 +02127_117,17 +01925_77,3 +00408_191,11 +017232_222,15 +01962_86,0 +00837_76,11 +01437_111,11 +00124_253,0 +00485_210,1 +018342_231,8 +01256_40,4 +00601_64,9 +001242_16,4 +00453_116,9 +01834_186,8 +01201_56,11 +00528_138,4 +01201_30,11 +00783_298,5 +001602_150,11 +01219_103,5 +01925_265,8 +01358_23,1 +00577_77,7 +00509_184,12 +00158_274,5 +00615_151,11 +016922_125,1 +02172_170,14 +005882_12,4 +019622_12,0 +01767_165,14 +00730_92,17 +01448_80,6 +010652_12,11 +00660_39,0 +00993_200,7 +012402_142,12 +00825_1,12 +00703_46,11 +010652_39,18 +01971_164,2 +005882_50,15 +00124_31,4 +00159_59,2 +009642_68,3 +00232_81,13 +000092_104,12 +014272_108,9 +00506_84,6 +016882_215,5 +01431_57,11 +01184_89,5 +00721_233,14 +00709_278,12 +018132_93,11 +01901_165,12 +009352_61,7 +000792_139,9 +00079_89,9 +02030_200,16 +00550_73,18 +02054_210,12 +01457_12,7 +00350_165,9 +018772_105,4 +01044_91,4 +017752_11,2 +00660_187,0 +00837_18,11 +003062_70,7 +00538_115,1 +02177_1,14 +02172_219,12 +00158_234,5 +00314_290,4 +019412_190,14 +00709_34,19 +00578_9,14 +000252_47,17 +00490_240,5 +01767_197,14 +01330_15,2 +00242_220,12 +00697_108,4 +018342_13,14 +00546_164,4 +019242_100,14 +00588_81,13 +01707_41,2 +004082_106,11 +01775_172,12 +01272_252,12 +005282_204,0 +001242_240,0 +00615_60,1 +019242_46,14 +009642_16,14 +01929_64,0 +00426_3,14 +01278_238,14 +019622_98,0 +01688_21,5 +00181_153,14 +01924_13,14 +019712_11,2 +01228_282,14 +01366_167,14 +01407_34,0 +00601_30,7 +01834_66,8 +000792_266,1 +01191_90,7 +01094_89,11 +00747_23,9 +007832_14,2 +007222_74,17 +018772_26,4 +00426_113,0 +01904_47,12 +009352_52,7 +014232_225,0 +002802_199,12 +006972_88,12 +004172_30,6 +012722_257,12 +02191_59,7 +01623_88,11 +00503_47,6 +005392_21,6 +00837_92,11 +01804_51,12 +00660_88,0 +00964_283,14 +01158_56,0 +010912_80,16 +00474_106,2 +01541_30,5 +01941_128,14 +011912_42,14 +02127_244,17 +00505_31,2 +00280_72,12 +011612_222,17 +009342_18,9 +00417_186,17 +004672_43,11 +00009_213,7 +01261_70,4 +01775_2,2 +018132_54,11 +00783_70,17 +00228_137,9 +01371_43,14 +01494_92,14 +00175_44,1 +00438_12,2 +019622_110,0 +005092_20,2 +00550_56,18 +01361_104,6 +00041_126,7 +01118_10,14 +006742_98,14 +00079_261,9 +007292_215,14 +004672_47,11 +00825_67,12 +01707_289,7 +01763_131,12 +019412_42,14 +01924_195,14 +01145_23,2 +007182_112,19 +00957_59,2 +01134_265,10 +014372_290,11 +01101_79,6 +01361_114,3 +00490_180,2 +00475_26,5 +011082_73,14 +01161_65,17 +00475_100,9 +007092_133,12 +01134_249,10 +012722_122,2 +01001_75,12 +00276_18,5 +00721_44,14 +01948_131,13 +01240_158,2 +010652_49,18 +02049_107,13 +000092_230,12 +00729_142,14 +00840_42,2 +01769_49,5 +01408_61,14 +00703_31,11 +007212_156,4 +01409_140,0 +013302_161,6 +021722_28,14 +01925_263,8 +01813_27,11 +01605_44,14 +01582_7,2 +01428_4,14 +01201_119,14 +02138_83,14 +00783_190,4 +02012_123,14 +008372_158,11 +018772_210,4 +02149_42,17 +01775_27,2 +00009_97,0 +00546_7,14 +00296_94,14 +01048_70,5 +01219_20,5 +00442_15,14 +02127_44,2 +00009_70,0 +01769_248,11 +00232_54,4 +00474_119,2 +00867_127,17 +019252_172,8 +02049_10,12 +00546_76,3 +00280_205,12 +004172_5,14 +00509_57,12 +000242_109,2 +015972_16,0 +001242_31,4 +01829_1,2 +02172_128,14 +01707_131,7 +000092_0,4 +007212_73,12 +00964_223,3 +00840_13,2 +01087_57,14 +016432_33,14 +001602_285,13 +012402_233,12 +000792_283,9 +005282_25,2 +017692_173,0 +01688_3,5 +01812_92,2 +00382_87,9 +01977_3,14 +002752_53,14 +01044_44,4 +01763_95,12 +00242_297,12 +008372_66,11 +014282_33,14 +01108_25,13 +00506_96,4 +00867_33,0 +020572_97,12 +01182_100,14 +00350_235,9 +00964_125,8 +01925_48,12 +00456_58,12 +01977_11,14 +012192_93,5 +00837_73,11 +00474_278,2 +01351_1,2 +012722_195,2 +01272_190,2 +01240_86,2 +01763_68,2 +00467_0,0 +00506_2,2 +01091_230,7 +01278_49,2 +012402_122,2 +00111_60,17 +009642_67,3 +00505_217,12 +01351_49,17 +019712_51,12 +00567_211,5 +021722_86,14 +01361_230,15 +01331_34,17 +00041_65,7 +01636_58,0 +001242_62,4 +00280_231,12 +008402_274,2 +009642_94,8 +00009_102,12 +00875_5,2 +01092_183,17 +01431_200,11 +00721_181,14 +010652_19,1 +02049_174,13 +00783_196,12 +005502_78,18 +00475_273,1 +011612_218,17 +01048_90,14 +01509_1,2 +016842_22,14 +00041_164,7 +01605_98,5 +01240_233,12 +01956_34,18 +00475_284,1 +00793_177,14 +017232_233,15 +011772_45,4 +00509_169,12 +01643_20,12 +02094_94,2 +00314_217,0 +00009_239,7 +016932_148,0 +00242_172,2 +012402_49,2 +00539_117,1 +01330_69,9 +00438_257,2 +00102_17,2 +011612_110,17 +01578_246,14 +02187_289,16 +00314_147,0 +01605_271,11 +01488_155,13 +001602_227,1 +00261_38,4 +012722_234,2 +005392_110,1 +020052_246,11 +01228_258,14 +019712_22,2 +01501_14,12 +005882_155,13 +009642_63,3 +009642_104,8 +01493_124,16 +01706_265,2 +009162_28,2 +00867_191,14 +01058_82,4 +00588_51,15 +011772_66,15 +007762_55,4 +01210_46,9 +00128_212,12 +01707_178,4 +01256_31,12 +01812_66,4 +00821_41,5 +00848_38,17 +00776_83,4 +001602_76,11 +00124_94,19 +01134_171,10 +01981_121,0 +01578_178,14 +00979_45,1 +00688_108,2 +01001_62,12 +00088_84,14 +01409_229,14 +012722_31,2 +013302_295,9 +005062_52,4 +017232_266,15 +00506_37,2 +02162_119,18 +00783_206,2 +00276_17,14 +00935_11,14 +001602_165,11 +01839_37,2 +017482_57,7 +017022_10,12 +014232_106,0 +001112_57,17 +00566_186,8 +01707_188,0 +001112_14,14 +00941_42,13 +00528_82,2 +01693_184,0 +00232_43,12 +01509_214,0 +01605_47,14 +00697_65,1 +021462_31,11 +01423_227,0 +021912_27,7 +00567_107,2 +00841_95,14 +009512_17,4 +00128_284,12 +009162_269,5 +014072_42,2 +004172_145,7 +01144_193,2 +012722_10,2 +00848_101,17 +009352_71,7 +00280_190,14 +00181_128,0 +019042_143,12 +01688_284,2 +009162_21,2 +00490_63,2 +018772_154,4 +00951_19,4 +00535_37,2 +00485_275,12 +00964_152,8 +00550_71,18 +00981_69,11 +00660_202,0 +01693_43,2 +01437_44,11 +01144_194,2 +01165_58,5 +01240_127,2 +00609_14,14 +01087_87,5 +00539_275,0 +00505_22,14 +00280_91,12 +00615_29,11 +00962_52,13 +00160_57,11 +019412_151,14 +005092_155,2 +010912_193,16 +00772_45,7 +00567_124,2 +01134_89,10 +00408_299,11 +02191_82,7 +004172_59,17 +016092_17,17 +011912_98,7 +01834_107,8 +019042_43,12 +00503_174,5 +018392_68,11 +011772_112,14 +002752_68,14 +01643_103,14 +014272_62,17 +01692_147,14 +000092_263,7 +012402_179,12 +01134_56,10 +01001_155,5 +00228_218,5 +001602_92,11 +00916_284,5 +00535_75,2 +019412_249,14 +00079_222,15 +018392_103,11 +01605_102,5 +00306_81,7 +00228_105,11 +012562_10,14 +019242_19,14 +008402_60,2 +017232_181,15 +01427_51,2 +00538_75,17 +02005_53,11 +00964_90,3 +007292_277,14 +00546_79,3 +02027_120,14 +00509_16,12 +00280_107,12 +00456_144,14 +00158_225,5 +00011_101,12 +021622_71,17 +00916_188,2 +00601_42,6 +017232_136,15 +018772_166,15 +00442_37,14 +000242_107,2 +00102_210,16 +005092_93,12 +00783_235,5 +01706_116,2 +01161_219,17 +017692_168,11 +018392_181,4 +01626_25,7 +00158_5,14 +01839_132,1 +00417_44,17 +020052_107,11 +02162_0,14 +02049_198,13 +00821_20,2 +010012_226,5 +007762_11,4 +01953_179,12 +00509_74,2 +00506_75,6 +00413_92,0 +00538_95,17 +00413_138,0 +01358_25,1 +002802_118,2 +01834_54,8 +020052_18,11 +00333_72,0 +007292_30,14 +01501_102,14 +02146_24,5 +001242_13,4 +01688_159,14 +00722_120,17 +02012_1,14 +017022_52,2 +00438_54,2 +016922_51,5 +011772_15,4 +01904_83,12 +007832_241,5 +021622_137,14 +01882_39,11 +014232_116,0 +00979_13,5 +00485_256,12 +00292_12,11 +014122_77,0 +00957_2,0 +020572_112,2 +01145_28,2 +01184_91,5 +01094_70,11 +00566_11,14 +02187_138,16 +01941_144,14 +01330_86,1 +00474_234,2 +01058_15,2 +02027_7,14 +01804_28,2 +01925_93,3 +008252_80,4 +00467_28,11 +01092_275,12 +019042_151,2 +00528_197,0 +01693_24,17 +01312_81,7 +014372_257,11 +016922_55,5 +02005_211,11 +01767_273,14 +02172_177,14 +01272_164,2 +011082_76,14 +01814_293,11 +007222_117,17 +00159_16,0 +009642_226,3 +017072_32,2 +01101_23,7 +01814_171,11 +021912_80,7 +01909_102,2 +01977_25,2 +007222_56,4 +007212_98,14 +008402_190,7 +01904_24,2 +01134_28,10 +01929_143,0 +002802_105,12 +013302_205,9 +00111_10,14 +02049_60,3 +00892_75,2 +02054_24,2 +010912_229,7 +007292_216,14 +00783_104,17 +019412_87,14 +00438_150,2 +00981_63,11 +00242_14,2 +00578_50,4 +01767_206,14 +00916_41,2 +00175_86,2 +02186_111,14 +00566_92,8 +001602_151,11 +005882_125,13 +02138_141,13 +012402_212,12 +01605_190,11 +00505_252,14 +02187_282,16 +01094_108,14 +00539_291,5 +01087_83,5 +00276_11,14 +01578_137,14 +01568_113,2 +00539_82,1 +004082_215,11 +00718_3,2 +00382_18,7 +01623_52,11 +011612_16,17 +017232_167,15 +019252_182,8 +00159_8,0 +01509_67,0 +00382_43,17 +00848_39,17 +017672_193,14 +01925_239,8 +00413_125,0 +021462_122,11 +004532_43,9 +01412_28,0 +01962_92,0 +01972_284,14 +01161_150,17 +01272_239,4 +00528_13,2 +010912_268,14 +011772_114,14 +01272_207,4 +005392_257,1 +01971_114,4 +010872_280,5 +00350_234,9 +001022_18,2 +01001_184,5 +005882_32,4 +01182_103,14 +012402_248,12 +017482_63,0 +00768_38,7 +014882_2,13 +017232_231,15 +01182_62,0 +02057_96,2 +00688_61,4 +00509_170,12 +00688_18,2 +014372_193,11 +01366_85,17 +01493_281,1 +01423_171,0 +000232_22,2 +014282_80,14 +007092_279,12 +00821_8,14 +01007_214,0 +02021_25,1 +00916_109,2 +014372_263,11 +019252_161,3 +009162_128,2 +01409_134,0 +00677_71,14 +01834_88,8 +01509_212,0 +01283_30,2 +00088_79,2 +010012_91,5 +01767_19,14 +00181_116,0 +01437_82,11 +02030_13,14 +00615_143,11 +00761_84,14 +00065_103,11 +00793_88,14 +01693_228,0 +021722_75,14 +01723_299,15 +01091_253,2 +01256_58,4 +014372_59,11 +010652_37,18 +00718_49,19 +014372_123,11 +00124_66,4 +017672_124,14 +01101_103,1 +02054_185,4 +009162_1,2 +01688_28,5 +017692_175,2 +019412_157,14 +005392_23,6 +01597_116,14 +02049_242,3 +01723_128,15 +00438_200,2 +01769_24,2 +00722_63,4 +00413_24,4 +02042_81,14 +01007_295,1 +01045_50,4 +01278_118,12 +01707_24,2 +017672_228,14 +00688_33,4 +00566_106,3 +01941_134,14 +01941_210,14 +00228_213,9 +01101_173,14 +006742_82,4 +00296_113,14 +008402_195,7 +014122_79,0 +016432_58,4 +01145_44,2 +02005_116,11 +01158_57,0 +014232_208,0 +02054_70,4 +00065_208,1 +00519_128,7 +01698_125,14 +01605_121,5 +00485_170,1 +01839_28,14 +020052_252,11 +00442_10,2 +00102_264,16 +02005_18,11 +00615_163,11 +01877_130,4 +01330_168,15 +00485_133,1 +00158_241,5 +005062_133,2 +01706_153,2 +01829_48,2 +01877_251,4 +021722_118,14 +008832_60,11 +017072_20,2 +004172_186,17 +02146_157,14 +01448_64,3 +014232_111,0 +012402_202,12 +007832_28,2 +01814_289,11 +01924_40,14 +01929_197,12 +009162_180,2 +01501_56,4 +01977_263,3 +00776_80,4 +010942_66,11 +01361_181,3 +00124_54,0 +010872_67,2 +02062_149,4 +010912_216,9 +014972_3,5 +014122_45,0 +00041_81,12 +004172_108,6 +01240_101,12 +004172_151,6 +01409_31,12 +00505_92,12 +006092_46,11 +00413_16,14 +01723_136,15 +01408_141,14 +00539_176,1 +017672_6,14 +00158_29,14 +004172_287,11 +01901_147,5 +017672_1,14 +02094_150,2 +00011_31,1 +010912_227,7 +00506_137,2 +005092_88,2 +01568_26,2 +00314_5,2 +000792_181,9 +01191_70,7 +014372_185,11 +01494_7,14 +01210_56,17 +00232_64,13 +00875_88,2 +02042_26,15 +019242_104,14 +007292_144,14 +02027_129,14 +021622_37,12 +01688_2,5 +012402_95,12 +011912_178,2 +00660_113,0 +00102_102,16 +00160_230,11 +004672_17,11 +01409_231,14 +01423_216,0 +01909_43,2 +010872_207,5 +01228_52,2 +019712_276,12 +02005_104,11 +01272_165,2 +01048_23,5 +00228_3,14 +02005_154,11 +00722_5,17 +019242_211,14 +000092_61,12 +00417_194,17 +01941_182,14 +01707_217,0 +014882_9,13 +00462_39,12 +00475_250,9 +007832_242,5 +01001_160,5 +00993_115,7 +00546_82,3 +004672_22,11 +007292_122,14 +00993_7,14 +00490_189,2 +00721_188,14 +01144_145,2 +014282_24,14 +02030_45,14 +012192_124,5 +01272_45,2 +01219_141,14 +019412_82,14 +005392_181,13 +01501_8,14 +00793_86,14 +00296_71,7 +000232_26,2 +019622_80,0 +01428_35,14 +01240_205,12 +01968_72,7 +01626_82,7 +004082_245,11 +014372_27,11 +01272_200,4 +019252_78,3 +013302_139,6 +00450_77,13 +01091_202,1 +005062_32,2 +01210_49,17 +00729_54,14 +01272_236,2 +01366_138,5 +01046_48,7 +004082_168,11 +000792_228,9 +00390_7,14 +001602_293,13 +01278_239,14 +012282_34,14 +01767_141,12 +00721_164,14 +00417_176,6 +02005_100,11 +00408_101,11 +01834_276,8 +008402_106,7 +00342_18,17 +00088_48,5 +01568_36,2 +02138_48,2 +00417_281,1 +018132_17,11 +007092_234,19 +01278_242,14 +00721_166,12 +014882_64,13 +01688_138,14 +00306_19,14 +01351_140,7 +017072_145,1 +007832_13,2 +00566_155,8 +02094_136,2 +00456_104,12 +008372_11,0 +00280_149,2 +00677_22,14 +00721_52,4 +016922_128,5 +017752_94,12 +01092_41,17 +00729_253,14 +018772_93,4 +01948_46,15 +005502_124,14 +01814_21,5 +01165_40,5 +00475_267,1 +014882_23,1 +002802_166,12 +010012_39,4 +01488_247,5 +012282_271,14 +00475_272,1 +014072_6,2 +007182_33,19 +013712_51,14 +01839_111,11 +01692_122,1 +00023_196,2 +00408_169,11 +011612_274,17 +02187_69,16 +00128_39,12 +01509_155,0 +00342_43,17 +00503_183,9 +00875_29,2 +02054_239,4 +00825_63,12 +004532_73,9 +010012_196,5 +01092_63,17 +00041_136,7 +00607_5,14 +014232_44,2 +010872_156,5 +016052_195,11 +017232_106,15 +00552_16,7 +00761_290,3 +01972_234,3 +01437_68,11 +01865_98,18 +021462_30,11 +00467_17,11 +016932_274,0 +00703_99,11 +00519_97,11 +000242_98,2 +00875_14,2 +00867_135,5 +01272_224,4 +019252_142,3 +01371_67,14 +00485_242,1 +01278_130,4 +017232_260,15 +016922_94,1 +012192_57,5 +01941_194,14 +007092_109,1 +02191_73,7 +01330_67,18 +02146_178,14 +014232_121,0 +02146_109,18 +00730_36,18 +00023_66,3 +019242_41,14 +01767_24,14 +020052_85,11 +011612_235,17 +00840_108,7 +00681_47,5 +00588_8,2 +010912_262,14 +009352_100,7 +01240_251,12 +013302_267,15 +01578_130,12 +00228_166,9 +02146_110,18 +00729_258,14 +005502_86,18 +019252_80,3 +01839_104,11 +00957_5,4 +001242_95,19 +006742_52,14 +02021_44,1 +00181_67,0 +019252_146,3 +003062_87,7 +02030_231,16 +00009_125,2 +010012_18,12 +01924_150,14 +01904_137,12 +009642_138,8 +01813_45,11 +02146_44,18 +01427_84,2 +00729_17,14 +012192_139,14 +01839_116,11 +007092_37,19 +00417_254,5 +00783_284,5 +001022_166,16 +01278_225,2 +018652_101,18 +00065_52,1 +01509_16,2 +00793_13,14 +016982_30,17 +00503_111,1 +01509_22,2 +014122_24,4 +012402_277,12 +01865_119,18 +001112_86,14 +00023_180,2 +01763_23,12 +01723_19,0 +01688_118,14 +01210_79,9 +01437_196,11 +01261_104,2 +010912_161,5 +00442_12,14 +005502_37,18 +021462_132,5 +00867_179,14 +00485_32,2 +00088_2,14 +01769_187,2 +01283_39,2 +01256_49,4 +01409_224,14 +016052_137,5 +01723_241,15 +01087_166,5 +010912_99,0 +010872_222,5 +01409_168,0 +02027_18,17 +021722_84,14 +007762_32,14 +00408_71,1 +010012_67,12 +00023_46,6 +00729_192,14 +01971_51,12 +01509_124,0 +00438_55,2 +010652_87,18 +01045_292,4 +01882_81,14 +00009_283,4 +00951_123,0 +00228_238,11 +012282_242,14 +01161_200,17 +00453_207,9 +005882_11,4 +02054_43,2 +01007_180,13 +00287_41,15 +01048_69,5 +02021_0,14 +00509_86,2 +01767_279,14 +018652_68,18 +011912_161,2 +00776_24,14 +012722_9,2 +00485_234,1 +00485_221,1 +00730_29,17 +016882_92,5 +000792_7,9 +01001_197,5 +00509_171,12 +00287_168,15 +00333_63,2 +009352_102,7 +00159_15,4 +018392_98,11 +01707_82,0 +00408_127,13 +01959_49,6 +00276_37,11 +00837_77,11 +00628_11,7 +01688_299,2 +02005_292,11 +00490_49,2 +01358_21,1 +01412_29,0 +01636_54,0 +01087_7,14 +01423_52,2 +014972_30,4 +00128_252,12 +017692_73,9 +01144_192,2 +01688_109,5 +00567_298,2 +01240_180,12 +01693_101,0 +010652_116,14 +010912_67,1 +01698_45,17 +00538_105,18 +01605_66,5 +00314_169,4 +001022_59,16 +01261_18,2 +01688_255,5 +01509_268,11 +00456_75,4 +007212_18,14 +00607_122,5 +01278_59,12 +02062_148,4 +019042_100,12 +01408_134,14 +02054_259,12 +014272_8,14 +01882_3,14 +01240_72,12 +01101_38,7 +01184_61,5 +00566_188,8 +01409_236,14 +00242_177,2 +01901_160,12 +003062_1,14 +02172_121,4 +000792_212,9 +00840_244,2 +01371_54,14 +00761_96,14 +01045_244,4 +000232_61,3 +01953_250,4 +01959_66,6 +01161_153,17 +00505_207,12 +01769_48,5 +003062_11,14 +017482_79,0 +017022_55,2 +00280_168,12 +016932_27,17 +01191_176,14 +00601_132,14 +01490_35,7 +00563_49,6 +014882_212,0 +00503_167,5 +019242_224,14 +01769_70,9 +020052_179,11 +01408_235,14 +01228_0,14 +00065_299,1 +00124_216,0 +010912_96,0 +01423_219,0 +01623_42,11 +010912_200,1 +01698_84,17 +01366_95,17 +00883_22,11 +005392_31,6 +012722_135,4 +01191_13,14 +00475_59,9 +00181_138,0 +01219_49,5 +01330_178,1 +016922_87,1 +010652_105,5 +02172_122,4 +00916_162,2 +021912_4,14 +01256_64,4 +019412_92,14 +00825_55,2 +01058_55,2 +01058_161,2 +00563_74,6 +01643_46,14 +00597_16,14 +00660_192,0 +01437_267,11 +00528_147,0 +01834_180,8 +00438_130,2 +021722_228,14 +01692_149,14 +002802_225,14 +00009_142,7 +00609_52,11 +01684_46,4 +00242_165,2 +00837_97,11 +01605_40,14 +01437_290,11 +01693_128,0 +01578_254,14 +01145_35,2 +01948_145,13 +00158_78,5 +00567_188,5 +00287_177,4 +01834_181,8 +01748_62,0 +01001_132,5 +01981_137,14 +012282_111,14 +008832_44,11 +00721_105,14 +014272_112,17 +007182_104,19 +00485_177,1 +004532_114,9 +00615_226,11 +00111_77,14 +01044_243,12 +007092_224,19 +01925_204,8 +01431_146,11 +005392_61,1 +02094_27,12 +016052_207,11 +01210_81,9 +00677_49,4 +01962_12,0 +00506_45,2 +014232_159,0 +014372_108,11 +01972_154,3 +011772_29,4 +01457_37,7 +00079_192,9 +00566_190,8 +00025_47,17 +01488_92,13 +01882_73,14 +014882_76,0 +00306_61,7 +014372_77,11 +02094_70,12 +01091_19,12 +00232_176,14 +019712_122,2 +01763_194,4 +016052_198,11 +01007_222,0 +00721_212,14 +00102_173,16 +008832_8,11 +00228_62,11 +00535_253,6 +00681_33,5 +017232_241,15 +00041_27,2 +01814_104,11 +013302_95,9 +01272_118,2 +001602_236,11 +021772_49,12 +00528_58,2 +01091_274,14 +00821_118,5 +02187_164,16 +00079_107,14 +00442_0,2 +01412_44,0 +00490_170,2 +015972_54,0 +01087_121,5 +010872_219,5 +00609_15,2 +01161_70,17 +01366_89,17 +020572_93,2 +01427_40,1 +00314_25,2 +017672_216,14 +012282_59,12 +007092_67,19 +00709_1,19 +00333_66,2 +00065_64,1 +01409_150,0 +012402_197,2 +01046_99,7 +01261_72,12 +00102_109,16 +00453_272,9 +01457_51,7 +01605_112,5 +019712_102,12 +00228_108,11 +018342_127,8 +01723_84,15 +02187_224,16 +019242_165,14 +008402_46,2 +00628_73,7 +02187_248,16 +02187_131,16 +01092_164,5 +020052_224,11 +00159_30,0 +01331_29,17 +02187_13,0 +00848_23,17 +00539_229,13 +008402_30,2 +01240_81,4 +00722_126,17 +00528_200,0 +01437_212,11 +009622_40,0 +01688_113,5 +01412_59,0 +00721_159,14 +00535_298,2 +01693_254,0 +00660_273,2 +00566_182,8 +013302_253,15 +02005_93,11 +00867_83,17 +01134_288,10 +02054_19,2 +00009_194,0 +01007_63,0 +017232_23,15 +014882_213,0 +017692_123,0 +01101_55,7 +02030_106,16 +000792_98,9 +00761_227,3 +012612_3,2 +00848_0,14 +00462_181,14 +00566_79,8 +00041_142,7 +010012_89,5 +00232_45,12 +00730_152,14 +020052_48,11 +00729_2,14 +00394_56,17 +01853_104,11 +019712_191,12 +01962_52,0 +011912_53,7 +00408_265,13 +00964_26,14 +01839_141,1 +00394_118,14 +00453_140,9 +01763_167,2 +02005_143,11 +00160_118,11 +01643_89,14 +01409_201,14 +010012_33,12 +00474_153,2 +01240_156,4 +01210_165,6 +00519_2,14 +01971_33,2 +018392_41,5 +00979_1,14 +00287_35,4 +01763_30,12 +01834_297,8 +000232_118,5 +01707_66,0 +00535_54,2 +01925_139,3 +008402_21,2 +01636_3,14 +017232_165,15 +01409_4,14 +005882_144,13 +00159_7,0 +00485_132,1 +00979_72,1 +011912_7,14 +010872_98,5 +020052_205,11 +00840_288,2 +01409_104,0 +012722_271,2 +00539_116,1 +00490_14,2 +010942_0,14 +00730_53,18 +018392_175,12 +01693_222,0 +01707_196,0 +00287_201,15 +01865_90,18 +02057_16,2 +01007_193,1 +01119_67,11 +02005_83,11 +00275_15,12 +00475_74,9 +00761_168,8 +01748_100,0 +01578_46,14 +019412_231,14 +02138_44,12 +00979_125,4 +01723_297,15 +01904_117,4 +00875_28,2 +00546_123,3 +00102_145,16 +00848_125,17 +01953_144,4 +01431_141,11 +00450_155,12 +01688_101,5 +00964_40,6 +00438_166,2 +01707_134,7 +007292_200,14 +01605_39,14 +01909_156,2 +02027_123,14 +016842_3,14 +00941_5,9 +00474_178,2 +00282_65,5 +00296_84,7 +01707_34,2 +00175_72,4 +01925_233,8 +01636_17,4 +00475_69,1 +002802_184,2 +01272_42,2 +00342_84,14 +021462_48,18 +00158_204,5 +007092_198,19 +00964_292,14 +00079_104,0 +01568_38,2 +01493_67,1 +013712_36,12 +00916_74,2 +01409_138,0 +001242_118,19 +01948_121,13 +013302_216,6 +00021_3,5 +00158_242,5 +01144_70,8 +01409_166,0 +01182_17,4 +017232_129,15 +011612_288,17 +01191_185,14 +01904_150,2 +00102_197,16 +021622_50,17 +00505_200,17 +01707_166,0 +001602_3,2 +002752_16,14 +01541_55,5 +016932_114,0 +019622_62,0 +01769_288,2 +012402_223,4 +01228_147,14 +01706_200,2 +00951_122,0 +013302_274,15 +00709_249,19 +00674_90,14 +02057_195,3 +01829_6,2 +00563_62,9 +00729_88,14 +00232_3,14 +00333_4,2 +00342_86,14 +016922_26,2 +01278_137,4 +01834_195,8 +009512_67,0 +021722_126,2 +003122_47,0 +00934_0,0 +00962_88,3 +002802_222,14 +00228_253,11 +007212_240,14 +00314_242,4 +002752_84,14 +01091_144,5 +00660_270,2 +01622_42,0 +01145_16,2 +007212_234,14 +00867_71,0 +01706_165,2 +01007_110,0 +01814_149,5 +00848_107,17 +019712_36,2 +01767_0,14 +017232_116,15 +004082_277,11 +01007_266,6 +018342_141,8 +020052_288,11 +01103_53,9 +00505_234,14 +00577_92,7 +01834_85,8 +01814_135,5 +00462_162,15 +00768_32,7 +00697_21,9 +01948_170,13 +01692_107,1 +01437_284,11 +00160_299,13 +00566_216,8 +02042_17,14 +02054_120,12 +019252_165,3 +01692_69,1 +00232_99,13 +01134_152,10 +00588_105,13 +019252_93,3 +009622_65,3 +01623_54,11 +01901_40,0 +00490_106,2 +00505_73,1 +00660_66,0 +01001_275,5 +00065_233,12 +019712_188,2 +00282_63,5 +00426_77,0 +01228_22,14 +005062_27,2 +007762_37,4 +01134_202,10 +000792_5,9 +01813_48,11 +00102_278,16 +01509_162,0 +01409_113,0 +00951_59,0 +01428_49,14 +01702_7,14 +00793_132,14 +009512_107,0 +01119_55,11 +01228_61,12 +01977_236,8 +01509_48,0 +00453_203,9 +00528_94,2 +009642_61,3 +000232_149,6 +01091_185,13 +00567_33,2 +01409_199,14 +000232_85,4 +02030_7,14 +01428_83,14 +016932_103,12 +00681_14,5 +00456_37,12 +00475_33,5 +01228_297,14 +017072_8,2 +00577_14,14 +01834_42,8 +00951_32,0 +016052_223,11 +009642_213,3 +010872_272,5 +01643_37,12 +017482_95,0 +010872_107,5 +00660_290,2 +01977_114,8 +00519_48,17 +016982_12,14 +01437_114,11 +01177_34,14 +01488_181,0 +02054_22,2 +01182_118,14 +01228_195,14 +00111_1,14 +01500_9,9 +01622_48,0 +00539_296,1 +00519_15,14 +00761_156,6 +01145_77,4 +01775_77,12 +01707_272,7 +005282_68,2 +02057_167,3 +016932_223,0 +00528_214,0 +00821_113,5 +017672_108,14 +00528_67,2 +00024_64,7 +01904_82,12 +01693_105,12 +012722_74,4 +000242_95,2 +011612_208,17 +000792_21,9 +017672_211,14 +01901_190,14 +00730_51,18 +00935_115,14 +01509_262,11 +00314_221,4 +014372_234,11 +018122_1,2 +00242_248,4 +00475_89,9 +007292_192,14 +01272_229,4 +01929_41,0 +01959_23,6 +016052_201,11 +00041_45,12 +016052_114,5 +021722_74,14 +012282_48,4 +00438_105,2 +00916_174,2 +018342_82,8 +01091_84,16 +00722_96,17 +00474_10,2 +011612_199,17 +01626_60,7 +01972_185,13 +010942_6,14 +009162_193,2 +01767_189,14 +01044_196,12 +017692_184,2 +01568_119,2 +011612_246,17 +00079_168,9 +00550_13,5 +01210_235,9 +00065_193,1 +00475_105,9 +001242_229,0 +00957_41,0 +005882_69,13 +01437_105,11 +01605_120,5 +01814_41,5 +016842_55,14 +009512_39,0 +00382_2,5 +01409_20,14 +00124_108,19 +010012_28,2 +00840_112,7 +01366_132,5 +01924_243,14 +00677_24,14 +008922_100,2 +004532_23,9 +00282_46,17 +01962_46,0 +01119_33,11 +01058_60,2 +00677_91,14 +01361_247,15 +01494_48,7 +00578_97,17 +00697_86,12 +00772_73,7 +017672_217,14 +02094_43,12 +01804_43,12 +01358_19,1 +01953_143,4 +01427_81,17 +00475_49,9 +01829_35,12 +01953_91,12 +014972_10,0 +01767_16,14 +001242_42,4 +004532_51,9 +020052_208,11 +01490_81,7 +01509_235,11 +01962_104,0 +01210_177,6 +01201_32,11 +021912_101,7 +02146_62,18 +014882_116,0 +00609_86,14 +00567_126,2 +00509_114,2 +00159_83,0 +00588_40,4 +00539_38,6 +01605_57,5 +01161_79,17 +020052_279,11 +01058_138,2 +00867_74,5 +00024_107,2 +01981_21,5 +01882_62,11 +02021_71,11 +01408_90,14 +00566_128,8 +016092_26,17 +00841_82,14 +002802_164,12 +00041_53,12 +00628_89,7 +01643_66,4 +005282_108,2 +02191_37,7 +00550_45,18 +01804_11,7 +01119_97,11 +010012_250,5 +000232_60,3 +019592_86,6 +00079_272,4 +00023_43,6 +00024_58,7 +00951_56,0 +010912_143,5 +00160_279,13 +01007_241,1 +00453_69,9 +01723_108,15 +017692_221,9 +004532_204,9 +01046_34,7 +00413_157,0 +018132_47,11 +001242_160,19 +010652_64,18 +01924_160,14 +00539_47,1 +00729_79,14 +00456_51,12 +019242_111,14 +000232_155,6 +017672_62,14 +00916_62,2 +00776_81,4 +00957_29,0 +00417_201,17 +01688_93,5 +01118_65,7 +01582_31,17 +02094_29,12 +01312_74,7 +01698_37,17 +02042_48,14 +02186_53,5 +01834_196,8 +008252_88,2 +01813_24,11 +009512_43,0 +021722_42,14 +01688_80,5 +01134_150,10 +021912_40,7 +00041_75,12 +00964_127,8 +017072_279,7 +01684_47,4 +018772_129,4 +01971_235,12 +01775_23,2 +00450_187,14 +019252_191,8 +00539_186,1 +019242_158,14 +010872_279,5 +00450_12,14 +00474_112,2 +01698_19,14 +01723_232,15 +00306_62,7 +02021_53,11 +002752_137,14 +00023_140,6 +004532_242,9 +000232_96,0 +01182_10,14 +020572_8,2 +01448_86,6 +007182_127,5 +00296_13,14 +00951_35,0 +01909_57,2 +004082_107,11 +01240_241,12 +01568_197,2 +014232_145,0 +012402_216,12 +01972_40,6 +00275_13,12 +007292_139,14 +01956_39,1 +01972_45,3 +01448_13,14 +00538_18,17 +01814_4,5 +00505_231,14 +007092_260,6 +00276_78,11 +00041_132,7 +014372_198,11 +00485_252,1 +005882_53,15 +010912_31,12 +01091_72,1 +009162_225,2 +00957_81,0 +01497_47,12 +00550_51,18 +01865_5,14 +01977_281,14 +007092_131,12 +009642_49,8 +00333_140,2 +00413_144,0 +01092_259,17 +00505_237,14 +01409_62,4 +001022_171,16 +01361_237,15 +00417_67,17 +00535_228,5 +01941_39,14 +00475_92,9 +00546_90,3 +00601_58,9 +00088_3,14 +021722_23,14 +019712_262,4 +00793_137,14 +00601_36,7 +010872_186,5 +002802_143,4 +01058_166,2 +01568_150,2 +00761_273,3 +02172_9,14 +02094_152,2 +018772_11,4 +00597_85,14 +02187_83,16 +01165_108,5 +01065_40,18 +01568_14,2 +01044_273,4 +00505_34,2 +01272_100,2 +00314_190,4 +01813_22,11 +01509_112,0 +01219_127,5 +01408_29,14 +01312_7,14 +017482_60,0 +007292_172,14 +01409_2,14 +008252_33,12 +00840_44,2 +00450_32,14 +014372_143,11 +013302_147,9 +00993_169,7 +014882_25,1 +01493_48,1 +021622_34,12 +00158_148,5 +00009_131,2 +01001_282,5 +01925_259,8 +01330_158,9 +00021_116,4 +00474_0,2 +00505_72,1 +00825_28,12 +02054_31,2 +010012_42,4 +00601_89,11 +00228_79,17 +01769_6,2 +00490_8,2 +00840_168,7 +020572_135,3 +00456_63,14 +004082_123,13 +00021_121,2 +00674_68,14 +01501_38,4 +01134_292,10 +00677_80,14 +01500_3,11 +00128_247,12 +01693_116,0 +00128_206,0 +01692_114,1 +01240_207,12 +01500_31,12 +00793_198,14 +01330_194,6 +01145_170,4 +00025_20,17 +017692_6,2 +01767_145,14 +00528_165,0 +01901_178,14 +00065_155,1 +00761_247,3 +01118_11,14 +010912_267,14 +01177_21,15 +013302_204,9 +01929_32,0 +01431_190,11 +005392_277,0 +00417_215,17 +00528_74,2 +021722_143,14 +01767_264,14 +00242_254,4 +01087_181,5 +00597_55,5 +01219_30,5 +02062_89,4 +02088_38,0 +009352_9,14 +00840_68,2 +00413_206,12 +01688_106,5 +01578_207,14 +01509_40,0 +009162_86,2 +00503_83,9 +02138_75,12 +00761_287,3 +004082_217,11 +01626_92,7 +01228_156,14 +00519_159,14 +01953_291,2 +00993_170,7 +00228_235,5 +00160_30,11 +000252_9,17 +01437_134,11 +012282_254,14 +01457_55,7 +00509_179,12 +02138_105,4 +01787_42,1 +00021_130,12 +00535_263,6 +00503_148,9 +01941_73,14 +01493_73,1 +009342_22,7 +00783_150,2 +014882_187,13 +007092_218,19 +00485_185,1 +017072_208,0 +00417_122,17 +021912_26,7 +00567_217,2 +019412_237,14 +00023_7,2 +00350_213,9 +02172_147,14 +00280_228,14 +00768_104,14 +01509_8,2 +021622_82,17 +01812_93,2 +01879_65,4 +01968_46,7 +00065_222,12 +00350_170,5 +01407_10,2 +01929_148,0 +00333_10,2 +00538_113,1 +01636_90,0 +01865_53,18 +02187_286,16 +00079_7,9 +012722_118,2 +01358_14,1 +01409_189,14 +01210_124,6 +00462_192,14 +00065_20,9 +00783_67,17 +01853_32,5 +01065_71,18 +01101_42,7 +01101_61,17 +01493_59,1 +008922_0,0 +00660_118,0 +01707_140,1 +00793_24,14 +00935_44,7 +017232_269,15 +00588_2,2 +00158_66,14 +00981_9,5 +01272_4,2 +007832_219,2 +00426_53,0 +01177_119,14 +018792_102,2 +011912_176,14 +007212_136,12 +018122_49,4 +02062_157,4 +01408_91,14 +00674_40,12 +00009_261,2 +00505_11,14 +01361_193,3 +01877_132,4 +009642_225,3 +01706_48,2 +009342_39,5 +010872_259,5 +01865_55,18 +014232_136,0 +01144_150,2 +014272_72,1 +00730_83,18 +00124_249,0 +01044_59,4 +01971_110,4 +019242_127,14 +001242_70,4 +00342_54,17 +002802_151,2 +00837_93,11 +018392_23,14 +01058_72,2 +00394_70,17 +00505_239,14 +002802_117,2 +014232_205,0 +02005_129,11 +007092_156,6 +018122_88,2 +01092_84,17 +00539_18,6 +00350_97,5 +00280_41,14 +00111_88,14 +014272_129,14 +00426_52,0 +00528_201,0 +01882_85,14 +007222_88,17 +012282_46,4 +00490_151,12 +00993_40,14 +01134_25,16 +00442_127,4 +01767_59,14 +004082_145,11 +01877_260,4 +00783_123,6 +00242_31,12 +00102_256,16 +01924_106,14 +015972_72,0 +00475_204,1 +02049_214,13 +00772_31,7 +01924_206,14 +00840_237,2 +021722_263,14 +009162_44,2 +01763_52,12 +01688_67,5 +019042_134,12 +019042_38,12 +01578_99,14 +00350_139,9 +01240_53,12 +00181_80,0 +02054_90,2 +00519_50,17 +012192_2,14 +02005_1,11 +00350_281,9 +018122_102,2 +00228_37,2 +01256_73,12 +007292_134,14 +00442_66,2 +005882_138,13 +00503_91,1 +00408_210,11 +01692_97,1 +02057_72,2 +00350_160,9 +00417_0,14 +007832_108,6 +01924_67,14 +001602_200,11 +017232_6,4 +01371_31,14 +01972_23,14 +01925_31,14 +00009_180,2 +01278_228,2 +00964_230,3 +021462_42,1 +00485_93,1 +00242_137,2 +007212_42,14 +00979_15,1 +00079_33,9 +00011_130,2 +00475_91,9 +00979_54,1 +00467_56,11 +017072_226,0 +00160_294,13 +00730_108,14 +01582_68,5 +01409_106,0 +01001_48,2 +00588_6,2 +005392_148,1 +001602_263,13 +001602_181,11 +00275_0,14 +00981_58,11 +004082_172,11 +007292_11,14 +01423_162,0 +01092_295,4 +00761_197,3 +01158_3,12 +00417_259,11 +01278_11,2 +00964_215,3 +009642_116,8 +01048_34,5 +01007_188,4 +01767_64,14 +00503_10,6 +00550_65,18 +01953_280,12 +01272_219,4 +00607_127,5 +00964_158,8 +01605_131,5 +002802_227,14 +014122_70,0 +01145_143,4 +015972_117,14 +01971_41,2 +01407_38,4 +00438_177,2 +017232_170,15 +00417_33,17 +00261_22,12 +005392_236,1 +00128_84,12 +00287_243,4 +01448_43,6 +005882_1,2 +02030_46,14 +001242_71,4 +018122_44,2 +02028_26,15 +008402_266,2 +00408_68,1 +00964_100,8 +010912_222,6 +018122_83,2 +02149_10,17 +00175_25,4 +010012_252,5 +00296_57,7 +00660_99,0 +01457_21,7 +00552_42,7 +005392_59,1 +00160_85,11 +00577_21,7 +01688_86,5 +007222_59,4 +01087_70,5 +02057_105,2 +01707_154,4 +010012_143,5 +01448_92,14 +00009_29,7 +01493_106,1 +01568_167,2 +005282_32,2 +02054_221,12 +014072_31,0 +01501_76,4 +01804_47,12 +016932_173,0 +00951_12,14 +01865_107,18 +015972_75,0 +014372_219,11 +00722_118,17 +00394_102,17 +01161_163,17 +01161_16,17 +008402_237,2 +007092_173,19 +01622_28,0 +01330_238,8 +00539_76,1 +008832_56,11 +001022_156,16 +00979_8,2 +00128_208,4 +00567_297,2 +01409_45,4 +02138_147,13 +005392_255,1 +00242_68,4 +000792_213,9 +013302_34,17 +007092_57,19 +01065_56,18 +01361_160,3 +019412_32,14 +021912_72,7 +01330_171,3 +00475_259,9 +00456_165,12 +01272_17,2 +01330_249,15 +02054_249,2 +01597_30,0 +00314_253,4 +01161_114,17 +02138_2,14 +00417_114,17 +00158_203,5 +014882_232,5 +00783_34,2 +01087_165,5 +00875_74,2 +014372_154,11 +01971_74,4 +00306_44,7 +007832_298,5 +01839_16,2 +00124_156,19 +013302_164,15 +01161_42,17 +01941_271,14 +01448_95,14 +01500_21,0 +00528_88,2 +00442_1,2 +01901_167,12 +00041_60,7 +003062_62,7 +01501_58,4 +009512_155,14 +000092_212,7 +01184_80,5 +00021_107,12 +005882_183,4 +00160_207,11 +00011_52,12 +00413_174,12 +01968_116,14 +01366_36,17 +01972_228,3 +021912_47,7 +01044_8,12 +01007_243,1 +00475_118,9 +01001_288,5 +007092_240,19 +020052_287,11 +00438_99,12 +01493_138,1 +01929_30,0 +01351_167,14 +00276_44,11 +01431_107,11 +00552_25,7 +01001_38,12 +01161_50,17 +01409_69,0 +017232_137,15 +01909_125,2 +018132_2,14 +00964_131,8 +00981_81,11 +010872_93,5 +02049_57,3 +00681_69,5 +00450_120,13 +01361_180,3 +007292_43,14 +000252_87,17 +01814_236,5 +01605_240,11 +01457_56,7 +010872_24,14 +02030_268,16 +01775_14,2 +00601_69,9 +001112_0,14 +00280_7,14 +017752_20,2 +01272_129,12 +01261_46,2 +00601_32,7 +01044_116,12 +01101_86,6 +00660_157,0 +017672_158,14 +00567_294,2 +01091_259,2 +01723_191,15 +02187_178,16 +00079_127,9 +00314_185,0 +01045_291,4 +01605_73,5 +00722_122,17 +00503_48,6 +00528_77,2 +01623_83,11 +01092_171,17 +007092_6,19 +01409_202,14 +014372_127,11 +019622_57,0 +00453_237,9 +01437_90,11 +02172_237,14 +001602_86,11 +018772_228,4 +016052_293,11 +007222_28,17 +001022_137,16 +02186_43,5 +01977_45,12 +01953_12,2 +00024_52,17 +01763_63,2 +00442_297,4 +02088_29,0 +012282_146,14 +020052_146,11 +00615_84,11 +00729_299,14 +020572_200,3 +005392_56,1 +00821_21,2 +00539_49,1 +01605_50,2 +009642_124,8 +019622_70,0 +02138_120,4 +00840_212,7 +00158_113,11 +002752_119,12 +00474_28,2 +01767_147,14 +00566_39,6 +016842_19,14 +01191_92,7 +00772_22,7 +01925_153,3 +02030_40,14 +00538_114,1 +01962_34,0 +00009_91,0 +00660_25,12 +01763_278,2 +02021_95,11 +014122_33,0 +00601_87,11 +01972_93,13 +001022_267,16 +01119_58,11 +01941_168,14 +01493_234,1 +020052_280,11 +020052_33,11 +00158_4,14 +01698_93,17 +004082_46,1 +018342_259,8 +020052_163,11 +014232_91,0 +00979_60,1 +007292_224,14 +00601_91,0 +00916_113,2 +016932_179,0 +007222_83,17 +00964_291,14 +001242_166,19 +015972_52,0 +01688_270,2 +02062_33,2 +02005_252,11 +01623_61,11 +01605_100,5 +00567_116,5 +004532_47,9 +01707_72,4 +02028_76,5 +00567_37,2 +004172_164,6 +01493_133,1 +00462_28,14 +00021_80,4 +021722_97,14 +005392_20,6 +017072_151,4 +01693_266,0 +014882_42,0 +01065_117,14 +01087_33,14 +01597_11,12 +00088_74,5 +00041_78,12 +01145_270,4 +007832_50,2 +00287_24,4 +02028_87,2 +01408_209,14 +01684_61,14 +00242_225,12 +00772_78,7 +016932_73,0 +01767_110,14 +014122_40,0 +01182_38,0 +019412_215,14 +01431_186,11 +012402_230,12 +02127_76,17 +01261_42,2 +01865_120,18 +009162_69,2 +01941_107,14 +018652_3,14 +00509_79,2 +01361_158,3 +00615_79,11 +01941_126,14 +01437_147,11 +01971_271,4 +01423_200,0 +00079_58,9 +010652_47,18 +007092_188,19 +00588_187,4 +010012_294,5 +014882_173,0 +00552_84,7 +00916_141,2 +01605_146,5 +012282_159,14 +00462_157,13 +02049_52,3 +019412_247,14 +02005_71,11 +01488_48,0 +01161_183,17 +01971_7,2 +02005_209,11 +020052_272,11 +00065_33,17 +01457_36,7 +007182_76,19 +019712_141,12 +007292_0,14 +02187_237,16 +00768_15,14 +01045_25,2 +01118_70,7 +01941_78,14 +001022_250,16 +01165_6,14 +01834_197,8 +00158_2,14 +02187_95,16 +01904_166,12 +005092_124,2 +017672_249,14 +007832_105,17 +00390_95,11 +00539_272,1 +007182_72,19 +02138_218,13 +019712_50,12 +01044_286,4 +00438_48,2 +00892_48,0 +00280_251,14 +011082_67,14 +01775_28,2 +00783_175,2 +00382_65,17 +01488_187,13 +00539_61,1 +00442_162,0 +018132_33,11 +01240_60,12 +004532_42,9 +00490_75,2 +00703_116,14 +01272_30,2 +002802_221,2 +01909_212,2 +01103_30,17 +00287_270,15 +00413_215,14 +00413_51,0 +02172_1,14 +02146_161,14 +00964_194,8 +00505_186,5 +001602_91,11 +00552_22,7 +01941_184,14 +00566_98,8 +02162_81,17 +01622_106,0 +001242_238,0 +017482_19,0 +01118_46,7 +00342_55,17 +01092_25,17 +02028_0,4 +01423_243,2 +01509_99,0 +005092_192,2 +01177_90,4 +017672_239,14 +00175_38,13 +016052_185,11 +021912_56,7 +00232_115,13 +01118_84,14 +02021_26,1 +00601_80,1 +00408_37,1 +01977_216,8 +016432_17,12 +004532_284,9 +00160_150,11 +01087_31,14 +014122_3,4 +021722_148,14 +01007_248,13 +00609_18,5 +011082_38,13 +000792_219,15 +01626_78,7 +01829_49,2 +011912_11,14 +00916_225,2 +01626_75,7 +01865_33,11 +013712_68,14 +00438_82,12 +021722_133,14 +01977_81,3 +005062_102,2 +014372_252,11 +01767_261,14 +02149_6,17 +01834_165,8 +01962_136,0 +00566_269,8 +010912_194,16 +01977_244,8 +010012_254,5 +01707_74,4 +001242_241,0 +01457_46,7 +00660_242,12 +00442_239,4 +00456_167,12 +014882_7,13 +020052_297,11 +00041_12,2 +00124_230,0 +002802_124,14 +01929_47,0 +012612_90,2 +000252_64,17 +00964_126,8 +011772_69,15 +00408_281,11 +01924_152,14 +00041_104,12 +01488_58,13 +00021_6,5 +004172_42,17 +00456_93,12 +01813_13,11 +01219_16,14 +00276_45,11 +00867_85,17 +008832_68,11 +02005_32,11 +01161_85,17 +019242_178,14 +00729_122,14 +01882_74,14 +00776_66,14 +00296_104,14 +00065_156,1 +00287_119,15 +009512_137,14 +02146_10,14 +00768_69,7 +00450_194,14 +007212_191,14 +01058_156,2 +004172_69,17 +014122_26,0 +011772_107,14 +00566_223,8 +01692_131,5 +005392_70,1 +01834_24,14 +00867_88,17 +007182_30,19 +01409_98,0 +009642_74,3 +000792_248,9 +01693_152,0 +007832_68,17 +01488_243,5 +01408_169,14 +018132_45,11 +00883_32,11 +017692_242,9 +01427_124,14 +000092_168,0 +001022_125,16 +021912_78,7 +00772_44,7 +00729_62,14 +00718_129,14 +01909_151,4 +01804_123,12 +01953_52,2 +00382_39,17 +00577_53,7 +01351_169,14 +01161_213,17 +01971_58,12 +021462_167,14 +019042_152,2 +01953_254,4 +01007_39,4 +01941_245,14 +007292_199,14 +01706_194,2 +009642_186,8 +02042_100,13 +01775_92,4 +00567_31,2 +01804_86,7 +00951_63,0 +001112_1,14 +01748_21,0 +00111_7,14 +01977_125,8 +01488_134,13 +01409_70,0 +007832_23,2 +00408_201,11 +00160_34,11 +00232_55,4 +01001_33,12 +01045_205,4 +013302_0,2 +01972_34,6 +01240_261,4 +01882_68,5 +02021_21,1 +012282_5,14 +00607_134,14 +007292_102,14 +02138_161,13 +001242_111,19 +01184_99,5 +02187_299,16 +00453_117,9 +007222_62,4 +01972_242,6 +012282_103,14 +017692_111,2 +02049_35,8 +01161_97,17 +009162_198,2 +00450_10,14 +01134_298,10 +02138_232,15 +012612_29,2 +014272_3,14 +00426_104,0 +019712_226,2 +00102_265,16 +01312_94,14 +007292_186,14 +00609_9,14 +005392_54,1 +006092_33,11 +00228_26,14 +00102_245,16 +019712_124,2 +01210_12,9 +012722_44,2 +02177_30,4 +009352_86,7 +00287_115,15 +012402_206,12 +014282_26,14 +001602_254,11 +00158_70,2 +00025_72,17 +01769_137,9 +01361_257,15 +016882_185,5 +009512_141,14 +010652_119,14 +00688_63,4 +010652_79,18 +000092_49,12 +00567_272,2 +01775_30,2 +00333_107,4 +00721_93,14 +01101_138,0 +00041_137,7 +01448_77,3 +01877_140,4 +012722_208,4 +014232_113,0 +00660_101,0 +01953_115,7 +01219_23,5 +004172_198,17 +01278_237,14 +00394_86,17 +021722_39,14 +00342_77,17 +01333_19,2 +01087_162,5 +00709_182,19 +010912_111,0 +00935_65,7 +01971_38,2 +00408_180,11 +01509_200,0 +017232_46,15 +002802_25,14 +00563_119,2 +01839_47,11 +01623_24,14 +00462_211,14 +01925_22,14 +00916_234,5 +017232_229,15 +00566_146,8 +00242_88,4 +01767_184,14 +014882_40,0 +00242_21,2 +00102_221,16 +017482_83,0 +010872_35,14 +00628_100,7 +018132_90,11 +00660_86,0 +00566_243,8 +01048_83,14 +01272_117,2 +01457_82,14 +01688_226,5 +01509_147,0 +01707_174,4 +01901_89,0 +006092_30,11 +01723_273,15 +016882_186,5 +00280_171,12 +00993_209,6 +001022_23,2 +01103_52,9 +00567_245,2 +01769_71,9 +00024_35,7 +008922_44,0 +016052_230,11 +00729_136,14 +00158_106,11 +00450_61,4 +011772_26,15 +008402_127,2 +004532_187,9 +00566_280,8 +001602_88,11 +012282_273,14 +021722_208,14 +01046_33,7 +00615_98,1 +009352_25,7 +02191_52,7 +01698_1,14 +01500_4,11 +00292_10,11 +00450_114,13 +01763_224,12 +014232_223,0 +015972_36,0 +015972_68,0 +02030_199,16 +004672_7,11 +02088_18,0 +00009_79,12 +00761_6,14 +00718_135,14 +018342_70,8 +00703_79,11 +01839_69,11 +014372_187,11 +01240_259,4 +00490_217,7 +01184_135,14 +005062_71,6 +01103_28,9 +009162_262,5 +02187_256,16 +01092_194,2 +01597_76,0 +01210_158,6 +00793_168,12 +00776_36,4 +00442_201,4 +01007_115,0 +019412_154,14 +01767_103,14 +019412_0,14 +00793_149,14 +00413_126,0 +010012_153,5 +01853_79,1 +017232_272,15 +02030_21,14 +01256_42,4 +00506_32,2 +00292_45,11 +01509_277,11 +01877_80,4 +02138_114,4 +02127_175,17 +01597_42,0 +01272_84,2 +01977_72,8 +01145_278,4 +01509_37,0 +00333_178,2 +02187_185,16 +01134_203,10 +00566_154,8 +00768_31,7 +014372_211,11 +000242_60,7 +013302_212,1 +00793_167,12 +02177_55,12 +01210_279,9 +00333_181,2 +011772_91,4 +01431_92,11 +01723_129,15 +01144_119,2 +00408_198,11 +01763_171,12 +02187_182,16 +006092_6,14 +010872_286,5 +00720_9,0 +01971_274,4 +00681_44,5 +004172_281,1 +008402_57,2 +02138_266,14 +00677_26,14 +01437_165,11 +00677_34,14 +01925_215,8 +020572_74,2 +01058_23,2 +01707_157,0 +02146_37,11 +02172_56,14 +014232_258,2 +014372_277,11 +006742_100,14 +00350_237,9 +00768_59,7 +00709_275,12 +00065_277,4 +00111_2,14 +004082_96,11 +017022_17,12 +01423_226,0 +01165_100,5 +003062_60,7 +00128_262,12 +00160_250,11 +01882_16,2 +007762_99,14 +007182_124,19 +00783_195,12 +013302_223,6 +01007_296,1 +001112_63,17 +016842_11,14 +01161_35,17 +00539_203,6 +01509_190,0 +004082_2,2 +01048_47,5 +021622_20,14 +00314_46,2 +01626_127,2 +01091_152,5 +004172_234,6 +013302_176,1 +00314_184,0 +01094_58,11 +01623_143,14 +01490_52,7 +01702_8,14 +01457_23,7 +01361_121,3 +00539_263,1 +016882_136,14 +01219_53,5 +01829_13,2 +017022_12,12 +019242_23,14 +014072_49,2 +01941_99,14 +01509_9,2 +00417_147,7 +007832_259,5 +01091_54,1 +01007_173,13 +00588_221,2 +01493_294,1 +01256_16,14 +01622_129,14 +00490_197,2 +02030_87,16 +01145_13,2 +00761_13,14 +016432_95,14 +02162_113,1 +000242_35,7 +017692_253,0 +013302_69,9 +01161_55,17 +013302_108,9 +012282_193,14 +019412_14,14 +00242_284,12 +00981_103,5 +00314_0,2 +00390_107,14 +01361_25,0 +02030_208,16 +005882_150,13 +011912_179,2 +018342_247,8 +005282_30,2 +016932_45,5 +005882_4,2 +01101_82,6 +00607_130,14 +00426_8,14 +00993_89,7 +00462_128,13 +01256_17,14 +02172_98,14 +00280_185,2 +01971_31,2 +00342_9,14 +01925_294,8 +02146_63,18 +01065_69,18 +019412_45,14 +007762_43,12 +014372_110,11 +00519_105,11 +019712_23,2 +00474_281,2 +00426_168,14 +00550_26,18 +01879_99,2 +005282_16,2 +00181_95,0 +01948_41,4 +00128_256,12 +02005_190,11 +01953_39,2 +00840_7,2 +016052_209,11 +00505_199,7 +000092_130,2 +004082_171,11 +00916_257,5 +007292_125,14 +01834_98,8 +01144_54,9 +00485_214,1 +00160_71,11 +00275_34,12 +001242_8,4 +02057_13,2 +010652_68,18 +017022_74,14 +01087_78,5 +014282_28,14 +01108_62,4 +019412_254,14 +00674_123,14 +00065_4,5 +01065_7,2 +012402_265,4 +019592_7,6 +00390_88,5 +007212_28,12 +02021_90,11 +01605_76,5 +01623_23,14 +00021_61,3 +00011_42,1 +01688_85,5 +002802_213,12 +01953_94,4 +00312_29,0 +01409_227,14 +018772_227,4 +01812_111,2 +00566_257,8 +010652_46,18 +00609_78,14 +01853_123,14 +01924_48,14 +00628_23,7 +019592_15,6 +00438_84,12 +01091_100,0 +01977_41,14 +00490_260,5 +00709_106,1 +01767_214,14 +01094_41,11 +02057_51,2 +02057_173,3 +014882_142,0 +017072_280,7 +018392_163,1 +00474_49,2 +00660_77,0 +00503_40,6 +00703_16,5 +006092_4,14 +00413_45,0 +00158_42,14 +00709_50,19 +006742_55,14 +01045_299,4 +01688_276,2 +001242_248,0 +00535_259,8 +01767_58,14 +00102_219,16 +01145_52,2 +019712_171,12 +016842_47,4 +01953_71,12 +00528_60,2 +009642_169,8 +00232_124,13 +01177_42,14 +01312_11,14 +017482_17,0 +021772_61,12 +021772_1,14 +00408_89,11 +00160_107,11 +01877_186,4 +01953_220,4 +01909_88,12 +01046_80,7 +02094_23,2 +01706_16,2 +00993_88,7 +017692_209,11 +012282_196,14 +01698_108,14 +00837_27,11 +001022_184,16 +00979_6,14 +01877_139,4 +01865_44,18 +001022_293,16 +012612_0,2 +01968_15,14 +01092_207,17 +00567_224,2 +01904_70,12 +01087_296,5 +00539_114,1 +00025_46,17 +00505_184,5 +006742_122,14 +00287_56,15 +017072_200,0 +012562_77,12 +01091_158,5 +00287_47,15 +00793_150,14 +00408_156,11 +00390_57,5 +01408_83,14 +01045_97,4 +012402_54,12 +01953_227,12 +009512_118,0 +014882_139,0 +000252_21,17 +001112_20,17 +007092_128,4 +00688_73,0 +00566_206,8 +016052_122,5 +01228_256,14 +00615_26,11 +00563_6,2 +01972_130,3 +01971_175,12 +00023_90,0 +00025_53,17 +018772_174,4 +02057_44,2 +00408_14,2 +00993_168,7 +00417_132,17 +00023_49,3 +01582_18,17 +01929_78,0 +02127_293,17 +01834_215,8 +004172_141,6 +014372_71,11 +005282_45,2 +007212_202,14 +000092_113,12 +00065_184,1 +01092_114,17 +00776_23,14 +01968_86,7 +00350_99,5 +00867_80,17 +01723_88,15 +00535_76,2 +00111_41,17 +020052_81,11 +001112_67,17 +020572_86,12 +00011_108,12 +020572_94,2 +00475_159,9 +00567_204,2 +008922_66,2 +01924_117,14 +012192_99,5 +00703_61,11 +020572_78,2 +00025_9,17 +002752_9,14 +00009_81,2 +00438_73,12 +01702_11,12 +01953_278,12 +00503_116,1 +02030_150,16 +01968_77,7 +01971_293,12 +02005_42,11 +00088_46,5 +00228_135,9 +01351_30,7 +00601_88,11 +01184_83,5 +00287_241,4 +00275_53,14 +00438_238,2 +00242_28,12 +009642_159,8 +014372_28,11 +00453_295,9 +01814_55,5 +00158_7,14 +010942_48,11 +010912_100,0 +021722_171,14 +00453_193,9 +00450_49,12 +01688_74,5 +00312_31,0 +020572_163,3 +01853_56,6 +01001_200,5 +008372_56,11 +01972_104,13 +018342_84,8 +00128_137,2 +016982_35,17 +019412_63,14 +01643_88,14 +00964_226,3 +02042_122,0 +00450_8,14 +010942_90,11 +01134_287,10 +016882_296,2 +02057_35,2 +01210_298,9 +01769_141,9 +01431_79,5 +007762_15,15 +01578_230,14 +001602_233,11 +01953_234,4 +02177_62,12 +00892_24,0 +004082_207,11 +00242_251,4 +004532_213,9 +007832_234,5 +00333_182,2 +01409_241,14 +011912_91,7 +005282_160,0 +00023_158,5 +02191_70,7 +01929_51,0 +007092_296,12 +01092_294,4 +00350_183,9 +021772_16,4 +007292_175,14 +012402_112,4 +01834_235,8 +014882_200,1 +018772_214,4 +005392_55,1 +011612_171,17 +01428_86,14 +009512_35,0 +00962_32,0 +01278_51,2 +005282_106,2 +00615_147,1 +00957_24,4 +00280_96,12 +02187_247,16 +01865_99,18 +02028_16,4 +017072_199,0 +010942_8,14 +01698_6,14 +01001_171,5 +00462_176,4 +005062_38,2 +004672_1,11 +00519_31,7 +01968_76,7 +01962_65,0 +01877_15,4 +01925_58,6 +00079_101,1 +011082_72,14 +013712_25,14 +01929_95,0 +02054_242,4 +00768_103,14 +00730_10,14 +00242_271,4 +01693_294,0 +01092_290,14 +01763_98,2 +00957_42,0 +00438_255,2 +01812_11,2 +021722_95,14 +014882_91,13 +00442_282,4 +012192_70,5 +007832_72,17 +02187_60,16 +00462_2,14 +00506_126,2 +01278_10,2 +01423_126,0 +00453_189,9 +01909_60,2 +019242_126,14 +00242_111,12 +01509_244,11 +01256_21,4 +01278_220,2 +00609_39,11 +00024_18,2 +01813_46,11 +00453_152,9 +01609_19,17 +02172_181,14 +02138_125,8 +00456_97,12 +01626_106,7 +01333_41,0 +02049_183,13 +017672_81,14 +01272_148,2 +001022_193,16 +000242_21,2 +003122_1,0 +01488_204,1 +01941_0,14 +000092_122,0 +02028_82,5 +01001_192,5 +004172_240,6 +01706_230,2 +010912_255,2 +021722_123,4 +019042_111,12 +00350_89,5 +01312_66,7 +00102_54,16 +017232_153,15 +00314_68,12 +01448_49,6 +01924_156,14 +019712_86,4 +001602_157,11 +01929_193,0 +00718_6,2 +00840_100,2 +000232_91,0 +01210_50,17 +01046_82,7 +01605_187,11 +00867_7,14 +01813_103,11 +01605_221,11 +00935_113,14 +016052_140,5 +017672_251,14 +00505_153,14 +01161_291,2 +001022_203,16 +01351_36,7 +019242_142,14 +01578_62,14 +02054_289,4 +00993_159,7 +00578_8,14 +00697_109,4 +000092_62,12 +01972_77,3 +00021_55,3 +01865_126,11 +00566_141,8 +017692_114,2 +021722_91,14 +01428_16,4 +004082_4,2 +004172_157,6 +007222_2,17 +00442_287,4 +00065_230,12 +01134_58,10 +01909_194,2 +00867_177,14 +00730_94,14 +01366_106,17 +01184_22,5 +02127_12,2 +00721_83,4 +00916_262,5 +01278_23,2 +01165_17,5 +012282_58,12 +02054_132,4 +00490_51,2 +021622_31,12 +00588_117,13 +00883_13,11 +01622_94,5 +01488_116,0 +007762_18,4 +00276_136,14 +01161_113,17 +01001_24,12 +00535_254,6 +00462_161,15 +00128_16,12 +01094_48,11 +01007_204,0 +01971_207,2 +00079_190,9 +01228_126,14 +01812_52,4 +01361_177,3 +01210_203,6 +01636_76,0 +00962_39,0 +00159_97,0 +01144_7,5 +02172_50,14 +00837_57,11 +00883_44,11 +00128_117,2 +00128_207,4 +016052_175,11 +009622_37,0 +01409_228,14 +01834_248,8 +01134_42,10 +01877_88,4 +01909_147,4 +00867_119,5 +01597_20,0 +009162_77,2 +000792_222,15 +01412_77,0 +010872_288,5 +02127_162,17 +01182_112,14 +01494_70,7 +01210_17,7 +01240_85,2 +004172_184,17 +005282_89,2 +008402_172,7 +011612_291,2 +00934_7,9 +00280_40,14 +00232_83,13 +00159_27,0 +00275_12,14 +00567_9,2 +01361_124,3 +016882_16,5 +010942_16,2 +004172_71,17 +01953_232,4 +00566_203,8 +00314_215,0 +01457_32,7 +00793_224,14 +01158_105,4 +010912_205,9 +01763_91,12 +02030_236,16 +00124_146,19 +00546_130,3 +010012_244,5 +01087_273,5 +007762_81,4 +00535_97,12 +007222_123,17 +01929_88,0 +01092_54,17 +01091_57,1 +01488_241,5 +01091_177,11 +01431_120,11 +002802_50,4 +001602_179,1 +01361_249,15 +018792_0,2 +00566_97,8 +01144_44,6 +00382_5,5 +00768_98,14 +00772_59,7 +010912_121,5 +00609_71,14 +013302_276,15 +01351_33,7 +01702_81,14 +01962_103,0 +01834_139,8 +018652_18,11 +00456_116,2 +01427_42,9 +01568_219,2 +02054_27,2 +017072_274,7 +00232_63,13 +01048_40,5 +01568_18,2 +005882_164,15 +019622_42,0 +01904_19,2 +020052_138,11 +01144_11,5 +00426_75,0 +00426_154,12 +00951_3,14 +000792_75,9 +004172_285,1 +01177_43,4 +010912_250,2 +01839_109,11 +004082_179,11 +00450_11,14 +01001_7,2 +01330_267,15 +00232_9,14 +007222_10,17 +009622_16,0 +017232_208,15 +004532_14,1 +002752_24,14 +012192_25,5 +020052_204,11 +014882_87,13 +00079_14,9 +008482_144,14 +00280_202,12 +01707_155,4 +01956_59,14 +01971_238,12 +00438_2,2 +007092_54,19 +01767_105,14 +01493_173,1 +02127_171,17 +01108_36,13 +00951_144,14 +01706_258,2 +01904_11,2 +01371_11,14 +01775_161,12 +013712_50,14 +01048_71,5 +007222_38,17 +000252_6,17 +01007_197,19 +01423_61,2 +009642_224,3 +01184_111,5 +00158_240,5 +00783_90,17 +01431_241,11 +01161_38,17 +01431_44,5 +005502_107,18 +00539_277,0 +009512_124,0 +007832_122,6 +00158_142,5 +01431_212,0 +01240_280,12 +01813_14,11 +00276_120,11 +016052_234,11 +018342_257,8 +012562_53,4 +01101_63,17 +00821_91,5 +01953_110,4 +00128_237,4 +014232_143,0 +02005_106,11 +010012_62,12 +01605_141,5 +01312_75,7 +00730_146,14 +01879_24,2 +01210_107,6 +00333_32,2 +01763_272,2 +01814_127,11 +01643_40,12 +00490_131,2 +016432_25,12 +018772_209,4 +00519_77,11 +00462_58,15 +019252_117,3 +01834_263,8 +018652_105,18 +02162_66,17 +01333_34,4 +014372_51,11 +01091_41,12 +02054_238,4 +01045_114,4 +00567_183,5 +00539_42,6 +02005_215,11 +02138_201,13 +019412_4,14 +01134_140,10 +008402_96,2 +02049_184,13 +01853_12,14 +00615_109,11 +02138_8,14 +00519_58,17 +011082_24,0 +007212_235,14 +00453_93,9 +000792_200,9 +01609_16,17 +00065_92,11 +00456_176,12 +00242_57,12 +00577_79,7 +00041_112,12 +01977_205,8 +00538_86,2 +012192_82,5 +01437_208,11 +00485_182,1 +01087_54,14 +00079_9,9 +001022_213,16 +012402_220,4 +01626_19,2 +01723_27,15 +00485_145,1 +01351_134,7 +00615_213,11 +01977_178,8 +00776_40,4 +01493_119,1 +00535_32,2 +01408_162,14 +01087_71,5 +01948_60,13 +005502_125,14 +00951_43,0 +01636_12,14 +01605_10,14 +00438_147,2 +02012_33,7 +02012_94,17 +01968_93,7 +00128_204,4 +00450_169,4 +005882_93,13 +01427_79,17 +021622_111,1 +00228_291,7 +00065_95,11 +00287_221,15 +000792_167,9 +00546_148,3 +019242_217,14 +01953_172,12 +01509_282,11 +00280_214,4 +01408_161,14 +00350_133,9 +003062_50,7 +02005_161,11 +00276_23,11 +00783_222,5 +01693_239,0 +019412_224,14 +00485_206,1 +00660_52,0 +008372_172,14 +00160_182,11 +00709_26,19 +02028_85,2 +00546_104,3 +00160_84,11 +00342_66,17 +019622_105,0 +01814_178,11 +009622_83,3 +007212_17,14 +00490_38,2 +01493_57,1 +00009_72,0 +00566_232,8 +021722_157,2 +001242_130,19 +011612_117,17 +00181_97,0 +02127_261,17 +021722_191,14 +021912_20,7 +00567_120,2 +01688_199,5 +01431_231,11 +01423_157,0 +01007_238,4 +005282_23,2 +02127_56,17 +00280_165,12 +014232_67,4 +008252_27,2 +01278_194,2 +002802_67,12 +01814_213,11 +005062_123,2 +01853_89,0 +00024_1,2 +00314_117,0 +001602_172,11 +007092_207,19 +00601_102,0 +00456_24,12 +019412_148,14 +013712_30,14 +018342_85,8 +01101_43,7 +014882_155,13 +011612_250,17 +01191_116,7 +01007_38,4 +00485_46,4 +00761_205,3 +00124_212,0 +00783_251,5 +01814_50,5 +010872_119,5 +00438_157,2 +01901_35,5 +006092_76,14 +00776_34,14 +01219_106,5 +00474_18,2 +01333_38,4 +010012_53,2 +007222_115,17 +01045_24,2 +012192_14,14 +009162_167,2 +00981_24,11 +021912_93,7 +00041_131,7 +00981_23,11 +01361_224,15 +02172_87,14 +01272_138,4 +01044_148,4 +01723_151,15 +01493_217,1 +01330_173,6 +01879_110,2 +00160_243,1 +02094_170,2 +00506_142,2 +01834_65,8 +00128_142,2 +00993_18,14 +01158_134,12 +009352_59,7 +00181_124,0 +010872_262,5 +01108_4,14 +01007_94,0 +01763_263,2 +017692_72,9 +002802_65,12 +012282_209,14 +01493_254,9 +015972_37,0 +01925_155,3 +016882_143,14 +016052_18,14 +009642_14,14 +01409_100,0 +00450_55,4 +01092_252,17 +010942_46,11 +02187_32,16 +01707_16,2 +00228_243,11 +00566_69,8 +018772_133,4 +01578_100,14 +010872_195,5 +008922_86,2 +016882_13,5 +01692_2,14 +012722_115,2 +01351_125,7 +00875_61,2 +00821_75,5 +00730_149,14 +00021_109,12 +00390_97,11 +01144_47,9 +01904_130,12 +00506_7,2 +01609_6,17 +004172_89,6 +02177_33,4 +00160_119,11 +018342_187,8 +017232_20,0 +01494_62,7 +01925_121,3 +01977_53,14 +01161_15,17 +01045_4,2 +00993_113,7 +00729_120,14 +01853_84,0 +01834_4,14 +02186_8,14 +01240_78,4 +01707_109,1 +02172_10,14 +01971_295,12 +01331_71,7 +01578_112,14 +01971_123,2 +00825_84,2 +008402_32,2 +00088_26,5 +01408_143,14 +00024_117,2 +01693_297,0 +02057_174,3 +01488_194,13 +01494_97,14 +00729_108,14 +01366_161,14 +02027_28,18 +01626_110,7 +01497_14,0 +01165_107,5 +01622_33,13 +00697_95,12 +01165_45,5 +01184_126,14 +00408_58,1 +00935_21,7 +01924_30,14 +000092_79,12 +00628_54,7 +02012_97,17 +00438_76,2 +017232_15,4 +00158_56,14 +01977_243,8 +00588_121,13 +02191_21,7 +016092_2,17 +021722_155,4 +00674_132,14 +01092_131,9 +01191_59,7 +00783_65,17 +01767_280,14 +004672_11,11 +00550_113,18 +02054_143,2 +01767_263,14 +01219_85,5 +00175_23,4 +00688_110,2 +01706_62,2 +005502_12,5 +006742_115,14 +01597_64,0 +01119_72,11 +020572_136,3 +018392_77,11 +005062_77,6 +00729_92,14 +004082_70,1 +00772_61,7 +00747_10,7 +018652_127,11 +021462_74,18 +00964_208,3 +01626_81,7 +003122_19,0 +017672_191,14 +00088_76,5 +00528_195,0 +00935_97,7 +015972_25,0 +01877_225,4 +00292_32,11 +01971_151,12 +01578_166,14 +014122_83,0 +01605_157,11 +010012_0,2 +00979_51,1 +02005_298,11 +016932_284,0 +004532_138,9 +021722_67,12 +00232_113,13 +01901_146,5 +01091_15,2 +00840_148,7 +01692_29,2 +01962_33,0 +008402_285,2 +00761_43,14 +00333_40,2 +018772_278,4 +02030_23,14 +01240_137,12 +01278_174,2 +01219_51,5 +014232_82,0 +00550_46,18 +01191_55,7 +00160_244,1 +00287_299,4 +00485_144,1 +01723_219,15 +017752_31,2 +004082_113,1 +00821_42,5 +013302_224,6 +004172_114,17 +00718_7,2 +014882_225,5 +00124_32,4 +01165_18,5 +00509_2,2 +00413_62,0 +014372_72,11 +01490_27,7 +01431_62,5 +01490_54,7 +006092_12,14 +02191_97,7 +00276_90,11 +01948_88,13 +00709_252,19 +00837_137,11 +017482_82,0 +00709_161,4 +01972_71,3 +01877_215,4 +00783_100,17 +00021_65,3 +02172_34,14 +007832_264,5 +01981_98,5 +01240_227,12 +01272_270,2 +017072_7,2 +018772_91,4 +01228_239,14 +014232_93,0 +01065_9,5 +01001_271,5 +02187_79,16 +01001_120,5 +00848_52,17 +008402_244,2 +017692_190,2 +01623_123,14 +01981_63,5 +01091_70,1 +017752_152,2 +00475_235,9 +01049_38,7 +00660_7,14 +016922_41,2 +01330_181,3 +011912_44,14 +018772_13,4 +005092_8,2 +01636_49,0 +01361_74,2 +01046_78,7 +01804_37,12 +009622_27,4 +01834_144,8 +019592_51,6 +011612_82,17 +01228_266,14 +00474_184,2 +01568_247,2 +01182_12,12 +01977_49,12 +00408_267,13 +01161_110,17 +018132_119,11 +01775_112,4 +00783_146,4 +00287_33,4 +004172_282,1 +00314_195,0 +01707_290,7 +01488_174,0 +00825_20,2 +014972_9,0 +01643_58,4 +016052_213,11 +01769_277,2 +01693_243,0 +019042_25,2 +02127_257,17 +00615_160,11 +006742_33,14 +02094_155,2 +00729_61,14 +00475_238,9 +00721_72,12 +00442_101,2 +016432_81,14 +02146_56,18 +00730_112,14 +010912_138,5 +00793_197,14 +01723_283,15 +01692_90,1 +011612_37,17 +00079_25,9 +001602_30,11 +00577_4,14 +02191_16,7 +01929_58,0 +01092_202,17 +011612_24,17 +00314_43,2 +01091_108,0 +00979_50,1 +00342_26,17 +005882_23,4 +01578_71,14 +00729_214,14 +00993_132,7 +01488_200,1 +01431_287,11 +018772_34,4 +02127_55,17 +02021_111,14 +00417_21,6 +01240_143,12 +017752_78,12 +00677_82,14 +00550_39,18 +00993_23,14 +02138_136,13 +005392_123,1 +009352_111,14 +00467_29,11 +01688_252,5 +00892_71,2 +021722_153,4 +010872_176,5 +02005_180,11 +01161_58,17 +00009_43,4 +01219_113,5 +016052_200,11 +00314_76,4 +00677_7,14 +00408_298,11 +005502_9,5 +021622_28,5 +01182_48,0 +01834_101,8 +005882_21,12 +01877_275,4 +02049_125,13 +01219_142,14 +01626_49,7 +011772_80,14 +00607_90,19 +00490_159,2 +01087_93,5 +00935_67,7 +00408_77,11 +01256_19,4 +01877_71,4 +007092_86,9 +007832_266,5 +02054_76,2 +01058_162,2 +00867_55,5 +020052_144,11 +00475_5,5 +008372_22,11 +01748_98,0 +014882_144,0 +01256_111,14 +01283_65,14 +017672_30,14 +00709_260,6 +017752_142,4 +01924_247,14 +00474_1,2 +01134_123,10 +01333_10,0 +01494_63,7 +02054_166,12 +01144_201,12 +01971_63,12 +01007_62,0 +00314_97,4 +01877_104,4 +00009_225,2 +01707_88,4 +02030_15,14 +01087_237,5 +00088_32,5 +01493_55,1 +00158_119,11 +01767_245,14 +018392_32,14 +01272_232,2 +00519_37,7 +007292_214,14 +01092_119,17 +01045_116,4 +01144_34,5 +01330_204,9 +000792_216,0 +01158_144,4 +01101_128,0 +00729_127,14 +00550_18,5 +01605_17,14 +00232_165,14 +01953_276,12 +01144_83,6 +01493_22,11 +00275_155,14 +017672_40,14 +019412_58,14 +004082_138,1 +01210_101,6 +01134_191,10 +00783_129,12 +01501_104,14 +01956_7,14 +007092_140,5 +02021_106,14 +00181_102,0 +014372_214,11 +019242_62,14 +005502_105,18 +00124_25,4 +01865_103,18 +01626_1,2 +007092_211,19 +01929_44,0 +01361_93,6 +00079_191,9 +01767_195,14 +00456_146,14 +02062_103,4 +014232_42,2 +01103_47,17 +007222_106,17 +001602_1,5 +01834_3,14 +017482_81,0 +018392_27,14 +02030_180,16 +007292_159,14 +007092_273,9 +00729_18,14 +00450_85,13 +01049_40,7 +00677_29,14 +00578_20,4 +000232_182,2 +005092_19,2 +01240_38,2 +01925_23,12 +012722_242,12 +00280_164,12 +00697_7,2 +01358_58,1 +019712_255,12 +00128_28,12 +01331_14,14 +00011_63,2 +00916_182,2 +01210_59,17 +01045_220,4 +01134_32,10 +01134_72,10 +021462_77,18 +01769_139,9 +01044_65,4 +01748_89,0 +009622_76,3 +019712_78,2 +02172_230,14 +001602_278,13 +014372_249,11 +012282_135,14 +019252_230,8 +01101_152,14 +00825_38,2 +01134_142,10 +01161_115,17 +02172_134,12 +016882_62,5 +013332_42,0 +00280_92,12 +01769_162,1 +00721_47,14 +00519_158,14 +00228_132,9 +00597_13,14 +00993_10,14 +00883_20,11 +01428_31,14 +01977_129,8 +01333_45,4 +00124_34,4 +016052_197,11 +004532_247,9 +007212_119,4 +01118_30,7 +00442_258,4 +00079_154,1 +01182_63,0 +00837_43,11 +017482_23,0 +02012_13,14 +00783_176,2 +00578_0,14 +003062_8,14 +007182_84,19 +00528_46,2 +00588_86,13 +00485_138,1 +01981_35,5 +01431_47,5 +01977_60,6 +01812_74,12 +005882_73,13 +011612_188,17 +00674_19,14 +01001_79,12 +02049_249,3 +01972_138,3 +01058_0,2 +006742_124,14 +01283_64,2 +019712_259,4 +00916_23,2 +00840_51,2 +00011_126,2 +01145_93,4 +01948_180,13 +00546_29,14 +00793_292,14 +01490_76,7 +00474_87,2 +00312_46,0 +001242_7,4 +002752_108,14 +01839_34,14 +01924_220,14 +017482_98,0 +012282_289,14 +01158_83,4 +00660_74,0 +00509_103,2 +01201_89,11 +01161_202,17 +017072_0,2 +01361_129,3 +010912_149,5 +017072_218,0 +00761_299,3 +009642_276,14 +01046_91,7 +00065_153,1 +01769_158,9 +017072_238,0 +00747_24,9 +01409_212,14 +021722_130,14 +01578_21,14 +014372_191,11 +00567_84,2 +013302_238,8 +00783_162,2 +000092_213,7 +00390_36,5 +01929_202,12 +01272_19,2 +019592_60,6 +00474_225,2 +00729_297,14 +01829_18,12 +01879_29,12 +01423_164,0 +004172_261,11 +02030_63,14 +02030_16,14 +01448_90,14 +00456_19,14 +00941_48,4 +01497_52,12 +02030_232,16 +014232_242,2 +017672_174,14 +01877_0,4 +012612_4,2 +007832_149,2 +014072_34,0 +01044_141,4 +00964_111,8 +01145_178,4 +02138_66,12 +00159_11,4 +01834_64,8 +00979_67,1 +014232_134,0 +011082_25,13 +016932_18,2 +01087_260,5 +00519_86,11 +00181_54,0 +00615_158,11 +008402_39,2 +01256_95,2 +00417_54,17 +00065_296,1 +01408_237,14 +017692_220,9 +005392_198,6 +012612_78,12 +00350_238,9 +01839_152,1 +012722_34,2 +01578_78,14 +018772_181,4 +00546_56,4 +00840_251,2 +02027_51,18 +012612_46,2 +005392_290,5 +01219_18,14 +01256_36,4 +00276_117,11 +00577_116,14 +00111_83,14 +017692_267,2 +00566_77,8 +01488_55,13 +016882_174,2 +02088_27,0 +01087_96,5 +016922_147,14 +001602_23,2 +00128_13,12 +000792_118,9 +006092_44,11 +019242_167,14 +016842_46,4 +00916_195,2 +00453_14,1 +01177_96,4 +00607_22,5 +017672_79,14 +017072_244,0 +017232_18,0 +00025_67,17 +020052_178,11 +00628_61,7 +010872_203,5 +016932_81,0 +02049_175,13 +01643_69,14 +00951_115,0 +008922_3,0 +00181_91,0 +01177_87,14 +00993_271,14 +01044_261,4 +012402_94,12 +01437_185,11 +01834_252,8 +01210_271,9 +019252_177,8 +00538_8,14 +02042_85,14 +007092_39,19 +01962_115,0 +01048_8,14 +00287_39,4 +017482_26,0 +01698_4,14 +00450_157,14 +00450_118,13 +00394_3,14 +001022_264,16 +01953_141,4 +01092_199,14 +021912_11,7 +01962_54,0 +00102_20,2 +01597_88,0 +00567_132,2 +01693_176,0 +006742_140,14 +020052_270,11 +01091_155,5 +00438_37,2 +01134_158,10 +012722_188,2 +012612_76,12 +01219_76,5 +02172_152,4 +016922_30,2 +00821_130,14 +01330_6,2 +02138_64,4 +011912_181,14 +02054_116,14 +00079_132,9 +01366_64,17 +009642_258,14 +00009_48,12 +00280_134,12 +01046_42,7 +02187_264,16 +00951_131,14 +006972_36,4 +02146_177,14 +01901_70,0 +016432_46,14 +00417_275,1 +01161_142,17 +000242_67,7 +009342_21,1 +010912_115,5 +007212_142,12 +00124_175,0 +016932_7,4 +02172_247,14 +01879_40,4 +02005_52,11 +01948_104,13 +00981_19,11 +01706_124,2 +00539_51,1 +01046_70,7 +00993_30,14 +01948_8,14 +005882_3,2 +008372_180,14 +013302_293,9 +00228_1,14 +01748_3,11 +00287_161,4 +00503_95,1 +00821_135,14 +01775_160,12 +019592_80,6 +01972_113,13 +02146_64,18 +014122_44,0 +014232_161,0 +005392_128,1 +01948_51,13 +01182_47,11 +01333_13,4 +018122_51,4 +01853_35,7 +01948_125,13 +01702_6,14 +01769_203,0 +019252_180,8 +00793_253,14 +008372_36,11 +00615_205,11 +00793_262,14 +002802_235,12 +004172_216,7 +00009_277,12 +01191_167,14 +001602_18,2 +01636_120,14 +01228_271,14 +00709_241,19 +013712_67,14 +01813_72,11 +01643_61,4 +00718_100,19 +01769_118,0 +00848_133,14 +005092_222,2 +018342_2,14 +01210_229,9 +02146_150,14 +003122_11,0 +01361_229,15 +01924_129,14 +01219_8,14 +00528_48,2 +01877_276,4 +021622_93,12 +01962_119,0 +02187_292,16 +019712_172,12 +008372_35,11 +02138_42,12 +02138_110,4 +017072_138,0 +019712_54,12 +01101_74,17 +019042_146,4 +009162_265,5 +01962_39,0 +01331_79,14 +014882_52,13 +010912_220,6 +007832_165,2 +00438_7,2 +017072_195,0 +01119_92,11 +00394_1,14 +00065_170,1 +01044_284,4 +02187_148,16 +01698_0,14 +00232_128,13 +02127_168,17 +00438_39,2 +01698_41,17 +00793_127,14 +00485_47,4 +00438_119,2 +021622_130,5 +02138_24,2 +00024_32,7 +00009_120,0 +00485_88,1 +00505_100,12 +00674_81,14 +000232_144,6 +002802_94,12 +00703_123,14 +01161_105,17 +00730_128,14 +005062_55,6 +00475_75,9 +00009_278,12 +019252_63,6 +01044_199,12 +00962_72,3 +01045_230,4 +014232_18,2 +017072_46,12 +00232_37,12 +02186_79,5 +01763_145,2 +02191_79,7 +01161_201,17 +02127_190,17 +00242_294,12 +01693_54,0 +01272_228,4 +00426_74,0 +00275_52,14 +010872_111,5 +010012_276,5 +01597_65,0 +00615_200,11 +017072_133,7 +002802_56,2 +01330_198,6 +00840_138,2 +001602_295,1 +004172_250,6 +011912_180,2 +01622_24,0 +016882_46,5 +01488_221,0 +00111_78,14 +00350_127,9 +00552_95,2 +007182_48,19 +00394_60,9 +01509_153,0 +01158_68,0 +01101_17,14 +00783_18,2 +01184_49,5 +00280_95,12 +01775_7,2 +01909_87,12 +01272_58,4 +000092_82,2 +00124_85,19 +011612_219,17 +01787_0,13 +01494_26,7 +00840_36,2 +01962_15,0 +00821_26,5 +007832_66,17 +02030_125,16 +01044_258,4 +019252_82,3 +01412_26,0 +00588_34,4 +01688_36,5 +01972_20,2 +00660_266,2 +01256_86,2 +016052_263,11 +016922_4,14 +010872_243,5 +00509_226,2 +02005_145,11 +00417_127,17 +00438_100,12 +01962_60,0 +01158_17,0 +020052_168,11 +02042_124,0 +01161_21,17 +01091_159,5 +02127_178,17 +008402_93,2 +009622_31,0 +00935_98,7 +002752_71,14 +019242_93,14 +00821_59,5 +00840_213,7 +01184_6,14 +01767_136,12 +003062_32,7 +021622_33,12 +00128_231,0 +02172_73,14 +00539_44,6 +01622_97,5 +01688_187,5 +00065_280,4 +004532_149,9 +007092_167,19 +018652_27,11 +00333_110,4 +01706_166,2 +00314_153,4 +006092_84,14 +01763_267,4 +00426_159,12 +00306_13,14 +01366_165,14 +01493_75,1 +019712_107,12 +018122_39,4 +000232_135,6 +00079_277,15 +00607_15,14 +01901_90,0 +01924_108,14 +01568_79,4 +01707_94,0 +004082_189,11 +01493_23,11 +01087_124,5 +01767_275,14 +00160_26,5 +017232_113,15 +01981_56,5 +00519_56,17 +01763_92,12 +01493_295,1 +01191_31,14 +00128_197,4 +01509_215,0 +00438_283,12 +001242_113,19 +00292_2,11 +00979_43,1 +01509_11,2 +005092_140,2 +01698_13,14 +01769_16,2 +01769_133,1 +017022_2,14 +00566_152,8 +01134_210,10 +00840_157,7 +00009_229,2 +01361_97,6 +01158_2,12 +01568_19,2 +01578_35,14 +00024_62,7 +01953_298,2 +00539_171,1 +02049_139,13 +00442_103,2 +01091_3,2 +017232_75,15 +009352_85,7 +01493_14,11 +01767_108,14 +017022_37,14 +01909_211,2 +01941_161,14 +01437_56,11 +00601_51,6 +014122_14,4 +00438_273,2 +00793_249,14 +00607_94,6 +01409_36,14 +014232_45,2 +00342_59,17 +01767_22,14 +010912_20,12 +01582_69,5 +009342_7,9 +007222_98,17 +01723_145,15 +000792_94,9 +021462_116,18 +02172_162,14 +016932_3,2 +01045_198,4 +00453_208,9 +01058_50,2 +02057_82,2 +01261_7,2 +00538_57,17 +01092_133,9 +01488_201,1 +01158_22,0 +01953_96,4 +01272_119,2 +019412_178,14 +007292_5,14 +005502_114,18 +004172_50,17 +02049_134,13 +00535_66,12 +01925_131,3 +012282_71,14 +01210_27,9 +00158_200,5 +01184_66,5 +012402_237,12 +01692_5,14 +01814_30,5 +00660_90,0 +02027_147,14 +00697_87,12 +017692_87,11 +00128_67,12 +02012_38,17 +01145_56,2 +01330_36,9 +01048_60,5 +01643_30,14 +02138_215,13 +00505_211,12 +00730_129,14 +01092_160,2 +02054_151,4 +00993_97,7 +00566_96,8 +00417_106,6 +01829_53,12 +01278_72,12 +02138_54,2 +01007_267,6 +020572_125,6 +02088_7,0 +00158_279,5 +008922_16,0 +00102_37,16 +00566_48,8 +01578_180,14 +012722_30,2 +00848_9,14 +01494_51,7 +01134_22,16 +01408_159,14 +01501_57,4 +01879_75,5 +021462_26,11 +018772_258,4 +02027_100,14 +00718_24,19 +017672_34,14 +01044_275,4 +01103_36,14 +00474_126,2 +00567_150,2 +014372_62,11 +00442_20,14 +010872_211,5 +01814_264,11 +00577_20,14 +02030_111,16 +000252_81,17 +012282_257,14 +00462_137,13 +00128_149,2 +01437_163,11 +00941_40,0 +00275_67,14 +00539_3,6 +00450_54,4 +007092_150,5 +01767_86,14 +007292_140,14 +01330_185,3 +01706_11,2 +01578_73,14 +01409_196,14 +00394_117,14 +017692_37,2 +010872_125,5 +016052_224,11 +005392_167,6 +014372_274,11 +017752_99,12 +00883_64,11 +02042_93,15 +00333_39,2 +016432_56,4 +01636_26,0 +00021_135,12 +00276_139,14 +00783_144,2 +00660_64,0 +01977_204,8 +01457_5,14 +01184_39,5 +014232_76,0 +01087_94,5 +01361_75,2 +01813_131,11 +01272_126,4 +011912_167,14 +00314_276,4 +01775_110,12 +00413_195,2 +01688_115,5 +00539_231,1 +010652_90,18 +01698_17,14 +01145_125,0 +020052_177,11 +006742_14,14 +021622_51,17 +01092_104,17 +01769_124,0 +00024_56,17 +008402_2,2 +004532_259,9 +01278_114,12 +018342_128,8 +00474_14,2 +010912_40,12 +01924_201,14 +00509_208,12 +01488_226,5 +012282_97,14 +010942_52,11 +00509_45,2 +00964_69,3 +00867_34,5 +01977_195,8 +009352_17,14 +01804_68,2 +01437_135,11 +00314_89,12 +01953_288,2 +01972_0,2 +01839_151,1 +01763_189,2 +00916_263,5 +017022_85,14 +01493_44,11 +02177_71,14 +00552_76,7 +019712_48,12 +005882_103,13 +01408_295,14 +014232_259,2 +014972_38,2 +00660_125,0 +00546_181,14 +01684_8,14 +01748_86,0 +01045_103,4 +00783_165,2 +02005_123,11 +007212_244,14 +01688_132,14 +01272_2,2 +00528_172,0 +00535_13,2 +01814_179,11 +00535_226,5 +01048_55,5 +00597_65,2 +005392_16,6 +00588_22,12 +005392_29,6 +00718_121,19 +005882_30,12 +00287_295,4 +01707_180,4 +005392_280,0 +000792_51,17 +020572_37,2 +01865_105,18 +02062_151,4 +00490_139,4 +008482_4,14 +01488_24,1 +017692_19,2 +01693_185,0 +01626_6,2 +01977_271,4 +01488_83,0 +019712_254,12 +00438_261,2 +00462_126,13 +02030_129,16 +010652_24,18 +02005_249,11 +00413_22,4 +00287_14,4 +01108_75,14 +02049_117,13 +016052_147,5 +02127_289,17 +00721_88,14 +01431_123,11 +01814_35,5 +01177_71,15 +02187_90,16 +001242_92,19 +01865_15,5 +00160_166,11 +00981_72,11 +00837_180,14 +01240_94,12 +00539_19,6 +01228_12,14 +01706_215,2 +01457_29,7 +01431_193,11 +01706_14,2 +00509_66,2 +00875_67,2 +01044_214,2 +00793_112,14 +01058_118,4 +001602_9,2 +00450_130,13 +021722_166,14 +00128_93,4 +01767_91,14 +01769_290,2 +006092_38,11 +00314_288,0 +01103_83,9 +01049_56,7 +01706_91,2 +01723_222,15 +01693_72,0 +000792_28,9 +016842_43,4 +016882_280,2 +00490_142,2 +02005_224,11 +011772_22,15 +009352_78,7 +002752_35,12 +01191_199,14 +008922_9,0 +00535_215,5 +00703_129,14 +01201_117,14 +007212_173,14 +01968_58,7 +02030_185,16 +00408_91,11 +00296_56,7 +00485_156,1 +019252_299,8 +01972_269,14 +008402_58,2 +008922_73,2 +02049_8,12 +00079_263,9 +01877_57,4 +01361_90,4 +01839_90,11 +01330_91,1 +007092_118,17 +01804_1,12 +01134_291,10 +01488_129,13 +01330_90,1 +012192_39,5 +002752_134,14 +012402_83,4 +01929_38,0 +01865_16,5 +018792_78,12 +01953_177,4 +01904_27,2 +017072_105,0 +00314_74,4 +01839_139,1 +01272_49,2 +00408_159,11 +01925_150,3 +017232_158,15 +007832_29,2 +01493_16,11 +01361_57,12 +019242_117,14 +01119_110,14 +00597_59,5 +001242_58,0 +010912_3,2 +01509_141,0 +01971_99,12 +013712_26,14 +004082_209,11 +00674_97,14 +00892_88,2 +01971_87,4 +00509_188,2 +00450_131,13 +001022_101,16 +02172_43,14 +017232_134,15 +00102_45,16 +01605_228,11 +01582_48,7 +01956_76,14 +01184_36,5 +014282_62,12 +02030_24,14 +01767_219,14 +01693_6,4 +01909_49,2 +018772_1,4 +01409_171,0 +014882_240,5 +007212_157,4 +013302_13,2 +01623_107,5 +012562_105,14 +00485_52,4 +01119_48,11 +020052_98,11 +004532_226,9 +02138_246,14 +000242_23,7 +00158_82,5 +01007_177,13 +01814_225,5 +019712_294,12 +01412_90,0 +01330_42,9 +01769_209,11 +00848_41,17 +00615_221,11 +00280_153,2 +01578_32,14 +00721_123,14 +01702_88,14 +00467_10,11 +00916_101,2 +00453_128,9 +01925_55,12 +00228_202,9 +01423_179,0 +021462_17,14 +018772_222,4 +019622_64,0 +007292_185,14 +016922_12,14 +01210_208,6 +01361_265,15 +000792_290,9 +00519_18,7 +009352_22,7 +00867_170,14 +00442_195,4 +01312_16,7 +01046_28,7 +00567_80,2 +01924_143,14 +019412_91,14 +00011_61,4 +021462_91,18 +01145_211,4 +014272_75,9 +00688_80,4 +005502_129,14 +00242_134,2 +007292_193,14 +013302_32,17 +00065_13,17 +00538_55,17 +01351_143,7 +00677_28,14 +012722_198,4 +01431_30,11 +01684_9,14 +007832_218,2 +012282_234,14 +01707_68,0 +009162_145,2 +01007_212,0 +012282_269,14 +01500_14,0 +004082_114,1 +00539_118,1 +02062_55,2 +01834_190,8 +00981_116,14 +00935_107,14 +00552_43,7 +02127_216,17 +01144_125,12 +010912_26,12 +00509_15,12 +01787_62,9 +00475_136,11 +016982_115,14 +01210_180,6 +019712_8,2 +014882_35,0 +00761_181,3 +01119_95,11 +00964_217,3 +01457_28,7 +012722_199,4 +016052_295,11 +00875_87,2 +004672_39,11 +01228_111,14 +008402_121,7 +00079_138,9 +00566_167,8 +00563_90,4 +01045_46,4 +00474_295,2 +00793_120,14 +00506_100,2 +00588_30,12 +01272_215,12 +01706_1,2 +01144_13,5 +016882_64,5 +01953_35,2 +005062_26,2 +00158_223,5 +019712_89,12 +00276_25,11 +018132_99,11 +00722_36,17 +01901_97,12 +00350_203,5 +00729_9,14 +016052_186,11 +019242_130,14 +01210_273,9 +01092_230,9 +01723_92,15 +012192_132,14 +00840_233,2 +00280_143,4 +012282_244,14 +00124_69,4 +00450_167,4 +00462_108,13 +00128_269,0 +00159_18,0 +00503_232,5 +009642_216,3 +01431_205,11 +00503_82,9 +00721_90,14 +004172_105,6 +008922_76,2 +00333_183,2 +00275_84,14 +019412_18,14 +00981_55,11 +00350_149,9 +00232_80,13 +01723_285,15 +00601_117,0 +01145_293,1 +00772_10,14 +01427_77,17 +01437_99,11 +00382_64,17 +016052_129,5 +00783_130,12 +009642_27,14 +01119_50,11 +017672_180,14 +00615_124,11 +009162_245,5 +017692_90,0 +01605_206,11 +008482_20,14 +00688_38,4 +02146_128,11 +00276_86,11 +010942_40,11 +01312_0,14 +002752_33,14 +00280_24,14 +01001_299,5 +01688_75,5 +017482_13,0 +00314_116,0 +00506_77,6 +02021_99,5 +01763_249,12 +01408_233,14 +02049_224,3 +00993_233,6 +01693_174,0 +00275_97,14 +00306_91,7 +017672_232,14 +01184_92,5 +01087_218,5 +02057_130,6 +01968_12,14 +02062_43,2 +019712_58,12 +02021_32,1 +01706_181,2 +01201_40,11 +00729_104,14 +01775_83,4 +00442_203,4 +02146_111,18 +00079_142,9 +01901_112,5 +01509_297,11 +01488_248,5 +02187_73,16 +00934_15,9 +00783_204,2 +01763_208,2 +02054_5,2 +007292_155,14 +004082_0,2 +01210_243,9 +016432_27,14 +00981_48,11 +005282_103,2 +000792_185,9 +007212_222,14 +01813_83,11 +012722_119,2 +01901_43,0 +00442_115,2 +01428_71,14 +017672_275,14 +00505_33,2 +02146_27,11 +019412_130,14 +00660_165,0 +001022_26,2 +01948_38,4 +018132_107,11 +01431_69,5 +011912_141,14 +01091_181,1 +00519_53,17 +01929_106,0 +016932_236,0 +00601_62,9 +01428_80,14 +00709_264,1 +00709_126,4 +01814_118,11 +00688_3,2 +00009_244,12 +004172_274,1 +01437_193,11 +012282_157,14 +009642_275,14 +00282_44,17 +011912_169,14 +01108_52,14 +01956_57,4 +017232_224,15 +02172_153,4 +01191_153,14 +01158_59,0 +01409_94,0 +01853_63,5 +01191_156,14 +00761_187,3 +01437_119,11 +00490_22,2 +007212_77,12 +00408_197,11 +018132_77,11 +01490_15,7 +02057_91,12 +01407_17,12 +000792_203,9 +01494_80,7 +01909_168,12 +01767_79,14 +01177_76,14 +01044_112,12 +017672_27,14 +00124_124,19 +00065_127,1 +01182_30,13 +018342_256,8 +01904_85,4 +00916_30,2 +00793_187,14 +01767_228,14 +00159_21,4 +01901_164,12 +01240_281,12 +01488_65,13 +00160_253,11 +00306_79,7 +01228_186,14 +01568_234,2 +00350_282,9 +00023_93,0 +00475_156,9 +01184_129,14 +02057_139,3 +017232_164,15 +018792_38,4 +00677_38,14 +00276_15,14 +01609_4,17 +01971_9,2 +002752_22,14 +01972_19,2 +007212_56,2 +010912_178,11 +01605_209,11 +02172_260,14 +01191_148,14 +016982_123,14 +018342_87,8 +00438_243,2 +007832_77,17 +00535_80,12 +01228_125,14 +02162_2,14 +00528_156,0 +019252_145,3 +001242_4,4 +01366_10,14 +000252_40,17 +00442_73,2 +00505_126,12 +018772_19,4 +00503_1,6 +02030_115,16 +01578_77,14 +00333_109,4 +00408_226,11 +00282_93,5 +02030_226,16 +01219_140,14 +01256_89,4 +00124_159,19 +01058_73,2 +00761_32,14 +01330_156,18 +00935_49,7 +01769_238,9 +001022_199,16 +00350_152,9 +00535_94,2 +01408_214,14 +000242_45,7 +01924_154,14 +01048_63,5 +01182_11,14 +00588_20,12 +01437_109,11 +00730_3,14 +01201_34,11 +01748_34,0 +01431_117,11 +00314_247,4 +008922_83,2 +00417_200,17 +01953_266,12 +01145_55,2 +00567_19,2 +01901_138,0 +00158_116,11 +020052_291,11 +018342_291,8 +00175_3,2 +01948_26,14 +00442_261,4 +01509_261,11 +01981_122,0 +012562_20,4 +01408_190,14 +00261_4,4 +01144_173,2 +00011_83,12 +02162_9,14 +021722_101,12 +001022_82,16 +00607_89,19 +007092_194,19 +01184_96,5 +009642_95,8 +016052_214,11 +000792_47,15 +01787_33,1 +00475_39,9 +017072_298,7 +01643_23,12 +01814_161,11 +00442_21,14 +008372_60,11 +00535_299,2 +018772_285,4 +01769_270,2 +00160_17,2 +02138_239,4 +00282_22,7 +002752_121,12 +01925_59,6 +00475_212,1 +00538_4,14 +00916_83,2 +00394_33,1 +00607_18,14 +00681_80,14 +00535_242,6 +00588_146,13 +001022_81,16 +00453_251,9 +00181_61,0 +01706_129,2 +01261_8,2 +01909_201,12 +00485_240,1 +008482_32,17 +02149_24,17 +00729_57,14 +015972_24,0 +01065_80,18 +00867_134,5 +016932_259,0 +01490_21,7 +00333_119,2 +01925_52,12 +01065_49,18 +004082_140,11 +01834_262,8 +00124_252,0 +010872_172,5 +020052_77,11 +00840_45,2 +014882_34,0 +01814_117,11 +01261_80,12 +01597_46,0 +00546_144,3 +00535_282,2 +01412_63,0 +01769_123,0 +00079_172,9 +012722_176,12 +01423_110,0 +021722_78,14 +014272_63,17 +01278_218,2 +00228_267,11 +004532_44,9 +01361_61,12 +01909_4,2 +01165_126,14 +00282_68,11 +01693_18,2 +000792_285,9 +012722_149,2 +008372_73,11 +01769_130,11 +01839_161,1 +010912_70,1 +00158_161,5 +00287_249,15 +01953_13,2 +01007_259,6 +00011_43,1 +00456_170,12 +00024_48,17 +01228_220,14 +01191_26,14 +01366_104,17 +00519_119,11 +018132_127,11 +020052_203,11 +00312_33,0 +01201_3,14 +00462_61,15 +014072_3,4 +01814_274,11 +00761_74,14 +00333_15,2 +02094_160,2 +010942_81,11 +01092_81,17 +018342_279,8 +00456_143,14 +00867_200,14 +01493_149,1 +00228_53,11 +012562_29,4 +017672_262,14 +00490_279,5 +01692_112,1 +01953_126,4 +013302_143,9 +00567_76,2 +01103_25,9 +01201_51,11 +009162_52,2 +00160_27,5 +01597_112,14 +00474_261,2 +00228_59,11 +01568_226,2 +01839_29,14 +01361_59,12 +007212_71,12 +007092_80,19 +009512_49,0 +00158_209,5 +00333_171,2 +004672_10,11 +00390_82,5 +00314_183,0 +01941_51,14 +00485_77,1 +00009_3,4 +00426_136,0 +01134_121,10 +01877_179,4 +01909_90,12 +000792_298,9 +006092_47,11 +01437_4,11 +01692_80,1 +020572_76,2 +00607_139,14 +01971_90,12 +019252_62,6 +01119_102,5 +00730_31,17 +00175_50,17 +00722_32,17 +007182_82,19 +007222_35,17 +012402_89,2 +018342_139,8 +00350_78,5 +00450_60,4 +00697_46,2 +004082_133,13 +00314_194,0 +00438_63,2 +008402_282,2 +018342_22,14 +00916_243,5 +00964_146,8 +00160_5,2 +00539_257,1 +005282_74,2 +009622_79,3 +009512_96,0 +01044_19,4 +00474_223,2 +02049_236,3 +01814_112,11 +01351_164,14 +00314_135,0 +01351_103,7 +00722_23,17 +016052_141,5 +01058_84,4 +01007_217,0 +01929_12,14 +00453_29,9 +02049_29,6 +008372_78,11 +00276_71,11 +013302_170,3 +01723_91,15 +01408_252,14 +01693_136,0 +01909_51,2 +00747_56,4 +01977_181,8 +01501_23,4 +01366_50,17 +01101_158,14 +01956_22,13 +01623_91,11 +02162_77,17 +018342_5,14 +016432_3,14 +00951_132,14 +01371_70,14 +01500_19,0 +00009_199,12 +01702_3,14 +00981_11,5 +00722_80,17 +00442_182,4 +01408_224,14 +00962_74,3 +01853_41,7 +012192_80,5 +016052_52,2 +01901_135,0 +012562_28,4 +00709_61,19 +00588_85,13 +012722_273,2 +007212_16,14 +00474_268,2 +01409_117,0 +00935_86,7 +01094_20,2 +005392_130,1 +007832_58,2 +00314_150,4 +01490_91,14 +014372_247,11 +02138_273,14 +00883_67,11 +016982_18,14 +00539_15,6 +001602_299,13 +01909_179,2 +02027_67,14 +02187_149,16 +01058_22,2 +01948_158,13 +00535_230,6 +01161_74,17 +01091_77,1 +017482_8,11 +006742_92,14 +01145_217,4 +018652_63,18 +010872_270,5 +005392_82,1 +00287_273,4 +017072_150,4 +019252_155,3 +019622_84,0 +004172_14,14 +005092_201,2 +005062_6,2 +005882_152,13 +00783_242,5 +00503_45,6 +01972_55,3 +007762_74,14 +012282_267,14 +00730_4,14 +010012_109,5 +004672_29,11 +00079_181,9 +02012_3,14 +00011_107,12 +02054_189,4 +01763_140,2 +00892_0,0 +004532_94,9 +01904_51,12 +01210_204,6 +00993_82,7 +001242_204,0 +019412_266,14 +01087_150,5 +00821_126,14 +00729_260,14 +01488_216,0 +007212_183,14 +01366_142,5 +007762_26,14 +02177_44,14 +00964_190,8 +01688_83,5 +019412_126,14 +00783_126,6 +01361_34,2 +01161_161,17 +001022_255,16 +00566_169,8 +01962_49,0 +01877_43,4 +012402_187,4 +019042_113,12 +00677_74,14 +01045_131,4 +001022_253,16 +012402_108,12 +00840_291,2 +00729_200,14 +00232_85,13 +01145_180,4 +01688_63,5 +01707_39,2 +002802_233,12 +008252_11,12 +00821_22,2 +00242_76,4 +00475_102,9 +01834_277,8 +00462_177,14 +00509_138,12 +00485_104,1 +019412_106,14 +01158_113,4 +01490_78,7 +007292_111,14 +00821_81,5 +014122_94,0 +01804_6,12 +01330_140,9 +01981_93,5 +010872_240,5 +00426_78,0 +00023_8,2 +02138_261,14 +01941_189,14 +012402_62,12 +004532_281,9 +01834_261,8 +00453_220,9 +016982_87,17 +001022_16,2 +00025_19,17 +01001_136,5 +012192_7,14 +01494_79,7 +01261_2,2 +018122_14,2 +00848_140,14 +006972_35,4 +01769_147,9 +00023_146,6 +017672_235,14 +019242_183,14 +00485_188,1 +01101_130,0 +01427_12,14 +01578_256,14 +018792_15,2 +00674_59,14 +01182_58,13 +00867_16,14 +00438_260,2 +00840_57,2 +01692_87,1 +01769_5,2 +00160_180,1 +01049_50,7 +02172_103,12 +00079_139,9 +01582_26,17 +00993_247,14 +00567_121,2 +01408_172,14 +00160_287,13 +016882_240,5 +002802_174,12 +004172_61,17 +005502_31,18 +01971_198,12 +02030_188,16 +00660_249,2 +020052_289,11 +01568_157,2 +007832_54,2 +01882_67,5 +00065_57,9 +00567_237,2 +01769_68,9 +00232_61,13 +00475_289,9 +017692_260,2 +01925_172,8 +019592_40,6 +01767_15,14 +01144_84,6 +00615_144,11 +00021_120,2 +00280_61,12 +00709_142,19 +01366_72,17 +019712_214,2 +016882_23,5 +00747_22,9 +00462_117,13 +00964_255,14 +01240_24,2 +00102_286,16 +00615_219,11 +01409_33,4 +01278_199,2 +00783_239,5 +019042_97,4 +02177_8,4 +000792_204,9 +011612_161,17 +01158_73,4 +01158_53,0 +01423_232,12 +00730_41,18 +018392_25,14 +00261_54,12 +00474_176,2 +010872_123,5 +01333_42,0 +00867_51,5 +01636_142,14 +00065_294,1 +02149_3,17 +005882_15,4 +01971_276,12 +009162_81,2 +01977_288,14 +00456_122,14 +01834_287,8 +02005_178,11 +01144_50,9 +01767_180,14 +00181_47,0 +02172_91,14 +02057_33,2 +00609_3,14 +01007_122,0 +01981_123,0 +006742_128,14 +02049_76,3 +00840_173,7 +007292_183,2 +01161_130,17 +01045_143,4 +007832_157,2 +01748_90,0 +02049_90,3 +00550_0,14 +017072_55,0 +018392_114,11 +017752_93,4 +00025_62,17 +00282_17,7 +01834_211,8 +017232_257,15 +01941_295,14 +017232_180,15 +00535_55,2 +019042_34,2 +018342_263,8 +00474_138,2 +00709_254,19 +016932_183,0 +00709_271,9 +01007_218,0 +01366_20,14 +01972_173,13 +00709_294,12 +02172_90,14 +00485_21,2 +007832_93,17 +00628_4,14 +00128_156,2 +02012_71,17 +010912_17,2 +01409_143,0 +01045_29,2 +00065_263,12 +008402_88,2 +017072_189,0 +00747_2,7 +005092_44,2 +00993_33,14 +012282_101,14 +00394_91,1 +00021_102,12 +00588_109,13 +008402_54,2 +01437_229,11 +00837_133,11 +00065_89,11 +01839_66,11 +00228_15,14 +010652_48,18 +02049_78,3 +00951_7,14 +019412_29,14 +01431_135,11 +014272_43,9 +01312_98,14 +00490_40,2 +01351_19,2 +019592_21,6 +00023_109,5 +019622_86,0 +01578_229,14 +016052_121,5 +01981_74,5 +008402_102,2 +02049_157,13 +01045_129,4 +005282_121,2 +018772_82,4 +01145_137,12 +010012_181,5 +01693_87,0 +00438_234,2 +009622_55,3 +014882_107,0 +00660_83,0 +019042_80,12 +02012_57,7 +009162_57,2 +01119_79,11 +02186_92,5 +01706_139,2 +01509_241,11 +01278_105,12 +01877_274,4 +021622_112,1 +01693_111,0 +01437_235,11 +015972_69,0 +018392_107,11 +00718_9,2 +01879_109,2 +01698_73,17 +00474_210,2 +00408_145,11 +000092_76,0 +014882_49,0 +00539_202,6 +01144_152,2 +00314_226,12 +02094_88,4 +00242_118,12 +01723_291,15 +006972_67,0 +00660_102,0 +00280_53,2 +00041_154,7 +018392_35,2 +006742_26,14 +010012_180,5 +00883_10,11 +011912_110,7 +01971_253,12 +01707_295,7 +000242_15,2 +005882_78,13 +00674_6,14 +00962_64,3 +01283_61,2 +010912_155,5 +01058_132,2 +01409_120,0 +010652_73,18 +01941_216,14 +01839_125,1 +011612_191,17 +01956_2,14 +012192_33,5 +00993_176,7 +00916_207,2 +02005_148,11 +01925_2,14 +01972_112,13 +010942_84,11 +016432_6,14 +00964_275,14 +013302_6,2 +02042_94,15 +01182_60,0 +001242_131,19 +008372_126,11 +012282_18,14 +01049_23,7 +01748_1,11 +004172_178,6 +00128_14,12 +01865_42,18 +00729_23,14 +012282_4,14 +00539_196,1 +01723_2,4 +01312_15,7 +01001_149,5 +010872_44,14 +00160_65,1 +01909_178,2 +00503_5,6 +01605_159,11 +01272_249,12 +01763_248,12 +021722_224,14 +007212_197,14 +019592_43,6 +004172_120,17 +00413_220,14 +02049_253,3 +01597_63,0 +01693_39,2 +00729_212,14 +003062_41,7 +01941_60,14 +007832_166,2 +014232_56,2 +01605_253,11 +014282_9,14 +01812_110,2 +02049_241,3 +007292_49,14 +011612_17,17 +01134_48,10 +01134_189,10 +00979_96,1 +018772_224,4 +01191_158,14 +01092_177,17 +01007_200,0 +00506_9,2 +00158_110,11 +004532_0,0 +00413_89,0 +01971_227,2 +000252_49,17 +014232_151,0 +00546_141,3 +00730_77,18 +02186_35,5 +00609_32,11 +01909_40,2 +019242_210,14 +01261_3,2 +00837_61,11 +006092_35,11 +01494_31,7 +01058_130,2 +009642_0,14 +008402_56,2 +01971_17,2 +00228_170,9 +019712_16,2 +018342_223,8 +01177_104,14 +00729_215,14 +00023_160,5 +00964_187,8 +007092_65,19 +00677_110,14 +00111_58,17 +00021_106,12 +01971_20,2 +00474_245,2 +016922_25,2 +01929_98,0 +01924_233,14 +01409_123,0 +000092_261,2 +01272_233,2 +003062_28,7 +01972_195,3 +00280_227,14 +00088_36,5 +001022_178,16 +021772_64,12 +00242_154,12 +01312_72,7 +00729_243,14 +007832_273,5 +00566_239,8 +00721_168,12 +00964_106,8 +00503_35,6 +000232_99,0 +017752_25,2 +00848_7,14 +012402_6,2 +017692_74,9 +019412_149,14 +00916_244,5 +014232_240,2 +01261_27,2 +00840_59,2 +00601_78,1 +00506_83,6 +01693_201,0 +01210_234,9 +01488_97,13 +00275_91,12 +01509_56,0 +00021_123,2 +02127_135,17 +01501_86,14 +01448_88,6 +00158_182,5 +00261_2,4 +00350_68,2 +02030_170,16 +010872_248,5 +004172_72,17 +004532_241,9 +00597_82,14 +010912_190,16 +01693_7,4 +016432_0,14 +01609_23,17 +01423_97,0 +01605_189,11 +017072_264,7 +01201_91,5 +00350_143,5 +000092_17,12 +000242_75,7 +017232_66,15 +01977_175,8 +012562_39,4 +012722_123,2 +011612_115,17 +00394_9,14 +01698_22,17 +01609_32,17 +016932_62,0 +00442_28,14 +02005_165,11 +00314_251,0 +01834_203,8 +01977_189,8 +004172_273,1 +005392_235,1 +01968_45,7 +00292_48,11 +00232_5,14 +00350_19,14 +005392_100,1 +01091_27,12 +021722_230,14 +01813_156,14 +01877_279,4 +021462_163,14 +00467_36,11 +01488_230,5 +00783_166,2 +00009_121,0 +014232_170,0 +001242_1,4 +01962_32,0 +00021_8,5 +02042_63,15 +02187_172,16 +004532_144,9 +008482_129,17 +007222_77,17 +00503_175,5 +02054_125,4 +01962_72,0 +016932_44,5 +004082_139,11 +00102_139,16 +017692_130,11 +00314_123,4 +01145_7,2 +01091_247,2 +00552_1,2 +00964_256,14 +01191_66,7 +00287_208,4 +01787_52,9 +00503_226,5 +019412_146,14 +019242_13,14 +01488_202,1 +00065_108,1 +02186_6,14 +01272_183,4 +02049_211,13 +01091_222,6 +01769_36,2 +004532_222,9 +00474_270,2 +016982_5,14 +01956_51,15 +020572_154,3 +00503_73,6 +00660_12,14 +00282_1,14 +00333_21,2 +007212_207,14 +01331_77,14 +00475_97,9 +00158_277,5 +01240_190,4 +019412_208,12 +017232_254,15 +000792_296,9 +018342_15,14 +000092_69,12 +00292_23,1 +01767_109,14 +01409_126,0 +00462_196,14 +00628_38,7 +017692_66,9 +017022_62,14 +01813_40,11 +014372_269,11 +01748_69,0 +01767_48,14 +000232_36,4 +01763_253,12 +01488_52,13 +01509_15,2 +01877_218,4 +01361_235,15 +00505_121,12 +01118_87,14 +00848_111,17 +02062_58,2 +01769_265,2 +01804_80,12 +01929_50,0 +004172_183,17 +01948_63,13 +005092_31,2 +014272_30,17 +009622_33,0 +02030_132,16 +00025_5,17 +01087_191,5 +017692_212,1 +01853_122,14 +01948_9,14 +01278_207,2 +00509_59,12 +005062_30,2 +00475_181,1 +00065_252,12 +00821_140,14 +00296_100,14 +01007_155,13 +00426_109,0 +005502_90,18 +00677_18,14 +00506_42,2 +01971_126,2 +00964_200,8 +00729_60,14 +008372_150,11 +013302_104,6 +009642_48,8 +01865_106,18 +008372_48,11 +00709_132,12 +00892_28,0 +008832_54,11 +01409_84,0 +01001_248,5 +00390_91,11 +016052_66,5 +00964_185,8 +00158_23,14 +016982_98,17 +01092_87,17 +00837_125,11 +00159_49,2 +019412_227,14 +01165_128,14 +001242_224,0 +01094_32,11 +00394_19,4 +01210_99,6 +01134_82,10 +00709_220,19 +01493_156,1 +01688_147,14 +00979_29,1 +007212_171,12 +00761_143,14 +005502_5,14 +013302_298,18 +007222_30,17 +00951_0,14 +017752_3,2 +02054_276,12 +02030_194,16 +016932_240,0 +01240_141,12 +009622_34,4 +00160_114,11 +01437_291,11 +00783_84,17 +000792_250,9 +01351_51,7 +01834_82,8 +019252_84,3 +01091_81,16 +00768_16,14 +00993_124,7 +00242_159,2 +01853_51,17 +01219_6,14 +019042_52,12 +01058_122,12 +004172_86,17 +01767_253,14 +02146_18,14 +00703_89,11 +020572_168,3 +00490_283,5 +00688_89,4 +00577_89,7 +00485_228,1 +014882_16,13 +014882_54,13 +01437_155,11 +007832_109,6 +010872_124,5 +017232_63,15 +020572_23,2 +00228_50,11 +01763_112,2 +012282_283,14 +004172_107,6 +00848_96,17 +00280_71,12 +014232_39,2 +01278_115,12 +01688_237,5 +02127_81,17 +010872_81,5 +009162_268,5 +00342_92,14 +00041_84,12 +00840_74,2 +01201_1,14 +01240_268,2 +01272_170,2 +00242_139,2 +00550_40,18 +00088_80,2 +01361_267,15 +01045_80,4 +002752_133,14 +02005_87,11 +01428_67,14 +00390_66,5 +01427_98,17 +006742_108,14 +01094_25,5 +00761_108,14 +00160_137,11 +01834_199,8 +01692_105,1 +00628_65,7 +00566_267,8 +00578_69,17 +00709_267,1 +00867_139,5 +017232_82,15 +00615_51,11 +00342_35,17 +01959_19,6 +00124_199,0 +00709_120,17 +003122_42,0 +008372_96,11 +004532_124,9 +01431_208,0 +01834_283,8 +02057_137,3 +02172_46,14 +00160_225,11 +01977_156,8 +01351_76,7 +01929_111,0 +02138_183,13 +01427_107,9 +00825_39,2 +01045_42,2 +00841_8,14 +00102_66,16 +001022_187,16 +01707_26,2 +01578_47,14 +00417_197,17 +01767_122,14 +00333_118,2 +00840_266,2 +01956_70,14 +014122_80,0 +00181_113,0 +00242_287,12 +01839_120,11 +009622_51,13 +01941_22,14 +017672_199,14 +01119_20,11 +01044_256,4 +00287_6,4 +01044_249,4 +009512_58,0 +012282_112,14 +00964_281,14 +00438_104,2 +00550_81,18 +00128_133,2 +00175_5,2 +01044_171,12 +01925_238,8 +01228_191,14 +01145_272,4 +017072_16,2 +01101_19,14 +00474_58,2 +00697_2,2 +011082_81,14 +009162_11,2 +00413_152,0 +00467_12,11 +02094_6,2 +017232_274,15 +00453_36,9 +01448_55,3 +01092_234,9 +00821_45,5 +00793_41,14 +00720_28,0 +02054_29,2 +00408_172,11 +01804_58,12 +01144_17,5 +02138_235,4 +00768_91,14 +007292_65,14 +01134_172,10 +01144_107,4 +00793_61,14 +012402_161,2 +02054_176,2 +01924_191,14 +00390_56,5 +00408_277,11 +008402_95,2 +001242_34,4 +00916_128,2 +00772_21,7 +01145_74,4 +00175_16,4 +00342_82,17 +01165_79,5 +00883_50,11 +02186_103,14 +00979_139,14 +00567_206,2 +007182_26,19 +019712_94,12 +01693_213,0 +01490_41,7 +005062_34,2 +00709_169,19 +00079_130,9 +02028_5,4 +017672_28,14 +00242_222,12 +02187_186,16 +00475_256,9 +01092_179,17 +00474_145,2 +009352_60,7 +01048_72,5 +014372_88,11 +01723_279,15 +00993_272,14 +00821_52,5 +013712_28,14 +00821_141,14 +01272_61,12 +00124_56,0 +00660_63,0 +00505_156,14 +01509_32,2 +01877_210,4 +02187_63,16 +00935_103,7 +00160_66,1 +01330_149,9 +017692_255,0 +01161_92,17 +001022_39,16 +00490_280,5 +00506_69,6 +011612_50,17 +009342_31,1 +02005_118,11 +02138_181,13 +01065_104,5 +01437_79,11 +00607_63,6 +00721_172,12 +01929_35,0 +01909_129,12 +021772_12,4 +02146_170,14 +00601_41,7 +00102_53,16 +01541_61,5 +00567_7,2 +01490_71,7 +01210_219,9 +01210_255,9 +00509_36,2 +012402_294,4 +01698_104,14 +019242_188,14 +01707_172,4 +00023_161,5 +02138_100,12 +02057_84,2 +01941_266,14 +00867_87,17 +00840_245,2 +021722_10,14 +01184_94,5 +01361_202,3 +019042_115,12 +02187_263,16 +008922_96,2 +014272_28,17 +008482_3,14 +01371_27,14 +00677_83,14 +017672_243,14 +01134_128,10 +01929_152,0 +011082_8,14 +019412_43,14 +000232_30,2 +00601_72,9 +00505_164,12 +012722_127,4 +016932_218,0 +00041_37,12 +00242_281,12 +002752_44,14 +00450_153,12 +01597_69,0 +01693_127,0 +01427_41,9 +01007_229,0 +00350_227,5 +00350_161,9 +014372_239,11 +00772_64,7 +01145_287,0 +00485_154,1 +01007_156,13 +00382_81,9 +01412_20,0 +00474_113,2 +021622_99,6 +01767_205,14 +00729_42,14 +014272_87,4 +004172_197,17 +019712_250,12 +01981_110,5 +008402_1,2 +00729_178,14 +005882_174,4 +01108_31,15 +01924_189,14 +01145_147,4 +00993_65,6 +014882_61,13 +011612_131,17 +00160_162,1 +01001_294,5 +021622_38,12 +007762_40,4 +00505_218,12 +014372_61,11 +005062_25,2 +01065_25,18 +00261_0,12 +012562_33,12 +01924_46,14 +01707_287,7 +01882_21,5 +02012_100,17 +00462_187,14 +00761_106,14 +00721_48,14 +00519_51,17 +01272_248,12 +01767_159,14 +01144_118,2 +02012_19,2 +01161_278,17 +009622_85,3 +01428_29,14 +01161_126,17 +00242_92,12 +00674_109,14 +01494_2,14 +01879_20,2 +00841_74,14 +01191_22,2 +01769_86,11 +00793_175,14 +01839_15,2 +01767_173,14 +01007_56,0 +01901_10,14 +01684_55,14 +020572_5,2 +001022_261,16 +007292_22,14 +02030_52,14 +01094_105,14 +01971_244,12 +019042_137,12 +00450_149,12 +00261_21,12 +01626_9,2 +01044_73,12 +00867_108,0 +00601_126,14 +00462_125,13 +017232_289,15 +000242_4,2 +01904_52,12 +00456_57,12 +00535_293,2 +00417_224,7 +000792_110,15 +019712_180,2 +004672_2,11 +01971_283,12 +008832_53,11 +01977_208,8 +01723_231,15 +01834_103,8 +00825_18,2 +00503_157,9 +01622_121,14 +01605_115,5 +001242_173,0 +01408_265,14 +00287_45,15 +020572_202,3 +01431_13,11 +017072_115,1 +019622_133,0 +01959_80,6 +02021_28,1 +01953_209,4 +00607_3,14 +019252_10,14 +00783_226,5 +02138_158,13 +00776_48,12 +00503_237,1 +02062_150,4 +00021_133,12 +01948_13,14 +00538_44,14 +019412_135,14 +01361_149,3 +01924_0,14 +016842_61,14 +00342_104,14 +01007_285,6 +016052_225,11 +00709_113,12 +01065_68,18 +01092_166,5 +01144_38,5 +001602_113,11 +00964_286,14 +01001_68,12 +02049_64,3 +01437_19,11 +01769_106,2 +019412_76,14 +00041_115,7 +00607_45,6 +01706_132,2 +01692_21,2 +00916_209,2 +01045_111,4 +009622_36,4 +00287_259,4 +00342_19,17 +00703_118,14 +00009_65,12 +00160_155,11 +01904_146,4 +011612_99,17 +007832_12,2 +01904_161,12 +02088_3,0 +00546_92,3 +01706_77,2 +00242_175,2 +016982_70,17 +00578_6,14 +01702_29,4 +000252_83,17 +00993_85,7 +00793_36,14 +02049_176,13 +02094_49,4 +02030_279,16 +01087_28,14 +012282_31,14 +01929_162,0 +01814_75,11 +01698_92,17 +01626_41,7 +008482_23,17 +01371_19,4 +005392_229,13 +016932_135,0 +01707_240,0 +00709_230,19 +012402_224,4 +01877_239,4 +01981_139,14 +01358_7,1 +00505_23,14 +01698_69,17 +012402_32,2 +01901_77,5 +01044_201,12 +01941_69,14 +003062_31,7 +018132_64,11 +01091_98,0 +011612_137,17 +01210_117,6 +00490_28,2 +01272_246,12 +00709_141,5 +00158_206,5 +01977_292,14 +01144_68,8 +01087_174,5 +00993_215,6 +00892_6,0 +01312_22,7 +01191_139,2 +00597_42,5 +020052_143,11 +01706_33,2 +012282_225,14 +01049_52,7 +021622_89,12 +00408_8,2 +017022_23,4 +01578_138,14 +01879_16,2 +00306_99,14 +00021_66,3 +00176_4,1 +01929_53,0 +00181_105,0 +01925_213,8 +01118_34,7 +01488_162,13 +02149_45,17 +01272_116,2 +02191_121,14 +00382_113,19 +01428_27,14 +01775_10,2 +01693_282,0 +012402_33,2 +01256_43,4 +00296_69,7 +01358_22,1 +00528_72,2 +00722_53,4 +00408_182,11 +01971_249,12 +018342_265,8 +000232_84,4 +00535_285,2 +01361_262,15 +01804_38,12 +00509_58,12 +00821_40,5 +01972_39,6 +017752_119,2 +00964_63,3 +01490_75,7 +00722_18,17 +020572_211,3 +01953_2,2 +021622_52,17 +019592_19,6 +02049_166,13 +01971_137,12 +01330_115,1 +01361_2,0 +01118_2,14 +01494_85,14 +009642_121,8 +01834_244,8 +00228_42,11 +007292_225,14 +012562_16,14 +00721_169,12 +01763_89,12 +01962_134,0 +00111_14,14 +00697_73,4 +00306_35,7 +01769_99,2 +00021_160,12 +00158_195,5 +00128_26,12 +01103_10,12 +01882_17,5 +01065_52,18 +00160_164,11 +012722_161,12 +01626_140,2 +00261_43,2 +01904_31,2 +01971_56,12 +000092_103,12 +00674_74,14 +01493_262,1 +01941_203,14 +005062_8,2 +00535_204,0 +00490_245,5 +00519_52,17 +00181_125,0 +00951_30,0 +01763_235,2 +00041_2,2 +009642_231,3 +005392_91,1 +010012_12,2 +007832_213,2 +00539_265,1 +01748_81,0 +01812_55,4 +01158_96,12 +01001_230,5 +02030_113,16 +00382_117,19 +00023_1,2 +016432_105,14 +01119_10,14 +01219_66,5 +02005_22,11 +019042_94,2 +01408_73,14 +018342_206,8 +02042_105,15 +009642_211,3 +00566_198,8 +004082_291,11 +014372_105,11 +01493_41,11 +00509_8,2 +005092_202,2 +007092_92,5 +00394_128,14 +00025_66,17 +016052_247,11 +00242_66,4 +01775_175,12 +008372_23,11 +00981_93,11 +021722_253,14 +01108_47,0 +019712_242,12 +01423_116,0 +01044_279,4 +001242_140,19 +00438_279,2 +010872_95,5 +02057_202,3 +00964_6,14 +01261_82,2 +01428_38,12 +01941_54,14 +00875_77,2 +017692_274,2 +021622_60,7 +00821_4,14 +01500_41,0 +01161_239,17 +012722_272,2 +01977_135,8 +004082_286,11 +000092_178,2 +02146_22,5 +01707_252,7 +007762_97,14 +00538_52,12 +00730_87,18 +009162_271,5 +00021_32,4 +02138_208,13 +017232_268,15 +00509_37,2 +019712_212,2 +00350_199,5 +00993_140,7 +014372_48,11 +00287_251,15 +005282_95,2 +01941_247,14 +00128_148,2 +01814_219,5 +00793_77,14 +011612_281,17 +00490_146,2 +01351_129,7 +017072_42,12 +020052_262,11 +010872_15,14 +01813_12,11 +01493_0,11 +017752_75,2 +00312_35,0 +01407_7,2 +002802_183,4 +00660_23,14 +00390_108,14 +010012_291,5 +02172_54,14 +01925_133,3 +01431_90,11 +021912_121,14 +01001_268,5 +01626_7,2 +00280_110,4 +02127_33,2 +021462_153,14 +01094_34,11 +01191_86,7 +011612_25,17 +00825_13,4 +00453_67,9 +00503_50,6 +017692_26,2 +001242_36,4 +012282_198,14 +010942_24,5 +01706_69,2 +004532_245,9 +00453_201,9 +01707_293,7 +02049_239,3 +011612_101,17 +00709_96,11 +009622_7,0 +009642_54,3 +000092_171,0 +00009_15,12 +01692_134,5 +00390_45,5 +02187_227,16 +020052_258,11 +004082_262,13 +008402_235,2 +01622_111,4 +010942_76,11 +014282_20,4 +00276_125,14 +01509_150,0 +007182_78,19 +01568_194,2 +01643_45,14 +01814_188,11 +01134_225,10 +00793_0,14 +016932_276,0 +00417_277,1 +006742_142,14 +012722_57,4 +00730_117,14 +01333_5,0 +014972_50,12 +00023_22,2 +01723_103,15 +00023_108,5 +00314_50,2 +005062_125,2 +01272_149,2 +00506_105,2 +00660_292,2 +01605_55,5 +01877_101,4 +01723_276,15 +01981_91,5 +01331_53,17 +01763_276,2 +00102_140,16 +00394_64,1 +01448_21,14 +02146_173,14 +000242_34,7 +00519_43,17 +016932_127,0 +01605_165,11 +00609_10,14 +02094_0,2 +004082_285,11 +00228_194,9 +017072_116,1 +00761_278,3 +018342_216,8 +00535_104,12 +000232_188,2 +019712_7,2 +01929_48,0 +008482_123,17 +001022_72,16 +000792_129,9 +02138_142,13 +01924_27,14 +01228_134,14 +00981_108,2 +01767_10,14 +00394_7,14 +004532_174,1 +011912_35,14 +007092_100,11 +00158_136,5 +016982_110,14 +00160_181,11 +00709_45,19 +01623_40,5 +00538_96,17 +00718_19,19 +016922_24,2 +00160_112,1 +00578_43,17 +017232_131,15 +000092_280,12 +02012_26,17 +010872_45,14 +01834_198,8 +000092_29,7 +00079_265,1 +017672_272,14 +00485_118,1 +01971_25,2 +01177_101,4 +00275_150,14 +01007_83,0 +002752_51,14 +00408_196,11 +002802_177,4 +02162_79,17 +007212_117,4 +00159_52,2 +011612_85,17 +011912_151,14 +01763_239,2 +01371_22,14 +01145_25,2 +00306_6,14 +01684_49,4 +00688_28,2 +001602_124,11 +01091_46,6 +01261_15,2 +003122_15,13 +018342_244,8 +00535_1,2 +00342_105,14 +01981_81,5 +014272_18,12 +01706_187,2 +00438_218,12 +002752_92,12 +020052_283,11 +00566_134,8 +016052_256,11 +019252_53,12 +00111_67,17 +012722_256,12 +00228_265,11 +018772_157,4 +02187_157,16 +01924_245,14 +01497_0,5 +01787_26,1 +01351_108,7 +01351_90,7 +012402_125,2 +014372_194,11 +01058_18,2 +01981_42,5 +01158_0,12 +01925_221,8 +018792_61,4 +00296_66,7 +020052_214,11 +01108_0,14 +00535_38,2 +00021_13,5 +01684_48,4 +01568_140,12 +01493_250,1 +02054_42,2 +010872_150,5 +02149_34,17 +008832_64,11 +00539_26,6 +00528_84,2 +01769_12,2 +00718_118,19 +017672_256,14 +00160_282,13 +002802_69,12 +01457_38,7 +01330_129,9 +01763_127,12 +02138_270,14 +00009_178,2 +00228_80,17 +013302_123,18 +014122_4,4 +00768_99,14 +016932_188,0 +019592_35,6 +00442_265,4 +00124_12,4 +008402_243,2 +01087_265,5 +011772_3,14 +01977_0,14 +00453_231,9 +01775_15,2 +01948_85,13 +002802_201,12 +018772_40,4 +01941_32,14 +00552_46,7 +01272_89,2 +01723_175,15 +00588_131,13 +00160_168,11 +00065_228,12 +01763_293,2 +01707_253,7 +012282_171,14 +01087_77,5 +010652_111,14 +01707_170,0 +01904_61,2 +010912_108,0 +01977_39,2 +016882_1,5 +01261_59,2 +006742_22,14 +004172_228,7 +01509_152,0 +019712_139,12 +02187_135,16 +021722_107,12 +01007_257,0 +00453_35,9 +00261_52,0 +012192_111,5 +00485_97,1 +00916_125,2 +01698_55,17 +019252_40,14 +001112_39,17 +01457_77,14 +00023_165,2 +01568_228,2 +01763_51,12 +00837_42,11 +01437_167,11 +00228_112,5 +00578_72,17 +00916_189,2 +01044_191,4 +00577_68,7 +00934_10,9 +00539_99,1 +017672_149,14 +011912_133,2 +008922_47,0 +019712_85,4 +00563_72,9 +02042_75,14 +001022_146,16 +002752_50,14 +014282_7,14 +01044_154,12 +01972_122,13 +00438_79,2 +00821_102,5 +00729_137,14 +00962_87,3 +01775_25,2 +00102_200,16 +00175_30,13 +001022_294,16 +01853_124,14 +01312_47,7 +019592_0,6 +020572_77,2 +021722_184,14 +014972_8,0 +01972_155,3 +01092_53,17 +007182_18,19 +00474_182,2 +01748_59,0 +01201_11,14 +00485_20,2 +021722_70,12 +02030_210,16 +01437_283,11 +001112_59,17 +00793_183,14 +014232_214,0 +01948_21,14 +00772_50,7 +004082_134,13 +016882_11,5 +01409_38,4 +01605_227,11 +00417_138,17 +008372_10,0 +001602_40,11 +00333_176,2 +013302_211,1 +00535_91,2 +00563_42,7 +01228_183,14 +020052_63,11 +012192_58,5 +019622_60,0 +00519_55,17 +004082_255,13 +019252_262,8 +020052_173,11 +000232_42,6 +02049_108,13 +01437_252,11 +00228_46,11 +01698_126,14 +00023_131,6 +021722_233,14 +016922_16,14 +002802_127,12 +00450_186,14 +005062_108,2 +00747_52,4 +013332_37,4 +01427_54,4 +008482_21,14 +00009_169,0 +00408_245,11 +019412_196,14 +01087_158,5 +02191_87,7 +00503_99,1 +01814_115,11 +002802_40,14 +02012_129,14 +020572_206,3 +00875_0,2 +012612_99,2 +01184_29,5 +00232_25,2 +007292_295,14 +00566_151,8 +014232_185,0 +01723_73,15 +007092_258,6 +00721_99,14 +002802_181,4 +01431_181,11 +00475_287,9 +001602_51,1 +02146_48,18 +01145_22,2 +00474_170,2 +01101_8,14 +00333_24,2 +01769_103,2 +00840_203,7 +01330_9,2 +01706_51,2 +01839_54,11 +015972_8,14 +01977_255,3 +01165_122,14 +01568_202,4 +00867_53,5 +01134_259,10 +014882_171,1 +00128_151,2 +010912_151,5 +01144_41,5 +010872_210,5 +01706_17,2 +018772_291,4 +014272_127,14 +02049_63,3 +00761_244,3 +00450_107,13 +01278_82,4 +02057_59,12 +00490_255,5 +00519_7,14 +009512_20,0 +00079_212,9 +01509_114,0 +01693_242,0 +02049_168,13 +00761_110,14 +00426_165,14 +00292_37,11 +009352_64,7 +009642_237,15 +012402_111,12 +01408_27,14 +00837_4,14 +00485_280,4 +018132_92,11 +005282_63,2 +00023_41,6 +01007_181,13 +01605_69,5 +01763_154,2 +00577_15,14 +02138_99,12 +00079_11,9 +00503_36,6 +00275_127,14 +01814_173,11 +01182_20,13 +02057_74,2 +01161_182,17 +016932_217,0 +013302_171,3 +017672_97,14 +010012_78,12 +01707_65,0 +017482_44,0 +009512_145,14 +017482_43,0 +01688_265,5 +012612_9,2 +017672_69,14 +01494_30,7 +00535_92,2 +002802_42,12 +00588_112,13 +01643_97,14 +00539_39,6 +005882_168,4 +00588_89,13 +00721_28,12 +01929_91,0 +01409_64,0 +00474_115,2 +00065_58,9 +007832_281,5 +00242_215,12 +008372_182,14 +016932_77,0 +00837_143,11 +00747_12,7 +018122_87,2 +021772_11,4 +01769_191,2 +00875_17,2 +01184_34,5 +00181_111,0 +00964_269,14 +00841_96,14 +004082_42,1 +014372_76,11 +00088_91,14 +02187_280,16 +00490_275,5 +00729_141,14 +00509_42,2 +012722_254,12 +010942_34,11 +00825_59,2 +012282_144,14 +00681_45,5 +00718_113,19 +01763_281,12 +012282_30,14 +021722_196,14 +01623_66,11 +02172_142,12 +014272_96,17 +019712_160,2 +014882_136,1 +00509_17,12 +01971_50,12 +013302_241,6 +01144_129,12 +00158_34,14 +00509_202,2 +01490_3,14 +00730_62,18 +00314_187,4 +01688_257,5 +00509_186,2 +00417_97,6 +005092_143,12 +00993_48,6 +01688_181,5 +00490_133,12 +01177_32,14 +00875_2,2 +008402_205,7 +01007_41,4 +007832_274,5 +00462_27,14 +00175_11,12 +019042_79,12 +00729_259,14 +00964_105,8 +00296_60,7 +01605_142,5 +020572_146,3 +008402_59,2 +00023_36,4 +00916_98,2 +00505_141,14 +014372_192,11 +00677_46,14 +00276_36,11 +005282_96,2 +014372_213,11 +00935_63,7 +01108_51,14 +01702_17,12 +009162_232,5 +01431_39,5 +018652_81,18 +011912_185,14 +02005_185,11 +02138_47,2 +02187_126,16 +00951_125,0 +00883_38,11 +004172_12,14 +02030_127,16 +01763_226,2 +00519_123,7 +00538_9,14 +00578_67,17 +01972_207,3 +01330_2,2 +004172_206,17 +002752_62,14 +001242_45,0 +01748_74,0 +00079_262,9 +00539_199,6 +018342_203,8 +017232_145,15 +00674_127,14 +018342_79,8 +014882_11,13 +020052_273,11 +01007_250,19 +01698_5,14 +00772_26,7 +008402_179,7 +01191_99,7 +02187_81,16 +00677_100,14 +00964_266,14 +00124_196,0 +001602_190,11 +01101_153,14 +00875_51,2 +01165_53,5 +008482_57,17 +01366_30,17 +00566_78,8 +007092_81,19 +00567_238,2 +010012_183,5 +01901_149,5 +00979_2,14 +018342_105,8 +01693_134,0 +00552_62,7 +00232_126,13 +00505_177,11 +021722_5,14 +01087_282,5 +00729_288,14 +01948_140,13 +02138_299,14 +00519_104,11 +01853_76,6 +01331_75,14 +01763_244,2 +01272_154,4 +009352_10,14 +02127_16,2 +01925_201,8 +007292_268,14 +014882_10,13 +018652_2,14 +01408_138,14 +01968_29,7 +00065_191,1 +01278_54,2 +00024_50,17 +016052_16,14 +01609_13,17 +013302_44,9 +00783_23,2 +01044_32,4 +02138_271,14 +01568_37,2 +00342_99,14 +004172_258,11 +011612_264,17 +02149_11,17 +00709_14,19 +019042_56,4 +00296_25,7 +018132_53,11 +00730_25,17 +009162_234,5 +014882_78,0 +01582_67,5 +01045_192,4 +00916_44,2 +009162_230,2 +02021_55,11 +01091_271,14 +02027_15,17 +00722_15,17 +004082_288,11 +007762_4,14 +00350_181,9 +001022_128,16 +01409_76,0 +02054_258,2 +01091_179,11 +009642_132,8 +01541_29,5 +018342_189,8 +00350_276,9 +01165_55,5 +00951_112,0 +012282_33,14 +00660_53,0 +01437_88,11 +01812_21,2 +007092_71,19 +00021_84,2 +01977_43,12 +00563_127,2 +00485_107,1 +013302_122,18 +00128_3,12 +002752_65,14 +015972_88,0 +01568_123,2 +00783_265,5 +007292_151,14 +01184_106,5 +01412_9,0 +005062_66,6 +007292_90,14 +00438_108,2 +01331_46,17 +00981_109,14 +00951_98,0 +00417_31,6 +00159_33,4 +019592_52,6 +012722_137,4 +016052_74,5 +01763_122,12 +02062_107,4 +02030_140,16 +016842_49,4 +018652_137,14 +00475_148,9 +00505_85,12 +01312_32,7 +016882_20,5 +012192_130,14 +01882_61,11 +01929_59,0 +00528_66,2 +008372_139,11 +00232_57,4 +021462_138,14 +01201_22,5 +01091_89,16 +012282_160,14 +021622_98,6 +005062_78,6 +01877_174,4 +004082_294,11 +00242_269,4 +00539_287,0 +00280_85,2 +000232_117,5 +005502_97,18 +00312_28,0 +018652_25,11 +019712_63,12 +01423_16,2 +01643_63,4 +01501_101,14 +00242_238,12 +01814_230,5 +01134_280,10 +01092_176,17 +011082_41,0 +005882_65,13 +01814_170,11 +01924_74,14 +01431_185,11 +01812_102,2 +01605_109,5 +02094_37,12 +009512_158,14 +00840_2,2 +00175_13,4 +00261_7,4 +007212_105,14 +01769_148,9 +01092_162,5 +007182_134,14 +01707_11,2 +010012_10,2 +01829_56,12 +00442_249,4 +003062_74,7 +021722_227,14 +000792_73,9 +01839_108,11 +02027_135,14 +02094_73,12 +001022_83,16 +01707_231,0 +00916_208,2 +00539_120,1 +01048_48,5 +00979_27,1 +01971_268,4 +01427_35,9 +01272_222,4 +00867_150,0 +00535_206,0 +01723_46,15 +01228_175,14 +014972_33,4 +017672_89,14 +00747_0,0 +01490_20,7 +002802_83,4 +01145_246,4 +00538_81,17 +01707_141,1 +021722_201,14 +02005_158,11 +014372_259,11 +009642_31,14 +00312_1,0 +019622_4,0 +01707_59,0 +00761_161,6 +008402_261,2 +01351_14,2 +010652_38,18 +00021_5,5 +005502_101,18 +01361_52,12 +01045_240,4 +00453_107,9 +00761_119,14 +00158_123,5 +016922_146,14 +00697_34,4 +01636_7,14 +00597_78,14 +010942_51,11 +00438_205,2 +00228_167,9 +00413_57,0 +00588_55,15 +012402_253,12 +01767_247,14 +01278_213,2 +00615_117,1 +00709_90,6 +00688_24,2 +00159_70,2 +00709_216,19 +00935_60,7 +019042_70,12 +00408_57,1 +004532_110,9 +00505_180,5 +00566_274,8 +01509_260,11 +014372_87,11 +00474_91,2 +00563_43,7 +01278_18,2 +01948_142,13 +02021_56,11 +009352_21,7 +00276_95,11 +01361_40,2 +00951_87,0 +00535_267,6 +00079_226,9 +01361_81,12 +004082_250,1 +00276_134,14 +016842_60,14 +00709_60,19 +00567_50,5 +000092_21,12 +00485_12,2 +004532_160,9 +00041_157,7 +00867_100,5 +01144_181,2 +01177_41,14 +00566_16,14 +00539_162,17 +00450_42,14 +000252_67,17 +00408_287,11 +00916_136,2 +01909_3,2 +016432_102,14 +01643_53,14 +01929_218,14 +00158_20,14 +004172_221,7 +00867_160,14 +01240_169,12 +00709_153,5 +01977_127,8 +00720_8,0 +00528_49,2 +01330_98,9 +01272_191,2 +01488_8,13 +01330_57,18 +01787_47,9 +011912_9,14 +01101_144,14 +00232_60,13 +019252_261,8 +00821_38,5 +019252_196,8 +01182_78,14 +00228_259,11 +00456_27,12 +01953_295,2 +013332_33,4 +01045_213,4 +021722_37,14 +019242_59,14 +00718_125,19 +01839_26,14 +02005_273,11 +00442_149,0 +02146_172,14 +00567_286,2 +02012_54,17 +002752_127,14 +01775_149,2 +00577_25,7 +01578_59,14 +010012_98,5 +00730_55,18 +02138_281,14 +00539_134,1 +00160_103,11 +00287_31,4 +017672_255,14 +01767_193,14 +001022_143,16 +00722_119,17 +00280_115,4 +00783_186,2 +00079_203,9 +011612_215,17 +00160_215,11 +00456_191,14 +00160_236,11 +01045_71,4 +00065_123,1 +01044_68,4 +001112_42,17 +019712_56,12 +012282_178,14 +01092_98,17 +004172_92,6 +00747_43,4 +017072_291,7 +00041_110,12 +00158_80,5 +017672_75,14 +01877_42,4 +02187_2,11 +00450_144,15 +014372_270,11 +01839_134,1 +00722_117,17 +01953_74,12 +017672_290,14 +01769_297,5 +007092_217,19 +01977_238,8 +01924_213,14 +00413_194,2 +00438_215,12 +01723_12,4 +00509_190,2 +000092_186,7 +008402_142,7 +001022_212,16 +01693_298,0 +00314_149,4 +00417_238,6 +018342_164,8 +00528_119,2 +014972_39,2 +01423_252,2 +018342_92,8 +01693_264,0 +00417_204,17 +005392_217,1 +01925_296,8 +00609_13,14 +017232_53,15 +02172_161,14 +02005_45,11 +01046_71,7 +02127_221,17 +00615_167,11 +016922_5,14 +00546_46,14 +000792_114,9 +02054_181,4 +019412_206,14 +00964_153,8 +02062_66,12 +00024_100,2 +008372_102,11 +018792_70,4 +018772_38,4 +021722_29,14 +01500_51,4 +02146_31,11 +00509_94,12 +007292_235,14 +01333_9,0 +00821_115,5 +010942_18,2 +012402_27,2 +02146_16,14 +010942_73,11 +00761_87,14 +01240_89,2 +00490_285,5 +00681_43,5 +01103_22,17 +009642_102,8 +005392_57,1 +00280_135,12 +010652_60,18 +01879_35,4 +009642_12,14 +005502_11,5 +01814_267,11 +00408_0,2 +01814_245,5 +00228_147,9 +00539_27,6 +00228_130,1 +010872_131,5 +005062_62,6 +021722_215,12 +01493_21,11 +018652_70,18 +01622_69,14 +00314_265,4 +02054_161,12 +014232_217,0 +01240_32,2 +01201_2,14 +01161_103,17 +00730_60,18 +00382_103,13 +01331_16,14 +01941_139,14 +008922_25,0 +01977_56,14 +00848_67,17 +01045_151,4 +016052_4,14 +01787_31,1 +00892_38,0 +009642_273,14 +00314_258,12 +00793_283,14 +018342_47,8 +01493_297,1 +01879_19,2 +00065_171,1 +01044_100,4 +01366_148,2 +02187_45,16 +00628_5,14 +016842_44,4 +007222_132,17 +007092_98,11 +01763_102,12 +00703_57,11 +01509_119,0 +018792_103,2 +003122_8,0 +00462_26,14 +012562_69,12 +00837_28,11 +01813_154,14 +01834_154,8 +00350_111,9 +01044_247,4 +014232_8,2 +00535_261,6 +01509_154,0 +02028_61,15 +017482_5,11 +00505_125,12 +00009_134,2 +01201_94,14 +00674_78,14 +005392_199,6 +01058_152,2 +012722_18,2 +00314_8,2 +017752_8,2 +01431_210,0 +02127_37,2 +00442_276,4 +019712_99,12 +017672_184,14 +00438_141,2 +01948_2,12 +00964_117,8 +00485_212,1 +01371_42,14 +00408_103,11 +00528_193,0 +019412_105,14 +00721_82,4 +01707_91,0 +007832_295,5 +02049_197,13 +012402_106,12 +00546_121,3 +017072_58,0 +02149_32,17 +00538_120,17 +008402_125,7 +01904_87,4 +019412_210,14 +01879_107,2 +018342_60,8 +00721_25,14 +00296_9,14 +002802_172,12 +001112_60,17 +00342_37,17 +014372_203,11 +00462_146,13 +01706_242,2 +00588_24,4 +01366_100,17 +00601_31,7 +005392_139,1 +00394_79,12 +00394_37,1 +00382_85,9 +00453_197,9 +00729_280,14 +005092_190,2 +016932_128,0 +01087_122,5 +01901_180,14 +01165_15,14 +021462_80,18 +01901_110,5 +01804_26,4 +01044_60,4 +00287_57,15 +00232_48,4 +02057_188,3 +00079_167,9 +01941_252,14 +012402_256,4 +009642_84,3 +01814_79,11 +00993_2,14 +00228_239,11 +00957_21,4 +00505_12,14 +021722_159,14 +01330_281,9 +00453_89,9 +01605_86,5 +016982_78,17 +01775_100,12 +01145_271,4 +01177_37,14 +00546_49,14 +00025_81,17 +01568_218,2 +01981_103,11 +01191_189,14 +00485_171,1 +016842_53,14 +00041_9,2 +01568_249,2 +017692_181,2 +01568_175,2 +01767_186,14 +01144_91,12 +018342_182,8 +01568_224,2 +001602_191,11 +01361_215,3 +00124_243,0 +01087_81,5 +013332_32,4 +01144_15,5 +01814_116,11 +01240_28,2 +00841_53,4 +00124_206,0 +01623_45,11 +01707_78,0 +00505_8,2 +013712_53,14 +000792_294,9 +01501_28,0 +000232_93,0 +01412_33,0 +01046_60,7 +020052_296,11 +01161_195,17 +00607_121,5 +00660_1,14 +012402_143,12 +01977_86,8 +01431_126,11 +020052_185,11 +01228_133,14 +007092_95,11 +00793_209,14 +018342_246,8 +00041_13,2 +01953_174,4 +01177_114,14 +00023_54,3 +019042_0,2 +01044_219,2 +00841_90,14 +01702_73,14 +019042_85,4 +01177_73,4 +01408_218,14 +00577_28,7 +02027_78,14 +01366_46,17 +01094_1,14 +01351_96,17 +02057_19,2 +01361_208,3 +00413_34,0 +01134_205,10 +019252_294,8 +00065_217,12 +00456_177,12 +001602_291,3 +01049_51,7 +01092_204,17 +00475_141,1 +00505_163,12 +00128_15,12 +019712_14,2 +009642_113,8 +01609_9,17 +00394_15,12 +020572_51,2 +019252_118,3 +014122_69,0 +00776_12,4 +00718_126,5 +00079_187,9 +00916_269,5 +01409_157,0 +02030_57,14 +01767_23,14 +01924_234,14 +00462_91,13 +012282_280,14 +009162_49,2 +01688_286,2 +00158_208,5 +01769_0,2 +01605_164,11 +01144_196,2 +00709_125,4 +00124_86,19 +01044_45,4 +02021_41,1 +019252_291,8 +00546_36,14 +00951_68,0 +01044_246,4 +00079_44,15 +01929_226,14 +01330_39,9 +01971_166,2 +01509_264,11 +00485_220,1 +001602_110,11 +008252_38,2 +010012_189,5 +000252_61,17 +01924_224,14 +00158_272,5 +01488_17,13 +00314_73,4 +019412_120,14 +002752_111,14 +00417_218,7 +021462_50,18 +000242_33,7 +00382_38,17 +00539_218,1 +007832_78,17 +00793_79,14 +01191_147,14 +01804_128,4 +008402_16,2 +00453_199,9 +00503_67,6 +01839_181,4 +021462_162,14 +01428_58,14 +02027_108,14 +00709_245,19 +00892_72,2 +01692_82,1 +01046_9,14 +004532_172,1 +016922_3,14 +00957_56,2 +004082_143,11 +01219_117,5 +01941_10,14 +017692_38,2 +011612_242,17 +00588_115,13 +01977_61,6 +00280_147,4 +01698_111,14 +01605_183,11 +00615_89,1 +00474_215,2 +01501_13,12 +017072_27,2 +00772_39,7 +01971_153,4 +00490_36,2 +01925_186,8 +02057_113,2 +00709_255,6 +00023_30,2 +01427_18,12 +00709_296,12 +00462_54,4 +01330_264,12 +009162_171,2 +00065_152,1 +00128_188,12 +01366_49,17 +00111_18,14 +003122_17,0 +004172_297,11 +01623_14,14 +00519_161,14 +014372_75,11 +01924_123,14 +01972_281,14 +00314_238,12 +012612_47,2 +00563_126,2 +01408_14,14 +01706_155,2 +00228_280,14 +02005_16,11 +00417_243,6 +01812_54,4 +02012_7,14 +00567_51,5 +01371_45,14 +01161_217,17 +01049_11,7 +01972_188,13 +01609_5,17 +01351_68,7 +01182_13,4 +000232_39,4 +02172_233,14 +01001_19,12 +004172_95,6 +01201_120,14 +01767_94,14 +01428_40,4 +012192_83,5 +008372_134,11 +01877_262,4 +01763_265,4 +000092_109,12 +01707_215,0 +01959_75,6 +00783_8,2 +01767_54,14 +01706_240,2 +00660_203,0 +01065_3,14 +00528_16,2 +001602_216,11 +002802_75,4 +01278_139,4 +00993_266,14 +016932_285,0 +02005_67,11 +00474_41,12 +005282_166,0 +00660_140,0 +01509_288,11 +016982_16,14 +01692_52,5 +01048_31,5 +008922_95,2 +01509_131,0 +01948_103,13 +01240_162,2 +00935_73,7 +00964_175,8 +016882_10,5 +01409_13,14 +011612_40,17 +01094_60,11 +00703_20,11 +01428_55,14 +007092_239,19 +013302_282,9 +011082_11,14 +00964_181,8 +00413_5,14 +000092_177,2 +01925_272,8 +01909_197,2 +01775_166,12 +01145_216,4 +02054_62,2 +02049_86,3 +00442_141,0 +01145_292,1 +007832_59,2 +01500_50,12 +00567_0,14 +020052_37,11 +00413_44,0 +00720_11,0 +019622_109,0 +01158_135,12 +01049_58,7 +017672_117,14 +014232_102,0 +01814_160,11 +01971_190,12 +01261_77,12 +00535_120,6 +01972_36,6 +02138_227,8 +00490_160,2 +00709_215,19 +00102_270,16 +00722_22,17 +014232_61,2 +00674_26,14 +01953_257,4 +01877_181,4 +01723_124,15 +007832_163,2 +00567_102,2 +001242_239,0 +00709_91,6 +00021_23,5 +019622_50,0 +000242_57,17 +00916_220,2 +01767_51,14 +00228_171,9 +01684_14,14 +000252_44,17 +010912_88,16 +00607_112,4 +004672_41,11 +019042_58,2 +012612_52,2 +00287_75,15 +007222_104,17 +00394_67,9 +00417_179,6 +00761_53,14 +00124_26,4 +00394_120,14 +00509_206,12 +00535_105,12 +016842_0,14 +010652_6,2 +020572_148,3 +01972_124,13 +00490_165,2 +000242_84,17 +01272_33,2 +01408_234,14 +01312_10,14 +00088_29,5 +00567_293,2 +00158_183,5 +01972_224,3 +007092_166,19 +00535_95,2 +01161_292,2 +00539_141,1 +01228_86,14 +021462_155,14 +000232_41,6 +00228_211,9 +010942_50,11 +01622_76,0 +00232_84,13 +01240_44,2 +00848_103,17 +00981_84,11 +01161_228,17 +01158_154,4 +007222_91,17 +01904_142,12 +018772_180,4 +00783_281,5 +01925_57,6 +00535_270,6 +000092_252,4 +00783_41,2 +003062_97,14 +005092_211,12 +00159_9,0 +01437_38,11 +019412_19,14 +01865_134,14 +020052_194,11 +00475_164,9 +00462_183,14 +011912_57,7 +012612_87,2 +017752_148,2 +005282_5,2 +007832_80,17 +014372_144,11 +01493_253,1 +017672_203,14 +00158_187,5 +01494_45,7 +01490_43,7 +020052_3,11 +00314_177,4 +01437_140,11 +005282_120,2 +01427_1,14 +01240_119,4 +00426_66,0 +014882_182,0 +01813_7,0 +01046_95,7 +01692_17,14 +00721_177,12 +001022_209,16 +01457_48,7 +00417_135,17 +01877_107,4 +018772_169,4 +01437_2,11 +00951_72,0 +005282_209,0 +01763_76,2 +00505_20,14 +00566_290,8 +008372_95,11 +007222_11,17 +012282_60,12 +00892_9,0 +01431_29,11 +018392_92,11 +00964_176,8 +02172_109,12 +00287_223,4 +01134_272,10 +01877_143,4 +018772_164,15 +008832_3,11 +016052_84,5 +00957_79,0 +01578_188,14 +00474_15,2 +00023_94,0 +00280_14,14 +014272_54,4 +01493_99,1 +001112_64,17 +00475_131,11 +01882_37,11 +01929_138,0 +019042_112,12 +00688_99,2 +01191_165,14 +001242_74,19 +013712_10,14 +00628_138,14 +018132_4,14 +00550_10,5 +00550_7,5 +01692_75,1 +01688_130,14 +01240_99,12 +01834_34,6 +00660_222,0 +00776_70,14 +00128_73,4 +01775_36,4 +009512_156,14 +02042_107,4 +008832_6,11 +00535_295,2 +00024_96,2 +009642_259,14 +021912_71,7 +007292_85,14 +00462_205,14 +00772_46,7 +01692_111,1 +01361_269,15 +02172_83,14 +02062_158,4 +010872_263,5 +019622_72,0 +000092_275,12 +00709_2,19 +006092_85,14 +00228_231,5 +019412_31,14 +009642_255,14 +01092_248,15 +010912_71,1 +016932_146,0 +01412_52,0 +002802_66,12 +014232_59,2 +00776_7,4 +011912_23,14 +02012_20,2 +00124_93,19 +00552_88,2 +001602_160,1 +00509_221,2 +01723_271,15 +000092_277,12 +01092_39,17 +016982_119,14 +00485_134,1 +007092_172,19 +02138_288,14 +01578_70,14 +01091_28,12 +00333_152,2 +00722_71,17 +016922_108,1 +00009_183,2 +00875_47,2 +01723_148,15 +017072_82,0 +00721_29,12 +01091_272,14 +01409_58,4 +005392_159,17 +013302_196,6 +01909_123,2 +019252_283,8 +018652_99,18 +01092_268,12 +01091_215,9 +01092_146,17 +008402_89,2 +00916_222,2 +014282_58,14 +01904_92,2 +00505_183,5 +008482_103,17 +01118_20,14 +01361_285,15 +007762_24,14 +00566_6,14 +00709_250,19 +00296_96,14 +00768_87,14 +01431_137,11 +01046_93,7 +00490_266,5 +01283_38,2 +02172_111,14 +009642_115,8 +00065_160,1 +010872_227,5 +01901_29,0 +01814_142,5 +00761_86,14 +010942_4,14 +01814_129,5 +00848_82,17 +01044_265,4 +01941_8,14 +01493_268,1 +00848_66,17 +00563_18,2 +01108_74,14 +00065_223,12 +00128_202,4 +01688_220,5 +02094_153,2 +017672_3,14 +00306_36,7 +017672_78,14 +013302_71,9 +01177_88,4 +01191_110,7 +019252_66,6 +012562_65,4 +01623_114,14 +00314_124,4 +01228_253,14 +018122_120,2 +00111_8,14 +00535_271,6 +00408_269,13 +021722_197,4 +01007_298,1 +00503_52,6 +00546_163,4 +005882_77,13 +01118_88,14 +02138_85,14 +01814_95,11 +01210_138,6 +004082_79,11 +00567_161,2 +02062_69,12 +016842_24,14 +01763_202,2 +005092_184,12 +008372_89,11 +00688_88,4 +000092_11,2 +02094_50,4 +010912_199,1 +01605_231,11 +00350_274,9 +01769_146,9 +000792_293,9 +01568_122,2 +01605_156,11 +00175_74,4 +01371_32,14 +00993_201,7 +017692_51,5 +00916_135,2 +016432_60,4 +01959_5,6 +014372_160,11 +00993_270,14 +00181_114,0 +00276_50,11 +00442_293,4 +00539_62,1 +00413_11,14 +01431_54,16 +00079_77,9 +01688_154,14 +021622_121,18 +01045_149,4 +01723_18,0 +01813_62,11 +00079_169,9 +010872_178,5 +01119_35,11 +00242_9,2 +01494_23,7 +01493_37,11 +01145_68,4 +01962_80,0 +005092_163,2 +02187_84,16 +000232_75,3 +019252_287,8 +02049_266,8 +02049_14,12 +02049_97,13 +019252_200,8 +00011_45,0 +00916_28,2 +00993_257,14 +01626_144,2 +01925_97,3 +018122_76,2 +01431_96,11 +007092_168,19 +01901_14,14 +01101_176,14 +005502_44,18 +01007_179,13 +00721_193,14 +00456_8,4 +00506_8,2 +01240_272,4 +01331_61,17 +009642_176,8 +00159_48,2 +01688_121,14 +01272_63,12 +00550_64,18 +00783_134,12 +02162_94,12 +00552_53,7 +00539_259,1 +009512_94,0 +00158_108,11 +000092_202,12 +00681_20,5 +014372_206,11 +00333_141,2 +004082_295,11 +02172_145,14 +00102_134,16 +02127_226,17 +00783_270,5 +01865_139,14 +01361_183,3 +00314_206,12 +015972_23,0 +00280_27,14 +01091_65,1 +019242_148,14 +004082_227,11 +00981_66,11 +01331_82,14 +01144_33,5 +01412_87,0 +014882_238,5 +01962_40,0 +011912_152,14 +00577_69,7 +005392_196,1 +003122_2,0 +00228_36,14 +01493_85,1 +00333_20,2 +01423_245,0 +01330_80,6 +000232_196,2 +017072_260,7 +00506_74,6 +00475_53,9 +00158_157,5 +00563_24,2 +02027_96,14 +004532_10,11 +00242_273,4 +00041_163,7 +00292_21,11 +016052_250,11 +00426_102,0 +01351_118,7 +01087_249,5 +01058_5,2 +021722_16,14 +01087_283,5 +01948_150,13 +01312_1,14 +00505_19,14 +01636_64,0 +00181_62,0 +00232_119,13 +01924_228,14 +00506_36,2 +01427_48,17 +01853_27,0 +01049_31,7 +00065_253,12 +007182_96,19 +00228_41,5 +01904_74,12 +00875_73,2 +00550_111,18 +00840_137,7 +00550_42,18 +00503_127,1 +00041_28,2 +02187_165,16 +00793_237,14 +019042_157,2 +02187_118,16 +00709_138,4 +017022_84,14 +00628_120,7 +02187_296,16 +00333_87,0 +017672_4,14 +016922_99,1 +00394_21,6 +00892_56,0 +01622_124,14 +01145_294,1 +02138_220,13 +00011_36,1 +018652_110,18 +018392_36,2 +00228_71,17 +01636_105,0 +01358_42,1 +01228_215,14 +021622_35,12 +016432_40,12 +020572_187,3 +02172_78,14 +01706_9,2 +004172_56,17 +01409_23,12 +00883_56,11 +01623_90,11 +01707_21,2 +019412_174,14 +00232_112,13 +01972_95,13 +01929_141,0 +01981_59,5 +00312_22,0 +017752_82,4 +015972_44,0 +01201_19,2 +00674_111,14 +005092_231,2 +01182_85,4 +02054_285,4 +01272_47,2 +00916_147,2 +018652_108,18 +01228_202,14 +009512_3,14 +007832_88,17 +00566_50,8 +007092_26,19 +01692_46,2 +00287_84,15 +021772_59,12 +00296_47,7 +01210_6,9 +01087_131,5 +015972_76,0 +02062_105,4 +02049_83,3 +010872_166,5 +01578_45,14 +00276_101,11 +014232_187,0 +00485_199,1 +02057_97,12 +012282_290,14 +00941_10,19 +01427_105,9 +00111_51,17 +012402_51,2 +01688_12,5 +01361_154,3 +00503_253,9 +009342_23,7 +01228_43,2 +01366_162,14 +00128_120,2 +005282_171,0 +01358_1,1 +007832_41,2 +00228_78,17 +01981_75,5 +02162_105,6 +00615_100,1 +00747_53,4 +02138_202,13 +01134_183,10 +019712_21,2 +000792_297,9 +00426_33,0 +00408_220,11 +012722_146,2 +01103_13,4 +02094_104,12 +00450_204,14 +01065_58,18 +006742_72,14 +01408_160,14 +00546_161,4 +000092_1,4 +01853_40,7 +00957_37,4 +00761_280,3 +01101_151,14 +00408_92,11 +001242_76,19 +007832_32,2 +00065_260,12 +005882_90,13 +00024_51,17 +001112_3,14 +017072_242,0 +02021_15,5 +011912_68,7 +00964_112,8 +001112_32,17 +00964_263,14 +00505_4,14 +00467_63,11 +02187_291,16 +005282_58,2 +00964_192,8 +01829_36,2 +00821_56,5 +01968_44,7 +02186_95,14 +02027_2,14 +021622_100,6 +002802_120,2 +004532_129,9 +01812_3,2 +012192_32,5 +02005_156,11 +019252_203,8 +00275_1,14 +017482_45,0 +00721_15,14 +020572_85,12 +01769_262,2 +01814_66,11 +02172_187,14 +00333_94,0 +01804_69,2 +019412_267,14 +01087_139,5 +020572_100,12 +00438_139,2 +00935_75,7 +00242_50,12 +00609_1,14 +005282_125,2 +012562_76,12 +01409_124,0 +01706_23,2 +01103_62,17 +00102_119,16 +01707_70,0 +00578_34,1 +01853_52,17 +019412_251,14 +01240_59,12 +01045_284,4 +00314_266,4 +01706_234,2 +00296_91,7 +01490_26,7 +01693_188,0 +002802_226,14 +01361_244,15 +01092_157,6 +00333_33,2 +01882_41,11 +00916_84,2 +00228_182,1 +00456_131,12 +00485_114,1 +01001_104,5 +009352_14,14 +012562_7,14 +00506_58,6 +004532_252,9 +00382_118,19 +00456_174,12 +019412_153,14 +01829_34,12 +01256_98,14 +00450_90,13 +00394_96,1 +01240_112,4 +02138_137,13 +00550_52,18 +00475_293,9 +00821_95,5 +01924_112,14 +00394_62,1 +00550_94,18 +020572_121,4 +014372_63,11 +02191_103,7 +00935_30,7 +00840_152,7 +01407_29,5 +00951_146,14 +009162_146,2 +01636_98,0 +01925_282,8 +00485_55,1 +00660_225,0 +00916_94,2 +00442_191,4 +02049_255,3 +01333_24,2 +00793_140,14 +00088_81,2 +00681_36,5 +01427_63,17 +020052_132,11 +01493_94,1 +01101_80,6 +019712_161,2 +018342_255,8 +00159_81,0 +00417_143,7 +00539_111,1 +01834_189,8 +00722_25,17 +00566_88,8 +001602_34,11 +01688_110,5 +00567_131,2 +00456_127,12 +009342_48,0 +00228_142,9 +00474_108,2 +019622_127,0 +014272_39,1 +01953_175,4 +00475_229,1 +00539_217,1 +018342_262,8 +00840_263,2 +00883_18,11 +01351_158,14 +00840_77,2 +000252_14,17 +00181_155,14 +00509_185,2 +01622_89,0 +00951_137,14 +010012_278,5 +012192_29,5 +01775_137,12 +007762_76,4 +01977_185,8 +00453_242,9 +01605_126,5 +00688_6,2 +01423_87,0 +018132_72,11 +00408_72,11 +01839_36,2 +00505_123,12 +01408_211,14 +008402_63,2 +020052_260,11 +01001_167,5 +01956_41,1 +021622_13,14 +01941_253,14 +011082_84,14 +00280_59,2 +02146_169,14 +011912_158,14 +017072_35,2 +01626_46,7 +000792_242,9 +01087_73,5 +01834_183,8 +00021_35,4 +00280_240,14 +007092_106,1 +00041_34,12 +01702_61,14 +01763_111,2 +01210_88,9 +00088_5,14 +018132_97,11 +02127_167,17 +00413_135,0 +01723_56,15 +01161_10,17 +00848_114,17 +00550_124,14 +014232_15,2 +01427_93,17 +01723_147,15 +01108_63,14 +008402_200,7 +00747_9,7 +01108_11,14 +00552_24,7 +008402_197,7 +00840_227,2 +005062_5,2 +003122_24,0 +012722_90,2 +017692_42,0 +01457_6,2 +021622_108,1 +02049_245,3 +00474_78,2 +00280_98,12 +01769_38,2 +00916_282,5 +009162_236,5 +01962_132,0 +00333_59,2 +010872_62,14 +01351_114,7 +00964_211,3 +01929_31,0 +019712_59,12 +01763_285,12 +00160_232,11 +021622_101,6 +017672_240,14 +00747_8,7 +01706_103,2 +017232_71,15 +004172_283,1 +01457_26,7 +019042_133,12 +01968_27,7 +004172_265,11 +01971_148,12 +00417_4,14 +01158_124,1 +004672_40,11 +01278_206,2 +01582_8,2 +01361_192,3 +00065_261,12 +01201_36,11 +00703_90,11 +00840_206,7 +01087_9,14 +02162_91,12 +01688_256,5 +01763_123,12 +007092_60,19 +01092_188,17 +02042_117,0 +016932_225,0 +00509_218,12 +00577_22,7 +01278_138,4 +00729_216,14 +012612_53,2 +01191_27,14 +018342_21,14 +00232_86,13 +01494_18,7 +00503_192,9 +01977_131,8 +012282_93,14 +000092_65,12 +009622_39,0 +007292_226,14 +002752_13,12 +00462_153,13 +00475_45,9 +007222_112,17 +00438_286,2 +002802_245,14 +00275_111,14 +01330_7,2 +00721_217,14 +02057_77,2 +010872_148,5 +00438_244,2 +00456_10,4 +02049_237,3 +01925_33,14 +00442_69,2 +00979_137,14 +014372_43,11 +012722_249,12 +006742_50,14 +020052_35,11 +002802_197,12 +01509_82,0 +01065_2,14 +00761_237,3 +00088_33,5 +01706_228,2 +00342_40,17 +016922_134,5 +00660_286,2 +01493_246,1 +01045_172,4 +01925_255,8 +009642_127,8 +014372_92,11 +01219_95,5 +008482_96,17 +005502_36,18 +02094_130,4 +014232_219,0 +011612_83,17 +01134_168,10 +01092_279,12 +01101_102,1 +02138_101,12 +02138_224,13 +01977_89,8 +01423_249,0 +01045_176,4 +00697_80,5 +01723_79,15 +00181_103,0 +019592_61,6 +01829_44,2 +001242_129,19 +00563_52,6 +016932_13,2 +004672_45,11 +018342_123,8 +00314_29,2 +00287_81,15 +00615_136,11 +00306_98,14 +01948_129,13 +00453_257,9 +02146_164,14 +01165_133,14 +02049_191,13 +00314_297,0 +02062_117,4 +02172_245,14 +01184_100,5 +007182_74,19 +01688_134,14 +018132_109,11 +005392_203,6 +014282_16,4 +00660_218,0 +01201_42,11 +01959_3,6 +01636_57,0 +00825_45,12 +004672_0,0 +007292_274,14 +00566_278,8 +001242_87,19 +01408_188,14 +00009_212,7 +017072_184,0 +016052_204,11 +01161_209,17 +007222_87,17 +01272_31,2 +00333_78,13 +01763_152,2 +018132_96,11 +008372_155,11 +01177_3,14 +00539_268,1 +014882_30,0 +018772_268,4 +017232_61,15 +01941_72,14 +01834_21,14 +00588_71,13 +00426_70,0 +012402_131,12 +00993_217,6 +00306_32,7 +00761_105,14 +02030_198,16 +00720_35,0 +007092_265,1 +014072_15,2 +00228_25,14 +01953_217,12 +01240_201,12 +01119_7,14 +00546_129,3 +00563_71,9 +008372_24,11 +01971_248,12 +01925_228,8 +005092_64,2 +01103_100,14 +01361_176,3 +005282_201,0 +00566_136,8 +018792_71,0 +01597_90,0 +00124_51,0 +00697_91,12 +007222_39,17 +01702_24,4 +00009_216,7 +01045_77,4 +00333_81,13 +00761_82,12 +019242_160,14 +01427_26,17 +00875_45,2 +00158_256,5 +007212_11,14 +01087_44,14 +01941_258,14 +02027_122,14 +01407_32,0 +01145_274,4 +01959_37,6 +02138_134,13 +00228_91,11 +00964_137,8 +01240_64,12 +01707_138,0 +01693_146,0 +00539_294,1 +00024_78,7 +01775_143,4 +00951_106,0 +00506_41,2 +00916_247,5 +01597_94,0 +001022_278,16 +01161_83,17 +00158_163,5 +008832_51,11 +00566_209,8 +01409_188,0 +012562_72,12 +00041_8,2 +00539_123,1 +01748_22,0 +01804_36,12 +00280_17,14 +00588_188,4 +01578_121,14 +00793_239,14 +01092_2,17 +002802_72,12 +011912_54,7 +01278_90,4 +01767_269,14 +01045_104,4 +02149_41,17 +016932_174,0 +00628_39,7 +006972_57,12 +01437_139,11 +010652_40,18 +01408_246,14 +019042_91,2 +01158_139,4 +017752_155,12 +011912_108,7 +00628_87,7 +02027_113,14 +02162_108,1 +00442_232,4 +01493_8,11 +009512_143,14 +00306_69,7 +012722_255,12 +013302_140,9 +011912_55,7 +016052_286,11 +01814_218,11 +017672_221,12 +010912_148,5 +00280_238,12 +01228_283,14 +01184_133,14 +00314_51,2 +00181_63,0 +01948_109,13 +018792_4,2 +011612_84,17 +00709_202,19 +01145_76,4 +01971_245,12 +006742_53,14 +01568_41,2 +01578_125,14 +017072_215,0 +01044_121,12 +017232_240,15 +00597_3,14 +00867_97,5 +01953_5,2 +015972_104,0 +00674_131,14 +007292_160,14 +01981_46,5 +00793_116,14 +01256_104,14 +00546_171,14 +008372_125,11 +02191_2,14 +01972_182,13 +01953_197,4 +00703_66,11 +020052_91,11 +009642_64,3 +02012_110,2 +02138_82,14 +009512_69,0 +00566_286,8 +01256_92,2 +00550_123,14 +00442_174,4 +01767_65,14 +00848_144,14 +01351_104,7 +00160_273,13 +01448_34,4 +005062_136,2 +00567_146,2 +00783_169,2 +02127_172,17 +00934_5,9 +01493_164,1 +00456_74,4 +01007_34,12 +01723_200,15 +00552_98,2 +007292_265,14 +01007_176,13 +01723_256,15 +00577_67,7 +00280_30,12 +00276_131,14 +00025_73,17 +00102_161,16 +012402_65,12 +00567_106,2 +01948_120,13 +00837_35,11 +016432_41,12 +01161_263,17 +00697_3,2 +00485_30,2 +00276_129,14 +01693_292,0 +00503_0,6 +01877_182,4 +009162_157,2 +00722_98,17 +01278_132,4 +00287_114,15 +02054_105,12 +01118_32,7 +00025_27,17 +02054_55,2 +000792_154,1 +00280_120,2 +01605_233,11 +019622_18,0 +017672_257,14 +00563_86,15 +016092_15,17 +01351_59,17 +00688_34,4 +01256_22,4 +011612_236,17 +01408_157,14 +02127_15,2 +01501_93,14 +01134_60,10 +01775_46,2 +02027_76,14 +019622_23,0 +00181_32,0 +004082_1,2 +00242_75,4 +00456_4,4 +01582_75,2 +01423_207,0 +01048_21,5 +02057_28,2 +018132_135,11 +02094_119,12 +018652_9,14 +01597_24,0 +019412_230,14 +008252_52,2 +02187_197,16 +00065_288,1 +00825_33,12 +01605_3,14 +018792_31,4 +016932_203,0 +007832_124,6 +00158_176,5 +00761_221,3 +01582_43,7 +02138_160,13 +01626_35,7 +00079_22,9 +01706_52,2 +00729_102,14 +001602_72,11 +00964_24,14 +00916_217,2 +017072_17,2 +01953_45,12 +012562_87,4 +00539_200,6 +016932_125,0 +01165_124,14 +00535_53,2 +00883_36,11 +008402_158,7 +00722_19,17 +01431_239,11 +019412_121,14 +014272_4,14 +00426_44,0 +010012_2,2 +005092_125,2 +01134_110,10 +02094_4,2 +015972_30,0 +01001_90,5 +00394_58,17 +01972_21,2 +01865_56,18 +016882_288,2 +01706_295,2 +014372_156,11 +01924_142,14 +00550_12,5 +01351_50,7 +004532_268,9 +01684_67,14 +00934_34,4 +005092_179,12 +01145_109,4 +01283_15,2 +01541_31,5 +01001_14,2 +01431_243,11 +00793_291,14 +00539_58,1 +016932_267,0 +00009_124,2 +00566_87,8 +01959_79,6 +006972_44,2 +00916_185,2 +00546_42,14 +00009_267,0 +014272_5,14 +01101_123,0 +01929_194,0 +01948_45,15 +005282_210,0 +01091_127,5 +01165_114,5 +01497_24,2 +02005_212,11 +00867_124,17 +021622_133,5 +01787_4,13 +01330_120,1 +00964_103,8 +01158_46,0 +00041_174,7 +00697_0,2 +016982_117,14 +00242_240,12 +01925_47,12 +00709_114,12 +01134_116,10 +00102_168,16 +01409_222,14 +00951_156,14 +004532_25,9 +00306_51,7 +018792_90,12 +007222_129,17 +00474_50,2 +01408_22,14 +02138_174,13 +01578_168,14 +00935_64,7 +01118_67,7 +001022_78,16 +008832_0,11 +008482_114,17 +00232_181,14 +00485_135,1 +007182_16,19 +01877_53,4 +02005_240,11 +02027_5,14 +012722_126,4 +00350_32,14 +021722_82,14 +00840_134,7 +00505_172,11 +01925_98,3 +017072_107,0 +01437_132,11 +00287_80,15 +00660_107,0 +00342_27,17 +008402_72,2 +01333_35,4 +000252_73,17 +012282_293,14 +007182_65,19 +00408_190,11 +018342_130,8 +005092_76,2 +01829_50,2 +00490_77,2 +01981_131,14 +01948_29,14 +000232_183,2 +019252_100,3 +01228_289,14 +00333_43,2 +005282_20,2 +008922_101,2 +01145_40,2 +01623_37,5 +00490_231,5 +00772_6,14 +014232_87,0 +000092_95,0 +007292_219,14 +007762_83,4 +01605_266,11 +01636_25,0 +01330_221,6 +00761_144,12 +014372_217,11 +00506_114,2 +02028_96,2 +00793_131,14 +011772_36,14 +00729_163,14 +01261_94,2 +019242_38,14 +007762_51,4 +012562_101,14 +01091_193,16 +00079_12,9 +00503_195,9 +021622_103,6 +01240_136,12 +00296_3,14 +01437_240,11 +00485_217,1 +01929_65,0 +01688_34,11 +01488_49,0 +008482_118,17 +01953_205,4 +02005_91,11 +017692_94,2 +018772_150,4 +00462_215,14 +01763_18,12 +012192_98,5 +016932_232,0 +01693_97,0 +02186_59,5 +00722_38,17 +01901_21,2 +00280_222,14 +021462_95,18 +01698_129,14 +00079_147,9 +00160_72,11 +00916_126,2 +012282_284,14 +00124_18,4 +01493_80,1 +01698_54,17 +00021_86,2 +011612_14,17 +016882_113,5 +01636_84,0 +00023_128,6 +019712_53,12 +014372_89,11 +00535_184,0 +00935_16,14 +00892_57,2 +01775_62,2 +008482_11,14 +00567_248,2 +00577_74,7 +00538_60,17 +01909_161,2 +00111_49,17 +007832_296,5 +019242_233,14 +00840_274,2 +02049_231,3 +00442_125,4 +00442_122,12 +010872_57,14 +00009_234,12 +00287_158,4 +00703_4,14 +016932_180,0 +001242_22,4 +014882_53,13 +006742_90,14 +01493_159,1 +012192_104,5 +019412_161,14 +003062_91,7 +005282_200,0 +00597_1,14 +01767_201,14 +014282_75,14 +011612_216,17 +00563_78,6 +01962_51,0 +00916_72,2 +02049_34,8 +01763_88,12 +00729_81,14 +02054_232,12 +016432_98,14 +01182_77,14 +02049_140,13 +01493_229,1 +00102_282,16 +007832_155,2 +00509_100,12 +00539_210,1 +019042_54,4 +00275_81,14 +00111_23,17 +02012_63,17 +007212_122,14 +02012_82,17 +00840_133,7 +016052_202,11 +01361_136,3 +006092_63,5 +016922_103,1 +01493_4,11 +000792_186,9 +01144_120,2 +01261_55,2 +01145_117,4 +019252_295,8 +018392_131,1 +00848_1,14 +021912_79,7 +01769_289,2 +004082_144,11 +01191_101,7 +010872_185,5 +018342_159,8 +017232_25,15 +00462_163,15 +01351_161,14 +01488_115,0 +00935_93,7 +007092_178,19 +01698_81,17 +00550_118,5 +017672_133,14 +008402_292,2 +00276_128,14 +01108_22,0 +01909_176,2 +01901_5,14 +01087_255,5 +00506_81,6 +00505_137,14 +02138_178,13 +01312_63,7 +01240_54,12 +00709_174,19 +021722_121,4 +00848_89,17 +00158_122,5 +000232_126,5 +007212_210,14 +00475_25,5 +01493_169,1 +00546_9,14 +001242_3,4 +016882_18,5 +01134_149,10 +006742_88,14 +00546_169,4 +00111_6,14 +01101_28,7 +00503_165,5 +00065_107,1 +007832_279,5 +01145_112,12 +014882_223,0 +010012_107,5 +00601_105,0 +01240_140,12 +01909_38,2 +01210_97,6 +001602_214,11 +00158_0,14 +017072_140,1 +014232_72,0 +010012_69,12 +00588_104,13 +00024_80,17 +00588_237,2 +00709_6,19 +00993_211,6 +01509_120,0 +01240_102,12 +007092_276,12 +001242_50,0 +00660_224,0 +00628_101,7 +01045_60,4 +02172_85,14 +00503_69,6 +007212_166,12 +01723_169,15 +008252_85,2 +00065_1,5 +011612_49,17 +004082_162,11 +017692_84,11 +00394_52,12 +016982_89,17 +01094_38,11 +012192_66,5 +01953_102,4 +016882_4,5 +01865_38,18 +01134_241,10 +01001_212,5 +02062_80,4 +005092_52,2 +00539_125,1 +016432_44,14 +00841_5,14 +01145_286,0 +01312_76,7 +01001_8,2 +01158_97,12 +01431_25,11 +00128_48,4 +00023_50,3 +00333_174,2 +01692_99,1 +01488_231,5 +00462_204,14 +00490_232,5 +00438_287,2 +02162_72,17 +01161_283,17 +00546_173,14 +017752_153,2 +01948_100,13 +00867_39,5 +01045_254,4 +001242_186,0 +00160_245,11 +02049_87,3 +01494_83,7 +01924_55,14 +00747_18,6 +019252_159,3 +004082_238,11 +00837_2,14 +00578_86,1 +012402_291,12 +016882_55,5 +013302_36,9 +01623_50,11 +004532_37,9 +02146_127,11 +00228_19,14 +012192_36,5 +00312_9,0 +011912_25,14 +00729_138,14 +011612_139,17 +00567_103,2 +01361_190,3 +01877_188,4 +01578_232,14 +00009_92,0 +01977_296,14 +00979_49,1 +00475_142,1 +00426_120,0 +01971_96,12 +008402_140,7 +012612_93,2 +01839_179,4 +000092_77,12 +01184_44,5 +00703_110,14 +01201_67,11 +00296_8,14 +016882_88,5 +001602_104,11 +00964_35,6 +01879_41,4 +01693_53,0 +01723_230,15 +010012_217,5 +019252_229,8 +01941_297,14 +004172_113,17 +01427_6,14 +017672_104,12 +016882_40,5 +01814_199,11 +014282_30,14 +01001_159,5 +01626_112,7 +01409_194,14 +01723_135,15 +01971_182,4 +00287_83,15 +00883_51,11 +00935_5,14 +021722_31,14 +001022_179,16 +01763_83,2 +014972_0,5 +01904_134,12 +01007_175,13 +01834_43,8 +009622_4,0 +00228_217,5 +017692_162,1 +021772_60,12 +00730_91,17 +01877_137,4 +00883_62,11 +01707_0,2 +017752_7,2 +00485_195,1 +007182_55,19 +00528_212,0 +00342_46,17 +01568_248,2 +019412_258,14 +00394_127,14 +01924_222,14 +01767_148,14 +00232_137,13 +02127_43,2 +02094_71,12 +01278_21,2 +014372_121,11 +016052_31,14 +00275_105,14 +012722_247,12 +000242_16,2 +01767_281,14 +007832_255,5 +00615_128,1 +00453_266,9 +000792_255,9 +01501_46,4 +00979_104,1 +00025_79,17 +00111_59,17 +01361_8,5 +018392_99,11 +00981_78,11 +02062_100,4 +00333_123,2 +00964_49,8 +01361_272,15 +008402_33,2 +021722_225,14 +00292_15,11 +004532_194,9 +00475_189,1 +00287_93,15 +02062_92,4 +00228_270,11 +00102_243,16 +00079_209,9 +02057_43,2 +007182_81,19 +01431_15,11 +019712_52,12 +01636_34,0 +00825_53,2 +01834_1,14 +00275_125,14 +01412_22,0 +00546_155,15 +014282_69,14 +01723_270,15 +02062_123,4 +00417_41,17 +01804_32,7 +00296_31,7 +00503_249,9 +018772_167,4 +019242_40,14 +020052_159,11 +00722_57,4 +011612_175,17 +005392_175,1 +00601_124,14 +00964_213,3 +00292_25,1 +011772_100,4 +001602_12,2 +00065_10,18 +00709_165,19 +01001_154,5 +00287_38,4 +011772_2,14 +01941_42,14 +01423_250,0 +01134_21,16 +00158_126,5 +01457_60,7 +017072_296,7 +00181_136,0 +01423_135,0 +006742_24,14 +00158_87,5 +00697_83,4 +01145_45,2 +00519_95,11 +00578_49,4 +00350_113,9 +01941_66,14 +01977_226,8 +01968_97,7 +01048_61,5 +01312_5,14 +018342_122,8 +01509_248,11 +01408_36,14 +004082_128,13 +017692_203,0 +01763_100,12 +00023_28,2 +01371_23,14 +02127_278,17 +02191_9,7 +016052_45,14 +00601_134,14 +01437_27,11 +01145_196,4 +020572_165,3 +00709_144,19 +002802_161,12 +00539_177,1 +01087_199,5 +01541_35,5 +01330_226,6 +00509_33,2 +01977_214,8 +01901_4,14 +02127_260,17 +00456_162,12 +006742_103,14 +00566_299,8 +010872_135,5 +00957_65,2 +01144_89,12 +019712_104,12 +01568_183,12 +008372_6,14 +018392_186,1 +01959_31,6 +01240_286,12 +00825_29,12 +00160_144,1 +00490_226,5 +02191_35,7 +021462_19,2 +012402_183,4 +00709_11,19 +00312_49,0 +00333_142,2 +016932_205,0 +007832_161,2 +005062_68,6 +00848_2,14 +008252_26,2 +010012_52,2 +00783_275,5 +014232_127,0 +00350_166,5 +00722_27,17 +01626_72,7 +01706_232,2 +018342_175,8 +00350_94,5 +00485_117,1 +00578_12,14 +01956_56,4 +00475_109,9 +01693_246,0 +00088_42,5 +009512_29,0 +016432_59,4 +00228_156,9 +00567_167,2 +01049_60,7 +00350_179,9 +005092_153,2 +01044_15,4 +021462_52,18 +017232_90,15 +01087_102,5 +01968_52,7 +016932_61,0 +00916_218,2 +01119_8,14 +00722_46,17 +014372_254,11 +019242_56,14 +01626_50,7 +004082_95,11 +01210_251,9 +01007_64,0 +00793_280,2 +008402_182,7 +017672_212,14 +00287_196,4 +02030_160,16 +013302_85,1 +00442_84,2 +00413_218,14 +00821_54,5 +00981_65,11 +02172_31,14 +017672_84,14 +01007_2,2 +01763_207,2 +001602_281,13 +01814_282,11 +01707_22,2 +01087_119,5 +00242_43,12 +019242_9,14 +00280_191,2 +017022_75,14 +021722_109,12 +00747_65,2 +02127_192,17 +01497_30,4 +00577_46,7 +01804_44,12 +01693_225,0 +017672_190,14 +001022_196,16 +02054_233,4 +01748_83,0 +01408_139,14 +00009_264,7 +00124_144,19 +00660_82,0 +016052_182,11 +00314_196,0 +00601_68,9 +01240_5,2 +01787_6,13 +00438_213,12 +00674_58,4 +010652_36,18 +00382_94,19 +01283_16,2 +016882_168,14 +00674_15,14 +00628_55,7 +00783_88,17 +003062_63,7 +00228_249,11 +017072_84,0 +004532_181,9 +01972_132,3 +012612_98,2 +009162_90,2 +01184_19,14 +00065_98,11 +00677_78,14 +002802_89,2 +00783_24,2 +00783_33,2 +010652_21,1 +005282_186,0 +00382_104,13 +00228_54,11 +00567_67,2 +01001_274,5 +019622_6,0 +01865_97,18 +02030_297,16 +011912_191,14 +01971_159,2 +01493_128,1 +00417_72,17 +000792_112,15 +00677_54,4 +001242_253,0 +00462_19,14 +01330_222,6 +019252_90,3 +01312_99,14 +013302_68,9 +00615_114,11 +01101_154,14 +01623_59,11 +007292_115,14 +01240_175,12 +00453_58,9 +020572_30,2 +01924_218,14 +01829_14,2 +00438_189,2 +00350_2,14 +01787_54,9 +016922_150,14 +018792_20,2 +017752_118,2 +01427_30,17 +014282_50,14 +00417_32,17 +021722_177,14 +02049_19,4 +00941_28,4 +01693_115,0 +020052_236,11 +00041_50,12 +00837_51,11 +01924_237,14 +010912_48,6 +00772_101,14 +018772_280,4 +00490_218,7 +01134_15,16 +007182_68,19 +00566_175,8 +00009_181,2 +012192_45,5 +00350_43,14 +01748_85,0 +01707_54,0 +00485_232,1 +012402_246,12 +010872_217,5 +006972_29,9 +00102_67,16 +01972_200,3 +01763_175,12 +01493_170,1 +00287_141,4 +01702_67,14 +02054_229,14 +01769_39,2 +00677_43,14 +01877_266,4 +00442_157,0 +01972_160,3 +01977_200,8 +00528_22,2 +01723_280,15 +01412_1,4 +01769_175,2 +01228_225,14 +00474_237,2 +018652_55,18 +019242_207,14 +02177_15,4 +00688_8,2 +01493_126,16 +01814_166,11 +00009_162,12 +00674_143,14 +015972_4,14 +00450_162,14 +01161_75,17 +016052_253,11 +01909_89,12 +016932_85,0 +001602_296,1 +00065_166,1 +00275_68,14 +01272_244,12 +007092_34,19 +00394_74,17 +02127_32,2 +00688_50,4 +02062_73,12 +01331_11,14 +01219_46,5 +02186_96,14 +00848_137,14 +00490_288,11 +00275_19,14 +00703_58,11 +01210_9,9 +012612_69,4 +01240_35,2 +01409_179,0 +01972_170,13 +01501_67,14 +01007_247,13 +02187_12,0 +00848_128,17 +01702_69,14 +00275_116,14 +02049_23,4 +01045_12,2 +017672_95,14 +01626_28,7 +00935_35,7 +010872_275,5 +02149_13,6 +005502_32,18 +01423_121,0 +01972_227,3 +01103_103,14 +017672_35,14 +008402_152,7 +009162_75,2 +01763_93,12 +00333_97,0 +01488_149,0 +007832_115,17 +01813_126,11 +00721_140,12 +00024_90,7 +01423_75,0 +00722_102,17 +02094_41,12 +01929_7,14 +016922_81,1 +02162_34,12 +002802_123,2 +01643_95,14 +01787_41,1 +001242_30,4 +02042_109,4 +01723_238,15 +01437_63,11 +007092_227,19 +010912_192,16 +02054_188,4 +00453_39,9 +00453_85,9 +00793_92,14 +00275_44,14 +014882_105,0 +016092_39,17 +01409_226,14 +005392_115,1 +01134_16,16 +01330_38,9 +01145_105,4 +01688_267,5 +02177_19,4 +00578_102,17 +01904_88,4 +00503_58,6 +021462_47,18 +01228_108,14 +00660_0,14 +00528_129,4 +00730_21,14 +01814_90,11 +01330_233,8 +01228_6,14 +02030_28,14 +019412_28,14 +004082_54,1 +02146_175,14 +00709_108,1 +019252_30,14 +00761_204,3 +016882_65,5 +01706_137,2 +00519_102,11 +01240_23,2 +00601_74,9 +01161_259,17 +005062_43,2 +007092_56,19 +001242_41,4 +01814_292,11 +00535_102,12 +00232_67,13 +01278_203,2 +00065_25,1 +019412_234,14 +00011_69,2 +01219_39,5 +00729_132,14 +007212_196,14 +01092_132,9 +01623_16,14 +009342_53,11 +016052_49,14 +00793_80,14 +021722_20,14 +011612_172,17 +00566_66,8 +02062_93,4 +016932_216,0 +00528_3,2 +01371_60,14 +007832_233,5 +01605_201,11 +01065_93,18 +01706_58,2 +012402_274,12 +017072_204,0 +01829_22,12 +01283_76,14 +016932_129,0 +017072_130,7 +00462_144,13 +01829_45,2 +010012_135,5 +00021_99,12 +01501_31,14 +02005_244,11 +00964_288,14 +001022_256,16 +00426_54,0 +012282_249,14 +01924_183,14 +00615_87,1 +007292_35,12 +01210_66,17 +00102_151,16 +00408_48,1 +01493_261,9 +00660_193,0 +01775_168,12 +009622_57,3 +00342_90,14 +00023_47,3 +00677_57,4 +004672_62,11 +000792_291,9 +016882_255,5 +00718_59,19 +01509_250,11 +01094_81,11 +01509_77,0 +019242_194,14 +00009_117,7 +01278_136,2 +00588_155,13 +01118_22,7 +01941_117,14 +01182_115,14 +001242_194,0 +015972_110,14 +02054_13,2 +01956_75,14 +021622_132,5 +01065_65,18 +00709_221,19 +00552_19,7 +00350_292,9 +01609_10,17 +01001_22,12 +00009_105,12 +010012_151,5 +009642_78,3 +00793_56,14 +00615_186,11 +000242_39,7 +00867_4,14 +00793_163,14 +01879_81,12 +00442_105,2 +01177_35,14 +016052_38,14 +00413_161,0 +00837_86,11 +01971_104,12 +008402_240,2 +01693_29,17 +02049_232,3 +005282_137,4 +01882_9,14 +00615_172,11 +019252_259,8 +00456_39,4 +00776_71,14 +01431_64,11 +00024_67,7 +00287_126,4 +01597_9,14 +007212_62,2 +011082_33,15 +01145_289,1 +00703_76,11 +011612_100,17 +00840_106,7 +01001_173,5 +007212_22,14 +00160_190,11 +005882_55,15 +01165_136,14 +01693_157,0 +00848_37,17 +01087_52,14 +00261_16,0 +00539_102,1 +00442_158,0 +016882_0,5 +01962_99,0 +00957_73,4 +01493_155,1 +00442_267,4 +00567_66,2 +002802_218,4 +012722_201,12 +007092_216,19 +00280_236,12 +01698_63,17 +00503_105,1 +00102_79,16 +012722_107,2 +01045_78,4 +01623_133,14 +00993_229,6 +00615_21,11 +00287_67,15 +00128_80,4 +00158_61,14 +014972_27,2 +018792_18,2 +01092_71,17 +010912_10,2 +00957_18,1 +00287_205,4 +018652_128,11 +007092_205,19 +01763_13,2 +00761_285,3 +01272_143,4 +004172_134,17 +00175_18,4 +01929_42,0 +021912_115,14 +011612_207,17 +00438_46,2 +01045_181,4 +019042_162,12 +00475_79,9 +00825_0,12 +015972_47,0 +011912_15,14 +005062_48,2 +02042_121,0 +00964_43,6 +005502_70,18 +00539_246,1 +01333_49,0 +009162_202,2 +00426_150,12 +01636_115,14 +00450_20,14 +01977_20,14 +000232_86,4 +02027_151,14 +01351_66,7 +010652_16,11 +016932_116,0 +01509_103,0 +00011_90,2 +007292_207,14 +00450_94,13 +01834_271,8 +009512_16,14 +016052_30,14 +02138_211,13 +01723_0,4 +01622_114,4 +00962_80,3 +00577_11,14 +005092_63,2 +01684_34,4 +02054_172,2 +00951_150,14 +021912_106,7 +003062_59,7 +00993_35,14 +002752_103,14 +01333_29,2 +009622_52,13 +021722_173,14 +019252_0,14 +01879_18,2 +00546_105,3 +02027_21,17 +01501_65,14 +007222_142,17 +02027_31,18 +013302_213,1 +00275_92,12 +00079_122,9 +02162_45,17 +02127_222,17 +014232_86,0 +00394_36,1 +016922_72,1 +008482_127,17 +011612_29,17 +00503_176,5 +012282_29,14 +01045_68,4 +019712_134,12 +01568_127,2 +005502_45,18 +015972_92,0 +00160_251,11 +00793_66,14 +00009_186,7 +01256_115,14 +013302_250,15 +018392_59,11 +004172_82,17 +01787_61,9 +01769_116,0 +000242_10,2 +009162_290,5 +01959_29,6 +019412_162,14 +009162_12,2 +00528_115,2 +00783_20,2 +00160_212,1 +01622_57,0 +01408_192,14 +00916_11,2 +00539_255,1 +00417_60,17 +017672_98,14 +00275_79,14 +020052_42,11 +019712_274,4 +01877_131,4 +01457_61,7 +01834_218,8 +00417_46,17 +01219_59,5 +01643_34,14 +01688_277,2 +02057_93,2 +01045_44,4 +016932_120,0 +01643_3,14 +02127_57,17 +01953_258,4 +01636_119,14 +010912_129,5 +00703_15,5 +00840_147,7 +01971_152,12 +02187_166,16 +01698_16,14 +00462_190,14 +008922_69,2 +014882_118,0 +007222_133,17 +01437_295,11 +000792_36,9 +01191_151,14 +00232_73,13 +01769_78,9 +007182_115,19 +01351_62,7 +00079_48,15 +01972_177,13 +014882_13,13 +01331_27,17 +00793_265,14 +02021_57,11 +007182_7,2 +006092_7,14 +000242_2,2 +020572_117,2 +01977_33,2 +007212_172,12 +01409_103,0 +01636_10,14 +00474_81,2 +000232_143,6 +01177_55,12 +00124_27,4 +00023_114,5 +01925_171,8 +01877_173,4 +01494_71,7 +01092_135,9 +01145_232,4 +009352_0,14 +01161_232,17 +00979_38,1 +005092_22,2 +00964_38,6 +02054_18,2 +007212_67,12 +00841_39,4 +01361_87,4 +01488_208,0 +02172_248,14 +00490_98,2 +00935_56,7 +01925_11,14 +00450_166,4 +000092_236,7 +01971_299,4 +01437_264,11 +005062_16,2 +01605_58,5 +008372_13,0 +005392_197,6 +00964_12,14 +02186_26,5 +02027_125,14 +01412_17,0 +00450_50,4 +00528_103,2 +01698_127,14 +00503_12,6 +02191_53,7 +00426_89,0 +007832_67,17 +01693_240,0 +01578_36,14 +017692_14,2 +017072_206,0 +00875_84,2 +00450_148,4 +00159_25,4 +00588_170,4 +00408_243,11 +017752_27,2 +01493_231,1 +01177_80,14 +002802_170,12 +020572_95,2 +01488_89,13 +00535_297,2 +01568_16,2 +00519_21,7 +01361_99,6 +00485_180,1 +01044_33,4 +00474_235,2 +005392_237,1 +01623_115,14 +01437_194,11 +01493_130,1 +01509_53,0 +01623_26,14 +010872_260,5 +01210_245,9 +014122_30,0 +007212_90,14 +02012_105,17 +01091_191,16 +000792_168,9 +01488_143,0 +00475_288,9 +01228_99,14 +01953_176,4 +00438_9,2 +004172_288,11 +00490_239,5 +01330_60,18 +01210_197,6 +01748_7,11 +018772_292,4 +01065_35,18 +00566_284,8 +01058_164,2 +019252_239,8 +01119_90,11 +012612_73,12 +000092_81,2 +01605_136,5 +00935_78,7 +00519_14,14 +00025_50,17 +00232_35,12 +00456_182,4 +01775_43,12 +01941_246,14 +01431_218,11 +00450_156,12 +01909_196,2 +007292_217,14 +012722_1,2 +00394_59,9 +02027_102,14 +01977_199,8 +01981_43,5 +019242_113,14 +006092_70,14 +01977_186,8 +01210_93,6 +01834_176,8 +02049_194,13 +008402_38,2 +018342_28,6 +01408_15,14 +01775_31,2 +01953_101,4 +008402_217,7 +00417_280,1 +01092_137,9 +020572_56,2 +016432_30,14 +00023_79,3 +007212_52,4 +009622_21,0 +00453_298,9 +00450_126,13 +00417_25,6 +00615_174,11 +01428_75,14 +010942_91,11 +013302_232,8 +00578_113,14 +01366_24,17 +01971_281,12 +01261_0,2 +01901_64,14 +00102_156,16 +01490_73,7 +01568_24,2 +01834_184,8 +01597_5,14 +02005_119,11 +018392_171,4 +00079_166,9 +01692_120,1 +002802_230,14 +00128_102,4 +01423_134,0 +01622_70,14 +00519_98,11 +00677_103,14 +01045_65,4 +00276_102,11 +009642_206,8 +004532_120,9 +01101_112,13 +00456_126,12 +01953_100,4 +00490_11,2 +01007_28,12 +01707_218,0 +00566_241,8 +00475_77,9 +009352_48,7 +01578_103,14 +00772_29,7 +01191_71,7 +019412_187,14 +00505_191,7 +00276_60,11 +006742_104,14 +001022_274,16 +01688_213,5 +00867_23,14 +001022_47,16 +02172_184,14 +014882_244,5 +01366_117,17 +01278_121,12 +008372_61,11 +010012_30,2 +01509_177,0 +015972_99,0 +00413_225,14 +01509_33,2 +00350_273,9 +021912_98,7 +00601_60,9 +016052_267,11 +01330_68,9 +011612_158,17 +016882_294,2 +00280_22,14 +017672_102,14 +01748_28,0 +01437_41,11 +02005_28,11 +02054_92,12 +01582_74,2 +02030_167,16 +01877_47,4 +01278_193,2 +01494_72,7 +00607_118,5 +01228_157,14 +000792_101,1 +002752_31,14 +00462_210,14 +00951_41,0 +01191_36,14 +01058_142,2 +01977_162,8 +014272_78,17 +01977_215,8 +007092_59,19 +01165_86,5 +00550_121,14 +00615_102,1 +017692_159,9 +00703_132,14 +00024_43,7 +00417_52,17 +005092_137,12 +01692_23,2 +01144_53,9 +01228_10,14 +007212_250,14 +00821_139,14 +01692_132,5 +019712_150,12 +00280_12,14 +013302_39,9 +00628_127,14 +016052_91,5 +016882_222,5 +00474_47,2 +018342_190,8 +02042_11,14 +00282_109,14 +005882_210,12 +01767_66,14 +00442_251,4 +00485_263,4 +00102_58,16 +01493_213,1 +00821_98,5 +016842_14,14 +00934_28,1 +00628_60,7 +00474_266,2 +01834_38,6 +01278_33,2 +00709_152,5 +02094_162,2 +006972_51,12 +00181_77,0 +001602_142,11 +014272_35,9 +00793_172,14 +020572_143,3 +00783_95,17 +021462_12,14 +02172_183,14 +01702_23,4 +018132_46,11 +014272_2,14 +01409_28,12 +009512_116,0 +00102_191,16 +01929_52,0 +014972_49,12 +005282_49,2 +01763_180,12 +000092_15,12 +01165_54,5 +009642_123,8 +00607_50,6 +00660_227,0 +00539_237,1 +01333_16,2 +00350_95,5 +00474_186,2 +00128_209,4 +01971_237,12 +017692_155,9 +018122_6,2 +00124_134,19 +00350_3,14 +00088_73,5 +007832_87,17 +01366_42,17 +00474_52,2 +00276_91,11 +01924_172,14 +00350_4,14 +008252_15,4 +00438_28,2 +019042_19,2 +00503_26,6 +019242_244,14 +018122_10,2 +00453_8,11 +01953_140,4 +01568_142,12 +01775_171,12 +017672_140,12 +01693_250,0 +008402_193,7 +01437_31,11 +012612_32,2 +01361_33,2 +01924_173,14 +01408_49,14 +01948_136,13 +008372_54,11 +011912_28,14 +02027_29,18 +02049_116,13 +02012_79,17 +01046_26,7 +01501_81,4 +004172_68,17 +01971_203,2 +01134_194,10 +010942_100,2 +01427_46,17 +00768_21,7 +01366_130,5 +01829_7,2 +00009_200,12 +01283_68,14 +019252_270,8 +02021_72,11 +01007_84,0 +00840_275,2 +012402_189,4 +00776_100,14 +00413_26,0 +01834_9,14 +004532_69,9 +00453_247,9 +00314_293,4 +01488_76,0 +01228_259,14 +00660_60,0 +00350_153,9 +01087_140,5 +02030_263,16 +007762_79,4 +01058_81,4 +00609_87,14 +005092_101,2 +00102_277,16 +01568_102,12 +016932_132,0 +00475_296,9 +00848_126,17 +00730_75,18 +01541_65,5 +01948_19,14 +01437_285,11 +02005_193,11 +01007_75,0 +01001_205,5 +01278_50,2 +02021_63,11 +00546_124,3 +014232_47,2 +005882_221,2 +01001_280,5 +01494_36,7 +01948_90,13 +001242_154,19 +01925_253,8 +014072_5,4 +01941_157,14 +010012_6,2 +02049_260,3 +018792_41,4 +00024_59,7 +01494_1,14 +00535_169,0 +016052_124,5 +01493_6,11 +007092_125,4 +00688_83,4 +00730_30,17 +01210_106,6 +01091_128,5 +007212_125,14 +01959_73,6 +00394_68,17 +00747_36,5 +02042_8,14 +006742_34,14 +00159_29,0 +014072_43,2 +01408_216,14 +01853_36,7 +019412_101,14 +019712_182,4 +02049_98,13 +00588_80,13 +01007_13,2 +00607_58,6 +02049_195,13 +018772_198,4 +02094_109,12 +00276_8,14 +004532_61,9 +02028_21,15 +01706_85,2 +00232_6,14 +00721_109,14 +00350_85,5 +01092_42,17 +00979_10,5 +017232_2,4 +00841_67,14 +016922_23,2 +007832_19,2 +004172_112,6 +018342_33,6 +00417_222,7 +02127_144,17 +01723_149,15 +01981_141,14 +00601_94,0 +01007_291,3 +01092_167,5 +02187_213,16 +00722_26,17 +01134_145,10 +010652_43,18 +00566_107,3 +01437_138,11 +00821_65,5 +01408_96,14 +016932_5,4 +00453_187,9 +01501_83,12 +00721_27,12 +006092_58,11 +01488_239,5 +005392_221,1 +01045_113,4 +02127_112,17 +01228_229,14 +00417_71,17 +01693_78,0 +017692_108,2 +00242_221,12 +017072_171,0 +00314_146,4 +01210_125,6 +01423_11,2 +02172_68,12 +00964_166,8 +01240_134,12 +00275_50,14 +01769_17,2 +009162_163,2 +00453_141,9 +00505_134,14 +019712_39,2 +01412_7,4 +00615_92,11 +00023_53,3 +00837_46,11 +017072_136,7 +01568_89,2 +01497_11,0 +01488_198,13 +01688_42,5 +01509_246,11 +01812_107,2 +01723_134,15 +01879_76,5 +018772_199,4 +01272_104,2 +010872_253,5 +00474_253,2 +01007_107,0 +00505_81,5 +01049_19,7 +01929_153,0 +008402_288,2 +01210_294,9 +01191_54,7 +01769_42,0 +00607_82,11 +00228_271,11 +016982_128,14 +02054_204,2 +01412_13,4 +012402_141,12 +00546_158,15 +01092_227,9 +005092_16,12 +02005_31,11 +02094_112,12 +01001_297,5 +01509_65,0 +016922_133,5 +01541_6,14 +00772_93,14 +00333_162,2 +02054_117,14 +02057_42,2 +01904_17,2 +007222_66,17 +017482_65,0 +008402_220,7 +00128_238,12 +018132_11,11 +00276_7,14 +021462_29,11 +00275_113,14 +00697_104,4 +02162_47,17 +01144_52,9 +00674_122,14 +00333_74,0 +010012_204,5 +01829_54,12 +00102_147,16 +01953_70,12 +00697_53,12 +01925_94,3 +02127_292,17 +00837_85,11 +00462_110,13 +00697_30,1 +00615_8,11 +00009_40,2 +01971_131,12 +00413_147,0 +001602_45,11 +01108_30,15 +00111_47,17 +005392_73,1 +01707_145,1 +001022_19,2 +00628_31,7 +00079_206,9 +002802_211,12 +00128_103,4 +00280_18,14 +015972_85,0 +01428_84,14 +01972_43,3 +01427_87,4 +00729_248,14 +00628_140,14 +01723_29,15 +00957_88,0 +000092_102,12 +019042_90,2 +01101_93,1 +005062_115,2 +000242_70,7 +01879_31,4 +007762_28,14 +00275_94,12 +002802_171,12 +017672_223,12 +00296_41,7 +01219_29,5 +000792_100,1 +00546_199,14 +00588_63,13 +017692_7,2 +01941_53,14 +001242_17,4 +01775_144,4 +02138_255,14 +00228_82,1 +00892_98,2 +00426_25,0 +01814_38,5 +019412_181,14 +01707_249,0 +01971_184,4 +010942_11,14 +01423_231,12 +00964_189,8 +01775_71,12 +01191_133,2 +01597_23,0 +01962_76,0 +000792_187,9 +012402_166,12 +01366_135,5 +010652_115,14 +019042_114,12 +00442_198,4 +00703_12,2 +000092_70,0 +02021_98,5 +00426_142,0 +000792_54,9 +00539_254,1 +008922_93,2 +00275_55,14 +00009_13,2 +014882_17,13 +00951_130,0 +00175_21,4 +005502_67,18 +000232_20,2 +00314_232,12 +00438_4,2 +00280_73,12 +018342_219,8 +01044_51,4 +01412_30,0 +00232_174,14 +007222_0,17 +00783_28,2 +00287_1,4 +008922_72,2 +02027_61,5 +00408_69,1 +01763_39,4 +00615_165,11 +016932_189,0 +02005_262,11 +00490_290,11 +01787_72,9 +01812_63,4 +018342_144,8 +00718_2,2 +01283_25,2 +01962_1,0 +012282_251,14 +015972_78,0 +008252_8,12 +01045_281,4 +016052_190,11 +01962_71,0 +00867_44,18 +019412_217,14 +00474_276,2 +00232_108,13 +014372_253,11 +004082_231,11 +00567_14,2 +01971_22,2 +000792_17,9 +01812_68,4 +00962_55,3 +00709_231,19 +00867_67,0 +00535_225,5 +01488_124,13 +01283_2,14 +00242_235,12 +01228_129,14 +013302_180,13 +01240_263,4 +013302_138,6 +011612_44,17 +00485_35,2 +011912_189,14 +00242_255,4 +01767_139,12 +016932_229,0 +01427_15,14 +00009_215,7 +01256_57,4 +00607_95,6 +004672_37,11 +00350_18,14 +01361_289,15 +00025_22,17 +01045_152,4 +00128_165,2 +019252_209,8 +01001_153,5 +021912_90,7 +019412_158,14 +01119_26,11 +001022_238,16 +00024_6,2 +006742_40,12 +005392_190,1 +00342_45,17 +01092_22,17 +01707_173,4 +01692_150,14 +01351_47,17 +005882_59,13 +02062_98,4 +00442_87,2 +00783_133,12 +00450_67,15 +01448_19,14 +01191_48,2 +00506_64,6 +00490_158,12 +02172_171,14 +00485_33,2 +00417_140,6 +003062_37,7 +01901_78,5 +01145_142,4 +018392_3,14 +010912_242,2 +00577_8,14 +014882_122,13 +01812_88,2 +00079_52,9 +01145_190,4 +00462_105,13 +01977_120,8 +00837_105,11 +00848_31,17 +01371_17,4 +018772_193,4 +00703_75,11 +00474_265,2 +016842_20,14 +01941_70,14 +001112_53,17 +01371_63,14 +01924_36,14 +01748_20,0 +010652_25,18 +00333_163,2 +00287_23,4 +01493_146,1 +00124_234,0 +012562_110,14 +01330_96,9 +01929_174,0 +020572_64,12 +01256_26,4 +01351_3,2 +00065_205,1 +00718_78,19 +01972_249,14 +018342_37,6 +01409_9,14 +009162_42,2 +016882_180,5 +010942_29,11 +01094_83,11 +00417_80,17 +00490_141,2 +018792_87,4 +010872_147,5 +01497_46,12 +01688_44,5 +004532_256,9 +001242_66,4 +004532_165,9 +01925_169,8 +00964_220,3 +00566_102,3 +01636_74,0 +01408_202,14 +01509_69,0 +01409_242,14 +00935_25,7 +017482_70,0 +012402_78,4 +02054_196,2 +01707_162,0 +01925_88,3 +00065_174,1 +00485_146,13 +01834_257,8 +017672_37,14 +01240_292,4 +014282_13,14 +019412_27,14 +01210_20,7 +019712_91,12 +01865_0,14 +001022_114,16 +01272_43,2 +00841_86,14 +02030_270,16 +01707_123,0 +021912_113,14 +00993_41,14 +01145_218,4 +01408_56,14 +02177_49,12 +017692_164,11 +01045_120,4 +00065_26,1 +02005_187,11 +00442_280,4 +00124_128,19 +00088_21,5 +013712_21,12 +01408_155,14 +00011_93,2 +00535_56,2 +00503_205,9 +016932_280,0 +01834_70,8 +00892_60,2 +02138_187,13 +01408_241,14 +00962_62,3 +01948_72,13 +00041_138,7 +01087_231,5 +01971_68,12 +007092_254,19 +01261_110,2 +02191_22,7 +012612_36,2 +00566_181,8 +00280_3,14 +00563_67,9 +002752_150,14 +02057_133,3 +00333_31,2 +01941_85,14 +00442_65,2 +001022_194,16 +005092_39,2 +01626_24,7 +009642_70,3 +017672_119,14 +01240_117,4 +008832_22,11 +017672_24,14 +002802_81,4 +00442_90,2 +00840_183,7 +00607_111,6 +018392_101,11 +00772_80,5 +01210_60,17 +01787_78,9 +012282_80,14 +014372_176,11 +012192_20,5 +013302_189,13 +005392_72,1 +019252_7,14 +000242_115,2 +02005_278,11 +00467_23,11 +00474_97,2 +01261_31,2 +020572_150,3 +00128_236,4 +00160_132,11 +007222_20,17 +01182_105,14 +01330_177,1 +01981_4,14 +00993_281,14 +00768_56,7 +01488_209,0 +00079_62,9 +02127_236,17 +00609_55,11 +018392_177,12 +012722_91,2 +007092_78,19 +01240_278,12 +01045_199,4 +00475_279,1 +011912_73,7 +004082_247,11 +01428_17,4 +012402_117,4 +02028_37,6 +00041_48,12 +00615_210,11 +01909_92,2 +012282_63,12 +01626_113,7 +00875_69,2 +01509_298,11 +00681_46,5 +01045_242,4 +01929_131,0 +01361_165,3 +014232_107,0 +01812_118,2 +008402_75,2 +00175_49,17 +005392_178,1 +01092_14,17 +01924_180,14 +00539_90,1 +02146_105,18 +02088_42,0 +01925_191,8 +019252_186,8 +014882_126,13 +02030_165,16 +00413_12,14 +00609_23,11 +00539_37,6 +01839_185,1 +01626_40,7 +012282_68,14 +010012_137,5 +00615_82,11 +00011_41,1 +02187_294,16 +01092_34,17 +01834_236,8 +012722_147,2 +00821_36,5 +020052_68,11 +00538_3,14 +01769_20,2 +021722_150,14 +000232_185,2 +004672_9,11 +01044_155,12 +005062_37,2 +00951_25,0 +00275_101,14 +005502_23,18 +01839_87,11 +013302_297,9 +00160_269,13 +005092_227,2 +00382_37,17 +016882_129,14 +018792_89,12 +021912_83,7 +005282_212,0 +00124_87,19 +01087_275,5 +01044_211,2 +012722_94,2 +00550_6,5 +014272_46,17 +00747_54,4 +016432_108,14 +01278_25,2 +005392_147,1 +01769_23,2 +01091_88,16 +016882_190,5 +00867_116,5 +01408_40,14 +011612_247,17 +007292_129,14 +01568_94,2 +01058_66,2 +01001_140,5 +00892_63,2 +00761_268,3 +008922_27,0 +005392_212,1 +00228_204,9 +009642_154,8 +01623_71,11 +01330_170,3 +00840_265,2 +00883_39,11 +01058_143,2 +00934_24,7 +00681_82,14 +018772_211,4 +01924_54,14 +00776_89,14 +00546_172,14 +00442_14,14 +01814_74,11 +016882_22,5 +00453_72,9 +00538_69,1 +00158_84,5 +01366_108,17 +00242_274,4 +00111_30,17 +01087_134,5 +01688_236,5 +01145_186,4 +02030_137,16 +005392_162,17 +00228_241,11 +021722_247,14 +02049_112,13 +007212_223,14 +00566_41,6 +01431_124,11 +00793_191,14 +01839_175,12 +02187_190,16 +00660_19,14 +00024_24,7 +010012_205,5 +01044_14,4 +01953_122,12 +01428_32,14 +01219_21,5 +00730_134,14 +00390_58,5 +01408_106,14 +020572_39,2 +002802_139,12 +01723_85,15 +00505_173,11 +01165_39,5 +01044_82,12 +02005_140,11 +00615_50,11 +01971_272,4 +016882_241,5 +01972_202,3 +007182_111,19 +00503_70,6 +01941_171,14 +01688_59,5 +005502_29,18 +01882_43,11 +00957_61,2 +017072_162,0 +01065_59,18 +01941_11,14 +01953_158,4 +01145_158,4 +01597_54,0 +01501_17,4 +012722_110,2 +007292_146,14 +01092_26,17 +007292_142,14 +01272_166,2 +01981_129,14 +00314_191,4 +00848_98,17 +01814_244,5 +017692_282,2 +009352_118,14 +02042_141,14 diff --git a/custom_data/train_00761_no_shape_avg_uv.npy b/custom_data/train_00761_no_shape_avg_uv.npy new file mode 100644 index 0000000..c745aed Binary files /dev/null and b/custom_data/train_00761_no_shape_avg_uv.npy differ diff --git a/custom_data/train_cape_f_03223_SL_2_no_shape_avg_uv.npy b/custom_data/train_cape_f_03223_SL_2_no_shape_avg_uv.npy new file mode 100644 index 0000000..0a1c0f4 Binary files /dev/null and b/custom_data/train_cape_f_03223_SL_2_no_shape_avg_uv.npy differ diff --git a/custom_data/train_cape_f_03223_SS_2_no_shape_avg_uv.npy b/custom_data/train_cape_f_03223_SS_2_no_shape_avg_uv.npy new file mode 100644 index 0000000..d53a161 Binary files /dev/null and b/custom_data/train_cape_f_03223_SS_2_no_shape_avg_uv.npy differ diff --git a/custom_data/train_cape_f_03223_SS_no_shape_skirt_avg_uv.npy b/custom_data/train_cape_f_03223_SS_no_shape_skirt_avg_uv.npy new file mode 100644 index 0000000..2e77e15 Binary files /dev/null and b/custom_data/train_cape_f_03223_SS_no_shape_skirt_avg_uv.npy differ diff --git a/custom_data/train_cape_m_00032_SL_2_no_shape_avg_uv.npy b/custom_data/train_cape_m_00032_SL_2_no_shape_avg_uv.npy new file mode 100644 index 0000000..5b46556 Binary files /dev/null and b/custom_data/train_cape_m_00032_SL_2_no_shape_avg_uv.npy differ diff --git a/custom_data/train_cape_m_00032_SL_no_shape_avg_uv.npy b/custom_data/train_cape_m_00032_SL_no_shape_avg_uv.npy new file mode 100644 index 0000000..f240bca Binary files /dev/null and b/custom_data/train_cape_m_00032_SL_no_shape_avg_uv.npy differ diff --git a/custom_data/train_dress_30k_no_shape_avg_uv.npy b/custom_data/train_dress_30k_no_shape_avg_uv.npy new file mode 100644 index 0000000..8fb8d0c Binary files /dev/null and b/custom_data/train_dress_30k_no_shape_avg_uv.npy differ diff --git a/custom_data/train_jumpsuit_30k_no_shape_avg_uv.npy b/custom_data/train_jumpsuit_30k_no_shape_avg_uv.npy new file mode 100644 index 0000000..e2e3029 Binary files /dev/null and b/custom_data/train_jumpsuit_30k_no_shape_avg_uv.npy differ diff --git a/custom_data/train_no_shape_skirt_avg_uv.npy b/custom_data/train_no_shape_skirt_avg_uv.npy new file mode 100644 index 0000000..ac60c6e Binary files /dev/null and b/custom_data/train_no_shape_skirt_avg_uv.npy differ diff --git a/custom_data/uv_map/stretched_uv_map_3.npy b/custom_data/uv_map/stretched_uv_map_3.npy new file mode 100644 index 0000000..5bd87e3 Binary files /dev/null and b/custom_data/uv_map/stretched_uv_map_3.npy differ diff --git a/custom_data/uv_map/uv_data_plane_stretched_front_high.npz b/custom_data/uv_map/uv_data_plane_stretched_front_high.npz new file mode 100644 index 0000000..9d25262 Binary files /dev/null and b/custom_data/uv_map/uv_data_plane_stretched_front_high.npz differ diff --git a/custom_data/uv_map/uv_data_plane_stretched_front_low.npz b/custom_data/uv_map/uv_data_plane_stretched_front_low.npz new file mode 100644 index 0000000..1a6b144 Binary files /dev/null and b/custom_data/uv_map/uv_data_plane_stretched_front_low.npz differ diff --git a/custom_data/uv_map/uv_data_smpl_2.npz b/custom_data/uv_map/uv_data_smpl_2.npz new file mode 100644 index 0000000..f200b6f Binary files /dev/null and b/custom_data/uv_map/uv_data_smpl_2.npz differ diff --git a/custom_data/uv_map/uv_data_smpl_2_less_dense.npz b/custom_data/uv_map/uv_data_smpl_2_less_dense.npz new file mode 100644 index 0000000..7d1904f Binary files /dev/null and b/custom_data/uv_map/uv_data_smpl_2_less_dense.npz differ diff --git a/custom_utils/create_uv_map.py b/custom_utils/create_uv_map.py new file mode 100644 index 0000000..5958166 --- /dev/null +++ b/custom_utils/create_uv_map.py @@ -0,0 +1,596 @@ +import os +import sys +import shutil +import tqdm +import random +import math +import collections +import tps +import numpy as np +import scipy as sp +import trimesh as tm +import cmapy as cm +import scipy.io as sio +import matplotlib.pyplot as plt +import plotly.express as ex + + + +def m2uv_array(m2uv, is_smpl_orig=False): + result = np.zeros((14475 if not is_smpl_orig else 3638, 2), dtype=np.int32) + for k, v in m2uv.items(): + if len(v) == 2: + result[k] = list(v) + elif len(v) == 1: + x = v.pop() + result[k] = [x, x] + else: + assert False + + return result + + +def get_body(): + smpl = SMPL('FeatureLines/superSMPL') + pose = np.zeros((1, 72), dtype=np.float32) + beta = np.zeros((1, 11), dtype=np.float32) + R = smpl.run_rodrigues(pose) + T, _, _ = smpl.run(R, beta, True) + return np.squeeze(T) + + +def plot_3d(x, y=None): + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(111, projection='3d') + ax.set_xlim3d(-1, 1) + ax.set_ylim3d(-1, 1) + ax.set_zlim3d(-1, 1) + ax.set_xlabel("X") + ax.set_ylabel("Y") + ax.set_zlabel("Z") + ax.scatter(x[:, 0], x[:, 1], x[:, 2], s=5) + if y is not None: + ax.scatter(y[:, 0], y[:, 1], y[:, 2], s=5) + plt.show() + +def plot_uv(x, y=None): + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(111) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.scatter(x[:, 0], x[:, 1]) + if y is not None: + ax.scatter(y[:, 0], y[:, 1]) + plt.show() + +""" +Mesh to UV map +Computes correspondences between 3D mesh and UV map +NOTE: 3D mesh vertices can have multiple correspondences with UV vertices +""" +def mesh2UV(F, Ft): + m2uv = {v: set() for f in F for v in f} + for f, ft in zip(F, Ft): + for v, vt in zip(f, ft): + m2uv[v].add(vt) + # m2uv = {k:list(v) for k,v in m2uv.items()} + return m2uv + + +def filter_m2u(m2u, to_keep): + for key in m2u: + if len(m2u[key]) == 2: + v = list(m2u[key]) + if v[0] in to_keep: + m2u[key].remove(v[1]) + else: + m2u[key].remove(v[0]) + return m2u + + +def convert_to_numbers(m2u): + for key in m2u: + m2u[key] = m2u[key].pop() + return m2u + + +def get_masked_index(mask, index): + m = np.zeros((mask.shape[0]), dtype=bool) + m[index] = True + m = m[mask] + new_index = np.argmax(m) + return new_index + + +def get_closest_point(verts_1, verts_2): + dist = sp.spatial.distance.cdist(verts_1, verts_2) + closest = np.argmin(dist, axis=-1) + return closest + +def get_normal_edge(p1, p2): + d = p2 - p1 + return np.array([-d[1], d[0]]) + +def get_normal_vertex(p1, p2, p3): + n1 = get_normal_edge(p1, p2) + n2 = get_normal_edge(p2, p3) + n = (n1 + n2) + n = n / np.linalg.norm(n) / 20 + return n + + +def get_distance(p1, p2, points): + d = np.array([np.linalg.norm(np.cross(p2 - p1, point - p1)) / np.linalg.norm(p2 - p1) for point in points]) + return d + + +def get_normals(verts): + v = verts.copy() + v = np.concatenate([v[-1][np.newaxis, :], v, v[0][np.newaxis, :]]) + normals = np.zeros_like(verts) + for i in range(1, v.shape[0] - 1): + normals[i - 1] = get_normal_vertex(v[i - 1], v[i], v[i + 1]) + return normals + + +def get_closest_points_normals(verts1, verts2): + dist_2 = sp.spatial.distance.cdist(verts1, verts2) + normals = get_normals(verts1) + + # fig = plt.figure(figsize=(15, 15)) + # ax = fig.add_subplot(111) + # ax.set_xlim(0, 1) + # ax.set_ylim(0, 1) + # ax.set_aspect('equal') + # ax.scatter(verts1[:, 0], verts1[:, 1]) + # for p1, p2 in zip(verts1, verts1 + normals): + # ax.plot([p1[0], p2[0]], [p1[1], p2[1]]) + # plt.show() + + closest = [] + i = 0 + for p1, p2 in zip(verts1, verts1 + normals): + dist = get_distance(p1, p2, verts2) + closest.append(np.argmin(dist + dist_2[i, :])) + i += 1 + + return np.array(closest) + + +def back(): + # load data + data_body = np.load("Blender/uv_data_1.npz", allow_pickle=True) + data_back = np.load("Blender/uv_data_plane_1_2.npz", allow_pickle=True) + + # translate back uv to match body + uv_back = data_back.f.Vt + # uv_back[:, 0] = uv_back[:, 0] + 0.1 + # uv_back[:, 1] = uv_back[:, 1] + 0.42 + + # find front and back indices in uv + uv_verts = np.append(data_body.f.Vt, np.zeros((data_body.f.Vt.shape[0], 1)), axis=-1) + m = tm.Trimesh(uv_verts, data_body.f.Ft, process=False, validate=False) + front, back = tm.graph.connected_components(m.edges, min_len=1, nodes=None, engine=None) + + # get mesh to uv mapping for the back vertices + m2u_body = mesh2UV(data_body.f.F, data_body.f.Ft) + m2u_body = filter_m2u(m2u_body, set(back)) + m2u_body = convert_to_numbers(m2u_body) + + m2u_back = mesh2UV(data_back.f.F, data_back.f.Ft) + m2u_back = convert_to_numbers(m2u_back) + + # create mask for filtering vertices belonging to the back + body_back_mask = np.zeros((data_body.f.Vt.shape[0]), dtype=bool) + body_back_mask[back] = True + + # define which points should match after the transform on the mesh + matching_points = np.array([[3284, 3], [9557, 13], [9278, 15], [8095, 1], [10597, 10], [10602, 17], [7114, 9], [6989, 16], [6983, 11], [4219, 0], [5628, 14], [5908, 12], [1447, 2], [1086, 5], [21, 8], [33, 4], [1888, 7], [2931, 6]]) + + # map matching point to uv coordinates + for i in range(matching_points.shape[0]): + matching_points[i, :] = [get_masked_index(body_back_mask, m2u_body[matching_points[i,0]]), m2u_back[matching_points[i, 1]]] + + x = data_body.f.Vt[body_back_mask, :] + y = uv_back + + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(121) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(x[:, 0], x[:, 1]) + if y is not None: + ax.scatter(y[:, 0], y[:, 1]) + for pair in matching_points: + ax.scatter([x[pair[0], 0], y[pair[1], 0]], [x[pair[0], 1], y[pair[1], 1]], s=50) + + # get transformation from body to back contour + source = x[matching_points[:, 0], :] + destination = y[matching_points[:, 1], :] + trans = tps.TPS(source, destination) + transformed = trans(data_body.f.Vt[back, :]) + + ax = fig.add_subplot(122) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(transformed[:, 0], transformed[:, 1]) + if y is not None: + ax.scatter(y[:, 0], y[:, 1]) + for pair in matching_points: + ax.scatter([transformed[pair[0], 0], y[pair[1], 0]], [transformed[pair[0], 1], y[pair[1], 1]], s=50) + + plt.show() + + data_back_high = np.load("Blender/uv_data_plane_1_high_res.npz", allow_pickle=True) + y_high = data_back_high.f.Vt + # y_high[:, 0] = y_high[:, 0] + 0.1 + # y_high[:, 1] = y_high[:, 1] + 0.42 + + closest_points = get_closest_points_normals(y_high, transformed) + # closest_points = get_closest_point(y_high, transformed) + unique_mask = np.zeros_like(closest_points, dtype=bool) + unique_mask[np.unique(closest_points, return_index=True)[1]] = True + matching_points = np.array([closest_points[unique_mask], np.array(range(y_high.shape[0]))[unique_mask]]).T + # matching_points_2 = [] + # for i, p in enumerate(matching_points): + # if i % 10 == 0: + # matching_points_2.append(p) + # matching_points = np.array(matching_points_2) + + source_2 = transformed[matching_points[:, 0], :] + destination_2 = y_high[matching_points[:, 1], :] + trans_2 = tps.TPS(source_2, destination_2) + transformed_2 = trans_2(transformed) + + + + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(121) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(source_2[:, 0], source_2[:, 1]) + ax.scatter(destination_2[:, 0], destination_2[:, 1]) + for i, pair in enumerate(zip(source_2, destination_2)): + if i % 5 == 0: + s, d = pair + ax.scatter([s[0], d[0]], [s[1], d[1]]) + + ax = fig.add_subplot(122) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(transformed_2[:, 0], transformed_2[:, 1]) + ax.scatter(y_high[:, 0], y_high[:, 1]) + plt.show() + + return transformed_2 + + +def match_back_to_front(front_uv): + # load data + data_body = np.load("Blender/uv_data_smpl_2.npz", allow_pickle=True) + # data_back = np.load("Blender/uv_data_plane_1_2.npz", allow_pickle=True) + + # translate back uv to match body + # uv_back = data_back.f.Vt + # uv_back[:, 0] = uv_back[:, 0] + 0.1 + # uv_back[:, 1] = uv_back[:, 1] + 0.42 + + # find front and back indices in uv + uv_verts = np.append(data_body.f.Vt, np.zeros((data_body.f.Vt.shape[0], 1)), axis=-1) + m = tm.Trimesh(uv_verts, data_body.f.Ft, process=False, validate=False) + front, back = tm.graph.connected_components(m.edges, min_len=1, nodes=None, engine=None) + + # get mesh to uv mapping for the back vertices + m2u_body = mesh2UV(data_body.f.F, data_body.f.Ft) + m2u_body = filter_m2u(m2u_body, set(back)) + m2u_body = convert_to_numbers(m2u_body) + + # m2u_back = mesh2UV(data_back.f.F, data_back.f.Ft) + # m2u_back = convert_to_numbers(m2u_back) + + # create mask for filtering vertices belonging to the back + body_back_mask = np.zeros((data_body.f.Vt.shape[0]), dtype=bool) + body_back_mask[back] = True + body_front_mask = np.zeros((data_body.f.Vt.shape[0]), dtype=bool) + body_front_mask[front] = True + + # define which points should match after the transform on the mesh + # matching_points = np.array([[3284, 3], [9557, 13], [9278, 15], [8095, 1], [10597, 10], [10602, 17], [7114, 9], [6989, 16], [6983, 11], [4219, 0], [5628, 14], [5908, 12], [1447, 2], [1086, 5], [21, 8], [33, 4], [1888, 7], [2931, 6]]) + + # # map matching point to uv coordinates + # for i in range(matching_points.shape[0]): + # matching_points[i, :] = [get_masked_index(body_back_mask, m2u_body[matching_points[i,0]]), m2u_back[matching_points[i, 1]]] + + m2u_body_all = mesh2UV(data_body.f.F, data_body.f.Ft) + m2u_body_all = m2uv_array(m2u_body_all) + border_pairs = m2u_body_all[:, 0] != m2u_body_all[:, 1] + border_pairs = m2u_body_all[border_pairs, :] + matching_points = border_pairs + matching_points_sorted = [] + for p in matching_points: + if p[0] in front: + matching_points_sorted.append([p[0], p[1]]) + elif p[0] in back: + matching_points_sorted.append([p[1], p[0]]) + else: + assert False + # add neck V shape control point + matching_points_sorted.append([m2u_body_all[10228][0], m2u_body_all[33][0]]) + matching_points = np.array(matching_points_sorted) + mm = matching_points.copy() + + for i in range(matching_points.shape[0]): + matching_points[i, :] = [get_masked_index(body_back_mask, matching_points[i,1]), get_masked_index(body_front_mask, matching_points[i,0])] + + temp = np.zeros_like(data_body.f.Vt) + temp[front, :] = front_uv + + x = data_body.f.Vt[body_back_mask, :] + y = temp[body_front_mask, :] # front_uv # + + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(121) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(x[:, 0], x[:, 1]) + if y is not None: + ax.scatter(y[:, 0], y[:, 1]) + for pair in matching_points: + ax.scatter([x[pair[0], 0], y[pair[1], 0]], [x[pair[0], 1], y[pair[1], 1]], s=50) + + # get transformation from body to back contour + source = x[matching_points[:, 0], :] + destination = y[matching_points[:, 1], :] + trans = tps.TPS(source, destination) + transformed = trans(data_body.f.Vt[back, :]) + + ax = fig.add_subplot(122) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(transformed[:, 0], transformed[:, 1]) + if y is not None: + ax.scatter(y[:, 0], y[:, 1]) + for pair in matching_points: + ax.scatter([transformed[pair[0], 0], y[pair[1], 0]], [transformed[pair[0], 1], y[pair[1], 1]], s=50) + + plt.show() + + + return transformed + + +def generate_mask(): + import cv2 + res = 1024 + front = np.load("Blender/uv_data_plane_0_high_res_2.npz", allow_pickle=True) + back = np.load("Blender/uv_data_plane_1_high_res_2.npz", allow_pickle=True) + points = np.round(np.concatenate((front.f.Vt, back.f.Vt)) * res).astype(np.int32) + img = np.zeros((res, res, 3)) + img[points[:, 0], points[:, 1], :] = 255 + cv2.imwrite('MeshUtils/mask_1024.png', img) + + # do paint now + + img = cv2.imread('MeshUtils/mask_1024_2.png') + img = img[:, :, 0] == 255 + np.save('MeshUtils/mask_1024.npy', img) + +def generate_mask_2(): + import cv2 + res = 256 + front = np.load("Blender/uv_data_plane_stretched_front_high_extra.npz", allow_pickle=True) + back = np.load("Blender/uv_data_plane_stretched_front_high_extra.npz", allow_pickle=True) + points = np.floor(np.concatenate((front.f.Vt, back.f.Vt + [1, 0])) * res).astype(np.int32) + img = np.zeros((res * 2, res, 3)) + img[points[:, 0], points[:, 1], :] = 255 + cv2.imwrite('MeshUtils/mask_256x512.png', img) + + # do paint now + + img = cv2.imread('MeshUtils/mask_256x512.png') + img = img[:, :, 0] > 240 + np.save('MeshUtils/mask_256x512.npy', img) + + pass + + +def generate_uv_mask_border(): + import cv2 + mask = np.load('MeshUtils/mask_256x512.npy') + uv_res = 256 + mask_border = (cv2.resize(mask * 255.0, (uv_res, uv_res * 2)) / 255).astype(bool)[:, :, np.newaxis] + mask_border = cv2.erode(mask_border.astype(np.float32), cv2.getStructuringElement(cv2.MORPH_RECT, (2 * 2 + 1, 2 * 2 + 1), (2, 2)), iterations=1).astype(bool) + + mask[mask_border == True] = 0 + # plt.imshow(mask) + idx_front = np.transpose(np.vstack(np.nonzero(mask[:256, :])), [1,0]) + + test = np.zeros_like(mask) + test[idx_front[:,0], idx_front[:,1]] = 1 + idx_back = idx_front.copy() + idx_back[:, 0] += 256 + test[idx_back[:,0], idx_back[:,1]] = 1 + + + pass + + + +def front(): + # load data + data_body = np.load("custom_data/uv_map/uv_data_smpl_2.npz", allow_pickle=True) + data_front = np.load("custom_data/uv_map/uv_data_plane_stretched_front_low.npz", allow_pickle=True) + + # translate back uv to match body + uv_front = data_front.f.Vt + # uv_back[:, 0] = uv_back[:, 0] + 0.1 + # uv_back[:, 1] = uv_back[:, 1] + 0.42 + + # find front and back indices in uv + uv_verts = np.append(data_body.f.Vt, np.zeros((data_body.f.Vt.shape[0], 1)), axis=-1) + m = tm.Trimesh(uv_verts, data_body.f.Ft, process=False, validate=False) + front, back = tm.graph.connected_components(m.edges, min_len=1, nodes=None, engine=None) + + # get mesh to uv mapping for the back vertices + m2u_body = mesh2UV(data_body.f.F, data_body.f.Ft) + m2u_body = filter_m2u(m2u_body, set(front)) + m2u_body = convert_to_numbers(m2u_body) + + m2u_front = mesh2UV(data_front.f.F, data_front.f.Ft) + m2u_front = convert_to_numbers(m2u_front) + + # create mask for filtering vertices belonging to the back + body_front_mask = np.zeros((data_body.f.Vt.shape[0]), dtype=bool) + body_front_mask[front] = True + + # define which points should match after the transform on the mesh + matching_points = np.array([ [9557, 12], [3284, 2], [3053, 5], [1888, 8], [10228, 4], [21, 7], [1209, 6], [1447, 3], [5908, 13], [4617, 15], [4219, 1], [6983, 10], [6989, 17], [7114, 9], [10602, 16], [10597, 11], [7884, 0], [8280, 14] ]) + # matching_points = np.array([ [9557, 12], [3284, 2], [3053, 5], [1888, 8], [10228, 4], [21, 7], [1209, 6], [1447, 3], [5908, 13], [4793, 15], [4219, 1], [6983, 10], [6989, 17], [7114, 9], [10602, 16], [10597, 11], [7884, 0], [8450, 14], [13566, 18], [11767, 19], [8668, 20], [5012, 21], [12716, 22], [10917, 23], [8280, 24], [4617, 25], [2760, 26], [911, 27] ]) + + # map matching point to uv coordinates + for i in range(matching_points.shape[0]): + matching_points[i, :] = [get_masked_index(body_front_mask, m2u_body[matching_points[i,0]]), m2u_front[matching_points[i, 1]]] + + x = data_body.f.Vt[body_front_mask, :] + y = uv_front + + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(121) + # ax.set_xlim(0, 1) + # ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(x[:, 0], x[:, 1]) + if y is not None: + ax.scatter(y[:, 0], y[:, 1]) + for pair in matching_points: + ax.scatter([x[pair[0], 0], y[pair[1], 0]], [x[pair[0], 1], y[pair[1], 1]], s=50) + + # get transformation from body to front contour + source = x[matching_points[:, 0], :] + destination = y[matching_points[:, 1], :] + trans = tps.TPS(source, destination) + transformed = trans(data_body.f.Vt[front, :]) + + # transformed = (transformed - transformed.min()) / (transformed.max() - transformed.min()) + + ax = fig.add_subplot(122) + # ax.set_xlim(0, 1) + # ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(transformed[:, 0], transformed[:, 1]) + if y is not None: + ax.scatter(y[:, 0], y[:, 1]) + for pair in matching_points: + ax.scatter([transformed[pair[0], 0], y[pair[1], 0]], [transformed[pair[0], 1], y[pair[1], 1]], s=50) + + plt.show() + + data_front_high = np.load("custom_data/uv_map/uv_data_plane_stretched_front_high.npz", allow_pickle=True) + y_high = data_front_high.f.Vt + # y_high[:, 0] = y_high[:, 0] + 0.1 + # y_high[:, 1] = y_high[:, 1] + 0.42 + + closest_points = get_closest_points_normals(y_high, transformed) + # closest_points = get_closest_point(y_high, transformed) + unique_mask = np.zeros_like(closest_points, dtype=bool) + unique_mask[np.unique(closest_points, return_index=True)[1]] = True + matching_points = np.array([closest_points[unique_mask], np.array(range(y_high.shape[0]))[unique_mask]]).T + # matching_points_2 = [] + # for i, p in enumerate(matching_points): + # if i % 10 == 0: + # matching_points_2.append(p) + # matching_points = np.array(matching_points_2) + + source_2 = transformed[matching_points[:, 0], :] + destination_2 = y_high[matching_points[:, 1], :] + trans_2 = tps.TPS(source_2, destination_2) + transformed_2 = trans_2(transformed) + + + + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(121) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(source_2[:, 0], source_2[:, 1]) + ax.scatter(destination_2[:, 0], destination_2[:, 1]) + for i, pair in enumerate(zip(source_2, destination_2)): + if i % 5 == 0: + s, d = pair + ax.scatter([s[0], d[0]], [s[1], d[1]]) + + ax = fig.add_subplot(122) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(transformed_2[:, 0], transformed_2[:, 1]) + ax.scatter(y_high[:, 0], y_high[:, 1]) + plt.show() + + return transformed_2, mesh2UV(data_body.f.F, data_body.f.Ft), front, back + + +def smoothing(): + data_body = np.load("Blender/uv_data_smpl_2.npz", allow_pickle=True) + uv_map = np.load('MeshUtils\stretched_uv_map_3.npy') + verts = np.concatenate((uv_map, np.ones((15068, 1))), axis=-1) + m = tm.Trimesh(verts, data_body.f.Ft, process=False, validate=False) + + + m2u_body_all = mesh2UV(data_body.f.F, data_body.f.Ft) + m2u_body_all = m2uv_array(m2u_body_all) + border_pairs = m2u_body_all[:, 0] != m2u_body_all[:, 1] + border_pairs = m2u_body_all[border_pairs, :] + pinned_vertices = border_pairs.reshape(-1) + + lap = tm.smoothing.laplacian_calculation(m, equal_weight=False, pinned_vertices=pinned_vertices) + # tm.smoothing.filter_laplacian(m, lamb=0.5, iterations=100, volume_constraint=False, laplacian_operator=lap) + # tm.smoothing.filter_mut_dif_laplacian(m, lamb=0.5, iterations=100, volume_constraint=False, laplacian_operator=lap) + # tm.smoothing.filter_humphrey(m, iterations=100, laplacian_operator=lap) + tm.smoothing.filter_taubin(m, iterations=100, laplacian_operator=lap) + + + x = uv_map + y = m.vertices[:, :2] + + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(211) + ax.set_xlim(0, 2) + ax.set_ylim(0, 1) + # ax.set_aspect('equal') + ax.scatter(x[:, 0], x[:, 1]) + + ax = fig.add_subplot(212) + ax.set_xlim(0, 2) + ax.set_ylim(0, 1) + # ax.set_aspect('equal') + ax.scatter(y[:, 0], y[:, 1]) + plt.show() + + + pass + + + +if __name__ == '__main__': + # generate_mask_2() + # smoothing() + # generate_uv_mask_border() + + front_uv, m2uv, front_mask, back_mask = front() + back_uv = match_back_to_front(front_uv) + # back_uv = back() + + final = np.zeros((15068, 2)) + final[front_mask] = front_uv + final[back_mask] = back_uv + [1, 0] + np.save('MeshUtils\stretched_uv_map_3.npy', final) + + pass \ No newline at end of file diff --git a/custom_utils/create_uv_map_2.py b/custom_utils/create_uv_map_2.py new file mode 100644 index 0000000..fcb99db --- /dev/null +++ b/custom_utils/create_uv_map_2.py @@ -0,0 +1,846 @@ +import os +import sys +import shutil +import tqdm +import random +import math +import collections +from tps_custom import TPS +import numpy as np +import scipy as sp +import trimesh as tm +import cmapy as cm +import scipy.io as sio +import matplotlib.pyplot as plt +import plotly.express as ex +import plotly.graph_objects as go +from scipy.spatial.distance import cdist + + + +def m2uv_array(m2uv, is_smpl_orig=False): + result = np.zeros((14475 if not is_smpl_orig else 3638, 2), dtype=np.int32) + for k, v in m2uv.items(): + if len(v) == 2: + result[k] = list(v) + elif len(v) == 1: + x = v.pop() + result[k] = [x, x] + else: + assert False + + return result + + +def get_body(): + smpl = SMPL('FeatureLines/superSMPL') + pose = np.zeros((1, 72), dtype=np.float32) + beta = np.zeros((1, 11), dtype=np.float32) + R = smpl.run_rodrigues(pose) + T, _, _ = smpl.run(R, beta, True) + return np.squeeze(T) + + +def plot_3d(x, y=None): + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(111, projection='3d') + ax.set_xlim3d(-1, 1) + ax.set_ylim3d(-1, 1) + ax.set_zlim3d(-1, 1) + ax.set_xlabel("X") + ax.set_ylabel("Y") + ax.set_zlabel("Z") + ax.scatter(x[:, 0], x[:, 1], x[:, 2], s=5) + if y is not None: + ax.scatter(y[:, 0], y[:, 1], y[:, 2], s=5) + plt.show() + +def plot_uv(x, y=None): + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(111) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.scatter(x[:, 0], x[:, 1]) + if y is not None: + ax.scatter(y[:, 0], y[:, 1]) + plt.show() + +""" +Mesh to UV map +Computes correspondences between 3D mesh and UV map +NOTE: 3D mesh vertices can have multiple correspondences with UV vertices +""" +def mesh2UV(F, Ft): + m2uv = {v: set() for f in F for v in f} + for f, ft in zip(F, Ft): + for v, vt in zip(f, ft): + m2uv[v].add(vt) + # m2uv = {k:list(v) for k,v in m2uv.items()} + return m2uv + + +def filter_m2u(m2u, to_keep): + for key in m2u: + if len(m2u[key]) == 2: + v = list(m2u[key]) + if v[0] in to_keep: + m2u[key].remove(v[1]) + else: + m2u[key].remove(v[0]) + return m2u + + +def convert_to_numbers(m2u): + for key in m2u: + m2u[key] = m2u[key].pop() + return m2u + + +def get_masked_index(mask, index): + m = np.zeros((mask.shape[0]), dtype=bool) + m[index] = True + m = m[mask] + new_index = np.argmax(m) + return new_index + + +def get_closest_point(verts_1, verts_2): + dist = sp.spatial.distance.cdist(verts_1, verts_2) + closest = np.argmin(dist, axis=-1) + return closest + +def get_normal_edge(p1, p2): + d = p2 - p1 + return np.array([-d[1], d[0]]) + +def get_normal_vertex(p1, p2, p3): + n1 = get_normal_edge(p1, p2) + n2 = get_normal_edge(p2, p3) + n = (n1 + n2) + n = n / np.linalg.norm(n) / 20 + return n + + +def get_distance(p1, p2, points): + d = np.array([np.linalg.norm(np.cross(p2 - p1, point - p1)) / np.linalg.norm(p2 - p1) for point in points]) + return d + + +def get_normals(verts): + v = verts.copy() + v = np.concatenate([v[-1][np.newaxis, :], v, v[0][np.newaxis, :]]) + normals = np.zeros_like(verts) + for i in range(1, v.shape[0] - 1): + normals[i - 1] = get_normal_vertex(v[i - 1], v[i], v[i + 1]) + return normals + + +def get_closest_points_normals(verts1, verts2): + dist_2 = sp.spatial.distance.cdist(verts1, verts2) + normals = get_normals(verts1) + + # fig = plt.figure(figsize=(15, 15)) + # ax = fig.add_subplot(111) + # ax.set_xlim(0, 1) + # ax.set_ylim(0, 1) + # ax.set_aspect('equal') + # ax.scatter(verts1[:, 0], verts1[:, 1]) + # for p1, p2 in zip(verts1, verts1 + normals): + # ax.plot([p1[0], p2[0]], [p1[1], p2[1]]) + # plt.show() + + closest = [] + i = 0 + for p1, p2 in zip(verts1, verts1 + normals): + dist = get_distance(p1, p2, verts2) + closest.append(np.argmin(dist + dist_2[i, :])) + i += 1 + + return np.array(closest) + + +def back(): + # load data + data_body = np.load("Blender/uv_data_1.npz", allow_pickle=True) + data_back = np.load("Blender/uv_data_plane_1_2.npz", allow_pickle=True) + + # translate back uv to match body + uv_back = data_back.f.Vt + # uv_back[:, 0] = uv_back[:, 0] + 0.1 + # uv_back[:, 1] = uv_back[:, 1] + 0.42 + + # find front and back indices in uv + uv_verts = np.append(data_body.f.Vt, np.zeros((data_body.f.Vt.shape[0], 1)), axis=-1) + m = tm.Trimesh(uv_verts, data_body.f.Ft, process=False, validate=False) + front, back = tm.graph.connected_components(m.edges, min_len=1, nodes=None, engine=None) + + # get mesh to uv mapping for the back vertices + m2u_body = mesh2UV(data_body.f.F, data_body.f.Ft) + m2u_body = filter_m2u(m2u_body, set(back)) + m2u_body = convert_to_numbers(m2u_body) + + m2u_back = mesh2UV(data_back.f.F, data_back.f.Ft) + m2u_back = convert_to_numbers(m2u_back) + + # create mask for filtering vertices belonging to the back + body_back_mask = np.zeros((data_body.f.Vt.shape[0]), dtype=bool) + body_back_mask[back] = True + + # define which points should match after the transform on the mesh + matching_points = np.array([[3284, 3], [9557, 13], [9278, 15], [8095, 1], [10597, 10], [10602, 17], [7114, 9], [6989, 16], [6983, 11], [4219, 0], [5628, 14], [5908, 12], [1447, 2], [1086, 5], [21, 8], [33, 4], [1888, 7], [2931, 6]]) + + # map matching point to uv coordinates + for i in range(matching_points.shape[0]): + matching_points[i, :] = [get_masked_index(body_back_mask, m2u_body[matching_points[i,0]]), m2u_back[matching_points[i, 1]]] + + x = data_body.f.Vt[body_back_mask, :] + y = uv_back + + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(121) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(x[:, 0], x[:, 1]) + if y is not None: + ax.scatter(y[:, 0], y[:, 1]) + for pair in matching_points: + ax.scatter([x[pair[0], 0], y[pair[1], 0]], [x[pair[0], 1], y[pair[1], 1]], s=50) + + # get transformation from body to back contour + source = x[matching_points[:, 0], :] + destination = y[matching_points[:, 1], :] + trans = tps.TPS(source, destination) + transformed = trans(data_body.f.Vt[back, :]) + + ax = fig.add_subplot(122) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(transformed[:, 0], transformed[:, 1]) + if y is not None: + ax.scatter(y[:, 0], y[:, 1]) + for pair in matching_points: + ax.scatter([transformed[pair[0], 0], y[pair[1], 0]], [transformed[pair[0], 1], y[pair[1], 1]], s=50) + + plt.show() + + data_back_high = np.load("Blender/uv_data_plane_1_high_res.npz", allow_pickle=True) + y_high = data_back_high.f.Vt + # y_high[:, 0] = y_high[:, 0] + 0.1 + # y_high[:, 1] = y_high[:, 1] + 0.42 + + closest_points = get_closest_points_normals(y_high, transformed) + # closest_points = get_closest_point(y_high, transformed) + unique_mask = np.zeros_like(closest_points, dtype=bool) + unique_mask[np.unique(closest_points, return_index=True)[1]] = True + matching_points = np.array([closest_points[unique_mask], np.array(range(y_high.shape[0]))[unique_mask]]).T + # matching_points_2 = [] + # for i, p in enumerate(matching_points): + # if i % 10 == 0: + # matching_points_2.append(p) + # matching_points = np.array(matching_points_2) + + source_2 = transformed[matching_points[:, 0], :] + destination_2 = y_high[matching_points[:, 1], :] + trans_2 = tps.TPS(source_2, destination_2) + transformed_2 = trans_2(transformed) + + + + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(121) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(source_2[:, 0], source_2[:, 1]) + ax.scatter(destination_2[:, 0], destination_2[:, 1]) + for i, pair in enumerate(zip(source_2, destination_2)): + if i % 5 == 0: + s, d = pair + ax.scatter([s[0], d[0]], [s[1], d[1]]) + + ax = fig.add_subplot(122) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(transformed_2[:, 0], transformed_2[:, 1]) + ax.scatter(y_high[:, 0], y_high[:, 1]) + plt.show() + + return transformed_2 + + +def match_back_to_front(front_uv): + # load data + data_body = np.load("Blender/uv_data_smpl_2.npz", allow_pickle=True) + # data_back = np.load("Blender/uv_data_plane_1_2.npz", allow_pickle=True) + + # translate back uv to match body + # uv_back = data_back.f.Vt + # uv_back[:, 0] = uv_back[:, 0] + 0.1 + # uv_back[:, 1] = uv_back[:, 1] + 0.42 + + # find front and back indices in uv + uv_verts = np.append(data_body.f.Vt, np.zeros((data_body.f.Vt.shape[0], 1)), axis=-1) + m = tm.Trimesh(uv_verts, data_body.f.Ft, process=False, validate=False) + front, back = tm.graph.connected_components(m.edges, min_len=1, nodes=None, engine=None) + + # get mesh to uv mapping for the back vertices + m2u_body = mesh2UV(data_body.f.F, data_body.f.Ft) + m2u_body = filter_m2u(m2u_body, set(back)) + m2u_body = convert_to_numbers(m2u_body) + + # m2u_back = mesh2UV(data_back.f.F, data_back.f.Ft) + # m2u_back = convert_to_numbers(m2u_back) + + # create mask for filtering vertices belonging to the back + body_back_mask = np.zeros((data_body.f.Vt.shape[0]), dtype=bool) + body_back_mask[back] = True + body_front_mask = np.zeros((data_body.f.Vt.shape[0]), dtype=bool) + body_front_mask[front] = True + + # define which points should match after the transform on the mesh + # matching_points = np.array([[3284, 3], [9557, 13], [9278, 15], [8095, 1], [10597, 10], [10602, 17], [7114, 9], [6989, 16], [6983, 11], [4219, 0], [5628, 14], [5908, 12], [1447, 2], [1086, 5], [21, 8], [33, 4], [1888, 7], [2931, 6]]) + + # # map matching point to uv coordinates + # for i in range(matching_points.shape[0]): + # matching_points[i, :] = [get_masked_index(body_back_mask, m2u_body[matching_points[i,0]]), m2u_back[matching_points[i, 1]]] + + m2u_body_all = mesh2UV(data_body.f.F, data_body.f.Ft) + m2u_body_all = m2uv_array(m2u_body_all) + border_pairs = m2u_body_all[:, 0] != m2u_body_all[:, 1] + border_pairs = m2u_body_all[border_pairs, :] + matching_points = border_pairs + matching_points_sorted = [] + for p in matching_points: + if p[0] in front: + matching_points_sorted.append([p[0], p[1]]) + elif p[0] in back: + matching_points_sorted.append([p[1], p[0]]) + else: + assert False + # add neck V shape control point + matching_points_sorted.append([m2u_body_all[10228][0], m2u_body_all[33][0]]) + matching_points = np.array(matching_points_sorted) + mm = matching_points.copy() + + for i in range(matching_points.shape[0]): + matching_points[i, :] = [get_masked_index(body_back_mask, matching_points[i,1]), get_masked_index(body_front_mask, matching_points[i,0])] + + temp = np.zeros_like(data_body.f.Vt) + temp[front, :] = front_uv + + x = data_body.f.Vt[body_back_mask, :] + y = temp[body_front_mask, :] # front_uv # + + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(121) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(x[:, 0], x[:, 1]) + if y is not None: + ax.scatter(y[:, 0], y[:, 1]) + for pair in matching_points: + ax.scatter([x[pair[0], 0], y[pair[1], 0]], [x[pair[0], 1], y[pair[1], 1]], s=50) + + # get transformation from body to back contour + source = x[matching_points[:, 0], :] + destination = y[matching_points[:, 1], :] + trans = tps.TPS(source, destination) + transformed = trans(data_body.f.Vt[back, :]) + + ax = fig.add_subplot(122) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(transformed[:, 0], transformed[:, 1]) + if y is not None: + ax.scatter(y[:, 0], y[:, 1]) + for pair in matching_points: + ax.scatter([transformed[pair[0], 0], y[pair[1], 0]], [transformed[pair[0], 1], y[pair[1], 1]], s=50) + + plt.show() + + + return transformed + + +def generate_mask(): + import cv2 + res = 1024 + front = np.load("Blender/uv_data_plane_0_high_res_2.npz", allow_pickle=True) + back = np.load("Blender/uv_data_plane_1_high_res_2.npz", allow_pickle=True) + points = np.round(np.concatenate((front.f.Vt, back.f.Vt)) * res).astype(np.int32) + img = np.zeros((res, res, 3)) + img[points[:, 0], points[:, 1], :] = 255 + cv2.imwrite('MeshUtils/mask_1024.png', img) + + # do paint now + + img = cv2.imread('MeshUtils/mask_1024_2.png') + img = img[:, :, 0] == 255 + np.save('MeshUtils/mask_1024.npy', img) + +def generate_mask_2(): + import cv2 + res = 256 + front = np.load("Blender/uv_data_plane_stretched_front_high_extra.npz", allow_pickle=True) + back = np.load("Blender/uv_data_plane_stretched_front_high_extra.npz", allow_pickle=True) + points = np.floor(np.concatenate((front.f.Vt, back.f.Vt + [1, 0])) * res).astype(np.int32) + img = np.zeros((res * 2, res, 3)) + img[points[:, 0], points[:, 1], :] = 255 + cv2.imwrite('MeshUtils/mask_256x512.png', img) + + # do paint now + + img = cv2.imread('MeshUtils/mask_256x512.png') + img = img[:, :, 0] > 240 + np.save('MeshUtils/mask_256x512.npy', img) + + pass + + +def generate_uv_mask_border(): + import cv2 + mask = np.load('MeshUtils/mask_256x512.npy') + uv_res = 256 + mask_border = (cv2.resize(mask * 255.0, (uv_res, uv_res * 2)) / 255).astype(bool)[:, :, np.newaxis] + mask_border = cv2.erode(mask_border.astype(np.float32), cv2.getStructuringElement(cv2.MORPH_RECT, (2 * 2 + 1, 2 * 2 + 1), (2, 2)), iterations=1).astype(bool) + + mask[mask_border == True] = 0 + # plt.imshow(mask) + idx_front = np.transpose(np.vstack(np.nonzero(mask[:256, :])), [1,0]) + + test = np.zeros_like(mask) + test[idx_front[:,0], idx_front[:,1]] = 1 + idx_back = idx_front.copy() + idx_back[:, 0] += 256 + test[idx_back[:,0], idx_back[:,1]] = 1 + + + pass + + + +def front(): + # load data + data_body = np.load("custom_data/uv_map/uv_data_smpl_2.npz", allow_pickle=True) + data_front = np.load("custom_data/uv_map/uv_data_plane_stretched_front_low.npz", allow_pickle=True) + + # translate back uv to match body + uv_front = data_front.f.Vt + # uv_back[:, 0] = uv_back[:, 0] + 0.1 + # uv_back[:, 1] = uv_back[:, 1] + 0.42 + + # find front and back indices in uv + uv_verts = np.append(data_body.f.Vt, np.zeros((data_body.f.Vt.shape[0], 1)), axis=-1) + m = tm.Trimesh(uv_verts, data_body.f.Ft, process=False, validate=False) + front, back = tm.graph.connected_components(m.edges, min_len=1, nodes=None, engine=None) + + # get mesh to uv mapping for the back vertices + m2u_body = mesh2UV(data_body.f.F, data_body.f.Ft) + m2u_body = filter_m2u(m2u_body, set(front)) + m2u_body = convert_to_numbers(m2u_body) + + m2u_front = mesh2UV(data_front.f.F, data_front.f.Ft) + m2u_front = convert_to_numbers(m2u_front) + + # create mask for filtering vertices belonging to the back + body_front_mask = np.zeros((data_body.f.Vt.shape[0]), dtype=bool) + body_front_mask[front] = True + + # define which points should match after the transform on the mesh + matching_points = np.array([ [9557, 12], [3284, 2], [3053, 5], [1888, 8], [10228, 4], [21, 7], [1209, 6], [1447, 3], [5908, 13], [4617, 15], [4219, 1], [6983, 10], [6989, 17], [7114, 9], [10602, 16], [10597, 11], [7884, 0], [8280, 14] ]) + # matching_points = np.array([ [9557, 12], [3284, 2], [3053, 5], [1888, 8], [10228, 4], [21, 7], [1209, 6], [1447, 3], [5908, 13], [4793, 15], [4219, 1], [6983, 10], [6989, 17], [7114, 9], [10602, 16], [10597, 11], [7884, 0], [8450, 14], [13566, 18], [11767, 19], [8668, 20], [5012, 21], [12716, 22], [10917, 23], [8280, 24], [4617, 25], [2760, 26], [911, 27] ]) + + # map matching point to uv coordinates + for i in range(matching_points.shape[0]): + matching_points[i, :] = [get_masked_index(body_front_mask, m2u_body[matching_points[i,0]]), m2u_front[matching_points[i, 1]]] + + x = data_body.f.Vt[body_front_mask, :] + y = uv_front + + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(121) + # ax.set_xlim(0, 1) + # ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(x[:, 0], x[:, 1]) + if y is not None: + ax.scatter(y[:, 0], y[:, 1]) + for pair in matching_points: + ax.scatter([x[pair[0], 0], y[pair[1], 0]], [x[pair[0], 1], y[pair[1], 1]], s=50) + + # get transformation from body to front contour + source = x[matching_points[:, 0], :] + destination = y[matching_points[:, 1], :] + trans = tps.TPS(source, destination) + transformed = trans(data_body.f.Vt[front, :]) + + # transformed = (transformed - transformed.min()) / (transformed.max() - transformed.min()) + + ax = fig.add_subplot(122) + # ax.set_xlim(0, 1) + # ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(transformed[:, 0], transformed[:, 1]) + if y is not None: + ax.scatter(y[:, 0], y[:, 1]) + for pair in matching_points: + ax.scatter([transformed[pair[0], 0], y[pair[1], 0]], [transformed[pair[0], 1], y[pair[1], 1]], s=50) + + plt.show() + + data_front_high = np.load("custom_data/uv_map/uv_data_plane_stretched_front_high.npz", allow_pickle=True) + y_high = data_front_high.f.Vt + # y_high[:, 0] = y_high[:, 0] + 0.1 + # y_high[:, 1] = y_high[:, 1] + 0.42 + + closest_points = get_closest_points_normals(y_high, transformed) + # closest_points = get_closest_point(y_high, transformed) + unique_mask = np.zeros_like(closest_points, dtype=bool) + unique_mask[np.unique(closest_points, return_index=True)[1]] = True + matching_points = np.array([closest_points[unique_mask], np.array(range(y_high.shape[0]))[unique_mask]]).T + # matching_points_2 = [] + # for i, p in enumerate(matching_points): + # if i % 10 == 0: + # matching_points_2.append(p) + # matching_points = np.array(matching_points_2) + + source_2 = transformed[matching_points[:, 0], :] + destination_2 = y_high[matching_points[:, 1], :] + trans_2 = tps.TPS(source_2, destination_2) + transformed_2 = trans_2(transformed) + + + + fig = plt.figure(figsize=(15, 15)) + ax = fig.add_subplot(121) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(source_2[:, 0], source_2[:, 1]) + ax.scatter(destination_2[:, 0], destination_2[:, 1]) + for i, pair in enumerate(zip(source_2, destination_2)): + if i % 5 == 0: + s, d = pair + ax.scatter([s[0], d[0]], [s[1], d[1]]) + + ax = fig.add_subplot(122) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.set_aspect('equal') + ax.scatter(transformed_2[:, 0], transformed_2[:, 1]) + ax.scatter(y_high[:, 0], y_high[:, 1]) + plt.show() + + return transformed_2, mesh2UV(data_body.f.F, data_body.f.Ft), front, back + + + +def faces2graph(F, v=None): + if v: v = set(v) # Only this verts + G = {} + for f in F: + for i in f: + if v and i not in v: continue + if not i in G: + G[i] = {} + for j in f: + if v and j not in v: continue + if i == j: continue + G[i][j] = 1 + return G + + +def custom_smoothing(mesh, edges, pinned, F, iterations=10): + # custom_scatter(mesh[pinned, :]).show() + + mesh_orig = mesh.copy() + G = faces2graph(F) + for _ in tqdm.tqdm(range(iterations)): + edge_lengths = np.sqrt(((mesh[edges[:,0], :] - mesh[edges[:,1], :]) ** 2 ).sum(-1)) + + edge_lengths_m = np.zeros((15068, 15068), np.float32) + edge_lengths_m[edges[:,0], edges[:,1]] = edge_lengths + edge_lengths_m[edges[:,1], edges[:,0]] = edge_lengths + + # mean_edge = edge_lengths.mean() + + # dist = cdist(mesh, mesh) + # for i in range(dist.shape[0]): + # dist[i,i] = 10000 + + # dist = sp.spatial.KDTree(mesh) + + # closest_neighbour = edge_lengths_m.argmin(axis=0) + # if edge_lengths_m[i, closest_neighbour[i]] > mean_edge: + # continue + + mesh_temp = mesh.copy() + for i in range(15068): + if i in pinned: + continue + + # closest_neighbour = edge_lengths_m[i, :].argmin() + # if edge_lengths_m[i, closest_neighbour] > mean_edge: + # continue + + neighbours = list(G[i].keys()) + neighbours_dist = edge_lengths_m[i, neighbours] + weights = neighbours_dist / neighbours_dist.sum() + weights = np.ones_like(weights) / weights.shape[0] + mesh_temp[i, :] = np.sum(mesh[neighbours, :] * weights[:, np.newaxis], axis=0) + + # neighbours_dist, neighbours = dist.query(mesh[i,:], k=10, workers=10) + # # if neighbours[0] == 15068: + # # continue + # neighbours_dist, neighbours = neighbours_dist[1:], neighbours[1:] + # weights = neighbours_dist / neighbours_dist.sum() + # mesh_temp[i, :] = np.sum(mesh[neighbours, :] * weights[:, np.newaxis], axis=0) + + # mesh_temp[i, :] = np.mean(mesh[neighbours, :], axis=0) + + # print() + + # closest_neighbour = edge_lengths_m[i, :].argmin() + # if edge_lengths_m[i, closest_neighbour] < mean_edge: + # vector = mesh[i,:] - mesh[closest_neighbour,:] + # vector = vector / np.sqrt(np.sum(vector[0] ** 2 + vector[1] ** 2 )) + # to_move = vector / 1000 + # # to_move = vector / edge_lengths_m[i, closest_neighbour] * 100 + # mesh[i, :] -= to_move + + mesh = mesh_temp + + + custom_scatter(mesh_orig, mesh).show() + print() + + return mesh + +def custom_scatter(x, y=None): + data = [go.Scatter( + x=x[:,0], + y=x[:,1], + mode='markers', + marker=dict( + size=3, + line=dict(width=0) + ), + ),] + + if y is not None: + data.append( + go.Scatter( + x=y[:,0], + y=y[:,1], + mode='markers', + marker=dict( + size=3, + line=dict(width=0) + ), + ),) + + fig = go.Figure(data=data) + + # fig.update_layout(scene_aspectmode='manual', + # scene_aspectratio=dict(x=1, y=1, z=1)) + # fig.update_layout( + # scene = dict( + # xaxis = dict(nticks=4, range=[-1,1],), + # yaxis = dict(nticks=4, range=[-1,1],), + # zaxis = dict(nticks=4, range=[-1,1],),) + # ) + + return fig + + +def smoothing(): + data_body = np.load("custom_data/uv_map/uv_data_smpl_2.npz", allow_pickle=True) + uv_map = np.load('custom_data/uv_map/stretched_uv_map_3.npy') + F = np.load("custom_utils/smpl_faces.npy").astype(np.int32) + verts = np.concatenate((uv_map, np.ones((15068, 1))), axis=-1) + m = tm.Trimesh(verts, data_body.f.Ft, process=False, validate=False) + + + m2u_body_all = mesh2UV(data_body.f.F, data_body.f.Ft) + m2u_body_all = m2uv_array(m2u_body_all) + border_pairs = m2u_body_all[:, 0] != m2u_body_all[:, 1] + border_pairs = m2u_body_all[border_pairs, :] + pinned_vertices = border_pairs.reshape(-1) + right_legs_bottom = np.nonzero(((verts[:,0] > 1).astype(np.int8) * (verts[:,0] < 1.03).astype(np.int8)).astype(bool))[0] + left_legs_bottom = np.nonzero(verts[:,0] < 0.025)[0] + top_arms = np.nonzero(verts[:,1] > 0.995)[0] + bottom_arms = np.nonzero(verts[:,1] < 0.005)[0] + pinned_vertices = np.concatenate((pinned_vertices, right_legs_bottom, left_legs_bottom, top_arms, bottom_arms)) + + x = custom_smoothing(np.asarray(m.vertices)[:,:2], np.asarray(m.edges), pinned_vertices, data_body.f.Ft) + # m = tm.Trimesh(x, data_body.f.Ft, process=False, validate=False) + + lap = tm.smoothing.laplacian_calculation(m, equal_weight=False, pinned_vertices=pinned_vertices) + # tm.smoothing.filter_laplacian(m, lamb=0.5, implicit_time_integration=False, iterations=1000, volume_constraint=False, laplacian_operator=lap) + # tm.smoothing.filter_mut_dif_laplacian(m, lamb=0.9, iterations=100, volume_constraint=True, laplacian_operator=lap) + tm.smoothing.filter_humphrey(m, iterations=1000, laplacian_operator=lap, alpha=0.01, beta=1.0) + # tm.smoothing.filter_taubin(m, iterations=25, lamb=0.01, nu=0.0015, laplacian_operator=lap) + + + x = uv_map + y = m.vertices[:, :2] + + + + fig = go.Figure(data=[ + # go.Scatter( + # x=x[:,0], + # y=x[:,1], + # mode='markers', + # marker=dict( + # size=3, + # line=dict(width=0) + # ), + # ), + go.Scatter( + x=y[:,0], + y=y[:,1], + mode='markers', + marker=dict( + size=3, + line=dict(width=0) + ), + ), + ]) + + fig.update_layout(scene_aspectmode='manual', + scene_aspectratio=dict(x=1, y=1, z=1)) + fig.update_layout( + scene = dict( + xaxis = dict(nticks=4, range=[-1,1],), + yaxis = dict(nticks=4, range=[-1,1],), + zaxis = dict(nticks=4, range=[-1,1],),) + ) + + fig.show() + + dist = cdist(y, y) + for i in range(dist.shape[0]): + dist[i,i] = 10000 + + res = 1 / dist.min() + + print() + + + pass + + +def front_3dto2d(): + # load data + data_body = np.load("custom_data/uv_map/uv_data_smpl_2.npz", allow_pickle=True) + data_front = np.load("custom_data/uv_map/uv_data_plane_stretched_front_low.npz", allow_pickle=True) + + laplacian_loss = sio.loadmat("custom_utils/ssmpl0.mat")['L'].tocoo() + edges = np.stack(np.nonzero(laplacian_loss.todense())).transpose() + + # translate back uv to match body + uv_front = data_front.f.V + # uv_back[:, 0] = uv_back[:, 0] + 0.1 + # uv_back[:, 1] = uv_back[:, 1] + 0.42 + + # find front and back indices in uv + uv_verts = np.append(data_body.f.Vt, np.zeros((data_body.f.Vt.shape[0], 1)), axis=-1) + m = tm.Trimesh(uv_verts, data_body.f.Ft, process=False, validate=False) + front, back = tm.graph.connected_components(m.edges, min_len=1, nodes=None, engine=None) + + # get mesh to uv mapping for the back vertices + m2u_body = mesh2UV(data_body.f.F, data_body.f.Ft) + m2u_body = filter_m2u(m2u_body, set(front)) + m2u_body = convert_to_numbers(m2u_body) + + m2u_front = mesh2UV(data_front.f.F, data_front.f.Ft) + m2u_front = convert_to_numbers(m2u_front) + + # create mask for filtering vertices belonging to the back + body_front_mask = np.zeros((data_body.f.Vt.shape[0]), dtype=bool) + body_front_mask[front] = True + + # define which points should match after the transform on the mesh + matching_points = np.array([ [9557, 12], [3284, 2], [3053, 5], [1888, 8], [10228, 4], [21, 7], [1209, 6], [1447, 3], [5908, 13], [4617, 15], [4219, 1], [6983, 10], [6989, 17], [7114, 9], [10602, 16], [10597, 11], [7884, 0], [8280, 14] ]) + + # for i in range(matching_points.shape[0]): + # matching_points[i, :] = [get_masked_index(body_front_mask, matching_points[i,0]),matching_points[i, 1]] + + + x = data_body.f.V + # x = data_body.f.V[body_front_mask, :] + y = uv_front + + # get transformation from body to front contour + source = x[matching_points[:, 0], :] + destination = y[matching_points[:, 1], :] + trans = TPS(source, destination) + transformed = trans(data_body.f.V) + + z = transformed + fig = go.Figure(data=[ + # go.Scatter3d( + # x=x[:,0], + # y=x[:,1], + # z=x[:,2], + # ), + go.Scatter3d( + x=y[:,0], + y=y[:,1], + z=y[:,2], + mode='markers', + marker=dict( + size=10, + line=dict(width=0) + ), + ), + go.Scatter3d( + x=z[:,0], + y=z[:,1], + z=z[:,2], + mode='markers', + marker=dict( + size=10, + line=dict(width=0) + ), + + ), + ]) + + fig.update_layout(scene_aspectmode='manual', + scene_aspectratio=dict(x=1, y=1, z=1)) + fig.update_layout( + scene = dict( + xaxis = dict(nticks=4, range=[-1,1],), + yaxis = dict(nticks=4, range=[-1,1],), + zaxis = dict(nticks=4, range=[-1,1],),) + ) + + fig.show() + + print() + + +if __name__ == '__main__': + # generate_mask_2() + smoothing() + # generate_uv_mask_border() + + # front_uv, m2uv, front_mask, back_mask = front_3dto2d() + + + # back_uv = match_back_to_front(front_uv) + # # back_uv = back() + + # final = np.zeros((15068, 2)) + # final[front_mask] = front_uv + # final[back_mask] = back_uv + [1, 0] + # np.save('MeshUtils\stretched_uv_map_3.npy', final) + + pass \ No newline at end of file diff --git a/custom_utils/tps_custom.py b/custom_utils/tps_custom.py new file mode 100644 index 0000000..651c2a3 --- /dev/null +++ b/custom_utils/tps_custom.py @@ -0,0 +1,210 @@ +import numpy +import pygeodesic.geodesic as geodesic + +__all__ = ['find_coefficients', 'transform'] + + +def cdist(K: numpy.ndarray, B: numpy.ndarray) -> numpy.ndarray: + """Calculate Euclidean distance between K[i, :] and B[j, :]. + + Arguments + --------- + K : numpy.array + B : numpy.array + """ + K = numpy.atleast_2d(K) + B = numpy.atleast_2d(B) + assert K.ndim == 2 + assert B.ndim == 2 + + K = numpy.expand_dims(K, 1) + B = numpy.expand_dims(B, 0) + D = K - B + return numpy.linalg.norm(D, axis=2) + + +# def cdist(K: numpy.ndarray, B: numpy.ndarray, faces: numpy.ndarray) -> numpy.ndarray: +# geoalg = geodesic.PyGeodesicAlgorithmExact(points, faces) + + + +def pairwise_radial_basis(K: numpy.ndarray, B: numpy.ndarray) -> numpy.ndarray: + """Compute the TPS radial basis function phi(r) between every row-pair of K + and B where r is the Euclidean distance. + + Arguments + --------- + K : numpy.array + n by d vector containing n d-dimensional points. + B : numpy.array + m by d vector containing m d-dimensional points. + + Return + ------ + P : numpy.array + n by m matrix where. + P(i, j) = phi( norm( K(i,:) - B(j,:) ) ), + where phi(r) = r^2*log(r), if r >= 1 + r*log(r^r), if r < 1 + """ + # r_mat(i, j) is the Euclidean distance between K(i, :) and B(j, :). + r_mat = cdist(K, B) + + pwise_cond_ind1 = r_mat >= 1 + pwise_cond_ind2 = r_mat < 1 + r_mat_p1 = r_mat[pwise_cond_ind1] + r_mat_p2 = r_mat[pwise_cond_ind2] + + # P correcponds to the matrix K from [1]. + P = numpy.empty(r_mat.shape) + P[pwise_cond_ind1] = (r_mat_p1**2) * numpy.log(r_mat_p1) + P[pwise_cond_ind2] = r_mat_p2 * numpy.log(numpy.power(r_mat_p2, r_mat_p2)) + + return P + + +def find_coefficients(control_points: numpy.ndarray, + target_points: numpy.ndarray, + lambda_: float = 0., + solver: str = 'exact') -> numpy.ndarray: + """Given a set of control points and their corresponding points, compute the + coefficients of the TPS interpolant deforming surface. + + Arguments + --------- + control_points : numpy.array + p by d vector of control points + target_points : numpy.array + p by d vector of corresponding target points on the deformed + surface + lambda_ : float + regularization parameter + solver : str + the solver to get the coefficients. default is 'exact' for the exact + solution. Or use 'lstsq' for the least square solution. + + Return + ------ + coef : numpy.ndarray + the coefficients + + .. seealso:: + + http://cseweb.ucsd.edu/~sjb/pami_tps.pdf + """ + # ensure data type and shape + control_points = numpy.atleast_2d(control_points) + target_points = numpy.atleast_2d(target_points) + if control_points.shape != target_points.shape: + raise ValueError( + 'Shape of and control points {cp} and target points {tp} are not the same.'. + format(cp=control_points.shape, tp=target_points.shape)) + + p, d = control_points.shape + + # The matrix + K = pairwise_radial_basis(control_points, control_points) + P = numpy.hstack([numpy.ones((p, 1)), control_points]) + + # Relax the exact interpolation requirement by means of regularization. + K = K + lambda_ * numpy.identity(p) + + # Target points + M = numpy.vstack([ + numpy.hstack([K, P]), + numpy.hstack([P.T, numpy.zeros((d + 1, d + 1))]) + ]) + Y = numpy.vstack([target_points, numpy.zeros((d + 1, d))]) + + # solve for M*X = Y. + # At least d+1 control points should not be in a subspace; e.g. for d=2, at + # least 3 points are not on a straight line. Otherwise M will be singular. + solver = solver.lower() + if solver == 'exact': + X = numpy.linalg.solve(M, Y) + elif solver == 'lstsq': + X, _, _, _ = numpy.linalg.lstsq(M, Y, None) + else: + raise ValueError('Unknown solver: ' + solver) + + return X + + +def transform(source_points: numpy.ndarray, control_points: numpy.ndarray, + coefficient: numpy.ndarray) -> numpy.ndarray: + """Transform the source points form the original surface to the destination + (deformed) surface. + + Arguments + --------- + source_points : numpy.array + n by d array of source points to be transformed + control_points : numpy.array + the control points used in the function `find_coefficients` + coefficient : numpy.array + the computed coefficients + + Return + ------ + deformed_points : numpy.array + n by d array of the transformed point on the target surface + """ + source_points = numpy.atleast_2d(source_points) + control_points = numpy.atleast_2d(control_points) + if source_points.shape[-1] != control_points.shape[-1]: + raise ValueError( + 'Dimension of source points ({sd}D) and control points ({cd}D) are not the same.'. + format(sd=source_points.shape[-1], cd=control_points.shape[-1])) + + n = source_points.shape[0] + + A = pairwise_radial_basis(source_points, control_points) + K = numpy.hstack([A, numpy.ones((n, 1)), source_points]) + + deformed_points = numpy.dot(K, coefficient) + return deformed_points + + + + +class TPS: + """The thin plate spline deformation warpping. + """ + + def __init__(self, + control_points: numpy.ndarray, + target_points: numpy.ndarray, + lambda_: float = 0., + solver: str = 'exact'): + """Create a instance that preserve the TPS coefficients. + + Arguments + --------- + control_points : numpy.array + p by d vector of control points + target_points : numpy.array + p by d vector of corresponding target points on the deformed + surface + lambda_ : float + regularization parameter + solver : str + the solver to get the coefficients. default is 'exact' for the + exact solution. Or use 'lstsq' for the least square solution. + """ + self.control_points = control_points + self.coefficient = find_coefficients( + control_points, target_points, lambda_, solver) + + def __call__(self, source_points): + """Transform the source points form the original surface to the + destination (deformed) surface. + + Arguments + --------- + source_points : numpy.array + n by d array of source points to be transformed + """ + return transform(source_points, self.control_points, + self.coefficient) + + transform = __call__ diff --git a/cvae.py b/cvae.py index fedb790..59d7c75 100644 --- a/cvae.py +++ b/cvae.py @@ -1,6 +1,6 @@ import os import sys -from configs.config_abl_norm import config +from configs.config_abl_all_post import config os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] import tensorflow as tf @@ -41,11 +41,11 @@ from losses import collision_loss as collision_penalty from custom_utils.custom_utils import batch_to_dict, load_model, plot_3d, UV2Mesh, get_summary_html, maskFacesBatch, _maskFaces, plot_3d_collision from dataset import DatasetFactory, StaticDataset from custom_utils.smpl import SMPL -from models.cvae_model import CVAE +from models.cvae_model import CVAENew as CVAE def init_wandb(): - run = wandb.init(project='ablation', name=config['name'], notes=config['notes'], dir='/home/workspace/local-data/temp') + run = wandb.init(project='ablation', name=config['name'], notes=config['notes'], dir='/wandb') artifact = wandb.Artifact('code', type='code') artifact.add_file('cvae.py') artifact.add_file('models/cvae_model.py') @@ -61,7 +61,7 @@ def init_wandb(): artifact.add_file('/'.join(config_file_name.split('.')) + '.py') run.log_artifact(artifact) -uv2mesh = UV2Mesh(res=256, is_skirt=config['is_skirt'], is_adaptive=False) +uv2mesh = UV2Mesh(res=256, is_skirt=config['is_skirt'], is_adaptive=False, is_smpl_orig=config['is_cape']) def kl_loss(mean, logvar): @@ -71,7 +71,9 @@ def kl_loss(mean, logvar): return kl_loss -@tf.function +# 3d loss on posed !!!!!!!!!!!! + +# @tf.function def train_step(batch): with tf.GradientTape() as tape: @@ -100,14 +102,17 @@ def train_step(batch): c_loss, c_ratio = collision_penalty(mesh_pred_posed, batch['mesh_body_posed'], batch['mesh_mask']) c_loss, c_ratio = tf.reduce_mean(c_loss), tf.reduce_mean(c_ratio) l2_loss = tf.reduce_mean(1e3 * tf.reduce_mean(tf.reduce_sum(((uv_orig - pred) ** 2), axis=-1), axis=[1, 2])) - l2_mesh_loss = tf.reduce_mean(1e3 * tf.reduce_mean(tf.reduce_sum(batch['mesh_mask'][:,:,tf.newaxis] * (mesh_orig - mesh_pred) ** 2, axis=-1), axis=-1)) - n_loss = normal_loss(mesh_pred, mesh_orig, batch['mesh_mask'], is_skirt=config['is_skirt']) + l2_mesh_loss = tf.reduce_mean(1e3 * tf.reduce_mean(tf.reduce_sum(batch['mesh_mask'][:,:,tf.newaxis] * (batch['mesh_posed'] - mesh_pred_posed) ** 2, axis=-1), axis=-1)) + n_loss = normal_loss(mesh_pred_posed, batch['mesh_posed'], batch['mesh_mask'], is_skirt=config['is_skirt'], is_smpl_orig=config['is_cape']) # conc_loss = concept_loss(pred, batch['uv_unposed']) kl = kl_loss(mean, logvar) reconstr_loss = l2_loss if config['use_extra_losses']: - reconstr_loss = reconstr_loss + l2_mesh_loss + (e_loss + c_loss) * config['reg_loss_coeff'] + if 'block_collision_loss' in config.keys() and config['block_collision_loss'] == True: + reconstr_loss = reconstr_loss + l2_mesh_loss + (e_loss) * config['reg_loss_coeff'] + else: + reconstr_loss = reconstr_loss + l2_mesh_loss + (e_loss + c_loss) * config['reg_loss_coeff'] if config['use_norm_loss'] and step > 2000: reconstr_loss = reconstr_loss + n_loss * config['reg_loss_coeff'] @@ -155,8 +160,8 @@ def valid_step(batch): c_loss, c_ratio = collision_penalty(mesh_pred_posed, batch['mesh_body_posed'], batch['mesh_mask']) c_loss, c_ratio = tf.reduce_mean(c_loss), tf.reduce_mean(c_ratio) l2_loss = tf.reduce_mean(1e3 * tf.reduce_mean(tf.reduce_sum(((uv_orig - pred) ** 2), axis=-1), axis=[1, 2])) - l2_mesh_loss = tf.reduce_mean(1e3 * tf.reduce_mean(tf.reduce_sum(batch['mesh_mask'][:,:,tf.newaxis] * (mesh_orig - mesh_pred) ** 2, axis=-1), axis=-1)) - n_loss = normal_loss(mesh_pred, mesh_orig, batch['mesh_mask'], is_skirt=config['is_skirt']) + l2_mesh_loss = tf.reduce_mean(1e3 * tf.reduce_mean(tf.reduce_sum(batch['mesh_mask'][:,:,tf.newaxis] * (batch['mesh_posed'] - mesh_pred_posed) ** 2, axis=-1), axis=-1)) + n_loss = normal_loss(mesh_pred_posed, batch['mesh_posed'], batch['mesh_mask'], is_skirt=config['is_skirt'], is_smpl_orig=config['is_cape']) # conc_loss = concept_loss(pred, batch['uv_unposed']) kl = kl_loss(mean, logvar) @@ -256,7 +261,7 @@ def plot_everything(batch: dict, type: str): img = tf.concat((uv_static_img, uv_body_posed_img, orig_img, pred_img), axis=2) imgs = [wandb.Image((img[i] + 1) / 2.0) for i in range(4)] - F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy") + F = np.load("custom_utils/smpl_faces" + skirt_modifier + ("_orig" if config['is_cape'] else "") + ".npy") mask = batch['mesh_mask'].numpy().astype(bool) if config['use_skinning']: @@ -284,7 +289,7 @@ def plot_everything(batch: dict, type: str): garment_posed = [mesh_posed[i, mask[i], :] for i in range(body.shape[0])] collision = [np.concatenate((body[i], garment_posed[i]), axis=0) for i in range(len(garment_posed))] - collision_faces = [np.concatenate((F, faces[i] + 14475), axis=0) for i in range(len(garment_posed))] + collision_faces = [np.concatenate((F, faces[i] + config['smpl_res']), axis=0) for i in range(len(garment_posed))] collision_color = [np.concatenate((np.ones_like(body[i], dtype=np.int32)*100, np.ones_like(garment_posed[i], dtype=np.int32)*230), axis=0) for i in range(len(garment_posed))] garment_posed_fixed = [mesh_posed_fixed[i, mask[i], :] for i in range(body.shape[0])] @@ -294,8 +299,8 @@ def plot_everything(batch: dict, type: str): figs = { type + "/garment_" + str(i): plot_3d(gt[i], garment_unposed[i], faces[i], collision[i], collision_faces[i], collision_color[i], flip_xy=(not config['use_skinning'] and config['remove_global_orientation'])) for i in range(4) } figs_coll = { type + "/garment_" + str(i) + '_collision': plot_3d_collision(collision_gt[i], collision[i], collision_fixed[i], collision_faces[i], collision_color[i], flip_xy=(not config['use_skinning'] and config['remove_global_orientation'])) for i in range(4) } - mean_hist = wandb.Histogram(sequence=mean.numpy().mean(axis=0), num_bins=model.latent_dim) - logvar_hist = wandb.Histogram(sequence=logvar.numpy().mean(axis=0), num_bins=model.latent_dim) + mean_hist = wandb.Histogram(sequence=mean.numpy().mean(axis=0)) + logvar_hist = wandb.Histogram(sequence=logvar.numpy().mean(axis=0)) return { **figs, **figs_coll, **{ type + '/images': imgs, type + '/mean_hist': mean_hist, type + '/logvar_hist': logvar_hist } } @@ -323,7 +328,7 @@ def sample(folder): F = np.load("custom_utils/smpl_faces.npy") mask = batch['mesh_mask'].numpy().astype(bool)[0] - _, faces = _maskFaces(np.ones((14475, 3)), F, mask) + _, faces = _maskFaces(np.ones((config['smpl_res'], 3)), F, mask) pred_zero = model.sample_single(batch['uv_static'][0], batch['uv_body_posed'][0], uv_curvature[0], batch['uv_mask'][0], nr_of_samples=nr_of_samples, zero_latent=True) mesh_pred_zero = uv2mesh(pred_zero) @@ -471,12 +476,12 @@ def test(): if __name__ == '__main__': - init_wandb() + # init_wandb() parser = argparse.ArgumentParser(description='') parser.add_argument('--name', type=str) args = vars(parser.parse_args()) - smpl = SMPL(use_one_hot=config['use_one_hot']) + smpl = SMPL(orig_smpl=config['is_cape']) skirt_modifier = '_skirt' if config['is_skirt'] else '' factory = DatasetFactory() @@ -487,11 +492,14 @@ if __name__ == '__main__': resolutions=[config['resolution']], in_memory=config['dataset_in_memory'], use_one_hot=config['use_one_hot'], - use_no_orient=config['remove_global_orientation']) + use_no_orient=config['remove_global_orientation'], + frames_file=config['frames_file'] if 'frames_file' in config.keys() else None, + is_cape=config['is_cape']) static_dataset_train = StaticDataset(folder=config['train_dir'], signature=config['signature_static'], resolutions=[config['resolution']], - in_memory=True) + in_memory=True, + is_cape=config['is_cape']) dataset_valid = factory.get_dataset(folder=config['valid_dir'], batch_size=config['batch_size'], @@ -499,11 +507,14 @@ if __name__ == '__main__': resolutions=[config['resolution']], in_memory=config['dataset_in_memory'], use_one_hot=config['use_one_hot'], - use_no_orient=config['remove_global_orientation']) + use_no_orient=config['remove_global_orientation'], + frames_file=config['frames_file_valid'] if 'frames_file_valid' in config.keys() else None, + is_cape=config['is_cape']) static_dataset_valid = StaticDataset(folder=config['valid_dir'], signature=config['signature_static'], resolutions=[config['resolution']], - in_memory=True) + in_memory=True, + is_cape=config['is_cape']) model = CVAE(config) @@ -515,11 +526,14 @@ if __name__ == '__main__': # test() ckpt = tf.train.Checkpoint(model=model) - manager = tf.train.CheckpointManager(ckpt, 'checkpoints/' + config['name'], max_to_keep=20) + manager = tf.train.CheckpointManager(ckpt, 'checkpoints/post/' + config['name'], max_to_keep=20) + if config['pretrained_model'] != '': load_model(model, config['pretrained_model']) + # load_model(model, 'checkpoints/' + config['name']) + valid_iterator = iter(dataset_valid) step = 0 for batch in dataset_train: @@ -537,15 +551,15 @@ if __name__ == '__main__': valid_figs = plot_everything(data_valid, 'valid') to_log = { **to_log, **train_figs, **valid_figs } - if step % 10000 == 0: + if step % 5000 == 0: manager.save(checkpoint_number=step) if step == 0: to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } } - if train_loss['train/euclid_error'] < 0.017: + if train_loss['train/euclid_error'] < (config['balancing_activation_limit'] if 'balancing_activation_limit' in config.keys() else 0.017): if balancing_activated_step == 0: balancing_activated_step = step - g_balancing_coeff = g_balancing_coeff + 1 / 20000 + g_balancing_coeff = g_balancing_coeff + 1 / 10000 to_log = { **to_log, **{ 'train/balancing_coeff': g_balancing_coeff } } diff --git a/cvae_curv.py b/cvae_curv.py index f42e0c7..bc99e83 100644 --- a/cvae_curv.py +++ b/cvae_curv.py @@ -1,5 +1,8 @@ import os -os.environ["CUDA_VISIBLE_DEVICES"] = "1" +import sys +from configs.config_cvae_curv import config + +os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] import tensorflow as tf gpus = tf.config.experimental.list_physical_devices('GPU') @@ -21,9 +24,10 @@ import random import cmapy as cm import numpy as np import scipy as sp -from custom_utils.custom_utils import UV2Mesh, UV2MeshLabel, maskFacesBatch, _maskFaces +from custom_utils.custom_utils import UV2Mesh, UV2MeshLabel, maskFacesBatch, _maskFaces, load_model, get_summary_html, get_summary_str import plotly.graph_objects as go import plotly.express as ex +from plotly.subplots import make_subplots from PIL import Image from tf_utils import check_tf_version, allow_memory_growth @@ -33,31 +37,31 @@ from dataset import DatasetFactory, StaticDataset from custom_utils.custom_utils import batch_to_dict from custom_utils.smpl import SMPL from models.cvae_curv_model import CVAE +from losses import kl_loss + -name='cvae_curv_3' def init_wandb(): - run = wandb.init(project='vae', name=name, - notes='learn offsets. smaller flattened latent vectors. with 25-85k pretraining. smaller batchsize. new implementation for kl loss. \ -no lr schedule. 25 jumpsuits, average reconst_loss before calculation, offsets over average unposed garment. gamma balancing. remove global \ -orientation (in posed body input and in pose_shape parameters.. r lower kl coeff to 0.1. fixed plotting colors\ -addent MLP for lowering conditional Z diemnsion\ -higher starting kl coeff (0.1)\ -train on 100 garments') + run = wandb.init(project='ablation', name=config['name'], notes=config['notes'], dir='/wandb') + artifact = wandb.Artifact('code', type='code') artifact.add_file('cvae_curv.py') artifact.add_file('models/cvae_curv_model.py') artifact.add_file('dataset.py') artifact.add_file('losses.py') + artifact.add_file('models/base.py') + artifact.add_file('models/cond_encoder.py') + artifact.add_file('dataset.py') artifact.add_file('convnext/models/convnext_tf.py') + config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')] + for config_file_name in config_file_names: + artifact.add_file('/'.join(config_file_name.split('.')) + '.py') run.log_artifact(artifact) uv2mesh = UV2MeshLabel(res=256) -def plot_3d(curv_gt, curv_pred, faces, mesh): - mesh_2 = mesh.copy() - mesh_2[:,1] += 1 +def plot_3d(curv_gt, curv_pred, faces, mesh): colors = np.array([cm.color('jet', 1 - i) for i in np.linspace(0, 1, 6+1)]) v_color_1 = np.zeros((mesh.shape[0], 3)) v_color_2 = np.zeros((mesh.shape[0], 3)) @@ -65,58 +69,50 @@ def plot_3d(curv_gt, curv_pred, faces, mesh): v_color_1[curv_gt == i, :] = colors[i] v_color_2[curv_pred == i, :] = colors[i] - fig = go.Figure(data=[ - go.Mesh3d( - # 8 vertices of a cube - x=mesh[:,0], - y=mesh[:,1], - z=mesh[:,2], - # i, j and k give the vertices of triangles - i = faces[:,0], - j = faces[:,1], - k = faces[:,2], - vertexcolor=v_color_1, - text='gt' - ), - go.Mesh3d( - # 8 vertices of a cube - x=mesh_2[:,0], - y=mesh_2[:,1], - z=mesh_2[:,2], - # i, j and k give the vertices of triangles - i = faces[:,0], - j = faces[:,1], - k = faces[:,2], - vertexcolor=v_color_2, - text='pred' - ) - ]) + fig = make_subplots(rows=1, cols=2, start_cell="top-left", specs = [ [{ 'type': 'scene' } for _ in range(2)] ]) - fig.update_layout(scene_aspectmode='manual', - scene_aspectratio=dict(x=1, y=2, z=1)) - fig.update_layout( - scene = dict( - xaxis = dict(nticks=4, range=[-1,1],), - yaxis = dict(nticks=4, range=[-1,3],), - zaxis = dict(nticks=4, range=[-1,1],),) + fig.add_trace(go.Mesh3d( + # 8 vertices of a cube + x=mesh[:,0], + y=mesh[:,1], + z=mesh[:,2], + # i, j and k give the vertices of triangles + i = faces[:,0], + j = faces[:,1], + k = faces[:,2], + vertexcolor=v_color_1, + text='gt' + ), + row=1, col=1) + + fig.add_trace(go.Mesh3d( + # 8 vertices of a cube + x=mesh[:,0], + y=mesh[:,1], + z=mesh[:,2], + # i, j and k give the vertices of triangles + i = faces[:,0], + j = faces[:,1], + k = faces[:,2], + vertexcolor=v_color_2, + text='pred' + ), + row=1, col=2) + + + fig.update_layout(scene_aspectmode='manual', scene_aspectratio=dict(x=1, y=1, z=1), + scene2_aspectmode='manual', scene2_aspectratio=dict(x=1, y=1, z=1), + ) + helper = dict(xaxis = dict(nticks=4, range=[-1,1],), + yaxis = dict(nticks=4, range=[-1,1],), + zaxis = dict(nticks=4, range=[-1,1],),) + fig.update_layout(scene = helper, + scene2 = helper, ) return fig -def log_normal_pdf(sample, mean, logvar, raxis=1): - log2pi = tf.math.log(2. * np.pi) - res = tf.reduce_sum(-.5 * ((sample - mean) ** 2. * tf.exp(-logvar) + logvar + log2pi), axis=raxis) - return res - - -def kl_loss(mean, logvar): - kl_loss = 1 + logvar - tf.square(mean) - tf.exp(logvar) - kl_loss = tf.reduce_mean(kl_loss) - kl_loss *= -0.5 - return kl_loss - - g_mean_iou = tf.keras.metrics.MeanIoU(num_classes=7) def get_mean_iou(y_true, y_pred): @@ -157,83 +153,89 @@ def dice_dense(prediction, ground_truth, weight_map=None): @tf.function def train_step(batch): with tf.GradientTape() as tape: - uv_curvature = tf.one_hot(batch['uv_curvature'], 7) - pred, mean, logvar, z = model([batch['uv_static'], batch['uv_body_posed'], uv_curvature, batch['uv_mask']]) + pred, mean, logvar = model([batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature'], batch['uv_mask']]) - ce_uv_loss = scce(batch['uv_curvature'], pred) - ms_ssim = tf.reduce_mean(tf.image.ssim(pred, uv_curvature, max_val=1)) + ce_uv_loss = scce(tf.math.argmax(batch['uv_curvature'], axis=-1), pred) + dice = dice_dense(pred, batch['uv_curvature']) - reconstr_loss = ce_uv_loss + mesh_pred = uv2mesh(pred) * batch['mesh_mask'][:,:,tf.newaxis] + mesh_orig = tf.cast(uv2mesh(tf.math.argmax(batch['uv_curvature'], axis=-1, output_type=tf.int32)), tf.float32) * batch['mesh_mask'] + ce_mesh_loss = scce(mesh_orig, mesh_pred) + + reconstr_loss = ce_uv_loss + ce_mesh_loss + # reconstr_loss = 1 - dice reconstr_loss = tf.reduce_mean(reconstr_loss) kl = kl_loss(mean, logvar) - loss = reconstr_loss + balancing_coeff * kl - ms_ssim = tf.reduce_mean(ms_ssim) + + loss = reconstr_loss + g_balancing_coeff * kl mean = tf.reduce_mean(mean) logvar = tf.reduce_mean(logvar) - # mesh_pred = uv2mesh(tf.tile(tf.math.argmax(pred, axis=-1, output_type=tf.dtypes.int32)[:,:,:,tf.newaxis], [1,1,1,3]))[:,:,0] - # mesh_orig = tf.one_hot(batch['mesh_curvature'] + tf.cast(batch['mesh_mask'], tf.int32), 7) - # ce_mesh_loss = scce(mesh_orig, mesh_pred) + mean_iou = get_mean_iou(tf.math.argmax(batch['uv_curvature'], axis=-1), tf.math.argmax(pred, axis=-1)) - mean_iou = get_mean_iou(batch['uv_curvature'], tf.math.argmax(pred, axis=-1)) - dice = dice_dense(pred, uv_curvature) gradients = tape.gradient(loss, model.trainable_variables) optimizer.apply_gradients(zip(gradients, model.trainable_variables)) - return { 'train/loss': loss, 'train/ce_uv_loss': ce_uv_loss, 'train/ssim': ms_ssim, 'train/mean_iou': mean_iou, 'train/dice': dice, #'ce_mesh_loss': ce_mesh_loss - 'train/reconstr_loss': reconstr_loss, - 'train/mean': mean, 'train/logvar': logvar, 'train/kl_loss': kl, 'train/reconst_loss_norm': reconstr_loss / (2 * (gamma ** 2)), 'train/var': np.e ** logvar, - 'train/reg_coeff': reg_coeff} - - - + return { 'train/loss': loss, 'train/ce_uv_loss': ce_uv_loss, 'train/mean_iou': mean_iou, 'train/dice': dice, + 'train/reconstr_loss': reconstr_loss, 'train/ce_mesh_loss': ce_mesh_loss, + 'train/mean': mean, 'train/logvar': logvar, 'train/kl_loss': kl,'train/var': np.e ** logvar, + } @tf.function def valid_step(batch): - uv_curvature = tf.one_hot(batch['uv_curvature'], 7) + pred, mean, logvar = model([batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature'], batch['uv_mask']]) - pred, mean, logvar, z = model([batch['uv_static'], batch['uv_body_posed'], uv_curvature, batch['uv_mask']]) - - ce_uv_loss = scce(batch['uv_curvature'], pred) - ms_ssim = tf.reduce_mean(tf.image.ssim(pred, uv_curvature, max_val=1)) + ce_uv_loss = scce(tf.math.argmax(batch['uv_curvature'], axis=-1), pred) loss = ce_uv_loss - mean_iou = get_mean_iou(batch['uv_curvature'], tf.math.argmax(pred, axis=-1)) - dice = dice_dense(pred, uv_curvature) + mean_iou = get_mean_iou(tf.math.argmax(batch['uv_curvature'], axis=-1), tf.math.argmax(pred, axis=-1)) + dice = dice_dense(pred, batch['uv_curvature']) - reconstr_loss = tf.reduce_mean(ce_uv_loss) + reconstr_loss = ce_uv_loss + # reconstr_loss = 1 - dice + reconstr_loss = tf.reduce_mean(reconstr_loss) kl = kl_loss(mean, logvar) - loss = reconstr_loss + balancing_coeff * kl - ms_ssim = tf.reduce_mean(ms_ssim) + + loss = reconstr_loss + g_balancing_coeff * kl mean = tf.reduce_mean(mean) logvar = tf.reduce_mean(logvar) - return { 'valid/loss': loss, 'valid/ce_uv_loss': ce_uv_loss, 'valid/ssim': ms_ssim, 'valid/mean_iou': mean_iou, 'valid/dice': dice, - 'valid/ms_ssim': ms_ssim, 'valid/reconstr_loss': reconstr_loss, + mesh_pred = uv2mesh(pred) * batch['mesh_mask'][:,:,tf.newaxis] + mesh_orig = tf.cast(uv2mesh(tf.math.argmax(batch['uv_curvature'], axis=-1, output_type=tf.int32)), tf.float32) * batch['mesh_mask'] + ce_mesh_loss = scce(mesh_orig, mesh_pred) + + return { 'valid/loss': loss, 'valid/ce_uv_loss': ce_uv_loss, 'valid/mean_iou': mean_iou, 'valid/dice': dice, + 'valid/reconstr_loss': reconstr_loss, 'valid/ce_mesh_loss': ce_mesh_loss, 'valid/mean': mean, 'valid/logvar': logvar, 'valid/kl_loss': kl, 'valid/var': np.e ** logvar } def plot_everything(batch: dict, type: str): - uv_curvature = tf.one_hot(batch['uv_curvature'], 7) - pred, mean, logvar, z = model([batch['uv_static'], batch['uv_body_posed'], uv_curvature, batch['uv_mask']]) + pred, mean, logvar = model([batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature'], batch['uv_mask']]) pred = np.argmax(pred.numpy(), axis=-1) mesh_pred = uv2mesh(pred) - mesh_orig = batch['mesh_curvature'] + mesh_orig = uv2mesh(tf.math.argmax(batch['uv_curvature'], axis=-1)) # batch['mesh_curvature'] mesh_base = batch['mesh_posed'] orig_img = batch['uv_curvature'] pred_img = pred - img = tf.concat((orig_img, pred_img), axis=2) + img = tf.concat((tf.math.argmax(orig_img, axis=-1), pred_img), axis=2) + + colors = np.array([cm.color('jet', 1 - i) for i in np.linspace(0, 1, 6+1)]) + color_img = np.zeros((img.shape[0], img.shape[1], img.shape[2], 3), np.uint8) + for i in range(7): + color_img[img == i, :] = colors[i] + imgs = [wandb.Image(img[i].numpy().astype(np.float32) / 6.0) for i in range(4)] + color_img = [wandb.Image(color_img[i]) for i in range(4)] F = np.load("custom_utils/smpl_faces.npy") mask = batch['mesh_mask'].numpy().astype(bool) _, faces = maskFacesBatch(np.zeros((4, 14475, 3)), F, mask) - gt_curv = [mesh_orig[i].numpy()[mask[i]] + 1 for i in range(pred.shape[0])] + gt_curv = [mesh_orig[i].numpy()[mask[i]] for i in range(pred.shape[0])] pred_curv = [mesh_pred[i].numpy()[mask[i]] for i in range(pred.shape[0])] mesh = [mesh_base[i].numpy()[mask[i]] for i in range(pred.shape[0])] @@ -242,14 +244,9 @@ def plot_everything(batch: dict, type: str): mean_hist = wandb.Histogram(sequence=mean.numpy().mean(axis=0), num_bins=model.latent_dim) logvar_hist = wandb.Histogram(sequence=logvar.numpy().mean(axis=0), num_bins=model.latent_dim) - return { **figs, **{ type + '/images': imgs, type + '/mean_hist': mean_hist, type + '/logvar_hist': logvar_hist } } + return { **figs, **{ type + '/images': imgs, type + '/images_color': color_img, type + '/mean_hist': mean_hist, type + '/logvar_hist': logvar_hist } } -def load_model(model, checkpoint): - ckpt = tf.train.Checkpoint(model=model) - manager = tf.train.CheckpointManager(ckpt, checkpoint, max_to_keep=1) - ckpt.restore(manager.latest_checkpoint) - def sample(folder): load_model(model,folder) @@ -335,101 +332,80 @@ def sample(folder): if __name__ == '__main__': init_wandb() - allow_memory_growth() parser = argparse.ArgumentParser(description='') parser.add_argument('--name', type=str) args = vars(parser.parse_args()) - batch_size = 4 - smpl = SMPL() + skirt_modifier = '_skirt' if config['is_skirt'] else '' scce = tf.keras.losses.SparseCategoricalCrossentropy() factory = DatasetFactory() - signature_dynamic = { 'id': (), - 'pose_shape': (72 + 11,), - # 'uv_posed': (3, 512, 256,), - 'uv_body_posed': (3, 512, 256,), - 'mesh_body_posed': (14475, 3,), - 'mesh_posed': (14475, 3,), - # 'mesh_unposed': (14475, 3,), - # 'uv_unposed': (3, 512, 256,), - 'uv_curvature': (512, 256), - 'mesh_curvature': (14475) - } - signature_static = { 'uv_static': (3, 512, 256,), - # 'mesh_static': (14475, 3,), - 'mesh_mask': (14475,), - 'uv_mask': (512, 256,), - # 'uv_shaped_body': (3, 512, 256,), - } - dataset_train = factory.get_dataset(folder='/home/workspace/local-data/train_100', batch_size=batch_size, signature=signature_dynamic, use_filled=False, resolutions=[512]) - static_dataset_train = StaticDataset(folder='/home/workspace/local-data/train_100', signature=signature_static, use_filled=False, resolutions=[512]) - dataset_valid = factory.get_dataset(folder='/home/workspace/local-data/jumpsuit_20/valid', batch_size=batch_size, signature=signature_dynamic) - static_dataset_valid = StaticDataset(folder='/home/workspace/local-data/jumpsuit_20/valid', signature=signature_static) + dataset_train = factory.get_dataset(folder=config['train_dir'], + batch_size=config['batch_size'], + signature=config['signature_dynamic'], + resolutions=[config['resolution']], + in_memory=config['dataset_in_memory'], + use_one_hot=False, + use_no_orient=True, + frames_file=config['frames_file'] if 'frames_file' in config.keys() else None) + static_dataset_train = StaticDataset(folder=config['train_dir'], + signature=config['signature_static'], + resolutions=[config['resolution']], + in_memory=True) + dataset_valid = factory.get_dataset(folder=config['valid_dir'], + batch_size=config['batch_size'], + signature=config['signature_dynamic'], + resolutions=[config['resolution']], + in_memory=config['dataset_in_memory'], + use_one_hot=False, + use_no_orient=True) + static_dataset_valid = StaticDataset(folder=config['valid_dir'], + signature=config['signature_static'], + resolutions=[config['resolution']], + in_memory=True) - model = CVAE(latent_dim=128, static_model='checkpoints/ae_static_5', - body_model='checpoints/ae_body_8',) - + model = CVAE(config) # lr_schedule = tf.keras.optimizers.schedules.ExponentialDecay(0.0001, decay_steps=30000, decay_rate=0.1, staircase=False) - optimizer = tf.optimizers.Adam(learning_rate=0.0001) - balancing_coeff = 0.1 - reg_coeff = 1 + optimizer = tf.optimizers.Adam(learning_rate=config['lr']) #0.0001 + g_balancing_coeff = config['starting_balancing_coeff'] folder = 'models/ae_logs/' valid_iterator = iter(dataset_valid) - gamma = 1 - balancing_activated_step = 0 - - - # sample('checkpoints/cvae_curv_2') - ckpt = tf.train.Checkpoint(model=model) - manager = tf.train.CheckpointManager(ckpt, 'checkpoints/' + name, max_to_keep=20) + manager = tf.train.CheckpointManager(ckpt, 'checkpoints/' + config['name'], max_to_keep=20) + + if config['pretrained_model'] != '': + load_model(model, config['pretrained_model'], iteration=config['pretrained_model_iteration']) step = 0 for batch in dataset_train: - batch = static_dataset_train.expand_batch(batch_to_dict(batch, signature_dynamic)) + batch = static_dataset_train.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) train_loss = train_step(batch) - # data_valid = valid_iterator.get_next() - # data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, signature_dynamic)) - # valid_loss = valid_step(data_valid) - valid_loss = {} + data_valid = valid_iterator.get_next() + data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic'])) + valid_loss = valid_step(data_valid) to_log = { **train_loss, **valid_loss, **{ 'current_step': step} } - if step % 2500 == 0: + if step % 5000 == 0 or (step < 5000 and step % 500 == 0): train_figs = plot_everything(batch, 'train') - # valid_figs = plot_everything(data_valid, 'valid') - valid_figs = {} + valid_figs = plot_everything(data_valid, 'valid') to_log = { **to_log, **train_figs, **valid_figs } - if step % 25000 == 0: + if step % 10000 == 0: manager.save(checkpoint_number=step) + if step == 0: + to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } } - if step > 25000: - # if train_loss['train/euclid_error'] < 0.01: - balancing_coeff = balancing_coeff + 1 / 20000 - # if train_loss['train/euclid_error'] < 0.015: - # reg_coeff = reg_coeff + 100 / 15000 + if step > 40000: + g_balancing_coeff = g_balancing_coeff + 1 / 20000 - - # if step > 15000 and balancing_coeff <= 1e-3: - # balancing_coeff = 1e-2 - # if step > 20000 and balancing_coeff <= 1e-3: - # balancing_coeff = 1e-2 - # if step > 25000 and balancing_coeff <= 1e-2: - # balancing_coeff = 1e-1 - # if step > 30000 and balancing_coeff <= 1e-1: - # balancing_coeff = 1 - - # gamma = 0.99 * gamma + 0.01 * train_loss['train/reconstr_loss'] - - to_log = { **to_log, **{ 'train/balancing_coeff': balancing_coeff, 'train/gamma': gamma } } + to_log = { **to_log, **{ 'train/g_balancing_coeff': g_balancing_coeff } } wandb.log(to_log, step = step) diff --git a/cvae_evaluate.py b/cvae_evaluate.py new file mode 100644 index 0000000..67b4938 --- /dev/null +++ b/cvae_evaluate.py @@ -0,0 +1,202 @@ +import os +import string +from configs.config_cvae import config +os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] +import tensorflow as tf + +gpus = tf.config.experimental.list_physical_devices('GPU') +if gpus: + try: + # Currently, memory growth needs to be the same across GPUs + for gpu in gpus: + tf.config.experimental.set_memory_growth(gpu, True) + logical_gpus = tf.config.experimental.list_logical_devices('GPU') + print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs") + except RuntimeError as e: + # Memory growth must be set before GPUs have been initialized + print(e) + +import time +import argparse +import wandb +import random +import numpy as np +import scipy as sp +from custom_utils.custom_utils import UV2Mesh, get_summary_html, maskFacesBatch, _maskFaces +import plotly.graph_objects as go +import plotly.express as ex +from PIL import Image + +if config['is_skirt']: + from losses import edge_loss_skirt as edge_loss +else: + from losses import edge_loss + +from utils import str_to_bool +from tf_utils import check_tf_version, allow_memory_growth, split_gpu_for_testing +from load_models import load_generator, load_discriminator +from losses import collision_ratio, uv_mask_loss, bend_loss, kl_loss +# from losses import collision_penalty as collision_penalty +from losses import collision_loss as collision_penalty +from custom_utils.custom_utils import batch_to_dict, load_model, plot_3d +from dataset import DatasetFactory, StaticDataset +from custom_utils.smpl import SMPL +from custom_utils.supersmpl_io import writeOBJ +from models.cvae_model import CVAE + + +def init_wandb(): + run = wandb.init(project='cvae', name=config['name'], notes=config['notes']) + artifact = wandb.Artifact('code', type='code') + artifact.add_file('cvae.py') + artifact.add_file('cvae_evaluate.py') + artifact.add_file('models/cvae_model.py') + artifact.add_file('losses.py') + artifact.add_file('configs/config_base.py') + artifact.add_file('configs/config_cvae.py') + artifact.add_file('models/base.py') + artifact.add_file('models/cond_encoder.py') + artifact.add_file('dataset.py') + artifact.add_file('convnext/models/convnext_tf.py') + run.log_artifact(artifact) + +uv2mesh = UV2Mesh(res=256, is_skirt=config['is_skirt']) + + +@tf.function +def inference_step(batch): + pred = model.sample(batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature'], batch['uv_mask']) + + mesh_pred = uv2mesh(pred) + mesh_orig = batch['mesh_unposed'] + + shape = batch['pose_shape'][:, 72:] + gender = tf.cast(tf.greater_equal(shape[:, 10] , 0.5), tf.int32) + shape_offsets = tf.stack([tf.gather(tf.tensordot(shape[i,:10][tf.newaxis, :], smpl.shapedirs[gender[i]], axes=[[1], [2]])[0,:,:], smpl.to_keep, axis=0) for i in range(shape.shape[0])]) + + mesh_pred_shaped = mesh_pred + shape_offsets * batch['mesh_mask'][:,:,tf.newaxis] + mesh_pred_posed = smpl.run_garment(batch['pose_shape'][:, :72], batch['pose_shape'][:, 72:], mesh_pred_shaped) + + # is the output already masked? + + e_loss = tf.reduce_mean(edge_loss(mesh_pred, mesh_orig, batch['mesh_mask'])) + c_loss = tf.reduce_mean(collision_penalty(mesh_pred_posed, batch['mesh_body_posed'], batch['mesh_mask'])) + # c_ratio = tf.reduce_mean(collision_ratio(mesh_pred_posed, batch['mesh_body_posed'], batch['mesh_mask'])) + l2_loss = tf.reduce_mean(1e3 * tf.reduce_mean(tf.reduce_sum(((batch['uv_unposed'] - pred) ** 2), axis=-1), axis=[1, 2])) + + ms_ssim = tf.reduce_mean(tf.image.ssim_multiscale(pred + 5, batch['uv_unposed'] + 5, max_val=10, power_factors=(0.5, 0.2, 0.1, 0.1, 0.1))) + euclid_error = tf.reduce_sum(tf.math.sqrt(tf.reduce_sum(batch['mesh_mask'][:,:,tf.newaxis] * (mesh_orig - mesh_pred) ** 2, axis=-1))) / tf.reduce_sum(batch['mesh_mask']) + + return { 'test/l2_loss': l2_loss, 'test/edge_loss': e_loss, 'test/collision_loss': c_loss, 'test/euclid_error': euclid_error, 'test/ms_ssim': ms_ssim, + } + + + +def plot_everything(batch: dict, type: str): + pred = model.sample(batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature'], batch['uv_mask']) + + mesh_pred = uv2mesh(pred).numpy() + mesh_orig = batch['mesh_unposed'] + + orig_img = batch['uv_unposed'] + uv_static_img = batch['uv_static'] + uv_body_posed_img = batch['uv_body_posed'] + pred_img = pred + img = tf.concat((uv_static_img, uv_body_posed_img, orig_img, pred_img), axis=2) + imgs = [wandb.Image((img[i] + 1) / 2.0) for i in range(4)] + + shape = batch['pose_shape'][:, 72:] + gender = tf.cast(tf.greater_equal(shape[:, 10] , 0.5), tf.int32) + shape_offsets = tf.stack([tf.gather(tf.tensordot(shape[i,:10][tf.newaxis, :], smpl.shapedirs[gender[i]], axes=[[1], [2]])[0,:,:], smpl.to_keep, axis=0) for i in range(shape.shape[0])]) + + F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy") + mask = batch['mesh_mask'].numpy().astype(bool) + garment_unposed, faces = maskFacesBatch(mesh_pred, F, mask) + garment_unposed = [garment_unposed[i] + shape_offsets.numpy()[i, mask[i], :] for i in range(mask.shape[0])] + gt = [mesh_orig[i].numpy()[mask[i], :] + shape_offsets.numpy()[i, mask[i], :] for i in range(pred.shape[0])] + + body = batch['mesh_body_posed'].numpy() + for i in range(body.shape[0]): + mesh_pred[i, mask[i], :] += shape_offsets.numpy()[i, mask[i], :] + mesh_posed = smpl.run_garment(batch['pose_shape'][:, :72], batch['pose_shape'][:, 72:], mesh_pred).numpy() + + garment_posed = [mesh_posed[i, mask[i], :] for i in range(body.shape[0])] + collision = [np.concatenate((body[i], garment_posed[i]), axis=0) for i in range(len(garment_posed))] + collision_faces = [np.concatenate((F, faces[i] + 14475), axis=0) for i in range(len(garment_posed))] + collision_color = [np.concatenate((np.ones_like(body[i], dtype=np.int32)*100, np.ones_like(garment_posed[i], dtype=np.int32)*230), axis=0) for i in range(len(garment_posed))] + + figs = { type + "/garment_" + str(i): plot_3d(gt[i], garment_unposed[i], faces[i], collision[i], collision_faces[i], collision_color[i]) for i in range(4) } + + for i in range(4): + temp_file = 'temp/' + config['name'] + '_' + batch['id'][i].numpy().decode('UTF-8') + '_' + ''.join(random.choice(string.ascii_lowercase) for _ in range(4)) + writeOBJ(temp_file + '_garment.obj', garment_posed[i], faces[i].astype(np.int32)) + writeOBJ(temp_file + '_body.obj', body[i], F[i].astype(np.int32)) + + + return { **figs, **{ type + '/images': imgs } } + + + +def test(): + load_model(model, 'checkpoints/' + config['name'].split('_')[0]) + + dataset_test = factory.get_dataset(folder=config['test_dir'], batch_size=config['batch_size'], signature=config['signature_dynamic'], use_filled=config['use_filled'], resolutions=[config['resolution']], in_memory=False, do_repeat=False) + static_dataset_test = StaticDataset(folder=config['test_dir'], signature=config['signature_static'], use_filled=config['use_filled'], resolutions=[config['resolution']], in_memory=False) + + step = 0 + losses = [] + + for batch in dataset_test: + batch = static_dataset_test.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) + + inference_loss = inference_step(batch) + losses.append(inference_loss) + + to_log = { **{ 'current_step': step }, **inference_loss } + if step % 100 == 0: + figs = plot_everything(batch, 'test') + to_log = { **to_log, **figs } + + wandb.log(to_log, step = step) + + if step > 300: + break + + print(step) + step += 1 + + # averages = dict() + path_to_plotly_html = "temp/plotly_figure.html" + + histograms = dict() + for key in inference_loss.keys(): + accumulated = [losses[i][key].numpy() for i in range(len(losses))] + fig = ex.histogram(accumulated, title='Average: ' + str(np.asarray(accumulated).mean())) + # fig.write_html(path_to_plotly_html, auto_play = False) + + histograms['all/' + key.split('/')[-1] + '_hist'] = fig # wandb.Html(path_to_plotly_html) + # averages['all/' + key.split('/')[-1] + '_avg'] = np.asarray(accumulated).mean() + + + + wandb.log({ **histograms }, step = step) + wandb.finish() + pass + + +if __name__ == '__main__': + # init_wandb() + parser = argparse.ArgumentParser(description='') + parser.add_argument('--name', type=str) + args = vars(parser.parse_args()) + + smpl = SMPL() + skirt_modifier = '_skirt' if config['is_skirt'] else '' + + factory = DatasetFactory() + + model = CVAE(config) + + g_balancing_coeff = config['starting_balancing_coeff'] + + test() \ No newline at end of file diff --git a/cvae_pyramid.py b/cvae_pyramid.py index 7018d29..cc4cd55 100644 --- a/cvae_pyramid.py +++ b/cvae_pyramid.py @@ -1,6 +1,6 @@ import os import sys -from configs.config_abl_pyr_64_128_cape_m import config +from configs.post.config_abl_pyr_64_128_5 import config os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] import tensorflow as tf @@ -35,18 +35,18 @@ if config['is_skirt']: else: from losses import edge_loss -from losses import uv_mask_loss, bend_loss, kl_loss, collision_ratio +from losses import uv_mask_loss, bend_loss, kl_loss, collision_ratio, normal_loss # from losses import collision_penalty as collision_penalty from losses import collision_loss as collision_penalty from custom_utils.custom_utils import batch_to_dict, load_model from dataset import DatasetFactory, StaticDataset from custom_utils.smpl import SMPL -from models.pyramid_model_optimized import Pyramid +from models.pyramid_model_optimized import PyramidNew as Pyramid from postprocessing import fix_collision def init_wandb(): - run = wandb.init(project='ablation', name=config['name'], notes=config['notes'], dir='/wandb') + run = wandb.init(project='ablation', name=config['name'], notes=config['notes'], dir='/wandb', tags=config['tags']) artifact = wandb.Artifact('code', type='code') artifact.add_file('cvae_pyramid.py') @@ -59,7 +59,7 @@ def init_wandb(): artifact.add_file('models/cond_encoder.py') artifact.add_file('dataset.py') artifact.add_file('convnext/models/convnext_tf.py') - config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')] + config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.post.')] for config_file_name in config_file_names: artifact.add_file('/'.join(config_file_name.split('.')) + '.py') run.log_artifact(artifact) @@ -208,7 +208,6 @@ def plot_3d(mesh_gt, mesh_pred_unposed_levels, faces, mesh_posed, collision, col return fig - @tf.function def train_step(batch): levels_input, conds = group_inputs_for_levels(batch, config) @@ -251,7 +250,8 @@ def train_step(batch): l2_loss = tf.reduce_mean(1e3 * tf.reduce_mean(tf.reduce_sum(((uv_orig - pred) ** 2), axis=-1), axis=[1, 2])) # ms_ssim = tf.reduce_mean(tf.image.ssim_multiscale(pred + 5, batch['uv_unposed'] + 5, max_val=10, power_factors=(0.5, 0.2, 0.1, 0.1, 0.1))) # ms_ssim = tf.reduce_mean(tf.image.ssim(pred + 1, batch['uv_unposed'] + 1, max_val=3)) - l2_mesh_loss = tf.reduce_mean(1e3 * tf.reduce_mean(tf.reduce_sum(batch['mesh_mask'][:,:,tf.newaxis] * (mesh_orig - mesh_pred) ** 2, axis=-1), axis=-1)) + l2_mesh_loss = tf.reduce_mean(1e3 * tf.reduce_mean(tf.reduce_sum(batch['mesh_mask'][:,:,tf.newaxis] * (batch['mesh_posed'] - mesh_pred_posed) ** 2, axis=-1), axis=-1)) + n_loss = normal_loss(mesh_pred_posed, batch['mesh_posed'], batch['mesh_mask'], is_skirt=config['is_skirt']) kl = kl_loss(mean, logvar) if config['use_extra_losses']: @@ -261,6 +261,8 @@ def train_step(batch): else: reconstr_loss_total = reconstr_loss_total + config['pyramid']['loss_weights'][i] * (l2_loss) + if config['use_norm_loss'] and step > 2000: + reconstr_loss_total = reconstr_loss_total + n_loss * config['reg_loss_coeff'] kl_total += kl @@ -271,7 +273,7 @@ def train_step(batch): output = { **output, **{ 'train/edge_loss' + res_modifier: e_loss, 'train/collision_loss' + res_modifier: c_loss,'train/euclid_error' + res_modifier: metric, 'train/mean' + res_modifier: mean, 'train/logvar' + res_modifier: logvar, 'train/kl_loss' + res_modifier: kl, - 'train/var' + res_modifier: np.e ** logvar, 'train/l2_loss' + res_modifier: l2_loss, + 'train/var' + res_modifier: np.e ** logvar, 'train/l2_loss' + res_modifier: l2_loss, 'train/normal_loss': n_loss, 'train/euclid_error': metric, 'train/l2_mesh_loss': l2_mesh_loss } } # 'train/ms_ssim' + res_modifier: ms_ssim, loss = reconstr_loss_total + balancing_coeff * kl_total @@ -321,7 +323,8 @@ def valid_step(batch): l2_loss = tf.reduce_mean(1e3 * tf.reduce_mean(tf.reduce_sum(((uv_orig - pred) ** 2), axis=-1), axis=[1, 2])) # ms_ssim = tf.reduce_mean(tf.image.ssim_multiscale(pred + 5, batch['uv_unposed'] + 5, max_val=10, power_factors=(0.5, 0.2, 0.1, 0.1, 0.1))) # ms_ssim = tf.reduce_mean(tf.image.ssim(pred + 1, batch['uv_unposed'] + 1, max_val=3)) - l2_mesh_loss = tf.reduce_mean(1e3 * tf.reduce_mean(tf.reduce_sum(batch['mesh_mask'][:,:,tf.newaxis] * (mesh_orig - mesh_pred) ** 2, axis=-1), axis=-1)) + l2_mesh_loss = tf.reduce_mean(1e3 * tf.reduce_mean(tf.reduce_sum(batch['mesh_mask'][:,:,tf.newaxis] * (batch['mesh_posed'] - mesh_pred_posed) ** 2, axis=-1), axis=-1)) + n_loss = normal_loss(mesh_pred_posed, batch['mesh_posed'], batch['mesh_mask'], is_skirt=config['is_skirt']) kl = kl_loss(mean, logvar) if config['use_extra_losses']: @@ -331,6 +334,9 @@ def valid_step(batch): else: reconstr_loss_total = reconstr_loss_total + config['pyramid']['loss_weights'][i] * (l2_loss) + if config['use_norm_loss'] and step > 2000: + reconstr_loss_total = reconstr_loss_total + n_loss * config['reg_loss_coeff'] + kl_total += kl mean = tf.reduce_mean(mean) @@ -340,7 +346,7 @@ def valid_step(batch): output = { **output, **{ 'valid/edge_loss' + res_modifier: e_loss, 'valid/collision_loss' + res_modifier: c_loss,'valid/euclid_error' + res_modifier: metric, 'valid/mean' + res_modifier: mean, 'valid/logvar' + res_modifier: logvar, 'valid/kl_loss' + res_modifier: kl, - 'valid/var' + res_modifier: np.e ** logvar, 'valid/l2_loss' + res_modifier: l2_loss, + 'valid/var' + res_modifier: np.e ** logvar, 'valid/l2_loss' + res_modifier: l2_loss, 'valid/normal_loss': n_loss, 'valid/euclid_error': metric, 'valid/l2_mesh_loss': l2_mesh_loss } } # 'valid/ms_ssim' + res_modifier: ms_ssim, loss = reconstr_loss_total + balancing_coeff * kl_total @@ -669,13 +675,73 @@ def test(): pass +def generate_results(): + load_model(model, 'checkpoints/' + config['name']) + + dataset_test = factory.get_dataset(folder=config['test_dir'], + batch_size=config['batch_size'], + # batch_size=1, + signature=config['signature_dynamic'], + resolutions=dataset_resolutions, + in_memory=config['dataset_in_memory'], + is_cape=config['is_cape'], + frames_file=config['frames_file'] if 'frames_file' in config.keys() else None, + do_repeat=False, + shuffle=False) + static_dataset_test = StaticDataset(folder=config['test_dir'], + signature=config['signature_static'], + resolutions=dataset_resolutions, + in_memory=True, + is_cape=config['is_cape']) + folder = os.path.join('/home/workspace/data/results/cape', config['name']) + os.makedirs(folder, exist_ok=True) + + for batch in tqdm.tqdm(dataset_test): + batch = static_dataset_test.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) + + levels_input, conds = group_inputs_for_levels(batch, config) + out_levels = model([levels_input, conds], training=False) + + shape = batch['pose_shape'][:, 72:] + gender = tf.cast(tf.greater_equal(shape[:, 10] , 0.5), tf.int32) + shape_offsets = tf.stack([tf.gather(tf.tensordot(shape[i,:10][tf.newaxis, :], smpl.shapedirs[gender[i]], axes=[[1], [2]])[0,:,:], smpl.to_keep, axis=0) for i in range(shape.shape[0])]) + + i = -1 + pred = out_levels[i][0] + + mesh_pred = uv2mesh(pred) + mesh_pred_shaped = mesh_pred + shape_offsets * batch['mesh_mask'][:,:,tf.newaxis] + mesh_pred_posed = smpl.run_garment(batch['pose_shape'][:, :72], batch['pose_shape'][:, 72:], mesh_pred_shaped) + + for i in range(batch['id'].shape[0]): + mask = batch['mesh_mask'][i].numpy().astype(bool) + id, frame_nr = batch['id'][i].numpy().decode("utf-8"), batch['frame_nr'][i].numpy().decode("utf-8") + unposed = mesh_pred[i].numpy()[mask, :] + posed = mesh_pred_posed[i].numpy()[mask, :] + np.save(os.path.join(folder, id + '_' + frame_nr + '_posed.npy'), posed) + np.save(os.path.join(folder, id + '_' + frame_nr + '_unposed.npy'), unposed) + + pass + +@tf.function +def speed_step(levels_input, conds): + + return model.sample([levels_input, conds], training=False) + + if __name__ == '__main__': init_wandb() parser = argparse.ArgumentParser(description='') - parser.add_argument('--name', type=str) + parser.add_argument('--name', type=str, default='lhunor') args = vars(parser.parse_args()) + # config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.')] + # assert len(config_file_names) == 1 + # config_file_name = config_file_names[0] + # # assert config_file_name.split('.')[1].endswith(args.name) + # assert config_file_name.split('.')[1].endswith(config['name']) + smpl = SMPL(orig_smpl=config['is_cape']) skirt_modifier = '_skirt' if config['is_skirt'] else '' dataset_resolutions = config['pyramid']['resolutions'].copy() @@ -683,10 +749,31 @@ if __name__ == '__main__': dataset_resolutions.append(512) factory = DatasetFactory() - dataset_train = factory.get_dataset(folder=config['train_dir'], batch_size=config['batch_size'], signature=config['signature_dynamic'], resolutions=dataset_resolutions, in_memory=config['dataset_in_memory'], is_cape=config['is_cape']) - static_dataset_train = StaticDataset(folder=config['train_dir'], signature=config['signature_static'], resolutions=dataset_resolutions, is_cape=config['is_cape']) - dataset_valid = factory.get_dataset(folder=config['valid_dir'], batch_size=config['batch_size'], signature=config['signature_dynamic'], resolutions=dataset_resolutions, in_memory=config['dataset_in_memory'], is_cape=config['is_cape']) - static_dataset_valid = StaticDataset(folder=config['valid_dir'], signature=config['signature_static'], resolutions=dataset_resolutions, is_cape=config['is_cape']) + dataset_train = factory.get_dataset(folder=config['train_dir'], + batch_size=config['batch_size'], + # batch_size=1, + signature=config['signature_dynamic'], + resolutions=dataset_resolutions, + in_memory=config['dataset_in_memory'], + is_cape=config['is_cape'], + frames_file=config['frames_file'] if 'frames_file' in config.keys() else None) + static_dataset_train = StaticDataset(folder=config['train_dir'], + signature=config['signature_static'], + resolutions=dataset_resolutions, + in_memory=True, + is_cape=config['is_cape']) + dataset_valid = factory.get_dataset(folder=config['valid_dir'], + batch_size=config['batch_size'], + signature=config['signature_dynamic'], + resolutions=dataset_resolutions, + in_memory=config['dataset_in_memory'], + is_cape=config['is_cape'], + frames_file=config['frames_file_valid'] if 'frames_file_valid' in config.keys() else None) + static_dataset_valid = StaticDataset(folder=config['valid_dir'], + signature=config['signature_static'], + resolutions=dataset_resolutions, + in_memory=True, + is_cape=config['is_cape']) model: Pyramid = Pyramid(config) @@ -700,34 +787,38 @@ if __name__ == '__main__': # sample('checkpoints/cvae_13') # test() + # generate_results() + ckpt = tf.train.Checkpoint(model=model) - manager = tf.train.CheckpointManager(ckpt, 'checkpoints/' + config['name'], max_to_keep=20) + manager = tf.train.CheckpointManager(ckpt, 'checkpoints/post/' + config['name'], max_to_keep=20) # load_model(model, 'checkpoints/pyr_abl_32_skirt', iteration='180000') + if config['pretrained_model'] != '': + # assert len(config['pyramid']['resolutions']) == 1 + load_model(model, config['pretrained_model'], iteration=config['pretrained_model_iteration']) + if len(config['pyramid']['resolutions']) == 1: model.static_enc.trainable = False model.body_enc.trainable = False model.curv_enc.trainable = False else: - load_model(model, config['pyramid']['pretrained_pyramid']) + load_model(model, config['pyramid']['pretrained_pyramid'], iteration=(config['pyramid']['pretrained_pyramid_iteration'] if 'pretrained_pyramid_iteration' in config.keys() else '')) model.static_enc.trainable = False model.body_enc.trainable = False model.curv_enc.trainable = False - model.cond_encoder.trainable = False # load_model(model.levels[0].upscale_enhancer, config['pyramid']['levels'][0]['upscale_enhancer']) # model.levels[0].upscale_enhancer.trainable = False - # the last level doesn't have an upscale enhancer as it's enhanced for the final resolutin directly - # might not be necessary, as enhancing to final or a bit higher resolution seems to be the same - for i in range(len(model.levels)-1): + + for i in range(len(model.levels)): load_model(model.levels[i].upscale_enhancer, config['pyramid']['levels'][i]['upscale_enhancer']) model.levels[i].upscale_enhancer.trainable = False - if config['pyramid']['resolutions'][-1] != 512: - load_model(model.upscale_enhancer, config['pyramid']['final_upscale_enhancer']) - model.upscale_enhancer.trainable = False + # if config['pyramid']['resolutions'][-1] != 512: + # load_model(model.upscale_enhancer, config['pyramid']['final_upscale_enhancer']) + # model.upscale_enhancer.trainable = False for i in range(len(model.levels)-1): model.levels[i].trainable = False @@ -738,9 +829,22 @@ if __name__ == '__main__': step = 0 + times = [] for batch in dataset_train: batch = static_dataset_train.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) + # levels_input, conds = group_inputs_for_levels(batch, config) + + # start = time.perf_counter() + # out = speed_step(levels_input, conds) + # t = time.perf_counter() - start + # print(t) + # times.append(t) + + # if step > 200: + # break + + train_loss = train_step(batch) data_valid = valid_iterator.get_next() @@ -753,7 +857,7 @@ if __name__ == '__main__': valid_figs = plot_everything(data_valid, 'valid') to_log = { **to_log, **train_figs, **valid_figs } - if step % 10000 == 0: + if step % 5000 == 0: manager.save(checkpoint_number=step) if step == 0: to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } } @@ -770,4 +874,6 @@ if __name__ == '__main__': print(step) - step += 1 \ No newline at end of file + step += 1 + # print('mean:') + # print(np.mean(times[1:])) \ No newline at end of file diff --git a/cvae_pyramid_old.py b/cvae_pyramid_old.py index 5efc839..bd6d106 100644 --- a/cvae_pyramid_old.py +++ b/cvae_pyramid_old.py @@ -420,7 +420,7 @@ if __name__ == '__main__': smpl = SMPL() factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), 'pose_shape': (72 + 11,), # 'uv_posed': (512, 256, 3), 'uv_body_posed': (512, 256, 3), diff --git a/cvae_vae.py b/cvae_vae.py index 915ed68..9fde07b 100644 --- a/cvae_vae.py +++ b/cvae_vae.py @@ -449,7 +449,7 @@ if __name__ == '__main__': smpl = SMPL() factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), 'pose_shape': (72 + 11,), # 'uv_posed': (3, 512, 256,), 'uv_body_posed': (3, 512, 256,), diff --git a/dataset.py b/dataset.py index 7994b26..d2ee42d 100644 --- a/dataset.py +++ b/dataset.py @@ -135,14 +135,27 @@ class StaticDataset(): class DatasetIdx(tf.data.Dataset): - def __new__(cls, folder, shuffle=True, is_cape=False): - uv_static_folder = os.path.join(folder, 'pose_shape') - frames = sorted(os.listdir(uv_static_folder)) + def __new__(cls, folder, shuffle=True, is_cape=False, testing=False, frames_file=None): + if frames_file is None: + uv_static_folder = os.path.join(folder, 'pose_shape') + frames = sorted(os.listdir(uv_static_folder)) + + if is_cape: + frames = ['.'.join(frame.split('.')[:-1]) for frame in frames] # .split('_')[0] + else: + frames = [frame.split('.')[0] for frame in frames] # .split('_')[0] + + if testing: + frames = sorted(os.listdir(os.path.join(folder, 'mesh_static') )) + frames = [frame.split('.')[0] + '_4' for frame in frames] + + if frames_file is not None: + frames = [] + with open(os.path.join(folder, frames_file), 'r') as f: + lines = f.readlines() + lines = [line.strip() for line in lines] + frames = lines - if is_cape: - frames = ['.'.join(frame.split('.')[:-1]) for frame in frames] # .split('_')[0] - else: - frames = [frame.split('.')[0] for frame in frames] # .split('_')[0] if shuffle: random.shuffle(frames) @@ -179,10 +192,12 @@ class DatasetFactory(): do_repeat=True, is_cape=False, use_one_hot=False, - use_no_orient=True): + use_no_orient=True, + testing=False, + frames_file=None): assert set(resolutions).issubset(set([32, 64, 128, 256, 512])) - dataset_idx = DatasetIdx(folder, shuffle, is_cape=is_cape) + dataset_idx = DatasetIdx(folder, shuffle, is_cape=is_cape, testing=testing, frames_file=frames_file) separator = '_' if is_cape: @@ -333,11 +348,11 @@ if __name__ == '__main__': os.environ["CUDA_VISIBLE_DEVICES"] = "6" from custom_utils.custom_utils import batch_to_dict, UV2Mesh, _maskFaces import plotly.graph_objects as go - # import plotly.express as ex + import plotly.express as ex # import cmapy as cm uv2mesh = UV2Mesh(is_skirt=True) - F = np.load("custom_utils/smpl_faces_skirt.npy") + F = np.load("custom_utils/smpl_faces.npy") # dataset = DatasetIdx('/home/workspace/data/dataset/stylegan_new/train') @@ -355,7 +370,7 @@ if __name__ == '__main__': # 'mesh_unposed': (14475, 3,), 'uv_unposed': (512, 256, 3), # 'uv_unposed_32': (3, 32, 16,), - # 'uv_curvature': (512, 256, 7), + 'uv_curvature': (512, 256, 7), # 'mesh_curvature': (14475) } signature_static = { #'uv_static': (3, 512, 256,), @@ -367,14 +382,17 @@ if __name__ == '__main__': } dataset = factory.get_dataset(folder='/home/workspace/local-data/train_skirt', - batch_size=300, + batch_size=1, signature=signature_dynamic, resolutions=[512], do_repeat=False, - use_one_hot=False) + use_one_hot=False, + is_cape=False, + frames_file='frames_dress_30k.txt') static_dataset = StaticDataset(folder='/home/workspace/local-data/train_skirt', signature=signature_static, - resolutions=[512]) + resolutions=[512], + is_cape=False) # for i, batch in enumerate(dataset): @@ -386,6 +404,7 @@ if __name__ == '__main__': for i, batch in enumerate(dataset): print(i) batch = static_dataset.expand_batch(batch_to_dict(batch, signature_dynamic)) + ex.imshow(batch['uv_curvature'][0].numpy().argmax(-1) / 6.0).show() sum_uv += batch['uv_unposed'].numpy().sum(axis=0) sum_mask += batch['uv_mask'].numpy().sum(axis=0) @@ -406,9 +425,9 @@ if __name__ == '__main__': k = F[:,2] )]).show() - np.save('custom_data/train_no_shape_skirt_avg_uv.npy', avg_garment) + np.save('custom_data/train_dress_30k_no_shape_avg_uv.npy', avg_garment) - # print() + print() # pass diff --git a/dataset_packed.py b/dataset_packed.py index 4aa28a0..f43f13c 100644 --- a/dataset_packed.py +++ b/dataset_packed.py @@ -217,7 +217,7 @@ if __name__ == '__main__': # print(d) factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), 'pose_shape': (72 + 11,), # 'uv_posed': (3, 512, 256,), 'uv_body_posed': (512, 256, 3), diff --git a/deorient copy.py b/deorient copy.py new file mode 100644 index 0000000..88c29f6 --- /dev/null +++ b/deorient copy.py @@ -0,0 +1,104 @@ + + +import os +import sys + + +os.environ["CUDA_VISIBLE_DEVICES"] = '6' +import tensorflow as tf + +gpus = tf.config.experimental.list_physical_devices('GPU') +if gpus: + try: + # Currently, memory growth needs to be the same across GPUs + for gpu in gpus: + tf.config.experimental.set_memory_growth(gpu, True) + logical_gpus = tf.config.experimental.list_logical_devices('GPU') + print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs") + except RuntimeError as e: + # Memory growth must be set before GPUs have been initialized + print(e) + + +import glob +import tqdm +import copy +import numpy as np +from custom_utils.smpl import SMPL + +# from custom_utils.custom_utils import UV2Mesh, _maskFaces +import plotly.graph_objects as go +# import plotly.express as ex +from scipy.spatial.transform import Rotation as R + + +if __name__ == '__main__': + folder = '/home/workspace/local-data/test_skirt_ready' + # folder = '/home/workspace/data/dataset/test_ready' + # uv2mesh = UV2Mesh(is_skirt=False) + smpl = SMPL(use_one_hot=False) + + F = np.load("custom_utils/smpl_faces.npy") + + ids = os.listdir(os.path.join(folder, 'pose_shape')) + ids = [id.split('_')[0] for id in ids] + ids = set(ids) + os.makedirs(os.path.join(folder, 'mesh_posed_no_orient'), exist_ok=True) + + for id in tqdm.tqdm(ids): + + frames = glob.glob(os.path.join(folder, 'pose_shape', id + '_*')) + frames = len(frames) + + mask = np.load(os.path.join(folder, 'mesh_mask', id + '.npy')).astype(bool) + mesh_posed = [np.load(os.path.join(folder, 'mesh_posed', id + '_' + str(i) + '.npz')) for i in range(frames)] + mesh_posed = [mesh_posed[i]['mesh_posed'] for i in range(frames)] + # mesh_unposed = [np.load(os.path.join(folder, 'mesh_unposed', id + '_' + str(i) + '.npz')) for i in range(frames)] + # mesh_unposed = [mesh_unposed[i]['mesh_unposed'] for i in range(frames)] + pose_shape = [np.load(os.path.join(folder, 'pose_shape', id + '_' + str(i) + '.npy')).astype(np.float32) for i in range(frames)] + # pose_shape_no_orient = copy.deepcopy(pose_shape) + # for i in range(len(pose_shape)): + # pose_shape_no_orient[i][:3] = 0 + + rodr = smpl.run_rodrigues(np.stack([x[:72] for x in pose_shape]).astype(np.float32)).numpy() + + for frame in range(frames): + r = R.from_matrix(rodr[frame, 0, :, :]) + # assert r.as_matrix() == rodr[frame, 0, :, :] + out = r.apply(mesh_posed[frame], inverse=True) + + # x = smpl.run_garment(pose_shape_no_orient[frame][:72][np.newaxis,:], pose_shape_no_orient[frame][72:][np.newaxis,:], mesh_unposed[frame][np.newaxis,:,:])[0].numpy()[mask, :] + # y = out[mask, :] + # _, faces = _maskFaces(np.zeros((14475,3), np.float32), F, mask) + # fig = go.Figure(data=[ + # go.Mesh3d( + # x=x[:,0], + # y=x[:,1], + # z=x[:,2], + # i = faces[:,0], + # j = faces[:,1], + # k = faces[:,2], + # ), + # go.Mesh3d( + # x=y[:,0], + # y=y[:,1], + # z=y[:,2], + # i = faces[:,0], + # j = faces[:,1], + # k = faces[:,2], + # ), + # ]) + + # fig.update_layout(scene_aspectmode='manual', + # scene_aspectratio=dict(x=1, y=1, z=1)) + # fig.update_layout( + # scene = dict( + # xaxis = dict(nticks=4, range=[-1,1],), + # yaxis = dict(nticks=4, range=[-1,1],), + # zaxis = dict(nticks=4, range=[-1,1],),) + # ) + + # fig.show() + + + np.savez_compressed(os.path.join(folder, 'mesh_posed_no_orient', id + '_' + str(frame) + '.npz'), mesh_posed_no_orient=out) diff --git a/deorient_cape.py b/deorient_cape.py new file mode 100644 index 0000000..6189982 --- /dev/null +++ b/deorient_cape.py @@ -0,0 +1,114 @@ + + +import os +import sys + + +os.environ["CUDA_VISIBLE_DEVICES"] = '6' +import tensorflow as tf + +gpus = tf.config.experimental.list_physical_devices('GPU') +if gpus: + try: + # Currently, memory growth needs to be the same across GPUs + for gpu in gpus: + tf.config.experimental.set_memory_growth(gpu, True) + logical_gpus = tf.config.experimental.list_logical_devices('GPU') + print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs") + except RuntimeError as e: + # Memory growth must be set before GPUs have been initialized + print(e) + + +import glob +import tqdm +import copy +import numpy as np +from custom_utils.smpl import SMPL + +# from custom_utils.custom_utils import UV2Mesh, _maskFaces +import plotly.graph_objects as go +# import plotly.express as ex +from scipy.spatial.transform import Rotation as R + + +if __name__ == '__main__': + folder = '/home/workspace/local-data/cape_processed/train/female' + # folder = '/home/workspace/data/dataset/test_ready' + # uv2mesh = UV2Mesh(is_skirt=False) + + smpl = SMPL(use_one_hot=False, orig_smpl=True) + + + F = np.load("custom_utils/smpl_faces_orig.npy") + + ids = os.listdir(os.path.join(folder, 'pose_shape')) + ids = [id.split('.')[0] for id in ids] + ids = set(ids) + os.makedirs(os.path.join(folder, 'mesh_posed_no_orient'), exist_ok=True) + + for id in tqdm.tqdm(ids): + + frames = sorted(glob.glob(os.path.join(folder, 'pose_shape', id + '.*'))) + frames = ['.'.join(frame.split('/')[-1].split('.')[:-1]) + '.npz' for frame in frames] + + + mesh_posed = [np.load(os.path.join(folder, 'mesh_posed', frame)) for frame in frames] + mesh_posed = [mesh_posed[i]['mesh_posed'] for i in range(len(frames))] + pose_shape = [np.load(os.path.join(folder, 'pose_shape', frame[:-1] + 'y')) for frame in frames] + + # mesh_unposed = [np.load(os.path.join(folder, 'mesh_unposed_no_shape', frame)) for frame in frames] + # mesh_unposed = [mesh_unposed[i]['mesh_unposed_no_shape'] for i in range(len(frames))] + # shape = np.asarray(pose_shape)[:, 72:].astype(np.float32) + # gender = tf.cast(tf.greater_equal(shape[:, 10] , 0.5), tf.int32) + # shape_offsets = tf.stack([tf.gather(tf.tensordot(shape[i,:10][tf.newaxis, :], smpl.shapedirs[gender[i]], axes=[[1], [2]])[0,:,:], smpl.to_keep, axis=0) for i in range(shape.shape[0])]) + # mesh_unposed_shaped = [mesh_unposed[i] + shape_offsets.numpy()[i] for i in range(shape.shape[0])] + + + pose_shape_no_orient = copy.deepcopy(pose_shape) + for i in range(len(pose_shape)): + pose_shape_no_orient[i][:3] = 0 + + rodr = smpl.run_rodrigues(np.stack([x[:72] for x in pose_shape]).astype(np.float32)).numpy() + + for i, frame in enumerate(frames): + r = R.from_matrix(rodr[i, 0, :, :]) + # assert r.as_matrix() == rodr[frame, 0, :, :] + out = r.apply(mesh_posed[i], inverse=True) + + # if i == 50: + # x = smpl.run_garment(pose_shape_no_orient[i][:72][np.newaxis,:].astype(np.float32), pose_shape_no_orient[i][72:][np.newaxis,:].astype(np.float32), mesh_unposed_shaped[i][np.newaxis,:,:].astype(np.float32))[0].numpy() + # y = out + # faces = F + # fig = go.Figure(data=[ + # go.Mesh3d( + # x=x[:,0], + # y=x[:,1], + # z=x[:,2], + # i = faces[:,0], + # j = faces[:,1], + # k = faces[:,2], + # ), + # go.Mesh3d( + # x=y[:,0], + # y=y[:,1], + # z=y[:,2], + # i = faces[:,0], + # j = faces[:,1], + # k = faces[:,2], + # ), + # ]) + + # fig.update_layout(scene_aspectmode='manual', + # scene_aspectratio=dict(x=1, y=1, z=1)) + # fig.update_layout( + # scene = dict( + # xaxis = dict(nticks=4, range=[-1,1],), + # yaxis = dict(nticks=4, range=[-1,1],), + # zaxis = dict(nticks=4, range=[-1,1],),) + # ) + + # fig.show() + + + np.savez_compressed(os.path.join(folder, 'mesh_posed_no_orient', frame), mesh_posed_no_orient=out) diff --git a/deshape.py b/deshape.py index fa5988d..9c54c50 100644 --- a/deshape.py +++ b/deshape.py @@ -26,7 +26,7 @@ if __name__ == '__main__': F = np.load("custom_utils/smpl_faces.npy") factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), 'pose_shape': (72 + 11,), 'mesh_posed': (14475, 3,), 'mesh_unposed': (14475, 3,), diff --git a/downscale.py b/downscale.py index 609c288..39d021f 100644 --- a/downscale.py +++ b/downscale.py @@ -8,7 +8,7 @@ import numpy as np import plotly.graph_objects as go import plotly.express as ex -os.environ["CUDA_VISIBLE_DEVICES"] = "3" +os.environ["CUDA_VISIBLE_DEVICES"] = "6" gpus = tf.config.experimental.list_physical_devices('GPU') if gpus: @@ -98,6 +98,23 @@ def downscale_uv_maps_posed_body(folder, type, sizes): np.savez_compressed(os.path.join(folder, type + '_2_' + str(size), frame), uv_posed_body_no_orient = down) +def downscale_uv_maps_posed_no_orient(folder, type, sizes): + for size in sizes: + os.makedirs(os.path.join(folder, type + '_' + str(size)), exist_ok=True) + + frames = os.listdir(os.path.join(folder, type))[int(args.start):int(args.end)] + + for frame in tqdm.tqdm(frames): + id, _ = frame.split('_') + img = np.load(os.path.join(folder, type, frame)); img = img['uv_posed_no_orient'] + img = fill(img, uv_masks_body[512]) + for size in sizes: + mask = uv_masks_body[size] + down = tf.image.resize(img, size=(size, int(size/2)), method=tf.image.ResizeMethod.LANCZOS5) + down = down * mask[:,:,np.newaxis] + np.savez_compressed(os.path.join(folder, type + '_' + str(size), frame), uv_posed_no_orient = down) + + def downscale_uv_maps_curv(folder, type, sizes): for size in sizes: os.makedirs(os.path.join(folder, type + '_' + str(size)), exist_ok=True) @@ -171,12 +188,13 @@ def downscale_uv_maps_mask(folder, type, size): if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument("-f", "--folder", help = "end of range", default='/home/workspace/local-data/train') - parser.add_argument("-s", "--start", help = "start of range", default=280000) - parser.add_argument("-e", "--end", help = "end of range", default=10000000) + parser.add_argument("-s", "--start", help = "start of range", default=30700) + parser.add_argument("-e", "--end", help = "end of range", default=45000) parser.add_argument("-n", "--name", help = "end of range", default='lhunor') args = parser.parse_args() - sizes = [32, 64, 128, 256] + # sizes = [32, 64, 128, 256] + sizes = [32] folder = args.folder is_skirt = True @@ -200,8 +218,9 @@ if __name__ == '__main__': # downscale_uv_maps_static(folder=folder, type='uv_static', sizes=sizes) # downscale_uv_maps_unposed(folder=folder, type='uv_unposed_no_shape', sizes=sizes) + downscale_uv_maps_posed_no_orient(folder=folder, type='uv_posed_no_orient', sizes=sizes) # downscale_uv_maps_curv(folder=folder, type='uv_curvature', sizes=sizes) - downscale_uv_maps_posed_body(folder=folder, type='uv_posed_body_no_orient', sizes=sizes) + # downscale_uv_maps_posed_body(folder=folder, type='uv_posed_body_no_orient', sizes=sizes) print() \ No newline at end of file diff --git a/downscale_cape.py b/downscale_cape.py index f30a18b..6f203ce 100644 --- a/downscale_cape.py +++ b/downscale_cape.py @@ -26,7 +26,7 @@ def get_img_idxs(): img_idxs = dict() img_coords = dict() uv_masks = dict() - uv_mask = np.load('custom_utils/mask_256x512.npy') + uv_mask = np.load('custom_data/garment_uv_mask_full.npy') coords = np.transpose(np.stack(np.nonzero((1 - uv_mask))), (1,0)) img_idx = np.transpose(np.stack(np.nonzero((uv_mask))), (1,0)) img_idxs[512] = img_idx @@ -41,7 +41,17 @@ def get_img_idxs(): img_coords[res] = coords uv_masks[res] = down.astype(np.int32) - return img_idxs, img_coords, uv_masks + + uv_masks_body = dict() + uv_mask_body = np.load('custom_utils/mask_256x512.npy') + uv_mask_body = cv2.dilate(uv_mask_body.astype(np.float32), cv2.getStructuringElement(cv2.MORPH_RECT, (2 * 2 + 1, 2 * 2 + 1), (2, 2)), iterations=2) + uv_masks_body[512] = uv_mask_body + for res in [32, 64, 128, 256]: + down = tf.image.resize(uv_mask_body[:,:,tf.newaxis].astype(np.int32), size=(res, int(res/2)), method=tf.image.ResizeMethod.NEAREST_NEIGHBOR) + down = np.squeeze(down.numpy().astype(bool)) + uv_masks_body[res] = down + + return img_idxs, img_coords, uv_masks, uv_masks_body def fill(img, mask): @@ -96,12 +106,10 @@ def downscale_uv_maps_posed_body(folder, type, sizes): frames = os.listdir(os.path.join(folder, type))[int(args.start):int(args.end)] for frame in tqdm.tqdm(frames): - id, _ = frame.split('_') img = np.load(os.path.join(folder, type, frame)); img = img['uv_posed_body_no_orient'] - mask_full = uv_mask_store[512][id] - img = fill(img, mask_full) + img = fill(img, uv_masks_body[512]) for size in sizes: - mask = uv_mask_store[size][id] + mask = uv_masks_body[size] down = tf.image.resize(img, size=(size, int(size/2)), method=tf.image.ResizeMethod.LANCZOS5) down = down * mask[:,:,np.newaxis] np.savez_compressed(os.path.join(folder, type + '_' + str(size), frame), uv_posed_body_no_orient = down) @@ -114,12 +122,11 @@ def downscale_uv_maps_curv(folder, type, sizes): frames = os.listdir(os.path.join(folder, type))[int(args.start):int(args.end)] for frame in tqdm.tqdm(frames): - id, _ = frame.split('_') img = np.load(os.path.join(folder, type, frame)); img = img['curvature_uv'] - mask_full = uv_mask_store[512][id] + mask_full = uv_mask_store[512][None] img = fill_label(img, mask_full) for size in sizes: - mask = uv_mask_store[size][id] + mask = uv_mask_store[size][None] down = tf.image.resize(img[:,:,tf.newaxis], size=(size, int(size/2)), method=tf.image.ResizeMethod.NEAREST_NEIGHBOR) down = np.squeeze(down) * mask[:,:] np.savez_compressed(os.path.join(folder, type + '_' + str(size), frame), uv_curvature = down) @@ -133,12 +140,11 @@ def downscale_uv_maps_unposed(folder, type, sizes): frames = os.listdir(os.path.join(folder, type))[int(args.start):int(args.end)] for frame in tqdm.tqdm(frames): - id, _ = frame.split('_') img = np.load(os.path.join(folder, type, frame)); img = img['uv_unposed_no_shape'] - mask_full = uv_mask_store[512][id] + mask_full = uv_mask_store[512][None] img = fill(img, mask_full) for size in sizes: - mask = uv_mask_store[size][id] + mask = uv_mask_store[size][None] down = tf.image.resize(img, size=(size, int(size/2)), method=tf.image.ResizeMethod.LANCZOS5) down = down * mask[:,:,np.newaxis] np.savez_compressed(os.path.join(folder, type + '_' + str(size), frame), uv_unposed_no_shape = down) @@ -151,14 +157,13 @@ def downscale_uv_maps_static(folder, type, sizes): frames = os.listdir(os.path.join(folder, type))[int(args.start):int(args.end)] for frame in tqdm.tqdm(frames): - id, _ = frame.split('.') img = np.load(os.path.join(folder, type, frame)); img = img['uv_static'] - mask_full = uv_mask_store[512][id] + mask_full = uv_mask_store[512][None] img = fill(img, mask_full) for size in sizes: down = tf.image.resize(img, size=(size, int(size/2)), method=tf.image.ResizeMethod.LANCZOS5) - mask = uv_mask_store[size][id] + mask = uv_mask_store[size][None] down = down * mask[:,:,np.newaxis] np.savez_compressed(os.path.join(folder, type + '_' + str(size), frame), uv_static = down) @@ -169,7 +174,6 @@ def downscale_uv_maps_mask(folder, type, size): frames = os.listdir(os.path.join(folder, type))[int(args.start):int(args.end)] for frame in tqdm.tqdm(frames): - id, _ = frame.split('.') img = np.load(os.path.join(folder, type, frame)); img = img['uv_mask'].astype(np.float32) down = tf.image.resize(img[:,:,tf.newaxis], size=(size, int(size/2)), method=tf.image.ResizeMethod.NEAREST_NEIGHBOR) down = np.squeeze(down.numpy().astype(bool)) @@ -179,9 +183,9 @@ def downscale_uv_maps_mask(folder, type, size): if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument("-f", "--folder", help = "end of range", default='/home/workspace/local-data/cape_processed/test/male') + parser.add_argument("-f", "--folder", help = "end of range", default='/home/workspace/local-data/cape_processed/train/male') parser.add_argument("-s", "--start", help = "start of range", default=0) - parser.add_argument("-e", "--end", help = "end of range", default=10000) + parser.add_argument("-e", "--end", help = "end of range", default=100000) parser.add_argument("-n", "--name", help = "end of range", default='lhunor') args = parser.parse_args() @@ -189,7 +193,7 @@ if __name__ == '__main__': sizes = [32, 64, 128, 256] folder = args.folder - img_idxs, img_coords, uv_masks = get_img_idxs() + img_idxs, img_coords, uv_masks, uv_masks_body = get_img_idxs() uv_mask_store = { size: UVMaskStore(folder, size=size) for size in sizes } uv_mask_store[512] = UVMaskStore(folder, size=512) @@ -200,9 +204,9 @@ if __name__ == '__main__': # downscale_uv_maps_mask(folder=folder, type='uv_mask', size=256) downscale_uv_maps_static(folder=folder, type='uv_static', sizes=sizes) - # downscale_uv_maps_unposed(folder=folder, type='uv_unposed_no_shape', sizes=sizes) - # downscale_uv_maps_curv(folder=folder, type='uv_curvature', sizes=sizes) - # downscale_uv_maps_posed_body(folder=folder, type='uv_posed_body_no_orient', sizes=sizes) + downscale_uv_maps_unposed(folder=folder, type='uv_unposed_no_shape', sizes=sizes) + downscale_uv_maps_curv(folder=folder, type='uv_curvature', sizes=sizes) + downscale_uv_maps_posed_body(folder=folder, type='uv_posed_body_no_orient', sizes=sizes) print() \ No newline at end of file diff --git a/downscaling_test.py b/downscaling_test.py index 9ca036d..ff6003e 100644 --- a/downscaling_test.py +++ b/downscaling_test.py @@ -125,7 +125,7 @@ if __name__ == '__main__': factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), 'pose_shape': (72 + 11,), # 'uv_posed': (3, 512, 256,), # 'uv_body_posed': (3, 512, 256,), diff --git a/downscaling_test_curv.py b/downscaling_test_curv.py index f2bfb3a..c13aef5 100644 --- a/downscaling_test_curv.py +++ b/downscaling_test_curv.py @@ -96,7 +96,7 @@ if __name__ == '__main__': factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), 'pose_shape': (72 + 11,), # 'uv_posed': (3, 512, 256,), # 'uv_body_posed': (3, 512, 256,), diff --git a/edge_detection.py b/edge_detection.py new file mode 100644 index 0000000..6b2d7ff --- /dev/null +++ b/edge_detection.py @@ -0,0 +1,15 @@ +import os +import cv2 +import numpy as np +import plotly.express as ex + +if __name__ == '__main__': + + img = np.load('/home/workspace/data/dataset/train/00042/uv_unposed_no_shape/Jumpsuit_58.npz')['uv_unposed_no_shape'] + curv = np.load('/home/workspace/data/dataset/train/00042/curvature_uv/Jumpsuit_58.npz')['curvature_uv'] + edges = cv2.Canny(image=(np.round((img+1) * 125)).astype(np.uint8), threshold1=25, threshold2=175, apertureSize=5, L2gradient=True) + + ex.imshow(edges).show() + ex.imshow(curv).show() + + print() \ No newline at end of file diff --git a/evaluate.py b/evaluate.py new file mode 100644 index 0000000..e69de29 diff --git a/evaluate_ae.py b/evaluate_ae.py index 709758b..28bb889 100644 --- a/evaluate_ae.py +++ b/evaluate_ae.py @@ -1,6 +1,6 @@ import os import sys -from configs.config_abl_skin_skirt import config +from configs.config_abl_all_post import config os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] import tensorflow as tf @@ -42,11 +42,12 @@ from losses import collision_loss as collision_penalty from custom_utils.custom_utils import batch_to_dict, load_model, plot_3d, UV2Mesh, get_summary_html, maskFacesBatch, _maskFaces, plot_3d_collision from dataset import DatasetFactory, StaticDataset from custom_utils.smpl import SMPL -from models.cvae_model import CVAE +from models.cvae_model import CVAENew as CVAE from custom_utils.supersmpl_io import writeOBJ +# from unif_metric import chamfer_and_score -uv2mesh = UV2Mesh(res=256, is_skirt=config['is_skirt'], is_adaptive=False) +uv2mesh = UV2Mesh(res=256, is_skirt=config['is_skirt'], is_adaptive=False, is_smpl_orig=config['is_cape']) @tf.function def step(batch): @@ -80,11 +81,10 @@ if __name__ == '__main__': parser.add_argument('--name', type=str) args = vars(parser.parse_args()) - smpl = SMPL(use_one_hot=config['use_one_hot']) skirt_modifier = '_skirt' if config['is_skirt'] else '' folder = config['test_dir'] - smpl = SMPL(use_one_hot=False) + smpl = SMPL(use_one_hot=False, orig_smpl=config['is_cape']) model = CVAE(config) # str_split = config['name'].split('_') @@ -92,18 +92,22 @@ if __name__ == '__main__': # checkpoint_name = '_'.join(str_split[:test_idx]) checkpoint_name = config['name'] - F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy").astype(np.int32) + if config['is_cape']: + F = np.load("custom_utils/smpl_faces_orig.npy").astype(np.int32) + else: + F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy").astype(np.int32) + ids = os.listdir(os.path.join(folder, 'pose_shape')) ids = [id.split('_')[0] for id in ids] ids = set(ids) - iteration = '70000' + iteration = '' - load_model(model, 'checkpoints/' + checkpoint_name, iteration=iteration) + load_model(model, 'checkpoints/post/' + checkpoint_name, iteration=iteration) # load_model(model, 'checkpoints/' + 'abl_all_120k') - output_folder = '/home/workspace/data/results/' + checkpoint_name + '-' + iteration + output_folder = '/home/workspace/data/results/post/' + checkpoint_name + '-' + iteration os.makedirs(output_folder, exist_ok=True) @@ -120,12 +124,14 @@ if __name__ == '__main__': resolutions=[config['resolution']], in_memory=False, do_repeat=False, - use_one_hot=config['use_one_hot'], - use_no_orient=config['remove_global_orientation']) + use_no_orient=config['remove_global_orientation'], + frames_file=config['frames_file_test'] if 'frames_file_test' in config.keys() else None, + is_cape=config['is_cape']) static_dataset_test = StaticDataset(folder=config['test_dir'], signature=config['signature_static'], resolutions=[config['resolution']], - in_memory=True) + in_memory=True, + is_cape=config['is_cape']) # faces_folder = '/home/workspace/data/results/support/faces' + ('_skirt' if config['is_skirt'] else '') # ids = os.listdir(faces_folder) diff --git a/evaluate_ae_pyramid.py b/evaluate_ae_pyramid.py index 8f008ff..730e000 100644 --- a/evaluate_ae_pyramid.py +++ b/evaluate_ae_pyramid.py @@ -1,6 +1,6 @@ import os import sys -from configs.config_abl_pyr_32 import config +from configs.config_abl_2_pyr_32_64_128_256_512 import config os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] import tensorflow as tf @@ -80,7 +80,6 @@ if __name__ == '__main__': parser.add_argument('--name', type=str) args = vars(parser.parse_args()) - smpl = SMPL() skirt_modifier = '_skirt' if config['is_skirt'] else '' folder = config['test_dir'] @@ -98,7 +97,7 @@ if __name__ == '__main__': ids = [id.split('_')[0] for id in ids] ids = set(ids) - iteration = '430000' + iteration = '50000' load_model(model, 'checkpoints/' + checkpoint_name, iteration=iteration) # load_model(model, 'checkpoints/' + 'abl_all_120k') diff --git a/evaluate_cape.py b/evaluate_cape.py index 8daa0af..5b4b163 100644 --- a/evaluate_cape.py +++ b/evaluate_cape.py @@ -1,5 +1,6 @@ import os -from configs.config_abl_pyr_64_128_256_cape_f import config +from configs.config_abl_2_pyr_64_128_256_512_cape_m import config + os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] import tensorflow as tf @@ -323,29 +324,42 @@ def plot_everything(batch: dict, type: str): def test(): - load_model(model, 'checkpoints/' + config['name']) + load_model(model, 'checkpoints/' + config['name']) # , iteration='60000' + clothing_verts_idx = np.load(os.path.join('CAPE', 'data', 'clothing_verts_idx.npy')) + cape_mask = np.zeros((6890), bool) + cape_mask[clothing_verts_idx] = True - dataset_test = factory.get_dataset(folder=config['test_dir'], batch_size=config['batch_size'], signature=config['signature_dynamic'], resolutions=dataset_resolutions, in_memory=False, do_repeat=False, is_cape=config['is_cape']) + + dataset_test = factory.get_dataset(folder=config['test_dir'], batch_size=config['batch_size'], signature=config['signature_dynamic'], resolutions=dataset_resolutions, in_memory=False, do_repeat=False, is_cape=config['is_cape'], shuffle=False) static_dataset_test = StaticDataset(folder=config['test_dir'], signature=config['signature_static'], resolutions=dataset_resolutions, in_memory=True, is_cape=config['is_cape']) step = 0 losses = [] + lines = [] - + all_errors = [] + for batch in tqdm.tqdm(dataset_test): batch = static_dataset_test.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) - _, out_levels = test_step(batch) - all_errors = [] + if step == 0: + _, out_levels = test_step(batch) + # load_model(model, 'checkpoints/' + config['name']) # , iteration='60000' + # _, out_levels = test_step(batch) + else: + _, out_levels = test_step(batch) + errors = [] for i, id in enumerate(batch['id']): id_str = id.numpy().decode("utf-8") + frame_nr_str = batch['frame_nr'][i].numpy().decode("utf-8") pred = uv2mesh(out_levels[-1][0]) min_body = np.load(os.path.join('/home/workspace/data/dataset/cape/cape_release', 'minimal_body_shape', id_str.split('_')[0], id_str.split('_')[0] + '_minimal.npy'))[np.newaxis, :, :].astype(np.float32) - offsets_pred = pred[i] - min_body[0,smpl.to_keep,:] - offsets_orig = batch['mesh_unposed'][i] - min_body[0,smpl.to_keep,:] + offsets_pred = pred[i].numpy()[cape_mask[smpl.to_keep],:] - min_body[0,clothing_verts_idx,:] + offsets_orig = batch['mesh_unposed'][i].numpy()[cape_mask[smpl.to_keep],:] - min_body[0,clothing_verts_idx,:] error = tf.reduce_mean(tf.math.sqrt(tf.reduce_sum((offsets_orig - offsets_pred) ** 2, axis=-1))) + lines.append(id_str + '_' + frame_nr_str + ' ' + str(error.numpy())) errors.append(error) # test_loss = { **{ 'test/error': tf.reduce_mean(errors) }, **test_loss } @@ -364,6 +378,9 @@ def test(): # averages = dict() path_to_plotly_html = "temp/plotly_figure.html" + with open('temp/error_' + config['name'] + '.txt', 'w') as f: + f.writelines('\n'.join(lines)) + errors = np.asarray(all_errors) print('mean: ' + str(errors.mean())) print('min: ' + str(errors.min())) diff --git a/evaluate_cape_unif.py b/evaluate_cape_unif.py new file mode 100644 index 0000000..a855dfd --- /dev/null +++ b/evaluate_cape_unif.py @@ -0,0 +1,169 @@ +import os +import sys +from configs.config_cape_m_00032_SL_2 import config + +os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] +import tensorflow as tf + +gpus = tf.config.experimental.list_physical_devices('GPU') +if gpus: + try: + # Currently, memory growth needs to be the same across GPUs + for gpu in gpus: + tf.config.experimental.set_memory_growth(gpu, True) + logical_gpus = tf.config.experimental.list_logical_devices('GPU') + print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs") + except RuntimeError as e: + # Memory growth must be set before GPUs have been initialized + print(e) + +import glob +import time +import argparse +import wandb +import tqdm +import random +import numpy as np +import plotly.graph_objects as go +import plotly.express as ex +from PIL import Image +from postprocessing import fix_collision + +if config['is_skirt']: + from losses import edge_loss_skirt as edge_loss +else: + from losses import edge_loss + + + +from losses import collision_ratio, kl_loss #, concept_loss +# from losses import collision_penalty as collision_penalty +from losses import collision_loss as collision_penalty +from custom_utils.custom_utils import batch_to_dict, load_model, plot_3d, UV2Mesh, get_summary_html, maskFacesBatch, _maskFaces, plot_3d_collision +from dataset import DatasetFactory, StaticDataset +from custom_utils.smpl import SMPL +from models.cvae_model import CVAE +from custom_utils.supersmpl_io import writeOBJ +from unif_metric import chamfer_and_score + + +uv2mesh = UV2Mesh(res=256, is_skirt=config['is_skirt'], is_adaptive=False, is_smpl_orig=config['is_cape']) + +@tf.function +def step(batch): + print('test') + + if config['use_skinning']: + uv_orig = batch['uv_unposed'] + else: + uv_orig = batch['uv_posed'] + + pred, _, _ = model([uv_orig, batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature'], batch['uv_mask']], training=False) + + mesh_pred = uv2mesh(pred) + + # if config['use_skinning']: + # shape = batch['pose_shape'][:, 72:] + # gender = tf.cast(tf.greater_equal(shape[:, 10] , 0.5), tf.int32) + # shape_offsets = tf.stack([tf.gather(tf.tensordot(shape[i,:10][tf.newaxis, :], smpl.shapedirs[gender[i]], axes=[[1], [2]])[0,:,:], smpl.to_keep, axis=0) for i in range(shape.shape[0])]) + + # mesh_pred_shaped = mesh_pred + shape_offsets * batch['mesh_mask'][:,:,tf.newaxis] + # mesh_pred_posed = smpl.run_garment(batch['pose_shape'][:, :72], batch['pose_shape'][:, 72:], mesh_pred_shaped) + # else: + # mesh_pred_posed = mesh_pred + + # mesh_pred_posed_fixed = fix_collision(mesh_pred_posed, batch['mesh_body_posed'], batch['mesh_mask']) + + # return mesh_pred_posed, None #mesh_pred_posed_fixed + return mesh_pred + + +if __name__ == '__main__': + # init_wandb() + parser = argparse.ArgumentParser(description='') + parser.add_argument('--name', type=str) + args = vars(parser.parse_args()) + + skirt_modifier = '_skirt' if config['is_skirt'] else '' + + folder = config['test_dir'] + smpl = SMPL(use_one_hot=False, orig_smpl=config['is_cape']) + model = CVAE(config) + + # str_split = config['name'].split('_') + # test_idx = str_split.index('test') + # checkpoint_name = '_'.join(str_split[:test_idx]) + checkpoint_name = config['name'] + + if config['is_cape']: + F = np.load("custom_utils/smpl_faces_orig.npy").astype(np.int32) + else: + F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy").astype(np.int32) + + + ids = os.listdir(os.path.join(folder, 'pose_shape')) + ids = [id.split('_')[0] for id in ids] + ids = set(ids) + + iteration = '' + + load_model(model, 'checkpoints/' + checkpoint_name, iteration=iteration) + # load_model(model, 'checkpoints/' + 'abl_all_120k') + + output_folder = '/home/workspace/data/results/' + checkpoint_name + '-' + iteration + + + # os.makedirs(output_folder, exist_ok=True) + + # if config['use_skinning']: + # config['signature_dynamic'].pop('mesh_posed') + # config['signature_dynamic'].pop('mesh_unposed') + # config['signature_dynamic'].pop('mesh_body_posed') + + factory = DatasetFactory() + dataset_test = factory.get_dataset(folder=config['test_dir'], + batch_size=config['batch_size'], + signature=config['signature_dynamic'], + resolutions=[config['resolution']], + in_memory=False, + do_repeat=False, + use_no_orient=config['remove_global_orientation'], + frames_file=config['frames_file_test'] if 'frames_file_test' in config.keys() else None, + is_cape=config['is_cape']) + static_dataset_test = StaticDataset(folder=config['test_dir'], + signature=config['signature_static'], + resolutions=[config['resolution']], + in_memory=True, + is_cape=config['is_cape']) + + # faces_folder = '/home/workspace/data/results/support/faces' + ('_skirt' if config['is_skirt'] else '') + # ids = os.listdir(faces_folder) + # ids = [id.split('.')[0] for id in ids] + # faces = {id : np.load(faces_folder + '/' + id + '.npy') for id in ids } + errors = [] + euclid = [] + + for batch in tqdm.tqdm(dataset_test): + batch = static_dataset_test.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) + + mesh_pred = step(batch) + # mesh_pred_posed, mesh_pred_posed_fixed = mesh_pred_posed.numpy(), mesh_pred_posed_fixed.numpy() + + mask = batch['mesh_mask'].numpy().astype(bool) + + for i in range(mask.shape[0]): + id, frame_nr = batch['id'][i].numpy().decode("utf-8"), batch['frame_nr'][i].numpy().decode("utf-8") + x = chamfer_and_score(mesh_pred.numpy()[i, mask[i], :], batch['mesh_unposed'].numpy()[i, mask[i], :]) + y = np.mean(np.sqrt(np.sum((mesh_pred.numpy()[i, mask[i], :] - batch['mesh_unposed'].numpy()[i, mask[i], :])**2, axis=-1))) + errors.append(x[1]) + euclid.append(y) + + # writeOBJ(os.path.join(output_folder, id + '_' + frame_nr + '.obj'), mesh_pred_posed[i, mask[i], :], faces[id]) + # np.save(os.path.join(output_folder, id + '_' + frame_nr + '.npy'), mesh_pred_posed[i, mask[i], :]) + # np.save(os.path.join(output_folder, id + '_' + frame_nr + '_fixed_coll.npy'), mesh_pred_posed_fixed[i, mask[i], :]) + # writeOBJ(os.path.join(output_folder, id + '_' + frame_nr + '_fixed_coll.obj'), mesh_pred_posed_fixed[i, mask[i], :], faces[id]) + + print(np.mean(errors)) + print(np.mean(euclid)) + print() + diff --git a/get_error.py b/get_error.py index 4d85d81..d113c40 100644 --- a/get_error.py +++ b/get_error.py @@ -7,54 +7,64 @@ if __name__ == '__main__': garment_type_table = np.load('custom_data/garment_type_table_test.npy', allow_pickle=True).item() folder = '/home/workspace/data/results/errors' - checkpoint_name = 'abl_all' - iteration = '70000' + checkpoint_name = 'abl_2_pyr_32_64_128_256_512' + checkpoint_name_skirt = 'abl_2_pyr_32_64_128_256_512_skirt' + iteration = '50000' + iteration_skirt : str = '50000' - errors = dict() - errors_skirt = dict() - per_garment_errors = { 'Tshirt': [], 'Dress': [], 'Skirt': [], 'Top': [] } - per_garment_errors_skirt = { 'Tshirt': [], 'Jumpsuit': [], 'Trousers': [], 'Top': [] } + # checkpoint_name = 'abl_skin' + # checkpoint_name_skirt = checkpoint_name + '_skirt' + # iteration = '70000' + # iteration_skirt : str = iteration + + errors = [] + errors_skirt = [] + per_garment_errors= { 'Tshirt': [], 'Jumpsuit': [], 'Trousers': [], 'Top': [] } + per_garment_errors_skirt = { 'Tshirt': [], 'Dress': [], 'Skirt': [], 'Top': [] } with open(os.path.join(folder, checkpoint_name + '-' + iteration + '.csv'), 'r') as f: csv_reader = csv.reader(f, delimiter=',') for row in csv_reader: - per_garment_errors[garment_type_table[row[0].split('_')[0]]].append(row[1]) + per_garment_errors[garment_type_table[row[0].split('_')[0]]].append(float(row[1])) - with open(os.path.join(folder, checkpoint_name + '_skirt' + '-' + iteration + '.csv'), 'r') as f: - csv_reader = csv.reader(os.path.join(folder, checkpoint_name + '_skirt' + '-' + iteration + '.csv'), delimiter=',') + with open(os.path.join(folder, checkpoint_name_skirt + '-' + iteration_skirt + '.csv'), 'r') as f: + csv_reader = csv.reader(f, delimiter=',') for row in csv_reader: - per_garment_errors_skirt[garment_type_table[row[0]]].append(row[1]) + per_garment_errors_skirt[garment_type_table[row[0].split('_')[0]]].append(float(row[1])) - print('Non-skirt:') + print('\nNon-skirt:') for key in per_garment_errors.keys(): avg = np.mean(per_garment_errors[key]) errors.append(avg) print(key + ': ' + str(avg)) - print('Skirt:') + print('\nSkirt:') for key in per_garment_errors_skirt.keys(): avg = np.mean(per_garment_errors_skirt[key]) errors_skirt.append(avg) print(key + ': ' + str(avg)) - print('Avg non-skirt: ' + str(np.mean(errors))) + print('\nAvg non-skirt: ' + str(np.mean(errors))) print('Avg skirt: ' + str(np.mean(errors_skirt))) cum_avg_shirt = np.mean(per_garment_errors['Tshirt'] + per_garment_errors_skirt['Tshirt']) cum_avg_top = np.mean(per_garment_errors['Top'] + per_garment_errors_skirt['Top']) print('Global tshirt avg: ' + str(cum_avg_shirt)) - print('Global tshirt avg: ' + str(cum_avg_top)) + print('Global top avg: ' + str(cum_avg_top)) - print('Globl per garment: ') + print('\nGlobl per garment: ') global_errors = [] per_garment_errors['Tshirt'].extend(per_garment_errors_skirt['Tshirt']) per_garment_errors['Top'].extend(per_garment_errors_skirt['Top']) + per_garment_errors['Skirt'] = per_garment_errors_skirt['Skirt'] + per_garment_errors['Dress'] = per_garment_errors_skirt['Dress'] for key in per_garment_errors.keys(): avg = np.mean(per_garment_errors[key]) global_errors.append(avg) - print(key + ': ' + str(avg)) + print(key + ': ' + str(avg), 'samples: ' + str(len(per_garment_errors[key]))) print('Global avg: ' + str(np.mean(global_errors))) + print(len(global_errors)) \ No newline at end of file diff --git a/losses.py b/losses.py index 8575648..ab802a6 100644 --- a/losses.py +++ b/losses.py @@ -31,8 +31,10 @@ from tensorflow_graphics.geometry.convolution.graph_convolution import edge_conv """ COLLISION FUNCTIONS START """ F_coll = np.load("custom_utils/smpl_faces.npy") F_coll_skirt = np.load("custom_utils/smpl_faces_skirt.npy") +F_coll_orig = np.load("custom_utils/smpl_faces_orig.npy") F_norm = np.tile(F_coll[np.newaxis,:,:], [4,1,1]) F_norm_skirt = np.tile(F_coll_skirt[np.newaxis,:,:], [4,1,1]) +F_norm_orig = np.tile(F_coll_orig[np.newaxis,:,:], [4,1,1]) def _nearest_neighbour(V, B): tree = cKDTree(B.numpy()) @@ -236,9 +238,19 @@ def kl_loss(mean, logvar): return kl_loss -def normal_loss(pred, gt, mask, is_skirt=False): - pred_norm = vertex_normals(pred, F_norm_skirt if is_skirt else F_norm) - gt_norm = vertex_normals(gt, F_norm_skirt if is_skirt else F_norm) +def normal_loss(pred, gt, mask, is_skirt=False, is_smpl_orig=False): + f_norm = None + if not is_skirt and not is_smpl_orig: + f_norm = F_norm + elif is_skirt: + f_norm = F_norm_skirt + elif is_smpl_orig: + f_norm = F_norm_orig + else: + raise NotImplementedError + + pred_norm = vertex_normals(pred, f_norm) + gt_norm = vertex_normals(gt, f_norm) return tf.reduce_mean(tf.reduce_mean((tf.reduce_sum(tf.math.abs(pred_norm - gt_norm), axis=-1) * mask), axis=-1)) # vgg = tf.keras.applications.vgg16.VGG16(include_top=False, input_shape=(512,256,3)) diff --git a/merge_data.py b/merge_data.py index dd30aee..28122a2 100644 --- a/merge_data.py +++ b/merge_data.py @@ -181,7 +181,7 @@ if __name__ == '__main__': # body_static = sio.loadmat(os.path.join(garment_dir, 'info_body.mat'))['B'] # mask = np.squeeze(sio.loadmat(os.path.join(garment_dir, garment + '_mask.mat'))['mask'].astype(bool)) # verts_static = (body_static + offsets_static) * mask[:, np.newaxis] - # dfassert verts_static.min() > -1 and verts_static.max() < 1 + # # dfassert verts_static.min() > -1 and verts_static.max() < 1 # os.makedirs(os.path.join(output_folder, 'mesh_static'), exist_ok=True) @@ -204,7 +204,7 @@ if __name__ == '__main__': # np.savez_compressed(os.path.join(output_folder, 'mesh_posed', id + '_' + str(i) + '.npz'), mesh_posed=garment_posed[i,:,:] * mask[:, np.newaxis]) # os.makedirs(os.path.join(output_folder, 'mesh_body_posed'), exist_ok=True) - body_posed = readPC2(os.path.join(garment_dir, 'Body_posed.pc16'), True)['V'] + # body_posed = readPC2(os.path.join(garment_dir, 'Body_posed.pc16'), True)['V'] # for i in range(body_posed.shape[0]): # np.save(os.path.join(output_folder, 'mesh_body_posed', id + '_' + str(i) + '.npy'), body_posed[i,:,:]) @@ -217,8 +217,8 @@ if __name__ == '__main__': # shutil.copyfile(os.path.join(garment_folder_body, garment + '_' + str(i) + '.npz'), os.path.join(output_folder, 'uv_body_posed', id + '_' + str(i) + '.npz')) # os.makedirs(os.path.join(output_folder, 'pose_shape'), exist_ok=True) - # info = sio.loadmat(os.path.join(garment_dir, 'info.mat')) - # pose, shape, gender = info['poses'], info['shape'], info['gender'] + info = sio.loadmat(os.path.join(garment_dir, 'info.mat')) + pose, shape, gender = info['poses'], info['shape'], info['gender'] # shape = np.squeeze(np.concatenate((shape, gender), axis=1)) # for i in range(body_posed.shape[0]): # np.save(os.path.join(output_folder, 'pose_shape', id + '_' + str(i) + '.npy'), np.concatenate((pose[:, i], shape), axis=-1)) @@ -240,30 +240,38 @@ if __name__ == '__main__': # os.makedirs(os.path.join(output_folder, 'mesh_unposed_no_shape'), exist_ok=True) # for i in range(body_posed.shape[0]): # shutil.copyfile(os.path.join(garment_dir, 'mesh_unposed_no_shape', id + '_' + str(i) + '.npz'), os.path.join(output_folder, 'mesh_unposed_no_shape', id + '_' + str(i) + '.npz')) - + + # os.makedirs(os.path.join(output_folder, 'mesh_unposed_no_shape_one_hot'), exist_ok=True) + # for i in range(pose.shape[1]): + # shutil.copyfile(os.path.join(garment_dir, 'mesh_unposed_no_shape_one_hot', id + '_' + str(i) + '.npz'), os.path.join(output_folder, 'mesh_unposed_no_shape_one_hot', id + '_' + str(i) + '.npz')) + # os.makedirs(os.path.join(output_folder, 'uv_unposed_no_shape'), exist_ok=True) # for i in range(body_posed.shape[0]): # shutil.copyfile(os.path.join(garment_dir, 'uv_unposed_no_shape', garment + '_' + str(i) + '.npz'), os.path.join(output_folder, 'uv_unposed_no_shape', id + '_' + str(i) + '.npz')) + + # os.makedirs(os.path.join(output_folder, 'uv_unposed_no_shape_one_hot'), exist_ok=True) + # for i in range(body_posed.shape[0]): + # shutil.copyfile(os.path.join(garment_dir, 'uv_unposed_no_shape_one_hot', garment + '_' + str(i) + '.npz'), os.path.join(output_folder, 'uv_unposed_no_shape_one_hot', id + '_' + str(i) + '.npz')) - os.makedirs(os.path.join(output_folder, 'uv_curvature'), exist_ok=True) - for i in range(body_posed.shape[0]): - shutil.copyfile(os.path.join(garment_dir, 'curvature_uv', garment + '_' + str(i) + '.npz'), os.path.join(output_folder, 'uv_curvature', id + '_' + str(i) + '.npz')) + # os.makedirs(os.path.join(output_folder, 'uv_curvature'), exist_ok=True) + # for i in range(body_posed.shape[0]): + # shutil.copyfile(os.path.join(garment_dir, 'curvature_uv', garment + '_' + str(i) + '.npz'), os.path.join(output_folder, 'uv_curvature', id + '_' + str(i) + '.npz')) os.makedirs(os.path.join(output_folder, 'mesh_curvature'), exist_ok=True) mesh_curvature = np.load(os.path.join(garment_dir, 'curvature_label_6_25.npy')) - for i in range(body_posed.shape[0]): + for i in range(pose.shape[1]): np.savez_compressed(os.path.join(output_folder, 'mesh_curvature', id + '_' + str(i) + '.npz'), mesh_curvature=mesh_curvature[i]) - # shutil.copyfile(os.path.join(folder, id, 'uv_shaped_body.npz'), os.path.join(output_folder, 'uv_shaped_body', id + '.npz')) # os.makedirs(os.path.join(output_folder, 'uv_posed_body_no_orient'), exist_ok=True) # for i in range(body_posed.shape[0]): - # shutil.copyfile(os.path.join(garment_dir, 'uv_posed_body_no_orient', garment + '_' + str(i) + '.npz'), os.path.join(output_folder, 'uv_posed_body_no_orient', id + '_' + str(i) + '.npz')) + # shutil.copyfile(os.path.join(garment_dir, 'uv_posed_body_no_orient', garment + '_' + str(i) + '.npz'), os.path.join(output_folder, 'uv_posed_body_no_orient_2', id + '_' + str(i) + '.npz')) # os.makedirs(os.path.join(output_folder, 'mesh_posed_body_no_orient'), exist_ok=True) # for i in range(body_posed.shape[0]): # shutil.copyfile(os.path.join(garment_dir, 'mesh_posed_body_no_orient', id + '_' + str(i) + '.npz'), os.path.join(output_folder, 'mesh_posed_body_no_orient', id + '_' + str(i) + '.npz')) + # shutil.copyfile(os.path.join(folder, id, 'uv_shaped_body.npz'), os.path.join(output_folder, 'uv_shaped_body', id + '.npz')) pass diff --git a/metrics.py b/metrics.py new file mode 100644 index 0000000..21eece3 --- /dev/null +++ b/metrics.py @@ -0,0 +1,8 @@ +import numpy as np +import pymesh + + +def surf2surf(V1, F1, V2, F2): + me1 = pymesh.form_mesh(V1, np.array(F1, np.int32)) + me2 = pymesh.form_mesh(V2, np.array(F2, np.int32)) + return pymesh.distance_to_mesh(me1, me2.vertices)[0].mean() + pymesh.distance_to_mesh(me2, me1.vertices)[0].mean() diff --git a/models/ae_body_model.py b/models/ae_body_model.py index 34e579f..a91b443 100644 --- a/models/ae_body_model.py +++ b/models/ae_body_model.py @@ -44,7 +44,7 @@ class AutoEncoder(tf.keras.Model): self.decoder = Decoder(decoder_input, decoder_depths, decoder_dims, kernel_size=kernel_size) - def call(self, inputs, training=None, use_mask=True): + def call(self, inputs, training, use_mask=True): if use_mask: x, mask = inputs else: diff --git a/models/base.py b/models/base.py index 82ade7e..e9cfd67 100644 --- a/models/base.py +++ b/models/base.py @@ -14,12 +14,12 @@ class Bottleneck(tf.keras.Model): self.flatten = tf.keras.layers.Flatten() self.dense = tf.keras.layers.Dense(latent_dim) - def call(self, inputs, training=None): + def call(self, inputs, training): x = inputs x = self.bottleneck(x, training=training) x = self.flatten(x) - x = self.dense(x) + x = self.dense(x, training=training) return x @@ -35,7 +35,7 @@ class VariationalEncoder(tf.keras.Model): self.mean = tf.keras.layers.Dense(latent_dim) self.log_var = tf.keras.layers.Dense(latent_dim) - def call(self, inputs, training=None): + def call(self, inputs, training): x = inputs x = self.encoder(x, training=training) @@ -55,7 +55,7 @@ class AEEncoder(tf.keras.Model): self.bottleneck = Bottleneck(bottleneck_size, latent_dim, kernel_size) - def call(self, inputs, training=None): + def call(self, inputs, training): if len(inputs) == 2: x, _ = inputs else: @@ -85,7 +85,7 @@ class Decoder(tf.keras.Model): self.decoder = ConvNeXtReverseLabels(depths=list(reversed(depths)), dims=list(reversed(dims)), nr_of_classes=7) - def call(self, inputs, training=None): + def call(self, inputs, training): if len(inputs) == 2: x, mask = inputs else: @@ -99,6 +99,105 @@ class Decoder(tf.keras.Model): x = tf.image.resize(x, size=(512, 256), method=tf.image.ResizeMethod.LANCZOS5) + if len(inputs) == 2: + if len(mask.shape) == 2: + x = x * mask[tf.newaxis,:,:,tf.newaxis] + else: + x = x * mask[:,:,:,tf.newaxis] + + return x + + + +class VariationalEncoderNew(tf.keras.Model): + + def __init__(self, depths, dims, kernel_size=7): + super(VariationalEncoderNew, self).__init__() + + self.encoder = ConvNeXt(depths=depths, dims=dims, include_top=False, kernel_size=kernel_size) + + self.mean_branch = tf.keras.Sequential( + [Block(dim=64, drop_path=0, kernel_size=kernel_size, + layer_scale_init_value=1e-6, prefix=f'bottleneck{j}') for j in range(5)] + ) + + self.var_branch = tf.keras.Sequential( + [Block(dim=64, drop_path=0, kernel_size=kernel_size, + layer_scale_init_value=1e-6, prefix=f'bottleneck{j}') for j in range(5)] + ) + + self.flatten_mean = tf.keras.layers.Flatten() + self.flatten_var = tf.keras.layers.Flatten() + + + + def call(self, inputs, training): + x = inputs + + x = self.encoder(x, training=training) + mean = self.mean_branch(x) + log_var = self.var_branch(x) + + mean = self.flatten_mean(mean) + log_var = self.flatten_var(log_var) + + return mean, log_var + + + +class AEEncoderNew(tf.keras.Model): + + def __init__(self, depths, dims, kernel_size=7, activation='tanh'): + super(AEEncoderNew, self).__init__() + + self.encoder = ConvNeXt(depths=depths, dims=dims, include_top=False, kernel_size=kernel_size) + self.act = tf.keras.layers.Activation(activation) + + + def call(self, inputs, training): + if len(inputs) == 2: + x, _ = inputs + else: + x = inputs + + x = self.encoder(x, training=training) + x = self.act(x) + + if len(inputs) == 2: + return x, inputs[1] + else: + return x + + +class DecoderNew(tf.keras.Model): + + def __init__(self, depths, dims, kernel_size=7, is_label=False): + super(DecoderNew, self).__init__() + + self.is_label = is_label + + if not is_label: + self.decoder = ConvNeXtReverse(depths=depths, dims=dims, kernel_size=kernel_size) + else: + self.decoder = ConvNeXtReverseLabels(depths=depths, dims=dims, nr_of_classes=7) + + + def call(self, inputs, training): + if len(inputs) == 2: + x, mask = inputs + else: + x = inputs + + x = self.decoder(x, training=training) + + if self.is_label: + x = x * mask[:,:,:,tf.newaxis] + + background = tf.ones((mask.shape[0],512,256,1)) * (1 - mask[:,:,:,tf.newaxis]) + x = tf.concat((background, x), axis=-1) + + x = tf.math.softmax(x) + if len(inputs) == 2: if len(mask.shape) == 2: x = x * mask[tf.newaxis,:,:,tf.newaxis] diff --git a/models/cond_encoder.py b/models/cond_encoder.py index 6f5c391..c86f54c 100644 --- a/models/cond_encoder.py +++ b/models/cond_encoder.py @@ -1,5 +1,5 @@ import tensorflow as tf -from models.base import AEEncoder, Decoder +from models.base import AEEncoder, Decoder, AEEncoderNew, DecoderNew class AutoEncoder(tf.keras.Model): @@ -11,10 +11,28 @@ class AutoEncoder(tf.keras.Model): self.decoder : Decoder = Decoder(config['decoder_input'], config['decoder_depths'], config['decoder_dims'], kernel_size=config['kernel_size'], is_label=config['is_label'], upscale=config['upscale_output']) - def call(self, inputs, training=None): + def call(self, inputs, training): x = inputs x = self.encoder(x, training=training) x = self.decoder(x, training=training) return x + + +class AutoEncoderNew(tf.keras.Model): + + def __init__(self, config): + super(AutoEncoderNew, self).__init__() + + self.encoder : AEEncoderNew = AEEncoderNew(config['encoder_depths'], config['encoder_dims'], config['kernel_size'], config['activation']) + self.decoder : DecoderNew = DecoderNew(config['decoder_depths'], config['decoder_dims'], kernel_size=config['kernel_size'], is_label=config['is_label']) + + + def call(self, inputs, training): + x = inputs + + x = self.encoder(x, training=training) + x = self.decoder(x, training=training) + + return x \ No newline at end of file diff --git a/models/cvae_curv_model.py b/models/cvae_curv_model.py index ffa4344..c7e8878 100644 --- a/models/cvae_curv_model.py +++ b/models/cvae_curv_model.py @@ -8,96 +8,43 @@ import scipy as sp # import plotly.express as ex from custom_utils.custom_utils import load_model -from convnext.models.convnext_tf import ConvNeXt, Block, ConvNeXtReverseLabels -from auto_encoder_body import AutoEncoder as BodyAE -from auto_encoder_static import AutoEncoder as StaticAE +from models.base import AEEncoder, VariationalEncoder, Decoder -class Bottleneck(tf.keras.Model): - - def __init__(self, dim): - super(Bottleneck, self).__init__() - self.bottleneck = tf.keras.Sequential( - [Block(dim=dim, drop_path=0, - layer_scale_init_value=1e-6, prefix=f'bottleneck{j}') for j in range(5)] - ) - - def call(self, inputs, training=None): - x = inputs - - x = self.bottleneck(x, training=training) - - return x - - -class Encoder(tf.keras.Model): - - def __init__(self, latent_dim): - super(Encoder, self).__init__() - - self.encoder = ConvNeXt(depths=[3, 3, 9, 3], dims=[32, 64, 128, 256], include_top=False) - self.flatten = tf.keras.layers.Flatten() - self.mean = tf.keras.layers.Dense(latent_dim) - self.log_var = tf.keras.layers.Dense(latent_dim) - - def call(self, inputs, training=None): - x = inputs - - x = self.encoder(x) - x = self.flatten(x) - mean = self.mean(x) - log_var = self.log_var(x) - - return mean, log_var - - -class Decoder(tf.keras.Model): - - def __init__(self): - super(Decoder, self).__init__() - - self.dense = tf.keras.layers.Dense(16 * 8 * 80) - self.reshape = tf.keras.layers.Reshape((16, 8, 80)) - self.decoder = ConvNeXtReverseLabels(depths=list(reversed([3, 3, 9, 3])), dims=list(reversed([256, 128, 64, 16]))) - - - def call(self, inputs, training=None): - x = inputs - - x = self.dense(x) - x = self.reshape(x) - x = self.decoder(x) - - return x class CVAE(tf.keras.Model): - def __init__(self, latent_dim=128, static_model='checkpoints/ae_static_3', - body_model='checpoints/ae_body_6',): + def __init__(self, config): super(CVAE, self).__init__() - self.latent_dim = latent_dim + self.latent_dim = config['latent_dim'] + self.latent_dim = config['cvae']['latent_dim'] + self.size = config['resolution'] - model : StaticAE = StaticAE(size=512) - load_model(model, static_model) - self.static_enc = tf.keras.Sequential([model.encoder, model.bottleneck]) - self.static_enc.trainable = False + self.static_enc : AEEncoder = AEEncoder(config['cond_ae']['latent_dim'], config['cond_ae']['encoder_depths'], config['cond_ae']['encoder_dims'], config['cond_ae']['bottleneck_size'], config['cond_ae']['kernel_size']) + if config['static_model'] != '': + load_model(self.static_enc, config['static_model'] + '_enc') - model : BodyAE = BodyAE(size=512) - load_model(model, body_model) - self.body_enc = tf.keras.Sequential([model.encoder, model.bottleneck]) - self.body_enc.trainable = False + self.body_enc : AEEncoder = AEEncoder(config['cond_ae_body']['latent_dim'], config['cond_ae_body']['encoder_depths'], config['cond_ae_body']['encoder_dims'], config['cond_ae_body']['bottleneck_size'], config['cond_ae_body']['kernel_size']) + if config['body_model'] != '': + load_model(self.body_enc, config['body_model'] + '_enc') - self.cond_encoder = tf.keras.Sequential([tf.keras.layers.Dense(256, activation='relu'), + if config['freeze_encoders']: + self.static_enc.trainable = False + self.body_enc.trainable = False + + self.cond_encoder = tf.keras.Sequential([tf.keras.layers.Dense(512, activation='relu'), tf.keras.layers.Dense(256, activation='relu'), tf.keras.layers.Dense(128, activation='relu'), - tf.keras.layers.Dense(latent_dim),]) + tf.keras.layers.Dense(self.latent_dim, activation='tanh'),]) - self.encoder = Encoder(latent_dim) - self.decoder = Decoder() + self.encoder = VariationalEncoder(config['cvae']['latent_dim'], config['cvae']['encoder_depths'], config['cvae']['encoder_dims'], kernel_size=config['cvae']['kernel_size']) + self.decoder = Decoder(config['cvae']['decoder_input'], config['cvae']['decoder_depths'], config['cvae']['decoder_dims'], config['cvae']['kernel_size'], is_label=config['cvae']['is_label']) + self.add_noise = config['cvae']['add_noise'] + self.noise_amount = config['cvae']['noise_amount'] # @tf.function def sample_single(self, uv_template, uv_body_posed, uv_mask, eps=None, nr_of_samples=4): @@ -122,33 +69,32 @@ class CVAE(tf.keras.Model): return x - def encode_conds(self, uv_template, uv_body_posed): - if uv_template.shape[1] == 3: - uv_template = tf.transpose(uv_template, [0,2,3,1]) - if uv_body_posed.shape[1] == 3: - uv_body_posed = tf.transpose(uv_body_posed, [0,2,3,1]) - - z_static = self.static_enc(uv_template) - z_body = self.body_enc(uv_body_posed) + def encode_conds(self, uv_template, uv_body_posed, training): + z_static = self.static_enc(uv_template, training=training) + z_body = self.body_enc(uv_body_posed, training=training) z_cond = tf.concat([z_static, z_body], axis=-1) - z_cond = self.cond_encoder(z_cond) + z_cond = self.cond_encoder(z_cond, training=training) return z_cond - def sample(self, uv_template, uv_body_posed, uv_mask=None, noise=None): + def sample(self, uv_template, uv_body_posed, uv_mask, noise=None): if noise is None: eps = tf.random.normal(shape=(uv_template.shape[0], self.latent_dim)) else: eps = noise - z_cond = self.encode_conds(uv_template, uv_body_posed) + z_cond = self.encode_conds(uv_template, uv_body_posed, training=False) z = tf.concat([eps, z_cond], axis=-1) - x = self.decoder(z) + x = self.decoder(z, training=False) - if uv_mask is not None: - x = x * uv_mask[:,:,:,tf.newaxis] + x = x * uv_mask[:,:,:,tf.newaxis] + + background = tf.ones((uv_template.shape[0],512,256,1)) * (1 - uv_mask[:,:,:,tf.newaxis]) + x = tf.concat((background, x), axis=-1) + + x = tf.math.softmax(x) return x @@ -171,32 +117,24 @@ class CVAE(tf.keras.Model): return eps * tf.exp(logvar * .5) + mean - def decode(self, z, apply_sigmoid=False): - logits = self.decoder(z) - if apply_sigmoid: - probs = tf.sigmoid(logits) - return probs - return logits - - - def call(self, inputs, training=None): + def call(self, inputs, training): uv_template, uv_body_posed, uv_curv, uv_mask = inputs - if uv_template.shape[1] == 3: - uv_template = tf.transpose(uv_template, [0,2,3,1]) - if uv_body_posed.shape[1] == 3: - uv_body_posed = tf.transpose(uv_body_posed, [0,2,3,1]) - if uv_curv.shape[1] == 3: - uv_curv = tf.transpose(uv_curv, [0,2,3,1]) - z_cond = self.encode_conds(uv_template, uv_body_posed) x = tf.concat([uv_template, uv_body_posed, uv_curv], axis=-1) mean, logvar = self.encoder(x) z = self.reparameterize(mean, logvar) + z_cond = self.encode_conds(uv_template, uv_body_posed, training=training) + z = tf.concat([z, z_cond], axis=-1) - x = self.decoder(z) + x = self.decoder(z, training=training) x = x * uv_mask[:,:,:,tf.newaxis] - return x, mean, logvar, z + background = tf.ones((4,512,256,1)) * (1 - uv_mask[:,:,:,tf.newaxis]) + x = tf.concat((background, x), axis=-1) + + x = tf.math.softmax(x) + + return x, mean, logvar diff --git a/models/cvae_model.py b/models/cvae_model.py index 7b8424e..3ed4571 100644 --- a/models/cvae_model.py +++ b/models/cvae_model.py @@ -9,6 +9,7 @@ import scipy as sp from custom_utils.custom_utils import load_model from models.base import AEEncoder, VariationalEncoder, Decoder +from models.base import AEEncoderNew, VariationalEncoderNew, DecoderNew class CVAE(tf.keras.Model): @@ -18,13 +19,14 @@ class CVAE(tf.keras.Model): self.latent_dim = config['cvae']['latent_dim'] self.size = config['resolution'] - self.static_enc : AEEncoder = AEEncoder(config['cond_ae']['latent_dim'], config['cond_ae']['encoder_depths'], config['cond_ae']['encoder_dims'], config['cond_ae']['bottleneck_size'], config['cond_ae']['kernel_size']) - if config['static_model'] != '': - load_model(self.static_enc, config['static_model'] + '_enc') + if not('only_curvatures' in config.keys() and config['only_curvatures'] == True): + self.static_enc : AEEncoder = AEEncoder(config['cond_ae']['latent_dim'], config['cond_ae']['encoder_depths'], config['cond_ae']['encoder_dims'], config['cond_ae']['bottleneck_size'], config['cond_ae']['kernel_size']) + if config['static_model'] != '': + load_model(self.static_enc, config['static_model'] + '_enc') - self.body_enc : AEEncoder = AEEncoder(config['cond_ae_body']['latent_dim'], config['cond_ae_body']['encoder_depths'], config['cond_ae_body']['encoder_dims'], config['cond_ae_body']['bottleneck_size'], config['cond_ae_body']['kernel_size']) - if config['body_model'] != '': - load_model(self.body_enc, config['body_model'] + '_enc') + self.body_enc : AEEncoder = AEEncoder(config['cond_ae_body']['latent_dim'], config['cond_ae_body']['encoder_depths'], config['cond_ae_body']['encoder_dims'], config['cond_ae_body']['bottleneck_size'], config['cond_ae_body']['kernel_size']) + if config['body_model'] != '': + load_model(self.body_enc, config['body_model'] + '_enc') if config['use_curvature']: self.curv_enc : AEEncoder = AEEncoder(config['cond_ae']['latent_dim'], config['cond_ae']['encoder_depths'], config['cond_ae']['encoder_dims'], config['cond_ae']['bottleneck_size'], config['cond_ae']['kernel_size']) @@ -32,14 +34,16 @@ class CVAE(tf.keras.Model): load_model(self.curv_enc, config['curvature_model'] + '_enc') if config['freeze_encoders']: - self.static_enc.trainable = False - self.body_enc.trainable = False + if not('only_curvatures' in config.keys() and config['only_curvatures'] == True): + self.static_enc.trainable = False + self.body_enc.trainable = False if config['use_curvature']: self.curv_enc.trainable = False self.cond_encoder = tf.keras.Sequential([tf.keras.layers.Dense(512, activation='relu'), tf.keras.layers.Dense(256, activation='relu'), tf.keras.layers.Dense(128, activation='relu'), + tf.keras.layers.Lambda(lambda x: x / 1000), tf.keras.layers.Dense(config['latent_dim'], activation='tanh')]) self.encoder = VariationalEncoder(config['cvae']['latent_dim'], config['cvae']['encoder_depths'], config['cvae']['encoder_dims'], kernel_size=config['cvae']['kernel_size']) @@ -53,6 +57,7 @@ class CVAE(tf.keras.Model): self.add_noise = config['cvae']['add_noise'] self.noise_amount = config['cvae']['noise_amount'] self.use_curvature = config['use_curvature'] + self.only_curvatures = config['only_curvatures'] if 'only_curvatures' in config.keys() and config['only_curvatures'] == True else None self.use_offsets_over_body = not config['use_skinning'] if self.use_offsets_over_body: @@ -60,14 +65,17 @@ class CVAE(tf.keras.Model): if self.avg_garment is not None: assert not self.use_offsets_over_body, 'When avg_garment is given, we must use skinning!' - @tf.function - def sample(self, uv_template, uv_body_posed, uv_curv, uv_mask, noise=None): + # @tf.function + def sample(self, uv_template, uv_body_posed, uv_curv, uv_mask, noise=None, add_noise=False): if noise is None: eps = tf.random.normal(shape=(uv_template.shape[0], self.latent_dim)) else: eps = noise z_cond = self.encode_conds(uv_template, uv_body_posed, uv_curv, training=False) + if add_noise: + z_cond = z_cond + (tf.random.uniform(z_cond.shape, maxval=self.noise_amount * 2) - self.noise_amount) + z = tf.concat([eps, z_cond], axis=-1) x = self.decoder(z, training=False) @@ -75,40 +83,187 @@ class CVAE(tf.keras.Model): if self.avg_garment is not None: x = x + self.avg_garment[tf.newaxis,:,:,:] + if self.use_offsets_over_body: + x = x + uv_body_posed + x = x * uv_mask[:,:,:,tf.newaxis] return x - def reparameterize(self, mean, logvar, fix_noise=False): - if not fix_noise: - eps = tf.random.normal(shape=mean.shape) + def reparameterize(self, mean, logvar, training, fix_noise=False): + if training == True: + if not fix_noise: + eps = tf.random.normal(shape=mean.shape) + else: + eps = tf.random.normal(shape=(1, mean.shape[1])) + eps = tf.tile(eps, [mean.shape[0],1]) + out = eps * tf.exp(logvar * .5) + mean else: - eps = tf.random.normal(shape=(1, mean.shape[1])) - eps = tf.tile(eps, [mean.shape[0],1]) - return eps * tf.exp(logvar * .5) + mean + out = tf.exp(logvar * .5) + mean + return out - def encode_conds(self, uv_template, uv_body_posed, uv_curv, training=None): - z_body = self.body_enc(uv_body_posed, training=training) - z_static = self.static_enc(uv_template, training=training) - if self.use_curvature: - z_curv = self.curv_enc(uv_curv, training=training) - z_cond = tf.concat([z_static, z_body, z_curv], axis=-1) + def encode_conds(self, uv_template, uv_body_posed, uv_curv, training): + if self.only_curvatures: + z_cond = self.curv_enc(uv_curv, training=training) else: - z_cond = tf.concat([z_static, z_body], axis=-1) + z_body = self.body_enc(uv_body_posed, training=training) + z_static = self.static_enc(uv_template, training=training) + if self.use_curvature: + z_curv = self.curv_enc(uv_curv, training=training) + z_cond = tf.concat([z_static, z_body, z_curv], axis=-1) + else: + z_cond = tf.concat([z_static, z_body], axis=-1) z_cond = self.cond_encoder(z_cond, training=training) return z_cond - def call(self, inputs, training=None): + def call(self, inputs, training): uv_unposed, uv_template, uv_body_posed, uv_curv, uv_mask = inputs - - x = tf.concat([uv_unposed, uv_template, uv_body_posed, uv_curv], axis=-1) + if self.only_curvatures: + x = tf.concat([uv_unposed, uv_curv], axis=-1) + else: + x = tf.concat([uv_unposed, uv_template, uv_body_posed, uv_curv], axis=-1) + mean, logvar = self.encoder(x, training=training) - z = self.reparameterize(mean, logvar) + z = self.reparameterize(mean, logvar, training) + z_cond = self.encode_conds(uv_template, uv_body_posed, uv_curv, training=training) + + if self.add_noise and training == True: + z_cond = z_cond + (tf.random.uniform(z_cond.shape, maxval=self.noise_amount * 2) - self.noise_amount) + + + z = tf.concat([z, z_cond], axis=-1) + x = self.decoder(z, training=training) + + if self.avg_garment is not None: + x = x + self.avg_garment[tf.newaxis,:,:,:] + + if self.use_offsets_over_body: + x = x + uv_body_posed + + x = x * uv_mask[:,:,:,tf.newaxis] + + return x, mean, logvar + + + + +class CVAENew(tf.keras.Model): + + def __init__(self, config): + super(CVAENew, self).__init__() + self.size = config['resolution'] + + if not('only_curvatures' in config.keys() and config['only_curvatures'] == True): + self.static_enc : AEEncoderNew = AEEncoderNew(config['cond_ae_static']['encoder_depths'], config['cond_ae_static']['encoder_dims'], config['cond_ae_static']['kernel_size'], config['cond_ae_static']['activation']) + if config['static_model'] != '': + load_model(self.static_enc, config['static_model'] + '_enc') + + self.body_enc : AEEncoderNew = AEEncoderNew(config['cond_ae_body']['encoder_depths'], config['cond_ae_body']['encoder_dims'], config['cond_ae_body']['kernel_size']) + if config['body_model'] != '': + load_model(self.body_enc, config['body_model'] + '_enc') + + if config['use_curvature']: + self.curv_enc : AEEncoderNew = AEEncoderNew(config['cond_ae_curv']['encoder_depths'], config['cond_ae_curv']['encoder_dims'], config['cond_ae_curv']['kernel_size'], config['cond_ae_curv']['activation']) + if config['curvature_model'] != '': + load_model(self.curv_enc, config['curvature_model'] + '_enc') + + if config['freeze_encoders']: + if not('only_curvatures' in config.keys() and config['only_curvatures'] == True): + self.static_enc.trainable = False + self.body_enc.trainable = False + if config['use_curvature']: + self.curv_enc.trainable = False + + self.encoder = VariationalEncoderNew(config['cvae']['encoder_depths'], config['cvae']['encoder_dims'], kernel_size=config['cvae']['kernel_size']) + self.decoder = DecoderNew(config['cvae']['decoder_depths'], config['cvae']['decoder_dims'], config['cvae']['kernel_size']) + + self.reshape = tf.keras.layers.Reshape((8, 4, 64)) + + if config['avg_garment_path'] != '': + self.avg_garment = np.load(config['avg_garment_path']) + else: + self.avg_garment = None + + self.add_noise = config['cvae']['add_noise'] + self.noise_amount = config['cvae']['noise_amount'] + self.use_curvature = config['use_curvature'] + self.only_curvatures = config['only_curvatures'] if 'only_curvatures' in config.keys() and config['only_curvatures'] == True else None + self.use_offsets_over_body = not config['use_skinning'] + + if self.use_offsets_over_body: + assert self.avg_garment is None, 'When we are not using skinning, we can\'t use avg_garment!' + if self.avg_garment is not None: + assert not self.use_offsets_over_body, 'When avg_garment is given, we must use skinning!' + + # @tf.function + def sample(self, uv_template, uv_body_posed, uv_curv, uv_mask, noise=None, add_noise=False): + if noise is None: + eps = tf.random.normal(shape=(uv_template.shape[0], self.latent_dim)) + else: + eps = noise + + z_cond = self.encode_conds(uv_template, uv_body_posed, uv_curv, training=False) + if add_noise: + z_cond = z_cond + (tf.random.uniform(z_cond.shape, maxval=self.noise_amount * 2) - self.noise_amount) + + z = tf.concat([eps, z_cond], axis=-1) + + x = self.decoder(z, training=False) + + if self.avg_garment is not None: + x = x + self.avg_garment[tf.newaxis,:,:,:] + + if self.use_offsets_over_body: + x = x + uv_body_posed + + x = x * uv_mask[:,:,:,tf.newaxis] + + return x + + + def reparameterize(self, mean, logvar, training, fix_noise=False): + if training == True: + if not fix_noise: + eps = tf.random.normal(shape=mean.shape) + else: + eps = tf.random.normal(shape=(1, mean.shape[1])) + eps = tf.tile(eps, [mean.shape[0],1]) + out = eps * tf.exp(logvar * .5) + mean + else: + out = tf.exp(logvar * .5) + mean + return out + + + def encode_conds(self, uv_template, uv_body_posed, uv_curv, training): + if self.only_curvatures: + z_cond = self.curv_enc(uv_curv, training=training) + else: + z_body = self.body_enc(uv_body_posed, training=training) + z_static = self.static_enc(uv_template, training=training) + if self.use_curvature: + z_curv = self.curv_enc(uv_curv, training=training) + z_cond = tf.concat([z_static, z_body, z_curv], axis=-1) + else: + z_cond = tf.concat([z_static, z_body], axis=-1) + + return z_cond + + + def call(self, inputs, training): + uv_unposed, uv_template, uv_body_posed, uv_curv, uv_mask = inputs + if self.only_curvatures: + x = tf.concat([uv_unposed, uv_curv], axis=-1) + else: + x = tf.concat([uv_unposed, uv_template, uv_body_posed, uv_curv], axis=-1) + + mean, logvar = self.encoder(x, training=training) + z = self.reparameterize(mean, logvar, training) + z = self.reshape(z) z_cond = self.encode_conds(uv_template, uv_body_posed, uv_curv, training=training) if self.add_noise and training == True: diff --git a/models/cvae_model_overfit_jumpsuit.py b/models/cvae_model_overfit_jumpsuit.py new file mode 100644 index 0000000..d5dc1c6 --- /dev/null +++ b/models/cvae_model_overfit_jumpsuit.py @@ -0,0 +1,142 @@ +import os +import time +import random +import tensorflow as tf +import numpy as np +import scipy as sp +# import plotly.graph_objects as go +# import plotly.express as ex + +from custom_utils.custom_utils import load_model +from models.base import AEEncoder, VariationalEncoder, Decoder + + +class CVAE(tf.keras.Model): + + def __init__(self, config): + super(CVAE, self).__init__() + self.latent_dim = config['cvae']['latent_dim'] + self.size = config['resolution'] + + if not('only_curvatures' in config.keys() and config['only_curvatures'] == True): + self.static_enc : AEEncoder = AEEncoder(config['cond_ae']['latent_dim'], config['cond_ae']['encoder_depths'], config['cond_ae']['encoder_dims'], config['cond_ae']['bottleneck_size'], config['cond_ae']['kernel_size']) + if config['static_model'] != '': + load_model(self.static_enc, config['static_model'] + '_enc') + + self.body_enc : AEEncoder = AEEncoder(config['cond_ae_body']['latent_dim'], config['cond_ae_body']['encoder_depths'], config['cond_ae_body']['encoder_dims'], config['cond_ae_body']['bottleneck_size'], config['cond_ae_body']['kernel_size']) + if config['body_model'] != '': + load_model(self.body_enc, config['body_model'] + '_enc') + + if config['use_curvature']: + self.curv_enc : AEEncoder = AEEncoder(config['cond_ae']['latent_dim'], config['cond_ae']['encoder_depths'], config['cond_ae']['encoder_dims'], config['cond_ae']['bottleneck_size'], config['cond_ae']['kernel_size']) + if config['curvature_model'] != '': + load_model(self.curv_enc, config['curvature_model'] + '_enc') + + if config['freeze_encoders']: + if not('only_curvatures' in config.keys() and config['only_curvatures'] == True): + self.static_enc.trainable = False + self.body_enc.trainable = False + if config['use_curvature']: + self.curv_enc.trainable = False + + self.cond_encoder = tf.keras.Sequential([tf.keras.layers.Dense(512, activation='relu'), + tf.keras.layers.Dense(256, activation='relu'), + tf.keras.layers.Dense(128, activation='relu'), + tf.keras.layers.Dense(config['latent_dim'], activation='tanh')]) + + self.encoder = VariationalEncoder(config['cvae']['latent_dim'], config['cvae']['encoder_depths'], config['cvae']['encoder_dims'], kernel_size=config['cvae']['kernel_size']) + self.decoder = Decoder(config['cvae']['decoder_input'], config['cvae']['decoder_depths'], config['cvae']['decoder_dims'], config['cvae']['kernel_size']) + + if config['avg_garment_path'] != '': + self.avg_garment = np.load(config['avg_garment_path']) + else: + self.avg_garment = None + + self.add_noise = config['cvae']['add_noise'] + self.noise_amount = config['cvae']['noise_amount'] + self.use_curvature = config['use_curvature'] + self.only_curvatures = config['only_curvatures'] if 'only_curvatures' in config.keys() and config['only_curvatures'] == True else None + self.use_offsets_over_body = not config['use_skinning'] + + if self.use_offsets_over_body: + assert self.avg_garment is None, 'When we are not using skinning, we can\'t use avg_garment!' + if self.avg_garment is not None: + assert not self.use_offsets_over_body, 'When avg_garment is given, we must use skinning!' + + # @tf.function + def sample(self, uv_template, uv_body_posed, uv_curv, uv_mask, noise=None): + if noise is None: + eps = tf.random.normal(shape=(uv_template.shape[0], self.latent_dim)) + else: + eps = noise + + z_cond = self.encode_conds(uv_template, uv_body_posed, uv_curv, training=False) + z = tf.concat([eps, z_cond], axis=-1) + + x = self.decoder(z, training=False) + + if self.avg_garment is not None: + x = x + self.avg_garment[tf.newaxis,:,:,:] + + if self.use_offsets_over_body: + x = x + uv_body_posed + + x = x * uv_mask[:,:,:,tf.newaxis] + + return x + + + def reparameterize(self, mean, logvar, training, fix_noise=False): + if training == True: + if not fix_noise: + eps = tf.random.normal(shape=mean.shape) + else: + eps = tf.random.normal(shape=(1, mean.shape[1])) + eps = tf.tile(eps, [mean.shape[0],1]) + out = eps * tf.exp(logvar * .5) + mean + else: + out = tf.exp(logvar * .5) + mean + return out + + + def encode_conds(self, uv_template, uv_body_posed, uv_curv, training): + if self.only_curvatures: + z_cond = self.curv_enc(uv_curv, training=training) + else: + z_body = self.body_enc(uv_body_posed, training=training) + z_static = self.static_enc(uv_template, training=training) + if self.use_curvature: + z_curv = self.curv_enc(uv_curv, training=training) + z_cond = tf.concat([z_static, z_body, z_curv], axis=-1) + else: + z_cond = tf.concat([z_static, z_body], axis=-1) + + z_cond = self.cond_encoder(z_cond, training=training) + + return z_cond + + + def call(self, inputs, training): + uv_unposed, uv_template, uv_body_posed, uv_curv, uv_mask = inputs + + x = tf.concat([uv_unposed, uv_template, uv_body_posed, uv_curv], axis=-1) + mean, logvar = self.encoder(x, training=training) + z = self.reparameterize(mean, logvar, training) + z_cond = self.encode_conds(uv_template, uv_body_posed, uv_curv, training=training) + + if self.add_noise and training == True: + z_cond = z_cond + (tf.random.uniform(z_cond.shape, maxval=self.noise_amount * 2) - self.noise_amount) + + + z = tf.concat([z, z_cond], axis=-1) + x = self.decoder(z, training=training) + + if self.avg_garment is not None: + x = x + self.avg_garment[tf.newaxis,:,:,:] + + if self.use_offsets_over_body: + x = x + uv_body_posed + + x = x * uv_mask[:,:,:,tf.newaxis] + + return x, mean, logvar \ No newline at end of file diff --git a/models/cvae_pyramid_model.py b/models/cvae_pyramid_model.py index 4f6d80a..1d0d577 100644 --- a/models/cvae_pyramid_model.py +++ b/models/cvae_pyramid_model.py @@ -60,13 +60,13 @@ class Pyramid(tf.keras.Model): else: self.avg_garment = None - def enhance(self, low, mask, training=None): + def enhance(self, low, mask, training): x = self.upscale_enhancer(low, training=training) x = x * (1 - mask[:,:,:,tf.newaxis]) low = x + low return low - def call(self, inputs, training=None): + def call(self, inputs, training): uv_unposed, uv_static, uv_body_posed, uv_curv, uv_mask, uv_unposed_low, uv_static_low, uv_body_posed_low, uv_curv_low, uv_mask_low = inputs if self.use_full_res_encoders: diff --git a/models/pyramid_level.py b/models/pyramid_level.py index 5d31bfe..9cf7322 100644 --- a/models/pyramid_level.py +++ b/models/pyramid_level.py @@ -8,7 +8,7 @@ import scipy as sp # import plotly.express as ex from custom_utils.custom_utils import load_model -from models.base import AEEncoder, VariationalEncoder, Decoder +from models.base import AEEncoder, VariationalEncoder, Decoder, VariationalEncoderNew, DecoderNew from models.upscaler import UpscalerBasic, UpscalerBasicConv, UpscalerBasicNew @@ -24,7 +24,8 @@ class PyramidLevel(tf.keras.Model): self.upscale_enhancer = None if config['upscale_enhancer'] != '': - self.upscale_enhancer = UpscalerBasicConv(config['resolution']) + k_size = config['upscale_enhancer_kernel_size'] if 'upscale_enhancer_kernel_size' in config.keys() else ((3 if config['resolution'] <= 64 else 5)) + self.upscale_enhancer = UpscalerBasicConv(config['resolution'], kernel_size=k_size) load_model(self.upscale_enhancer, config['upscale_enhancer']) self.upscale_enhancer.trainable = not config['upscale_enhancer_freeze'] @@ -57,13 +58,17 @@ class PyramidLevel(tf.keras.Model): return x - def reparameterize(self, mean, logvar, fix_noise=False): - if not fix_noise: - eps = tf.random.normal(shape=mean.shape) + def reparameterize(self, mean, logvar, training, fix_noise=False): + if training == True: + if not fix_noise: + eps = tf.random.normal(shape=mean.shape) + else: + eps = tf.random.normal(shape=(1, mean.shape[1])) + eps = tf.tile(eps, [mean.shape[0],1]) + out = eps * tf.exp(logvar * .5) + mean else: - eps = tf.random.normal(shape=(1, mean.shape[1])) - eps = tf.tile(eps, [mean.shape[0],1]) - return eps * tf.exp(logvar * .5) + mean + out = tf.exp(logvar * .5) + mean + return out def call(self, inputs, z_cond, training=None): @@ -71,7 +76,7 @@ class PyramidLevel(tf.keras.Model): x = tf.concat([uv_unposed, uv_template, uv_body_posed, uv_curv], axis=-1) mean, logvar = self.encoder(x, training=training) - z = self.reparameterize(mean, logvar) + z = self.reparameterize(mean, logvar, training) z = tf.concat([z, z_cond], axis=-1) x = self.decoder(z, training=training) @@ -89,3 +94,88 @@ class PyramidLevel(tf.keras.Model): return x, mean, logvar + + +class PyramidLevelNew(tf.keras.Model): + + def __init__(self, config): + super(PyramidLevelNew, self).__init__() + self.size = config['resolution'] + + self.encoder = VariationalEncoderNew(config['encoder_depths'], config['encoder_dims'], kernel_size=config['kernel_size']) + self.decoder = DecoderNew(config['decoder_depths'], config['decoder_dims'], config['kernel_size']) + + self.upscale_enhancer = None + if config['upscale_enhancer'] != '': + k_size = config['upscale_enhancer_kernel_size'] if 'upscale_enhancer_kernel_size' in config.keys() else ((3 if config['resolution'] <= 64 else 5)) + self.upscale_enhancer = UpscalerBasicConv(config['resolution'], kernel_size=k_size) + load_model(self.upscale_enhancer, config['upscale_enhancer']) + self.upscale_enhancer.trainable = not config['upscale_enhancer_freeze'] + + if config['avg_garment_path'] != '': + self.avg_garment = np.load(config['avg_garment_path']) + else: + self.avg_garment = None + + self.reshape = tf.keras.layers.Reshape((8, 4, 64)) + + + def enhance(self, low, mask, training=None): + x = self.upscale_enhancer([low, mask], training=training) + return x + + + def sample(self, z_cond, uv_mask, noise=None): + if noise is None: + eps = tf.random.normal(shape=(uv_mask.shape[0], self.latent_dim)) + else: + eps = noise + + z = tf.concat([eps, z_cond], axis=-1) + + x = self.decoder(z) + + if self.avg_garment is not None: + x = x + self.avg_garment[tf.newaxis,:,:,:] + + x = x * uv_mask[:,:,:,tf.newaxis] + + return x + + + def reparameterize(self, mean, logvar, training, fix_noise=False): + if training == True: + if not fix_noise: + eps = tf.random.normal(shape=mean.shape) + else: + eps = tf.random.normal(shape=(1, mean.shape[1])) + eps = tf.tile(eps, [mean.shape[0],1]) + out = eps * tf.exp(logvar * .5) + mean + else: + out = tf.exp(logvar * .5) + mean + return out + + + def call(self, inputs, z_cond, training=None): + uv_unposed, uv_template, uv_body_posed, uv_curv, uv_mask, uv_mask_high = inputs + + x = tf.concat([uv_unposed, uv_template, uv_body_posed, uv_curv], axis=-1) + mean, logvar = self.encoder(x, training=training) + z = self.reparameterize(mean, logvar, training) + z = self.reshape(z) + + z = tf.concat([z, z_cond], axis=-1) + x = self.decoder(z, training=training) + + if self.avg_garment is not None: + x = x + self.avg_garment[tf.newaxis,:,:,:] + + x = x * uv_mask[:,:,:,tf.newaxis] + + # if self.upscale_enhancer is not None: + # pred_low = self.enhance(x, uv_mask, training=training) + # x = tf.image.resize(pred_low, (512, 256), tf.image.ResizeMethod.LANCZOS5) + + # x = x * uv_mask_high[:,:,:,tf.newaxis] + + return x, mean, logvar \ No newline at end of file diff --git a/models/pyramid_model.py b/models/pyramid_model.py index 6f88345..8e1d505 100644 --- a/models/pyramid_model.py +++ b/models/pyramid_model.py @@ -49,7 +49,7 @@ class Pyramid(tf.keras.Model): load_model(self.upscale_enhancer, config['pyramid']['final_upscale_enhancer']) self.upscale_enhancer.trainable = False - def enhance(self, low, mask, training=None): + def enhance(self, low, mask, training): x = self.upscale_enhancer([low, mask], training=training) return x @@ -63,7 +63,7 @@ class Pyramid(tf.keras.Model): return z_cond - def call(self, inputs, training=None): + def call(self, inputs, training): levels_input, conds = inputs uv_static, uv_body, uv_curv = conds[0], conds[1], conds[2] z_cond = self.encode_conds(uv_static, uv_body, uv_curv) @@ -136,7 +136,7 @@ class Pyramid(tf.keras.Model): # load_model(self.upscale_enhancer, config['pyramid']['final_upscale_enhancer']) # self.upscale_enhancer.trainable = False -# def enhance(self, low, mask, training=None): +# def enhance(self, low, mask, training): # x = self.upscale_enhancer([low, mask], training=training) # return x @@ -150,7 +150,7 @@ class Pyramid(tf.keras.Model): # return z_cond -# def call(self, inputs, training=None): +# def call(self, inputs, training): # levels_input, conds = inputs # uv_static, uv_body, uv_curv = conds[0], conds[1], conds[2] # z_cond = self.encode_conds(uv_static, uv_body, uv_curv) diff --git a/models/pyramid_model_optimized.py b/models/pyramid_model_optimized.py index 51330e0..5301872 100644 --- a/models/pyramid_model_optimized.py +++ b/models/pyramid_model_optimized.py @@ -7,9 +7,8 @@ import numpy as np # import plotly.express as ex from custom_utils.custom_utils import load_model -from models.base import AEEncoder -from models.cvae_model import CVAE -from models.pyramid_level import PyramidLevel +from models.base import AEEncoder, AEEncoderNew +from models.pyramid_level import PyramidLevel, PyramidLevelNew from models.upscaler import UpscalerBasic, UpscalerBasicConv, UpscalerBasicNew @@ -42,57 +41,65 @@ class Pyramid(tf.keras.Model): self.levels = [PyramidLevel({ **config['pyramid']['levels'][i], **{ 'cond_ae': config['cond_ae']} }) for i in range(len(config['pyramid']['levels']))] - - # self.levels[-1].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) - # self.levels[-2].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) - # self.levels[-3].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) - + # if config['is_cape']: + # if len(config['pyramid']['resolutions']) == 2: + # self.levels[-1].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) + # if len(config['pyramid']['resolutions']) == 3: + # self.levels[-1].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) + # self.levels[-2].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) + # if len(config['pyramid']['resolutions']) == 4: + # self.levels[-1].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) + # self.levels[-2].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) + # self.levels[-3].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) + # else: if len(config['pyramid']['resolutions']) == 2: - self.levels[-1].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 10)]) - if len(config['pyramid']['resolutions']) == 3: self.levels[-1].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) - self.levels[-2].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 10)]) - if len(config['pyramid']['resolutions']) == 4: + if len(config['pyramid']['resolutions']) == 3: self.levels[-1].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 1000)]) self.levels[-2].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) - self.levels[-3].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 10)]) - if len(config['pyramid']['resolutions']) == 5: + if len(config['pyramid']['resolutions']) == 4: self.levels[-1].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 10000)]) self.levels[-2].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 1000)]) self.levels[-3].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) - self.levels[-4].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 10)]) + if len(config['pyramid']['resolutions']) == 5: + self.levels[-1].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100000)]) + self.levels[-2].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 10000)]) + self.levels[-3].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 1000)]) + self.levels[-4].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) self.add_noise = config['pyramid']['add_noise'] + self.noise_amount = config['pyramid']['noise_amount'] self.use_offsets = config['use_offsets'] self.upscale_enhancer = None if config['pyramid']['final_upscale_enhancer'] != '': - self.upscale_enhancer = UpscalerBasicConv(low_res=config['pyramid']['resolutions'][-1]) + k_size = config['pyramid']['final_upscale_enhancer_kernel_size'] if 'final_upscale_enhancer_kernel_size' in config['pyramid'].keys() else ((3 if config['pyramid']['resolutions'][-1] <= 64 else 5)) + self.upscale_enhancer = UpscalerBasicConv(low_res=config['pyramid']['resolutions'][-1], kernel_size=k_size) load_model(self.upscale_enhancer, config['pyramid']['final_upscale_enhancer']) self.upscale_enhancer.trainable = False - def enhance(self, low, mask, training=None): + def enhance(self, low, mask, training): x = self.upscale_enhancer([low, mask], training=training) return x - def encode_conds(self, uv_template, uv_body_posed, uv_curv): - z_static = self.static_enc(uv_template) - z_body = self.body_enc(uv_body_posed) - z_curv = self.curv_enc(uv_curv) + def encode_conds(self, uv_template, uv_body_posed, uv_curv, training): + z_static = self.static_enc(uv_template, training) + z_body = self.body_enc(uv_body_posed, training) + z_curv = self.curv_enc(uv_curv, training) z_cond = tf.concat([z_static, z_body, z_curv], axis=-1) - z_cond = self.cond_encoder(z_cond) + z_cond = self.cond_encoder(z_cond, training=training) return z_cond - def call(self, inputs, training=None): + def call(self, inputs, training): levels_input, conds = inputs uv_static, uv_body, uv_curv = conds[0], conds[1], conds[2] - z_cond = self.encode_conds(uv_static, uv_body, uv_curv) + z_cond = self.encode_conds(uv_static, uv_body, uv_curv, training) - if self.add_noise: - z_cond = z_cond + tf.random.uniform(z_cond.shape, maxval=10) + if self.add_noise == True and training == True: + z_cond = z_cond + (tf.random.uniform(z_cond.shape, maxval=self.noise_amount * 2) - self.noise_amount) out_levels = [] pred, mean, logvar = self.levels[0](levels_input[0], z_cond, training=training) @@ -184,7 +191,7 @@ class Pyramid(tf.keras.Model): # load_model(self.upscale_enhancer, config['pyramid']['final_upscale_enhancer']) # self.upscale_enhancer.trainable = False -# def enhance(self, low, mask, training=None): +# def enhance(self, low, mask, training): # x = self.upscale_enhancer([low, mask], training=training) # return x @@ -198,7 +205,7 @@ class Pyramid(tf.keras.Model): # return z_cond -# def call(self, inputs, training=None): +# def call(self, inputs, training): # levels_input, conds = inputs # uv_static, uv_body, uv_curv = conds[0], conds[1], conds[2] # z_cond = self.encode_conds(uv_static, uv_body, uv_curv) @@ -241,4 +248,118 @@ class Pyramid(tf.keras.Model): # [pred_0, mean_0, logvar_0] # ] -# return out_levels \ No newline at end of file +# return out_levels + + +class PyramidNew(tf.keras.Model): + + def __init__(self, config): + super(PyramidNew, self).__init__() + + self.static_enc : AEEncoderNew = AEEncoderNew(config['cond_ae_static']['encoder_depths'], config['cond_ae_static']['encoder_dims'], config['cond_ae_static']['kernel_size'], config['cond_ae_static']['activation']) + if config['pyramid']['static_model'] != '': + load_model(self.static_enc, config['pyramid']['static_model'] + '_enc') + + self.body_enc : AEEncoderNew = AEEncoderNew(config['cond_ae_body']['encoder_depths'], config['cond_ae_body']['encoder_dims'], config['cond_ae_body']['kernel_size']) + if config['pyramid']['body_model'] != '': + load_model(self.body_enc, config['pyramid']['body_model'] + '_enc') + + self.curv_enc : AEEncoderNew = AEEncoderNew(config['cond_ae_curv']['encoder_depths'], config['cond_ae_curv']['encoder_dims'], config['cond_ae_curv']['kernel_size'], config['cond_ae_curv']['activation']) + if config['pyramid']['curvature_model'] != '': + load_model(self.curv_enc, config['pyramid']['curvature_model'] + '_enc') + + if config['pyramid']['freeze_encoders']: + self.static_enc.trainable = False + self.body_enc.trainable = False + self.curv_enc.trainable = False + + self.levels = [PyramidLevelNew({ **config['pyramid']['levels'][i] }) for i in range(len(config['pyramid']['levels']))] + + + # if len(config['pyramid']['resolutions']) == 2: + # self.levels[-1].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) + # if len(config['pyramid']['resolutions']) == 3: + # self.levels[-1].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 1000)]) + # self.levels[-2].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) + # if len(config['pyramid']['resolutions']) == 4: + # self.levels[-1].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 10000)]) + # self.levels[-2].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 1000)]) + # self.levels[-3].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) + # if len(config['pyramid']['resolutions']) == 5: + # self.levels[-1].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100000)]) + # self.levels[-2].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 10000)]) + # self.levels[-3].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 1000)]) + # self.levels[-4].decoder.decoder.last = tf.keras.Sequential([tf.keras.layers.Dense(3), tf.keras.layers.Lambda(lambda x: x / 100)]) + + self.add_noise = config['pyramid']['add_noise'] + self.noise_amount = config['pyramid']['noise_amount'] + self.use_offsets = config['use_offsets'] + + self.upscale_enhancer = None + if config['pyramid']['final_upscale_enhancer'] != '': + k_size = config['pyramid']['final_upscale_enhancer_kernel_size'] if 'final_upscale_enhancer_kernel_size' in config['pyramid'].keys() else ((3 if config['pyramid']['resolutions'][-1] <= 64 else 5)) + self.upscale_enhancer = UpscalerBasicConv(low_res=config['pyramid']['resolutions'][-1], kernel_size=k_size) + load_model(self.upscale_enhancer, config['pyramid']['final_upscale_enhancer']) + self.upscale_enhancer.trainable = False + + def enhance(self, low, mask, training): + x = self.upscale_enhancer([low, mask], training=training) + return x + + def encode_conds(self, uv_template, uv_body_posed, uv_curv, training): + z_static = self.static_enc(uv_template, training) + z_body = self.body_enc(uv_body_posed, training) + z_curv = self.curv_enc(uv_curv, training) + + z_cond = tf.concat([z_static, z_body, z_curv], axis=-1) + + return z_cond + + def call(self, inputs, training): + levels_input, conds = inputs + uv_static, uv_body, uv_curv = conds[0], conds[1], conds[2] + + z_cond = self.encode_conds(uv_static, uv_body, uv_curv, training) + + if self.add_noise == True and training == True: + z_cond = z_cond + (tf.random.uniform(z_cond.shape, maxval=self.noise_amount * 2) - self.noise_amount) + + out_levels = [] + pred, mean, logvar = self.levels[0](levels_input[0], z_cond, training=training) + if self.use_offsets: + pred = pred + levels_input[0][2] # uv_body_posed_32 + if 1 != len(self.levels): + pred = self.levels[0].enhance(pred, levels_input[0][-2], training=training) # levels_input[i][-2]=uv_mask_res + pred = tf.image.resize(pred, (self.levels[1].size, self.levels[1].size//2), tf.image.ResizeMethod.BILINEAR) + out_levels.append([pred, mean, logvar]) + pred = pred * levels_input[1][-2][:,:,:,tf.newaxis] + else: + # pred = self.enhance(pred, levels_input[0][-2], training=training) + pred = self.levels[0].enhance(pred, levels_input[0][-2], training=training) # levels_input[i][-2]=uv_mask_res + pred = tf.image.resize(pred, (512, 256), tf.image.ResizeMethod.BILINEAR) + pred = pred * levels_input[-1][-1][:,:,:,tf.newaxis] # full res uv mask + out_levels.append([pred, mean, logvar]) + + for i in range(1, len(self.levels)): + input = levels_input[i] + input[0] = input[0] - pred + input_min, input_max = tf.reduce_min(input[0], axis=[1,2,3]), tf.reduce_max(input[0], axis=[1,2,3]) + input[0] = (input[0] - input_min[:,None,None,None]) / (input_max - input_min)[:,None,None,None] + input[0] = input[0] * input[-2][:,:,:,None] # uv_mask_res + pred_level, mean, logvar = self.levels[i](input, z_cond, training=training) + pred_level = ( (pred_level * (input_max - input_min)[:,None,None,None]) + input_min[:,None,None,None] ) * input[-2][:,:,:,None] # uv_mask_res + pred = pred + pred_level + if i != len(self.levels) - 1: + pred = self.levels[i].enhance(pred, levels_input[i][-2], training=training) + out_levels.append([pred, mean, logvar]) + pred = tf.image.resize(pred, (self.levels[i+1].size, self.levels[i+1].size//2), tf.image.ResizeMethod.BILINEAR) + pred = pred * levels_input[i+1][-2][:,:,:,tf.newaxis] + else: + # if self.upscale_enhancer is not None: + # pred = self.enhance(pred, levels_input[-1][-2], training=training) + pred = self.levels[-1].enhance(pred, levels_input[-1][-2], training=training) + pred = tf.image.resize(pred, (512, 256), tf.image.ResizeMethod.BILINEAR) + pred = pred * levels_input[-1][-1][:,:,:,tf.newaxis] # full res uv mask + out_levels.append([pred, mean, logvar]) + + return out_levels \ No newline at end of file diff --git a/models/upscaler.py b/models/upscaler.py index 888007b..c03e663 100644 --- a/models/upscaler.py +++ b/models/upscaler.py @@ -12,7 +12,7 @@ class Bottleneck(tf.keras.Model): layer_scale_init_value=1e-6, prefix=f'bottleneck{j}') for j in range(5)] ) - def call(self, inputs, training=None): + def call(self, inputs, training): x = inputs x = self.bottleneck(x, training=training) @@ -35,7 +35,7 @@ class Upscaler(tf.keras.Model): self.decoder = ConvNeXtReverseWithSkip(depths=depths, dims=reverse_dims, kernel_size=3) - def call(self, inputs, training=None): + def call(self, inputs, training): img, mask = inputs img = tf.transpose(img, [0,2,3,1]) @@ -74,7 +74,7 @@ class UpscalerBasic(tf.keras.Model): self.reshape = tf.keras.layers.Reshape((low_res, (low_res//2), 3)) - def call(self, inputs, training=None): + def call(self, inputs, training): img, mask = inputs x = self.flatten(img) @@ -110,7 +110,7 @@ class UpscalerBasicNew(tf.keras.Model): self.reshape = tf.keras.layers.Reshape((low_res, (low_res//2), 3), name='upscale_enhancer_reshape') - def call(self, inputs, training=None): + def call(self, inputs, training): img, mask = inputs x = self.flatten(img) @@ -143,7 +143,7 @@ class UpscalerBasicConv(tf.keras.Model): ]) - def call(self, inputs, training=None): + def call(self, inputs, training): img, mask = inputs x = self.seq(img, training=training) @@ -160,7 +160,7 @@ class UpscalerBasicConv(tf.keras.Model): # self.decoder = ConvNeXtReverse(depths=list(reversed([9, 9, 9])), dims=list(reversed([bottleneck_size, 128, 32, 16]))) -# def call(self, inputs, training=None): +# def call(self, inputs, training): # x, mask = inputs # x = tf.transpose(x, [0,2,3,1]) diff --git a/plot_ablation.py b/plot_ablation.py new file mode 100644 index 0000000..032c859 --- /dev/null +++ b/plot_ablation.py @@ -0,0 +1,207 @@ +import os +os.environ["CUDA_VISIBLE_DEVICES"] = "6" +import sys +import time +import cv2 +import random +import tqdm +import numpy as np +import trimesh as tm +import tensorflow as tf +import cmapy as cm +import plotly.graph_objects as go +import plotly.express as ex +from plotly.subplots import make_subplots +from scipy.spatial.transform import Rotation + +import tps + +from dataset import DatasetFactory, StaticDataset +from custom_utils.custom_utils import batch_to_dict, UV2Mesh, _maskFaces, load_model +from custom_utils.smpl import SMPL +from convert_to_uv_api import convert_to_uv_api +from models.upscaler import UpscalerBasicConv as Upscaler +from postprocessing import fix_collision + + + +def color_labels(img): + colors = np.array([cm.color('jet', 1 - i) for i in np.linspace(0, 1, img.max()+1)]) / 255.0 + color_img = np.zeros((img.shape[0], img.shape[1], 3), np.float32) + for i in range(img.max()+1): + color_img[img == i, :] = colors[i] + + return color_img + + +def plot_fixed(garment, body, faces, camera): + mesh = np.concatenate((body, garment), axis=0) + faces = np.concatenate((F, faces + 14475), axis=0).astype(np.int32) + colors = np.concatenate((np.ones_like(body, dtype=np.int32)*100, np.ones_like(garment, dtype=np.int32)*230), axis=0).astype(np.float32) / 255.0 + + fig = go.Figure() + + fig.add_trace(go.Mesh3d( + x=mesh[:,0], + y=mesh[:,2], + z=mesh[:,1], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2], + text="", + vertexcolor=colors, + lighting={ 'ambient':0.8, 'diffuse':0.5, 'roughness':0.5 }, + + ),) + + fig.update_layout(scene_aspectmode='manual', scene_aspectratio=dict(x=1, y=1, z=1)) + helper = dict(xaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False), + yaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False), + zaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False),) + fig.update_layout(scene = helper) + + fig.update_layout(scene_camera=camera, width=800, height=1100, autosize=False, + margin=dict(l=0, r=0, b=0, t=0, pad=0) + ) + + return fig + + +def custom_imshow(img): + # fig = ex.imshow(np.flip(img, axis=0)) + fig = ex.imshow(img) + fig.update_layout(margin=dict(l=0, r=0, b=0, t=0, pad=0), width=img.shape[1], height=img.shape[0]) + fig.update_xaxes(visible=False) + fig.update_yaxes(visible=False) + + return fig + + +def get_faces(): + faces_folder = '/home/workspace/data/results/support/faces' + ids = os.listdir(faces_folder) + ids = [id.split('.')[0] for id in ids] + faces = {id : np.load(faces_folder + '/' + id + '.npy') for id in ids } + + faces_folder = '/home/workspace/data/results/support/faces_skirt' + ids = os.listdir(faces_folder) + ids = [id.split('.')[0] for id in ids] + faces_skirt = {id : np.load(faces_folder + '/' + id + '.npy') for id in ids } + + return { **faces, **faces_skirt } + + +def get_bodies(frames, skirt_mods): + folder_base = '/home/workspace/data/dataset' + out = dict() + for frame in tqdm.tqdm(frames): + id = frame.split('_')[0] + body = np.load(os.path.join(folder_base, 'test' + skirt_mods[id] + '_ready' + ('_2' if skirt_mods[id]!='' else '' ), 'mesh_posed_body_no_orient', frame + '.npz'))['mesh_posed_body_no_orient'] + out[frame] = body + + return out + + +def postprocess(garment, body, id, is_skirt): + mask = np.load(os.path.join('/home/workspace/data/dataset', ('test_skirt_ready_2' if is_skirt else 'test_ready'), 'mesh_mask', id + '.npy')) + + garment_temp = np.zeros((1,14475,3), np.float32) + garment_temp[0,mask,:] = garment + garment_fixed = fix_collision(garment_temp, body[np.newaxis,:,:], mask[np.newaxis,:])[0].numpy()[mask, :] + + return garment_fixed + + +def deorient(mesh, frame, is_skirt): + smpl = SMPL() + pose = np.load(os.path.join('/home/workspace/data/dataset', ('test_skirt_ready_2' if is_skirt else 'test_ready'), 'pose_shape', frame + '.npy'))[:72].astype(np.float32) + rodr = smpl.run_rodrigues(pose[np.newaxis, :]).numpy()[0].astype(np.float32) + + r = Rotation.from_matrix(rodr[0, :, :]) + out = r.apply(mesh, inverse=True) + + return out + +def get_experiment_plots(folder, frames, experiments, skirt_mods, bodies, faces, cameras): + out = [] + for frame in tqdm.tqdm(frames): + frame_out = [] + id = frame.split('_')[0] + for exp in experiments: + garment = np.load(os.path.join(folder, exp + skirt_mods[id] + '-70000', frame + '.npy')) + if exp == 'abl_orient': + garment = deorient(garment, frame, skirt_mods[id] == '_skirt') + garment = postprocess(garment, bodies[frame], id, skirt_mods[id] == '_skirt') + fig = plot_fixed(garment, bodies[frame], faces[id], cameras[frame]) + fig.write_image('/tmp/exp_temp_5.png') + img = cv2.imread('/tmp/exp_temp_5.png') + frame_out.append(img[:, 100:700, :]) + + out.append(np.concatenate(frame_out, axis=1)) + + return out + + +def get_gt_image(frames, bodies, faces, cameras, skirt_mods): + out = [] + for frame in tqdm.tqdm(frames): + id = frame.split('_')[0] + mask = np.load(os.path.join('/home/workspace/data/dataset', ('test_skirt_ready_2' if skirt_mods[id] == '_skirt' else 'test_ready'), 'mesh_mask', id + '.npy')) + gt = np.load(os.path.join('/home/workspace/data/dataset', ('test_skirt_ready_2' if skirt_mods[id] == '_skirt' else 'test_ready'), 'mesh_posed_no_orient', frame + '.npz'))['mesh_posed_no_orient'].astype(np.float32) + fig = plot_fixed(gt[mask,:], bodies[frame], faces[id], cameras[frame]) + fig.write_image('/tmp/exp_temp_5.png') + img = cv2.imread('/tmp/exp_temp_5.png') + out.append(img[:, 100:700, :]) + + return out + +if __name__ == '__main__': + + # uv2mesh = UV2Mesh() + # smpl = SMPL() + + F = np.load("custom_utils/smpl_faces.npy") + garment_type_table = np.load('custom_data/garment_type_table_test.npy', allow_pickle=True).item() + + faces = get_faces() + + frames = [] + # frames = [ '00075_4', '00475_273', '00761_295', '00793_3', '00993_220', '01134_112', '01278_108', '00718_38', '00951_34', '00962_60','01065_38','01191_83','01240_168'] + rand_frames = [frame.split('.')[0] for frame in os.listdir('/home/workspace/data/dataset/test_ready/pose_shape')] + random.shuffle(rand_frames) + rand_frames = rand_frames[:25] + frames.extend(rand_frames) + rand_frames = [frame.split('.')[0] for frame in os.listdir('/home/workspace/data/dataset/test_skirt_ready_2/pose_shape')] + random.shuffle(rand_frames) + rand_frames = rand_frames[:25] + frames.extend(rand_frames) + + + camera_1 = dict(up=dict(x=0, y=0, z=1), center=dict(x=0, y=0, z=-0.05), eye=dict(x=0.3, y=1.0, z=0.05)) + camera_2 = dict(up=dict(x=0, y=0, z=1), center=dict(x=0, y=0, z=-0.05), eye=dict(x=-0.9, y=0.7, z=0.05)) + cameras = {frame: camera_1 for frame in frames} + + # abl_all replace abl_norm maybe + experiments = ['abl_norm', 'abl_skin', 'abl_curv', 'abl_extra_loss', 'abl_abs'] + skirt_mods = { frame.split('_')[0]: ('_skirt' if os.path.exists('/home/workspace/data/dataset/test_skirt_ready_2/pose_shape/' + frame + '.npy') else '') for frame in frames } + + bodies = get_bodies(frames, skirt_mods) + gts = get_gt_image(frames, bodies, faces, cameras, skirt_mods) + + results_folder_base = '/home/workspace/data/results' + + output_folder = os.path.join(results_folder_base, 'ablation_plots') + os.makedirs(output_folder, exist_ok=True) + + images = get_experiment_plots(results_folder_base, frames, experiments, skirt_mods, bodies, faces, cameras) + + rows = [np.concatenate((gt, exp), axis=1) for gt, exp in zip(gts, images)] + + for frame, row in zip(frames, rows): + custom_imshow(row).write_image(os.path.join(output_folder, frame + '_ablation.png')) + + # final = np.concatenate(rows, axis=0) + + # custom_imshow(final).show() + + print() \ No newline at end of file diff --git a/plot_ablation_pyramid.py b/plot_ablation_pyramid.py new file mode 100644 index 0000000..ba7ab48 --- /dev/null +++ b/plot_ablation_pyramid.py @@ -0,0 +1,360 @@ +import os +os.environ["CUDA_VISIBLE_DEVICES"] = "5" + +import tensorflow as tf + +gpus = tf.config.experimental.list_physical_devices('GPU') +if gpus: + try: + # Currently, memory growth needs to be the same across GPUs + for gpu in gpus: + tf.config.experimental.set_memory_growth(gpu, True) + logical_gpus = tf.config.experimental.list_logical_devices('GPU') + print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs") + except RuntimeError as e: + # Memory growth must be set before GPUs have been initialized + print(e) + +import sys +import time +import cv2 +import random +import tqdm +import numpy as np +import trimesh as tm +import cmapy as cm +import scipy as sp +import plotly.graph_objects as go +import plotly.express as ex +from plotly.subplots import make_subplots +from scipy.spatial.transform import Rotation + +from dataset import DatasetFactory, StaticDataset +from custom_utils.custom_utils import batch_to_dict, UV2Mesh, _maskFaces, load_model, group_inputs_for_levels +from custom_utils.smpl import SMPL +from convert_to_uv_api import convert_to_uv_api +from models.upscaler import UpscalerBasicConv as Upscaler +from postprocessing import fix_collision +from models.pyramid_model_optimized import Pyramid + +from configs.config_abl_2_pyr_32_64_128_256_512 import config as config_regular +from configs.config_abl_2_pyr_32_64_128_256_512_skirt import config as config_skirt + + +def color_labels(img): + colors = np.array([cm.color('jet', 1 - i) for i in np.linspace(0, 1, img.max()+1)]) / 255.0 + color_img = np.zeros((img.shape[0], img.shape[1], 3), np.float32) + for i in range(img.max()+1): + color_img[img == i, :] = colors[i] + + return color_img + + +def plot_fixed(garment, faces, camera, body=None): + if body is not None: + mesh = np.concatenate((body, garment), axis=0) + faces = np.concatenate((F, faces + 14475), axis=0).astype(np.int32) + colors = np.concatenate((np.ones_like(body, dtype=np.int32)*100, np.ones_like(garment, dtype=np.int32)*230), axis=0).astype(np.float32) / 255.0 + else: + mesh = garment + colors = np.ones_like(garment, dtype=np.float32)*230.0 / 255.0 + + fig = go.Figure() + + fig.add_trace(go.Mesh3d( + x=mesh[:,0], + y=mesh[:,2], + z=mesh[:,1], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2], + text="", + vertexcolor=colors, + lighting={ 'ambient':0.8, 'diffuse':0.5, 'roughness':0.5 }, + + ),) + + fig.update_layout(scene_aspectmode='manual', scene_aspectratio=dict(x=1, y=1, z=1)) + helper = dict(xaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False), + yaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False), + zaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False),) + fig.update_layout(scene = helper) + + fig.update_layout(scene_camera=camera, width=800, height=1100, autosize=False, + margin=dict(l=0, r=0, b=0, t=0, pad=0) + ) + + return fig + + +def custom_imshow(img): + # fig = ex.imshow(np.flip(img, axis=0)) + fig = ex.imshow(img) + fig.update_layout(margin=dict(l=0, r=0, b=0, t=0, pad=0), width=img.shape[1], height=img.shape[0]) + fig.update_xaxes(visible=False) + fig.update_yaxes(visible=False) + + return fig + + +def get_faces(): + faces_folder = '/home/workspace/data/results/support/faces' + ids = os.listdir(faces_folder) + ids = [id.split('.')[0] for id in ids] + faces = {id : np.load(faces_folder + '/' + id + '.npy') for id in ids } + + faces_folder = '/home/workspace/data/results/support/faces_skirt' + ids = os.listdir(faces_folder) + ids = [id.split('.')[0] for id in ids] + faces_skirt = {id : np.load(faces_folder + '/' + id + '.npy') for id in ids } + + return { **faces, **faces_skirt } + + +def get_bodies(frames, skirt_mods): + folder_base = '/home/workspace/data/dataset' + out = dict() + for frame in frames: + id = frame.split('_')[0] + body = np.load(os.path.join((data_folder_skirt if skirt_mods[id] == '_skirt' else data_folder), 'mesh_posed_body_no_orient', frame + '.npz'))['mesh_posed_body_no_orient'] + out[frame] = body + + return out + + +def postprocess(garment, body, id, is_skirt): + mask = np.load(os.path.join((data_folder_skirt if is_skirt else data_folder), 'mesh_mask', id + '.npy')) + + garment_temp = np.zeros((1,14475,3), np.float32) + garment_temp[0,mask,:] = garment + garment_fixed = fix_collision(garment_temp, body[np.newaxis,:,:], mask[np.newaxis,:])[0].numpy()[mask, :] + + return garment_fixed + + +def deorient(mesh, frame, is_skirt): + smpl = SMPL() + pose = np.load(os.path.join((data_folder_skirt if is_skirt else data_folder), 'pose_shape', frame + '.npy'))[:72].astype(np.float32) + rodr = smpl.run_rodrigues(pose[np.newaxis, :]).numpy()[0].astype(np.float32) + + r = Rotation.from_matrix(rodr[0, :, :]) + out = r.apply(mesh, inverse=True) + + return out + + +def get_temp_batch(frame, config, is_skirt): + dataset_resolutions = config['pyramid']['resolutions'].copy() + if 512 not in dataset_resolutions: + dataset_resolutions.append(512) + + folder = (data_folder_skirt if is_skirt else data_folder) + with open(os.path.join(folder, 'frames_temp.txt'), 'w') as f: + f.write(frame) + + factory = DatasetFactory() + dataset = factory.get_dataset(folder=folder, + batch_size=1, + signature=config['signature_dynamic'], + resolutions=dataset_resolutions, + in_memory=config['dataset_in_memory'], + is_cape=config['is_cape'], + frames_file='frames_temp.txt') + static_dataset = StaticDataset(folder=folder, + signature=config['signature_static'], + resolutions=dataset_resolutions, + in_memory=True, + is_cape=config['is_cape']) + + data_iterator = iter(dataset) + batch = data_iterator.get_next() + batch = static_dataset.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) + + levels_input, conds = group_inputs_for_levels(batch, config) + + return levels_input, conds + + +def convert_to_mesh(uvs, is_skirt, mask): + uv2mesh = UV2Mesh() + uv2mesh_skirt = UV2Mesh(is_skirt=True) + + out = [] + for i in range(len(uvs)): + if uvs[i].shape[1] != 512: + uvs[i] = tf.image.resize(uvs[i], (512, 256), tf.image.ResizeMethod.LANCZOS5) + if is_skirt: + mesh = uv2mesh_skirt(uvs[i]) + else: + mesh = uv2mesh(uvs[i]) + + out.append(mesh[0].numpy()[mask, :]) + + return out + + +def get_final_mesh(mesh, frame, is_skirt, body, mask, faces, do_postprocessing=False): + smpl = SMPL() + pose_shape = np.load(os.path.join((data_folder_skirt if is_skirt else data_folder), 'pose_shape', frame + '.npy')).astype(np.float32) + + shape = pose_shape[72:][np.newaxis,:] + pose = pose_shape[:72][np.newaxis,:] + pose[:,:3] = 0 + gender = tf.cast(tf.greater_equal(shape[:, 10] , 0.5), tf.int32) + shape_offsets = tf.stack([tf.gather(tf.tensordot(shape[i,:10][tf.newaxis, :], smpl.shapedirs[gender[i]], axes=[[1], [2]])[0,:,:], smpl.to_keep, axis=0) for i in range(shape.shape[0])]) + + garment_temp = np.zeros((1,14475,3), np.float32) + garment_temp[0,mask,:] = mesh + + mesh_shaped = garment_temp + shape_offsets * mask[tf.newaxis,:,tf.newaxis] + mesh_posed = smpl.run_garment(pose, shape, mesh_shaped) + + if do_postprocessing: + mesh_fixed = fix_collision(mesh_posed, body[np.newaxis,:,:], mask[np.newaxis,:])[0].numpy()[mask, :] + + m = tm.Trimesh(mesh_fixed, faces, process=False, validate=False) + outliers = np.array([len(v) for v in m.vertex_neighbors]) == 0 + outliers = np.nonzero(outliers)[0] + outliers_n_neighbours = get_closest_n_points(mesh_fixed, outliers, 2) + outliers_faces = np.concatenate((outliers[:, np.newaxis], outliers_n_neighbours), axis=-1) + faces_fixed = np.concatenate((faces, outliers_faces), axis=0) + m = tm.Trimesh(mesh_fixed, faces_fixed, process=False, validate=False) + tm.smoothing.filter_humphrey(m, iterations=1) + + mesh_posed = m.vertices + else: + mesh_posed = mesh_posed[0].numpy()[mask, :] + + return mesh_posed + + + +def get_closest_n_points(verts, idx, n): + dist = sp.spatial.distance.cdist(verts[idx, :], verts) + dist[dist == 0] = 1e9 + idx_sort = np.argsort(dist, axis=-1) + closest = idx_sort[:, :n] + return closest + + +def get_experiment_plots(frames, skirt_mods, bodies, faces, masks, cameras): + model: Pyramid = Pyramid(config_regular) + load_model(model, 'checkpoints/' + config_regular['name']) + model_skirt: Pyramid = Pyramid(config_skirt) + load_model(model_skirt, 'checkpoints/' + config_skirt['name']) + result = [] + for frame in frames: + id = frame.split('_')[0] + + is_skirt = skirt_mods[id] == '_skirt' + config = config_regular if not is_skirt else config_skirt + levels_input, conds = get_temp_batch(frame, config, is_skirt) + + if is_skirt: + out = model_skirt([levels_input, conds], training=False) + else: + out = model([levels_input, conds], training=False) + + uvs = [out[i][0] for i in range(len(out))] + meshes = convert_to_mesh(uvs, is_skirt, masks[id]) + final_mesh = get_final_mesh(meshes[-1], frame, is_skirt, bodies[frame], masks[id], faces[id], do_postprocessing=False) + final_mesh_fixed = get_final_mesh(meshes[-1], frame, is_skirt, bodies[frame], masks[id], faces[id], do_postprocessing=True) + + frame_out = [] + for mesh in meshes: + fig = plot_fixed(mesh, faces[id], cameras[frame]) + fig.write_image('/tmp/exp_temp.png') + img = cv2.imread('/tmp/exp_temp.png') + frame_out.append(img[:, 50:-50, :]) + + # fig = plot_fixed(final_mesh, faces[id], cameras[frame], bodies[frame]) + # fig.write_image('/tmp/exp_temp.png') + # img = cv2.imread('/tmp/exp_temp.png') + # frame_out.append(img[:, 100:700, :]) + + fig = plot_fixed(final_mesh_fixed, faces[id], cameras[frame], bodies[frame]) + fig.write_image('/tmp/exp_temp.png') + img = cv2.imread('/tmp/exp_temp.png') + frame_out.append(img[:, 50:-50, :]) + + result.append(np.concatenate(frame_out, axis=1)) + + return result + + +def get_gt_image(frames, bodies, faces, cameras, skirt_mods): + out = [] + for frame in frames: + id = frame.split('_')[0] + mask = np.load(os.path.join((data_folder_skirt if skirt_mods[id] == '_skirt' else data_folder), 'mesh_mask', id + '.npy')) + gt = np.load(os.path.join((data_folder_skirt if skirt_mods[id] == '_skirt' else data_folder), 'mesh_posed_no_orient', frame + '.npz'))['mesh_posed_no_orient'].astype(np.float32) + fig = plot_fixed(gt[mask,:], faces[id], cameras[frame], bodies[frame]) + fig.write_image('/tmp/exp_temp.png') + img = cv2.imread('/tmp/exp_temp.png') + + gt_unposed = np.load(os.path.join((data_folder_skirt if skirt_mods[id] == '_skirt' else data_folder), 'mesh_unposed_no_shape', frame + '.npz'))['mesh_unposed_no_shape'].astype(np.float32) + fig = plot_fixed(gt_unposed[mask,:], faces[id], cameras[frame]) + fig.write_image('/tmp/exp_temp.png') + img_unposed = cv2.imread('/tmp/exp_temp.png') + + out.append(np.concatenate((img[:, 50:-50, :], img_unposed[:, 50:-50, :]), axis=1)) + + return out + + +def get_masks(frames): + out = dict() + for frame in frames: + id = frame.split('_')[0] + mask = np.load(os.path.join((data_folder_skirt if skirt_mods[id] == '_skirt' else data_folder), 'mesh_mask', id + '.npy')) + out[id] = mask + + return out + + +if __name__ == '__main__': + + # uv2mesh = UV2Mesh() + # smpl = SMPL() + + F = np.load("custom_utils/smpl_faces.npy") + F_skirt = np.load("custom_utils/smpl_faces_skirt.npy") + # garment_type_table = np.load('custom_data/garment_type_table_test.npy', allow_pickle=True).item() + garment_type_table = np.load('custom_data/garment_type_table_train.npy', allow_pickle=True).item() + + + frames = ['05656_221', '00300_69', '06955_117'] + # frames = ['02184_157', '02241_142', '06955_117', '06804_192'] + # frames = ['01763_259', '007292_282', '00539_296', '00075_4'] + # frames = [ '01763_259'] + camera_1 = dict(up=dict(x=0, y=0, z=1), center=dict(x=0, y=0, z=-0.05), eye=dict(x=0.3, y=1.0, z=0.05)) + camera_2 = dict(up=dict(x=0, y=0, z=1), center=dict(x=0, y=0, z=-0.05), eye=dict(x=-0.9, y=0.7, z=0.05)) + # cameras = {'01763_259': camera_1, '007292_282': camera_1, '00539_296': camera_1, '00075_4': camera_2} + cameras = {'05656_221': camera_1, '00300_69': camera_1, '06955_117': camera_1} + # cameras = {'02184_157': camera_1, '02241_142': camera_1, '06955_117': camera_1, '06804_192': camera_1} + + # abl_all replace abl_norm maybe + experiment = 'abl_2_pyr_32_64_128_256_512' + skirt_mods = { frame.split('_')[0]: ('_skirt' if (garment_type_table[frame.split('_')[0]] == 'Skirt' or garment_type_table[frame.split('_')[0]] == 'Dress') else '') for frame in frames } + + data_folder = '/home/workspace/local-data/train' + data_folder_skirt = '/home/workspace/local-data/train_skirt' + + bodies = get_bodies(frames, skirt_mods) + masks = get_masks(frames) + faces = { frame.split('_')[0]: _maskFaces(np.zeros((14475,3)), F_skirt if skirt_mods[frame.split('_')[0]] == '_skirt' else F, masks[frame.split('_')[0]])[1] for frame in frames } + gts = get_gt_image(frames, bodies, faces, cameras, skirt_mods) + + results_folder_base = '/home/workspace/data/results' + + output_folder = os.path.join(results_folder_base, 'ablation_plots') + os.makedirs(output_folder, exist_ok=True) + + images = get_experiment_plots(frames, skirt_mods, bodies, faces, masks, cameras) + + rows = [np.concatenate((gt, exp), axis=1)[75:-100] for gt, exp in zip(gts, images)] + final = np.concatenate(rows, axis=0) + + custom_imshow(final).show() + + print() \ No newline at end of file diff --git a/plot_examples.py b/plot_examples.py new file mode 100644 index 0000000..161b862 --- /dev/null +++ b/plot_examples.py @@ -0,0 +1,271 @@ +import os +os.environ["CUDA_VISIBLE_DEVICES"] = "6" +import sys +import time +import cv2 +import random +import tqdm +import numpy as np +import trimesh as tm +import tensorflow as tf +import cmapy as cm +import plotly.graph_objects as go +import plotly.express as ex +from plotly.subplots import make_subplots + +from dataset import DatasetFactory, StaticDataset +from custom_utils.custom_utils import batch_to_dict, UV2Mesh, _maskFaces, load_model +from custom_utils.smpl import SMPL +from convert_to_uv_api import convert_to_uv_api +from models.upscaler import UpscalerBasicConv as Upscaler + + + +def color_labels(img): + colors = np.array([cm.color('jet', 1 - i) for i in np.linspace(0, 1, img.max()+1)]) / 255.0 + color_img = np.zeros((img.shape[0], img.shape[1], 3), np.float32) + for i in range(img.max()+1): + color_img[img == i, :] = colors[i] + + return color_img + +def write_obj(file, vertices, faces, colors): + with open(file, 'w') as file: + for v, c in zip(vertices, colors): + line = 'v ' + ' '.join([str(_) for _ in v]) + ' ' + ' '.join([str(_) for _ in c]) + '\n' + file.write(line) + for f in faces: + line = 'f ' + ' '.join([str(_) for _ in f]) + '\n' + file.write(line) + + +def export_to_ply(mesh, file): + ply = tm.exchange.ply.export_ply(mesh, encoding='ascii', vertex_normal=True, include_attributes=True) + output_file = open(file, "wb+") + output_file.write(ply) + output_file.close() + + +def export_to_obj(mesh, file): + ply = tm.exchange.obj.export_obj(mesh) + output_file = open(file, "w+") + output_file.write(ply) + output_file.close() + + +def plot_fixed(mesh, faces, colors): + fig = go.Figure() + + fig.add_trace(go.Mesh3d( + x=mesh[:,0], + y=mesh[:,2], + z=mesh[:,1], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2], + text="", + vertexcolor=colors, + lighting={ 'ambient':0.8, 'diffuse':0.5, 'roughness':0.5 }, + + ),) + + + + fig.update_layout(scene_aspectmode='manual', scene_aspectratio=dict(x=1, y=1, z=1)) + helper = dict(xaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False), + yaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False), + zaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False),) + fig.update_layout(scene = helper) + + camera = dict( + up=dict(x=0, y=0, z=1), + center=dict(x=0, y=0, z=-0.05), + eye=dict(x=0.3, y=1.0, z=0.05) + ) + + fig.update_layout(scene_camera=camera, width=800, height=1100, autosize=False, + margin=dict(l=0, r=0, b=0, t=0, pad=0) + ) + + return fig + + +def custom_imshow(img): + fig = ex.imshow(np.flip(img, axis=0)) + fig.update_layout(margin=dict(l=0, r=0, b=0, t=0, pad=0), width=img.shape[1], height=img.shape[0]) + fig.update_xaxes(visible=False) + fig.update_yaxes(visible=False) + + return fig + + +def uv_mapping_example(mesh, faces, colors, mask): + fig = plot_fixed(mesh, faces, colors) + fig.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_body.png') + + # stop inbetween + uv = convert_to_uv_api(mesh, mask) + plot = custom_imshow((uv+1)/2) + # plot = custom_imshow(result) + # plot.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_uv_body_pre.png') + plot.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_uv_body_inpainted.png') + + print() + + +def curvature_example(mesh_curvature, uv_curvature, posed, faces, mask): + colors = np.array([cm.color('jet', 1 - i) for i in np.linspace(0, 1, mesh_curvature.max()+1)]) / 255.0 + color_mesh = np.zeros((mesh_curvature.shape[0], 3), np.float32) + for i in range(mesh_curvature.max()+1): + color_mesh[mesh_curvature == i, :] = colors[i] + + curvature_raw = np.load('/home/workspace/data/dataset/test/' + id_str + '/curvature_25_raw.npy')[int(frame_nr), :] + curvature_raw_norm = (curvature_raw - curvature_raw.min()) / (curvature_raw.max() - curvature_raw.min()) + curvature_raw_colors = np.array([cm.color('jet', 1 - curvature_raw_norm[i]) for i in range(curvature_raw_norm.shape[0])]) / 255.0 + + fig = plot_fixed(posed, faces, curvature_raw_colors) + fig.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_mesh_curv_raw.png') + fig = plot_fixed(posed, faces, color_mesh[mask, :]) + fig.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_mesh_curv.png') + plot = custom_imshow(uv_curvature) + plot.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_uv_curv.png') + + print() + + +def plot_upscaling(uv_low, uv_high, uv_mask_low, uv_mask_high, faces, color, mask): + uv2mesh = UV2Mesh(res=256) + model = Upscaler(low_res=32, kernel_size=3) + load_model(model, 'checkpoints/32_512_4') + enhanced = model([uv_low[np.newaxis,:,:,:], uv_mask_low[np.newaxis,:,:]], training=False)[0].numpy() + + bad = tf.image.resize(uv_low, size=(512, 256), method=tf.image.ResizeMethod.LANCZOS5).numpy() + good = tf.image.resize(enhanced, size=(512, 256), method=tf.image.ResizeMethod.LANCZOS5).numpy() + + plot = custom_imshow((bad+1)/2 * uv_mask_high[:,:,np.newaxis]) + plot.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_uv_upscale_bad.png') + plot = custom_imshow((good+1)/2 * uv_mask_high[:,:,np.newaxis]) + plot.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_uv_upscale_good.png') + plot = custom_imshow((uv_high+1)/2 * uv_mask_high[:,:,np.newaxis]) + plot.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_uv_upscale_orig.png') + plot = custom_imshow((uv_low+1)/2) + plot.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_uv_low.png') + + fig = plot_fixed(uv2mesh(bad[np.newaxis,:,:,:])[0].numpy()[mask, :], faces, color) + fig.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_mesh_upscale_bad.png') + fig = plot_fixed(uv2mesh(good[np.newaxis,:,:,:])[0].numpy()[mask, :], faces, color) + fig.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_mesh_upscale_good.png') + fig = plot_fixed(uv2mesh(uv_high[np.newaxis,:,:,:])[0].numpy()[mask, :], faces, color) + fig.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_mesh_upscale_orig.png') + + print() + +if __name__ == '__main__': + + uv2mesh = UV2Mesh() + smpl = SMPL() + + F = np.load("custom_utils/smpl_faces.npy") + garment_type_table = np.load('custom_data/garment_type_table_test.npy', allow_pickle=True).item() + + factory = DatasetFactory() + signature_dynamic = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + 'uv_posed': (512, 256, 3), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (14475, 3,), + # 'mesh_posed_body_no_orient': (14475, 3,), + 'mesh_posed': (14475, 3,), + 'mesh_unposed': (14475, 3,), + 'uv_unposed': (512, 256, 3), + 'uv_unposed_32': (32, 16, 3), + 'uv_curvature': (512, 256, 7), + 'mesh_curvature': (14475) + } + signature_static = { 'uv_static': (512, 256, 3), + 'mesh_static': (14475, 3,), + 'mesh_mask': (14475,), + 'uv_mask': (512, 256,), + 'uv_mask_32': (32, 16,), + # 'uv_shaped_body': (3, 512, 256,), + } + + dataset = factory.get_dataset(folder='/home/workspace/data/dataset/test_ready', + batch_size=1, + signature=signature_dynamic, + shuffle=True, + do_repeat=False, + resolutions=[512, 32], + frames_file='/home/workspace/data/dataset/test_ready/frames_pose_cluster_20_sample_10.txt', + # frames_file='/home/workspace/data/dataset/test_ready/frames_00438_146.txt', + ) + static_dataset = StaticDataset(folder='/home/workspace/data/dataset/test_ready', + resolutions=[512, 32], + signature=signature_static) + + + uv_res = 256 + + + + for batch in tqdm.tqdm(dataset): + batch = static_dataset.expand_batch(batch_to_dict(batch, signature_dynamic)) + + id_str, frame_nr = batch['id'][0].numpy().decode("utf-8"), batch['frame_nr'][0].numpy().decode("utf-8") + + type = garment_type_table[id_str] + + # if type != 'Jumpsuit': + # continue + + shape = batch['pose_shape'][:, 72:] + gender = tf.cast(tf.greater_equal(shape[:, 10] , 0.5), tf.int32) + shape_offsets = tf.stack([tf.gather(tf.tensordot(shape[i,:10][tf.newaxis, :], smpl.shapedirs[gender[i]], axes=[[1], [2]])[0,:,:], smpl.to_keep, axis=0) for i in range(shape.shape[0])]).numpy()[0] + + + uv_posed = (np.squeeze(batch['uv_posed'].numpy()) + 1) / 2 + uv_body_posed = (np.squeeze(batch['uv_body_posed'].numpy()) + 1) / 2 + uv_unposed = (np.squeeze(batch['uv_unposed'].numpy()) + 1) / 2 + # uv_curvature = np.tile(np.argmax(np.squeeze(batch['uv_curvature'].numpy()), axis=-1)[:,:,np.newaxis], [1,1,3]) / 6 + uv_curvature = color_labels(batch['uv_curvature'][0].numpy().argmax(-1)) + uv_static = (np.squeeze(batch['uv_static'].numpy()) + 1) / 2 + + img = np.concatenate([uv_posed, uv_body_posed, uv_unposed, uv_curvature, uv_static], axis=1) + + # img_plot = custom_imshow(img) + # img_plot.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '.png') + # img_plot.show() + + mask = batch['mesh_mask'][0].numpy().astype(bool) + body = batch['mesh_body_posed'][0].numpy() + posed = batch['mesh_posed'][0].numpy()[mask, :] + unposed = batch['mesh_unposed'][0].numpy()[mask, :] + static = batch['mesh_static'][0].numpy()[mask, :] + unposed_shaped = unposed + shape_offsets[mask, :] + + _, faces_garment = _maskFaces(np.zeros((14475, 3), np.float32), F, mask) + faces_garment = faces_garment.astype(np.int32) + faces = np.concatenate((F, faces_garment + 14475), axis=0).astype(np.int32) + colors = np.concatenate((np.ones_like(body, dtype=np.int32)*100, np.ones_like(posed, dtype=np.int32)*230), axis=0).astype(np.float32) / 255.0 + colors_garment = (np.ones_like(posed, dtype=np.int32)*230).astype(np.float32) / 255.0 + + x = np.concatenate((body, posed), axis=0) + + # m = tm.Trimesh(x, faces, process=False, validate=False, vertex_colors=colors) + + # fig = plot_fixed(x, faces, colors) + # fig.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_posed.svg') + # # fig.show() + + # fig = plot_fixed(unposed, faces_garment, colors_garment) + # fig.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_unposed.svg') + # # # fig.show() + + # fig = plot_fixed(unposed_shaped, faces_garment, colors_garment) + # fig.write_image('examples/' + type + '_' + id_str + '_' + frame_nr + '_unposed_shaped.svg') + + # uv_mapping_example(body, F, colors[:14475, :], np.ones((14475), bool)) + # curvature_example(batch['mesh_curvature'][0].numpy(), uv_curvature, posed, faces_garment, mask) + # plot_upscaling(batch['uv_unposed_32'].numpy()[0], batch['uv_unposed'].numpy()[0], batch['uv_mask_32'].numpy()[0], batch['uv_mask'].numpy()[0], faces_garment, colors_garment, mask) + + print() \ No newline at end of file diff --git a/preprocessing.py b/preprocessing.py index 7cca52d..4b81f54 100644 --- a/preprocessing.py +++ b/preprocessing.py @@ -1,7 +1,8 @@ +import glob import os from custom_utils.supersmpl_io import readPC2 -os.environ["CUDA_VISIBLE_DEVICES"] = "1" +os.environ["CUDA_VISIBLE_DEVICES"] = "3" import sys import shutil @@ -12,13 +13,9 @@ import numpy as np import scipy as sp import scipy.io as sio - from custom_utils.smpl import SMPL import plotly.graph_objects as go - - - - +from custom_utils.custom_utils import _maskFaces def create_no_orient_body(folder): @@ -30,8 +27,8 @@ def create_no_orient_body(folder): if not os.path.isdir(os.path.join(folder, id)): continue - if os.path.exists(os.path.join(folder, id, 'mesh_posed_body_no_orient')): - continue + # if os.path.exists(os.path.join(folder, id, 'mesh_posed_body_no_orient')): + # continue info = sio.loadmat(os.path.join(folder, id, 'info.mat')) @@ -41,68 +38,16 @@ def create_no_orient_body(folder): # continue pose = np.transpose(pose, [1, 0]).astype(np.float32) + + if len(os.listdir(os.path.join(folder, id, 'mesh_posed_body_no_orient'))) == pose.shape[0]: + continue + pose[:, :3] = 0 beta = np.squeeze(np.concatenate((shape, gender), axis=1)).astype(np.float32) R = smpl.run_rodrigues(pose) T, _, _ = smpl.run(R, np.tile(beta[np.newaxis, :], [pose.shape[0], 1]), True) T = T.numpy() - # print(gender[0,0]) - - # meshes = [] - # x = T[0, :, :] - # meshes.append(go.Mesh3d( - # # 8 vertices of a cube - # x=x[:,0], - # y=x[:,2], - # z=x[:,1], - # # i, j and k give the vertices of triangles - # i = F[:,0], - # j = F[:,1], - # k = F[:,2] - # )) - - # fig = go.Figure(data=meshes) - # fig.update_layout(scene_aspectmode='manual', scene_aspectratio=dict(x=1, y=1, z=1)) - # fig.update_layout( - # scene = dict( - # xaxis = dict(nticks=4, range=[-1,1],), - # yaxis = dict(nticks=4, range=[-1,1],), - # zaxis = dict(nticks=4, range=[-1,1],),) - # ) - - # fig.show() - - # frame_nr = str(0) - # folder_2 = '/home/workspace/local-data/train_100/mesh_posed_body_no_orient' - # mesh_posed_body_no_orient = np.load(os.path.join(folder_2, id + '_' + frame_nr + '.npz')); mesh_posed_body_no_orient = mesh_posed_body_no_orient['mesh_posed_body_no_orient'] - - # meshes = [] - # x = mesh_posed_body_no_orient - # meshes.append(go.Mesh3d( - # # 8 vertices of a cube - # x=x[:,0], - # y=x[:,2], - # z=x[:,1], - # # i, j and k give the vertices of triangles - # i = F[:,0], - # j = F[:,1], - # k = F[:,2] - # )) - - # fig = go.Figure(data=meshes) - # fig.update_layout(scene_aspectmode='manual', scene_aspectratio=dict(x=1, y=1, z=1)) - # fig.update_layout( - # scene = dict( - # xaxis = dict(nticks=4, range=[-1,1],), - # yaxis = dict(nticks=4, range=[-1,1],), - # zaxis = dict(nticks=4, range=[-1,1],),) - # ) - - # fig.show() - - - # print() os.makedirs(os.path.join(folder, id, 'mesh_posed_body_no_orient'), exist_ok=True) for i in range(pose.shape[0]): @@ -119,12 +64,15 @@ def create_no_shape_unposed(folder): garment_dir = os.path.join(folder, id) if not os.path.isdir(garment_dir): continue - if os.path.exists(os.path.join(folder, id, 'mesh_unposed_no_shape')): - continue + # if os.path.exists(os.path.join(folder, id, 'mesh_unposed_no_shape')): + # continue info = sio.loadmat(os.path.join(folder, id, 'info.mat')) + # if len(os.listdir(os.path.join(folder, id, 'mesh_unposed_no_shape_one_hot'))) == info['poses'].shape[1]: + # continue + shape = info['shape'] gender = int(info['gender'][0,0] > 0) garments = [f.replace('.pc16','') for f in os.listdir(garment_dir) if f.find('_') == -1 and f != 'info.mat' and not f.endswith('.obj')] @@ -136,12 +84,12 @@ def create_no_shape_unposed(folder): mask = np.load(os.path.join(folder, id, garment + '_mask.npy')) shape_offsets = tf.tensordot(shape.astype(np.float32), smpl.shapedirs[gender], axes=[[1], [2]]).numpy() - os.makedirs(os.path.join(folder, id, 'mesh_unposed_no_shape'), exist_ok=True) + os.makedirs(os.path.join(folder, id, 'mesh_unposed_no_shape_one_hot'), exist_ok=True) for i in range(info['poses'].shape[1]): - mesh_unposed = np.load(os.path.join(garment_dir, 'mesh_unposed', id + '_' + str(i) + '.npz')) + mesh_unposed = np.load(os.path.join(garment_dir, 'mesh_unposed_one_hot', id + '_' + str(i) + '.npz')) mesh_unposed = mesh_unposed['mesh_unposed'] mesh_unposed[mask, :] = mesh_unposed[mask, :] - np.squeeze(shape_offsets)[smpl.to_keep, :][mask, :] - np.savez_compressed(os.path.join(folder, id, 'mesh_unposed_no_shape', id + '_' + str(i) + '.npz'), mesh_unposed_no_shape = mesh_unposed) + np.savez_compressed(os.path.join(folder, id, 'mesh_unposed_no_shape_one_hot', id + '_' + str(i) + '.npz'), mesh_unposed_no_shape = mesh_unposed) @@ -201,16 +149,162 @@ def verify_poses(folder): print(id) +def fix_split_garment_generated_data(folder): + ids = os.listdir(folder) + + for id in tqdm.tqdm(ids): + if not os.path.isdir(os.path.join(folder, id)): + continue + + garments = [f.replace('_registered.pc16','') for f in os.listdir(os.path.join(folder, id)) if f.endswith('_registered.pc16') and not f.startswith('Combined')] + assert len (garments) == 1 + + if len(id) == 6 and id.endswith('2'): + frames_folder = os.path.join(folder, id, 'mesh_posed_body_no_orient') # os.path.join(folder, id, 'mesh_unposed_no_shape') + frames = os.listdir(frames_folder) + frame_id = frames[0].split('_')[0] + if len(frame_id) == 6: + assert frame_id == id, 'Wrong id found!' + if len(frame_id) == 5 and id.startswith(frame_id): + for frame in frames: + frame_nr = frame.split('.')[0].split('_')[1] + shutil.move(os.path.join(frames_folder, frame), os.path.join(frames_folder, id + '_' + frame_nr + '.npz')) + + +def create_garment_type_table(): + folder = '/home/workspace/data/dataset' + # sub_folders = ['train', 'validation', 'test', 'train_skirt', 'valid_skirt', 'test_skirt'] + # sub_folders = ['train', 'validation', 'train_skirt', 'valid_skirt'] + sub_folders = ['test_skirt'] + # sub_folders = ['test', 'test_skirt'] + + garment_type_table = dict() + + for sub_f in sub_folders: + ids = os.listdir(os.path.join(folder, sub_f)) + + for id in tqdm.tqdm(ids): + if not os.path.isdir(os.path.join(folder, sub_f, id)): + continue + + garments = [f.replace('_registered.pc16','') for f in os.listdir(os.path.join(folder, sub_f, id)) if f.endswith('_registered.pc16') and not f.startswith('Combined')] + assert len (garments) == 1 + + if id in garment_type_table.keys(): + print(id + ': ' + garments[0] + ' ' + garment_type_table[id]) + + garment_type_table[id] = garments[0] + + np.save('custom_data/garment_type_table_test.npy', garment_type_table) + + +def generate_faces(): + folder = '/home/workspace/data/dataset/test_skirt_ready' + output_folder = '/home/workspace/data/results/support/faces_skirt' + F = np.load("custom_utils/smpl_faces_skirt.npy") + + os.makedirs(output_folder, exist_ok=True) + + ids = os.listdir(os.path.join(folder, 'pose_shape')) + ids = [id.split('_')[0] for id in ids] + ids = set(ids) + + for id in tqdm.tqdm(ids): + mask = np.load(os.path.join(folder, 'mesh_mask', id + '.npy')).astype(bool) + + _, faces = _maskFaces(np.zeros((14475, 3), np.float32), F, mask) + np.save(os.path.join(output_folder, id + '.npy'), faces.astype(np.int32)) + + +def generate_frames_file(folder, ratio=0.1): + all_frames = os.listdir(os.path.join(folder, 'pose_shape')) + ids = [frame.split('_')[0] for frame in all_frames] + all_frames = [frame.split('.')[0] for frame in all_frames] + ids = sorted(list(set(ids))) + + garment_type_table = np.load('custom_data/garment_type_table_train.npy', allow_pickle=True).item() + + + random.shuffle(ids) + + sub_ids = ids[:int(len(ids) * ratio)] + + selected = [] + + for id in tqdm.tqdm(sub_ids): + if garment_type_table[id] != 'Dress': + continue + if len(selected) > 30000: + break + + # frames = glob.glob(os.path.join(folder, 'pose_shape', id + '_*')) + frames = [frame for frame in all_frames if frame.startswith(id + '_')] + frames = [frame.split('/')[-1].split('.')[0] for frame in frames] + selected.extend(frames) + + with open(os.path.join(folder, 'frames_dress_30k.txt'), 'w') as f: + for i, frame in enumerate(selected): + f.write(frame + '\n') + + +def generate_frames_file_filtered_cape(): + folder = '/home/workspace/local-data/cape_processed/train/female' + + all_frames = os.listdir(os.path.join(folder, 'pose_shape')) + ids = [frame.split('.')[0] for frame in all_frames] + all_frames = ['.'.join(frame.split('.')[:-1]) for frame in all_frames] + ids = sorted(list(set(ids))) + + seqs_train_00032_SS = ['00032_shortshort_hips', '00032_shortshort_shoulders_mill'] + seqs_test_00032_SS = [ '00032_shortshort_tilt_twist_left'] + + seqs_train_00032_SL = ['00032_shortlong_hips', '00032_shortlong_shoulders_mill'] + seqs_test_00032_SL = [ '00032_shortlong_tilt_twist_left'] + + seqs_train_00032_SL_2 = ['00032_shortlong_hips', '00032_shortlong_tilt_twist_left'] + seqs_test_00032_SL_2 = ['00032_shortlong_shoulders_mill'] + + seqs_train_03223_SL_2 = ['03223_shortlong_hips', '03223_shortlong_tilt_twist_left'] + seqs_test_03223_SL_2 = ['03223_shortlong_shoulders_mill'] + + seqs_train_03223_SS_2 = ['03223_shortshort_hips', '03223_shortshort_tilt_twist_left'] + seqs_test_03223_SS_2 = ['03223_shortshort_shoulders_mill'] + + ids = [id for id in ids if id in seqs_train_03223_SS_2] + + random.shuffle(ids) + + sub_ids = ids + + selected = [] + + for id in tqdm.tqdm(sub_ids): + # frames = glob.glob(os.path.join(folder, 'pose_shape', id + '_*')) + frames = [frame for frame in all_frames if frame.startswith(id + '.')] + # frames = [frame.split('/')[-1].split('.')[0] for frame in frames] + selected.extend(frames) + + random.shuffle(selected) + + with open(os.path.join(folder, 'frames_03223_SS_train_2.txt'), 'w') as f: + for i, frame in enumerate(selected): + f.write(frame + '\n') + if __name__ == '__main__': - src_folder = '/home/workspace/data/dataset/test_skirt' #cloth3d_skirt + src_folder = '/home/workspace/local-data/train_skirt' #cloth3d_skirt # src_folder = r'D:\Work\Dataset\validation_2' dest_folder = '/home/workspace/data/dataset/validation' # create_no_orient_body(src_folder) - create_no_shape_unposed(src_folder) + # fix_split_garment_generated_data(src_folder) + # create_no_shape_unposed(src_folder) # check_if_skirt(src_folder) # gather_ids(src_folder, 'ids/test_non_skirt_ids.txt') # verify_poses(src_folder) + # create_garment_type_table() + # generate_faces() + generate_frames_file(src_folder, ratio=1) + # generate_frames_file_filtered_cape() diff --git a/run_parallel.py b/run_parallel.py index 5c63417..a79ec80 100644 --- a/run_parallel.py +++ b/run_parallel.py @@ -4,17 +4,26 @@ import os if __name__ == '__main__': - folder = '/home/workspace/data/dataset/train' - # folder = '/home/workspace/data/dataset/train_100' - ids = os.listdir(folder)#[:800] + folder = '/home/workspace/data/dataset/test_skirt_ready_2' + # folder = '/home/workspace/local-data/cape_processed/train/male' + # folder = '/home/workspace/local-data/valid_skirt' + # folder = '/home/workspace/local-data/valid' + # ids = os.listdir(folder) + ids = os.listdir(folder + '/mesh_posed_no_orient')#[280000:] skirt = 0 count = 0 - step = 75 + step = 2000 # !!!!!!! change skirt parameter in script while count < len(ids): - os.system('nohup python convert_to_uv.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'to_uv_unposed_no_shape_' + str(count) + '_' + str(count+step) + ' > nohup/to_uv_unposed_no_shape_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &') + # os.system('nohup python convert_to_uv_cape.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'to_uv_2_cape_train_male_' + str(count) + '_' + str(count+step) + ' > nohup/to_uv_2_cape_train_male_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &') + # os.system('nohup python convert_to_uv.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'to_uv_train_unposed_onehot_' + str(count) + '_' + str(count+step) + ' > nohup/to_uv_train_unposed_onehot_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &') + # os.system('nohup python convert_to_uv_local.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'to_uv_train_local_unposed_onehot_' + str(count) + '_' + str(count+step) + ' > nohup/to_uv_train_local_unposed_onehot_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &') + os.system('nohup python convert_to_uv_local_single.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'to_uv_posed_no_orient_test_skirt_ready_' + str(count) + '_' + str(count+step) + ' > nohup/to_uv_posed_no_orient_test_skirt_ready_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &') + # os.system('nohup python convert_to_uv_local_single.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'to_uv_train_skirt_local_unposed_onehot_3_' + str(count) + '_' + str(count+step) + ' > nohup/to_uv_train_skirt_local_unposed_onehot_3_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &') + # os.system('nohup python convert_to_uv_local_single.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'to_uv_valid_skirt_local_unposed_onehot_3_' + str(count) + '_' + str(count+step) + ' > nohup/to_uv_valid_skirt_local_unposed_onehot_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &') + # os.system('nohup python downscale.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + ' -n ' + 'downscale_valid_posed_no_orient_' + str(count) + '_' + str(count+step) + ' > nohup/downscale_valid_posed_no_orient_' + str(count) + '_' + str(count+step) + '.out' + ' 2>&1 &') # os.system('python Data/convert_to_uv.py -f ' + folder + ' -s ' + str(count) + ' -e ' + str(count + step) + '') count += step diff --git a/sample.py b/sample.py index a09da1f..11528c6 100644 --- a/sample.py +++ b/sample.py @@ -281,7 +281,7 @@ if __name__ == '__main__': smpl = SMPL() factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), 'pose_shape': (72 + 11,), # 'uv_posed': (3, 512, 256,), 'uv_body_posed': (3, 512, 256,), @@ -324,7 +324,7 @@ if __name__ == '__main__': sample('checkpoints/cvae_13', 'checkpoints/cvae_curv_2') # ckpt = tf.train.Checkpoint(model=model) - # manager = tf.train.CheckpointManager(ckpt, 'checkpoints/' + name, max_to_keep=3) + # manager = tf.train.CheckpointManager(ckpt, 'checkpoints/' + name, max_to_keep=20) # step = 0 # for batch in dataset_train: diff --git a/sample_pro.py b/sample_pro.py index 250beb6..bef0d25 100644 --- a/sample_pro.py +++ b/sample_pro.py @@ -1,5 +1,5 @@ import os -os.environ["CUDA_VISIBLE_DEVICES"] = "3" +os.environ["CUDA_VISIBLE_DEVICES"] = "6" import tensorflow as tf gpus = tf.config.experimental.list_physical_devices('GPU') @@ -28,84 +28,22 @@ from plotly.subplots import make_subplots from custom_utils.smpl import SMPL from custom_utils.custom_utils import load_model -from cvae_curv import CVAE as CVAECurv -from models.cvae_model import CVAE as CVAEMain -name='cvae_12_6' -def init_wandb(): - run = wandb.init(project='plots', name=name, - notes='') - artifact = wandb.Artifact('code', type='code') - artifact.add_file('cvae.py') - artifact.add_file('dataset.py') - artifact.add_file('losses.py') - artifact.add_file('convnext/models/convnext_tf.py') - run.log_artifact(artifact) +from configs.config_abl_skin_var_3 import config as config_main +from configs.config_cvae_curv import config as config_curv +from models.cvae_model import CVAE uv2mesh = UV2Mesh(res=256) -def plot_3d(mesh_gt, mesh_pred_unposed, faces, collision, collision_faces, collision_color): - mesh_pred_unposed[:,2] += 1 - collision[:,2] += 2 - fig = go.Figure(data=[ - go.Mesh3d( - # 8 vertices of a cube - x=mesh_gt[:,0], - y=mesh_gt[:,2], - z=mesh_gt[:,1], - # i, j and k give the vertices of triangles - i = faces[:,0], - j = faces[:,1], - k = faces[:,2] - ), - go.Mesh3d( - # 8 vertices of a cube - x=mesh_pred_unposed[:,0], - y=mesh_pred_unposed[:,2], - z=mesh_pred_unposed[:,1], - # i, j and k give the vertices of triangles - i = faces[:,0], - j = faces[:,1], - k = faces[:,2], - ), - go.Mesh3d( - # 8 vertices of a cube - x=collision[:,0], - y=collision[:,2], - z=collision[:,1], - # i, j and k give the vertices of triangles - i = collision_faces[:,0], - j = collision_faces[:,1], - k = collision_faces[:,2], - vertexcolor=collision_color - ) - ]) - - fig.update_layout(scene_aspectmode='manual', - scene_aspectratio=dict(x=1, y=2, z=1)) - fig.update_layout( - scene = dict( - xaxis = dict(nticks=4, range=[-1,1],), - yaxis = dict(nticks=4, range=[-1,3],), - zaxis = dict(nticks=4, range=[-1,1],),) - ) - - return fig - - @tf.function def train_step(batch): - with tf.GradientTape() as tape: - uv_curvature = tf.one_hot(batch['uv_curvature'], 7) - - pred, mean, logvar, z = model([batch['uv_unposed'], batch['uv_static'], batch['uv_body_posed'], uv_curvature, batch['uv_mask'], batch['uv_shaped_body']]) + pred, mean, logvar, z = model([batch['uv_unposed'], batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature'], batch['uv_mask'], batch['uv_shaped_body']]) def plot_everything(batch: dict, type: str): - uv_curvature = tf.one_hot(batch['uv_curvature'], 7) - pred, mean, logvar, z = model([batch['uv_unposed'], batch['uv_static'], batch['uv_body_posed'], uv_curvature, batch['uv_mask'], batch['uv_shaped_body']]) + pred, mean, logvar, z = model([batch['uv_unposed'], batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature'], batch['uv_mask'], batch['uv_shaped_body']]) mesh_pred = uv2mesh(tf.transpose(pred, [0,3,1,2])) mesh_orig = batch['mesh_unposed'] @@ -137,15 +75,6 @@ def plot_everything(batch: dict, type: str): return { **figs, **{ type + '/images': imgs, type + '/mean_hist': mean_hist, type + '/logvar_hist': logvar_hist } } -def get_frame(folder, nr): - pose_folder = os.path.join(folder, 'pose_shape') - frames = sorted(os.listdir(pose_folder)) - frames = [frame.split('.')[0] for frame in frames] # .split('_')[0] - random.shuffle(frames) - out = [frames[0]] - out.extend(frames[1:nr]) - return out - def get_bodies(folder, frames, random=True): bodies = [] @@ -350,11 +279,9 @@ def get_noise(fix_noise, nr, latent_dim=128): -def sample(folder, variable_condition, fix_noise, nr=4): - # run = wandb.init(project='vae_plots', name=) +def sample(folder, frames, variable_condition, fix_noise, nr=4): random_static, random_body, random_curv, random_unposed = variable_condition == 'static', variable_condition == 'body', variable_condition == 'curv', variable_condition == 'unposed' - frames = get_frame(folder, nr) noise = get_noise(fix_noise, nr) noise_curv = get_noise(fix_noise, nr) body, pose_shape = get_bodies(folder, frames, random_body) @@ -396,32 +323,25 @@ def sample(folder, variable_condition, fix_noise, nr=4): if __name__ == '__main__': - # init_wandb() - # allow_memory_growth() parser = argparse.ArgumentParser(description='') parser.add_argument('--name', type=str) args = vars(parser.parse_args()) - folder = '/home/workspace/local-data/train_100' - folder_main = 'checkpoints/cvae_18_copy' - folder_curv = 'checkpoints/cvae_curv_3' + folder = '/home/workspace/local-data/train' + variable_condition = 'static' batch_size = 4 smpl = SMPL() - model = CVAEMain(avg_garment_path='custom_data/train_100_no_shape_avg_uv.npy', - latent_dim=128, static_model='checkpoints/ae_static_6_copy', - body_model='checkpoints/ae_body_8_copy', - curvature_model='checkpoints/ae_curvature_7_copy', - freeze_encoders=True) - curv_model = CVAECurv(static_model='checkpoints/ae_static_6_copy', - body_model='checkpoints/ae_body_8_copy',) + model = CVAE(config_main) + curv_model = CVAE(config_curv) + load_model(model, 'checkpoints/' + config_main['name']) + load_model(curv_model, 'checkpoints/' + config_curv['name']) - load_model(model, folder_main) - load_model(curv_model, folder_curv) + frames = ['01763_259', '007292_282', '00539_296', '00761_15'] - sample(folder, variable_condition, fix_noise=True) + sample(folder, frames, variable_condition, fix_noise=True) print() diff --git a/sample_pro_2.py b/sample_pro_2.py new file mode 100644 index 0000000..8512f14 --- /dev/null +++ b/sample_pro_2.py @@ -0,0 +1,466 @@ +import os +os.environ["CUDA_VISIBLE_DEVICES"] = "6" +import tensorflow as tf + +gpus = tf.config.experimental.list_physical_devices('GPU') +if gpus: + try: + # Currently, memory growth needs to be the same across GPUs + for gpu in gpus: + tf.config.experimental.set_memory_growth(gpu, True) + logical_gpus = tf.config.experimental.list_logical_devices('GPU') + print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs") + except RuntimeError as e: + # Memory growth must be set before GPUs have been initialized + print(e) + +import time +import argparse +import wandb +import random +import cv2 +import tqdm +import cmapy as cm +import numpy as np +import scipy as sp +import trimesh as tm +from custom_utils.custom_utils import UV2Mesh, maskFacesBatch, _maskFaces +import plotly.graph_objects as go +import plotly.express as ex +from PIL import Image +from plotly.subplots import make_subplots + +from custom_utils.smpl import SMPL +from custom_utils.custom_utils import load_model +from plotly.subplots import make_subplots +from scipy.spatial.transform import Rotation + +from dataset import DatasetFactory, StaticDataset +from custom_utils.custom_utils import batch_to_dict, UV2Mesh, _maskFaces, load_model, group_inputs_for_levels +from custom_utils.smpl import SMPL +from convert_to_uv_api import convert_to_uv_api +from models.upscaler import UpscalerBasicConv as Upscaler +from postprocessing import fix_collision +from models.pyramid_model_optimized import Pyramid + +# from configs.config_abl_overfit_dress_var_3 import config as config_main +from configs.config_abl_overfit_jumpsuit_2 import config as config_main +from configs.config_cvae_curv import config as config_curv +# from models.cvae_model_overfit_jumpsuit import CVAE +from models.cvae_model import CVAE +from models.cvae_curv_model import CVAE as CVAECurv +from convert_to_uv_api import convert_to_uv_api +from tensorflow_graphics.geometry.representation.mesh.normals import vertex_normals + + +uv2mesh = UV2Mesh(res=256, is_skirt=config_main['is_skirt']) + + +def get_temp_batch(frame, config): + with open(os.path.join(folder, 'frames_temp.txt'), 'w') as f: + f.write(frame) + + config['signature_dynamic']['mesh_curvature'] = (14475) + + factory = DatasetFactory() + dataset = factory.get_dataset(folder=folder, + batch_size=1, + signature=config['signature_dynamic'], + in_memory=config['dataset_in_memory'], + is_cape=config['is_cape'], + frames_file='frames_temp.txt') + static_dataset = StaticDataset(folder=folder, + signature=config['signature_static'], + in_memory=True, + is_cape=config['is_cape']) + + data_iterator = iter(dataset) + batch = data_iterator.get_next() + batch = static_dataset.expand_batch(batch_to_dict(batch, config['signature_dynamic'])) + + return batch + + +def plot_fixed(garment, body, faces, camera, colors=None): + mesh = np.concatenate((body, garment), axis=0) + faces = np.concatenate((F_body, faces + 14475), axis=0).astype(np.int32) + if colors is None: + colors = np.concatenate((np.ones_like(body, dtype=np.int32)*100, np.ones_like(garment, dtype=np.int32)*230), axis=0).astype(np.float32) / 255.0 + else: + colors = np.concatenate((np.ones_like(body, dtype=np.int32)*100 / 255.0, colors), axis=0) + + fig = go.Figure() + + fig.add_trace(go.Mesh3d( + x=mesh[:,0], + y=mesh[:,2], + z=mesh[:,1], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2], + text="", + vertexcolor=colors, + lighting={ 'ambient':0.8, 'diffuse':0.5, 'roughness':0.5 }, + + ),) + + fig.update_layout(scene_aspectmode='manual', scene_aspectratio=dict(x=1, y=1, z=1)) + helper = dict(xaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False), + yaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False), + zaxis = dict(range=[-1,1], showbackground=False, showticklabels=False, showaxeslabels=False, showspikes=False, visible=False),) + fig.update_layout(scene = helper) + + fig.update_layout(scene_camera=camera, width=800, height=1100, autosize=False, + margin=dict(l=0, r=0, b=0, t=0, pad=0) + ) + + return fig + + +def custom_imshow(img): + # fig = ex.imshow(np.flip(img, axis=0)) + fig = ex.imshow(img) + fig.update_layout(margin=dict(l=0, r=0, b=0, t=0, pad=0), width=img.shape[1], height=img.shape[0]) + fig.update_xaxes(visible=False) + fig.update_yaxes(visible=False) + + return fig + + + +def color_labels(img): + colors = np.array([cm.color('jet', 1 - i) for i in np.linspace(0, 1, img.max()+1)]) / 255.0 + color_img = np.zeros((img.shape[0], img.shape[1], 3), np.float32) + for i in range(img.max()+1): + color_img[img == i, :] = colors[i] + + return color_img + +def color_labels_mesh(img): + colors = np.array([cm.color('jet', 1 - i) for i in np.linspace(0, 1, img.max()+1)]) / 255.0 + color_img = np.zeros((img.shape[0], 3), np.float32) + for i in range(img.max()+1): + color_img[img == i, :] = colors[6-i] + + return color_img + + +def curvature_sampling(model: CVAECurv, batch, nr=4): + out = model.sample(tf.tile(batch['uv_static'], [nr,1,1,1]), tf.tile(batch['uv_body_posed'], [nr,1,1,1]), tf.tile(batch['uv_mask'], [nr,1,1])) + + img = np.concatenate(out.numpy(), axis=1) + img = color_labels(img.argmax(-1)) + + custom_imshow(img).show() + + return out + + +def convert_to_normal_uv(mesh, mask): + uv = (convert_to_uv_api(np.squeeze(vertex_normals(mesh, tf.tile(F[None], [1, 1, 1])).numpy()) * mask[:,np.newaxis], mask) + 2) / 4 + return uv + + +def get_posed_mesh(uv, pose_shape, body, mask): + shape = pose_shape[:, 72:] + pose = pose_shape[:, :72] + gender = tf.cast(tf.greater_equal(shape[:, 10] , 0.5), tf.int32) + shape_offsets = tf.stack([tf.gather(tf.tensordot(shape[i,:10][tf.newaxis, :], smpl.shapedirs[gender[i]], axes=[[1], [2]])[0,:,:], smpl.to_keep, axis=0) for i in range(shape.shape[0])]) + + if len(uv.shape) == 3: + mesh = uv2mesh(uv[tf.newaxis,:,:,:]) + else: + mesh = uv2mesh(uv) + + mesh_shaped = mesh + shape_offsets * mask[tf.newaxis,:,tf.newaxis] + mesh_posed = smpl.run_garment(pose, shape, mesh_shaped) + + # mesh_fixed = fix_collision(mesh_posed, body, mask[np.newaxis,:])[0].numpy() + # return mesh_fixed + return mesh_posed + + + +def mm_norm(x): + return (x - x.min()) / (x.max() - x.min()) + + +def sample_with_curvature(model: CVAE, batch, sampled_curvature, nr=4): + noise = tf.random.normal(shape=(1, 128)) + noise = tf.tile(noise, [nr,1]) + out_sampled = model.sample(tf.tile(batch['uv_static'], [nr,1,1,1]), tf.tile(batch['uv_body_posed'], [nr,1,1,1]), sampled_curvature, tf.tile(batch['uv_mask'], [nr,1,1]), noise) + out_orig = model.sample(batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature'], batch['uv_mask'], noise[:1]) + # out_sampled, _, _ = model([tf.tile(batch['uv_unposed'], [nr,1,1,1]), tf.tile(batch['uv_static'], [nr,1,1,1]), tf.tile(batch['uv_body_posed'], [nr,1,1,1]), sampled_curvature, tf.tile(batch['uv_mask'], [nr,1,1])], training=False) + # out_orig, _, _ = model([batch['uv_unposed'], batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature'], batch['uv_mask']], training=False) + + out = tf.concat((out_orig, out_sampled), axis=0) + + mask = batch['mesh_mask'][0].numpy().astype(bool) + + posed_mesh = [get_posed_mesh(uv, batch['pose_shape'], batch['mesh_body_posed'], mask) for uv in tf.unstack(out)] + # posed_mesh = [uv2mesh(uv[tf.newaxis,:,:,:]) for uv in tf.unstack(out)] + + plot_fixed(posed_mesh[0][0].numpy()[mask, :], batch['mesh_body_posed'][0].numpy(), faces, camera_1).show() + + normal_uvs = np.concatenate([convert_to_normal_uv(mesh, mask) for mesh in posed_mesh], axis=1) + + out_img = np.concatenate(out.numpy(), axis=1) + curv_img = color_labels(np.concatenate(np.concatenate((batch['uv_curvature'].numpy(), sampled_curvature), axis=0), axis=1).argmax(-1)) + + img = np.concatenate((curv_img, normal_uvs), axis=0) + custom_imshow(img).show() + + print() + + + +def curv_output_samples(frames): + out = [] + for frame in frames: + batch = get_temp_batch(frame, config_main) + mask = batch['mesh_mask'][0].numpy().astype(bool) + # _, faces = _maskFaces(np.zeros((14475, 3)), F, mask) + curv_img = color_labels(batch['uv_curvature'][0].numpy().argmax(-1)) + pred, _, _ = model([batch['uv_unposed'], batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature'], batch['uv_mask']], training=False) + pred_img = convert_to_normal_uv(uv2mesh(pred), mask) + img = np.concatenate((curv_img, pred_img), axis=0) + # custom_imshow(img).show() + out.append(img) + + return custom_imshow(np.concatenate(out, axis=1)) + + +def curv_output_samples_mesh(frames): + out = [] + for frame in tqdm.tqdm(frames): + batch = get_temp_batch(frame, config_main) + mask = batch['mesh_mask'][0].numpy().astype(bool) + _, faces = _maskFaces(np.zeros((14475, 3)), F, mask) + curv_colors = color_labels_mesh(batch['mesh_curvature'][0].numpy() + np.ones((14475), np.int32) * mask) + pred, _, _ = model([batch['uv_unposed'], batch['uv_static'], batch['uv_body_posed'], batch['uv_curvature'], batch['uv_mask']], training=False) + # pred_mesh = uv2mesh(pred) + + pred_mesh = get_posed_mesh(pred, batch['pose_shape'], batch['mesh_body_posed'], mask) + + body = batch['mesh_body_posed'][0].numpy() + pred_mesh_fixed = postprocess(pred_mesh, body, faces, mask, do_smoothing=False) + + fig = plot_fixed(pred_mesh_fixed, np.zeros_like(body), faces, camera_1) + fig.write_image('/tmp/exp_temp_fasdsavcs.png') + img = cv2.imread('/tmp/exp_temp_fasdsavcs.png') + fig = plot_fixed(pred_mesh_fixed, np.zeros_like(body), faces, camera_1, curv_colors[mask, :]) + fig.write_image('/tmp/exp_temp_fasdsavcs.png') + img_curv = cv2.imread('/tmp/exp_temp_fasdsavcs.png') + + custom_imshow(np.concatenate((img[:,100:-100,:], img_curv[:,100:-100,:]), axis=1)).write_image(os.path.join(out_folder, frame + '_curv.png')) + + # print() + + # return custom_imshow(np.concatenate(out, axis=1)) + + +def get_closest_n_points(verts, idx, n): + dist = sp.spatial.distance.cdist(verts[idx, :], verts) + dist[dist == 0] = 1e9 + idx_sort = np.argsort(dist, axis=-1) + closest = idx_sort[:, :n] + return closest + + +def postprocess(mesh, body, faces, mask, do_smoothing=True): + mesh_fixed = fix_collision(mesh, body[np.newaxis,:,:], mask[np.newaxis,:])[0].numpy()[mask, :] + + if do_smoothing: + m = tm.Trimesh(mesh_fixed, faces, process=False, validate=False) + outliers = np.array([len(v) for v in m.vertex_neighbors]) == 0 + outliers = np.nonzero(outliers)[0] + outliers_n_neighbours = get_closest_n_points(mesh_fixed, outliers, 2) + outliers_faces = np.concatenate((outliers[:, np.newaxis], outliers_n_neighbours), axis=-1) + faces_fixed = np.concatenate((faces, outliers_faces), axis=0) + m = tm.Trimesh(mesh_fixed, faces_fixed, process=False, validate=False) + tm.smoothing.filter_humphrey(m, iterations=1, alpha=0.6, beta=0.4) + + mesh = m.vertices + else: + mesh = mesh_fixed + + return mesh + + +def sampling_example(frame, camera, nr=10): + + batch = get_temp_batch(frame, config_main) + mask = batch['mesh_mask'][0].numpy().astype(bool) + _, faces = _maskFaces(np.zeros((14475, 3)), F, mask) + + noise = tf.random.normal(shape=(nr, 128)) + out = model.sample(tf.tile(batch['uv_static'], [nr,1,1,1]), tf.tile(batch['uv_body_posed'], [nr,1,1,1]), tf.tile(batch['uv_curvature'], [nr,1,1,1]), tf.tile(batch['uv_mask'], [nr,1,1]), noise) + # out,_,_ = model([tf.tile(batch['uv_unposed'], [nr,1,1,1]), tf.tile(batch['uv_static'], [nr,1,1,1]), tf.tile(batch['uv_body_posed'], [nr,1,1,1]), tf.tile(batch['uv_curvature'], [nr,1,1,1]), tf.tile(batch['uv_mask'], [nr,1,1])], training=False) + + + posed_mesh = [get_posed_mesh(uv, batch['pose_shape'], batch['mesh_body_posed'], mask) for uv in tf.unstack(out)] + # posed_mesh = [uv2mesh(uv[tf.newaxis,:,:,:]) for uv in tf.unstack(out)] + gt_mesh = batch['mesh_posed'][0].numpy()[mask, :] + + body = batch['mesh_body_posed'][0].numpy() + posed_mesh_fixed = [postprocess(mesh, body, faces, mask, do_smoothing=False) for mesh in posed_mesh] + # posed_mesh_fixed = [mesh[0].numpy()[mask, :] for mesh in posed_mesh] + + # error = [np.sqrt(((gt_mesh-m) ** 2).sum(-1)).mean() for m in posed_mesh_fixed] + + # row_sampling = [] + # fig = plot_fixed(gt_mesh, body, faces, camera) + # fig.write_image('/tmp/exp_temp_7.png') + # img = cv2.imread('/tmp/exp_temp_7.png') + # row_sampling.append(img[:, 100:700, :]) + # for mesh in posed_mesh_fixed: + # fig = plot_fixed(mesh, body, faces, camera) + # fig.write_image('/tmp/exp_temp_7.png') + # img = cv2.imread('/tmp/exp_temp_7.png') + # row_sampling.append(img[:, 100:700, :]) + + + # custom_imshow(np.concatenate(row_sampling, axis=1)).show() + + plot_fixed(np.zeros_like(gt_mesh), body, faces, camera).write_image(os.path.join(out_folder, frame + '_body.png')) + plot_fixed(gt_mesh, body, faces, camera).write_image(os.path.join(out_folder, frame + '_gt.png')) + for i in range(nr): + plot_fixed(posed_mesh_fixed[i], body, faces, camera).write_image(os.path.join(out_folder, frame + '_' + str(i) + '.png')) + + # custom_imshow(np.concatenate(row_sampling, axis=1)).write_image(os.path.join(out_folder, frame + '_sampling.png')) + print() + + + +def sampling_poses(frame, camera): + nr = 5 + frame_nr = [frame.split('_')[1], '25', '35', '50', '0'] + bodies = np.stack([np.load(os.path.join(folder, 'uv_posed_body_no_orient_2', frame.split('_')[0] + '_' + f_nr + '.npz'))['uv_posed_body_no_orient'] for f_nr in frame_nr]) + bodies_mesh = [np.load(os.path.join(folder, 'mesh_posed_body_no_orient', frame.split('_')[0] + '_' + f_nr + '.npz'))['mesh_posed_body_no_orient'] for f_nr in frame_nr] + batch = get_temp_batch(frame, config_main) + mask = batch['mesh_mask'][0].numpy().astype(bool) + _, faces = _maskFaces(np.zeros((14475, 3)), F, mask) + + noise = tf.random.normal(shape=(1, 128)) + noise = tf.tile(noise, [nr,1]) + + out = model.sample(tf.tile(batch['uv_static'], [nr,1,1,1]), bodies, tf.tile(batch['uv_curvature'], [nr,1,1,1]), tf.tile(batch['uv_mask'], [nr,1,1]), noise) + + # posed_mesh = [get_posed_mesh(uv, batch['pose_shape'], batch['mesh_body_posed'], mask) for uv in tf.unstack(out)] + posed_mesh = [uv2mesh(uv[tf.newaxis,:,:,:]) for uv in tf.unstack(out)] + + # body = batch['mesh_body_posed'][0].numpy() + posed_mesh_fixed = [postprocess(mesh, body, faces, mask, do_smoothing=False) for mesh, body in zip(posed_mesh, bodies_mesh)] + + + row_sampling = [] + for mesh, body in zip(posed_mesh_fixed, bodies_mesh): + fig = plot_fixed(mesh, body, faces, camera) + fig.write_image('/tmp/exp_temp_7.png') + img = cv2.imread('/tmp/exp_temp_7.png') + row_sampling.append(img[:, 100:700, :]) + + + custom_imshow(np.concatenate(row_sampling, axis=1)).show() + + print() + + + +def sampling_garment(frame, camera): + nr = 5 + frame_nr = [frame.split('_')[0], '03265', '02869', '00300', '01763'] + templates = np.stack([np.load(os.path.join(folder, 'uv_static', f_nr + '.npz'))['uv_static'] for f_nr in frame_nr]) + # bodies_mesh = [np.load(os.path.join(folder, 'mesh_posed_body_no_orient', frame.split('_')[0] + '_' + f_nr + '.npz'))['mesh_posed_body_no_orient'] for f_nr in frame_nr] + masks = np.stack([np.load(os.path.join(folder, 'mesh_mask', f_nr + '.npy'))['uv_static'] for f_nr in frame_nr]) + batch = get_temp_batch(frame, config_main) + mask = batch['mesh_mask'][0].numpy().astype(bool) + _, faces = _maskFaces(np.zeros((14475, 3)), F, mask) + + noise = tf.random.normal(shape=(1, 128)) + noise = tf.tile(noise, [nr,1]) + + out = model.sample(templates, tf.tile(batch['uv_body_posed'], [nr,1,1,1]), tf.tile(batch['uv_curvature'], [nr,1,1,1]), tf.tile(batch['uv_mask'], [nr,1,1]), noise) + + # posed_mesh = [get_posed_mesh(uv, batch['pose_shape'], batch['mesh_body_posed'], mask) for uv in tf.unstack(out)] + posed_mesh = [uv2mesh(uv[tf.newaxis,:,:,:]) for uv in tf.unstack(out)] + + body = batch['mesh_body_posed'][0].numpy() + posed_mesh_fixed = [postprocess(mesh, body, faces, mask, do_smoothing=False) for mesh, mask in zip(posed_mesh, masks)] + + + row_sampling = [] + for mesh in posed_mesh_fixed: + fig = plot_fixed(mesh, body, faces, camera) + fig.write_image('/tmp/exp_temp_7.png') + img = cv2.imread('/tmp/exp_temp_7.png') + row_sampling.append(img[:, 100:700, :]) + + + custom_imshow(np.concatenate(row_sampling, axis=1)).show() + + print() + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='') + parser.add_argument('--name', type=str) + args = vars(parser.parse_args()) + + smpl = SMPL() + F = np.load("custom_utils/smpl_faces.npy") + # F = np.load("custom_utils/smpl_faces_skirt.npy") + F_body = np.load("custom_utils/smpl_faces.npy") + # folder = os.path.join('/home/workspace/data/dataset', ('test_skirt_ready_2' if is_skirt else 'test_ready')) + # folder = os.path.join('/home/workspace/local-data/train_skirt') + folder = os.path.join('/home/workspace/local-data/train') + + + model = CVAE(config_main) + curv_model = CVAECurv(config_curv) + + load_model(model, 'checkpoints/' + config_main['name']) + load_model(curv_model, 'checkpoints/' + config_curv['name']) + + camera_1 = dict(up=dict(x=0, y=0, z=1), center=dict(x=0, y=0, z=-0.05), eye=dict(x=0.3, y=1.0, z=0.05)) + # faces_folder = '/home/workspace/data/results/support/faces' + # faces = np.load(os.path.join(faces_folder, '01763' + '.npy')) + + + + frame = '00761_150' + body_frames = ['01763_259' , '007292_282'] + curv_frames = ['01763_259' , '007292_282'] + static_frames = ['01763_259' , '007292_282'] + + with open('/home/workspace/local-data/train_skirt/frames_dress_30k.txt') as f: + frames = f.readlines() + + random.shuffle(frames) + frames = [frame.strip() for frame in frames] + frames = frames[:150] + + # input_batch = get_temp_batch(frame, config_main) + # _, faces = _maskFaces(np.zeros((14475, 3)), F, input_batch['mesh_mask'][0].numpy().astype(bool)) + + # sample_with_curvature(model, input_batch, sampled_curvature) + + # out_folder = '/home/workspace/data/results/curv_pred_plots_skirt' + # out_folder = '/home/workspace/local-data/results/curv_pred_plots_skirt' + # os.makedirs(out_folder, exist_ok=True) + # curv_output_samples_mesh(frames) + + # frame = '01082_109' + # camera_01082_109 = dict(up=dict(x=0.0, y=0, z=1), center=dict(x=-0.15, y=0, z=-0.05), eye=dict(x=0.9, y=0.8, z=-0.1)) + # frame = '04925_272' + + frames = ['01070_13'] + out_folder = '/home/workspace/local-data/results/sampling_plots_jumpsuits' + os.makedirs(out_folder, exist_ok=True) + for frame in tqdm.tqdm(frames): + sampling_example(frame, camera_1) + + # sampling_poses(frame, camera_01082_109) + # sampling_garment(frame, camera_1) + + + print() diff --git a/test.py b/test.py new file mode 100644 index 0000000..9a4b4fc --- /dev/null +++ b/test.py @@ -0,0 +1,27 @@ +import time +import numpy as np + +start = time.perf_counter() +b = np.random.rand(512,256).astype(np.float32) +c = np.tile(b[np.newaxis,:,:,np.newaxis], [100,1,1,3]) +print(time.perf_counter() - start) + + +start = time.perf_counter() +e = np.random.rand(512,256).astype(np.float32) +f = np.ones((100,512,256,3)) * b[np.newaxis,:,:,np.newaxis] +print(time.perf_counter() - start) + +print() + +# start = time.perf_counter() +# a = a * b[np.newaxis,:,:,np.newaxis] +# print(time.perf_counter() - start) + +# start = time.perf_counter() +# d = a * b[np.newaxis,:,:,np.newaxis] +# print(time.perf_counter() - start) + +# start = time.perf_counter() +# a *= c +# print(time.perf_counter() - start) diff --git a/train.py b/train.py index fdee5c5..59bb394 100644 --- a/train.py +++ b/train.py @@ -600,7 +600,7 @@ def main(): # dataset = DatasetSimple('/home/workspace/data/dataset/stylegan_new/train').cache().batch(global_batch_size, drop_remainder=True).repeat() factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), 'pose_shape': (72 + 11,), # 'uv_posed': (3, 512, 256,), # 'uv_body_posed': (3, 512, 256,), diff --git a/unif_metric.py b/unif_metric.py new file mode 100644 index 0000000..e30c9f7 --- /dev/null +++ b/unif_metric.py @@ -0,0 +1,39 @@ +import numpy as np +from scipy.spatial import KDTree +import trimesh + + +eps = 1e-10 + + +def chamfer_and_score(pts_gt, mesh_pred, tau=1e-2): + """ + Compute a symmetric chamfer distance, i.e. the sum of both chamfers. + pts_gt: numpy.array of ground-truth points. + pts_pred: numpy.array of sampled points from the extracted surface. + """ + # num_sample = pts_gt.shape[0] + # pts_pred = trimesh.sample.sample_surface(mesh_pred, num_sample)[0].astype(np.float32) + + pts_pred = mesh_pred + + # gt2pred + pts_pred_kdtree = KDTree(pts_pred) + gt2pred_chamfer, gt2pred_vertex_ids = pts_pred_kdtree.query(pts_gt) + + # pred2gt + pts_gt_kdtree = KDTree(pts_gt) + pred2gt_chamfer, pred2gt_vertex_ids = pts_gt_kdtree.query(pts_pred) + + # point to surface distance + pt2surf = gt2pred_chamfer.mean() + + # symmetric chamfer distance + sym_chamfer = (gt2pred_chamfer.mean() + pred2gt_chamfer.mean()) / 2 + + # Fscore + prec_tau = (pred2gt_chamfer <= tau).mean() + recall_tau = (gt2pred_chamfer <= tau).mean() + f_score = (2 * prec_tau * recall_tau) / max(prec_tau + recall_tau, eps) + + return pt2surf*1000, sym_chamfer*1000, recall_tau*100, f_score*100 \ No newline at end of file diff --git a/unpose_one_hot.py b/unpose_one_hot.py index d96091f..b2c3180 100644 --- a/unpose_one_hot.py +++ b/unpose_one_hot.py @@ -14,7 +14,7 @@ from tqdm import tqdm from custom_utils.custom_utils import maskFacesBatch, _maskFaces -os.environ["CUDA_VISIBLE_DEVICES"] = "1" +os.environ["CUDA_VISIBLE_DEVICES"] = "2" import tensorflow as tf gpus = tf.config.experimental.list_physical_devices('GPU') if gpus: @@ -136,7 +136,7 @@ def smpl_run_backward_wrapper(Rt, J, posed): if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument("-f", "--folder", help = "end of range", default='/home/workspace/data/dataset/test_skirt') + parser.add_argument("-f", "--folder", help = "end of range", default='/home/workspace/data/dataset/train_skirt') parser.add_argument("-s", "--start", help = "start of range", default=0) parser.add_argument("-e", "--end", help = "end of range", default=1500) parser.add_argument("-n", "--name", help = "end of range", default='lhunor') @@ -174,9 +174,10 @@ if __name__ == '__main__': if is_skirt: pose_dress = np.copy(pose) - p_avg = (pose[:, 3:6] + pose[:, 6:9]) / 2 + pose_dress = np.transpose(pose_dress, [1,0]) + p_avg = (pose_dress[:, 3:6] + pose_dress[:, 6:9]) / 2 pose_dress[:,3:9] = np.concatenate([p_avg, p_avg], axis=-1) - R = smpl.run_rodrigues(np.transpose(pose_dress, [1,0])).numpy() + R = smpl.run_rodrigues(pose_dress).numpy() for b in range(frames): R[b][[4,5,7,8,10,11],:,:] = np.eye(3) else: @@ -184,6 +185,8 @@ if __name__ == '__main__': Rt = tf.transpose(R, [0, 1, 3, 2]) T_body, J, _ = smpl_run_wrapper(R, shape) + + #test # zero_body = smpl_run_wrapper(smpl.run_rodrigues(np.zeros((1, 72), np.float32)), shape[:1, :])[0][0].numpy() diff --git a/upscale_test.py b/upscale_test.py index 93395d5..2e5b6e1 100644 --- a/upscale_test.py +++ b/upscale_test.py @@ -1,5 +1,5 @@ import os -os.environ["CUDA_VISIBLE_DEVICES"] = "4" +os.environ["CUDA_VISIBLE_DEVICES"] = "6" import tensorflow as tf gpus = tf.config.experimental.list_physical_devices('GPU') @@ -35,7 +35,7 @@ from models.upscaler import UpscalerBasicConv as Upscaler # !!!!!!!!!! CHANGE SSIM BASED ON RES # !!!!!!!!!! CHANGE SKIRT OR NOT -name='128_512_skirt' +name='256_512_skirt' def init_wandb(): run = wandb.init(project='upscale', name=name, notes='\ @@ -105,7 +105,7 @@ def plot_3d(mesh_gt, mesh_pred_unposed, faces): return fig -@tf.function +# @tf.function def train_step(batch): with tf.GradientTape() as tape: pred = model([batch['uv_unposed' + low_resolution_modifier], batch['uv_mask' + low_resolution_modifier]], training=True) @@ -182,7 +182,7 @@ def train(): valid_loss = valid_step(data_valid) to_log = { **train_loss, **valid_loss, **{ 'current_step': step} } - if step % 5000 == 0 or (step < 5000 and step % 500 == 0): + if step % 10000 == 0 or (step < 2000 and step % 500 == 0): train_figs = plot_everything(batch, 'train') valid_figs = plot_everything(data_valid, 'valid') to_log = { **to_log, **train_figs, **valid_figs } @@ -204,7 +204,7 @@ def train(): step += 1 if __name__ == '__main__': - init_wandb() + # init_wandb() allow_memory_growth() parser = argparse.ArgumentParser(description='') parser.add_argument('--name', type=str) @@ -214,14 +214,14 @@ if __name__ == '__main__': # uv_mask_body = np.load('custom_utils/mask_256x512.npy') # uv_mask_body = cv2.dilate(uv_mask_body.astype(np.float32), cv2.getStructuringElement(cv2.MORPH_RECT, (2 * 2 + 1, 2 * 2 + 1), (2, 2)), iterations=2) - low_res = 128 + low_res = 32 high_res = 512 uv_mask_body = tf.ones((low_res, low_res//2)) low_resolution_modifier = '_' + str(low_res) high_resolution_modifier = ('_' + str(high_res)) if high_res != 512 else '' factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), 'pose_shape': (72 + 11,), 'uv_unposed' + low_resolution_modifier: (low_res, low_res//2, 3), 'uv_unposed' + high_resolution_modifier: (high_res, high_res//2, 3), @@ -234,24 +234,24 @@ if __name__ == '__main__': 'uv_mask' + low_resolution_modifier: (low_res, low_res//2,), } - dataset_train = factory.get_dataset(folder='/home/workspace/local-data/train_skirt', batch_size=8, signature=signature_dynamic, use_filled=False, resolutions=[high_res, low_res], in_memory=False, is_cape=is_cape) - static_dataset_train = StaticDataset(folder='/home/workspace/local-data/train_skirt', signature=signature_static, use_filled=False, resolutions=[high_res, low_res], in_memory=True, is_cape=is_cape) - dataset_valid = factory.get_dataset(folder='/home/workspace/local-data/valid_skirt', batch_size=8, signature=signature_dynamic, use_filled=False, resolutions=[high_res, low_res], in_memory=False, is_cape=is_cape) - static_dataset_valid = StaticDataset(folder='/home/workspace/local-data/valid_skirt', signature=signature_static, use_filled=False, resolutions=[high_res, low_res], in_memory=True, is_cape=is_cape) + dataset_train = factory.get_dataset(folder='/home/workspace/local-data/train', batch_size=8, signature=signature_dynamic, resolutions=[high_res, low_res], in_memory=False, is_cape=is_cape) + static_dataset_train = StaticDataset(folder='/home/workspace/local-data/train', signature=signature_static, resolutions=[high_res, low_res], in_memory=True, is_cape=is_cape) + dataset_valid = factory.get_dataset(folder='/home/workspace/local-data/valid_skirt', batch_size=8, signature=signature_dynamic,resolutions=[high_res, low_res], in_memory=False, is_cape=is_cape) + static_dataset_valid = StaticDataset(folder='/home/workspace/local-data/valid_skirt', signature=signature_static, resolutions=[high_res, low_res], in_memory=True, is_cape=is_cape) - # dataset_train = factory.get_dataset(folder='/home/workspace/local-data/cape_processed/train/female', batch_size=8, signature=signature_dynamic, use_filled=False, resolutions=[high_res, low_res], in_memory=False, is_cape=is_cape) - # static_dataset_train = StaticDataset(folder='/home/workspace/local-data/cape_processed/train/female', signature=signature_static, use_filled=False, resolutions=[high_res, low_res], in_memory=True, is_cape=is_cape) - # dataset_valid = factory.get_dataset(folder='/home/workspace/local-data/cape_processed/test/female', batch_size=8, signature=signature_dynamic, use_filled=False, resolutions=[high_res, low_res], in_memory=False, is_cape=is_cape) - # static_dataset_valid = StaticDataset(folder='/home/workspace/local-data/cape_processed/test/female', signature=signature_static, use_filled=False, resolutions=[high_res, low_res], in_memory=True, is_cape=is_cape) + # dataset_train = factory.get_dataset(folder='/home/workspace/local-data/cape_processed/train/male', batch_size=8, signature=signature_dynamic, resolutions=[high_res, low_res], in_memory=False, is_cape=is_cape) + # static_dataset_train = StaticDataset(folder='/home/workspace/local-data/cape_processed/train/male', signature=signature_static, resolutions=[high_res, low_res], in_memory=True, is_cape=is_cape) + # dataset_valid = factory.get_dataset(folder='/home/workspace/local-data/cape_processed/test/male', batch_size=8, signature=signature_dynamic, resolutions=[high_res, low_res], in_memory=False, is_cape=is_cape) + # static_dataset_valid = StaticDataset(folder='/home/workspace/local-data/cape_processed/test/male', signature=signature_static, resolutions=[high_res, low_res], in_memory=True, is_cape=is_cape) - model = Upscaler(low_res=low_res, kernel_size=5) + model = Upscaler(low_res=low_res, kernel_size=3) optimizer = tf.optimizers.Adam(learning_rate=0.0001) folder = 'models/ae_logs/' ckpt = tf.train.Checkpoint(model=model) manager = tf.train.CheckpointManager(ckpt, 'checkpoints/' + name, max_to_keep=20) - # load_model(model, 'checkpoints/up_2_3') + load_model(model, 'checkpoints/32_512_4') train() \ No newline at end of file diff --git a/vae.py b/vae.py index 72366bf..d4e6448 100644 --- a/vae.py +++ b/vae.py @@ -302,7 +302,7 @@ if __name__ == '__main__': smpl = SMPL() factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), 'pose_shape': (72 + 11,), # 'uv_posed': (3, 512, 256,), # 'uv_body_posed': (3, 512, 256,), diff --git a/verify_data.py b/verify_data.py index 6275018..9c0e524 100644 --- a/verify_data.py +++ b/verify_data.py @@ -1,4 +1,5 @@ import os +os.environ["CUDA_VISIBLE_DEVICES"] = "6" import sys import time import cv2 @@ -12,18 +13,17 @@ import plotly.express as ex from dataset import DatasetFactory, StaticDataset from custom_utils.custom_utils import batch_to_dict, UV2Mesh, _maskFaces from custom_utils.smpl import SMPL +from convert_to_uv_api import convert_to_uv_api if __name__ == '__main__': - os.environ["CUDA_VISIBLE_DEVICES"] = "6" uv2mesh = UV2Mesh() - smpl = SMPL() F = np.load("custom_utils/smpl_faces.npy") factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), # 'pose_shape': (72 + 11,), 'uv_posed': (512, 256, 3), 'uv_body_posed': (512, 256, 3), @@ -42,10 +42,10 @@ if __name__ == '__main__': # 'uv_shaped_body': (3, 512, 256,), } - dataset = factory.get_dataset(folder='/home/workspace/local-data/train_100', + dataset = factory.get_dataset(folder='/home/workspace/local-data/train', batch_size=1, signature=signature_dynamic) - static_dataset = StaticDataset(folder='/home/workspace/local-data/train_100', + static_dataset = StaticDataset(folder='/home/workspace/local-data/train', signature=signature_static) @@ -60,10 +60,9 @@ if __name__ == '__main__': uv_posed = (np.squeeze(batch['uv_posed'].numpy()) + 1) / 2 uv_body_posed = (np.squeeze(batch['uv_body_posed'].numpy()) + 1) / 2 uv_unposed = (np.squeeze(batch['uv_unposed'].numpy()) + 1) / 2 - uv_curvature = np.tile(np.squeeze(batch['uv_curvature'].numpy())[:,:,np.newaxis], [1,1,3]) / 6 + uv_curvature = np.tile(np.argmax(np.squeeze(batch['uv_curvature'].numpy()), axis=-1)[:,:,np.newaxis], [1,1,3]) / 6 uv_static = (np.squeeze(batch['uv_static'].numpy()) + 1) / 2 - img = np.concatenate([uv_posed, uv_body_posed, uv_unposed, uv_curvature, uv_static], axis=1) ex.imshow(img).show() diff --git a/verify_normal_plotting.py b/verify_normal_plotting.py new file mode 100644 index 0000000..ea0fefd --- /dev/null +++ b/verify_normal_plotting.py @@ -0,0 +1,80 @@ +import os +os.environ["CUDA_VISIBLE_DEVICES"] = "6" +import sys +import time +import cv2 +import random +import numpy as np +import tensorflow as tf +import cmapy as cm +import plotly.graph_objects as go +import plotly.express as ex + +from dataset import DatasetFactory, StaticDataset +from custom_utils.custom_utils import batch_to_dict, UV2Mesh, _maskFaces +from custom_utils.smpl import SMPL +from convert_to_uv_api import convert_to_uv_api +from tensorflow_graphics.geometry.representation.mesh.normals import vertex_normals + + +if __name__ == '__main__': + + uv2mesh = UV2Mesh() + + F = np.load("custom_utils/smpl_faces.npy") + + factory = DatasetFactory() + signature_dynamic = { 'id': (), 'frame_nr': (), + # 'pose_shape': (72 + 11,), + 'uv_posed': (512, 256, 3), + 'uv_body_posed': (512, 256, 3), + 'mesh_body_posed': (14475, 3,), + 'mesh_posed': (14475, 3,), + 'mesh_unposed': (14475, 3,), + 'uv_unposed': (512, 256, 3), + 'uv_curvature': (512, 256, 7), + # 'mesh_curvature': (14475) + } + signature_static = { 'uv_static': (512, 256, 3), + 'mesh_static': (14475, 3,), + 'mesh_mask': (14475,), + # 'uv_mask': (512, 256,), + # 'uv_shaped_body': (3, 512, 256,), + } + + dataset = factory.get_dataset(folder='/home/workspace/local-data/train', + batch_size=1, + signature=signature_dynamic, + testing=True, + shuffle=True) + static_dataset = StaticDataset(folder='/home/workspace/local-data/train', + signature=signature_static) + + + uv_res = 256 + + + + for i, batch in enumerate(dataset): + print(i) + batch = static_dataset.expand_batch(batch_to_dict(batch, signature_dynamic)) + + mask = np.squeeze(batch['mesh_mask'].numpy()).astype(bool) + + # vertex_normals(batch['mesh_posed'], tf.tile(F[None], [1, 1, 1])) + # vertex_normals(batch['mesh_body_posed'], tf.tile(F[None], [1, 1, 1])) + # vertex_normals(batch['mesh_unposed'], tf.tile(F[None], [1, 1, 1])) + # vertex_normals(batch['mesh_static'], tf.tile(F[None], [1, 1, 1])) + + + uv_norm_posed = (convert_to_uv_api(np.squeeze(vertex_normals(batch['mesh_posed'], tf.tile(F[None], [1, 1, 1])).numpy()) * mask[:,np.newaxis], mask) + 2) / 4 + uv_norm_body_posed = (convert_to_uv_api(np.squeeze(vertex_normals(batch['mesh_body_posed'], tf.tile(F[None], [1, 1, 1])).numpy()), np.ones((14475), bool)) + 2) / 4 + uv_norm_unposed = (convert_to_uv_api(np.squeeze(vertex_normals(batch['mesh_unposed'], tf.tile(F[None], [1, 1, 1])).numpy()) * mask[:,np.newaxis], mask) + 2) / 4 + uv_curvature = np.tile(np.argmax(np.squeeze(batch['uv_curvature'].numpy()), axis=-1)[:,:,np.newaxis], [1,1,3]) / 6 + uv_norm_static = (convert_to_uv_api(np.squeeze(vertex_normals(batch['mesh_static'], tf.tile(F[None], [1, 1, 1])).numpy()) * mask[:,np.newaxis], mask) + 2) / 4 + + img = np.concatenate([uv_norm_posed, uv_norm_body_posed, uv_norm_unposed, uv_curvature, uv_norm_static], axis=1) + + ex.imshow(img).show() + + print() \ No newline at end of file diff --git a/verify_scales.py b/verify_scales.py index 1389f96..df45209 100644 --- a/verify_scales.py +++ b/verify_scales.py @@ -22,7 +22,7 @@ if __name__ == '__main__': F = np.load("custom_utils/smpl_faces.npy") factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), 'pose_shape': (72 + 11,), # 'uv_posed': (3, 512, 256,), # 'uv_body_posed': (3, 512, 256,), diff --git a/verify_skirt_unposing.py b/verify_skirt_unposing.py new file mode 100644 index 0000000..d93fe5b --- /dev/null +++ b/verify_skirt_unposing.py @@ -0,0 +1,173 @@ +import os + +import os +os.environ["CUDA_VISIBLE_DEVICES"] = '5' +import tensorflow as tf + +gpus = tf.config.experimental.list_physical_devices('GPU') +if gpus: + try: + # Currently, memory growth needs to be the same across GPUs + for gpu in gpus: + tf.config.experimental.set_memory_growth(gpu, True) + logical_gpus = tf.config.experimental.list_logical_devices('GPU') + print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs") + except RuntimeError as e: + # Memory growth must be set before GPUs have been initialized + print(e) + + +import sys +import time +import cv2 +import random +import numpy as np +import cmapy as cm +import plotly.graph_objects as go +import plotly.express as ex + +from dataset import DatasetFactory, StaticDataset +from custom_utils.custom_utils import batch_to_dict, UV2Mesh, _maskFaces +from custom_utils.smpl import SMPL + +if __name__ == '__main__': + os.environ["CUDA_VISIBLE_DEVICES"] = "4" + + uv2mesh = UV2Mesh() + smpl = SMPL(is_skirt=True, use_one_hot=True) + + F = np.load("custom_utils/smpl_faces_skirt.npy") + + factory = DatasetFactory() + signature_dynamic = { 'id': (), 'frame_nr': (), + 'pose_shape': (72 + 11,), + # 'uv_posed': (3, 512, 256,), + # 'uv_body_posed': (3, 512, 256,), + # 'mesh_body_posed': (14475, 3,), + # 'mesh_posed_body_no_orient': (14475, 3,), + 'mesh_posed': (14475, 3,), + 'mesh_unposed': (14475, 3,), + # 'uv_unposed': (3, 512, 256,), + # 'uv_curvature': (512, 256), + # 'mesh_curvature': (14475) + } + signature_static = { #'uv_static': (3, 512, 256,), + # 'mesh_static': (14475, 3,), + 'mesh_mask': (14475,), + # 'uv_mask': (512, 256,), + # 'uv_shaped_body': (3, 512, 256,), + } + + dataset = factory.get_dataset(folder='/home/workspace/local-data/train_skirt', + batch_size=1, + signature=signature_dynamic, + resolutions=[512], + use_no_orient=False, + use_one_hot=True) + static_dataset = StaticDataset(folder='/home/workspace/local-data/train_skirt', + signature=signature_static, + resolutions=[512]) + + + uv_res = 256 + + + + for i, batch in enumerate(dataset): + print(i) + batch = static_dataset.expand_batch(batch_to_dict(batch, signature_dynamic)) + + mesh_unposed = np.squeeze(batch['mesh_unposed'].numpy()) + mask = np.squeeze(batch['mesh_mask'].numpy()).astype(bool) + pose, shape = batch['pose_shape'][:, :72].numpy(), batch['pose_shape'][:, 72:].numpy() + gender = tf.cast(tf.greater_equal(shape[:, 10] , 0.5), tf.int32) + shape_offsets = tf.stack([tf.gather(tf.tensordot(shape[i,:10][tf.newaxis, :], smpl.shapedirs[gender[i]], axes=[[1], [2]])[0,:,:], smpl.to_keep, axis=0) for i in range(shape.shape[0])]).numpy() + mesh_unposed_shaped = batch['mesh_unposed'] + shape_offsets * batch['mesh_mask'][:,:,tf.newaxis] + mesh_reposed = smpl.run_garment(pose, shape, mesh_unposed_shaped).numpy()[0] + mesh_posed = np.squeeze(batch['mesh_posed'].numpy()) + + + # x = smpl.run(smpl.run_rodrigues(pose), shape)[0][0] + x = mesh_reposed[mask, :] + y = mesh_posed[mask, :] + _, faces = _maskFaces(np.zeros((14475, 3), dtype=np.float32), F, mask) + go.Figure(data=[ + go.Mesh3d( + x=x[:,0], + y=x[:,1], + z=x[:,2], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2] + ), + go.Mesh3d( + x=y[:,0], + y=y[:,1], + z=y[:,2], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2] + ) + ]).show() + + x = mesh_unposed_shaped.numpy()[0, mask, :] + go.Figure(data=[ + go.Mesh3d( + x=x[:,0], + y=x[:,1], + z=x[:,2], + i = faces[:,0], + j = faces[:,1], + k = faces[:,2] + ) + ]).show() + + # pose_2 = pose.copy() + # pose_2[:, :3] = 0 + # # x = smpl.run(smpl.run_rodrigues(pose_2), shape)[0][0] + # x = mesh_unposed + # y = mesh_posed_body_no_orient + # _, faces = _maskFaces(np.zeros((14475, 3), dtype=np.float32), F, mask) + # go.Figure(data=[ + # go.Mesh3d( + # # 8 vertices of a cube + # x=x[:,0], + # y=x[:,1], + # z=x[:,2], + # # i, j and k give the vertices of triangles + # i = F[:,0], + # j = F[:,1], + # k = F[:,2] + # ), + # go.Mesh3d( + # # 8 vertices of a cube + # x=y[:,0], + # y=y[:,1], + # z=y[:,2], + # i = F[:,0], + # j = F[:,1], + # k = F[:,2] + # )]).show() + + # x = mesh_posed[mask, :] + # y = mesh_reposed[mask, :] + # _, faces = _maskFaces(np.zeros((14475, 3), dtype=np.float32), F, mask) + # go.Figure(data=[ + # go.Mesh3d( + # x=x[:,0], + # y=x[:,1], + # z=x[:,2], + # i = faces[:,0], + # j = faces[:,1], + # k = faces[:,2] + # ), + # go.Mesh3d( + # x=y[:,0], + # y=y[:,1], + # z=y[:,2], + # i = faces[:,0], + # j = faces[:,1], + # k = faces[:,2] + # )]).show() + + print() \ No newline at end of file diff --git a/verify_uv_mapping.py b/verify_uv_mapping.py index 2d52cf2..4e29088 100644 --- a/verify_uv_mapping.py +++ b/verify_uv_mapping.py @@ -21,7 +21,7 @@ if __name__ == '__main__': F = np.load("custom_utils/smpl_faces.npy") factory = DatasetFactory() - signature_dynamic = { 'id': (), + signature_dynamic = { 'id': (), 'frame_nr': (), # 'pose_shape': (72 + 11,), # 'uv_posed': (3, 512, 256,), # 'uv_body_posed': (3, 512, 256,),