linexjlin
commited on
Commit
·
704d09b
1
Parent(s):
5c6149f
init
Browse files- app.py +79 -0
- extra.py +5 -0
- langs.py +29 -0
- languages.py +101 -0
- speakers.py +39 -0
app.py
ADDED
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import gradio as gr
|
2 |
+
import os
|
3 |
+
import tempfile
|
4 |
+
from extra import discusscode,wccode
|
5 |
+
import requests
|
6 |
+
from langs import langs
|
7 |
+
from speakers import match_speakers
|
8 |
+
from languages import UText
|
9 |
+
|
10 |
+
header_markdown = f"""
|
11 |
+
<div align="center">
|
12 |
+
# {UText("Gradio 版 OpenAI/Edge 文字转语音")}
|
13 |
+
</div>
|
14 |
+
"""
|
15 |
+
|
16 |
+
def generate_voice(voice, text):
|
17 |
+
print(voice,text)
|
18 |
+
voice = voice.split(' #')[0]
|
19 |
+
|
20 |
+
if not text:
|
21 |
+
gr.Warning(UText("没有文本"))
|
22 |
+
return None
|
23 |
+
if not voice:
|
24 |
+
gr.Warning(UText("请选择发音人"))
|
25 |
+
return None
|
26 |
+
key = os.getenv("KEY")
|
27 |
+
API = os.getenv("API")
|
28 |
+
if not API:
|
29 |
+
API = "http://171.115.221.19:18503/freeTTS"
|
30 |
+
url = f"{API}/{voice}"
|
31 |
+
print(url)
|
32 |
+
|
33 |
+
headers = {
|
34 |
+
'Authorization': f'Bearer {key}'
|
35 |
+
}
|
36 |
+
params = {'text': text}
|
37 |
+
|
38 |
+
response = requests.get(url, headers=headers, params=params)
|
39 |
+
|
40 |
+
if response.status_code == 200:
|
41 |
+
# Success
|
42 |
+
print(f"{voice}: \n{text} ")
|
43 |
+
if len(response.content) == 0:
|
44 |
+
gr.Warning(UText("声音文件为空"))
|
45 |
+
return None
|
46 |
+
# Save the received content as an MP3 file
|
47 |
+
with tempfile.NamedTemporaryFile(suffix=".mp3", delete=False) as temp_file:
|
48 |
+
temp_file.write(response.content)
|
49 |
+
temp_file_path = temp_file.name
|
50 |
+
return temp_file_path
|
51 |
+
else:
|
52 |
+
# Error handling
|
53 |
+
print(f"Error: {response.status_code}")
|
54 |
+
gr.Warning(f"{response.json()}")
|
55 |
+
print(response.json()) # You can also check the error details
|
56 |
+
gr.Error(UText("遇到未知错误,联系作者处理"))
|
57 |
+
return None
|
58 |
+
|
59 |
+
def lang_chose_select(lang_chose,sex):
|
60 |
+
return gr.Dropdown(choices=match_speakers(langs=lang_chose,sex=sex), label=UText('选择发音人'), value='',scale=6)
|
61 |
+
|
62 |
+
with gr.Blocks() as demo:
|
63 |
+
gr.Markdown(header_markdown)
|
64 |
+
text = gr.TextArea(label=UText("文本"), placeholder=UText("在这里输入文本"))
|
65 |
+
with gr.Row():
|
66 |
+
lang_chose = gr.Dropdown(choices=langs, label=UText('选择语言'), value=["Chinese"], multiselect=True,scale=12)
|
67 |
+
sex = gr.Dropdown(choices=["Male","Female"], label=UText('选择性别'), value=["Male","Female"], multiselect=True,scale=6)
|
68 |
+
voice = gr.Dropdown(choices=match_speakers(langs=["Chinese"],sex=["Male","Female"]), label=UText('选择发音人'), value='',scale=6)
|
69 |
+
btn = gr.Button(UText("合成的语音"),scale=4)
|
70 |
+
|
71 |
+
with gr.Row():
|
72 |
+
output_audio = gr.Audio(label=UText("合成的语音"))
|
73 |
+
gr.Markdown(UText("tailer_markdown"))
|
74 |
+
|
75 |
+
lang_chose.select(lang_chose_select,inputs=[lang_chose,sex], outputs=voice)
|
76 |
+
sex.select(lang_chose_select,inputs=[lang_chose,sex], outputs=voice)
|
77 |
+
btn.click(fn=generate_voice, inputs=[voice,text], outputs=output_audio, api_name="tts_button", concurrency_limit=None)
|
78 |
+
|
79 |
+
demo.launch()
|
extra.py
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
discusscode="""data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYwIiBoZWlnaHQ9IjM2MCIgdmlld0JveD0iMCAwIDM2MCAzNjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0wIDBoMzYwdjM2MEgweiIvPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNMCAwaDh2OEgweiIvPjwvZGVmcz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMiIgeT0iMzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMiIgeT0iNDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMiIgeT0iNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMiIgeT0iNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMiIgeT0iNjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMiIgeT0iNzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMiIgeT0iODAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMiIgeT0iOTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMiIgeT0iMTEyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzIiIHk9IjEyOCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMyIiB5PSIxMzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMiIgeT0iMTYwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzIiIHk9IjE2OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMyIiB5PSIxNzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMiIgeT0iMTkyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzIiIHk9IjIwOCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMyIiB5PSIyMjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMiIgeT0iMjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzIiIHk9IjI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMyIiB5PSIyODgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMiIgeT0iMjk2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzIiIHk9IjMwNCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMyIiB5PSIzMTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMiIgeT0iMzIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNDAiIHk9IjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNDAiIHk9IjgwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNDAiIHk9Ijk2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNDAiIHk9IjExMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjQwIiB5PSIxNjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI0MCIgeT0iMTkyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNDAiIHk9IjIwMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjQwIiB5PSIyMjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI0MCIgeT0iMjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNDAiIHk9IjI0OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjQwIiB5PSIyNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI0MCIgeT0iMjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNDAiIHk9IjMyMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjQ4IiB5PSIzMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjQ4IiB5PSI0OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjQ4IiB5PSI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjQ4IiB5PSI2NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjQ4IiB5PSI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjQ4IiB5PSIxNTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI0OCIgeT0iMTYwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNDgiIHk9IjE2OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjQ4IiB5PSIxNzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI0OCIgeT0iMTkyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNDgiIHk9IjIwOCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjQ4IiB5PSIyMTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI0OCIgeT0iMjI0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNDgiIHk9IjI3MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjQ4IiB5PSIyODgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI0OCIgeT0iMjk2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNDgiIHk9IjMwNCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjQ4IiB5PSIzMjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI1NiIgeT0iMzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI1NiIgeT0iNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI1NiIgeT0iNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI1NiIgeT0iNjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI1NiIgeT0iODAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI1NiIgeT0iOTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI1NiIgeT0iMTEyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNTYiIHk9IjEyOCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjU2IiB5PSIxMzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI1NiIgeT0iMTUyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNTYiIHk9IjE2MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjU2IiB5PSIxNjgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI1NiIgeT0iMTg0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNTYiIHk9IjE5MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjU2IiB5PSIyMDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI1NiIgeT0iMjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNTYiIHk9IjI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjU2IiB5PSIyNzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI1NiIgeT0iMjg4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNTYiIHk9IjI5NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjU2IiB5PSIzMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI1NiIgeT0iMzIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNjQiIHk9IjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNjQiIHk9IjQ4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNjQiIHk9IjU2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNjQiIHk9IjY0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNjQiIHk9IjgwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNjQiIHk9Ijk2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNjQiIHk9IjEwNCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjY0IiB5PSIxMjgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI2NCIgeT0iMTM2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNjQiIHk9IjE0NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjY0IiB5PSIxNTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI2NCIgeT0iMTY4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNjQiIHk9IjE3NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjY0IiB5PSIyMDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI2NCIgeT0iMjE2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNjQiIHk9IjIzMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjY0IiB5PSIyNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI2NCIgeT0iMjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNjQiIHk9IjI4OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjY0IiB5PSIyOTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI2NCIgeT0iMzA0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNjQiIHk9IjMyMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjcyIiB5PSIzMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjcyIiB5PSI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjcyIiB5PSIxMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI3MiIgeT0iMTEyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNzIiIHk9IjEyMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjcyIiB5PSIxMzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI3MiIgeT0iMTQ0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNzIiIHk9IjE2MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjcyIiB5PSIxOTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI3MiIgeT0iMjAwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNzIiIHk9IjIwOCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjcyIiB5PSIyMTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI3MiIgeT0iMjI0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNzIiIHk9IjI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjcyIiB5PSIyNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI3MiIgeT0iMjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iNzIiIHk9IjMyMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjgwIiB5PSIzMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjgwIiB5PSI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjgwIiB5PSI0OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjgwIiB5PSI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjgwIiB5PSI2NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjgwIiB5PSI3MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjgwIiB5PSI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjgwIiB5PSI5NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjgwIiB5PSIxMTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI4MCIgeT0iMTI4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iODAiIHk9IjE0NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjgwIiB5PSIxNjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI4MCIgeT0iMTc2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iODAiIHk9IjE5MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjgwIiB5PSIyMDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI4MCIgeT0iMjI0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iODAiIHk9IjI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjgwIiB5PSIyNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI4MCIgeT0iMjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iODAiIHk9IjI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjgwIiB5PSIyODgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI4MCIgeT0iMjk2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iODAiIHk9IjMwNCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjgwIiB5PSIzMTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI4MCIgeT0iMzIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iODgiIHk9IjExMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ijg4IiB5PSIxMjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI4OCIgeT0iMTI4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iODgiIHk9IjE1MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ijg4IiB5PSIxODQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI4OCIgeT0iMTkyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iODgiIHk9IjIwOCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ijg4IiB5PSIyMjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI4OCIgeT0iMjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iODgiIHk9IjI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ijk2IiB5PSIzMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ijk2IiB5PSI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ijk2IiB5PSI4OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ijk2IiB5PSIxMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI5NiIgeT0iMTI4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iOTYiIHk9IjE0NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ijk2IiB5PSIxNTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI5NiIgeT0iMTYwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iOTYiIHk9IjE2OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ijk2IiB5PSIxOTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI5NiIgeT0iMjAwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iOTYiIHk9IjIwOCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ijk2IiB5PSIyMzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI5NiIgeT0iMjQwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iOTYiIHk9IjI2NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ijk2IiB5PSIyODgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSI5NiIgeT0iMjk2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iOTYiIHk9IjMxMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ijk2IiB5PSIzMjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMDQiIHk9IjQwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTA0IiB5PSI2NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEwNCIgeT0iOTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMDQiIHk9IjExMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEwNCIgeT0iMTQ0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTA0IiB5PSIxNTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMDQiIHk9IjE2OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEwNCIgeT0iMTc2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTA0IiB5PSIxOTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMDQiIHk9IjIwMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEwNCIgeT0iMjI0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTA0IiB5PSIyNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMDQiIHk9IjI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEwNCIgeT0iMjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTEyIiB5PSI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjExMiIgeT0iNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMTIiIHk9IjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTEyIiB5PSI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjExMiIgeT0iODgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMTIiIHk9Ijk2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTEyIiB5PSIxMzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMTIiIHk9IjE2OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjExMiIgeT0iMTc2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTEyIiB5PSIxODQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMTIiIHk9IjE5MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjExMiIgeT0iMjAwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTEyIiB5PSIyMDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMTIiIHk9IjI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjExMiIgeT0iMjU2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTEyIiB5PSIyNjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMTIiIHk9IjI5NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjExMiIgeT0iMzA0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTEyIiB5PSIzMjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMjAiIHk9IjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTIwIiB5PSI2NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEyMCIgeT0iODgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMjAiIHk9Ijk2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTIwIiB5PSIxMTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMjAiIHk9IjEyMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEyMCIgeT0iMTI4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTIwIiB5PSIxNDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMjAiIHk9IjE1MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEyMCIgeT0iMTY4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTIwIiB5PSIxNzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMjAiIHk9IjI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEyMCIgeT0iMjY0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTIwIiB5PSIyODAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMjAiIHk9IjI4OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEyMCIgeT0iMzA0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTIwIiB5PSIzMTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMjAiIHk9IjMyMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEyOCIgeT0iMzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMjgiIHk9IjQ4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTI4IiB5PSI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEyOCIgeT0iNzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMjgiIHk9IjgwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTI4IiB5PSIxMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMjgiIHk9IjEyMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEyOCIgeT0iMTI4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTI4IiB5PSIxNDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMjgiIHk9IjE2OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEyOCIgeT0iMTg0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTI4IiB5PSIxOTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMjgiIHk9IjIwOCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEyOCIgeT0iMjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTI4IiB5PSIyNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMjgiIHk9IjI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEyOCIgeT0iMjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTI4IiB5PSIyOTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMjgiIHk9IjMxMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEyOCIgeT0iMzIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTM2IiB5PSIzMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEzNiIgeT0iNDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMzYiIHk9IjQ4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTM2IiB5PSI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEzNiIgeT0iODgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMzYiIHk9Ijk2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTM2IiB5PSIxMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMzYiIHk9IjExMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEzNiIgeT0iMTIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTM2IiB5PSIxMjgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMzYiIHk9IjEzNiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEzNiIgeT0iMTQ0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTM2IiB5PSIxNjgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMzYiIHk9IjE5MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEzNiIgeT0iMjI0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTM2IiB5PSIyNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMzYiIHk9IjI3MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEzNiIgeT0iMjgwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTM2IiB5PSIyODgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMzYiIHk9IjI5NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEzNiIgeT0iMzA0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTM2IiB5PSIzMTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxMzYiIHk9IjMyMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE0NCIgeT0iMzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNDQiIHk9IjQwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTQ0IiB5PSI0OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE0NCIgeT0iNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNDQiIHk9IjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTQ0IiB5PSI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE0NCIgeT0iODgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNDQiIHk9IjEwNCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE0NCIgeT0iMTM2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTQ0IiB5PSIxNjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNDQiIHk9IjE2OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE0NCIgeT0iMTg0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTQ0IiB5PSIxOTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNDQiIHk9IjIwMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE0NCIgeT0iMjA4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTQ0IiB5PSIyMTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNDQiIHk9IjIyNCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE0NCIgeT0iMjQwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTQ0IiB5PSIyNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNDQiIHk9IjI3MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE1MiIgeT0iNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNTIiIHk9IjU2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTUyIiB5PSI4OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE1MiIgeT0iOTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNTIiIHk9IjEwNCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE1MiIgeT0iMTEyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTUyIiB5PSIxMjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNTIiIHk9IjEyOCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE1MiIgeT0iMTM2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTUyIiB5PSIxNDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNTIiIHk9IjE2OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE1MiIgeT0iMTc2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTUyIiB5PSIyMDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNTIiIHk9IjIwOCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE1MiIgeT0iMjE2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTUyIiB5PSIyMzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNTIiIHk9IjI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE1MiIgeT0iMjQ4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTUyIiB5PSIyNzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNTIiIHk9IjI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE1MiIgeT0iMjg4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTUyIiB5PSIzMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNTIiIHk9IjMxMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE1MiIgeT0iMzIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTYwIiB5PSI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE2MCIgeT0iNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNjAiIHk9IjY0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTYwIiB5PSI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE2MCIgeT0iODgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNjAiIHk9IjExMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE2MCIgeT0iMTIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTYwIiB5PSIxMzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNjAiIHk9IjE0NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE2MCIgeT0iMTUyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTYwIiB5PSIxNzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNjAiIHk9IjIxNiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE2MCIgeT0iMjI0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTYwIiB5PSIyMzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNjAiIHk9IjI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE2MCIgeT0iMzEyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTYwIiB5PSIzMjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNjgiIHk9IjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTY4IiB5PSI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE2OCIgeT0iNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNjgiIHk9IjY0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTY4IiB5PSI3MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE2OCIgeT0iOTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNjgiIHk9IjEyMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE2OCIgeT0iMTI4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTY4IiB5PSIxMzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNjgiIHk9IjE2MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE2OCIgeT0iMTY4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTY4IiB5PSIyMDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNjgiIHk9IjIxNiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE2OCIgeT0iMjQwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTY4IiB5PSIyNjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNjgiIHk9IjI3MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE2OCIgeT0iMzEyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTY4IiB5PSIzMjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNzYiIHk9IjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTc2IiB5PSI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE3NiIgeT0iNzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNzYiIHk9IjgwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTc2IiB5PSI4OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE3NiIgeT0iOTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNzYiIHk9IjExMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE3NiIgeT0iMTIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTc2IiB5PSIxMzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNzYiIHk9IjE0NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE3NiIgeT0iMTc2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTc2IiB5PSIyMDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNzYiIHk9IjIxNiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE3NiIgeT0iMjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTc2IiB5PSIyODAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxNzYiIHk9IjMxMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE4NCIgeT0iMzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxODQiIHk9IjQwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTg0IiB5PSI0OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE4NCIgeT0iNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxODQiIHk9Ijg4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTg0IiB5PSIxMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxODQiIHk9IjEyOCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE4NCIgeT0iMTM2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTg0IiB5PSIxNDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxODQiIHk9IjE1MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE4NCIgeT0iMTY4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTg0IiB5PSIxNzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxODQiIHk9IjE4NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE4NCIgeT0iMjE2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTg0IiB5PSIyMjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxODQiIHk9IjI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE4NCIgeT0iMjU2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTg0IiB5PSIyNjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxODQiIHk9IjI3MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE4NCIgeT0iMjgwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTg0IiB5PSIyODgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxODQiIHk9IjMxMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE4NCIgeT0iMzIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTkyIiB5PSI0OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE5MiIgeT0iNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxOTIiIHk9IjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTkyIiB5PSI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE5MiIgeT0iODgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxOTIiIHk9Ijk2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTkyIiB5PSIxNjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxOTIiIHk9IjE2OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE5MiIgeT0iMTc2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTkyIiB5PSIxODQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxOTIiIHk9IjE5MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE5MiIgeT0iMjQwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTkyIiB5PSIyNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxOTIiIHk9IjI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE5MiIgeT0iMjY0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTkyIiB5PSIyNzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIxOTIiIHk9IjI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjE5MiIgeT0iMjg4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMTkyIiB5PSIzMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMDAiIHk9IjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjAwIiB5PSI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIwMCIgeT0iNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMDAiIHk9IjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjAwIiB5PSI5NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIwMCIgeT0iMTA0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjAwIiB5PSIxMTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMDAiIHk9IjE0NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIwMCIgeT0iMjQwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjAwIiB5PSIyNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMDAiIHk9IjI3MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIwMCIgeT0iMzIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjA4IiB5PSI0OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIwOCIgeT0iNjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMDgiIHk9IjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjA4IiB5PSI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIwOCIgeT0iMTA0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjA4IiB5PSIxMTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMDgiIHk9IjEyMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIwOCIgeT0iMTI4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjA4IiB5PSIxMzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMDgiIHk9IjE1MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIwOCIgeT0iMTkyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjA4IiB5PSIyMTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMDgiIHk9IjIyNCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIwOCIgeT0iMjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjA4IiB5PSIyNDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMDgiIHk9IjI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIwOCIgeT0iMjk2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjE2IiB5PSIzMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIxNiIgeT0iNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMTYiIHk9IjU2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjE2IiB5PSI2NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIxNiIgeT0iNzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMTYiIHk9Ijg4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjE2IiB5PSIxMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMTYiIHk9IjExMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIxNiIgeT0iMTIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjE2IiB5PSIxMjgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMTYiIHk9IjEzNiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIxNiIgeT0iMTUyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjE2IiB5PSIxNjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMTYiIHk9IjE2OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIxNiIgeT0iMTc2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjE2IiB5PSIyMDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMTYiIHk9IjIwOCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIxNiIgeT0iMjQ4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjE2IiB5PSIyNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMTYiIHk9IjI3MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIxNiIgeT0iMjk2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjE2IiB5PSIzMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMTYiIHk9IjMxMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIxNiIgeT0iMzIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjI0IiB5PSI0OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIyNCIgeT0iNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMjQiIHk9IjgwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjI0IiB5PSIxMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMjQiIHk9IjExMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIyNCIgeT0iMTM2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjI0IiB5PSIxNDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMjQiIHk9IjE1MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIyNCIgeT0iMTc2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjI0IiB5PSIxOTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMjQiIHk9IjIwOCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIyNCIgeT0iMjE2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjI0IiB5PSIyMjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMjQiIHk9IjI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIyNCIgeT0iMjU2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjI0IiB5PSIyODAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMjQiIHk9IjI4OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIyNCIgeT0iMzEyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjMyIiB5PSIzMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIzMiIgeT0iNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMzIiIHk9IjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjMyIiB5PSI4OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIzMiIgeT0iOTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMzIiIHk9IjExMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIzMiIgeT0iMTM2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjMyIiB5PSIxNDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMzIiIHk9IjE2OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIzMiIgeT0iMTg0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjMyIiB5PSIxOTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMzIiIHk9IjIwMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIzMiIgeT0iMjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjMyIiB5PSIyNDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyMzIiIHk9IjI3MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjIzMiIgeT0iMjgwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjQwIiB5PSI2NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI0MCIgeT0iNzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNDAiIHk9IjgwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjQwIiB5PSI5NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI0MCIgeT0iMTEyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjQwIiB5PSIxMjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNDAiIHk9IjEzNiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI0MCIgeT0iMTQ0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjQwIiB5PSIxNTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNDAiIHk9IjE3NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI0MCIgeT0iMTg0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjQwIiB5PSIxOTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNDAiIHk9IjIwMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI0MCIgeT0iMjQwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjQwIiB5PSIyNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNDAiIHk9IjI2NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI0MCIgeT0iMjgwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjQwIiB5PSIzMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNDgiIHk9IjQ4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjQ4IiB5PSI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI0OCIgeT0iMTA0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjQ4IiB5PSIxMTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNDgiIHk9IjE0NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI0OCIgeT0iMTYwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjQ4IiB5PSIxNzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNDgiIHk9IjE5MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI0OCIgeT0iMjA4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjQ4IiB5PSIyNDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNDgiIHk9IjI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI0OCIgeT0iMjY0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjQ4IiB5PSIyNzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNDgiIHk9IjI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI0OCIgeT0iMjg4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjQ4IiB5PSIyOTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNDgiIHk9IjMwNCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI1NiIgeT0iNDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNTYiIHk9IjQ4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjU2IiB5PSI3MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI1NiIgeT0iODAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNTYiIHk9IjExMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI1NiIgeT0iMTI4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjU2IiB5PSIxMzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNTYiIHk9IjE1MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI1NiIgeT0iMTkyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjU2IiB5PSIyMDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNTYiIHk9IjIxNiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI1NiIgeT0iMjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjU2IiB5PSIyNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNTYiIHk9IjI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI1NiIgeT0iMjY0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjU2IiB5PSIyNzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNTYiIHk9IjI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI1NiIgeT0iMjg4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjU2IiB5PSIzMTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNTYiIHk9IjMyMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI2NCIgeT0iMTEyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjY0IiB5PSIxNDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNjQiIHk9IjE1MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI2NCIgeT0iMTY4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjY0IiB5PSIxODQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNjQiIHk9IjI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI2NCIgeT0iMjQ4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjY0IiB5PSIyNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNjQiIHk9IjI4OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI2NCIgeT0iMzA0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjcyIiB5PSIzMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI3MiIgeT0iNDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNzIiIHk9IjQ4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjcyIiB5PSI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI3MiIgeT0iNjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNzIiIHk9IjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjcyIiB5PSI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI3MiIgeT0iOTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNzIiIHk9IjExMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI3MiIgeT0iMTI4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjcyIiB5PSIxNjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNzIiIHk9IjE4NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI3MiIgeT0iMTkyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjcyIiB5PSIyMjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNzIiIHk9IjI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI3MiIgeT0iMjU2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjcyIiB5PSIyNzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyNzIiIHk9IjI4OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI3MiIgeT0iMjk2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjgwIiB5PSIzMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI4MCIgeT0iODAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyODAiIHk9IjEwNCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI4MCIgeT0iMTIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjgwIiB5PSIxMjgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyODAiIHk9IjEzNiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI4MCIgeT0iMTYwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjgwIiB5PSIxNjgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyODAiIHk9IjE4NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI4MCIgeT0iMjAwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjgwIiB5PSIyMTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyODAiIHk9IjIyNCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI4MCIgeT0iMjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjgwIiB5PSIyNDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyODAiIHk9IjI0OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI4MCIgeT0iMjU2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjgwIiB5PSIyODgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyODAiIHk9IjMwNCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI4MCIgeT0iMzEyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjgwIiB5PSIzMjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyODgiIHk9IjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjg4IiB5PSI0OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI4OCIgeT0iNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyODgiIHk9IjY0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjg4IiB5PSI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI4OCIgeT0iMTA0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjg4IiB5PSIxMjAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyODgiIHk9IjEzNiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI4OCIgeT0iMTUyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjg4IiB5PSIxNzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyODgiIHk9IjE4NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI4OCIgeT0iMTkyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjg4IiB5PSIyMDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyODgiIHk9IjIxNiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI4OCIgeT0iMjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjg4IiB5PSIyNDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyODgiIHk9IjI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI4OCIgeT0iMjY0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjg4IiB5PSIyNzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyODgiIHk9IjI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI4OCIgeT0iMjg4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjg4IiB5PSIzMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyOTYiIHk9IjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjk2IiB5PSI0OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI5NiIgeT0iNTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyOTYiIHk9IjY0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjk2IiB5PSI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI5NiIgeT0iMTEyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjk2IiB5PSIxMjgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyOTYiIHk9IjEzNiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI5NiIgeT0iMTYwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjk2IiB5PSIxNjgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyOTYiIHk9IjE4NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI5NiIgeT0iMjAwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjk2IiB5PSIyMTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyOTYiIHk9IjIyNCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI5NiIgeT0iMjMyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjk2IiB5PSIyNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyOTYiIHk9IjI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI5NiIgeT0iMjgwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMjk2IiB5PSIzMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIyOTYiIHk9IjMxMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjI5NiIgeT0iMzIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzA0IiB5PSIzMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMwNCIgeT0iNDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMDQiIHk9IjU2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzA0IiB5PSI2NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMwNCIgeT0iODAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMDQiIHk9IjExMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMwNCIgeT0iMTIwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzA0IiB5PSIxMzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMDQiIHk9IjE1MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMwNCIgeT0iMTYwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzA0IiB5PSIyMDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMDQiIHk9IjIwOCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMwNCIgeT0iMjE2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzA0IiB5PSIyNDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMDQiIHk9IjI0OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMwNCIgeT0iMjU2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzA0IiB5PSIyNzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMDQiIHk9IjMxMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMxMiIgeT0iMzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMTIiIHk9IjgwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzEyIiB5PSIxMDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMTIiIHk9IjExMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMxMiIgeT0iMTI4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzEyIiB5PSIxMzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMTIiIHk9IjE0NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMxMiIgeT0iMTYwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzEyIiB5PSIxOTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMTIiIHk9IjIwMCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMxMiIgeT0iMjE2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzEyIiB5PSIyMzIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMTIiIHk9IjI0MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMxMiIgeT0iMjU2Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzEyIiB5PSIyNjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMTIiIHk9IjI5NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMxMiIgeT0iMzEyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzIwIiB5PSIzMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMyMCIgeT0iNDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMjAiIHk9IjQ4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzIwIiB5PSI1NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMyMCIgeT0iNjQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMjAiIHk9IjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzIwIiB5PSI4MCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMyMCIgeT0iOTYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMjAiIHk9IjExMiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMyMCIgeT0iMTI4Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzIwIiB5PSIxNDQiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMjAiIHk9IjE1MiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMyMCIgeT0iMTYwIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzIwIiB5PSIxNzYiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMjAiIHk9IjE4NCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMyMCIgeT0iMTkyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzIwIiB5PSIyMDgiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMjAiIHk9IjIxNiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMyMCIgeT0iMjI0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzIwIiB5PSIyNDAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMjAiIHk9IjI0OCIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMyMCIgeT0iMjcyIi8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzIwIiB5PSIyODAiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMjAiIHk9IjI5NiIvPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjMyMCIgeT0iMzA0Ii8+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iMzIwIiB5PSIzMTIiLz48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIzMjAiIHk9IjMyMCIvPjxnLz48L3N2Zz4=
|
2 |
+
"""
|
3 |
+
|
4 |
+
wccode="""data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTM2Ljk5NyAyMS43MTFDMzYuODQzIDEzLjAwOCAyOS43NCA2IDIxIDYgMTIuMTYzIDYgNSAxMy4xNjMgNSAyMmMwIDQuMTcgMS41OTUgNy45NjggNC4yMDkgMTAuODE1bC0xLjE5OSA3LjIxIDcuMTE1LTMuMDU1YzMuMTM1IDEuMDQyIDYuMDkzIDEuMzAzIDguODc1Ljc4MiIgZmlsbD0iIzdlZDMyMSIvPjxwYXRoIGQ9Ik0zNi45OTcgMjEuNzExQzM2Ljg0MyAxMy4wMDggMjkuNzQgNiAyMSA2IDEyLjE2MyA2IDUgMTMuMTYzIDUgMjJjMCA0LjE3IDEuNTk1IDcuOTY4IDQuMjA5IDEwLjgxNWwtMS4xOTkgNy4yMSA3LjExNS0zLjA1NWMzLjEzNSAxLjA0MiA2LjA5MyAxLjMwMyA4Ljg3NS43ODIiIHN0cm9rZT0iIzdlZDMyMSIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBkPSJNMTUuMTI1IDIwLjQ2N2EyLjI1OCAyLjI1OCAwIDAgMCAyLjI1LTIuMjY3IDIuMjU4IDIuMjU4IDAgMCAwLTIuMjUtMi4yNjcgMi4yNTggMi4yNTggMCAwIDAtMi4yNSAyLjI2NyAyLjI1OCAyLjI1OCAwIDAgMCAyLjI1IDIuMjY3Wm05IDBhMi4yNTggMi4yNTggMCAwIDAgMi4yNS0yLjI2NyAyLjI1OCAyLjI1OCAwIDAgMC0yLjI1LTIuMjY3IDIuMjU4IDIuMjU4IDAgMCAwLTIuMjUgMi4yNjcgMi4yNTggMi4yNTggMCAwIDAgMi4yNSAyLjI2N1oiIGZpbGw9IiNGRkYiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTM4Ljc2MiAzOS45M0ExMC40NTMgMTAuNDUzIDAgMCAxIDMyLjUgNDJDMjYuNzAxIDQyIDIyIDM3LjI5OSAyMiAzMS41UzI2LjcwMSAyMSAzMi41IDIxIDQzIDI1LjcwMSA0MyAzMS41YzAgMS42LS4zNTggMy4xMTYtLjk5OCA0LjQ3MyIgZmlsbD0iIzdlZDMyMSIvPjxwYXRoIGQ9Ik0zOC43NjIgMzkuOTNBMTAuNDUzIDEwLjQ1MyAwIDAgMSAzMi41IDQyQzI2LjcwMSA0MiAyMiAzNy4yOTkgMjIgMzEuNVMyNi43MDEgMjEgMzIuNSAyMSA0MyAyNS43MDEgNDMgMzEuNWMwIDEuNi0uMzU4IDMuMTE2LS45OTggNC40NzMiIHN0cm9rZT0iIzdlZDMyMSIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQyLjAwMiAzNS45NzMgNDMgNDJsLTQuMjM4LTIuMDciIGZpbGw9IiM3ZWQzMjEiLz48cGF0aCBkPSJNNDIuMDAyIDM1Ljk3MyA0MyA0MmwtNC4yMzgtMi4wNyIgc3Ryb2tlPSIjN2VkMzIxIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0zNS42ODggMzAuOEExLjY5NCAxLjY5NCAwIDAgMSAzNCAyOS4xYzAtLjkzOS43NTUtMS43IDEuNjg4LTEuNy45MzEgMCAxLjY4Ny43NjEgMS42ODcgMS43cy0uNzU1IDEuNy0xLjY4OCAxLjdabS02Ljc1IDBhMS42OTQgMS42OTQgMCAwIDEtMS42ODgtMS43YzAtLjkzOS43NTYtMS43IDEuNjg4LTEuNy45MzEgMCAxLjY4Ny43NjEgMS42ODcgMS43cy0uNzU2IDEuNy0xLjY4OCAxLjdaIiBmaWxsPSIjRkZGIi8+PC9zdmc+
|
5 |
+
"""
|
langs.py
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from iso639 import languages
|
2 |
+
|
3 |
+
def get_iso639_all_languages():
|
4 |
+
res = []
|
5 |
+
for lang in languages:
|
6 |
+
if lang.alpha2:
|
7 |
+
#print(lang.alpha2,lang.name)
|
8 |
+
res.append((lang.name,lang.alpha2))
|
9 |
+
return sorted(res, key=lambda lang: lang[0])
|
10 |
+
|
11 |
+
def get_all_languages():
|
12 |
+
res = []
|
13 |
+
for lang in languages:
|
14 |
+
if lang.alpha2:
|
15 |
+
#print(lang.alpha2,lang.name)
|
16 |
+
res.append((lang.name,lang.alpha2))
|
17 |
+
return sorted(res, key=lambda lang: lang[0])
|
18 |
+
|
19 |
+
|
20 |
+
languages_list = get_iso639_all_languages()
|
21 |
+
langs = [lang[0] for lang in languages_list]
|
22 |
+
|
23 |
+
#print(langs)
|
24 |
+
|
25 |
+
#zh = languages.get(name='Chinese')
|
26 |
+
#print(zh.alpha2)
|
27 |
+
|
28 |
+
#for language in languages_list:
|
29 |
+
# print("{} ({}) - {}".format(language[0], language[1], language[2]))
|
languages.py
ADDED
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import requests
|
2 |
+
import os
|
3 |
+
|
4 |
+
langs_data={
|
5 |
+
"APP": {
|
6 |
+
"default": "APP",
|
7 |
+
"en": "APP",
|
8 |
+
"de": "APP",
|
9 |
+
"fr": "APP",
|
10 |
+
"az": "APP"
|
11 |
+
},
|
12 |
+
"文本": {
|
13 |
+
"default": "文本",
|
14 |
+
"en": "Text",
|
15 |
+
"de": "Text",
|
16 |
+
"fr": "Texte",
|
17 |
+
"az": "Mətn"
|
18 |
+
},
|
19 |
+
"在这里输入文本": {
|
20 |
+
"default": "在这里输入文本",
|
21 |
+
"en": "Enter text here",
|
22 |
+
"de": "Hier Text eingeben",
|
23 |
+
"fr": "Entrez du texte ici",
|
24 |
+
"az": "Mətni buraya daxil edin"
|
25 |
+
},
|
26 |
+
"选择性别": {
|
27 |
+
"default": "选择性别",
|
28 |
+
"en": "Select gender",
|
29 |
+
"de": "Geschlecht wählen",
|
30 |
+
"fr": "Sélectionner le sexe",
|
31 |
+
"az": "Cinsiyyəti seçin"
|
32 |
+
},
|
33 |
+
"选择发音人": {
|
34 |
+
"default": "选择发音人",
|
35 |
+
"en": "Select voice",
|
36 |
+
"de": "Sprecher wählen",
|
37 |
+
"fr": "Sélectionner la voix",
|
38 |
+
"az": "Səsi seçin"
|
39 |
+
},
|
40 |
+
"合成的语音": {
|
41 |
+
"default": "合成的语音",
|
42 |
+
"en": "Synthesized speech",
|
43 |
+
"de": "Synthetische Sprache",
|
44 |
+
"fr": "Parole synthétisée",
|
45 |
+
"az": "Sintez dil"
|
46 |
+
},
|
47 |
+
"选择语言": {
|
48 |
+
"default": "选择语言",
|
49 |
+
"en": "Select Language",
|
50 |
+
"de": "Sprache auswählen",
|
51 |
+
"fr": "Sélectionner la langue",
|
52 |
+
"az": "Dil seçin"
|
53 |
+
},
|
54 |
+
"遇到未知错误,联系作者处理": {
|
55 |
+
"default": "遇到未知错误,联系作者处理",
|
56 |
+
"en": "Encountered an unknown error, contact the author for assistance",
|
57 |
+
"de": "Es ist ein unbekannter Fehler aufgetreten, wenden Sie sich an den Autor",
|
58 |
+
"fr": "Erreur inconnue rencontrée, contactez l'auteur pour obtenir de l'aide",
|
59 |
+
"az": "Bilinmeyen bir hata oluştu, yardım için yazar ile iletişime geçin"
|
60 |
+
},
|
61 |
+
"Gradio 版 OpenAI/Edge 文字转语音": {
|
62 |
+
"default": "Gradio 版 OpenAI/Edge 文字转语音",
|
63 |
+
"en": "Gradio version OpenAI/Edge Text-to-Speech",
|
64 |
+
"de": "Gradio Version OpenAI/Edge Text-to-Speech",
|
65 |
+
"fr": "Gradio version OpenAI/Edge Text-to-Speech",
|
66 |
+
"az": "Gradio versionu OpenAI/Edge Metin-səsə çevirmə"
|
67 |
+
},
|
68 |
+
"tailer_markdown": {
|
69 |
+
"default": "\n<div align=\"center\">\n\n**[作者](https://github.com/linexjlin)的其他项目**\n\n| | |\n| ------------------------------- | --------------------------------------- |\n| 👨🏻💻 **InputGPT 任意输入区调用GPT** | [InputGPT](https://github.com/linexjlin/inputGPT) |\n| 👨🏻💻 **OpenAI_TTS 需要自己的key** | [OpenAI_TTS](https://modelscope.cn/studios/VBNn0x/OpenAI_TTS_TEST/summary) |\n| 👨🏻💻 **伴奏人声提取** | [UVR](https://modelscope.cn/studios/VBNn0x/UVR/summary) |\n\nAIGC 交流 💬\n\n<img src=\"https://cn-hz-ali.oss-cn-hangzhou.aliyuncs.com/js/aigc-share.svg\"><img>\n\n<p>\n 遇到问题联系\n <img width=15 src=\"https://cn-hz-ali.oss-cn-hangzhou.aliyuncs.com/js/wechat.svg\" style=\"display: inline-block; vertical-align: middle;\"> \n cmVkX2xhbmQ= (base64)\n</p>\n\n\n\n</div>\n",
|
70 |
+
"en": "<div align=\"center\">\n\n**[My](https://github.com/linexjlin) other projects.**\n\n|||\n| - | -|\n| 👨🏻💻 **InputGPT Call GPT in any input area** | [InputGPT](https://github.com/linexjlin/inputGPT) |\n\nContact me: [𝕏](https://twitter.com/linexjlin) [github](https://github.com/linexjlin)\n\n\n\n</div>\n",
|
71 |
+
"de": "<div align=\"center\">\n\n**[My](https://github.com/linexjlin) other projects.**\n\n|||\n| - | -|\n| 👨🏻💻 **InputGPT Call GPT in any input area** | [InputGPT](https://github.com/linexjlin/inputGPT) |\n\nContact me: [𝕏](https://twitter.com/linexjlin) [github](https://github.com/linexjlin)\n\n\n\n</div>\n",
|
72 |
+
"fr": "<div align=\"center\">\n\n**[My](https://github.com/linexjlin) other projects.**\n\n|||\n| - | -|\n| 👨🏻💻 **InputGPT Call GPT in any input area** | [InputGPT](https://github.com/linexjlin/inputGPT) |\n\nContact me: [𝕏](https://twitter.com/linexjlin) [github](https://github.com/linexjlin)\n\n\n\n</div>\n",
|
73 |
+
"az": "<div align=\"center\">\n\n**[My](https://github.com/linexjlin) other projects.**\n\n|||\n| - | -|\n| 👨🏻💻 **InputGPT Call GPT in any input area** | [InputGPT](https://github.com/linexjlin/inputGPT) |\n\nContact me: [𝕏](https://twitter.com/linexjlin) [github](https://github.com/linexjlin)\n\n\n\n</div>\n"
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
|
78 |
+
def UText(k):
|
79 |
+
l = os.getenv("ULANG") if os.getenv("ULANG") else "default"
|
80 |
+
if k in langs_data:
|
81 |
+
if l in langs_data[k]:
|
82 |
+
return langs_data[k][l] if langs_data[k][l] else k
|
83 |
+
else:
|
84 |
+
print(f"not supported lang: {l}")
|
85 |
+
request_online(k,l)
|
86 |
+
return k
|
87 |
+
else:
|
88 |
+
request_online(k,l)
|
89 |
+
return k
|
90 |
+
|
91 |
+
def request_online(k,l):
|
92 |
+
url = f"https://i18n.linkown.com/ce405723-a840-468d-a57f-0bb95cbfbcfb/key" # Replace with the actual URL of your API endpoint
|
93 |
+
|
94 |
+
params = {'k': k,'l':l}
|
95 |
+
response = requests.get(url, params=params)
|
96 |
+
|
97 |
+
if response.status_code == 200:
|
98 |
+
result = response.json()["result"]
|
99 |
+
return result
|
100 |
+
else:
|
101 |
+
print(f"Failed to get data. Status code: {response.status_code}")
|
speakers.py
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from iso639 import languages
|
2 |
+
|
3 |
+
edge_speakers = [('af-ZA-AdriNeural', 'Female'), ('af-ZA-WillemNeural', 'Male'), ('sq-AL-AnilaNeural', 'Female'), ('sq-AL-IlirNeural', 'Male'), ('am-ET-AmehaNeural', 'Male'), ('am-ET-MekdesNeural', 'Female'), ('ar-DZ-AminaNeural', 'Female'), ('ar-DZ-IsmaelNeural', 'Male'), ('ar-BH-AliNeural', 'Male'), ('ar-BH-LailaNeural', 'Female'), ('ar-EG-SalmaNeural', 'Female'), ('ar-EG-ShakirNeural', 'Male'), ('ar-IQ-BasselNeural', 'Male'), ('ar-IQ-RanaNeural', 'Female'), ('ar-JO-SanaNeural', 'Female'), ('ar-JO-TaimNeural', 'Male'), ('ar-KW-FahedNeural', 'Male'), ('ar-KW-NouraNeural', 'Female'), ('ar-LB-LaylaNeural', 'Female'), ('ar-LB-RamiNeural', 'Male'), ('ar-LY-ImanNeural', 'Female'), ('ar-LY-OmarNeural', 'Male'), ('ar-MA-JamalNeural', 'Male'), ('ar-MA-MounaNeural', 'Female'), ('ar-OM-AbdullahNeural', 'Male'), ('ar-OM-AyshaNeural', 'Female'), ('ar-QA-AmalNeural', 'Female'), ('ar-QA-MoazNeural', 'Male'), ('ar-SA-HamedNeural', 'Male'), ('ar-SA-ZariyahNeural', 'Female'), ('ar-SY-AmanyNeural', 'Female'), ('ar-SY-LaithNeural', 'Male'), ('ar-TN-HediNeural', 'Male'), ('ar-TN-ReemNeural', 'Female'), ('ar-AE-FatimaNeural', 'Female'), ('ar-AE-HamdanNeural', 'Male'), ('ar-YE-MaryamNeural', 'Female'), ('ar-YE-SalehNeural', 'Male'), ('az-AZ-BabekNeural', 'Male'), ('az-AZ-BanuNeural', 'Female'), ('bn-BD-NabanitaNeural', 'Female'), ('bn-BD-PradeepNeural', 'Male'), ('bn-IN-BashkarNeural', 'Male'), ('bn-IN-TanishaaNeural', 'Female'), ('bs-BA-GoranNeural', 'Male'), ('bs-BA-VesnaNeural', 'Female'), ('bg-BG-BorislavNeural', 'Male'), ('bg-BG-KalinaNeural', 'Female'), ('my-MM-NilarNeural', 'Female'), ('my-MM-ThihaNeural', 'Male'), ('ca-ES-EnricNeural', 'Male'), ('ca-ES-JoanaNeural', 'Female'), ('zh-HK-HiuGaaiNeural', 'Female'), ('zh-HK-HiuMaanNeural', 'Female'), ('zh-HK-WanLungNeural', 'Male'),
|
4 |
+
('zh-CN-XiaoxiaoNeural', 'Female'), ('zh-CN-XiaoyiNeural', 'Female'), ('zh-CN-YunjianNeural', 'Male'), ('zh-CN-YunxiNeural', 'Male'), ('zh-CN-YunxiaNeural', 'Male'), ('zh-CN-YunyangNeural', 'Male'), ('zh-CN-liaoning-XiaobeiNeural', 'Female'), ('zh-TW-HsiaoChenNeural', 'Female'), ('zh-TW-YunJheNeural', 'Male'), ('zh-TW-HsiaoYuNeural', 'Female'), ('zh-CN-shaanxi-XiaoniNeural', 'Female'), ('hr-HR-GabrijelaNeural', 'Female'), ('hr-HR-SreckoNeural', 'Male'), ('cs-CZ-AntoninNeural', 'Male'), ('cs-CZ-VlastaNeural', 'Female'), ('da-DK-ChristelNeural', 'Female'), ('da-DK-JeppeNeural', 'Male'), ('nl-BE-ArnaudNeural', 'Male'), ('nl-BE-DenaNeural', 'Female'), ('nl-NL-ColetteNeural', 'Female'), ('nl-NL-FennaNeural', 'Female'), ('nl-NL-MaartenNeural', 'Male'), ('en-AU-NatashaNeural', 'Female'), ('en-AU-WilliamNeural', 'Male'), ('en-CA-ClaraNeural', 'Female'), ('en-CA-LiamNeural', 'Male'), ('en-HK-SamNeural', 'Male'), ('en-HK-YanNeural', 'Female'), ('en-IN-NeerjaExpressiveNeural', 'Female'), ('en-IN-NeerjaNeural', 'Female'), ('en-IN-PrabhatNeural', 'Male'), ('en-IE-ConnorNeural', 'Male'), ('en-IE-EmilyNeural', 'Female'), ('en-KE-AsiliaNeural', 'Female'), ('en-KE-ChilembaNeural', 'Male'), ('en-NZ-MitchellNeural', 'Male'), ('en-NZ-MollyNeural', 'Female'), ('en-NG-AbeoNeural', 'Male'), ('en-NG-EzinneNeural', 'Female'), ('en-PH-JamesNeural', 'Male'), ('en-US-AvaNeural', 'Female'), ('en-US-AndrewNeural', 'Male'), ('en-US-EmmaNeural', 'Female'), ('en-US-BrianNeural', 'Male'), ('en-PH-RosaNeural', 'Female'), ('en-SG-LunaNeural', 'Female'), ('en-SG-WayneNeural', 'Male'), ('en-ZA-LeahNeural', 'Female'), ('en-ZA-LukeNeural', 'Male'), ('en-TZ-ElimuNeural', 'Male'), ('en-TZ-ImaniNeural', 'Female'), ('en-GB-LibbyNeural', 'Female'), ('en-GB-MaisieNeural', 'Female'), ('en-GB-RyanNeural', 'Male'), ('en-GB-SoniaNeural', 'Female'), ('en-GB-ThomasNeural', 'Male'), ('en-US-AnaNeural', 'Female'), ('en-US-AriaNeural', 'Female'), ('en-US-ChristopherNeural', 'Male'), ('en-US-EricNeural', 'Male'), ('en-US-GuyNeural', 'Male'), ('en-US-JennyNeural', 'Female'), ('en-US-MichelleNeural', 'Female'), ('en-US-RogerNeural', 'Male'), ('en-US-SteffanNeural', 'Male'), ('et-EE-AnuNeural', 'Female'), ('et-EE-KertNeural', 'Male'), ('fil-PH-AngeloNeural', 'Male'), ('fil-PH-BlessicaNeural', 'Female'), ('fi-FI-HarriNeural', 'Male'), ('fi-FI-NooraNeural', 'Female'), ('fr-BE-CharlineNeural', 'Female'), ('fr-BE-GerardNeural', 'Male'), ('fr-CA-ThierryNeural', 'Male'), ('fr-CA-AntoineNeural', 'Male'), ('fr-CA-JeanNeural', 'Male'), ('fr-CA-SylvieNeural', 'Female'), ('fr-FR-VivienneMultilingualNeural', 'Female'), ('fr-FR-RemyMultilingualNeural', 'Male'), ('fr-FR-DeniseNeural', 'Female'), ('fr-FR-EloiseNeural', 'Female'), ('fr-FR-HenriNeural', 'Male'), ('fr-CH-ArianeNeural', 'Female'), ('fr-CH-FabriceNeural', 'Male'), ('gl-ES-RoiNeural', 'Male'), ('gl-ES-SabelaNeural', 'Female'), ('ka-GE-EkaNeural', 'Female'), ('ka-GE-GiorgiNeural', 'Male'), ('de-AT-IngridNeural', 'Female'), ('de-AT-JonasNeural', 'Male'), ('de-DE-SeraphinaMultilingualNeural', 'Female'), ('de-DE-FlorianMultilingualNeural', 'Male'), ('de-DE-AmalaNeural', 'Female'), ('de-DE-ConradNeural', 'Male'), ('de-DE-KatjaNeural', 'Female'), ('de-DE-KillianNeural', 'Male'), ('de-CH-JanNeural', 'Male'), ('de-CH-LeniNeural', 'Female'), ('el-GR-AthinaNeural', 'Female'), ('el-GR-NestorasNeural', 'Male'), ('gu-IN-DhwaniNeural', 'Female'), ('gu-IN-NiranjanNeural', 'Male'), ('he-IL-AvriNeural', 'Male'), ('he-IL-HilaNeural', 'Female'), ('hi-IN-MadhurNeural', 'Male'), ('hi-IN-SwaraNeural', 'Female'), ('hu-HU-NoemiNeural', 'Female'), ('hu-HU-TamasNeural', 'Male'), ('is-IS-GudrunNeural', 'Female'), ('is-IS-GunnarNeural', 'Male'), ('id-ID-ArdiNeural', 'Male'), ('id-ID-GadisNeural', 'Female'), ('ga-IE-ColmNeural', 'Male'), ('ga-IE-OrlaNeural', 'Female'), ('it-IT-GiuseppeNeural', 'Male'), ('it-IT-DiegoNeural', 'Male'), ('it-IT-ElsaNeural', 'Female'), ('it-IT-IsabellaNeural', 'Female'), ('ja-JP-KeitaNeural', 'Male'), ('ja-JP-NanamiNeural', 'Female'), ('jv-ID-DimasNeural', 'Male'), ('jv-ID-SitiNeural', 'Female'), ('kn-IN-GaganNeural', 'Male'), ('kn-IN-SapnaNeural', 'Female'), ('kk-KZ-AigulNeural', 'Female'), ('kk-KZ-DauletNeural', 'Male'), ('km-KH-PisethNeural', 'Male'), ('km-KH-SreymomNeural', 'Female'), ('ko-KR-HyunsuNeural', 'Male'), ('ko-KR-InJoonNeural', 'Male'), ('ko-KR-SunHiNeural', 'Female'), ('lo-LA-ChanthavongNeural', 'Male'), ('lo-LA-KeomanyNeural', 'Female'), ('lv-LV-EveritaNeural', 'Female'), ('lv-LV-NilsNeural', 'Male'), ('lt-LT-LeonasNeural', 'Male'), ('lt-LT-OnaNeural', 'Female'), ('mk-MK-AleksandarNeural', 'Male'), ('mk-MK-MarijaNeural', 'Female'), ('ms-MY-OsmanNeural', 'Male'), ('ms-MY-YasminNeural', 'Female'), ('ml-IN-MidhunNeural', 'Male'), ('ml-IN-SobhanaNeural', 'Female'), ('mt-MT-GraceNeural', 'Female'), ('mt-MT-JosephNeural', 'Male'), ('mr-IN-AarohiNeural', 'Female'), ('mr-IN-ManoharNeural', 'Male'), ('mn-MN-BataaNeural', 'Male'), ('mn-MN-YesuiNeural', 'Female'), ('ne-NP-HemkalaNeural', 'Female'), ('ne-NP-SagarNeural', 'Male'), ('nb-NO-FinnNeural', 'Male'), ('nb-NO-PernilleNeural', 'Female'), ('ps-AF-GulNawazNeural', 'Male'), ('ps-AF-LatifaNeural', 'Female'), ('fa-IR-DilaraNeural', 'Female'), ('fa-IR-FaridNeural', 'Male'), ('pl-PL-MarekNeural', 'Male'), ('pl-PL-ZofiaNeural', 'Female'), ('pt-BR-ThalitaNeural', 'Female'), ('pt-BR-AntonioNeural', 'Male'), ('pt-BR-FranciscaNeural', 'Female'), ('pt-PT-DuarteNeural', 'Male'), ('pt-PT-RaquelNeural', 'Female'), ('ro-RO-AlinaNeural', 'Female'), ('ro-RO-EmilNeural', 'Male'), ('ru-RU-DmitryNeural', 'Male'), ('ru-RU-SvetlanaNeural', 'Female'), ('sr-RS-NicholasNeural', 'Male'), ('sr-RS-SophieNeural', 'Female'), ('si-LK-SameeraNeural', 'Male'), ('si-LK-ThiliniNeural', 'Female'), ('sk-SK-LukasNeural', 'Male'), ('sk-SK-ViktoriaNeural', 'Female'), ('sl-SI-PetraNeural', 'Female'), ('sl-SI-RokNeural', 'Male'), ('so-SO-MuuseNeural', 'Male'), ('so-SO-UbaxNeural', 'Female'), ('es-AR-ElenaNeural', 'Female'), ('es-AR-TomasNeural', 'Male'), ('es-BO-MarceloNeural', 'Male'), ('es-BO-SofiaNeural', 'Female'), ('es-CL-CatalinaNeural', 'Female'), ('es-CL-LorenzoNeural', 'Male'), ('es-ES-XimenaNeural', 'Female'), ('es-CO-GonzaloNeural', 'Male'), ('es-CO-SalomeNeural', 'Female'), ('es-CR-JuanNeural', 'Male'), ('es-CR-MariaNeural', 'Female'), ('es-CU-BelkysNeural', 'Female'), ('es-CU-ManuelNeural', 'Male'), ('es-DO-EmilioNeural', 'Male'), ('es-DO-RamonaNeural', 'Female'), ('es-EC-AndreaNeural', 'Female'), ('es-EC-LuisNeural', 'Male'), ('es-SV-LorenaNeural', 'Female'), ('es-SV-RodrigoNeural', 'Male'), ('es-GQ-JavierNeural', 'Male'), ('es-GQ-TeresaNeural', 'Female'), ('es-GT-AndresNeural', 'Male'), ('es-GT-MartaNeural', 'Female'), ('es-HN-CarlosNeural', 'Male'), ('es-HN-KarlaNeural', 'Female'), ('es-MX-DaliaNeural', 'Female'), ('es-MX-JorgeNeural', 'Male'), ('es-NI-FedericoNeural', 'Male'), ('es-NI-YolandaNeural', 'Female'), ('es-PA-MargaritaNeural', 'Female'), ('es-PA-RobertoNeural', 'Male'), ('es-PY-MarioNeural', 'Male'), ('es-PY-TaniaNeural', 'Female'), ('es-PE-AlexNeural', 'Male'), ('es-PE-CamilaNeural', 'Female'), ('es-PR-KarinaNeural', 'Female'), ('es-PR-VictorNeural',
|
5 |
+
'Male'), ('es-ES-AlvaroNeural', 'Male'), ('es-ES-ElviraNeural', 'Female'), ('es-US-AlonsoNeural', 'Male'), ('es-US-PalomaNeural', 'Female'), ('es-UY-MateoNeural', 'Male'), ('es-UY-ValentinaNeural', 'Female'), ('es-VE-PaolaNeural', 'Female'), ('es-VE-SebastianNeural', 'Male'), ('su-ID-JajangNeural', 'Male'), ('su-ID-TutiNeural', 'Female'), ('sw-KE-RafikiNeural', 'Male'), ('sw-KE-ZuriNeural', 'Female'), ('sw-TZ-DaudiNeural', 'Male'), ('sw-TZ-RehemaNeural', 'Female'), ('sv-SE-MattiasNeural', 'Male'), ('sv-SE-SofieNeural', 'Female'), ('ta-IN-PallaviNeural', 'Female'), ('ta-IN-ValluvarNeural', 'Male'), ('ta-MY-KaniNeural', 'Female'), ('ta-MY-SuryaNeural', 'Male'), ('ta-SG-AnbuNeural', 'Male'), ('ta-SG-VenbaNeural', 'Female'), ('ta-LK-KumarNeural', 'Male'), ('ta-LK-SaranyaNeural', 'Female'), ('te-IN-MohanNeural', 'Male'), ('te-IN-ShrutiNeural', 'Female'), ('th-TH-NiwatNeural', 'Male'), ('th-TH-PremwadeeNeural', 'Female'), ('tr-TR-AhmetNeural', 'Male'), ('tr-TR-EmelNeural', 'Female'), ('uk-UA-OstapNeural', 'Male'), ('uk-UA-PolinaNeural', 'Female'), ('ur-IN-GulNeural', 'Female'), ('ur-IN-SalmanNeural', 'Male'), ('ur-PK-AsadNeural', 'Male'), ('ur-PK-UzmaNeural', 'Female'), ('uz-UZ-MadinaNeural', 'Female'), ('uz-UZ-SardorNeural', 'Male'), ('vi-VN-HoaiMyNeural', 'Female'), ('vi-VN-NamMinhNeural', 'Male'), ('cy-GB-AledNeural', 'Male'), ('cy-GB-NiaNeural', 'Female'), ('zu-ZA-ThandoNeural', 'Female'), ('zu-ZA-ThembaNeural', 'Male')]
|
6 |
+
|
7 |
+
openai_speakers = [
|
8 |
+
("alloy", "Female"),
|
9 |
+
("echo", "Female"),
|
10 |
+
("fable", "Female"),
|
11 |
+
("onyx", "Male"),
|
12 |
+
("nova", "Female"),
|
13 |
+
("shimmer", "Female")
|
14 |
+
]
|
15 |
+
|
16 |
+
# https://platform.openai.com/docs/guides/text-to-speech
|
17 |
+
openai_supported_languages = ["Afrikaans", "Arabic", "Armenian", "Azerbaijani", "Belarusian", "Bosnian", "Bulgarian", "Catalan", "Chinese", "Croatian", "Czech", "Danish", "Dutch", "English", "Estonian", "Finnish", "French", "Galician", "German", "Greek", "Hebrew", "Hindi", "Hungarian", "Icelandic", "Indonesian", "Italian", "Japanese", "Kannada", "Kazakh", "Korean", "Latvian", "Lithuanian", "Macedonian", "Malay", "Marathi", "Maori", "Nepali", "Norwegian", "Persian", "Polish", "Portuguese", "Romanian", "Russian", "Serbian", "Slovak", "Slovenian", "Spanish", "Swahili", "Swedish", "Tagalog", "Tamil", "Thai", "Turkish", "Ukrainian", "Urdu", "Vietnamese", "Welsh"]
|
18 |
+
|
19 |
+
def match_speakers(langs,sex):
|
20 |
+
res = []
|
21 |
+
codes = [languages.get(name=l).alpha2 for l in langs]
|
22 |
+
|
23 |
+
for s in edge_speakers:
|
24 |
+
if s[0][:2] in codes and s[1] in sex:
|
25 |
+
res.append(f"{s[0]} #{s[1]} Edge")
|
26 |
+
|
27 |
+
lang_match = False
|
28 |
+
for l in langs:
|
29 |
+
if l in openai_supported_languages:
|
30 |
+
lang_match = True
|
31 |
+
|
32 |
+
if lang_match:
|
33 |
+
for s in openai_speakers:
|
34 |
+
if s[1] in sex:
|
35 |
+
res.append(f"{s[0]} #{s[1]} OpenAI")
|
36 |
+
continue
|
37 |
+
return res
|
38 |
+
|
39 |
+
#match_speakers(["Chinese"],["Male"])
|