main
程祎 2023-08-22 15:37:07 +08:00
parent 7ea0963deb
commit 9e59e1e078
13 changed files with 1564 additions and 0 deletions

2
PSD检测-强制.bat Normal file
View File

@ -0,0 +1,2 @@
python check_compress_psd.py zip
pause

2
PSD检测.bat Normal file
View File

@ -0,0 +1,2 @@
python check_compress_psd.py
pause

28
README.md Normal file
View File

@ -0,0 +1,28 @@
# **ArtPuzzle 项目美术素材库**
* ## **该项目作为美术存储PSD打包前读取并解析的源**<br><br>
## **version: 0.0.1**
- 用于存储美术相关的PSD源文件
- 项目已开启LFS
<br><br><br>
# **目录结构**
- ap_art_assets
- art_assets
- external
- check_compress_psd.py
- PSD检测-强制.bat
- PSD检测.bat
- draw_line.py
- draw_outline.py
- export_outline.py
## 使用方法
* Windows双击PSD检测.bat
* Mac命令行执行
```shell
python3 checkout_compress_psd.py
* 执行完成后会将psd压缩成zip
* 请手动上传zip至git源请将version.json文件一起上传

37
draw_line.py Normal file
View File

@ -0,0 +1,37 @@
import cv2
import numpy as np
# 读取图像并将其转换为灰度图像
img = cv2.imread('image.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 查找轮廓
contours, hierarchy = cv2.findContours(gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
for contour in contours:
# 计算轮廓长度
contour_length = cv2.arcLength(contour, True)
# 定义线条粗细的列表使其从1到10逐渐增加
thickness_list = np.linspace(1, 10, len(contour))
# 遍历轮廓上的每个点,并在图像中绘制线条
for i, point in enumerate(contour):
# 计算当前点的线条粗细
thickness = int(thickness_list[i])
# 绘制线条
if i == 0:
# 如果是起点线条粗细为1
cv2.circle(img, tuple(point[0]), 1, (0, 0, 255), -1)
else:
# 如果不是起点线条粗细为thickness
prev_point = tuple(contour[i - 1][0])
curr_point = tuple(point[0])
cv2.line(img, prev_point, curr_point, (0, 0, 255), thickness)
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

102
draw_outline.py Normal file
View File

@ -0,0 +1,102 @@
#!/usr/bin/python
#encoding:utf-8
import math
import cv2
import numpy as np
import os
from PIL import Image
import random
def generate_picture(name, high, wide):
"""生成图片"""
# 白色透明背景
img = np.ones((high, wide, 4)) * (255, 255, 255, 0)
# print("name", name)
# 保存为图片
#cv2.imwrite(name, img)
cv2.imencode('.png', img)[1].tofile(name)
def gen_outline(path, dest, offset):
img = cv2.imread(path, cv2.IMREAD_GRAYSCALE)
img_contour = cv2.imread(dest, cv2.IMREAD_UNCHANGED)
kernel_size = 1
sigma = 0.5
kernel = cv2.getGaussianKernel(kernel_size, sigma)
kernel = np.dot(kernel, kernel.T)
smoothed = cv2.filter2D(img, -1, kernel)
_, thresh = cv2.threshold(smoothed, 1, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 计算轮廓的总面积
total_area = 0
for contour in contours:
area = cv2.contourArea(contour)
total_area = total_area + area
# 选择周长和面积满足条件的轮廓,过滤太小的轮廓
valid_contours = []
threshold = 0.5
idx = 0
while not (len(valid_contours) > 0 and idx == 0):
contour = contours[idx]
perimeter = cv2.arcLength(contour, True)
area = cv2.contourArea(contour)
# print(path, "周长 =", perimeter, "面积占比 =", area/total_area, threshold)
if perimeter > 0 and area/total_area > threshold:
# print("add =====> ")
valid_contours.append(contour)
idx = idx + 1
if idx >= len(contours):
threshold = threshold - 0.1
idx = 0
total = len(valid_contours[0])
start = random.randint(0, int(total/3*2))
# start = 0
end = start + int(total/3)
# end = total
contour_points = valid_contours[0][start:(end)]
pixle_offset = (int(offset / 2), int(offset / 2))
offset_contour_points = contour_points + pixle_offset
cv2.polylines(img_contour, [offset_contour_points], False, (255, 255, 255, 255), int(offset - 1), lineType=cv2.LINE_AA)
cv2.polylines(img_contour, [offset_contour_points], False, (0, 0, 0, 255), int(offset / 2 - 1), lineType=cv2.LINE_AA)
cv2.imwrite(dest, img_contour)
def draw_outline(path, offset, order):
img = cv2.imread(path)
h, w, c = img.shape
width = w + offset
height = h + offset
img_outline_path = path.replace(".png", "_outline.png")
generate_picture(img_outline_path, height, width)
gen_outline(path, img_outline_path, offset)
return img_outline_path
def paste(src, dest, x, y):
img2 = Image.open(dest)
img2 = img2.convert("RGBA")
img1 = Image.open(src)#小图路径
img1 = img1.convert("RGBA")
img2.paste(img1, (x, y), mask=img1)
img2.save(dest)
if __name__ == "__main__":
path = "/Users/mac/Documents/guru/unity_ap_bundle/ArtPuzzleBundle/Assets/Bundles/Levels/28/Atlas"
generate_picture("line_1.png", 1280, 1040)
os.system("cd {} && rm *_outline.png".format(path))
for root , dirs, files in os.walk(path):
for name in files:
if "patch_" in name and name.endswith(".png") and "outline" not in name:
# print("name = {}".format(name))
draw_outline(os.path.join(root, name), 3)

238
export_outline.py Normal file
View File

@ -0,0 +1,238 @@
#!/usr/bin/python
#encoding:utf-8
import os, sys
import time
import cv2
from psd_tools import PSDImage
from PIL import Image, ImageFilter
import numpy as np
import shutil
curr_dir = os.path.split(os.path.abspath(__file__))[0]
sys.path.append(os.path.join(curr_dir,'../../'))
import utils
import json
import draw_outline
levels_root_path = os.path.join(curr_dir, "temp/Levels/")
external_root_path = os.path.join(curr_dir, "external")
version_path = os.path.join(curr_dir, "psd_outline_version.json")
PSD_DESIGN_WIDTH = 2080
PSD_DESIGN_HEIGTH = 2560
TOTAL_OFFSET_ORIGIN = 16
TOTAL_OFFSET = TOTAL_OFFSET_ORIGIN
#缩略图尺寸
thumbnail_width = 480
scale = 0
versions = {}
def del_lines(psd_name):
dir_name = os.path.join(external_root_path, psd_name, "line")
if not os.path.exists(dir_name):
os.makedirs(dir_name)
# .system("rm -rf {}".format(dir_name))
shutil.rmtree(dir_name)
# def get_or_create_line_png(psd_name, num, sub, width, height):
# dir_name = os.path.join(external_root_path, psd_name, "line")
# line_path = os.path.join(dir_name, f"line_{num}_{sub}.png")
# if not os.path.exists(dir_name):
# os.makedirs(dir_name)
# if not os.path.exists(line_path):
# draw_outline.generate_picture(line_path, height + TOTAL_OFFSET, width + TOTAL_OFFSET)
# return line_path
def crop_image(path, dest_path, new_height, new_width):
re_img = Image.open(path)
re_img = Image.fromarray(np.uint8(re_img))
scalex = thumbnail_width / re_img.width
scaley = thumbnail_width / re_img.height
scale = max(scalex, scaley)
re_img = re_img.resize((int(re_img.width * scale), int(re_img.height * scale)), Image.ANTIALIAS)
width, height = re_img.size
left = (width - new_width)/2
top = (height - new_height)/2
right = (width + new_width)/2
bottom = (height + new_height)/2
crop_im = re_img.crop((left, top, right, bottom))
crop_im.save(dest_path, "png")
def export_outline(path):
global scale
global versions
global TOTAL_OFFSET
file_name = os.path.split(path)[1]
psd = PSDImage.open(path)
max_width = 0
max_height = 0
(filepath, filename) = os.path.split(path)
(psd_filename, filename_ext) = os.path.splitext(filename)
#只取前缀
filename_only = psd_filename.split("_")[0]
#删除所有线条文件,重新生成
del_lines(psd_filename)
for item in psd.descendants():
if not item.is_group():
nArr = item.name.split('_')
if item.name == "base":
max_width = item.width
max_height = item.height
break
TOTAL_OFFSET = int(TOTAL_OFFSET_ORIGIN * (max_width / PSD_DESIGN_WIDTH))
for item in psd.descendants():
if not item.is_group():
item.visible = True
#按照原始比例导出
scale = 1
nArr = item.name.split("_")
folder_path = ""
base_folder_name = ""
file_path = ""
save_path_pre = ""
item_name = item.name
mid_path = filename_only
if nArr[0] == "base" or nArr[0] == "line" or nArr[0] == "finish" or nArr[0] == "auto" or nArr[0] == "role":
continue
elif nArr[0] == "patch":
base_folder_name = "Atlas"
save_path_pre = levels_root_path
elif nArr[0] == "thumbnail":
continue
folder_path = os.path.join(save_path_pre, mid_path, base_folder_name)
if not os.path.exists(folder_path):
os.makedirs(folder_path)
file_path = os.path.join(folder_path, "{}.png".format(item_name))
item.composite().save(file_path, compress_level=1, format='PNG', use_channel="RGBA", quality=95)
# #缩略图不需要压缩
if nArr[0] != "thumbnail":
#根据设计分辨率重置尺寸
img = Image.open(file_path).convert('RGBA')
img = img.filter(ImageFilter.GaussianBlur(radius=1))
#防止无改变
img = img.resize((int(item.width * scale) + 1, int(item.height * scale) + 1), Image.ANTIALIAS)
img.save(file_path, "png")
#防止无改变
img = img.resize((int(item.width * scale), int(item.height * scale)), Image.ANTIALIAS)
# img.save(file_path, "png")
# 打开图像文件并转换为 NumPy 数组
image = np.array(img.convert("RGBA"))
# 获取 alpha 通道数据
alpha = image[:, :, 3]
# 将 alpha 值小于等于 10 的像素的 alpha 值设为 0
alpha[alpha <= 20] = 0
# 将修改后的 alpha 通道数据保存回原始数组
image[:, :, 3] = alpha
# 将修改后的 NumPy 数组转换回图像并保存
Image.fromarray(image).save(file_path)
if nArr[0] == "patch":
outline_file_path = draw_outline.draw_outline(file_path, TOTAL_OFFSET, int(nArr[2]))
dir_name = os.path.join(external_root_path, psd_filename, "line")
if not os.path.exists(dir_name):
os.makedirs(dir_name)
line_path = os.path.join(dir_name, f"line_{nArr[1]}_{nArr[2]}.png")
shutil.copy(outline_file_path, line_path)
# draw_outline.paste(outline_file_path, line_path, 0, 0)
shutil.rmtree(levels_root_path)
###生成version文件
def make_version_file(remake):
version_file = os.path.join(curr_dir, version_path);
if remake:
if os.path.exists(version_file):
os.remove(version_file)
if not os.path.exists(version_file):
with open(version_file, "w") as f:
json.dump({}, f)
###加载版本文件
def load_version():
global versions
make_version_file(False);
version_file = os.path.join(curr_dir, version_path);
with open(version_file, "r") as f:
try:
versions = json.load(f)
except:
#删除版本文件并重新生成
make_version_file(True);
def write_version():
version_file = os.path.join(curr_dir, version_path);
with open(version_file, "w") as f:
json.dump(versions, f)
def parse_psd(path):
load_version()
for root , dirs, files in os.walk(path):
for name in files:
if name.endswith(".psd") or name.endswith(".zip"):
src_filename = os.path.join(root, name)
file_name = os.path.split(src_filename)[1]
key = file_name.split("_")[0]
hash_old = ""
if key in versions:
hash_old = versions[key]
hash_now = utils.calc_hash(src_filename)
if hash_old != hash_now:
#如果是压缩文件,则先解压
if name.endswith(".zip"):
psd_zip_filename = os.path.join(root, name)
utils.unzip_file(psd_zip_filename)
psd_filename = "{}.psd".format(os.path.splitext(os.path.join(root, name))[0])
else:
psd_filename = src_filename
try:
export_outline(psd_filename)
versions[key] = hash_now
write_version();
except Exception as e:
print(name + " 解析失败:" + repr(e))
finally:
#最后删除psd文件
if psd_filename != "":
os.remove(psd_filename)
if __name__ == "__main__":
parse_psd("./")

BIN
image-emt.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

BIN
image.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

1
psd_outline_version.json Executable file
View File

@ -0,0 +1 @@
{"10": "4bb04d8d4c018f1df36c1b91d1310ddc4f86f21a", "11": "a1fe8ee77712a0a6f1c465d9bc6cacf33acf8e3d", "13": "9ddde32e5a8f88559aba8e003225a6bbf3046569", "14": "ad09d851809ab59342639536d1f7f09ff13acdd2", "15": "cb06015a06f0e33c71b318a7fee78ef90432df61", "12": "0347d9a847c5257149c38f2fadceb968279e4b57", "16": "816522fa8306175b1bf3dbf8d0a32cca934decec", "17": "84a41dbe457701d61a94f8ceaf65ac7968ea63e8", "18": "a79f514ec31a8fce7bbb8498742db4af144c5448", "19": "9445da20ea1f93ef5f6879e4c5c4a1be9b9a741c", "1": "2d190da2f8153755d4c99837380f4b3d523c7377", "20": "61b520498f18e4402db58efee9f43d3d70028234", "21": "96ce013f02076a8976119fde88b0b27683dc71c6", "22": "a38de779e8085654bb334626b5f88926e8a8c535", "23": "03a05c6545b3f5434f5bc2d69e4e1cbb0da392d2", "24": "5647e7eb865dafc7787986e4658d7805f7b212c2", "25": "3032f1f1f3a54847693d4e481211eb3665850a08", "26": "c4832180e57c6e9744c6ca754539eab30954aa2d", "27": "5956a7953cec77cf8ed2541386f3a3c84a6d109f", "28": "e39256ac7248496ea638bfaeea81897cdcf24784", "29": "dcc1c1094d320c82104d01b96e440d55f5db523b", "2": "75ed939866284800222292bc75f59c33afb1eb30", "30": "5ca514eb377ac15f060b62129f5cf7b56ce736ad", "31": "f9c80a1d9431baff3763fa43381e71777e49ea63", "32": "f0048d11636646afbf240e460bc4506f23c6c6e7", "33": "06a29d90d0903ea83166386ac4cb9f12261164f2", "34": "a7e6f322235e2832e55d52c8096473e2aa81be69", "35": "fbe4a5d8532acc124489b15940b0c5103fa2aba5", "36": "069873dea12ef540a6b96341aa2281dbb14a2d9b", "37": "eb7d90e157194e5ae1a779fe081b6868aa952e6d", "38": "a53853704c75cf1977f1cd57d67a76b1d2f52f15", "39": "a6568998b8093949a85315013843f97b8f4d7f95", "3": "bb4409b1d925a9e3d35213dfe201e7593ec1eb84", "40": "567d48db99de821bb6ffbe7975752bf9e8b0f0cc", "41": "f07e7306d06ce47e259cae693c39f1e8a5ff0ffc", "42": "2bf2250859e6948c2a090f1d9a6fc7b21771173b", "43": "5a4b4e8e55b730b310764b8b2e18379b6868b5a7", "44": "72163df8c065baa02f589c88260892f549e8cf59", "45": "b1e3150ef7ea0258e27007b510ac0ee0fc46f319", "46": "a742c394419fe628b2fa38c689e57c1b0f678ac1", "47": "60197b4a939ef4984fef94b0d30f1a2321fe9fb3", "48": "6b8e5b9966fea194ff01e443e030282b091331d4", "49": "66953b7e09879ed4283bad3a0cdd79dfb8c78c3f", "4": "3fa653912d2ea2269bbd1b0dfb065366af466476", "50": "db96e7a7d90a46ccc3bf7deda473358a500e380e", "51": "3f0740cb81423c718690868576631272a425c7f4", "52": "1a7626dcab0860298f346126cffa8e0c852e5cdf", "53": "c6192c45d75674631e5323e6983e66d5887fe38a", "54": "506f5a1b7b738f698d6d63b5c30ba3b21af31dab", "55": "e19b93a609d93e6e9c299c8e474bb3ddf0c707f8", "56": "1b2db8271922882dabea599352e4ae60dd7aaed3", "57": "fc43a804c1f4f142be064f0542b652deefe3a465", "58": "d81bdf622f10835b09fb5a9b7ede5f84d3253020", "59": "5e240e26b788e61162a117013716402bb15a5f81", "5": "518cedc79bf790c824a78629c92bc7a0823b4f47", "60": "ee741b0e14b874318723b520750540e6b984b10a", "61": "a6366845359f345cbff1b0b9eee91cc26294bcca", "62": "c2c33299c4f891a244a76dd98d95facbca2d7fbb", "63": "11f55de674ff77afdc1c6d3013bf2ba70df58a69", "64": "f83f6beca7c6471d1dc274e396bf5b816ed784be", "65": "a9768d468076ea5cf41bbbac2bd83fca5519fc2c", "66": "8d3e02c3ea2e4eb5004f05fdcf11fa09a72bf579", "67": "cdc652281ee5260017e759974fd50834f9e8afea", "68": "cb9599aac4098fa2d6b36751b74be7e08acd1488", "69": "29c3b755600564108b8c3bcbfe75abc95b502c5c", "6": "5430c8aab736fe156e267734cbc2b85a4c2ef462", "70": "b64b7ffa9349cf6dfbde88705c2772750c17b2df", "71": "2795004b6ec360dae7aec1fac200f7c65b109055", "72": "b915932ab39a6395c0e4db79306171e36259e7a0", "73": "702071364d41da16ee54887c19d14601dcd2ce66", "7": "548556e14bbe49454d9bac7dea4bfccf8da022f0", "8": "4664c0a2a4152bfa9ea17ee2dc98d976488664be", "9": "bcc0acd0c8e3ff834f6c9fa68e3fb2eea806fe8b"}

64
test-1.py Executable file
View File

@ -0,0 +1,64 @@
import math
import random
import cv2
import numpy as np
TOTAL_OFFSET = 8
def gen_outline(path, dest):
img = cv2.imread(path, cv2.IMREAD_GRAYSCALE)
img_contour = cv2.imread(dest, cv2.IMREAD_UNCHANGED)
kernel_size = 1
sigma = 0.5
kernel = cv2.getGaussianKernel(kernel_size, sigma)
kernel = np.dot(kernel, kernel.T)
smoothed = cv2.filter2D(img, -1, kernel)
_, thresh = cv2.threshold(smoothed, 1, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 计算轮廓的总面积
total_area = 0
for contour in contours:
area = cv2.contourArea(contour)
total_area = total_area + area
# 选择周长和面积满足条件的轮廓,过滤太小的轮廓
valid_contours = []
threshold = 0.5
idx = 0
while not (len(valid_contours) > 0 and idx == 0):
contour = contours[idx]
perimeter = cv2.arcLength(contour, True)
area = cv2.contourArea(contour)
# print(path, "周长 =", perimeter, "面积占比 =", area/total_area, threshold)
if perimeter > 0 and area/total_area > threshold:
# print("add =====> ")
valid_contours.append(contour)
idx = idx + 1
if idx >= len(contours):
threshold = threshold - 0.1
idx = 0
start = random.randint(0, int(len(valid_contours[0])/3*2)-1)
start = 0
contour_points = valid_contours[0][start:(start + int(len(valid_contours[0])/3))]
contour_points = valid_contours[0][start:(start + len(valid_contours[0]))]
offset = (4, 4)
offset_contour_points = contour_points + offset
print("contour_points start = ", start, len(valid_contours[0]))
cv2.polylines(img_contour, [offset_contour_points], False, (255, 255, 255, 255), int(TOTAL_OFFSET - 1), lineType=cv2.LINE_AA)
cv2.polylines(img_contour, [offset_contour_points], False, (0, 0, 0, 255), int(TOTAL_OFFSET / 2 - 1), lineType=cv2.LINE_AA)
# cv2.drawContours(img_contour, valid_contours, -1, (255, 255, 255, 255), 9, None, None, None, (5, 5))
# cv2.drawContours(img_contour, valid_contours, -1, (0, 0, 0, 255), 5, None, None, None, (5, 5))
# cv2.imwrite(dest, img_contour)
cv2.imshow('Original Image', img)
cv2.imshow('Contour Image', img_contour)
cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__ == "__main__":
gen_outline("./image.png", "./image-emt.png")

154
utils.py Normal file
View File

@ -0,0 +1,154 @@
#!/usr/bin/env python
#coding:utf-8
import datetime
import os
import zipfile
import subprocess
import json
import hashlib
def zip_dir(dirpath, out_fullname):
"""
压缩指定文件夹
:param dirpath: 目标文件夹路径
:param outFullName: 压缩文件保存路径+xxxx.zip
:return:
"""
zip = zipfile.ZipFile(out_fullname,"w",zipfile.ZIP_DEFLATED)
for path,dirnames,filenames in os.walk(dirpath):
# 去掉目标跟路径,只对目标文件夹下边的文件及文件夹进行压缩
fpath = path.replace(dirpath,'')
for filename in filenames:
zip.write(os.path.join(path,filename),os.path.join(fpath,filename))
zip.close()
def unzip_dir(zip_src, dst_dir):
"""
解压文件到指定文件夹
:param zip_src: zip文件
:param dst_dir: 解压目录
:return:
"""
r = zipfile.is_zipfile(zip_src)
if r:
fz = zipfile.ZipFile(zip_src, 'r')
for file in fz.namelist():
fz.extract(file, dst_dir)
else:
print("{}不是zip文件".format(zip_src))
def zip_file(file_path, out_fullname, is_fixedtime = True):
"""
压缩指定文件
:param dirpath: 目标文件路径
:param outFullName: 压缩文件保存路径+xxxx.zip
:return:
"""
zip_file = zipfile.ZipFile(out_fullname,'w')
zip_file.write(file_path, compress_type=zipfile.ZIP_DEFLATED)
if is_fixedtime:
# 分离文件名称
names = zip_file.namelist()
for a_name in names:
zipinfo_obj = zip_file.getinfo(a_name)
file_stat = os.stat(file_path)
zipinfo_obj.date_time = datetime.datetime.fromtimestamp(file_stat.st_mtime).timetuple()[:6]
zip_file.close()
def unzip_file(zip_file_path):
"""
解压文件
:param zip_src: zip文件
:return:
"""
zip_file = zipfile.ZipFile(zip_file_path)
# 解压
# zip_file.extractall(path="{}/../".format(os.path.splitext(zip_file_path)[0]))
# 设置要解压缩的文件和目录
extract_dir = "{}".format(os.path.split(zip_file_path)[0])
# 解压缩文件并将修改时间设置为原有时间
with zipfile.ZipFile(zip_file_path, 'r') as zip_file:
for zip_info in zip_file.infolist():
zip_file.extract(zip_info.filename, path=extract_dir)
file_path = os.path.join(extract_dir, zip_info.filename)
mtime = int(datetime.datetime(*zip_info.date_time).timestamp())
os.utime(file_path, (mtime, mtime))
def DoCmd(strcmd, logPath=""):
if len(logPath) > 1:
logfile = file(logPath, "a")
logfile.writelines("-----------------------------")
logfile.writelines(strcmd)
process = subprocess.Popen(
strcmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(strcmd)
lines_out = process.stdout.readlines()
for l in lines_out:
print(l)
if len(logPath) > 1:
logfile.writelines(l)
lines_error = process.stderr.readlines()
if len(logPath) > 1 and len(lines_error)>0:
logfile.writelines("has error:\n\n")
for l in lines_error:
print(l)
if len(logPath) > 1:
logfile.writelines(l)
print("end: "+strcmd)
if len(logPath) > 0:
logfile.writelines("end: "+strcmd)
logfile.close()
#
return lines_out, lines_error
def get_file_last_line(fname):
"""
f_name为所读xx.txt文件
输出为文件最后一行
"""
print(fname)
with open(fname, 'r') as f: #打开文件
first_line = f.readline() #读第一行
off = -50 #设置偏移量
while True:
f.seek(off, 2) #seek(off, 2)表示文件指针:从文件末尾(2)开始向前50个字符(-50)
lines = f.readlines() #读取文件指针范围内所有行
if len(lines)>=2: #判断是否最后至少有两行,这样保证了最后一行是完整的
last_line = lines[-1] #取最后一行
break
#如果off为50时得到的readlines只有一行内容那么不能保证最后一行是完整的
#所以off翻倍重新运行直到readlines不止一行
off *= 2
print('文件' + fname + '第一行为:' + first_line)
print('文件' + fname + '最后一行为:'+ last_line)
return last_line
def open_json(path):
dic = {}
with open(path, 'r') as f:
dic = json.load(f)
return dic
def write_json(path, content):
with open(path, 'w') as f:
json.dump(content, f)
#根据文件内容生成hash值filepath文件路径
def calc_hash(filepath):
with open(filepath,'rb') as f:
sha1obj = hashlib.sha1()
sha1obj.update(f.read())
hash = sha1obj.hexdigest()
return hash

934
version.json Normal file
View File

@ -0,0 +1,934 @@
{
"1": "85d374f8b8cf9be98fcc73aca358bc7a46b76eb9",
"10": "bff3c44bdb4d9fbd400c03caa5542c7e96dd20fc",
"100": "4f2e650222b8a35caabcb3a40ae70a06be569ca5",
"101": "654f3feaa984024f8ac981b615391ad0c9c0f0c1",
"102": "6dfce2d243a95239332df3169f099b9dbf94deb2",
"103": "6b007b99fae0e2c4d7ff00407e445b0680a5f365",
"104": "207134aac4c3f227ed256e498f12e401d6cfc222",
"105": "447304251d5e5be46468cb81c511ed70a62a2b57",
"106": "f275a936af0a5235da2026eebd69bbd757290f63",
"107": "8853c3868c1b0b66b8f176641aaba1d4ade4e3c2",
"108": "95ccb7718587315765ea83b2e1c8d54910ba5d00",
"109": "3687f635fa57260a766c35da73abfedb510526d5",
"11": "0338fda17a17f605fc30d3957e126133a603d98f",
"110": "497a982973130109d518c14ac1c8595719a479d8",
"111": "192988725767a710427300e91c797cd3aee08a3b",
"112": "c82e852a80fb7966654384357ba12587315428ff",
"113": "2f2cee67b6c6311704db44f666be11b4c4fa43d2",
"114": "bc1c701ec0cfcb969f59183d07a3c602bc1d1ea5",
"115": "78d3b3cb2e9b96af1220bafa275df7ba64e6725d",
"116": "8d9252a2ab238ef88b127afab4580a2c96df8201",
"117": "e558e33e591b5a0940291fcddf9deae229c3cf83",
"118": "d074866f55148a903007e321da1c28966c6e4777",
"119": "ae6f3417a78d5cfcae24300d6fb58957b70c55a0",
"12": "59f56158ec32d2165c364c3741f5ffea9417af57",
"120": "f329397add79d3ba502146bf7c58f4c277b058e4",
"121": "018fb17d5fcb0f98ffaa93cf0392925851495d0d",
"122": "a0513c6acb62ac73a6ec04b2ef89414e99405dd1",
"123": "34b012b4b1471d4aefe633c5f844a5eeea0e095c",
"124": "047b1bb3f96a1f9d759a00c5f009708f80d03b68",
"125": "2f82211de945775732af77cff6f2b643b6c980b8",
"126": "17832186130d89b6a10de112418d724780a9c3e9",
"127": "822af7c7ed66ef341f82116992f9f2844cb23355",
"128": "d614249735920adbced679e54e4288e767aa9227",
"129": "d0f5af7b76a8b02cbe36788b49c0ce7c71aaa0ca",
"13": "499aac170d6a52b55c29ae4463e71ae9f702f8fb",
"130": "82505fcc44c8a63739db080b4e7a1d698928b0e9",
"131": "1546a8037ac030dfc3eee8246d6dfb1d0e6046f5",
"132": "a43f9ec419efad47332676b5e88e754144797f0c",
"133": "ea833a35d38419fcc99a14c005abe5d4f9281ebd",
"134": "d8e07f03ffb03682ddff60e860ee1e8490b1d6f5",
"135": "b1af0c0c10a890b5d67f37cf43a673c5caabb396",
"136": "6d15f218ff643a5c278973108b5f394374fdaaef",
"137": "1cb6d1fbcd5a60cec68b0bcead1b3bf73abe9e28",
"138": "633c132789de2f3c2f39d6fe38cfe5ca6ed8324f",
"139": "52377d22235fa80679b8d2c4e69e744982c3f6dd",
"14": "f41eec957fbd8f7cdf97e043f8d454edd1352fb0",
"140": "f0f360b88de72774b105e427e33adf206714e5d3",
"141": "82a19f659459530e1661cb5f00ddb0160981d434",
"142": "99e330b9391daa96460cb35e2b90cf3b9b1657f3",
"143": "9aecdf1df1b8ca2040e705269f4682f5b3fff19a",
"144": "8f1be356a7ac11b09d5fe9dcd137614a04dfcdce",
"145": "ab327675b2dad4432016c3047f50c715f21219a8",
"146": "b9c661cd9edd043854ea35f01d204de7cdfc1136",
"147": "793a44c2c03a97719f53911e6aaa7f8197fbbdc6",
"148": "1caaf4e47c7c6d81a34f09191a65da5b076d2134",
"149": "6e9cf2957c7982d12bdc32daf4354362714c74e8",
"15": "ad4672f72ea759d71b8f3a894c72c9f4f2e2fc2f",
"150": "d7c648289ab30599699bef03a18007fe4c30e351",
"151": "02d7d2efba43c2c107fa7a0a317fe07ba41ccdd1",
"152": "69262e5a8311250835213b5577f396501cbaab99",
"153": "2bf95b2ce00e9ea8fafa6c16d999aca752422f51",
"154": "287f278553bd066a3bdcf75e7f620de4c2e489d3",
"155": "6a5d41a84cb2281e047b379cf6044f825a37b5b3",
"156": "17364b6133dc421d9def794f125c01509aa9d562",
"157": "90573d58dd1d8ad466e316e4aedba45ad6941585",
"158": "ba63e485c60af87d9d1f736ba92bf758de6a1c57",
"159": "ddfb682c72936ef783fb0d5dde8387a5c33edffa",
"16": "0638db64d98b2f5bed9ebce1fc7c4220dcfe1a9c",
"160": "1f6997c9299fa64e76b38ce19ce923150074401c",
"161": "07b68e1215cb161810475c5ea664eb629b86ebf3",
"162": "df1907a6998766bf6d5248f8bd761f2df2e790cf",
"163": "48bd65bf1af36aadf53eec76ff4092a9505aaad9",
"164": "cbef26dd7117f10c2beee46d950fde686b6c01ef",
"165": "b589c8a3a4e696b2cb4273dc321dc42a35bacc57",
"166": "b4a1c9e4dfe743b0fdf4441177a0d74293d0a77b",
"167": "b766b888389808a39eb3abafaff6a43646223acb",
"168": "255cfd39e334bde7b2e953b81e802aeda6be82ba",
"169": "c0c90277287dd4b0218b4f1e46c19be1ae015fe7",
"17": "989a21ebe2d07d9631552b338e141971a948a68c",
"170": "84b40d4fb3e76f030f8765578e88ecf4ec12eaec",
"171": "d2e2e3fd9b50b5318f682d75cd842f84fcfe177a",
"172": "a6814dbd94843d9b6aceddc9f5b35f5abcf93aa0",
"173": "da67dbb86d77c5bdce7fbbaf16fb361e0082b362",
"174": "26badc329e44c6c7b4199cede140f553d2fc6f19",
"175": "283f6f494b41ecb827ccfd1f5ccec112704669ac",
"176": "88a395190f7db4341b74c3b115ac41563eb4085f",
"177": "a7cf9349bb8871e6a4b0e2a456602aadd19fc137",
"178": "991c6b4686bb624a749abb20751dafcc7aeae6fc",
"179": "490d71e8f2b18d2912ca54fdaf21b156b5a8d697",
"18": "843c7bfad876074f5113fe74435eefd537f3154e",
"180": "3050808442d150c069193347b66148d2fd35b9e8",
"181": "16885bc0e7ba3a813c53a54cc10b603a916183a4",
"182": "6e19017b28f718112a408f90587f7777e0755dd5",
"183": "c570acf004cdd51eb0872fa2556718996c61b252",
"184": "c2be4b682112b1ee7e9e899f1506248e0296116c",
"185": "5494e596f3968f856c27d022e2de5e8ef10fe882",
"186": "c4c4b8cb672d19b1d6dfa848b249c1e37b0d5a43",
"187": "975dabb4ed86bc30f616381c155a4fb0ee1883ce",
"188": "62ab6af25e0f9649b7eb0411cd10163655342cb6",
"189": "c87c3b0eb1d02f770710a58a52a71dfbed3e2129",
"19": "3cb2229737c76575a89e5ac477ce2063ca5e1be9",
"190": "bd863621fa20c862295a757834ff23ec868dc05b",
"191": "2166bde75740f1aa0c9f2cc6c6d5325825787bea",
"192": "4b5b49681b9d4e56ff489f10ecedd60498982b5d",
"193": "b58ff3d6455eb833c1212debadf7ad75407ab15d",
"194": "c3d54a12b17cc206bd1f179c1f40ccfa69fa578f",
"195": "afe6bcfa557daf074028851d90e3b01712330dee",
"196": "321f71b7013eb30f99126abe00fcbdbb446801f7",
"197": "e5308957870ddbf2551d7688e9c5a24702bbe2a7",
"198": "eab3b54b0add9fd58aca0d53dbab632ab031480f",
"199": "e650f92a3c098618119b592caff1693acdce22ad",
"2": "6db7bfffde1e48b47f8e485e0b8101d690ef11eb",
"20": "82cc413196f97bb7d6a7fd6e38044748b4a65f74",
"200": "1b701c063afc2f7c712f2fdb41d6593afecb7e58",
"201": "d6ad8a56f73733bd5db62696004ee82940c4a5c8",
"202": "0f475361f9d703358f200601ba2a4ec9471df2f1",
"203": "f69002e5be64648db8dd50802fa50a153ad00084",
"204": "466e6d4017e8366374d8edfdbb20a0751dd70fdb",
"205": "87527243093d417e0574dd7e6a0d89fe4fd3c9ff",
"206": "56d939981862dd3843ce8e2cf4f385cf7093f760",
"207": "daa4f048a84df56dc82387b00c1428ac417e2f36",
"208": "708024dd652f27690e3fae0bae788ccf212b39d1",
"209": "9f789b4db4ea2cf785b55f631a3f04b94539724b",
"21": "f31bf10ad52d7cdac02d5290ce6c332e6cd250f1",
"210": "68d2104c44cd75abba9176b2aae1f23c219fdd02",
"211": "658e890ec91c9b5a0d5a18b0d23f3f855566c733",
"212": "3ac47262d33db25762be4c62e8a9558afe65ac7b",
"213": "3d64b7dc747ef62b5ebfe4a8be2b644a052d3637",
"214": "a42217b5ee1fd10b1360f3c2b2bced622f69b765",
"215": "89c74e8d3e33a923be4af11e98a5d5c8cb0d82b7",
"216": "8073e2cd40aac61940d06b115cf0b7e229bb5054",
"217": "af89830f39ebf30cdf35eaf71bd81bd100519bc8",
"218": "b4c5f8c2ff238f49c33689759bd83448d0fc5011",
"219": "ffdbfccd3876d50586115c91312a6ae6c6577612",
"22": "45bd98bd33bdb99544c7e60f719565a09f1312e2",
"220": "38b48c5d354fe28ad3a4f2ead68615ea947e642c",
"221": "c6cbb4059d5697e5225d0cd3c5119e6c803fc22d",
"222": "8b179b18c7c3e6e566c11359d4e64352a85b2a83",
"223": "2f4c768a6926901d9f32266067641dec1d635624",
"224": "26db0b9e637392f8530005888ec5c08935f40721",
"225": "c69972581a7d3b613ce6d8d986430986a9d3e8fa",
"226": "282a312522c96547cedcd21d5cb36b4512a52d4f",
"227": "a2b4760647d062b7f865f74ada2f7dbd796a0b17",
"228": "bcaadf3ef10b16909af7786225441a6d04149fc6",
"229": "29ed6712c3bd91ef762fdd75cd2619a61366e5c1",
"23": "e8b6c991ca7c8622a3909b35e9a946bd21ec171c",
"230": "790ccdc0e283d47373fdf78007455210655f3364",
"231": "cb52f42d947d40be44028669bf499a2d46ab0f1d",
"232": "c6d74f2d0846f88d47d80961770f4aeec489f021",
"233": "feb8c46ed61f0b034411288b320b2058176a0815",
"234": "080ebae5d5c58f10bd629485e83684ad42a54af3",
"235": "60e75b61ac71e64e4cae65cb9ecbcdcae5ed63fd",
"236": "71d1e6fc8ed405225cec3bfb72ff5da30051e9fe",
"237": "9ca98a536625df955f8e15d2bed0704110f20509",
"238": "b2b270d5b116c997aa9583f56ffce34a4f1df35a",
"239": "9f2d18f6be79966ba202189677060f2e8075826f",
"24": "690db6cb211f1f4faf606d5aa54d687959bf4903",
"240": "cff570a6ef83aeeb390e2a5badb8ea63eb303bdd",
"241": "b710b9e91c03f5362ffc716ea7103f849f76a3d9",
"242": "15726c6b6740e8e28741e276dfcb1133da87e388",
"243": "f27cebc5e8d378e556b8b6a08001000e1a995ba7",
"244": "1d1d505ae9a12b45b3c5571ec4505922dd0091c0",
"245": "c6227c932ac4dbbefa659ee9d5f9119c0c16c3ad",
"246": "d5c5dfdfef2858716b5269b033e4027de63f02fb",
"247": "37c80b2988ed3083365ac948fac50e3738375287",
"248": "782e5ef4cec6c7e75802106591a39ca779f333bd",
"249": "3134267ffc7ba978aeda539e1455122bd59421e7",
"25": "97ab0cb5f43ee0a22eca8ad72247a642b5cc6bd3",
"250": "c5ef78c2251d4e1a258fe4f421b1be8b80f1303a",
"251": "445538a946a791437b21bf73f6ccfa562f37ca0e",
"252": "cb33cf43667c695fd18def17dc8fa4970198bd3e",
"253": "b499dad81238a999cc65c7dbd7759e8a6fbe368e",
"254": "47f8dfa431a7b6e316df8a4daab331c820b73dc1",
"255": "402915325e9ca14dac56e556716d5729299d2a8e",
"256": "57cbaca71581ded8d15e44121d68575f9668b3bc",
"257": "635cef2e646d0d3f942d68b59831a99522abedf7",
"258": "a25e385e30fc7d4dacf10c8c09cc8a8491fd7f7d",
"259": "37836f754cb893b5fae9b560a62489fda3ee2601",
"26": "b1c1c8f03ed6a0692f88d68cbeaec4ccf29b4e4d",
"260": "2317c8f4b9463aba62a457b26636554a2365898f",
"261": "18a36203b26acc3de2a3d04b96a052603ecae262",
"262": "a9387beef8c730c4102187ad74583988e31c0ff4",
"263": "194956639f4be91d4e5f9e9a506920e8f79e513e",
"264": "739ce2aeb90121430a10210f77ab8f767665bbcf",
"265": "7acaa2f4429e29bb177b1313500c6eff4eb2528d",
"266": "85b10e79c68e7b802f6b58f79c4db959183c3fba",
"267": "e5a7e103d4303034c715f387838aea8fb4cc15fc",
"268": "aec63aadc3b3f6f67f1b42236bd6c6675f7132dd",
"269": "c3258f6772c47a4ae74795241808d1d57f4cee46",
"27": "f3f9e575a87dfe0569099f754d0bc73e4df7ce71",
"270": "33b9ed996acb420e4b9e80011f45c3b9c01bf598",
"271": "aaccc5817fd2a69b538d8b4c261bcdf4c6d81b94",
"272": "d063bf66e159624b326d9d66d44fc86ad33eee82",
"273": "6fe273748d14744c241b7a38ffb5340e1bfd9876",
"274": "529672d2b4b12ffb0261eea25ede04584aa64a15",
"275": "7867c904a27e6e94b471c67bc7216f790a28498c",
"276": "62e73a9e1adf4660505ce24c82a76e7a29c599b9",
"277": "63c4c4eaf2a7fc0c50a032c22a0a63c982f79e6d",
"278": "830748d0876bfdb5eb8652598f9ba92170832639",
"279": "b7c7e2928dc7097dedd45dc11185fe43d451f762",
"28": "df3ea35055b2c60fac4ad9c9f5ccaa1a7055147a",
"280": "ac536bca6267e2f36d8ec0db355f6ae961669609",
"281": "efc787af2a8059560d38baaa8d45dd631eca5218",
"282": "26814adcfe806b2c438e1401adb8987d336e62fa",
"283": "4d35c3fe38eee0d953650939944ce0a0f7c4cf23",
"284": "c9c538e8e06afcaf7b7efc062760bd919063a29f",
"285": "911a3e67286b3542956f54739c68fa716e6f369f",
"286": "00a3952a256e62224cad1e36eb82d39fdc81c3cf",
"287": "8535cd905715e951e7de89c3338cf33950b46cfc",
"288": "02f8ab2e3e0b19b5adff37ee089400aacbd50068",
"289": "4d12a4888eb532cdc8ec474e75da79de6286fbeb",
"29": "fba91745a616434ff20dd3c7e9b04bf5434ed665",
"290": "9c297282ef844b03d1c6c231277619cf95df25c8",
"291": "bdb69fcc922c7a0dd97e0414d9adc5ac1c556f6a",
"292": "01095bde46a3d061cb99f3ad8dd77d05fbaad68d",
"293": "6f948dd72d347252b93b463db3b7ab4caf4d7b1c",
"294": "c95280024245b52cb25ce044a17f5d9be56e5cd6",
"295": "65d020329768b40a64b5f37fc9885ff92b39b960",
"296": "111dfc8ded61d5103a70f0efaef7a34b2f8b0917",
"297": "323c1db0e6aee7cf76f51e62d64e01fece9734da",
"298": "b1de68596f5aa7525fb800277283ea1a3d9b3022",
"299": "7bf47b887b1fd420ead3ef3f7c5ceee9b2700e4d",
"3": "4e83e5f9d89cb2ee4add87db9b8cf4188b8bbb84",
"30": "318dd8a370662ec3a3226a11b2dcf012d00c78bc",
"300": "0aa83b245c69ed1e252e5b85fed0bbf8dd21d295",
"301": "f5db228cc5285c3a2faa56c2f6f736f0a26e37b4",
"302": "fd175564c84247ef846f2ceaa333e333466fc4d9",
"303": "a755f6403166b68bb281d35329b66856bef085a2",
"304": "70cc166e0fa5cc03f794444afa736a3200a11e7c",
"305": "c87a1a129dcd2ac49550e04d2372466dcc32bcaa",
"306": "35f62e1f290dfbb24c2922e9d27962c2ec1360bd",
"307": "c6def18b1f4940ba7c689363dcb8fdbc8e4bda68",
"308": "b213798174b43fc43d8d27dd18187d8e11b5197b",
"309": "544281197e40d378c218758607796b2cb3186edf",
"31": "2c712a5614dfdbfdc0515b98a0eef120f25a9fad",
"310": "e95094365e5eab55dbb90948faf797a06a1293f9",
"311": "f445542cdcdb03d0188275684e1e951f181aaa11",
"312": "7ee9015c68a1e6f6c908074ed90793847bff6312",
"313": "a95e2e0e5bf136fe4fc452cd395b8f8f28200bbc",
"314": "2e83b25a66c237bd4175e7fccd44808f1a432014",
"315": "5c41b748fd0a222fc8a8705d541ead05ff21c343",
"316": "bfd9aa2680cd19a9ffce8a1fc5491b38422f8692",
"317": "6feae2000330dd6d18a0ade69ea0c37f38cef294",
"318": "f98985f7a8a228cd388b45c5cccb82e5ed9b59e5",
"319": "deb84908225324e9081a2beaee552532b9d0fa5e",
"32": "3e1def00238ca55cbd282596edd12a52f73bb58f",
"320": "ef51325256ba3e41628dd9ab05ad92edd7407799",
"321": "1329a0e610f287c388275ad21b2eb00b63b9dd51",
"322": "3437809055e9d330e51f2b6ca31e974451d351f1",
"323": "e67b444745acace44d49a70df18fa65ae0eaec9f",
"324": "1899adc9994830ac6c6b22832ca9b746e770dd20",
"325": "5870ab92d1d8a02ec292bd39a64ac7bc4ff007ec",
"326": "04f56151b21dea19b67bad37192851d3547f1de3",
"327": "10ef085f3d15eed9d076d9229bea044a3e4fd8ff",
"328": "8f796e23b8dcf0833bad7f6252a9c6f1bd1b5581",
"329": "e526e26ce96c9f2a7454f0e5c9a52426726c4cfd",
"33": "5b2cba03989f23afc6d5e3bcd0948fcf6d4b0f65",
"330": "8a63c7214d1bab11cbfe58e6bbd80cfd4eab3eba",
"331": "5ea65a7952598adc427a06fd4d838f37f8da5541",
"332": "e2f90162a49de7ba576721dc2284d8da2aeb3990",
"333": "9625701b8eac14772b5a7629421895104c01be7e",
"334": "23ccb9849aa99ee51f74d6b9c9c78a4febca83ae",
"335": "898deda15e0bff343de0f06ca17d076d4d8b11a9",
"336": "cabc98166963a2cb8b281d814d16f025503f79e6",
"337": "1d64016135eedab44b3859d4aa783a0da70a8b84",
"338": "fd4be00e97de423f16da4d670cf2e4b335cf56f7",
"339": "ab1d71e37e89a596a73a5681b7241c8e6288de3b",
"34": "8a3203f535418e5545086ecee37485080ea974c2",
"340": "54146f06412199ae01c1cfe3bdb8d9f071bcf97c",
"341": "479933ccf7e38508c52858203375aa7972f54261",
"342": "eedc4c168fa26b52c0a511398c24d45d1b92d643",
"343": "2c7493eb4e5481c15625717623025b5bd63335f9",
"344": "0878637b8431215e54f4eaee78e35bf625ac18ed",
"345": "c4efdc1acdcf777c8ea8f1d4f967ec72a5a9acef",
"346": "77d6c11e3fa95c4d052274b6fbb98742fa925080",
"347": "3e1d7ec265eb6191dc609647213d78fbd414c3c2",
"348": "e0df57add0fe2a8fa933935d40b039d473695eac",
"349": "a6174b05d3339c883eaf4af8ef3b580bfb9f346f",
"35": "a8203d55f90f3d7aeb513babd2b5c0b28108f676",
"350": "508787da473fa6c828f72bc2ca48de608e1c0ea0",
"351": "2a2ce66402b7dd2f7cc17e5d67c05550cf08ccfe",
"352": "f7a2886a0d89fafc6ee5f930b2ae0439fff1fa6d",
"353": "53ebd8a4b9f6fbc486efa6761042e13b4d5d79d2",
"354": "ec488f2a480c2825b820ed8b8367bbeb83df2b6f",
"355": "cd915929e1f1fb8cd1e4a95b60cc2e6e30b6934c",
"356": "7ca59be6aca7ef128e1f3ddc5e2bb5f36ea1b281",
"357": "13e4c3187d0c8c52a90798b219cc82b7b941a819",
"358": "613d875d2a02ecea6caefd3ac081b0b2e5083c32",
"359": "db744c4f86d0ec8ec0a89579457f1736749beb13",
"36": "3ed15fab53cfe9ab73a7619030f75497648c54b7",
"360": "3b1fcc3968af601636c29d209dc180f151776420",
"361": "7a4b7cbd5f51e5912d527bcd48974b05d7e2f7e8",
"362": "bc0683b46100ed79dbbadadc30ef5e18181bee29",
"363": "96b2e31a6e6419570379052fb57512787caefb46",
"364": "6c8acd6539c375f50f25403f513b0453d855548b",
"365": "a4eca7292479ce5d2fe90a5e3c6e13017df9c79d",
"366": "7c64431734e20920128115fcf52d31fef949ad1e",
"367": "1e338ceb54abfe83f8e07f481de07a8b8d1ed35f",
"368": "445484f35a4bcab5c8793cf132e2bdbf2cd26876",
"369": "9f47a57729f6926c721a1021456b32f83b7aa98f",
"37": "ea47f3660c9ed11ffe84577324ded692ae58e19a",
"370": "f67f0232297e5d683732d81657d06ff9ad5a6c44",
"371": "7122c32eb5752882091111676bd7768ee1e4ffa1",
"372": "9e972c9d1c72ff54c860353604b0fbc7395fe6b0",
"373": "07261cf2a626c34b4e430878662cf46fbf5c91fa",
"374": "320974f99e428e23db9ffd3a88a6a9e80053ffdb",
"375": "1874d465af0d632771630c7c456b8c33e7c9caf1",
"376": "d2c727c4ddf27700b28b92a9a7d63c14d7df9b5f",
"377": "4e0aac42ea2c5884c3b34119bdf3a2f9d3a9ada9",
"378": "2d6a7f6e16a0bc1ac934814a340157245305e20f",
"379": "e3e97d392de034944cbfab5ac5b1f4d367a9a5ba",
"38": "80c2f6f0a8a0e8faf2fda6f7167bcd320c903bf5",
"380": "9a681aa968197af3183236ef1722e6e300e41806",
"381": "91dab7ceb1972b65c26276d71a1632b2d4dd1fe3",
"382": "3744218f0622c293d57a4dd0d113358d13892085",
"383": "c5765e0a84301df6698e41d26862da6c99eb66da",
"384": "2572bd52450abc61dee699b6b4ddeed454e4131f",
"385": "ea78f575866a643e81c712e4885e1d27f33fcd10",
"386": "94c5681874d0c5e878425cb9ba2f42b6b09cf4c4",
"387": "447b052eb5b0012beb215e8a491ec023ead8a885",
"388": "a7f2e90c0c8e76724597f5b5e9df894e5ba18ed6",
"389": "8bd049a9e234477ad5c6b1afa113be5d5bf86ae1",
"39": "69324abb7f1983b2521225d3dc52ef4d86244498",
"390": "676bb7a68efd8519229634bb9a29853b49a73f4a",
"391": "52a89452f4d05c984abbde8273e1f0c1b4962c79",
"392": "c30ba1baf125d8bf41678af2efcca94af3bccd9a",
"393": "f10ee6d2cef20fcdfbd2e7350c45206fe4799b8b",
"394": "05b8d01e1246bd332aae5c6aec3f428792522109",
"395": "9fcdea122b17196e850b90322baeee91a0bce1d0",
"396": "c5db80310183eeb984c1fb0f4341e5eb72ea4808",
"397": "52b1d1f29fc8c0611d983571086648e9936aa42b",
"398": "211471d730b07ceb63a8eff8a6e9c974723b713b",
"399": "76d25a363110ae96d3f291516c1bd1d96632bd75",
"4": "a96c9b48d7c2b91f035355e3bb50e5544fb7fc07",
"40": "4a7dc753d59bdd173991c4d581df5baf43881f35",
"400": "d59656de400a49485f58a0898142fe2fe0d6dda2",
"401": "8b2c035364986f399c9cd7f42019f899960b5538",
"402": "6b6f4ac31613fdbe5d6d7f26383b7bfb4b31db1b",
"403": "952e400adf2fe2d0709c68d7d156fea5e973dac0",
"404": "18b8a9618cbab375ec6dc22b70a99ee58dd00ca5",
"405": "2031280e85d000601c0ca9ed65e7bd6eae0f83e4",
"406": "69c2a8155a70cf8ac94437ece943452ba8b6beff",
"407": "5fff8737fbf9a1c343b7687d07d3466145b8828e",
"408": "a9378709aa65d7749319ef1cb86743dff87a6fa8",
"409": "cf2c84f620360e1a043012a5a9debfa63073d89c",
"41": "5ab382a77cd33bcb0d81e97d3e849a9ee10cd01e",
"410": "36371988dd6639c7dbae302162dbea6ce4823f25",
"411": "353239cab84c1459c64924c9525843c5d7e84904",
"412": "8fb1075658eb0cdafa1cfb31cdd9acd0365a42b2",
"413": "26befb6461df31bd2ff9d55f49b353fa8e75b42b",
"414": "ca94650a0d5000fb32f411b75053da7476e6a208",
"415": "d967c5b74a87dc1d3b7172b626cec1c12d7dd294",
"416": "40ade4fec5d90e1b731fda1b40252cec13de1251",
"417": "5f7dfe1e5b18cd82d03a8a91b9ed4102818e9944",
"418": "51cff8c2829c96fa6e21b49463e8f59359f5deba",
"419": "2afe33d03d62c208e629bfe50227510c97599df9",
"42": "44437c73944a8c3fcceccc5dbb0ebb67ed3d14d3",
"420": "e4eadd3a0d6d9dd4a352f0bcac62ae1b17fe17f9",
"421": "9a785f3135d5907d52fd992547ed96921180fc17",
"422": "4b7899bbc06941f64cd650ad41553a5f79ec6feb",
"423": "1904084070eaf3e4c55450dd939d96fe82153817",
"424": "50a3d428d8e556ea658db19864745096cc41a932",
"425": "f27b166cd45d3e718b3f3d29cdbbd49db7bbeff6",
"426": "e819d887937e4191d6c092394fed5b85b6899e6b",
"427": "ed3e1320872c246693275111be2a8b9c19a3daca",
"428": "751dfd3fd4f9f2f6c5d8e2d03d5ef52ca40fa82b",
"429": "0f267cba173cff0ff097b08caae3051839adc344",
"43": "c5a34a95f980852863f9780d4359913995506579",
"430": "07586fcbbd81a67d4af43c019f5e5bea1bb2f25d",
"431": "9489b5fd5720383c988dee2d721f364efa1f7081",
"432": "fb107715dac2b6a14ced4d622476c04c28b9cf6a",
"433": "74dabd1124d2980345c71f572ff4835d2bf25649",
"434": "3b6a3be410c49043ebee37b42998dd680110a951",
"435": "5c21a848c447e143a73c5c1ae81b998c8f41492d",
"436": "5e3dc2c2b67a5c5f34ea21da35a14af66362995a",
"437": "01104fffe6a9ebf16bab619ffe14bfa029439130",
"438": "83bb635c35552b62c0dacf924dd6c446f4364bd4",
"439": "7eb20d430cd29fb253a96a16ae331a74165a74bc",
"44": "9521886aa8e2f88df61a213d30c06eb0b6fd5237",
"440": "1fc0897b4a2cf3c55bb12d65935c96d3ce97051f",
"441": "7cb406cb6e53cdc098e0eb22efa5f35f7c89394a",
"442": "3fe77dd9e18211f1d0910cdd38018e836aad4aad",
"443": "90e2322294d3d71d05f0825abbfec13246367604",
"444": "ad6928541755ee9b523c3d630dc8c07eca80bd62",
"445": "b4ec401282791bfd2c3fc748514a95b4d499c793",
"446": "14d49bf09c489795f91193efe94f971f68a7659c",
"447": "91e02e542873fdb3959e6f027c45ca01ad922a75",
"448": "c7d764af1f044d1367cae352048e338f39b7731c",
"449": "732b97f94f107e3e42c591ca8305c31270f88afa",
"45": "9cb6821bb2a3b2a710bf7c58717af91c0f257f20",
"450": "d1b6c1ba72c88382e8ce0a1024dde6072863e0b2",
"451": "305033fa0e50bf79289a353ba4137d2cd949db99",
"452": "e026f91d615e966ce4d32540b391b7f016280b70",
"453": "bc88634cafe71adefd754fa5c5c9e62d162d22da",
"454": "377c05a1916366da05bfbd6be7478c41c55c2173",
"455": "7fc07ce92f02206ecf9dfc18d86135851c00a32c",
"456": "0526a1e1dc3060f2ee81a5f86e1c920056b98fec",
"457": "38d763a7b067b937682bd2b8699a6ffa7760f43c",
"458": "ee71cc4309f004ef5cae6b2068ec3ef93969d250",
"459": "674dc2c7f7fcc7ceeb5eb47dc6c324a5f7ac142a",
"46": "e76e32f0430aa00b001da468b811ee2b5814373f",
"460": "cd0432ab69cb9a2553f3309d249be8fe3f4d30b7",
"461": "07314555e5d9568e79729fca91de514f53ad2a7d",
"462": "14223be4f310e7457abe4b022f04491e4a9930b0",
"463": "97766f02e03c9f7e8cbcc60d8f9bb0639f0aa0a0",
"464": "c27c156d1bd13f8be44db0f85f8cbc0c537ded20",
"465": "475e60befcc4abe1f625996ddcca18f7f6cf67a1",
"466": "fc6e0a7cccfbe5345cf513e55a904a4262e08957",
"467": "9a3e73c0e4adcb0af7b381b8b87f337e63e1a956",
"468": "3a3ba984173f131241b8ee9fb41834df016281bd",
"469": "46da422ec814c654c6cbf486ff6c6fbb99e38087",
"47": "9857b47dd842e210e6aa8b1144926be35036426b",
"470": "c28b22222af9da706b52e31f8ce6016640306842",
"471": "5595d91bff1583125817a35cddf0d2a2c8289461",
"472": "a9719ab79ded583fa89ee5c067dcce81518004b2",
"473": "3aa22caafd5a96dfe0f638a0faabf95872e17ffc",
"474": "18323becc51f852fc3a7fab5693cee7b7f576bcb",
"475": "947983417ce38f51a47283412be562b968a9fda4",
"476": "6e5de893647833b653de680db06b2617cae2e98d",
"477": "09b21589be5f69be514e7251b5a183cf4fad0662",
"478": "26cbb61cce531b0697860f8c9f314707c65299da",
"479": "0ad8d880981723438038ce24dcb93f93179cc80a",
"48": "44570a488b93ffc816ee0d18049a4ec570b25b8a",
"480": "4b5c7afd1b8c260d033de948639c9ec79f9be829",
"481": "630bbefa9db51fe8e822e85f12f44259a150862d",
"482": "e96dec25d1cdfc11c7f16c008e966eec52eb395e",
"483": "ce4df548a8cc9e2ab5569a7252254e32d4ff3861",
"484": "3b8d0e8994946f8c893590070fb6c59d5333d4f3",
"485": "c9e8d8cb417a1d10a321554a334b0cdd6273d1d3",
"486": "41d79072710611c6e34d620a8647d69a22ea4e90",
"487": "91b6a7306dfab9fd0b7385b4c74ac1fc83a7b8b0",
"488": "a6539a144e90810d9d6854895d2349f383a8c506",
"489": "393a0aad7a3be342c32a56ea389329e6f854188d",
"49": "292aeebfa68b3bfb88978d71ffd72e86e7203c27",
"490": "1f5fe3c607361adc9d1bb03f34c9061b18152455",
"491": "d3721c79a0327cddae1f8cdfd84e9c3cac248f2c",
"492": "0655e8969a743e88eb6b950bddaff87cc0ae1df2",
"493": "0e90a8eec7246359936b86c3c494beddcfb98a9e",
"494": "b5690d3ecef938d4fae66fb0da080e052dfeb4c9",
"495": "db937d87eb9a6ed81a0e7f72c778ee08c3852323",
"496": "5f73b25fa76b985e75bf3cbe9df0b17a58fb4f27",
"497": "fb4f53b7538a45a5840bac3da389e7b36d0a4e35",
"498": "be9541747f65ef1c02bca77c213f21656db8f546",
"499": "1988c3109c8bb3345c929badefa5e32fb8ecdebf",
"5": "005a8d664e58ee2096c96830ac7c8868136123db",
"50": "ea4f049688ec004ad94cc9010abea468dc07593d",
"500": "4319a6e1680eeac0e4d05368890c6625916e83ed",
"501": "71ce849201a2867d4da7e3dad3f1ffcf2384ca60",
"502": "e2362e4c06e2602dc3fca11b28639a14c2205ddb",
"503": "793af6e52712c58e5fe1a6dca05188de6bd97783",
"504": "ced5814d46042e8e855a5392c7f24d3ba99ecd7f",
"505": "877501a69defee0eed15c8b07fddce5be8d29144",
"506": "8fec1762eac155128de7cf2df42ad637e99b00e2",
"507": "a1c78a8374619fc3781b946226743898cd35f943",
"508": "b90816a6ddb3469a097509a2287a8cbcfe8ad69a",
"509": "add88c735694940bf09f09c6afeca189aefd664c",
"51": "e19224083dbc643abc8cffe7423d920d6a75d1cd",
"510": "8340a0dde049936bee75f4d42d1dfb8357411b0b",
"511": "08174418787dd7867879d820d2aaf7635fb9d8b0",
"512": "a6716af4f1c3419b791c71334cacb76075b462e4",
"513": "63cbcc8aa78e9a217de205cb97685fbceb6313e4",
"514": "19731288ad6250ca0e5acc25b6faaa747633f1a5",
"515": "a8c164ef7bccb0392c7ab215155b5b9fc651ed47",
"516": "b4fb26a76f2a7b4a85f6c70fa6c228d7a006997b",
"517": "898277c77947feb83ed220fa1668b39150071ff8",
"518": "3507c206b4f30959847f0e989673434733dedfc2",
"519": "5f5ce44e54e178c309a0e6b160278f9af54d1081",
"52": "92e761acd1d183d0775b7746cc93683e55efee92",
"520": "46488635b0955083424333ec775f61d28575d235",
"521": "8dc4759ca0bcac5e705085c41719097f0b229a5e",
"522": "7ce1e092de4f76165b122d0dbeef9e6fbee89ad1",
"523": "5d23cef222c70a6e006c1558dbc1ace274a69f09",
"524": "245941ded147f102fb0951ed1da341a2933d963c",
"525": "dc5bdadf9dfd47f8fa16a2c7930e80483cc4457d",
"526": "d005bb6bde60627e8458a9190a1eac8452d08d72",
"527": "11eea32b391e51d562f6fc13e689d9a748fcf095",
"528": "f19a6e071538467068b32e7f4dfbfb82877fefee",
"529": "3c8e062a740f5f75f6755325307fe1264ed9375c",
"53": "93e4b2598b0222a502281410d6465552c908f673",
"530": "ec09b8e368869e693fa6d9cebb34bcdf24181515",
"531": "6673e3717ce850b8b0f03db9f2872ed6dcfee54b",
"532": "36e9ba4215847a84d3185349a0091fd19ad0a8c3",
"533": "aae6f12d9adc6b7dd04f2c68815986d5566f43b7",
"534": "e88ff001292baeb6c16c82033e6a0d5320675bbd",
"535": "0277bd3e3867671f6cbc2a135fb01710d2fe88cd",
"536": "fd759e43af20f0cd3680f009c8f9b092f2cd04ca",
"537": "d46810f298879cc463324970bf4a6f84b5f7645c",
"538": "7c5e196e43e0a168394813e1a208d7bc0da8c37a",
"539": "f2ae87b5f06c679b2698039452e0c327dc01f853",
"54": "7b48e3b623b5dc715c2869899f7865a860887a17",
"540": "d1c30d6bfd1f213f1c7cf9f73304e6243a4c4ce0",
"541": "77485325aceabbfc6ee8731a26760ac5faad80c3",
"542": "1c85cbb18f2e39966acde6631404c3bd0ba435aa",
"543": "dd7d84330b7f35d6308cc6dc519d948d3a54a0df",
"544": "cc99b585b256542e0fe7550c1a1fcd672ad05c0a",
"545": "e4897a5a06cc33bf0fdbed93cce1cf2571cbe2bb",
"546": "34da36521eb600c5d46cb7070540d03671b746af",
"547": "6c03ffc74ae352db35af6e2241e3fade4a3740b3",
"548": "a5a92e60618390f4b1c69bd1ad528d54bbd90ce1",
"549": "c05c9a44409719914430cf06e73b085a1bc17d47",
"55": "3bda6c2544d1a59e26304495b07a717e90da8e98",
"550": "c956dfca08a3989849a7c032bf3c90756b549f4f",
"551": "883f788c832dc68c3bc30a649a0a378da6dd2c83",
"552": "d1cc61ed051baea256aded220d33feabad7c25a5",
"553": "cb0c47ea7ed2c04c966d4dafde67b2d22b22e537",
"554": "ab8872bc246426666abc5a68ffea17299cd5651d",
"555": "9d97bf1b210fd9c95345626d3b39e6a9070b5f4f",
"556": "135f69499aa21e83b518c6d1735881162bc0e666",
"557": "f9ced94e04c89c3f75e50c08267aa8c7f74f6cc1",
"558": "12deaa7552bb0f51922426fb71eb72829dc4c67b",
"559": "3e1fd53cd6d95d245249eea3c51e85838a1b6b65",
"56": "d2baab5e391fc30a887b6f63a456429d5dae2d34",
"560": "cb1b555ea2f4eaeb234400189a569309fd7ea8f7",
"561": "621aa3a1333de163e67fced6e9d2b9e9314af56c",
"562": "2b987f8149b5ab15a9cf6bca0150e560a3f32bf9",
"563": "6b4fceea3e1b2593a560987205ba9bdef1e6795f",
"564": "403cd28618acf35c4c9d7d359c38ed076f61ad90",
"565": "5f59134155ce498438f2d6375d02391060f20629",
"566": "cc6e7e26fe983bcb0b685b58875e83a9705cea8b",
"567": "d2d90bbd752a09b050c911fe4a88916c8139a8b5",
"568": "991aa5f6402beb75d75443f041181de0aeb008f6",
"569": "efba6f5c022ffc01e532e4d8f6328aa3849b388f",
"57": "1da63049e116a414327dede7518927a3f4a8c967",
"570": "4a0ec15ac22475eea21401810a1cda15d63871b6",
"571": "bd442247417282552fba92e8eeb376e220492932",
"572": "60348e6815d2936797ab9d579228c5b8e442923e",
"573": "ba16c4110e23fcc17ebaeed72fc00a273d33da3c",
"574": "0db7e7956d32b5f9797d107686f4738a3c666b3b",
"575": "464d10a404f016fefabe5cdc5b08fd3b655572b3",
"576": "58b8eb788af4436bb1687ae8ca0bb9279f5e5989",
"577": "70a89a462e9b59bd64ae2b24240140d287fa2411",
"578": "aa7aeedfbadabec15050d760cf33dc2351c28a2b",
"579": "031c3f6f0e684649e67acc45c26a5c10a6cd17cc",
"58": "43499193086a91d1d6ba4188ae6c0b8f97a64bdd",
"580": "d72576d5ca8fa93b9eadab980c05addd4b04471c",
"581": "a4a92241d0fc8c0b1143c9e801bbc56275a9c270",
"582": "92d730e5cee88403b4c5158ae9c545bfeaf94484",
"583": "c2d115ea578d6d37305da91e2d06720140a24359",
"584": "7a8a22a956296a0a7ac147366788bd7a2a909e5a",
"585": "4ee8ce2e93afad81c80e866b38f1f5b17824a03f",
"586": "4f1287c022e50618bbc19bf5c64492c5df53b569",
"587": "68d13997296679e4092c21e544e60ec397a76987",
"588": "9fad13813bd3d98abec442507b7622ccfa7a1c62",
"589": "99584c63b1f140afba5a4d91cc0ae72df47f1964",
"59": "6b06f77101d72989ad688d613a19f5ff262fc97c",
"590": "057c8dcf11fcfd4bbbacc3e294cc93a5e03d2281",
"591": "1423f8cb5388aa8b752d4e35d1f92ec83ec7d309",
"592": "6145b3496276c8bebf291ed2a4b403d4879277be",
"593": "cbb7d3198967f7b8d322e39e1d06fd9cedf4c42e",
"594": "50ad0dcd3270100f251ba5ec010673245cbcf54d",
"595": "e5a5a3facd63cc72c491d8b7a568c11631d7916f",
"596": "626e4f779e782dd5d8cfbc30a452960ef805ba20",
"597": "b77cdd2a7f7f7ace5cebbce05edabf3491e48184",
"598": "3f7d2925edff113e842b38dccbadf17bb9d7b085",
"599": "e34b404780842c93babe11ecfb52a5728dd519e2",
"6": "00ba59ad25c6f5d1e6458cf7ba4a653a096c8d64",
"60": "e87b6a508656b0469ad2597f8695544b5a9b7111",
"600": "9c4b4354d69834144d611c6292c556aeb5c734eb",
"601": "eb7c086c831b8d6a1da353fe7cb10fa89cd86ff5",
"602": "a0f6fc2b7993cc3d74716e1bef6090a7ac01a136",
"603": "0eac28336fbdca2276e9dcfd2c9c8d03bede1363",
"604": "e50ad1182ba7dd78d446c68a5ffc0c767424e03f",
"605": "04c1799401ad98243c3faf7446d76861858b6fc7",
"606": "e2eb2a1ba819be2805c551bdec576988a61cd3c4",
"607": "b1aa79236cd47a83b8bbbf1d08e9ae01c652923e",
"608": "3a5d5b2f6c2780320b77dd6515137562568d4517",
"609": "5a25bff1327961964cf7c1c319f59493d7d0f027",
"61": "a9321f6aa40484e396437b1c844d1ba7cf79f1f3",
"610": "71f04acd2a50b3f4178a2b9544f84e5d8cd19c83",
"611": "65832964a677993136053d95943cf9f9247ee160",
"612": "3f3572309f1a857aafe31d46663f259387cacf28",
"613": "12e3a8ec4dff156628bd086457545c3ef6d7cfc2",
"614": "b246d6ba9952109ec3fb31f41cb0beffda1d603c",
"615": "49bab730e0c929c914db0d9ac1906ac895e689ba",
"616": "2d04ae5321d049500ce59e16fbc591957199ae75",
"617": "552d27a17f61eb4ad841eeed9664be7d42c66784",
"618": "70b3805a89a4b5dbf72c0abaa536b80cebe087be",
"619": "15cd07bdfb08ff1b1bed5c52cde1aab67aeeb894",
"62": "1667832b4d9a0a68b5942e80ea42edb1159871fd",
"620": "f1ee201bd59b686e7eb952538ff9ee1fc11dd8d1",
"621": "ff29047785964feb333b0f95dceeb08e139d8ddd",
"622": "9202734c2afde8bbed8799ea84c2cfcc28ee0785",
"623": "fd4af609ccc2ddd150c974ab2a52c0ef27b400f7",
"624": "4fe99451cf7c83490d46d38480309a93c1c5cd42",
"625": "41ff90a27560852b301f07fc891d52f66e0e2153",
"626": "185db0c059e408d04ceab7b604fd5cdd3a14820b",
"627": "a8c7c1707c0b7446b14ebc86482184ed8d27e901",
"628": "a58f971946dba2e9f69b7c84405b5ca352fa5a5e",
"629": "bee1380634ba06898d903a62ee17846e92df7dbf",
"63": "3edecd0b7527ede3c6c579d37bb49195c91ef5b2",
"630": "ef248cfe51018c69b5eef314825c0f95cd353ce4",
"631": "55e7c436f690bb083725008ae5d9ed7d73fbcdde",
"632": "fcbef0482157ce661618d1ed76d9cc1aeff1559a",
"633": "278fc5cbd54574083b3c734d6959a691e9ad89be",
"634": "41d4beb40e62b9ef1564f564f28a9dd1eb6fd52f",
"635": "313765634cdc39d1b3d43c2298ef12eab103f03b",
"636": "c41abdf05088856ac0428ad4a2f881654676ddef",
"637": "f6b17280a95cab86f7cf7334f437ed52b315c0c0",
"638": "df9eda483a42074139890c849a4a5bbe4edc81bb",
"639": "58c3b6d53a34ff92f3f3763bccdbd62d023d2d89",
"64": "ca1fdd298793f3954fb1dfe8c792817f0bbdb987",
"640": "6562e61a8cb253f4308aa7dcc921dabb3ab03430",
"641": "479a99d9642d9c72d351ba96df7cf7b59d77534f",
"642": "aeebbfd650c65ea6f7920ff2cba054d77c15586b",
"643": "1edfdbebc6fd162839527c5df634e4e747da07d8",
"644": "5b9302737f4a66d219affc85311608404cfff6f1",
"645": "30b8ef353fada138274f2932e72c7f451ced361f",
"646": "83137a67b616a382d04de840033ef8b61b6ff886",
"647": "755391118159f2f9b2c64a88c06fa64875cbcb46",
"648": "223b0c48b4eb08b9e88d3dd5cfac68473183cc71",
"649": "5cec1086fc9ef52273c91204137c2bf10f104f0c",
"65": "0f78ad9bb3bcb4cbd9a6376b942e76507d36a93d",
"650": "51df2e608b21e892c73e94158971d1906bb8da41",
"651": "b4f53d5db53b7c3845402bb0d97fbc47cc53af40",
"652": "c527646636e4b8bfa3147e48ca29a112779da25c",
"653": "b30ec4e0d30c698a258e5bd5b91fdb355b0419cd",
"654": "bdc450e9e896589bb3ece43249f737972e1e6c54",
"655": "c2bb791d28cd580c77442c7dbf1074485536a479",
"656": "f93b9f40385ab1b15c32c54dd69a054b65c617e7",
"657": "84ed2faedb7bd3eb1a4d45792b526aa73867674f",
"658": "fb869ee688ec0a200aa826c51ccc762afc059bfb",
"659": "8f18f26e7bf9b1006463b4d7f5668b899131670d",
"66": "ee557a5297e3620d33fb4fe57ae66c6737bc066b",
"660": "1e07a65a35a698d8ce40f3afbfc32cc5508d72e0",
"661": "6d5702175cb8f00a390181794527d04596238c60",
"662": "2ed57eed2806fc7a20231ede584e8a1a8903f0be",
"663": "ac9e226f02cde1f956fdd6e0f4908fbff85252f9",
"664": "4abaaa5bb44ad34cbb567cddb40ca55dd86692e8",
"665": "73296185aa86218e39ca64cc68fd530d6c884cc5",
"666": "9c0572f018ab974d6c23fcfcf29a9a27f6c1fc34",
"667": "39a9d85cf29b72f2556bda3bf2f234615f72cb0f",
"668": "b6ab670c4c49820134936e69d321df1c1e8d176a",
"669": "d5d82be29d6197f54b949c43d0de8557c6cb036d",
"67": "a65c75a6a836b1b942fb779bf9fe48176948e64c",
"670": "371b81abb071fa3fc6ee2a9b0a2b6fed33148baf",
"671": "efe5e8e6a06b07ba2599d8f362c88bd8327ebcc0",
"672": "88756c5a9ac9dd1b8e8a9f5df7fffe13cbdd8aea",
"673": "85f974fb853ff6b8613020295212674cec1e5fec",
"674": "f6479f5e5f7b82f6e6221ed92b527a91f76604c4",
"675": "c0a68cc33067e45a0f20204229eea0bbf6ed6ad7",
"676": "8469dda7526f680431042ac292755da005031bfc",
"677": "3543d552eabd55d306fed7d68aedb0d412ff20ef",
"678": "06a67b3a0b6dddfccd857cc84e15e654d569f08b",
"679": "93dbb22a92ee631870c6fae512b908935c953e19",
"68": "06eb6d423a71a3c2cadbf5af1077a50eb140eb36",
"680": "eeb3777fef94cc1ec3f0ba1626a952a5d6264f95",
"681": "1e2ff96a90257c37d68078cd2ec2c3b176abbd40",
"682": "16f457d4d8fd0c4ce442a1a4381de786bbc6dfdb",
"683": "ad3421f4aede3844ae05278197d017eca817faa3",
"684": "41121f510adbe49281b7000b1dcc2e105a94884a",
"685": "45df60ffefadff018f7291ce07aa0a90eec36fda",
"686": "1df3944877219cc3dd52cb2a87eaddeb5f8aa76e",
"687": "21d54a4946a8b91accf44874c12bac9ebd15fd4d",
"688": "cee593ddb211545da3a9105a374295ad01e85261",
"689": "1fa803079af6d3023186fb005ca41421921b73b4",
"69": "bf1c57799baa822268cb379e3db405508998fa9e",
"690": "97bc7bd906293c848715264d3260f223860459b1",
"691": "817b6fbf801cb6acfe8ae3abd5c24428ee41a0a5",
"692": "a0ff72080e469dfeda1ae58c1413acc2ca73b46b",
"693": "4e26e151f90428a7ea28ab90db0a2cbe91de5171",
"694": "618bb0914fb54fe7baa145d6c4a107c9df65d828",
"695": "932808855abd8079e28b16852f04d23a7bebffa7",
"696": "663e43f4f1c2f358d54a264fb0aaf4a83927c618",
"697": "c342bb498428689d7e6166bd869cb371ba005bd7",
"698": "bbe8f8ff002c411e6e5a8b5ed081b5ce249e60fb",
"699": "945194fe315f8b52032fb4a75038ae109cbeccda",
"7": "0bfd0467e58581b56ec89e72b8945331bf0b0b13",
"70": "8b22e29d8f781ee17ac209b7f30653c13c1256a6",
"700": "c0e0858c6fa6a8d5f32e6fde2462fb1b6b9411d5",
"701": "f5ce0cf550e149fc13b98fe1224039c1136c5c85",
"702": "afd745deeec6d9c2a56f7793e96744911a68945c",
"703": "f8858db651d9bd3774a811572b2ceababf24d8f3",
"704": "ff5ba09ad46c2da9a2cd10b454e6d3bcd264d8c4",
"705": "4a13ac0a313d1ee07c8b05174a8c8f537f658331",
"706": "878ccaf79634113b5125902c2740cfcc099ec417",
"707": "d7b31a88f0724a05e9ca3a46d25b3767418e3402",
"708": "f644f5c757599535529e3ffaf094bdb94443713a",
"709": "e6d10502b44194f754f5db94604cc6ef324b217d",
"71": "af9d22f95f5cd537ecb05ceaa82bdb0f264395f7",
"710": "4b08331dcc912aa7ab2e506c16ea698f85df9abe",
"711": "c6a4c6481e3538c2f4c6e1bdf5236250dca9362a",
"712": "3844d6f5aa6ff2ba58420faa7a6286d43e970931",
"713": "6e6616fd16686b5bc08d415a146df8fa8c3ca0d8",
"714": "cd1e2d02aa754a6c45aa3acf3a2914ca3b731123",
"715": "bdfa3b22a175e1d843b227611c4a0a73b4a77bda",
"716": "0e663f5e1fa4510587d1e7bf677cf00be23f9600",
"717": "95ffac7496ba428cba5319daba8c03f96949bc86",
"718": "aad0761655772bd859ad4a7d358b1f6459363ce8",
"719": "90f2435e7b0f8703fdc0abfcace76491bb004f5e",
"72": "52cf93335fc2ded12aa60fa837fa1dab5e64f8fa",
"720": "e44d0bd023a25c6d372fc484d983af6a3719db18",
"721": "a4e369ded1fb0c2c2a4e18b33f148c8c50f4431a",
"722": "cb424ea52b75693a2aa383943722c162dbaa5116",
"723": "837ea9ebd4554fdf91287523b677d5cc772ee3e0",
"724": "2991031ca78958eefaaca6227ded7061221f0d85",
"725": "238bcb68aeffba18d2394e2619e7ae55d44b5825",
"726": "55294693bdf5b0d04f704b3967a23d43866061ff",
"727": "6628998e107f17937b80dc5ddf9129e1a7859301",
"728": "b49e614e5025adf67f170aed8c4c53682a3f6072",
"729": "e15d0f240a670aeef27b371aa21d78374864925f",
"73": "b9651963b64c75ad6d2f9f0790450f751a1d512c",
"730": "e13bb611f88185bea7bb281808745b9c82f89218",
"731": "8e761d71dec451846f87844619bf22825522e296",
"732": "f85fe40d5f7eebb4e63fa41ac1f63329d456666c",
"733": "7ef9133f3f92ce1a520c68bf775d7a01a6490d67",
"734": "15ab6aa389514ce6303d9371f9e67687c6462017",
"735": "9d2446354b0eabe8949ecf2894edc13f9bb9958f",
"736": "c447ab3530697f27475158b2106e9fbbf8568bf4",
"737": "57b280fece6694c8e9fe870983ae3ffa0e17848a",
"738": "adf43448acc8a27757de1b1f125ca7316f8acbf4",
"739": "dd7f0cb2733b4255a2978ea8e1453897111a04ba",
"74": "43469d06c929c2e1d3466304f9e7ea19b31055fc",
"740": "8427493adac64d28ee3fea1eaffe6dfb5033401f",
"741": "6fce8810c16ba71e986c142d84aebf61c6db2c08",
"742": "aeac25cd969c210cc675eb9e846be2dea83b4d55",
"743": "e66a4e79947bcde66b30f2652888b8f62c64cc09",
"744": "1a59c9607a2f2fbcfc8b0a34e83106a383b8fc65",
"745": "6334217cacd30579a778de59b3f1f4525bedc05f",
"746": "377350ae405e36540fdf20997200f929dddadf31",
"747": "9d3814bac005d829061249d198e262497bed9d2d",
"748": "dbb338fb05c231bf0fbe895e232f7ed9470466b1",
"749": "6d5ca1eea6945b893ad0c95343f437b14f835fe3",
"75": "8116b8830deb9b51df52adfb158f1afcc00a6f2d",
"750": "5b899b5d029c7c5a97a250d97b5eb86c7f7835bf",
"751": "b61e1f6c00c40ca6a17dde10569322f33d06dcfe",
"752": "44b379019b860347042eeb58f9060ad8a11ffd21",
"753": "dc84f042fe255b5a9d77cea276c5b9d28260ea63",
"754": "8fa8f68fb30f884eb3b685639ccaf3c82fdbe9cc",
"755": "184e1382e3a41704835f82a813fe171912343b01",
"756": "2ed3c6227670eacd9198408c9730a369447cc2ba",
"757": "3a4bafbf0e6eba5995e0eac956a3495a1b66baa2",
"758": "9544eb49bfbf4c32a5c302c0a6b3ce8663b05bf0",
"759": "a508bce4fd72471ffca6e551342707d7dd17d6ab",
"76": "ae8db1cbfd92a49974ba130790cc3ca46a4bc3fb",
"760": "6523b66c5de0d209ccbe486de6d5755beaaf602f",
"761": "503b3e691fb5a5c7de4042fc8e7083bdb9134bab",
"762": "fb1eeb0e4689e2edaa88cd9db14dfd8462566257",
"763": "9043b9114c6fe39af174c0d1083887d907cd6add",
"764": "521df3de1d9725ce766f7270ba70cc0983b7443f",
"765": "8031353ffb40b86708351ff74a646c70cd21f3d4",
"766": "ee5a96f83fe6bc9df0f30f7cdc325ed0544ce39c",
"767": "b7e5c56fe4f9a3e405ab0cd613bfe5b0f70eead1",
"768": "8345222ff4a9367973970f6390415f965b50576e",
"769": "8eeec4a36cb4071c473db153a41170968861221e",
"77": "630457b16e8f6597b6c66b5962f79e9f0665c3f6",
"770": "6059f0a0b4c57539000d19a4e24cf67e7b7656b3",
"771": "039449c4832a8c3a2b7c960ad8e92ff3a17b63cf",
"772": "85828d34ae82444a8aa57374d03086d8d870f2f6",
"773": "795db0e2c661b720260e374a970f3d27c2a530dc",
"774": "fccd974cb342478af9421a25faa6bff181d6f65d",
"775": "8db9b56f4c24f03f6d6b18dedaa2a697ca86025d",
"776": "513785b7223bd52db263a714cf9e8761e158b0a9",
"777": "9cd2e021f14cd47e11add5217b7a08026fe1b4fb",
"778": "3d286314bb8dc5eab5517e7ece00d77e93adc1e4",
"779": "a28fc1b3c24fb51e1ee17e359dfd0404c9bb97ab",
"78": "563fd3c3f30da328d3f521ea7c452d411ab8e662",
"780": "b472614775f088df077e9a50efb69e6b0c71d1a0",
"781": "b9cdda4ff19b874fad29280138f0dd0ac0708d82",
"782": "ff02faca4e9457cfb518d45ff3c3766208c32490",
"783": "dc310c65da41234ec8080bcf340371ec18342e9e",
"784": "9eca6a90712d0c3de17aafaf55b8cfc0c8fbb6c9",
"785": "e46c16e6f8d5259d2e6f0efb70270aa4df4a8daf",
"786": "26180d551714b2b3c017b4b7a3697068d7d6ede7",
"787": "14559d566012a5298e1670efab1761450f88d51c",
"788": "80c7eee430ec276f31b75c46d52cb329edf8c7bb",
"789": "aa2c85591e197b2a000cbb37b96630b8918d1643",
"79": "90e1cdde0743c71650ae92e2c7fc7cbaf6b59ff0",
"790": "f599e084aa9997400c0ea178ca5af924ad968f8b",
"791": "4d67506cb2fc46f0a5c30b90db9cf6fee1a77e8c",
"792": "37548ca37ad35d2984394dac5094a7ba63444950",
"793": "498e071a2b27c56333555192f9e6354623d6ea70",
"794": "b43fbd42bd43ce590e247728c64e7efc0a92d802",
"795": "567e40efcb2ef0c8f59f894920999cd80e42ac47",
"796": "d882eeb2ea05844fda70e126672e59a986a72bac",
"797": "a1db75dad33ecbc28d97db9fab3bf08d04863347",
"798": "d23b672cd170d0e21010f9aca9a57fba593bf54d",
"799": "2c375435118d572f7c1eccac47f11f204d85bbda",
"8": "dedd0ee8154e61eafc010634a370f250d5697a1b",
"80": "2dd51ca054b87dbedade4d70cc19b908cc42ec31",
"800": "084832874c33cf6b41bb4d977d3041c5ab6b7002",
"801": "421d339f6da75b3954598ba24ee6b1a1effd6f49",
"802": "fd3a0ff9b998f7e69dc2e3f368bbd6b346fb8781",
"803": "bf7bd7313caf91a06e8f53caa5e7627d6897b6b7",
"804": "10091c0b8348c6d8c52e861c5a848e4f0ef12a0c",
"805": "2aaec8b4d028527918c92cec48838fd18fc39d8b",
"806": "14a92ce89c4c08ec24deedc526e7585728375358",
"807": "3f8a6abb7329e9e12fc7f24f029d35655fb41196",
"808": "080577269a387994358c32a4e488ceb0d761dfb6",
"809": "5fe669a7896cbc3e2493f5b63e980f3b3d4d0def",
"81": "dfdab210b9b05c97c58ae9179664d4922ba5eec4",
"810": "83ce35547d44b3bdb01c01f0ec6534cfda9f6df8",
"811": "d8a59f10ea39b55afdf6c06666b2ae5715d59f03",
"812": "9de860e98e73d0698168732ba7d61477f54b9989",
"813": "d57b81925e0aa88b21b2c0cfcd3449a275d518a8",
"814": "b39ee8be6c49525cc274a08b49012b286325525e",
"815": "5b383c91316d70cd4d685360c7cffb5a2faf02a3",
"816": "b220f12f5a42b1b6ac2d3eb194e28bff9e51ad0f",
"817": "dbc850ecfe6b24ab43e59e3ed57f2e1fa39f8101",
"818": "f4922f5699db0e2a73698b36a1f65588d54dd636",
"819": "e30a43e99cb2d32c67bd6279e530b5d69e55fe8a",
"82": "183a4d0ffd4134947a940be347f16623b8d56784",
"820": "5f2f0edc2edd51185b02fd420ded98de4158793b",
"821": "3eee6b22dccd72e11b4e41087b31ca3e75e16c84",
"822": "05a5634745573eb73a420cb10ff540980fc3258b",
"823": "10f5a4495845954b17777805e6226d9b47a9afd1",
"824": "864a63d544cee58bf97eec9ff061acd3ca31bcdb",
"825": "8b167bf49ff2a0265f5ba827ec05963fb61bca81",
"826": "885ce9d444c96382de8dcffc26187afcb269e3ca",
"827": "46f9dc455363148fa532f007e043c8dbae297bb7",
"828": "4ea47dc83fb37be48b6822ccdba7660053234a8e",
"829": "a3a66eed78553c01d6a4c2c27dbcaa33d8b53596",
"83": "8aa4ef075ef0091ad343188c80ebd43d1a1d2b6d",
"830": "b0cb46da73d2119c624d220d12b4e210f8347310",
"831": "243b75dba52348e7f312b05eaa8caeb9b048edae",
"832": "eb7fa65cbe65e969033ccfab3e1f33620ab8641d",
"833": "af2e3d09797d60e901db08823d57139175ec33bd",
"834": "9765b72b952b004cfd6603478dbc05cbafade967",
"835": "75ed5ebd855f53e3ff1463243b0b3464f3852e1e",
"836": "cad0038be45e3f4a7bf327758a51aee1234f5522",
"837": "78c15fae5e614e0662bc5000474f2d60927d7424",
"838": "61462acdb2d1b286632c36fd287e04a159d02380",
"839": "19367a2297536ae60ead4bfb9282be3e0fa99119",
"84": "e550b3ee4e8f9dfaa1658780b705127c3f08909c",
"840": "c8f4919ee3c57e9e5252dd11271de49bcf61548f",
"841": "35688bc59df239da2f0503c8edb033ef5c7a9a13",
"842": "0e7ce29212bdbe4c61e4a38dcb7a8007104c3ceb",
"843": "7683bfdfc8b5bd3b6ebab8673a58066868d845ad",
"844": "bcdcacd376e192927f3208108d833454cde6ab1f",
"845": "6110ccb5f40896a9086ac88b8c07edebcf27feae",
"846": "2ee332791205ae375e474ea0d6c02b85fb3268c3",
"847": "bf102812d2d4c3f1b5b485f576da5f04a7cf27e0",
"848": "b076acc1054d8c313ff93db7d76809d4ab36620f",
"849": "c04e60cce53e5a8adb094ab58611369e339bf2b5",
"85": "9dc4e2457dccc5eaf5a7292bef302effd1e43fdf",
"850": "7635fee56da8ed79efd1b0a2287c9263443939ba",
"851": "c86ebb353d4100fba605388382fb6619ef331f7a",
"852": "b9af50c9b58fad80593e55d4d3c279748a354393",
"853": "af4fdaa1bce9a1b5b41192854160d79776fde5eb",
"854": "6436376ebf44c592719ecbf9b6d7d7c9f4fb80f8",
"855": "6ec8f856123df2be22f03afbc28449f684738b2c",
"856": "e8fc8717a0c0634b6b4a99a1946287dc5393094d",
"857": "12c51505a479b5cb56f6c9044eb49d832bf365ed",
"858": "389be415d56586370c793b2a7ae09548cecd6775",
"859": "e0eaa6b0ad1292e1a08a5540c3f0aba8749ab66a",
"86": "173f9d784e2f4981527e33bafac3a84b45c57b0f",
"860": "f5f4c6f1ac55ed1ec5df7be558f1e9f0991bb0ed",
"861": "24ce1d5d0a4831b6bd100587f2c3988a3e907fa6",
"862": "40c702074bec76c0cd6e840d821be9508cd52dbb",
"863": "576eee693e2806c47c745723b04376bad3759d52",
"864": "e7f73408f3d2f8ed7c8480afb452a3cf0cef15ae",
"865": "496872262ce81cd5629dc934dec2c31befc3acf2",
"866": "b25816e63403731a0077a3286f16cd0e1c1148b1",
"867": "897ad2370553f9495d8d8cab2cd0595731e404c0",
"868": "a50c7f41bf52802a7bc71af2fb9a9f053eebf1b2",
"869": "ef64bb7cc4a51942e8190a90ed55f5932c642792",
"87": "62ef858d639e700a399083431f331c5fdabd771e",
"870": "b6ff50a7062bf11d26f63a1dbc13aacb1ee40e52",
"871": "ac985846fda9806139f20711915d5e26df792c3c",
"872": "609a25fc1c3b87dbaf7fb004d484e060e3ec06e7",
"873": "34747749d91d1b13f64b2b6e3d8a3c9f2072593c",
"874": "ac2ba6b991618db8b74c0b93a2e2f5465cfac611",
"875": "a4891294009cd9ba25f9fafdeb52b29ae0379976",
"876": "70b2c69f6093c5d65570734e43f0c9f4edeb99a2",
"877": "ce94d89d1a3f5619f6da2675bea7af1fb289cb29",
"878": "528bc334c66240824aea395fe8b554edbbbd353f",
"879": "e01123e390a96355b25adedb30d12903cae321fb",
"88": "2cf5fe90aae2fd93e7d4a2484fd03393908fcbe8",
"880": "742b56814e4d0c1cd6f8cc0d50aab890f54c8af3",
"881": "d7a23df3546fc49995aeba3c0a9f3b98c85e33a1",
"882": "2ad0add66e48c1518e4685835172abd07d20ff67",
"883": "ca878130a2e5bbee3f8b72d884b9240a06ddf9bc",
"884": "006789ab1e57fc9d3cea748426ec5d1f7fb6b8c7",
"885": "de5f2f953d3c77f1cd721e708361b0b586ce6242",
"886": "19da56c15466eca77f3a9ec3f2e3fa5a2de50225",
"887": "5843055a7602ca3a0e7bd66501d61adedd2ea465",
"888": "45ea3f0f3600ea31b9efbfddfc4fb1be73994994",
"889": "db3020b6d4c4eca599442c8f4b6d8dcf41d5cc0f",
"89": "a68e20507f7101968663e537039ba0f730cc4d27",
"890": "36983b6c72db5f8e260eb155e890debb01a3e1fe",
"891": "e1f19654e587d54a4e5eb218dad62ca4bb8ff541",
"892": "fd97768dc93b9431c55a86c73a0cc6a92fde18e8",
"893": "94036e048d81ef077a1217de8738414be35f053b",
"894": "cf94e6a1c4fae16efef4cd36185dd508fd6f11c8",
"895": "32698ea2e27a1770bd13a26abda8a7c5f53e730d",
"896": "ca222d46aeaffeebe51020106c664abcc42efcce",
"897": "c04398a24bb075b321a1d76b4a047283252cddb1",
"898": "e22457ab2b21d6afae852a9142ec900dda3ee3be",
"899": "01590e0b486fd2e8462bbe7500d67120dbb9c464",
"9": "8763b1aaa2f9e912fafc62d8ece7936e2b6715a6",
"90": "2501bfb8d3b01598d3bb57a7dc54c518ca62e228",
"900": "dbeeb5e7409ed16a65d3d2934daa42c3e678b063",
"901": "59e2e70d7d5987c9044637493010c3e19fa5367d",
"902": "d92567e7285a86cd51e4d06e2a801a7dd64f820a",
"903": "e4694d8e8a72910e3e39e4ef627eff4db6131111",
"904": "d3fe2ce7c63ce7925f447a58ccfc6edce3ce86fc",
"905": "e394ab6741c35039c59c54486b45e6e68f49c830",
"906": "869f417b6c22b318f449879be436ae8a1e34bb9f",
"907": "d6725b1800d4577cb00501c22a21a99a883b706e",
"908": "33a2d8bbacadc09a855954c483526d22019b1215",
"909": "5da36da4c53a7594bd7e8d604d79ecb68ce043c5",
"91": "d4a90383f058c3b51b5bd05dab034a6bb2e9e7d1",
"910": "e9d4f2484ad91436351f9d3d05d3ea0dd484f717",
"911": "167f27a3060d9479ee173aa16b84492a0e0909ce",
"912": "89a82b63a58468ea9d7ad454dfe60b18855935c8",
"913": "c24d7800cd856e4d597d0183d896fb05760d1f3e",
"914": "33abd945424f901f8863595220cca972354e3622",
"915": "137681c66c4a7ce01c34a32e75d87e072acd88ea",
"916": "385d0029158eb2ff90b660ccf96431d3a9eecaec",
"917": "4c1b31dc937128fd40b3ac29af859a04298cbd08",
"918": "344db117ad89fb5b6f50664bc02b4cb6584045ea",
"919": "92a8954327978306804e8e0df94f908950f32950",
"92": "31f8b5b47827a632a98997f6de97fa34b03abd15",
"920": "f8725ab46b0d9b456532f55e5036892fb4a16451",
"921": "a4a6d21e5c70bebe6c0c0ec64170cbf99d9bb8e5",
"922": "9cd7f43a893c8ab97e3251a9813558a07eb7f895",
"923": "d9ebd09a10cf3cd32f051380bf8ec65a30fd282e",
"924": "99c5361da6e6e3492270a42d924787702303e7c6",
"925": "b7a177ee5e85401bfbb656c4824d3170f7a2e8b6",
"928": "03e5449f0febb316c16d8516952fa9c194811378",
"929": "bbfc4dd1f9811b3b947c85322a59d0e6bebe4968",
"93": "28f4655991d56818257cb62850e8c28974e1e923",
"930": "bfbab5489c9a2b540f7b10843e7db0e23bc486fa",
"931": "8603e36f94f4bc854478f7a5014fa5a1ce24db33",
"932": "d27a0c01e80cc4267bd4a34aa058d96d950c9ca9",
"934": "fc7a981dacb34827a826400e2168986ba8bc2350",
"94": "9dc16089869e4b01e381c6dafef33922d77f047b",
"940110": "005a8d664e58ee2096c96830ac7c8868136123db",
"95": "7ce62babb637b1a458082f15a9bccd26841683a2",
"96": "e566d525d865ac9b06932f1af724dba21133a415",
"97": "47e26056e431634e974ede5201131f1824074b40",
"98": "fa4a9387170263ccfd549e2e1322dba4088e00eb",
"99": "a1a72970d0dec0e3466ff91b37b82693ca362714"
}

2
导出轮廓.bat Executable file
View File

@ -0,0 +1,2 @@
python export_outline.py
pause