diff --git a/label_maker/download.py b/label_maker/download.py index 3cf485c..f08d7cf 100644 --- a/label_maker/download.py +++ b/label_maker/download.py @@ -16,18 +16,19 @@ def download_mbtiles(dest_folder, country, **kwargs): ------------ dest_folder: str Folder to save download into - country: str - Country for which to download the OSM QA tiles + country: list[str] + Countries for which to download the OSM QA tiles **kwargs: dict Other properties from CLI config passed as keywords to other utility functions """ - download_file = path.join(dest_folder, '{}.mbtiles'.format(country)) - print('Saving QA tiles to {}'.format(download_file)) - url = 'https://s3.amazonaws.com/mapbox/osm-qa-tiles-production/latest.country/{}.mbtiles.gz'.format(country) - gz = tempfile.TemporaryDirectory() - tmp_path = path.join(gz.name, '{}.mbtiles.gz'.format(country)) - download(url=url, path=tmp_path) - with gzip.open(tmp_path, 'rb') as r: - with open(download_file, 'wb') as w: - for line in r: - w.write(line) + for ctr in country: + download_file = path.join(dest_folder, '{}.mbtiles'.format(ctr)) + print('Saving QA tiles to {}'.format(download_file)) + url = 'https://s3.amazonaws.com/mapbox/osm-qa-tiles-production/latest.country/{}.mbtiles.gz'.format(ctr) + gz = tempfile.TemporaryDirectory() + tmp_path = path.join(gz.name, '{}.mbtiles.gz'.format(ctr)) + download(url=url, path=tmp_path) + with gzip.open(tmp_path, 'rb') as r: + with open(download_file, 'wb') as w: + for line in r: + w.write(line) diff --git a/label_maker/label.py b/label_maker/label.py index b491ad6..e3a2edb 100644 --- a/label_maker/label.py +++ b/label_maker/label.py @@ -66,99 +66,119 @@ def make_labels(dest_folder, zoom, country, classes, ml_type, bounding_box, spar Other properties from CLI config passed as keywords to other utility functions """ - mbtiles_file = op.join(dest_folder, '{}.mbtiles'.format(country)) - mbtiles_file_zoomed = op.join(dest_folder, '{}-z{!s}.mbtiles'.format(country, zoom)) - - if not op.exists(mbtiles_file_zoomed): - filtered_geo = kwargs.get('geojson') or op.join(dest_folder, '{}.geojson'.format(country)) - fast_parse = [] - if not op.exists(filtered_geo): - fast_parse = ['-P'] - print('Retiling QA Tiles to zoom level {} (takes a bit)'.format(zoom)) - ps = Popen(['tippecanoe-decode', '-c', '-f', mbtiles_file], stdout=PIPE) - stream_filter_fpath = op.join(op.dirname(label_maker.__file__), 'stream_filter.py') - run([sys.executable, stream_filter_fpath, json.dumps(bounding_box)], - stdin=ps.stdout, stdout=open(filtered_geo, 'w')) - ps.wait() - run(['tippecanoe', '--no-feature-limit', '--no-tile-size-limit'] + fast_parse + - ['-l', 'osm', '-f', '-z', str(zoom), '-Z', str(zoom), '-o', - mbtiles_file_zoomed, filtered_geo]) - - # Call tilereduce - print('Determining labels for each tile') - mbtiles_to_reduce = mbtiles_file_zoomed - tilereduce(dict(zoom=zoom, source=mbtiles_to_reduce, bbox=bounding_box, - args=dict(ml_type=ml_type, classes=classes)), - _mapper, _callback, _done) - - # Add empty labels to any tiles which didn't have data - empty_label = _create_empty_label(ml_type, classes) - for tile in tiles(*bounding_box, [zoom]): - index = '-'.join([str(i) for i in tile]) - global tile_results - if tile_results.get(index) is None: - tile_results[index] = empty_label - - # Print a summary of the labels - _tile_results_summary(ml_type, classes) - - # If the --sparse flag is provided, limit the total background tiles to write - if sparse: - pos_examples, neg_examples = [], [] - for k in tile_results.keys(): - # if we don't match any class, this is a negative example - if not sum([class_match(ml_type, tile_results[k], i + 1) for i, c in enumerate(classes)]): - neg_examples.append(k) - else: - pos_examples.append(k) - - # Choose random subset of negative examples - n_neg_ex = int(kwargs['background_ratio'] * len(pos_examples)) - neg_examples = np.random.choice(neg_examples, n_neg_ex, replace=False).tolist() - - tile_results = {k: tile_results.get(k) for k in pos_examples + neg_examples} - print('Using sparse mode; subselected {} background tiles'.format(n_neg_ex)) - - # write out labels as numpy arrays - labels_file = op.join(dest_folder, 'labels.npz') - print('Writing out labels to {}'.format(labels_file)) - np.savez(labels_file, **tile_results) - - # write out labels as GeoJSON or PNG - if ml_type == 'classification': - features = [] - for tile, label in tile_results.items(): - feat = feature(Tile(*[int(t) for t in tile.split('-')])) - features.append(Feature(geometry=feat['geometry'], - properties=dict(label=label.tolist()))) - json.dump(fc(features), open(op.join(dest_folder, 'classification.geojson'), 'w')) - elif ml_type == 'object-detection': - label_folder = op.join(dest_folder, 'labels') - if not op.isdir(label_folder): - makedirs(label_folder) - for tile, label in tile_results.items(): - # if we have at least one bounding box label - if bool(label.shape[0]): - label_file = '{}.png'.format(tile) - img = Image.new('RGB', (256, 256)) - draw = ImageDraw.Draw(img) - for box in label: - draw.rectangle(((box[0], box[1]), (box[2], box[3])), outline=class_color(box[4])) - print('Writing {}'.format(label_file)) - img.save(op.join(label_folder, label_file)) - elif ml_type == 'segmentation': - label_folder = op.join(dest_folder, 'labels') - if not op.isdir(label_folder): - makedirs(label_folder) - for tile, label in tile_results.items(): - # if we have any class pixels - if np.sum(label): - label_file = '{}.png'.format(tile) - visible_label = np.array([class_color(l) for l in np.nditer(label)]).reshape(256, 256, 3) - img = Image.fromarray(visible_label.astype(np.uint8)) - print('Writing {}'.format(label_file)) - img.save(op.join(label_folder, label_file)) - + for ctr_idx, ctr in enumerate(country): + mbtiles_file = op.join(dest_folder, '{}.mbtiles'.format(ctr)) + mbtiles_file_zoomed = op.join(dest_folder, '{}-z{!s}.mbtiles'.format(ctr, zoom)) + + if not op.exists(mbtiles_file_zoomed): + filtered_geo = kwargs.get('geojson') or op.join(dest_folder, '{}.geojson'.format(ctr)) + fast_parse = [] + if not op.exists(filtered_geo): + fast_parse = ['-P'] + print('Retiling QA Tiles to zoom level {} (takes a bit)'.format(zoom)) + ps = Popen(['tippecanoe-decode', '-c', '-f', mbtiles_file], stdout=PIPE) + stream_filter_fpath = op.join(op.dirname(label_maker.__file__), 'stream_filter.py') + run([sys.executable, stream_filter_fpath, json.dumps(bounding_box)], + stdin=ps.stdout, stdout=open(filtered_geo, 'w')) + ps.wait() + run(['tippecanoe', '--no-feature-limit', '--no-tile-size-limit'] + fast_parse + + ['-l', 'osm', '-f', '-z', str(zoom), '-Z', str(zoom), '-o', + mbtiles_file_zoomed, filtered_geo]) + + # Call tilereduce + print('Determining labels for each tile') + mbtiles_to_reduce = mbtiles_file_zoomed + tilereduce(dict(zoom=zoom, source=mbtiles_to_reduce, bbox=bounding_box, + args=dict(ml_type=ml_type, classes=classes)), + _mapper, _callback, _done) + + # Add empty labels to any tiles which didn't have data + empty_label = _create_empty_label(ml_type, classes) + for tile in tiles(*bounding_box, [zoom]): + index = '-'.join([str(i) for i in tile]) + global tile_results + if tile_results.get(index) is None: + tile_results[index] = empty_label + + # Print a summary of the labels + _tile_results_summary(ml_type, classes) + + # If the --sparse flag is provided, limit the total background tiles to write + if sparse: + pos_examples, neg_examples = [], [] + for k in tile_results.keys(): + # if we don't match any class, this is a negative example + if not sum([class_match(ml_type, tile_results[k], i + 1) for i, c in enumerate(classes)]): + neg_examples.append(k) + else: + pos_examples.append(k) + + # Choose random subset of negative examples + n_neg_ex = int(kwargs['background_ratio'] * len(pos_examples)) + neg_examples = np.random.choice(neg_examples, n_neg_ex, replace=False).tolist() + + tile_results = {k: tile_results.get(k) for k in pos_examples + neg_examples} + print('Using sparse mode; subselected {} background tiles'.format(n_neg_ex)) + + # write out labels as numpy arrays + labels_file = op.join(dest_folder, 'labels.npz') + print('Writing out labels to {}'.format(labels_file)) + np.savez(labels_file, **tile_results) + + # write out labels as GeoJSON or PNG + if ml_type == 'classification': + features = [] + if ctr_idx == 0: + label_area = np.zeros((len(list(tile_results.values())[0]), len(tile_results), len(country)), dtype=float) + label_bool = np.zeros((len(list(tile_results.values())[0]), len(tile_results), len(country)), dtype=bool) + for i, (tile, label) in enumerate(tile_results.items()): + label_bool[:, i, ctr_idx] = np.asarray([bool(l) for l in label]) + label_area[:, i, ctr_idx] = np.asarray([float(l) for l in label]) + # if there are no classes, activate the background + if ctr == country[-1]: + if all(v == 0 for v in label_bool[:, i, ctr_idx]): + label_bool[0, i, ctr_idx] = 1 + feat = feature(Tile(*[int(t) for t in tile.split('-')])) + features.append(Feature(geometry=feat['geometry'], + properties=dict(feat_id=str(tile), + label=np.any(label_bool[:, i, :], axis=1).astype(int).tolist(), + label_area=np.sum(label_area[:, i, :], axis=1).tolist()))) + if ctr == country[-1]: + json.dump(fc(features), open(op.join(dest_folder, 'classification.geojson'), 'w')) + elif ml_type == 'object-detection': + label_folder = op.join(dest_folder, 'labels') + if not op.isdir(label_folder): + makedirs(label_folder) + for tile, label in tile_results.items(): + # if we have at least one bounding box label + if bool(label.shape[0]): + label_file = '{}.png'.format(tile) + img = Image.new('RGB', (256, 256)) + draw = ImageDraw.Draw(img) + for box in label: + draw.rectangle(((box[0], box[1]), (box[2], box[3])), outline=class_color(box[4])) + print('Writing {}'.format(label_file)) + if op.isfile(op.join(label_folder, label_file)): + old_img = Image.open(op.join(label_folder, label_file)) + img.paste(old_img) + else: + img.save(op.join(label_folder, label_file)) + elif ml_type == 'segmentation': + label_folder = op.join(dest_folder, 'labels') + if not op.isdir(label_folder): + makedirs(label_folder) + for tile, label in tile_results.items(): + # if we have any class pixels + if np.sum(label): + label_file = '{}.png'.format(tile) + visible_label = np.array([class_color(l) for l in np.nditer(label)]).reshape(256, 256, 3) + img = Image.fromarray(visible_label.astype(np.uint8)) + print('Writing {}'.format(label_file)) + if op.isfile(op.join(label_folder, label_file)): + old_img = Image.open(op.join(label_folder, label_file)) + img.paste(old_img) + else: + img.save(op.join(label_folder, label_file)) def _mapper(x, y, z, data, args): """Iterate over OSM QA Tiles and return a label for each tile @@ -197,14 +217,15 @@ def _mapper(x, y, z, data, args): if tile['osm']['features']: if ml_type == 'classification': - class_counts = np.zeros(len(classes) + 1, dtype=np.int) - for i, cl in enumerate(classes): - ff = create_filter(cl.get('filter')) - class_counts[i + 1] = int(bool([f for f in tile['osm']['features'] if ff(f)])) - # if there are no classes, activate the background - if np.sum(class_counts) == 0: - class_counts[0] = 1 - return ('{!s}-{!s}-{!s}'.format(x, y, z), class_counts) + class_areas = np.zeros(len(classes) + 1) + for feat in tile['osm']['features']: + for i, cl in enumerate(classes): + ff = create_filter(cl.get('filter')) + if ff(feat): + feat['geometry']['coordinates'] = _convert_coordinates(feat['geometry']['coordinates']) + geo = shape(feat['geometry']) + class_areas[i + 1] = geo.area + return ('{!s}-{!s}-{!s}'.format(x, y, z), class_areas) elif ml_type == 'object-detection': bboxes = _create_empty_label(ml_type, classes) for feat in tile['osm']['features']: @@ -305,7 +326,7 @@ def _tile_results_summary(ml_type, classes): cl_tiles = len([l for l in labels if len(list(filter(_bbox_class(i + 1), l)))]) # pylint: disable=cell-var-from-loop print('{}: {} features in {} tiles'.format(cl.get('name'), cl_features, cl_tiles)) elif ml_type == 'classification': - class_tile_counts = list(np.sum(labels, axis=0)) + class_tile_counts = list(np.count_nonzero(labels, axis=0)) for i, cl in enumerate(classes): print('{}: {} tiles'.format(cl.get('name'), int(class_tile_counts[i + 1]))) elif ml_type == 'segmentation': @@ -317,9 +338,7 @@ def _tile_results_summary(ml_type, classes): def _create_empty_label(ml_type, classes): if ml_type == 'classification': - label = np.zeros(len(classes) + 1, dtype=np.int) - label[0] = 1 - return label + return np.zeros(len(classes) + 1, dtype=np.int) elif ml_type == 'object-detection': return np.empty((0, 5), dtype=np.int) elif ml_type == 'segmentation': diff --git a/label_maker/main.py b/label_maker/main.py index 79fd11b..f3f4b9d 100644 --- a/label_maker/main.py +++ b/label_maker/main.py @@ -83,6 +83,10 @@ def cli(): if not valid: raise Exception(v.errors) + # for aoi, overwrite bounding_box config key to correct labelling + if 'aoi' in config.keys(): + config['bounding_box'] = get_bounds(json.load(open(config.get('aoi'), 'r'))) + # custom validation for top level keys # require either: country & bounding_box or geojson if 'geojson' not in config.keys() and not ('country' in config.keys() and 'bounding_box' in config.keys()): diff --git a/label_maker/validate.py b/label_maker/validate.py index 2a60425..ba33981 100644 --- a/label_maker/validate.py +++ b/label_maker/validate.py @@ -22,7 +22,8 @@ schema = { 'geojson': {'type': 'string'}, - 'country': {'type': 'string', 'allowed': countries}, + 'aoi': {'type': 'string'}, + 'country': {'type': 'list', 'allowed': countries}, 'bounding_box': {'type': 'list', 'items': [lon_schema, lat_schema, lon_schema, lat_schema]}, 'zoom': {'type': 'integer', 'required': True}, 'classes': {'type': 'list', 'schema': class_schema, 'required': True}, diff --git a/requirements.txt b/requirements.txt index 28f3401..fb9dafd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,11 +10,11 @@ numpy==1.13.3 olefile==0.44 Pillow==4.3.0 protobuf==3.5.0.post1 -pyclipper==1.0.6 +pyclipper>=1.0.6 pycurl==7.43.0.1 pyproj==1.9.5.1 rasterio[s3]==1.0a12 requests>=2.20.0 Shapely>=1.6.3 six==1.10.0 -tilepie==0.2.1 +tilepie==0.2.1 \ No newline at end of file diff --git a/test/fixtures/integration/classification.geojson b/test/fixtures/integration/classification.geojson index ab4c8db..cf7bfd7 100644 --- a/test/fixtures/integration/classification.geojson +++ b/test/fixtures/integration/classification.geojson @@ -1 +1 @@ -{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-9.459228515625, 38.85040342169188], [-9.459228515625, 38.85254239036425], [-9.45648193359375, 38.85254239036425], [-9.45648193359375, 38.85040342169188], [-9.459228515625, 38.85040342169188]]]}, "properties": {"label": [1, 0, 0, 0, 0, 0, 0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-9.459228515625, 38.84612529138702], [-9.459228515625, 38.84826438869912], [-9.45648193359375, 38.84826438869912], [-9.45648193359375, 38.84612529138702], [-9.459228515625, 38.84612529138702]]]}, "properties": {"label": [0, 0, 0, 0, 0, 0, 1]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-9.459228515625, 38.84826438869912], [-9.459228515625, 38.85040342169188], [-9.45648193359375, 38.85040342169188], [-9.45648193359375, 38.84826438869912], [-9.459228515625, 38.84826438869912]]]}, "properties": {"label": [0, 0, 0, 0, 0, 0, 1]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-9.45648193359375, 38.84612529138702], [-9.45648193359375, 38.84826438869912], [-9.4537353515625, 38.84826438869912], [-9.4537353515625, 38.84612529138702], [-9.45648193359375, 38.84612529138702]]]}, "properties": {"label": [0, 0, 0, 0, 0, 0, 1]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-9.4537353515625, 38.85040342169188], [-9.4537353515625, 38.85254239036425], [-9.45098876953125, 38.85254239036425], [-9.45098876953125, 38.85040342169188], [-9.4537353515625, 38.85040342169188]]]}, "properties": {"label": [0, 0, 0, 0, 0, 0, 1]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-9.45648193359375, 38.85040342169188], [-9.45648193359375, 38.85254239036425], [-9.4537353515625, 38.85254239036425], [-9.4537353515625, 38.85040342169188], [-9.45648193359375, 38.85040342169188]]]}, "properties": {"label": [0, 0, 0, 0, 0, 0, 1]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-9.4537353515625, 38.84612529138702], [-9.4537353515625, 38.84826438869912], [-9.45098876953125, 38.84826438869912], [-9.45098876953125, 38.84612529138702], [-9.4537353515625, 38.84612529138702]]]}, "properties": {"label": [0, 0, 0, 0, 0, 0, 1]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-9.4537353515625, 38.84826438869912], [-9.4537353515625, 38.85040342169188], [-9.45098876953125, 38.85040342169188], [-9.45098876953125, 38.84826438869912], [-9.4537353515625, 38.84826438869912]]]}, "properties": {"label": [0, 1, 1, 0, 0, 0, 1]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-9.45648193359375, 38.84826438869912], [-9.45648193359375, 38.85040342169188], [-9.4537353515625, 38.85040342169188], [-9.4537353515625, 38.84826438869912], [-9.45648193359375, 38.84826438869912]]]}, "properties": {"label": [0, 0, 0, 0, 1, 1, 1]}}]} \ No newline at end of file +{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-7.3828125, 37.43997405227058], [-7.3828125, 37.718590325588146], [-7.03125, 37.718590325588146], [-7.03125, 37.43997405227058], [-7.3828125, 37.43997405227058]]]}, "properties": {"feat_id": "491-396-10", "label": [1, 0, 0, 0, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-7.3828125, 37.160316546736766], [-7.3828125, 37.43997405227058], [-7.03125, 37.43997405227058], [-7.03125, 37.160316546736766], [-7.3828125, 37.160316546736766]]]}, "properties": {"feat_id": "491-397-10", "label": [1, 0, 0, 0, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-7.03125, 37.718590325588146], [-7.03125, 37.99616267972812], [-6.6796875, 37.99616267972812], [-6.6796875, 37.718590325588146], [-7.03125, 37.718590325588146]]]}, "properties": {"feat_id": "492-395-10", "label": [1, 0, 0, 0, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-7.3828125, 37.718590325588146], [-7.3828125, 37.99616267972812], [-7.03125, 37.99616267972812], [-7.03125, 37.718590325588146], [-7.3828125, 37.718590325588146]]]}, "properties": {"feat_id": "491-395-10", "label": [1, 0, 0, 0, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-7.03125, 37.99616267972812], [-7.03125, 38.27268853598096], [-6.6796875, 38.27268853598096], [-6.6796875, 37.99616267972812], [-7.03125, 37.99616267972812]]]}, "properties": {"feat_id": "492-394-10", "label": [1, 0, 0, 0, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-7.3828125, 37.99616267972812], [-7.3828125, 38.27268853598096], [-7.03125, 38.27268853598096], [-7.03125, 37.99616267972812], [-7.3828125, 37.99616267972812]]]}, "properties": {"feat_id": "491-394-10", "label": [0, 0, 0, 1, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-7.734375, 37.718590325588146], [-7.734375, 37.99616267972812], [-7.3828125, 37.99616267972812], [-7.3828125, 37.718590325588146], [-7.734375, 37.718590325588146]]]}, "properties": {"feat_id": "490-395-10", "label": [1, 0, 0, 1, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 16.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-8.0859375, 37.43997405227058], [-8.0859375, 37.718590325588146], [-7.734375, 37.718590325588146], [-7.734375, 37.43997405227058], [-8.0859375, 37.43997405227058]]]}, "properties": {"feat_id": "489-396-10", "label": [0, 0, 0, 1, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-8.4375, 37.160316546736766], [-8.4375, 37.43997405227058], [-8.0859375, 37.43997405227058], [-8.0859375, 37.160316546736766], [-8.4375, 37.160316546736766]]]}, "properties": {"feat_id": "488-397-10", "label": [0, 0, 0, 1, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 14.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-8.4375, 37.718590325588146], [-8.4375, 37.99616267972812], [-8.0859375, 37.99616267972812], [-8.0859375, 37.718590325588146], [-8.4375, 37.718590325588146]]]}, "properties": {"feat_id": "488-395-10", "label": [0, 0, 0, 1, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 24.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-7.734375, 37.99616267972812], [-7.734375, 38.27268853598096], [-7.3828125, 38.27268853598096], [-7.3828125, 37.99616267972812], [-7.734375, 37.99616267972812]]]}, "properties": {"feat_id": "490-394-10", "label": [0, 0, 0, 1, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-7.734375, 37.43997405227058], [-7.734375, 37.718590325588146], [-7.3828125, 37.718590325588146], [-7.3828125, 37.43997405227058], [-7.734375, 37.43997405227058]]]}, "properties": {"feat_id": "490-396-10", "label": [1, 0, 0, 1, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 23.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-8.4375, 37.43997405227058], [-8.4375, 37.718590325588146], [-8.0859375, 37.718590325588146], [-8.0859375, 37.43997405227058], [-8.4375, 37.43997405227058]]]}, "properties": {"feat_id": "488-396-10", "label": [0, 0, 0, 1, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 22.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-8.0859375, 37.160316546736766], [-8.0859375, 37.43997405227058], [-7.734375, 37.43997405227058], [-7.734375, 37.160316546736766], [-8.0859375, 37.160316546736766]]]}, "properties": {"feat_id": "489-397-10", "label": [1, 0, 0, 0, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-8.0859375, 37.718590325588146], [-8.0859375, 37.99616267972812], [-7.734375, 37.99616267972812], [-7.734375, 37.718590325588146], [-8.0859375, 37.718590325588146]]]}, "properties": {"feat_id": "489-395-10", "label": [0, 0, 0, 1, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-8.4375, 37.99616267972812], [-8.4375, 38.27268853598096], [-8.0859375, 38.27268853598096], [-8.0859375, 37.99616267972812], [-8.4375, 37.99616267972812]]]}, "properties": {"feat_id": "488-394-10", "label": [0, 0, 0, 1, 0, 1, 0], "label_area": [0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-8.0859375, 37.99616267972812], [-8.0859375, 38.27268853598096], [-7.734375, 38.27268853598096], [-7.734375, 37.99616267972812], [-8.0859375, 37.99616267972812]]]}, "properties": {"feat_id": "489-394-10", "label": [0, 0, 0, 0, 0, 1, 0], "label_area": [0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-7.734375, 37.160316546736766], [-7.734375, 37.43997405227058], [-7.3828125, 37.43997405227058], [-7.3828125, 37.160316546736766], [-7.734375, 37.160316546736766]]]}, "properties": {"feat_id": "490-397-10", "label": [0, 0, 0, 1, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-7.03125, 37.43997405227058], [-7.03125, 37.718590325588146], [-6.6796875, 37.718590325588146], [-6.6796875, 37.43997405227058], [-7.03125, 37.43997405227058]]]}, "properties": {"feat_id": "492-396-10", "label": [1, 0, 0, 0, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-7.03125, 37.160316546736766], [-7.03125, 37.43997405227058], [-6.6796875, 37.43997405227058], [-6.6796875, 37.160316546736766], [-7.03125, 37.160316546736766]]]}, "properties": {"feat_id": "492-397-10", "label": [0, 0, 1, 1, 0, 1, 0], "label_area": [0.0, 0.0, 1.5, 56.0, 0.0, 0.5, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-6.6796875, 37.99616267972812], [-6.6796875, 38.27268853598096], [-6.328125, 38.27268853598096], [-6.328125, 37.99616267972812], [-6.6796875, 37.99616267972812]]]}, "properties": {"feat_id": "493-394-10", "label": [1, 0, 0, 0, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-6.6796875, 37.718590325588146], [-6.6796875, 37.99616267972812], [-6.328125, 37.99616267972812], [-6.328125, 37.718590325588146], [-6.6796875, 37.718590325588146]]]}, "properties": {"feat_id": "493-395-10", "label": [1, 0, 0, 0, 0, 0, 0], "label_area": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-6.6796875, 37.43997405227058], [-6.6796875, 37.718590325588146], [-6.328125, 37.718590325588146], [-6.328125, 37.43997405227058], [-6.6796875, 37.43997405227058]]]}, "properties": {"feat_id": "493-396-10", "label": [0, 0, 0, 1, 0, 1, 0], "label_area": [0.0, 0.0, 0.0, 17.5, 0.0, 0.5, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-6.6796875, 37.160316546736766], [-6.6796875, 37.43997405227058], [-6.328125, 37.43997405227058], [-6.328125, 37.160316546736766], [-6.6796875, 37.160316546736766]]]}, "properties": {"feat_id": "493-397-10", "label": [0, 0, 0, 0, 0, 1, 0], "label_area": [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]}}]} \ No newline at end of file diff --git a/test/fixtures/integration/classification_sparse.geojson b/test/fixtures/integration/classification_sparse.geojson new file mode 100644 index 0000000..b1458a5 --- /dev/null +++ b/test/fixtures/integration/classification_sparse.geojson @@ -0,0 +1 @@ +{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-9.4537353515625, 38.84826438869912], [-9.4537353515625, 38.85040342169188], [-9.45098876953125, 38.85040342169188], [-9.45098876953125, 38.84826438869912], [-9.4537353515625, 38.84826438869912]]]}, "properties": {"feat_id": "62094-50163-17", "label": [0, 1, 1, 0, 0, 0, 0], "label_area": [0.0, 319.0, 0.5, 0.0, 0.0, 0.0, 0.0]}}, {"type": "Feature", "geometry": {"type": "Polygon", "coordinates": [[[-9.45648193359375, 38.84826438869912], [-9.45648193359375, 38.85040342169188], [-9.4537353515625, 38.85040342169188], [-9.4537353515625, 38.84826438869912], [-9.45648193359375, 38.84826438869912]]]}, "properties": {"feat_id": "62093-50163-17", "label": [0, 0, 0, 0, 0, 1, 0], "label_area": [0.0, 0.0, 0.0, 0.0, 0.0, 1268.0, 0.0]}}]} \ No newline at end of file diff --git a/test/fixtures/integration/config.aoi.json b/test/fixtures/integration/config.aoi.json new file mode 100644 index 0000000..013f371 --- /dev/null +++ b/test/fixtures/integration/config.aoi.json @@ -0,0 +1,17 @@ +{ + "country": ["portugal"], + "aoi": "test/fixtures/integration/portugal_aoi.geojson", + "zoom": 17, + "classes": [ + { "name": "Water Tower", "filter": ["==", "man_made", "water_tower"] }, + { "name": "Building", "filter": ["has", "building"] }, + { "name": "Farmland", "filter": ["==", "landuse", "farmland"] }, + { "name": "Ruins", "filter": ["==", "historic", "ruins"] }, + { "name": "Parking", "filter": ["==", "amenity", "parking"] }, + { "name": "Roads", "filter": ["has", "highway"] } + ], + "imagery": "https://api.mapbox.com/v4/mapbox.satellite/{z}/{x}/{y}.jpg?access_token=ACCESS_TOKEN", + "background_ratio": 1, + "ml_type": "classification", + "seed": 19 +} diff --git a/test/fixtures/integration/config.integration.json b/test/fixtures/integration/config.integration.json index d7ea9b4..7b38ec4 100644 --- a/test/fixtures/integration/config.integration.json +++ b/test/fixtures/integration/config.integration.json @@ -1,12 +1,12 @@ { - "country": "portugal", + "country": ["portugal","spain"], "bounding_box": [ - -9.4575, - 38.8467, - -9.4510, - 38.8513 + -8.4302, + 37.1825, + -6.3850, + 38.2298 ], - "zoom": 17, + "zoom": 10, "classes": [ { "name": "Water Tower", "filter": ["==", "man_made", "water_tower"] }, { "name": "Building", "filter": ["has", "building"] }, @@ -19,4 +19,4 @@ "background_ratio": 1, "ml_type": "classification", "seed": 19 -} +} \ No newline at end of file diff --git a/test/fixtures/integration/config.integration.object_detection.json b/test/fixtures/integration/config.integration.object_detection.json index f50f776..6bb0c7a 100644 --- a/test/fixtures/integration/config.integration.object_detection.json +++ b/test/fixtures/integration/config.integration.object_detection.json @@ -1,19 +1,15 @@ { - "country": "portugal", + "country": ["portugal","spain"], "bounding_box": [ - -9.4575, - 38.8467, - -9.4510, - 38.8513 + -8.4302, + 37.1825, + -6.3850, + 38.2298 ], - "zoom": 17, + "zoom": 10, "classes": [ { "name": "Water Tower", "filter": ["==", "man_made", "water_tower"] }, - { "name": "Building", "filter": ["has", "building"] }, - { "name": "Farmland", "filter": ["==", "landuse", "farmland"] }, - { "name": "Ruins", "filter": ["==", "historic", "ruins"] }, - { "name": "Parking", "filter": ["==", "amenity", "parking"] }, - { "name": "Roads", "filter": ["has", "highway"] } + { "name": "Ruins", "filter": ["==", "historic", "ruins"] } ], "imagery": "https://api.mapbox.com/v4/mapbox.satellite/{z}/{x}/{y}.jpg?access_token=ACCESS_TOKEN", "background_ratio": 1, diff --git a/test/fixtures/integration/config.integration.segmentation.json b/test/fixtures/integration/config.integration.segmentation.json index eaff388..bd76a08 100644 --- a/test/fixtures/integration/config.integration.segmentation.json +++ b/test/fixtures/integration/config.integration.segmentation.json @@ -1,19 +1,15 @@ { - "country": "portugal", + "country": ["portugal","spain"], "bounding_box": [ - -9.4575, - 38.8467, - -9.4510, - 38.8513 + -8.4302, + 37.1825, + -6.3850, + 38.2298 ], - "zoom": 17, + "zoom": 10, "classes": [ - { "name": "Water Tower", "filter": ["==", "man_made", "water_tower"], "buffer": 5 }, - { "name": "Building", "filter": ["has", "building"] }, - { "name": "Farmland", "filter": ["==", "landuse", "farmland"] }, - { "name": "Ruins", "filter": ["==", "historic", "ruins"] }, - { "name": "Parking", "filter": ["==", "amenity", "parking"] }, - { "name": "Roads", "filter": ["has", "highway"], "buffer": 3 } + { "name": "Water Tower", "filter": ["==", "man_made", "water_tower"] }, + { "name": "Ruins", "filter": ["==", "historic", "ruins"] } ], "imagery": "https://api.mapbox.com/v4/mapbox.satellite/{z}/{x}/{y}.jpg?access_token=ACCESS_TOKEN", "background_ratio": 1, diff --git a/test/fixtures/integration/config.integration.segmentation_sparse.json b/test/fixtures/integration/config.integration.segmentation_sparse.json index 31f4c3b..f5041d8 100644 --- a/test/fixtures/integration/config.integration.segmentation_sparse.json +++ b/test/fixtures/integration/config.integration.segmentation_sparse.json @@ -1,5 +1,5 @@ { - "country": "portugal", + "country": ["portugal"], "bounding_box": [ -9.4575, 38.8467, diff --git a/test/fixtures/integration/config.integration_sparse.json b/test/fixtures/integration/config.integration_sparse.json index 13b5d7b..e0d35d2 100644 --- a/test/fixtures/integration/config.integration_sparse.json +++ b/test/fixtures/integration/config.integration_sparse.json @@ -1,5 +1,5 @@ { - "country": "portugal", + "country": ["portugal"], "bounding_box": [ -9.4575, 38.8467, diff --git a/test/fixtures/integration/config.intergration.geotiff_package.json b/test/fixtures/integration/config.intergration.geotiff_package.json index dd3cd1c..1c3b62c 100644 --- a/test/fixtures/integration/config.intergration.geotiff_package.json +++ b/test/fixtures/integration/config.intergration.geotiff_package.json @@ -1,5 +1,5 @@ { - "country": "sao_tome_and_principe", + "country": ["sao_tome_and_principe"], "bounding_box": [6.72746119738703,0.3382909054246151,6.72776258384623,0.33878086940393715], "zoom": 20, "classes": [ diff --git a/test/fixtures/integration/labels/488-394-10.png b/test/fixtures/integration/labels/488-394-10.png new file mode 100644 index 0000000..225d723 Binary files /dev/null and b/test/fixtures/integration/labels/488-394-10.png differ diff --git a/test/fixtures/integration/labels/488-395-10.png b/test/fixtures/integration/labels/488-395-10.png new file mode 100644 index 0000000..bda10f4 Binary files /dev/null and b/test/fixtures/integration/labels/488-395-10.png differ diff --git a/test/fixtures/integration/labels/488-396-10.png b/test/fixtures/integration/labels/488-396-10.png new file mode 100644 index 0000000..e973fb3 Binary files /dev/null and b/test/fixtures/integration/labels/488-396-10.png differ diff --git a/test/fixtures/integration/labels/488-397-10.png b/test/fixtures/integration/labels/488-397-10.png new file mode 100644 index 0000000..4364146 Binary files /dev/null and b/test/fixtures/integration/labels/488-397-10.png differ diff --git a/test/fixtures/integration/labels/489-394-10.png b/test/fixtures/integration/labels/489-394-10.png new file mode 100644 index 0000000..b3d1ced Binary files /dev/null and b/test/fixtures/integration/labels/489-394-10.png differ diff --git a/test/fixtures/integration/labels/489-395-10.png b/test/fixtures/integration/labels/489-395-10.png new file mode 100644 index 0000000..fddd178 Binary files /dev/null and b/test/fixtures/integration/labels/489-395-10.png differ diff --git a/test/fixtures/integration/labels/489-396-10.png b/test/fixtures/integration/labels/489-396-10.png new file mode 100644 index 0000000..7e475bc Binary files /dev/null and b/test/fixtures/integration/labels/489-396-10.png differ diff --git a/test/fixtures/integration/labels/489-397-10.png b/test/fixtures/integration/labels/489-397-10.png new file mode 100644 index 0000000..4232d7d Binary files /dev/null and b/test/fixtures/integration/labels/489-397-10.png differ diff --git a/test/fixtures/integration/labels/490-394-10.png b/test/fixtures/integration/labels/490-394-10.png new file mode 100644 index 0000000..c6b4118 Binary files /dev/null and b/test/fixtures/integration/labels/490-394-10.png differ diff --git a/test/fixtures/integration/labels/490-395-10.png b/test/fixtures/integration/labels/490-395-10.png new file mode 100644 index 0000000..6a2d771 Binary files /dev/null and b/test/fixtures/integration/labels/490-395-10.png differ diff --git a/test/fixtures/integration/labels/490-396-10.png b/test/fixtures/integration/labels/490-396-10.png new file mode 100644 index 0000000..1ccdd60 Binary files /dev/null and b/test/fixtures/integration/labels/490-396-10.png differ diff --git a/test/fixtures/integration/labels/490-397-10.png b/test/fixtures/integration/labels/490-397-10.png new file mode 100644 index 0000000..0b55266 Binary files /dev/null and b/test/fixtures/integration/labels/490-397-10.png differ diff --git a/test/fixtures/integration/labels/491-394-10.png b/test/fixtures/integration/labels/491-394-10.png new file mode 100644 index 0000000..35ca1f1 Binary files /dev/null and b/test/fixtures/integration/labels/491-394-10.png differ diff --git a/test/fixtures/integration/labels/492-394-10.png b/test/fixtures/integration/labels/492-394-10.png new file mode 100644 index 0000000..44a8fbe Binary files /dev/null and b/test/fixtures/integration/labels/492-394-10.png differ diff --git a/test/fixtures/integration/labels/492-395-10.png b/test/fixtures/integration/labels/492-395-10.png new file mode 100644 index 0000000..854b630 Binary files /dev/null and b/test/fixtures/integration/labels/492-395-10.png differ diff --git a/test/fixtures/integration/labels/492-396-10.png b/test/fixtures/integration/labels/492-396-10.png new file mode 100644 index 0000000..9139d20 Binary files /dev/null and b/test/fixtures/integration/labels/492-396-10.png differ diff --git a/test/fixtures/integration/labels/492-397-10.png b/test/fixtures/integration/labels/492-397-10.png new file mode 100644 index 0000000..49780cd Binary files /dev/null and b/test/fixtures/integration/labels/492-397-10.png differ diff --git a/test/fixtures/integration/labels/493-394-10.png b/test/fixtures/integration/labels/493-394-10.png new file mode 100644 index 0000000..8c0aedd Binary files /dev/null and b/test/fixtures/integration/labels/493-394-10.png differ diff --git a/test/fixtures/integration/labels/493-395-10.png b/test/fixtures/integration/labels/493-395-10.png new file mode 100644 index 0000000..bef89de Binary files /dev/null and b/test/fixtures/integration/labels/493-395-10.png differ diff --git a/test/fixtures/integration/labels/493-397-10.png b/test/fixtures/integration/labels/493-397-10.png new file mode 100644 index 0000000..a21236c Binary files /dev/null and b/test/fixtures/integration/labels/493-397-10.png differ diff --git a/test/fixtures/integration/labels/62386-48635-17.png b/test/fixtures/integration/labels/62386-48635-17.png new file mode 100644 index 0000000..e458c5c Binary files /dev/null and b/test/fixtures/integration/labels/62386-48635-17.png differ diff --git a/test/fixtures/integration/labels/62386-48636-17.png b/test/fixtures/integration/labels/62386-48636-17.png new file mode 100644 index 0000000..518ad7c Binary files /dev/null and b/test/fixtures/integration/labels/62386-48636-17.png differ diff --git a/test/fixtures/integration/labels/62386-48637-17.png b/test/fixtures/integration/labels/62386-48637-17.png new file mode 100644 index 0000000..a505cc6 Binary files /dev/null and b/test/fixtures/integration/labels/62386-48637-17.png differ diff --git a/test/fixtures/integration/labels/62387-48635-17.png b/test/fixtures/integration/labels/62387-48635-17.png new file mode 100644 index 0000000..bf531e2 Binary files /dev/null and b/test/fixtures/integration/labels/62387-48635-17.png differ diff --git a/test/fixtures/integration/labels/62387-48636-17.png b/test/fixtures/integration/labels/62387-48636-17.png new file mode 100644 index 0000000..bb6146a Binary files /dev/null and b/test/fixtures/integration/labels/62387-48636-17.png differ diff --git a/test/fixtures/integration/labels/62387-48637-17.png b/test/fixtures/integration/labels/62387-48637-17.png new file mode 100644 index 0000000..09cf9aa Binary files /dev/null and b/test/fixtures/integration/labels/62387-48637-17.png differ diff --git a/test/fixtures/integration/labels/62387-48638-17.png b/test/fixtures/integration/labels/62387-48638-17.png new file mode 100644 index 0000000..99b4e9f Binary files /dev/null and b/test/fixtures/integration/labels/62387-48638-17.png differ diff --git a/test/fixtures/integration/labels/62387-48639-17.png b/test/fixtures/integration/labels/62387-48639-17.png new file mode 100644 index 0000000..fcd5ef2 Binary files /dev/null and b/test/fixtures/integration/labels/62387-48639-17.png differ diff --git a/test/fixtures/integration/labels/62388-48635-17.png b/test/fixtures/integration/labels/62388-48635-17.png new file mode 100644 index 0000000..88c0f60 Binary files /dev/null and b/test/fixtures/integration/labels/62388-48635-17.png differ diff --git a/test/fixtures/integration/labels/62388-48636-17.png b/test/fixtures/integration/labels/62388-48636-17.png new file mode 100644 index 0000000..d275a7f Binary files /dev/null and b/test/fixtures/integration/labels/62388-48636-17.png differ diff --git a/test/fixtures/integration/labels/62388-48637-17.png b/test/fixtures/integration/labels/62388-48637-17.png new file mode 100644 index 0000000..d959b4f Binary files /dev/null and b/test/fixtures/integration/labels/62388-48637-17.png differ diff --git a/test/fixtures/integration/labels/62388-48638-17.png b/test/fixtures/integration/labels/62388-48638-17.png new file mode 100644 index 0000000..3354170 Binary files /dev/null and b/test/fixtures/integration/labels/62388-48638-17.png differ diff --git a/test/fixtures/integration/labels/62388-48639-17.png b/test/fixtures/integration/labels/62388-48639-17.png new file mode 100644 index 0000000..cb604cd Binary files /dev/null and b/test/fixtures/integration/labels/62388-48639-17.png differ diff --git a/test/fixtures/integration/labels/62389-48635-17.png b/test/fixtures/integration/labels/62389-48635-17.png new file mode 100644 index 0000000..70f4c50 Binary files /dev/null and b/test/fixtures/integration/labels/62389-48635-17.png differ diff --git a/test/fixtures/integration/labels/62389-48636-17.png b/test/fixtures/integration/labels/62389-48636-17.png new file mode 100644 index 0000000..f143e68 Binary files /dev/null and b/test/fixtures/integration/labels/62389-48636-17.png differ diff --git a/test/fixtures/integration/labels/62389-48637-17.png b/test/fixtures/integration/labels/62389-48637-17.png new file mode 100644 index 0000000..6ccc423 Binary files /dev/null and b/test/fixtures/integration/labels/62389-48637-17.png differ diff --git a/test/fixtures/integration/labels/62389-48638-17.png b/test/fixtures/integration/labels/62389-48638-17.png new file mode 100644 index 0000000..b40d74a Binary files /dev/null and b/test/fixtures/integration/labels/62389-48638-17.png differ diff --git a/test/fixtures/integration/labels/62389-48639-17.png b/test/fixtures/integration/labels/62389-48639-17.png new file mode 100644 index 0000000..f458ce8 Binary files /dev/null and b/test/fixtures/integration/labels/62389-48639-17.png differ diff --git a/test/fixtures/integration/labels/62831-50912-17.png b/test/fixtures/integration/labels/62831-50912-17.png new file mode 100644 index 0000000..b328d52 Binary files /dev/null and b/test/fixtures/integration/labels/62831-50912-17.png differ diff --git a/test/fixtures/integration/labels/62831-50913-17.png b/test/fixtures/integration/labels/62831-50913-17.png new file mode 100644 index 0000000..978da20 Binary files /dev/null and b/test/fixtures/integration/labels/62831-50913-17.png differ diff --git a/test/fixtures/integration/labels/62831-50914-17.png b/test/fixtures/integration/labels/62831-50914-17.png new file mode 100644 index 0000000..b1c068f Binary files /dev/null and b/test/fixtures/integration/labels/62831-50914-17.png differ diff --git a/test/fixtures/integration/labels/62831-50915-17.png b/test/fixtures/integration/labels/62831-50915-17.png new file mode 100644 index 0000000..66a5353 Binary files /dev/null and b/test/fixtures/integration/labels/62831-50915-17.png differ diff --git a/test/fixtures/integration/labels/62831-50916-17.png b/test/fixtures/integration/labels/62831-50916-17.png new file mode 100644 index 0000000..9bd48d5 Binary files /dev/null and b/test/fixtures/integration/labels/62831-50916-17.png differ diff --git a/test/fixtures/integration/labels/62831-50917-17.png b/test/fixtures/integration/labels/62831-50917-17.png new file mode 100644 index 0000000..6138d3f Binary files /dev/null and b/test/fixtures/integration/labels/62831-50917-17.png differ diff --git a/test/fixtures/integration/labels/62831-50919-17.png b/test/fixtures/integration/labels/62831-50919-17.png new file mode 100644 index 0000000..2c47b1a Binary files /dev/null and b/test/fixtures/integration/labels/62831-50919-17.png differ diff --git a/test/fixtures/integration/labels/62831-50920-17.png b/test/fixtures/integration/labels/62831-50920-17.png new file mode 100644 index 0000000..7ee435a Binary files /dev/null and b/test/fixtures/integration/labels/62831-50920-17.png differ diff --git a/test/fixtures/integration/labels/62831-50922-17.png b/test/fixtures/integration/labels/62831-50922-17.png new file mode 100644 index 0000000..ad6274b Binary files /dev/null and b/test/fixtures/integration/labels/62831-50922-17.png differ diff --git a/test/fixtures/integration/labels/62831-50923-17.png b/test/fixtures/integration/labels/62831-50923-17.png new file mode 100644 index 0000000..10425a5 Binary files /dev/null and b/test/fixtures/integration/labels/62831-50923-17.png differ diff --git a/test/fixtures/integration/labels/62831-50924-17.png b/test/fixtures/integration/labels/62831-50924-17.png new file mode 100644 index 0000000..2e20c65 Binary files /dev/null and b/test/fixtures/integration/labels/62831-50924-17.png differ diff --git a/test/fixtures/integration/labels/62831-50925-17.png b/test/fixtures/integration/labels/62831-50925-17.png new file mode 100644 index 0000000..607f47c Binary files /dev/null and b/test/fixtures/integration/labels/62831-50925-17.png differ diff --git a/test/fixtures/integration/labels/62831-50926-17.png b/test/fixtures/integration/labels/62831-50926-17.png new file mode 100644 index 0000000..79d55c6 Binary files /dev/null and b/test/fixtures/integration/labels/62831-50926-17.png differ diff --git a/test/fixtures/integration/labels/62831-50927-17.png b/test/fixtures/integration/labels/62831-50927-17.png new file mode 100644 index 0000000..0de0387 Binary files /dev/null and b/test/fixtures/integration/labels/62831-50927-17.png differ diff --git a/test/fixtures/integration/labels/62831-50928-17.png b/test/fixtures/integration/labels/62831-50928-17.png new file mode 100644 index 0000000..94c6056 Binary files /dev/null and b/test/fixtures/integration/labels/62831-50928-17.png differ diff --git a/test/fixtures/integration/labels/62831-50929-17.png b/test/fixtures/integration/labels/62831-50929-17.png new file mode 100644 index 0000000..f416788 Binary files /dev/null and b/test/fixtures/integration/labels/62831-50929-17.png differ diff --git a/test/fixtures/integration/labels/62831-50930-17.png b/test/fixtures/integration/labels/62831-50930-17.png new file mode 100644 index 0000000..5125711 Binary files /dev/null and b/test/fixtures/integration/labels/62831-50930-17.png differ diff --git a/test/fixtures/integration/labels/62831-50931-17.png b/test/fixtures/integration/labels/62831-50931-17.png new file mode 100644 index 0000000..5c59d8d Binary files /dev/null and b/test/fixtures/integration/labels/62831-50931-17.png differ diff --git a/test/fixtures/integration/labels/62832-50912-17.png b/test/fixtures/integration/labels/62832-50912-17.png new file mode 100644 index 0000000..fa258ed Binary files /dev/null and b/test/fixtures/integration/labels/62832-50912-17.png differ diff --git a/test/fixtures/integration/labels/62832-50913-17.png b/test/fixtures/integration/labels/62832-50913-17.png new file mode 100644 index 0000000..b418cf1 Binary files /dev/null and b/test/fixtures/integration/labels/62832-50913-17.png differ diff --git a/test/fixtures/integration/labels/62832-50914-17.png b/test/fixtures/integration/labels/62832-50914-17.png new file mode 100644 index 0000000..0df5187 Binary files /dev/null and b/test/fixtures/integration/labels/62832-50914-17.png differ diff --git a/test/fixtures/integration/labels/62832-50915-17.png b/test/fixtures/integration/labels/62832-50915-17.png new file mode 100644 index 0000000..a61c6cf Binary files /dev/null and b/test/fixtures/integration/labels/62832-50915-17.png differ diff --git a/test/fixtures/integration/labels/62832-50917-17.png b/test/fixtures/integration/labels/62832-50917-17.png new file mode 100644 index 0000000..8ee0028 Binary files /dev/null and b/test/fixtures/integration/labels/62832-50917-17.png differ diff --git a/test/fixtures/integration/labels/62832-50918-17.png b/test/fixtures/integration/labels/62832-50918-17.png new file mode 100644 index 0000000..f6a6624 Binary files /dev/null and b/test/fixtures/integration/labels/62832-50918-17.png differ diff --git a/test/fixtures/integration/labels/62832-50926-17.png b/test/fixtures/integration/labels/62832-50926-17.png new file mode 100644 index 0000000..5e6a5b4 Binary files /dev/null and b/test/fixtures/integration/labels/62832-50926-17.png differ diff --git a/test/fixtures/integration/labels/62832-50927-17.png b/test/fixtures/integration/labels/62832-50927-17.png new file mode 100644 index 0000000..e133992 Binary files /dev/null and b/test/fixtures/integration/labels/62832-50927-17.png differ diff --git a/test/fixtures/integration/labels/62832-50928-17.png b/test/fixtures/integration/labels/62832-50928-17.png new file mode 100644 index 0000000..462db07 Binary files /dev/null and b/test/fixtures/integration/labels/62832-50928-17.png differ diff --git a/test/fixtures/integration/labels/62832-50929-17.png b/test/fixtures/integration/labels/62832-50929-17.png new file mode 100644 index 0000000..28883ed Binary files /dev/null and b/test/fixtures/integration/labels/62832-50929-17.png differ diff --git a/test/fixtures/integration/labels/62832-50930-17.png b/test/fixtures/integration/labels/62832-50930-17.png new file mode 100644 index 0000000..7f53c9d Binary files /dev/null and b/test/fixtures/integration/labels/62832-50930-17.png differ diff --git a/test/fixtures/integration/labels/62832-50931-17.png b/test/fixtures/integration/labels/62832-50931-17.png new file mode 100644 index 0000000..2383ec2 Binary files /dev/null and b/test/fixtures/integration/labels/62832-50931-17.png differ diff --git a/test/fixtures/integration/labels/62833-50912-17.png b/test/fixtures/integration/labels/62833-50912-17.png new file mode 100644 index 0000000..7974d13 Binary files /dev/null and b/test/fixtures/integration/labels/62833-50912-17.png differ diff --git a/test/fixtures/integration/labels/62833-50913-17.png b/test/fixtures/integration/labels/62833-50913-17.png new file mode 100644 index 0000000..af92417 Binary files /dev/null and b/test/fixtures/integration/labels/62833-50913-17.png differ diff --git a/test/fixtures/integration/labels/62833-50914-17.png b/test/fixtures/integration/labels/62833-50914-17.png new file mode 100644 index 0000000..7fa0a9e Binary files /dev/null and b/test/fixtures/integration/labels/62833-50914-17.png differ diff --git a/test/fixtures/integration/labels/62833-50915-17.png b/test/fixtures/integration/labels/62833-50915-17.png new file mode 100644 index 0000000..58341e1 Binary files /dev/null and b/test/fixtures/integration/labels/62833-50915-17.png differ diff --git a/test/fixtures/integration/labels/62833-50916-17.png b/test/fixtures/integration/labels/62833-50916-17.png new file mode 100644 index 0000000..78764aa Binary files /dev/null and b/test/fixtures/integration/labels/62833-50916-17.png differ diff --git a/test/fixtures/integration/labels/62833-50925-17.png b/test/fixtures/integration/labels/62833-50925-17.png new file mode 100644 index 0000000..5b8924e Binary files /dev/null and b/test/fixtures/integration/labels/62833-50925-17.png differ diff --git a/test/fixtures/integration/labels/62833-50926-17.png b/test/fixtures/integration/labels/62833-50926-17.png new file mode 100644 index 0000000..cac57f0 Binary files /dev/null and b/test/fixtures/integration/labels/62833-50926-17.png differ diff --git a/test/fixtures/integration/labels/62833-50927-17.png b/test/fixtures/integration/labels/62833-50927-17.png new file mode 100644 index 0000000..b52a827 Binary files /dev/null and b/test/fixtures/integration/labels/62833-50927-17.png differ diff --git a/test/fixtures/integration/labels/62833-50928-17.png b/test/fixtures/integration/labels/62833-50928-17.png new file mode 100644 index 0000000..ef47e25 Binary files /dev/null and b/test/fixtures/integration/labels/62833-50928-17.png differ diff --git a/test/fixtures/integration/labels/62833-50929-17.png b/test/fixtures/integration/labels/62833-50929-17.png new file mode 100644 index 0000000..29b1ed5 Binary files /dev/null and b/test/fixtures/integration/labels/62833-50929-17.png differ diff --git a/test/fixtures/integration/labels/62833-50930-17.png b/test/fixtures/integration/labels/62833-50930-17.png new file mode 100644 index 0000000..82024ac Binary files /dev/null and b/test/fixtures/integration/labels/62833-50930-17.png differ diff --git a/test/fixtures/integration/labels/62833-50931-17.png b/test/fixtures/integration/labels/62833-50931-17.png new file mode 100644 index 0000000..79ed76a Binary files /dev/null and b/test/fixtures/integration/labels/62833-50931-17.png differ diff --git a/test/fixtures/integration/labels/62834-50912-17.png b/test/fixtures/integration/labels/62834-50912-17.png new file mode 100644 index 0000000..a5bdbaf Binary files /dev/null and b/test/fixtures/integration/labels/62834-50912-17.png differ diff --git a/test/fixtures/integration/labels/62834-50913-17.png b/test/fixtures/integration/labels/62834-50913-17.png new file mode 100644 index 0000000..694bbab Binary files /dev/null and b/test/fixtures/integration/labels/62834-50913-17.png differ diff --git a/test/fixtures/integration/labels/62834-50916-17.png b/test/fixtures/integration/labels/62834-50916-17.png new file mode 100644 index 0000000..d023f1a Binary files /dev/null and b/test/fixtures/integration/labels/62834-50916-17.png differ diff --git a/test/fixtures/integration/labels/62834-50922-17.png b/test/fixtures/integration/labels/62834-50922-17.png new file mode 100644 index 0000000..0e1f6ee Binary files /dev/null and b/test/fixtures/integration/labels/62834-50922-17.png differ diff --git a/test/fixtures/integration/labels/62834-50923-17.png b/test/fixtures/integration/labels/62834-50923-17.png new file mode 100644 index 0000000..f93d9eb Binary files /dev/null and b/test/fixtures/integration/labels/62834-50923-17.png differ diff --git a/test/fixtures/integration/labels/62834-50924-17.png b/test/fixtures/integration/labels/62834-50924-17.png new file mode 100644 index 0000000..b573845 Binary files /dev/null and b/test/fixtures/integration/labels/62834-50924-17.png differ diff --git a/test/fixtures/integration/labels/62834-50925-17.png b/test/fixtures/integration/labels/62834-50925-17.png new file mode 100644 index 0000000..8910296 Binary files /dev/null and b/test/fixtures/integration/labels/62834-50925-17.png differ diff --git a/test/fixtures/integration/labels/62834-50926-17.png b/test/fixtures/integration/labels/62834-50926-17.png new file mode 100644 index 0000000..71e8a59 Binary files /dev/null and b/test/fixtures/integration/labels/62834-50926-17.png differ diff --git a/test/fixtures/integration/labels/62834-50927-17.png b/test/fixtures/integration/labels/62834-50927-17.png new file mode 100644 index 0000000..411b56d Binary files /dev/null and b/test/fixtures/integration/labels/62834-50927-17.png differ diff --git a/test/fixtures/integration/labels/62834-50928-17.png b/test/fixtures/integration/labels/62834-50928-17.png new file mode 100644 index 0000000..72ac6ae Binary files /dev/null and b/test/fixtures/integration/labels/62834-50928-17.png differ diff --git a/test/fixtures/integration/labels/62834-50929-17.png b/test/fixtures/integration/labels/62834-50929-17.png new file mode 100644 index 0000000..b703040 Binary files /dev/null and b/test/fixtures/integration/labels/62834-50929-17.png differ diff --git a/test/fixtures/integration/labels/62834-50930-17.png b/test/fixtures/integration/labels/62834-50930-17.png new file mode 100644 index 0000000..d761ef7 Binary files /dev/null and b/test/fixtures/integration/labels/62834-50930-17.png differ diff --git a/test/fixtures/integration/labels/62834-50931-17.png b/test/fixtures/integration/labels/62834-50931-17.png new file mode 100644 index 0000000..720d656 Binary files /dev/null and b/test/fixtures/integration/labels/62834-50931-17.png differ diff --git a/test/fixtures/integration/labels/62835-50912-17.png b/test/fixtures/integration/labels/62835-50912-17.png new file mode 100644 index 0000000..bbe3c59 Binary files /dev/null and b/test/fixtures/integration/labels/62835-50912-17.png differ diff --git a/test/fixtures/integration/labels/62835-50913-17.png b/test/fixtures/integration/labels/62835-50913-17.png new file mode 100644 index 0000000..50ca24b Binary files /dev/null and b/test/fixtures/integration/labels/62835-50913-17.png differ diff --git a/test/fixtures/integration/labels/62835-50914-17.png b/test/fixtures/integration/labels/62835-50914-17.png new file mode 100644 index 0000000..c143b8c Binary files /dev/null and b/test/fixtures/integration/labels/62835-50914-17.png differ diff --git a/test/fixtures/integration/labels/62835-50916-17.png b/test/fixtures/integration/labels/62835-50916-17.png new file mode 100644 index 0000000..84cd4fb Binary files /dev/null and b/test/fixtures/integration/labels/62835-50916-17.png differ diff --git a/test/fixtures/integration/labels/62835-50917-17.png b/test/fixtures/integration/labels/62835-50917-17.png new file mode 100644 index 0000000..014d29f Binary files /dev/null and b/test/fixtures/integration/labels/62835-50917-17.png differ diff --git a/test/fixtures/integration/labels/62835-50918-17.png b/test/fixtures/integration/labels/62835-50918-17.png new file mode 100644 index 0000000..929eb25 Binary files /dev/null and b/test/fixtures/integration/labels/62835-50918-17.png differ diff --git a/test/fixtures/integration/labels/62835-50919-17.png b/test/fixtures/integration/labels/62835-50919-17.png new file mode 100644 index 0000000..d8db53a Binary files /dev/null and b/test/fixtures/integration/labels/62835-50919-17.png differ diff --git a/test/fixtures/integration/labels/62835-50922-17.png b/test/fixtures/integration/labels/62835-50922-17.png new file mode 100644 index 0000000..7bf35a5 Binary files /dev/null and b/test/fixtures/integration/labels/62835-50922-17.png differ diff --git a/test/fixtures/integration/labels/62835-50923-17.png b/test/fixtures/integration/labels/62835-50923-17.png new file mode 100644 index 0000000..830a3ce Binary files /dev/null and b/test/fixtures/integration/labels/62835-50923-17.png differ diff --git a/test/fixtures/integration/labels/62835-50924-17.png b/test/fixtures/integration/labels/62835-50924-17.png new file mode 100644 index 0000000..0219b89 Binary files /dev/null and b/test/fixtures/integration/labels/62835-50924-17.png differ diff --git a/test/fixtures/integration/labels/62835-50925-17.png b/test/fixtures/integration/labels/62835-50925-17.png new file mode 100644 index 0000000..8a122da Binary files /dev/null and b/test/fixtures/integration/labels/62835-50925-17.png differ diff --git a/test/fixtures/integration/labels/62835-50926-17.png b/test/fixtures/integration/labels/62835-50926-17.png new file mode 100644 index 0000000..6eb1353 Binary files /dev/null and b/test/fixtures/integration/labels/62835-50926-17.png differ diff --git a/test/fixtures/integration/labels/62835-50927-17.png b/test/fixtures/integration/labels/62835-50927-17.png new file mode 100644 index 0000000..dd9afe2 Binary files /dev/null and b/test/fixtures/integration/labels/62835-50927-17.png differ diff --git a/test/fixtures/integration/labels/62835-50928-17.png b/test/fixtures/integration/labels/62835-50928-17.png new file mode 100644 index 0000000..5518283 Binary files /dev/null and b/test/fixtures/integration/labels/62835-50928-17.png differ diff --git a/test/fixtures/integration/labels/62835-50929-17.png b/test/fixtures/integration/labels/62835-50929-17.png new file mode 100644 index 0000000..84b7f55 Binary files /dev/null and b/test/fixtures/integration/labels/62835-50929-17.png differ diff --git a/test/fixtures/integration/labels/62835-50930-17.png b/test/fixtures/integration/labels/62835-50930-17.png new file mode 100644 index 0000000..47bf7ab Binary files /dev/null and b/test/fixtures/integration/labels/62835-50930-17.png differ diff --git a/test/fixtures/integration/labels/62835-50931-17.png b/test/fixtures/integration/labels/62835-50931-17.png new file mode 100644 index 0000000..906bf02 Binary files /dev/null and b/test/fixtures/integration/labels/62835-50931-17.png differ diff --git a/test/fixtures/integration/labels/62836-50923-17.png b/test/fixtures/integration/labels/62836-50923-17.png new file mode 100644 index 0000000..b404eef Binary files /dev/null and b/test/fixtures/integration/labels/62836-50923-17.png differ diff --git a/test/fixtures/integration/labels/62836-50924-17.png b/test/fixtures/integration/labels/62836-50924-17.png new file mode 100644 index 0000000..7dbe998 Binary files /dev/null and b/test/fixtures/integration/labels/62836-50924-17.png differ diff --git a/test/fixtures/integration/labels/62836-50925-17.png b/test/fixtures/integration/labels/62836-50925-17.png new file mode 100644 index 0000000..db8c953 Binary files /dev/null and b/test/fixtures/integration/labels/62836-50925-17.png differ diff --git a/test/fixtures/integration/labels/62836-50926-17.png b/test/fixtures/integration/labels/62836-50926-17.png new file mode 100644 index 0000000..428e455 Binary files /dev/null and b/test/fixtures/integration/labels/62836-50926-17.png differ diff --git a/test/fixtures/integration/labels/62836-50927-17.png b/test/fixtures/integration/labels/62836-50927-17.png new file mode 100644 index 0000000..f1f4575 Binary files /dev/null and b/test/fixtures/integration/labels/62836-50927-17.png differ diff --git a/test/fixtures/integration/labels/62836-50928-17.png b/test/fixtures/integration/labels/62836-50928-17.png new file mode 100644 index 0000000..a87b0ce Binary files /dev/null and b/test/fixtures/integration/labels/62836-50928-17.png differ diff --git a/test/fixtures/integration/labels/62836-50929-17.png b/test/fixtures/integration/labels/62836-50929-17.png new file mode 100644 index 0000000..a5d3726 Binary files /dev/null and b/test/fixtures/integration/labels/62836-50929-17.png differ diff --git a/test/fixtures/integration/labels/62836-50930-17.png b/test/fixtures/integration/labels/62836-50930-17.png new file mode 100644 index 0000000..12eb8ac Binary files /dev/null and b/test/fixtures/integration/labels/62836-50930-17.png differ diff --git a/test/fixtures/integration/labels/62836-50931-17.png b/test/fixtures/integration/labels/62836-50931-17.png new file mode 100644 index 0000000..c4fb38d Binary files /dev/null and b/test/fixtures/integration/labels/62836-50931-17.png differ diff --git a/test/fixtures/integration/labels/62837-50919-17.png b/test/fixtures/integration/labels/62837-50919-17.png new file mode 100644 index 0000000..878500f Binary files /dev/null and b/test/fixtures/integration/labels/62837-50919-17.png differ diff --git a/test/fixtures/integration/labels/62837-50929-17.png b/test/fixtures/integration/labels/62837-50929-17.png new file mode 100644 index 0000000..6d1cc41 Binary files /dev/null and b/test/fixtures/integration/labels/62837-50929-17.png differ diff --git a/test/fixtures/integration/labels/62837-50930-17.png b/test/fixtures/integration/labels/62837-50930-17.png new file mode 100644 index 0000000..d34d486 Binary files /dev/null and b/test/fixtures/integration/labels/62837-50930-17.png differ diff --git a/test/fixtures/integration/labels/62837-50931-17.png b/test/fixtures/integration/labels/62837-50931-17.png new file mode 100644 index 0000000..9ba84e5 Binary files /dev/null and b/test/fixtures/integration/labels/62837-50931-17.png differ diff --git a/test/fixtures/integration/labels/62838-50912-17.png b/test/fixtures/integration/labels/62838-50912-17.png new file mode 100644 index 0000000..b62e5f1 Binary files /dev/null and b/test/fixtures/integration/labels/62838-50912-17.png differ diff --git a/test/fixtures/integration/labels/62838-50913-17.png b/test/fixtures/integration/labels/62838-50913-17.png new file mode 100644 index 0000000..b5c66e4 Binary files /dev/null and b/test/fixtures/integration/labels/62838-50913-17.png differ diff --git a/test/fixtures/integration/labels/62838-50914-17.png b/test/fixtures/integration/labels/62838-50914-17.png new file mode 100644 index 0000000..40e0e94 Binary files /dev/null and b/test/fixtures/integration/labels/62838-50914-17.png differ diff --git a/test/fixtures/integration/labels/62838-50915-17.png b/test/fixtures/integration/labels/62838-50915-17.png new file mode 100644 index 0000000..2ea278c Binary files /dev/null and b/test/fixtures/integration/labels/62838-50915-17.png differ diff --git a/test/fixtures/integration/labels/62838-50916-17.png b/test/fixtures/integration/labels/62838-50916-17.png new file mode 100644 index 0000000..5383ad5 Binary files /dev/null and b/test/fixtures/integration/labels/62838-50916-17.png differ diff --git a/test/fixtures/integration/labels/62838-50917-17.png b/test/fixtures/integration/labels/62838-50917-17.png new file mode 100644 index 0000000..9908ea7 Binary files /dev/null and b/test/fixtures/integration/labels/62838-50917-17.png differ diff --git a/test/fixtures/integration/labels/62838-50918-17.png b/test/fixtures/integration/labels/62838-50918-17.png new file mode 100644 index 0000000..5efc42a Binary files /dev/null and b/test/fixtures/integration/labels/62838-50918-17.png differ diff --git a/test/fixtures/integration/labels/62838-50919-17.png b/test/fixtures/integration/labels/62838-50919-17.png new file mode 100644 index 0000000..5dffa6a Binary files /dev/null and b/test/fixtures/integration/labels/62838-50919-17.png differ diff --git a/test/fixtures/integration/labels/62838-50920-17.png b/test/fixtures/integration/labels/62838-50920-17.png new file mode 100644 index 0000000..612ae20 Binary files /dev/null and b/test/fixtures/integration/labels/62838-50920-17.png differ diff --git a/test/fixtures/integration/labels/62838-50921-17.png b/test/fixtures/integration/labels/62838-50921-17.png new file mode 100644 index 0000000..d49a14c Binary files /dev/null and b/test/fixtures/integration/labels/62838-50921-17.png differ diff --git a/test/fixtures/integration/labels/62839-50912-17.png b/test/fixtures/integration/labels/62839-50912-17.png new file mode 100644 index 0000000..752dab0 Binary files /dev/null and b/test/fixtures/integration/labels/62839-50912-17.png differ diff --git a/test/fixtures/integration/labels/62839-50913-17.png b/test/fixtures/integration/labels/62839-50913-17.png new file mode 100644 index 0000000..00af365 Binary files /dev/null and b/test/fixtures/integration/labels/62839-50913-17.png differ diff --git a/test/fixtures/integration/labels/62839-50914-17.png b/test/fixtures/integration/labels/62839-50914-17.png new file mode 100644 index 0000000..eb13587 Binary files /dev/null and b/test/fixtures/integration/labels/62839-50914-17.png differ diff --git a/test/fixtures/integration/labels/62839-50915-17.png b/test/fixtures/integration/labels/62839-50915-17.png new file mode 100644 index 0000000..d7bf914 Binary files /dev/null and b/test/fixtures/integration/labels/62839-50915-17.png differ diff --git a/test/fixtures/integration/labels/62839-50916-17.png b/test/fixtures/integration/labels/62839-50916-17.png new file mode 100644 index 0000000..dbb746d Binary files /dev/null and b/test/fixtures/integration/labels/62839-50916-17.png differ diff --git a/test/fixtures/integration/labels/62839-50917-17.png b/test/fixtures/integration/labels/62839-50917-17.png new file mode 100644 index 0000000..d88b3ce Binary files /dev/null and b/test/fixtures/integration/labels/62839-50917-17.png differ diff --git a/test/fixtures/integration/labels/62839-50918-17.png b/test/fixtures/integration/labels/62839-50918-17.png new file mode 100644 index 0000000..97ac9d9 Binary files /dev/null and b/test/fixtures/integration/labels/62839-50918-17.png differ diff --git a/test/fixtures/integration/labels/62839-50919-17.png b/test/fixtures/integration/labels/62839-50919-17.png new file mode 100644 index 0000000..98a9b1d Binary files /dev/null and b/test/fixtures/integration/labels/62839-50919-17.png differ diff --git a/test/fixtures/integration/labels/62839-50920-17.png b/test/fixtures/integration/labels/62839-50920-17.png new file mode 100644 index 0000000..1a2addf Binary files /dev/null and b/test/fixtures/integration/labels/62839-50920-17.png differ diff --git a/test/fixtures/integration/labels/62839-50921-17.png b/test/fixtures/integration/labels/62839-50921-17.png new file mode 100644 index 0000000..a761357 Binary files /dev/null and b/test/fixtures/integration/labels/62839-50921-17.png differ diff --git a/test/fixtures/integration/labels/62839-50922-17.png b/test/fixtures/integration/labels/62839-50922-17.png new file mode 100644 index 0000000..2509a48 Binary files /dev/null and b/test/fixtures/integration/labels/62839-50922-17.png differ diff --git a/test/fixtures/integration/labels/62839-50923-17.png b/test/fixtures/integration/labels/62839-50923-17.png new file mode 100644 index 0000000..37daa8a Binary files /dev/null and b/test/fixtures/integration/labels/62839-50923-17.png differ diff --git a/test/fixtures/integration/labels/62839-50925-17.png b/test/fixtures/integration/labels/62839-50925-17.png new file mode 100644 index 0000000..2730be1 Binary files /dev/null and b/test/fixtures/integration/labels/62839-50925-17.png differ diff --git a/test/fixtures/integration/labels/62839-50926-17.png b/test/fixtures/integration/labels/62839-50926-17.png new file mode 100644 index 0000000..89dc643 Binary files /dev/null and b/test/fixtures/integration/labels/62839-50926-17.png differ diff --git a/test/fixtures/integration/labels/62839-50927-17.png b/test/fixtures/integration/labels/62839-50927-17.png new file mode 100644 index 0000000..aa9f97c Binary files /dev/null and b/test/fixtures/integration/labels/62839-50927-17.png differ diff --git a/test/fixtures/integration/labels/62840-50912-17.png b/test/fixtures/integration/labels/62840-50912-17.png new file mode 100644 index 0000000..465a080 Binary files /dev/null and b/test/fixtures/integration/labels/62840-50912-17.png differ diff --git a/test/fixtures/integration/labels/62840-50913-17.png b/test/fixtures/integration/labels/62840-50913-17.png new file mode 100644 index 0000000..e0a28e8 Binary files /dev/null and b/test/fixtures/integration/labels/62840-50913-17.png differ diff --git a/test/fixtures/integration/labels/62840-50914-17.png b/test/fixtures/integration/labels/62840-50914-17.png new file mode 100644 index 0000000..9e7eb86 Binary files /dev/null and b/test/fixtures/integration/labels/62840-50914-17.png differ diff --git a/test/fixtures/integration/labels/62840-50915-17.png b/test/fixtures/integration/labels/62840-50915-17.png new file mode 100644 index 0000000..6147d6f Binary files /dev/null and b/test/fixtures/integration/labels/62840-50915-17.png differ diff --git a/test/fixtures/integration/labels/62840-50916-17.png b/test/fixtures/integration/labels/62840-50916-17.png new file mode 100644 index 0000000..09e4260 Binary files /dev/null and b/test/fixtures/integration/labels/62840-50916-17.png differ diff --git a/test/fixtures/integration/labels/62840-50917-17.png b/test/fixtures/integration/labels/62840-50917-17.png new file mode 100644 index 0000000..0a9fa6e Binary files /dev/null and b/test/fixtures/integration/labels/62840-50917-17.png differ diff --git a/test/fixtures/integration/labels/62840-50918-17.png b/test/fixtures/integration/labels/62840-50918-17.png new file mode 100644 index 0000000..3a735be Binary files /dev/null and b/test/fixtures/integration/labels/62840-50918-17.png differ diff --git a/test/fixtures/integration/labels/62840-50919-17.png b/test/fixtures/integration/labels/62840-50919-17.png new file mode 100644 index 0000000..492117a Binary files /dev/null and b/test/fixtures/integration/labels/62840-50919-17.png differ diff --git a/test/fixtures/integration/labels/62840-50920-17.png b/test/fixtures/integration/labels/62840-50920-17.png new file mode 100644 index 0000000..f5473b4 Binary files /dev/null and b/test/fixtures/integration/labels/62840-50920-17.png differ diff --git a/test/fixtures/integration/labels/62840-50921-17.png b/test/fixtures/integration/labels/62840-50921-17.png new file mode 100644 index 0000000..064a43e Binary files /dev/null and b/test/fixtures/integration/labels/62840-50921-17.png differ diff --git a/test/fixtures/integration/labels/62840-50922-17.png b/test/fixtures/integration/labels/62840-50922-17.png new file mode 100644 index 0000000..4fab98c Binary files /dev/null and b/test/fixtures/integration/labels/62840-50922-17.png differ diff --git a/test/fixtures/integration/labels/62840-50923-17.png b/test/fixtures/integration/labels/62840-50923-17.png new file mode 100644 index 0000000..c21f02f Binary files /dev/null and b/test/fixtures/integration/labels/62840-50923-17.png differ diff --git a/test/fixtures/integration/labels/62840-50924-17.png b/test/fixtures/integration/labels/62840-50924-17.png new file mode 100644 index 0000000..df2f1ea Binary files /dev/null and b/test/fixtures/integration/labels/62840-50924-17.png differ diff --git a/test/fixtures/integration/labels/62840-50925-17.png b/test/fixtures/integration/labels/62840-50925-17.png new file mode 100644 index 0000000..28386fb Binary files /dev/null and b/test/fixtures/integration/labels/62840-50925-17.png differ diff --git a/test/fixtures/integration/labels/62840-50926-17.png b/test/fixtures/integration/labels/62840-50926-17.png new file mode 100644 index 0000000..dad5b06 Binary files /dev/null and b/test/fixtures/integration/labels/62840-50926-17.png differ diff --git a/test/fixtures/integration/labels/62840-50927-17.png b/test/fixtures/integration/labels/62840-50927-17.png new file mode 100644 index 0000000..6024f04 Binary files /dev/null and b/test/fixtures/integration/labels/62840-50927-17.png differ diff --git a/test/fixtures/integration/labels/62840-50928-17.png b/test/fixtures/integration/labels/62840-50928-17.png new file mode 100644 index 0000000..af0f1e6 Binary files /dev/null and b/test/fixtures/integration/labels/62840-50928-17.png differ diff --git a/test/fixtures/integration/labels/62841-50912-17.png b/test/fixtures/integration/labels/62841-50912-17.png new file mode 100644 index 0000000..cfd44b6 Binary files /dev/null and b/test/fixtures/integration/labels/62841-50912-17.png differ diff --git a/test/fixtures/integration/labels/62841-50913-17.png b/test/fixtures/integration/labels/62841-50913-17.png new file mode 100644 index 0000000..810c934 Binary files /dev/null and b/test/fixtures/integration/labels/62841-50913-17.png differ diff --git a/test/fixtures/integration/labels/62841-50914-17.png b/test/fixtures/integration/labels/62841-50914-17.png new file mode 100644 index 0000000..1b43cce Binary files /dev/null and b/test/fixtures/integration/labels/62841-50914-17.png differ diff --git a/test/fixtures/integration/labels/62841-50915-17.png b/test/fixtures/integration/labels/62841-50915-17.png new file mode 100644 index 0000000..2d0d1d9 Binary files /dev/null and b/test/fixtures/integration/labels/62841-50915-17.png differ diff --git a/test/fixtures/integration/labels/62841-50916-17.png b/test/fixtures/integration/labels/62841-50916-17.png new file mode 100644 index 0000000..794b212 Binary files /dev/null and b/test/fixtures/integration/labels/62841-50916-17.png differ diff --git a/test/fixtures/integration/labels/62841-50917-17.png b/test/fixtures/integration/labels/62841-50917-17.png new file mode 100644 index 0000000..58fc7b4 Binary files /dev/null and b/test/fixtures/integration/labels/62841-50917-17.png differ diff --git a/test/fixtures/integration/labels/62841-50918-17.png b/test/fixtures/integration/labels/62841-50918-17.png new file mode 100644 index 0000000..c9e56bc Binary files /dev/null and b/test/fixtures/integration/labels/62841-50918-17.png differ diff --git a/test/fixtures/integration/labels/62841-50919-17.png b/test/fixtures/integration/labels/62841-50919-17.png new file mode 100644 index 0000000..2e2794f Binary files /dev/null and b/test/fixtures/integration/labels/62841-50919-17.png differ diff --git a/test/fixtures/integration/labels/62841-50920-17.png b/test/fixtures/integration/labels/62841-50920-17.png new file mode 100644 index 0000000..4c9ca95 Binary files /dev/null and b/test/fixtures/integration/labels/62841-50920-17.png differ diff --git a/test/fixtures/integration/labels/62841-50921-17.png b/test/fixtures/integration/labels/62841-50921-17.png new file mode 100644 index 0000000..58211bc Binary files /dev/null and b/test/fixtures/integration/labels/62841-50921-17.png differ diff --git a/test/fixtures/integration/labels/62841-50922-17.png b/test/fixtures/integration/labels/62841-50922-17.png new file mode 100644 index 0000000..802df2f Binary files /dev/null and b/test/fixtures/integration/labels/62841-50922-17.png differ diff --git a/test/fixtures/integration/labels/62841-50923-17.png b/test/fixtures/integration/labels/62841-50923-17.png new file mode 100644 index 0000000..206c326 Binary files /dev/null and b/test/fixtures/integration/labels/62841-50923-17.png differ diff --git a/test/fixtures/integration/labels/62841-50924-17.png b/test/fixtures/integration/labels/62841-50924-17.png new file mode 100644 index 0000000..b36c6b5 Binary files /dev/null and b/test/fixtures/integration/labels/62841-50924-17.png differ diff --git a/test/fixtures/integration/labels/62841-50925-17.png b/test/fixtures/integration/labels/62841-50925-17.png new file mode 100644 index 0000000..8f9a6fb Binary files /dev/null and b/test/fixtures/integration/labels/62841-50925-17.png differ diff --git a/test/fixtures/integration/labels/62841-50926-17.png b/test/fixtures/integration/labels/62841-50926-17.png new file mode 100644 index 0000000..ac90ee1 Binary files /dev/null and b/test/fixtures/integration/labels/62841-50926-17.png differ diff --git a/test/fixtures/integration/labels/62841-50927-17.png b/test/fixtures/integration/labels/62841-50927-17.png new file mode 100644 index 0000000..46f5342 Binary files /dev/null and b/test/fixtures/integration/labels/62841-50927-17.png differ diff --git a/test/fixtures/integration/labels/62841-50928-17.png b/test/fixtures/integration/labels/62841-50928-17.png new file mode 100644 index 0000000..e0abba8 Binary files /dev/null and b/test/fixtures/integration/labels/62841-50928-17.png differ diff --git a/test/fixtures/integration/labels/62842-50912-17.png b/test/fixtures/integration/labels/62842-50912-17.png new file mode 100644 index 0000000..09bc3a8 Binary files /dev/null and b/test/fixtures/integration/labels/62842-50912-17.png differ diff --git a/test/fixtures/integration/labels/62842-50913-17.png b/test/fixtures/integration/labels/62842-50913-17.png new file mode 100644 index 0000000..42499c6 Binary files /dev/null and b/test/fixtures/integration/labels/62842-50913-17.png differ diff --git a/test/fixtures/integration/labels/62842-50914-17.png b/test/fixtures/integration/labels/62842-50914-17.png new file mode 100644 index 0000000..deccd7a Binary files /dev/null and b/test/fixtures/integration/labels/62842-50914-17.png differ diff --git a/test/fixtures/integration/labels/62842-50915-17.png b/test/fixtures/integration/labels/62842-50915-17.png new file mode 100644 index 0000000..ed8808f Binary files /dev/null and b/test/fixtures/integration/labels/62842-50915-17.png differ diff --git a/test/fixtures/integration/labels/62842-50916-17.png b/test/fixtures/integration/labels/62842-50916-17.png new file mode 100644 index 0000000..9ac188d Binary files /dev/null and b/test/fixtures/integration/labels/62842-50916-17.png differ diff --git a/test/fixtures/integration/labels/62842-50917-17.png b/test/fixtures/integration/labels/62842-50917-17.png new file mode 100644 index 0000000..2d47667 Binary files /dev/null and b/test/fixtures/integration/labels/62842-50917-17.png differ diff --git a/test/fixtures/integration/labels/62842-50918-17.png b/test/fixtures/integration/labels/62842-50918-17.png new file mode 100644 index 0000000..942ff12 Binary files /dev/null and b/test/fixtures/integration/labels/62842-50918-17.png differ diff --git a/test/fixtures/integration/labels/62842-50919-17.png b/test/fixtures/integration/labels/62842-50919-17.png new file mode 100644 index 0000000..b844876 Binary files /dev/null and b/test/fixtures/integration/labels/62842-50919-17.png differ diff --git a/test/fixtures/integration/labels/62842-50922-17.png b/test/fixtures/integration/labels/62842-50922-17.png new file mode 100644 index 0000000..89c256a Binary files /dev/null and b/test/fixtures/integration/labels/62842-50922-17.png differ diff --git a/test/fixtures/integration/labels/62842-50923-17.png b/test/fixtures/integration/labels/62842-50923-17.png new file mode 100644 index 0000000..c39c259 Binary files /dev/null and b/test/fixtures/integration/labels/62842-50923-17.png differ diff --git a/test/fixtures/integration/labels/62842-50924-17.png b/test/fixtures/integration/labels/62842-50924-17.png new file mode 100644 index 0000000..691033c Binary files /dev/null and b/test/fixtures/integration/labels/62842-50924-17.png differ diff --git a/test/fixtures/integration/labels/62842-50925-17.png b/test/fixtures/integration/labels/62842-50925-17.png new file mode 100644 index 0000000..0dc351e Binary files /dev/null and b/test/fixtures/integration/labels/62842-50925-17.png differ diff --git a/test/fixtures/integration/labels/62842-50926-17.png b/test/fixtures/integration/labels/62842-50926-17.png new file mode 100644 index 0000000..91be434 Binary files /dev/null and b/test/fixtures/integration/labels/62842-50926-17.png differ diff --git a/test/fixtures/integration/labels/62842-50927-17.png b/test/fixtures/integration/labels/62842-50927-17.png new file mode 100644 index 0000000..85a7409 Binary files /dev/null and b/test/fixtures/integration/labels/62842-50927-17.png differ diff --git a/test/fixtures/integration/labels/62842-50928-17.png b/test/fixtures/integration/labels/62842-50928-17.png new file mode 100644 index 0000000..fe43c83 Binary files /dev/null and b/test/fixtures/integration/labels/62842-50928-17.png differ diff --git a/test/fixtures/integration/labels/62843-50912-17.png b/test/fixtures/integration/labels/62843-50912-17.png new file mode 100644 index 0000000..37d8ca8 Binary files /dev/null and b/test/fixtures/integration/labels/62843-50912-17.png differ diff --git a/test/fixtures/integration/labels/62843-50913-17.png b/test/fixtures/integration/labels/62843-50913-17.png new file mode 100644 index 0000000..b15d2bc Binary files /dev/null and b/test/fixtures/integration/labels/62843-50913-17.png differ diff --git a/test/fixtures/integration/labels/62843-50915-17.png b/test/fixtures/integration/labels/62843-50915-17.png new file mode 100644 index 0000000..932d2dd Binary files /dev/null and b/test/fixtures/integration/labels/62843-50915-17.png differ diff --git a/test/fixtures/integration/labels/62843-50916-17.png b/test/fixtures/integration/labels/62843-50916-17.png new file mode 100644 index 0000000..1c1b5bb Binary files /dev/null and b/test/fixtures/integration/labels/62843-50916-17.png differ diff --git a/test/fixtures/integration/labels/62843-50917-17.png b/test/fixtures/integration/labels/62843-50917-17.png new file mode 100644 index 0000000..e030e78 Binary files /dev/null and b/test/fixtures/integration/labels/62843-50917-17.png differ diff --git a/test/fixtures/integration/labels/62843-50918-17.png b/test/fixtures/integration/labels/62843-50918-17.png new file mode 100644 index 0000000..d34854b Binary files /dev/null and b/test/fixtures/integration/labels/62843-50918-17.png differ diff --git a/test/fixtures/integration/labels/62843-50919-17.png b/test/fixtures/integration/labels/62843-50919-17.png new file mode 100644 index 0000000..d587886 Binary files /dev/null and b/test/fixtures/integration/labels/62843-50919-17.png differ diff --git a/test/fixtures/integration/labels/62843-50920-17.png b/test/fixtures/integration/labels/62843-50920-17.png new file mode 100644 index 0000000..aedda29 Binary files /dev/null and b/test/fixtures/integration/labels/62843-50920-17.png differ diff --git a/test/fixtures/integration/labels/62843-50921-17.png b/test/fixtures/integration/labels/62843-50921-17.png new file mode 100644 index 0000000..c0fe67e Binary files /dev/null and b/test/fixtures/integration/labels/62843-50921-17.png differ diff --git a/test/fixtures/integration/labels/62843-50922-17.png b/test/fixtures/integration/labels/62843-50922-17.png new file mode 100644 index 0000000..27f9d7f Binary files /dev/null and b/test/fixtures/integration/labels/62843-50922-17.png differ diff --git a/test/fixtures/integration/labels/62843-50923-17.png b/test/fixtures/integration/labels/62843-50923-17.png new file mode 100644 index 0000000..f0a18b5 Binary files /dev/null and b/test/fixtures/integration/labels/62843-50923-17.png differ diff --git a/test/fixtures/integration/labels/62843-50924-17.png b/test/fixtures/integration/labels/62843-50924-17.png new file mode 100644 index 0000000..52548e1 Binary files /dev/null and b/test/fixtures/integration/labels/62843-50924-17.png differ diff --git a/test/fixtures/integration/labels/62843-50925-17.png b/test/fixtures/integration/labels/62843-50925-17.png new file mode 100644 index 0000000..6318006 Binary files /dev/null and b/test/fixtures/integration/labels/62843-50925-17.png differ diff --git a/test/fixtures/integration/labels/62843-50926-17.png b/test/fixtures/integration/labels/62843-50926-17.png new file mode 100644 index 0000000..9a80823 Binary files /dev/null and b/test/fixtures/integration/labels/62843-50926-17.png differ diff --git a/test/fixtures/integration/labels/62843-50927-17.png b/test/fixtures/integration/labels/62843-50927-17.png new file mode 100644 index 0000000..ce59b62 Binary files /dev/null and b/test/fixtures/integration/labels/62843-50927-17.png differ diff --git a/test/fixtures/integration/labels/62843-50928-17.png b/test/fixtures/integration/labels/62843-50928-17.png new file mode 100644 index 0000000..9728e45 Binary files /dev/null and b/test/fixtures/integration/labels/62843-50928-17.png differ diff --git a/test/fixtures/integration/labels/62843-50929-17.png b/test/fixtures/integration/labels/62843-50929-17.png new file mode 100644 index 0000000..2c08d18 Binary files /dev/null and b/test/fixtures/integration/labels/62843-50929-17.png differ diff --git a/test/fixtures/integration/labels/62844-50912-17.png b/test/fixtures/integration/labels/62844-50912-17.png new file mode 100644 index 0000000..8780098 Binary files /dev/null and b/test/fixtures/integration/labels/62844-50912-17.png differ diff --git a/test/fixtures/integration/labels/62844-50913-17.png b/test/fixtures/integration/labels/62844-50913-17.png new file mode 100644 index 0000000..6da7f00 Binary files /dev/null and b/test/fixtures/integration/labels/62844-50913-17.png differ diff --git a/test/fixtures/integration/labels/62844-50914-17.png b/test/fixtures/integration/labels/62844-50914-17.png new file mode 100644 index 0000000..8263fbc Binary files /dev/null and b/test/fixtures/integration/labels/62844-50914-17.png differ diff --git a/test/fixtures/integration/labels/62844-50915-17.png b/test/fixtures/integration/labels/62844-50915-17.png new file mode 100644 index 0000000..aafe650 Binary files /dev/null and b/test/fixtures/integration/labels/62844-50915-17.png differ diff --git a/test/fixtures/integration/labels/62844-50917-17.png b/test/fixtures/integration/labels/62844-50917-17.png new file mode 100644 index 0000000..cc1d5a3 Binary files /dev/null and b/test/fixtures/integration/labels/62844-50917-17.png differ diff --git a/test/fixtures/integration/labels/62844-50918-17.png b/test/fixtures/integration/labels/62844-50918-17.png new file mode 100644 index 0000000..6991371 Binary files /dev/null and b/test/fixtures/integration/labels/62844-50918-17.png differ diff --git a/test/fixtures/integration/labels/62844-50920-17.png b/test/fixtures/integration/labels/62844-50920-17.png new file mode 100644 index 0000000..48fc318 Binary files /dev/null and b/test/fixtures/integration/labels/62844-50920-17.png differ diff --git a/test/fixtures/integration/labels/62844-50921-17.png b/test/fixtures/integration/labels/62844-50921-17.png new file mode 100644 index 0000000..68d5dcc Binary files /dev/null and b/test/fixtures/integration/labels/62844-50921-17.png differ diff --git a/test/fixtures/integration/labels/62844-50922-17.png b/test/fixtures/integration/labels/62844-50922-17.png new file mode 100644 index 0000000..9f0e563 Binary files /dev/null and b/test/fixtures/integration/labels/62844-50922-17.png differ diff --git a/test/fixtures/integration/labels/62844-50923-17.png b/test/fixtures/integration/labels/62844-50923-17.png new file mode 100644 index 0000000..3cfc355 Binary files /dev/null and b/test/fixtures/integration/labels/62844-50923-17.png differ diff --git a/test/fixtures/integration/labels/62844-50924-17.png b/test/fixtures/integration/labels/62844-50924-17.png new file mode 100644 index 0000000..2a0a265 Binary files /dev/null and b/test/fixtures/integration/labels/62844-50924-17.png differ diff --git a/test/fixtures/integration/labels/62844-50925-17.png b/test/fixtures/integration/labels/62844-50925-17.png new file mode 100644 index 0000000..914b907 Binary files /dev/null and b/test/fixtures/integration/labels/62844-50925-17.png differ diff --git a/test/fixtures/integration/labels/62844-50926-17.png b/test/fixtures/integration/labels/62844-50926-17.png new file mode 100644 index 0000000..2de30e7 Binary files /dev/null and b/test/fixtures/integration/labels/62844-50926-17.png differ diff --git a/test/fixtures/integration/labels/62844-50927-17.png b/test/fixtures/integration/labels/62844-50927-17.png new file mode 100644 index 0000000..bc19959 Binary files /dev/null and b/test/fixtures/integration/labels/62844-50927-17.png differ diff --git a/test/fixtures/integration/labels/62844-50928-17.png b/test/fixtures/integration/labels/62844-50928-17.png new file mode 100644 index 0000000..3eacc82 Binary files /dev/null and b/test/fixtures/integration/labels/62844-50928-17.png differ diff --git a/test/fixtures/integration/labels/62844-50929-17.png b/test/fixtures/integration/labels/62844-50929-17.png new file mode 100644 index 0000000..7fff403 Binary files /dev/null and b/test/fixtures/integration/labels/62844-50929-17.png differ diff --git a/test/fixtures/integration/labels/62845-50912-17.png b/test/fixtures/integration/labels/62845-50912-17.png new file mode 100644 index 0000000..644f3bb Binary files /dev/null and b/test/fixtures/integration/labels/62845-50912-17.png differ diff --git a/test/fixtures/integration/labels/62845-50913-17.png b/test/fixtures/integration/labels/62845-50913-17.png new file mode 100644 index 0000000..aeedf24 Binary files /dev/null and b/test/fixtures/integration/labels/62845-50913-17.png differ diff --git a/test/fixtures/integration/labels/62845-50914-17.png b/test/fixtures/integration/labels/62845-50914-17.png new file mode 100644 index 0000000..e8394d8 Binary files /dev/null and b/test/fixtures/integration/labels/62845-50914-17.png differ diff --git a/test/fixtures/integration/labels/62845-50917-17.png b/test/fixtures/integration/labels/62845-50917-17.png new file mode 100644 index 0000000..165c7ca Binary files /dev/null and b/test/fixtures/integration/labels/62845-50917-17.png differ diff --git a/test/fixtures/integration/labels/62845-50918-17.png b/test/fixtures/integration/labels/62845-50918-17.png new file mode 100644 index 0000000..08d8fcf Binary files /dev/null and b/test/fixtures/integration/labels/62845-50918-17.png differ diff --git a/test/fixtures/integration/labels/62845-50919-17.png b/test/fixtures/integration/labels/62845-50919-17.png new file mode 100644 index 0000000..da499cc Binary files /dev/null and b/test/fixtures/integration/labels/62845-50919-17.png differ diff --git a/test/fixtures/integration/labels/62845-50920-17.png b/test/fixtures/integration/labels/62845-50920-17.png new file mode 100644 index 0000000..0332a16 Binary files /dev/null and b/test/fixtures/integration/labels/62845-50920-17.png differ diff --git a/test/fixtures/integration/labels/62845-50921-17.png b/test/fixtures/integration/labels/62845-50921-17.png new file mode 100644 index 0000000..1f26e99 Binary files /dev/null and b/test/fixtures/integration/labels/62845-50921-17.png differ diff --git a/test/fixtures/integration/labels/62845-50922-17.png b/test/fixtures/integration/labels/62845-50922-17.png new file mode 100644 index 0000000..0e95f2f Binary files /dev/null and b/test/fixtures/integration/labels/62845-50922-17.png differ diff --git a/test/fixtures/integration/labels/62845-50923-17.png b/test/fixtures/integration/labels/62845-50923-17.png new file mode 100644 index 0000000..6aa5800 Binary files /dev/null and b/test/fixtures/integration/labels/62845-50923-17.png differ diff --git a/test/fixtures/integration/labels/62845-50924-17.png b/test/fixtures/integration/labels/62845-50924-17.png new file mode 100644 index 0000000..64558b9 Binary files /dev/null and b/test/fixtures/integration/labels/62845-50924-17.png differ diff --git a/test/fixtures/integration/labels/62845-50926-17.png b/test/fixtures/integration/labels/62845-50926-17.png new file mode 100644 index 0000000..1a1831d Binary files /dev/null and b/test/fixtures/integration/labels/62845-50926-17.png differ diff --git a/test/fixtures/integration/labels/62845-50927-17.png b/test/fixtures/integration/labels/62845-50927-17.png new file mode 100644 index 0000000..91c08a0 Binary files /dev/null and b/test/fixtures/integration/labels/62845-50927-17.png differ diff --git a/test/fixtures/integration/labels/62845-50928-17.png b/test/fixtures/integration/labels/62845-50928-17.png new file mode 100644 index 0000000..2e73092 Binary files /dev/null and b/test/fixtures/integration/labels/62845-50928-17.png differ diff --git a/test/fixtures/integration/labels/62845-50929-17.png b/test/fixtures/integration/labels/62845-50929-17.png new file mode 100644 index 0000000..f1c352c Binary files /dev/null and b/test/fixtures/integration/labels/62845-50929-17.png differ diff --git a/test/fixtures/integration/labels/62845-50930-17.png b/test/fixtures/integration/labels/62845-50930-17.png new file mode 100644 index 0000000..958db70 Binary files /dev/null and b/test/fixtures/integration/labels/62845-50930-17.png differ diff --git a/test/fixtures/integration/labels/63176-48799-17.png b/test/fixtures/integration/labels/63176-48799-17.png new file mode 100644 index 0000000..c221d78 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48799-17.png differ diff --git a/test/fixtures/integration/labels/63176-48800-17.png b/test/fixtures/integration/labels/63176-48800-17.png new file mode 100644 index 0000000..f526530 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48800-17.png differ diff --git a/test/fixtures/integration/labels/63176-48802-17.png b/test/fixtures/integration/labels/63176-48802-17.png new file mode 100644 index 0000000..09263d5 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48802-17.png differ diff --git a/test/fixtures/integration/labels/63176-48813-17.png b/test/fixtures/integration/labels/63176-48813-17.png new file mode 100644 index 0000000..64eccc3 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48813-17.png differ diff --git a/test/fixtures/integration/labels/63176-48830-17.png b/test/fixtures/integration/labels/63176-48830-17.png new file mode 100644 index 0000000..1cd06b2 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48830-17.png differ diff --git a/test/fixtures/integration/labels/63176-48831-17.png b/test/fixtures/integration/labels/63176-48831-17.png new file mode 100644 index 0000000..3c5007a Binary files /dev/null and b/test/fixtures/integration/labels/63176-48831-17.png differ diff --git a/test/fixtures/integration/labels/63176-48834-17.png b/test/fixtures/integration/labels/63176-48834-17.png new file mode 100644 index 0000000..890a0e7 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48834-17.png differ diff --git a/test/fixtures/integration/labels/63176-48840-17.png b/test/fixtures/integration/labels/63176-48840-17.png new file mode 100644 index 0000000..86f46e8 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48840-17.png differ diff --git a/test/fixtures/integration/labels/63176-48841-17.png b/test/fixtures/integration/labels/63176-48841-17.png new file mode 100644 index 0000000..ed1ba0b Binary files /dev/null and b/test/fixtures/integration/labels/63176-48841-17.png differ diff --git a/test/fixtures/integration/labels/63176-48842-17.png b/test/fixtures/integration/labels/63176-48842-17.png new file mode 100644 index 0000000..9e94c71 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48842-17.png differ diff --git a/test/fixtures/integration/labels/63176-48845-17.png b/test/fixtures/integration/labels/63176-48845-17.png new file mode 100644 index 0000000..2818810 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48845-17.png differ diff --git a/test/fixtures/integration/labels/63176-48846-17.png b/test/fixtures/integration/labels/63176-48846-17.png new file mode 100644 index 0000000..6b1d838 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48846-17.png differ diff --git a/test/fixtures/integration/labels/63176-48848-17.png b/test/fixtures/integration/labels/63176-48848-17.png new file mode 100644 index 0000000..2c5bfb1 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48848-17.png differ diff --git a/test/fixtures/integration/labels/63176-48849-17.png b/test/fixtures/integration/labels/63176-48849-17.png new file mode 100644 index 0000000..380aa61 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48849-17.png differ diff --git a/test/fixtures/integration/labels/63176-48850-17.png b/test/fixtures/integration/labels/63176-48850-17.png new file mode 100644 index 0000000..3eccfe7 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48850-17.png differ diff --git a/test/fixtures/integration/labels/63176-48862-17.png b/test/fixtures/integration/labels/63176-48862-17.png new file mode 100644 index 0000000..fef4c16 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48862-17.png differ diff --git a/test/fixtures/integration/labels/63176-48863-17.png b/test/fixtures/integration/labels/63176-48863-17.png new file mode 100644 index 0000000..a214999 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48863-17.png differ diff --git a/test/fixtures/integration/labels/63176-48864-17.png b/test/fixtures/integration/labels/63176-48864-17.png new file mode 100644 index 0000000..978bf9a Binary files /dev/null and b/test/fixtures/integration/labels/63176-48864-17.png differ diff --git a/test/fixtures/integration/labels/63176-48868-17.png b/test/fixtures/integration/labels/63176-48868-17.png new file mode 100644 index 0000000..ba1c955 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48868-17.png differ diff --git a/test/fixtures/integration/labels/63176-48869-17.png b/test/fixtures/integration/labels/63176-48869-17.png new file mode 100644 index 0000000..79924f9 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48869-17.png differ diff --git a/test/fixtures/integration/labels/63176-48870-17.png b/test/fixtures/integration/labels/63176-48870-17.png new file mode 100644 index 0000000..bcf11ca Binary files /dev/null and b/test/fixtures/integration/labels/63176-48870-17.png differ diff --git a/test/fixtures/integration/labels/63176-48871-17.png b/test/fixtures/integration/labels/63176-48871-17.png new file mode 100644 index 0000000..e35fe1d Binary files /dev/null and b/test/fixtures/integration/labels/63176-48871-17.png differ diff --git a/test/fixtures/integration/labels/63176-48872-17.png b/test/fixtures/integration/labels/63176-48872-17.png new file mode 100644 index 0000000..dcd2b87 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48872-17.png differ diff --git a/test/fixtures/integration/labels/63176-48873-17.png b/test/fixtures/integration/labels/63176-48873-17.png new file mode 100644 index 0000000..b877f11 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48873-17.png differ diff --git a/test/fixtures/integration/labels/63176-48874-17.png b/test/fixtures/integration/labels/63176-48874-17.png new file mode 100644 index 0000000..83c73d7 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48874-17.png differ diff --git a/test/fixtures/integration/labels/63176-48878-17.png b/test/fixtures/integration/labels/63176-48878-17.png new file mode 100644 index 0000000..6b2f9ce Binary files /dev/null and b/test/fixtures/integration/labels/63176-48878-17.png differ diff --git a/test/fixtures/integration/labels/63176-48879-17.png b/test/fixtures/integration/labels/63176-48879-17.png new file mode 100644 index 0000000..d3373a8 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48879-17.png differ diff --git a/test/fixtures/integration/labels/63176-48882-17.png b/test/fixtures/integration/labels/63176-48882-17.png new file mode 100644 index 0000000..436e5b0 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48882-17.png differ diff --git a/test/fixtures/integration/labels/63176-48883-17.png b/test/fixtures/integration/labels/63176-48883-17.png new file mode 100644 index 0000000..bd546ce Binary files /dev/null and b/test/fixtures/integration/labels/63176-48883-17.png differ diff --git a/test/fixtures/integration/labels/63176-48887-17.png b/test/fixtures/integration/labels/63176-48887-17.png new file mode 100644 index 0000000..109f41b Binary files /dev/null and b/test/fixtures/integration/labels/63176-48887-17.png differ diff --git a/test/fixtures/integration/labels/63176-48888-17.png b/test/fixtures/integration/labels/63176-48888-17.png new file mode 100644 index 0000000..6605354 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48888-17.png differ diff --git a/test/fixtures/integration/labels/63176-48889-17.png b/test/fixtures/integration/labels/63176-48889-17.png new file mode 100644 index 0000000..7445ecc Binary files /dev/null and b/test/fixtures/integration/labels/63176-48889-17.png differ diff --git a/test/fixtures/integration/labels/63176-48891-17.png b/test/fixtures/integration/labels/63176-48891-17.png new file mode 100644 index 0000000..14ba804 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48891-17.png differ diff --git a/test/fixtures/integration/labels/63176-48892-17.png b/test/fixtures/integration/labels/63176-48892-17.png new file mode 100644 index 0000000..9bdba83 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48892-17.png differ diff --git a/test/fixtures/integration/labels/63176-48893-17.png b/test/fixtures/integration/labels/63176-48893-17.png new file mode 100644 index 0000000..e8f1537 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48893-17.png differ diff --git a/test/fixtures/integration/labels/63176-48895-17.png b/test/fixtures/integration/labels/63176-48895-17.png new file mode 100644 index 0000000..e19a7b1 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48895-17.png differ diff --git a/test/fixtures/integration/labels/63176-48896-17.png b/test/fixtures/integration/labels/63176-48896-17.png new file mode 100644 index 0000000..e9500ff Binary files /dev/null and b/test/fixtures/integration/labels/63176-48896-17.png differ diff --git a/test/fixtures/integration/labels/63176-48897-17.png b/test/fixtures/integration/labels/63176-48897-17.png new file mode 100644 index 0000000..d466c44 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48897-17.png differ diff --git a/test/fixtures/integration/labels/63176-48902-17.png b/test/fixtures/integration/labels/63176-48902-17.png new file mode 100644 index 0000000..f0cf108 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48902-17.png differ diff --git a/test/fixtures/integration/labels/63176-48906-17.png b/test/fixtures/integration/labels/63176-48906-17.png new file mode 100644 index 0000000..d313b48 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48906-17.png differ diff --git a/test/fixtures/integration/labels/63176-48910-17.png b/test/fixtures/integration/labels/63176-48910-17.png new file mode 100644 index 0000000..955647d Binary files /dev/null and b/test/fixtures/integration/labels/63176-48910-17.png differ diff --git a/test/fixtures/integration/labels/63176-48911-17.png b/test/fixtures/integration/labels/63176-48911-17.png new file mode 100644 index 0000000..29a13d1 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48911-17.png differ diff --git a/test/fixtures/integration/labels/63176-48912-17.png b/test/fixtures/integration/labels/63176-48912-17.png new file mode 100644 index 0000000..0d29828 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48912-17.png differ diff --git a/test/fixtures/integration/labels/63176-48913-17.png b/test/fixtures/integration/labels/63176-48913-17.png new file mode 100644 index 0000000..edd4fce Binary files /dev/null and b/test/fixtures/integration/labels/63176-48913-17.png differ diff --git a/test/fixtures/integration/labels/63176-48914-17.png b/test/fixtures/integration/labels/63176-48914-17.png new file mode 100644 index 0000000..3c7c862 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48914-17.png differ diff --git a/test/fixtures/integration/labels/63176-48915-17.png b/test/fixtures/integration/labels/63176-48915-17.png new file mode 100644 index 0000000..9a57815 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48915-17.png differ diff --git a/test/fixtures/integration/labels/63176-48932-17.png b/test/fixtures/integration/labels/63176-48932-17.png new file mode 100644 index 0000000..97943c2 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48932-17.png differ diff --git a/test/fixtures/integration/labels/63176-48933-17.png b/test/fixtures/integration/labels/63176-48933-17.png new file mode 100644 index 0000000..a566125 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48933-17.png differ diff --git a/test/fixtures/integration/labels/63176-48934-17.png b/test/fixtures/integration/labels/63176-48934-17.png new file mode 100644 index 0000000..11c5d28 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48934-17.png differ diff --git a/test/fixtures/integration/labels/63176-48935-17.png b/test/fixtures/integration/labels/63176-48935-17.png new file mode 100644 index 0000000..f397f22 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48935-17.png differ diff --git a/test/fixtures/integration/labels/63176-48936-17.png b/test/fixtures/integration/labels/63176-48936-17.png new file mode 100644 index 0000000..f6704f0 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48936-17.png differ diff --git a/test/fixtures/integration/labels/63176-48937-17.png b/test/fixtures/integration/labels/63176-48937-17.png new file mode 100644 index 0000000..b6d6bcf Binary files /dev/null and b/test/fixtures/integration/labels/63176-48937-17.png differ diff --git a/test/fixtures/integration/labels/63176-48938-17.png b/test/fixtures/integration/labels/63176-48938-17.png new file mode 100644 index 0000000..38ec10e Binary files /dev/null and b/test/fixtures/integration/labels/63176-48938-17.png differ diff --git a/test/fixtures/integration/labels/63176-48951-17.png b/test/fixtures/integration/labels/63176-48951-17.png new file mode 100644 index 0000000..a8917ab Binary files /dev/null and b/test/fixtures/integration/labels/63176-48951-17.png differ diff --git a/test/fixtures/integration/labels/63176-48960-17.png b/test/fixtures/integration/labels/63176-48960-17.png new file mode 100644 index 0000000..c19aad8 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48960-17.png differ diff --git a/test/fixtures/integration/labels/63176-48961-17.png b/test/fixtures/integration/labels/63176-48961-17.png new file mode 100644 index 0000000..91169c4 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48961-17.png differ diff --git a/test/fixtures/integration/labels/63176-48962-17.png b/test/fixtures/integration/labels/63176-48962-17.png new file mode 100644 index 0000000..9859445 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48962-17.png differ diff --git a/test/fixtures/integration/labels/63176-48963-17.png b/test/fixtures/integration/labels/63176-48963-17.png new file mode 100644 index 0000000..10ed2f0 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48963-17.png differ diff --git a/test/fixtures/integration/labels/63176-48964-17.png b/test/fixtures/integration/labels/63176-48964-17.png new file mode 100644 index 0000000..084ea48 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48964-17.png differ diff --git a/test/fixtures/integration/labels/63176-48965-17.png b/test/fixtures/integration/labels/63176-48965-17.png new file mode 100644 index 0000000..6cfd7ae Binary files /dev/null and b/test/fixtures/integration/labels/63176-48965-17.png differ diff --git a/test/fixtures/integration/labels/63176-48968-17.png b/test/fixtures/integration/labels/63176-48968-17.png new file mode 100644 index 0000000..90ededa Binary files /dev/null and b/test/fixtures/integration/labels/63176-48968-17.png differ diff --git a/test/fixtures/integration/labels/63176-48969-17.png b/test/fixtures/integration/labels/63176-48969-17.png new file mode 100644 index 0000000..71a3ebc Binary files /dev/null and b/test/fixtures/integration/labels/63176-48969-17.png differ diff --git a/test/fixtures/integration/labels/63176-48970-17.png b/test/fixtures/integration/labels/63176-48970-17.png new file mode 100644 index 0000000..28469ee Binary files /dev/null and b/test/fixtures/integration/labels/63176-48970-17.png differ diff --git a/test/fixtures/integration/labels/63176-48983-17.png b/test/fixtures/integration/labels/63176-48983-17.png new file mode 100644 index 0000000..7dad515 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48983-17.png differ diff --git a/test/fixtures/integration/labels/63176-48984-17.png b/test/fixtures/integration/labels/63176-48984-17.png new file mode 100644 index 0000000..91e81bf Binary files /dev/null and b/test/fixtures/integration/labels/63176-48984-17.png differ diff --git a/test/fixtures/integration/labels/63176-48985-17.png b/test/fixtures/integration/labels/63176-48985-17.png new file mode 100644 index 0000000..a807b65 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48985-17.png differ diff --git a/test/fixtures/integration/labels/63176-48986-17.png b/test/fixtures/integration/labels/63176-48986-17.png new file mode 100644 index 0000000..8bfa959 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48986-17.png differ diff --git a/test/fixtures/integration/labels/63176-48987-17.png b/test/fixtures/integration/labels/63176-48987-17.png new file mode 100644 index 0000000..105fac1 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48987-17.png differ diff --git a/test/fixtures/integration/labels/63176-48992-17.png b/test/fixtures/integration/labels/63176-48992-17.png new file mode 100644 index 0000000..a8c0913 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48992-17.png differ diff --git a/test/fixtures/integration/labels/63176-48993-17.png b/test/fixtures/integration/labels/63176-48993-17.png new file mode 100644 index 0000000..3288db9 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48993-17.png differ diff --git a/test/fixtures/integration/labels/63176-48994-17.png b/test/fixtures/integration/labels/63176-48994-17.png new file mode 100644 index 0000000..3014507 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48994-17.png differ diff --git a/test/fixtures/integration/labels/63176-48995-17.png b/test/fixtures/integration/labels/63176-48995-17.png new file mode 100644 index 0000000..6b5d8b5 Binary files /dev/null and b/test/fixtures/integration/labels/63176-48995-17.png differ diff --git a/test/fixtures/integration/labels/63177-48802-17.png b/test/fixtures/integration/labels/63177-48802-17.png new file mode 100644 index 0000000..f9f5043 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48802-17.png differ diff --git a/test/fixtures/integration/labels/63177-48813-17.png b/test/fixtures/integration/labels/63177-48813-17.png new file mode 100644 index 0000000..8416142 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48813-17.png differ diff --git a/test/fixtures/integration/labels/63177-48814-17.png b/test/fixtures/integration/labels/63177-48814-17.png new file mode 100644 index 0000000..21210bf Binary files /dev/null and b/test/fixtures/integration/labels/63177-48814-17.png differ diff --git a/test/fixtures/integration/labels/63177-48830-17.png b/test/fixtures/integration/labels/63177-48830-17.png new file mode 100644 index 0000000..2905b18 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48830-17.png differ diff --git a/test/fixtures/integration/labels/63177-48831-17.png b/test/fixtures/integration/labels/63177-48831-17.png new file mode 100644 index 0000000..2bcc77a Binary files /dev/null and b/test/fixtures/integration/labels/63177-48831-17.png differ diff --git a/test/fixtures/integration/labels/63177-48834-17.png b/test/fixtures/integration/labels/63177-48834-17.png new file mode 100644 index 0000000..4e71723 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48834-17.png differ diff --git a/test/fixtures/integration/labels/63177-48839-17.png b/test/fixtures/integration/labels/63177-48839-17.png new file mode 100644 index 0000000..e4752e0 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48839-17.png differ diff --git a/test/fixtures/integration/labels/63177-48840-17.png b/test/fixtures/integration/labels/63177-48840-17.png new file mode 100644 index 0000000..419a43b Binary files /dev/null and b/test/fixtures/integration/labels/63177-48840-17.png differ diff --git a/test/fixtures/integration/labels/63177-48842-17.png b/test/fixtures/integration/labels/63177-48842-17.png new file mode 100644 index 0000000..706c9d8 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48842-17.png differ diff --git a/test/fixtures/integration/labels/63177-48846-17.png b/test/fixtures/integration/labels/63177-48846-17.png new file mode 100644 index 0000000..1ad2f8d Binary files /dev/null and b/test/fixtures/integration/labels/63177-48846-17.png differ diff --git a/test/fixtures/integration/labels/63177-48848-17.png b/test/fixtures/integration/labels/63177-48848-17.png new file mode 100644 index 0000000..8099022 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48848-17.png differ diff --git a/test/fixtures/integration/labels/63177-48849-17.png b/test/fixtures/integration/labels/63177-48849-17.png new file mode 100644 index 0000000..7560e5f Binary files /dev/null and b/test/fixtures/integration/labels/63177-48849-17.png differ diff --git a/test/fixtures/integration/labels/63177-48850-17.png b/test/fixtures/integration/labels/63177-48850-17.png new file mode 100644 index 0000000..1262a11 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48850-17.png differ diff --git a/test/fixtures/integration/labels/63177-48868-17.png b/test/fixtures/integration/labels/63177-48868-17.png new file mode 100644 index 0000000..371f91f Binary files /dev/null and b/test/fixtures/integration/labels/63177-48868-17.png differ diff --git a/test/fixtures/integration/labels/63177-48872-17.png b/test/fixtures/integration/labels/63177-48872-17.png new file mode 100644 index 0000000..a63728b Binary files /dev/null and b/test/fixtures/integration/labels/63177-48872-17.png differ diff --git a/test/fixtures/integration/labels/63177-48873-17.png b/test/fixtures/integration/labels/63177-48873-17.png new file mode 100644 index 0000000..923df94 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48873-17.png differ diff --git a/test/fixtures/integration/labels/63177-48874-17.png b/test/fixtures/integration/labels/63177-48874-17.png new file mode 100644 index 0000000..c25f8f6 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48874-17.png differ diff --git a/test/fixtures/integration/labels/63177-48875-17.png b/test/fixtures/integration/labels/63177-48875-17.png new file mode 100644 index 0000000..fbcbe5d Binary files /dev/null and b/test/fixtures/integration/labels/63177-48875-17.png differ diff --git a/test/fixtures/integration/labels/63177-48876-17.png b/test/fixtures/integration/labels/63177-48876-17.png new file mode 100644 index 0000000..ea9e6c1 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48876-17.png differ diff --git a/test/fixtures/integration/labels/63177-48877-17.png b/test/fixtures/integration/labels/63177-48877-17.png new file mode 100644 index 0000000..6686fcb Binary files /dev/null and b/test/fixtures/integration/labels/63177-48877-17.png differ diff --git a/test/fixtures/integration/labels/63177-48878-17.png b/test/fixtures/integration/labels/63177-48878-17.png new file mode 100644 index 0000000..559fd7b Binary files /dev/null and b/test/fixtures/integration/labels/63177-48878-17.png differ diff --git a/test/fixtures/integration/labels/63177-48879-17.png b/test/fixtures/integration/labels/63177-48879-17.png new file mode 100644 index 0000000..9801269 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48879-17.png differ diff --git a/test/fixtures/integration/labels/63177-48888-17.png b/test/fixtures/integration/labels/63177-48888-17.png new file mode 100644 index 0000000..37e42b2 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48888-17.png differ diff --git a/test/fixtures/integration/labels/63177-48889-17.png b/test/fixtures/integration/labels/63177-48889-17.png new file mode 100644 index 0000000..d139cba Binary files /dev/null and b/test/fixtures/integration/labels/63177-48889-17.png differ diff --git a/test/fixtures/integration/labels/63177-48890-17.png b/test/fixtures/integration/labels/63177-48890-17.png new file mode 100644 index 0000000..dd503b6 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48890-17.png differ diff --git a/test/fixtures/integration/labels/63177-48892-17.png b/test/fixtures/integration/labels/63177-48892-17.png new file mode 100644 index 0000000..9f71e4c Binary files /dev/null and b/test/fixtures/integration/labels/63177-48892-17.png differ diff --git a/test/fixtures/integration/labels/63177-48893-17.png b/test/fixtures/integration/labels/63177-48893-17.png new file mode 100644 index 0000000..7c425d2 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48893-17.png differ diff --git a/test/fixtures/integration/labels/63177-48895-17.png b/test/fixtures/integration/labels/63177-48895-17.png new file mode 100644 index 0000000..18429fd Binary files /dev/null and b/test/fixtures/integration/labels/63177-48895-17.png differ diff --git a/test/fixtures/integration/labels/63177-48896-17.png b/test/fixtures/integration/labels/63177-48896-17.png new file mode 100644 index 0000000..aa2d33d Binary files /dev/null and b/test/fixtures/integration/labels/63177-48896-17.png differ diff --git a/test/fixtures/integration/labels/63177-48902-17.png b/test/fixtures/integration/labels/63177-48902-17.png new file mode 100644 index 0000000..3973f30 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48902-17.png differ diff --git a/test/fixtures/integration/labels/63177-48905-17.png b/test/fixtures/integration/labels/63177-48905-17.png new file mode 100644 index 0000000..68b97e6 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48905-17.png differ diff --git a/test/fixtures/integration/labels/63177-48906-17.png b/test/fixtures/integration/labels/63177-48906-17.png new file mode 100644 index 0000000..d032b29 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48906-17.png differ diff --git a/test/fixtures/integration/labels/63177-48909-17.png b/test/fixtures/integration/labels/63177-48909-17.png new file mode 100644 index 0000000..9d0d83a Binary files /dev/null and b/test/fixtures/integration/labels/63177-48909-17.png differ diff --git a/test/fixtures/integration/labels/63177-48910-17.png b/test/fixtures/integration/labels/63177-48910-17.png new file mode 100644 index 0000000..8d7e071 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48910-17.png differ diff --git a/test/fixtures/integration/labels/63177-48912-17.png b/test/fixtures/integration/labels/63177-48912-17.png new file mode 100644 index 0000000..a791e47 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48912-17.png differ diff --git a/test/fixtures/integration/labels/63177-48915-17.png b/test/fixtures/integration/labels/63177-48915-17.png new file mode 100644 index 0000000..33eccaa Binary files /dev/null and b/test/fixtures/integration/labels/63177-48915-17.png differ diff --git a/test/fixtures/integration/labels/63177-48933-17.png b/test/fixtures/integration/labels/63177-48933-17.png new file mode 100644 index 0000000..f6554f9 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48933-17.png differ diff --git a/test/fixtures/integration/labels/63177-48934-17.png b/test/fixtures/integration/labels/63177-48934-17.png new file mode 100644 index 0000000..0fb9ce8 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48934-17.png differ diff --git a/test/fixtures/integration/labels/63177-48936-17.png b/test/fixtures/integration/labels/63177-48936-17.png new file mode 100644 index 0000000..c30fc07 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48936-17.png differ diff --git a/test/fixtures/integration/labels/63177-48937-17.png b/test/fixtures/integration/labels/63177-48937-17.png new file mode 100644 index 0000000..057fc19 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48937-17.png differ diff --git a/test/fixtures/integration/labels/63177-48950-17.png b/test/fixtures/integration/labels/63177-48950-17.png new file mode 100644 index 0000000..781a9f5 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48950-17.png differ diff --git a/test/fixtures/integration/labels/63177-48951-17.png b/test/fixtures/integration/labels/63177-48951-17.png new file mode 100644 index 0000000..6c97acc Binary files /dev/null and b/test/fixtures/integration/labels/63177-48951-17.png differ diff --git a/test/fixtures/integration/labels/63177-48959-17.png b/test/fixtures/integration/labels/63177-48959-17.png new file mode 100644 index 0000000..a532df9 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48959-17.png differ diff --git a/test/fixtures/integration/labels/63177-48960-17.png b/test/fixtures/integration/labels/63177-48960-17.png new file mode 100644 index 0000000..3594162 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48960-17.png differ diff --git a/test/fixtures/integration/labels/63177-48961-17.png b/test/fixtures/integration/labels/63177-48961-17.png new file mode 100644 index 0000000..461932d Binary files /dev/null and b/test/fixtures/integration/labels/63177-48961-17.png differ diff --git a/test/fixtures/integration/labels/63177-48962-17.png b/test/fixtures/integration/labels/63177-48962-17.png new file mode 100644 index 0000000..6f88247 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48962-17.png differ diff --git a/test/fixtures/integration/labels/63177-48965-17.png b/test/fixtures/integration/labels/63177-48965-17.png new file mode 100644 index 0000000..d910290 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48965-17.png differ diff --git a/test/fixtures/integration/labels/63177-48966-17.png b/test/fixtures/integration/labels/63177-48966-17.png new file mode 100644 index 0000000..2583063 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48966-17.png differ diff --git a/test/fixtures/integration/labels/63177-48968-17.png b/test/fixtures/integration/labels/63177-48968-17.png new file mode 100644 index 0000000..463dc1b Binary files /dev/null and b/test/fixtures/integration/labels/63177-48968-17.png differ diff --git a/test/fixtures/integration/labels/63177-48969-17.png b/test/fixtures/integration/labels/63177-48969-17.png new file mode 100644 index 0000000..0ffedca Binary files /dev/null and b/test/fixtures/integration/labels/63177-48969-17.png differ diff --git a/test/fixtures/integration/labels/63177-48970-17.png b/test/fixtures/integration/labels/63177-48970-17.png new file mode 100644 index 0000000..b15d5d5 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48970-17.png differ diff --git a/test/fixtures/integration/labels/63177-48981-17.png b/test/fixtures/integration/labels/63177-48981-17.png new file mode 100644 index 0000000..8b7a8c5 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48981-17.png differ diff --git a/test/fixtures/integration/labels/63177-48982-17.png b/test/fixtures/integration/labels/63177-48982-17.png new file mode 100644 index 0000000..3e94a24 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48982-17.png differ diff --git a/test/fixtures/integration/labels/63177-48983-17.png b/test/fixtures/integration/labels/63177-48983-17.png new file mode 100644 index 0000000..250f965 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48983-17.png differ diff --git a/test/fixtures/integration/labels/63177-48985-17.png b/test/fixtures/integration/labels/63177-48985-17.png new file mode 100644 index 0000000..3b9adce Binary files /dev/null and b/test/fixtures/integration/labels/63177-48985-17.png differ diff --git a/test/fixtures/integration/labels/63177-48986-17.png b/test/fixtures/integration/labels/63177-48986-17.png new file mode 100644 index 0000000..1fd27cb Binary files /dev/null and b/test/fixtures/integration/labels/63177-48986-17.png differ diff --git a/test/fixtures/integration/labels/63177-48993-17.png b/test/fixtures/integration/labels/63177-48993-17.png new file mode 100644 index 0000000..df39032 Binary files /dev/null and b/test/fixtures/integration/labels/63177-48993-17.png differ diff --git a/test/fixtures/integration/labels/63178-48800-17.png b/test/fixtures/integration/labels/63178-48800-17.png new file mode 100644 index 0000000..34a713a Binary files /dev/null and b/test/fixtures/integration/labels/63178-48800-17.png differ diff --git a/test/fixtures/integration/labels/63178-48801-17.png b/test/fixtures/integration/labels/63178-48801-17.png new file mode 100644 index 0000000..2195b03 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48801-17.png differ diff --git a/test/fixtures/integration/labels/63178-48802-17.png b/test/fixtures/integration/labels/63178-48802-17.png new file mode 100644 index 0000000..d2d830b Binary files /dev/null and b/test/fixtures/integration/labels/63178-48802-17.png differ diff --git a/test/fixtures/integration/labels/63178-48814-17.png b/test/fixtures/integration/labels/63178-48814-17.png new file mode 100644 index 0000000..5797aee Binary files /dev/null and b/test/fixtures/integration/labels/63178-48814-17.png differ diff --git a/test/fixtures/integration/labels/63178-48831-17.png b/test/fixtures/integration/labels/63178-48831-17.png new file mode 100644 index 0000000..a6c793d Binary files /dev/null and b/test/fixtures/integration/labels/63178-48831-17.png differ diff --git a/test/fixtures/integration/labels/63178-48832-17.png b/test/fixtures/integration/labels/63178-48832-17.png new file mode 100644 index 0000000..5c9011b Binary files /dev/null and b/test/fixtures/integration/labels/63178-48832-17.png differ diff --git a/test/fixtures/integration/labels/63178-48833-17.png b/test/fixtures/integration/labels/63178-48833-17.png new file mode 100644 index 0000000..49427aa Binary files /dev/null and b/test/fixtures/integration/labels/63178-48833-17.png differ diff --git a/test/fixtures/integration/labels/63178-48834-17.png b/test/fixtures/integration/labels/63178-48834-17.png new file mode 100644 index 0000000..4dc377a Binary files /dev/null and b/test/fixtures/integration/labels/63178-48834-17.png differ diff --git a/test/fixtures/integration/labels/63178-48842-17.png b/test/fixtures/integration/labels/63178-48842-17.png new file mode 100644 index 0000000..f14273f Binary files /dev/null and b/test/fixtures/integration/labels/63178-48842-17.png differ diff --git a/test/fixtures/integration/labels/63178-48843-17.png b/test/fixtures/integration/labels/63178-48843-17.png new file mode 100644 index 0000000..393b78e Binary files /dev/null and b/test/fixtures/integration/labels/63178-48843-17.png differ diff --git a/test/fixtures/integration/labels/63178-48844-17.png b/test/fixtures/integration/labels/63178-48844-17.png new file mode 100644 index 0000000..c26a8df Binary files /dev/null and b/test/fixtures/integration/labels/63178-48844-17.png differ diff --git a/test/fixtures/integration/labels/63178-48846-17.png b/test/fixtures/integration/labels/63178-48846-17.png new file mode 100644 index 0000000..557faf0 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48846-17.png differ diff --git a/test/fixtures/integration/labels/63178-48847-17.png b/test/fixtures/integration/labels/63178-48847-17.png new file mode 100644 index 0000000..7c14b4b Binary files /dev/null and b/test/fixtures/integration/labels/63178-48847-17.png differ diff --git a/test/fixtures/integration/labels/63178-48848-17.png b/test/fixtures/integration/labels/63178-48848-17.png new file mode 100644 index 0000000..136f055 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48848-17.png differ diff --git a/test/fixtures/integration/labels/63178-48849-17.png b/test/fixtures/integration/labels/63178-48849-17.png new file mode 100644 index 0000000..ae2e30a Binary files /dev/null and b/test/fixtures/integration/labels/63178-48849-17.png differ diff --git a/test/fixtures/integration/labels/63178-48867-17.png b/test/fixtures/integration/labels/63178-48867-17.png new file mode 100644 index 0000000..ccebbf0 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48867-17.png differ diff --git a/test/fixtures/integration/labels/63178-48868-17.png b/test/fixtures/integration/labels/63178-48868-17.png new file mode 100644 index 0000000..2821f1a Binary files /dev/null and b/test/fixtures/integration/labels/63178-48868-17.png differ diff --git a/test/fixtures/integration/labels/63178-48871-17.png b/test/fixtures/integration/labels/63178-48871-17.png new file mode 100644 index 0000000..b0ccb9e Binary files /dev/null and b/test/fixtures/integration/labels/63178-48871-17.png differ diff --git a/test/fixtures/integration/labels/63178-48872-17.png b/test/fixtures/integration/labels/63178-48872-17.png new file mode 100644 index 0000000..fb45a7d Binary files /dev/null and b/test/fixtures/integration/labels/63178-48872-17.png differ diff --git a/test/fixtures/integration/labels/63178-48873-17.png b/test/fixtures/integration/labels/63178-48873-17.png new file mode 100644 index 0000000..3e99849 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48873-17.png differ diff --git a/test/fixtures/integration/labels/63178-48874-17.png b/test/fixtures/integration/labels/63178-48874-17.png new file mode 100644 index 0000000..9bcbde1 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48874-17.png differ diff --git a/test/fixtures/integration/labels/63178-48875-17.png b/test/fixtures/integration/labels/63178-48875-17.png new file mode 100644 index 0000000..f300066 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48875-17.png differ diff --git a/test/fixtures/integration/labels/63178-48876-17.png b/test/fixtures/integration/labels/63178-48876-17.png new file mode 100644 index 0000000..de8de63 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48876-17.png differ diff --git a/test/fixtures/integration/labels/63178-48877-17.png b/test/fixtures/integration/labels/63178-48877-17.png new file mode 100644 index 0000000..5457a7e Binary files /dev/null and b/test/fixtures/integration/labels/63178-48877-17.png differ diff --git a/test/fixtures/integration/labels/63178-48878-17.png b/test/fixtures/integration/labels/63178-48878-17.png new file mode 100644 index 0000000..e282701 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48878-17.png differ diff --git a/test/fixtures/integration/labels/63178-48890-17.png b/test/fixtures/integration/labels/63178-48890-17.png new file mode 100644 index 0000000..8a4f40e Binary files /dev/null and b/test/fixtures/integration/labels/63178-48890-17.png differ diff --git a/test/fixtures/integration/labels/63178-48891-17.png b/test/fixtures/integration/labels/63178-48891-17.png new file mode 100644 index 0000000..51e9adc Binary files /dev/null and b/test/fixtures/integration/labels/63178-48891-17.png differ diff --git a/test/fixtures/integration/labels/63178-48892-17.png b/test/fixtures/integration/labels/63178-48892-17.png new file mode 100644 index 0000000..e99dfc9 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48892-17.png differ diff --git a/test/fixtures/integration/labels/63178-48893-17.png b/test/fixtures/integration/labels/63178-48893-17.png new file mode 100644 index 0000000..9c61b19 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48893-17.png differ diff --git a/test/fixtures/integration/labels/63178-48894-17.png b/test/fixtures/integration/labels/63178-48894-17.png new file mode 100644 index 0000000..624bc93 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48894-17.png differ diff --git a/test/fixtures/integration/labels/63178-48895-17.png b/test/fixtures/integration/labels/63178-48895-17.png new file mode 100644 index 0000000..b3ffc4d Binary files /dev/null and b/test/fixtures/integration/labels/63178-48895-17.png differ diff --git a/test/fixtures/integration/labels/63178-48896-17.png b/test/fixtures/integration/labels/63178-48896-17.png new file mode 100644 index 0000000..8767fd3 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48896-17.png differ diff --git a/test/fixtures/integration/labels/63178-48902-17.png b/test/fixtures/integration/labels/63178-48902-17.png new file mode 100644 index 0000000..f61e8b8 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48902-17.png differ diff --git a/test/fixtures/integration/labels/63178-48903-17.png b/test/fixtures/integration/labels/63178-48903-17.png new file mode 100644 index 0000000..39f8b45 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48903-17.png differ diff --git a/test/fixtures/integration/labels/63178-48905-17.png b/test/fixtures/integration/labels/63178-48905-17.png new file mode 100644 index 0000000..0fe7bc2 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48905-17.png differ diff --git a/test/fixtures/integration/labels/63178-48908-17.png b/test/fixtures/integration/labels/63178-48908-17.png new file mode 100644 index 0000000..75299e2 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48908-17.png differ diff --git a/test/fixtures/integration/labels/63178-48909-17.png b/test/fixtures/integration/labels/63178-48909-17.png new file mode 100644 index 0000000..bb0b7d8 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48909-17.png differ diff --git a/test/fixtures/integration/labels/63178-48912-17.png b/test/fixtures/integration/labels/63178-48912-17.png new file mode 100644 index 0000000..078b345 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48912-17.png differ diff --git a/test/fixtures/integration/labels/63178-48915-17.png b/test/fixtures/integration/labels/63178-48915-17.png new file mode 100644 index 0000000..14ae09a Binary files /dev/null and b/test/fixtures/integration/labels/63178-48915-17.png differ diff --git a/test/fixtures/integration/labels/63178-48934-17.png b/test/fixtures/integration/labels/63178-48934-17.png new file mode 100644 index 0000000..32d1fde Binary files /dev/null and b/test/fixtures/integration/labels/63178-48934-17.png differ diff --git a/test/fixtures/integration/labels/63178-48935-17.png b/test/fixtures/integration/labels/63178-48935-17.png new file mode 100644 index 0000000..57a6f7b Binary files /dev/null and b/test/fixtures/integration/labels/63178-48935-17.png differ diff --git a/test/fixtures/integration/labels/63178-48950-17.png b/test/fixtures/integration/labels/63178-48950-17.png new file mode 100644 index 0000000..a972fee Binary files /dev/null and b/test/fixtures/integration/labels/63178-48950-17.png differ diff --git a/test/fixtures/integration/labels/63178-48951-17.png b/test/fixtures/integration/labels/63178-48951-17.png new file mode 100644 index 0000000..8a8dca1 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48951-17.png differ diff --git a/test/fixtures/integration/labels/63178-48959-17.png b/test/fixtures/integration/labels/63178-48959-17.png new file mode 100644 index 0000000..bd1590a Binary files /dev/null and b/test/fixtures/integration/labels/63178-48959-17.png differ diff --git a/test/fixtures/integration/labels/63178-48960-17.png b/test/fixtures/integration/labels/63178-48960-17.png new file mode 100644 index 0000000..383d578 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48960-17.png differ diff --git a/test/fixtures/integration/labels/63178-48961-17.png b/test/fixtures/integration/labels/63178-48961-17.png new file mode 100644 index 0000000..b532706 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48961-17.png differ diff --git a/test/fixtures/integration/labels/63178-48966-17.png b/test/fixtures/integration/labels/63178-48966-17.png new file mode 100644 index 0000000..155c997 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48966-17.png differ diff --git a/test/fixtures/integration/labels/63178-48967-17.png b/test/fixtures/integration/labels/63178-48967-17.png new file mode 100644 index 0000000..b03f658 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48967-17.png differ diff --git a/test/fixtures/integration/labels/63178-48968-17.png b/test/fixtures/integration/labels/63178-48968-17.png new file mode 100644 index 0000000..b824f2c Binary files /dev/null and b/test/fixtures/integration/labels/63178-48968-17.png differ diff --git a/test/fixtures/integration/labels/63178-48969-17.png b/test/fixtures/integration/labels/63178-48969-17.png new file mode 100644 index 0000000..87e3b5d Binary files /dev/null and b/test/fixtures/integration/labels/63178-48969-17.png differ diff --git a/test/fixtures/integration/labels/63178-48980-17.png b/test/fixtures/integration/labels/63178-48980-17.png new file mode 100644 index 0000000..dbbec52 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48980-17.png differ diff --git a/test/fixtures/integration/labels/63178-48981-17.png b/test/fixtures/integration/labels/63178-48981-17.png new file mode 100644 index 0000000..055ac13 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48981-17.png differ diff --git a/test/fixtures/integration/labels/63178-48982-17.png b/test/fixtures/integration/labels/63178-48982-17.png new file mode 100644 index 0000000..baa21b2 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48982-17.png differ diff --git a/test/fixtures/integration/labels/63178-48985-17.png b/test/fixtures/integration/labels/63178-48985-17.png new file mode 100644 index 0000000..fb8a294 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48985-17.png differ diff --git a/test/fixtures/integration/labels/63178-48986-17.png b/test/fixtures/integration/labels/63178-48986-17.png new file mode 100644 index 0000000..c0f4ef0 Binary files /dev/null and b/test/fixtures/integration/labels/63178-48986-17.png differ diff --git a/test/fixtures/integration/labels/63179-48799-17.png b/test/fixtures/integration/labels/63179-48799-17.png new file mode 100644 index 0000000..3a01353 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48799-17.png differ diff --git a/test/fixtures/integration/labels/63179-48800-17.png b/test/fixtures/integration/labels/63179-48800-17.png new file mode 100644 index 0000000..0c68cde Binary files /dev/null and b/test/fixtures/integration/labels/63179-48800-17.png differ diff --git a/test/fixtures/integration/labels/63179-48813-17.png b/test/fixtures/integration/labels/63179-48813-17.png new file mode 100644 index 0000000..87defd1 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48813-17.png differ diff --git a/test/fixtures/integration/labels/63179-48814-17.png b/test/fixtures/integration/labels/63179-48814-17.png new file mode 100644 index 0000000..26538e4 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48814-17.png differ diff --git a/test/fixtures/integration/labels/63179-48833-17.png b/test/fixtures/integration/labels/63179-48833-17.png new file mode 100644 index 0000000..b16587a Binary files /dev/null and b/test/fixtures/integration/labels/63179-48833-17.png differ diff --git a/test/fixtures/integration/labels/63179-48834-17.png b/test/fixtures/integration/labels/63179-48834-17.png new file mode 100644 index 0000000..74cd4d6 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48834-17.png differ diff --git a/test/fixtures/integration/labels/63179-48843-17.png b/test/fixtures/integration/labels/63179-48843-17.png new file mode 100644 index 0000000..928dd2f Binary files /dev/null and b/test/fixtures/integration/labels/63179-48843-17.png differ diff --git a/test/fixtures/integration/labels/63179-48844-17.png b/test/fixtures/integration/labels/63179-48844-17.png new file mode 100644 index 0000000..dd8fc7f Binary files /dev/null and b/test/fixtures/integration/labels/63179-48844-17.png differ diff --git a/test/fixtures/integration/labels/63179-48845-17.png b/test/fixtures/integration/labels/63179-48845-17.png new file mode 100644 index 0000000..8379c29 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48845-17.png differ diff --git a/test/fixtures/integration/labels/63179-48846-17.png b/test/fixtures/integration/labels/63179-48846-17.png new file mode 100644 index 0000000..eab73cc Binary files /dev/null and b/test/fixtures/integration/labels/63179-48846-17.png differ diff --git a/test/fixtures/integration/labels/63179-48847-17.png b/test/fixtures/integration/labels/63179-48847-17.png new file mode 100644 index 0000000..f031b46 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48847-17.png differ diff --git a/test/fixtures/integration/labels/63179-48848-17.png b/test/fixtures/integration/labels/63179-48848-17.png new file mode 100644 index 0000000..f93b889 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48848-17.png differ diff --git a/test/fixtures/integration/labels/63179-48867-17.png b/test/fixtures/integration/labels/63179-48867-17.png new file mode 100644 index 0000000..a74f35d Binary files /dev/null and b/test/fixtures/integration/labels/63179-48867-17.png differ diff --git a/test/fixtures/integration/labels/63179-48871-17.png b/test/fixtures/integration/labels/63179-48871-17.png new file mode 100644 index 0000000..c9ffc4c Binary files /dev/null and b/test/fixtures/integration/labels/63179-48871-17.png differ diff --git a/test/fixtures/integration/labels/63179-48875-17.png b/test/fixtures/integration/labels/63179-48875-17.png new file mode 100644 index 0000000..e854d31 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48875-17.png differ diff --git a/test/fixtures/integration/labels/63179-48894-17.png b/test/fixtures/integration/labels/63179-48894-17.png new file mode 100644 index 0000000..efa481d Binary files /dev/null and b/test/fixtures/integration/labels/63179-48894-17.png differ diff --git a/test/fixtures/integration/labels/63179-48895-17.png b/test/fixtures/integration/labels/63179-48895-17.png new file mode 100644 index 0000000..8fdbe28 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48895-17.png differ diff --git a/test/fixtures/integration/labels/63179-48903-17.png b/test/fixtures/integration/labels/63179-48903-17.png new file mode 100644 index 0000000..df8bc26 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48903-17.png differ diff --git a/test/fixtures/integration/labels/63179-48904-17.png b/test/fixtures/integration/labels/63179-48904-17.png new file mode 100644 index 0000000..5a65eec Binary files /dev/null and b/test/fixtures/integration/labels/63179-48904-17.png differ diff --git a/test/fixtures/integration/labels/63179-48905-17.png b/test/fixtures/integration/labels/63179-48905-17.png new file mode 100644 index 0000000..38abee8 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48905-17.png differ diff --git a/test/fixtures/integration/labels/63179-48907-17.png b/test/fixtures/integration/labels/63179-48907-17.png new file mode 100644 index 0000000..8cf2d33 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48907-17.png differ diff --git a/test/fixtures/integration/labels/63179-48908-17.png b/test/fixtures/integration/labels/63179-48908-17.png new file mode 100644 index 0000000..3c565eb Binary files /dev/null and b/test/fixtures/integration/labels/63179-48908-17.png differ diff --git a/test/fixtures/integration/labels/63179-48951-17.png b/test/fixtures/integration/labels/63179-48951-17.png new file mode 100644 index 0000000..262b1cc Binary files /dev/null and b/test/fixtures/integration/labels/63179-48951-17.png differ diff --git a/test/fixtures/integration/labels/63179-48959-17.png b/test/fixtures/integration/labels/63179-48959-17.png new file mode 100644 index 0000000..c8b056b Binary files /dev/null and b/test/fixtures/integration/labels/63179-48959-17.png differ diff --git a/test/fixtures/integration/labels/63179-48960-17.png b/test/fixtures/integration/labels/63179-48960-17.png new file mode 100644 index 0000000..d86b299 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48960-17.png differ diff --git a/test/fixtures/integration/labels/63179-48967-17.png b/test/fixtures/integration/labels/63179-48967-17.png new file mode 100644 index 0000000..7b786e0 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48967-17.png differ diff --git a/test/fixtures/integration/labels/63179-48968-17.png b/test/fixtures/integration/labels/63179-48968-17.png new file mode 100644 index 0000000..cae15f4 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48968-17.png differ diff --git a/test/fixtures/integration/labels/63179-48969-17.png b/test/fixtures/integration/labels/63179-48969-17.png new file mode 100644 index 0000000..c7695b2 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48969-17.png differ diff --git a/test/fixtures/integration/labels/63179-48970-17.png b/test/fixtures/integration/labels/63179-48970-17.png new file mode 100644 index 0000000..e8d677f Binary files /dev/null and b/test/fixtures/integration/labels/63179-48970-17.png differ diff --git a/test/fixtures/integration/labels/63179-48979-17.png b/test/fixtures/integration/labels/63179-48979-17.png new file mode 100644 index 0000000..09b1bec Binary files /dev/null and b/test/fixtures/integration/labels/63179-48979-17.png differ diff --git a/test/fixtures/integration/labels/63179-48980-17.png b/test/fixtures/integration/labels/63179-48980-17.png new file mode 100644 index 0000000..44f19d7 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48980-17.png differ diff --git a/test/fixtures/integration/labels/63179-48986-17.png b/test/fixtures/integration/labels/63179-48986-17.png new file mode 100644 index 0000000..9666c26 Binary files /dev/null and b/test/fixtures/integration/labels/63179-48986-17.png differ diff --git a/test/fixtures/integration/labels/63179-48995-17.png b/test/fixtures/integration/labels/63179-48995-17.png new file mode 100644 index 0000000..05746ca Binary files /dev/null and b/test/fixtures/integration/labels/63179-48995-17.png differ diff --git a/test/fixtures/integration/labels/63179-48996-17.png b/test/fixtures/integration/labels/63179-48996-17.png new file mode 100644 index 0000000..b31706d Binary files /dev/null and b/test/fixtures/integration/labels/63179-48996-17.png differ diff --git a/test/fixtures/integration/labels/63179-48997-17.png b/test/fixtures/integration/labels/63179-48997-17.png new file mode 100644 index 0000000..e83b8bf Binary files /dev/null and b/test/fixtures/integration/labels/63179-48997-17.png differ diff --git a/test/fixtures/integration/labels/63180-48812-17.png b/test/fixtures/integration/labels/63180-48812-17.png new file mode 100644 index 0000000..cb469ce Binary files /dev/null and b/test/fixtures/integration/labels/63180-48812-17.png differ diff --git a/test/fixtures/integration/labels/63180-48813-17.png b/test/fixtures/integration/labels/63180-48813-17.png new file mode 100644 index 0000000..e0239af Binary files /dev/null and b/test/fixtures/integration/labels/63180-48813-17.png differ diff --git a/test/fixtures/integration/labels/63180-48846-17.png b/test/fixtures/integration/labels/63180-48846-17.png new file mode 100644 index 0000000..1000ecd Binary files /dev/null and b/test/fixtures/integration/labels/63180-48846-17.png differ diff --git a/test/fixtures/integration/labels/63180-48847-17.png b/test/fixtures/integration/labels/63180-48847-17.png new file mode 100644 index 0000000..4f51b3e Binary files /dev/null and b/test/fixtures/integration/labels/63180-48847-17.png differ diff --git a/test/fixtures/integration/labels/63180-48848-17.png b/test/fixtures/integration/labels/63180-48848-17.png new file mode 100644 index 0000000..c8e523a Binary files /dev/null and b/test/fixtures/integration/labels/63180-48848-17.png differ diff --git a/test/fixtures/integration/labels/63180-48867-17.png b/test/fixtures/integration/labels/63180-48867-17.png new file mode 100644 index 0000000..ac2cc09 Binary files /dev/null and b/test/fixtures/integration/labels/63180-48867-17.png differ diff --git a/test/fixtures/integration/labels/63180-48895-17.png b/test/fixtures/integration/labels/63180-48895-17.png new file mode 100644 index 0000000..aad781b Binary files /dev/null and b/test/fixtures/integration/labels/63180-48895-17.png differ diff --git a/test/fixtures/integration/labels/63180-48903-17.png b/test/fixtures/integration/labels/63180-48903-17.png new file mode 100644 index 0000000..ed58c06 Binary files /dev/null and b/test/fixtures/integration/labels/63180-48903-17.png differ diff --git a/test/fixtures/integration/labels/63180-48904-17.png b/test/fixtures/integration/labels/63180-48904-17.png new file mode 100644 index 0000000..4f2354a Binary files /dev/null and b/test/fixtures/integration/labels/63180-48904-17.png differ diff --git a/test/fixtures/integration/labels/63180-48907-17.png b/test/fixtures/integration/labels/63180-48907-17.png new file mode 100644 index 0000000..f2d8074 Binary files /dev/null and b/test/fixtures/integration/labels/63180-48907-17.png differ diff --git a/test/fixtures/integration/labels/63180-48951-17.png b/test/fixtures/integration/labels/63180-48951-17.png new file mode 100644 index 0000000..2c3e7f9 Binary files /dev/null and b/test/fixtures/integration/labels/63180-48951-17.png differ diff --git a/test/fixtures/integration/labels/63180-48970-17.png b/test/fixtures/integration/labels/63180-48970-17.png new file mode 100644 index 0000000..22c777e Binary files /dev/null and b/test/fixtures/integration/labels/63180-48970-17.png differ diff --git a/test/fixtures/integration/labels/63180-48971-17.png b/test/fixtures/integration/labels/63180-48971-17.png new file mode 100644 index 0000000..dbef569 Binary files /dev/null and b/test/fixtures/integration/labels/63180-48971-17.png differ diff --git a/test/fixtures/integration/labels/63180-48972-17.png b/test/fixtures/integration/labels/63180-48972-17.png new file mode 100644 index 0000000..e8ab5b5 Binary files /dev/null and b/test/fixtures/integration/labels/63180-48972-17.png differ diff --git a/test/fixtures/integration/labels/63180-48978-17.png b/test/fixtures/integration/labels/63180-48978-17.png new file mode 100644 index 0000000..1edafd0 Binary files /dev/null and b/test/fixtures/integration/labels/63180-48978-17.png differ diff --git a/test/fixtures/integration/labels/63180-48979-17.png b/test/fixtures/integration/labels/63180-48979-17.png new file mode 100644 index 0000000..f7bbb08 Binary files /dev/null and b/test/fixtures/integration/labels/63180-48979-17.png differ diff --git a/test/fixtures/integration/labels/63180-48986-17.png b/test/fixtures/integration/labels/63180-48986-17.png new file mode 100644 index 0000000..9a35d6e Binary files /dev/null and b/test/fixtures/integration/labels/63180-48986-17.png differ diff --git a/test/fixtures/integration/labels/63180-48987-17.png b/test/fixtures/integration/labels/63180-48987-17.png new file mode 100644 index 0000000..9c4ce72 Binary files /dev/null and b/test/fixtures/integration/labels/63180-48987-17.png differ diff --git a/test/fixtures/integration/labels/63180-48995-17.png b/test/fixtures/integration/labels/63180-48995-17.png new file mode 100644 index 0000000..aad7697 Binary files /dev/null and b/test/fixtures/integration/labels/63180-48995-17.png differ diff --git a/test/fixtures/integration/labels/63180-48996-17.png b/test/fixtures/integration/labels/63180-48996-17.png new file mode 100644 index 0000000..5bf53d8 Binary files /dev/null and b/test/fixtures/integration/labels/63180-48996-17.png differ diff --git a/test/fixtures/integration/labels/63180-48997-17.png b/test/fixtures/integration/labels/63180-48997-17.png new file mode 100644 index 0000000..77faf17 Binary files /dev/null and b/test/fixtures/integration/labels/63180-48997-17.png differ diff --git a/test/fixtures/integration/portugal-z10.mbtiles b/test/fixtures/integration/portugal-z10.mbtiles new file mode 100644 index 0000000..ab6addc Binary files /dev/null and b/test/fixtures/integration/portugal-z10.mbtiles differ diff --git a/test/fixtures/integration/portugal-z17.mbtiles b/test/fixtures/integration/portugal-z17.mbtiles index f5466e8..dba495f 100644 Binary files a/test/fixtures/integration/portugal-z17.mbtiles and b/test/fixtures/integration/portugal-z17.mbtiles differ diff --git a/test/fixtures/integration/portugal_aoi.geojson b/test/fixtures/integration/portugal_aoi.geojson new file mode 100644 index 0000000..224310b --- /dev/null +++ b/test/fixtures/integration/portugal_aoi.geojson @@ -0,0 +1,8 @@ +{ +"type": "FeatureCollection", +"name": "portugal_aoi", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, +"features": [ +{ "type": "Feature", "properties": { "name": null }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -9.4575, 38.8467 ], [ -9.451, 38.8467 ], [ -9.451, 38.8513 ], [ -9.4575, 38.8513 ], [ -9.4575, 38.8467 ] ] ] } } +] +} diff --git a/test/fixtures/integration/spain-z10.mbtiles b/test/fixtures/integration/spain-z10.mbtiles new file mode 100644 index 0000000..a42df14 Binary files /dev/null and b/test/fixtures/integration/spain-z10.mbtiles differ diff --git a/test/fixtures/validation/passing.json b/test/fixtures/validation/passing.json index 109d6f7..cdbdc91 100644 --- a/test/fixtures/validation/passing.json +++ b/test/fixtures/validation/passing.json @@ -1,5 +1,5 @@ { - "country": "portugal", + "country": ["portugal"], "bounding_box": [0, 0, 1, 1], "zoom": 16, "classes": [ diff --git a/test/integration/test_classification_labels.py b/test/integration/test_classification_labels.py index 4ea1cef..7e19586 100644 --- a/test/integration/test_classification_labels.py +++ b/test/integration/test_classification_labels.py @@ -13,7 +13,8 @@ class TestClassificationLabel(unittest.TestCase): @classmethod def setUpClass(cls): makedirs('integration-cl') - copyfile('test/fixtures/integration/portugal-z17.mbtiles', 'integration-cl/portugal-z17.mbtiles') + copyfile('test/fixtures/integration/portugal-z10.mbtiles', 'integration-cl/portugal-z10.mbtiles') + copyfile('test/fixtures/integration/spain-z10.mbtiles', 'integration-cl/spain-z10.mbtiles') @classmethod def tearDownClass(cls): @@ -24,13 +25,23 @@ def test_cli(self): # our command line output should look like this expected_output = """Determining labels for each tile --- -Water Tower: 1 tiles +Water Tower: 0 tiles +Building: 0 tiles +Farmland: 11 tiles +Ruins: 0 tiles +Parking: 2 tiles +Roads: 0 tiles +Total tiles: 24 +Writing out labels to integration-cl/labels.npz +Determining labels for each tile +--- +Water Tower: 0 tiles Building: 1 tiles -Farmland: 0 tiles -Ruins: 1 tiles -Parking: 1 tiles -Roads: 8 tiles -Total tiles: 9 +Farmland: 11 tiles +Ruins: 0 tiles +Parking: 5 tiles +Roads: 0 tiles +Total tiles: 24 Writing out labels to integration-cl/labels.npz """ @@ -41,16 +52,32 @@ def test_cli(self): # our labels should look like this expected_labels = { - '62092-50162-17': np.array([1, 0, 0, 0, 0, 0, 0]), - '62092-50163-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62092-50164-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62093-50162-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62093-50164-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62094-50162-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62094-50164-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62094-50163-17': np.array([0, 1, 1, 0, 0, 0, 1]), - '62093-50163-17': np.array([0, 0, 0, 0, 1, 1, 1]) - } + '491-396-10': np.array([0, 0, 0, 0, 0, 0, 0]), + '491-397-10': np.array([0, 0, 0, 0, 0, 0, 0]), + '492-395-10': np.array([0, 0, 0, 0, 0, 0, 0]), + '491-395-10': np.array([0, 0, 0, 0, 0, 0, 0]), + '492-394-10': np.array([0, 0, 0, 0, 0, 0, 0]), + '491-394-10': np.array([0, 0, 0, 1.5, 0, 0, 0]), + '488-395-10': np.array([0, 0, 0, 12, 0, 0, 0]), + '489-396-10': np.array([0, 0, 0, 1.5, 0, 0, 0]), + '489-397-10': np.array([0, 0, 0, 0, 0, 0, 0]), + '490-395-10': np.array([0, 0, 0, 0, 0, 0, 0]), + '490-396-10': np.array([0, 0, 0, 0, 0, 0, 0]), + '490-394-10': np.array([0, 0, 0, 6, 0, 0, 0]), + '488-396-10': np.array([0, 0, 0, 11, 0, 0, 0]), + '488-394-10': np.array([0, 0, 0, 1, 0, 0.5, 0]), + '488-397-10': np.array([0, 0, 0, 7, 0, 0, 0]), + '489-395-10': np.array([0, 0, 0, 2.5, 0, 0, 0]), + '489-394-10': np.array([0, 0, 0, 0, 0, 1, 0]), + '490-397-10': np.array([0, 0, 0, 1, 0, 0, 0]), + '492-396-10': np.array([0, 0, 0, 0, 0, 0, 0]), + '492-397-10': np.array([0, 0, 1.5, 56, 0, 0.5, 0]), + '493-394-10': np.array([0, 0, 0, 0, 0, 0, 0]), + '493-395-10': np.array([0, 0, 0, 0, 0, 0, 0]), + '493-396-10': np.array([0, 0, 0, 17.5, 0, 0.5, 0]), + '493-397-10': np.array([0, 0, 0, 0, 0, 1, 0]) + } + labels = np.load('integration-cl/labels.npz') self.assertEqual(len(labels.files), len(expected_labels.keys())) # First check number of tiles diff --git a/test/integration/test_classification_labels_aoi.py b/test/integration/test_classification_labels_aoi.py new file mode 100644 index 0000000..4d827df --- /dev/null +++ b/test/integration/test_classification_labels_aoi.py @@ -0,0 +1,66 @@ +"""Test that the following CLI command returns the expected outputs +label-maker labels --dest integration-cl --config test/fixtures/integration/config.aoi.json""" +import unittest +import json +from os import makedirs +from shutil import copyfile, rmtree +import subprocess + +import numpy as np + +class TestClassificationLabel(unittest.TestCase): + """Tests for classification label creation""" + @classmethod + def setUpClass(cls): + makedirs('integration-cl') + copyfile('test/fixtures/integration/portugal-z17.mbtiles', 'integration-cl/portugal-z17.mbtiles') + + @classmethod + def tearDownClass(cls): + rmtree('integration-cl') + + def test_cli(self): + """Verify stdout, geojson, and labels.npz produced by CLI""" + # our command line output should look like this + expected_output = """Determining labels for each tile +--- +Water Tower: 1 tiles +Building: 1 tiles +Farmland: 0 tiles +Ruins: 0 tiles +Parking: 1 tiles +Roads: 0 tiles +Total tiles: 9 +Writing out labels to integration-cl/labels.npz +""" + + cmd = 'label-maker labels --dest integration-cl --config test/fixtures/integration/config.aoi.json' + cmd = cmd.split(' ') + with subprocess.Popen(cmd, universal_newlines=True, stdout=subprocess.PIPE) as p: + self.assertEqual(expected_output, p.stdout.read()) + + # our labels should look like this + expected_labels = { + '62092-50162-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62092-50163-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62092-50164-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62093-50162-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62093-50164-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62094-50162-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62094-50164-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62094-50163-17': np.array([0, 319, 0.5, 0, 0, 0, 0]), + '62093-50163-17': np.array([0, 0, 0, 0, 0, 1268, 0]) + } + + labels = np.load('integration-cl/labels.npz') + self.assertEqual(len(labels.files), len(expected_labels.keys())) # First check number of tiles + for tile in labels.files: + self.assertTrue(np.array_equal(expected_labels[tile], labels[tile])) # Now, content + + # our GeoJSON looks like the fixture + with open('test/fixtures/integration/classification.geojson') as fixture: + with open('integration-cl/classification.geojson') as geojson_file: + expected_geojson = json.load(fixture) + geojson = json.load(geojson_file) + + self.assertCountEqual(expected_geojson, geojson) diff --git a/test/integration/test_classification_labels_geojson.py b/test/integration/test_classification_labels_geojson.py index ef192af..c0df4f7 100644 --- a/test/integration/test_classification_labels_geojson.py +++ b/test/integration/test_classification_labels_geojson.py @@ -32,24 +32,75 @@ def test_cli(self): Roads: 8 tiles Total tiles: 9 Writing out labels to integration-cl/labels.npz +Determining labels for each tile +--- +Water Tower: 1 tiles +Building: 1 tiles +Farmland: 0 tiles +Ruins: 1 tiles +Parking: 1 tiles +Roads: 8 tiles +Total tiles: 9 +Writing out labels to integration-cl/labels.npz +Determining labels for each tile +--- +Water Tower: 1 tiles +Building: 1 tiles +Farmland: 0 tiles +Ruins: 1 tiles +Parking: 1 tiles +Roads: 8 tiles +Total tiles: 9 +Writing out labels to integration-cl/labels.npz +Determining labels for each tile +--- +Water Tower: 1 tiles +Building: 1 tiles +Farmland: 0 tiles +Ruins: 1 tiles +Parking: 1 tiles +Roads: 8 tiles +Total tiles: 9 +Writing out labels to integration-cl/labels.npz +Determining labels for each tile +--- +Water Tower: 1 tiles +Building: 1 tiles +Farmland: 0 tiles +Ruins: 1 tiles +Parking: 1 tiles +Roads: 8 tiles +Total tiles: 9 +Writing out labels to integration-cl/labels.npz +Determining labels for each tile +--- +Water Tower: 1 tiles +Building: 1 tiles +Farmland: 0 tiles +Ruins: 1 tiles +Parking: 1 tiles +Roads: 8 tiles +Total tiles: 9 +Writing out labels to integration-cl/labels.npz """ cmd = 'label-maker labels --dest integration-cl --config test/fixtures/integration/config.geojson.json' cmd = cmd.split(' ') with subprocess.Popen(cmd, universal_newlines=True, stdout=subprocess.PIPE) as p: + self.maxDiff = None self.assertEqual(expected_output, p.stdout.read()) # our labels should look like this expected_labels = { - '62092-50162-17': np.array([1, 0, 0, 0, 0, 0, 0]), - '62092-50163-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62092-50164-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62093-50162-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62093-50164-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62094-50162-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62094-50164-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62094-50163-17': np.array([0, 1, 1, 0, 0, 0, 1]), - '62093-50163-17': np.array([0, 0, 0, 0, 1, 1, 1]) + '62092-50162-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62092-50163-17': np.array([0, 0, 0, 0, 0, 0, 32]), + '62092-50164-17': np.array([0, 0, 0, 0, 0, 0, 115.5]), + '62093-50162-17': np.array([0, 0, 0, 0, 0, 0, 76]), + '62093-50164-17': np.array([0, 0, 0, 0, 0, 0, 76]), + '62094-50162-17': np.array([0, 0, 0, 0, 0, 0, 82]), + '62094-50164-17': np.array([0, 0, 0, 0, 0, 0, 424.5]), + '62094-50163-17': np.array([0, 319, 0.5, 0, 0, 0, 62.5]), + '62093-50163-17': np.array([0, 0, 0, 0, 217, 1268, 71]) } labels = np.load('integration-cl/labels.npz') diff --git a/test/integration/test_classification_labels_sparse.py b/test/integration/test_classification_labels_sparse.py index 00ff208..f5ab7ba 100644 --- a/test/integration/test_classification_labels_sparse.py +++ b/test/integration/test_classification_labels_sparse.py @@ -27,9 +27,9 @@ def test_cli(self): Water Tower: 1 tiles Building: 1 tiles Farmland: 0 tiles -Ruins: 1 tiles +Ruins: 0 tiles Parking: 1 tiles -Roads: 8 tiles +Roads: 0 tiles Total tiles: 9 Using sparse mode; subselected 0 background tiles Writing out labels to integration-cl/labels.npz @@ -42,14 +42,8 @@ def test_cli(self): # our labels should look like this expected_labels = { - '62092-50163-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62092-50164-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62093-50162-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62093-50164-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62094-50162-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62094-50164-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62094-50163-17': np.array([0, 1, 1, 0, 0, 0, 1]), - '62093-50163-17': np.array([0, 0, 0, 0, 1, 1, 1]) + '62094-50163-17': np.array([0, 319, 0.5, 0, 0, 0, 0]), + '62093-50163-17': np.array([0, 0, 0, 0, 0, 1268, 0]) } labels = np.load('integration-cl/labels.npz') @@ -58,7 +52,7 @@ def test_cli(self): self.assertTrue(np.array_equal(expected_labels[tile], labels[tile])) # Now, content # our GeoJSON looks like the fixture - with open('test/fixtures/integration/classification.geojson') as fixture: + with open('test/fixtures/integration/classification_sparse.geojson') as fixture: with open('integration-cl/classification.geojson') as geojson_file: expected_geojson = json.load(fixture) geojson = json.load(geojson_file) diff --git a/test/integration/test_directory_move.py b/test/integration/test_directory_move.py index e3e457c..509748b 100644 --- a/test/integration/test_directory_move.py +++ b/test/integration/test_directory_move.py @@ -27,21 +27,21 @@ def test_cli(self): chdir('..') directory = 'label-maker' - cmd = 'label-maker labels --dest {}/integration-cl --config {}/test/fixtures/integration/config.integration.json'.format(directory, directory) + cmd = 'label-maker labels --dest {}/integration-cl --config {}/test/fixtures/integration/config.integration_sparse.json'.format(directory, directory) cmd = cmd.split(' ') subprocess.run(cmd, universal_newlines=True) # our labels should look like this expected_labels = { - '62092-50162-17': np.array([1, 0, 0, 0, 0, 0, 0]), - '62092-50163-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62092-50164-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62093-50162-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62093-50164-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62094-50162-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62094-50164-17': np.array([0, 0, 0, 0, 0, 0, 1]), - '62094-50163-17': np.array([0, 1, 1, 0, 0, 0, 1]), - '62093-50163-17': np.array([0, 0, 0, 0, 1, 1, 1]) + '62092-50162-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62092-50163-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62092-50164-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62093-50162-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62093-50164-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62094-50162-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62094-50164-17': np.array([0, 0, 0, 0, 0, 0, 0]), + '62094-50163-17': np.array([0, 319, 0.5, 0, 0, 0, 0]), + '62093-50163-17': np.array([0, 0, 0, 0, 0, 1268, 0]) } # move back into the directory diff --git a/test/integration/test_object_labels.py b/test/integration/test_object_labels.py index 9e68601..f5c506f 100644 --- a/test/integration/test_object_labels.py +++ b/test/integration/test_object_labels.py @@ -12,7 +12,8 @@ class TestObjectDetectionLabel(unittest.TestCase): @classmethod def setUpClass(cls): makedirs('integration-od') - copyfile('test/fixtures/integration/portugal-z17.mbtiles', 'integration-od/portugal-z17.mbtiles') + copyfile('test/fixtures/integration/portugal-z10.mbtiles', 'integration-od/portugal-z10.mbtiles') + copyfile('test/fixtures/integration/spain-z10.mbtiles', 'integration-od/spain-z10.mbtiles') @classmethod def tearDownClass(cls): @@ -25,49 +26,114 @@ def test_cli(self): subprocess.run(cmd, universal_newlines=True) labels = np.load("integration-od/labels.npz") - + expected_bboxes = dict() - expected_bboxes['62092-50162-17'] = np.empty((0, 5)) - expected_bboxes['62092-50163-17'] = np.array([ - [209, 192, 255, 255, 6], [253, 251, 255, 255, 6] - ]) - expected_bboxes['62092-50164-17'] = np.array([ - [209, 0, 250, 28, 6], [242, 0, 255, 28, 6], - [222, 13, 235, 66, 6], [87, 20, 250, 255, 6] - ]) - expected_bboxes['62093-50162-17'] = np.array([ - [81, 145, 128, 255, 6], [124, 0, 218, 255, 6], - [207, 0, 247, 153, 6], [140, 108, 193, 255, 6], - [125, 236, 152, 255, 6], [162, 177, 176, 216, 6], - [170, 151, 214, 179, 6], [141, 166, 244, 255, 6], - [203, 88, 255, 186, 6] - ]) - expected_bboxes['62093-50163-17'] = np.array([ - [81, 0, 125, 15, 6], [117, 0, 133, 17, 6], - [119, 0, 151, 36, 6], [125, 0, 140, 7, 6], - [141, 0, 187, 7, 6], [64, 32, 91, 60, 4], - [84, 50, 106, 64, 6], [111, 9, 127, 26, 6], - [111, 18, 127, 35, 6], [84, 15, 119, 52, 6], - [74, 6, 129, 69, 5], [93, 24, 123, 46, 6], - [88, 27, 127, 93, 6], [0, 85, 96, 213, 6], - [0, 85, 96, 255, 6], [115, 38, 255, 100, 6] - ]) - expected_bboxes['62094-50162-17'] = np.array([ - [67, 0, 172, 248, 6], [0, 172, 90, 255, 6], - [91, 170, 255, 227, 6] - ]) - expected_bboxes['62093-50164-17'] = np.array([ - [0, 0, 12, 22, 6], [207, 158, 255, 195, 6] - ]) - expected_bboxes['62094-50163-17'] = np.array([ - [73, 0, 255, 78, 6], [30, 166, 60, 196, 1], - [30, 166, 60, 196, 2], [203, 129, 255, 255, 6], - [0, 90, 255, 138, 6] - ]) - expected_bboxes['62094-50164-17'] = np.array([ - [158, 0, 216, 82, 6], [0, 108, 147, 173, 6], - [139, 74, 254, 143, 6], [240, 90, 255, 232, 6] - ]) + + expected_bboxes['491-396-10'] = np.empty((0,5)) + + expected_bboxes['491-397-10'] = np.empty((0,5)) + + expected_bboxes['492-395-10'] = np.array([[243, 50, 251, 58, 2]]) + + expected_bboxes['491-395-10'] = np.empty((0,5)) + + expected_bboxes['492-394-10'] = np.array([[ 31, 58, 39, 66, 2], + [ 28, 119, 36, 127, 2], + [ 31, 66, 39, 74, 2], + [ 34, 60, 42, 68, 2], + [ 36, 65, 44, 73, 2], + [ 83, 231, 91, 239, 2]] + ) + + expected_bboxes['490-394-10'] = np.array([[ 53, 89, 61, 97, 1], + [203, 123, 211, 131, 1], + [204, 122, 212, 131, 1]] + ) + + expected_bboxes['491-394-10'] = np.empty((0,5)) + + expected_bboxes['488-396-10'] = np.array([[122, 0, 130, 4, 2], + [149, 55, 157, 63, 1]] + ) + + expected_bboxes['490-396-10'] = np.array([[157, 62, 165, 70, 2], + [157, 62, 165, 71, 2], + [158, 60, 166, 68, 2], + [158, 60, 166, 68, 2], + [158, 61, 166, 70, 2], + [158, 62, 166, 70, 2], + [184, 228, 192, 236, 1]] + ) + + expected_bboxes['490-395-10'] = np.empty((0,5)) + + expected_bboxes['489-396-10'] = np.array([[ 63, 68, 71, 76, 1], + [229, 253, 237, 255, 1]] + ) + + expected_bboxes['488-397-10'] = np.array([[109, 159, 117, 167, 2], + [109, 159, 118, 167, 2], + [252, 167, 255, 175, 2]] + ) + + expected_bboxes['488-395-10'] = np.array([[ 65, 120, 73, 128, 2], + [ 99, 169, 107, 177, 1], + [ 98, 216, 106, 224, 1], + [139, 139, 147, 147, 2], + [135, 143, 143, 151, 2], + [139, 140, 147, 148, 2], + [122, 251, 130, 255, 2]] + ) + + expected_bboxes['489-397-10'] = np.array([[ 0, 167, 5, 175, 2], + [ 8, 160, 16, 168, 2], + [ 24, 176, 32, 184, 2], + [ 58, 176, 66, 184, 2], + [150, 63, 158, 71, 2], + [229, 0, 237, 6, 1]] + ) + + expected_bboxes['488-394-10'] = np.array([[ 11, 243, 19, 251, 1], + [208, 92, 216, 100, 1]] + ) + + expected_bboxes['489-394-10'] = np.array([[ 85, 207, 93, 215, 1], + [134, 92, 142, 100, 1]] + ) + + expected_bboxes['489-395-10'] = np.array([[ 48, 204, 57, 212, 1]]) + + expected_bboxes['490-397-10'] = np.array([[206, 72, 214, 80, 1], + [193, 95, 201, 103, 1], + [213, 211, 221, 219, 2], + [222, 223, 230, 231, 1]] + ) + + expected_bboxes['492-396-10'] = np.array([[ 57, 6, 65, 14, 2], + [ 60, 9, 68, 17, 2], + [ 79, 21, 87, 29, 2], + [147, 81, 155, 89, 2], + [148, 91, 156, 99, 2], + [135, 101, 143, 109, 2]] + ) + + expected_bboxes['492-397-10'] = np.array([[ 40, 231, 48, 239, 1], + [ 71, 149, 79, 157, 2], + [134, 147, 143, 156, 2]] + ) + + expected_bboxes['493-394-10'] = np.array([[ 13, 186, 21, 194, 2], + [ 21, 191, 29, 199, 2]] + ) + + expected_bboxes['493-395-10'] = np.array([[17, 47, 25, 55, 2]]) + + expected_bboxes['493-396-10'] = np.empty((0,5)) + + expected_bboxes['493-397-10'] = np.array([[118, 166, 126, 174, 1], + [172, 43, 180, 51, 1], + [209, 133, 217, 141, 1]] + ) self.assertEqual(len(labels.files), len(expected_bboxes.keys())) # First check the number of tiles for tile in labels.files: diff --git a/test/integration/test_segmentation_labels.py b/test/integration/test_segmentation_labels.py index 3f97e40..1a8d910 100644 --- a/test/integration/test_segmentation_labels.py +++ b/test/integration/test_segmentation_labels.py @@ -12,7 +12,8 @@ class TestSegmentationLabel(unittest.TestCase): @classmethod def setUpClass(cls): makedirs('integration-sg') - copyfile('test/fixtures/integration/portugal-z17.mbtiles', 'integration-sg/portugal-z17.mbtiles') + copyfile('test/fixtures/integration/portugal-z10.mbtiles', 'integration-sg/portugal-z10.mbtiles') + copyfile('test/fixtures/integration/spain-z10.mbtiles', 'integration-sg/spain-z10.mbtiles') @classmethod def tearDownClass(cls): @@ -26,15 +27,31 @@ def test_cli(self): # our labels should look like this expected_sums = { - '62092-50162-17': 0, - '62092-50163-17': 2526, - '62092-50164-17': 13500, - '62093-50162-17': 36822, - '62093-50164-17': 2400, - '62094-50162-17': 21234, - '62094-50164-17': 19146, - '62094-50163-17': 21613, - '62093-50163-17': 31568 + '492-394-10': 10, + '490-396-10': 1, + '491-394-10': 1, + '490-394-10': 2, + '490-395-10': 1, + '489-396-10': 1, + '488-395-10': 10, + '488-396-10': 3, + '488-397-10': 4, + '489-397-10': 11, + '488-394-10': 2, + '490-397-10': 5, + '489-394-10': 1, + '492-395-10': 2, + '492-396-10': 6, + '492-397-10': 9, + '493-394-10': 4, + '493-395-10': 2, + '489-395-10': 0, + '491-395-10': 0, + '491-396-10': 0, + '491-397-10': 0, + '493-396-10': 0, + '493-397-10': 0 + } labels = np.load('integration-sg/labels.npz') diff --git a/test/integration/test_segmentation_labels_sparse.py b/test/integration/test_segmentation_labels_sparse.py index cb301c9..8e84a7b 100644 --- a/test/integration/test_segmentation_labels_sparse.py +++ b/test/integration/test_segmentation_labels_sparse.py @@ -30,10 +30,10 @@ def test_cli(self): '62092-50164-17': 13500, '62093-50162-17': 36822, '62093-50164-17': 2400, - '62094-50162-17': 21234, + '62094-50162-17': 16482, '62094-50164-17': 19146, '62094-50163-17': 21613, - '62093-50163-17': 31568 + '62093-50163-17': 30700 } labels = np.load('integration-sg/labels.npz') diff --git a/test/tiles/1087767-1046604-21.jpg b/test/tiles/1087767-1046604-21.jpg new file mode 100644 index 0000000..6a6d3a1 Binary files /dev/null and b/test/tiles/1087767-1046604-21.jpg differ diff --git a/test/tiles/146-195-9.jpeg b/test/tiles/146-195-9.jpeg new file mode 100644 index 0000000..dae1188 Binary files /dev/null and b/test/tiles/146-195-9.jpeg differ diff --git a/test/tiles/4686-6267-14.jpeg b/test/tiles/4686-6267-14.jpeg new file mode 100644 index 0000000..87296cf Binary files /dev/null and b/test/tiles/4686-6267-14.jpeg differ diff --git a/test/unit/test_label.py b/test/unit/test_label.py index c423bf8..004a0d3 100644 --- a/test/unit/test_label.py +++ b/test/unit/test_label.py @@ -17,7 +17,7 @@ def test_mapper(self): ml_type = 'classification' tile, label = _mapper(x, y, z, test_tile_data, dict(ml_type=ml_type, classes=classes)) self.assertEqual(tile, ('{!s}-{!s}-{!s}'.format(x, y, z))) - self.assertTrue(np.array_equal(label, np.array([0, 1], dtype=np.int))) + self.assertTrue(np.array_equal(label, np.array([0, 169], dtype=np.int))) # for object-detection we return the bounding box and class ml_type = 'object-detection' diff --git a/test/unit/test_validate.py b/test/unit/test_validate.py index 7e9acf0..d7be1ae 100644 --- a/test/unit/test_validate.py +++ b/test/unit/test_validate.py @@ -78,4 +78,4 @@ def test_bounds(self): if __name__ == '__main__': - unittest.main() + unittest.main() \ No newline at end of file