Merge branch 'master' into #45-SendGCodecommandtotheArduino
This commit is contained in:
		| @@ -30,5 +30,6 @@ def listToGCode(listIndex, pHeight, pWidth): | |||||||
| 	# FOOTER | 	# FOOTER | ||||||
| 	gcodeCommand.append('\nG0 Z0') | 	gcodeCommand.append('\nG0 Z0') | ||||||
| 	gcodeCommand.append('G28') | 	gcodeCommand.append('G28') | ||||||
|  | 	gcodeCommand.append('M18') | ||||||
| 	 | 	 | ||||||
| 	return gcodeCommand | 	return gcodeCommand | ||||||
| @@ -11,13 +11,17 @@ def scanHorizontal(image, rTool): | |||||||
| 	for line in range(height): | 	for line in range(height): | ||||||
| 		for column in range(width): | 		for column in range(width): | ||||||
|  |  | ||||||
|  | 			if column > 0: | ||||||
| 				if image[line][column] == 1 and image[line][column - 1] != 1: | 				if image[line][column] == 1 and image[line][column - 1] != 1: | ||||||
| 					for px in range(2 * rTool + 1): | 					for px in range(2 * rTool + 1): | ||||||
|  | 						if column - rTool >= 0 and 0 <= line - rTool + px < height: | ||||||
| 							if image[line - rTool + px][column - rTool] == 0: | 							if image[line - rTool + px][column - rTool] == 0: | ||||||
| 								image[line - rTool + px][column - rTool] = 2 | 								image[line - rTool + px][column - rTool] = 2 | ||||||
|  |  | ||||||
|  | 			if column < width - 1: | ||||||
| 				if image[line][column] == 1 and image[line][column + 1] != 1: | 				if image[line][column] == 1 and image[line][column + 1] != 1: | ||||||
| 					for px in range(2 * rTool + 1): | 					for px in range(2 * rTool + 1): | ||||||
|  | 						if column + rTool < width and 0 <= line - rTool + px < height: | ||||||
| 							if image[line - rTool + px][column + rTool] == 0: | 							if image[line - rTool + px][column + rTool] == 0: | ||||||
| 								image[line - rTool + px][column + rTool] = 2 | 								image[line - rTool + px][column + rTool] = 2 | ||||||
|  |  | ||||||
| @@ -37,13 +41,17 @@ def scanVertical(image, rTool): | |||||||
| 	for line in range(height): | 	for line in range(height): | ||||||
| 		for column in range(width): | 		for column in range(width): | ||||||
|  |  | ||||||
|  | 			if line > 0: | ||||||
| 				if image[line][column] == 1 and image[line - 1][column] != 1: | 				if image[line][column] == 1 and image[line - 1][column] != 1: | ||||||
| 					for px in range(2 * rTool + 1): | 					for px in range(2 * rTool + 1): | ||||||
|  | 						if line - rTool >= 0 and 0 <= column - rTool + px < width: | ||||||
| 							if image[line - rTool][column - rTool + px] == 0: | 							if image[line - rTool][column - rTool + px] == 0: | ||||||
| 								image[line - rTool][column - rTool + px] = 2 | 								image[line - rTool][column - rTool + px] = 2 | ||||||
|  |  | ||||||
|  | 			if line < height - 1: | ||||||
| 				if image[line][column] == 1 and image[line + 1][column] != 1: | 				if image[line][column] == 1 and image[line + 1][column] != 1: | ||||||
| 					for px in range(2 * rTool + 1): | 					for px in range(2 * rTool + 1): | ||||||
|  | 						if line + rTool < height and 0 <= column - rTool + px < width: | ||||||
| 							if image[line + rTool][column - rTool + px] == 0: | 							if image[line + rTool][column - rTool + px] == 0: | ||||||
| 								image[line + rTool][column - rTool + px] = 2 | 								image[line + rTool][column - rTool + px] = 2 | ||||||
|  |  | ||||||
| @@ -65,6 +73,7 @@ def twoRemoving(image, rTool): | |||||||
| 			if image[line][column] == 1: | 			if image[line][column] == 1: | ||||||
| 				for pixelx in range(1, 2 * rTool): | 				for pixelx in range(1, 2 * rTool): | ||||||
| 					for pixely in range(1, 2*rTool): | 					for pixely in range(1, 2*rTool): | ||||||
|  | 						if 0 <= line - rTool + pixelx < height and 0 <= column - rTool + pixely < width: | ||||||
| 							if image[line - rTool + pixelx][column - rTool + pixely] == 2: | 							if image[line - rTool + pixelx][column - rTool + pixely] == 2: | ||||||
| 								image[line - rTool + pixelx][column - rTool + pixely] = 0 | 								image[line - rTool + pixelx][column - rTool + pixely] = 0 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -6,10 +6,12 @@ from pcbdevice.gcode.GcodeCreator import createSequence | |||||||
| from pcbdevice.gcode.path import path | from pcbdevice.gcode.path import path | ||||||
| from pcbdevice.utils.FileUtils import FileUtils | from pcbdevice.utils.FileUtils import FileUtils | ||||||
| import argparse | import argparse | ||||||
|  | import subprocess | ||||||
|  |  | ||||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||||
| 	parser = argparse.ArgumentParser(prog = 'main.py') | 	parser = argparse.ArgumentParser(prog = 'main.py') | ||||||
| 	parser.add_argument('-i', required = True, help = 'PCB image path') | 	parser.add_argument('-i', required = True, help = 'PCB image path') | ||||||
|  | 	parser.add_argument('--ascii', required = False, dest='imgTypeisAscii', action = 'store_true', help = 'If the image is in ascii(True) or binary(False)') | ||||||
| 	parser.add_argument('-o', required = True, help = 'Gcode output path') | 	parser.add_argument('-o', required = True, help = 'Gcode output path') | ||||||
| 	parser.add_argument('-wi', required = True, type = int, help = 'Width of the PCB') | 	parser.add_argument('-wi', required = True, type = int, help = 'Width of the PCB') | ||||||
| 	parser.add_argument('-he', required = True, type = int, help = 'Height of the PCB') | 	parser.add_argument('-he', required = True, type = int, help = 'Height of the PCB') | ||||||
| @@ -17,12 +19,24 @@ if __name__ == "__main__": | |||||||
| 	parser.add_argument('-u', required = False, help = 'PCB dimension unit') | 	parser.add_argument('-u', required = False, help = 'PCB dimension unit') | ||||||
| 	args = parser.parse_args() | 	args = parser.parse_args() | ||||||
| 	 | 	 | ||||||
| 	matrix, height, width = FileUtils.pbmToMatrix(args.i) | 	converterPath = '.\\pcbdevice\\utils\\convertiseur.exe' | ||||||
|  | 	asciiPbmPath = '.\\pcbdevice\\resources\\output\\pcbImageAscii.pbm' | ||||||
|  | 	 | ||||||
|  | 	unitValue = 'mm' | ||||||
|  | 	isAscii = args.imgTypeisAscii | ||||||
|  | 	 | ||||||
|  | 	if isAscii: | ||||||
|  | 		asciiPbmPath = args.i | ||||||
|  | 		 | ||||||
|  | 	if not isAscii: | ||||||
|  | 		subprocess.check_call([converterPath, args.i, asciiPbmPath]) | ||||||
|  |  | ||||||
|  | 	matrix, height, width = FileUtils.pbmToMatrix(asciiPbmPath) | ||||||
| 	 | 	 | ||||||
| 	if args.u: | 	if args.u: | ||||||
| 		pxHeight, pxWidth = FileUtils.getPixelSize(height, width, args.he, args.wi, unit = args.u) | 		unitValue = args.u | ||||||
| 	else: | 		 | ||||||
| 		pxHeight, pxWidth = FileUtils.getPixelSize(height, width, args.he, args.wi) | 	pxHeight, pxWidth = FileUtils.getPixelSize(height, width, args.he, args.wi, unit = unitValue) | ||||||
| 	 | 	 | ||||||
| 	if pxHeight > pxWidth: | 	if pxHeight > pxWidth: | ||||||
| 		rTool = int(math.ceil(args.t * pxHeight)) | 		rTool = int(math.ceil(args.t * pxHeight)) | ||||||
|   | |||||||
| @@ -1,23 +0,0 @@ | |||||||
| P1 |  | ||||||
| # Bob |  | ||||||
| 20  20 |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |  | ||||||
| 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 |  | ||||||
| 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 |  | ||||||
| 0 0 2 0 1 1 1 1 1 1 1 1 1 1 1 1 0 2 0 0 |  | ||||||
| 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 |  | ||||||
| 0 0 2 0 1 0 2 2 2 2 2 2 2 2 0 1 0 2 0 0 |  | ||||||
| 0 0 2 0 1 0 2 0 0 0 0 0 0 2 0 1 0 2 0 0 |  | ||||||
| 0 0 2 0 1 0 2 0 0 0 0 0 0 2 0 1 0 2 0 0 |  | ||||||
| 0 0 2 0 1 0 2 0 0 0 0 0 0 2 0 1 0 2 0 0 |  | ||||||
| 0 0 2 0 1 0 2 0 0 0 0 0 0 2 0 1 0 2 0 0 |  | ||||||
| 0 0 2 0 1 0 2 0 0 0 0 0 0 2 0 1 0 2 0 0 |  | ||||||
| 0 0 2 0 1 0 2 0 0 0 0 0 0 2 0 1 0 2 0 0 |  | ||||||
| 0 0 2 0 1 0 2 0 0 0 0 0 0 2 0 1 0 2 0 0 |  | ||||||
| 0 0 2 0 1 0 2 0 0 0 0 0 0 2 0 1 0 2 0 0 |  | ||||||
| 0 0 2 0 1 0 2 0 0 0 0 0 0 2 0 1 0 2 0 0 |  | ||||||
| 0 0 2 0 1 0 2 2 2 2 2 2 2 2 0 1 0 2 0 0 |  | ||||||
| 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 |  | ||||||
| 0 0 2 0 1 1 1 1 1 1 1 1 1 1 1 1 0 2 0 0 |  | ||||||
| 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 |  | ||||||
| 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 |  | ||||||
| @@ -1,100 +0,0 @@ | |||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 1 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 1 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 1 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 2 2 2 0 0 0 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 2 2 0 0 0 2 2 0 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 1 1 0 0 0 0 2 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 1 0 0 0 0 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 1 0 0 0 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 2 2 2 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 1 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 1 0 0 0 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 1 1 0 0 0 0 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 2 0 0 0 0 0 0 2 2 0 0 0 0 1 1 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  |  | ||||||
| 
 | 
| @@ -52,7 +52,7 @@ class TestListToGCode(TestCase): | |||||||
|  |  | ||||||
| def getExpected(coords, ySize, xSize): | def getExpected(coords, ySize, xSize): | ||||||
| 	header = ['G28', 'G90\n'] | 	header = ['G28', 'G90\n'] | ||||||
| 	footer = ['\nG0 Z0', 'G28'] | 	footer = ['\nG0 Z0', 'G28', 'M18'] | ||||||
| 	 | 	 | ||||||
| 	content = ['G0 X' + str(round(xSize * coords[0].getX(), 2)) + ' Y' + str(round(ySize * coords[0].getY(), 2)), | 	content = ['G0 X' + str(round(xSize * coords[0].getX(), 2)) + ' Y' + str(round(ySize * coords[0].getY(), 2)), | ||||||
| 	           'G0 Z3', | 	           'G0 Z3', | ||||||
|   | |||||||
							
								
								
									
										174
									
								
								pcbdevice/tests/gcode/test_path.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										174
									
								
								pcbdevice/tests/gcode/test_path.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,174 @@ | |||||||
|  | from unittest import TestCase | ||||||
|  |  | ||||||
|  | from pcbdevice.gcode.path import scanHorizontal, scanVertical, twoRemoving | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class TestPath(TestCase): | ||||||
|  |  | ||||||
|  | 	#inputs | ||||||
|  | 	def imageTest(self): | ||||||
|  | 		return [[0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 1, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0]] | ||||||
|  |  | ||||||
|  | 	def imageTestMulti(self): | ||||||
|  | 		return [[0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 1, 0, 0, 1, 0, 0], | ||||||
|  | 		        [0, 0, 0, 1, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 0, 1, 0, 0]] | ||||||
|  |  | ||||||
|  | 	def imageTestHOut(self): | ||||||
|  | 		return [[0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 1, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0]] | ||||||
|  |  | ||||||
|  | 	def imageTestVOut(self): | ||||||
|  | 		return [[0, 0, 0], | ||||||
|  | 		        [0, 0, 0], | ||||||
|  | 		        [0, 0, 0], | ||||||
|  | 		        [0, 1, 0], | ||||||
|  | 		        [0, 0, 0], | ||||||
|  | 		        [0, 0, 0], | ||||||
|  | 		        [0, 0, 0]] | ||||||
|  |  | ||||||
|  | 	def imageTest2(self): | ||||||
|  | 		return [[0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 2, 2, 2, 2, 2, 0], | ||||||
|  | 		        [0, 2, 2, 2, 2, 2, 0], | ||||||
|  | 		        [0, 2, 2, 1, 2, 2, 0], | ||||||
|  | 		        [0, 2, 2, 2, 2, 2, 0], | ||||||
|  | 		        [0, 2, 2, 2, 2, 2, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0]] | ||||||
|  |  | ||||||
|  | 	def imageTestMulti2(self): | ||||||
|  | 		return [[2, 2, 2, 2, 2, 2, 2], | ||||||
|  | 		        [2, 2, 2, 2, 2, 2, 2], | ||||||
|  | 		        [2, 1, 2, 2, 1, 2, 2], | ||||||
|  | 		        [2, 2, 2, 1, 2, 2, 2], | ||||||
|  | 		        [2, 2, 2, 2, 2, 2, 2], | ||||||
|  | 		        [2, 2, 2, 2, 2, 2, 2], | ||||||
|  | 		        [2, 2, 2, 2, 1, 2, 2]] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	#horizontal results | ||||||
|  | 	def imageResultHr2(self): | ||||||
|  | 		return [[0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 2, 0, 0, 0, 2, 0], | ||||||
|  | 		        [0, 2, 0, 0, 0, 2, 0], | ||||||
|  | 		        [0, 2, 0, 1, 0, 2, 0], | ||||||
|  | 		        [0, 2, 0, 0, 0, 2, 0], | ||||||
|  | 		        [0, 2, 0, 0, 0, 2, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0]] | ||||||
|  |  | ||||||
|  | 	def imageResultHr3(self): | ||||||
|  | 		return [[2, 0, 0, 0, 0, 0, 2], | ||||||
|  | 		        [2, 0, 0, 0, 0, 0, 2], | ||||||
|  | 		        [2, 0, 0, 0, 0, 0, 2], | ||||||
|  | 		        [2, 0, 0, 1, 0, 0, 2], | ||||||
|  | 		        [2, 0, 0, 0, 0, 0, 2], | ||||||
|  | 		        [2, 0, 0, 0, 0, 0, 2], | ||||||
|  | 		        [2, 0, 0, 0, 0, 0, 2]] | ||||||
|  |  | ||||||
|  | 	def imageResultHOut(self): | ||||||
|  | 		return [[0, 2, 0, 0, 0, 2, 0], | ||||||
|  | 		        [0, 2, 0, 1, 0, 2, 0], | ||||||
|  | 		        [0, 2, 0, 0, 0, 2, 0]] | ||||||
|  |  | ||||||
|  | 	def imageResultMultiH(self): | ||||||
|  | 		return [[0, 0, 2, 2, 0, 0, 2], | ||||||
|  | 		        [0, 2, 2, 2, 0, 2, 2], | ||||||
|  | 		        [0, 1, 2, 2, 1, 2, 2], | ||||||
|  | 		        [0, 2, 2, 1, 0, 2, 2], | ||||||
|  | 		        [0, 2, 2, 2, 0, 2, 2], | ||||||
|  | 		        [0, 2, 2, 0, 0, 2, 2], | ||||||
|  | 		        [0, 0, 2, 0, 1, 0, 2]] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	#vertical results | ||||||
|  | 	def imageResultVr2(self): | ||||||
|  | 		return [[0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 2, 2, 2, 2, 2, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 1, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 2, 2, 2, 2, 2, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0]] | ||||||
|  |  | ||||||
|  | 	def imageResultVr3(self): | ||||||
|  | 		return [[2, 2, 2, 2, 2, 2, 2], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 1, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [2, 2, 2, 2, 2, 2, 2]] | ||||||
|  |  | ||||||
|  | 	def imageResultVOut(self): | ||||||
|  | 		return [[0, 0, 0], | ||||||
|  | 		        [2, 2, 2], | ||||||
|  | 		        [0, 0, 0], | ||||||
|  | 		        [0, 1, 0], | ||||||
|  | 		        [0, 0, 0], | ||||||
|  | 		        [2, 2, 2], | ||||||
|  | 		        [0, 0, 0]] | ||||||
|  |  | ||||||
|  | 	def imageResultMultiV(self): | ||||||
|  | 		return [[2, 2, 2, 2, 2, 2, 2], | ||||||
|  | 		        [0, 2, 2, 2, 2, 2, 0], | ||||||
|  | 		        [0, 1, 0, 0, 1, 0, 0], | ||||||
|  | 		        [0, 0, 0, 1, 0, 0, 0], | ||||||
|  | 		        [2, 2, 2, 2, 2, 2, 2], | ||||||
|  | 		        [0, 2, 2, 2, 2, 2, 0], | ||||||
|  | 		        [0, 0, 0, 0, 1, 0, 0]] | ||||||
|  |  | ||||||
|  | 	#two results | ||||||
|  |  | ||||||
|  | 	def imageResult2(self): | ||||||
|  | 		return [[0, 0, 0, 0, 0, 0, 0], | ||||||
|  | 		        [0, 2, 2, 2, 2, 2, 0], | ||||||
|  | 		        [0, 2, 0, 0, 0, 2, 0], | ||||||
|  | 		        [0, 2, 0, 1, 0, 2, 0], | ||||||
|  | 		        [0, 2, 0, 0, 0, 2, 0], | ||||||
|  | 		        [0, 2, 2, 2, 2, 2, 0], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 0]] | ||||||
|  |  | ||||||
|  | 	def imageResultMulti2(self): | ||||||
|  | 		return [[2, 2, 2, 2, 2, 2, 2], | ||||||
|  | 		        [0, 0, 0, 0, 0, 0, 2], | ||||||
|  | 		        [0, 1, 0, 0, 1, 0, 2], | ||||||
|  | 		        [0, 0, 0, 1, 0, 0, 2], | ||||||
|  | 		        [2, 2, 0, 0, 0, 2, 2], | ||||||
|  | 		        [2, 2, 2, 0, 0, 0, 2], | ||||||
|  | 		        [2, 2, 2, 0, 1, 0, 2]] | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	def test_hori(self): | ||||||
|  |  | ||||||
|  | 		self.assertEqual(scanHorizontal(self.imageTest(), 2), self.imageResultHr2()) | ||||||
|  | 		self.assertEqual(scanHorizontal(self.imageTest(), 3), self.imageResultHr3()) | ||||||
|  | 		self.assertEqual(scanHorizontal(self.imageTestHOut(), 2), self.imageResultHOut()) | ||||||
|  | 		self.assertEqual(scanHorizontal(self.imageTest(), 4), self.imageTest()) | ||||||
|  | 		self.assertEqual(scanHorizontal(self.imageTestMulti(), 2), self.imageResultMultiH()) | ||||||
|  |  | ||||||
|  | 	def test_vert(self): | ||||||
|  |  | ||||||
|  | 		self.assertEqual(scanVertical(self.imageTest(), 2), self.imageResultVr2()) | ||||||
|  | 		self.assertEqual(scanVertical(self.imageTest(), 3), self.imageResultVr3()) | ||||||
|  | 		self.assertEqual(scanVertical(self.imageTestVOut(), 2), self.imageResultVOut()) | ||||||
|  | 		self.assertEqual(scanVertical(self.imageTest(), 4), self.imageTest()) | ||||||
|  | 		self.assertEqual(scanVertical(self.imageTestMulti(), 2), self.imageResultMultiV()) | ||||||
|  |  | ||||||
|  | 	def test_two(self): | ||||||
|  |  | ||||||
|  | 		self.assertEqual(twoRemoving(self.imageTest2(), 2), self.imageResult2()) | ||||||
|  | 		self.assertEqual(twoRemoving(self.imageTest2(), 3), self.imageTest()) | ||||||
|  | 		self.assertEqual(twoRemoving(self.imageTest2(), 7), self.imageTest()) | ||||||
|  | 		self.assertEqual(twoRemoving(self.imageTestMulti2(), 2), self.imageResultMulti2()) | ||||||
							
								
								
									
										
											BIN
										
									
								
								pcbdevice/utils/convertiseur.exe
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								pcbdevice/utils/convertiseur.exe
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user
	 Marc-Antoine Lafreniere
					Marc-Antoine Lafreniere