scriptconv 0.0.3a19__tar.gz → 0.0.3a20__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/PKG-INFO +1 -1
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/notation.py +6 -2
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/ar.py +35 -10
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/ko.py +22 -11
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/version.py +1 -1
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv.egg-info/PKG-INFO +1 -1
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_phonemizers_cjk_ar.py +19 -2
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/LICENSE +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/README.md +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/pyproject.toml +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/requirements.txt +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/__init__.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/__main__.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/cangjie.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/conventions.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/data/__init__.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/data/cangjie5_tc.tsv.gz +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/graph.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/__init__.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/__init__.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/bw2ipa.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/hangul2ipa.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/ko_tables/aspiration.csv +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/ko_tables/assimilation.csv +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/ko_tables/double_coda.csv +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/ko_tables/hanja.tsv +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/ko_tables/ipa.csv +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/ko_tables/neutralization.csv +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/ko_tables/tensification.csv +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/ko_tables/yale.csv +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/__init__.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/codeswitch.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/diacritize.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/dialectal.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/english_g2p.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/espeak.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/frontend.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/levantine_g2p.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/normalize.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/phoneme_inventory.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/zh_num.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/base.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/en.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/enums.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/eu.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/fa.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/gl.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/he.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/ja.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/mul.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/mwl.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/o2ipa.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/pt.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/registry.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/shami.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/vi.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/zh.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/py.typed +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/readings.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/scripts.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/translit.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv.egg-info/SOURCES.txt +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv.egg-info/dependency_links.txt +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv.egg-info/requires.txt +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv.egg-info/top_level.txt +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/setup.cfg +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_arpa_stress.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_cangjie.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_cli.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_conventions.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_errors_policy.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_examples.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_graph.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_notation.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_phonemizers_base.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_readings.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_readings_zh.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_scripts.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_scripts_stressonnx_compat.py +0 -0
- {scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/tests/test_translit.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scriptconv
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.3a20
|
|
4
4
|
Summary: Zero-dependency script & phoneme-notation core — ISO-15924 detection & metadata, IPA↔ARPABET/X-SAMPA/Lexique/Kirshenbaum/Cotovía/RFE, Buckwalter↔Arabic, Hangul→jamo, kana
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Project-URL: Homepage, https://github.com/TigreGotico/scriptconv
|
|
@@ -1053,7 +1053,7 @@ def _tokenize_mantoq(text: str) -> list[str]:
|
|
|
1053
1053
|
return tokens
|
|
1054
1054
|
|
|
1055
1055
|
|
|
1056
|
-
def mantoq_to_ipa(mantoq
|
|
1056
|
+
def mantoq_to_ipa(mantoq, errors: str = "pass") -> str:
|
|
1057
1057
|
"""Convert a Mantoq phoneme string to IPA.
|
|
1058
1058
|
|
|
1059
1059
|
``_dbl_`` lengthens/geminates the preceding symbol (``ː``), ``_+_``
|
|
@@ -1070,9 +1070,13 @@ def mantoq_to_ipa(mantoq: str, errors: str = "pass") -> str:
|
|
|
1070
1070
|
The inventory's special tokens are honoured: ``_sil_`` becomes a space,
|
|
1071
1071
|
``_eos_``/``_pad_`` are dropped.
|
|
1072
1072
|
"""
|
|
1073
|
+
# a pre-tokenized sequence (as returned by the mantoq package's g2p)
|
|
1074
|
+
# is consumed directly — joining tokens into a string is ambiguous
|
|
1075
|
+
# ("a"+"aa" and "aa"+"a" both join to "aaa")
|
|
1076
|
+
tokens = _tokenize_mantoq(mantoq) if isinstance(mantoq, str) else mantoq
|
|
1073
1077
|
out: list[str] = []
|
|
1074
1078
|
last_tok = None
|
|
1075
|
-
for pos, tok in enumerate(
|
|
1079
|
+
for pos, tok in enumerate(tokens):
|
|
1076
1080
|
if tok == "_dbl_":
|
|
1077
1081
|
# upstream emits _dbl_ only by splitting a doubled CONSONANT
|
|
1078
1082
|
# (mantoq buck/tokenization.py: `phon not in vowels and
|
|
@@ -5,21 +5,46 @@ from scriptconv.phonemizers.base import BasePhonemizer
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class MantoqPhonemizer(BasePhonemizer):
|
|
8
|
-
"""
|
|
8
|
+
"""Arabic phonemizer wrapping the external ``mantoq`` package.
|
|
9
9
|
|
|
10
|
-
mantoq
|
|
11
|
-
|
|
12
|
-
Apache-2.0
|
|
13
|
-
|
|
10
|
+
mantoq (github.com/mush42/mantoq) bundles Nawar Halabi's Arabic-Phonetiser,
|
|
11
|
+
whose phonetisation core is CC BY-NC 4.0 — a license incompatible with
|
|
12
|
+
vendoring in this Apache-2.0 library, so the package is imported at
|
|
13
|
+
runtime and must be installed separately by a user who accepts its terms:
|
|
14
|
+
|
|
15
|
+
pip install git+https://github.com/mush42/mantoq
|
|
16
|
+
|
|
17
|
+
Kept for compatibility with published models trained on mantoq phoneme
|
|
18
|
+
sequences; the Arabic default is :class:`ArbtokPhonemizer`. Output is
|
|
19
|
+
IPA (via :func:`scriptconv.notation.mantoq_to_ipa`) or the raw mantoq
|
|
20
|
+
inventory with ``alphabet=Alphabet.MANTOQ``.
|
|
14
21
|
"""
|
|
15
22
|
|
|
16
|
-
def __init__(self,
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
|
|
23
|
+
def __init__(self, alphabet: Alphabet = Alphabet.IPA):
|
|
24
|
+
if alphabet not in (Alphabet.IPA, Alphabet.MANTOQ):
|
|
25
|
+
raise ValueError("MantoqPhonemizer outputs IPA or MANTOQ")
|
|
26
|
+
super().__init__(alphabet)
|
|
27
|
+
try:
|
|
28
|
+
import mantoq
|
|
29
|
+
except ImportError:
|
|
30
|
+
raise ImportError(
|
|
31
|
+
"the mantoq package is not installed (and not vendored here: "
|
|
32
|
+
"its phonetisation core is CC BY-NC 4.0). Install it "
|
|
33
|
+
"separately, accepting its license terms: "
|
|
34
|
+
"pip install git+https://github.com/mush42/mantoq") from None
|
|
35
|
+
self._g2p = mantoq.g2p
|
|
36
|
+
|
|
37
|
+
@classmethod
|
|
38
|
+
def get_lang(cls, target_lang: str) -> str:
|
|
39
|
+
return cls.match_lang(target_lang, ["ar"])
|
|
20
40
|
|
|
21
41
|
def phonemize_string(self, text: str, lang: str) -> str:
|
|
22
|
-
|
|
42
|
+
_, tokens = self._g2p(text)
|
|
43
|
+
if self.alphabet == Alphabet.MANTOQ:
|
|
44
|
+
return " ".join(tokens)
|
|
45
|
+
from scriptconv.notation import mantoq_to_ipa
|
|
46
|
+
return mantoq_to_ipa(tokens)
|
|
47
|
+
|
|
23
48
|
|
|
24
49
|
|
|
25
50
|
class ArbtokPhonemizer(BasePhonemizer):
|
|
@@ -47,19 +47,30 @@ class G2PKPhonemizer(BasePhonemizer):
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
class KoG2PPhonemizer(BasePhonemizer):
|
|
50
|
-
"""
|
|
50
|
+
"""Korean phonemizer wrapping an external ``kog2p`` distribution.
|
|
51
51
|
|
|
52
|
-
Upstream KoG2P (github.com/scarletcho/KoG2P) is GPL-3.0
|
|
53
|
-
with this
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
Upstream KoG2P (github.com/scarletcho/KoG2P) is GPL-3.0 — a license
|
|
53
|
+
incompatible with vendoring in this Apache-2.0 library, so a ``kog2p``
|
|
54
|
+
module providing ``runKoG2P`` must be installed separately by a user who
|
|
55
|
+
accepts its terms. :class:`G2PKPhonemizer` is the unencumbered
|
|
56
|
+
alternative.
|
|
56
57
|
"""
|
|
57
58
|
|
|
58
|
-
def __init__(self,
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
def __init__(self, alphabet: Alphabet = Alphabet.IPA):
|
|
60
|
+
super().__init__(alphabet)
|
|
61
|
+
try:
|
|
62
|
+
from kog2p import runKoG2P
|
|
63
|
+
except ImportError:
|
|
64
|
+
raise ImportError(
|
|
65
|
+
"no kog2p module installed (KoG2P is GPL-3.0 and not "
|
|
66
|
+
"vendored here). Install a distribution providing it, "
|
|
67
|
+
"accepting its license, or use G2PKPhonemizer") from None
|
|
68
|
+
self.g2p = runKoG2P
|
|
69
|
+
|
|
70
|
+
@classmethod
|
|
71
|
+
def get_lang(cls, target_lang: str) -> str:
|
|
72
|
+
return cls.match_lang(target_lang, ["ko"])
|
|
63
73
|
|
|
64
74
|
def phonemize_string(self, text: str, lang: str) -> str:
|
|
65
|
-
|
|
75
|
+
# contract: the installed module's runKoG2P(text) -> phoneme string
|
|
76
|
+
return self.g2p(text)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scriptconv
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.3a20
|
|
4
4
|
Summary: Zero-dependency script & phoneme-notation core — ISO-15924 detection & metadata, IPA↔ARPABET/X-SAMPA/Lexique/Kirshenbaum/Cotovía/RFE, Buckwalter↔Arabic, Hangul→jamo, kana
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Project-URL: Homepage, https://github.com/TigreGotico/scriptconv
|
|
@@ -41,13 +41,13 @@ class TestShamiFrontend(unittest.TestCase):
|
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
class TestLicensingStubs(unittest.TestCase):
|
|
44
|
-
def
|
|
44
|
+
def test_mantoq_wrapper_requires_external_package(self):
|
|
45
45
|
cls = get_phonemizer_class(Phonemizer.MANTOQ)
|
|
46
46
|
with self.assertRaises(ImportError) as ctx:
|
|
47
47
|
cls()
|
|
48
48
|
self.assertIn("BY-NC", str(ctx.exception).replace("CC BY-NC", "BY-NC"))
|
|
49
49
|
|
|
50
|
-
def
|
|
50
|
+
def test_kog2p_wrapper_requires_external_package(self):
|
|
51
51
|
cls = get_phonemizer_class(Phonemizer.KOG2PK)
|
|
52
52
|
with self.assertRaises(ImportError) as ctx:
|
|
53
53
|
cls()
|
|
@@ -67,3 +67,20 @@ class TestLicensingStubs(unittest.TestCase):
|
|
|
67
67
|
|
|
68
68
|
if __name__ == "__main__":
|
|
69
69
|
unittest.main()
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class TestMantoqTokensToIpa(unittest.TestCase):
|
|
73
|
+
def test_pretokenized_sequence_accepted(self):
|
|
74
|
+
# the mantoq package's g2p returns a token LIST; joining is ambiguous
|
|
75
|
+
# so mantoq_to_ipa consumes sequences directly
|
|
76
|
+
from scriptconv.notation import mantoq_to_ipa
|
|
77
|
+
tokens = ["m", "a", "r", "H", "a", "b", "a", "n", "aa",
|
|
78
|
+
"_+_", "b", "i", "l", "E", "aa", "l", "a", "m", "i"]
|
|
79
|
+
out = mantoq_to_ipa(tokens)
|
|
80
|
+
self.assertIn("ħ", out)
|
|
81
|
+
self.assertIn(" ", out)
|
|
82
|
+
self.assertNotIn("_", out)
|
|
83
|
+
|
|
84
|
+
def test_pretokenized_dbl_geminate(self):
|
|
85
|
+
from scriptconv.notation import mantoq_to_ipa
|
|
86
|
+
self.assertEqual(mantoq_to_ipa(["b", "_dbl_", "a"]), "bːa")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/hangul2ipa.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/ko_tables/hanja.tsv
RENAMED
|
File without changes
|
{scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/ko_tables/ipa.csv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/ko_tables/yale.csv
RENAMED
|
File without changes
|
{scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/__init__.py
RENAMED
|
File without changes
|
{scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/codeswitch.py
RENAMED
|
File without changes
|
{scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/diacritize.py
RENAMED
|
File without changes
|
{scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/dialectal.py
RENAMED
|
File without changes
|
{scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/english_g2p.py
RENAMED
|
File without changes
|
{scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/espeak.py
RENAMED
|
File without changes
|
{scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/frontend.py
RENAMED
|
File without changes
|
|
File without changes
|
{scriptconv-0.0.3a19 → scriptconv-0.0.3a20}/scriptconv/phonemizers/_thirdparty/shami/normalize.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|