From 8231895dbc8a1133c2db803f7c2e599950375465 Mon Sep 17 00:00:00 2001 From: dizzyi Date: Wed, 18 Aug 2021 15:13:33 +0800 Subject: [PATCH 01/19] Added VisualManager --- robosuite/demos/demo_binPicking.py | 4 + robosuite/demos/demo_random_action.py | 71 +++++- robosuite/environments/robot_env.py | 23 +- robosuite/utils/visual/VisualManager.py | 284 ++++++++++++++++++++++++ 4 files changed, 375 insertions(+), 7 deletions(-) create mode 100644 robosuite/demos/demo_binPicking.py create mode 100644 robosuite/utils/visual/VisualManager.py diff --git a/robosuite/demos/demo_binPicking.py b/robosuite/demos/demo_binPicking.py new file mode 100644 index 0000000000..6d4699b846 --- /dev/null +++ b/robosuite/demos/demo_binPicking.py @@ -0,0 +1,4 @@ +import robosuite as suite +from robosuite.environments.manipulation import bin_picking + +env = bin_picking() \ No newline at end of file diff --git a/robosuite/demos/demo_random_action.py b/robosuite/demos/demo_random_action.py index fc7aebe4d3..bc44864999 100644 --- a/robosuite/demos/demo_random_action.py +++ b/robosuite/demos/demo_random_action.py @@ -1,6 +1,8 @@ from robosuite.controllers import load_controller_config from robosuite.utils.input_utils import * +from robosuite.utils.visual.VisualManager import VisualManager + if __name__ == "__main__": @@ -49,20 +51,79 @@ # initialize the task env = suite.make( **options, - has_renderer=True, - has_offscreen_renderer=False, + has_renderer=False, + has_offscreen_renderer=True, ignore_done=True, - use_camera_obs=False, + use_camera_obs=True, control_freq=20, + #camera_names = ['agentview','agentview2'] ) env.reset() - env.viewer.set_camera(camera_id=0) + #env.set_camera(camera_id=0) # Get action limits low, high = env.action_spec + eye = VisualManager( + preprocessor_kwarg = dict( + MODEL_ROOT = '/home/dizzyi/GNN/detectron/tutorial/output' + ), + imagesaver_kwarg = dict( + save_mode = True, + save_freq = 100, + IMAGE_DIR = './imagesave' + ) + ) + + from PIL import Image + import time # do visualization for i in range(1000): + #delta = time.time() action = np.random.uniform(low, high) obs, reward, done, _ = env.step(action) - env.render() + + feature_vectors = eye(obs['agentview_image'],env) + + ''' + + img = Image.fromarray(img).rotate(180) + segment = Image.fromarray(seg).rotate(180) + + objects = {} + for i in seg.reshape(-1,3): + name = env.sim.model.geom_id2name(i[1]) + objects[i[1]] = name + + for k, v in sorted(objects.items()): print(k, v.split("_") if v is not None else v) + + # objects [id] => name + # ids list of M id + ids = np.unique(seg) + #ids = np.array(list(filter(lambda id: objects[id] != None, ids))) + + # mask (256,256,1) with M ID + _,mask,_ = np.split(seg,3,axis=2) + + # mask[np.newaxis] ==> ( 1, 256, 256, 1) + # ids[:, np.newaxis, np.newaxis, np.newaxis] ==> ( M, 1, 1, 1) + # L Broadcastable + + # masks ==> (M, 256, 256, 1) + masks = ( mask[np.newaxis] == ids[:, np.newaxis, np.newaxis, np.newaxis]).squeeze().astype(np.uint8) + #masks = np.array(list( filter( lambda m: m.sum() > 100, masks ) )) outdated + masks = masks * 255 + + + + img.save('./image.png') + segment.save('./segment.png') + + for ind, msk in enumerate( masks ): + seg_png = Image.fromarray(msk,mode='L').rotate(180) + seg_png.save(f'./seg/{ids[ind]}-{objects[ids[ind]]}.png') + print(ind) + ''' + print('end loop') + #print(time.time()-delta) + #env.render() diff --git a/robosuite/environments/robot_env.py b/robosuite/environments/robot_env.py index 2b3f77b41b..98594e9c06 100644 --- a/robosuite/environments/robot_env.py +++ b/robosuite/environments/robot_env.py @@ -361,12 +361,31 @@ def camera_rgb(obs_cache): height=cam_h, depth=cam_d, ) + ###################################################################################### + # Added to get render images as segmentation also + img_seg = self.sim.render( + camera_name=cam_name, + width=cam_w, + height=cam_h, + depth=cam_d, + segmentation=True + ) + img_seg = np.concatenate( (img_seg, np.zeros( (256,256,1), dtype=np.uint8) ), axis=2 ) + ###################################################################################### if cam_d: rgb, depth = img obs_cache[depth_sensor_name] = np.expand_dims(depth[::convention], axis=-1) - return rgb[::convention] + + ################################################################################## + + return (rgb[::convention], img_seg[::convention]) + ################################################################################## else: - return img[::convention] + + ################################################################################## + # Modified to return (2, 256, 256, 3) (rgb, seg) + return (img[::convention], img_seg[::convention]) + ################################################################################## sensors.append(camera_rgb) names.append(rgb_sensor_name) diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py new file mode 100644 index 0000000000..9c84415982 --- /dev/null +++ b/robosuite/utils/visual/VisualManager.py @@ -0,0 +1,284 @@ +import os +import pickle +from PIL import Image +import time + +import numpy as np +import torch +import torch.nn as nn + +from detectron2.engine import DefaultPredictor + +################################################################ +''' +README + +# VisualManager + # constructor + eyes = VisualManager( + preprocessor_kwarg = dict( + ... + ), + imagesaver_kwarg = dict( + ... + ) + ) + + # use + feature_vectors = eyes(obs['agentview_image'],env) + + ! obs can have any other camera name + ! must be passed for annotation purposes + + +# Preprocessor + # constructor + preprocessor = Preprocessor( + MODEL_ROOT = '{MODEL_ROOT}', <= The Root directory of the model + mask_size = (128,128), <= The size of mask will be converted + garyscale = True <= if the image will be grayscaled + ) + + use + + preprocessed_feature_vector = preprocessor( img ) + # input + # img should have shape => ( Height, Width, Channel ) + # output + # (N, embedded size) + + +''' +################################################################ +""" +MODEL_ROOT + L model_cfg.pickle <== + L model_final.pth +""" +""" +IMAGE_SAVE_DIR + L {id}.pickle <== a brunch of pickle and png pair + L {id}.png +""" + +class Preprocessor(nn.Module): + def __init__( + self, + MODEL_ROOT = None, + mask_size = (128,128), + grayscale = True, + threshold = 0.5, + backbone = None, + getVec = None, + TEST_IMAGE_FILE = './image.png', + ): + super(Preprocessor, self).__init__() + assert MODEL_ROOT is not None + self.MODEL_ROOT = MODEL_ROOT + # Load the config and weight of model and construct the predictor + + self.load_model(threshold = threshold) + + self.mask_size = mask_size + self.format = 'L' if grayscale else "1" + + ############################################################################## + # Learnable Network + ############################################################################## + self.backbone = nn.Sequential( + nn.Conv2d(1, 16, 3, 1, 1), + nn.Conv2d(16, 16, 3, 1, 1), + nn.MaxPool2d(2, stride = 2), # size shrink half + nn.ReLU(), + + nn.Conv2d(16, 16, 3, 1, 1), + nn.Conv2d(16, 16, 3, 1, 1), + nn.MaxPool2d(2, stride = 2), # size shrink half + nn.ReLU(), + + nn.Conv2d(16, 16, 3, 1, 1), + nn.Conv2d(16, 1, 3, 1, 1), + nn.MaxPool2d(2, stride = 2), # size shrink half + nn.ReLU() + ) if backbone is None else backbone + + self.getVec = nn.Sequential( + nn.Linear( int(mask_size[0]/8 * mask_size[1]/8) + 6, 128), + nn.Linear( 128, 128), + nn.Linear( 128, 64), + ) if getVec is None else getVec + ############################################################################## + self.testdrive(TEST_IMAGE_FILE=TEST_IMAGE_FILE) + + + def forward(self, img): + # make sure the input shape is ( Height, Width, Channel ) + assert len(img.shape) == 3, "ERROR: The input is not in a shape of ( Height, Width, Channel ), input does not have 3 dimension" + assert img.shape[2] == 3, "ERROR: The input is not in a shape of ( Height, Width, Channel ), input does not have 3 channel" + + img = np.array(img) + + + instances = self.predictor(img)["instances"] + N = len(instances) + + if N == 0: return torch.tensor([[0]]) + + ''' + instances.pred_boxes + Boxes object storing N object + instances.pred_boxes.tensor return => (N, 4) matrix + instances.pred_classes shape: (N) + instnaces.pred_mask shape: (N, H, W) + instances.score shape: (N) + ''' + info = torch.cat( + ( + instances.pred_boxes.tensor, + instances.pred_classes.unsqueeze(1), + instances.scores.unsqueeze(1) + ), dim = 1) + + masks = [ + np.asarray( + Image.fromarray( + m.detach().numpy() + ).convert( self.format ).resize( self.mask_size ) + ) + for m in instances.pred_masks + ] + masks = torch.tensor( np.asarray(masks) , dtype = torch.float).unsqueeze(1) + ''' + N : number of instances idenify in the image + HS, WS :pre-defined number of the resized mask, default (128, 128) + info :tensor shape: (N, 6) <- the six dim are : (x1, y1, x2, y2, classes_id, score) + masks :tensor shape: (N, 1, HS, WS) + ''' + + feature_maps = self.backbone(masks).reshape((N,-1)) + ''' + feature_map + tensor shape: (N, HS/8 * WS/8) + ''' + + vector = torch.cat( (feature_maps,info) ,dim=1) + + return self.getVec(vector) + + def testdrive(self, TEST_IMAGE_FILE): + N = 12 + H,W = self.mask_size + test_masks = torch.rand(N, 1, H, W) + test_info = torch.rand(N, 6) + with torch.no_grad(): + test_map = self.backbone( test_masks ).reshape((N,-1)) + vector = torch.cat( (test_map,test_info) ,dim=1) + vec = self.getVec( vector ) + assert len(vec.shape) == 2 + + def load_model(self, threshold): + with open(os.path.join(self.MODEL_ROOT, 'model_cfg.pickle'), 'rb') as f: + cfg = pickle.load(f) + + cfg.MODEL.WEIGHTS = os.path.join(self.MODEL_ROOT, "model_final.pth") # path to the model we just trained + cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = threshold # set a custom testing threshold + + self.predictor = DefaultPredictor(cfg) + +class ImageSaver(): + def __init__( + self, + save_mode = False, + save_freq = None, + IMAGE_DIR = None, + ): + self.save_mode = save_mode + if self.save_mode is True: + assert save_freq is not None, "save mode is on but save frequency is not provide, try save_mode = False, or save_freq = 1_000" + assert IMAGE_DIR is not None, "save mode is on but Image directory is not provide, try save_mode = False, or provide directory to save the data" + self.IMAGE_DIR = IMAGE_DIR + self.save_freq = save_freq + self.counter = 0 + + + def __call__(self, img, seg, env): + if self.save_mode is False: + return None + if self.counter == 0: + self.save(img.astype(np.uint8), seg, env) + self.counter = (self.counter + 1) % self.save_freq + return self.counter == 1 + + def pre_save(self): + if not os.path.isdir(self.IMAGE_DIR): + os.mkdir(self.IMAGE_DIR) + + def save(self, img, seg, env): + self.pre_save() + + id = int(time.time()) + while id in os.listdir(): + id = int(time.time()) + + with open(os.path.join(self.IMAGE_DIR,f'{id}.pickle') , 'wb') as f: + pickle.dump( self.seg2anno(seg, env) ,f) + Image.fromarray(img).save(os.path.join(self.IMAGE_DIR,f'{id}.png')) + + print("save the image here") + + def seg2anno(self, seg, env): + # TODO + # figure out how to programmatically annotation mask + # maybe save in coco format + + # objects [id] => name + # ids list of M id + objects = {} + ids = [] + for i in seg.reshape(-1,3): + name = env.sim.model.geom_id2name(i[1]) + objects[i[1]] = name + if i[1] not in ids: ids.append(i[1]) + ids = np.array(sorted(ids)) + #for k, v in sorted(objects.items()): print(k, v.split("_") if v is not None else v) + + + # mask (256,256,1) with M ID + _,mask,_ = np.split(seg,3,axis=2) + + # mask[np.newaxis] ==> ( 1, 256, 256, 1) + # ids[:, np.newaxis, np.newaxis, np.newaxis] ==> ( M, 1, 1, 1) + # L Broadcastable + + # masks ==> (M, 256, 256, 1) + masks = ( mask[np.newaxis] == ids[:, np.newaxis, np.newaxis, np.newaxis]).squeeze()#.astype(np.uint8) + #masks = np.array(list( filter( lambda m: m.sum() > 100, masks ) )) outdated + #masks = masks * 255 + + return masks + +class VisualManager(): + def __init__( + self, + _preprocessor = Preprocessor, + preprocessor_kwarg = None, + _imagesaver = ImageSaver, + imagesaver_kwarg = None, + ): + # not sure if it sure inherit from nn.module + #super(VisualManager, self).__init__() + self.preprocessor = _preprocessor(**preprocessor_kwarg) + self.imagesaver = _imagesaver(**imagesaver_kwarg) + self.image_saved = 0 + print("Finished Init VisualManage") + + + def __call__(self,vis,env): + print("Using Visual Manager") + img, seg = np.array(vis).astype(np.uint8) + + if self.imagesaver(img, seg, env): self.image_saved += 1 + + # return embedded vectors + return self.preprocessor(img) + From 10e85b332a6be2d20e41e56278b8555aa74042ca Mon Sep 17 00:00:00 2001 From: dizzyi Date: Wed, 18 Aug 2021 15:16:59 +0800 Subject: [PATCH 02/19] added VisualManage --- robosuite/demos/demo_binPicking.py | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 robosuite/demos/demo_binPicking.py diff --git a/robosuite/demos/demo_binPicking.py b/robosuite/demos/demo_binPicking.py deleted file mode 100644 index 6d4699b846..0000000000 --- a/robosuite/demos/demo_binPicking.py +++ /dev/null @@ -1,4 +0,0 @@ -import robosuite as suite -from robosuite.environments.manipulation import bin_picking - -env = bin_picking() \ No newline at end of file From 700c4a57dcacef75b56670d4e7b50494be5ea630 Mon Sep 17 00:00:00 2001 From: dizzyi Date: Wed, 18 Aug 2021 15:46:58 +0800 Subject: [PATCH 03/19] rotate image --- robosuite/utils/visual/VisualManager.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py index 9c84415982..dc47cf0068 100644 --- a/robosuite/utils/visual/VisualManager.py +++ b/robosuite/utils/visual/VisualManager.py @@ -277,6 +277,9 @@ def __call__(self,vis,env): print("Using Visual Manager") img, seg = np.array(vis).astype(np.uint8) + img = np.rot90(img,k=2) + seg = np.rot90(seg,k=2) + if self.imagesaver(img, seg, env): self.image_saved += 1 # return embedded vectors From 1214c4274969c6164d03aed537f4ba0e0d0abfaf Mon Sep 17 00:00:00 2001 From: dizzyi Date: Wed, 25 Aug 2021 13:41:50 +0800 Subject: [PATCH 04/19] added trainer --- robosuite/utils/visual/Trainer.py | 97 +++++++++++++++++++++++++ robosuite/utils/visual/VisualManager.py | 85 +++++++++++++++------- 2 files changed, 157 insertions(+), 25 deletions(-) create mode 100644 robosuite/utils/visual/Trainer.py diff --git a/robosuite/utils/visual/Trainer.py b/robosuite/utils/visual/Trainer.py new file mode 100644 index 0000000000..104bf2b166 --- /dev/null +++ b/robosuite/utils/visual/Trainer.py @@ -0,0 +1,97 @@ +import torch +print(torch.__version__, torch.cuda.is_available()) + +from detectron2.utils.logger import setup_logger +setup_logger() + +# import some common libraries +import numpy as np +import os, json, pickle + +#import some common detectron2 utilities +from detectron2 import model_zoo +from detectron2.config import get_cfg +from detectron2.data.datasets import register_coco_instances +from detectron2.engine import DefaultTrainer + +class Trainer(): + def __init__( + self, + NUM_CLASSES, + DATA_ROOT = None, + MODEL_ROOT = None, + NEW_MODEL_ROOT = None + ): + self.DATA_ROOT = DATA_ROOT + self.MODEL_ROOT = [MODEL_ROOT] + self.NEW_MODEL_ROOT = NEW_MODEL_ROOT + self.NUM_CLASSES = NUM_CLASSES + + + def train(self, hyperparam_kwarg = None): + self.set_hyperparam(**hyperparam_kwarg) + trainer = DefaultTrainer(self.cfg) + trainer.resume_or_load(resume=False) + trainer.train() + with open(os.path.join(self.NEW_MODEL_ROOT, 'model_cfg.pickle'), 'wb') as f: + pickle.dump(self.cfg,f) + return self.NEW_MODEL_ROOT + + def set_new_model_root(self,path): + self.MODEL_ROOT.append(self.NEW_MODEL_ROOT) + self.NEW_MODEL_ROOT = path + + def set_hyperparam(self): + + with open(os.path.join(self.MODEL_ROOT[-1], 'model_cfg.pickle'), 'rb') as f: + self.cfg = pickle.load(f) + + self.cfg.DATASETS.TRAIN = () + self.cfg.MODEL.WEIGHTS = os.path.join(self.MODEL_ROOT[-1], "model_final.pth") + + # Detectron default 4 + self.cfg.DATALOADER.NUM_WORKERS = 4 + # Detectron default 40000 + self.cfg.SOLVER.MAX_ITER = 120_000 + ''' + Detectron default + Base Learning rate 0.001 + GAMMA 0.1 + STEP (30000,) + GAMMA : Learning rate decay factor + STEPS: num of iter for learning rate decay by gamma + + MASK RCNN PAPER : https://arxiv.org/pdf/1703.06870.pdf + Base LR 0.02 + decay by 10 @ 120k/160k + + Cityscapes finetuning + Base LR 0.001 + decay by 10 @ 18k/24k + + update baseline + Base LR 0.001 + decay by 10 @ 120k,160k/180k + + Benefit form deeper model + ''' + self.cfg.SOLVER.BASE_LR = 0.001 + self.cfg.SOLVER.GAMMA = 0.1 + self.cfg.SOLVER.STEPS = (90_000,) + self.cfg.SOLVER.WEIGHT_DECAY = 0.000_1 + + + # ROI_HEADS.BATCH_SIZE_PER_IMAGE * SOLVER.IMS_PER_BATCH + # E.g., a common configuration is: 512 * 16 = 8192 + # Detectron default 16 + self.cfg.SOLVER.IMS_PER_BATCH = 32 + # Detectron default 512 + self.cfg.MODEL.ROI_HEADS.BATCH_SIZE_PER_IMAGE = 2048 + + # Number of classes + self.cfg.MODEL.ROI_HEADS.NUM_CLASSES = self.NUM_CLASSES + + # Confident Level + self.cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.7 # set a custom testing threshold + + self.cfg.OUTPUT_DIR = self.NEW_MODEL_ROOT \ No newline at end of file diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py index dc47cf0068..fb0768bad0 100644 --- a/robosuite/utils/visual/VisualManager.py +++ b/robosuite/utils/visual/VisualManager.py @@ -4,11 +4,13 @@ import time import numpy as np -import torch +import torch import torch.nn as nn from detectron2.engine import DefaultPredictor +from Trainer import Trainer + ################################################################ ''' README @@ -70,14 +72,15 @@ def __init__( threshold = 0.5, backbone = None, getVec = None, - TEST_IMAGE_FILE = './image.png', + norm = None, + acti = None ): super(Preprocessor, self).__init__() assert MODEL_ROOT is not None self.MODEL_ROOT = MODEL_ROOT # Load the config and weight of model and construct the predictor - - self.load_model(threshold = threshold) + self.threshold = threshold + self.load_model() self.mask_size = mask_size self.format = 'L' if grayscale else "1" @@ -86,7 +89,7 @@ def __init__( # Learnable Network ############################################################################## self.backbone = nn.Sequential( - nn.Conv2d(1, 16, 3, 1, 1), + nn.Conv2d(4, 16, 3, 1, 1), nn.Conv2d(16, 16, 3, 1, 1), nn.MaxPool2d(2, stride = 2), # size shrink half nn.ReLU(), @@ -107,8 +110,11 @@ def __init__( nn.Linear( 128, 128), nn.Linear( 128, 64), ) if getVec is None else getVec + + self.norm = nn.BatchNorm2d(3) if norm is None else norm + self.acti = nn.Tanh() if acti is None else acti ############################################################################## - self.testdrive(TEST_IMAGE_FILE=TEST_IMAGE_FILE) + self.testdrive() def forward(self, img): @@ -131,6 +137,8 @@ def forward(self, img): instances.pred_classes shape: (N) instnaces.pred_mask shape: (N, H, W) instances.score shape: (N) + + img shape: (H, W, C) ''' info = torch.cat( ( @@ -148,14 +156,28 @@ def forward(self, img): for m in instances.pred_masks ] masks = torch.tensor( np.asarray(masks) , dtype = torch.float).unsqueeze(1) + masks = self.acti(masks) + + image = torch.tensor( + np.asarray(Image.fromarray(img).resize( self.mask_size )), + dtype=torch.float32 + ).permute((2,0,1)) + image = self.norm(image.repeat(N,1,1,1)) ''' - N : number of instances idenify in the image - HS, WS :pre-defined number of the resized mask, default (128, 128) - info :tensor shape: (N, 6) <- the six dim are : (x1, y1, x2, y2, classes_id, score) - masks :tensor shape: (N, 1, HS, WS) + N : number of instances idenify in the image + HS, WS : pre-defined number of the resized mask, default (128, 128) + info : tensor shape: (N, 6) <- the six dim are : (x1, y1, x2, y2, classes_id, score) + masks : tensor shape: (N, 1, HS, WS) + image : tensor shape: (N, 3, HS, WS) + imgnseg : tensor shape: (N, 4, HS, WS) ''' + + imgnseg = torch.cat((masks,image),dim = 1) + + assert imgnseg.shape == (N, 4, *self.mask_size) + assert info.shape == (N, 6) - feature_maps = self.backbone(masks).reshape((N,-1)) + feature_maps = self.backbone(imgnseg).reshape((N,-1)) ''' feature_map tensor shape: (N, HS/8 * WS/8) @@ -165,10 +187,10 @@ def forward(self, img): return self.getVec(vector) - def testdrive(self, TEST_IMAGE_FILE): + def testdrive(self): N = 12 H,W = self.mask_size - test_masks = torch.rand(N, 1, H, W) + test_masks = torch.rand(N, 4, H, W) test_info = torch.rand(N, 6) with torch.no_grad(): test_map = self.backbone( test_masks ).reshape((N,-1)) @@ -176,12 +198,12 @@ def testdrive(self, TEST_IMAGE_FILE): vec = self.getVec( vector ) assert len(vec.shape) == 2 - def load_model(self, threshold): + def load_model(self): with open(os.path.join(self.MODEL_ROOT, 'model_cfg.pickle'), 'rb') as f: cfg = pickle.load(f) cfg.MODEL.WEIGHTS = os.path.join(self.MODEL_ROOT, "model_final.pth") # path to the model we just trained - cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = threshold # set a custom testing threshold + cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = self.threshold # set a custom testing threshold self.predictor = DefaultPredictor(cfg) @@ -194,7 +216,7 @@ def __init__( ): self.save_mode = save_mode if self.save_mode is True: - assert save_freq is not None, "save mode is on but save frequency is not provide, try save_mode = False, or save_freq = 1_000" + assert save_freq is not None, "save mode is on but saves frequency is not provide, try save_mode = False, or save_freq = 1_000" assert IMAGE_DIR is not None, "save mode is on but Image directory is not provide, try save_mode = False, or provide directory to save the data" self.IMAGE_DIR = IMAGE_DIR self.save_freq = save_freq @@ -224,15 +246,15 @@ def save(self, img, seg, env): pickle.dump( self.seg2anno(seg, env) ,f) Image.fromarray(img).save(os.path.join(self.IMAGE_DIR,f'{id}.png')) - print("save the image here") - + raise Exception("This function is not finish yet") + def seg2anno(self, seg, env): # TODO # figure out how to programmatically annotation mask # maybe save in coco format - # objects [id] => name - # ids list of M id + # objects: a dictionary [id] => name + # ids: list of M id objects = {} ids = [] for i in seg.reshape(-1,3): @@ -254,7 +276,6 @@ def seg2anno(self, seg, env): masks = ( mask[np.newaxis] == ids[:, np.newaxis, np.newaxis, np.newaxis]).squeeze()#.astype(np.uint8) #masks = np.array(list( filter( lambda m: m.sum() > 100, masks ) )) outdated #masks = masks * 255 - return masks class VisualManager(): @@ -264,12 +285,19 @@ def __init__( preprocessor_kwarg = None, _imagesaver = ImageSaver, imagesaver_kwarg = None, + _trainer = Trainer, + trainer_kwarg = None, + train_schedule = (10_000,), ): # not sure if it sure inherit from nn.module #super(VisualManager, self).__init__() - self.preprocessor = _preprocessor(**preprocessor_kwarg) - self.imagesaver = _imagesaver(**imagesaver_kwarg) - self.image_saved = 0 + self.preprocessor = _preprocessor(**preprocessor_kwarg) + self.imagesaver = _imagesaver(**imagesaver_kwarg) + self.trainer = _trainer(**trainer_kwarg) + self.image_saved = 0 + self.train_schedule = train_schedule + + print("Finished Init VisualManage") @@ -280,7 +308,14 @@ def __call__(self,vis,env): img = np.rot90(img,k=2) seg = np.rot90(seg,k=2) - if self.imagesaver(img, seg, env): self.image_saved += 1 + if self.imagesaver(img, seg, env): + + self.image_saved += 1 + + if self.image_saved in self.train_schedule: + self.preprocessor.MODEL_ROOT = self.trainer.train() + self.preprocessor.load_model() + # return embedded vectors return self.preprocessor(img) From f87c4c985750c96d67470de2689e69e243369420 Mon Sep 17 00:00:00 2001 From: dizzyi Date: Wed, 25 Aug 2021 14:13:05 +0800 Subject: [PATCH 05/19] added trainer --- robosuite/utils/visual/Trainer.py | 4 +--- robosuite/utils/visual/VisualManager.py | 18 ++++++++---------- robosuite/utils/visual/__init__.py | 0 3 files changed, 9 insertions(+), 13 deletions(-) create mode 100644 robosuite/utils/visual/__init__.py diff --git a/robosuite/utils/visual/Trainer.py b/robosuite/utils/visual/Trainer.py index 104bf2b166..57860efdae 100644 --- a/robosuite/utils/visual/Trainer.py +++ b/robosuite/utils/visual/Trainer.py @@ -9,15 +9,13 @@ import os, json, pickle #import some common detectron2 utilities -from detectron2 import model_zoo -from detectron2.config import get_cfg from detectron2.data.datasets import register_coco_instances from detectron2.engine import DefaultTrainer class Trainer(): def __init__( self, - NUM_CLASSES, + NUM_CLASSES = 20, DATA_ROOT = None, MODEL_ROOT = None, NEW_MODEL_ROOT = None diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py index fb0768bad0..5cf732da61 100644 --- a/robosuite/utils/visual/VisualManager.py +++ b/robosuite/utils/visual/VisualManager.py @@ -9,7 +9,7 @@ from detectron2.engine import DefaultPredictor -from Trainer import Trainer +from robosuite.utils.visual.Trainer import Trainer ################################################################ ''' @@ -210,9 +210,9 @@ def load_model(self): class ImageSaver(): def __init__( self, - save_mode = False, - save_freq = None, - IMAGE_DIR = None, + save_mode = False, + save_freq = None, + IMAGE_DIR = None, ): self.save_mode = save_mode if self.save_mode is True: @@ -246,7 +246,7 @@ def save(self, img, seg, env): pickle.dump( self.seg2anno(seg, env) ,f) Image.fromarray(img).save(os.path.join(self.IMAGE_DIR,f'{id}.png')) - raise Exception("This function is not finish yet") + #raise Exception("This function is not finish yet") def seg2anno(self, seg, env): # TODO @@ -282,15 +282,13 @@ class VisualManager(): def __init__( self, _preprocessor = Preprocessor, - preprocessor_kwarg = None, + preprocessor_kwarg = dict(), _imagesaver = ImageSaver, - imagesaver_kwarg = None, + imagesaver_kwarg = dict(), _trainer = Trainer, - trainer_kwarg = None, + trainer_kwarg = dict(), train_schedule = (10_000,), ): - # not sure if it sure inherit from nn.module - #super(VisualManager, self).__init__() self.preprocessor = _preprocessor(**preprocessor_kwarg) self.imagesaver = _imagesaver(**imagesaver_kwarg) self.trainer = _trainer(**trainer_kwarg) diff --git a/robosuite/utils/visual/__init__.py b/robosuite/utils/visual/__init__.py new file mode 100644 index 0000000000..e69de29bb2 From 870a5a75e77141c970e3f60c28b2487e390f1ec4 Mon Sep 17 00:00:00 2001 From: dizzyi Date: Mon, 30 Aug 2021 15:39:03 +0800 Subject: [PATCH 06/19] refactor --- robosuite/demos/demo_random_action.py | 17 ++- robosuite/utils/visual/Trainer.py | 26 ++-- robosuite/utils/visual/VisualManager.py | 191 ++++++++++++++++++------ 3 files changed, 173 insertions(+), 61 deletions(-) diff --git a/robosuite/demos/demo_random_action.py b/robosuite/demos/demo_random_action.py index bc44864999..c9a724f3bd 100644 --- a/robosuite/demos/demo_random_action.py +++ b/robosuite/demos/demo_random_action.py @@ -65,13 +65,19 @@ low, high = env.action_spec eye = VisualManager( + MODEL_ROOT = '/home/dizzyi/GNN/detectron/tutorial/output', + + DATA_ROOT = './imagesave', + preprocessor_kwarg = dict( - MODEL_ROOT = '/home/dizzyi/GNN/detectron/tutorial/output' ), imagesaver_kwarg = dict( - save_mode = True, - save_freq = 100, - IMAGE_DIR = './imagesave' + save_mode = False, + save_freq = 20, + ), + trainer_kwarg = dict( + train_mode = True, + NEW_MODEL_ROOT = './new_model' ) ) @@ -79,6 +85,8 @@ import time # do visualization for i in range(1000): + + print("--------------------------------------") #delta = time.time() action = np.random.uniform(low, high) obs, reward, done, _ = env.step(action) @@ -124,6 +132,5 @@ seg_png.save(f'./seg/{ids[ind]}-{objects[ids[ind]]}.png') print(ind) ''' - print('end loop') #print(time.time()-delta) #env.render() diff --git a/robosuite/utils/visual/Trainer.py b/robosuite/utils/visual/Trainer.py index 57860efdae..39f42a0c61 100644 --- a/robosuite/utils/visual/Trainer.py +++ b/robosuite/utils/visual/Trainer.py @@ -1,5 +1,4 @@ import torch -print(torch.__version__, torch.cuda.is_available()) from detectron2.utils.logger import setup_logger setup_logger() @@ -16,28 +15,37 @@ class Trainer(): def __init__( self, NUM_CLASSES = 20, + train_mode = False, DATA_ROOT = None, MODEL_ROOT = None, NEW_MODEL_ROOT = None ): + self.train_mode = train_mode self.DATA_ROOT = DATA_ROOT self.MODEL_ROOT = [MODEL_ROOT] self.NEW_MODEL_ROOT = NEW_MODEL_ROOT self.NUM_CLASSES = NUM_CLASSES + if self.train_mode: + assert MODEL_ROOT is not None, "Need to provide MODEL_ROOT" + assert DATA_ROOT is not None, "Need to provide DATA_ROOT" + assert NEW_MODEL_ROOT is not None, "Need to provide NEW_DATA_ROOT" - def train(self, hyperparam_kwarg = None): + def train(self, sche, hyperparam_kwarg = None): + self.current_dir = sche self.set_hyperparam(**hyperparam_kwarg) + trainer = DefaultTrainer(self.cfg) trainer.resume_or_load(resume=False) trainer.train() - with open(os.path.join(self.NEW_MODEL_ROOT, 'model_cfg.pickle'), 'wb') as f: + + with open(os.path.join(self.NEW_MODEL_ROOT, sche , 'model_cfg.pickle'), 'wb') as f: pickle.dump(self.cfg,f) - return self.NEW_MODEL_ROOT - - def set_new_model_root(self,path): - self.MODEL_ROOT.append(self.NEW_MODEL_ROOT) - self.NEW_MODEL_ROOT = path + self.MODEL_ROOT.append( os.path.join(self.NEW_MODEL_ROOT, self.current_dir) ) + + + def get_current_root(self): + return self.MODEL_ROOT[-1] def set_hyperparam(self): @@ -92,4 +100,4 @@ def set_hyperparam(self): # Confident Level self.cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.7 # set a custom testing threshold - self.cfg.OUTPUT_DIR = self.NEW_MODEL_ROOT \ No newline at end of file + self.cfg.OUTPUT_DIR = os.path.join(self.NEW_MODEL_ROOT, self.current_dir) \ No newline at end of file diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py index 5cf732da61..408b7ab8bd 100644 --- a/robosuite/utils/visual/VisualManager.py +++ b/robosuite/utils/visual/VisualManager.py @@ -1,34 +1,56 @@ -import os -import pickle -from PIL import Image -import time - -import numpy as np -import torch -import torch.nn as nn - -from detectron2.engine import DefaultPredictor - -from robosuite.utils.visual.Trainer import Trainer - ################################################################ ''' README # VisualManager + The Visual Manager is a class which handle all visual related task, + which composited by: + - Preprocessor + extract object's feature vector form a image input + - ImageSaver + annotate and save data for futher training + - Trainer + tune a new model form the old model on the data that we generated + + + + + # EXAMPLE # constructor + + ---------------------------------------------------------------------------------------------------------------------------- eyes = VisualManager( + MODEL_ROOT = path, # The directory to the model + + DATA_ROOT = path, # THe directoey to save image and data + + verbose = True, # verbose + + train_schedule = (10_000,), # The trainer will tune the model when saved image hit the number listed + preprocessor_kwarg = dict( - ... - ), - imagesaver_kwarg = dict( - ... + masks_size = (128,128), # size that image will be wrap to + grayscale = True, # allow gray for more information + thresold = 0.5, # thresold of confident score + backbone = None, # backbone for image and masks + getVec = None, # get vector from feature map + norm = None, # norm layer for image and masks + acti = None, # activation layer for image and masks + ), + imagesaver_kwarg = dict( + save_mode = True, # True to turn on image saving mode + save_freq = 100 # how often will save image and annotations + ), + trainer_kwarg = dict( + NUM_CLASSES = 20, # Number for classes for classify + train_mode = True, # True to turn on training mode + NEW_MODEL_ROOT = path, # The directory that all newly tuned model will be saved ) ) + ---------------------------------------------------------------------------------------------------------------------------- # use feature_vectors = eyes(obs['agentview_image'],env) - ! obs can have any other camera name ! must be passed for annotation purposes @@ -63,6 +85,20 @@ L {id}.png """ + +import os +import pickle +from PIL import Image +import time + +import numpy as np +import torch +import torch.nn as nn + +from detectron2.engine import DefaultPredictor + +from robosuite.utils.visual.Trainer import Trainer + class Preprocessor(nn.Module): def __init__( self, @@ -77,10 +113,9 @@ def __init__( ): super(Preprocessor, self).__init__() assert MODEL_ROOT is not None - self.MODEL_ROOT = MODEL_ROOT # Load the config and weight of model and construct the predictor self.threshold = threshold - self.load_model() + self.load_model(MODEL_ROOT) self.mask_size = mask_size self.format = 'L' if grayscale else "1" @@ -111,7 +146,7 @@ def __init__( nn.Linear( 128, 64), ) if getVec is None else getVec - self.norm = nn.BatchNorm2d(3) if norm is None else norm + self.norm = nn.LayerNorm(self.mask_size) if norm is None else norm self.acti = nn.Tanh() if acti is None else acti ############################################################################## self.testdrive() @@ -156,13 +191,13 @@ def forward(self, img): for m in instances.pred_masks ] masks = torch.tensor( np.asarray(masks) , dtype = torch.float).unsqueeze(1) - masks = self.acti(masks) + masks = self.acti(self.norm(masks)) image = torch.tensor( np.asarray(Image.fromarray(img).resize( self.mask_size )), dtype=torch.float32 ).permute((2,0,1)) - image = self.norm(image.repeat(N,1,1,1)) + image = self.acti(self.norm(image.repeat(N,1,1,1))) ''' N : number of instances idenify in the image HS, WS : pre-defined number of the resized mask, default (128, 128) @@ -190,15 +225,40 @@ def forward(self, img): def testdrive(self): N = 12 H,W = self.mask_size - test_masks = torch.rand(N, 4, H, W) - test_info = torch.rand(N, 6) + with torch.no_grad(): - test_map = self.backbone( test_masks ).reshape((N,-1)) + + test_info = torch.rand(N, 6) + test_masks = torch.rand(N, 1, H, W) + test_image = torch.rand(H, W, 3).permute((2,0,1)) + + try: + test_masks = self.acti(test_masks) + except: + raise Exception("The specified acti layer is not compatible") + + try: + test_image = self.norm(test_image.repeat(N,1,1,1)) + except: + raise Exception("THe specifed norm layer is not compatible") + + + test_imgnseg = torch.cat((test_masks,test_image),dim=1) + + try: + test_map = self.backbone( test_imgnseg ).reshape((N,-1)) + except: + raise Exception("The specifed backbone layer is not compatible") vector = torch.cat( (test_map,test_info) ,dim=1) - vec = self.getVec( vector ) + + try: + vec = self.getVec( vector ) + except: + raise Exception("The specified getVec is not compatible") assert len(vec.shape) == 2 - def load_model(self): + def load_model(self, MODEL_ROOT): + self.MODEL_ROOT = MODEL_ROOT with open(os.path.join(self.MODEL_ROOT, 'model_cfg.pickle'), 'rb') as f: cfg = pickle.load(f) @@ -212,15 +272,15 @@ def __init__( self, save_mode = False, save_freq = None, - IMAGE_DIR = None, + DATA_ROOT = None, ): self.save_mode = save_mode if self.save_mode is True: assert save_freq is not None, "save mode is on but saves frequency is not provide, try save_mode = False, or save_freq = 1_000" - assert IMAGE_DIR is not None, "save mode is on but Image directory is not provide, try save_mode = False, or provide directory to save the data" - self.IMAGE_DIR = IMAGE_DIR + assert DATA_ROOT is not None, "save mode is on but Image directory is not provide, try save_mode = False, or provide directory to save the data" + self.DATA_ROOT = DATA_ROOT self.save_freq = save_freq - self.counter = 0 + self.counter = 0 def __call__(self, img, seg, env): @@ -232,8 +292,8 @@ def __call__(self, img, seg, env): return self.counter == 1 def pre_save(self): - if not os.path.isdir(self.IMAGE_DIR): - os.mkdir(self.IMAGE_DIR) + if not os.path.isdir(self.DATA_ROOT): + os.mkdir(self.DATA_ROOT) def save(self, img, seg, env): self.pre_save() @@ -242,9 +302,9 @@ def save(self, img, seg, env): while id in os.listdir(): id = int(time.time()) - with open(os.path.join(self.IMAGE_DIR,f'{id}.pickle') , 'wb') as f: + with open(os.path.join(self.DATA_ROOT,f'{id}.pickle') , 'wb') as f: pickle.dump( self.seg2anno(seg, env) ,f) - Image.fromarray(img).save(os.path.join(self.IMAGE_DIR,f'{id}.png')) + Image.fromarray(img).save(os.path.join(self.DATA_ROOT,f'{id}.png')) #raise Exception("This function is not finish yet") @@ -276,31 +336,57 @@ def seg2anno(self, seg, env): masks = ( mask[np.newaxis] == ids[:, np.newaxis, np.newaxis, np.newaxis]).squeeze()#.astype(np.uint8) #masks = np.array(list( filter( lambda m: m.sum() > 100, masks ) )) outdated #masks = masks * 255 + + # id : list of id + # object : map + # masks : masks + + + return masks class VisualManager(): def __init__( self, + MODEL_ROOT = None, + DATA_ROOT = None, + verbose = True, + train_schedule = (10_000,), _preprocessor = Preprocessor, preprocessor_kwarg = dict(), _imagesaver = ImageSaver, imagesaver_kwarg = dict(), _trainer = Trainer, trainer_kwarg = dict(), - train_schedule = (10_000,), ): - self.preprocessor = _preprocessor(**preprocessor_kwarg) - self.imagesaver = _imagesaver(**imagesaver_kwarg) - self.trainer = _trainer(**trainer_kwarg) + preprocessor_kwarg["MODEL_ROOT"] = MODEL_ROOT + self.preprocessor = _preprocessor(**preprocessor_kwarg) + + imagesaver_kwarg["DATA_ROOT"] = DATA_ROOT + self.imagesaver = _imagesaver(**imagesaver_kwarg) + + self.trainer = _trainer( + MODEL_ROOT = MODEL_ROOT, + DATA_ROOT = DATA_ROOT, + **trainer_kwarg + ) + + self.verbose = verbose self.image_saved = 0 self.train_schedule = train_schedule - - print("Finished Init VisualManage") + if not self.imagesaver.save_mode and self.trainer.train_mode: + print("[VisualManager]Warning: the train_mode is on but save_mode is not pn, it will not train when VisualManager is call, ") + _sanity = input('[VisualManager]but you can call VisualManager.train() to force train, are you sure?[y/n(default, will raise error)]') + assert _sanity == 'Y' or _sanity == 'y', '[VisaulManager]train_mode is on, while save_mode is not' + if self.verbose: print("[VisualManager]Finished Init") def __call__(self,vis,env): - print("Using Visual Manager") + if self.verbose and self.imagesaver.save_mode : + print(f"[VisualManager]Datasaver : {self.imagesaver.counter}/{self.imagesaver.save_freq}") + print(f"[VisualManager]image saved: {self.image_saved}") + img, seg = np.array(vis).astype(np.uint8) img = np.rot90(img,k=2) @@ -309,12 +395,23 @@ def __call__(self,vis,env): if self.imagesaver(img, seg, env): self.image_saved += 1 + if self.verbose: + print("[VisualManager]One Image saved") + print(f"[VisualManager]train schedule:", self.train_schedule) - if self.image_saved in self.train_schedule: - self.preprocessor.MODEL_ROOT = self.trainer.train() - self.preprocessor.load_model() - + if self.image_saved in self.train_schedule and self.trainer.train_mode: + if self.verbose: print("[VisualManager]Trainer start training") + self.trainer.train(sche = f"tune_model_{self.image_saved}") + self.preprocessor.load_model(self.trainer.get_current_root()) # return embedded vectors + if self.verbose: print("[VisualManager]returning feature vectors...") return self.preprocessor(img) + def train(self,train_name = "force-train"): + print("[VisualManager]unschedule train") + + if self.verbose: print("[VisualManager]Trainer start training") + + self.trainer.train(sche = f"tune_model_{train_name}") + self.preprocessor.load_model(self.trainer.get_current_root()) \ No newline at end of file From eaca4d240b6297b852130d7f679ae22392f57a75 Mon Sep 17 00:00:00 2001 From: dizzyi Date: Thu, 2 Sep 2021 13:31:16 +0800 Subject: [PATCH 07/19] added name2idMask --- robosuite/demos/demo_random_action.py | 40 ++++++++++----- robosuite/utils/visual/Trainer.py | 1 + robosuite/utils/visual/VisualManager.py | 68 +++++++++++++++++-------- 3 files changed, 74 insertions(+), 35 deletions(-) diff --git a/robosuite/demos/demo_random_action.py b/robosuite/demos/demo_random_action.py index c9a724f3bd..e8189254ff 100644 --- a/robosuite/demos/demo_random_action.py +++ b/robosuite/demos/demo_random_action.py @@ -64,20 +64,34 @@ # Get action limits low, high = env.action_spec - eye = VisualManager( - MODEL_ROOT = '/home/dizzyi/GNN/detectron/tutorial/output', + eyes = VisualManager( + MODEL_ROOT ='/home/dizzyi/GNN/detectron/tutorial/output', + # The directory to the model + + DATA_ROOT = './imagesave', # THe directoey to save image and data + + verbose = True, # verbose - DATA_ROOT = './imagesave', + train_schedule = (10_000,), # The trainer will tune the model when saved image hit the number listed preprocessor_kwarg = dict( - ), - imagesaver_kwarg = dict( - save_mode = False, - save_freq = 20, - ), - trainer_kwarg = dict( - train_mode = True, - NEW_MODEL_ROOT = './new_model' + mask_size = (128,128), # size that image will be wrap to + grayscale = True, # allow gray for more information + threshold = 0.5, # thresold of confident score + backbone = None, # backbone for image and masks + getVec = None, # get vector from feature map + norm = None, # norm layer for image and masks + acti = None, # activation layer for image and masks + ), + imagesaver_kwarg = dict( + save_mode = True, # True to turn on image saving mode + save_freq = 5 # how often will save image and annotations + ), + trainer_kwarg = dict( + NUM_CLASSES = 20, # Number for classes for classify + train_mode = True, # True to turn on training mode + NEW_MODEL_ROOT = './new_model', + # The directory that all newly tuned model will be saved ) ) @@ -91,8 +105,8 @@ action = np.random.uniform(low, high) obs, reward, done, _ = env.step(action) - feature_vectors = eye(obs['agentview_image'],env) - + feature_vectors = eyes(obs['agentview_image'],env) + ''' img = Image.fromarray(img).rotate(180) diff --git a/robosuite/utils/visual/Trainer.py b/robosuite/utils/visual/Trainer.py index 39f42a0c61..3273fa9203 100644 --- a/robosuite/utils/visual/Trainer.py +++ b/robosuite/utils/visual/Trainer.py @@ -41,6 +41,7 @@ def train(self, sche, hyperparam_kwarg = None): with open(os.path.join(self.NEW_MODEL_ROOT, sche , 'model_cfg.pickle'), 'wb') as f: pickle.dump(self.cfg,f) + self.MODEL_ROOT.append( os.path.join(self.NEW_MODEL_ROOT, self.current_dir) ) diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py index 408b7ab8bd..095d0a5c72 100644 --- a/robosuite/utils/visual/VisualManager.py +++ b/robosuite/utils/visual/VisualManager.py @@ -17,7 +17,7 @@ # EXAMPLE # constructor - + ---------------------------------------------------------------------------------------------------------------------------- eyes = VisualManager( MODEL_ROOT = path, # The directory to the model @@ -29,9 +29,9 @@ train_schedule = (10_000,), # The trainer will tune the model when saved image hit the number listed preprocessor_kwarg = dict( - masks_size = (128,128), # size that image will be wrap to + mask_size = (128,128), # size that image will be wrap to grayscale = True, # allow gray for more information - thresold = 0.5, # thresold of confident score + threshold = 0.5, # thresold of confident score backbone = None, # backbone for image and masks getVec = None, # get vector from feature map norm = None, # norm layer for image and masks @@ -303,44 +303,66 @@ def save(self, img, seg, env): id = int(time.time()) with open(os.path.join(self.DATA_ROOT,f'{id}.pickle') , 'wb') as f: - pickle.dump( self.seg2anno(seg, env) ,f) + pickle.dump( self.seg2anno(seg, env, id) ,f) Image.fromarray(img).save(os.path.join(self.DATA_ROOT,f'{id}.png')) #raise Exception("This function is not finish yet") - def seg2anno(self, seg, env): + def seg2anno(self, seg, env, img_id): # TODO # figure out how to programmatically annotation mask - # maybe save in coco format # objects: a dictionary [id] => name # ids: list of M id - objects = {} - ids = [] - for i in seg.reshape(-1,3): - name = env.sim.model.geom_id2name(i[1]) - objects[i[1]] = name - if i[1] not in ids: ids.append(i[1]) - ids = np.array(sorted(ids)) - #for k, v in sorted(objects.items()): print(k, v.split("_") if v is not None else v) - # mask (256,256,1) with M ID _,mask,_ = np.split(seg,3,axis=2) + objects = {} + ids = np.unique(mask) + for id in ids: + name = env.sim.model.geom_id2name(id) + objects[id] = name + + for k, v in sorted(objects.items()): print(k, v.split("_") if v is not None else v) + # mask[np.newaxis] ==> ( 1, 256, 256, 1) # ids[:, np.newaxis, np.newaxis, np.newaxis] ==> ( M, 1, 1, 1) - # L Broadcastable - + # L Broadcastable to + #( M, 256, 256 ,1) # masks ==> (M, 256, 256, 1) - masks = ( mask[np.newaxis] == ids[:, np.newaxis, np.newaxis, np.newaxis]).squeeze()#.astype(np.uint8) - #masks = np.array(list( filter( lambda m: m.sum() > 100, masks ) )) outdated - #masks = masks * 255 + masks = (mask[np.newaxis] == ids[:, np.newaxis, np.newaxis, np.newaxis]).squeeze().astype(np.uint8) + #masks = np.asarray(masks) # id : list of id # object : map # masks : masks - + have_name = False + no_name_counter = 0 + name2idMask = {} + for _id, _mask in zip(ids,masks): + _name = objects[_id] + if _name is not None: + _name = _name.split('_')[0] + if _name is None and have_name: + have_name = False + no_name_counter += 1 + if _name is not None and not have_name: + have_name = True + + if _name is None: + _name = f'bin{no_name_counter}' + if _name in name2idMask: + old_mask, old_id = name2idMask[_name] + name2idMask[_name] = (old_mask + _mask, old_id + [_id]) + else: + name2idMask[_name] = (_mask, [_id]) + + for k,v in sorted(name2idMask.items()): + _vis = np.asarray(v[0] * 255 / v[0].max()).astype(np.uint8) + Image.fromarray(_vis, 'L').save(os.path.join('.','imgseg',f'{img_id}_{k}.png')) + + # name2idMask : dict< one word name : ( mask<256,256> , list ) > return masks @@ -376,7 +398,7 @@ def __init__( self.train_schedule = train_schedule if not self.imagesaver.save_mode and self.trainer.train_mode: - print("[VisualManager]Warning: the train_mode is on but save_mode is not pn, it will not train when VisualManager is call, ") + print("[VisualManager]Warning: the train_mode is on but save_mode is not on, it will not train when VisualManager is call, ") _sanity = input('[VisualManager]but you can call VisualManager.train() to force train, are you sure?[y/n(default, will raise error)]') assert _sanity == 'Y' or _sanity == 'y', '[VisaulManager]train_mode is on, while save_mode is not' if self.verbose: print("[VisualManager]Finished Init") @@ -406,8 +428,10 @@ def __call__(self,vis,env): # return embedded vectors if self.verbose: print("[VisualManager]returning feature vectors...") + return self.preprocessor(img) + def train(self,train_name = "force-train"): print("[VisualManager]unschedule train") From 14e6be38c604ff6b87c6738f1d8976397f196f0d Mon Sep 17 00:00:00 2001 From: dizzyi Date: Sun, 5 Sep 2021 16:28:14 +0800 Subject: [PATCH 08/19] added returnDict --- robosuite/utils/visual/VisualManager.py | 50 ++++++++++++++++++++----- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py index 095d0a5c72..27816437f1 100644 --- a/robosuite/utils/visual/VisualManager.py +++ b/robosuite/utils/visual/VisualManager.py @@ -88,14 +88,17 @@ import os import pickle -from PIL import Image +from PIL import Image, ImageFilter import time import numpy as np import torch import torch.nn as nn +from pycocotools.mask import encode as Mask2RLE + from detectron2.engine import DefaultPredictor +from detectron2.structures import BoxMode from robosuite.utils.visual.Trainer import Trainer @@ -309,11 +312,15 @@ def save(self, img, seg, env): #raise Exception("This function is not finish yet") def seg2anno(self, seg, env, img_id): - # TODO - # figure out how to programmatically annotation mask - # objects: a dictionary [id] => name # ids: list of M id + returnDict = {} + returnDict['file_name'] = os.path.join(self.DATA_ROOT, f'{img_id}.png') + returnDict['height'] = len(seg) + returnDict['width'] = len(seg[0]) + returnDict['image_id'] = img_id + returnDict['annotations'] = [] + # mask (256,256,1) with M ID _,mask,_ = np.split(seg,3,axis=2) @@ -326,12 +333,12 @@ def seg2anno(self, seg, env, img_id): for k, v in sorted(objects.items()): print(k, v.split("_") if v is not None else v) - # mask[np.newaxis] ==> ( 1, 256, 256, 1) - # ids[:, np.newaxis, np.newaxis, np.newaxis] ==> ( M, 1, 1, 1) + # mask.squeeze()[np.newaxis] ==> ( 1, 256, 256) + # ids[:, np.newaxis, np.newaxis, np.newaxis] ==> ( M, 1, 1) # L Broadcastable to #( M, 256, 256 ,1) # masks ==> (M, 256, 256, 1) - masks = (mask[np.newaxis] == ids[:, np.newaxis, np.newaxis, np.newaxis]).squeeze().astype(np.uint8) + masks = (mask.squeeze()[np.newaxis] == ids[:, np.newaxis, np.newaxis]).astype(np.uint8) #masks = np.asarray(masks) # id : list of id @@ -358,15 +365,38 @@ def seg2anno(self, seg, env, img_id): else: name2idMask[_name] = (_mask, [_id]) + # name2idMask : dict< one word name : ( mask<256,256> , list ) > + + + for k,v in sorted(name2idMask.items()): - _vis = np.asarray(v[0] * 255 / v[0].max()).astype(np.uint8) - Image.fromarray(_vis, 'L').save(os.path.join('.','imgseg',f'{img_id}_{k}.png')) + _mask, _ids = v + + annoDict = {} + + annoDict['bbox'] = self.mask2BBox(_mask) + annoDict['bbox_mode'] = BoxMode.XYXY_ABS + + annoDict['category_id'] = 1 + raise Exception('Insert Map function form geom ID to category ID here ') + + _RLE = Mask2RLE( np.asarray( _mask,dtype=np.uint8, order= 'F') ) + annoDict['segmentation'] = _RLE - # name2idMask : dict< one word name : ( mask<256,256> , list ) > + returnDict['annotations'].append(annoDict) + #_vis = np.asarray(_mask * 255 / _mask.max()).astype(np.uint8) + #Image.fromarray(_vis, 'L').filter(ImageFilter.DETAIL).convert('1').save(os.path.join('.','imgseg',f'{img_id}_{k}.png')) return masks + def mask2BBox(mask): + rows = np.any(mask,axis=0) + cols = np.any(mask,axis=1) + rmin, rmax = np.where(rows)[0][[0,-1]] + cmin, cmax = np.where(cols)[0][[0,-1]] + return [rmin,cmin, rmax, cmax] + class VisualManager(): def __init__( self, From b465d79129fb668ba1d9ff5145249a8f68dcb57d Mon Sep 17 00:00:00 2001 From: dizzyi Date: Sun, 5 Sep 2021 16:49:02 +0800 Subject: [PATCH 09/19] - --- robosuite/utils/visual/VisualManager.py | 1 - 1 file changed, 1 deletion(-) diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py index 27816437f1..94c713b72d 100644 --- a/robosuite/utils/visual/VisualManager.py +++ b/robosuite/utils/visual/VisualManager.py @@ -194,7 +194,6 @@ def forward(self, img): for m in instances.pred_masks ] masks = torch.tensor( np.asarray(masks) , dtype = torch.float).unsqueeze(1) - masks = self.acti(self.norm(masks)) image = torch.tensor( np.asarray(Image.fromarray(img).resize( self.mask_size )), From 882b965da2aaa7ae5f316740df3f684dc8441aee Mon Sep 17 00:00:00 2001 From: "Alan, CHUNG" <49159105+dizzyi@users.noreply.github.com> Date: Sun, 5 Sep 2021 17:06:11 +0800 Subject: [PATCH 10/19] Update VisualManager.py --- robosuite/utils/visual/VisualManager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py index 94c713b72d..2d0b9557aa 100644 --- a/robosuite/utils/visual/VisualManager.py +++ b/robosuite/utils/visual/VisualManager.py @@ -387,7 +387,7 @@ def seg2anno(self, seg, env, img_id): #Image.fromarray(_vis, 'L').filter(ImageFilter.DETAIL).convert('1').save(os.path.join('.','imgseg',f'{img_id}_{k}.png')) - return masks + return returnDict def mask2BBox(mask): rows = np.any(mask,axis=0) @@ -467,4 +467,4 @@ def train(self,train_name = "force-train"): if self.verbose: print("[VisualManager]Trainer start training") self.trainer.train(sche = f"tune_model_{train_name}") - self.preprocessor.load_model(self.trainer.get_current_root()) \ No newline at end of file + self.preprocessor.load_model(self.trainer.get_current_root()) From d127c70c851fe3589b3cac8d18b17b0dc0199779 Mon Sep 17 00:00:00 2001 From: "Alan, CHUNG" <49159105+dizzyi@users.noreply.github.com> Date: Sun, 5 Sep 2021 17:07:07 +0800 Subject: [PATCH 11/19] Update VisualManager.py --- robosuite/utils/visual/VisualManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py index 2d0b9557aa..6be02be2ad 100644 --- a/robosuite/utils/visual/VisualManager.py +++ b/robosuite/utils/visual/VisualManager.py @@ -335,7 +335,7 @@ def seg2anno(self, seg, env, img_id): # mask.squeeze()[np.newaxis] ==> ( 1, 256, 256) # ids[:, np.newaxis, np.newaxis, np.newaxis] ==> ( M, 1, 1) # L Broadcastable to - #( M, 256, 256 ,1) + #( M, 256, 256) # masks ==> (M, 256, 256, 1) masks = (mask.squeeze()[np.newaxis] == ids[:, np.newaxis, np.newaxis]).astype(np.uint8) #masks = np.asarray(masks) From 27c52125da852e167968d064e91cf5fff128b09c Mon Sep 17 00:00:00 2001 From: "Alan, CHUNG" <49159105+dizzyi@users.noreply.github.com> Date: Sun, 5 Sep 2021 17:29:32 +0800 Subject: [PATCH 12/19] Update VisualManager.py --- robosuite/utils/visual/VisualManager.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py index 6be02be2ad..5557a30fbf 100644 --- a/robosuite/utils/visual/VisualManager.py +++ b/robosuite/utils/visual/VisualManager.py @@ -377,11 +377,14 @@ def seg2anno(self, seg, env, img_id): annoDict['bbox_mode'] = BoxMode.XYXY_ABS annoDict['category_id'] = 1 + # annoDict['category_id'] = mapGeomIDtoCategoryID(_ids) raise Exception('Insert Map function form geom ID to category ID here ') _RLE = Mask2RLE( np.asarray( _mask,dtype=np.uint8, order= 'F') ) annoDict['segmentation'] = _RLE + + #if this_Instance_Should_be_Saved(_ids): returnDict['annotations'].append(annoDict) returnDict['annotations'].append(annoDict) #_vis = np.asarray(_mask * 255 / _mask.max()).astype(np.uint8) #Image.fromarray(_vis, 'L').filter(ImageFilter.DETAIL).convert('1').save(os.path.join('.','imgseg',f'{img_id}_{k}.png')) From be7866e632015ac5e2507eb7f1a58aca43727252 Mon Sep 17 00:00:00 2001 From: "Alan, CHUNG" <49159105+dizzyi@users.noreply.github.com> Date: Sun, 5 Sep 2021 17:33:47 +0800 Subject: [PATCH 13/19] Update VisualManager.py --- robosuite/utils/visual/VisualManager.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py index 5557a30fbf..0fed13d37e 100644 --- a/robosuite/utils/visual/VisualManager.py +++ b/robosuite/utils/visual/VisualManager.py @@ -370,7 +370,7 @@ def seg2anno(self, seg, env, img_id): for k,v in sorted(name2idMask.items()): _mask, _ids = v - + #if not this_Instance_Should_be_Saved(_ids): continue annoDict = {} annoDict['bbox'] = self.mask2BBox(_mask) @@ -384,7 +384,6 @@ def seg2anno(self, seg, env, img_id): annoDict['segmentation'] = _RLE - #if this_Instance_Should_be_Saved(_ids): returnDict['annotations'].append(annoDict) returnDict['annotations'].append(annoDict) #_vis = np.asarray(_mask * 255 / _mask.max()).astype(np.uint8) #Image.fromarray(_vis, 'L').filter(ImageFilter.DETAIL).convert('1').save(os.path.join('.','imgseg',f'{img_id}_{k}.png')) From 80e1293fff41976a35d2ada033677623cde5a438 Mon Sep 17 00:00:00 2001 From: dizzyi Date: Sun, 5 Sep 2021 17:52:51 +0800 Subject: [PATCH 14/19] - --- robosuite/utils/visual/Trainer.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/robosuite/utils/visual/Trainer.py b/robosuite/utils/visual/Trainer.py index 3273fa9203..2f513617bd 100644 --- a/robosuite/utils/visual/Trainer.py +++ b/robosuite/utils/visual/Trainer.py @@ -10,6 +10,7 @@ #import some common detectron2 utilities from detectron2.data.datasets import register_coco_instances from detectron2.engine import DefaultTrainer +from detectron2.data import DatasetCatalog class Trainer(): def __init__( @@ -50,10 +51,25 @@ def get_current_root(self): def set_hyperparam(self): + def VisualManager_Trainer_dataset_function(): + returnList = [] + for file in sorted(os.listdir(self.DATA_ROOT)): + if not file.endswith('.pickle'): continue + + f_path = os.path.join(self.DATA_ROOT,file) + + with open(f_path,'rb') as f: + returnList.append(pickle.load(f)) + return returnList + + DatasetCatalog.register('VisualManager_Trainer_Dataset', VisualManager_Trainer_dataset_function) + + with open(os.path.join(self.MODEL_ROOT[-1], 'model_cfg.pickle'), 'rb') as f: self.cfg = pickle.load(f) - self.cfg.DATASETS.TRAIN = () + self.cfg.DATASETS.TRAIN = ('VisualManager_Trainer_Dataset',) + self.cfg.MODEL.WEIGHTS = os.path.join(self.MODEL_ROOT[-1], "model_final.pth") # Detectron default 4 @@ -101,4 +117,5 @@ def set_hyperparam(self): # Confident Level self.cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.7 # set a custom testing threshold - self.cfg.OUTPUT_DIR = os.path.join(self.NEW_MODEL_ROOT, self.current_dir) \ No newline at end of file + self.cfg.OUTPUT_DIR = os.path.join(self.NEW_MODEL_ROOT, self.current_dir) + From 9403150afcd4653a84ff5c88a9eb5d14a1d08297 Mon Sep 17 00:00:00 2001 From: dizzyi Date: Sun, 5 Sep 2021 18:33:56 +0800 Subject: [PATCH 15/19] added MinFilter --- imagesave/1630836984.pickle | 0 imagesave/1630837017.pickle | 0 imagesave/1630837088.pickle | 0 imagesave/1630837119.pickle | 0 imagesave/1630837158.pickle | 0 imagesave/1630837197.pickle | 0 imagesave/1630837306.pickle | 0 imagesave/1630837326.pickle | 0 imagesave/1630837402.pickle | Bin 0 -> 10723 bytes imagesave/1630837402.png | Bin 0 -> 89219 bytes imagesave/1630837427.pickle | 0 imagesave/1630837587.pickle | 0 imagesave/1630837614.pickle | 0 imagesave/1630837698.pickle | 0 imagesave/1630837947.pickle | 0 imgseg/1630837614_bin1.png | Bin 0 -> 1043 bytes imgseg/1630837614_bin2.png | Bin 0 -> 1072 bytes imgseg/1630837614_gripper0.png | Bin 0 -> 741 bytes imgseg/1630837614_robot0.png | Bin 0 -> 736 bytes imgseg/1630837614_wall.png | Bin 0 -> 683 bytes imgseg/1630837698_bin1.png | Bin 0 -> 636 bytes imgseg/1630837698_bin2.png | Bin 0 -> 588 bytes imgseg/1630837698_gripper0.png | Bin 0 -> 260 bytes imgseg/1630837698_robot0.png | Bin 0 -> 304 bytes imgseg/1630837698_wall.png | Bin 0 -> 240 bytes imgseg/1630837947_Bread.png | Bin 0 -> 135 bytes imgseg/1630837947_Can.png | Bin 0 -> 136 bytes imgseg/1630837947_Cereal.png | Bin 0 -> 187 bytes imgseg/1630837947_Milk.png | Bin 0 -> 166 bytes imgseg/1630837947_VisualBread.png | Bin 0 -> 113 bytes imgseg/1630837947_VisualCan.png | Bin 0 -> 158 bytes imgseg/1630837947_VisualCereal.png | Bin 0 -> 181 bytes imgseg/1630837947_VisualMilk.png | Bin 0 -> 132 bytes imgseg/1630837947_bin1.png | Bin 0 -> 668 bytes imgseg/1630837947_bin2.png | Bin 0 -> 588 bytes imgseg/1630837947_floor.png | Bin 0 -> 716 bytes imgseg/1630837947_gripper0.png | Bin 0 -> 245 bytes imgseg/1630837947_mount0.png | Bin 0 -> 352 bytes imgseg/1630837947_robot0.png | Bin 0 -> 289 bytes imgseg/1630837947_wall.png | Bin 0 -> 239 bytes robosuite/utils/visual/Trainer.py | 1 + robosuite/utils/visual/VisualManager.py | 14 +++++++++----- 42 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 imagesave/1630836984.pickle create mode 100644 imagesave/1630837017.pickle create mode 100644 imagesave/1630837088.pickle create mode 100644 imagesave/1630837119.pickle create mode 100644 imagesave/1630837158.pickle create mode 100644 imagesave/1630837197.pickle create mode 100644 imagesave/1630837306.pickle create mode 100644 imagesave/1630837326.pickle create mode 100644 imagesave/1630837402.pickle create mode 100644 imagesave/1630837402.png create mode 100644 imagesave/1630837427.pickle create mode 100644 imagesave/1630837587.pickle create mode 100644 imagesave/1630837614.pickle create mode 100644 imagesave/1630837698.pickle create mode 100644 imagesave/1630837947.pickle create mode 100644 imgseg/1630837614_bin1.png create mode 100644 imgseg/1630837614_bin2.png create mode 100644 imgseg/1630837614_gripper0.png create mode 100644 imgseg/1630837614_robot0.png create mode 100644 imgseg/1630837614_wall.png create mode 100644 imgseg/1630837698_bin1.png create mode 100644 imgseg/1630837698_bin2.png create mode 100644 imgseg/1630837698_gripper0.png create mode 100644 imgseg/1630837698_robot0.png create mode 100644 imgseg/1630837698_wall.png create mode 100644 imgseg/1630837947_Bread.png create mode 100644 imgseg/1630837947_Can.png create mode 100644 imgseg/1630837947_Cereal.png create mode 100644 imgseg/1630837947_Milk.png create mode 100644 imgseg/1630837947_VisualBread.png create mode 100644 imgseg/1630837947_VisualCan.png create mode 100644 imgseg/1630837947_VisualCereal.png create mode 100644 imgseg/1630837947_VisualMilk.png create mode 100644 imgseg/1630837947_bin1.png create mode 100644 imgseg/1630837947_bin2.png create mode 100644 imgseg/1630837947_floor.png create mode 100644 imgseg/1630837947_gripper0.png create mode 100644 imgseg/1630837947_mount0.png create mode 100644 imgseg/1630837947_robot0.png create mode 100644 imgseg/1630837947_wall.png diff --git a/imagesave/1630836984.pickle b/imagesave/1630836984.pickle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/imagesave/1630837017.pickle b/imagesave/1630837017.pickle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/imagesave/1630837088.pickle b/imagesave/1630837088.pickle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/imagesave/1630837119.pickle b/imagesave/1630837119.pickle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/imagesave/1630837158.pickle b/imagesave/1630837158.pickle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/imagesave/1630837197.pickle b/imagesave/1630837197.pickle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/imagesave/1630837306.pickle b/imagesave/1630837306.pickle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/imagesave/1630837326.pickle b/imagesave/1630837326.pickle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/imagesave/1630837402.pickle b/imagesave/1630837402.pickle new file mode 100644 index 0000000000000000000000000000000000000000..05175414749727d61d42f497379fbfea3b615fcb GIT binary patch literal 10723 zcmeHNTdO2XR_-&-l~H^U5foH>@eJabwIXkO_rCVNR$d~a?zhaUtjx-+s;pa%ebG6B zAjqf#Eh4i;7{Nz>fC%D)uYxZ=`#AVNWc;#r@9EvA`W(+35k#!rU2Ema$jFElYkh0Q ziu%JZ|K-1Z>&fo(2X`O7{>H3W=kYe#-Heqwj3z zcdx&?$cy>n<(+);!RxR5UXi_A?AWjGo`{R=&immH&E)krlkK*AnY=8@?Tfq7-G|jX zzMQ7zcdLunzqoz1`Oe25P0Q!`N1IpcmqqgYdGawje=$wg$@9A(+`azFt_f)N^5gI1 zmE=ps!QJ=&^iS@ZcOUvc^ZJA1JEfHOV|;dB{*#w?>E+k&?x*zR?vK%K@pFq`xcqv3 zU-VD=qCbBu%3pt@8f&~MGw9=2vixN}efhlHijQ8reEw?s^40VF#Ybq6zqot-wTtq* zvTFB(JO9b|@YdJgoF*^xdHMX~N*(?OuYdMMKHucqdu`n9H1VSN{k+lyw1|KC>#t7B zSKF5_?k;)K?6BFGkm@CDZMRakOH&Q{{t=O8BGy!WDk4okizamU>J_?Nd;`7R&-Xnl zXg;3YeXAesi~j7fC|~@>;x`u``X4O5RdxScZwI^h?aOax7^Sf~qxs;JyW?k;Zv}=j z^lpf|0czGFFfc^h?`F>482{$+tL_K%JNu%)-xvM$W6@`h@nA9Sv6DG-8f#XDVkIyr zsBoveihcM~LK?2)I-c!zvvgmffARR8_k(>Sd2D9ynbPMU?9)7IGmo8|JTnlX>gZ0e zqLpz^C)Q4<^`N66q_$Db!aIp|yS>;S?t2#d_5KW^ebEmei#}7gzdFh?I?5bV?gsYw zE1ULtZ@GW|anJV}{NBFk*Y-u9e@NdNt_`tvc6Jz;QpjqxF|g{3wIPkb#NT)|-yhvC z?Y}qJ7yZ?~=+$GwB zxShwZyw_y7FPiL&KL1#MeKpMKICBnaj{9h34S7&|dX;9qeFeUG+hcF|V1EQZ-WUDH zW6@_R@ZyiY`s7K^;GrOVuL9jNxD0eDs4ZzJs4poOJd!#QoJifbs3U15-VDFv(~PNO z(8{Bpq=rQcN$6_!?)O9zQ`4l8qOGK>fM9gyE~dXOgHbm;}fI86dJM`O?USM@j&SLyQBWZ6PVK{ z#)*N&1|{zfd;h8bdlKlZ<g1yy4x zWF@T?`-!qz><_eg9BAv>pOdvweynLA?Uc3YNAOjKVTlv7#ojS(6{SLyfjJ}3qNjv4 z-v&;HU6=ZX)AzleuuJKtf>LR!ps;C8)c0w^G{IUi4Gg+G&U1=Hy}yI6-2k_;CpW4P zTfC~T7viihy@lAwx!f8ZV-d`P6%UM1rZN*7!>C!YP7wPt>gy%Ndgy1eYwEclirbki zO|#>7Mcr!SMqkg&vEF!O9A{)i=17nI(?hdv1$EzCn%whsC0u$dT2ifVrnKzlD|`7_GN@0*eC`UR!rr{=-fuT9LS6aQvx9^}3onkx5?Li0NFj|b*$;X57E z+xS*{_uVvu(l;7r&`KjLPIW!f?tuGZrj`mmPF-D6PmEOx9O5awyrj&GRO#h( zQc`S=R3Az@*wVsm=z(9-{8MRDxBVus%~GwsKDVvq8~C~>sUOP3$VC{$GB*;@4^p`> z#-bBU<;EC^66@PGBT@KM8JZ)J;5s#z!jNrQ1|@AoOLyfO{?O5(Tv3k)vbN@yUQ+|e z>CL!n*P9piQV`1y#T>#SAn8O+hE1BR`k9 zxe$gDRSsBvBZ)QSj^g_*chC2Oz0Br4q3=DSA3ct9_fh-vhrWOP@{=ch1A4RGjuN9q z-th2e$jhM*w>LXH@~^OB697@>U#cPew#kKmAtShJled5^Io2((?O>$+XQhEv4MOc- zEsX|8!B7X+Gb32TgQs+@t`oy+2L+wf=z3(_hQX2!JaN4-P8)$Vubam0I+&7T=Xxn_ zdNQRO^9T;+EPdZ1KVX|EE67cq?&x#l`*flr#6(p&SP01 zFX-r@1XhTyZiAM%-UOTKS|)OC#v<|)nSiFCA?O0M1G)t*jTq*Xz^r0;-WX<@8RKsLvyH7f5u~T4!|4m%G?ryOX(G&X(7mfwk^Kx%8_4)wTayZkfV||aJK*K3P6~RhHJW@9ck*S`XBao$tWDN~`j*N?3cDYndog2{m77?kXXU0hw z)Y!AGQo$3s=G&1j#F%?>iU2n>@WPhr%Sz4hvZTj!!Bm4b2^d1P9vaRYGJ@&k`+Pxzu)$0E&^PY-D?)>!~dvTWC4dL?Yo+)2=d#iBEl- zT8fsCSX}osGQz&ck)?+oMF+Hz)bVhOIu18)bcZ?h^+do{Y3tG01UQR9fGLPgpk~M^ zk&ZH;R-I9*M4uJ92q;ASVRDSQgili@C}P^eMm$qTgx(zLmX^$~YD10CZ! zg?xhh6SPaY4t3UbhGYW>gjfiNR&8A%e)d#PuMj*tYM>)tBS$FkR0tl=$sGI$d|ju& zuO`RfTgW=_&Ceo4<5cz_zKQ_osceD0iFg3E#3IxpWIGAq40%h$W3V%@LB!|4MQ|AJ zMIukZjQKW}2VfH1mIw@#;4X3-76~I(Bl9s6M&5YaW*ar9P+qqAAYljS3#}X_{4|sU zs7pRm2mx+Z5src%Xrd!I$7O@F93a z8)zn$U9@lU2#=3t3w(#MN=U8Sst10`SS<|B~E!@ycPL|&5vJSIqWCO@I2ijh+#m|~GulDulj6 zv4V8OIZxlv6z#^GaRNF49iwH+DRlo<*Kc+Fc-^KdhrZ|Nvx36^Ip4VKzzbu(jsS{7 z>{W)9Lq>WevG=Xmfu6_)U;ykRm}~+YM}Pu==T=RD1jrPD1aA@I0X1g8trAEQega`) zAWsP7=|Ua>kz(*2ye0zj#Ig^*34RI$8v()U;1lo(cwj%DPUIZy3hePjuD~Mw;inT> zf}MkPCOh=R28pf74pLLF0yqVnoq$DWz}}OHk(ky1y%A~;6+RzE>`o*GVn=+FNE?V9 z@l_(90>dMImdZ1P_exiQKj1nd2ogu6zD@Qc0AngQVBL4n?~&SCXb@s%7w?9m$06!% z=z0ie3xIqdF7*)Z9>QM&rN;^u36M?H26hJ!S5W$r*L$#H~c>dQAw`#>E(At%2>MFxs_u za8#cVh43$09aHVRdr?hfQlrq}MNPLIKGCxpjgjxV=FAF~u5opc+SdzrhLm@xE4s81 zfCsv8k1kYh-xjWYZKw9l%oVkhsSP7_t>8GfRp0ec05#mBIZcC}R(2u~zk>z#`e_jB zo;{%%sfBmGm8xM)P!@=Fi7F;)2hHGo2ubEW8(F8Jce%BWXYS?PK0QJC^`dK^&fVLm zUc)-gJonfw&4gmFwlHsVgo0RIug%&b$dRU9X6%N>QRxMQce$h!^LXtU6Zn*I+(1fB z*A8_}(eQ<7=5}r9T7pje2>SulcM?0&6Bq7mkM!J~BCiTj$v`2-zCzmPVy`g>j0-ie zb>#8d(i;~|Q9+}AjV914p(;mXWYZ`STd0I!2;2?O1!_bv9*$kzGm$)2MaibDYJ(eW z3l~F_8&7E)Ywk}hy@cI_3nXC8j)Tlf=I7Y!7$`g&~~ba4yu z%xiFIA!vI|URozJ!r zFmvR%rZdNA`^Y7%rh%6$k=1UR&eL`6CJ=2$g@?4cad5_s;_uBSI2v0@1g5%Gu=0Up z92l2sQ8U|)-qgg_#+orsl8kljDz&FHa4)7dihJ%s?cgS@aqPJBn$vgudCeR;GOL-9 z;|$%a!aDAHwYhaTsJ`u?=PfK_;K{TrbUl_jr<#Vsz-@zOPfUor# za0PqK?3!ZK$W4?bDx`{zD6DGT*vTnsVOIL zNpj269h;{x;VKh)_*m8EyltaQ$cMUKS~{xG$9&kuEOR;6I)_8{>J)iguyGuF58Qni8u57;Wa5bTW4ksHc6 za)zNo$pAazffQS$L#3($7$-vCF0iHRt4MQdF0kwEsX2@pO~$f^e2OgYngtJ$F`QtF zzCQRe)~%jygtRX@wK24!R>BDS+36wXi;tV{B6wh?{+tia9SZpa!1X;<+{+!4@vZQztnuu$5X-l|&TS z`ZX~NpbKhan*c=}o}-A?=2&90isJ25Zq-QCG5ER;afmRNOMvnzYdF(bgF zrk2Z*1K7~qeh<#QvG>Pkkna(_Q!n^w3$cHTGf337Cij8z!KCM2g4KzUeJ84iyk~{H zrv+MqmZ(OyM50!pAxs##V)8~b3=l73l%f*V4bW?hB}XP1&=~9lY%{1*I$qpAw(*hq z#=NaM^Kon#bJIvv;ll-Do`S`(0EeJcpXw0BU=zP8=kM;$aTnEB75ON8#Jm9u_s0I4 z8)kwN3TQdz4%jYSAM6lp(?_lqqexi25=R1{I7K_gj4Vhz%oviwqr;f%kRT2@F-|S8 zfAh$Sc>u0NtE%#Q>dx*@AU^3g}DKwmGYpmF4#6Y?ci}#oz*rN zbGN##PT=sqpK_D-UIqaoneSRaFNUZ-Qk4(Hwa_YyuUz zz#A%iAnrvEbcpL5O~Ut5tg;BPOF-%*&Lin;gj;wATMkO|Aat*8#n86bo{NOhGcGMG zs9T)r1q!Od9X#jvk(|~5HZ`3v4 z{Ujb{svFYWil8Cwt?-)CHoT{FWwUogHFv{5;^H z;isqs(W?u;+oI*CwD{>&3SYKi|JsGR!UiGQJ<_U7=QmCsA>-@1Znp}2Yl zeSt%r{uUUCdG@#hH(wOmOxLB!L zSdNQ)Ug>)irdt*iAMmkz!FT$~0SsXaW*oP?7;ZP#_Ee z2KZ{|!GNDl*nlBE34Sslc#vVsAk0=1EmGpptg3EyO`TPhnN^jQLuAbVc<Kjippzmfuk8OV6w{^NiYvEBhA3nUgoO#zTXKvg-e&wLz8d_2s2HOA-WZAd9Z zeyCqJ9tYjDNb#GD4KU010KgmHe|x)YrIatq`~SwldxsU1un;8FpoVU?D4Js1u~Yn{ zoxIboz0DU@wfEjy+wFF{-ELWy*4lQv{ru-%{mNH9YR>%R_qRAE6h|oQ>1*mV)FtKa|2NAF#qd2Qm!gyRWEb^OQU%HxUG zCS05Fx%uojH}Cy>^37NEeb)hhsp_&Uzx0LAedWtvBmwekfB9c;t@*E1m87Zy_~-xp zpU?B`i+At-1B3{|C2t79zA{_hw-hn!)_rT#psSeX?)Z)ZASCvOzHWP0Wn7hMG0gzV zo}C6jf^KW$JF~IUZj9DjgBvEl6Qe5*3R>JnDW%RVWtbj+FaTt%Os(^0ky69_nVS0(|FANZI5Xi z!b6Q!byxxa1x0c%(zwOu#VV~E=|9&AM#VHVv6$O;K4VyRFtOJ&h` z1c{p(fXLTPq?nqif+AAjlIXgk21&6Nn#Mx=vskV#)1JlUK?rDoiH7lrMNFubI0fb& zoFZl>99x*W2gtxOLmteyuWNz%99a>Ncn?`b-hA^%kDi=wHk;4td!Ic#J8}^(m1M?uOC1BM;{)2Z#)0e7e4#TU;Kit5X-*$l`p>WgEuu_ zesi_f-EP-fBl*KOfBeD=F9a${bYW>!gaViwa&w2+l`x9rc9@93V5XE3o-NlZ|H@X} zk_a&Uu5SqwB*zw~hqT<9;ZkD3&6E^_4eyZKCZr9VNuUCNYI-0WyC@Vjg&9OvAf>Q9 zt)oHBTr>?p7@6);FQtZq!MII-zz#@a49m!3LPmPr*HVCH!ZnNHn9)!LRUQVMeEpMU=5>FIf`b+g&{!yX(Qkeugvx7&$7wLw)K7sD*?GenOJ za~tatL7oir5?0WSw2ZCs#T3&HGx)wBV@M=orQ1St#Nw7qRW(d4ORXV|WFl*E%ngxE$zXke*Q>Yl%Fx1g@$1WgqzBBG|I z9Uw~?u?o~oJ4#)hriJmft`Jg+8*z~upD($x07OK@RN?N6drGiA8bi!WVTKdqQBqAK z+N)AlFX8Gqa000o&tg#R4IqlhST-|Q2PeSs7@$3(9aZHT%2N{5Ig$k4{?Sj}=l^Pb z_n>epm;^Nqe33K-1PwI6?cLs!x*`X#Acgi6Cc;Ee z3WtoX!86kHo5Rw=2?MAjf45kYd)U;q*0K4oH}q z-?kKRMG*-#-5j{+ht;11lLXrF+YE6NP>Hc59HJ1h zmP77B`^=N?-2Z@AFMq|--rafW&h6W`&dx5v{fYoMKR-V?Ik~*NeEj$cMPMdnJd3F2 zzNq@nI|BrgBI8lOU;u?B z4nS^j#9wPASxPap$B!RJSZujOPNA4u@9yV)EyP(6e{M75D!9RG!4eN83l?@US+7`9 zkIt2)`f4C41A}Sr4jIIQC7AV|0)`=DiDR7wQa5vIM(Btn!oq@PDsWaN5pYs894bW- zGp7g)p%@kl1ONy+5+gz$(rdP|lly`ak8Ht4CA1&>Sh82Hc%k=cXF{AD(>pUGDG~V| ze~OGdT~(AKAXGcXB~|yBATwBNi}j8{i&}yiRrl4g)M4<_{2>%^a3HC^{z0qG47xC( zs>Ldq!AwYs+<*AcZ|@e)Dj@-=*D$w;6e&fdgwuhO#~%0=q6(`2E0~1tHzvVcFc)qL zFPijVu+6yl{H_vmeb(*GHtBADLzWUX#Isx?l2Y1(7bzNe9Ykl1l=fq55 zN`v1Wk|T=^QMD8=hw@I=SzaX&k=p}P0;Kfbv^7`1aJgfL)nhQr4Gc##E(j5hAQmG& z7{cOWahMwzQkW5+F4)sWbvC3EYM?7m!em zKQF?rY3d3hZITpP1i>vld_ZHf-dupJcZg)fDB2rE+y>mg|A6F;tM|)cEX|N_f<>g3 zB7~H(-R(#&tveT^fB=OwSn>TKATX>EIEgA~%1XR?`rUf|y&s-@akDwObLUPe#TB5G zGSBm8KJ%HcfBoxDNtrg^6hvU*aio%>y_tyn29nMlNU6gFfMVJ$Rm7uNx6+cNB&Y+b zCdC4%f-v>eq+{HYE`(-kK*k=am?GBI)aZaVO;W&EcN^Nn{EHA)nK6w^Y_JuEphx`A zjW7-vL4b^Ws+oF-XE0iXq-hWXhoxUIGl&$@Km@&zU?#k$2X7fg*s#DZ_z@!p1T#}> z7V4h)*FB?~qyR_2;j3GRszKH9g|C429#N73X=&1a3s(P@h>itxHats^3&uMi|i5x=697@EvmN%+zCW$5|aHl(I)t#zzirF|ESh z?TZk_)xgYX7FL2%N+mFunb@d3HgT1m@s&tCNUn$pKtb2wCqr9(k4B6O(@t?>*C|vW z;|UCcZExQ^p4oqn)zgKJD(R#aN-1dq067F%05*NrId&mY^hY?OC@??#;O$0L299B*!&Z>^=l!tuD z-K4_AzeZ4<*%6O>Vel*ME4mA#3#D2D@PR$z$~1O|Po^1#43mIZu+#%H12aBW#lVk@ zAk_Wp(0owLIz=%2Mn2*2uW8ZU4Gt)ab&KG+n(o`YS51+o+;u>ey5|ta(#PVjk8Js$ z5DH%Idb1s*&YP>cIXF5vl39*f6jVd&+Pe0gk-pF3}sgJxD}=rwu56OGK3nNZU9&WZnI(|fJ~v7Q%jWO zi2PP%Z-o;@1Aqy|p(V{sZC$jz9f6CKsjF?o*5gsY8d_*H>q1W>>%hh^3n*z}ygX3z zG+P){v?U%yZ9Is1lrQ5J-F$L{H_4CL*j^IA-4E|^ zdoIUF)aslXuDTUdMaR{ar{|Dr;KAXciOidW`CyrrHZ|QfRRc}wWhAiTn?smGTmZm# zf4^OuTrn^SN+}*Bl~QW0$gF1Em2dniRsoAbKx3=)X~}ckB0>AwSg4H99L#z)6`)bX zQKh@W0P(`&*+$<+j@lNIq$fAyHipp(nHn^NzaJQuJ1UC;0>ynvB=kdNnT!g4T0DGPDgP-xYl*1Ii+%MLcfwXV}NshX5J&GWRhy0q>}lR=5E(Iha1hkDvr&|?EswR&V9%ddL#ieO5*&J zIBp54b%?^hQ9uE6ca++>Le}b^PfCCslEFd(s0`aV^d|n0ggP-AyDob-u<`*Ik-D#r z=O)(r0wVz_QOxY}Fx>8HRB|zWoiuiIPv7?>k(pJETb8^G_rw1^)S_lIRRnvnADaw} zpW83Op#Ie%UDRD05cO$c7Z~_wZ-3nTz)q2@5ovII;5giP%l1NwSvARVl5;zEnS}kkeC^o!3$bg?FtGx#>M)>>xQ0KL#GQ zG!1zzw*#vb_}`^nUoB=XX2Q0yDURdAf~T_`qT>-)CMd^4rjuDsb}F5uGQ^({^qg~U z1OKJsn~HF#C+&eOz#3MfPGRZLC0+R}B`bgHdXuaE#>t*O_@J@sF1 z?^|C#|KyaVr#S42As8UbXQVIcP}u#=adSrofQN}D2yl(V!ma{j}@t}<*U zYk~R@SV2~phRus&Pi2;Njz3}SMOJ6J;nt9ewCKn(mM}=e)z`d_cyg$+)K#|KjjAFA zNHy#z=o_CaWKpV`BT;UW#0AK3dvhDFhxx4v`q}&O{0X0}ATkg5oBIAA}8V#5K;d zq*0*jT;xH!T-0{T!-8cL8haQ(Q-LTutr&`_T2r&CCK6t-sdh70A+_;zA?~05!shKC z8sgbt236d+apUy#H0s&+{sr*D3(q5Wm>KcM<7;|L*9297Qo;=Ra}h+c?;L2~Jj?6L zQQ~d+TVG;JS7Ia3cH1}J$<>tP@ujSiWEk*#jpWhbt1zL z1E$(V%E*L=;djaBszrHkPFA+ zCVd+~DN;#1esW4ufo?FvWye7-x50C|P@up>LLSt*nyH$UFugEqUCpd($hQJ!m<#V; z>i6HcoGS-*FygS%%xbOP9cE^|_q%uRh7PPy)*Fjp+M}MqG@c@jaTddedT8%OM!EZF zf3YCu>6L9dLcT=t9DR=1cNo#~JN*2fIK>^Vj8K{=Lk3~1MGYZQi8{Wh?+}n8RaGq- zL5yZz>t?Fjn-^xR0)v#Qr$m1UeAGG*P4V{($s5+d*3zcrj3a1aKz?LRRWkAB#s8(2 zT1ASp?Ib}Vi+g9kX!xz(OuK2*-jJE&v6LE>3rMTZls62Ixd))aGKHQ;%)bX2vINl5 ziTXW6MHt`(MUfSeDrG8lk|H1r!c}ng{8F^v7f2+uDyBFuoojT4ZJ2a1=~N)OR}6U>L1X zny8BjfwOEtM>=*Oq9?CqG^>dy5b#ta7`<*JqZVH~MJ!UZQLDp|7_y8I_f=s1d6qJ* z8l7c7`N=lW0^!wL8Z--HtwFfeaa`in{LFlnmm#IwAfv+Gw3*l24AqKd6jCIU0BRkk z-jSGy23XBS=*bAro>Km}g6-+}8uO%g9Hm$=)xc(qmezF2W@h*9Kak+~7=qqmkzzFi zjWB^KiYK;cCJ?20QMpjogs63O%L4xwz~BGB|L*OB5j3v2Xco5CuCA^awaqN0TwPuH zUER5TE8(1a@rxJ#d04p`?-96RJZ|7{?F!QZF=+42ffOk@U}D%v9qW#)XL%|%h){0N z$|Gbt1jPo1wgJK|BWXwT{ytdr!`B4A!Rrz1)?F>lpx(nV%`g>`Qr51KXo2_6Nlhvz zZ-{G6fth6y^_ZR#_hcC$xtMvwCM;lD%&}Odimrz?9z7%P=$f=(Dw6{y%v3iO9o;4?QL9mM(V4>!r%*;IYJgmeD|jnk3QHJK_n0!ds_Hoy>Z4ERPu+ z0j`N8hKG*EMg&@O+uhAAHQ-!}Az5f3O%xL(hoGox6!;5FO-k_%t^sTfiqVZ99*CnI z9fXtt)7%m!95#}Dx09(NYHZ9@K}~O!xC;hTVNuh)R^?$dnQWSWw63|Kc+`pz*}x~M zxg+IiW?;mWaru$Bg?9!AB4IjZ+IWPvNU1PFe3n56B0E2%#k{Y=s&kA4ytz5O{oW&F zD6C_kNJ6Y6G_abkum$?$$(b8q&w`Oy)Ce{r_*JzDFmg!0(%WUcRolE_0MV!GnS@x4 zC-1dwA6cn2ax}yHkM;EQ^y1>e2dFH|;=k&>KX>zbz-z|f0-s`(s3FVMR3qmzs@}{r z3XfxRvtpVU14>*tm<@)2^#-r4umM*r1A<7Kx-1Dqp#$BdsD~nDW2ysAGaDcu1f&*Z z5SWcTBH~4w2)i!s=HQi&X=pQa9qPI6pF_IrBKPzJb8L{1#l1&PGD>$ADeJTz=|Y0t z$*Qu#@lERv z{R?yGZ>s1D1)l$;{Dr^$Hx=mqW{WSnq8a%7?I%y3oSvRuU0rRrTc4lh=Ks0pZX)Bu z(eKM>Jte^q4;g|KiF03bDJ9B#Eh(cBE+O|WQ9E2`4AD1Z(O!d0;xcwYgay$q6OjRY z`&KNLpW`DM7!iVVO0f$h$?QE#BOLb0QNFAED(&hme^P6rUo+Lwm6Oib!b7>_4Uj^? z5I0rs%iUT^G+<@;0s_!zaM<^hX32PR?OOMwj)e&br=3^!&o#5oGKr7q@LTN7h0rYW zY4I%xWS#+LQQ8%02#okgvy(b;=iritV&DDno=Ca(-~sXx0t8xI7O?vd9(hHYKTtPp zI~GNujjn>|fzyU!|0z zqoW9dK{XTMw)-#$TRXmdDHWA4&x=JQkSSKK0i?hAmw)~B?Z0@#Vbw?rjE4bm#?9&J zY01oqsy=@F*vxwGU;5JPAt7!Z_HC>tuQh@Sx=|PvWw`~u32Mm7WJzqvF*^_-Af<{3 zrDRMTf(Y#db2y62P=u865heJP5H?S7rxYPL7aO6Pn;z9(wKtY3E-0G0B2ThrBx@_9 z6pHURA)ci0W^!7lfk<)9Rs^+fWU&-`7tulKfIv?s*aHvmVJCfxg!@F8+A!xByXXx! z@NC9PS!YNVpQ7e5;duT;TMSGkB|Y-$c-&2~2$Td1V*|VzDegpIU_h!gjUHpT8~o09 z-}vF1KN_YTtN1+onx-j-u(2LpYmcA;Ar|%4FryF(V-6e%+aC(&EnuktNJEF;`>F1Z zFFY@o{9h=*@cmZ@H^rp2Hg50q^wi8+YhEQ8YwBH*hE#sdvM3m0oQYSdxJLM2dGO## z;*e8;FegiW|RvH=$3@P^_VTm1dIS$iN^cS5IBD4}$b_W1g%>;;%+fzV{ zMh`a0^gZ!Z0AbNBy1EoI&kKQ|m8^bqfM{d1t!hN~qm2o%R9;6NLm=IpM@+SDCt`X8 z$Le}r#h|)}h5}{}9zOE$WMA}$CXAP=mQo~NB$w%0*R#`|U7K0FutCiUsG?zHy^5g& zRibfljM=28{ssTZZ*IQ+_B$R6^+>5;=z!nH#jfpaH*Q8mE-o%q^^3ps`B*>_)}2NS zRz`CEgume_tQ*Zg(8Is*&lym~2Q~(89K~MIAfU?UDd#{&&pumznEKXYmk$n@Rz^zODPv_ zWQ`Cr0|z-%q?8=Jn(IHBvxbWSD5Xj@0M=vbhY$IS_4nGnF-QtA&clnaa#cC{{G!U; zEwop&I}!^r0=fA^t}Q;pJ9PV0v9G$aoWY1>5S;OY$6Oq6!g;KKbubOxa5PQ8 z=al#ZAwXZObjZF-q-j&j5uAp+DlrHXcZ9Ksrn(T5WS_1f`i#s5DB=*N6?4;D>?E-h z#(Q(?E!tHW7f@~ar}<9XbB=(Ts&?(2z!%`+&1SPN{kz=` z^NC(KS!pCiJ%i)MBRByMjI&a~4SxhOf8%rI|NTd8n|&4zd$PnjflwmHB09K#l3o?} zh0nj5aazKL^tWc+w3j*sWhcz__sZPj#X=k{)X`H40WIeM1Ou8_GK^iyl#7r8(4O8t z@9*gV%2c&A)$a7@(^Sr0)vfy_5K+XcrB>1>B>Gj={J~fX$=(~4Wtv@o{r-GZuWE;n z&RsPeNJNv`6Lvjfj6h`hD;s0yEdG$itiy}yhH$MpqlgVG(;_iFfVouW13EikU@iPNkzWF~mH~_HQo_pqb+aW|_)>&&oB3MHxCEEQY z>NJXorU(i=o2I5>5_{iLT4J(Ig7vh$DN^fi188M59EzS(%u6)w_qLQWdqIJz15M_w zdsUL(eo4>cpCimE&;Ui8u^BWj%>A1$uy!yRA+9Ffw_676iw78szG`f04Od7i#k9jz zyOkIVg%3Zx&n(Y!(GM7=YGyukgygMTw=OR)nXikB3lW)5ZY~cn3m)w-7wbv_RnQ~8 z%M@l%@vek4v%m4V`k#NR-P~}|C?O2klc}_kQ}bu3!lf^k(V-^+UjM>pF)FemnTbTC zKC)nMfHCQz95O$~y?JbLWiwbYPjw}^5(a5>;iW4MB}33D!03PkhVX=xg{AU!*4|60 z2wC%rx6FT;LOaBZ-^#$%)p3~P3yZ1UYNk@EMt_6fjhQLbOp?xz2*-O?1d$F;Vlki# z5TSc!njBh1IW+0P(~3SdoKaTGGc`Ohm7DV6L_PKZg+?*P;2=t+*cuNJ=v~!{jJ3A3 z@jl|gM<~QFymUYAyfY?&ryVlK2T)|Kh=#>r6;dN4h?s>#iF6ZQY@LRy!3jlx>N@z73;mD2SpWBbxV(78UH3>e5dWI` zHCxgHxJ;c}y~5QnS$>DV{Ke1vaE(}d%MtTY1d3>PjxEp1Jj*g3CR68*Dl0xTvxjcb z49wzFA9E||0xZfYqQugIM2UJ&Aa*T6bcbFJoD@Fa)=7UEM$qf7Ra@jb!|qu%?Pl6{ zjqoB$M<`uk1bc7njVwOL6r}d zZ3{rDRRZ5fZamx>bNn*sCm8g$04g#ivbWZD?su2nl}Pamlv1=e$ELogzSfo=-C)Sm zm4$8Uz`4)-)^@yTzaU7Tl%hOd5)M@M)WBBf*Kz4 zU{FA=0AKk0t03ufk7?RFDAw9II?Y#}25rs9qNN`&)9xlidvmuH%(WwLCTTYWCB(v^ zl=%h+D77Ft08?m6aEGCkDP6OHqx}f2?WEQcGxX`)kuQG2^E9^#)uz4qTp*#L)GB52 zpu%VZwq-ZX8)PVrWVB3;r3^X>s;W&y#*it`j0RrM$0P}_sfI=lk?JRcG4XwPR1p}8 z2&9-=mUk-DRGZl%Wdb0SJe|uAq42l_IsBFX}s=ZTOpy@Xs zfr;C&nB=pTBzvum`TH5ZAp>Y{&cMC<55DugAG-7d@D|%;Sw`T?Y|1%0I`Ym8f2U)i zuo5SC^y0@;iCmbQf2R}%bg ztEof=y+Nv~S=XHXHjH>2Q{@3zDV0*j$&wULg$Y=(f1kz_Fn-C7!cSXlr!TX>w{nbb*22Rb#!3qP(Y)u&U$(kubz2~vS=v4ZnxWPHa~pxM@ws8`SKTY zi=CguG#!K?^u6odU?QG_S7a|ssWk@}3n{(rdEdf5XfltF=MH4u0YLe{es-^!YPp|IWfi)*V?<+T4`79l+yhu zQlQ&TSftcx-Wbe!_i`lWX#-(*B>L`P2JKD;174I%I2jP($uL*zy}PY)u8|ZQtL#4y z=vnCFex-=Wcfa=ok8T0D^j}_Hj&1hQvtDa?^X5&TKe7tDg_~ z?ztPQfte}rzBukM}EP4@z5y1>93TcuO5)WK#@F}+bB%x4VI?{W9TkRNgD>KMPIF_!x z0VpM!URerD5vd02ed*o<0Qi7gCPlymUI4_aaX>%!Fvm&`#&QIK0gS?RM$?aXEhX5e zki~<6ct$UDL9{Ns_4ZE&jOo2!U0pftQ%X5GIXO8w8D!|`>FIs~_~y-f5vOB1KB| z9b#>$qmLc zAK39t)-{k)D>cGsm2A!op1|48-bt9m0Bbm7tljS&N|6#?R8@pF&PDYA*UxyRt=5aA zpF%mD0y!o<`X*Z(V9f7+@B3a>=@#A3sTL8Bbhq2>cDqgcf}1yQ?&rVG&(FuNPESv7 z+_>SXfSp1F8^W!HDgMT1%OBm>|LTqY$`Q@bbN5uSOWUt23uOD%{{}S0?%=tD^5|!9{WVebGqY))?{61DEB92b3ZTsFFER5dN zLdhC>msuCOYz-M-M262rrsuf{VAjj^5i*a$8}|xHjClcqMQ^pl4Im1hoIgd<$tAOi zqz@et0V$fFC49WS*y{zA zQjk%2=!6Fc(Z9x_17^0_Y&M(C{Pc_D>FMd77I8$t0B+s71>jS+pBs+dmG7wHw_hv& z#dq6}PlsUyMv0r7DocGZsF`y?u1g+)ZtDrk>`lN22M1sLrO%t0>+0}7X707Ps=5?-hpri<6z{YE z(A%QDX&hBXiqtweQxI#B12G+9g%9yN&*P=wEk7}tLQS>z?g&ag?#{pW$3MW+uW6b* zx%<(VXPt%{GYi&75rY zfdd&~B#k+^5><6n5(NcW*9nrIOLK{F8>~7kXoS3oX>i^j9ZmjlLlvK95RSwGg2aj< zDyN(BY%JvV1xeygGfpYSNSY+qsNrlJhp3-fL?c;hR(6PpR8q{(Z4QZ`|A~vm-koOv z?=H^k;bNLi`pW1z3XVuEh;(xA&ULLA^$}I#Ur{IK13jb%ecO5tt4ggA`)`?Fw=A`)Vp>Pr` zrAmwmB}*cu6)Xj8>v7CwBB*3VDK(2mI4}cqoQ7AD1&x*KUz%v)h6i_mu`f~| z`}+FVzyAF5&-dPcF^cf|0ULa+FCk zzbIrCPJ&tJ;J3-N|LG)Oe)%QS{^c*d?$qu0c`h#;P^_OG6OBSzQq~8j=IQk?`3QJ~ zL5i4}pNWQ{3{F%;0R?>Jb3leMj37hM5lA&{t|HFqa8Mw7ZY;oMED*9=)g2LqWR+5M zMAP{s!yf_Jybt)nM!DM(bpb$xvrcP9*&NIxvQk7O^SQM2+P)@^vgh|7qbwRqhQP zp`~$x7(q{U`BHj3;Hj>U%DvY+_}Ab1*0-)-zkdJz{b`zR-MY2eY+MKG@pIGiyj(pX zqSSd`|8qrydh?uO$;tK#7?F`X&2ZI0U=5r-4Cdik;w{WKUd z?X0RriXUhXMUT2&FzezXREj{Eg9-4imJZHy(9-?^NZVr?m5UZK8PiS1g2mRtto6n7 ztdYO7$P7pg)21*O^So~o+I>Kfz*M~2dEB=z8E7!Ij;_tYaeShn@cLod_U_gTfa4#} zf_+p6{D)??-EN;ed9p0a@$oUq$B!TT8(M4kPhS1x_CXcay(6-R4umojRYB(z%mgS5 z&eYF1Z-$l)16TE_0AQLXef$BylTGo^+<}nSZhY#w18yJry{oDOh)pXa1Wb~$Q0<~! zoffh{Cq{uttt=8Xm810-<~82R68t#!>cE%=P)w6g3PYK21x7JQt@Yqw1JIPv=1e^i zxid@S#1M{W{PX}~&w9wwW?pg>$hZ?Mu*4omo)@peu zcPZuI;9yyn(R9170HY3~l(H<#qeqX<&(BLK&p-eC!NI}t@$nmPys^3cxmT~=ECFe- zy7XK;0lGvzi5Qhp|2)b+$0+`XcKCF#jO!cTedq1BA1tTaJVl)JA)&o@oPQ|AXZ3k8 zrwfmWksxWbXjFcn3=@b4NWC5Gb{V% z!$$)})iW1VEwk|2(cvKorP{KfnO+-?~$i`L9lggP3vSu6-AhhW6T0xkDV+`m<1F>)FAjZN1G7AT8bI1 zo6)?ya)=a8Nv|MNLIsi|as#$btV($Y3Km>kH1Z+k#8Gbh69qPDS10qWnVo)S%fEkgE zLd|YnJGyyzezr6KBjfA;x;_M`GXrpPax%Uip>uAxU0q$da`xWmYtMi0U;hjLr{DcUs|SaNli$GjtmIP6KWGex>)mPV4wEPa zHqb{J^en?O(q~3%^k>6_G!g3nvWeQ%mPMi3GkL%;fO#nD06YO{G(ZO<%>3zE^g z8U?kokWMn~MXUSLzk=KlJ`1(;OaN^>x~VzsX#i1C=Thq=Qq%ybgt0N}S+NYif9Iv> zy)N1TRhH3m>`O!s0b@j7@;V8)yyn&u_tukP$p7;;(ikE@(NRO;1=$gH(4mfY1%cZ) z4<<(dJ?Vo=4>#xeAU%jPg z%evHlpPE2_aQ_ec=6hEs|MH)`#rdeWcH_p45qLcFg@ck&xT>nZ_PG}$IV!Lo&A3qz z6)~ARPjt2DF%Gxv$2l9tOs(e8@T`QHwy@xU=@9++V%!s8bX1*l3Us)1B*BSc4wZGT z2S=Mkl|CpaxOme}KcF=tC7}SST~U*CVJRp@R6&|Z@uQFditF>N0H|k`3;4M0xWx$q_9>owVpW^e+HU}Kzoll{V}--4yN~K&6?SM z+q*yT!NI}x>(`Huk3C!L<7s!ho&S4qaBy&NAR=dHXFjpe`K7nsdaE4Yev@|&Ui;Fw z{@L&S>Z`Zk`SFkbCtv%s|MVaKo*Dklzx=g#KDht(8$YNwU;O@umyfqP&oiqRwAr<5 z*L?PtBP#$`S6BXtL-z*y|LUtRBznv=emA2dKpMQ7fwj;8>3vYf9&i|-(B6Aec5G_Z zqzbik_ypHzdiTwbw2$O`WH34alE>N`{A6jT!pt^U*=?8YR3KYV!q$v zV}M$#8+-rOor8;@f9o>miQ&PG4#RN!_U$K6p6vgvla<3uxV{Z5K5V(}o%iVab98j% z<*1v@X1Cj2US1A~-+z7OGtd9ZYqw#PnA9fLwY3gHycyM;USg?ap(+HFQUp|kYS*s4 zcU`>v7K>?9JD6pz{^v1EAY~xM**!KQ z4pWKj8A*p5!z04yg*Q;^YP3>Ho$3@u);ztc#nr9bZqeOhrItFEAmhWE8pBz_$nHZ+ zGr&@Vsfe&vk9UQV&^GBH_;FzF@{tFh5TtnE=cRWZ^0*_?=)Q}1zm!_1sFj+gX}8;j zDlSVYWpu;191kAE*UM!Td#~XuKK$^*&1Tbk|MP$T&;S1K|Gr;y{Obs6-`lt@jc;A< zpFDZuQFv?3%d_{9&zJ@D!nMs;UVY(}Ti2q*Hb-!I>a81$N;9Rt1T$z;H8i8D_C=-E4z;c{ z6R{%jK;`1HZ+AA$WtzEI_hHcW^kV1vp{H^hj#|{zj~0n4A2SgMrz%SuBk^2oJOGV3 zgru-Y6w|3eRf?3UI4|oq%Qt8xR{%3>ilwV`^XlE+qcOh-gw&?3Yj0>~ReR}P+Klcg zpS*WptYGl~I1Uu&uP`lAtJJC#YF9696lUBNc5Ot6`Q_TS=>dSL_l>$^(;S;Btc%=# zvi0ycZ$<&Q4(!|h@iH^XQ%c8AMuh4s_VD4uS6+GLJKy=vwQJW#3Eg<}{_B~f+wt-7 zy?ggIn@uTYD2)HgC4Ssw@BK5kPhS7T&06L3YOCF}Ymj3AVBK3%Sk_FO6U<3G7?NC| zY41_&V|k#ih!nY;Tr^yGv)SFPr9urNlv2!kq9l^VDa~wA-R-vL zJKapRb?aRb^Ws6Ex89ny2HUkdEu~1U0-#>McBrb_e99L}t)t36Qhm{rhGo%I3HuVYEgySRjJ;U>PhGV(EUG2DITw=cJ4a1jhjg}vjfS5Qtp8^ z(Rt>yO$JX%=9_9{a1x85mLe=!yk$UurcxyT%Cr4$ZPZjjae$G!YUo|9_o!Q~MT8cF zi-VAmr|q_#U2bb3fFA7^h6F0ka_ZB?Lhc;)N5_p{J@b=knzq~RZnrx=KK9FAUS4|h zzyLx3KKxB&TVrwVs`wJ$m$rtFoT4WX>-1M`aF zC}T+g??4d0I+`<0AMqtmI6o+^5zc`MHyx$Tt_0* zG8O5x5;@;U@&t3vDAFJaY?rIv+rd0d5_BXpZ;;`_C|7cF#asnRg=p`t>Ox3X-T|;e zDMD465S>%yR7ITL%1T6U;o5UgK~HC0l=GmNge1E}wBd{mqaHj4&V@Jf|f z&seH-nw-^kOLJMIQ1fV9nxesw>{Yr1|4Ry$LKTHBUi;FWoG^v4sZEZrAfjrxTFgv~ zh!>^=N$nC502bU6rrLKqc#~7KIlKQ&sy?}`-uiaeYLQxexjI)C6WHsk^0cOfJ{bLQ zweHD2ADd^0Q7O@o+q?FzP0@|DNG-)zCj5^XVy-CDF@b~wU4JA2QA50ns*f2W=qJy? zU;-HXqTAh4ikDdX9jh0L7ZIUYfuXnFGj|aubqGBnOoh^!SQ22@!E>?q7_R-o_01Pw zIWg6Hd(!`NUIVo3OaDhT!82$c?>>6;=&%3vzy8f{e)H_??BwL+^78WWc)7Jrh>nBf2DNt;8t@SodwN|e(gs2%k zj~gd2c=fmfUDbLsAGH^SXb7sBqdJQTCW=UDZE0O=AtS#S)dSFIXtk#dTL&PZ8nv6} z_hBkt$lC#;cfh&`dRLlN5$|Jj3?2;vW@>%hkO343*_&30&NW$MfMIhST9c%BDa1UL zBH|ei%h&~je91f((#W`%*RHC)HKUZ`MkW(bsBnJ9R8_@bwaQdw@2XB9MWT+*7I^iL z=c1lcXh%7ckvM#Cpz8n)MQk&(6x1>Tt#whNggxSD(1)2t@lDw8r^5V*UV;pl><{?j zC$3517;5+b$Cm@1v$Hdjzw?145zG^dSgo1?3y}o9_X_PTwiQ4nW-VDjmt2+vdNKBjtW%lh zy7(#H9_&IhjR+t(eFF^LSdoK@36h0u)_d!wYSUELFx5Z@ZKOa2w(B}upX)@_5DA0k zLA8wO6YkBtLe}6#*WQ!mdm6WIq@cIHwB|iBjtfNy1mXu`YN^Gt7_0&6*g|1KbJ|#n zxTCUk9;HZ$8O-8_wq(OuqWVDkk@1LKkwp0sBLpwD7a3;iCHADRMHgNv8O{57s*=w* zfR{Bff{M{d5TB!w+su&{+3u5-U%vb0g&WRMuHyf(K>ttm+CR4oK&{o`)2JK$~S>RrZq5JG1gLY${?H8RxYR;y^OYWlTxJ$rMqfyO> zXv#+5inNn7z^as5s*~zPgau-ZF*+&zFdy8}BzkBK0x4oB#SAnr!I4Nm5p;5twG=42 znRMOl`c!MJ1O(;EBKNO9MmWW1WUTr<#Ewrv7Y zg}Br>uKEZzadPK-^+hhYhCJ@t7Y)r0&Z--M5Ef{(qGI zkG@{>Q#veC`kSb25M}pE#d+SA5XCKO7E;Ols2D(~V_A?9t zw(i-J^m%LON&=`wN|Cm7v#kHAQdXSmWnadz_HoZ1bPs$%B=005*;gMZGGHa*h{(~{ z+*Lpmg_y@J7)q6biVQuLqr8o=}Ci|jM65kJ_d zA$Z#AkAshpwb@Vqc^~H%6ZFy&()wui_95(RfpF{}5XdNDksCZu9P9z7V05Vl0ct5z zExVrya&cc89BxWhUTL2L&qK>A)C@m2|x5QZl4OTd2_Lup5#MbA^#X_^9b6pEQCIx;Wd zDi^IOZu;D`qqH-XTulrO|gaH)EP6I=%rumQQV=$uREiI-GknG*h_bgQawAMALt37k< z?>87!R}xhsr2-&ERmC0zryJnb6~J=sofXN{ck-3kn;4Wd+FX-)n||x$=!DGr||5wm(YTx)Z*%#Rwhh> zAI~25xC!yhUDzPR z%~7LF#k8x}cxd+5`$u@GIYWGh1k*6upu=-GJ(`C@22`-nCJ7{wBP{<^FTa;(QpKPB z{4aaD0DG9{nZNqjs~sL5J_CC!tE>Usx^+t}MFAnGuEOf44!2mQuG;pplCpuJI$b}Tm$qGzhW-#m4y0z8` zD@3IgT5El210n*9!VWX27rCkVa9kfXWfEx&A${(Zqj#B#PlCh9Ir;D?=SnbGt+C&X zGQPM!=WR$a(0o2FqtYfJYb_`=dc}Aop@ztt(9uX7%4jR>N)rTg1UZUN!tv&`f3Fe8 zFru>B(~P}BbJY^s#1_U($1Gg5-qmA)aSP#6eDu?pD4xv5pX#;S?OuKDbzhUe_V4}& zFueNO>;Lc{{9k|Y#O}g71mL8;YvS7^u*EgSzd;L*sZnRTQkcELBeD!9VnR)ni8hX zib(PDngJgCvHhAWH_KINlII_<@PLkeb25Y1@+pf6DJ7pYuEiJ!5uMWEFf)`C_$cXc zh#mozSf^}-r8{vFIW{?Q`~LtBP)hkv{+Ivj?e^;M==kxY2LQhNoj>@4Z~Rk|!}fbV z%ZrQlvA!4EjngJwB}C+3{)>Nna_#1qf8{q`xb@=U(Q#|L|HJ?8KighiJbwUbOT;#* z1Kp@blZmC~1cI@=ej?sF!;*Uqq$QZ77#R@>#L)p0=EeXkQfjHKEzy?eiRUV4F<;TG zjmM6@+IjLcg@u&1EFwlx0V&l%h6poPO%;l&n6@1jv$=BdDuARKQkqf2Cq(Z$r4+GZ zs?FNc8qB6DrAi=rAF<}xPW@m2M;xBn%grz&wD`H^&Tt`UD3*0CeC1lV-J+X8vPmH7*bv?#(mnAWhBZ<%jFto+3e-G9 z;sm*xkKZ!&JVs$sMt^GgNALab{~!OiKYHtp&%gfFFMstn0Km|C-)A=cb#QRtC+&@& zjE>%YMC54g{)g`axc}h?|J{H45ANN2|1+<>{{Fi^@{V;zH=MWj25;5OJ25gpnx#J$ zjCL$U0!7CmE>!4y&6B2P=w96~rAQ&r2ro@E&`J@Qm?|NLZW%PBMQ@%f3VDM{k!h-= zCy8U2gM~XX0oAM!p+3OUx^=awc>SmYb)H2VW z35Q@5pVH`6vfk6IBuf!9j~I&iVHU-_^fK5|?>Q7sv&>VO>X@RHQ8*$@(Lws;?>v|f zWSL1~55<{8s~P)#`;Y$R z2Os>j_x|P&zI$|Z)VoTNSS}9*gkEvnd)xKi7e-b-$?Y5?wYL+lM3*I}L zN@S|l>E|SX8QF8q^0R~&Ig*qC`yKTrD>jU7lruz`XZMaKACVZ-uiROZAs1m)nEH_|KBe!em3D zR$8r>;$y>sW>A<=EySq;lUm>Ts77M1p?JK6F!3EV_%tJ0@FTTYEp*YhZjoXTLyQ0b zqZ`5mmSKUTimqL?kKo^t{)kK6IR@3BhUh@f5XEc3a~g9BdBD{Dcwj&AY$L>vTo-~e zO}31aNG(#ORA(A;s;W5F2Wci|#lj&7Kr>GR70I`$i7Cwp6PTFMI<>(%ph71SVufG2 zdH4&;{k~idDW5m<>FMJiyzxf>d|uGczd}^W=Tv^Lg!5nhH~;Xz>h1DVpZ=V`*?-=9 zqE1V?EvPUPVHNshJZEKmnllx2y2t!KUjfY+2tr@6{ML+d3WO0xGl9}Nt(O?xVsS_e z1BDKBLW!A+K__Xn{iV%;Lm=<|0bs)q6T|7KMpLtD>SH=xe7(tq zonj(B!=iWXty4REyfol!4iIy*hMBY+#^_?FIgUg-`sko0C^5CTb!$CBf_>iHm2_{n z)ipbbdH9?3Da39AC5`G6e-<@%m2j3mLd;8eJZ-6w#qkk~=212b5~VQCbC~A_QXeIW zzI67`n5C68SvMai`U@(+$G-k=|K)#ia_!pq);n5A?w_;t(ZBNg2s7J1ZtOeX{>K02 zKl@*O@cvKyTOWY+(sPHc_jqDp;276&dVgJ}C0#nylC78IPQ3%1Q8OFN9i1A?Z(vI0 zNH-clC*^3X9i7^oHu~YO;7Lz;@PF0hoHHxr{H`ey9q)IIYb~85~G?W6WkSc;* z$F5nXsq$d}05wlITc6(yJv0@)X>Z*lDP~$@1S;`(gn>P#6`^-$SZNAYX7Vj?sgY`; zYF*j9zn*SbgF1{ZQ0Ih8CZu4@>NR9&?8ZHr&ERAQK@J#3^?h+mnm# z1f>NOa_xnh6VJ`!pC0+l4_yIPepUn@mlPWO zBN+y9;9(p_u8=T;bxSuA>*fH{r{R0)Fmj})B)xEUetC6%K`k;1$!Q8qYEMfV1lszt z>#bWBqzh~^5a?wvvqUWrSnt-FE{WSl_bULv*qS+FDoe0-fI z1;mI`9VPp@5>ot3P5AXg?z08j7l}qG(G73I1;BwNbDh2Fz>*>|09B-VhX}mv)cJ(i z)-aO-Au$!g+R|4^1Ci>G5g}mibF76u^pZZCN(SG;sg{T+1b|ia-QFJCvRjsAIXZBo z97%1A!EZ5NR-}q{_>4si5)FXr3LE19;Rp)7d{q%Auk_BYtWyz)^?~6nD<=?aBml4H z98#&OQIO9hg8UX!Dpz<+H_;*x2~-;?eG4H7G`FIfBrzm5+#h4$;PtorFYj9gNGp=r zmSH3RG_Q}&5A{=(hV=WjkB^VBC)OkFWqbYgj)HzxCH4y^2W#D7=tx*yqr}10G(ql9Ed)NvlPjgnPKLXO|-3K z*UE^=WW;CQ+UaKAGJ&C8NA}AIjTW4!w8lt__3%_Nw;+vHXo9Yw76zX}VcM-zV?-2% zR^(3&f%bD-Zrxq_{U^P5@Bgx=PqNs5l~TNN&Zl2_++1t*qsqqH)QjUCTlzW&o+FJa z!KYa_b)@YhBovnYsgcsjz%)_TGq;teoP@iyj3W#{AqwqcX{+tN_9ru?QKl9^U1_S`crV#eLwdJN;ui}x4BSk0GgmJHO{jG;8k8H_MvPIyq#=YG1RTVUHTiV<9V@aXdHfwg_T(u8qk5CUK)V2q~(OkhP= zfMwSg0#!Vn>*Frhz{Sjbctlrk#4+_0s$?@IoK6ig)dsH%0Tlkarb zUUli+z#>cQ+t#Ov^MuIB3jA2OP)XHpTBQ%uO(`jNfwFP zDYI^7JsSxe5fx`122lzFarepg+dp}7_sI^xAH4a{vGrg3)t7HypGf$5P6CR!xdmO6qxFE1yEN?&NS8`3;Kzaaf=YF$cW-0t`GW zCgH4mH|@Tg-RLcoYn%}uo&7WE1adBnCt>*h-F)dYmLsBkofP=tx4(IEAOxD35u16M zr>RIB5}f3Ki(-BsG45zH#YohE@bO#$$8A7-O&{!~f}9TKIciCf$e>coI2G# zgd`Xh7==!`?8~Bup;uQ|z4v*;pbm! ze+>0U(`}OvH-o{_P}8(69~&_E&0lCaI6e}Id_Q8Z*VU-jwJB&n{qV`MEF{Oc&mnv+uk+Dymu=nlTC7$n!o*Wh zTl-h`h3OY}2+x@R*zQuEp>&>kv%f^dacU{$;^M+8q9?7H#pk2n1cj$*xeO=t_w^&bFW=h5hrq+IiXM_ z$}!v;vN*Ew!PkMSeC;X0Pmx8+G*8n!z52>?z4zAI+1Z(@US3{aUS4{W?w@)6_J8{C z|ArLr-s@CL92C1ZjNCJ?pGDy8lbieUz1eJDfBkj;+UdxTt)UpN&wcK5ew~3rd{pS( z4M;Aa3e1N-{Po}X?616ftM|U$ZZ9q_uCA`Uy!8D1TvcDbb=?%O>|g|A`ADEZLU`$O zq$#D8X`ZKfs#7gqC9dj7!6hRqV+5thJXa%H_j#Ma8s(Z0V6AmNn5KCuwU(*+a7KTU za7WAm*S(XN=2A*AgIDGY5NE|p*;JV)@3NOtq+Xq0T%2DPSP}D)AClh5WdcCVj&@?T z2fY}`+=V9QecN*{zh;KQ07#=m^o{R--<{MFC5tdvi&HWq=2fpnSEozEW~fn|Y#I}R z++kFI2Z1OlrAT2x&d<%+JT_kQ%FAAM{O@ty0l6e9LF=9`(}*S_%LAH4bD=ty=2 z`1LP+`cp4H_wozZ;oj5Kb18YF5d>Q%ZwRklgv)n;lI}IdXz(@$S}kTAfq{ypp#g>hDPqx@*1c1cJJ~xLS7Y za1%OZW9k`#zwyBeBXnmG_dNm+vORBS&J&ZAn0}Qg&Gd~oe&E38Z0o?TOmm&)it)A_ zkQcP(V2?+VYfW@UiK&^b$F35Hu^9sc#Q8-4M0z5U_aF>i2LmS21I`X`?|(A}0mZ_P9|-6O=YeAljBJ3l}F`SLnm{v^)Z zJToxVkc}k#pX)ov&5iK>ZtPpOlZIM`P+Z=)`O8+ zCi!Q+@KPz2y#=U+kJqtO2d5(~=y|t}YmuD>8DeVIk%rXNN5|3tg%PM`my7nQR>&A@ z5CwCTm_XqaWH#Kfb(H}reZyNL^F|OXa2$A|9Vq4_q-Zo-x=v>GYH3n9)#wcJ!4BtJ zT(k+$M^BzqDTqk{s;WMm(Ti*jHuJ5U*EdBJ>g??&Ui`vN-T9J42NnAMgD1@e z~YkdssXB|fT}un_XBv~BV$vAY7rQ+y}{iL6;QRKNj`h~@V$puFWxxls)x0F z>qifr&D$=jhL>+Ye_akOXZ#rqYR?@{FPuDIiZs>TZn?U=y4dwyR{($IH(uXvcZdlC zgh5sR!GHfPmvR?A*Ln9jufF`;%g-OTwoKEUks6jtqF|`Qy>plJtbXd{#h=!d*RAlu&IGRf>)NUr~!~4JW(`}t__T;hk)(y=ql6F$excD4o@)IxJ zxpC{pPNPcX){8H1wK^M6O$fGbWc}d7$7aQVN0%}k9Bi)^?Y;MYwcBlXyWO(TD78d2 za@vl~BnNX5M25cgzFXRM*OspHTtQiu{^ZH&qsLF4yK!=Kc(5pzj%FrM0S-2sT5EJC zc-}&-E0)$SuXfHac+qm5s=JuYROZRYda}|PS2jiK*17^H!cF0W)2rV5{U?`%bk)|? z$isupbX0b%p3m^JMa=N>t($X^^Q$X`oS&Uxr&}6;*Iv2xwO{|dgH&fd9EJ4WKKqFm z{+r)_TPyfKZxkDH=V6Iim)p^@p3WSASO(-nz1DSen+WTC%b!NW+ zCC{@^1r&e$(;7Nz&rdp8H@nG)9=o?433I(0Qt6}H*T zn|YQ}MNkMBZk!w)9n4T&TH9{7UJLEL&>ppU2E$j|jgthgn!6OHsg%OjJN#6L*ex@I zH&Kuu@@$@rgPssap2#BXkBiD>A0s;@Lf z*ubp5@)#r%GdVpWt{k?+MIkbk;uQ+S{+09M^yA6;!L{cf-~9=K_|x7gMpNs+Znpq{ z>0G$m?drj%PBkZc1EmT|skOGY+v!)x1g&?y zapUIY)mDTC^9i5Y)xbaagMU@4w63b%$e(`rU@Dw9o6F1X`NieM)s8^Tn7)?kM1AXh zuI2DxE| zou9C@ZQTrkyV~yPd_HY08ty{PL<#&Gc-1WnZ&}_&(vi|R^Z^jS5@r`c)I60W!{K*FZ z-hAgShFJ}gTGEb6UT#mKQkF?UbeG1FQ(3Z=KEZ&jud-B74#Phzbf{N;Ku(;9!y`hu zTuH|F!0?a}4!Khia4%Ga0JgOD>6dN^$sz~G$B(?@Q3NiE1`)QU`2=e-E3m7kb(%`8 zB*-E{eCx-jfBepwT3?n1)!y}DyPKzKstr`_rA}&U%>X_=J)dh4T30(fK54xd6z$!_ zN)=PP`{CWCchAr*OJ|X*?a~X3;$sfByQLO!uF6rIC-Ay<^^?T_gDy?yT3YK0y|}zO zI_XR6UCqFy>DAS4nkuC%tqbh(a=Se|P}SYi09$%jMJ?hm#?-o6>%F&r>&}aJUV1ST z2#{!-j9q&FogXdRtEFo#T$+m1gnsaGk?Q$(Rf0`>>%A`v1sYD%dXcWGy*xU-NO>7n zPg@r5!*F_baelQMGG(eSK7Y-C&wu8XAN=TDKlkOA#dL3TQCi>jwZ% zPENl0&2M@N;;Wzk#QEiR&x%K)B|~ctn&smZAm;{~n+RJC|LQEpfHT9M0z?+wlfxgY z08*k%ptn8eGEx9T!*oneXCkUG%K$4ggty=M;FVh^!_Ul{gJs$JR4l))cyqJ2=cuXL zra-1V#n?Ya$Z49iTVI+`&MvObF0WiJRn=R8NSYdjXXod^n3A9Q>}La~#dsnk@!`FD z093~;Ao!?s?cHaiGf_n(lt-$S>>5+qy!Ot|dNI>!nlc2GK?q)4?Vg-nsCty6KGVi> z0G!*CywyO^z3b)Wxfk}FoSa-cxpsUKuUc#LQo*@43|?xrjR^3ZQQVO4k9pNnOR3Q^ zo7YOhbrr#nzFxg^;t2k|_ujj8>(&q7ee^Rw1GvzTe*acgfAtHWeD+OyH_1I>5kH%m z{rErrIjWlbbKJ)?4$TumQN# zdJ%XAfWlf(!&#MDg)I2~dlzO{maPaccRK*vr8&FTO(&^pTBK-i1kTRRZ$JOMc765L z*I+c$`RH)By;4Ilg7(HAzab*3Rs|GMvqk#`#RnFUoaWkE_lb6J8p`E^V!HHhwa_QM zl?aggRHtRP6DjbMdRvQOHO^)VwP|a8o~I(>1L7ix@pvy=`Bn9~8#h1ssZSpt9X@yS zrbtm$pQe5H!+RI!7w^9NQ(RrfsAnYOYNLb*ww71}fM=A~t$SwY{2~|{K&jPYw8}>} zb$#{TUwl4V<8R%%^|NJ#7q&qvfa9Or&z=07_y2-F`^8@N>;-<-Lk*5I{_JOJz%#!X zasN}+S4D~!$-eQ%8-B2e^IsxG+d@)} zswz@QZl<~{Yvc7urnoQYd&2;o^lfT&nzp+w#G22z?G0wTWm$S;4Z3RUeZ#qksQ;BG zfr-5W)(9m0D;l06CArwz@ZL}F{)hkL z-?WdFuCN08-+$!S;}fPzt@q}~>nvRXw$`SYc+)&3*Snu@ z2ZRa9J_AyFr%=_8kg$DG+-zoKPi-MvoW;E-Zi&`%2Yf+vw0q|c`I`8l(9B%q;8|=S z^N*Ojr?Ea|=X@73&UJ*- z&-&1(SL5SePhqwdS&bjT?A^N$EhD1451zd6+=*XqJ~-G~J$rm1g@9dMZe8nK{=G^~ zZcP2g)NW4g{d=dXy4&v5lu|BseJJKW3LNk^!(zr&wW0XaepeMeeZkUbC&_a z-G%2IJ%#KAEiw{L`(c0w_Vno~LBO}B#UoVJ-gUPuOIvzZp|rgUYG*vVs`oh>#&D%! zhXTu}#>^Q>VcoYjZc2R=i)Y`hIS|TB0AO{@Zr{HB*1M(F;z3ubpZe4%o~!-XmV8ew$B)N~3N`PIv$OKYNr#fA1cdfNrq=>X_^g1oeGEH-# z^ln|Xh*%CN_8d5d_zyrixVzDj1Om8m?OJP1)utk5EeD>o=ddCkRJh}7yb!UwZPp-Efqsp`gTjgh* zdBuJ$wZib`-5rY*lOp01y7B`;Af81*nQ5oUd+)!05Hd}rb(oam#m2E(SG(o#&?qt{f(#-kT;$l; zyp)-#n#kJu=`Tk?KukMx6=JjlB?*aP!wh>fOY%C&Xo>f)wBi*pz&y{>G?y&TG|R!P z&xpa(FFm^}&%gHI^z!Dx=A#g4W>&DB-Tjz9j>`@O{+Vxi>a_wD@aLH8kBKy%`hcgF z1ABI4V84|B9q+NHjYyiU{R@+Ty?gf|yfQC$<=bz*_tNd>k=H%Ce&gcFV>2yoeJDcf z2AD0)WNEft?BSJNJ2^f)JalVzxr+c`+|sisNVSv#11UfG$xplh!|yG-zj%0j1Vk4p zfSkc-06Zs^VL)_XR6kqc7Zyp3 zy6Ct#);~QyKJI59{({%ZzvIu>JU%PlPe;Qa7Xg2SPW`xViKhYcFaG)%z?Sk7vtsW) zc=F-HGm4Ofl-r+r&7?@3IMp)EWt!%L>F{tqIGi_|sS5D+!`qnS`h<>lq&ZaI#Um@K~i8QZ=7PIu?+ z!COB|RgQS2=l3i}DL#9dklc@i+8^^SxVAs7>^~EXe>^-IAoJs2QRVkD{~QCF#@n%n z7@v9l^!@vBBYQUKkACoz-+JLI{^P@IHx7?aP9HvukwT0XVZY7lXL($lpR20%R_lEB z=;6~(`4JRkn$zK6suX$rG<9!= zs7?e$K;Y@Hu3o|_+tv=|iNMv>mG*P(y@;G|pK2p)t<{pFk4X_}tq(4Lj|m0HcYgBD zt=o50wTP%X8*C*N;PIo!WBmgHt(E=JIGPyPIQlFA@XL1X6qX{kR?6&eJV|uz zX@&tpV{)<>=_>@bHl7iukiLVch%w zkH-=}KWlAw ztvS2_pz6I*Fw+MQ9_)3aq$f?k>z-l+0RGyx4p@W%^9Tdns_v0)g!*ZF-ii*GqA7%B zGtcuhZFkH5-R_pf%t-0oXS)h)bcpW}$plI5dU0_vBzYh24r}N1ks)+){Upaldz6W) zJ+p4EGivA{DAP2}wbmk=&1R}qy@j)@_5LT&EI(JGRxwGZ^KtLBkNN4-diQaEW_$ns zLU;EOs{R?7WiIWX5CGUyH~ft8UoZR94<5wBTfAZ1z#o3^?P%HQX1yQZe2%qps+_8y zDbFG-Qor}kS)Jy?Nv5gXeRMW%)1LBpiGnV#=A}l=2mo6b(0Q6Z{P6zqwG$u?M{uFN z^}-8pzV#M7GHxx3`pk4`0C_lH?Jj(+4iDzb?aot90Cu|u_)N&snm%4Gv^N+oF1ILC zou*BZc`8a?Znyh4+Pf~xuC-P~ya-G!ngLGDXBArS+O(UQNV(eWrpLPo-AYVkxUI8$=jQkgt=}de3ox6AMKi+fQtAYFA z{-gKr-hc7dP5;HMJD<4s-j7=AaUfIlMoQgm=2~R-)?cn@YX6mwiOn=Q9lkdi(*PVE z9A2ECUcY|bZ&Dbe^iNKXi)0Y>RAPYyx|)w`DC92fbR+@@0n6mw^#+hqd+!jLYMn%; zf+{$@+#j4qz&7(lSSeCU0qL{O2|81@2J4Ok$@BB`>({OiiE)D0&Cl`4u^E(@L;%yS zk=k_NFMFkX1|@5$o`*)p8{S1wifrb&6q$l+PndS|y)vWqzHCEIDPzHX zXvNdz1|tTrrx4fbv&OF3su1gC4RC(>V=o(EaNnw14BcE^;;Ld!Ofui+HI~8pJ=Lh- zYO?PzL*?=&Y}~!U+bD)U#-UsJxfYm+27LL|7w~NIm`#QAR34vS-FrCZ_$BYRQpY%$ryyMOlp{nJr5qg|PPNpj_$hiZ zGZl~`H?Cc~I6tp~X4<5($@PIDWw#l(NL@?dhb?C@e+x-)KcW? z>U_On7=T)QWF?D;w^R5prNms0sMd&4lDTodwz3|Khum5L5iL`mLWin(eV(PM@bxK0 zrkKaCaDuClz+`1vx|r2c{De)_>@jkSPLWbeomNq?cqLeKEl#~i%!a4Sm%XwdT+dKj z-)kA-xZ$U*SS8zku-#LSif?W|e~l4ay6xWcM`j<~f3l|kg|}Y(g*{- zpTWX)@HD|VZF@DK@J4SRhL>-PMTL!6Zy&7etpt&W>7+Sc0f%2!^01XWzz%>1{HYwa z_y0%=`Kjdq{x?)PMj-b*<`kZ$`JEcIqDMzHYpaRM`IP^F~_|ThX?bT zOx<&xLR>pOJUZCSMb1wjuYaHDw5u&mTkBce4@T=F4O$8f*1Ni?W|#$U1SSn-w5m}& z;@(~DXu7Fos^#9pNBdUcaIU>IAYxx1-9huQ=$Uqm3S{PCDtqgdx#ql+Rj9^uN&W=~ zISn|tnrf+qwNShfQpiHry`?SITOsCJ%U=1Dc~MmFUJK~&rkS4=g*Xy1d{*WNT{SGN zaefg8uc=x0Bgzo7>__pWkMGX8s4GMomjYs?bXA%02JP!G@Uc?>Er;30#JFL{^KRi! zWYPB=1}Gj4UZS8qmpxWKHV(NIYsg}VQ*hxv;>(|Ztv;y(!2l#CE%T@8RiiTu+Bafr4VQg~*(!|6;1s@$r!-kHqVM0B@l4RXjL6+H4Ll z&QDjRVGML8+0=Hen`sd-?abi8KhbTsPuJ@Ni@>ZcI~>$yw}YRlkT>dvj`XHs@%%w zyDK#n4S*SZYim}2-O{L@(nU7@}>N%h}e9&)vSR&^%U}IV*A}s{R zNNe;PjM+ZG*`sAL6haCJhC>`5VZa(F67=aOGM;1&EA~$h!=72$2X_|j!uvlBTJFW? zj`t-0SpxI@`;R}k|M<@H*In(W&0(1fjjUmGDs|cJ`0j@fIL_NbEZcr4d^pcN4-^?* zM%4}v4i4vypOB~9t7Ut&IXHl=#f@scP-EQtK#n9C-H&VKgAWLH-!2rO2#c^*>D^ju zQ=PZlOG2%;?bX$Xr&l4i;W$z2R7x#%B1>znElVjZwThd^ZX`sY3Mmqe;OTCWa!Eg= z3WVY0$X}Eue zaWNZVX(-)*3=YXxH67a?0ZoK8t1%SPhdCjgU`iIEMR~|BK!Nb=$&=;m{@gE%5GQvI zuHU-4cv3`cdv5h;Iy#A{KvTsM?+js#8wxw>L+53WKiL!H_`kRXTP-@D3P$(tF_ys0 zz&p=hzx(hM81@JlrMred`u zz`_jf-#CcF!vjk31LQjtjFO5m60AaAdHLn<|L{%6t~qMMVDJW)*0r@3*Qc9k3R#Pv z7y=R5Ejv{cvMq~<6>96P^=C>pI5|L3Q(9}S_g3pHdFVrUH-ba~eZZ}%ou8c@otzA4 zggxUs7I6e@SSz4cR?A`#v}jBTiy4A>CZCxq3QT)9I5(=T_1$)uTg%a3NQpNc<^n61 z6GiA_6z!hX-xG_FKwD?qW2BwzX{OW+9@a(hGairs{XhHquf6*G!SROBhwuO7o$vnO z&W(d>b(w12Eq!-*=k_a~Ob?ZThOIXomM-RPL=hDIN5iS4A9Z`ON>_kAre9Adm0#zT z{EPs8^$VZ+-GA}jc#j~ldh!){r^46l`s>uQ?u=wNR8 z%n2XpW(V`;=-+3W;C7+LK;yo0pqRhb%2t%F|$5-)OWAim8F*CE`VPT%Y z<-cR}+9OA=0WiFL`?(iy-MstY$+5N5~6M;Jopmm(?XOYcpE z*c8sSPV>C+aUzU)cm!0f6se_pu(+A0X)~+#tJe4Kl$%;>trSN$0)zM|9X|Xuj>I#e zNQu*tg)G9e^D}=|Z=D(8`(RFnH*g!_#ol=klM6ki6p`x3x8@jaD(Le7)<7x0RfQt8 zdJF&Nz{mVcDYb}5t@K!D6>iITkmOi+|ID$l0?FYBLjTODD$VG0?BhZ2pZ>vje)*sM z?rXb#>r-F7vpMuXjKcNcYg1S$B!7DM-i_nAx7OPwr3f)sZsysHOOxGB_X4I+M+6A> zA~B{=Fh`h->*sH!xDe#~gK4$Z%yNWm2x5e>{-roog7{Z{<@HYu3lR2ubtn4mH$RY4 zic21O{e>5MH=im}WA@lSbM;gxoM-bYEXhPHO2mcnq?&9?D@PH$`H2Py!8wwJTT7<)YL~7EYy92hmcY z-L#3Yw^pYzPgCptss%1&-s$n-K`8>Wc`9mF$u5qeIHGOuhSmWT00T}>&+fdmXMDMa zp2x>0B;ssruBLgchLLIzwOYhIp^-7Sogh%cSwiS1MvXZVX4=O-mAWZ)&Unzf=krWl z0MRkSbgJ->3851n4-Bb@S$g03_K$wOY!6=el)doD{`oKIofpwM4^Ql!KYrmme<07l zaR0T>=U?TO4SoI$0V^H8Z1i>e69K2g_rQmn{>! zx9+@jarVeefBs23JUN&+ypjQc017JX`0(iXU}HY?P)$G|z_!~)fu1j@5Z&zf_~`nz zlPBlr8gN{$9UUxcs;DCKRGQi4uKW1WaE#*9+Pfb^S%s!L)mo&KQd@t#ztjM(9UTP# zBU@`8=4kJw){F!9)EH@sN0)pgf*B&P=MV!W+a9Shz6B}z%IBZ^>R-6`@E&-(3*SyxV;ajHe%ut6%0bhui?i51<7WNgsdAY->+Z!;%DCf zCy!PZKkh2ZHSRt*{qW)G?dPw#!W|u-_))l(8I+ifsA@$)Cx-`dQ+cAe@5?+-H*a2> z=V@7*no8j$oJy#pF55b9kcKndVq}2KfWytyT5FO2;?lae|9bydZ}sWWt${_rA~7Uh$dOg|%MMXFzc|Mp22IHhUAS@W((^k3L{?70HcmK{WfBMDue!%zN`RVlBofkfFdi~Bj zcKFsm`Of#=U!H$)^B2B6rJF8{3JAM(GQasw2O!YPC61Z-{=1K@@3gl~!EWh(lgN9v zIDg&HM@uc87WDJr0Qy1cfmNcqgTuPR9b@JPf$@#SaKj;k0e)h7xc}{o&tFeI`zidB z7RBy9I)CZ*b3-w1z4Vy}@BgHJ@wHFnG$*P54$z4pmZy#Cs!)w*>vn08&dn(8E| zg$Hv5d9`RaLvPbmO>Ng2MS9oW)#=6gW9znU%f;2zcDM9pky4(&eiX&}y#abq<=Unm zZl)rja4N-*<+ zdF`uSK!(ZQF$@Y(Cf$7N1(e1asnwB+=Gzmf6pH-37!3M*{u7CDZFRoSG7N8CG zjGc5kFyI5pw6*F3Kl2Qsge!x6aCUY8k2uXhN0KAY28)j&#F5QQw{En&8v$C)j2Y!7db*NFNN?fWH{YwA7_bFcf<+Qds7W?SvAe6g zi`6xCWmRTX<@m_8*w6H?=}3^TE8Ews`D!% z0+A~yD4?mRfvSP1hS<7Q7SWtiAY9C5F-8|w4GqU8M8YP97#jmqDV~u!vx}F?Z{QU^ zmH;E(FhYsm|6%||fSG`7teR2q0WnW@&0zpUBy_$+AP# zuTKs?e)KekkktSN03hPfHdDFAr})QZV;)FMy=&@GuPG>apORavx&r`4f&0<8s+n1g zc3I+SF4#2x{7h~&2M^QYC+GO%Cxc*A17`fxYlq8b{@sVqzw%(M21tgkK5Z3r9J3+M zi$+Y$JgZfk;`eb`!KjvEWB%(xBuEBRgt`6LGFfvNUBQ?L)Kk@S*1b3Ng8%@6n5R5| zio{^>wYOe>bauH-ovNG)nkf)Hetz}rYIFDW!1rNjy7j^HU}hmiGesnTj0i-$znHfn z3@KG4$`o9x8v!fafvFcX3`9+!EGjC9YzjGN0BzcK)2oP-T-1~~aA5F~3whn8WRuAN z;7FHS*BBTAv~A<|#8Hnn#-?dEQu0mLe&oz7){f>WE{}cSHqk1aHA} zWk+lXk&s5sTSP`?&Qib(0b^ivcGmiH2*jp_OjycT*+eOtErT;|3lfdaQVfDqtPduL;Y9;CMNS5DlJP zJ?m5W)G$ypfBO9SpFE#kG@mbGz_TufuYCEz#bqxgpB#iUx&7m_i??oF!`QC){zs2s zYUmvE&D!t-0EmaTZdVM-7xUPo45K5%=`)WW#KmOBZW62L79awo>$G|QDVdeNU%YaQ z?;fI8MRw;gkpNtGeb@ev7DN;g?ws!5Jw15*>=LH<$8oYTvH9+gKfHhEYcSsS!{dA5 zYSVL#DIw)-NQhH9%ciJPmdYY0u>rz~V`OF`A_|CBM48!4i9;F&F(BoX%GvoPr~;X&nW!_~xzTI`#n^`H9$Zl6RSD-BsOlN$fX;6@;@94K^`AbwoZ=rG9i#8h$ImXGJiEMm>j(hN zr0MoU&czs1#Z@On3y1LJ`SaOqCM6SrsF~`JauXvUpjneB1j<>80h$$2KL3MD3}TYimE67g}ormA%>%)!z}Q#$LF*8 zyyo0s#Eif>CoMAeOG1^g000DXDvcLVzi~a*s9>jSVAAM~oMOypd~|9MQNgUFr3~-C z{@Je`@3(*P&IkYJ|NQsA_{BHg|KRc`?>&!<*UR|1`}E4O8o-yB{&9pTWeML=X1@bN?M^woWms}yZSqkI?q`H$ZJySEP!fsp}#*og#* zRCSv1Rn^VV!xS{Qz?K;Th*br$7|2w?g%A-r1XV!*rr=i7iO`x5Y>WtTv=&&=G4iok z=W}7AT!d=#f`-uKJP^^*{+@|N4qexo!ut=OUa!_>=G=)z3KCWlI4^Qd>Yd}A_u`j` zR3^sp$7VO~)dZkbB1GIZWHpW3z8!bh;udY#F3<6R2oORD9MlY5nh`O^rfKI*J8QZw zv@;}Dl@W*>E$&!2AFHQ3r7AOToZg8rJatwRF)dFop9Y2)`}4#^)RB24u)MzP*N={l zX2(az7gzQ#{@}YGKfJtqYjOK@R#N)E{eJ%06GOB8mT%zqI0fJU1_vi6s-jlB@49xg zLhYuicL#5LY@9L(7kV)OgZV%CgWnQpo;)AK{@Nzr<)8r9fM-bU@k!`rKmJF5rcbZN z-yMD6c$@1Dq3rmH;KD&%f8=9{Ej|fYVfKfy^1jk8``09Fj z=k&x>2tmee;YgXNu|lYT0Tz)CA%vKQfjBU;NKsJ=jEGGW*8Ko3Dd2l)%Yp9Q={134 z#+<~7PfVqWaY$*gXq`c{X~Mj1e28q^O9lv1)c3Jj6@uU4!1B9R7mlbhl7hh4BI0~4 zKHfD=rx*Z_6ZBTOQYK&x#+YQ=YzSLQtO@Yg-6q(?(8dr01w!x;%2UjqOF2M^mgFg9_sPW!10AvWG1t!j@RzW0M4Jp(@J8rom% ztJ6rqk2*-}$ZO@BcGfw-mVk zcGXU`v1GPW(%hOL`|6voJ$iaEJs+HG;rQ3XCl~i_AN$h^Za6EclNliuRYF{?H+YNG z#M?#yE4w8kPJDuqshA;R5oJPRhLJo+R3b%0Y}>fn^!|ZsBVbLM{B-EJVVEXO06p)F zv0JW|bU=rD3z2fT=uQsip_yMUf0l|6qIl}8T8h**88k$4B_ABGcgF*0Xc$T*@ieoY z28U^N8@LSZNK=P361H*Ijm7d2hy*V??Cy~X*)RZrrfCij_V>GZu$T))tW1ffJKe03 zQ%U`_XS{pB58(RW^`=daa}3V6r^W5^GsAb@zY-(nqNG;|=1uGArWa$*&ptRkEwkBu z5h$gk43}BoeC^q*Cl6bF^mxtt-4|!!7!c?4`FuWiew}--Jg62NK!@!4{xl?K)$EgP zo2i`rY+9b?uz=t5fBR=Yc?ji8v-YfMPA)F_aLA_o{ z3vn)aGv1gw)@(IOlo2O{Dzq~>xz>3jTElQCX0~4tV6BY#1N`>n?pn4t= z!nQ6DBvbXx{K5|KHEwl+-fl($6VJhofLwN@+i@q90x(lW!uf2*0Yr0=F%Nxf>f2a13`c?=Fg)m=H^F{6m{ zloXrUNa9dGuSu_0tUj%VIYpAY~ZJ-c}L{!Azo3(*QGX71wdP zz;giP>aqzv1S0hrzun;4KiE{g-`N@ntXt-wv*xUsPe008%Hy#ff!5(0B~bocS2Co2sA@c7Z=yZ1hSdHy}5 zaxL8fArK>CV7grOArK*4UOasL!Nr$9S8kuK+PI$2fZ6wcp-9X4M{K{tc2Y0%g{wou z(MfGLJmKi5YFEX?kv#q4xQ^{R-+6x#<8>Rq{g402!Nt|BS6*4X`I*nY@p}K>&(4QD zJ3ZMP9^Crox0=tM$iz**Gs@;O7|zdNG)93~vEi@2`Recg$=i-)!xjXZx-jhD{>4vz z_qV@_2qB9^W>1B=rozFjm}xGOOL49eH-28JrEvooVGNW-rzps)^h5+;A`)UG#HNYs zJ|Uo~A&*gzFDM(+Rx<=(qLj*%2E^EisDTj}a~S&mV!igIk#cEULv%fu;;r{Ka;uDJ z^)@^hVPgP5Geu6dQ(y%FoQ z7q6|}lPMhxw2Wi!S7ld^;DBzwM6@&4_TyC(;a&n~y--$Plf*~yb;uO>F|S5uGrU zYLZ}+6#I5UW1Pc=%FBy2%tfqpv1mT<0Xnt`cn+YS2*$@FA}JIvr9}=*bz!KgNFFmY zoMJ6BHRngrUEIY**XssW1VDKEy~kHHyz9zwsMyK6vl|3|@QvRS_|>Dg z?A0pWhGE{ZY5=uGzfReC&y(6118rf`sZ!vzcLVs&H-8)u;+r6rRR%;P z(jovb^`ccE2vJ1IMZd-c_aXypeRAl%8Ca!dZlt$04Bd$dRCPB8-QDT{mU33rS=$0= zEY{6tFsc?zAjTNo`hHYLIbrlXhycXX5fSX!S~u}U%Z!1Oe1dYIq&(Fec#+eZNrR{d}o=1f#X0tdC4 z3VRdEYQ5>22xAl^q9N2&Sk24}Qa7R?^oZ7@pr&aMp>1MH1=z*HeC6#3LYk;3L;%+T zDAGhm!N{10VSh1WLMH0EnO~w`3n8dlAX2s6JeWp|e-fS8dH|IsL>c=+Cm_gd3eBew z2#YyWjqRF_aTknZG3Gr#JIVkz!ypyOxp;;cLui6-7lkuzsTY2AXTcyq-TGQhpRcoO zd=W98e&&n!UZ1c(9GAyvDggoBc;nNrJ~+I(-e}4aA`}rIREv=a%ie4_+8@wN1rXtn z{`7orKYsL4FGYzlv|S$L-pL)GHFKjdUi*aBs+raNctQn?5X{iP3n?Qb#i&E&gF^8A zZ~gT4(b19QWuId^()8L>`17;q~=$46o~ElCf3Qqo5er%z(%f zh7h8PqU*t^y76e6IFiED^}7W_0T5B@!A3#I%294brE6zuAR>SM_D^;eAud-NZ($OZ zB2oume6rCA*=w{p8iP?74@M8*%Xd=rs0P{U2B;&hYP%L>*YJ<_cnX1D^72fX5Q|ua z*QSKq#I&dsDMgDoORkAj0v=HjRi{Q&u_9JPRa`m!Prv`})2Giy=V7}vZsWlrAbkAr zGBD@ClmZZYp_3VN(Yv>nV49P9XNrNn|Ng270FnWVC^F_M?PosoYo-P|4ixDWp7}Ob z|M05n{6RY})1o3;#9KT*{@|Gl5tW1E`$+cj!+yCOHvQ1eQr8ai8P3|iiN);BtGC_Y zdy_4Qc)D04@Op5uQcT1|YrmkO0UFR(-+Hy$nh`V@w{U&^`48U<{^(y!g-w~*iU7d6 z?_o5kh*%poiC=m3wFj@fdjG*I=g-fY*?hBJUtc`Gdj2#&d6shmX5t_vITj=;O$@R_ zp!@al4ZSFer>8F0S8-?g#iA#zu$bDx5Sx^P9clv)o?20q_vbpzD)RjN6FI%}1g z5t6CWCz(*8<^W?YY#U3#j(w*cx8Ok8Ck_JuU_40%7p2IClFw zqj7Dmx2YileU6a)4_#h-==<70(I&m(@za?Bz!4Aky0R{^w`dzOrItieE;;MoEX})Y zrrkW|H1w;I26%p+koo91mQ*<4I-R_7@3S1c7Zy!j^*cLlM7HZ!UM2#ysk383ArT3g zo;|$at_y7o>-C^U07Tdp&A9-e0Aw{YT{pAWKJ#EqA#BVhOjUMnjvv4B$0Fi3EdhAt z?l_t|A*j0#$?WmjW$@cuQ(?qn5->XTx!WQlyu4l>>@BSJ;=$4J>F2-nrHhM;tJV6h z+3BrYo6QCRV>|oYmwxlsy(i!L<{tqVGnMQqSHyyC6IYvl!m78P)Z+~i@j=FI8bD1O zPmYfxlL8_0ljj$^Yb#}`>l?`_QoP;BC%jeF*t>DZVdR;3AQj#hpj$@n)@s zq5J+3g&ZNct>^W*v+5GJHG}C+8^CPV&1YS|S#xbn_l==iGC+mI0BJ|H#Cb#%v=VL+ z1xHj6M*=~B%gd{0XU}fkI-U4aMgpCBS6}``j*F%#AG$z{oqbhGQL ztH1P(ZUTw~=*Iuh~5f>z= zZNp}2I%{Lsgg}nrST4e`3n8YQ=Ur=tXXjThq&r7@b3j6C5BKIrhx=x_zvxOS^LB8C zbWuq~)hwqHi43fbOtXdnLx=_**jX2Y?9!mfX1U58X|t`_Cj(Vdjb&1V4PnV-GJME1_L!A zBOo(pO+^5J_uhZcAL_I!9i}sHV>SeUM}2dM{e?EDax~W~ZHKg>W^cfDHDtw%P*N5v zLoNo?7I^JyIJjQvW|N2Es=}7G%T#3mXhwjQ%5u!y!L~DU3TEI;_sHXS5UDm}{P{QE zKDv9Stk*P@1`wErgJTepvrD_YifY$;^Mr76_Xv?jU|{^?$e1Z;t-P5Ukk-V!G8b<1 z?yr6RQ;+`5cc&B>KJf~EO?Qs=V`MWB#lQ@RMT7%0B5`^emF#@D|_ zh(sVcF=7!NR@YZom-p`8eY9CE4v+hO-4AKrHAEbk@{mNNjid^Jn3$Le5kd%31k3`( z7-`moCbFYIn;}!Tc>etP!7Q`~d+&bqXtV%RV*(x@9Ri}6-Z?!kL(j1(A}Z2E?gFc6 zDX1VSDujWFh}syf7S31=ifSNg8}HaNCSb%S1O@G400eKZ2!vTgbu9W4f>~fvU_hMD zyZ!w=LM=YoY1%fiiGdMVWg~EQ{`_zjB2rGn)EMbcl$a_WfSCYH(;G ziw+xY&K~DYzp|9>F6@h6yo*#D*SFv_AfPc4Vlc0KjDbm&eyFjD)}F~758|Ky{r4a5 ztF}_QAzk!|il}CJ^0e$N==2os-082c?dod1T)qC;2R3p0-aLM#Hyx9ZG0u0mdh`MS z25|q*@%>vzkIt@M2!AFBHB99qs|`NnWz;Gj3b^RHlcR$WgCgC3^;5{<&EI%yv%EIM z>-F`~;ZbawfA!D)S>$l*_N_nuqdz`4I`;NyFhvf5NlbG}ITuE1njoSGz(j2f$RTM` z69kCNO$<#4h{nvTLC>E)yLf)K|Jto0`tjql7xwP!4{j5o6ytzTpFClLwrR4csS#rE z=47ziglCF?-fHR-xx_4`h-e!a0lfXHWpbmW&Ry6qEs)qblevG*U5fyEG;CZGYK z2<9R}#E29kho-rB^z7-=r`^4iEHVsL(11b{LNng^Vv3<{!NevPFbzi5vw8;t0^;NI zs^0hRyYHNy{*?*aTP>HDmzT@sDy8)3(c|TE`TX)Kg+<%7xeOO8xpkx`NB#9`9r`fq zpMZr8(SVHsq=d`m<(~DQiT$0!V*AIRzC8~y?j(>nsR7tj&#~&hJshu84rWkmruCck zwh8GSZ#%xzV@tmd%Dpy zIuC^>z6L;mfbfkkf9@au!M9%S0nCD5#I2)!)v<7F28>8m+T!-f(f)iUqJ{C(Z~n%2 zzxUns@>*ezBVE=1h{p!idDaZI%f9K>|fAY=W|8M^3t%Jq>{@fHo;L?{Q z3J6UMYUX%-AmrH8UQWa&#wLU=G#n^t7L}{(>!(kiGyzrM>DlvKreMBaM+l(_+)G(4 zS21uN(l887Y@C}UFchga0$nM?X&Y623%K<#GjfRC0WJ~3Xf>cG_v>R^iBk;h$0Uxv z@?zjNMir?R8i$Is5aO=ikg@0^?fqM6*gb89x6ojrYWesR%tGi1gLk*x<` zz9?d~o{N-=f@wGFLTHL=CwjC$SCJwbRYTyw9AmtC{?svUU(r*5fmO4$7P1@*Vk9ZT zOcAkw0T=}`!88n4*VmwB)^$kXYPlSS9^xJVsESE(5oL3zPX%i5;!uZ}0chE=aRdm= zVVa`+=);fJtJS#L;ii#80DEO$8&V4V@H}yh%Vk!Z@3+Z_nn<6St>=q2CEyz3x9Y`K#;*xV)|w1!1+vFQZ|3x4BQqlu1ESjxj^Ft0FMf1+ z*|e>0dNONgvxZo6QV}&v6wV|6kAC}0rc$ep(@5(0_v8Xb7Ogsoh6qjiSxW?CG@or?QDdUTVviYT^ZE5^*))xeF4yVo0m*^0+O?uW zM8Els-#R)v5fRU@bsS1(LMHyvkKew2{*15=uKFyHN4ta!XmxgZtUuAn1FE^G)b-6qk9up7X>w6$Xphb}qm$oV`n%o{04%LH zU%VrLlxKS%JbVbTna%KGInNn6;zb|dTQy&|=iTA)aB#0#t?}$3oGk}|OPqbwH~;Yd zVLhfd@axw4LtXMa*vby*xpN8Ce%FsS*8jfn@BBu1=h?d-T%9ggwCUG(Z-u78pS~x3 zKZvFM`8WQ<-_{}kwN^8pZ`=Si>e7l9jIj6!p4ZO@wRQ*y@Qp8i>L2~V^XWEKFJJ}$ z;qLJP6Cq%hss07yuD0XDgC<62fI-A3AAK~W^0lvj{oN1VyLbP7RxPQZX~|jg@bL%l zKY4bB2pmE#vhLH#(Lqibi580v42P7=Y}Phi8!@XI5~^!y5r~T#6_FS?r#zc4LZD%N z)ggU+cDai^`xS_k&@>Ln4Jk8o*UdykRGG21?K$vJE2=<5SvAJyjnBQQs%c1oG@rF4 z=Ug%Zg+Qvt9E&U27!tWJ77pz7DIS5y+WrL=LNEgn_0$1twcDBy(lE>yd(1d&uA6So zfL;g)Z5wBc39>Y+<;AhSsHQT)tCdvPfQSjyebP(H7ca!Pp$z)*dvm1!aGZnO!cv2iDl z#Q-($mYIH3^HeglH$Qhei?RLet;hfG-?!D;_V(!RoqT;QA$j{lEr*Z++%f4gnAY(|Wx| z1SXnwZ7xO40#hy`h!_}s>e4FBY7uP^_xBG(L>CqVcWsk%7LmvyM9xJP^SPM@W~Y5N zQzB9XLJV&9RcnRP#`)%wW7oOMaE)#=n{^#A&D$@UJ^f4ga`#=0o9{;N!*xfq=zrJ_So!nY@f{k_1hHk*0zUX)FlBu~C zoUx4%MZH%rRu2IH@!sv@$4@VIH?F@U+&(!n1*r|a21KTyrii$|n71)95vUSk05e1_ zX|q{Be$=bl<>h70#p6NdNTNPj4?>8@6iUuOBxxs-{|IvsoLXi7MD)(GgfF)^FA!P%b%yfM$VMK&$x0j^%S0aBOP>06`=+C1x-s zMp12IXkzHPXlPm+#Q^}20|g#O3e5nd43#g+|JKpPk0Asif}j$b==NUxoEHKhGh9Aj z3;pQhD^cpYczxY7mC`RmJI{GYflf~s&z|acFK6qbE8+Wh58epyx|G245>+HpgGod8=-{Af0tZ5XT&h3} zW06uABQd3%i;DMy5|h*kT2wRUI1C$6;}}ZGCK_VU8dq47oKj)Lz(K{F5}k>b%RVpx z;K}LfY%zcK?5P2Z$kl2yJ#D`?w@;7#-m8eIHX#5pn$rM{St~J`s)%TDKP^%S@r^g% z%DH%4H}nHYDI!e_%d70HR)6-bZ=D`405CESMTw~LF(WZ~sDof8CSV8wg42RREe(4= zNTU5@HkE*%TR=Sx(6*(9qZ$w!y{(d|EO7ACJMvBkir;j8(G? z9y%ZHwPzpy)V}&RE`IpK46~GENTms|h`rH#F(1|&DiV*57f+w%*uopP_p{iCA72bf z0Kt2N5NYaOL7zjZsm}bA_ zk(@b3Kt#}n*+&P5A+`H^Vj7!e4FcAWdcM^T=&gYBUcWyh((l()qYziUZSl(9vG_}fQ>eDXhQ2;owYhaqy448?D zy0(ikh7eSQ1DO~RX(>f4Gz}6V5Fiy%m^=UyG1a~qRTV8IJK#}G)Hte!gvh~}g57F8 zxgI=rYT8CC4Rzfjwv!0Ic7MNo{kOjNgZI|fAi{c+MO09`HgBYFI};tQmv*q<9UnDU zSHn-=KTlZ!G?0GbQ%6W_V^jfF(_kka8ABeeZ>Sc!CJPfbZ)T=42LFUy`C8qURCiJj zfZHRW;RtMMsk1dTcCYq(rwV3cT;z9wCm!-KU!UMw#JjhS9=a2#8xjF51ZFceMg`NN zNaTIRr^ko0CK8iK35Xbj`sfo`6Ho~P6Jj8ujZ^g_5mJ`o$`%{~5{T+BO|? z$pCZ8UDpIA01bq*StBY2u<3_c*KUT~?af0B=g*%LTFzx`Uz=72+&bFNxe$V=2J+Ag zb513f5P})174fRJiiiLhGc`>!q=A@ADShAjjnGm`Ld4pUii9Nrf;E8=aWf?5VBk{_ z?D4OtiU>RF3nC)6ZLBC08kmL{5df({E1tEAhz}~L%6vWt0M#rdSHP4R5o6nqe%}{! zL>IQRsl24q^B?1Z(VgI!t5$;zfN(rVfbiG<>SzDuJ3oq%E5odrD$d$Xg1xTIOEXjC&v%e43#J-lD18yh z96Hg$p=%<|+L%%%1XV%g7|Bds>DJ6l3WQin0WeWDiU7iBp4KHvfM%tnlvY>Qw~h}= z&g(w4ZA>Yt!SA_}o>yZH#MV=k#*T~-@j z%WGS-(Z*~K#^vL0pmE{Dn2(NeHh_WT3;>_LJNw`N!_WQazxQEa?1v%(Mc{b0KHsd6 z;I(_pci+cZygXd2_x3Zhm8_q>ce|v7b$So$^1)p*v;#*PjFVAYGK>1JF{+>Ts@0~F zo#H?}j)(aOBf_-fMCx`@6$G-0g~hfhwT(xba&MSgWJeR>AMLB3d+_kd^Xc9qU=RgM zBA^_iD+a2{$-!}qk=Z98p@^zwLTeggA}|e-%sN#KF(B)#YgUr70EYmgh}1;7>W5N< z7)u`dp#XrXr8G3LK_yiS=mgwk7+33yMH9L<3Yv;>7gP$zxZK=O!t<*<*k9yS`psrO z>)NgZ148mjBm;mcGsQZJjbIQcG!4fXP1j8mpFVjUyP0<~2O~b z+Vle=6fgtGVt^tZ4lzLiGigHbPJIt-hg=kpK!LGs*jGnjZkjlx!LMMm*{B-FcC=$a z&bwaYVFRQQrhr-%)*3Gxz>}*40A1JZ1V%e+W}0qO@gKhR>f%58t=s?nJI?_?6mv#| zvezt&&h{7i=wLZ-`zDB)NER?gLMdfjHoNo~6?d>PN^$y_`r`?i@w1C>0<0L47jI>R zM5o}~H$03P@0R0nJ7YA0Y(5z?r47>;ZiPl?U=^>k?OV37q97{8jG4ty zR753&aB_SA08I>eNGWA#$Z}}|g|>@~2VKWZ?_CQKwlNTK5hW%o7-LL%)3t4%hEk+$ zJCuR|%!CF_)8y21U{zJg7(>%E%$$ob(5!2lCSIikMVG6Ul_Wq<&X+e=zX4*);AEOd z2Z!^$dCFzAx;AtA7Kn_dG!&nF2Qg#B7@CpZ9s5mxeR(NGh_Q`<5W_&8;CchxVlij* zg0iZr0(RYOGb92SQbNKQ+gvgd4mr1N>(G4D@UST*ivge&ZXy_oS{jOKL9F@m3 z-L?z=_kZ#;HB3nf3sV+tir}r|l@w7?;<#BtXu_?%(`n!nRB9eP+VU+N3cwVA;}{l= zamtn`VoG$amiEB3j0nv5JZ(!Agi``j8yVcTaTqm0#t0suHYSakuHP;+RVip-wHbR` zxYqGP?w;&Fxmdy&&;@jC4^W&nHkXsbdD}ENc?na=89!Ivl|jz%uYd9Q z;pl+x8I8B!^7d2x=!fUwyu zfdK$O8$)cG^=9DEaBPUF->io;Fmd2OXaFDzDpsVFQV@}e$Et~G5hU!_8+569fIy+b z*dCn|&*pR2S8~1<6%nzKShse95uy}DtErmzoe*LSfxrkXG6iNN%A)Jd#!O=y0j$p8 zs+!L-m!eWkl$ePFbLH9aMvPikMOQ?vGg)7KeIEe3S+~0bwl=~H01jHKa-tNFf*<@J z{LX8ifBnFWatSfyHsm6Bc`-O7Yhb<&CKM4XGjEkNCBIbWDsxNYfF^St`{Lkz=ETgQ zLbp@h%Yh~sm0ov?V)azcU{+5<^&2mqB_J`4SHvMy@zgPUt{aaK>+CDQG}DTRME7r> z+`Dyvl}-XeN+rhNoG4jk-gWnG9ml{70ID32IDmrVgIybu?D_NM(YyiB^Q@tX>&+ly zMQe*#J8RRBkjS*mBc)uN9xQ}_rcGc})gmFV&-(-b0!5&d5^{sYZ4ArntJ}A4pPiq7 zG6ztVqPALZj*kzoFVB&~<>iIsf=EExa$qnu6EG1q#HMYU7;_o`z|_P_!!w`Ua{gHZ z6UnMd6mltT+stP3a=pe7QZ8yhz(p+=QPp9{A%qafe2^a?#LxsrKvN-trg7070;~V+5t1bmCz8y@3 zC?KN&{_p;iFZ^HrtLsgFttw5cMHDH72&ziV{YLKWACKUD4d18j2Zt z)8sT>Jvj}nK|i>P!ky#&N6#+(8w5aopNkq`APUEa2VK{;F?L-;giQ!do*(YPDOK(q2JuPb^H0%ixmI>INY13p^uS4Ww~5lJb!+5c^zT{fRYkh$t8=LdhS8g z#Mp$GastF5^@zaCecvM@6ICgBaFxZ82@8xUTrc~g7Gf+4eab17l#54M!;sB@ITEp3 z`nHWt(*))waMOesqYt&!el0QP(9LF3JTVn^(fdfzcW0K|OCF>o$w^BxasN=v1SXL@ zgu4fEJj`fJw?qZck2Cvs) ztpHCv0HYoEb*Tnw&TTptVF64`vXnvdppvyDm8?=!OD%WoTniu~xkgGYXCZ*2`P;KN zR}#9Wmih+-71JywX&SU-E!nh~h^lMe`B~f>jMoB20QXK0a1@pe0N?>n%7sI?b#fG$ zn>L_X28|)4qGrMbn^dm*L2~}ookJvAZTg~?htllDEJjEn1SldP3rqtT#^}m}Srts! z*vy6^xd;JtZ3Cb&gjo~V+s>GbXf~gx&1$h&sFqc~m4cjX-RaT(rcWF=^=nBeqA8_Y zw@y<@07^(HJK-k=CIMh#wUUNmKAWjX8|Pp!tgg?`&W?}vW`Q}zoDv`gCKrKPU$30! z0}LrLpttu}prC3hg^8gy8rA@anTb%OFp&bPikS^rCj*+gtPE%Z?TyG&}*0Ix5N#!CRlY{SUi;|G)XO z-!m;ugrPSuBmx!t^egvXy?39RX2MX$n$pO!PfSP?`5SBnTKqe87Ly3T2dbtv=`BLJ zby_22G)=eEsNE~N)jLllTlSK(7%+vObCw;?_`5n>WyVnk4prk!10UBwvD zfY4$jkOF2+(*O}75WuG2#MougtMjva_wTP(>(!=jx^B4|uCA^dws{*lHW%w*xgNyu z`s#e%H2^Sc+tbtICPqV8T`w1Hh(ybwC`Ty;)KbaAP(*ESvA9}Z$Jlgjlp>{M4l(C^ zv_A(#Qze8p(0&(z@Zx%-NP$_@hO7qK1TvtaN&r~|6hy_3kVU=p_WFZ+uRXZOX!EZ1 z8=Z!n%^0wW)DXl#o1rM;qo-$A=TA>g@BHzfzkQVi5&uvB>%aen&)heFk~V+{MrNK( zj)V&UH4nBeZeDXmFax~GTjDPq9f}Xl0Kh>k4guF%?zY4RzMdanK6CIeXK^xZHM@6o zS`Cdu?<3j*(-=lwNmPB0524p3cOwn48t04!0Pv{h<_fi~uy)O?aYA;dHC!`W_iqLh zLETQo=ONj6sr63nr0TvmcFNia0FTeE3?b~#7fisY4deczE4eI_D1>1cP7V$^@cG4M z7GuNIr&ZsZnTq8s6zKWYRR}TnJvT9gD5W&9Ma+Q^q?iFRF1psTiNW5Y>r-k%7>0om z6l@rVRAk6yweHtLKi@wJocHz?D8s?g;c7hu4yVWSK9@kss4+ChhX)YCylcQ@`nnC?xEl-dBG$&~_S=y-$?j9SGs?Y=sb4H4h^ zBxrn}Vr1!x*P}Jyd&?(Jtd<2OleKxmCZ-R(`Lk-xz2^@vpYVo#qO!Xgm7VE8-|1v_ zby9J5LoKJ47UhF7iBs8avmIfAM=<~d0)D7F{*3wimjo$-Od>7OfBZ zQ>~HH>?}I@sn8m)+jDBpGteKFqpvlIxtmv<)wK(rW@^MQUMRjZJjFa#q^fZrKE4i^ z9L0pYwMz_{O5`NU?>u>MDVDkOfaRk^@L)ijIXx7xl^vsKI0eJPNaqZ(bNXKCQL0*K zJp+$87GWA9D#az%rLS8bg_*MvG@05|)J8i2_0R65a)tE=)Vk!{%$Jp=Iyal&`@z>c z{{T&tT4&E;%gOK!ngGgncFQESv*(V@wC|^DignimPG$&a3Xz~}W6ag9#k*tFEIu~9 zCyV zLJD_(BUxJT_@~fxhJUNZ(a_u0%totv&iM^f0FuNpXz7XWuDjLGe- zf|;8OzEu>8$%xBXVgGGgNyhe}vj4;-JuZ_-1d6X`Su@NH)JAI&rL;6Wk9qy(W&Ij% z_N+pOJ64xd@8+yM=%?W7T<>AzdJfao6W2Q5br!(XBdIyRD&G48_X=__%&}VyLg;Ay z6bM}yI<7Key^~B_Y%1~FCunkoRAVV?v6*cTX;SmD>$B?*4U5u^(Wy>zYSw+xk`}od zKQ|t0$yxlFl|`dbNa&$y{hse6&VDo4wi8Ez9)d06M%{j%t}Z*QreubM(Xq${3RF@W zfa$;z6-~j|^|x$&8D4V7Y~o~@m+!$j4g4h;h~^Ag2h8y^`z2@XfYl~nsOd?!%j7ql z6HjT$zo6-7;%!V(vsLLq$NQv+l8jFhY9n8M*2eR$c-H@{Q*Jgl;5^z})>DRJ5Uc|~jH>Zz+PlfFAC!U*DNL< zptk1I`y#!3Kc2X#amO;!3)MT035wT_?gf@q0G(`odLvco2!w0~z5Lq-m4I<_HkhmU zyr9-M+_|&F8-Enu+Y*;ApPMZ8LjU_Hr;rDx2j|iK{xZp0YTSVB z_g+$e;y;9%r4*5rv$m#zriwfw-yC=+JzeQTEHu<1cFku_nWgulT9$&OC380M{ZW|E zZvopaGYc9%F9_(oW$~?yBI~*W_-J9Sh%PiNa|9Ll_{CzwL~_G}pE;vp;7>XQJiZ~+ zj04i(Oh%w#eXP5BY!+5k3D4M&EO7&bo0dEVN3Zsfl=t4fW(Bap1Ke%$wK}Z9J>DY zCL+{bu50XKS@1u^ZSLJI&nsBtj-cf6kX+^xUu(@@tAN9gI+Rp7!!e8(RI2J`NiBKO_~hpx-zJsztL zU3vR%_2FKp^UWTgNZ`Ol>Fbx?Pk*0cZo6pPKR=S&7=JP5{b%cK)&s8}jBTH*t%fBUkX zC=zmbEEu%@_F0QgNbwG7=v?PFkLjD3`6*)&_rQa9a!c3jpxE+x88KQhBCz>P;(Q<{ zg^-r{PCb-5mo5^&Fmfi4??u@RH`~y=87drd3^1=$y8ZGDjq5&9@dkkCOV+GpZ z!EdKXA(xK(y59ubsEU){uJM~lx9rD+NeRF2fZZz8>+b@=4Q%7PBa64%3*rC)^3O*_ z_gFK4u&PU&bed-!j*kx#mSnzFUk0d&UJso8qUaA1`*0_0cSAl#`L)x(eo-RQ8m}#Mde_<+JM_G*+TT zKBo{YC~Z{Y2$+qHkZEySo}%Hq0n0Q z+}GiP{+4p<(Gra#)l7r4f|5gt+dfh=)pTdAFN^ObpMRfh+phgJtI{z(pK$Bs*l}a- z2YPlZcX2duEnW3Q?Lh^Pbq@fKR5SSNumS_FVhC(+IM-f()})>M+KMDN}*bwiQ=Vh&uD z^+}ejko1!Y&$MF8M8eBkdr&(v!30lFx-s}Y?BrM`Tsh$2EW{LYK)!UNVJVTYT%8WO z9%MvnTOLM3{;oO(R*Wn%?)%R<&ffHm*i2Yu-X@JLm+X$j%Ou%6jaGMwreY)3pQ^l8 zg4xz(lhrb6>giIjArt=s1nog$l>4VLcd07!?Lk1CVNR)LqwUTj7lGF*7upI)C~%&<)y^r{Z=m28+jo?{Yga$5V_%TCzwC@j0*W* z)k0lydyBX>SFZg;&PvaT&`ox=6~WsJBdU-|h4$;MyfgWb8pi;C(Ej(L-|?@mnhz`~ zr9x~j;{~t3ve={jZrsFJ=%Hd(Rcq#hsdHH;@hbANSq|dr`Z;a}%cUy?Uroj{&;2RK z&Tw=@t8pa}*`hU!-*LlH>@cRs>u&TaG-rD4sp<@fLs9F&$VOwaQujqGbIwP|H0PFY z=gla{at77Klk8m!EtiI%&&2euKU2STzm-{>;&i|Kp=0+Sw%yy0b#sVfX~^n)=ajRZ>}%KMwD+VbjXm!X&HDC8$VG(8Z8mzwEH15 zAexCON*pt!g2s`*N`dq9!YiorSeciE5e*W)gb|w(FAZbrYOWduE``$SbW}^FN;qc8 z)o`aC>=BNNfQmtVSXx*)@o)f3n3KO)kkfhRCypJBpQF6E4Ph)u%8k0Q92 zHPn2Wq{5xK?)fZBe$wp^hn`&%{F^Mt$3(54-zA+Vf8{ zDT%7%GRNxT(&}=gsHjLsraAAbrFkplJ?;75Gpozdx7Dz~i!ZlENljXS-?WV!sI%A`>NrvVbyt20U8S>OOoa*A*jjb< zx<=-iXG&NKMu$CP`ExH+`mXGg(hJ ze}PNYc9KF-?v#$327j|!!%AGOXq=E{f>!7L>Ws^nNecJXdM=YO!%ZFI{@;1D_4Afg zBUZ}gUb9(p9h*mweK~x-{yXShm(3Hyo9L-e*Fq|{R!<~4F21q0o^>V?{v7@t9dvoG zEkum`W{LecbYn*F_Fr^0=lhoXjMMQXcfKomZ`-I}tlU_6hR>^bb$c%Svbil33R6bw zL_c~2AZEz=6&YWiB|Kv(fo2sW#6Ogwt9(uLvVh-KlOU+xKN{A@1qQ5W@o^>TjW;~9 z9gg%U2CB}>yllyuY}y&&DlY}*ZG*jLh;ZqT8`9xR`)?oj>V55-C%SvqKHN~)?0Myc z_nO~!ww{C{Ktus|k;&Dcs!K_ZmmV2BNIvM=a!}hBG!YiGdMjApEhhnN5}H2TG9RyI zy4x=9XzCqDrV4rs>Mw8mY-l43KuMu_b@#RFo zqYqy;(x)=fejmCtOTaVoJEY_Yg*1fCV5FTPcY7$-L`mcM;WMTzV1K7>CT@H|rfK_c zCwTI--ITn%&y_r_9dhIrnHg|z%MW@?TN0M@EqZ6V%6O#kiO&qvjajwTa^thAIVZ$p2)%?<^?ZNI0QGjTq~zPM6!b=Bow zDPn7H3_^`wy=pD0jkWOth4_3NW(eW@X40sqE6^1VMU8v_MjpA8OTn1DxEsi0T0VbO z9blhN2L90&`%Sce8|^h46}2mRv(i8E*KaIUH{zYl%T~vvG_Bs>1DY>qYlA;55Jp>q z(~UF)aDw!YFYoTQjHSON`rSw|?h9%ILY`6Wf9byde(v~aw<>X3aBWxG5jN7XbGxgZ zgWFBN`N4YzJ+Q7;gd3a?k(4ez-yWo1nGCFCBSa%749T8Dpxi6lN|ij7Ie5o27Ww>} zbaiSRB)t+J0fouacYblAuy-*f3cD;wE&w7@6?!n!Wk19cFJ(xGbhw7=T<1Ca*d7`Y z_2kylJ$&)cn=XZjwGY6j3O4-3MO6os#27MY`TrT+PBc!k>ZqT!4{jwSghwQQatiu1 zf6=wsS(c7Kj6Z&U(&dtc_`@BCYq7b3Oy08G;YQWm%y@O*_9rpX@0!s4`fqZy5j_6l zSkr@H&i8Cb7AO}yw0tHstkC*=|J{Mg{ChAUcS)hF+i=N%)$9a7+%Tp6Ku0vD|3pAr zjgpz!WPRDTktZ8?+4mvPqwR$P7%;EkagZ4O%U9&y&PnHJ zLp;J|RIQSS=UG~?ILPhNjV7~1y*6LYfPhyY9FEOYMO$3`=NPNyBTq5rk5(TwQvt=| z>h>mkTee5KTiFx>uDm=J>np#QR^xwnYwOAHtIh`*Zc0N#UYs_z2YvDTyhM$cHf}x& zE|F=LsH!u?wR-`Wf1m#Y%Qb-%dCl|>P2Xi4v;7kK98w!QL8Lxdx~G_6C1qBISp2BM z9*VXOXxF66HfH^`R5kNQw!#i#<~X#;k~6l3t~0BSZT`#rZY%I_wQ|?9>E;~{g)(bh zD7AEO>SYT%Cre`-ljb#*kr;|X@$c+Q%JnkpF_PTpfAt5MU+FAJhe;hux-)-#&XYhk z|N3O9kvK{E+ma5g0TL0kUS#9pF;T}4D$aFmXlaA5zkA;D5GwukS6w)Rg=gI)4r`G% z+qHD@^S`cyQl5U`r>nzT+TbG*>X0U>Hog%|t)!eBYfsFF)ensfcy=`mmoknk*32k1 z`L;t5yO6J$&O-&1946DG%fXhK8Oj6p|L|TEm8lG^>T|a~*SP&t-SMXPF@!{U9DzWX z=1aCrj!Z1Q$2e z2sYlcNXQMy9$Rn6)n$ahC~%M71o^Yq(5b0qMPwlK$#r6oIbzz>9}y*)OfeA1hhJI@ zk+7B9fvVVHpN5)8-R7~M#P8j8cbsPXk0l25RRC7#`9ZWNPKrM?2@U0c z8!8Z97d4K}NG)w?=R13G&usAuY#Hwf%9uR}KS`Ue*js%W%77q1ad%OsGGbG*)Ooly z^whZXtf*_}wykT7zmwEV3TR8{d`{ixGkn0O{C_tGG=sGbAF9D<}q( zu6BPl)563~I9I+0U~DTThgi(N(%WO8q--*e%jp{(gYkd2?g4@pnpE>1>+p7hNB2vt znSj|BqzEWHJJPsFzKT=X$YZJHX8LKK;#gMC;P0XeVG2|9{HNgS{bd*}D%$A7NJF9i z7dMTv(ozLCQJ#(LEPJ*{@g7*0n-F=bp|^UZs&)mn=Bq1`-lsJ2YH!Td2TaibLOsp6 zEd8EYFWOj5hp%u)1ALl+dp^ONfHRr_C8gr;uN4)ooQ%v{GY~~tcMS^vQi+7LP(`G6dg_%DEYnW z4-S`L7uu9%O21Y9&cFWa6CN!hkpckr!##GFDvT4FQ` z6Q||Gv<4uIDSSdfVHEe;7In8IcRp%cgX+;AwDchdk#SWjEfm5s3$jVoh|zoqf7OyP z2grcg>Tjdm5^e~>M4;K;|B7*B-Fs|FUp;SeFMJ$AL8(iDhCCOr_1r71NT#5oX9Rz+cDwxy-TdaeP}IE5aT66FNy!*A5}b~HM_ zWaO$I|K3MZ@&hQk_Zx2y9kqzYVd3x$+x~nEV)Fr4^C$27W#^RihVn)@irC6c5)gjz zc{CFk_)SPz;%;VUrsJw)+AwY!*1Ccw=AXFbE3UdlLjZ;;1jj+RrkymTr}`?CBv?_pu(=S9`~&9Q`qg=@#v zQ4mm4WUEgo>$0S%mba(pKAzKXBiQO?9|H&B?T4k<(MEivC0#$)@Etf+Z)!Y6G80rF z>6lf41psM;-~h9cD~o{{J9ZKZNNVPI7$f5Vk2-l@1dT16z)o09mxx1by9Fb=2h$jR z`E@8+S=K{@z4WWd)p^=40_F#-_xN4NqI4m2DcCtsdIY_YQG9X8Bn9L%Qh~Oc?n3iE z$|y^m@w&)sIqgy{6^v z299Q|LKlW(Y&^rCDLd1BmKxxL@{f#MGQt@xo8J%zC*VPPgB#F{+ zt`Wv!zHCt#2B69Q5kW*J#_{lNH97+Fwbc15XH@T0{fxlRhJ^*d-R@hfT#5Lll~1c?s-2^QOni0K-RyWM;7+{ee{3s$w{&!ZAmPMq9EcMa&aenRD z)wN+)2HD+Wquh1k-M^#Z{$jXoeoO=eWQHct-4oxcMH5ru@}U4Ni*_b7zl{hx@8iEK z(d&(v>z(ENt(Kb`JhWuLTkw}0g2P&?6gSe@IzR9FvlIwOFHSAKWG3RcS1M1%ED9h9 z%P2(P;wS`m^y3gt)fJhh+km#6~KMF6{ZvnYD*djz$nQ5TE1ZsLIm+090_@tvoQ)dFwDscddHtb)#`B(xtB0$T3|2|gdz`h{-(NN^z_Nn&%^ zjOQW{O(hU{{;!4MQ2ea7#$T-%8BQEih{^U&)sItslXe79jh_pe5c@C{p!+Za1+f2B z7d9(sY^!vcC}f!{=UND?$kzK!a)zI4J4q@T?sIH@PkA*$Hi1%2GhHO)t?~*8Xf@|o zQ~#R}Dj6%(zppv`0sbT|42S?~Fhtur8jp)ULW@##FG#yjihU}zb5X5=6Qk%rB4L}> z(5I=kw%U0~Xare)!jm`zDUa0M-W=0c|MfS8dsjNF4=F@^bBFxTdWMIIegOUZKFfKC z=o)uMh9;TWGEUPPs6~&`;y^}Z*+-jG z7=HW#nT+fi)O~{f!srPw7BlL`^}G3-Y*i)N=zZr|bqiCrUk*uzCPsMF8U=D9-WMh&(0`|SI6=O*#6r8A(W$&0> zIHMO-s4b~3(_h+TS7NKyQOC%qzZZbC=1(MGkJys(bw?^1@#0(Jgz046?RXI%rZ(}& ziy>=JRG|wGp&fNxM22|`u&q0~u%?nUGn}jl7@-!eM2W7w?L1?#c-t*)p@J^K&jnML zUXOtsNZor^wx@NEG@k!m#H0!sXG0?kD*Ixz_#w}&RZU}TYd`ry-T_lxHRhpI!_0QM zBlt-!$iri=<9dzcZm8ozIT4`L8uyoOUa51!vD$|V#RG6v8nm>{SZRIPB}7&ZL&6ZF zgAU8R_{DBf$EARTk+j)@x$!6%Y23yIC)$#c%?~dJ(TV5^H`=C1vn>iN}s}fCr6V`Gd6#zDpnJ%&+=XdZxny=cMM?9QN*_DT!UEY zyk${gXE$=dz`Jp&&Y?B`G+J6)S;V&><#gl)T>%N0xKiEd^g0He7x9%WAO{JJ7_v`J z&*+yPk|$`I^ceENi9mMBQ3ZSTJ&?j|G54X2Cpl>v4+0Z`1S$Z%FkiWsbFC#2vs-C%&hu}$ zuF^;kN=sfT&R#G1A`v^$Z-|Sg&Y}xrQ*Z~5_XgF>Z2Mp4=$i?=y*uz&P)6A)plN45 z5pyD4c>*a{fCrNwY}y8DVVMIEBRIU)ej^@J(>+_xpo@vY0oEo`7N#Dt9yw2n1_lNW ztseeSF{W7Q%VOk|o z)WauxrGHFH-p7*m8R(pg<0ugAw`RUtGoExS*5jp;5gb|)szwjg&4Wm zg}=1caascj;6EsNfoK!p!w)5eT1bRq{a_kNrK)z+_0sL%FJA*26-0+9B@#))89_Ek za3xV4AdO8JvjX4&sblFtafa?idhdsEjo_bFGH;A6Hz0aweRZqWu>$ATe`Me|)acJG zkWiRDA%r3Ran45xwPB<(@#pUvO-xuvH`+&-# zvk#st_f}LFnvWY|iVy}N{-znETE6w$`$b>BYkjx)0n{DvEbEtp4Wr z%}~e9R3TIF+tXeF@l;X+6)ni1(#ar5MgoJ5fYyLSfzdAP^#WtBV1neLmUGYI4Y9C zfCDaMPA!QPDa>Xdf)3caCmc0MOG%mwR4e(s6J2$yq|yAIU)Y@ReZtb`iK1xoN-;ZM1tyNRdQQbre)x}xk2>aUU)%Q5sWyzG&Ir z<0m_LZ<7f`>GC6p1~lC#WvK!mS6MTu~GM;c1V&~oXz$+7l!|VJ5IK_pGvBvw7d$FI0ode#%%05PXU>j$?tqaPKy9X`EXx=Aeu$FXI7Gmffn zz|^ZHpnIB?-dlM*QOs5mHlQWVlTJyTl`qEg21FX4v3gr43^RxS+uZ)Cc}BI~&DnP6 zb8y)Cm0J{ciVp#wp~=iu3$nX2?yg?T0JYy$yF-@riT``jSTq;DRd1PtVc zF(QHyTzW&t$CY=DW6rX9dAYgF+hel9EstQyyNhRStRpEfr2bQ&AvBSnJsY2aFi<4+ zc)E(!4M}Oq71$cw z@9fV+F656#`{8TT`5U>8w&s-PBGeJq>TyYOb!}i+GM)*!7j)30^s~yq=vX+C@&2rv zxJWu1WhuN19sx|n7Z6W3VlhSen2YmhOG6lset!MWrp(TcZ=Zh~ig{a#qXkO{ZWs*)T-m)M*gkkGE+TWKHYmI5q z{`|Cel@Zg=Y}bENYGoVx#%DIo(dwg-a3POYbi;}67TIZXLPjB z$|l}w`K&H1mWdJIq!$;auUR`uUs-ALyFc`F(hQ9<77;}7>sS3f`MYkCuNkE)lD z0U`h(Ldn$(h2L6n6{!2&@{#=W2Qu*T?5H;tIxQWUOJ99wM-URJis&vjdP3>Pzqary z?d8v$z~uH0|CTDH8oaz@b+pZb890S`L>cb=AB%0=P6FTvZYkUN z+oueSO|{4%;@s5}`AYu^Km_S!6^b~j12ri~6tdB6fTHoIvk|^k3jTG@VMligq4z%h zX&Q{;b3b5VdRS!Lf}4054#gEl{N{_9Xjgwv?_-*t2KO})1y{t5?}JR$9#^#(E?a$j zhD-t?!h&fpasGAIr_vrkYrGtI({ZiL65yr&XWZoVOTM_OQhsRNM`ZxDILZj{vHUDP z%|BH>oUp?EtK_hScK|GAj74LFXA{1~(D#6XcY+G@cwM@AM#8+M zg^I9%3sgAP7fHj_2+gX?1T%UHk%j-@duwhZU8mnOjH(n4biYB=3(_| zeNjh`Um{|>w%pF(k*J%!Q&7ckq!W{Mdexq9I=Uw=6L9(YAJU$ySLKB{@C|HUTs19C zq;Q1csHiBiI%GAzy5sQo=*RRwk&$>h7oM+8s#=;K_r{2EeKFngOG2m*g0c8_Wf&9A|CBpVawlnC6J0y!=HcNHiccDx&xEo`X1S#P z@CYE=^-l#MoYfvu4{*FLAQ_ZF%Rl5<^sm3Jt{rmQt{WwPv z4l5uSLZLQ+g$o;4V<@(J?W1#t>FBsqc(4dhL$Ym)He!1SfhSUAJgw#sE_suhqo^!q z3=~1qABYL%h-uwZ`fDA!cYd6S0LHy!Ew!)M-dmI8g=SS26|yxksK|RoB^ah=<;*fb z=}+VlGlU3R!!X1Xd+Fz242Yi)7z{HSx499|af~qbl+$I{=A+QTgGMkOh>(wkh?UP( z;5%%F;Vk-gWO&q$1IaBN178%5X>6e3RRct@Fl7TUYlaA=^ z7s}w6$2kw)38e7h9b4=H-+3OMkPd_)(VT>@ucrb}N%q7_GBycWWUp^YbULoH<}nO- z@aFs%byY|XS2>SjIB48ypgb+`A(~TFQP37;%V}?&O@vRH;*3ud#+sb7@!Ck}p@-c0 zQ0PgusxX=R3^?@rkl zpcEsrRu<;uI1F|)rq_or5cHM;lqTe57@hZhV`u(pnlw?Llk;@z!p zG@lX&aS#7$Dp8zJ%djev*FuE7k5O4cbdp71{nKyqVVbNIh1$XdCw%MTxAY4MJ@%xJ zY|+J)w)x@|5fp$~s9J>VJ)zVzdC@v35aaIHcDz^?iTXPkLQnurGXsivDCu_RlkxIRs(%I)ooh zWL5r9H^*ArmSlzt0hwxrQnP8eGaI1Lfgh*YP26fi4GHpLmTiGDTV{J903cA0!1lHN zV{80wk}dsUlqFYmL$5OH|67#M1Hq-+@2+LA%vd9lLYlDGG8BqxaS+@4K{)leY}ddt z{560o6sOK1&W>`hMP&{dQPtw#o|akNk*V1y1aEeQl5Z@Z;-h#fW;~{Hy3kq)g)O85 zj=0xhdynoQU|k{#x@-Y;dFwFHww(YQRyB`ai!@`L%|}68{4bua(Jsi9AGQ@@awhEb zIii`a##f+uWB2E4E!4R1GH-S0=3yi`BH&DIm)zY8plG{=Ia&meL)h6fY=dKQF@L?e z^ipt;<}bS1J{g$PL14XwD@|Q`smbUj1+gZKpus}q(L4w338zR{VH_9nh>VY9255M( zQnj*osHAk!zZyXr^;j9rRe^#l^I}rGb4Sz#I2-V0SG>h~GWRuDi>S_%qR$Cr9f2w> z#Hu_ZiDoi#9}+Vya?!ds_*u`$_AsJ4uFy#I2NnjPOAPy*Y0v)(^QMe)SE-ww8w#wGutlTK>u?N#*WuyJvpCW*X884v&ILm4l{HE$bD!id7#zbRPT z@`e2L`xV&^7-l$9NDqr9?D@;q6fULMT6rag=Cns}CXECMNzm5Wn*G3iPQ!OiIqUIT zkE2HwzZYsft>+4UDdts9EBdh7SVM#|3Q$=Bkt$0<0uk9DcqI^Y`>&9kEkpmbf&{5` zpO7Lv1vTO|%0sOB@WY!G{c2SRh(^!-i69X$cCMmV<4GYhXGDfuojZ89M?^}2WABZk zvMtl2q>=c`;lA+L?%A^B1PFnj5T_n((Z%ic^v7U(Ln73}&*Oy0uTirN<{CmuT5x3B zm;8B=tQf-6v$H#^yG_9qtRx(eNxWujxkt=@acR3#WFv%NQs?GjAT{do&G%+N8qgaI zv&UvfP|UJLw#yoTrB$iIYqkQxB;rI3lJur@yaQ+#T^%|FCQ1W^Q@>gvJs z3$ar4E&0vRYe6gMhJQwq7wQWR97N%Km};y~o7%!Vp*3&lp?##><=$%ufJj zEzyRUj^G7_R+xbPeyj((*IA_!T0JeTR_#U81K>~bHNKpY!utn3+uJ%*kIRr+ zQx7ke%aNa^HWE3MufkM02Fcy{iFSnY6yK>o}n%NsJsyGA| z(y&1zd7Tw`c*+%OL`DjkbnA)_FK(6x0;=7gdL##46=^8)ra|e$>R=J!3_#o+tI^%5 z-O!5?KifZ2j_9g-;j>k9RfYkCsnU}fC8GuYfs~!JU!L>(@xbn}5aH{UyUwxOrxc=Y zxJ~7v1;|eq;Fn(?8`R&ZSCN0{UpZku+|OC~D&qzFo3zA+Z7LAL)B*d4g{(Rb+&SLrA-8jpwJxJ1F+J^JxS zeD}J2=84Ni1soeUTix$z0=>Yrr(haj&*zhAr^2(ADgWi^Z&${)_Pg`2+t!vUgXMKv zugr^S_a?BN9#_;eo3%DM!O(pTPDM<1;(mk=AwShrlAy>VFAfvph;Oh!*DoJa{`SFh ze*m}w=0CaK!xRvzxiZ>}*7)6L$FZfWnm}WiYD`qLiM6TKtp~#)K;+?z1=A$gj4R|; zQR92kXKRelGNJX;dV@8pc%|2S%l-KG1v>Nhbi)%9)gC^G7tM1Li50J7PhRf65Xz-Q z4q81h)Ac20{V4vA#4od}wRaw_j}p*6tSpup?g{$j^x9)Wd|iMr@Ha5r8ttbWu?q+L z#or#+ZcS1g*C$&cY(P+Q0DF4Q)1_BLyzI`xJzxbYzuNczto~b9v0?!YeYsv)IKS0t z-xq@Da)mLcf(r~45?YW@`|MW)kzBNs*l@`%=9FZWXxzd_O5@%o*#)eV=^HDn9l_A+ zp+auLFd@;Qb;l9cDM*&~cUH$cdqmAVGoq!JzIanHZj8b}4EqED+5T zOPI>A(YUrNOOHWIy>m=eK=)w#e|y@ulj^@l@C%y)lQiNbqwM}_%uyMgtH#|}-Q|Sd zTaI#Gpz4+gvs2(El9_w}WJdyHQ(-|({(oz{gNU_l(5h^xmlhUiDnHRuMPfKS{VG+8 z3}CHE@k+I;e}X15%a91l79sRs7vIcNx!o!ip?eReOFSRKSGq%jX75o)5wXFAm@P1w zP`#~T#J>Zdwwuk`u?F{e%(KyikCBYGyT+qq@AS~v^GKa1XO8UnnxQ9pK+r3DwFq4w z8yaQIiee{16)qw(`tOy@1L~WCQ&z$5Mk`XArjmJ^j8%PqeR&LuZrKb?ltT$;;ltU3rX2rsr=6V~Kaa&ApbGnaj#P*q^FV1a0KxXe zA5)Eq>DCDe{`&Q+w7FFB-XgJ#Uzv3#m~~FHAJqlu0eEZlPpC9GJoXlrV|S0riWd2; z6LPq_I`sD2sdvIb&e5A^-)eoLyui@I^FN>z1Px8+(Gp#>5KS5*nC}bN&ffL*u*%9@ z!c3c1XlR)|dVd$93{-0Wg)55}Ms>lmh@<*1&f3!|FJ(FQ|5#bv9hO;bFHm$1|JlET zzv)_g&LslS>`(b-v+oxA2yKr-Q|vGE#DybtZ`9CuGH>XG+%?yKv8M3=pa^@7FgdMt z3Ns(sHvk6n8V9F>f-uyFQ8oe*FLWQnsa_L)=jx6Gg5e@b=9GX^9ySOkavXZ?P~7|* zcIz1&@I0&iatdENaKfX8MbRr6-A>P%sb_7~W?TvA7#$m)^k!Kt9r#C-?3;TERFr&X z)_X}t(Abajp&0t(aWLnYcjNvbjH|3`((q0CsAHSlmP4u8f$*|J!6d?x!Fi7=zs-^y#fi(s360dnfQJym0TvS zyX)Em*^5Q9uZvH>D#U(|61p!vFj>~!)W50OYyfPKA{reJ>94izt)afMc-{Emd6<7seAx+`_BT@GJHdCWO}OL5`D+9_ znT7qDppX`rr9m7)NTJPke>Rac>$A4l?b`lhnWM106YD4K=6KklyJ41AnrLQcWS*X6 ziT%j4)RD9lEM&GjJSyV*ohegP>hJ zB(q}->mVy9(|(kMV%z|yY%HXKy9;(uVL(rxB}+RqG-9PufS1OWFbYs|LL6)0aIE_V z0JlMfQE*0dt1JP>O-;!iHfszn)~qXL7eUGnzOvB=^S}tP0EieQ&!0 zc0IS3ZnntIC_9NvqsO&5wARr2_ex~V1Tf||iltFFLP4+LajdGZJ|R}NOF00(v0VA} z)z(3$^h%f9_1}YPS$}fXE;yRPB$`m|waI5gOrKDU{A13c32%=~HV(6>@Jcdo&|l>F z&kq+(whIdjH*-26?>6420=fVxyHIiDgI`@*L|{}rnz@|yo&tc~=M}U2V`3$6cpTiu z)y`@j*^Mnkt0nNEDmBr&J;N!xzhg*&nI<4ft9)$kEYD1&Up>IOX-pA3xC{?Pgk7CKo z^8Z1gjNN@AU)Qh(vR8$H#aT!sK3aSzI#xEhaekdF)b8!bG8^cKrLe}(90OPz8Zok9 z-6mujnOy`HO;d!;S7E8rVo(Wa3Qj@<=VM~qsdY^{Kt2RjDvi0G zR#~+?J-ZsmPr`TG9T$ESEW2%2FR6^!c%g;xMDdtrW~ColJvc%YZc6rO6$xYYBT+?8 z$>mR#etv$Tx3!JI=*+}vQV8iruq6-la9mztA9j&WPa8q=OP-#FEjJYq{z}R90n+Fk zpcD3pgT{uN8Ni|))eQk(35@}gRXMI#j>b|e4E0{?*OzB>l{mfoA4BKi5A`3%@w;<4 z`_AfQopT8hj;xF$<48o5nN5E1ter zJV3jG^==Q^vjg|A7EdtiCb{V?#ls`kY7_c#Oq0jb-Gy6tOxLAM)m5JD1qc8Y8au{i zAwgIZ7tLS?0A7R6L}0es0)bh43;U6m=Zb{DNbh}h72}<0@Nl8<^R;L5;nV(SD;G;# z^~?%7fY^RsZdhvUwO>CBzs3rN7!A0dKUvFa!=Nj*e``F9Rc5jFB1ph zj;LoeYz9l>d!1}?IaFX|JDlQp*k8Jq3hhqS!24?+1Nmbuty*X^#YHIJ6$#4#E?0fbx17AR!{=z@9acyOuAu%Ma> z7zc+KKe5)|h%EswP(c3j#M&#*KN+HlO{TeVb;vDAkFa>Mv)B0m23ySb>I?xX_6$4r zj84Xg)2;zElnamp(i40Ux?RiC8Zx>7p;PK3Ir;f9VdZ=(Ugv=PmR4Gbrt^fCd1wem=_JILdQ5u z5tm4?rcNkn|8%8u|MT`O(BcKP;%5KvZIF{3T?F%Cil#gq$h-Aui8bt(&rjjo4C$Mb zc~N$nF^5w=L+Oj>N7OB5MchNRu8>Db81w@n%|n4WO@h#HtQ1^Ubv~*^+_H41QX5|t zP?#yEN2LVYew2NupB}-*j>n0*d1WujE7Li$3%{mEv2X4?AzzXtYViEU{=6o(Gdh)3N)EUu1IS?4V{KyPXa!%<(5ko_dH`p?>`-hk zNz*^Y{Cqv?eEi=a2vBg3fm;LQocNx&;aQ~({7Qt%08B?=Y5{_}M@)PSm}{}U-Nzpf z_TP1@b+D1z&WY+Rd}Fun3n{<-*qcMoLYtO^&As*57*fAuFe-;N`6WQcB+~EM3RtP% zF(8C`!-c=sR9N6#!Ke>dmq0cG4yC7D=YtVSx4g!9aUN@-A0!ojwi13GWlx02_NrLc z%P09kFaQ+we5%AaCOfU|HF$;{mNPObBM9;6gztosD=P4*_5@7_gU0j`iS$4?|37bA zx-y7`VAqe`XcQVo^E5j;I_H6^^__{W8_^6Pq9!do#~6>0NzG0+V~+@d{FZx)VSHZ= zz4w~wo+NrE64JS~Ep;Y=Od}U3F63ENr?5j?Urc*a+8W=Jp$t&cK4XgA4=XPZzDq_$ zi3Gv$=>@L{LZv}=_Py2i_Nr=Ws59eoYi1WOo@T)M8+sfBLCd@vdzo@l=eq9*=kGL` z2+&1|Fh{PaMSWsMN@#N+gtZXD!hDGFT2~ztFBjo9o=IOR-h1{)Hbi2{<)^qPv?@;o z`gXCU^BhI-@?;KBOm%5#!v!#eezRd8&*E#;b8%p#-rC+CqJI8-{d0lF3WI@D9JwH( zKkT}eL7em$>}A2Lu1ftrddKt>Of(>e7GMlckA}qE?(M5l4tCwc*#n0wIruY@hg$j6 zQgDbk4F)r@m+q7Ah<``FCR=^k^gH=DcYaBoqWNVxhdZlUH~gXHWzF2wluIJRC>UFoC<($uF>L(un>3sJVbBzKk~0I2{ZV zxWxcFJGD7b!&{i=d} zy+kqJ`Db4I!gejm2xcck>{Beg>@CzGb_vZ@OBxCp*@W!}L+7L75I< z7j{D(_7VfHkYsOTdmWUT04;KlJm#>51q{W*oWYV6JjO}w!tBUm#@JQV0J8LkAS)R{ ze-6$8$PRiZM(I2q7R%Yho4YHGsl(oHQ&zU_bH&vi_Hr&U=q@I^YPMXJb?NEapBysw z#AB_?Dl?IoPuX$!>~t8cIv*(a$}nqG_0Ek52tSVfmtVD7pYZ2^^#*Kn|13>qHeM9h zaRSglo|4ZL=Wh<(q}p*tyET%Z?J#jxB| z5R~Ja%b$c8!@c&$NtvB++XBs@wpDZ zQEr!1du(S~Vj@wLc`t)$L<^m89}JTmHHj|T@@%(vH)3lq(vWR7)(=t#hHru9e($>J zuOjqcgPE5mJ#6S7G@=0ihUYxXR{gr(t?$ZB?D`B=OBCzRj)$=}!j$Y?7XoaZfYk~Bd{cg_21?Kid~YrbGfJBMeN`l7@kL#{jD zZ$}8dh6Jai=YEPit$k-8Sg;gk@@L)ap!@X4oCzFa9zh%Do%7mHhnYQ5fK~{AM$0gK z;cwZIIU6?R=?IV-*}xzz6SQX^B?@5;Ox%?^486RwBA$J-%CF8X8@lPnjDiYH%1`?WyI4s2ZYtxp! z>M68uujPH>f^Z^$F`*iT0G`*YpRH1_9zs!xGF`jK`T3Y*X-$|WreT32l2h1CT%}5D zpkvsldd5RlC3Fl_0tr1boAFmfBUnbMQ@6tv7&(Mq&i?7`VlAZIG_v%CeH6j5g{4Ak zfaXTBe@@)JH|dto5BvYBNrh9dv$m%J>c}FbCZRLdU_i4!M6ejA0Zy5w#{le-_*4xq zHG0B~8PN{gd5uXaea}LIe>HURB3&XyT`zM8+;s?jyOboO(w`M4wld2M(dvsmtTX8e z4ipg>b9H$wVJ047!KWC+9Y5gjK_U15oc<~#!yyw4knu~l#9wup4%>3Oc>>|BJ_%V2 zJzHSW(4r17H#HG4S`Ke99C06@99)Jdqkx$8H31L^pbdj@A;BUR+#lDyc9#P_?09A_ ztF=YY(xWk24rPZTi4frQ_o-4>Wl%g)o#Q$}CT`U(m0sZLH`$kokfEIgW)4}&P(n&( zUwjSK%W6YALv+eDHP=>sD*lgI(v)30xy4{g_Z|um zHbNE7Dwfd6^E1_b9DB7y{j9-g$`9xDZici-nGV~QH&fQX8)G5%s2@hp(X=+O1dD?} z`T}#W=rH>dI8oxcPmd})S$4{z{v~AN@%}mEgQowzEF1Bul2B2BGLMTncGr>~gVW$S z;IiR*X%4+W!j6LNh_0)mrv`PQI_^5NeX*03^0Yl_aZLPE zfHgCf-USq8A#1WRB{lkq*~@NC0al0a6=skX2~7f;9R|4(_v}aD1^#L>mz-8hJivF; zRCGHR=hO=;fC_Bt1yfVbZS#_M@uu302xeZ##kr;z3udE4H?eY*PZ}b=y6y`lw}vL{ zPfocV^2R7er<~J3N0+L^q%gra?rNSytbRh^DtAqP`^G|;b_cXXqYuNlbc~ZGDP(!k ze@YLL65{mHg6t_O3=u*M78PQ|oRRa#nCLZucPGP7D!N0x&SmPiyTEI%O-73pIb+Qu?}@SJ^MC3poqnot zImt0erl*J2&FUP%KqF2%wJLmOE#frLJG(h=G)0g(uC>vr%68o{?pFyPOu%$S zA^I9R%(q{|t*-vMSTZ}^y0tVBejZ(!?P{Zlthwp32PCI_i9m81;{efrpSnjbWg5*G z))W-!3#bJ{Wx*+iO9;F+L^>=xZxtw~F@gng^tz?~f!a?W?)cp_@r)Z*=Hm5M=Gy3i zL_7_9;zE-obNvfH^d2_e#mt^jAIXR{Sv4U+2;S_uhP%W!?W3bv&dP#{D!AwHnWSrX z1K?13(CLoOi`dxM$piV>OKi#9Jfabg)Pe_IZ4*K?w%Fu-R#|<@a zZ9e^;`Lbjf*u4z56CP6$LZXbL`C}UMn)NAPuV>YAiMB&U*ld# z{P0fV2D4Zw{MJ8&Awt__!tcHVqZ77=*$!v`MUg1&0S{ya*F=}nu%hCP|C;3O=kL3R zY>yM98OB&}=5;KGczAIlDxIf0_@8r7lA4;T>KW0i0IspeBmcEsyTvL^y7YzGi1i^I zp=FGg`7Qz}AlRfL>W2q|35}*$yF|-4C=#nQjBFZmhuI;Ujc)@rC#zc3FJ%A)+*?X& zsvm7)cw+D+qL#3!xaTWeStbjDpo`@2{oPazvnerIU0%K3^!{Sb7pR!D&rjj^%)ocW z^YWzIR?B`q+dJ1mTF+#N_Bk#dOfsvaOG^^-g*bX?Brxp3=33wF*z}pT=zgBHwf}%s z{O7P_Q9bzA`1S;h$Czot*TN7#uzdcr#8fjI9jsGl=i6>==>N7Pn~Wd6C$`IjOj)9} zU7P@{kAAQ=tTr}%@~3IrESn)?$0v82oY_uk{j7akvc$kV!|?VimsiyU5W+jv)s>X` zLgMr!YL_@#{;=V*e=e5s(fB6wu3kl4Mciv860^3?_FHSDNtvRLm(7L+tw3izL`IgR zmY8&1-rm89mg_#3^zcsCwggJQPuy(YG1n|wi=TW!y};WC0c=+wM$Uk%+jKdN zk45Ge??8k`V*5Fz`;&hG5NL2s^7g~7t|uYByvrH{LVj!_GZs7`YCwV5{q{&Hy1&-{ zCSiG!&+@g+3>UlQ_Ou7-shtf225*+b@U@=GX*t9J9ANfWu4~T?D_4nYI-m}^K5kgH z6fmy&1{}-KoPIPC6!M>Y=1Zdq;CvNMY7gJxwY`u>`!fyrK{z!g2YzDLe%z$P)m2ur zQ2Gon79azDT~@E1)e4Q)>oZ5htHno6ew&V%nsLEzXQ2NEgs%r&^s1l6+FmS#OGNHk z3*qp38CoZVs1gtaI%WopWEEggeR<;^l!gsn&z(`S#`o;W4HyuD%Qij6Jwu~G^RJ|| z4464y?)RX))Fc|bVM-J6;1Sa|Z8tSpnH)6eU^<#Q%vz|$gTI^o=NIc|9cuha)WTd< z{; z@jt4#yZCe&P_`Jb&0nxbq5%5IS$t|B+K=>%*+iFXAVU4epw9;th(g)d=pO-w@X=Lkz zmdwqO4jRZar1OS@Q~~fO|1N^z^6>&|I)l;78zudmsxj+z;vC!aoptroNu%i(!4>il zZ%wm;YJ&<(POM*=!Tk8NfGVz=8SJ_SUuilKN`E`fS3Mm~u!{1Q7iMxOfa^ebKmdSVdXMq4~Z`=ok*>)jV@a|+k zz4Jj>LqU$>EXJNUNqY7XTEk9FO)d8(`a2l23HvNI)BW@VgnN=@72%(>6y8bqT~&~Y4-OW(lHR0u_fs_mLC&yUx=sWqyiIl zS%0V&&5fcLoK*ijRX_jOzI}1DtA4tbEXx24Uekm`PwhhWlZ>{<6|T=(sl2%3FJiZQ zeXKOu;&?+a3AiiwUhPU5`i`$;M#ybuuXeX@{);k`h+-B^Z^Adq1s@ldhNzs(7F@=|KEb0Ndnh2Z`;O`c`kxO< z<)K9q;lw6WA%~wuMUXmgOc_$H?G_V`k2uaDORu}=aUDHPC#YZ>Q7{yDpcYo!J@DQC10UDwvibw=hjD4lj#<5p3 z(0y7tgFKATug!yA8K}c!=pps4>zXmV`I)PKH&61p5p-Cj0fCChm^V(Vo*$RkM%IFLgci{Q=`?-l0ty@tHQ9i`dX)qqSvjYu9(yoE% zO>d?SLb8D`qtfDZw>9_WbdA_yf?);O2OdUPULaV!uWVuH811p`nHnXkmtKWn#Bg5` z7S|jV(j0*8tNxtHcMSFIlG&wDkJx$mg`!Gx=ZiJ%GK)H>4@Q2NI+SAi!US0xwr{1Q z>G|#`rb6a*w~1PRsrGs)+l9Dv<=rwq)@aq)7*Wl9{U0sDT#6H-(6Z zT#cbZ^6eBTC4*RecedO}~?ReT2qfokv*s$&u-m z{&67xVQ0>vx9)Ce=80Xy`tu3(i^hrF&<+5l>*DWr$Jjs=&CfNm5(B81gHt4VLp6kL zdqu9E(elVtrf+`fnL82=q_kJ z?KPDZd#*S(4mTTkGX$ zYsD)N=ogt8WHI zya1DhY2uS~O^LM4P8KaCEmoukt@Eso;2OBDmX4vIE*+`a0|ura8J+J-8CFbDHdX?* zbpwN)z5oHboPU-p^tO%e!KrBpcKY?##XW=CSwObUlkLKGlYhu!c+T|Cpq!$Sn!veR zrZlgXL?!D~?%am+ZBPFn zzx=Sjkvi_X{TkK(B`tPlH$mK2Y)Y=sO#F^)7$xeT8dn^E#BD|D`FbM2DrGAnp;-7> zP^l+`P3wxJ^H)ozwEx`1e8&yGq6=NF`;2kKveqp;GZNuuPgQpHL1#MaPcAK^JbH$3g(Gs_-Xcgbkn>XNtSoab3(=#TcTIXf7T zFNAV*{zD)DQx?AWW^TY?tr6gm&BH!ZMOUQVFbR_xk2Jv(CUxV}X{ymNOmsz8qD?RM z+b60=fZ-sO`_tZg9MaNU)Uv_fwftg~KE9sLSPRB_$fY&lc#XPEEL5*|xPjme5!Qwa zjA7&46PUrcAhBw{If_YLV^=L{WyL@2L)b29s(+>Zc}QZc0%dMbw zd%k~5TA9m?n`_jST?`|h(xan}6!8^zjOQ9IbK z>Amf{x&2vLZ<`0nM!HyY6_1<1@#t6eTb?c+?)c17;aRy$Jz!Qb_JZZg zmk4y zO%Uv?xl^1UHS28)1Vr+l|!{q?vJ0>cd7LA#hL9nV*b$mlHP5^ z9R+p_=x)mXT2bTn-3lKQv$Y^t;=E_x;jdqP;2zSquRr~4Re+e4R$3wHVrqsH@@IdJ zTL9xk5MA=0{)Cc{x+P+(M3!Y^OecKT z?E5KQ>RmyUorA6Y;$#o^gYQGEzYI=kFgj2iQLG;I-_Vckf+z)m1Z;K&+_lqc5uukS^+uRpUB3CpUoO1 zd{rf*v-NTs>Ua^?*Q-tR#HdPka;VsrIv* zvfOWf9!Kz)dwxOUkOp{z5Q1NMJ~%l+-@L$}zBsT(=fewk{ZjkSIt(gqzp8F3fI7|v z1kf8G?9-I5Red%KSywjt&+>4%>s>{wfa-rH0|#d*7PONpCY78E&AlU|CaS`rh&CmN zvm{z#EXlB2$V~0wQK@W)QT*9U^)mx#)REi+?klc4I6jwB77kjJHzP>9@p#M;K7hf9 zAs&k!jkTA-MPU`0mFCf35NsxN?9LE&p$-Yn>c8XGi?gZrd4d%X+*izWfWw^PT_R zCk{eS{=u}3dFIs4rwzl`FCA4o1B2SS4?jG4DpN!J$k*%<5>BiC)x_nk>}|2eq`Nv9 z%5OfGU&s9tb>H>ez)}@`5hTlPw)_eZkEWbTj75tPZLct0+A~uG`sA)I+usJcIB73A^5z6k^~~KD82va zZ5|FcHG}N!@rg)IwfT5e4bU4U>})yU)F z#4dWo*p%GCv}`p7jKQQhqqQCzAHMez8PE@PfBM0%9xao7me76j^V^#TNS`9Prtk6j zljWvtzFcIDf$96M;2D)W{x+q6N@>j9pYo9mqR?CB#caI&W~-qwodK_R;VXb89Xhm3 z9b*$QnxX28wEFm!Czx-`c@V4ECC-vC#Sl5&w|;65ylnjGDmy(!@g;u)S&;U0#`n{@ zlKW04Y1J+NT`J9=Sa-HKf1`eUd~vRRwsl1)mH0jY1yofDf~~4_ABTqhMf2E;uRi0? zkz?4K#%LjQV?gf|y64v;+Qi4yj5BV}0IR^z-e^ppXp~~rC zHSYNpXyv-Po0=snIH%N~?;pW+6E`b>3(xomJ%T5dRg&W>9T9W zT^9b<(eNh}RrouazV7nqpCWh@p8-s&T<&Y7R8{{un--XR-fEl@wR-ZSJwt>b6beuT-tcN=niy65rkO9@@6|7d0<;nOhT6i#B{d#@LeyWaTcR1V zOx+7Uw$_P8MBJ=qKakr1$e9TUl&9U)dz6#&?wWw=cB@HX!2jTz=olkk{*Y-)ZcEmJ`6iEx9X8t|&nWu>S&qqF(XIb9 zfvHKueWGjfT-K6p)X`#D+sz#~0I3-n4#@?4?+Va#et~N8)(51nnl5(PT#4YwM%H@i z&|-=zLM~_1T`7`&Q4n^u?b<*(%27^pwn>z>**~!-XxShEQ}yq_jbqSxTK%Lttm*gU z>%aAdoo9Krp6lW`M7gvwXxnOzzTo=kiicG68+Mp0NVrW&h%=+?5e-U4mXDSX$M6N+ zFDYFlo$Z<=$&sDH^qr+mCeH8%hqu~O8-2MR13_l!$Z%|V;ujs7UQqBr3Dnz!oJnzE zzyQkANsni&7Ke@#q=LKLa7)6#;IhMoc}zy!GAG-Ej+-J8-6!7;bQdkxTA%Q`Kw-p1 zNtYjz>(LAy>@W+9N7IiB3T&XNTXO9Sg-C*0#me~#InvY#{~}-;WYPf1cs>#dOM%Kj z#AIG0F>*{FKpgBE%mEn0tu^UKlBUr(*H2P!YZa8fMKAr{DEO?Sh0st%(|sLF<@Cft zg;iVFE`761m8R(z4jX9m=Tdp~dh*Y+t)&(#?#WsTGaaVJ@5$+qH?D*u;fB#hL3vKW zy3Wx9wv)d@tI+N)U-I;O$d<6wRenVPi_&|?RqxRS9Yq8ODhLKB~1V z(Lad)VWVBb>*v0HPh)@(5gT?X;&oq(aoato0d6w6&dc50a&UP_by#M`|Ic9ACIz>n za@txj@H+<_`o*kjXJdhxR#aI1p|zQN?U3X~;b~qWjIS0C!FmL$S5BwOYjRzyhkDKM zz8rc)SmNmnf@#LPeN|4SuOZbw2Hr;O0qN!Db2S3Zo>-MFyA?>tz)0Y%OJTVx1qw;~P zXMP1c4Tw`o-91w*ZBm2UJ&~4b@}WKhY8XkzNplc=rPTfqG8Wl=6#5-(SHf7vNW21B$Jw`2EUT6 zO2yadTE*)lS0UdEo5KIj6xv?T>ZcqZ9UTR9%Os$s(Xrh7G^gaaV9uwg;_W;kO=W3z za3v!`80K@GDMK7v6#dn{U^J*o_qQy+>9;8ch7@zHtL04x3lEla7~Z+h33yHGXvLIU z9VW{6M7>A0H3{M&pb7mtOH0c-MwCH#(#WTL;pQeKYF6e zSYHI68-{o7A2ifT%BGmJi*;F!e^>PsS@e>l| z-@j-BzTfv1;eSG@aH7A3lVvtg`1DI(5!P)3MWm84Pv# zH}_JbM;4Y{VT`bSFAe zeuP|nwz&%6rh9E!94jQKrg9zG$mo-nV<$}stt!3w-cZxiMl`*AQRf$Msn@=V>`9|v z1x#hF`S2f)XegjGUy5Th9q^-RZsTUOs_H|^#v_rTv@kpmRjGT|h=}>2FWkZ=f%FKO zo#{n6@@wrKwXgtCip24Z3eV#JwfLZd_C<_wDYHpwPWp@Zf||LGw{LlA$AChO&!6ijBylQ|0=11MSVS!3ld@+0Lv$nzdUe%Q;*GA zH}QKY()_m1Vz|>)If7lgIg?v2g}KJ3+Lyh>7s2+@1xBter+$ym7_@J_zxhPcYv!y8 znD$(*@$|!wq#*Ie^y+G9$=%iG1@1PP$EykLqi#V@l`=HN;W!2jtk%~D;kzFXj_1z4 zyLZ|G!;b#ak5*;2reDdb&&)OVhO!QVb1SCYlo>|yDp{PbR>oc(=Q&T(Y_OLqQAvzrsq)>2g~K67pKV^}qN`O)O=>S-ol#bHv+tgty>3K& z4!T}G7MF+`%g&ZakxmkMkdnW?YHDXmGU?IitO`M<3NZEF&sPW7-QRCDM&yJE% zQ5uW+1le)}c0Fv5mUZCbJb$)z`Z@#r6HV%OVawexUg$>Ldi#`IRumTqEXJv}1X$z# zZgol1;riHRfOgrw20$YMTZ6~5zHcOgUbi#d)naFNIYG5-*RmOnpyT!vg~g5GfOSg= zdXYfoW`*tDf9fGqxO-a6x_s7;%1Y;{jE@1KI>K!s6_Um{a;%aEbZT-*H)Xui-_}%A z2S<+4cQF37A1x`r(caj_$vCkaq^VJY{pqH(zlPF}c4B{x#1ag!smq2bbvLxc%O7ti z;q}?=cbS#rOjq^kjXEfHDdp4cQ=tJ>Qnm%Q*1xTlSSNa^dgp;$-;4*qxb`K4#>s1i zxF0;X(bn49U|736ZRh@e;g38Lf4!n@Oxr(LknU({pQO3xli6-Tdtl-G)|!?Uz*oWU z`*9U1*qI;qSFZO=@9hlNSBLBn!f(Iol%-86TZ2&vhJkX>uF56+7;a!sPO+soa!FD; z(Jbg(fmtTm*X|t15hD|MkerER1jp2p4{ImWpkyFa%8tDYk_^I;e1v6n7 z^_RrOwp*VQwyn(;TV8n+1iGS9+ZkWvRDxZ`p)_3LnR~tlD>GbqI1`i2R0<`TB7}jU zmh|5-%I+BCm3k2R@B3(700AYG^u5TGU-cV~nQ)8o15#1VGsgh^@r(z*vFsLdwm)_5 z$?R*)ODCKHF)^v0Kal_C<0ono>~8hxlqGC;=3xA=A)BQMGs(QQ!{-JXM} zn*I|3?n9bA5|jpr3?Pi-3*d3MMlIeTCD^^B!Lj?OVn+6bLJ{W|cX#V>nKs7R$4iNM zFCP;J8ztbVw{-`2n|&WyGU7N5Fc7W+jZ41PU%wQb2p{Dsc8*L(Ymum?21VP?ly==EH|FN)2A9Z0 zqClZ#V%M$bD-XkuKYBb;dPQBPZg!u~s9%&WhSIW981F{w1`d2M$hbz3c0kOa4|t{R zd;tlU4t)h9KG0l?b_Tnqr9^^Gg5BS#bv(I-c!r=Xt!hITRpv*~_H>UpllVb2A3v~8|9PTUvPma3*L2kV`NdG-qNgK<`)!7z zNqh-bMF)V57gBaaZo~07_k1En}BW$hP@o zPn9H-jXZL${nYHUPkGzZBlg^M`>~;THaLm(c&#ls@-PD1|Kz?#L&cDBoMYMXcV4WS zgY(;ptari@_;I_M7n>GLH;=pt4YipF;MbaEKkLJ^A4+M2zTM?5$;s5mezyQ9c1dkm zFO`HSJlnTT6p)e<3_T3!GOLE@p=OZQ;$lS0?GP_X^D-s1tzvM0@(ubFGmL$YcYTTg z1Y>nu8p&H7iHx7O6hV9qq&%a1tRT(KGcy@+f(BB45r@8qCQNSl1sLH&m=at(u9Y{4 zIE$&kWEJD-#Y-}+o1rkx_e873`BFCBU-kDLp7nQ!4$&W19G-^=4$8$bz7%I{%$)0D z`0x>+AL{8a2p~@bQ-QJ*zywC=74$>~;Cv`a0k*~xD$zo) zx*FlJT@q>|NkrDSCVYv#+Er?%MO~3n8Dy#RZxdy|Ro+|yjKKW>46?F)ad6{NIoUXb zp&1j6sBv1m^W~%A9{JFR+z{9Cin-ucb>P?FdKm+=t4Iw#vP3kX!UVDGm!pgN8yMQ` zqX*FiAI^uc$<_;`2oql7j^&<;UFO+19&Mg+GeLcGsNub>S87v!#c1o8*;|r8Cct8y7V)E&q?y1T7;7O!ExG}3H zu%Om?cG|1U{z+|K=T{GLY5Z0#%mQ>93!SaJ|K%=grLco==LGHU-Kx zF@M7L#$zQz&jTGv|{ld4+v`u|5pt)=dnIug}(6NRhR(-y|1ei6Ab~J31av{oRNGj9xL|fx&ea> z9X~T=Qg=K0itv=vGQ8<-*MZ-j^P4eza8t_UjF&RRWRB|dogE$FGQkq>=7geY*h8`PSYW%50ybh@2#DWWV8b-Q4u$a0-BN}Os} z2;W^1v{_VB>1g-JlXX{}8P(1($5&Xqp<}8_yp$D0qM4-Zb1yOenCW^K0`==}+G_R> zX(4+Yc@TMuxplMz1u)tg`u|BI-TPCj6zH)EH6^B~VcD>>kHPGY@S?-67pNzWx7Mot z1p%mWY&!BkonSZ$#SRw!f{fO9-jpRw`5JOTzD=X)fM%}W;ExlMd;`6QUpGePDT&%= z3qhStG9Kz|>z6N_^eXO)vuxt}+|msERW^~7l#^HfkpGQf>RtO9+hVgJ2r(hisw9AYUZ zVQbblHz&Fps@5I&_oq5F5qw-%7OUFs`|7rFqkz(1I$TQiTv=55dRJ8~5 zA?rS#tP%U=J&Cp~m&e1hd7%o5mow65<|IpTWqJO)%XBHb4Jw@;!{u`iBiMt3otVqr ztlJHJNWc8SHooQ(I^MZ$0z-g;6nI; zr%+rq!&q@p=BH!{1IXlUtp7R!s#8 z92Nu8XJz%1x=PasD6P+<%sA~Iz}FT-E>nHWiowYO<5nb_*2;~heM^lIJW;GZ&y1_2 z!!s&wW;}kWDaU!iRwPj)uJHN!(K|IasfVFvX2K3OGZ!0&hMPQ^n)43LtTOlTAtDxl z_$~R9BmJ?w^TaID$`?zC_N0iO z9PDnW4#DHbf!{>geCQl+ogv#y=k(5An5>@8&#k9_RA<~nEFW;P_l&1GtEg>tIxZes zO*DHIdP)v%ko;42+DQlk`E232B$7HSQB!bFpN4+;I6dgn+@A?a2jE7am@%!F*MCb2 z@c^>i7Ty|*ypET^4LyFq+o?ba zE&u?%r9#f#Ng88|?6k@Nl)VVQ=cuy-`%lE}#n|RE>a{VU@OFvC%5S zQTuge`C@bNPyfCp+tS6eIh71GCmY$SG<}2rmg`R6O#1C68+v@Q|L><~&{^B((Y=5B zDmGZ)Zj^1k@yxeF2fw|j+GUA`Vv*v-8kLg&N zr|X-i`pDoKoKV1BoqPGVsU@AG<9ou=>Um5LcxN9@p z&Bq9hWZh|sxLCjFSHJ8+S(~Jj!Tek(<&hS9bLXWbU&xLOd!1=$ApGzuI%?VOUH4Q`SJ3X-y81;cap7F*Vo9Nm5_CO_W60Yi)kM0l z|E>F2MhH5AOCGrNnqmAcf_ z!YxDuR%>d}$XPL&oqaOdb%E4gl_4Jgq+ zekrJad=_BkUKslCli&q+p|>nOHvy%f-qv_pG|P18FRTHOV`72}T>PW&J~z5JKScb^ zhUEy;c(ymnXZA@nuyl7%$q{xSfo+$MF)_^Zxp^F^k8VijYL)ZhCAL+^cSF0RSEu#~ zJ%Xy2I1Ahb%YHozY?ud)B$7%cxnd)(J}QpP&%qukocBKHJ~4B7PC3{*eGS9KT!#YxuvN&yMxNFW(VTmNgA5HgaU}6+k<0MS~#UKvnzZE zKJ#qv1}Z-xCKZ4EooUMaq-+y+973O?>hqU_$?1pjF3KOECSd$Z|NgV^tD|oJJlEv- z%%Qp><FW}PVj7#CEu1yWCy5HsQ-~qZLA_F`0yhYJvo0d z5q=yr2OMUsO;MaUd;YrFHWMs6>-F3msRtQf*|g7pnC~_7?Bbsx*nL@{JN+0mC-B8G zry_ID>-o`|mEbGrS2mBNjA219I(vf>Z40}(lRPO)F|<^X;GJboo^c;@@8w7p$?thv zq@xc;arhtnYeDDx>s}9^W3oomT*8(#@Wqt{7T45lhMHdJ{q?ieZebfy4qO>e(--w1QSScZMD?PV`-}JF`Sanc+00iR>@_30k0r zj&;3^7RtV9&Nj**Yo#Da!_NJ6%118TOe}JE=%!ZMzpZzi2G<{BkOn3ZQC|byuR)Cj zAt(O=d7J&)=U=7XUGHPC4b^dU|3U?;4)Z5QFKs`m=cQT2F|EDfsOh{nHOkKx+0Jvb z$GN{dP-05X=6cp8>ObUQbdFxIgX-6RiG6?eSYB%)W0W*gZ+oAHu4m7WDxfXLx?+t- zAR8*%<*5EQm)1>27M|h$D`#JQwq-CThvnX$KAhVR{${|gYV+AAx2O08Zz?D?8AS%r zBA{3;j=m{)!hUGzF8O?w)>)%@JM=6gCv4w6YtBDAsQk&2U;#PnyV~*Uih^2!fZ(n| z_v^j-a4EX*{UqGuf`=+LC#xTSdN3y(`?$b?GEGmPhn=g;#oAU$?VoVO9eQ(L?8gtO~2}ph@Ns zrE8B7tEj%+azmtbh)XwJ9d6;(rLO#wuB(@Z34rYtlGL`!D-DPvHZCZ*&12Vky$XfN z{e&93taKufs4e_|S~vXCMwS_V_@?M)R;Q-I zWqg!h#n3qBKO`EPiF~KIo^|}7u;V>{bTqBvzmD_@+lTG_$9}9Y(fftrYm3jz!=Hz| zO*mCh52a8R70o_UC8Syd-|!Y?hl2=4J+8F%xRtw(zi_rLE|9NMGmKXir;Bcn+p>Hy zIq*M%P$@8N-h6Hbpmo>3-l0_fQgyXwVst%+u4f}|#qs6bnfWqro8Pyq&wEdI*6n=wuaol3>fHlBX$2JW{{XKTQ0HQew$ttwtaBxxk$!)^jAnh9DAN5@3Q)or zk#T!9OU^1x>$-!Jqn1+V(>%IQGtbLhs5Kk^{SU9NUw>R{b@$ut_K&`!>-DD0o_LxM z=pC*jfyhQD%xNl7Ya-;}B*-F&-fmX35J)MkmvaP;HX&1CFIT#6vgTZ^^z zr(efhN|}_)#Dyr*ddmGWr{^8><@Fhf!)=TPA?J%i;An1Xh=eFD4KP(eW^ymqtZzf4 z=&YUInB%1Yy2g9Fyy7wKpqybP0^Zm=y5sl9d*R@Aa zmZ)<{NaP&WxTASQ1OO!xD@mP5$j2b{F<_eJBrmmMQA)FbusFY%13E;Gzolek@< zt^n$hFJJJx$82psLScuvV|$q{%j5bqR~2pU9UO%P5RC%BbrMV%eN-i6L~Ps{5Ln2* zjMzUtK4r$}y>%QxRdkxTZM|hoTUWyHol5FNq!l7YPeIa4U1nGx_b|!8)46J`=H9pd z)ep{|5aFY>MU_xI{lap7aZV)G+;2TIimDd2Ee(fzGLdDnP~Y}xrgR+^V>dvY7BR0t z0cLI{l?lLI0AL?BPZ9>#b)08m)#V)Xm=UqH_B*fEQchCqQj~}i%sm2#h|2^#Tv?p6 zN+BUa?rl6h-Il^-qI7V#hsUw>02Oy9F6lr-r_;n$!mT&!jr!IxK_-|*BF!uT0=y&+ za2AIS0a_RdkOG8Do!e%SAdICTg^)5pmaJ~st*5(>%bG+SjI-k$y^Z6hDzkc|~zyB3*N=B^;%y4lgoo)IF7m;!3D1JZjWRz$q~_-hZpe(JZ#Qtt2Te%nVk zCEpC)4O4oLPM3<=?RWM8pB=YcP7m~O(1fEXlMgU0#M;~B$ zl&oSO1}0bt$)n#MoeO9w%;bT>EMUTN^b49}rpQclokTg(M+afm7s@z2z5C*~=IdMk z*5Qo!$xpucAO7<5|IzP%UFHdR?%P$BFcX-co~}g6E_3CHqLj&CWH(HeDTE7EoX(5Z z`St79pMCLpSaO-nIzR@q6GZQsRJ7EYbY8ZH9gMJ`9A$RP64Cl@LIfX^BP@V}n59gB)~=gqQ&Iyu`erio>-P@UX5lr1Va)Z^ZsU6M%Us_!yC7aj1f_14o3nAf&rNp z7?4QXnF=sNS^(sB9jpN?TqP`%K^Z44E3|Ov10V?tPPIyrOzYi+N}5IM#`{maz+1VkJD*ODC0=7e#R70tl*{L(H4IzxniOc`-|=7)eUANN;IA zAVDjoQTCE-TJquZ$JPVT=S7CY*ivU3Tfwk+$}%Idy!qu*BA!nBsn$RIP5RMauA`Lu z`}-F!Ui@GF>0f+sKFCeoJOm|}SVNzIGu}e$X&`dBZgX>22cMt?MV z&8$nQ5oLL`z%X_0nfxLO6ifsk5tMES$(U583r1^+KnNM6B8bS*c;wojT5DEMGchFK z>3r_JnFjz)3y+rQawIXvx;Mx9q1#eHm2PjFkupZuJ@`OSJXX}`SN z2q&_!b$IjCuD7swn&%<~g`)7h-ns!QQE-Ijt>>)PJcUj;1)GD)Jn8zh#>1n`b&S35 z%|_JA(r)Xv4&^M1f;m^dtzb_pGhrIH;t|%Kh*h{ORD>16;oewG$S>$i2yj^DjJ zys@tyNwJ^&H8+Ui7kH1b4i6cSDdPc_i zRFbc@j}Ok(N&rEmO@OUc_5qAw;2HP-zn0Er=ho~x%i}cX{7!5AYuCSPd#9>Y24Tl> z5)vY407@i;1PvraE0-B@0qG%-5RC*WA`Kw22{^X5tM-3d>-*+m9B8cE!E6j^Y7D*a z^PH!WXN7~15nwq907Wn|q(m_^GlBsY#G%?l3V(jCPfu@I(&cfbz$No_^y8>W30GcE zJetEmPXpPW_PpfO2fbcj?&HhMfBDzH`r$wMFt}TEfE*4Vzy6Ah-RO9`9j#K{_YUV1 z?r#U0YaeLVo73#~t8qjif%SdZA$c$_;k`xQw*30}c=%Y%RU6l91@d}SnN#$mcNdD6 zeb-t6u$r5o95B>|+3B*T0tHW6dmBRm5{qDS2TCFdT;cV4wW9;)X`L@$AfUOsb+3oM z9XC^Q4Wv}oB20$HPz>yp5d#cQnb81&ASi_g2BgIU`M>QX+GTaMS9P+@pm#xR783Xovo0fD9~VI)(v|jtG=#nZNzvRwn$}|NZ=M zT7ZHOZ0OVT@!_<&f<;h4G+q}`n^6?4|Nb}IU;f*skxGt86|jhh=H2}zQP zmpm`Ynt=~9W<~%Ynzwmx-97G6(7S<3fOA=vB@J)W1VX;fg_(R04CrainM>eEy8Z~$lO#Lj_H2j((rC&|1L3SuzQ0F!pBWArf~ z$+A8WVYs_C8{L9|3sYn#MQ~7keH|&MDYFLm0Le@k=JZ#e_km5-pRbQZ7H3lQ70W1Ifr#0>C|NGzcF(7}a$^01%>$ z!r);5feaY|T&+2fQcAra6as*ru8z(3kLU8~rDbXZHRnzW+hTCzBbng>r zNTFQ7uE#J`?Syn*QiSzB&TAG)0M&z-orSz>DI%z0APJ?!AAJ>n{x^SL7yk3V`uU&! ztKY>r1HtH>5}w}4c9PRJZ>Mc&h49`;3KEf<^;@fYQ-^RSLUUuLrtD@qbaX{W5_B>c znlgHDPD3mq!1ZS9bPqq9TR>o*L{*QyrCiFK=M|B7nzI5Y#sI%OOc7|n$ULnmNeqG! z9v-HC)ZWIlE_>5$g;ueYavTQ{0pKtr^kAnD1Pq~YL=l;K;pA+k;ghp!V8U*^E1 zqoaAsiQt}k2t;qYI_9JGOc+c>5^*HS0SXbPt<+W%C2~k2n4k_VB@lU7=88EKHX<=V>O~g%S!_?`B3$fBW6rZ*M0( z^oGhnr+BJ36VdQpM(e%DTpj>en`&>)=*rKMI`2c7{vv4FP$UUFjdF-A`5<@x2f)s(nQ(y9?ClMrDN z0heJa89C?U+DBD8`g)m{EbA$&X{$JndK{gI=2=t+7>H~PaM~t9B$_1#vLm4wV^}}N zv1^C8Fave*5&=`#C%iBdS@8X-=2->0tZr%+SJFlX>jb=TN zAaocaVkWRU7oe1~cg@u+qV7LfBxB@{J{?ZlO80q7b2SGx?ia~ zF#qaT*Fc_AY-hThXK?3~M95VEScfCo`84UcIY3$%h&a=-7461=E8i`)V%|$x?!wU8 zhAXtHudkmicwWmGZCcoLfF#L0GxZAUu`CM^WrAUSnF-BIH5Gn+)eHOMnvP?v>st4> zxR-zsQ%dLYjdG5%T_u+!dMzy}0I)Ex70cR#%=Lr$gJf9xJhG|m^#pD!3i6cVQ_oFdJp5?nw&m_b} z5c4-*pT}TMNC*h(%^U!ELCHwKDK8%IzyIHwQsSaR?Rs<5K8!hqIxrgOROZuTvBAeR zb~UwePec6Pw<|Ed?swk;k7I{uZi^&oZ#{|6YaUl->22xpFh7c0Z;~0poH^ug1WyR z*SD@|Dl@LaoClN>2e#{h6l=lo)YX6Q+q^R$$MFYW>~F6O`!hzl4}*3z#bMCjMxetm zBog4x4%q9}bPS=S5x;!8E^GeyaXx=>!eGPJ-dsm?7%XrfhQbp7ga=T#g*LS?6c>;H z0Dz%h>mW>d=I=i}%e>;cZezr}7I$lV|MmB6D%@06os;Io%>C)v^5Qukm-Dh*-lcVf z?k`Wr&K8(fuE4lVOehLK3>gt)Gt}A+$>r-0X9%-B9LxZI^9KHAOz#nIo?!5DWeeS)exz5MTnHi9qR$dcwPVO{iglzE0OIrq~k&pQ2KuYO7YJ@_XdiwI6xj@r~hZ+7}(tHTO$ zS=RtJ_iUQd`2MXwzLQxdUxpw;vftT0J;l3e8~@>V9{MoG;4*=@KzwdmCX{8d;rnp_ z=dw*}Lj6D==qec1{`ckPL#IvT*^N5Pz8XgjV%0U{Spm;)SBDK&t;0ltw0Ls$G?HeOP&Y|AoxWUE6Vcx~c)rcra7RBqR<142AGt z|788U*Zx0#asA_e$kXYR3t5eDHG^@2+i#+E|Kf{6I0uS@djKPiVf7fbkJ@dX%lj|C zn6sm>R|OzdK)0OP19U*^hsOxV0K6U7^Ojy;TbT+3^)YmGLY_D211=9+o}^WK|K&yc zRjWpz^TcI>b(xnyrXb2TZ1g}03|&?v;RqrN1QR#Me0o3&&$*Zl2X)8Z0a$EUAGV!C zNZ{_ObeCKPU5}Sm2fQ>fBc}Orjeq}B+P1G>KYzaA4o=5SyZOVz>3p6`nLHvwdjo@G ze|vRgN?az()9LadpN6{!*x@=8_z%DR=H>0#0e|p89KF?n20*BNjQxdW3RXuzMzHMN zjqkO&V13l(U zKmJf2Kl&fO6Qk4Zsdf+buqcXHG7JM9z11p(BeW2dbvcD|B50PRgoHlZPq&w{_V+*H zu3}CG!4r;30tNWko4@DCl5TsCz*HtmRUi|N0Cp(F#%t5#c7t$9)J;XoR5G}>YwNwW zqwcqn86{6;4l^9ub4i(C-+POQaG5D@^l+L0Val>yXmr&vp~Mmz0K^iGUTY@OK$;dw z8W56-Y9+9ys0u(lhR@~gAOBYV$vdb!T5nnwUea+LZSPecusBu2DR=Z#aIUvD>x=;r-!5iO^O=ci*{ zvyL8MZU&f&IHDiTgKuN>&=}q-q&&+o1!Gf>urV5iI0l5>RRbwWm=86pqsUo%N6h=J z>jkz`Mqn^mCVurs6QLx@g2S#is|^4NP|Q5fMYsfbkTArurFEXxr6RZvBLrq(;&#+w z7D8o8Wl9uClmP&P&A|*I#B|sg!VrN&6$pg5UUw7*Km;RUQ*f1`1Cj$ET3jy6QTynQ zOl8gpgl&va5z1f88wkDX&;QS795s*$?f&#-O^zgC9?{-*>^f3KLIc$vy?dD_bOo^S z?48=}d*VRO;GqEsVF;vZ4j}G85=druhlcav0m&o&KV*O~zBW(L>Hq)$07*qoM6N<$ Ef?d&fGynhq literal 0 HcmV?d00001 diff --git a/imagesave/1630837427.pickle b/imagesave/1630837427.pickle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/imagesave/1630837587.pickle b/imagesave/1630837587.pickle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/imagesave/1630837614.pickle b/imagesave/1630837614.pickle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/imagesave/1630837698.pickle b/imagesave/1630837698.pickle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/imagesave/1630837947.pickle b/imagesave/1630837947.pickle new file mode 100644 index 0000000000..e69de29bb2 diff --git a/imgseg/1630837614_bin1.png b/imgseg/1630837614_bin1.png new file mode 100644 index 0000000000000000000000000000000000000000..c7ead44ece556d3930063f3ddb6f144f71d66f5e GIT binary patch literal 1043 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 RkyHQx002ovPDHLkV1iP&DOvyk literal 0 HcmV?d00001 diff --git a/imgseg/1630837698_bin1.png b/imgseg/1630837698_bin1.png new file mode 100644 index 0000000000000000000000000000000000000000..d4389e23c73b327f422aaa1cf88f04fb9d6b2514 GIT binary patch literal 636 zcmV-?0)zdDP) z1^?2|Gh>Uk1r!w(6%`c~6%`c~{c{;Q^NNZj*(FQR4S7RD(gQ%nTlQ3c@&JI# z!IxR%oCo|KhaAw&L;ILR)dRSHayBxY)uY9glp^YE$w{B(2;d6J5%{S%{GjF_m+Upb zrnm1MeEdp3(4nmqp#B~+w;jgK#^KLq0SZun0{lH7aihG|Fs&7UCKWLQ+|wa3D_^L%D9cbe^V!7fQeYubRp@@~t zVFx$`$UN39(^-qSs2wzbX}~U%dgDE6K&t_R26P&5(*S6I)qs%Repx23Ij8^>z_6a;jDGIXaF@pZUW%LVTV=&hQkq0`yAfO&BM##4ql6Jk4DT6=3$5Bk$#`U|DZnz WHO9=uA^Wrd0000ATx0ZDZyps=u%RO>3|ZP4mjk%FvQA14zld^Uj;K64*CbihR0u7 zT2?E7tgNi8tgNi8tgNhmkn2&ni`wbO5-vXr?fas=836@)4gi1~ZW;}+VhC^^-&ZqW zYdb6i{{^0s9891kKnXs~QHW9pDtiokoYLA31kAns%Z^po=-s`~8 zaxe?&8MNMu(JiJ-R1d&4i@4A>3~4)W1=jt?PoYejEH(Wjz2VYQKBx}khI{TNN+Uc4 z00s&0rCLuMXowTkWQ-k_k7NFX!nFyPN=FqRK$IVl(40rwW4d~+13p$e>{mGeD5sth{u(W-1Zvm!5X8|mw z1YqT30K&#s>j2xf$qDf9ma#K4^N4wV(6wE!Xy99B5o agMI+a)^Hgk=#-xT0000FSZ!d4;J!BxjdO^Np zipa!AlbSr_8YfMfD4{65L1^)k1cvEiPL@&9^Ut}qEcmg0^ViR{;VcSDN{jxRr7Vw? zym8*Sa;DVNRP!fw!UZ=|B{OWLHW!ObOkmwL`^aibXBU(CFRUW{!kQU4!X7jWy^w#o zGSqI?B*86hg58oY!oQRqHjH(;?G(k& z7lwOWHjO89CU9&0Uv}E>mDuyBgxx=X`wIxdK<;<8`M=~#JX_z11HHxI>FVdQ&MBb@ E0Itbny8r+H literal 0 HcmV?d00001 diff --git a/imgseg/1630837698_robot0.png b/imgseg/1630837698_robot0.png new file mode 100644 index 0000000000000000000000000000000000000000..a7dc26ad005e37325851360d2e0915ec6b964baf GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|c-gi$I$B>FSZztRO9d;05V{dZl z^7zL4A+W|o{;cZp8)$Xy!g__H2ZD(!IUYmGsF(YKTE~n9}p1LYg|xOyG-S! zRD{^Bmo2i(UoggTJ9TmCPy8Uq`O2tREo9O!r^fBuY?AJsuV3+~V@6iV^6!7|iZ>lH x*tIG0VRDJ`=jx1ki+d%Ldkl|Bz=;_~@p1`P3>{NEPXU8~!PC{xWt~$(69A;CfBOIc literal 0 HcmV?d00001 diff --git a/imgseg/1630837698_wall.png b/imgseg/1630837698_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..e26003002cd9316a9df1f362b47c8f80fbc7c892 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|c-gZwH$B>FSZ!Z`M9a0czeJHQ) zYGvCvd2xjaH~+Ih8>Uv*E{(7S0?bLrEEd0C9r0|V&V!(8gK1m!C0RR|wT1W!-tLuS zWw5ZB=fT5p`-~_<#IHZ1&(H8Q&o{ZfP~yRJ=331S2Y8M)#MZT`>FN7Qd06o*)js6D zUAS@Mt%kXG6>pq*cfps%Zz-Sq{u_I3nhOhGiYM;=B>Hg9Ob(lyb>A1S+iV@e;^N|B jx9s;f1|=ByB%b&3Rg$dP%Ma#2FEDtz`njxgN@xNA9xhqr literal 0 HcmV?d00001 diff --git a/imgseg/1630837947_Bread.png b/imgseg/1630837947_Bread.png new file mode 100644 index 0000000000000000000000000000000000000000..b91ecb4e5616ac8aa1fe8364e54803bb1b26de60 GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|co}Z_SV@SoEw-+3_8WaTD0(DRH zUHR*Ob=@|uL;O46?44>L&*!5FRL8L4iPyoqd$*t5GgV-YI|tk41$zG{Y*A;amamBl hyxjHh3Q)=ZPfTm8Swk)5Zyp8d@O1TaS?83{1OT=lE?WQq literal 0 HcmV?d00001 diff --git a/imgseg/1630837947_Can.png b/imgseg/1630837947_Can.png new file mode 100644 index 0000000000000000000000000000000000000000..3a2142c55fc68ccf9f95be3abd0ab0e4dfa1b2a4 GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|cp1-GyV@SoEw`Vu&Fdms{;zUqyV)XO4Aj7o5gXK4qg$Q7-&oK<^hKzH8PCJE zz}R3jpNGb0v^KQ3UpfDG)5FURt8*R-er%Ixdfm(xE~xx!{mcFUUh}*M9OiExvPqs$ h3YfHt6=d21M)k#a`My6|7cv>d^>p=fS?83{1OVkILdF09 literal 0 HcmV?d00001 diff --git a/imgseg/1630837947_Milk.png b/imgseg/1630837947_Milk.png new file mode 100644 index 0000000000000000000000000000000000000000..df29509db2d3b4a3267e31523a14eaebc0be0f9e GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|cUaqH$V@SoEx0ex9eX4E#N*{tL3%xX^@|sC+iEU(t_!r7 N!PC{xWt~$(69D@RI&c60 literal 0 HcmV?d00001 diff --git a/imgseg/1630837947_VisualBread.png b/imgseg/1630837947_VisualBread.png new file mode 100644 index 0000000000000000000000000000000000000000..5bff83e908583b52315d387f413dfa67392002a0 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|co`t82V@SoEw`VuZy z^?yoF!phDqVfRAk^FL7rs$qCwwko^$_|1K(x9e&H`qe<%ba$IGNn~>#-2syKboFyt I=akR{0E4(8!2kdN literal 0 HcmV?d00001 diff --git a/imgseg/1630837947_VisualCan.png b/imgseg/1630837947_VisualCan.png new file mode 100644 index 0000000000000000000000000000000000000000..327e85820991b2ef6d93f2ee9b2a297741235a00 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|cUaF^yV@SoEw-+|@HW&!79K7u8 z;lMe?fjz)#X#kUAW9meqzmdO6)W4q0j${HVXJ9xmLDQBubLW|a`)3}MbjEl@oi?{P z9_@SQ8*j1c#~UtHr#+PZvb8SBV_Q4Z@w_xhN5g#nn7Lf7zlvXVfw-QoelF{r5}E*d CeKnE* literal 0 HcmV?d00001 diff --git a/imgseg/1630837947_VisualCereal.png b/imgseg/1630837947_VisualCereal.png new file mode 100644 index 0000000000000000000000000000000000000000..55eeac9baefc04e3b66c23a2e0134dcfcf4df2d6 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|cUX7=VV@SoEw-*lbHXDerTuyFfBS@om^UZx4J=U22`c>QLc$Fpj6y}gNl?)+<8JZplA fC(xuz_kS??&*YL^-kPu%=ne)?S3j3^P6qlN?KIUKk7ejoksaM$D_xA`)) fYf?aS7+(mn>*%7GOd`xe5ho)Ghf- z5e0tyUoi#}ps1**sHmu@sHmvuzsqz8!BCRNiD6c?+X5B{>-`PTz(WMi0DdleE!P9Q zlN=s9+5$evJphDXHr35$)KEkE}4l3>xZji69~xaix)uhyZ{Q zk?o;&HkCaaL4PQKh-ko>h>Hlz^&Z%WMFT!OJPY`=sD85!cZVG3Kw11=eHIv3b*o$~ zF(Lwh<$)7hvf8XULqr2ABBBnsQh%gL06;ARE$=WdY6}1r?@$Bj3kVT4;6$MEiUYI= z;Nf8dV4BGuXCfj3h=_MsT>&w|WC07LrO5$zcO37~-UgqX2d4qEY7N*v1gDvd^Hb1Y zh)4qBH8<7s-T$2(BcgbFC1o7e!5r`x3J`WrR37LKJA47aX+Wz-v@&2dhi2V{c^EV! z@Nphw;7*@)stfQ%0P@-y>8*(~fD0Fq0NT?7X@Hf0ar)$eW={{V5-{v>a1vm_|0G=w zz5s}lL$3ktw2@!#odm>;!}^iKzq{*s>i`5PqRTZFZw_Y>2osQxP=Q%lz+hTbqJw46 zj5mi@%|QfC58I6hzz;2gbs#rwM=V$TL2tLRdn#fjbJzhv0WxFlQdL?+t@fY+!~<@r z8qHzU0ILCm2DBQ`YXCIBX+Y!;zb{p%Ij8^>z=S6qI?ddrqSAV(H6Z^#>rMjj?XZK@ zfZ=e&%RYy#LMq-5_t0q(;n|4fV4ikZM*Kd9&!B(TgT$JQz^wZK0000ATx0ZDZyps=u%RO>3|ZP4mjk%FvQA14zld^Uj;K64*CbihR0u7 zT2?E7tgNi8tgNi8tgNhmkn2&ni`wbO5-vXr?fas=836@)4gi1~ZW;}+VhC^^-&ZqW zYdb6i{{^0s9891kKnXs~QHW9pDtiokoYLA31kAns%Z^po=-s`~8 zaxe?&8MNMu(JiJ-R1d&4i@4A>3~4)W1=jt?PoYejEH(Wjz2VYQKBx}khI{TNN+Uc4 z00s&0rCLuMXowTkWQ-k_k7NFX!nFyPN=FqRK$IVl(40rwW4d~+13p$e>{mGeD5sth{u(W-1Zvm!5X8|mw z1YqT30K&#s>j2xf$qDf9ma#K4^N4wV(6wE!Xy99B5o agMI+a)^Hgk=#-xT0000wR8&+{d;l8uOH7+_Sxgn7fIXop5iHsgp{UT62%<#zVy*pmFvDopk^;^WJ|zj` zM|Dvoh}U=VZxH0)^Wmqpe#8mic^nKP#`D((vZSzgJSu<9Y6z+?_k0Q03xFDZU}NpzP->>nVOh^Zd396 zVFKp%xm+)kX>|ah1JFj2sTP>D!WuTh)zU6AJYW>Y$ymnM83p375!&@ZJ~hk+%D+9@ zq0cDHLMQ43s3EDZtb)=Hx#?=K_5uCq=j0aBIGMl%eE~++-4N@hkO-+>zn$ztm^fgb zu52*gdBww&<|}h4a|a0MQXw@X^kLkUI!$O3GleNs5D1F7wKE!p!$c@+NliHHF_(Rj z_V4U47($|5Pa#=q2xYrSL2ZOSMFSZ!a10H93f|T!?g> zKIu}^p+n6TCj4oRFAZ%PSX)`ur1ve&Df_Ix(Lm(0mD%KnpT!+qTwKg_mDb3YrzYK* z%ogq8oHx5s@4oXwL*rjvPgrkRzj?%ZiMM3(%A#*qP0aXnPN;MLFy7M0(y&>2L&wSd z2!r2^cJ|ugb3eIGUJRJK)D3Ot@To*4nLoKz}fJy85}Sb4q9e0L=+s82|tP literal 0 HcmV?d00001 diff --git a/imgseg/1630837947_mount0.png b/imgseg/1630837947_mount0.png new file mode 100644 index 0000000000000000000000000000000000000000..eaa72d3ccd80ae9a8d625d86d057c5d992292aa3 GIT binary patch literal 352 zcmV-m0iXVfP)9Kn;79AS=Np$BkLD0I};2EMmZ!}H5; z_!B`0aS!-@F;K^k)#{CUHIk?CS0`L8+;q9^< z$tkK}xfX&wJ)3+&$U<@lJ2gcQibczLyA051A1>mJ5WNRo2Oa4PJrj#(o z+a}dft6xIEv`{XakY`G;xrC7}Dj^ac0I=3^n8%`HaQ_a|Df^gC=-m0PPYYO}!fXo1 y`R+R{d;!!$8!wd*LI@#*5JCtcgb+fA`{ox(QZ-g#)ro2V0000FSZ?8CVH5&-9URbaD z!Y_Y;`NhRM-)yw;niiX;dDJR4w5L;Y3GdPm_fMTTe}<*!K-|WVZPM3M-?1_rP!Q5! z?2cG)PA5m2bIZF+{9mFN7}Qh)*vt2Jo`{)I(fa2><blJ;=#W&wY?|G`b5l6?{fFOm~<;{_Jq^l7W0QjDBQCSH`i=D grNO9#1TO7iSaZzeaDaWZFwoBop00i_>zopr07HU#X8-^I literal 0 HcmV?d00001 diff --git a/imgseg/1630837947_wall.png b/imgseg/1630837947_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..f356a42706390054404597a849799a7779fe9e7d GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|c-ZoDc$B>FSZ?8D=H5mxBK5RE@ zT Date: Sun, 5 Sep 2021 18:36:01 +0800 Subject: [PATCH 16/19] Revert "added MinFilter" This reverts commit 9403150afcd4653a84ff5c88a9eb5d14a1d08297. --- imagesave/1630836984.pickle | 0 imagesave/1630837017.pickle | 0 imagesave/1630837088.pickle | 0 imagesave/1630837119.pickle | 0 imagesave/1630837158.pickle | 0 imagesave/1630837197.pickle | 0 imagesave/1630837306.pickle | 0 imagesave/1630837326.pickle | 0 imagesave/1630837402.pickle | Bin 10723 -> 0 bytes imagesave/1630837402.png | Bin 89219 -> 0 bytes imagesave/1630837427.pickle | 0 imagesave/1630837587.pickle | 0 imagesave/1630837614.pickle | 0 imagesave/1630837698.pickle | 0 imagesave/1630837947.pickle | 0 imgseg/1630837614_bin1.png | Bin 1043 -> 0 bytes imgseg/1630837614_bin2.png | Bin 1072 -> 0 bytes imgseg/1630837614_gripper0.png | Bin 741 -> 0 bytes imgseg/1630837614_robot0.png | Bin 736 -> 0 bytes imgseg/1630837614_wall.png | Bin 683 -> 0 bytes imgseg/1630837698_bin1.png | Bin 636 -> 0 bytes imgseg/1630837698_bin2.png | Bin 588 -> 0 bytes imgseg/1630837698_gripper0.png | Bin 260 -> 0 bytes imgseg/1630837698_robot0.png | Bin 304 -> 0 bytes imgseg/1630837698_wall.png | Bin 240 -> 0 bytes imgseg/1630837947_Bread.png | Bin 135 -> 0 bytes imgseg/1630837947_Can.png | Bin 136 -> 0 bytes imgseg/1630837947_Cereal.png | Bin 187 -> 0 bytes imgseg/1630837947_Milk.png | Bin 166 -> 0 bytes imgseg/1630837947_VisualBread.png | Bin 113 -> 0 bytes imgseg/1630837947_VisualCan.png | Bin 158 -> 0 bytes imgseg/1630837947_VisualCereal.png | Bin 181 -> 0 bytes imgseg/1630837947_VisualMilk.png | Bin 132 -> 0 bytes imgseg/1630837947_bin1.png | Bin 668 -> 0 bytes imgseg/1630837947_bin2.png | Bin 588 -> 0 bytes imgseg/1630837947_floor.png | Bin 716 -> 0 bytes imgseg/1630837947_gripper0.png | Bin 245 -> 0 bytes imgseg/1630837947_mount0.png | Bin 352 -> 0 bytes imgseg/1630837947_robot0.png | Bin 289 -> 0 bytes imgseg/1630837947_wall.png | Bin 239 -> 0 bytes robosuite/utils/visual/Trainer.py | 1 - robosuite/utils/visual/VisualManager.py | 14 +++++--------- 42 files changed, 5 insertions(+), 10 deletions(-) delete mode 100644 imagesave/1630836984.pickle delete mode 100644 imagesave/1630837017.pickle delete mode 100644 imagesave/1630837088.pickle delete mode 100644 imagesave/1630837119.pickle delete mode 100644 imagesave/1630837158.pickle delete mode 100644 imagesave/1630837197.pickle delete mode 100644 imagesave/1630837306.pickle delete mode 100644 imagesave/1630837326.pickle delete mode 100644 imagesave/1630837402.pickle delete mode 100644 imagesave/1630837402.png delete mode 100644 imagesave/1630837427.pickle delete mode 100644 imagesave/1630837587.pickle delete mode 100644 imagesave/1630837614.pickle delete mode 100644 imagesave/1630837698.pickle delete mode 100644 imagesave/1630837947.pickle delete mode 100644 imgseg/1630837614_bin1.png delete mode 100644 imgseg/1630837614_bin2.png delete mode 100644 imgseg/1630837614_gripper0.png delete mode 100644 imgseg/1630837614_robot0.png delete mode 100644 imgseg/1630837614_wall.png delete mode 100644 imgseg/1630837698_bin1.png delete mode 100644 imgseg/1630837698_bin2.png delete mode 100644 imgseg/1630837698_gripper0.png delete mode 100644 imgseg/1630837698_robot0.png delete mode 100644 imgseg/1630837698_wall.png delete mode 100644 imgseg/1630837947_Bread.png delete mode 100644 imgseg/1630837947_Can.png delete mode 100644 imgseg/1630837947_Cereal.png delete mode 100644 imgseg/1630837947_Milk.png delete mode 100644 imgseg/1630837947_VisualBread.png delete mode 100644 imgseg/1630837947_VisualCan.png delete mode 100644 imgseg/1630837947_VisualCereal.png delete mode 100644 imgseg/1630837947_VisualMilk.png delete mode 100644 imgseg/1630837947_bin1.png delete mode 100644 imgseg/1630837947_bin2.png delete mode 100644 imgseg/1630837947_floor.png delete mode 100644 imgseg/1630837947_gripper0.png delete mode 100644 imgseg/1630837947_mount0.png delete mode 100644 imgseg/1630837947_robot0.png delete mode 100644 imgseg/1630837947_wall.png diff --git a/imagesave/1630836984.pickle b/imagesave/1630836984.pickle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/imagesave/1630837017.pickle b/imagesave/1630837017.pickle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/imagesave/1630837088.pickle b/imagesave/1630837088.pickle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/imagesave/1630837119.pickle b/imagesave/1630837119.pickle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/imagesave/1630837158.pickle b/imagesave/1630837158.pickle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/imagesave/1630837197.pickle b/imagesave/1630837197.pickle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/imagesave/1630837306.pickle b/imagesave/1630837306.pickle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/imagesave/1630837326.pickle b/imagesave/1630837326.pickle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/imagesave/1630837402.pickle b/imagesave/1630837402.pickle deleted file mode 100644 index 05175414749727d61d42f497379fbfea3b615fcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10723 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 Ef?d&fGynhq diff --git a/imagesave/1630837427.pickle b/imagesave/1630837427.pickle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/imagesave/1630837587.pickle b/imagesave/1630837587.pickle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/imagesave/1630837614.pickle b/imagesave/1630837614.pickle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/imagesave/1630837698.pickle b/imagesave/1630837698.pickle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/imagesave/1630837947.pickle b/imagesave/1630837947.pickle deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/imgseg/1630837614_bin1.png b/imgseg/1630837614_bin1.png deleted file mode 100644 index c7ead44ece556d3930063f3ddb6f144f71d66f5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1043 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 RkyHQx002ovPDHLkV1iP&DOvyk diff --git a/imgseg/1630837698_bin1.png b/imgseg/1630837698_bin1.png deleted file mode 100644 index d4389e23c73b327f422aaa1cf88f04fb9d6b2514..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 636 zcmV-?0)zdDP) z1^?2|Gh>Uk1r!w(6%`c~6%`c~{c{;Q^NNZj*(FQR4S7RD(gQ%nTlQ3c@&JI# z!IxR%oCo|KhaAw&L;ILR)dRSHayBxY)uY9glp^YE$w{B(2;d6J5%{S%{GjF_m+Upb zrnm1MeEdp3(4nmqp#B~+w;jgK#^KLq0SZun0{lH7aihG|Fs&7UCKWLQ+|wa3D_^L%D9cbe^V!7fQeYubRp@@~t zVFx$`$UN39(^-qSs2wzbX}~U%dgDE6K&t_R26P&5(*S6I)qs%Repx23Ij8^>z_6a;jDGIXaF@pZUW%LVTV=&hQkq0`yAfO&BM##4ql6Jk4DT6=3$5Bk$#`U|DZnz WHO9=uA^Wrd0000ATx0ZDZyps=u%RO>3|ZP4mjk%FvQA14zld^Uj;K64*CbihR0u7 zT2?E7tgNi8tgNi8tgNhmkn2&ni`wbO5-vXr?fas=836@)4gi1~ZW;}+VhC^^-&ZqW zYdb6i{{^0s9891kKnXs~QHW9pDtiokoYLA31kAns%Z^po=-s`~8 zaxe?&8MNMu(JiJ-R1d&4i@4A>3~4)W1=jt?PoYejEH(Wjz2VYQKBx}khI{TNN+Uc4 z00s&0rCLuMXowTkWQ-k_k7NFX!nFyPN=FqRK$IVl(40rwW4d~+13p$e>{mGeD5sth{u(W-1Zvm!5X8|mw z1YqT30K&#s>j2xf$qDf9ma#K4^N4wV(6wE!Xy99B5o agMI+a)^Hgk=#-xT0000FSZ!d4;J!BxjdO^Np zipa!AlbSr_8YfMfD4{65L1^)k1cvEiPL@&9^Ut}qEcmg0^ViR{;VcSDN{jxRr7Vw? zym8*Sa;DVNRP!fw!UZ=|B{OWLHW!ObOkmwL`^aibXBU(CFRUW{!kQU4!X7jWy^w#o zGSqI?B*86hg58oY!oQRqHjH(;?G(k& z7lwOWHjO89CU9&0Uv}E>mDuyBgxx=X`wIxdK<;<8`M=~#JX_z11HHxI>FVdQ&MBb@ E0Itbny8r+H diff --git a/imgseg/1630837698_robot0.png b/imgseg/1630837698_robot0.png deleted file mode 100644 index a7dc26ad005e37325851360d2e0915ec6b964baf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|c-gi$I$B>FSZztRO9d;05V{dZl z^7zL4A+W|o{;cZp8)$Xy!g__H2ZD(!IUYmGsF(YKTE~n9}p1LYg|xOyG-S! zRD{^Bmo2i(UoggTJ9TmCPy8Uq`O2tREo9O!r^fBuY?AJsuV3+~V@6iV^6!7|iZ>lH x*tIG0VRDJ`=jx1ki+d%Ldkl|Bz=;_~@p1`P3>{NEPXU8~!PC{xWt~$(69A;CfBOIc diff --git a/imgseg/1630837698_wall.png b/imgseg/1630837698_wall.png deleted file mode 100644 index e26003002cd9316a9df1f362b47c8f80fbc7c892..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|c-gZwH$B>FSZ!Z`M9a0czeJHQ) zYGvCvd2xjaH~+Ih8>Uv*E{(7S0?bLrEEd0C9r0|V&V!(8gK1m!C0RR|wT1W!-tLuS zWw5ZB=fT5p`-~_<#IHZ1&(H8Q&o{ZfP~yRJ=331S2Y8M)#MZT`>FN7Qd06o*)js6D zUAS@Mt%kXG6>pq*cfps%Zz-Sq{u_I3nhOhGiYM;=B>Hg9Ob(lyb>A1S+iV@e;^N|B jx9s;f1|=ByB%b&3Rg$dP%Ma#2FEDtz`njxgN@xNA9xhqr diff --git a/imgseg/1630837947_Bread.png b/imgseg/1630837947_Bread.png deleted file mode 100644 index b91ecb4e5616ac8aa1fe8364e54803bb1b26de60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|co}Z_SV@SoEw-+3_8WaTD0(DRH zUHR*Ob=@|uL;O46?44>L&*!5FRL8L4iPyoqd$*t5GgV-YI|tk41$zG{Y*A;amamBl hyxjHh3Q)=ZPfTm8Swk)5Zyp8d@O1TaS?83{1OT=lE?WQq diff --git a/imgseg/1630837947_Can.png b/imgseg/1630837947_Can.png deleted file mode 100644 index 3a2142c55fc68ccf9f95be3abd0ab0e4dfa1b2a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 136 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|cp1-GyV@SoEw`Vu&Fdms{;zUqyV)XO4Aj7o5gXK4qg$Q7-&oK<^hKzH8PCJE zz}R3jpNGb0v^KQ3UpfDG)5FURt8*R-er%Ixdfm(xE~xx!{mcFUUh}*M9OiExvPqs$ h3YfHt6=d21M)k#a`My6|7cv>d^>p=fS?83{1OVkILdF09 diff --git a/imgseg/1630837947_Milk.png b/imgseg/1630837947_Milk.png deleted file mode 100644 index df29509db2d3b4a3267e31523a14eaebc0be0f9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|cUaqH$V@SoEx0ex9eX4E#N*{tL3%xX^@|sC+iEU(t_!r7 N!PC{xWt~$(69D@RI&c60 diff --git a/imgseg/1630837947_VisualBread.png b/imgseg/1630837947_VisualBread.png deleted file mode 100644 index 5bff83e908583b52315d387f413dfa67392002a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|co`t82V@SoEw`VuZy z^?yoF!phDqVfRAk^FL7rs$qCwwko^$_|1K(x9e&H`qe<%ba$IGNn~>#-2syKboFyt I=akR{0E4(8!2kdN diff --git a/imgseg/1630837947_VisualCan.png b/imgseg/1630837947_VisualCan.png deleted file mode 100644 index 327e85820991b2ef6d93f2ee9b2a297741235a00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|cUaF^yV@SoEw-+|@HW&!79K7u8 z;lMe?fjz)#X#kUAW9meqzmdO6)W4q0j${HVXJ9xmLDQBubLW|a`)3}MbjEl@oi?{P z9_@SQ8*j1c#~UtHr#+PZvb8SBV_Q4Z@w_xhN5g#nn7Lf7zlvXVfw-QoelF{r5}E*d CeKnE* diff --git a/imgseg/1630837947_VisualCereal.png b/imgseg/1630837947_VisualCereal.png deleted file mode 100644 index 55eeac9baefc04e3b66c23a2e0134dcfcf4df2d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|cUX7=VV@SoEw-*lbHXDerTuyFfBS@om^UZx4J=U22`c>QLc$Fpj6y}gNl?)+<8JZplA fC(xuz_kS??&*YL^-kPu%=ne)?S3j3^P6qlN?KIUKk7ejoksaM$D_xA`)) fYf?aS7+(mn>*%7GOd`xe5ho)Ghf- z5e0tyUoi#}ps1**sHmu@sHmvuzsqz8!BCRNiD6c?+X5B{>-`PTz(WMi0DdleE!P9Q zlN=s9+5$evJphDXHr35$)KEkE}4l3>xZji69~xaix)uhyZ{Q zk?o;&HkCaaL4PQKh-ko>h>Hlz^&Z%WMFT!OJPY`=sD85!cZVG3Kw11=eHIv3b*o$~ zF(Lwh<$)7hvf8XULqr2ABBBnsQh%gL06;ARE$=WdY6}1r?@$Bj3kVT4;6$MEiUYI= z;Nf8dV4BGuXCfj3h=_MsT>&w|WC07LrO5$zcO37~-UgqX2d4qEY7N*v1gDvd^Hb1Y zh)4qBH8<7s-T$2(BcgbFC1o7e!5r`x3J`WrR37LKJA47aX+Wz-v@&2dhi2V{c^EV! z@Nphw;7*@)stfQ%0P@-y>8*(~fD0Fq0NT?7X@Hf0ar)$eW={{V5-{v>a1vm_|0G=w zz5s}lL$3ktw2@!#odm>;!}^iKzq{*s>i`5PqRTZFZw_Y>2osQxP=Q%lz+hTbqJw46 zj5mi@%|QfC58I6hzz;2gbs#rwM=V$TL2tLRdn#fjbJzhv0WxFlQdL?+t@fY+!~<@r z8qHzU0ILCm2DBQ`YXCIBX+Y!;zb{p%Ij8^>z=S6qI?ddrqSAV(H6Z^#>rMjj?XZK@ zfZ=e&%RYy#LMq-5_t0q(;n|4fV4ikZM*Kd9&!B(TgT$JQz^wZK0000ATx0ZDZyps=u%RO>3|ZP4mjk%FvQA14zld^Uj;K64*CbihR0u7 zT2?E7tgNi8tgNi8tgNhmkn2&ni`wbO5-vXr?fas=836@)4gi1~ZW;}+VhC^^-&ZqW zYdb6i{{^0s9891kKnXs~QHW9pDtiokoYLA31kAns%Z^po=-s`~8 zaxe?&8MNMu(JiJ-R1d&4i@4A>3~4)W1=jt?PoYejEH(Wjz2VYQKBx}khI{TNN+Uc4 z00s&0rCLuMXowTkWQ-k_k7NFX!nFyPN=FqRK$IVl(40rwW4d~+13p$e>{mGeD5sth{u(W-1Zvm!5X8|mw z1YqT30K&#s>j2xf$qDf9ma#K4^N4wV(6wE!Xy99B5o agMI+a)^Hgk=#-xT0000wR8&+{d;l8uOH7+_Sxgn7fIXop5iHsgp{UT62%<#zVy*pmFvDopk^;^WJ|zj` zM|Dvoh}U=VZxH0)^Wmqpe#8mic^nKP#`D((vZSzgJSu<9Y6z+?_k0Q03xFDZU}NpzP->>nVOh^Zd396 zVFKp%xm+)kX>|ah1JFj2sTP>D!WuTh)zU6AJYW>Y$ymnM83p375!&@ZJ~hk+%D+9@ zq0cDHLMQ43s3EDZtb)=Hx#?=K_5uCq=j0aBIGMl%eE~++-4N@hkO-+>zn$ztm^fgb zu52*gdBww&<|}h4a|a0MQXw@X^kLkUI!$O3GleNs5D1F7wKE!p!$c@+NliHHF_(Rj z_V4U47($|5Pa#=q2xYrSL2ZOSMFSZ!a10H93f|T!?g> zKIu}^p+n6TCj4oRFAZ%PSX)`ur1ve&Df_Ix(Lm(0mD%KnpT!+qTwKg_mDb3YrzYK* z%ogq8oHx5s@4oXwL*rjvPgrkRzj?%ZiMM3(%A#*qP0aXnPN;MLFy7M0(y&>2L&wSd z2!r2^cJ|ugb3eIGUJRJK)D3Ot@To*4nLoKz}fJy85}Sb4q9e0L=+s82|tP diff --git a/imgseg/1630837947_mount0.png b/imgseg/1630837947_mount0.png deleted file mode 100644 index eaa72d3ccd80ae9a8d625d86d057c5d992292aa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmV-m0iXVfP)9Kn;79AS=Np$BkLD0I};2EMmZ!}H5; z_!B`0aS!-@F;K^k)#{CUHIk?CS0`L8+;q9^< z$tkK}xfX&wJ)3+&$U<@lJ2gcQibczLyA051A1>mJ5WNRo2Oa4PJrj#(o z+a}dft6xIEv`{XakY`G;xrC7}Dj^ac0I=3^n8%`HaQ_a|Df^gC=-m0PPYYO}!fXo1 y`R+R{d;!!$8!wd*LI@#*5JCtcgb+fA`{ox(QZ-g#)ro2V0000FSZ?8CVH5&-9URbaD z!Y_Y;`NhRM-)yw;niiX;dDJR4w5L;Y3GdPm_fMTTe}<*!K-|WVZPM3M-?1_rP!Q5! z?2cG)PA5m2bIZF+{9mFN7}Qh)*vt2Jo`{)I(fa2><blJ;=#W&wY?|G`b5l6?{fFOm~<;{_Jq^l7W0QjDBQCSH`i=D grNO9#1TO7iSaZzeaDaWZFwoBop00i_>zopr07HU#X8-^I diff --git a/imgseg/1630837947_wall.png b/imgseg/1630837947_wall.png deleted file mode 100644 index f356a42706390054404597a849799a7779fe9e7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5!6ZWo=hV|c-ZoDc$B>FSZ?8D=H5mxBK5RE@ zT Date: Sun, 5 Sep 2021 18:40:45 +0800 Subject: [PATCH 17/19] added MinFilter --- robosuite/utils/visual/VisualManager.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py index 0fed13d37e..01efa1d614 100644 --- a/robosuite/utils/visual/VisualManager.py +++ b/robosuite/utils/visual/VisualManager.py @@ -378,20 +378,23 @@ def seg2anno(self, seg, env, img_id): annoDict['category_id'] = 1 # annoDict['category_id'] = mapGeomIDtoCategoryID(_ids) - raise Exception('Insert Map function form geom ID to category ID here ') + + + _vis = np.asarray(_mask * 255 / _mask.max()).astype(np.uint8) + _vis = Image.fromarray(_vis, mode='L').filter(ImageFilter.MinFilter(3)).convert('1') + _mask = np.asarray(_vis) _RLE = Mask2RLE( np.asarray( _mask,dtype=np.uint8, order= 'F') ) annoDict['segmentation'] = _RLE returnDict['annotations'].append(annoDict) - #_vis = np.asarray(_mask * 255 / _mask.max()).astype(np.uint8) - #Image.fromarray(_vis, 'L').filter(ImageFilter.DETAIL).convert('1').save(os.path.join('.','imgseg',f'{img_id}_{k}.png')) + _vis.save(os.path.join('.','imgseg',f'{img_id}_{k}.png')) return returnDict - def mask2BBox(mask): + def mask2BBox(self, mask): rows = np.any(mask,axis=0) cols = np.any(mask,axis=1) rmin, rmax = np.where(rows)[0][[0,-1]] From 446d0b1d4f95bfa57c1435298163a67f0c36700c Mon Sep 17 00:00:00 2001 From: dizzyi Date: Sun, 5 Sep 2021 18:50:52 +0800 Subject: [PATCH 18/19] added MinFilter --- robosuite/utils/visual/VisualManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py index 01efa1d614..9dd5556cda 100644 --- a/robosuite/utils/visual/VisualManager.py +++ b/robosuite/utils/visual/VisualManager.py @@ -389,7 +389,7 @@ def seg2anno(self, seg, env, img_id): returnDict['annotations'].append(annoDict) - _vis.save(os.path.join('.','imgseg',f'{img_id}_{k}.png')) + #_vis.save(os.path.join('.','imgseg',f'{img_id}_{k}.png')) return returnDict From 2faa8332dc1a87502cf21a799b652b8bcef60229 Mon Sep 17 00:00:00 2001 From: dizzyi Date: Mon, 6 Sep 2021 17:27:57 +0800 Subject: [PATCH 19/19] final edit --- robosuite/utils/visual/VisualManager.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/robosuite/utils/visual/VisualManager.py b/robosuite/utils/visual/VisualManager.py index 9dd5556cda..c520a584ec 100644 --- a/robosuite/utils/visual/VisualManager.py +++ b/robosuite/utils/visual/VisualManager.py @@ -269,6 +269,7 @@ def load_model(self, MODEL_ROOT): self.predictor = DefaultPredictor(cfg) + class ImageSaver(): def __init__( self, @@ -377,11 +378,12 @@ def seg2anno(self, seg, env, img_id): annoDict['bbox_mode'] = BoxMode.XYXY_ABS annoDict['category_id'] = 1 - # annoDict['category_id'] = mapGeomIDtoCategoryID(_ids) - + #annoDict['category_id'] = mapGeomIDtoCategoryID(_ids[0]) _vis = np.asarray(_mask * 255 / _mask.max()).astype(np.uint8) - _vis = Image.fromarray(_vis, mode='L').filter(ImageFilter.MinFilter(3)).convert('1') + #_vis = Image.fromarray(_vis, mode='L').convert('1') + _vis = Image.fromarray(_vis, mode='L').filter(ImageFilter.MinFilter(3)).filter(ImageFilter.MaxFilter(3)).convert('1') + _mask = np.asarray(_vis) _RLE = Mask2RLE( np.asarray( _mask,dtype=np.uint8, order= 'F') ) @@ -389,7 +391,7 @@ def seg2anno(self, seg, env, img_id): returnDict['annotations'].append(annoDict) - #_vis.save(os.path.join('.','imgseg',f'{img_id}_{k}.png')) + _vis.save(os.path.join('.','filter_3',f'{img_id}_{k}.png')) return returnDict @@ -399,7 +401,8 @@ def mask2BBox(self, mask): cols = np.any(mask,axis=1) rmin, rmax = np.where(rows)[0][[0,-1]] cmin, cmax = np.where(cols)[0][[0,-1]] - return [rmin,cmin, rmax, cmax] + return [rmin, cmin, rmax, cmax] + class VisualManager(): def __init__(