summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/phonenumbers/tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-07-02 03:03:53 +0000
committerNorbert Preining <norbert@preining.info>2022-07-02 03:03:53 +0000
commitcd3bef34bd0bfcf1625056fd2f2832328c516179 (patch)
treec7337e2acdc9c8e9f18518ee8cf09a985a9d94c8 /macros/latex/contrib/phonenumbers/tex
parent360c779f505ae5d8baf567f534861a7a9c7afcb2 (diff)
CTAN sync 202207020303
Diffstat (limited to 'macros/latex/contrib/phonenumbers/tex')
-rw-r--r--macros/latex/contrib/phonenumbers/tex/phn-AT_Vorwahlen.tex1071
-rw-r--r--macros/latex/contrib/phonenumbers/tex/phn-DE_Vorwahlen.tex5279
-rw-r--r--macros/latex/contrib/phonenumbers/tex/phn-FR_Ortsnamen.tex48
-rw-r--r--macros/latex/contrib/phonenumbers/tex/phn-FR_Vorwahlen.tex48
-rw-r--r--macros/latex/contrib/phonenumbers/tex/phn-Landeskennzahlen.tex219
-rw-r--r--macros/latex/contrib/phonenumbers/tex/phn-UK_Vorwahlen.tex1321
-rw-r--r--macros/latex/contrib/phonenumbers/tex/phn-US_Vorwahlen.tex681
-rw-r--r--macros/latex/contrib/phonenumbers/tex/phonenumbers-AT.def (renamed from macros/latex/contrib/phonenumbers/tex/phn-AT_Ortsnamen.tex)1494
-rw-r--r--macros/latex/contrib/phonenumbers/tex/phonenumbers-DE.def (renamed from macros/latex/contrib/phonenumbers/tex/phn-DE_Ortsnamen.tex)5734
-rw-r--r--macros/latex/contrib/phonenumbers/tex/phonenumbers-FR.def396
-rw-r--r--macros/latex/contrib/phonenumbers/tex/phonenumbers-UK.def (renamed from macros/latex/contrib/phonenumbers/tex/phn-UK_Ortsnamen.tex)1689
-rw-r--r--macros/latex/contrib/phonenumbers/tex/phonenumbers-US.def (renamed from macros/latex/contrib/phonenumbers/tex/phn-US_Ortsnamen.tex)1216
-rw-r--r--macros/latex/contrib/phonenumbers/tex/phonenumbers.sty2044
13 files changed, 10828 insertions, 10412 deletions
diff --git a/macros/latex/contrib/phonenumbers/tex/phn-AT_Vorwahlen.tex b/macros/latex/contrib/phonenumbers/tex/phn-AT_Vorwahlen.tex
deleted file mode 100644
index 2a27994d60..0000000000
--- a/macros/latex/contrib/phonenumbers/tex/phn-AT_Vorwahlen.tex
+++ /dev/null
@@ -1,1071 +0,0 @@
-% phonenumbers package: Austrian area codes
-% Datum: 22. Oktober 2017
-\clist_const:Nn \c_phone_AT_ortsvorwahlen_clist {01,
-02142,
-02143,
-02144,
-02145,
-02146,
-02147,
-02160,
-02162,
-02163,
-02164,
-02165,
-02166,
-02167,
-02168,
-02169,
-02172,
-02173,
-02174,
-02175,
-02176,
-02177,
-02212,
-02213,
-02214,
-02215,
-02216,
-02230,
-02231,
-02232,
-02233,
-02234,
-02235,
-02236,
-02237,
-02238,
-02239,
-02242,
-02243,
-02244,
-02245,
-02246,
-02247,
-02248,
-02249,
-02252,
-02253,
-02254,
-02255,
-02256,
-02257,
-02258,
-02259,
-02262,
-02263,
-02264,
-02265,
-02266,
-02267,
-02268,
-02269,
-02271,
-02272,
-02273,
-02274,
-02275,
-02276,
-02277,
-02278,
-02279,
-02282,
-02283,
-02284,
-02285,
-02286,
-02287,
-02288,
-02289,
-02522,
-02523,
-02524,
-02525,
-02526,
-02527,
-02532,
-02533,
-02534,
-02535,
-02536,
-02538,
-02552,
-02554,
-02555,
-02556,
-02557,
-02572,
-02573,
-02574,
-02575,
-02576,
-02577,
-02610,
-02611,
-02612,
-02613,
-02614,
-02615,
-02616,
-02617,
-02618,
-02619,
-02620,
-02621,
-02622,
-02623,
-02624,
-02625,
-02626,
-02627,
-02628,
-02629,
-02630,
-02631,
-02632,
-02633,
-02634,
-02635,
-02636,
-02637,
-02638,
-02639,
-02641,
-02642,
-02643,
-02644,
-02645,
-02646,
-02647,
-02648,
-02649,
-02662,
-02663,
-02664,
-02665,
-02666,
-02667,
-02672,
-02673,
-02674,
-02680,
-02682,
-02683,
-02684,
-02685,
-02686,
-02687,
-02688,
-02689,
-02711,
-02712,
-02713,
-02714,
-02715,
-02716,
-02717,
-02718,
-02719,
-02722,
-02723,
-02724,
-02725,
-02726,
-02728,
-02731,
-02732,
-02733,
-02734,
-02735,
-02736,
-02738,
-02739,
-02741,
-02742,
-02743,
-02744,
-02745,
-02746,
-02747,
-02748,
-02749,
-02752,
-02753,
-02754,
-02755,
-02756,
-02757,
-02758,
-02762,
-02763,
-02764,
-02765,
-02766,
-02767,
-02768,
-02769,
-02772,
-02773,
-02774,
-02782,
-02783,
-02784,
-02786,
-02812,
-02813,
-02814,
-02815,
-02816,
-02822,
-02823,
-02824,
-02825,
-02826,
-02827,
-02828,
-02829,
-02841,
-02842,
-02843,
-02844,
-02845,
-02846,
-02847,
-02848,
-02849,
-02852,
-02853,
-02854,
-02855,
-02856,
-02857,
-02858,
-02859,
-02862,
-02863,
-02864,
-02865,
-02872,
-02873,
-02874,
-02875,
-02876,
-02877,
-02878,
-02912,
-02913,
-02914,
-02915,
-02916,
-02942,
-02943,
-02944,
-02945,
-02946,
-02947,
-02948,
-02949,
-02951,
-02952,
-02953,
-02954,
-02955,
-02956,
-02957,
-02958,
-02959,
-02982,
-02983,
-02984,
-02985,
-02986,
-02987,
-02988,
-02989,
-03112,
-03113,
-03114,
-03115,
-03116,
-03117,
-03118,
-03119,
-03123,
-03124,
-03125,
-03126,
-03127,
-03132,
-03133,
-03134,
-03135,
-03136,
-03137,
-03140,
-03141,
-03142,
-03143,
-03144,
-03145,
-03146,
-03147,
-03148,
-03149,
-03150,
-03151,
-03152,
-03153,
-03155,
-03157,
-03158,
-03159,
-0316,
-03170,
-03171,
-03172,
-03173,
-03174,
-03175,
-03176,
-03177,
-03178,
-03179,
-03182,
-03183,
-03184,
-03185,
-03322,
-03323,
-03324,
-03325,
-03326,
-03327,
-03328,
-03329,
-03331,
-03332,
-03333,
-03334,
-03335,
-03336,
-03337,
-03338,
-03339,
-03352,
-03353,
-03354,
-03355,
-03356,
-03357,
-03358,
-03359,
-03362,
-03363,
-03364,
-03365,
-03366,
-03382,
-03383,
-03385,
-03386,
-03387,
-03452,
-03453,
-03454,
-03455,
-03456,
-03457,
-03460,
-03461,
-03462,
-03463,
-03464,
-03465,
-03466,
-03467,
-03468,
-03469,
-03472,
-03473,
-03474,
-03475,
-03476,
-03477,
-03512,
-03513,
-03514,
-03515,
-03516,
-03532,
-03533,
-03534,
-03535,
-03536,
-03537,
-03571,
-03572,
-03573,
-03574,
-03575,
-03576,
-03577,
-03578,
-03579,
-03581,
-03582,
-03583,
-03584,
-03585,
-03586,
-03587,
-03588,
-03611,
-03612,
-03613,
-03614,
-03615,
-03616,
-03617,
-03618,
-03619,
-03622,
-03623,
-03624,
-03631,
-03632,
-03633,
-03634,
-03635,
-03636,
-03637,
-03638,
-03680,
-03682,
-03683,
-03684,
-03685,
-03686,
-03687,
-03688,
-03689,
-03832,
-03833,
-03834,
-03842,
-03843,
-03844,
-03845,
-03846,
-03847,
-03848,
-03849,
-03852,
-03853,
-03854,
-03855,
-03856,
-03857,
-03858,
-03859,
-03861,
-03862,
-03863,
-03864,
-03865,
-03866,
-03867,
-03868,
-03869,
-03882,
-03883,
-03884,
-03885,
-03886,
-04212,
-04213,
-04214,
-04215,
-04220,
-04221,
-04223,
-04224,
-04225,
-04226,
-04227,
-04228,
-04229,
-04230,
-04231,
-04232,
-04233,
-04234,
-04235,
-04236,
-04237,
-04238,
-04239,
-04240,
-04242,
-04243,
-04244,
-04245,
-04246,
-04247,
-04248,
-04252,
-04253,
-04254,
-04255,
-04256,
-04257,
-04258,
-04262,
-04263,
-04264,
-04265,
-04266,
-04267,
-04268,
-04269,
-04271,
-04272,
-04273,
-04274,
-04275,
-04276,
-04277,
-04278,
-04279,
-04282,
-04283,
-04284,
-04285,
-04286,
-04350,
-04352,
-04353,
-04354,
-04355,
-04356,
-04357,
-04358,
-04359,
-0463,
-04710,
-04712,
-04713,
-04714,
-04715,
-04716,
-04717,
-04718,
-04732,
-04733,
-04734,
-04735,
-04736,
-04761,
-04762,
-04766,
-04767,
-04768,
-04769,
-04782,
-04783,
-04784,
-04785,
-04822,
-04823,
-04824,
-04825,
-04826,
-04842,
-04843,
-04846,
-04847,
-04848,
-04852,
-04853,
-04855,
-04858,
-04872,
-04873,
-04874,
-04875,
-04876,
-04877,
-04879,
-0512,
-05212,
-05213,
-05214,
-05223,
-05224,
-05225,
-05226,
-05230,
-05232,
-05234,
-05236,
-05238,
-05239,
-05242,
-05243,
-05244,
-05245,
-05246,
-05248,
-05252,
-05253,
-05254,
-05255,
-05256,
-05262,
-05263,
-05264,
-05265,
-05266,
-05272,
-05273,
-05274,
-05275,
-05276,
-05278,
-05279,
-05280,
-05282,
-05283,
-05284,
-05285,
-05286,
-05287,
-05288,
-05289,
-05331,
-05332,
-05333,
-05334,
-05335,
-05336,
-05337,
-05338,
-05339,
-05352,
-05353,
-05354,
-05355,
-05356,
-05357,
-05358,
-05359,
-05372,
-05373,
-05374,
-05375,
-05376,
-05412,
-05413,
-05414,
-05417,
-05418,
-05441,
-05442,
-05443,
-05444,
-05445,
-05446,
-05447,
-05448,
-05449,
-05472,
-05473,
-05474,
-05475,
-05476,
-05477,
-05510,
-05512,
-05513,
-05514,
-05515,
-05516,
-05517,
-05518,
-05519,
-05522,
-05523,
-05524,
-05525,
-05526,
-05550,
-05552,
-05553,
-05554,
-05556,
-05557,
-05558,
-05559,
-05572,
-05573,
-05574,
-05575,
-05576,
-05577,
-05578,
-05579,
-05582,
-05583,
-05585,
-05632,
-05633,
-05634,
-05635,
-05672,
-05673,
-05674,
-05675,
-05676,
-05677,
-05678,
-06131,
-06132,
-06133,
-06134,
-06135,
-06136,
-06137,
-06138,
-06212,
-06213,
-06214,
-06215,
-06216,
-06217,
-06219,
-06221,
-06223,
-06224,
-06225,
-06226,
-06227,
-06228,
-06229,
-06232,
-06233,
-06234,
-06235,
-06240,
-06241,
-06242,
-06243,
-06244,
-06245,
-06246,
-06247,
-06272,
-06274,
-06276,
-06277,
-06278,
-06412,
-06413,
-06414,
-06415,
-06416,
-06417,
-06418,
-06432,
-06433,
-06434,
-06452,
-06453,
-06454,
-06455,
-06456,
-06457,
-06458,
-06461,
-06462,
-06463,
-06466,
-06467,
-06468,
-06470,
-06471,
-06472,
-06473,
-06474,
-06475,
-06476,
-06477,
-06478,
-06479,
-06483,
-06484,
-06541,
-06542,
-06543,
-06544,
-06545,
-06546,
-06547,
-06548,
-06549,
-06562,
-06563,
-06564,
-06565,
-06566,
-06582,
-06583,
-06584,
-06588,
-06589,
-0662,
-07211,
-07212,
-07213,
-07214,
-07215,
-07216,
-07217,
-07218,
-07219,
-07221,
-07223,
-07224,
-07225,
-07226,
-07227,
-07228,
-07229,
-07230,
-07231,
-07232,
-07233,
-07234,
-07235,
-07236,
-07237,
-07238,
-07239,
-07240,
-07241,
-07242,
-07243,
-07244,
-07245,
-07246,
-07247,
-07248,
-07249,
-07250,
-07251,
-07252,
-07253,
-07254,
-07255,
-07256,
-07257,
-07258,
-07259,
-07260,
-07261,
-07262,
-07263,
-07264,
-07265,
-07266,
-07267,
-07268,
-07269,
-07272,
-07273,
-07274,
-07276,
-07277,
-07278,
-07279,
-07280,
-07281,
-07282,
-07283,
-07284,
-07285,
-07286,
-07287,
-07288,
-07289,
-0732,
-07353,
-07355,
-07357,
-07412,
-07413,
-07414,
-07415,
-07416,
-07432,
-07433,
-07434,
-07435,
-07442,
-07443,
-07444,
-07445,
-07448,
-07471,
-07472,
-07473,
-07474,
-07475,
-07476,
-07477,
-07478,
-07479,
-07480,
-07482,
-07483,
-07484,
-07485,
-07486,
-07487,
-07488,
-07489,
-07562,
-07563,
-07564,
-07565,
-07566,
-07582,
-07583,
-07584,
-07585,
-07586,
-07587,
-07588,
-07612,
-07613,
-07614,
-07615,
-07616,
-07617,
-07618,
-07619,
-07662,
-07663,
-07664,
-07665,
-07666,
-07667,
-07672,
-07673,
-07674,
-07675,
-07676,
-07682,
-07683,
-07684,
-07711,
-07712,
-07713,
-07714,
-07716,
-07717,
-07718,
-07719,
-07722,
-07723,
-07724,
-07727,
-07728,
-07729,
-07732,
-07733,
-07734,
-07735,
-07736,
-07742,
-07743,
-07744,
-07745,
-07746,
-07747,
-07748,
-07750,
-07751,
-07752,
-07753,
-07754,
-07755,
-07757,
-07758,
-07759,
-07762,
-07763,
-07764,
-07765,
-07766,
-07767,
-07941,
-07942,
-07943,
-07944,
-07945,
-07946,
-07947,
-07948,
-07949,
-07952,
-07953,
-07954,
-07955,
-07956}
-\clist_const:Nn \c_phone_AT_sondervorwahlen_clist {0501,
-0502,
-0503,
-0504,
-0505,
-0506,
-0507,
-0508,
-0509,
-0517,
-057,
-059,
-0650,
-0651,
-0652,
-0653,
-0655,
-0657,
-0659,
-0660,
-0661,
-0663,
-0664,
-0665,
-0666,
-0667,
-0668,
-0669,
-067,
-068,
-069,
-0711,
-0718,
-0720,
-0780,
-0800,
-0804,
-0810,
-0820,
-0821,
-0828,
-089,
-0900,
-0901,
-0930,
-0931,
-0939}
diff --git a/macros/latex/contrib/phonenumbers/tex/phn-DE_Vorwahlen.tex b/macros/latex/contrib/phonenumbers/tex/phn-DE_Vorwahlen.tex
deleted file mode 100644
index 9f188e30d3..0000000000
--- a/macros/latex/contrib/phonenumbers/tex/phn-DE_Vorwahlen.tex
+++ /dev/null
@@ -1,5279 +0,0 @@
-% phonenumbers package: German area codes
-% Datum: 20. August 2021
-\clist_const:Nn \c_phone_DE_ortsvorwahlen_clist {0201,
-0202,
-0203,
-02041,
-02043,
-02045,
-02051,
-02052,
-02053,
-02054,
-02056,
-02058,
-02064,
-02065,
-02066,
-0208,
-0209,
-02102,
-02103,
-02104,
-0211,
-0212,
-02129,
-02131,
-02132,
-02133,
-02137,
-0214,
-02150,
-02151,
-02152,
-02153,
-02154,
-02156,
-02157,
-02158,
-02159,
-02161,
-02162,
-02163,
-02164,
-02165,
-02166,
-02171,
-02173,
-02174,
-02175,
-02181,
-02182,
-02183,
-02191,
-02192,
-02193,
-02195,
-02196,
-02202,
-02203,
-02204,
-02205,
-02206,
-02207,
-02208,
-0221,
-02222,
-02223,
-02224,
-02225,
-02226,
-02227,
-02228,
-02232,
-02233,
-02234,
-02235,
-02236,
-02237,
-02238,
-02241,
-02242,
-02243,
-02244,
-02245,
-02246,
-02247,
-02248,
-02251,
-02252,
-02253,
-02254,
-02255,
-02256,
-02257,
-02261,
-02262,
-02263,
-02264,
-02265,
-02266,
-02267,
-02268,
-02269,
-02271,
-02272,
-02273,
-02274,
-02275,
-0228,
-02291,
-02292,
-02293,
-02294,
-02295,
-02296,
-02297,
-02301,
-02302,
-02303,
-02304,
-02305,
-02306,
-02307,
-02308,
-02309,
-0231,
-02323,
-02324,
-02325,
-02327,
-02330,
-02331,
-02332,
-02333,
-02334,
-02335,
-02336,
-02337,
-02338,
-02339,
-0234,
-02351,
-02352,
-02353,
-02354,
-02355,
-02357,
-02358,
-02359,
-02360,
-02361,
-02362,
-02363,
-02364,
-02365,
-02366,
-02367,
-02368,
-02369,
-02371,
-02372,
-02373,
-02374,
-02375,
-02377,
-02378,
-02379,
-02381,
-02382,
-02383,
-02384,
-02385,
-02387,
-02388,
-02389,
-02391,
-02392,
-02393,
-02394,
-02395,
-02401,
-02402,
-02403,
-02404,
-02405,
-02406,
-02407,
-02408,
-02409,
-0241,
-02421,
-02422,
-02423,
-02424,
-02425,
-02426,
-02427,
-02428,
-02429,
-02431,
-02432,
-02433,
-02434,
-02435,
-02436,
-02440,
-02441,
-02443,
-02444,
-02445,
-02446,
-02447,
-02448,
-02449,
-02451,
-02452,
-02453,
-02454,
-02455,
-02456,
-02461,
-02462,
-02463,
-02464,
-02465,
-02471,
-02472,
-02473,
-02474,
-02482,
-02484,
-02485,
-02486,
-02501,
-02502,
-02504,
-02505,
-02506,
-02507,
-02508,
-02509,
-0251,
-02520,
-02521,
-02522,
-02523,
-02524,
-02525,
-02526,
-02527,
-02528,
-02529,
-02532,
-02533,
-02534,
-02535,
-02536,
-02538,
-02541,
-02542,
-02543,
-02545,
-02546,
-02547,
-02548,
-02551,
-02552,
-02553,
-02554,
-02555,
-02556,
-02557,
-02558,
-02561,
-02562,
-02563,
-02564,
-02565,
-02566,
-02567,
-02568,
-02571,
-02572,
-02573,
-02574,
-02575,
-02581,
-02582,
-02583,
-02584,
-02585,
-02586,
-02587,
-02588,
-02590,
-02591,
-02592,
-02593,
-02594,
-02595,
-02596,
-02597,
-02598,
-02599,
-02601,
-02602,
-02603,
-02604,
-02605,
-02606,
-02607,
-02608,
-0261,
-02620,
-02621,
-02622,
-02623,
-02624,
-02625,
-02626,
-02627,
-02628,
-02630,
-02631,
-02632,
-02633,
-02634,
-02635,
-02636,
-02637,
-02638,
-02639,
-02641,
-02642,
-02643,
-02644,
-02645,
-02646,
-02647,
-02651,
-02652,
-02653,
-02654,
-02655,
-02656,
-02657,
-02661,
-02662,
-02663,
-02664,
-02666,
-02667,
-02671,
-02672,
-02673,
-02674,
-02675,
-02676,
-02677,
-02678,
-02680,
-02681,
-02682,
-02683,
-02684,
-02685,
-02686,
-02687,
-02688,
-02689,
-02691,
-02692,
-02693,
-02694,
-02695,
-02696,
-02697,
-0271,
-02721,
-02722,
-02723,
-02724,
-02725,
-02732,
-02733,
-02734,
-02735,
-02736,
-02737,
-02738,
-02739,
-02741,
-02742,
-02743,
-02744,
-02745,
-02747,
-02750,
-02751,
-02752,
-02753,
-02754,
-02755,
-02758,
-02759,
-02761,
-02762,
-02763,
-02764,
-02770,
-02771,
-02772,
-02773,
-02774,
-02775,
-02776,
-02777,
-02778,
-02779,
-02801,
-02802,
-02803,
-02804,
-0281,
-02821,
-02822,
-02823,
-02824,
-02825,
-02826,
-02827,
-02828,
-02831,
-02832,
-02833,
-02834,
-02835,
-02836,
-02837,
-02838,
-02839,
-02841,
-02842,
-02843,
-02844,
-02845,
-02850,
-02851,
-02852,
-02853,
-02855,
-02856,
-02857,
-02858,
-02859,
-02861,
-02862,
-02863,
-02864,
-02865,
-02866,
-02867,
-02871,
-02872,
-02873,
-02874,
-02902,
-02903,
-02904,
-02905,
-0291,
-02921,
-02922,
-02923,
-02924,
-02925,
-02927,
-02928,
-02931,
-02932,
-02933,
-02934,
-02935,
-02937,
-02938,
-02941,
-02942,
-02943,
-02944,
-02945,
-02947,
-02948,
-02951,
-02952,
-02953,
-02954,
-02955,
-02957,
-02958,
-02961,
-02962,
-02963,
-02964,
-02971,
-02972,
-02973,
-02974,
-02975,
-02977,
-02981,
-02982,
-02983,
-02984,
-02985,
-02991,
-02992,
-02993,
-02994,
-030,
-03301,
-03302,
-03303,
-03304,
-033051,
-033053,
-033054,
-033055,
-033056,
-03306,
-03307,
-033080,
-033082,
-033083,
-033084,
-033085,
-033086,
-033087,
-033088,
-033089,
-033093,
-033094,
-0331,
-033200,
-033201,
-033202,
-033203,
-033204,
-033205,
-033206,
-033207,
-033208,
-033209,
-03321,
-03322,
-033230,
-033231,
-033232,
-033233,
-033234,
-033235,
-033237,
-033238,
-033239,
-03327,
-03328,
-03329,
-03331,
-03332,
-033331,
-033332,
-033333,
-033334,
-033335,
-033336,
-033337,
-033338,
-03334,
-03335,
-033361,
-033362,
-033363,
-033364,
-033365,
-033366,
-033367,
-033368,
-033369,
-03337,
-03338,
-033393,
-033394,
-033395,
-033396,
-033397,
-033398,
-03341,
-03342,
-033432,
-033433,
-033434,
-033435,
-033436,
-033437,
-033438,
-033439,
-03344,
-033451,
-033452,
-033454,
-033456,
-033457,
-033458,
-03346,
-033470,
-033472,
-033473,
-033474,
-033475,
-033476,
-033477,
-033478,
-033479,
-0335,
-033601,
-033602,
-033603,
-033604,
-033605,
-033606,
-033607,
-033608,
-033609,
-03361,
-03362,
-033631,
-033632,
-033633,
-033634,
-033635,
-033636,
-033637,
-033638,
-03364,
-033652,
-033653,
-033654,
-033655,
-033656,
-033657,
-03366,
-033671,
-033672,
-033673,
-033674,
-033675,
-033676,
-033677,
-033678,
-033679,
-033701,
-033702,
-033703,
-033704,
-033708,
-03371,
-03372,
-033731,
-033732,
-033733,
-033734,
-033741,
-033742,
-033743,
-033744,
-033745,
-033746,
-033747,
-033748,
-03375,
-033760,
-033762,
-033763,
-033764,
-033765,
-033766,
-033767,
-033768,
-033769,
-03377,
-03378,
-03379,
-03381,
-03382,
-033830,
-033831,
-033832,
-033833,
-033834,
-033835,
-033836,
-033837,
-033838,
-033839,
-033841,
-033843,
-033844,
-033845,
-033846,
-033847,
-033848,
-033849,
-03385,
-03386,
-033870,
-033872,
-033873,
-033874,
-033875,
-033876,
-033877,
-033878,
-03391,
-033920,
-033921,
-033922,
-033923,
-033924,
-033925,
-033926,
-033928,
-033929,
-033931,
-033932,
-033933,
-03394,
-03395,
-033962,
-033963,
-033964,
-033965,
-033966,
-033967,
-033968,
-033969,
-033970,
-033971,
-033972,
-033973,
-033974,
-033975,
-033976,
-033977,
-033978,
-033979,
-033981,
-033982,
-033983,
-033984,
-033986,
-033989,
-0340,
-0341,
-034202,
-034203,
-034204,
-034205,
-034206,
-034207,
-034208,
-03421,
-034221,
-034222,
-034223,
-034224,
-03423,
-034241,
-034242,
-034243,
-034244,
-03425,
-034261,
-034262,
-034263,
-034291,
-034292,
-034293,
-034294,
-034295,
-034296,
-034297,
-034298,
-034299,
-03431,
-034321,
-034322,
-034324,
-034325,
-034327,
-034328,
-03433,
-034341,
-034342,
-034343,
-034344,
-034345,
-034346,
-034347,
-034348,
-03435,
-034361,
-034362,
-034363,
-034364,
-03437,
-034381,
-034382,
-034383,
-034384,
-034385,
-034386,
-03441,
-034422,
-034423,
-034424,
-034425,
-034426,
-03443,
-034441,
-034443,
-034444,
-034445,
-034446,
-03445,
-034461,
-034462,
-034463,
-034464,
-034465,
-034466,
-034467,
-03447,
-03448,
-034491,
-034492,
-034493,
-034494,
-034495,
-034496,
-034497,
-034498,
-0345,
-034600,
-034601,
-034602,
-034603,
-034604,
-034605,
-034606,
-034607,
-034609,
-03461,
-03462,
-034632,
-034633,
-034635,
-034636,
-034637,
-034638,
-034639,
-03464,
-034651,
-034652,
-034653,
-034654,
-034656,
-034658,
-034659,
-03466,
-034671,
-034672,
-034673,
-034691,
-034692,
-03471,
-034721,
-034722,
-03473,
-034741,
-034742,
-034743,
-034745,
-034746,
-03475,
-03476,
-034771,
-034772,
-034773,
-034774,
-034775,
-034776,
-034779,
-034781,
-034782,
-034783,
-034785,
-034901,
-034903,
-034904,
-034905,
-034906,
-034907,
-034909,
-03491,
-034920,
-034921,
-034922,
-034923,
-034924,
-034925,
-034926,
-034927,
-034928,
-034929,
-03493,
-03494,
-034953,
-034954,
-034955,
-034956,
-03496,
-034973,
-034975,
-034976,
-034977,
-034978,
-034979,
-03501,
-035020,
-035021,
-035022,
-035023,
-035024,
-035025,
-035026,
-035027,
-035028,
-035032,
-035033,
-03504,
-035052,
-035053,
-035054,
-035055,
-035056,
-035057,
-035058,
-0351,
-035200,
-035201,
-035202,
-035203,
-035204,
-035205,
-035206,
-035207,
-035208,
-035209,
-03521,
-03522,
-03523,
-035240,
-035241,
-035242,
-035243,
-035244,
-035245,
-035246,
-035247,
-035248,
-035249,
-03525,
-035263,
-035264,
-035265,
-035266,
-035267,
-035268,
-03528,
-03529,
-03531,
-035322,
-035323,
-035324,
-035325,
-035326,
-035327,
-035329,
-03533,
-035341,
-035342,
-035343,
-03535,
-035361,
-035362,
-035363,
-035364,
-035365,
-03537,
-035383,
-035384,
-035385,
-035386,
-035387,
-035388,
-035389,
-03541,
-03542,
-035433,
-035434,
-035435,
-035436,
-035439,
-03544,
-035451,
-035452,
-035453,
-035454,
-035455,
-035456,
-03546,
-035471,
-035472,
-035473,
-035474,
-035475,
-035476,
-035477,
-035478,
-0355,
-035600,
-035601,
-035602,
-035603,
-035604,
-035605,
-035606,
-035607,
-035608,
-035609,
-03561,
-03562,
-03563,
-03564,
-035691,
-035692,
-035693,
-035694,
-035695,
-035696,
-035697,
-035698,
-03571,
-035722,
-035723,
-035724,
-035725,
-035726,
-035727,
-035728,
-03573,
-03574,
-035751,
-035752,
-035753,
-035754,
-035755,
-035756,
-03576,
-035771,
-035772,
-035773,
-035774,
-035775,
-03578,
-035792,
-035793,
-035795,
-035796,
-035797,
-03581,
-035820,
-035822,
-035823,
-035825,
-035826,
-035827,
-035828,
-035829,
-03583,
-035841,
-035842,
-035843,
-035844,
-03585,
-03586,
-035872,
-035873,
-035874,
-035875,
-035876,
-035877,
-03588,
-035891,
-035892,
-035893,
-035894,
-035895,
-03591,
-03592,
-035930,
-035931,
-035932,
-035933,
-035934,
-035935,
-035936,
-035937,
-035938,
-035939,
-03594,
-035951,
-035952,
-035953,
-035954,
-035955,
-03596,
-035971,
-035973,
-035974,
-035975,
-03601,
-036020,
-036021,
-036022,
-036023,
-036024,
-036025,
-036026,
-036027,
-036028,
-036029,
-03603,
-036041,
-036042,
-036043,
-03605,
-03606,
-036071,
-036072,
-036074,
-036075,
-036076,
-036077,
-036081,
-036082,
-036083,
-036084,
-036085,
-036087,
-0361,
-036200,
-036201,
-036202,
-036203,
-036204,
-036205,
-036206,
-036207,
-036208,
-036209,
-03621,
-03622,
-03623,
-03624,
-036252,
-036253,
-036254,
-036255,
-036256,
-036257,
-036258,
-036259,
-03628,
-03629,
-03631,
-03632,
-036330,
-036331,
-036332,
-036333,
-036334,
-036335,
-036336,
-036337,
-036338,
-03634,
-03635,
-03636,
-036370,
-036371,
-036372,
-036373,
-036374,
-036375,
-036376,
-036377,
-036378,
-036379,
-03641,
-036421,
-036422,
-036423,
-036424,
-036425,
-036426,
-036427,
-036428,
-03643,
-03644,
-036450,
-036451,
-036452,
-036453,
-036454,
-036458,
-036459,
-036461,
-036462,
-036463,
-036464,
-036465,
-03647,
-036481,
-036482,
-036483,
-036484,
-0365,
-036601,
-036602,
-036603,
-036604,
-036605,
-036606,
-036607,
-036608,
-03661,
-036621,
-036622,
-036623,
-036624,
-036625,
-036626,
-036628,
-03663,
-036640,
-036642,
-036643,
-036644,
-036645,
-036646,
-036647,
-036648,
-036649,
-036651,
-036652,
-036653,
-036691,
-036692,
-036693,
-036694,
-036695,
-036701,
-036702,
-036703,
-036704,
-036705,
-03671,
-03672,
-036730,
-036731,
-036732,
-036733,
-036734,
-036735,
-036736,
-036737,
-036738,
-036739,
-036741,
-036742,
-036743,
-036744,
-03675,
-036761,
-036762,
-036764,
-036766,
-03677,
-036781,
-036782,
-036783,
-036784,
-036785,
-03679,
-03681,
-03682,
-03683,
-036840,
-036841,
-036842,
-036843,
-036844,
-036845,
-036846,
-036847,
-036848,
-036849,
-03685,
-03686,
-036870,
-036871,
-036873,
-036874,
-036875,
-036878,
-03691,
-036920,
-036921,
-036922,
-036923,
-036924,
-036925,
-036926,
-036927,
-036928,
-036929,
-03693,
-036940,
-036941,
-036943,
-036944,
-036945,
-036946,
-036947,
-036948,
-036949,
-03695,
-036961,
-036962,
-036963,
-036964,
-036965,
-036966,
-036967,
-036968,
-036969,
-0371,
-037200,
-037202,
-037203,
-037204,
-037206,
-037207,
-037208,
-037209,
-03721,
-03722,
-03723,
-03724,
-03725,
-03726,
-03727,
-037291,
-037292,
-037293,
-037294,
-037295,
-037296,
-037297,
-037298,
-03731,
-037320,
-037321,
-037322,
-037323,
-037324,
-037325,
-037326,
-037327,
-037328,
-037329,
-03733,
-037341,
-037342,
-037343,
-037344,
-037346,
-037347,
-037348,
-037349,
-03735,
-037360,
-037361,
-037362,
-037363,
-037364,
-037365,
-037366,
-037367,
-037368,
-037369,
-03737,
-037381,
-037382,
-037383,
-037384,
-03741,
-037421,
-037422,
-037423,
-037430,
-037431,
-037432,
-037433,
-037434,
-037435,
-037436,
-037437,
-037438,
-037439,
-03744,
-03745,
-037462,
-037463,
-037464,
-037465,
-037467,
-037468,
-0375,
-037600,
-037601,
-037602,
-037603,
-037604,
-037605,
-037606,
-037607,
-037608,
-037609,
-03761,
-03762,
-03763,
-03764,
-03765,
-03771,
-03772,
-03773,
-03774,
-037752,
-037754,
-037755,
-037756,
-037757,
-0381,
-038201,
-038202,
-038203,
-038204,
-038205,
-038206,
-038207,
-038208,
-038209,
-03821,
-038220,
-038221,
-038222,
-038223,
-038224,
-038225,
-038226,
-038227,
-038228,
-038229,
-038231,
-038232,
-038233,
-038234,
-038292,
-038293,
-038294,
-038295,
-038296,
-038297,
-038300,
-038301,
-038302,
-038303,
-038304,
-038305,
-038306,
-038307,
-038308,
-038309,
-03831,
-038320,
-038321,
-038322,
-038323,
-038324,
-038325,
-038326,
-038327,
-038328,
-038331,
-038332,
-038333,
-038334,
-03834,
-038351,
-038352,
-038353,
-038354,
-038355,
-038356,
-03836,
-038370,
-038371,
-038372,
-038373,
-038374,
-038375,
-038376,
-038377,
-038378,
-038379,
-03838,
-038391,
-038392,
-038393,
-03841,
-038422,
-038423,
-038424,
-038425,
-038426,
-038427,
-038428,
-038429,
-03843,
-03844,
-038450,
-038451,
-038452,
-038453,
-038454,
-038455,
-038456,
-038457,
-038458,
-038459,
-038461,
-038462,
-038464,
-038466,
-03847,
-038481,
-038482,
-038483,
-038484,
-038485,
-038486,
-038488,
-0385,
-03860,
-03861,
-03863,
-03865,
-03866,
-03867,
-03868,
-03869,
-03871,
-038720,
-038721,
-038722,
-038723,
-038724,
-038725,
-038726,
-038727,
-038728,
-038729,
-038731,
-038732,
-038733,
-038735,
-038736,
-038737,
-038738,
-03874,
-038750,
-038751,
-038752,
-038753,
-038754,
-038755,
-038756,
-038757,
-038758,
-038759,
-03876,
-03877,
-038780,
-038781,
-038782,
-038783,
-038784,
-038785,
-038787,
-038788,
-038789,
-038791,
-038792,
-038793,
-038794,
-038796,
-038797,
-03881,
-038821,
-038822,
-038823,
-038824,
-038825,
-038826,
-038827,
-038828,
-03883,
-038841,
-038842,
-038843,
-038844,
-038845,
-038847,
-038848,
-038850,
-038851,
-038852,
-038853,
-038854,
-038855,
-038856,
-038858,
-038859,
-03886,
-038871,
-038872,
-038873,
-038874,
-038875,
-038876,
-039000,
-039001,
-039002,
-039003,
-039004,
-039005,
-039006,
-039007,
-039008,
-039009,
-03901,
-03902,
-039030,
-039031,
-039032,
-039033,
-039034,
-039035,
-039036,
-039037,
-039038,
-039039,
-03904,
-039050,
-039051,
-039052,
-039053,
-039054,
-039055,
-039056,
-039057,
-039058,
-039059,
-039061,
-039062,
-03907,
-039080,
-039081,
-039082,
-039083,
-039084,
-039085,
-039086,
-039087,
-039088,
-039089,
-03909,
-0391,
-039200,
-039201,
-039202,
-039203,
-039204,
-039205,
-039206,
-039207,
-039208,
-039209,
-03921,
-039221,
-039222,
-039223,
-039224,
-039225,
-039226,
-03923,
-039241,
-039242,
-039243,
-039244,
-039245,
-039246,
-039247,
-039248,
-03925,
-039262,
-039263,
-039264,
-039265,
-039266,
-039267,
-039268,
-03928,
-039291,
-039292,
-039293,
-039294,
-039295,
-039296,
-039297,
-039298,
-03931,
-039320,
-039321,
-039322,
-039323,
-039324,
-039325,
-039327,
-039328,
-039329,
-03933,
-039341,
-039342,
-039343,
-039344,
-039345,
-039346,
-039347,
-039348,
-039349,
-03935,
-039361,
-039362,
-039363,
-039364,
-039365,
-039366,
-03937,
-039382,
-039383,
-039384,
-039386,
-039387,
-039388,
-039389,
-039390,
-039391,
-039392,
-039393,
-039394,
-039395,
-039396,
-039397,
-039398,
-039399,
-039400,
-039401,
-039402,
-039403,
-039404,
-039405,
-039406,
-039407,
-039408,
-039409,
-03941,
-039421,
-039422,
-039423,
-039424,
-039425,
-039426,
-039427,
-039428,
-03943,
-03944,
-039451,
-039452,
-039453,
-039454,
-039455,
-039456,
-039457,
-039458,
-039459,
-03946,
-03947,
-039481,
-039482,
-039483,
-039484,
-039485,
-039487,
-039488,
-039489,
-03949,
-0395,
-039600,
-039601,
-039602,
-039603,
-039604,
-039605,
-039606,
-039607,
-039608,
-03961,
-03962,
-03963,
-03964,
-03965,
-03966,
-03967,
-03968,
-03969,
-03971,
-039721,
-039722,
-039723,
-039724,
-039726,
-039727,
-039728,
-03973,
-039740,
-039741,
-039742,
-039743,
-039744,
-039745,
-039746,
-039747,
-039748,
-039749,
-039751,
-039752,
-039753,
-039754,
-03976,
-039771,
-039772,
-039773,
-039774,
-039775,
-039776,
-039777,
-039778,
-039779,
-03981,
-039820,
-039821,
-039822,
-039823,
-039824,
-039825,
-039826,
-039827,
-039828,
-039829,
-039831,
-039832,
-039833,
-03984,
-039851,
-039852,
-039853,
-039854,
-039855,
-039856,
-039857,
-039858,
-039859,
-039861,
-039862,
-039863,
-03987,
-039881,
-039882,
-039883,
-039884,
-039885,
-039886,
-039887,
-039888,
-039889,
-03991,
-039921,
-039922,
-039923,
-039924,
-039925,
-039926,
-039927,
-039928,
-039929,
-039931,
-039932,
-039933,
-039934,
-03994,
-039951,
-039952,
-039953,
-039954,
-039955,
-039956,
-039957,
-039959,
-03996,
-039971,
-039972,
-039973,
-039975,
-039976,
-039977,
-039978,
-03998,
-039991,
-039992,
-039993,
-039994,
-039995,
-039996,
-039997,
-039998,
-039999,
-040,
-04101,
-04102,
-04103,
-04104,
-04105,
-04106,
-04107,
-04108,
-04109,
-04120,
-04121,
-04122,
-04123,
-04124,
-04125,
-04126,
-04127,
-04128,
-04129,
-04131,
-04132,
-04133,
-04134,
-04135,
-04136,
-04137,
-04138,
-04139,
-04140,
-04141,
-04142,
-04143,
-04144,
-04146,
-04148,
-04149,
-04151,
-04152,
-04153,
-04154,
-04155,
-04156,
-04158,
-04159,
-04161,
-04162,
-04163,
-04164,
-04165,
-04166,
-04167,
-04168,
-04169,
-04171,
-04172,
-04173,
-04174,
-04175,
-04176,
-04177,
-04178,
-04179,
-04180,
-04181,
-04182,
-04183,
-04184,
-04185,
-04186,
-04187,
-04188,
-04189,
-04191,
-04192,
-04193,
-04194,
-04195,
-04202,
-04203,
-04204,
-04205,
-04206,
-04207,
-04208,
-04209,
-0421,
-04221,
-04222,
-04223,
-04224,
-04230,
-04231,
-04232,
-04233,
-04234,
-04235,
-04236,
-04237,
-04238,
-04239,
-04240,
-04241,
-04242,
-04243,
-04244,
-04245,
-04246,
-04247,
-04248,
-04249,
-04251,
-04252,
-04253,
-04254,
-04255,
-04256,
-04257,
-04258,
-04260,
-04261,
-04262,
-04263,
-04264,
-04265,
-04266,
-04267,
-04268,
-04269,
-04271,
-04272,
-04273,
-04274,
-04275,
-04276,
-04277,
-04281,
-04282,
-04283,
-04284,
-04285,
-04286,
-04287,
-04288,
-04289,
-04292,
-04293,
-04294,
-04295,
-04296,
-04297,
-04298,
-04302,
-04303,
-04305,
-04307,
-04308,
-0431,
-04320,
-04321,
-04322,
-04323,
-04324,
-04326,
-04327,
-04328,
-04329,
-04330,
-04331,
-04332,
-04333,
-04334,
-04335,
-04336,
-04337,
-04338,
-04339,
-04340,
-04342,
-04343,
-04344,
-04346,
-04347,
-04348,
-04349,
-04351,
-04352,
-04353,
-04354,
-04355,
-04356,
-04357,
-04358,
-04361,
-04362,
-04363,
-04364,
-04365,
-04366,
-04367,
-04371,
-04372,
-04381,
-04382,
-04383,
-04384,
-04385,
-04392,
-04393,
-04394,
-04401,
-04402,
-04403,
-04404,
-04405,
-04406,
-04407,
-04408,
-04409,
-0441,
-04421,
-04422,
-04423,
-04425,
-04426,
-04431,
-04432,
-04433,
-04434,
-04435,
-04441,
-04442,
-04443,
-04444,
-04445,
-04446,
-04447,
-04451,
-04452,
-04453,
-04454,
-04455,
-04456,
-04458,
-04461,
-04462,
-04463,
-04464,
-04465,
-04466,
-04467,
-04468,
-04469,
-04471,
-04472,
-04473,
-04474,
-04475,
-04477,
-04478,
-04479,
-04480,
-04481,
-04482,
-04483,
-04484,
-04485,
-04486,
-04487,
-04488,
-04489,
-04491,
-04492,
-04493,
-04494,
-04495,
-04496,
-04497,
-04498,
-04499,
-04501,
-04502,
-04503,
-04504,
-04505,
-04506,
-04508,
-04509,
-0451,
-04521,
-04522,
-04523,
-04524,
-04525,
-04526,
-04527,
-04528,
-04529,
-04531,
-04532,
-04533,
-04534,
-04535,
-04536,
-04537,
-04539,
-04541,
-04542,
-04543,
-04544,
-04545,
-04546,
-04547,
-04550,
-04551,
-04552,
-04553,
-04554,
-04555,
-04556,
-04557,
-04558,
-04559,
-04561,
-04562,
-04563,
-04564,
-04602,
-04603,
-04604,
-04605,
-04606,
-04607,
-04608,
-04609,
-0461,
-04621,
-04622,
-04623,
-04624,
-04625,
-04626,
-04627,
-04630,
-04631,
-04632,
-04633,
-04634,
-04635,
-04636,
-04637,
-04638,
-04639,
-04641,
-04642,
-04643,
-04644,
-04646,
-04651,
-04661,
-04662,
-04663,
-04664,
-04665,
-04666,
-04667,
-04668,
-04671,
-04672,
-04673,
-04674,
-04681,
-04682,
-04683,
-04684,
-04702,
-04703,
-04704,
-04705,
-04706,
-04707,
-04708,
-0471,
-04721,
-04722,
-04723,
-04724,
-04725,
-04731,
-04732,
-04733,
-04734,
-04735,
-04736,
-04737,
-04740,
-04741,
-04742,
-04743,
-04744,
-04745,
-04746,
-04747,
-04748,
-04749,
-04751,
-04752,
-04753,
-04754,
-04755,
-04756,
-04757,
-04758,
-04761,
-04762,
-04763,
-04764,
-04765,
-04766,
-04767,
-04768,
-04769,
-04770,
-04771,
-04772,
-04773,
-04774,
-04775,
-04776,
-04777,
-04778,
-04779,
-04791,
-04792,
-04793,
-04794,
-04795,
-04796,
-04802,
-04803,
-04804,
-04805,
-04806,
-0481,
-04821,
-04822,
-04823,
-04824,
-04825,
-04826,
-04827,
-04828,
-04829,
-04830,
-04832,
-04833,
-04834,
-04835,
-04836,
-04837,
-04838,
-04839,
-04841,
-04842,
-04843,
-04844,
-04845,
-04846,
-04847,
-04848,
-04849,
-04851,
-04852,
-04853,
-04854,
-04855,
-04856,
-04857,
-04858,
-04859,
-04861,
-04862,
-04863,
-04864,
-04865,
-04871,
-04872,
-04873,
-04874,
-04875,
-04876,
-04877,
-04881,
-04882,
-04883,
-04884,
-04885,
-04892,
-04893,
-04902,
-04903,
-0491,
-04920,
-04921,
-04922,
-04923,
-04924,
-04925,
-04926,
-04927,
-04928,
-04929,
-04931,
-04932,
-04933,
-04934,
-04935,
-04936,
-04938,
-04939,
-04941,
-04942,
-04943,
-04944,
-04945,
-04946,
-04947,
-04948,
-04950,
-04951,
-04952,
-04953,
-04954,
-04955,
-04956,
-04957,
-04958,
-04959,
-04961,
-04962,
-04963,
-04964,
-04965,
-04966,
-04967,
-04968,
-04971,
-04972,
-04973,
-04974,
-04975,
-04976,
-04977,
-05021,
-05022,
-05023,
-05024,
-05025,
-05026,
-05027,
-05028,
-05031,
-05032,
-05033,
-05034,
-05035,
-05036,
-05037,
-05041,
-05042,
-05043,
-05044,
-05045,
-05051,
-05052,
-05053,
-05054,
-05055,
-05056,
-05060,
-05062,
-05063,
-05064,
-05065,
-05066,
-05067,
-05068,
-05069,
-05071,
-05072,
-05073,
-05074,
-05082,
-05083,
-05084,
-05085,
-05086,
-05101,
-05102,
-05103,
-05105,
-05108,
-05109,
-0511,
-05121,
-05123,
-05126,
-05127,
-05128,
-05129,
-05130,
-05131,
-05132,
-05135,
-05136,
-05137,
-05138,
-05139,
-05141,
-05142,
-05143,
-05144,
-05145,
-05146,
-05147,
-05148,
-05149,
-05151,
-05152,
-05153,
-05154,
-05155,
-05156,
-05157,
-05158,
-05159,
-05161,
-05162,
-05163,
-05164,
-05165,
-05166,
-05167,
-05168,
-05171,
-05172,
-05173,
-05174,
-05175,
-05176,
-05177,
-05181,
-05182,
-05183,
-05184,
-05185,
-05186,
-05187,
-05190,
-05191,
-05192,
-05193,
-05194,
-05195,
-05196,
-05197,
-05198,
-05199,
-05201,
-05202,
-05203,
-05204,
-05205,
-05206,
-05207,
-05208,
-05209,
-0521,
-05221,
-05222,
-05223,
-05224,
-05225,
-05226,
-05228,
-05231,
-05232,
-05233,
-05234,
-05235,
-05236,
-05237,
-05238,
-05241,
-05242,
-05244,
-05245,
-05246,
-05247,
-05248,
-05250,
-05251,
-05252,
-05253,
-05254,
-05255,
-05257,
-05258,
-05259,
-05261,
-05262,
-05263,
-05264,
-05265,
-05266,
-05271,
-05272,
-05273,
-05274,
-05275,
-05276,
-05277,
-05278,
-05281,
-05282,
-05283,
-05284,
-05285,
-05286,
-05292,
-05293,
-05294,
-05295,
-05300,
-05301,
-05302,
-05303,
-05304,
-05305,
-05306,
-05307,
-05308,
-05309,
-0531,
-05320,
-05321,
-05322,
-05323,
-05324,
-05325,
-05326,
-05327,
-05328,
-05329,
-05331,
-05332,
-05333,
-05334,
-05335,
-05336,
-05337,
-05339,
-05341,
-05344,
-05345,
-05346,
-05347,
-05351,
-05352,
-05353,
-05354,
-05355,
-05356,
-05357,
-05358,
-05361,
-05362,
-05363,
-05364,
-05365,
-05366,
-05367,
-05368,
-05371,
-05372,
-05373,
-05374,
-05375,
-05376,
-05377,
-05378,
-05379,
-05381,
-05382,
-05383,
-05384,
-05401,
-05402,
-05403,
-05404,
-05405,
-05406,
-05407,
-05409,
-0541,
-05421,
-05422,
-05423,
-05424,
-05425,
-05426,
-05427,
-05428,
-05429,
-05431,
-05432,
-05433,
-05434,
-05435,
-05436,
-05437,
-05438,
-05439,
-05441,
-05442,
-05443,
-05444,
-05445,
-05446,
-05447,
-05448,
-05451,
-05452,
-05453,
-05454,
-05455,
-05456,
-05457,
-05458,
-05459,
-05461,
-05462,
-05464,
-05465,
-05466,
-05467,
-05468,
-05471,
-05472,
-05473,
-05474,
-05475,
-05476,
-05481,
-05482,
-05483,
-05484,
-05485,
-05491,
-05492,
-05493,
-05494,
-05495,
-05502,
-05503,
-05504,
-05505,
-05506,
-05507,
-05508,
-05509,
-0551,
-05520,
-05521,
-05522,
-05523,
-05524,
-05525,
-05527,
-05528,
-05529,
-05531,
-05532,
-05533,
-05534,
-05535,
-05536,
-05541,
-05542,
-05543,
-05544,
-05545,
-05546,
-05551,
-05552,
-05553,
-05554,
-05555,
-05556,
-05561,
-05562,
-05563,
-05564,
-05565,
-05571,
-05572,
-05573,
-05574,
-05582,
-05583,
-05584,
-05585,
-05586,
-05592,
-05593,
-05594,
-05601,
-05602,
-05603,
-05604,
-05605,
-05606,
-05607,
-05608,
-05609,
-0561,
-05621,
-05622,
-05623,
-05624,
-05625,
-05626,
-05631,
-05632,
-05633,
-05634,
-05635,
-05636,
-05641,
-05642,
-05643,
-05644,
-05645,
-05646,
-05647,
-05648,
-05650,
-05651,
-05652,
-05653,
-05654,
-05655,
-05656,
-05657,
-05658,
-05659,
-05661,
-05662,
-05663,
-05664,
-05665,
-05671,
-05672,
-05673,
-05674,
-05675,
-05676,
-05677,
-05681,
-05682,
-05683,
-05684,
-05685,
-05686,
-05691,
-05692,
-05693,
-05694,
-05695,
-05696,
-05702,
-05703,
-05704,
-05705,
-05706,
-05707,
-0571,
-05721,
-05722,
-05723,
-05724,
-05725,
-05726,
-05731,
-05732,
-05733,
-05734,
-05741,
-05742,
-05743,
-05744,
-05745,
-05746,
-05751,
-05752,
-05753,
-05754,
-05755,
-05761,
-05763,
-05764,
-05765,
-05766,
-05767,
-05768,
-05769,
-05771,
-05772,
-05773,
-05774,
-05775,
-05776,
-05777,
-05802,
-05803,
-05804,
-05805,
-05806,
-05807,
-05808,
-0581,
-05820,
-05821,
-05822,
-05823,
-05824,
-05825,
-05826,
-05827,
-05828,
-05829,
-05831,
-05832,
-05833,
-05834,
-05835,
-05836,
-05837,
-05838,
-05839,
-05840,
-05841,
-05842,
-05843,
-05844,
-05845,
-05846,
-05848,
-05849,
-05850,
-05851,
-05852,
-05853,
-05854,
-05855,
-05857,
-05858,
-05859,
-05861,
-05862,
-05863,
-05864,
-05865,
-05872,
-05873,
-05874,
-05875,
-05882,
-05883,
-05901,
-05902,
-05903,
-05904,
-05905,
-05906,
-05907,
-05908,
-05909,
-0591,
-05921,
-05922,
-05923,
-05924,
-05925,
-05926,
-05931,
-05932,
-05933,
-05934,
-05935,
-05936,
-05937,
-05939,
-05941,
-05942,
-05943,
-05944,
-05945,
-05946,
-05947,
-05948,
-05951,
-05952,
-05953,
-05954,
-05955,
-05956,
-05957,
-05961,
-05962,
-05963,
-05964,
-05965,
-05966,
-05971,
-05973,
-05975,
-05976,
-05977,
-05978,
-06002,
-06003,
-06004,
-06007,
-06008,
-06020,
-06021,
-06022,
-06023,
-06024,
-06026,
-06027,
-06028,
-06029,
-06031,
-06032,
-06033,
-06034,
-06035,
-06036,
-06039,
-06041,
-06042,
-06043,
-06044,
-06045,
-06046,
-06047,
-06048,
-06049,
-06050,
-06051,
-06052,
-06053,
-06054,
-06055,
-06056,
-06057,
-06058,
-06059,
-06061,
-06062,
-06063,
-06066,
-06068,
-06071,
-06073,
-06074,
-06078,
-06081,
-06082,
-06083,
-06084,
-06085,
-06086,
-06087,
-06092,
-06093,
-06094,
-06095,
-06096,
-06101,
-06102,
-06103,
-06104,
-06105,
-06106,
-06107,
-06108,
-06109,
-0611,
-06120,
-06122,
-06123,
-06124,
-06126,
-06127,
-06128,
-06129,
-06130,
-06131,
-06132,
-06133,
-06134,
-06135,
-06136,
-06138,
-06139,
-06142,
-06144,
-06145,
-06146,
-06147,
-06150,
-06151,
-06152,
-06154,
-06155,
-06157,
-06158,
-06159,
-06161,
-06162,
-06163,
-06164,
-06165,
-06166,
-06167,
-06171,
-06172,
-06173,
-06174,
-06175,
-06181,
-06182,
-06183,
-06184,
-06185,
-06186,
-06187,
-06188,
-06190,
-06192,
-06195,
-06196,
-06198,
-06201,
-06202,
-06203,
-06204,
-06205,
-06206,
-06207,
-06209,
-0621,
-06220,
-06221,
-06222,
-06223,
-06224,
-06226,
-06227,
-06228,
-06229,
-06231,
-06232,
-06233,
-06234,
-06235,
-06236,
-06237,
-06238,
-06239,
-06241,
-06242,
-06243,
-06244,
-06245,
-06246,
-06247,
-06249,
-06251,
-06252,
-06253,
-06254,
-06255,
-06256,
-06257,
-06258,
-06261,
-06262,
-06263,
-06264,
-06265,
-06266,
-06267,
-06268,
-06269,
-06271,
-06272,
-06274,
-06275,
-06276,
-06281,
-06282,
-06283,
-06284,
-06285,
-06286,
-06287,
-06291,
-06292,
-06293,
-06294,
-06295,
-06296,
-06297,
-06298,
-06301,
-06302,
-06303,
-06304,
-06305,
-06306,
-06307,
-06308,
-0631,
-06321,
-06322,
-06323,
-06324,
-06325,
-06326,
-06327,
-06328,
-06329,
-06331,
-06332,
-06333,
-06334,
-06335,
-06336,
-06337,
-06338,
-06339,
-06340,
-06341,
-06342,
-06343,
-06344,
-06345,
-06346,
-06347,
-06348,
-06349,
-06351,
-06352,
-06353,
-06355,
-06356,
-06357,
-06358,
-06359,
-06361,
-06362,
-06363,
-06364,
-06371,
-06372,
-06373,
-06374,
-06375,
-06381,
-06382,
-06383,
-06384,
-06385,
-06386,
-06387,
-06391,
-06392,
-06393,
-06394,
-06395,
-06396,
-06397,
-06398,
-06400,
-06401,
-06402,
-06403,
-06404,
-06405,
-06406,
-06407,
-06408,
-06409,
-0641,
-06420,
-06421,
-06422,
-06423,
-06424,
-06425,
-06426,
-06427,
-06428,
-06429,
-06430,
-06431,
-06432,
-06433,
-06434,
-06435,
-06436,
-06438,
-06439,
-06440,
-06441,
-06442,
-06443,
-06444,
-06445,
-06446,
-06447,
-06449,
-06451,
-06452,
-06453,
-06454,
-06455,
-06456,
-06457,
-06458,
-06461,
-06462,
-06464,
-06465,
-06466,
-06467,
-06468,
-06471,
-06472,
-06473,
-06474,
-06475,
-06476,
-06477,
-06478,
-06479,
-06482,
-06483,
-06484,
-06485,
-06486,
-06500,
-06501,
-06502,
-06503,
-06504,
-06505,
-06506,
-06507,
-06508,
-06509,
-0651,
-06522,
-06523,
-06524,
-06525,
-06526,
-06527,
-06531,
-06532,
-06533,
-06534,
-06535,
-06536,
-06541,
-06542,
-06543,
-06544,
-06545,
-06550,
-06551,
-06552,
-06553,
-06554,
-06555,
-06556,
-06557,
-06558,
-06559,
-06561,
-06562,
-06563,
-06564,
-06565,
-06566,
-06567,
-06568,
-06569,
-06571,
-06572,
-06573,
-06574,
-06575,
-06578,
-06580,
-06581,
-06582,
-06583,
-06584,
-06585,
-06586,
-06587,
-06588,
-06589,
-06591,
-06592,
-06593,
-06594,
-06595,
-06596,
-06597,
-06599,
-0661,
-06620,
-06621,
-06622,
-06623,
-06624,
-06625,
-06626,
-06627,
-06628,
-06629,
-06630,
-06631,
-06633,
-06634,
-06635,
-06636,
-06637,
-06638,
-06639,
-06641,
-06642,
-06643,
-06644,
-06645,
-06646,
-06647,
-06648,
-06650,
-06651,
-06652,
-06653,
-06654,
-06655,
-06656,
-06657,
-06658,
-06659,
-06660,
-06661,
-06663,
-06664,
-06665,
-06666,
-06667,
-06668,
-06669,
-06670,
-06672,
-06673,
-06674,
-06675,
-06676,
-06677,
-06678,
-06681,
-06682,
-06683,
-06684,
-06691,
-06692,
-06693,
-06694,
-06695,
-06696,
-06697,
-06698,
-06701,
-06703,
-06704,
-06706,
-06707,
-06708,
-06709,
-0671,
-06721,
-06722,
-06723,
-06724,
-06725,
-06726,
-06727,
-06728,
-06731,
-06732,
-06733,
-06734,
-06735,
-06736,
-06737,
-06741,
-06742,
-06743,
-06744,
-06745,
-06746,
-06747,
-06751,
-06752,
-06753,
-06754,
-06755,
-06756,
-06757,
-06758,
-06761,
-06762,
-06763,
-06764,
-06765,
-06766,
-06771,
-06772,
-06773,
-06774,
-06775,
-06776,
-06781,
-06782,
-06783,
-06784,
-06785,
-06786,
-06787,
-06788,
-06789,
-06802,
-06803,
-06804,
-06805,
-06806,
-06809,
-0681,
-06821,
-06824,
-06825,
-06826,
-06827,
-06831,
-06832,
-06833,
-06834,
-06835,
-06836,
-06837,
-06838,
-06841,
-06842,
-06843,
-06844,
-06848,
-06849,
-06851,
-06852,
-06853,
-06854,
-06855,
-06856,
-06857,
-06858,
-06861,
-06864,
-06865,
-06866,
-06867,
-06868,
-06869,
-06871,
-06872,
-06873,
-06874,
-06875,
-06876,
-06881,
-06887,
-06888,
-06893,
-06894,
-06897,
-06898,
-069,
-07021,
-07022,
-07023,
-07024,
-07025,
-07026,
-07031,
-07032,
-07033,
-07034,
-07041,
-07042,
-07043,
-07044,
-07045,
-07046,
-07051,
-07052,
-07053,
-07054,
-07055,
-07056,
-07062,
-07063,
-07066,
-07071,
-07072,
-07073,
-07081,
-07082,
-07083,
-07084,
-07085,
-0711,
-07121,
-07122,
-07123,
-07124,
-07125,
-07126,
-07127,
-07128,
-07129,
-07130,
-07131,
-07132,
-07133,
-07134,
-07135,
-07136,
-07138,
-07139,
-07141,
-07142,
-07143,
-07144,
-07145,
-07146,
-07147,
-07148,
-07150,
-07151,
-07152,
-07153,
-07154,
-07156,
-07157,
-07158,
-07159,
-07161,
-07162,
-07163,
-07164,
-07165,
-07166,
-07171,
-07172,
-07173,
-07174,
-07175,
-07176,
-07181,
-07182,
-07183,
-07184,
-07191,
-07192,
-07193,
-07194,
-07195,
-07202,
-07203,
-07204,
-0721,
-07220,
-07221,
-07222,
-07223,
-07224,
-07225,
-07226,
-07227,
-07228,
-07229,
-07231,
-07232,
-07233,
-07234,
-07235,
-07236,
-07237,
-07240,
-07242,
-07243,
-07244,
-07245,
-07246,
-07247,
-07248,
-07249,
-07250,
-07251,
-07252,
-07253,
-07254,
-07255,
-07256,
-07257,
-07258,
-07259,
-07260,
-07261,
-07262,
-07263,
-07264,
-07265,
-07266,
-07267,
-07268,
-07269,
-07271,
-07272,
-07273,
-07274,
-07275,
-07276,
-07277,
-07300,
-07302,
-07303,
-07304,
-07305,
-07306,
-07307,
-07308,
-07309,
-0731,
-07321,
-07322,
-07323,
-07324,
-07325,
-07326,
-07327,
-07328,
-07329,
-07331,
-07332,
-07333,
-07334,
-07335,
-07336,
-07337,
-07340,
-07343,
-07344,
-07345,
-07346,
-07347,
-07348,
-07351,
-07352,
-07353,
-07354,
-07355,
-07356,
-07357,
-07358,
-07361,
-07362,
-07363,
-07364,
-07365,
-07366,
-07367,
-07371,
-07373,
-07374,
-07375,
-07376,
-07381,
-07382,
-07383,
-07384,
-07385,
-07386,
-07387,
-07388,
-07389,
-07391,
-07392,
-07393,
-07394,
-07395,
-07402,
-07403,
-07404,
-0741,
-07420,
-07422,
-07423,
-07424,
-07425,
-07426,
-07427,
-07428,
-07429,
-07431,
-07432,
-07433,
-07434,
-07435,
-07436,
-07440,
-07441,
-07442,
-07443,
-07444,
-07445,
-07446,
-07447,
-07448,
-07449,
-07451,
-07452,
-07453,
-07454,
-07455,
-07456,
-07457,
-07458,
-07459,
-07461,
-07462,
-07463,
-07464,
-07465,
-07466,
-07467,
-07471,
-07472,
-07473,
-07474,
-07475,
-07476,
-07477,
-07478,
-07482,
-07483,
-07484,
-07485,
-07486,
-07502,
-07503,
-07504,
-07505,
-07506,
-0751,
-07520,
-07522,
-07524,
-07525,
-07527,
-07528,
-07529,
-07531,
-07532,
-07533,
-07534,
-07541,
-07542,
-07543,
-07544,
-07545,
-07546,
-07551,
-07552,
-07553,
-07554,
-07555,
-07556,
-07557,
-07558,
-07561,
-07562,
-07563,
-07564,
-07565,
-07566,
-07567,
-07568,
-07569,
-07570,
-07571,
-07572,
-07573,
-07574,
-07575,
-07576,
-07577,
-07578,
-07579,
-07581,
-07582,
-07583,
-07584,
-07585,
-07586,
-07587,
-07602,
-0761,
-07620,
-07621,
-07622,
-07623,
-07624,
-07625,
-07626,
-07627,
-07628,
-07629,
-07631,
-07632,
-07633,
-07634,
-07635,
-07636,
-07641,
-07642,
-07643,
-07644,
-07645,
-07646,
-07651,
-07652,
-07653,
-07654,
-07655,
-07656,
-07657,
-07660,
-07661,
-07662,
-07663,
-07664,
-07665,
-07666,
-07667,
-07668,
-07669,
-07671,
-07672,
-07673,
-07674,
-07675,
-07676,
-07681,
-07682,
-07683,
-07684,
-07685,
-07702,
-07703,
-07704,
-07705,
-07706,
-07707,
-07708,
-07709,
-0771,
-07720,
-07721,
-07722,
-07723,
-07724,
-07725,
-07726,
-07727,
-07728,
-07729,
-07731,
-07732,
-07733,
-07734,
-07735,
-07736,
-07738,
-07739,
-07741,
-07742,
-07743,
-07744,
-07745,
-07746,
-07747,
-07748,
-07751,
-07753,
-07754,
-07755,
-07761,
-07762,
-07763,
-07764,
-07765,
-07771,
-07773,
-07774,
-07775,
-07777,
-07802,
-07803,
-07804,
-07805,
-07806,
-07807,
-07808,
-0781,
-07821,
-07822,
-07823,
-07824,
-07825,
-07826,
-07831,
-07832,
-07833,
-07834,
-07835,
-07836,
-07837,
-07838,
-07839,
-07841,
-07842,
-07843,
-07844,
-07851,
-07852,
-07853,
-07854,
-07903,
-07904,
-07905,
-07906,
-07907,
-0791,
-07930,
-07931,
-07932,
-07933,
-07934,
-07935,
-07936,
-07937,
-07938,
-07939,
-07940,
-07941,
-07942,
-07943,
-07944,
-07945,
-07946,
-07947,
-07948,
-07949,
-07950,
-07951,
-07952,
-07953,
-07954,
-07955,
-07957,
-07958,
-07959,
-07961,
-07962,
-07963,
-07964,
-07965,
-07966,
-07967,
-07971,
-07972,
-07973,
-07974,
-07975,
-07976,
-07977,
-08020,
-08021,
-08022,
-08023,
-08024,
-08025,
-08026,
-08027,
-08028,
-08029,
-08031,
-08032,
-08033,
-08034,
-08035,
-08036,
-08038,
-08039,
-08041,
-08042,
-08043,
-08045,
-08046,
-08051,
-08052,
-08053,
-08054,
-08055,
-08056,
-08057,
-08061,
-08062,
-08063,
-08064,
-08065,
-08066,
-08067,
-08071,
-08072,
-08073,
-08074,
-08075,
-08076,
-08081,
-08082,
-08083,
-08084,
-08085,
-08086,
-08091,
-08092,
-08093,
-08094,
-08095,
-08102,
-08104,
-08105,
-08106,
-0811,
-08121,
-08122,
-08123,
-08124,
-08131,
-08133,
-08134,
-08135,
-08136,
-08137,
-08138,
-08139,
-08141,
-08142,
-08143,
-08144,
-08145,
-08146,
-08151,
-08152,
-08153,
-08157,
-08158,
-08161,
-08165,
-08166,
-08167,
-08168,
-08170,
-08171,
-08176,
-08177,
-08178,
-08179,
-08191,
-08192,
-08193,
-08194,
-08195,
-08196,
-08202,
-08203,
-08204,
-08205,
-08206,
-08207,
-08208,
-0821,
-08221,
-08222,
-08223,
-08224,
-08225,
-08226,
-08230,
-08231,
-08232,
-08233,
-08234,
-08236,
-08237,
-08238,
-08239,
-08241,
-08243,
-08245,
-08246,
-08247,
-08248,
-08249,
-08250,
-08251,
-08252,
-08253,
-08254,
-08257,
-08258,
-08259,
-08261,
-08262,
-08263,
-08265,
-08266,
-08267,
-08268,
-08269,
-08271,
-08272,
-08273,
-08274,
-08276,
-08281,
-08282,
-08283,
-08284,
-08285,
-08291,
-08292,
-08293,
-08294,
-08295,
-08296,
-08302,
-08303,
-08304,
-08306,
-0831,
-08320,
-08321,
-08322,
-08323,
-08324,
-08325,
-08326,
-08327,
-08328,
-08330,
-08331,
-08332,
-08333,
-08334,
-08335,
-08336,
-08337,
-08338,
-08340,
-08341,
-08342,
-08343,
-08344,
-08345,
-08346,
-08347,
-08348,
-08349,
-08361,
-08362,
-08363,
-08364,
-08365,
-08366,
-08367,
-08368,
-08369,
-08370,
-08372,
-08373,
-08374,
-08375,
-08376,
-08377,
-08378,
-08379,
-08380,
-08381,
-08382,
-08383,
-08384,
-08385,
-08386,
-08387,
-08388,
-08389,
-08392,
-08393,
-08394,
-08395,
-08402,
-08403,
-08404,
-08405,
-08406,
-08407,
-0841,
-08421,
-08422,
-08423,
-08424,
-08426,
-08427,
-08431,
-08432,
-08433,
-08434,
-08435,
-08441,
-08442,
-08443,
-08444,
-08445,
-08446,
-08450,
-08452,
-08453,
-08454,
-08456,
-08457,
-08458,
-08459,
-08460,
-08461,
-08462,
-08463,
-08464,
-08465,
-08466,
-08467,
-08468,
-08469,
-08501,
-08502,
-08503,
-08504,
-08505,
-08506,
-08507,
-08509,
-0851,
-08531,
-08532,
-08533,
-08534,
-08535,
-08536,
-08537,
-08538,
-08541,
-08542,
-08543,
-08544,
-08545,
-08546,
-08547,
-08548,
-08549,
-08550,
-08551,
-08552,
-08553,
-08554,
-08555,
-08556,
-08557,
-08558,
-08561,
-08562,
-08563,
-08564,
-08565,
-08571,
-08572,
-08573,
-08574,
-08581,
-08582,
-08583,
-08584,
-08585,
-08586,
-08591,
-08592,
-08593,
-0861,
-08621,
-08622,
-08623,
-08624,
-08628,
-08629,
-08630,
-08631,
-08633,
-08634,
-08635,
-08636,
-08637,
-08638,
-08639,
-08640,
-08641,
-08642,
-08649,
-08650,
-08651,
-08652,
-08654,
-08656,
-08657,
-08661,
-08662,
-08663,
-08664,
-08665,
-08666,
-08667,
-08669,
-08670,
-08671,
-08677,
-08678,
-08679,
-08681,
-08682,
-08683,
-08684,
-08685,
-08686,
-08687,
-08702,
-08703,
-08704,
-08705,
-08706,
-08707,
-08708,
-08709,
-0871,
-08721,
-08722,
-08723,
-08724,
-08725,
-08726,
-08727,
-08728,
-08731,
-08732,
-08733,
-08734,
-08735,
-08741,
-08742,
-08743,
-08744,
-08745,
-08751,
-08752,
-08753,
-08754,
-08756,
-08761,
-08762,
-08764,
-08765,
-08766,
-08771,
-08772,
-08773,
-08774,
-08781,
-08782,
-08783,
-08784,
-08785,
-08801,
-08802,
-08803,
-08805,
-08806,
-08807,
-08808,
-08809,
-0881,
-08821,
-08822,
-08823,
-08824,
-08825,
-08841,
-08845,
-08846,
-08847,
-08851,
-08856,
-08857,
-08858,
-08860,
-08861,
-08862,
-08867,
-08868,
-08869,
-089,
-0906,
-09070,
-09071,
-09072,
-09073,
-09074,
-09075,
-09076,
-09077,
-09078,
-09080,
-09081,
-09082,
-09083,
-09084,
-09085,
-09086,
-09087,
-09088,
-09089,
-09090,
-09091,
-09092,
-09093,
-09094,
-09097,
-09099,
-09101,
-09102,
-09103,
-09104,
-09105,
-09106,
-09107,
-0911,
-09120,
-09122,
-09123,
-09126,
-09127,
-09128,
-09129,
-09131,
-09132,
-09133,
-09134,
-09135,
-09141,
-09142,
-09143,
-09144,
-09145,
-09146,
-09147,
-09148,
-09149,
-09151,
-09152,
-09153,
-09154,
-09155,
-09156,
-09157,
-09158,
-09161,
-09162,
-09163,
-09164,
-09165,
-09166,
-09167,
-09170,
-09171,
-09172,
-09173,
-09174,
-09175,
-09176,
-09177,
-09178,
-09179,
-09180,
-09181,
-09182,
-09183,
-09184,
-09185,
-09186,
-09187,
-09188,
-09189,
-09190,
-09191,
-09192,
-09193,
-09194,
-09195,
-09196,
-09197,
-09198,
-09199,
-09201,
-09202,
-09203,
-09204,
-09205,
-09206,
-09207,
-09208,
-09209,
-0921,
-09220,
-09221,
-09222,
-09223,
-09225,
-09227,
-09228,
-09229,
-09231,
-09232,
-09233,
-09234,
-09235,
-09236,
-09238,
-09241,
-09242,
-09243,
-09244,
-09245,
-09246,
-09251,
-09252,
-09253,
-09254,
-09255,
-09256,
-09257,
-09260,
-09261,
-09262,
-09263,
-09264,
-09265,
-09266,
-09267,
-09268,
-09269,
-09270,
-09271,
-09272,
-09273,
-09274,
-09275,
-09276,
-09277,
-09278,
-09279,
-09280,
-09281,
-09282,
-09283,
-09284,
-09285,
-09286,
-09287,
-09288,
-09289,
-09292,
-09293,
-09294,
-09295,
-09302,
-09303,
-09305,
-09306,
-09307,
-0931,
-09321,
-09323,
-09324,
-09325,
-09326,
-09331,
-09332,
-09333,
-09334,
-09335,
-09336,
-09337,
-09338,
-09339,
-09340,
-09341,
-09342,
-09343,
-09344,
-09345,
-09346,
-09347,
-09348,
-09349,
-09350,
-09351,
-09352,
-09353,
-09354,
-09355,
-09356,
-09357,
-09358,
-09359,
-09360,
-09363,
-09364,
-09365,
-09366,
-09367,
-09369,
-09371,
-09372,
-09373,
-09374,
-09375,
-09376,
-09377,
-09378,
-09381,
-09382,
-09383,
-09384,
-09385,
-09386,
-09391,
-09392,
-09393,
-09394,
-09395,
-09396,
-09397,
-09398,
-09401,
-09402,
-09403,
-09404,
-09405,
-09406,
-09407,
-09408,
-09409,
-0941,
-09420,
-09421,
-09422,
-09423,
-09424,
-09426,
-09427,
-09428,
-09429,
-09431,
-09433,
-09434,
-09435,
-09436,
-09438,
-09439,
-09441,
-09442,
-09443,
-09444,
-09445,
-09446,
-09447,
-09448,
-09451,
-09452,
-09453,
-09454,
-09461,
-09462,
-09463,
-09464,
-09465,
-09466,
-09467,
-09468,
-09469,
-09471,
-09472,
-09473,
-09474,
-09480,
-09481,
-09482,
-09484,
-09491,
-09492,
-09493,
-09495,
-09497,
-09498,
-09499,
-09502,
-09503,
-09504,
-09505,
-0951,
-09521,
-09522,
-09523,
-09524,
-09525,
-09526,
-09527,
-09528,
-09529,
-09531,
-09532,
-09533,
-09534,
-09535,
-09536,
-09542,
-09543,
-09544,
-09545,
-09546,
-09547,
-09548,
-09549,
-09551,
-09552,
-09553,
-09554,
-09555,
-09556,
-09560,
-09561,
-09562,
-09563,
-09564,
-09565,
-09566,
-09567,
-09568,
-09569,
-09571,
-09572,
-09573,
-09574,
-09575,
-09576,
-09602,
-09603,
-09604,
-09605,
-09606,
-09607,
-09608,
-0961,
-09621,
-09622,
-09624,
-09625,
-09626,
-09627,
-09628,
-09631,
-09632,
-09633,
-09634,
-09635,
-09636,
-09637,
-09638,
-09639,
-09641,
-09642,
-09643,
-09644,
-09645,
-09646,
-09647,
-09648,
-09651,
-09652,
-09653,
-09654,
-09655,
-09656,
-09657,
-09658,
-09659,
-09661,
-09662,
-09663,
-09664,
-09665,
-09666,
-09671,
-09672,
-09673,
-09674,
-09675,
-09676,
-09677,
-09681,
-09682,
-09683,
-09701,
-09704,
-09708,
-0971,
-09720,
-09721,
-09722,
-09723,
-09724,
-09725,
-09726,
-09727,
-09728,
-09729,
-09732,
-09733,
-09734,
-09735,
-09736,
-09737,
-09738,
-09741,
-09742,
-09744,
-09745,
-09746,
-09747,
-09748,
-09749,
-09761,
-09762,
-09763,
-09764,
-09765,
-09766,
-09771,
-09772,
-09773,
-09774,
-09775,
-09776,
-09777,
-09778,
-09779,
-09802,
-09803,
-09804,
-09805,
-0981,
-09820,
-09822,
-09823,
-09824,
-09825,
-09826,
-09827,
-09828,
-09829,
-09831,
-09832,
-09833,
-09834,
-09835,
-09836,
-09837,
-09841,
-09842,
-09843,
-09844,
-09845,
-09846,
-09847,
-09848,
-09851,
-09852,
-09853,
-09854,
-09855,
-09856,
-09857,
-09861,
-09865,
-09867,
-09868,
-09869,
-09871,
-09872,
-09873,
-09874,
-09875,
-09876,
-09901,
-09903,
-09904,
-09905,
-09906,
-09907,
-09908,
-0991,
-09920,
-09921,
-09922,
-09923,
-09924,
-09925,
-09926,
-09927,
-09928,
-09929,
-09931,
-09932,
-09933,
-09935,
-09936,
-09937,
-09938,
-09941,
-09942,
-09943,
-09944,
-09945,
-09946,
-09947,
-09948,
-09951,
-09952,
-09953,
-09954,
-09955,
-09956,
-09961,
-09962,
-09963,
-09964,
-09965,
-09966,
-09971,
-09972,
-09973,
-09974,
-09975,
-09976,
-09977,
-09978}
-\clist_const:Nn \c_phone_DE_sondervorwahlen_clist {01371,
-01372,
-01373,
-01374,
-01375,
-01376,
-01377,
-01378,
-01379,
-015019,
-01511,
-01512,
-01514,
-01515,
-01516,
-01517,
-01520,
-01521,
-01522,
-01523,
-01525,
-01526,
-01529,
-015566,
-015630,
-015678,
-01570,
-01573,
-01575,
-01577,
-01578,
-01579,
-015888,
-01590,
-0160,
-0162,
-0163,
-0164,
-0168,
-0169,
-0170,
-0171,
-0172,
-0173,
-0174,
-0175,
-0176,
-0177,
-0178,
-0179,
-01801,
-01802,
-01803,
-01804,
-01805,
-01806,
-01807,
-0181,
-0182,
-0183,
-0184,
-0185,
-0186,
-0187,
-0188,
-0189,
-0191,
-0192,
-0193,
-0194,
-032,
-0700,
-0800,
-09001,
-09003,
-09005,
-09009}
diff --git a/macros/latex/contrib/phonenumbers/tex/phn-FR_Ortsnamen.tex b/macros/latex/contrib/phonenumbers/tex/phn-FR_Ortsnamen.tex
deleted file mode 100644
index eda23d4664..0000000000
--- a/macros/latex/contrib/phonenumbers/tex/phn-FR_Ortsnamen.tex
+++ /dev/null
@@ -1,48 +0,0 @@
-% phonenumbers package: French place names
-% Datum: 20. August 2021
-\tl_const:cn {c_phone_FR_ortsname_01_tl} {\^{I}le-de-France}
-\tl_const:cn {c_phone_FR_ortsname_02_tl} {Nord-ouest}
-\tl_const:cn {c_phone_FR_ortsname_0262_tl} {La~R\a'{e}union}
-\tl_const:cn {c_phone_FR_ortsname_026200_tl} {Terres~australes~et~antarctiques~fran\c{c}aises}
-\tl_const:cn {c_phone_FR_ortsname_0263_tl} {La~R\a'{e}union}
-\tl_const:cn {c_phone_FR_ortsname_0269_tl} {Mayotte}
-\tl_const:cn {c_phone_FR_ortsname_03_tl} {Nord-est}
-\tl_const:cn {c_phone_FR_ortsname_04_tl} {Sud-est}
-\tl_const:cn {c_phone_FR_ortsname_05_tl} {Sud-ouest}
-\tl_const:cn {c_phone_FR_ortsname_0508_tl} {Saint-Pierre-et-Miquelon}
-\tl_const:cn {c_phone_FR_ortsname_0590_tl} {Guadeloupe,~Saint-Barth\a'{e}lemy,~Saint-Martin}
-\tl_const:cn {c_phone_FR_ortsname_0594_tl} {Guyane}
-\tl_const:cn {c_phone_FR_ortsname_0596_tl} {Martinique}
-\tl_const:cn {c_phone_FR_ortsname_06_tl} {T\a'{e}l\a'{e}phone~mobile}
-\tl_const:cn {c_phone_FR_ortsname_0639_tl} {T\a'{e}l\a'{e}phone~mobile~(Mayotte)}
-\tl_const:cn {c_phone_FR_ortsname_0690_tl} {T\a'{e}l\a'{e}phone~mobile~(Guadeloupe)}
-\tl_const:cn {c_phone_FR_ortsname_0691_tl} {T\a'{e}l\a'{e}phone~mobile~(Guadeloupe)}
-\tl_const:cn {c_phone_FR_ortsname_0692_tl} {T\a'{e}l\a'{e}phone~mobile~(La~R\a'{e}union)}
-\tl_const:cn {c_phone_FR_ortsname_0693_tl} {T\a'{e}l\a'{e}phone~mobile~(La~R\a'{e}union)}
-\tl_const:cn {c_phone_FR_ortsname_0694_tl} {T\a'{e}l\a'{e}phone~mobile~(Guyane)}
-\tl_const:cn {c_phone_FR_ortsname_0696_tl} {T\a'{e}l\a'{e}phone~mobile~(Martinique)}
-\tl_const:cn {c_phone_FR_ortsname_0697_tl} {T\a'{e}l\a'{e}phone~mobile~(Martinique)}
-\tl_const:cn {c_phone_FR_ortsname_07_tl} {T\a'{e}l\a'{e}phone~mobile}
-\tl_const:cn {c_phone_FR_ortsname_0700_tl} {Communication~machine~\a`{a}~machine}
-\tl_const:cn {c_phone_FR_ortsname_07005_tl} {Communication~machine~\a`{a}~machine~(Guadeloupe)}
-\tl_const:cn {c_phone_FR_ortsname_07006_tl} {Communication~machine~\a`{a}~machine~(Guyane)}
-\tl_const:cn {c_phone_FR_ortsname_07007_tl} {Communication~machine~\a`{a}~machine~(Martinique)}
-\tl_const:cn {c_phone_FR_ortsname_07008_tl} {Communication~machine~\a`{a}~machine~(Mayotte)}
-\tl_const:cn {c_phone_FR_ortsname_07009_tl} {Communication~machine~\a`{a}~machine~(La~R\a'{e}union)}
-\tl_const:cn {c_phone_FR_ortsname_08_tl} {Service~\a`{a}~valeur~ajout\a'{e}e}
-\tl_const:cn {c_phone_FR_ortsname_09_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP}
-\tl_const:cn {c_phone_FR_ortsname_09475_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)}
-\tl_const:cn {c_phone_FR_ortsname_09476_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)}
-\tl_const:cn {c_phone_FR_ortsname_09477_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)}
-\tl_const:cn {c_phone_FR_ortsname_09478_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Mayotte)}
-\tl_const:cn {c_phone_FR_ortsname_09479_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)}
-\tl_const:cn {c_phone_FR_ortsname_09760_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)}
-\tl_const:cn {c_phone_FR_ortsname_09761_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)}
-\tl_const:cn {c_phone_FR_ortsname_09762_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)}
-\tl_const:cn {c_phone_FR_ortsname_09763_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)}
-\tl_const:cn {c_phone_FR_ortsname_09764_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)}
-\tl_const:cn {c_phone_FR_ortsname_09765_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)}
-\tl_const:cn {c_phone_FR_ortsname_09766_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)}
-\tl_const:cn {c_phone_FR_ortsname_09767_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)}
-\tl_const:cn {c_phone_FR_ortsname_09768_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)}
-\tl_const:cn {c_phone_FR_ortsname_09769_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)}
diff --git a/macros/latex/contrib/phonenumbers/tex/phn-FR_Vorwahlen.tex b/macros/latex/contrib/phonenumbers/tex/phn-FR_Vorwahlen.tex
deleted file mode 100644
index 965c0259b0..0000000000
--- a/macros/latex/contrib/phonenumbers/tex/phn-FR_Vorwahlen.tex
+++ /dev/null
@@ -1,48 +0,0 @@
-% phonenumbers package: French area codes
-% Datum: 20. August 2021
-\clist_const:Nn \c_phone_FR_ortsvorwahlen_clist {01,
-02,
-0262,
-026200,
-0263,
-0269,
-03,
-04,
-05,
-0508,
-0590,
-0594,
-0596}
-\clist_const:Nn \c_phone_FR_sondervorwahlen_clist {06,
-0639,
-0690,
-0691,
-0692,
-0693,
-0694,
-0696,
-0697,
-07,
-0700,
-07005,
-07006,
-07007,
-07008,
-07009,
-08,
-09,
-09475,
-09476,
-09477,
-09478,
-09479,
-09760,
-09761,
-09762,
-09763,
-09764,
-09765,
-09766,
-09767,
-09768,
-09769}
diff --git a/macros/latex/contrib/phonenumbers/tex/phn-Landeskennzahlen.tex b/macros/latex/contrib/phonenumbers/tex/phn-Landeskennzahlen.tex
deleted file mode 100644
index 8ffe8e88bd..0000000000
--- a/macros/latex/contrib/phonenumbers/tex/phn-Landeskennzahlen.tex
+++ /dev/null
@@ -1,219 +0,0 @@
-% phonenumbers package: country codes
-% Datum: 5. März 2017
-\clist_const:Nn \c_phone_landeskennzahlen_clist {1,
-20,
-211,
-212,
-213,
-216,
-218,
-220,
-221,
-222,
-223,
-224,
-225,
-226,
-227,
-228,
-229,
-230,
-231,
-232,
-233,
-234,
-235,
-236,
-237,
-238,
-239,
-240,
-241,
-242,
-243,
-244,
-245,
-246,
-247,
-248,
-249,
-250,
-251,
-252,
-253,
-254,
-255,
-256,
-257,
-258,
-260,
-261,
-262,
-263,
-264,
-265,
-266,
-267,
-268,
-269,
-27,
-290,
-291,
-297,
-298,
-299,
-30,
-31,
-32,
-33,
-34,
-350,
-351,
-352,
-353,
-354,
-355,
-356,
-357,
-358,
-359,
-36,
-370,
-371,
-372,
-373,
-374,
-375,
-376,
-377,
-378,
-379,
-380,
-381,
-382,
-383,
-385,
-386,
-387,
-388,
-389,
-39,
-40,
-41,
-420,
-421,
-423,
-43,
-44,
-45,
-46,
-47,
-48,
-49,
-500,
-501,
-502,
-503,
-504,
-505,
-506,
-507,
-508,
-509,
-51,
-52,
-53,
-54,
-55,
-56,
-57,
-58,
-590,
-591,
-592,
-593,
-594,
-595,
-596,
-597,
-598,
-599,
-60,
-61,
-62,
-63,
-64,
-65,
-66,
-670,
-672,
-673,
-674,
-675,
-676,
-677,
-678,
-679,
-680,
-681,
-682,
-683,
-685,
-686,
-687,
-688,
-689,
-690,
-691,
-692,
-7,
-800,
-808,
-81,
-82,
-84,
-850,
-852,
-853,
-855,
-856,
-86,
-870,
-878,
-880,
-881,
-882,
-883,
-886,
-888,
-90,
-91,
-92,
-93,
-94,
-95,
-960,
-961,
-962,
-963,
-964,
-965,
-966,
-967,
-968,
-971,
-972,
-973,
-974,
-975,
-976,
-977,
-979,
-98,
-991,
-992,
-993,
-994,
-995,
-996,
-998}
diff --git a/macros/latex/contrib/phonenumbers/tex/phn-UK_Vorwahlen.tex b/macros/latex/contrib/phonenumbers/tex/phn-UK_Vorwahlen.tex
deleted file mode 100644
index 62a5ab2422..0000000000
--- a/macros/latex/contrib/phonenumbers/tex/phn-UK_Vorwahlen.tex
+++ /dev/null
@@ -1,1321 +0,0 @@
-% phonenumbers package: British area codes
-% Datum: 20. August 2021
-\clist_const:Nn \c_phone_UK_ortsvorwahlen_clist {0113,
-0114,
-0115,
-0116,
-0117,
-0118,
-01200,
-01202,
-01204,
-01205,
-01206,
-01207,
-01208,
-01209,
-0121,
-01223,
-01224,
-01225,
-01226,
-01227,
-01228,
-01229,
-01233,
-01234,
-01235,
-01236,
-01237,
-01239,
-01241,
-01242,
-01243,
-01244,
-01245,
-01246,
-01248,
-01249,
-01250,
-01252,
-01253,
-01254,
-01255,
-01256,
-01257,
-01258,
-01259,
-01260,
-01261,
-01262,
-01263,
-01264,
-01267,
-01268,
-01269,
-01270,
-01271,
-01273,
-01274,
-01275,
-01276,
-01277,
-01278,
-01279,
-01280,
-01282,
-01283,
-01284,
-01285,
-01286,
-01287,
-01288,
-01289,
-01290,
-01291,
-01292,
-01293,
-01294,
-01295,
-01296,
-01297,
-01298,
-01299,
-01300,
-01301,
-01302,
-01303,
-01304,
-01305,
-01306,
-01307,
-01308,
-01309,
-0131,
-01320,
-01322,
-01323,
-01324,
-01325,
-01326,
-01327,
-01328,
-01329,
-01330,
-01332,
-01333,
-01334,
-01335,
-01337,
-01339,
-01340,
-01341,
-01342,
-01343,
-01344,
-01346,
-01347,
-01348,
-01349,
-01350,
-01352,
-01353,
-01354,
-01355,
-01356,
-01357,
-01358,
-01359,
-01360,
-01361,
-01362,
-01363,
-01364,
-01366,
-01367,
-01368,
-01369,
-01371,
-01372,
-01373,
-01375,
-01376,
-01377,
-01379,
-01380,
-01381,
-01382,
-01383,
-01384,
-01386,
-01387,
-013873,
-01388,
-01389,
-01392,
-01394,
-01395,
-01397,
-01398,
-01400,
-01403,
-01404,
-01405,
-01406,
-01407,
-01408,
-01409,
-0141,
-01420,
-01422,
-01423,
-01424,
-01425,
-01427,
-01428,
-01429,
-01430,
-01431,
-01432,
-01433,
-01434,
-01435,
-01436,
-01437,
-01438,
-01439,
-01440,
-01442,
-01443,
-01444,
-01445,
-01446,
-01449,
-01450,
-01451,
-01452,
-01453,
-01454,
-01455,
-01456,
-01457,
-01458,
-01460,
-01461,
-01462,
-01463,
-01464,
-01465,
-01466,
-01467,
-01469,
-01470,
-01471,
-01472,
-01473,
-01474,
-01475,
-01476,
-01477,
-01478,
-01479,
-01480,
-01481,
-01482,
-01483,
-01484,
-01485,
-01487,
-01488,
-01489,
-01490,
-01491,
-01492,
-01493,
-01494,
-01495,
-01496,
-01497,
-01499,
-01501,
-01502,
-01503,
-01505,
-01506,
-01507,
-01508,
-01509,
-0151,
-01520,
-01522,
-01524,
-015242,
-01525,
-01526,
-01527,
-01528,
-01529,
-01530,
-01531,
-01534,
-01535,
-01536,
-01538,
-01539,
-015394,
-015395,
-015396,
-01540,
-01542,
-01543,
-01544,
-01545,
-01546,
-01547,
-01548,
-01549,
-01550,
-01553,
-01554,
-01555,
-01556,
-01557,
-01558,
-01559,
-01560,
-01561,
-01562,
-01563,
-01564,
-01565,
-01566,
-01567,
-01568,
-01569,
-01570,
-01571,
-01572,
-01573,
-01575,
-01576,
-01577,
-01578,
-01579,
-01580,
-01581,
-01582,
-01583,
-01584,
-01586,
-01588,
-01590,
-01591,
-01592,
-01593,
-01594,
-01595,
-01597,
-01598,
-01599,
-01600,
-01603,
-01604,
-01606,
-01608,
-01609,
-0161,
-01620,
-01621,
-01622,
-01623,
-01624,
-01625,
-01626,
-01628,
-01629,
-01630,
-01631,
-01633,
-01634,
-01635,
-01636,
-01637,
-01638,
-01639,
-01641,
-01642,
-01643,
-01644,
-01646,
-01647,
-01650,
-01651,
-01652,
-01653,
-01654,
-01655,
-01656,
-01659,
-01661,
-01663,
-01664,
-01665,
-01666,
-01667,
-01668,
-01669,
-01670,
-01671,
-01672,
-01673,
-01674,
-01675,
-01676,
-01677,
-01678,
-01680,
-01681,
-01683,
-01684,
-01685,
-01686,
-01687,
-01688,
-01689,
-01690,
-01691,
-01692,
-01694,
-01695,
-01697,
-016973,
-016974,
-016977,
-01698,
-01700,
-01702,
-01704,
-01706,
-01707,
-01708,
-01709,
-01720,
-01721,
-01722,
-01723,
-01724,
-01725,
-01726,
-01727,
-01728,
-01729,
-01730,
-01732,
-01733,
-01736,
-01737,
-01738,
-01740,
-01743,
-01744,
-01745,
-01746,
-01747,
-01748,
-01749,
-01750,
-01751,
-01752,
-01753,
-01754,
-01756,
-01757,
-01758,
-01759,
-01760,
-01761,
-01763,
-01764,
-01765,
-01766,
-01767,
-01768,
-017683,
-017684,
-017687,
-01769,
-01770,
-01771,
-01772,
-01773,
-01775,
-01776,
-01777,
-01778,
-01779,
-01780,
-01782,
-01784,
-01785,
-01786,
-01787,
-01788,
-01789,
-01790,
-01792,
-01793,
-01794,
-01795,
-01796,
-01797,
-01798,
-01799,
-01803,
-01805,
-01806,
-01807,
-01808,
-01809,
-01821,
-01822,
-01823,
-01824,
-01825,
-01827,
-01828,
-01829,
-01830,
-01832,
-01833,
-01834,
-01835,
-01837,
-01838,
-01840,
-01841,
-01842,
-01843,
-01844,
-01845,
-01847,
-01848,
-01851,
-01852,
-01854,
-01855,
-01856,
-01857,
-01858,
-01859,
-01862,
-01863,
-01864,
-01865,
-01866,
-01869,
-01870,
-01871,
-01872,
-01873,
-01874,
-01875,
-01876,
-01877,
-01878,
-01879,
-01880,
-01882,
-01883,
-01884,
-01885,
-01886,
-01887,
-01888,
-01889,
-01890,
-01892,
-01895,
-01896,
-01899,
-01900,
-01902,
-01903,
-01904,
-01905,
-01908,
-01909,
-0191,
-01920,
-01922,
-01923,
-01924,
-01925,
-01926,
-01928,
-01929,
-01931,
-01932,
-01933,
-01934,
-01935,
-01937,
-01938,
-01939,
-01942,
-01943,
-01944,
-01945,
-01946,
-019467,
-01947,
-01948,
-01949,
-01950,
-01951,
-01952,
-01953,
-01954,
-01955,
-01957,
-01959,
-01962,
-01963,
-01964,
-01967,
-01968,
-01969,
-01970,
-01971,
-01972,
-01974,
-01975,
-01977,
-01978,
-01980,
-01981,
-01982,
-01983,
-01984,
-01985,
-01986,
-01987,
-01988,
-01989,
-01992,
-01993,
-01994,
-01995,
-01997,
-020,
-023,
-024,
-028,
-029}
-\clist_const:Nn \c_phone_UK_obligatorische_ortsvorwahlen_clist {01202,
-01224,
-01273,
-01274,
-01642,
-01908}
-\clist_const:Nn \c_phone_UK_sondervorwahlen_clist {0300,
-0303,
-0306,
-0330,
-0331,
-0333,
-0343,
-0344,
-0345,
-0370,
-0371,
-0372,
-05511,
-05516,
-05555,
-05588,
-05600,
-05601,
-05602,
-05603,
-05604,
-07000,
-07002,
-07003,
-07004,
-07005,
-07006,
-07008,
-07009,
-07010,
-07011,
-07012,
-07013,
-07014,
-07015,
-07016,
-07017,
-07018,
-07019,
-07020,
-07021,
-07022,
-07023,
-07024,
-07026,
-07027,
-07028,
-07029,
-07030,
-07031,
-07032,
-07033,
-07034,
-07035,
-07036,
-07037,
-07038,
-07039,
-07040,
-07041,
-07042,
-07043,
-07044,
-07045,
-07046,
-07047,
-07048,
-07049,
-07050,
-07052,
-07053,
-07054,
-07055,
-07056,
-07057,
-07058,
-07059,
-07060,
-07061,
-07062,
-07063,
-07064,
-07065,
-07066,
-07067,
-07068,
-07069,
-07070,
-07071,
-07072,
-07073,
-07074,
-07076,
-07077,
-07078,
-07079,
-07080,
-07081,
-07082,
-07083,
-07084,
-07085,
-07086,
-07087,
-07088,
-07089,
-07090,
-07091,
-07092,
-07093,
-07094,
-07096,
-07098,
-07099,
-07106,
-07107,
-07300,
-07301,
-07302,
-07303,
-07304,
-07305,
-07306,
-07307,
-07308,
-07309,
-07310,
-07311,
-07312,
-07340,
-07341,
-07342,
-07354,
-07355,
-07357,
-07359,
-07360,
-07361,
-07362,
-07363,
-07364,
-07365,
-07366,
-07367,
-07368,
-07369,
-07375,
-07376,
-07377,
-07378,
-07379,
-07380,
-07381,
-07382,
-07383,
-07384,
-07385,
-07386,
-07387,
-07388,
-07389,
-07390,
-07391,
-07392,
-07393,
-07394,
-07395,
-07396,
-07397,
-07398,
-07399,
-07400,
-07401,
-07402,
-07403,
-07404,
-07405,
-07406,
-07407,
-07408,
-07409,
-07410,
-07411,
-07412,
-07413,
-07414,
-07415,
-07416,
-07417,
-07418,
-07419,
-07420,
-07421,
-07422,
-07423,
-07424,
-07425,
-07426,
-07427,
-07428,
-07429,
-07430,
-07431,
-07432,
-07433,
-07434,
-07435,
-07436,
-07437,
-07438,
-07440,
-07441,
-07442,
-07443,
-07444,
-07445,
-07446,
-07447,
-07448,
-07449,
-07450,
-07451,
-07452,
-07453,
-07454,
-07455,
-07456,
-07457,
-07458,
-07459,
-07460,
-07461,
-07462,
-07463,
-07464,
-07465,
-07466,
-07467,
-07468,
-07469,
-07470,
-07471,
-07472,
-07473,
-07474,
-07475,
-07476,
-07477,
-07478,
-07479,
-07480,
-07481,
-07482,
-07483,
-07484,
-07485,
-07486,
-07487,
-07488,
-07489,
-07490,
-07491,
-07492,
-07493,
-07494,
-07495,
-07496,
-07497,
-07498,
-07499,
-07500,
-07501,
-07502,
-07503,
-07504,
-07505,
-07506,
-07507,
-07508,
-07509,
-07510,
-07511,
-07512,
-07513,
-07514,
-07515,
-07516,
-07517,
-07518,
-07519,
-07520,
-07521,
-07522,
-07523,
-07525,
-07526,
-07527,
-07528,
-07529,
-07530,
-07531,
-07532,
-07533,
-07534,
-07535,
-07536,
-07537,
-07538,
-07539,
-07540,
-07541,
-07542,
-07543,
-07544,
-07545,
-07546,
-07547,
-07548,
-07549,
-07550,
-07551,
-07552,
-07553,
-07554,
-07555,
-07556,
-07557,
-07558,
-07559,
-07560,
-07561,
-07562,
-07563,
-07564,
-07565,
-07566,
-07567,
-07568,
-07569,
-07570,
-07572,
-07573,
-07574,
-07575,
-07576,
-07577,
-07578,
-07579,
-07580,
-07581,
-07582,
-07583,
-07584,
-07585,
-07586,
-07587,
-07588,
-07589,
-07590,
-07591,
-07592,
-07593,
-07594,
-07595,
-07596,
-07597,
-07598,
-07599,
-07600,
-07602,
-07623,
-07624,
-07625,
-07626,
-07640,
-07641,
-07644,
-07654,
-07659,
-07660,
-07661,
-07663,
-07666,
-07669,
-07677,
-07681,
-07693,
-07699,
-07700,
-07701,
-07702,
-07703,
-07704,
-07705,
-07706,
-07707,
-07708,
-07709,
-07710,
-07711,
-07712,
-07713,
-07714,
-07715,
-07716,
-07717,
-07718,
-07719,
-07720,
-07721,
-07722,
-07723,
-07724,
-07725,
-07726,
-07727,
-07728,
-07729,
-07730,
-07731,
-07732,
-07733,
-07734,
-07735,
-07736,
-07737,
-07738,
-07739,
-07740,
-07741,
-07742,
-07743,
-07744,
-07745,
-07746,
-07747,
-07748,
-07749,
-07750,
-07751,
-07752,
-07753,
-07754,
-07755,
-07756,
-07757,
-07758,
-07759,
-07760,
-07761,
-07762,
-07763,
-07764,
-07765,
-07766,
-07767,
-07768,
-07769,
-07770,
-07771,
-07772,
-07773,
-07774,
-07775,
-07776,
-07777,
-07778,
-07779,
-07780,
-07781,
-07782,
-07783,
-07784,
-07785,
-07786,
-07787,
-07788,
-07789,
-07790,
-07791,
-07792,
-07793,
-07794,
-07795,
-07796,
-07797,
-07798,
-07799,
-07800,
-07801,
-07802,
-07803,
-07804,
-07805,
-07806,
-07807,
-07808,
-07809,
-07810,
-07811,
-07812,
-07813,
-07814,
-07815,
-07816,
-07817,
-07818,
-07819,
-07820,
-07821,
-07822,
-07823,
-07824,
-07825,
-07826,
-07827,
-07828,
-07829,
-07830,
-07831,
-07832,
-07833,
-07834,
-07835,
-07836,
-07837,
-07838,
-07839,
-07840,
-07841,
-07842,
-07843,
-07844,
-07845,
-07846,
-07847,
-07848,
-07849,
-07850,
-07851,
-07852,
-07853,
-07854,
-07855,
-07856,
-07857,
-07858,
-07859,
-07860,
-07861,
-07862,
-07863,
-07864,
-07865,
-07866,
-07867,
-07868,
-07869,
-07870,
-07871,
-07872,
-07873,
-07874,
-07875,
-07876,
-07877,
-07878,
-07879,
-07880,
-07881,
-07882,
-07883,
-07884,
-07885,
-07886,
-07887,
-07888,
-07889,
-07890,
-07891,
-07892,
-07893,
-07894,
-07895,
-07896,
-07897,
-07898,
-07899,
-07900,
-07901,
-07902,
-07903,
-07904,
-07905,
-07906,
-07907,
-07908,
-07909,
-07910,
-07911,
-07912,
-07913,
-07914,
-07915,
-07916,
-07917,
-07918,
-07919,
-07920,
-07921,
-07922,
-07923,
-07924,
-07925,
-07926,
-07927,
-07928,
-07929,
-07930,
-07931,
-07932,
-07933,
-07934,
-07935,
-07936,
-07937,
-07938,
-07939,
-07940,
-07941,
-07942,
-07943,
-07944,
-07945,
-07946,
-07947,
-07948,
-07949,
-07950,
-07951,
-07952,
-07953,
-07954,
-07955,
-07956,
-07957,
-07958,
-07959,
-07960,
-07961,
-07962,
-07963,
-07964,
-07965,
-07966,
-07967,
-07968,
-07969,
-07970,
-07971,
-07972,
-07973,
-07974,
-07975,
-07976,
-07977,
-07978,
-07979,
-07980,
-07981,
-07982,
-07983,
-07984,
-07985,
-07986,
-07987,
-07988,
-07989,
-07990,
-07999,
-0800,
-0808,
-0820,
-0843,
-0844,
-0845,
-0870,
-0871,
-0872,
-0897,
-0899,
-0900,
-0901,
-0902,
-0903,
-0904,
-0905,
-0906,
-0907,
-0911,
-0912,
-0913}
diff --git a/macros/latex/contrib/phonenumbers/tex/phn-US_Vorwahlen.tex b/macros/latex/contrib/phonenumbers/tex/phn-US_Vorwahlen.tex
deleted file mode 100644
index c79902373d..0000000000
--- a/macros/latex/contrib/phonenumbers/tex/phn-US_Vorwahlen.tex
+++ /dev/null
@@ -1,681 +0,0 @@
-% phonenumbers package: area codes of the North American Numbering Plan
-% Datum: 20. August 2021
-\clist_const:Nn \c_phone_US_ortsvorwahlen_clist {201,
-202,
-203,
-204,
-205,
-206,
-207,
-208,
-209,
-210,
-212,
-213,
-214,
-215,
-216,
-217,
-218,
-219,
-220,
-223,
-224,
-225,
-226,
-227, % Freischaltungsdatum noch unklar
-228,
-229,
-231,
-234,
-236,
-239,
-240,
-242,
-246,
-248,
-249,
-250,
-251,
-252,
-253,
-254,
-256,
-260,
-262,
-264,
-267,
-268,
-269,
-270,
-272,
-274, % Freischaltungsdatum noch unklar
-276,
-279,
-281,
-284,
-289,
-301,
-302,
-303,
-304,
-305,
-306,
-307,
-308,
-309,
-310,
-312,
-313,
-314,
-315,
-316,
-317,
-318,
-319,
-320,
-321,
-323,
-325,
-326,
-330,
-331,
-332,
-334,
-336,
-337,
-339,
-340,
-341,
-343,
-345,
-346,
-347,
-351,
-352,
-360,
-361,
-364,
-365,
-367,
-368, % ab 2022-04-23
-380,
-385,
-386,
-401,
-402,
-403,
-404,
-405,
-406,
-407,
-408,
-409,
-410,
-412,
-413,
-414,
-415,
-416,
-417,
-418,
-419,
-423,
-424,
-425,
-428, % ab 2023-04-29
-430,
-431,
-432,
-434,
-435,
-437,
-438,
-440,
-441,
-442,
-443,
-445,
-447,
-448,
-450,
-458,
-463,
-464, % Freischaltungsdatum noch unklar
-469,
-470,
-473,
-474, % ab 2021-10-02
-475,
-478,
-479,
-480,
-484,
-501,
-502,
-503,
-504,
-505,
-506,
-507,
-508,
-509,
-510,
-512,
-513,
-514,
-515,
-516,
-517,
-518,
-519,
-520,
-530,
-531,
-534,
-539,
-540,
-541,
-548,
-551,
-559,
-561,
-562,
-563,
-564,
-567,
-570,
-571,
-572,
-573,
-574,
-575,
-579,
-580,
-581,
-582,
-585,
-586,
-587,
-601,
-602,
-603,
-604,
-605,
-606,
-607,
-608,
-609,
-610,
-612,
-613,
-614,
-615,
-616,
-617,
-618,
-619,
-620,
-623,
-626,
-628,
-629,
-630,
-631,
-636,
-639,
-640,
-641,
-646,
-647,
-649,
-650,
-651,
-656, % ab 2022-02-22
-657,
-658,
-659,
-660,
-661,
-662,
-664,
-667,
-669,
-670,
-671,
-672,
-678,
-680,
-681,
-682,
-684,
-689,
-701,
-702,
-703,
-704,
-705,
-706,
-707,
-708,
-709,
-712,
-713,
-714,
-715,
-716,
-717,
-718,
-719,
-720,
-721,
-724,
-725,
-726,
-727,
-730, % Freischaltungsdatum noch unklar
-731,
-732,
-734,
-737,
-740,
-742, % ab 2021-10-16
-743,
-747,
-754,
-757,
-758,
-760,
-762,
-763,
-765,
-767,
-769,
-770,
-771, % ab 2021-11-09
-772,
-773,
-774,
-775,
-778,
-779,
-780,
-781,
-782,
-784,
-785,
-786,
-787,
-801,
-802,
-803,
-804,
-805,
-806,
-807,
-808,
-809,
-810,
-812,
-813,
-814,
-815,
-816,
-817,
-818,
-819,
-820,
-825,
-826, % ab 2022-06-14
-828,
-829,
-830,
-831,
-832,
-838,
-839,
-840,
-843,
-845,
-847,
-848,
-849,
-850,
-854,
-856,
-857,
-858,
-859,
-860,
-862,
-863,
-864,
-865,
-867,
-868,
-869,
-870,
-872,
-873,
-876,
-878,
-879, % Freischaltungsdatum noch unklar
-901,
-902,
-903,
-904,
-905,
-906,
-907,
-908,
-909,
-910,
-912,
-913,
-914,
-915,
-916,
-917,
-918,
-919,
-920,
-925,
-928,
-929,
-930,
-931,
-934,
-936,
-937,
-938,
-939,
-940,
-941,
-943, % ab 2022-03-15
-945,
-947,
-948, % ab 2022-05-09
-949,
-951,
-952,
-954,
-956,
-959,
-970,
-971,
-972,
-973,
-978,
-979,
-980,
-984,
-985,
-986,
-989}
-\clist_const:Nn \c_phone_US_obligatorische_ortsvorwahlen_clist {201,
-% 202, bisher 7D, demnächst 10D (Einführung von 771)
-203,
-204,
-205,
-206,
-208,
-210,
-212,
-213,
-214,
-215,
-217,
-220,
-223,
-224,
-226,
-227, % Freischaltungsdatum noch unklar
-234,
-236,
-240,
-248,
-249,
-250,
-253,
-256,
-267,
-270,
-272,
-274, % Freischaltungsdatum noch unklar
-279,
-281,
-289,
-301,
-303,
-304,
-305,
-310,
-312,
-315,
-317,
-323,
-326,
-330,
-331,
-332,
-336,
-339,
-341,
-343,
-346,
-347,
-351,
-360,
-364,
-365,
-367,
-368, % ab 2022-04-23
-380,
-385,
-402,
-403,
-404,
-405,
-407,
-408,
-410,
-412,
-415,
-416,
-418,
-419,
-424,
-425,
-428, % ab 2023-04-29
-430,
-431,
-437,
-438,
-442,
-443,
-445,
-447,
-448,
-450,
-458,
-463,
-464, % Freischaltungsdatum noch unklar
-469,
-470,
-474, % ab 2021-10-02
-475,
-484,
-503,
-% 506, bisher 7D, demnächst 10D (Einführung von 428)
-508,
-510,
-512,
-514,
-518,
-519,
-531,
-534,
-539,
-% 540, bisher 7D, demnächst 10D (Einführung von 826)
-541,
-548,
-551,
-564,
-567,
-570,
-571,
-572,
-579,
-581,
-582,
-587,
-601,
-604,
-609,
-610,
-613,
-614,
-615,
-617,
-% 618, bisher 7D, demnächst 10D (Einführung von 730)
-619,
-628,
-629,
-630,
-631,
-639,
-640,
-646,
-647,
-656, % ab 2022-02-22
-657,
-658,
-659,
-667,
-669,
-672,
-678,
-680,
-681,
-682,
-689,
-702,
-703,
-704,
-706,
-% 708, bisher 7D, demnächst 10D (Einführung von 464)
-713,
-714,
-% 715, 2021-08-16 nicht mehr in der Liste aufgeführt, aber Overlay zu 534
-717,
-718,
-720,
-724,
-725,
-726,
-730, % Freischaltungsdatum noch unklar
-732,
-737,
-740,
-743,
-747,
-754,
-% 757, bisher 7D, demnächst 10D (Einführung von 948)
-760,
-762,
-769,
-770,
-771, % ab 2021-11-09
-773,
-774,
-778,
-779,
-780,
-781,
-782,
-786,
-787,
-801,
-803,
-805,
-809,
-812,
-% 813, bisher 7D, demnächst 10D (Einführung von 656)
-814,
-815,
-817,
-818,
-819,
-820,
-825,
-826, % ab 2022-06-14
-829,
-832,
-838,
-839,
-840,
-843,
-847,
-848,
-849,
-850,
-854,
-857,
-858,
-860,
-862,
-872,
-873,
-878,
-902,
-903,
-905,
-909,
-916,
-917,
-918,
-919,
-% 920, bisher 7D, demnächst 10D (Einführung von 274)
-929,
-930,
-934,
-937,
-938,
-939,
-943, % ab 2022-03-15
-945,
-947,
-948, % ab 2022-05-09
-954,
-959,
-971,
-972,
-973,
-978,
-980,
-984,
-986}
-\clist_const:Nn \c_phone_US_sondervorwahlen_clist {500,
-521,
-522,
-523,
-524,
-525,
-526,
-533,
-544,
-566,
-577,
-588,
-600,
-622,
-700,
-710,
-800,
-833,
-844,
-855,
-866,
-877,
-888,
-900}
diff --git a/macros/latex/contrib/phonenumbers/tex/phn-AT_Ortsnamen.tex b/macros/latex/contrib/phonenumbers/tex/phonenumbers-AT.def
index ea6b95577f..6d8a25f3c9 100644
--- a/macros/latex/contrib/phonenumbers/tex/phn-AT_Ortsnamen.tex
+++ b/macros/latex/contrib/phonenumbers/tex/phonenumbers-AT.def
@@ -1,5 +1,1077 @@
-% phonenumbers package: Austrian place names
-% Datum: 20. August 2021
+% phonenumbers package: phonenumbers-AT.def
+% Module for Austrian telephone numbers
+% Author: K. Wehr
+% Version: 2.5
+% Date: 2022-07-01
+\clist_const:Nn \c_phone_AT_ortsvorwahlen_clist {01,
+02142,
+02143,
+02144,
+02145,
+02146,
+02147,
+02160,
+02162,
+02163,
+02164,
+02165,
+02166,
+02167,
+02168,
+02169,
+02172,
+02173,
+02174,
+02175,
+02176,
+02177,
+02212,
+02213,
+02214,
+02215,
+02216,
+02230,
+02231,
+02232,
+02233,
+02234,
+02235,
+02236,
+02237,
+02238,
+02239,
+02242,
+02243,
+02244,
+02245,
+02246,
+02247,
+02248,
+02249,
+02252,
+02253,
+02254,
+02255,
+02256,
+02257,
+02258,
+02259,
+02262,
+02263,
+02264,
+02265,
+02266,
+02267,
+02268,
+02269,
+02271,
+02272,
+02273,
+02274,
+02275,
+02276,
+02277,
+02278,
+02279,
+02282,
+02283,
+02284,
+02285,
+02286,
+02287,
+02288,
+02289,
+02522,
+02523,
+02524,
+02525,
+02526,
+02527,
+02532,
+02533,
+02534,
+02535,
+02536,
+02538,
+02552,
+02554,
+02555,
+02556,
+02557,
+02572,
+02573,
+02574,
+02575,
+02576,
+02577,
+02610,
+02611,
+02612,
+02613,
+02614,
+02615,
+02616,
+02617,
+02618,
+02619,
+02620,
+02621,
+02622,
+02623,
+02624,
+02625,
+02626,
+02627,
+02628,
+02629,
+02630,
+02631,
+02632,
+02633,
+02634,
+02635,
+02636,
+02637,
+02638,
+02639,
+02641,
+02642,
+02643,
+02644,
+02645,
+02646,
+02647,
+02648,
+02649,
+02662,
+02663,
+02664,
+02665,
+02666,
+02667,
+02672,
+02673,
+02674,
+02680,
+02682,
+02683,
+02684,
+02685,
+02686,
+02687,
+02688,
+02689,
+02711,
+02712,
+02713,
+02714,
+02715,
+02716,
+02717,
+02718,
+02719,
+02722,
+02723,
+02724,
+02725,
+02726,
+02728,
+02731,
+02732,
+02733,
+02734,
+02735,
+02736,
+02738,
+02739,
+02741,
+02742,
+02743,
+02744,
+02745,
+02746,
+02747,
+02748,
+02749,
+02752,
+02753,
+02754,
+02755,
+02756,
+02757,
+02758,
+02762,
+02763,
+02764,
+02765,
+02766,
+02767,
+02768,
+02769,
+02772,
+02773,
+02774,
+02782,
+02783,
+02784,
+02786,
+02812,
+02813,
+02814,
+02815,
+02816,
+02822,
+02823,
+02824,
+02825,
+02826,
+02827,
+02828,
+02829,
+02841,
+02842,
+02843,
+02844,
+02845,
+02846,
+02847,
+02848,
+02849,
+02852,
+02853,
+02854,
+02855,
+02856,
+02857,
+02858,
+02859,
+02862,
+02863,
+02864,
+02865,
+02872,
+02873,
+02874,
+02875,
+02876,
+02877,
+02878,
+02912,
+02913,
+02914,
+02915,
+02916,
+02942,
+02943,
+02944,
+02945,
+02946,
+02947,
+02948,
+02949,
+02951,
+02952,
+02953,
+02954,
+02955,
+02956,
+02957,
+02958,
+02959,
+02982,
+02983,
+02984,
+02985,
+02986,
+02987,
+02988,
+02989,
+03112,
+03113,
+03114,
+03115,
+03116,
+03117,
+03118,
+03119,
+03123,
+03124,
+03125,
+03126,
+03127,
+03132,
+03133,
+03134,
+03135,
+03136,
+03137,
+03140,
+03141,
+03142,
+03143,
+03144,
+03145,
+03146,
+03147,
+03148,
+03149,
+03150,
+03151,
+03152,
+03153,
+03155,
+03157,
+03158,
+03159,
+0316,
+03170,
+03171,
+03172,
+03173,
+03174,
+03175,
+03176,
+03177,
+03178,
+03179,
+03182,
+03183,
+03184,
+03185,
+03322,
+03323,
+03324,
+03325,
+03326,
+03327,
+03328,
+03329,
+03331,
+03332,
+03333,
+03334,
+03335,
+03336,
+03337,
+03338,
+03339,
+03352,
+03353,
+03354,
+03355,
+03356,
+03357,
+03358,
+03359,
+03362,
+03363,
+03364,
+03365,
+03366,
+03382,
+03383,
+03385,
+03386,
+03387,
+03452,
+03453,
+03454,
+03455,
+03456,
+03457,
+03460,
+03461,
+03462,
+03463,
+03464,
+03465,
+03466,
+03467,
+03468,
+03469,
+03472,
+03473,
+03474,
+03475,
+03476,
+03477,
+03512,
+03513,
+03514,
+03515,
+03516,
+03532,
+03533,
+03534,
+03535,
+03536,
+03537,
+03571,
+03572,
+03573,
+03574,
+03575,
+03576,
+03577,
+03578,
+03579,
+03581,
+03582,
+03583,
+03584,
+03585,
+03586,
+03587,
+03588,
+03611,
+03612,
+03613,
+03614,
+03615,
+03616,
+03617,
+03618,
+03619,
+03622,
+03623,
+03624,
+03631,
+03632,
+03633,
+03634,
+03635,
+03636,
+03637,
+03638,
+03680,
+03682,
+03683,
+03684,
+03685,
+03686,
+03687,
+03688,
+03689,
+03832,
+03833,
+03834,
+03842,
+03843,
+03844,
+03845,
+03846,
+03847,
+03848,
+03849,
+03852,
+03853,
+03854,
+03855,
+03856,
+03857,
+03858,
+03859,
+03861,
+03862,
+03863,
+03864,
+03865,
+03866,
+03867,
+03868,
+03869,
+03882,
+03883,
+03884,
+03885,
+03886,
+04212,
+04213,
+04214,
+04215,
+04220,
+04221,
+04223,
+04224,
+04225,
+04226,
+04227,
+04228,
+04229,
+04230,
+04231,
+04232,
+04233,
+04234,
+04235,
+04236,
+04237,
+04238,
+04239,
+04240,
+04242,
+04243,
+04244,
+04245,
+04246,
+04247,
+04248,
+04252,
+04253,
+04254,
+04255,
+04256,
+04257,
+04258,
+04262,
+04263,
+04264,
+04265,
+04266,
+04267,
+04268,
+04269,
+04271,
+04272,
+04273,
+04274,
+04275,
+04276,
+04277,
+04278,
+04279,
+04282,
+04283,
+04284,
+04285,
+04286,
+04350,
+04352,
+04353,
+04354,
+04355,
+04356,
+04357,
+04358,
+04359,
+0463,
+04710,
+04712,
+04713,
+04714,
+04715,
+04716,
+04717,
+04718,
+04732,
+04733,
+04734,
+04735,
+04736,
+04761,
+04762,
+04766,
+04767,
+04768,
+04769,
+04782,
+04783,
+04784,
+04785,
+04822,
+04823,
+04824,
+04825,
+04826,
+04842,
+04843,
+04846,
+04847,
+04848,
+04852,
+04853,
+04855,
+04858,
+04872,
+04873,
+04874,
+04875,
+04876,
+04877,
+04879,
+0512,
+05212,
+05213,
+05214,
+05223,
+05224,
+05225,
+05226,
+05230,
+05232,
+05234,
+05236,
+05238,
+05239,
+05242,
+05243,
+05244,
+05245,
+05246,
+05248,
+05252,
+05253,
+05254,
+05255,
+05256,
+05262,
+05263,
+05264,
+05265,
+05266,
+05272,
+05273,
+05274,
+05275,
+05276,
+05278,
+05279,
+05280,
+05282,
+05283,
+05284,
+05285,
+05286,
+05287,
+05288,
+05289,
+05331,
+05332,
+05333,
+05334,
+05335,
+05336,
+05337,
+05338,
+05339,
+05352,
+05353,
+05354,
+05355,
+05356,
+05357,
+05358,
+05359,
+05372,
+05373,
+05374,
+05375,
+05376,
+05412,
+05413,
+05414,
+05417,
+05418,
+05441,
+05442,
+05443,
+05444,
+05445,
+05446,
+05447,
+05448,
+05449,
+05472,
+05473,
+05474,
+05475,
+05476,
+05477,
+05510,
+05512,
+05513,
+05514,
+05515,
+05516,
+05517,
+05518,
+05519,
+05522,
+05523,
+05524,
+05525,
+05526,
+05550,
+05552,
+05553,
+05554,
+05556,
+05557,
+05558,
+05559,
+05572,
+05573,
+05574,
+05575,
+05576,
+05577,
+05578,
+05579,
+05582,
+05583,
+05585,
+05632,
+05633,
+05634,
+05635,
+05672,
+05673,
+05674,
+05675,
+05676,
+05677,
+05678,
+06131,
+06132,
+06133,
+06134,
+06135,
+06136,
+06137,
+06138,
+06212,
+06213,
+06214,
+06215,
+06216,
+06217,
+06219,
+06221,
+06223,
+06224,
+06225,
+06226,
+06227,
+06228,
+06229,
+06232,
+06233,
+06234,
+06235,
+06240,
+06241,
+06242,
+06243,
+06244,
+06245,
+06246,
+06247,
+06272,
+06274,
+06276,
+06277,
+06278,
+06412,
+06413,
+06414,
+06415,
+06416,
+06417,
+06418,
+06432,
+06433,
+06434,
+06452,
+06453,
+06454,
+06455,
+06456,
+06457,
+06458,
+06461,
+06462,
+06463,
+06466,
+06467,
+06468,
+06470,
+06471,
+06472,
+06473,
+06474,
+06475,
+06476,
+06477,
+06478,
+06479,
+06483,
+06484,
+06541,
+06542,
+06543,
+06544,
+06545,
+06546,
+06547,
+06548,
+06549,
+06562,
+06563,
+06564,
+06565,
+06566,
+06582,
+06583,
+06584,
+06588,
+06589,
+0662,
+07211,
+07212,
+07213,
+07214,
+07215,
+07216,
+07217,
+07218,
+07219,
+07221,
+07223,
+07224,
+07225,
+07226,
+07227,
+07228,
+07229,
+07230,
+07231,
+07232,
+07233,
+07234,
+07235,
+07236,
+07237,
+07238,
+07239,
+07240,
+07241,
+07242,
+07243,
+07244,
+07245,
+07246,
+07247,
+07248,
+07249,
+07250,
+07251,
+07252,
+07253,
+07254,
+07255,
+07256,
+07257,
+07258,
+07259,
+07260,
+07261,
+07262,
+07263,
+07264,
+07265,
+07266,
+07267,
+07268,
+07269,
+07272,
+07273,
+07274,
+07276,
+07277,
+07278,
+07279,
+07280,
+07281,
+07282,
+07283,
+07284,
+07285,
+07286,
+07287,
+07288,
+07289,
+0732,
+07353,
+07355,
+07357,
+07412,
+07413,
+07414,
+07415,
+07416,
+07432,
+07433,
+07434,
+07435,
+07442,
+07443,
+07444,
+07445,
+07448,
+07471,
+07472,
+07473,
+07474,
+07475,
+07476,
+07477,
+07478,
+07479,
+07480,
+07482,
+07483,
+07484,
+07485,
+07486,
+07487,
+07488,
+07489,
+07562,
+07563,
+07564,
+07565,
+07566,
+07582,
+07583,
+07584,
+07585,
+07586,
+07587,
+07588,
+07612,
+07613,
+07614,
+07615,
+07616,
+07617,
+07618,
+07619,
+07662,
+07663,
+07664,
+07665,
+07666,
+07667,
+07672,
+07673,
+07674,
+07675,
+07676,
+07682,
+07683,
+07684,
+07711,
+07712,
+07713,
+07714,
+07716,
+07717,
+07718,
+07719,
+07722,
+07723,
+07724,
+07727,
+07728,
+07729,
+07732,
+07733,
+07734,
+07735,
+07736,
+07742,
+07743,
+07744,
+07745,
+07746,
+07747,
+07748,
+07750,
+07751,
+07752,
+07753,
+07754,
+07755,
+07757,
+07758,
+07759,
+07762,
+07763,
+07764,
+07765,
+07766,
+07767,
+07941,
+07942,
+07943,
+07944,
+07945,
+07946,
+07947,
+07948,
+07949,
+07952,
+07953,
+07954,
+07955,
+07956}
+\clist_const:Nn \c_phone_AT_sondervorwahlen_clist {0501,
+0502,
+0503,
+0504,
+0505,
+0506,
+0507,
+0508,
+0509,
+0517,
+057,
+059,
+0650,
+0651,
+0652,
+0653,
+0655,
+0657,
+0659,
+0660,
+0661,
+0663,
+0664,
+0665,
+0666,
+0667,
+0668,
+0669,
+067,
+068,
+069,
+0711,
+0718,
+0720,
+0780,
+0800,
+0804,
+0810,
+0820,
+0821,
+0828,
+089,
+0900,
+0901,
+0930,
+0931,
+0939}
\tl_const:cn {c_phone_AT_ortsname_01_tl} {Wien}
\tl_const:cn {c_phone_AT_ortsname_02142_tl} {Gattendorf}
\tl_const:cn {c_phone_AT_ortsname_02143_tl} {Kittsee}
@@ -1069,3 +2141,421 @@
\tl_const:cn {c_phone_AT_ortsname_0930_tl} {Mehrwertdienst}
\tl_const:cn {c_phone_AT_ortsname_0931_tl} {Mehrwertdienst}
\tl_const:cn {c_phone_AT_ortsname_0939_tl} {Mehrwert-Onlinedienst~(Dialer)}
+
+\tl_const:Nn \c_phone_AT_landesadjektiv_tl {Austrian}
+\bool_const:Nn \c_phone_AT_erlaubt_durchwahl_bool {\c_true_bool}
+
+\clist_new:N \c_phone_AT_vorwahlen_clist
+\clist_concat:NNN \c_phone_AT_vorwahlen_clist \c_phone_AT_ortsvorwahlen_clist \c_phone_AT_sondervorwahlen_clist
+
+% Prüfe, ob eine Vorwahl als Heimatvorwahl zulässig ist.
+% #1: Heimatvorwahl
+\prg_new_protected_conditional:Npnn \phone_AT_heimatvorwahl_erlaubt:n #1 {T}
+ {
+ \clist_if_in:NnTF \c_phone_AT_ortsvorwahlen_clist {#1}
+ {
+ % Alle österreichischen Ortsvorwahlen können Heimatvorwahl sein.
+ \prg_return_true:
+ }
+ {
+ \msg_warning:nnn {phonenumbers} {invalid home area code} {#1}
+ \prg_return_false:
+ }
+ }
+
+% #1: Vorwahl, #2: Soll die führende Null ausgegeben werden?
+\cs_new_protected:Npn \phone_AT_ziffernvorwahl_schreiben:nN #1#2
+ {
+ \bool_if:NTF #2
+ {
+ \phone_von_hinten_gruppiert_schreiben:n {#1}
+ }
+ {
+ \phone_von_hinten_gruppiert_schreiben:x { \str_tail:n {#1} }
+ }
+ }
+
+% #1: Vorwahl, #2: Folgt eine Rufnummer?
+\cs_new_protected:Npn \phone_AT_vorwahl_schreiben:nn #1 #2
+ {
+ \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {AT} }
+ {
+ \clist_if_in:NnT \c_phone_AT_sondervorwahlen_clist {#1}
+ {
+ \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place}
+ {
+ \str_set:Nn \l_phone_vorwahldarstellung_str {number}
+ }
+ }
+
+ \bool_lazy_and:nnF { \str_if_eq_p:Vn \l_phone_heimatland_str {AT} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} }
+ {
+ \str_case:Vn \l_phone_vorwahldarstellung_str
+ {
+ {number}
+ {
+ \bool_if:nTF {#2}
+ {
+ \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets}
+ {
+ \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+ {
+ \phone_AT_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+
+ \tl_put_right:Nx \l_phone_ausgabetext_tl
+ {
+ \str_case:VnF \l_phone_vorwahltrennung_str
+ {
+ {space} {\c_space_tl}
+ {hyphen} {\c_phone_bindestrich_tl}
+ }
+ {
+ \c_phone_schraegstrich_tl
+ }
+ }
+ }
+ }
+ {
+ \phone_AT_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ }
+ }
+ {place}
+ {
+ \bool_if:nTF {#2}
+ {
+ \str_if_eq:VnT \l_phone_vorwahltrennung_str {brackets}
+ {
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {(}
+ }
+
+ \tl_if_exist:cTF {c_phone_AT_ortsname_ #1 _tl}
+ {
+ \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_AT_ortsname_ #1 _tl}
+ }
+ {
+ \phone_AT_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ }
+
+ \tl_put_right:Nx \l_phone_ausgabetext_tl
+ {
+ \str_case:VnF \l_phone_vorwahltrennung_str
+ {
+ {brackets} {) \c_space_tl}
+ {space} {\c_space_tl}
+ {hyphen} {\c_phone_bindestrich_tl}
+ }
+ {
+ \c_phone_schraegstrich_tl
+ }
+ }
+ }
+ {
+ \tl_if_exist:cTF {c_phone_AT_ortsname_ #1 _tl}
+ {
+ \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_AT_ortsname_ #1 _tl}
+ }
+ {
+ \phone_AT_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ }
+ }
+ }
+ {place-and-number}
+ {
+ \tl_if_exist:cT {c_phone_AT_ortsname_ #1 _tl}
+ {
+ \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_AT_ortsname_ #1 _tl}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+
+ \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets}
+ {
+ \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+
+ \bool_if:nT {#2}
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+ }
+ {
+ \phone_AT_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+
+ \bool_if:nT {#2}
+ {
+ \tl_put_right:Nx \l_phone_ausgabetext_tl
+ {
+ \str_case:VnF \l_phone_vorwahltrennung_str
+ {
+ {space} {\c_space_tl}
+ {hyphen} {\c_phone_bindestrich_tl}
+ }
+ {
+ \c_phone_schraegstrich_tl
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ {
+ \phone_gruppierte_auslandsvorwahl_schreiben:n {43}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+
+ \str_if_eq:VnTF \l_phone_auslandsvorwahltrennung_str {brackets}
+ {
+ \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_false_bool
+ }
+ {
+ \phone_AT_ziffernvorwahl_schreiben:nN {#1} \c_false_bool
+ }
+
+ \bool_if:nT {#2}
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+ }
+
+ % Linktext schreiben, falls eine Rufnummer folgt
+ \bool_if:nT {#2}
+ {
+ \str_put_right:Nx \l_phone_linktext_str {+43}
+ \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} }
+ }
+ }
+
+\cs_generate_variant:Nn \phone_AT_vorwahl_schreiben:nn {Vx}
+
+% #1: Vorwahl, #2: Teilnehmerrufnummer
+\cs_new_protected:Npn \phone_AT_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1#2
+ {
+ \int_set:Nn \l_tmpa_int { \str_count:N #1 }
+ \int_add:Nn \l_tmpa_int { \str_count:n {#2} }
+ \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str }
+
+ \int_compare:nNnTF {\l_tmpa_int} > {13}
+ {
+ % Gesamtnummer hat mehr als 13 Stellen
+ \msg_warning:nnnn {phonenumbers} {number too long} {landline} {13}
+ }
+ {
+ \int_set:Nn \l_tmpa_int { \str_count:n {#2} }
+ \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str }
+
+ \int_compare:nNnTF {\l_tmpa_int} < {5}
+ {
+ % Teilnehmerrufnummer hat weniger als 5 Stellen
+ \msg_warning:nnn {phonenumbers} {subscriber number too short} {5}
+ }
+ {
+ \bool_lazy_and:nnTF { \str_if_eq_p:Vn #1 {01} } { \int_compare_p:nNn {\l_tmpa_int} < {7} }
+ {
+ % Wiener Teilnehmerrufnummer hat weniger als 7 Stellen
+ \msg_warning:nnn {phonenumbers} {subscriber number too short} {7}
+ }
+ {
+ \bool_lazy_and:nnTF
+ {
+ \bool_lazy_any_p:n
+ {
+ { \str_if_eq_p:Vn #1 {02236} }
+ { \str_if_eq_p:Vn #1 {02252} }
+ { \str_if_eq_p:Vn #1 {0316} }
+ { \str_if_eq_p:Vn #1 {0463} }
+ { \str_if_eq_p:Vn #1 {0512} }
+ { \str_if_eq_p:Vn #1 {05572} }
+ { \str_if_eq_p:Vn #1 {0662} }
+ { \str_if_eq_p:Vn #1 {07242} }
+ { \str_if_eq_p:Vn #1 {0732} }
+ }
+ }
+ {
+ \int_compare_p:nNn {\l_tmpa_int} < {6}
+ }
+ {
+ % Teilnehmerrufnummer in bestimmten Ortsnetzen hat weniger als 6 Stellen
+ \msg_warning:nnn {phonenumbers} {subscriber number too short} {6}
+ }
+ {
+ \int_compare:nNnTF {\l_tmpa_int} > {9}
+ {
+ % Teilnehmerrufnummer hat mehr als 9 Stellen
+ \msg_warning:nnn {phonenumbers} {subscriber number too long} {9}
+ }
+ {
+ \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool
+ }
+ }
+ }
+ }
+ }
+ }
+
+% #1: Vorwahl, #2: Teilnehmerrufnummer
+\cs_new_protected:Npn \phone_AT_festnetzteilnehmerrufnummer_ueberpruefen:Nn #1#2
+ {
+ \str_set:Nx \l_tmpa_str { \str_head:n {#2} }
+
+ \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_tmpa_str {0} } { \str_if_eq_p:Vn \l_tmpa_str {1} }
+ {
+ \msg_warning:nnV {phonenumbers} {illegal start of subscriber number} \l_tmpa_str
+ }
+ {
+ \phone_AT_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1 {#2}
+ }
+ }
+
+% #1: Vorwahl, #2: Teilnehmerrufnummer
+\cs_new_protected:Npn \phone_AT_teilnehmerrufnummer_schreiben:Nn #1 #2
+ {
+ \str_if_empty:NTF #1
+ {
+ % Festnetznummer ohne Vorwahl
+ \bool_if:NF \l_phone_eingabe_leer_bool
+ {
+ \phone_AT_festnetzteilnehmerrufnummer_ueberpruefen:Nn #1 {#2}
+ }
+ }
+ {
+ \clist_if_in:NVTF \c_phone_AT_ortsvorwahlen_clist #1
+ {
+ % Festnetznummer mit Vorwahl
+ \phone_AT_festnetzteilnehmerrufnummer_ueberpruefen:Nn #1 {#2}
+ }
+ {
+ % Mobilfunk-/Sondernummer
+ \str_set_eq:NN \l_tmpa_str #1
+ \str_put_right:Nn \l_tmpa_str {#2}
+
+ \str_case:VnF #1
+ {
+ {0517} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} }
+ {0718} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {dial~up} }
+ {0720} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {location~independant} }
+ {0780} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {convergent~service} }
+ {0800} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {freephone} }
+ {0804} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {dial~up} }
+ {0810} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} }
+ {0820} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} }
+ {0821} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} }
+ {0828} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} }
+ {0900} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} }
+ {0901} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} }
+ {0930} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} }
+ {0931} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} }
+ {0939} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} }
+ }
+ {
+ \str_case:xn { \str_range:Nnn #1 {1} {3} }
+ {
+ {050} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} }
+ {057} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} }
+ {059} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} }
+ {065} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} }
+ {066} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} }
+ {067} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} }
+ {068} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} }
+ {069} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} }
+ }
+ }
+
+ \str_if_empty:NF \l_phone_bereinigte_durchwahl_str
+ {
+ \msg_warning:nn {phonenumbers} {odd extension}
+ }
+ }
+
+ \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
+ {
+ % Für gültige Nummern mit Vorwahl Linktext schreiben:
+ \str_put_right:Nn \l_phone_linktext_str {#2}
+ \str_put_right:NV \l_phone_linktext_str \l_phone_bereinigte_durchwahl_str
+ }
+ {
+ % Für ungültige Nummern mit Vorwahl Linktext löschen:
+ \str_clear:N \l_phone_linktext_str
+ }
+ }
+
+ \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
+ {
+ \phone_von_hinten_gruppiert_schreiben:n {#2}
+ }
+ {
+ \str_put_right:Nn \l_phone_ausgabetext_tl {#2}
+ }
+
+ \str_if_empty:NF \l_phone_bereinigte_durchwahl_str
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl
+ \phone_von_hinten_gruppiert_schreiben:V \l_phone_bereinigte_durchwahl_str
+ }
+ }
+
+\cs_generate_variant:Nn \phone_AT_teilnehmerrufnummer_schreiben:Nn {Nx,NV}
+
+\cs_new_protected:Npn \phone_AT_nummer_schreiben:
+ {
+ \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0}
+ {
+ \phone_enthaelt_vorwahl:NTF \l_phone_bereinigte_nummer_str
+ {
+ \int_set:Nn \l_phone_hauptnummernlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str }
+ \int_set:Nn \l_phone_vorwahllaenge_int { \str_count:N \l_phone_vorwahl_str }
+
+ \phone_AT_vorwahl_schreiben:Vx \l_phone_vorwahl_str
+ {
+ \int_compare_p:nNn {\l_phone_vorwahllaenge_int} < {\l_phone_hauptnummernlaenge_int}
+ }
+
+ \int_compare:nNnTF {\l_phone_vorwahllaenge_int} = {\l_phone_hauptnummernlaenge_int}
+ {
+ \msg_warning:nn {phonenumbers} {missing subscriber number}
+ }
+ {
+ \phone_AT_teilnehmerrufnummer_schreiben:Nx \l_phone_vorwahl_str
+ {
+ \str_range:Nnn \l_phone_bereinigte_nummer_str { \l_phone_vorwahllaenge_int + 1 } {-1}
+ }
+ }
+ }
+ {
+ \msg_warning:nn {phonenumbers} {invalid area code}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_durchwahl_str
+ }
+ }
+ {
+ \phone_AT_teilnehmerrufnummer_schreiben:NV \c_empty_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+
+\cs_new_protected:Npn \phone_AT_vorwahlliste_ausgeben:n #1
+ {
+ \begin{tabbing}
+ \hspace {4em} \= \kill
+
+ \bool_set_false:N \l_phone_zeilenumbruch_bool
+
+ \clist_map_inline:cn {c_phone_AT_ #1 _clist}
+ {
+ \bool_if:NTF \l_phone_zeilenumbruch_bool
+ {
+ \\
+ }
+ {
+ \bool_gset_true:N \l_phone_zeilenumbruch_bool
+ }
+
+ \phone_von_hinten_gruppiert_schreiben:n {##1}
+ \tl_use:N \l_phone_ausgabetext_tl
+ \>
+ \tl_if_exist:cT {c_phone_AT_ortsname_ ##1 _tl}
+ {
+ \tl_use:c {c_phone_AT_ortsname_ ##1 _tl}
+ }
+ }
+ \end{tabbing}
+ }
diff --git a/macros/latex/contrib/phonenumbers/tex/phn-DE_Ortsnamen.tex b/macros/latex/contrib/phonenumbers/tex/phonenumbers-DE.def
index fc9b19ab8a..2f02bb1baf 100644
--- a/macros/latex/contrib/phonenumbers/tex/phn-DE_Ortsnamen.tex
+++ b/macros/latex/contrib/phonenumbers/tex/phonenumbers-DE.def
@@ -1,5 +1,5290 @@
-% phonenumbers package: German place names
-% Datum: 20. August 2021
+% phonenumbers package: phonenumbers-DE.def
+% Module for German telephone numbers
+% Author: K. Wehr
+% Version: 2.5
+% Date: 2022-07-01
+\clist_const:Nn \c_phone_DE_ortsvorwahlen_clist {0201,
+0202,
+0203,
+02041,
+02043,
+02045,
+02051,
+02052,
+02053,
+02054,
+02056,
+02058,
+02064,
+02065,
+02066,
+0208,
+0209,
+02102,
+02103,
+02104,
+0211,
+0212,
+02129,
+02131,
+02132,
+02133,
+02137,
+0214,
+02150,
+02151,
+02152,
+02153,
+02154,
+02156,
+02157,
+02158,
+02159,
+02161,
+02162,
+02163,
+02164,
+02165,
+02166,
+02171,
+02173,
+02174,
+02175,
+02181,
+02182,
+02183,
+02191,
+02192,
+02193,
+02195,
+02196,
+02202,
+02203,
+02204,
+02205,
+02206,
+02207,
+02208,
+0221,
+02222,
+02223,
+02224,
+02225,
+02226,
+02227,
+02228,
+02232,
+02233,
+02234,
+02235,
+02236,
+02237,
+02238,
+02241,
+02242,
+02243,
+02244,
+02245,
+02246,
+02247,
+02248,
+02251,
+02252,
+02253,
+02254,
+02255,
+02256,
+02257,
+02261,
+02262,
+02263,
+02264,
+02265,
+02266,
+02267,
+02268,
+02269,
+02271,
+02272,
+02273,
+02274,
+02275,
+0228,
+02291,
+02292,
+02293,
+02294,
+02295,
+02296,
+02297,
+02301,
+02302,
+02303,
+02304,
+02305,
+02306,
+02307,
+02308,
+02309,
+0231,
+02323,
+02324,
+02325,
+02327,
+02330,
+02331,
+02332,
+02333,
+02334,
+02335,
+02336,
+02337,
+02338,
+02339,
+0234,
+02351,
+02352,
+02353,
+02354,
+02355,
+02357,
+02358,
+02359,
+02360,
+02361,
+02362,
+02363,
+02364,
+02365,
+02366,
+02367,
+02368,
+02369,
+02371,
+02372,
+02373,
+02374,
+02375,
+02377,
+02378,
+02379,
+02381,
+02382,
+02383,
+02384,
+02385,
+02387,
+02388,
+02389,
+02391,
+02392,
+02393,
+02394,
+02395,
+02401,
+02402,
+02403,
+02404,
+02405,
+02406,
+02407,
+02408,
+02409,
+0241,
+02421,
+02422,
+02423,
+02424,
+02425,
+02426,
+02427,
+02428,
+02429,
+02431,
+02432,
+02433,
+02434,
+02435,
+02436,
+02440,
+02441,
+02443,
+02444,
+02445,
+02446,
+02447,
+02448,
+02449,
+02451,
+02452,
+02453,
+02454,
+02455,
+02456,
+02461,
+02462,
+02463,
+02464,
+02465,
+02471,
+02472,
+02473,
+02474,
+02482,
+02484,
+02485,
+02486,
+02501,
+02502,
+02504,
+02505,
+02506,
+02507,
+02508,
+02509,
+0251,
+02520,
+02521,
+02522,
+02523,
+02524,
+02525,
+02526,
+02527,
+02528,
+02529,
+02532,
+02533,
+02534,
+02535,
+02536,
+02538,
+02541,
+02542,
+02543,
+02545,
+02546,
+02547,
+02548,
+02551,
+02552,
+02553,
+02554,
+02555,
+02556,
+02557,
+02558,
+02561,
+02562,
+02563,
+02564,
+02565,
+02566,
+02567,
+02568,
+02571,
+02572,
+02573,
+02574,
+02575,
+02581,
+02582,
+02583,
+02584,
+02585,
+02586,
+02587,
+02588,
+02590,
+02591,
+02592,
+02593,
+02594,
+02595,
+02596,
+02597,
+02598,
+02599,
+02601,
+02602,
+02603,
+02604,
+02605,
+02606,
+02607,
+02608,
+0261,
+02620,
+02621,
+02622,
+02623,
+02624,
+02625,
+02626,
+02627,
+02628,
+02630,
+02631,
+02632,
+02633,
+02634,
+02635,
+02636,
+02637,
+02638,
+02639,
+02641,
+02642,
+02643,
+02644,
+02645,
+02646,
+02647,
+02651,
+02652,
+02653,
+02654,
+02655,
+02656,
+02657,
+02661,
+02662,
+02663,
+02664,
+02666,
+02667,
+02671,
+02672,
+02673,
+02674,
+02675,
+02676,
+02677,
+02678,
+02680,
+02681,
+02682,
+02683,
+02684,
+02685,
+02686,
+02687,
+02688,
+02689,
+02691,
+02692,
+02693,
+02694,
+02695,
+02696,
+02697,
+0271,
+02721,
+02722,
+02723,
+02724,
+02725,
+02732,
+02733,
+02734,
+02735,
+02736,
+02737,
+02738,
+02739,
+02741,
+02742,
+02743,
+02744,
+02745,
+02747,
+02750,
+02751,
+02752,
+02753,
+02754,
+02755,
+02758,
+02759,
+02761,
+02762,
+02763,
+02764,
+02770,
+02771,
+02772,
+02773,
+02774,
+02775,
+02776,
+02777,
+02778,
+02779,
+02801,
+02802,
+02803,
+02804,
+0281,
+02821,
+02822,
+02823,
+02824,
+02825,
+02826,
+02827,
+02828,
+02831,
+02832,
+02833,
+02834,
+02835,
+02836,
+02837,
+02838,
+02839,
+02841,
+02842,
+02843,
+02844,
+02845,
+02850,
+02851,
+02852,
+02853,
+02855,
+02856,
+02857,
+02858,
+02859,
+02861,
+02862,
+02863,
+02864,
+02865,
+02866,
+02867,
+02871,
+02872,
+02873,
+02874,
+02902,
+02903,
+02904,
+02905,
+0291,
+02921,
+02922,
+02923,
+02924,
+02925,
+02927,
+02928,
+02931,
+02932,
+02933,
+02934,
+02935,
+02937,
+02938,
+02941,
+02942,
+02943,
+02944,
+02945,
+02947,
+02948,
+02951,
+02952,
+02953,
+02954,
+02955,
+02957,
+02958,
+02961,
+02962,
+02963,
+02964,
+02971,
+02972,
+02973,
+02974,
+02975,
+02977,
+02981,
+02982,
+02983,
+02984,
+02985,
+02991,
+02992,
+02993,
+02994,
+030,
+03301,
+03302,
+03303,
+03304,
+033051,
+033053,
+033054,
+033055,
+033056,
+03306,
+03307,
+033080,
+033082,
+033083,
+033084,
+033085,
+033086,
+033087,
+033088,
+033089,
+033093,
+033094,
+0331,
+033200,
+033201,
+033202,
+033203,
+033204,
+033205,
+033206,
+033207,
+033208,
+033209,
+03321,
+03322,
+033230,
+033231,
+033232,
+033233,
+033234,
+033235,
+033237,
+033238,
+033239,
+03327,
+03328,
+03329,
+03331,
+03332,
+033331,
+033332,
+033333,
+033334,
+033335,
+033336,
+033337,
+033338,
+03334,
+03335,
+033361,
+033362,
+033363,
+033364,
+033365,
+033366,
+033367,
+033368,
+033369,
+03337,
+03338,
+033393,
+033394,
+033395,
+033396,
+033397,
+033398,
+03341,
+03342,
+033432,
+033433,
+033434,
+033435,
+033436,
+033437,
+033438,
+033439,
+03344,
+033451,
+033452,
+033454,
+033456,
+033457,
+033458,
+03346,
+033470,
+033472,
+033473,
+033474,
+033475,
+033476,
+033477,
+033478,
+033479,
+0335,
+033601,
+033602,
+033603,
+033604,
+033605,
+033606,
+033607,
+033608,
+033609,
+03361,
+03362,
+033631,
+033632,
+033633,
+033634,
+033635,
+033636,
+033637,
+033638,
+03364,
+033652,
+033653,
+033654,
+033655,
+033656,
+033657,
+03366,
+033671,
+033672,
+033673,
+033674,
+033675,
+033676,
+033677,
+033678,
+033679,
+033701,
+033702,
+033703,
+033704,
+033708,
+03371,
+03372,
+033731,
+033732,
+033733,
+033734,
+033741,
+033742,
+033743,
+033744,
+033745,
+033746,
+033747,
+033748,
+03375,
+033760,
+033762,
+033763,
+033764,
+033765,
+033766,
+033767,
+033768,
+033769,
+03377,
+03378,
+03379,
+03381,
+03382,
+033830,
+033831,
+033832,
+033833,
+033834,
+033835,
+033836,
+033837,
+033838,
+033839,
+033841,
+033843,
+033844,
+033845,
+033846,
+033847,
+033848,
+033849,
+03385,
+03386,
+033870,
+033872,
+033873,
+033874,
+033875,
+033876,
+033877,
+033878,
+03391,
+033920,
+033921,
+033922,
+033923,
+033924,
+033925,
+033926,
+033928,
+033929,
+033931,
+033932,
+033933,
+03394,
+03395,
+033962,
+033963,
+033964,
+033965,
+033966,
+033967,
+033968,
+033969,
+033970,
+033971,
+033972,
+033973,
+033974,
+033975,
+033976,
+033977,
+033978,
+033979,
+033981,
+033982,
+033983,
+033984,
+033986,
+033989,
+0340,
+0341,
+034202,
+034203,
+034204,
+034205,
+034206,
+034207,
+034208,
+03421,
+034221,
+034222,
+034223,
+034224,
+03423,
+034241,
+034242,
+034243,
+034244,
+03425,
+034261,
+034262,
+034263,
+034291,
+034292,
+034293,
+034294,
+034295,
+034296,
+034297,
+034298,
+034299,
+03431,
+034321,
+034322,
+034324,
+034325,
+034327,
+034328,
+03433,
+034341,
+034342,
+034343,
+034344,
+034345,
+034346,
+034347,
+034348,
+03435,
+034361,
+034362,
+034363,
+034364,
+03437,
+034381,
+034382,
+034383,
+034384,
+034385,
+034386,
+03441,
+034422,
+034423,
+034424,
+034425,
+034426,
+03443,
+034441,
+034443,
+034444,
+034445,
+034446,
+03445,
+034461,
+034462,
+034463,
+034464,
+034465,
+034466,
+034467,
+03447,
+03448,
+034491,
+034492,
+034493,
+034494,
+034495,
+034496,
+034497,
+034498,
+0345,
+034600,
+034601,
+034602,
+034603,
+034604,
+034605,
+034606,
+034607,
+034609,
+03461,
+03462,
+034632,
+034633,
+034635,
+034636,
+034637,
+034638,
+034639,
+03464,
+034651,
+034652,
+034653,
+034654,
+034656,
+034658,
+034659,
+03466,
+034671,
+034672,
+034673,
+034691,
+034692,
+03471,
+034721,
+034722,
+03473,
+034741,
+034742,
+034743,
+034745,
+034746,
+03475,
+03476,
+034771,
+034772,
+034773,
+034774,
+034775,
+034776,
+034779,
+034781,
+034782,
+034783,
+034785,
+034901,
+034903,
+034904,
+034905,
+034906,
+034907,
+034909,
+03491,
+034920,
+034921,
+034922,
+034923,
+034924,
+034925,
+034926,
+034927,
+034928,
+034929,
+03493,
+03494,
+034953,
+034954,
+034955,
+034956,
+03496,
+034973,
+034975,
+034976,
+034977,
+034978,
+034979,
+03501,
+035020,
+035021,
+035022,
+035023,
+035024,
+035025,
+035026,
+035027,
+035028,
+035032,
+035033,
+03504,
+035052,
+035053,
+035054,
+035055,
+035056,
+035057,
+035058,
+0351,
+035200,
+035201,
+035202,
+035203,
+035204,
+035205,
+035206,
+035207,
+035208,
+035209,
+03521,
+03522,
+03523,
+035240,
+035241,
+035242,
+035243,
+035244,
+035245,
+035246,
+035247,
+035248,
+035249,
+03525,
+035263,
+035264,
+035265,
+035266,
+035267,
+035268,
+03528,
+03529,
+03531,
+035322,
+035323,
+035324,
+035325,
+035326,
+035327,
+035329,
+03533,
+035341,
+035342,
+035343,
+03535,
+035361,
+035362,
+035363,
+035364,
+035365,
+03537,
+035383,
+035384,
+035385,
+035386,
+035387,
+035388,
+035389,
+03541,
+03542,
+035433,
+035434,
+035435,
+035436,
+035439,
+03544,
+035451,
+035452,
+035453,
+035454,
+035455,
+035456,
+03546,
+035471,
+035472,
+035473,
+035474,
+035475,
+035476,
+035477,
+035478,
+0355,
+035600,
+035601,
+035602,
+035603,
+035604,
+035605,
+035606,
+035607,
+035608,
+035609,
+03561,
+03562,
+03563,
+03564,
+035691,
+035692,
+035693,
+035694,
+035695,
+035696,
+035697,
+035698,
+03571,
+035722,
+035723,
+035724,
+035725,
+035726,
+035727,
+035728,
+03573,
+03574,
+035751,
+035752,
+035753,
+035754,
+035755,
+035756,
+03576,
+035771,
+035772,
+035773,
+035774,
+035775,
+03578,
+035792,
+035793,
+035795,
+035796,
+035797,
+03581,
+035820,
+035822,
+035823,
+035825,
+035826,
+035827,
+035828,
+035829,
+03583,
+035841,
+035842,
+035843,
+035844,
+03585,
+03586,
+035872,
+035873,
+035874,
+035875,
+035876,
+035877,
+03588,
+035891,
+035892,
+035893,
+035894,
+035895,
+03591,
+03592,
+035930,
+035931,
+035932,
+035933,
+035934,
+035935,
+035936,
+035937,
+035938,
+035939,
+03594,
+035951,
+035952,
+035953,
+035954,
+035955,
+03596,
+035971,
+035973,
+035974,
+035975,
+03601,
+036020,
+036021,
+036022,
+036023,
+036024,
+036025,
+036026,
+036027,
+036028,
+036029,
+03603,
+036041,
+036042,
+036043,
+03605,
+03606,
+036071,
+036072,
+036074,
+036075,
+036076,
+036077,
+036081,
+036082,
+036083,
+036084,
+036085,
+036087,
+0361,
+036200,
+036201,
+036202,
+036203,
+036204,
+036205,
+036206,
+036207,
+036208,
+036209,
+03621,
+03622,
+03623,
+03624,
+036252,
+036253,
+036254,
+036255,
+036256,
+036257,
+036258,
+036259,
+03628,
+03629,
+03631,
+03632,
+036330,
+036331,
+036332,
+036333,
+036334,
+036335,
+036336,
+036337,
+036338,
+03634,
+03635,
+03636,
+036370,
+036371,
+036372,
+036373,
+036374,
+036375,
+036376,
+036377,
+036378,
+036379,
+03641,
+036421,
+036422,
+036423,
+036424,
+036425,
+036426,
+036427,
+036428,
+03643,
+03644,
+036450,
+036451,
+036452,
+036453,
+036454,
+036458,
+036459,
+036461,
+036462,
+036463,
+036464,
+036465,
+03647,
+036481,
+036482,
+036483,
+036484,
+0365,
+036601,
+036602,
+036603,
+036604,
+036605,
+036606,
+036607,
+036608,
+03661,
+036621,
+036622,
+036623,
+036624,
+036625,
+036626,
+036628,
+03663,
+036640,
+036642,
+036643,
+036644,
+036645,
+036646,
+036647,
+036648,
+036649,
+036651,
+036652,
+036653,
+036691,
+036692,
+036693,
+036694,
+036695,
+036701,
+036702,
+036703,
+036704,
+036705,
+03671,
+03672,
+036730,
+036731,
+036732,
+036733,
+036734,
+036735,
+036736,
+036737,
+036738,
+036739,
+036741,
+036742,
+036743,
+036744,
+03675,
+036761,
+036762,
+036764,
+036766,
+03677,
+036781,
+036782,
+036783,
+036784,
+036785,
+03679,
+03681,
+03682,
+03683,
+036840,
+036841,
+036842,
+036843,
+036844,
+036845,
+036846,
+036847,
+036848,
+036849,
+03685,
+03686,
+036870,
+036871,
+036873,
+036874,
+036875,
+036878,
+03691,
+036920,
+036921,
+036922,
+036923,
+036924,
+036925,
+036926,
+036927,
+036928,
+036929,
+03693,
+036940,
+036941,
+036943,
+036944,
+036945,
+036946,
+036947,
+036948,
+036949,
+03695,
+036961,
+036962,
+036963,
+036964,
+036965,
+036966,
+036967,
+036968,
+036969,
+0371,
+037200,
+037202,
+037203,
+037204,
+037206,
+037207,
+037208,
+037209,
+03721,
+03722,
+03723,
+03724,
+03725,
+03726,
+03727,
+037291,
+037292,
+037293,
+037294,
+037295,
+037296,
+037297,
+037298,
+03731,
+037320,
+037321,
+037322,
+037323,
+037324,
+037325,
+037326,
+037327,
+037328,
+037329,
+03733,
+037341,
+037342,
+037343,
+037344,
+037346,
+037347,
+037348,
+037349,
+03735,
+037360,
+037361,
+037362,
+037363,
+037364,
+037365,
+037366,
+037367,
+037368,
+037369,
+03737,
+037381,
+037382,
+037383,
+037384,
+03741,
+037421,
+037422,
+037423,
+037430,
+037431,
+037432,
+037433,
+037434,
+037435,
+037436,
+037437,
+037438,
+037439,
+03744,
+03745,
+037462,
+037463,
+037464,
+037465,
+037467,
+037468,
+0375,
+037600,
+037601,
+037602,
+037603,
+037604,
+037605,
+037606,
+037607,
+037608,
+037609,
+03761,
+03762,
+03763,
+03764,
+03765,
+03771,
+03772,
+03773,
+03774,
+037752,
+037754,
+037755,
+037756,
+037757,
+0381,
+038201,
+038202,
+038203,
+038204,
+038205,
+038206,
+038207,
+038208,
+038209,
+03821,
+038220,
+038221,
+038222,
+038223,
+038224,
+038225,
+038226,
+038227,
+038228,
+038229,
+038231,
+038232,
+038233,
+038234,
+038292,
+038293,
+038294,
+038295,
+038296,
+038297,
+038300,
+038301,
+038302,
+038303,
+038304,
+038305,
+038306,
+038307,
+038308,
+038309,
+03831,
+038320,
+038321,
+038322,
+038323,
+038324,
+038325,
+038326,
+038327,
+038328,
+038331,
+038332,
+038333,
+038334,
+03834,
+038351,
+038352,
+038353,
+038354,
+038355,
+038356,
+03836,
+038370,
+038371,
+038372,
+038373,
+038374,
+038375,
+038376,
+038377,
+038378,
+038379,
+03838,
+038391,
+038392,
+038393,
+03841,
+038422,
+038423,
+038424,
+038425,
+038426,
+038427,
+038428,
+038429,
+03843,
+03844,
+038450,
+038451,
+038452,
+038453,
+038454,
+038455,
+038456,
+038457,
+038458,
+038459,
+038461,
+038462,
+038464,
+038466,
+03847,
+038481,
+038482,
+038483,
+038484,
+038485,
+038486,
+038488,
+0385,
+03860,
+03861,
+03863,
+03865,
+03866,
+03867,
+03868,
+03869,
+03871,
+038720,
+038721,
+038722,
+038723,
+038724,
+038725,
+038726,
+038727,
+038728,
+038729,
+038731,
+038732,
+038733,
+038735,
+038736,
+038737,
+038738,
+03874,
+038750,
+038751,
+038752,
+038753,
+038754,
+038755,
+038756,
+038757,
+038758,
+038759,
+03876,
+03877,
+038780,
+038781,
+038782,
+038783,
+038784,
+038785,
+038787,
+038788,
+038789,
+038791,
+038792,
+038793,
+038794,
+038796,
+038797,
+03881,
+038821,
+038822,
+038823,
+038824,
+038825,
+038826,
+038827,
+038828,
+03883,
+038841,
+038842,
+038843,
+038844,
+038845,
+038847,
+038848,
+038850,
+038851,
+038852,
+038853,
+038854,
+038855,
+038856,
+038858,
+038859,
+03886,
+038871,
+038872,
+038873,
+038874,
+038875,
+038876,
+039000,
+039001,
+039002,
+039003,
+039004,
+039005,
+039006,
+039007,
+039008,
+039009,
+03901,
+03902,
+039030,
+039031,
+039032,
+039033,
+039034,
+039035,
+039036,
+039037,
+039038,
+039039,
+03904,
+039050,
+039051,
+039052,
+039053,
+039054,
+039055,
+039056,
+039057,
+039058,
+039059,
+039061,
+039062,
+03907,
+039080,
+039081,
+039082,
+039083,
+039084,
+039085,
+039086,
+039087,
+039088,
+039089,
+03909,
+0391,
+039200,
+039201,
+039202,
+039203,
+039204,
+039205,
+039206,
+039207,
+039208,
+039209,
+03921,
+039221,
+039222,
+039223,
+039224,
+039225,
+039226,
+03923,
+039241,
+039242,
+039243,
+039244,
+039245,
+039246,
+039247,
+039248,
+03925,
+039262,
+039263,
+039264,
+039265,
+039266,
+039267,
+039268,
+03928,
+039291,
+039292,
+039293,
+039294,
+039295,
+039296,
+039297,
+039298,
+03931,
+039320,
+039321,
+039322,
+039323,
+039324,
+039325,
+039327,
+039328,
+039329,
+03933,
+039341,
+039342,
+039343,
+039344,
+039345,
+039346,
+039347,
+039348,
+039349,
+03935,
+039361,
+039362,
+039363,
+039364,
+039365,
+039366,
+03937,
+039382,
+039383,
+039384,
+039386,
+039387,
+039388,
+039389,
+039390,
+039391,
+039392,
+039393,
+039394,
+039395,
+039396,
+039397,
+039398,
+039399,
+039400,
+039401,
+039402,
+039403,
+039404,
+039405,
+039406,
+039407,
+039408,
+039409,
+03941,
+039421,
+039422,
+039423,
+039424,
+039425,
+039426,
+039427,
+039428,
+03943,
+03944,
+039451,
+039452,
+039453,
+039454,
+039455,
+039456,
+039457,
+039458,
+039459,
+03946,
+03947,
+039481,
+039482,
+039483,
+039484,
+039485,
+039487,
+039488,
+039489,
+03949,
+0395,
+039600,
+039601,
+039602,
+039603,
+039604,
+039605,
+039606,
+039607,
+039608,
+03961,
+03962,
+03963,
+03964,
+03965,
+03966,
+03967,
+03968,
+03969,
+03971,
+039721,
+039722,
+039723,
+039724,
+039726,
+039727,
+039728,
+03973,
+039740,
+039741,
+039742,
+039743,
+039744,
+039745,
+039746,
+039747,
+039748,
+039749,
+039751,
+039752,
+039753,
+039754,
+03976,
+039771,
+039772,
+039773,
+039774,
+039775,
+039776,
+039777,
+039778,
+039779,
+03981,
+039820,
+039821,
+039822,
+039823,
+039824,
+039825,
+039826,
+039827,
+039828,
+039829,
+039831,
+039832,
+039833,
+03984,
+039851,
+039852,
+039853,
+039854,
+039855,
+039856,
+039857,
+039858,
+039859,
+039861,
+039862,
+039863,
+03987,
+039881,
+039882,
+039883,
+039884,
+039885,
+039886,
+039887,
+039888,
+039889,
+03991,
+039921,
+039922,
+039923,
+039924,
+039925,
+039926,
+039927,
+039928,
+039929,
+039931,
+039932,
+039933,
+039934,
+03994,
+039951,
+039952,
+039953,
+039954,
+039955,
+039956,
+039957,
+039959,
+03996,
+039971,
+039972,
+039973,
+039975,
+039976,
+039977,
+039978,
+03998,
+039991,
+039992,
+039993,
+039994,
+039995,
+039996,
+039997,
+039998,
+039999,
+040,
+04101,
+04102,
+04103,
+04104,
+04105,
+04106,
+04107,
+04108,
+04109,
+04120,
+04121,
+04122,
+04123,
+04124,
+04125,
+04126,
+04127,
+04128,
+04129,
+04131,
+04132,
+04133,
+04134,
+04135,
+04136,
+04137,
+04138,
+04139,
+04140,
+04141,
+04142,
+04143,
+04144,
+04146,
+04148,
+04149,
+04151,
+04152,
+04153,
+04154,
+04155,
+04156,
+04158,
+04159,
+04161,
+04162,
+04163,
+04164,
+04165,
+04166,
+04167,
+04168,
+04169,
+04171,
+04172,
+04173,
+04174,
+04175,
+04176,
+04177,
+04178,
+04179,
+04180,
+04181,
+04182,
+04183,
+04184,
+04185,
+04186,
+04187,
+04188,
+04189,
+04191,
+04192,
+04193,
+04194,
+04195,
+04202,
+04203,
+04204,
+04205,
+04206,
+04207,
+04208,
+04209,
+0421,
+04221,
+04222,
+04223,
+04224,
+04230,
+04231,
+04232,
+04233,
+04234,
+04235,
+04236,
+04237,
+04238,
+04239,
+04240,
+04241,
+04242,
+04243,
+04244,
+04245,
+04246,
+04247,
+04248,
+04249,
+04251,
+04252,
+04253,
+04254,
+04255,
+04256,
+04257,
+04258,
+04260,
+04261,
+04262,
+04263,
+04264,
+04265,
+04266,
+04267,
+04268,
+04269,
+04271,
+04272,
+04273,
+04274,
+04275,
+04276,
+04277,
+04281,
+04282,
+04283,
+04284,
+04285,
+04286,
+04287,
+04288,
+04289,
+04292,
+04293,
+04294,
+04295,
+04296,
+04297,
+04298,
+04302,
+04303,
+04305,
+04307,
+04308,
+0431,
+04320,
+04321,
+04322,
+04323,
+04324,
+04326,
+04327,
+04328,
+04329,
+04330,
+04331,
+04332,
+04333,
+04334,
+04335,
+04336,
+04337,
+04338,
+04339,
+04340,
+04342,
+04343,
+04344,
+04346,
+04347,
+04348,
+04349,
+04351,
+04352,
+04353,
+04354,
+04355,
+04356,
+04357,
+04358,
+04361,
+04362,
+04363,
+04364,
+04365,
+04366,
+04367,
+04371,
+04372,
+04381,
+04382,
+04383,
+04384,
+04385,
+04392,
+04393,
+04394,
+04401,
+04402,
+04403,
+04404,
+04405,
+04406,
+04407,
+04408,
+04409,
+0441,
+04421,
+04422,
+04423,
+04425,
+04426,
+04431,
+04432,
+04433,
+04434,
+04435,
+04441,
+04442,
+04443,
+04444,
+04445,
+04446,
+04447,
+04451,
+04452,
+04453,
+04454,
+04455,
+04456,
+04458,
+04461,
+04462,
+04463,
+04464,
+04465,
+04466,
+04467,
+04468,
+04469,
+04471,
+04472,
+04473,
+04474,
+04475,
+04477,
+04478,
+04479,
+04480,
+04481,
+04482,
+04483,
+04484,
+04485,
+04486,
+04487,
+04488,
+04489,
+04491,
+04492,
+04493,
+04494,
+04495,
+04496,
+04497,
+04498,
+04499,
+04501,
+04502,
+04503,
+04504,
+04505,
+04506,
+04508,
+04509,
+0451,
+04521,
+04522,
+04523,
+04524,
+04525,
+04526,
+04527,
+04528,
+04529,
+04531,
+04532,
+04533,
+04534,
+04535,
+04536,
+04537,
+04539,
+04541,
+04542,
+04543,
+04544,
+04545,
+04546,
+04547,
+04550,
+04551,
+04552,
+04553,
+04554,
+04555,
+04556,
+04557,
+04558,
+04559,
+04561,
+04562,
+04563,
+04564,
+04602,
+04603,
+04604,
+04605,
+04606,
+04607,
+04608,
+04609,
+0461,
+04621,
+04622,
+04623,
+04624,
+04625,
+04626,
+04627,
+04630,
+04631,
+04632,
+04633,
+04634,
+04635,
+04636,
+04637,
+04638,
+04639,
+04641,
+04642,
+04643,
+04644,
+04646,
+04651,
+04661,
+04662,
+04663,
+04664,
+04665,
+04666,
+04667,
+04668,
+04671,
+04672,
+04673,
+04674,
+04681,
+04682,
+04683,
+04684,
+04702,
+04703,
+04704,
+04705,
+04706,
+04707,
+04708,
+0471,
+04721,
+04722,
+04723,
+04724,
+04725,
+04731,
+04732,
+04733,
+04734,
+04735,
+04736,
+04737,
+04740,
+04741,
+04742,
+04743,
+04744,
+04745,
+04746,
+04747,
+04748,
+04749,
+04751,
+04752,
+04753,
+04754,
+04755,
+04756,
+04757,
+04758,
+04761,
+04762,
+04763,
+04764,
+04765,
+04766,
+04767,
+04768,
+04769,
+04770,
+04771,
+04772,
+04773,
+04774,
+04775,
+04776,
+04777,
+04778,
+04779,
+04791,
+04792,
+04793,
+04794,
+04795,
+04796,
+04802,
+04803,
+04804,
+04805,
+04806,
+0481,
+04821,
+04822,
+04823,
+04824,
+04825,
+04826,
+04827,
+04828,
+04829,
+04830,
+04832,
+04833,
+04834,
+04835,
+04836,
+04837,
+04838,
+04839,
+04841,
+04842,
+04843,
+04844,
+04845,
+04846,
+04847,
+04848,
+04849,
+04851,
+04852,
+04853,
+04854,
+04855,
+04856,
+04857,
+04858,
+04859,
+04861,
+04862,
+04863,
+04864,
+04865,
+04871,
+04872,
+04873,
+04874,
+04875,
+04876,
+04877,
+04881,
+04882,
+04883,
+04884,
+04885,
+04892,
+04893,
+04902,
+04903,
+0491,
+04920,
+04921,
+04922,
+04923,
+04924,
+04925,
+04926,
+04927,
+04928,
+04929,
+04931,
+04932,
+04933,
+04934,
+04935,
+04936,
+04938,
+04939,
+04941,
+04942,
+04943,
+04944,
+04945,
+04946,
+04947,
+04948,
+04950,
+04951,
+04952,
+04953,
+04954,
+04955,
+04956,
+04957,
+04958,
+04959,
+04961,
+04962,
+04963,
+04964,
+04965,
+04966,
+04967,
+04968,
+04971,
+04972,
+04973,
+04974,
+04975,
+04976,
+04977,
+05021,
+05022,
+05023,
+05024,
+05025,
+05026,
+05027,
+05028,
+05031,
+05032,
+05033,
+05034,
+05035,
+05036,
+05037,
+05041,
+05042,
+05043,
+05044,
+05045,
+05051,
+05052,
+05053,
+05054,
+05055,
+05056,
+05060,
+05062,
+05063,
+05064,
+05065,
+05066,
+05067,
+05068,
+05069,
+05071,
+05072,
+05073,
+05074,
+05082,
+05083,
+05084,
+05085,
+05086,
+05101,
+05102,
+05103,
+05105,
+05108,
+05109,
+0511,
+05121,
+05123,
+05126,
+05127,
+05128,
+05129,
+05130,
+05131,
+05132,
+05135,
+05136,
+05137,
+05138,
+05139,
+05141,
+05142,
+05143,
+05144,
+05145,
+05146,
+05147,
+05148,
+05149,
+05151,
+05152,
+05153,
+05154,
+05155,
+05156,
+05157,
+05158,
+05159,
+05161,
+05162,
+05163,
+05164,
+05165,
+05166,
+05167,
+05168,
+05171,
+05172,
+05173,
+05174,
+05175,
+05176,
+05177,
+05181,
+05182,
+05183,
+05184,
+05185,
+05186,
+05187,
+05190,
+05191,
+05192,
+05193,
+05194,
+05195,
+05196,
+05197,
+05198,
+05199,
+05201,
+05202,
+05203,
+05204,
+05205,
+05206,
+05207,
+05208,
+05209,
+0521,
+05221,
+05222,
+05223,
+05224,
+05225,
+05226,
+05228,
+05231,
+05232,
+05233,
+05234,
+05235,
+05236,
+05237,
+05238,
+05241,
+05242,
+05244,
+05245,
+05246,
+05247,
+05248,
+05250,
+05251,
+05252,
+05253,
+05254,
+05255,
+05257,
+05258,
+05259,
+05261,
+05262,
+05263,
+05264,
+05265,
+05266,
+05271,
+05272,
+05273,
+05274,
+05275,
+05276,
+05277,
+05278,
+05281,
+05282,
+05283,
+05284,
+05285,
+05286,
+05292,
+05293,
+05294,
+05295,
+05300,
+05301,
+05302,
+05303,
+05304,
+05305,
+05306,
+05307,
+05308,
+05309,
+0531,
+05320,
+05321,
+05322,
+05323,
+05324,
+05325,
+05326,
+05327,
+05328,
+05329,
+05331,
+05332,
+05333,
+05334,
+05335,
+05336,
+05337,
+05339,
+05341,
+05344,
+05345,
+05346,
+05347,
+05351,
+05352,
+05353,
+05354,
+05355,
+05356,
+05357,
+05358,
+05361,
+05362,
+05363,
+05364,
+05365,
+05366,
+05367,
+05368,
+05371,
+05372,
+05373,
+05374,
+05375,
+05376,
+05377,
+05378,
+05379,
+05381,
+05382,
+05383,
+05384,
+05401,
+05402,
+05403,
+05404,
+05405,
+05406,
+05407,
+05409,
+0541,
+05421,
+05422,
+05423,
+05424,
+05425,
+05426,
+05427,
+05428,
+05429,
+05431,
+05432,
+05433,
+05434,
+05435,
+05436,
+05437,
+05438,
+05439,
+05441,
+05442,
+05443,
+05444,
+05445,
+05446,
+05447,
+05448,
+05451,
+05452,
+05453,
+05454,
+05455,
+05456,
+05457,
+05458,
+05459,
+05461,
+05462,
+05464,
+05465,
+05466,
+05467,
+05468,
+05471,
+05472,
+05473,
+05474,
+05475,
+05476,
+05481,
+05482,
+05483,
+05484,
+05485,
+05491,
+05492,
+05493,
+05494,
+05495,
+05502,
+05503,
+05504,
+05505,
+05506,
+05507,
+05508,
+05509,
+0551,
+05520,
+05521,
+05522,
+05523,
+05524,
+05525,
+05527,
+05528,
+05529,
+05531,
+05532,
+05533,
+05534,
+05535,
+05536,
+05541,
+05542,
+05543,
+05544,
+05545,
+05546,
+05551,
+05552,
+05553,
+05554,
+05555,
+05556,
+05561,
+05562,
+05563,
+05564,
+05565,
+05571,
+05572,
+05573,
+05574,
+05582,
+05583,
+05584,
+05585,
+05586,
+05592,
+05593,
+05594,
+05601,
+05602,
+05603,
+05604,
+05605,
+05606,
+05607,
+05608,
+05609,
+0561,
+05621,
+05622,
+05623,
+05624,
+05625,
+05626,
+05631,
+05632,
+05633,
+05634,
+05635,
+05636,
+05641,
+05642,
+05643,
+05644,
+05645,
+05646,
+05647,
+05648,
+05650,
+05651,
+05652,
+05653,
+05654,
+05655,
+05656,
+05657,
+05658,
+05659,
+05661,
+05662,
+05663,
+05664,
+05665,
+05671,
+05672,
+05673,
+05674,
+05675,
+05676,
+05677,
+05681,
+05682,
+05683,
+05684,
+05685,
+05686,
+05691,
+05692,
+05693,
+05694,
+05695,
+05696,
+05702,
+05703,
+05704,
+05705,
+05706,
+05707,
+0571,
+05721,
+05722,
+05723,
+05724,
+05725,
+05726,
+05731,
+05732,
+05733,
+05734,
+05741,
+05742,
+05743,
+05744,
+05745,
+05746,
+05751,
+05752,
+05753,
+05754,
+05755,
+05761,
+05763,
+05764,
+05765,
+05766,
+05767,
+05768,
+05769,
+05771,
+05772,
+05773,
+05774,
+05775,
+05776,
+05777,
+05802,
+05803,
+05804,
+05805,
+05806,
+05807,
+05808,
+0581,
+05820,
+05821,
+05822,
+05823,
+05824,
+05825,
+05826,
+05827,
+05828,
+05829,
+05831,
+05832,
+05833,
+05834,
+05835,
+05836,
+05837,
+05838,
+05839,
+05840,
+05841,
+05842,
+05843,
+05844,
+05845,
+05846,
+05848,
+05849,
+05850,
+05851,
+05852,
+05853,
+05854,
+05855,
+05857,
+05858,
+05859,
+05861,
+05862,
+05863,
+05864,
+05865,
+05872,
+05873,
+05874,
+05875,
+05882,
+05883,
+05901,
+05902,
+05903,
+05904,
+05905,
+05906,
+05907,
+05908,
+05909,
+0591,
+05921,
+05922,
+05923,
+05924,
+05925,
+05926,
+05931,
+05932,
+05933,
+05934,
+05935,
+05936,
+05937,
+05939,
+05941,
+05942,
+05943,
+05944,
+05945,
+05946,
+05947,
+05948,
+05951,
+05952,
+05953,
+05954,
+05955,
+05956,
+05957,
+05961,
+05962,
+05963,
+05964,
+05965,
+05966,
+05971,
+05973,
+05975,
+05976,
+05977,
+05978,
+06002,
+06003,
+06004,
+06007,
+06008,
+06020,
+06021,
+06022,
+06023,
+06024,
+06026,
+06027,
+06028,
+06029,
+06031,
+06032,
+06033,
+06034,
+06035,
+06036,
+06039,
+06041,
+06042,
+06043,
+06044,
+06045,
+06046,
+06047,
+06048,
+06049,
+06050,
+06051,
+06052,
+06053,
+06054,
+06055,
+06056,
+06057,
+06058,
+06059,
+06061,
+06062,
+06063,
+06066,
+06068,
+06071,
+06073,
+06074,
+06078,
+06081,
+06082,
+06083,
+06084,
+06085,
+06086,
+06087,
+06092,
+06093,
+06094,
+06095,
+06096,
+06101,
+06102,
+06103,
+06104,
+06105,
+06106,
+06107,
+06108,
+06109,
+0611,
+06120,
+06122,
+06123,
+06124,
+06126,
+06127,
+06128,
+06129,
+06130,
+06131,
+06132,
+06133,
+06134,
+06135,
+06136,
+06138,
+06139,
+06142,
+06144,
+06145,
+06146,
+06147,
+06150,
+06151,
+06152,
+06154,
+06155,
+06157,
+06158,
+06159,
+06161,
+06162,
+06163,
+06164,
+06165,
+06166,
+06167,
+06171,
+06172,
+06173,
+06174,
+06175,
+06181,
+06182,
+06183,
+06184,
+06185,
+06186,
+06187,
+06188,
+06190,
+06192,
+06195,
+06196,
+06198,
+06201,
+06202,
+06203,
+06204,
+06205,
+06206,
+06207,
+06209,
+0621,
+06220,
+06221,
+06222,
+06223,
+06224,
+06226,
+06227,
+06228,
+06229,
+06231,
+06232,
+06233,
+06234,
+06235,
+06236,
+06237,
+06238,
+06239,
+06241,
+06242,
+06243,
+06244,
+06245,
+06246,
+06247,
+06249,
+06251,
+06252,
+06253,
+06254,
+06255,
+06256,
+06257,
+06258,
+06261,
+06262,
+06263,
+06264,
+06265,
+06266,
+06267,
+06268,
+06269,
+06271,
+06272,
+06274,
+06275,
+06276,
+06281,
+06282,
+06283,
+06284,
+06285,
+06286,
+06287,
+06291,
+06292,
+06293,
+06294,
+06295,
+06296,
+06297,
+06298,
+06301,
+06302,
+06303,
+06304,
+06305,
+06306,
+06307,
+06308,
+0631,
+06321,
+06322,
+06323,
+06324,
+06325,
+06326,
+06327,
+06328,
+06329,
+06331,
+06332,
+06333,
+06334,
+06335,
+06336,
+06337,
+06338,
+06339,
+06340,
+06341,
+06342,
+06343,
+06344,
+06345,
+06346,
+06347,
+06348,
+06349,
+06351,
+06352,
+06353,
+06355,
+06356,
+06357,
+06358,
+06359,
+06361,
+06362,
+06363,
+06364,
+06371,
+06372,
+06373,
+06374,
+06375,
+06381,
+06382,
+06383,
+06384,
+06385,
+06386,
+06387,
+06391,
+06392,
+06393,
+06394,
+06395,
+06396,
+06397,
+06398,
+06400,
+06401,
+06402,
+06403,
+06404,
+06405,
+06406,
+06407,
+06408,
+06409,
+0641,
+06420,
+06421,
+06422,
+06423,
+06424,
+06425,
+06426,
+06427,
+06428,
+06429,
+06430,
+06431,
+06432,
+06433,
+06434,
+06435,
+06436,
+06438,
+06439,
+06440,
+06441,
+06442,
+06443,
+06444,
+06445,
+06446,
+06447,
+06449,
+06451,
+06452,
+06453,
+06454,
+06455,
+06456,
+06457,
+06458,
+06461,
+06462,
+06464,
+06465,
+06466,
+06467,
+06468,
+06471,
+06472,
+06473,
+06474,
+06475,
+06476,
+06477,
+06478,
+06479,
+06482,
+06483,
+06484,
+06485,
+06486,
+06500,
+06501,
+06502,
+06503,
+06504,
+06505,
+06506,
+06507,
+06508,
+06509,
+0651,
+06522,
+06523,
+06524,
+06525,
+06526,
+06527,
+06531,
+06532,
+06533,
+06534,
+06535,
+06536,
+06541,
+06542,
+06543,
+06544,
+06545,
+06550,
+06551,
+06552,
+06553,
+06554,
+06555,
+06556,
+06557,
+06558,
+06559,
+06561,
+06562,
+06563,
+06564,
+06565,
+06566,
+06567,
+06568,
+06569,
+06571,
+06572,
+06573,
+06574,
+06575,
+06578,
+06580,
+06581,
+06582,
+06583,
+06584,
+06585,
+06586,
+06587,
+06588,
+06589,
+06591,
+06592,
+06593,
+06594,
+06595,
+06596,
+06597,
+06599,
+0661,
+06620,
+06621,
+06622,
+06623,
+06624,
+06625,
+06626,
+06627,
+06628,
+06629,
+06630,
+06631,
+06633,
+06634,
+06635,
+06636,
+06637,
+06638,
+06639,
+06641,
+06642,
+06643,
+06644,
+06645,
+06646,
+06647,
+06648,
+06650,
+06651,
+06652,
+06653,
+06654,
+06655,
+06656,
+06657,
+06658,
+06659,
+06660,
+06661,
+06663,
+06664,
+06665,
+06666,
+06667,
+06668,
+06669,
+06670,
+06672,
+06673,
+06674,
+06675,
+06676,
+06677,
+06678,
+06681,
+06682,
+06683,
+06684,
+06691,
+06692,
+06693,
+06694,
+06695,
+06696,
+06697,
+06698,
+06701,
+06703,
+06704,
+06706,
+06707,
+06708,
+06709,
+0671,
+06721,
+06722,
+06723,
+06724,
+06725,
+06726,
+06727,
+06728,
+06731,
+06732,
+06733,
+06734,
+06735,
+06736,
+06737,
+06741,
+06742,
+06743,
+06744,
+06745,
+06746,
+06747,
+06751,
+06752,
+06753,
+06754,
+06755,
+06756,
+06757,
+06758,
+06761,
+06762,
+06763,
+06764,
+06765,
+06766,
+06771,
+06772,
+06773,
+06774,
+06775,
+06776,
+06781,
+06782,
+06783,
+06784,
+06785,
+06786,
+06787,
+06788,
+06789,
+06802,
+06803,
+06804,
+06805,
+06806,
+06809,
+0681,
+06821,
+06824,
+06825,
+06826,
+06827,
+06831,
+06832,
+06833,
+06834,
+06835,
+06836,
+06837,
+06838,
+06841,
+06842,
+06843,
+06844,
+06848,
+06849,
+06851,
+06852,
+06853,
+06854,
+06855,
+06856,
+06857,
+06858,
+06861,
+06864,
+06865,
+06866,
+06867,
+06868,
+06869,
+06871,
+06872,
+06873,
+06874,
+06875,
+06876,
+06881,
+06887,
+06888,
+06893,
+06894,
+06897,
+06898,
+069,
+07021,
+07022,
+07023,
+07024,
+07025,
+07026,
+07031,
+07032,
+07033,
+07034,
+07041,
+07042,
+07043,
+07044,
+07045,
+07046,
+07051,
+07052,
+07053,
+07054,
+07055,
+07056,
+07062,
+07063,
+07066,
+07071,
+07072,
+07073,
+07081,
+07082,
+07083,
+07084,
+07085,
+0711,
+07121,
+07122,
+07123,
+07124,
+07125,
+07126,
+07127,
+07128,
+07129,
+07130,
+07131,
+07132,
+07133,
+07134,
+07135,
+07136,
+07138,
+07139,
+07141,
+07142,
+07143,
+07144,
+07145,
+07146,
+07147,
+07148,
+07150,
+07151,
+07152,
+07153,
+07154,
+07156,
+07157,
+07158,
+07159,
+07161,
+07162,
+07163,
+07164,
+07165,
+07166,
+07171,
+07172,
+07173,
+07174,
+07175,
+07176,
+07181,
+07182,
+07183,
+07184,
+07191,
+07192,
+07193,
+07194,
+07195,
+07202,
+07203,
+07204,
+0721,
+07220,
+07221,
+07222,
+07223,
+07224,
+07225,
+07226,
+07227,
+07228,
+07229,
+07231,
+07232,
+07233,
+07234,
+07235,
+07236,
+07237,
+07240,
+07242,
+07243,
+07244,
+07245,
+07246,
+07247,
+07248,
+07249,
+07250,
+07251,
+07252,
+07253,
+07254,
+07255,
+07256,
+07257,
+07258,
+07259,
+07260,
+07261,
+07262,
+07263,
+07264,
+07265,
+07266,
+07267,
+07268,
+07269,
+07271,
+07272,
+07273,
+07274,
+07275,
+07276,
+07277,
+07300,
+07302,
+07303,
+07304,
+07305,
+07306,
+07307,
+07308,
+07309,
+0731,
+07321,
+07322,
+07323,
+07324,
+07325,
+07326,
+07327,
+07328,
+07329,
+07331,
+07332,
+07333,
+07334,
+07335,
+07336,
+07337,
+07340,
+07343,
+07344,
+07345,
+07346,
+07347,
+07348,
+07351,
+07352,
+07353,
+07354,
+07355,
+07356,
+07357,
+07358,
+07361,
+07362,
+07363,
+07364,
+07365,
+07366,
+07367,
+07371,
+07373,
+07374,
+07375,
+07376,
+07381,
+07382,
+07383,
+07384,
+07385,
+07386,
+07387,
+07388,
+07389,
+07391,
+07392,
+07393,
+07394,
+07395,
+07402,
+07403,
+07404,
+0741,
+07420,
+07422,
+07423,
+07424,
+07425,
+07426,
+07427,
+07428,
+07429,
+07431,
+07432,
+07433,
+07434,
+07435,
+07436,
+07440,
+07441,
+07442,
+07443,
+07444,
+07445,
+07446,
+07447,
+07448,
+07449,
+07451,
+07452,
+07453,
+07454,
+07455,
+07456,
+07457,
+07458,
+07459,
+07461,
+07462,
+07463,
+07464,
+07465,
+07466,
+07467,
+07471,
+07472,
+07473,
+07474,
+07475,
+07476,
+07477,
+07478,
+07482,
+07483,
+07484,
+07485,
+07486,
+07502,
+07503,
+07504,
+07505,
+07506,
+0751,
+07520,
+07522,
+07524,
+07525,
+07527,
+07528,
+07529,
+07531,
+07532,
+07533,
+07534,
+07541,
+07542,
+07543,
+07544,
+07545,
+07546,
+07551,
+07552,
+07553,
+07554,
+07555,
+07556,
+07557,
+07558,
+07561,
+07562,
+07563,
+07564,
+07565,
+07566,
+07567,
+07568,
+07569,
+07570,
+07571,
+07572,
+07573,
+07574,
+07575,
+07576,
+07577,
+07578,
+07579,
+07581,
+07582,
+07583,
+07584,
+07585,
+07586,
+07587,
+07602,
+0761,
+07620,
+07621,
+07622,
+07623,
+07624,
+07625,
+07626,
+07627,
+07628,
+07629,
+07631,
+07632,
+07633,
+07634,
+07635,
+07636,
+07641,
+07642,
+07643,
+07644,
+07645,
+07646,
+07651,
+07652,
+07653,
+07654,
+07655,
+07656,
+07657,
+07660,
+07661,
+07662,
+07663,
+07664,
+07665,
+07666,
+07667,
+07668,
+07669,
+07671,
+07672,
+07673,
+07674,
+07675,
+07676,
+07681,
+07682,
+07683,
+07684,
+07685,
+07702,
+07703,
+07704,
+07705,
+07706,
+07707,
+07708,
+07709,
+0771,
+07720,
+07721,
+07722,
+07723,
+07724,
+07725,
+07726,
+07727,
+07728,
+07729,
+07731,
+07732,
+07733,
+07734,
+07735,
+07736,
+07738,
+07739,
+07741,
+07742,
+07743,
+07744,
+07745,
+07746,
+07747,
+07748,
+07751,
+07753,
+07754,
+07755,
+07761,
+07762,
+07763,
+07764,
+07765,
+07771,
+07773,
+07774,
+07775,
+07777,
+07802,
+07803,
+07804,
+07805,
+07806,
+07807,
+07808,
+0781,
+07821,
+07822,
+07823,
+07824,
+07825,
+07826,
+07831,
+07832,
+07833,
+07834,
+07835,
+07836,
+07837,
+07838,
+07839,
+07841,
+07842,
+07843,
+07844,
+07851,
+07852,
+07853,
+07854,
+07903,
+07904,
+07905,
+07906,
+07907,
+0791,
+07930,
+07931,
+07932,
+07933,
+07934,
+07935,
+07936,
+07937,
+07938,
+07939,
+07940,
+07941,
+07942,
+07943,
+07944,
+07945,
+07946,
+07947,
+07948,
+07949,
+07950,
+07951,
+07952,
+07953,
+07954,
+07955,
+07957,
+07958,
+07959,
+07961,
+07962,
+07963,
+07964,
+07965,
+07966,
+07967,
+07971,
+07972,
+07973,
+07974,
+07975,
+07976,
+07977,
+08020,
+08021,
+08022,
+08023,
+08024,
+08025,
+08026,
+08027,
+08028,
+08029,
+08031,
+08032,
+08033,
+08034,
+08035,
+08036,
+08038,
+08039,
+08041,
+08042,
+08043,
+08045,
+08046,
+08051,
+08052,
+08053,
+08054,
+08055,
+08056,
+08057,
+08061,
+08062,
+08063,
+08064,
+08065,
+08066,
+08067,
+08071,
+08072,
+08073,
+08074,
+08075,
+08076,
+08081,
+08082,
+08083,
+08084,
+08085,
+08086,
+08091,
+08092,
+08093,
+08094,
+08095,
+08102,
+08104,
+08105,
+08106,
+0811,
+08121,
+08122,
+08123,
+08124,
+08131,
+08133,
+08134,
+08135,
+08136,
+08137,
+08138,
+08139,
+08141,
+08142,
+08143,
+08144,
+08145,
+08146,
+08151,
+08152,
+08153,
+08157,
+08158,
+08161,
+08165,
+08166,
+08167,
+08168,
+08170,
+08171,
+08176,
+08177,
+08178,
+08179,
+08191,
+08192,
+08193,
+08194,
+08195,
+08196,
+08202,
+08203,
+08204,
+08205,
+08206,
+08207,
+08208,
+0821,
+08221,
+08222,
+08223,
+08224,
+08225,
+08226,
+08230,
+08231,
+08232,
+08233,
+08234,
+08236,
+08237,
+08238,
+08239,
+08241,
+08243,
+08245,
+08246,
+08247,
+08248,
+08249,
+08250,
+08251,
+08252,
+08253,
+08254,
+08257,
+08258,
+08259,
+08261,
+08262,
+08263,
+08265,
+08266,
+08267,
+08268,
+08269,
+08271,
+08272,
+08273,
+08274,
+08276,
+08281,
+08282,
+08283,
+08284,
+08285,
+08291,
+08292,
+08293,
+08294,
+08295,
+08296,
+08302,
+08303,
+08304,
+08306,
+0831,
+08320,
+08321,
+08322,
+08323,
+08324,
+08325,
+08326,
+08327,
+08328,
+08330,
+08331,
+08332,
+08333,
+08334,
+08335,
+08336,
+08337,
+08338,
+08340,
+08341,
+08342,
+08343,
+08344,
+08345,
+08346,
+08347,
+08348,
+08349,
+08361,
+08362,
+08363,
+08364,
+08365,
+08366,
+08367,
+08368,
+08369,
+08370,
+08372,
+08373,
+08374,
+08375,
+08376,
+08377,
+08378,
+08379,
+08380,
+08381,
+08382,
+08383,
+08384,
+08385,
+08386,
+08387,
+08388,
+08389,
+08392,
+08393,
+08394,
+08395,
+08402,
+08403,
+08404,
+08405,
+08406,
+08407,
+0841,
+08421,
+08422,
+08423,
+08424,
+08426,
+08427,
+08431,
+08432,
+08433,
+08434,
+08435,
+08441,
+08442,
+08443,
+08444,
+08445,
+08446,
+08450,
+08452,
+08453,
+08454,
+08456,
+08457,
+08458,
+08459,
+08460,
+08461,
+08462,
+08463,
+08464,
+08465,
+08466,
+08467,
+08468,
+08469,
+08501,
+08502,
+08503,
+08504,
+08505,
+08506,
+08507,
+08509,
+0851,
+08531,
+08532,
+08533,
+08534,
+08535,
+08536,
+08537,
+08538,
+08541,
+08542,
+08543,
+08544,
+08545,
+08546,
+08547,
+08548,
+08549,
+08550,
+08551,
+08552,
+08553,
+08554,
+08555,
+08556,
+08557,
+08558,
+08561,
+08562,
+08563,
+08564,
+08565,
+08571,
+08572,
+08573,
+08574,
+08581,
+08582,
+08583,
+08584,
+08585,
+08586,
+08591,
+08592,
+08593,
+0861,
+08621,
+08622,
+08623,
+08624,
+08628,
+08629,
+08630,
+08631,
+08633,
+08634,
+08635,
+08636,
+08637,
+08638,
+08639,
+08640,
+08641,
+08642,
+08649,
+08650,
+08651,
+08652,
+08654,
+08656,
+08657,
+08661,
+08662,
+08663,
+08664,
+08665,
+08666,
+08667,
+08669,
+08670,
+08671,
+08677,
+08678,
+08679,
+08681,
+08682,
+08683,
+08684,
+08685,
+08686,
+08687,
+08702,
+08703,
+08704,
+08705,
+08706,
+08707,
+08708,
+08709,
+0871,
+08721,
+08722,
+08723,
+08724,
+08725,
+08726,
+08727,
+08728,
+08731,
+08732,
+08733,
+08734,
+08735,
+08741,
+08742,
+08743,
+08744,
+08745,
+08751,
+08752,
+08753,
+08754,
+08756,
+08761,
+08762,
+08764,
+08765,
+08766,
+08771,
+08772,
+08773,
+08774,
+08781,
+08782,
+08783,
+08784,
+08785,
+08801,
+08802,
+08803,
+08805,
+08806,
+08807,
+08808,
+08809,
+0881,
+08821,
+08822,
+08823,
+08824,
+08825,
+08841,
+08845,
+08846,
+08847,
+08851,
+08856,
+08857,
+08858,
+08860,
+08861,
+08862,
+08867,
+08868,
+08869,
+089,
+0906,
+09070,
+09071,
+09072,
+09073,
+09074,
+09075,
+09076,
+09077,
+09078,
+09080,
+09081,
+09082,
+09083,
+09084,
+09085,
+09086,
+09087,
+09088,
+09089,
+09090,
+09091,
+09092,
+09093,
+09094,
+09097,
+09099,
+09101,
+09102,
+09103,
+09104,
+09105,
+09106,
+09107,
+0911,
+09120,
+09122,
+09123,
+09126,
+09127,
+09128,
+09129,
+09131,
+09132,
+09133,
+09134,
+09135,
+09141,
+09142,
+09143,
+09144,
+09145,
+09146,
+09147,
+09148,
+09149,
+09151,
+09152,
+09153,
+09154,
+09155,
+09156,
+09157,
+09158,
+09161,
+09162,
+09163,
+09164,
+09165,
+09166,
+09167,
+09170,
+09171,
+09172,
+09173,
+09174,
+09175,
+09176,
+09177,
+09178,
+09179,
+09180,
+09181,
+09182,
+09183,
+09184,
+09185,
+09186,
+09187,
+09188,
+09189,
+09190,
+09191,
+09192,
+09193,
+09194,
+09195,
+09196,
+09197,
+09198,
+09199,
+09201,
+09202,
+09203,
+09204,
+09205,
+09206,
+09207,
+09208,
+09209,
+0921,
+09220,
+09221,
+09222,
+09223,
+09225,
+09227,
+09228,
+09229,
+09231,
+09232,
+09233,
+09234,
+09235,
+09236,
+09238,
+09241,
+09242,
+09243,
+09244,
+09245,
+09246,
+09251,
+09252,
+09253,
+09254,
+09255,
+09256,
+09257,
+09260,
+09261,
+09262,
+09263,
+09264,
+09265,
+09266,
+09267,
+09268,
+09269,
+09270,
+09271,
+09272,
+09273,
+09274,
+09275,
+09276,
+09277,
+09278,
+09279,
+09280,
+09281,
+09282,
+09283,
+09284,
+09285,
+09286,
+09287,
+09288,
+09289,
+09292,
+09293,
+09294,
+09295,
+09302,
+09303,
+09305,
+09306,
+09307,
+0931,
+09321,
+09323,
+09324,
+09325,
+09326,
+09331,
+09332,
+09333,
+09334,
+09335,
+09336,
+09337,
+09338,
+09339,
+09340,
+09341,
+09342,
+09343,
+09344,
+09345,
+09346,
+09347,
+09348,
+09349,
+09350,
+09351,
+09352,
+09353,
+09354,
+09355,
+09356,
+09357,
+09358,
+09359,
+09360,
+09363,
+09364,
+09365,
+09366,
+09367,
+09369,
+09371,
+09372,
+09373,
+09374,
+09375,
+09376,
+09377,
+09378,
+09381,
+09382,
+09383,
+09384,
+09385,
+09386,
+09391,
+09392,
+09393,
+09394,
+09395,
+09396,
+09397,
+09398,
+09401,
+09402,
+09403,
+09404,
+09405,
+09406,
+09407,
+09408,
+09409,
+0941,
+09420,
+09421,
+09422,
+09423,
+09424,
+09426,
+09427,
+09428,
+09429,
+09431,
+09433,
+09434,
+09435,
+09436,
+09438,
+09439,
+09441,
+09442,
+09443,
+09444,
+09445,
+09446,
+09447,
+09448,
+09451,
+09452,
+09453,
+09454,
+09461,
+09462,
+09463,
+09464,
+09465,
+09466,
+09467,
+09468,
+09469,
+09471,
+09472,
+09473,
+09474,
+09480,
+09481,
+09482,
+09484,
+09491,
+09492,
+09493,
+09495,
+09497,
+09498,
+09499,
+09502,
+09503,
+09504,
+09505,
+0951,
+09521,
+09522,
+09523,
+09524,
+09525,
+09526,
+09527,
+09528,
+09529,
+09531,
+09532,
+09533,
+09534,
+09535,
+09536,
+09542,
+09543,
+09544,
+09545,
+09546,
+09547,
+09548,
+09549,
+09551,
+09552,
+09553,
+09554,
+09555,
+09556,
+09560,
+09561,
+09562,
+09563,
+09564,
+09565,
+09566,
+09567,
+09568,
+09569,
+09571,
+09572,
+09573,
+09574,
+09575,
+09576,
+09602,
+09603,
+09604,
+09605,
+09606,
+09607,
+09608,
+0961,
+09621,
+09622,
+09624,
+09625,
+09626,
+09627,
+09628,
+09631,
+09632,
+09633,
+09634,
+09635,
+09636,
+09637,
+09638,
+09639,
+09641,
+09642,
+09643,
+09644,
+09645,
+09646,
+09647,
+09648,
+09651,
+09652,
+09653,
+09654,
+09655,
+09656,
+09657,
+09658,
+09659,
+09661,
+09662,
+09663,
+09664,
+09665,
+09666,
+09671,
+09672,
+09673,
+09674,
+09675,
+09676,
+09677,
+09681,
+09682,
+09683,
+09701,
+09704,
+09708,
+0971,
+09720,
+09721,
+09722,
+09723,
+09724,
+09725,
+09726,
+09727,
+09728,
+09729,
+09732,
+09733,
+09734,
+09735,
+09736,
+09737,
+09738,
+09741,
+09742,
+09744,
+09745,
+09746,
+09747,
+09748,
+09749,
+09761,
+09762,
+09763,
+09764,
+09765,
+09766,
+09771,
+09772,
+09773,
+09774,
+09775,
+09776,
+09777,
+09778,
+09779,
+09802,
+09803,
+09804,
+09805,
+0981,
+09820,
+09822,
+09823,
+09824,
+09825,
+09826,
+09827,
+09828,
+09829,
+09831,
+09832,
+09833,
+09834,
+09835,
+09836,
+09837,
+09841,
+09842,
+09843,
+09844,
+09845,
+09846,
+09847,
+09848,
+09851,
+09852,
+09853,
+09854,
+09855,
+09856,
+09857,
+09861,
+09865,
+09867,
+09868,
+09869,
+09871,
+09872,
+09873,
+09874,
+09875,
+09876,
+09901,
+09903,
+09904,
+09905,
+09906,
+09907,
+09908,
+0991,
+09920,
+09921,
+09922,
+09923,
+09924,
+09925,
+09926,
+09927,
+09928,
+09929,
+09931,
+09932,
+09933,
+09935,
+09936,
+09937,
+09938,
+09941,
+09942,
+09943,
+09944,
+09945,
+09946,
+09947,
+09948,
+09951,
+09952,
+09953,
+09954,
+09955,
+09956,
+09961,
+09962,
+09963,
+09964,
+09965,
+09966,
+09971,
+09972,
+09973,
+09974,
+09975,
+09976,
+09977,
+09978}
+\clist_const:Nn \c_phone_DE_sondervorwahlen_clist {01371,
+01372,
+01373,
+01374,
+01375,
+01376,
+01377,
+01378,
+01379,
+015019,
+01511,
+01512,
+01514,
+01515,
+01516,
+01517,
+015180,
+015181,
+015310,
+01520,
+01521,
+01522,
+01523,
+01525,
+01526,
+01529,
+015510,
+015511,
+015566,
+015630,
+015678,
+01570,
+01573,
+01575,
+01577,
+01578,
+01579,
+015888,
+01590,
+0160,
+0162,
+0163,
+0164,
+0168,
+0169,
+0170,
+0171,
+0172,
+0173,
+0174,
+0175,
+0176,
+0177,
+0178,
+0179,
+01801,
+01802,
+01803,
+01804,
+01805,
+01806,
+01807,
+0181,
+0182,
+0183,
+0184,
+0185,
+0186,
+0187,
+0188,
+0189,
+0191,
+0192,
+0193,
+0194,
+032,
+0700,
+0800,
+09001,
+09003,
+09005,
+09009}
\tl_const:cn {c_phone_DE_ortsname_0201_tl} {Essen}
\tl_const:cn {c_phone_DE_ortsname_0202_tl} {Wuppertal}
\tl_const:cn {c_phone_DE_ortsname_0203_tl} {Duisburg}
@@ -5216,6 +10501,9 @@
\tl_const:cn {c_phone_DE_ortsname_01515_tl} {Mobilfunk}
\tl_const:cn {c_phone_DE_ortsname_01516_tl} {Mobilfunk}
\tl_const:cn {c_phone_DE_ortsname_01517_tl} {Mobilfunk}
+\tl_const:cn {c_phone_DE_ortsname_015180_tl} {Mobilfunk}
+\tl_const:cn {c_phone_DE_ortsname_015181_tl} {Mobilfunk}
+\tl_const:cn {c_phone_DE_ortsname_015310_tl} {Mobilfunk}
\tl_const:cn {c_phone_DE_ortsname_01520_tl} {Mobilfunk}
\tl_const:cn {c_phone_DE_ortsname_01521_tl} {Mobilfunk}
\tl_const:cn {c_phone_DE_ortsname_01522_tl} {Mobilfunk}
@@ -5223,6 +10511,8 @@
\tl_const:cn {c_phone_DE_ortsname_01525_tl} {Mobilfunk}
\tl_const:cn {c_phone_DE_ortsname_01526_tl} {Mobilfunk}
\tl_const:cn {c_phone_DE_ortsname_01529_tl} {Mobilfunk}
+\tl_const:cn {c_phone_DE_ortsname_015510_tl} {Mobilfunk}
+\tl_const:cn {c_phone_DE_ortsname_015511_tl} {Mobilfunk}
\tl_const:cn {c_phone_DE_ortsname_015566_tl} {Mobilfunk}
\tl_const:cn {c_phone_DE_ortsname_015630_tl} {Mobilfunk}
\tl_const:cn {c_phone_DE_ortsname_015678_tl} {Mobilfunk}
@@ -5277,3 +10567,443 @@
\tl_const:cn {c_phone_DE_ortsname_09003_tl} {Premium-Dienst}
\tl_const:cn {c_phone_DE_ortsname_09005_tl} {Premium-Dienst}
\tl_const:cn {c_phone_DE_ortsname_09009_tl} {Dialer}
+
+\tl_const:Nn \c_phone_DE_landesadjektiv_tl {German}
+\bool_const:Nn \c_phone_DE_erlaubt_durchwahl_bool {\c_true_bool}
+
+\clist_new:N \c_phone_DE_vorwahlen_clist
+\clist_concat:NNN \c_phone_DE_vorwahlen_clist \c_phone_DE_ortsvorwahlen_clist \c_phone_DE_sondervorwahlen_clist
+
+% Prüfe, ob eine Vorwahl als Heimatvorwahl zulässig ist.
+% #1: Heimatvorwahl
+\prg_new_protected_conditional:Npnn \phone_DE_heimatvorwahl_erlaubt:n #1 {T}
+ {
+ \clist_if_in:NnTF \c_phone_DE_ortsvorwahlen_clist {#1}
+ {
+ % Alle deutschen Ortsvorwahlen können Heimatvorwahl sein.
+ \prg_return_true:
+ }
+ {
+ \msg_warning:nnn {phonenumbers} {invalid home area code} {#1}
+ \prg_return_false:
+ }
+ }
+
+% Prüfe, ob eine Vorwahl eine Tarifkennung enthält.
+% #1: Vorwahl
+\prg_new_protected_conditional:Npnn \phone_DE_enthaelt_tarifkennung:n #1 {TF}
+ {
+ \bool_if:nTF { \int_compare_p:nNn { \str_count:n {#1} } = {5} }
+ {
+ % fünfstellige Vorwahl
+ \str_set:Nx \l_tmpa_str { \str_range:nnn {#1} {1} {4} }
+
+ \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_tmpa_str {0137} } { \str_if_eq_p:Vn \l_tmpa_str {0180} }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+ {
+ % nicht fünfstellige Vorwahl
+ \prg_return_false:
+ }
+ }
+
+% #1: Vorwahl, #2: Soll die führende Null ausgegeben werden?
+\cs_new_protected:Npn \phone_DE_ziffernvorwahl_schreiben:nN #1#2
+ {
+ \phone_DE_enthaelt_tarifkennung:nTF {#1}
+ {
+ % fünfstellige Vorwahl mit Tarifkennung: letzte Ziffer steht allein
+ \bool_if:NTF #2
+ {
+ \phone_von_vorne_gruppiert_schreiben:n {#1}
+ }
+ {
+ \phone_versetzt_gruppiert_schreiben:x { \str_tail:n {#1} }
+ }
+ }
+ {
+ % Vorwahl ohne Tarifkennung
+ \bool_if:NTF #2
+ {
+ \phone_von_hinten_gruppiert_schreiben:n {#1}
+ }
+ {
+ \phone_von_hinten_gruppiert_schreiben:x { \str_tail:n {#1} }
+ }
+ }
+ }
+
+% #1: Vorwahl, #2: Folgt eine Rufnummer?
+\cs_new_protected:Npn \phone_DE_vorwahl_schreiben:nn #1 #2
+ {
+ \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {DE} }
+ {
+ \clist_if_in:NnT \c_phone_DE_sondervorwahlen_clist {#1}
+ {
+ \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place}
+ {
+ \str_set:Nn \l_phone_vorwahldarstellung_str {number}
+ }
+ }
+
+ \bool_lazy_and:nnF { \str_if_eq_p:Vn \l_phone_heimatland_str {DE} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} }
+ {
+ \str_case:Vn \l_phone_vorwahldarstellung_str
+ {
+ {number}
+ {
+ \bool_if:nTF {#2}
+ {
+ \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets}
+ {
+ \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+ {
+ \phone_DE_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+
+ \tl_put_right:Nx \l_phone_ausgabetext_tl
+ {
+ \str_case:VnF \l_phone_vorwahltrennung_str
+ {
+ {space} {\c_space_tl}
+ {hyphen} {\c_phone_bindestrich_tl}
+ }
+ {
+ \c_phone_schraegstrich_tl
+ }
+ }
+ }
+ }
+ {
+ \phone_DE_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ }
+ }
+ {place}
+ {
+ \bool_if:nTF {#2}
+ {
+ \str_if_eq:VnT \l_phone_vorwahltrennung_str {brackets}
+ {
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {(}
+ }
+
+ \tl_if_exist:cTF {c_phone_DE_ortsname_ #1 _tl}
+ {
+ \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_DE_ortsname_ #1 _tl}
+ }
+ {
+ \phone_DE_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ }
+
+ \tl_put_right:Nx \l_phone_ausgabetext_tl
+ {
+ \str_case:VnF \l_phone_vorwahltrennung_str
+ {
+ {brackets} {) \c_space_tl}
+ {space} {\c_space_tl}
+ {hyphen} {\c_phone_bindestrich_tl}
+ }
+ {
+ \c_phone_schraegstrich_tl
+ }
+ }
+ }
+ {
+ \tl_if_exist:cTF {c_phone_DE_ortsname_ #1 _tl}
+ {
+ \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_DE_ortsname_ #1 _tl}
+ }
+ {
+ \phone_DE_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ }
+ }
+ }
+ {place-and-number}
+ {
+ \tl_if_exist:cT {c_phone_DE_ortsname_ #1 _tl}
+ {
+ \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_DE_ortsname_ #1 _tl}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+
+ \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets}
+ {
+ \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+
+ \bool_if:nT {#2}
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+ }
+ {
+ \phone_DE_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+
+ \bool_if:nT {#2}
+ {
+ \tl_put_right:Nx \l_phone_ausgabetext_tl
+ {
+ \str_case:VnF \l_phone_vorwahltrennung_str
+ {
+ {space} {\c_space_tl}
+ {hyphen} {\c_phone_bindestrich_tl}
+ }
+ {
+ \c_phone_schraegstrich_tl
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ {
+ \phone_gruppierte_auslandsvorwahl_schreiben:n {49}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+
+ \str_if_eq:VnTF \l_phone_auslandsvorwahltrennung_str {brackets}
+ {
+ \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_false_bool
+ }
+ {
+ \phone_DE_ziffernvorwahl_schreiben:nN {#1} \c_false_bool
+ }
+
+ \bool_if:nT {#2}
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+ }
+
+ % Linktext schreiben, falls eine Rufnummer folgt
+ \bool_if:nT {#2}
+ {
+ \str_put_right:Nx \l_phone_linktext_str {+49}
+ \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} }
+ }
+ }
+
+\cs_generate_variant:Nn \phone_DE_vorwahl_schreiben:nn {Vx}
+
+% #1: Vorwahl, #2: Teilnehmerrufnummer
+\cs_new_protected:Npn \phone_DE_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1#2
+ {
+ \int_set:Nn \l_tmpa_int { \str_count:N #1 }
+ \int_add:Nn \l_tmpa_int { \str_count:n {#2} }
+ \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str }
+
+ \int_compare:nNnTF {\l_tmpa_int} > {13}
+ {
+ % Gesamtnummer hat mehr als 13 Stellen
+ \msg_warning:nnnn {phonenumbers} {number too long} {landline} {13}
+ }
+ {
+ \int_set:Nn \l_tmpa_int { \str_count:n {#2} }
+ \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str }
+
+ \int_compare:nNnTF {\l_tmpa_int} < {3}
+ {
+ % Teilnehmerrufnummer hat weniger als 3 Stellen
+ \msg_warning:nnn {phonenumbers} {subscriber number too short} {3}
+ }
+ {
+ \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool
+ }
+ }
+ }
+
+% #1: Nummer
+\cs_new_protected:Npn \phone_DE_MABEZnummernlaenge_ueberpruefen:N #1
+ {
+ \int_set:Nn \l_tmpa_int { \str_count:N #1 }
+ \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str }
+
+ \int_compare:nNnTF {\l_tmpa_int} > {11}
+ {
+ % Gesamtnummer hat mehr als 11 Stellen
+ \msg_warning:nnnn {phonenumbers} {number too long} {0137~(MABEZ)} {11}
+ }
+ {
+ \int_compare:nNnTF {\l_tmpa_int} < {11}
+ {
+ % Gesamtnummer hat weniger als 11 Stellen
+ \msg_warning:nnnn {phonenumbers} {number too short} {0137~(MABEZ)} {11}
+ }
+ {
+ \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool
+ }
+ }
+ }
+
+% #1: Vorwahl, #2: Teilnehmerrufnummer
+\cs_new_protected:Npn \phone_DE_teilnehmerrufnummer_schreiben:Nn #1 #2
+ {
+ % Überprüfen der Nummernlänge
+ \str_if_empty:NTF #1
+ {
+ % Festnetznummer ohne Vorwahl
+ \bool_if:NF \l_phone_eingabe_leer_bool
+ {
+ \phone_DE_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1 {#2}
+ }
+ }
+ {
+ \clist_if_in:NVTF \c_phone_DE_ortsvorwahlen_clist #1
+ {
+ % Festnetznummer
+ \str_if_eq:xnTF { \str_head:n {#2} } {0}
+ {
+ \msg_warning:nnn {phonenumbers} {illegal start of subscriber number} {0}
+ }
+ {
+ \phone_DE_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1 {#2}
+ }
+ }
+ {
+ % Mobilfunk-/Sondernummer
+ \str_set_eq:NN \l_tmpa_str #1
+ \str_put_right:Nn \l_tmpa_str {#2}
+
+ \str_if_eq:xnTF { \str_range:Nnn #1 {1} {5} } {09009}
+ {
+ \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {09009}
+ }
+ {
+ \str_case:xnF { \str_range:Nnn #1 {1} {4} }
+ {
+ {0137} { \phone_DE_MABEZnummernlaenge_ueberpruefen:N \l_tmpa_str }
+ {0160} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} }
+ {0162} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} }
+ {0163} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} }
+ {0164} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0164} } % Funkruf
+ {0168} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {15} {0168} } % Funkruf
+ {0169} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {15} {0169} } % Funkruf
+ {0180} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {11} {0180} }
+ {0181} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {8} {15} {0181} }
+ {0191} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0191} }
+ {0192} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0192} }
+ {0193} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0193} }
+ {0194} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {7} {14} {0194} }
+ {0700} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {0700} }
+ {0800} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {14} {freephone} }
+ {0900} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {11} {premium~service} }
+ }
+ {
+ \str_case:xn {\str_range:Nnn #1 {1} {3}}
+ {
+ {015} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {mobile~phone} }
+ {017} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} }
+ {018} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {018} }
+ {032} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {032} }
+ }
+ }
+ }
+
+ \str_if_empty:NF \l_phone_bereinigte_durchwahl_str
+ {
+ % Mobilfunk- und Sondernummern dürfen keine Durchwahl enthalten (ausgenommen MABEZ-Nummern)
+ \str_if_eq:xnF { \str_range:Nnn #1 {1} {4} } {0137}
+ {
+ \msg_warning:nn {phonenumbers} {odd extension}
+ }
+ }
+ }
+
+ \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
+ {
+ % Für gültige Nummern mit Vorwahl Linktext schreiben:
+ \str_put_right:Nn \l_phone_linktext_str {#2}
+ \str_put_right:NV \l_phone_linktext_str \l_phone_bereinigte_durchwahl_str
+ }
+ {
+ % Für ungültige Nummern mit Vorwahl Linktext löschen:
+ \str_clear:N \l_phone_linktext_str
+ }
+ }
+
+ \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
+ {
+ \phone_von_hinten_gruppiert_schreiben:n {#2}
+ }
+ {
+ \str_put_right:Nn \l_phone_ausgabetext_tl {#2}
+ }
+
+ \str_if_empty:NF \l_phone_bereinigte_durchwahl_str
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl
+ \phone_von_hinten_gruppiert_schreiben:V \l_phone_bereinigte_durchwahl_str
+ }
+ }
+
+\cs_generate_variant:Nn \phone_DE_teilnehmerrufnummer_schreiben:Nn {Nx,NV}
+
+\cs_new_protected:Npn \phone_DE_nummer_schreiben:
+ {
+ \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0}
+ {
+ \phone_enthaelt_vorwahl:NTF \l_phone_bereinigte_nummer_str
+ {
+ \int_set:Nn \l_phone_hauptnummernlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str }
+ \int_set:Nn \l_phone_vorwahllaenge_int { \str_count:N \l_phone_vorwahl_str }
+
+ \phone_DE_vorwahl_schreiben:Vx \l_phone_vorwahl_str
+ {
+ \int_compare_p:nNn {\l_phone_vorwahllaenge_int} < {\l_phone_hauptnummernlaenge_int}
+ }
+
+ \int_compare:nNnTF {\l_phone_vorwahllaenge_int} = {\l_phone_hauptnummernlaenge_int}
+ {
+ \msg_warning:nn {phonenumbers} {missing subscriber number}
+ }
+ {
+ \phone_DE_teilnehmerrufnummer_schreiben:Nx \l_phone_vorwahl_str
+ {
+ \str_range:Nnn \l_phone_bereinigte_nummer_str { \l_phone_vorwahllaenge_int + 1 } {-1}
+ }
+ }
+ }
+ {
+ \msg_warning:nn {phonenumbers} {invalid area code}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_durchwahl_str
+ }
+ }
+ {
+ \phone_DE_teilnehmerrufnummer_schreiben:NV \c_empty_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+
+\cs_new_protected:Npn \phone_DE_vorwahlliste_ausgeben:n #1
+ {
+ \begin{tabbing}
+ \hspace {4,5em} \= \kill
+
+ \bool_set_false:N \l_phone_zeilenumbruch_bool
+
+ \clist_map_inline:cn {c_phone_DE_ #1 _clist}
+ {
+ \bool_if:NTF \l_phone_zeilenumbruch_bool
+ {
+ \\
+ }
+ {
+ \bool_gset_true:N \l_phone_zeilenumbruch_bool
+ }
+
+ \phone_DE_ziffernvorwahl_schreiben:nN {##1} \c_true_bool
+ \tl_use:N \l_phone_ausgabetext_tl
+ \>
+ \tl_if_exist:cT {c_phone_DE_ortsname_ ##1 _tl}
+ {
+ \tl_use:c {c_phone_DE_ortsname_ ##1 _tl}
+ }
+ }
+ \end{tabbing}
+ }
diff --git a/macros/latex/contrib/phonenumbers/tex/phonenumbers-FR.def b/macros/latex/contrib/phonenumbers/tex/phonenumbers-FR.def
new file mode 100644
index 0000000000..9b2a7bb244
--- /dev/null
+++ b/macros/latex/contrib/phonenumbers/tex/phonenumbers-FR.def
@@ -0,0 +1,396 @@
+% phonenumbers package: phonenumbers-FR.def
+% Module for French telephone numbers
+% Author: K. Wehr
+% Version: 2.5
+% Date: 2022-07-01
+\clist_const:Nn \c_phone_FR_ortsvorwahlen_clist {01,
+02,
+0262,
+026200,
+0263,
+0269,
+03,
+04,
+05,
+0508,
+0590,
+0594,
+0596}
+\clist_const:Nn \c_phone_FR_sondervorwahlen_clist {06,
+0639,
+0690,
+0691,
+0692,
+0693,
+0694,
+0696,
+0697,
+07,
+0700,
+07005,
+07006,
+07007,
+07008,
+07009,
+08,
+09,
+09475,
+09476,
+09477,
+09478,
+09479,
+09760,
+09761,
+09762,
+09763,
+09764,
+09765,
+09766,
+09767,
+09768,
+09769}
+\tl_const:cn {c_phone_FR_ortsname_01_tl} {\^{I}le-de-France}
+\tl_const:cn {c_phone_FR_ortsname_02_tl} {Nord-ouest}
+\tl_const:cn {c_phone_FR_ortsname_0262_tl} {La~R\a'{e}union}
+\tl_const:cn {c_phone_FR_ortsname_026200_tl} {Terres~australes~et~antarctiques~fran\c{c}aises}
+\tl_const:cn {c_phone_FR_ortsname_0263_tl} {La~R\a'{e}union}
+\tl_const:cn {c_phone_FR_ortsname_0269_tl} {Mayotte}
+\tl_const:cn {c_phone_FR_ortsname_03_tl} {Nord-est}
+\tl_const:cn {c_phone_FR_ortsname_04_tl} {Sud-est}
+\tl_const:cn {c_phone_FR_ortsname_05_tl} {Sud-ouest}
+\tl_const:cn {c_phone_FR_ortsname_0508_tl} {Saint-Pierre-et-Miquelon}
+\tl_const:cn {c_phone_FR_ortsname_0590_tl} {Guadeloupe,~Saint-Barth\a'{e}lemy,~Saint-Martin}
+\tl_const:cn {c_phone_FR_ortsname_0594_tl} {Guyane}
+\tl_const:cn {c_phone_FR_ortsname_0596_tl} {Martinique}
+\tl_const:cn {c_phone_FR_ortsname_06_tl} {T\a'{e}l\a'{e}phone~mobile}
+\tl_const:cn {c_phone_FR_ortsname_0639_tl} {T\a'{e}l\a'{e}phone~mobile~(Mayotte)}
+\tl_const:cn {c_phone_FR_ortsname_0690_tl} {T\a'{e}l\a'{e}phone~mobile~(Guadeloupe)}
+\tl_const:cn {c_phone_FR_ortsname_0691_tl} {T\a'{e}l\a'{e}phone~mobile~(Guadeloupe)}
+\tl_const:cn {c_phone_FR_ortsname_0692_tl} {T\a'{e}l\a'{e}phone~mobile~(La~R\a'{e}union)}
+\tl_const:cn {c_phone_FR_ortsname_0693_tl} {T\a'{e}l\a'{e}phone~mobile~(La~R\a'{e}union)}
+\tl_const:cn {c_phone_FR_ortsname_0694_tl} {T\a'{e}l\a'{e}phone~mobile~(Guyane)}
+\tl_const:cn {c_phone_FR_ortsname_0696_tl} {T\a'{e}l\a'{e}phone~mobile~(Martinique)}
+\tl_const:cn {c_phone_FR_ortsname_0697_tl} {T\a'{e}l\a'{e}phone~mobile~(Martinique)}
+\tl_const:cn {c_phone_FR_ortsname_07_tl} {T\a'{e}l\a'{e}phone~mobile}
+\tl_const:cn {c_phone_FR_ortsname_0700_tl} {Communication~machine~\a`{a}~machine}
+\tl_const:cn {c_phone_FR_ortsname_07005_tl} {Communication~machine~\a`{a}~machine~(Guadeloupe)}
+\tl_const:cn {c_phone_FR_ortsname_07006_tl} {Communication~machine~\a`{a}~machine~(Guyane)}
+\tl_const:cn {c_phone_FR_ortsname_07007_tl} {Communication~machine~\a`{a}~machine~(Martinique)}
+\tl_const:cn {c_phone_FR_ortsname_07008_tl} {Communication~machine~\a`{a}~machine~(Mayotte)}
+\tl_const:cn {c_phone_FR_ortsname_07009_tl} {Communication~machine~\a`{a}~machine~(La~R\a'{e}union)}
+\tl_const:cn {c_phone_FR_ortsname_08_tl} {Service~\a`{a}~valeur~ajout\a'{e}e}
+\tl_const:cn {c_phone_FR_ortsname_09_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP}
+\tl_const:cn {c_phone_FR_ortsname_09475_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)}
+\tl_const:cn {c_phone_FR_ortsname_09476_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)}
+\tl_const:cn {c_phone_FR_ortsname_09477_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)}
+\tl_const:cn {c_phone_FR_ortsname_09478_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Mayotte)}
+\tl_const:cn {c_phone_FR_ortsname_09479_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)}
+\tl_const:cn {c_phone_FR_ortsname_09760_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)}
+\tl_const:cn {c_phone_FR_ortsname_09761_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)}
+\tl_const:cn {c_phone_FR_ortsname_09762_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)}
+\tl_const:cn {c_phone_FR_ortsname_09763_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)}
+\tl_const:cn {c_phone_FR_ortsname_09764_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)}
+\tl_const:cn {c_phone_FR_ortsname_09765_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guyane)}
+\tl_const:cn {c_phone_FR_ortsname_09766_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)}
+\tl_const:cn {c_phone_FR_ortsname_09767_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Martinique)}
+\tl_const:cn {c_phone_FR_ortsname_09768_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(Guadeloupe)}
+\tl_const:cn {c_phone_FR_ortsname_09769_tl} {Service~t\a'{e}l\a'{e}phonique~en~VoIP~(La~R\a'{e}union)}
+
+\tl_const:Nn \c_phone_FR_landesadjektiv_tl {French}
+\bool_const:Nn \c_phone_FR_erlaubt_durchwahl_bool {\c_false_bool}
+
+\clist_new:N \c_phone_FR_vorwahlen_clist
+\clist_concat:NNN \c_phone_FR_vorwahlen_clist \c_phone_FR_ortsvorwahlen_clist \c_phone_FR_sondervorwahlen_clist
+
+\msg_new:nnn {phonenumbers} {FR/illegal home area code}
+ {
+ The~only~legal~home~area~code~in~France~is~0508~(Saint-Pierre-et-Miquelon).~#1~cannot~be~set~as~home~area~code~\msg_line_context:.
+ }
+
+\msg_new:nnn {phonenumbers} {FR/missing zero}
+ {
+ French~phone~number~has~no~zero~in~the~beginning~\msg_line_context:
+ }
+
+% Prüfe, ob eine Vorwahl als Heimatvorwahl zulässig ist.
+% #1: Heimatvorwahl
+\prg_new_protected_conditional:Npnn \phone_FR_heimatvorwahl_erlaubt:n #1 {T}
+ {
+ \clist_if_in:NnTF \c_phone_FR_ortsvorwahlen_clist {#1}
+ {
+ % In Frankreich kann nur 0508 Heimatvorwahl sein.
+ \str_if_eq:nnTF {#1} {0508} { \prg_return_true: }
+ {
+ \msg_warning:nnn {phonenumbers} {FR/illegal home area code} {#1}
+ \prg_return_false:
+ }
+ }
+ {
+ \msg_warning:nnn {phonenumbers} {invalid home area code} {#1}
+ \prg_return_false:
+ }
+ }
+
+% #1: Vorwahl
+\cs_new:Npn \phone_FR_ermittle_landeskennzahl:n #1
+ {
+ \str_case:nnF {#1}
+ {
+ {0262} {262}
+ {026200} {262}
+ {0263} {262}
+ {0269} {262}
+ {0508} {508}
+ {0590} {590}
+ {0594} {594}
+ {0596} {596}
+ {0639} {262}
+ {0690} {590}
+ {0691} {590}
+ {0692} {262}
+ {0693} {262}
+ {0694} {594}
+ {0696} {596}
+ {0697} {596}
+ {07005} {590}
+ {07006} {594}
+ {07007} {596}
+ {07008} {262}
+ {07009} {262}
+ {09475} {590}
+ {09476} {594}
+ {09477} {596}
+ {09478} {262}
+ {09479} {262}
+ {09760} {590}
+ {09761} {590}
+ {09762} {262}
+ {09763} {262}
+ {09764} {594}
+ {09765} {594}
+ {09766} {596}
+ {09767} {596}
+ {09768} {590}
+ {09769} {262}
+ }
+ {
+ 33
+ }
+ }
+
+% #1: Vorwahl, #2: Rufnummer
+\cs_new_protected:Npn \phone_FR_vorwahl_und_rufnummer_schreiben:nn #1#2
+ {
+ \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {FR} }
+ {
+ \clist_if_in:NnT \c_phone_FR_sondervorwahlen_clist {#1}
+ {
+ \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place}
+ {
+ \str_set:Nn \l_phone_vorwahldarstellung_str {number}
+ }
+ }
+
+ \bool_lazy_and:nnTF { \str_if_eq_p:Vn \l_phone_heimatland_str {FR} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} }
+ {
+ \phone_von_hinten_gruppiert_schreiben:n {#2} % reine Teilnehmerrufnummer in Saint-Pierre-et-Miquelon
+ }
+ {
+ \str_case:Vn \l_phone_vorwahldarstellung_str
+ {
+ {number}
+ {
+ \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str
+ }
+ {place}
+ {
+ \tl_if_exist:cTF {c_phone_FR_ortsname_#1_tl}
+ {
+ \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_FR_ortsname_#1_tl}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ \phone_von_vorne_gruppiert_schreiben:n {#2}
+ }
+ {
+ \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str
+ }
+ }
+ {place-and-number}
+ {
+ \tl_if_exist:cT {c_phone_FR_ortsname_#1_tl}
+ {
+ \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_FR_ortsname_#1_tl}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+
+ \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str
+ }
+ }
+ }
+ }
+ {
+ \phone_gruppierte_auslandsvorwahl_schreiben:x { \phone_FR_ermittle_landeskennzahl:n {#1} }
+
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+
+ \str_if_eq:nnTF {#1} {0508} % in Saint-Pierre-et-Miquelon entfällt die Ortsvorwahl
+ {
+ \phone_von_hinten_gruppiert_schreiben:n {#2}
+ }
+ {
+ \phone_von_hinten_gruppiert_schreiben:x { \str_tail:N \l_phone_bereinigte_nummer_str }
+ }
+ }
+
+ % Linktext schreiben:
+ \str_put_right:Nx \l_phone_linktext_str { + \phone_FR_ermittle_landeskennzahl:n {#1} }
+ \str_if_eq:nnF {#1} {0508} % in Saint-Pierre-et-Miquelon entfällt die Ortsvorwahl
+ {
+ \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} }
+ }
+ \str_put_right:Nn \l_phone_linktext_str {#2}
+ }
+
+\cs_generate_variant:Nn \phone_FR_vorwahl_und_rufnummer_schreiben:nn {Vx,xx}
+
+\cs_new_protected:Npn \phone_FR_nummer_schreiben:
+ {
+ \int_set:Nn \l_phone_nummernlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str }
+
+ \int_compare:nNnTF {\l_phone_nummernlaenge_int} < {10}
+ {
+ \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {3}
+ {
+ \int_compare:nNnTF {\l_phone_nummernlaenge_int} < {4}
+ {
+ \msg_warning:nnnn {phonenumbers} {number too short} {short} {4}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ {
+ \int_compare:nNnTF {\l_phone_nummernlaenge_int} > {4}
+ {
+ \msg_warning:nnnn {phonenumbers} {number too long} {short} {4}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ {
+ \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str
+ \str_put_right:NV \l_phone_linktext_str \l_phone_bereinigte_nummer_str
+ }
+ }
+ }
+ {
+ \msg_warning:nnnn {phonenumbers} {number too short} {phone} {10}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+ {
+ \str_if_eq:xnTF { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {4} } {0700}
+ {
+ \int_compare:nNnTF { \str_item:Nn \l_phone_bereinigte_nummer_str {5} } < {5}
+ {
+ % überlange Mobilfunknummer (machine to machine) im Mutterland (14 Stellen)
+ \phone_nummernlaenge_ueberpruefen:Vnnn \l_phone_bereinigte_nummer_str {14} {14} {machine~to~machine}
+ \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
+ {
+ \phone_FR_vorwahl_und_rufnummer_schreiben:xx
+ {
+ \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {4}
+ }
+ {
+ \str_range:Nnn \l_phone_bereinigte_nummer_str {5} {-1}
+ }
+ }
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+ {
+ % überlange Mobilfunknummer (machine to machine) in den Überseegebieten (13 Stellen)
+ \phone_nummernlaenge_ueberpruefen:Vnnn \l_phone_bereinigte_nummer_str {13} {13} {machine~to~machine}
+ \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
+ {
+ \phone_FR_vorwahl_und_rufnummer_schreiben:xx
+ {
+ \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {5}
+ }
+ {
+ \str_range:Nnn \l_phone_bereinigte_nummer_str {6} {-1}
+ }
+ }
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+ }
+ {
+ \int_compare:nNnTF {\l_phone_nummernlaenge_int} > {10}
+ {
+ \msg_warning:nnnn {phonenumbers} {number too long} {phone} {10}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ {
+ \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0}
+ {
+ \bool_set_false:N \l_phone_vorwahl_gefunden_bool
+
+ \int_step_inline:nnnn {6} {-1} {2}
+ {
+ \bool_if:NF \l_phone_vorwahl_gefunden_bool
+ {
+ \int_compare:nT { \l_phone_nummernlaenge_int >= ##1 }
+ {
+ \str_set:Nx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {##1} }
+
+ \clist_if_in:NVT \c_phone_FR_vorwahlen_clist \l_tmpa_str
+ {
+ \bool_set_true:N \l_phone_vorwahl_gefunden_bool
+ \phone_FR_vorwahl_und_rufnummer_schreiben:Vx \l_tmpa_str
+ {
+ \str_range:Nnn \l_phone_bereinigte_nummer_str {##1 + 1} {-1}
+ }
+ }
+ }
+ }
+ }
+
+ \bool_if:NF \l_phone_vorwahl_gefunden_bool
+ {
+ \msg_warning:nn {phonenumbers} {invalid area code}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+ {
+ \msg_warning:nn {phonenumbers} {FR/missing zero}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+ }
+ }
+ }
+
+\cs_new_protected:Npn \phone_FR_vorwahlliste_ausgeben:n #1
+ {
+ \begin{tabbing}
+ \hspace {4em} \= \kill
+
+ \bool_set_false:N \l_phone_zeilenumbruch_bool
+
+ \clist_map_inline:cn {c_phone_FR_ #1 _clist}
+ {
+ \bool_if:NTF \l_phone_zeilenumbruch_bool
+ {
+ \\
+ }
+ {
+ \bool_gset_true:N \l_phone_zeilenumbruch_bool
+ }
+
+ \phone_von_vorne_gruppiert_schreiben:n {##1}
+ \tl_use:N \l_phone_ausgabetext_tl
+ \>
+ \tl_if_exist:cT {c_phone_FR_ortsname_ ##1 _tl}
+ {
+ \tl_use:c {c_phone_FR_ortsname_ ##1 _tl}
+ }
+ }
+ \end{tabbing}
+ }
diff --git a/macros/latex/contrib/phonenumbers/tex/phn-UK_Ortsnamen.tex b/macros/latex/contrib/phonenumbers/tex/phonenumbers-UK.def
index 29c8c2d138..ab52a899d5 100644
--- a/macros/latex/contrib/phonenumbers/tex/phn-UK_Ortsnamen.tex
+++ b/macros/latex/contrib/phonenumbers/tex/phonenumbers-UK.def
@@ -1,5 +1,1326 @@
-% phonenumbers package: British place names
-% Datum: 20. August 2021
+% phonenumbers package: phonenumbers-UK.def
+% Module for British telephone numbers
+% Author: K. Wehr
+% Version: 2.5
+% Date: 2022-07-01
+\clist_const:Nn \c_phone_UK_ortsvorwahlen_clist {0113,
+0114,
+0115,
+0116,
+0117,
+0118,
+01200,
+01202,
+01204,
+01205,
+01206,
+01207,
+01208,
+01209,
+0121,
+01223,
+01224,
+01225,
+01226,
+01227,
+01228,
+01229,
+01233,
+01234,
+01235,
+01236,
+01237,
+01239,
+01241,
+01242,
+01243,
+01244,
+01245,
+01246,
+01248,
+01249,
+01250,
+01252,
+01253,
+01254,
+01255,
+01256,
+01257,
+01258,
+01259,
+01260,
+01261,
+01262,
+01263,
+01264,
+01267,
+01268,
+01269,
+01270,
+01271,
+01273,
+01274,
+01275,
+01276,
+01277,
+01278,
+01279,
+01280,
+01282,
+01283,
+01284,
+01285,
+01286,
+01287,
+01288,
+01289,
+01290,
+01291,
+01292,
+01293,
+01294,
+01295,
+01296,
+01297,
+01298,
+01299,
+01300,
+01301,
+01302,
+01303,
+01304,
+01305,
+01306,
+01307,
+01308,
+01309,
+0131,
+01320,
+01322,
+01323,
+01324,
+01325,
+01326,
+01327,
+01328,
+01329,
+01330,
+01332,
+01333,
+01334,
+01335,
+01337,
+01339,
+01340,
+01341,
+01342,
+01343,
+01344,
+01346,
+01347,
+01348,
+01349,
+01350,
+01352,
+01353,
+01354,
+01355,
+01356,
+01357,
+01358,
+01359,
+01360,
+01361,
+01362,
+01363,
+01364,
+01366,
+01367,
+01368,
+01369,
+01371,
+01372,
+01373,
+01375,
+01376,
+01377,
+01379,
+01380,
+01381,
+01382,
+01383,
+01384,
+01386,
+01387,
+013873,
+01388,
+01389,
+01392,
+01394,
+01395,
+01397,
+01398,
+01400,
+01403,
+01404,
+01405,
+01406,
+01407,
+01408,
+01409,
+0141,
+01420,
+01422,
+01423,
+01424,
+01425,
+01427,
+01428,
+01429,
+01430,
+01431,
+01432,
+01433,
+01434,
+01435,
+01436,
+01437,
+01438,
+01439,
+01440,
+01442,
+01443,
+01444,
+01445,
+01446,
+01449,
+01450,
+01451,
+01452,
+01453,
+01454,
+01455,
+01456,
+01457,
+01458,
+01460,
+01461,
+01462,
+01463,
+01464,
+01465,
+01466,
+01467,
+01469,
+01470,
+01471,
+01472,
+01473,
+01474,
+01475,
+01476,
+01477,
+01478,
+01479,
+01480,
+01481,
+01482,
+01483,
+01484,
+01485,
+01487,
+01488,
+01489,
+01490,
+01491,
+01492,
+01493,
+01494,
+01495,
+01496,
+01497,
+01499,
+01501,
+01502,
+01503,
+01505,
+01506,
+01507,
+01508,
+01509,
+0151,
+01520,
+01522,
+01524,
+015242,
+01525,
+01526,
+01527,
+01528,
+01529,
+01530,
+01531,
+01534,
+01535,
+01536,
+01538,
+01539,
+015394,
+015395,
+015396,
+01540,
+01542,
+01543,
+01544,
+01545,
+01546,
+01547,
+01548,
+01549,
+01550,
+01553,
+01554,
+01555,
+01556,
+01557,
+01558,
+01559,
+01560,
+01561,
+01562,
+01563,
+01564,
+01565,
+01566,
+01567,
+01568,
+01569,
+01570,
+01571,
+01572,
+01573,
+01575,
+01576,
+01577,
+01578,
+01579,
+01580,
+01581,
+01582,
+01583,
+01584,
+01586,
+01588,
+01590,
+01591,
+01592,
+01593,
+01594,
+01595,
+01597,
+01598,
+01599,
+01600,
+01603,
+01604,
+01606,
+01608,
+01609,
+0161,
+01620,
+01621,
+01622,
+01623,
+01624,
+01625,
+01626,
+01628,
+01629,
+01630,
+01631,
+01633,
+01634,
+01635,
+01636,
+01637,
+01638,
+01639,
+01641,
+01642,
+01643,
+01644,
+01646,
+01647,
+01650,
+01651,
+01652,
+01653,
+01654,
+01655,
+01656,
+01659,
+01661,
+01663,
+01664,
+01665,
+01666,
+01667,
+01668,
+01669,
+01670,
+01671,
+01672,
+01673,
+01674,
+01675,
+01676,
+01677,
+01678,
+01680,
+01681,
+01683,
+01684,
+01685,
+01686,
+01687,
+01688,
+01689,
+01690,
+01691,
+01692,
+01694,
+01695,
+01697,
+016973,
+016974,
+016977,
+01698,
+01700,
+01702,
+01704,
+01706,
+01707,
+01708,
+01709,
+01720,
+01721,
+01722,
+01723,
+01724,
+01725,
+01726,
+01727,
+01728,
+01729,
+01730,
+01732,
+01733,
+01736,
+01737,
+01738,
+01740,
+01743,
+01744,
+01745,
+01746,
+01747,
+01748,
+01749,
+01750,
+01751,
+01752,
+01753,
+01754,
+01756,
+01757,
+01758,
+01759,
+01760,
+01761,
+01763,
+01764,
+01765,
+01766,
+01767,
+01768,
+017683,
+017684,
+017687,
+01769,
+01770,
+01771,
+01772,
+01773,
+01775,
+01776,
+01777,
+01778,
+01779,
+01780,
+01782,
+01784,
+01785,
+01786,
+01787,
+01788,
+01789,
+01790,
+01792,
+01793,
+01794,
+01795,
+01796,
+01797,
+01798,
+01799,
+01803,
+01805,
+01806,
+01807,
+01808,
+01809,
+01821,
+01822,
+01823,
+01824,
+01825,
+01827,
+01828,
+01829,
+01830,
+01832,
+01833,
+01834,
+01835,
+01837,
+01838,
+01840,
+01841,
+01842,
+01843,
+01844,
+01845,
+01847,
+01848,
+01851,
+01852,
+01854,
+01855,
+01856,
+01857,
+01858,
+01859,
+01862,
+01863,
+01864,
+01865,
+01866,
+01869,
+01870,
+01871,
+01872,
+01873,
+01874,
+01875,
+01876,
+01877,
+01878,
+01879,
+01880,
+01882,
+01883,
+01884,
+01885,
+01886,
+01887,
+01888,
+01889,
+01890,
+01892,
+01895,
+01896,
+01899,
+01900,
+01902,
+01903,
+01904,
+01905,
+01908,
+01909,
+0191,
+01920,
+01922,
+01923,
+01924,
+01925,
+01926,
+01928,
+01929,
+01931,
+01932,
+01933,
+01934,
+01935,
+01937,
+01938,
+01939,
+01942,
+01943,
+01944,
+01945,
+01946,
+019467,
+01947,
+01948,
+01949,
+01950,
+01951,
+01952,
+01953,
+01954,
+01955,
+01957,
+01959,
+01962,
+01963,
+01964,
+01967,
+01968,
+01969,
+01970,
+01971,
+01972,
+01974,
+01975,
+01977,
+01978,
+01980,
+01981,
+01982,
+01983,
+01984,
+01985,
+01986,
+01987,
+01988,
+01989,
+01992,
+01993,
+01994,
+01995,
+01997,
+020,
+023,
+024,
+028,
+029}
+\clist_const:Nn \c_phone_UK_obligatorische_ortsvorwahlen_clist {01202,
+01224,
+01273,
+01274,
+01642,
+01908}
+\clist_const:Nn \c_phone_UK_sondervorwahlen_clist {0300,
+0303,
+0306,
+0330,
+0331,
+0333,
+0343,
+0344,
+0345,
+0370,
+0371,
+0372,
+05511,
+05516,
+05555,
+05588,
+05600,
+05601,
+05602,
+05603,
+05604,
+07000,
+07002,
+07003,
+07004,
+07005,
+07006,
+07008,
+07009,
+07010,
+07011,
+07012,
+07013,
+07014,
+07015,
+07016,
+07017,
+07018,
+07019,
+07021,
+07022,
+07023,
+07024,
+07026,
+07027,
+07028,
+07029,
+07030,
+07031,
+07032,
+07033,
+07034,
+07035,
+07036,
+07037,
+07038,
+07039,
+07040,
+07041,
+07042,
+07043,
+07044,
+07045,
+07046,
+07047,
+07048,
+07049,
+07052,
+07053,
+07054,
+07055,
+07056,
+07057,
+07058,
+07059,
+07060,
+07061,
+07062,
+07063,
+07064,
+07065,
+07066,
+07067,
+07068,
+07069,
+07070,
+07071,
+07072,
+07073,
+07074,
+07076,
+07077,
+07078,
+07079,
+07080,
+07081,
+07082,
+07083,
+07084,
+07085,
+07086,
+07087,
+07088,
+07089,
+07090,
+07091,
+07093,
+07094,
+07096,
+07098,
+07099,
+07106,
+07107,
+07300,
+07301,
+07302,
+07303,
+07304,
+07305,
+07306,
+07307,
+07308,
+07309,
+07310,
+07311,
+07312,
+07340,
+07341,
+07342,
+07354,
+07355,
+07356,
+07357,
+07358,
+07359,
+07360,
+07361,
+07362,
+07363,
+07364,
+07365,
+07366,
+07367,
+07368,
+07369,
+07375,
+07376,
+07377,
+07378,
+07379,
+07380,
+07381,
+07382,
+07383,
+07384,
+07385,
+07386,
+07387,
+07388,
+07389,
+07390,
+07391,
+07392,
+07393,
+07394,
+07395,
+07396,
+07397,
+07398,
+07399,
+07400,
+07401,
+07402,
+07403,
+07404,
+07405,
+07406,
+07407,
+07408,
+07409,
+07410,
+07411,
+07412,
+07413,
+07414,
+07415,
+07416,
+07417,
+07418,
+07419,
+07420,
+07421,
+07422,
+07423,
+07424,
+07425,
+07426,
+07427,
+07428,
+07429,
+07430,
+07431,
+07432,
+07433,
+07434,
+07435,
+07436,
+07437,
+07438,
+07440,
+07441,
+07442,
+07443,
+07444,
+07445,
+07446,
+07447,
+07448,
+07449,
+07450,
+07451,
+07452,
+07453,
+07454,
+07455,
+07456,
+07457,
+07458,
+07459,
+07460,
+07461,
+07462,
+07463,
+07464,
+07465,
+07466,
+07467,
+07468,
+07469,
+07470,
+07471,
+07472,
+07473,
+07474,
+07475,
+07476,
+07477,
+07478,
+07479,
+07480,
+07481,
+07482,
+07483,
+07484,
+07485,
+07486,
+07487,
+07488,
+07489,
+07490,
+07491,
+07492,
+07493,
+07494,
+07495,
+07496,
+07497,
+07498,
+07499,
+07500,
+07501,
+07502,
+07503,
+07504,
+07505,
+07506,
+07507,
+07508,
+07509,
+07510,
+07511,
+07512,
+07513,
+07514,
+07515,
+07516,
+07517,
+07518,
+07519,
+07520,
+07521,
+07522,
+07523,
+07525,
+07526,
+07527,
+07528,
+07529,
+07530,
+07531,
+07532,
+07533,
+07534,
+07535,
+07536,
+07537,
+07538,
+07539,
+07540,
+07541,
+07542,
+07543,
+07544,
+07545,
+07546,
+07547,
+07548,
+07549,
+07550,
+07551,
+07552,
+07553,
+07554,
+07555,
+07556,
+07557,
+07558,
+07559,
+07560,
+07561,
+07562,
+07563,
+07564,
+07565,
+07566,
+07567,
+07568,
+07569,
+07570,
+07572,
+07573,
+07574,
+07575,
+07576,
+07577,
+07578,
+07579,
+07580,
+07581,
+07582,
+07583,
+07584,
+07585,
+07586,
+07587,
+07588,
+07589,
+07590,
+07591,
+07592,
+07593,
+07594,
+07595,
+07596,
+07597,
+07598,
+07599,
+07600,
+07602,
+07623,
+07624,
+07625,
+07626,
+07640,
+07641,
+07644,
+07654,
+07659,
+07660,
+07661,
+07663,
+07666,
+07669,
+07677,
+07681,
+07693,
+07699,
+07700,
+07701,
+07702,
+07703,
+07704,
+07705,
+07706,
+07707,
+07708,
+07709,
+07710,
+07711,
+07712,
+07713,
+07714,
+07715,
+07716,
+07717,
+07718,
+07719,
+07720,
+07721,
+07722,
+07723,
+07724,
+07725,
+07726,
+07727,
+07728,
+07729,
+07730,
+07731,
+07732,
+07733,
+07734,
+07735,
+07736,
+07737,
+07738,
+07739,
+07740,
+07741,
+07742,
+07743,
+07744,
+07745,
+07746,
+07747,
+07748,
+07749,
+07750,
+07751,
+07752,
+07753,
+07754,
+07755,
+07756,
+07757,
+07758,
+07759,
+07760,
+07761,
+07762,
+07763,
+07764,
+07765,
+07766,
+07767,
+07768,
+07769,
+07770,
+07771,
+07772,
+07773,
+07774,
+07775,
+07776,
+07777,
+07778,
+07779,
+07780,
+07781,
+07782,
+07783,
+07784,
+07785,
+07786,
+07787,
+07788,
+07789,
+07790,
+07791,
+07792,
+07793,
+07794,
+07795,
+07796,
+07797,
+07798,
+07799,
+07800,
+07801,
+07802,
+07803,
+07804,
+07805,
+07806,
+07807,
+07808,
+07809,
+07810,
+07811,
+07812,
+07813,
+07814,
+07815,
+07816,
+07817,
+07818,
+07819,
+07820,
+07821,
+07822,
+07823,
+07824,
+07825,
+07826,
+07827,
+07828,
+07829,
+07830,
+07831,
+07832,
+07833,
+07834,
+07835,
+07836,
+07837,
+07838,
+07839,
+07840,
+07841,
+07842,
+07843,
+07844,
+07845,
+07846,
+07847,
+07848,
+07849,
+07850,
+07851,
+07852,
+07853,
+07854,
+07855,
+07856,
+07857,
+07858,
+07859,
+07860,
+07861,
+07862,
+07863,
+07864,
+07865,
+07866,
+07867,
+07868,
+07869,
+07870,
+07871,
+07872,
+07873,
+07874,
+07875,
+07876,
+07877,
+07878,
+07879,
+07880,
+07881,
+07882,
+07883,
+07884,
+07885,
+07886,
+07887,
+07888,
+07889,
+07890,
+07891,
+07892,
+07893,
+07894,
+07895,
+07896,
+07897,
+07898,
+07899,
+07900,
+07901,
+07902,
+07903,
+07904,
+07905,
+07906,
+07907,
+07908,
+07909,
+07910,
+07911,
+07912,
+07913,
+07914,
+07915,
+07916,
+07917,
+07918,
+07919,
+07920,
+07921,
+07922,
+07923,
+07924,
+07925,
+07926,
+07927,
+07928,
+07929,
+07930,
+07931,
+07932,
+07933,
+07934,
+07935,
+07936,
+07937,
+07938,
+07939,
+07940,
+07941,
+07942,
+07943,
+07944,
+07945,
+07946,
+07947,
+07948,
+07949,
+07950,
+07951,
+07952,
+07953,
+07954,
+07955,
+07956,
+07957,
+07958,
+07959,
+07960,
+07961,
+07962,
+07963,
+07964,
+07965,
+07966,
+07967,
+07968,
+07969,
+07970,
+07971,
+07972,
+07973,
+07974,
+07975,
+07976,
+07977,
+07978,
+07979,
+07980,
+07981,
+07982,
+07983,
+07984,
+07985,
+07986,
+07987,
+07988,
+07989,
+07990,
+07999,
+0800,
+0808,
+0820,
+0843,
+0844,
+0845,
+0870,
+0871,
+0872,
+0897,
+0899,
+0900,
+0901,
+0902,
+0903,
+0904,
+0905,
+0906,
+0907,
+0911,
+0912,
+0913}
\tl_const:cn {c_phone_UK_ortsname_0113_tl} {Leeds}
\tl_const:cn {c_phone_UK_ortsname_0114_tl} {Sheffield}
\tl_const:cn {c_phone_UK_ortsname_0115_tl} {Nottingham}
@@ -650,7 +1971,6 @@
\tl_const:cn {c_phone_UK_ortsname_07017_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07018_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07019_tl} {Personal~number}
-\tl_const:cn {c_phone_UK_ortsname_07020_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07021_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07022_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07023_tl} {Personal~number}
@@ -679,7 +1999,6 @@
\tl_const:cn {c_phone_UK_ortsname_07047_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07048_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07049_tl} {Personal~number}
-\tl_const:cn {c_phone_UK_ortsname_07050_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07052_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07053_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07054_tl} {Personal~number}
@@ -719,7 +2038,6 @@
\tl_const:cn {c_phone_UK_ortsname_07089_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07090_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07091_tl} {Personal~number}
-\tl_const:cn {c_phone_UK_ortsname_07092_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07093_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07094_tl} {Personal~number}
\tl_const:cn {c_phone_UK_ortsname_07096_tl} {Personal~number}
@@ -745,7 +2063,9 @@
\tl_const:cn {c_phone_UK_ortsname_07342_tl} {Mobile~phone}
\tl_const:cn {c_phone_UK_ortsname_07354_tl} {Mobile~phone}
\tl_const:cn {c_phone_UK_ortsname_07355_tl} {Mobile~phone}
+\tl_const:cn {c_phone_UK_ortsname_07356_tl} {Mobile~phone}
\tl_const:cn {c_phone_UK_ortsname_07357_tl} {Mobile~phone}
+\tl_const:cn {c_phone_UK_ortsname_07358_tl} {Mobile~phone}
\tl_const:cn {c_phone_UK_ortsname_07359_tl} {Mobile~phone}
\tl_const:cn {c_phone_UK_ortsname_07360_tl} {Mobile~phone}
\tl_const:cn {c_phone_UK_ortsname_07361_tl} {Mobile~phone}
@@ -1223,7 +2543,7 @@
\tl_const:cn {c_phone_UK_ortsname_07921_tl} {Mobile~phone}
\tl_const:cn {c_phone_UK_ortsname_07922_tl} {Mobile~phone}
\tl_const:cn {c_phone_UK_ortsname_07923_tl} {Mobile~phone}
-\tl_const:cn {c_phone_UK_ortsname_07924_tl} {Mobile~phone}
+\tl_const:cn {c_phone_UK_ortsname_07924_tl} {Mobile~phone~(Isle~of~Man)}
\tl_const:cn {c_phone_UK_ortsname_07925_tl} {Mobile~phone}
\tl_const:cn {c_phone_UK_ortsname_07926_tl} {Mobile~phone}
\tl_const:cn {c_phone_UK_ortsname_07927_tl} {Mobile~phone}
@@ -1313,3 +2633,360 @@
\tl_const:cn {c_phone_UK_ortsname_0911_tl} {Special~service~premium~rate}
\tl_const:cn {c_phone_UK_ortsname_0912_tl} {Special~service~premium~rate}
\tl_const:cn {c_phone_UK_ortsname_0913_tl} {Special~service~premium~rate}
+
+\tl_const:Nn \c_phone_UK_landesadjektiv_tl {British}
+\bool_const:Nn \c_phone_UK_erlaubt_durchwahl_bool {\c_false_bool}
+
+\clist_new:N \c_phone_UK_vorwahlen_clist
+\clist_concat:NNN \c_phone_UK_vorwahlen_clist \c_phone_UK_ortsvorwahlen_clist \c_phone_UK_sondervorwahlen_clist
+
+\msg_new:nnn {phonenumbers} {UK/illegal home area code}
+ {
+ National~dialling~is~required~in~\tl_use:c {c_phone_UK_ortsname_ #1 _tl}.~#1~cannot~be~set~as~home~area~code~\msg_line_context:.
+ }
+
+\msg_new:nnn {phonenumbers} {UK/national dialling required}
+ {
+ British~subscriber~number~starting~with~0~or~1~requires~an~area~code~\msg_line_context:
+ }
+
+% Prüfe, ob eine Vorwahl als Heimatvorwahl zulässig ist.
+% #1: Heimatvorwahl
+\prg_new_protected_conditional:Npnn \phone_UK_heimatvorwahl_erlaubt:n #1 {T}
+ {
+ \clist_if_in:NnTF \c_phone_UK_ortsvorwahlen_clist {#1}
+ {
+ % In Großbritannien können nur nicht obligatorische Ortsvorwahlen Heimatvorwahl sein.
+ \clist_if_in:NnTF \c_phone_UK_obligatorische_ortsvorwahlen_clist {#1}
+ {
+ \msg_warning:onn {phonenumbers} {UK/illegal home area code} {#1}
+ \prg_return_false:
+ }
+ {
+ \prg_return_true:
+ }
+ }
+ {
+ \msg_warning:nnn {phonenumbers} {invalid home area code} {#1}
+ \prg_return_false:
+ }
+ }
+
+% #1: Vorwahl, #2: Soll die führende null ausgegeben werden?
+\cs_new_protected:Npn \phone_UK_ziffernvorwahl_schreiben:nN #1#2
+ {
+ \int_compare:nNnTF { \str_count:n {#1} } = {6}
+ {
+ % sechsstellige Vorwahl: Gliederung vor der zweitletzten Ziffer
+ \bool_if:NTF #2
+ {
+ \int_compare:nNnTF {\l_phone_gruppierungsminimum_int} > {6}
+ {
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {#1}
+ }
+ {
+ \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {1} {4} }
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {\,}
+ \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {5} {6} }
+ }
+ }
+ {
+ \int_compare:nNnTF {\l_phone_gruppierungsminimum_int} > {5}
+ {
+ \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_tail:n {#1} }
+ }
+ {
+ \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {2} {4} }
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {\,}
+ \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {5} {6} }
+ }
+ }
+ }
+ {
+ % nicht sechsstellige Vorwahl
+ \bool_if:NTF #2
+ {
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {#1}
+ }
+ {
+ \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_tail:n {#1} }
+ }
+ }
+ }
+
+% #1: Vorwahl, #2: Folgt eine Rufnummer?
+\cs_new_protected:Npn \phone_UK_vorwahl_schreiben:nn #1 #2
+ {
+ \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {UK} }
+ {
+ \clist_if_in:NnT \c_phone_UK_sondervorwahlen_clist {#1}
+ {
+ \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place}
+ {
+ \str_set:Nn \l_phone_vorwahldarstellung_str {number}
+ }
+ }
+
+ \bool_lazy_and:nnF { \str_if_eq_p:Vn \l_phone_heimatland_str {UK} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} }
+ {
+ \str_case:Vn \l_phone_vorwahldarstellung_str
+ {
+ {number}
+ {
+ \bool_if:nTF {#2}
+ {
+ \str_if_eq:VnTF \l_phone_vorwahltrennung_str {space}
+ {
+ \phone_UK_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ }
+ {
+ \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ }
+
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+ {
+ \phone_UK_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ }
+ }
+ {place}
+ {
+ \bool_if:nTF {#2}
+ {
+ \str_if_eq:VnF \l_phone_vorwahltrennung_str {space}
+ {
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {(}
+ }
+
+ \tl_if_exist:cTF {c_phone_UK_ortsname_ #1 _tl}
+ {
+ \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_UK_ortsname_ #1 _tl}
+ }
+ {
+ \phone_UK_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ }
+
+ \str_if_eq:VnF \l_phone_vorwahltrennung_str {space}
+ {
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {)}
+ }
+
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+ {
+ \tl_if_exist:cTF {c_phone_UK_ortsname_ #1 _tl}
+ {
+ \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_UK_ortsname_ #1 _tl}
+ }
+ {
+ \phone_UK_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ }
+ }
+ }
+ {place-and-number}
+ {
+ \tl_if_exist:cT {c_phone_UK_ortsname_ #1 _tl}
+ {
+ \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_UK_ortsname_ #1 _tl}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+
+ \str_if_eq:VnTF \l_phone_vorwahltrennung_str {space}
+ {
+ \phone_UK_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ }
+ {
+ \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_true_bool
+ }
+
+ \bool_if:nT {#2}
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+ }
+ }
+ }
+ }
+ {
+ \phone_ungruppierte_auslandsvorwahl_schreiben:n {44}
+
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+
+ \str_if_eq:VnTF \l_phone_auslandsvorwahltrennung_str {space}
+ {
+ \phone_UK_ziffernvorwahl_schreiben:nN {#1} \c_false_bool
+ }
+ {
+ \phone_geklammerte_ziffernvorwahl_schreiben:nN {#1} \c_false_bool
+ }
+
+ \bool_if:nT {#2}
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+ }
+
+ % Linktext schreiben, falls eine Rufnummer folgt
+ \bool_if:nT {#2}
+ {
+ \str_put_right:Nn \l_phone_linktext_str {+44}
+ \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} }
+ }
+ }
+
+\cs_generate_variant:Nn \phone_UK_vorwahl_schreiben:nn {Vx}
+
+% #1: Vorwahl, #2: Teilnehmerrufnummer
+\cs_new_protected:Npn \phone_UK_teilnehmerrufnummer_schreiben:Nn #1 #2
+ {
+ % Überprüfen der Nummernlänge
+ \str_if_empty:NTF #1
+ {
+ % Festnetznummer ohne Vorwahl (kann zwischen 4 und 8 Ziffern haben)
+ \phone_nummernlaenge_ueberpruefen:nnnn {#2} {4} {8} {landline}
+
+ % Nummern, die mit 0 oder 1 beginnen, erfordern das Wählen der Vorwahl
+ \str_case:xnT { \str_head:n {#2} }
+ {
+ {0} { }
+ {1} { }
+ }
+ {
+ \msg_warning:nn {phonenumbers} {UK/national dialling required}
+ }
+ }
+ {
+ \clist_if_in:NVTF \c_phone_UK_ortsvorwahlen_clist #1
+ {
+ % Festnetznummer, muss in der Regel 11 Ziffern umfassen
+ % Ausnahme: Bei den Vorwahlen 01XXX und 016977 sind auch 10 Ziffern möglich.
+ \bool_lazy_or:nnTF { \str_if_eq_p:Vn #1 {016977} } { \int_compare_p:nNn { \str_count:N #1 } = {5} }
+ {
+ \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {10} {11} {landline}
+ }
+ {
+ \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {11} {11} {landline}
+ }
+ }
+ {
+ % Mobilfunk-/Sondernummer
+ \str_if_eq:xnTF { \str_range:Nnn #1 {1} {4} } {0800}
+ {
+ % 0800er-Nummern haben 10 oder 11 Ziffern; Ausnahme: 0800 1111
+ \str_if_eq:nnTF {#2} {1111}
+ {
+ \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool
+ }
+ {
+ \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {10} {11} {freephone}
+ }
+ }
+ {
+ % alle anderen Sondernummern haben 11 Ziffern
+ \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {11} {11} {non-geographic}
+ }
+ }
+
+ \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
+ {
+ % Für gültige Nummern mit Vorwahl Linktext schreiben:
+ \str_put_right:Nn \l_phone_linktext_str {#2}
+ }
+ {
+ % Für ungültige Nummern mit Vorwahl Linktext löschen:
+ \str_clear:N \l_phone_linktext_str
+ }
+ }
+
+ \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
+ {
+ \int_compare:nNnTF { \str_count:n {#2} } > {6}
+ {
+ % Nummern mit mehr als 6 Ziffern werden in Vierergruppen gegliedert
+ \str_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#2} {1} {-5} }
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {\,}
+ \str_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#2} {-4} {-1} }
+ }
+ {
+ \str_put_right:Nn \l_phone_ausgabetext_tl {#2}
+ }
+ }
+ {
+ \str_put_right:Nn \l_phone_ausgabetext_tl {#2}
+ }
+ }
+
+\cs_generate_variant:Nn \phone_UK_teilnehmerrufnummer_schreiben:Nn {Nx,NV}
+
+\cs_new_protected:Npn \phone_UK_nummer_schreiben:
+ {
+ \int_set:Nn \l_phone_nummernlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str }
+
+ \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0}
+ {
+ \bool_set_false:N \l_phone_vorwahl_gefunden_bool
+
+ \int_step_inline:nnnn {6} {-1} {3}
+ {
+ \bool_if:NF \l_phone_vorwahl_gefunden_bool
+ {
+ \int_compare:nT { \l_phone_nummernlaenge_int >= ##1 }
+ {
+ \str_set:Nx \l_phone_vorwahl_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {##1} }
+
+ \clist_if_in:NVT \c_phone_UK_vorwahlen_clist \l_phone_vorwahl_str
+ {
+ \bool_set_true:N \l_phone_vorwahl_gefunden_bool
+
+ \phone_UK_vorwahl_schreiben:Vx \l_phone_vorwahl_str { \int_compare_p:nNn {##1} < {\l_phone_nummernlaenge_int} }
+
+ \int_compare:nNnTF {##1} = {\l_phone_nummernlaenge_int}
+ {
+ \msg_warning:nn {phonenumbers} {missing subscriber number}
+ }
+ {
+ \phone_UK_teilnehmerrufnummer_schreiben:Nx \l_phone_vorwahl_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {##1 + 1} {-1} }
+ }
+ }
+ }
+ }
+ }
+
+ \bool_if:NF \l_phone_vorwahl_gefunden_bool
+ {
+ \msg_warning:nn {phonenumbers} {invalid area code}
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+ {
+ \phone_UK_teilnehmerrufnummer_schreiben:NV \c_empty_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+
+\cs_new_protected:Npn \phone_UK_vorwahlliste_ausgeben:n #1
+ {
+ \begin{tabbing}
+ \hspace {4em} \= \kill
+
+ \bool_set_false:N \l_phone_zeilenumbruch_bool
+
+ \clist_map_inline:cn {c_phone_UK_ #1 _clist}
+ {
+ \bool_if:NTF \l_phone_zeilenumbruch_bool
+ {
+ \\
+ }
+ {
+ \bool_gset_true:N \l_phone_zeilenumbruch_bool
+ }
+
+ \phone_UK_ziffernvorwahl_schreiben:nN {##1} \c_true_bool
+ \tl_use:N \l_phone_ausgabetext_tl
+ \>
+ \tl_if_exist:cT {c_phone_UK_ortsname_ ##1 _tl}
+ {
+ \tl_use:c {c_phone_UK_ortsname_ ##1 _tl}
+ }
+ }
+ \end{tabbing}
+ }
diff --git a/macros/latex/contrib/phonenumbers/tex/phn-US_Ortsnamen.tex b/macros/latex/contrib/phonenumbers/tex/phonenumbers-US.def
index a53bf4dec7..dfd3ca721e 100644
--- a/macros/latex/contrib/phonenumbers/tex/phn-US_Ortsnamen.tex
+++ b/macros/latex/contrib/phonenumbers/tex/phonenumbers-US.def
@@ -1,5 +1,811 @@
-% phonenumbers package: place names of the North American Numbering Plan
-% Datum: 20. August 2021
+% phonenumbers package: phonenumbers-US.def
+% Module for North American telephone numbers
+% Author: K. Wehr
+% Version: 2.5
+% Date: 2022-07-01
+\clist_const:Nn \c_phone_US_ortsvorwahlen_clist {201,
+202,
+203,
+204,
+205,
+206,
+207,
+208,
+209,
+210,
+212,
+213,
+214,
+215,
+216,
+217,
+218,
+219,
+220,
+223,
+224,
+225,
+226,
+227,
+228,
+229,
+231,
+234,
+235,
+236,
+239,
+240,
+242,
+246,
+248,
+249,
+250,
+251,
+252,
+253,
+254,
+256,
+260,
+262,
+263,
+264,
+267,
+268,
+269,
+270,
+272,
+274,
+276,
+279,
+281,
+283,
+284,
+289,
+301,
+302,
+303,
+304,
+305,
+306,
+307,
+308,
+309,
+310,
+312,
+313,
+314,
+315,
+316,
+317,
+318,
+319,
+320,
+321,
+323,
+324,
+325,
+326,
+327,
+329,
+330,
+331,
+332,
+334,
+336,
+337,
+339,
+340,
+341,
+343,
+345,
+346,
+347,
+350,
+351,
+352,
+354,
+360,
+361,
+363,
+364,
+365,
+367,
+368,
+380,
+382,
+385,
+386,
+401,
+402,
+403,
+404,
+405,
+406,
+407,
+408,
+409,
+410,
+412,
+413,
+414,
+415,
+416,
+417,
+418,
+419,
+423,
+424,
+425,
+428,
+430,
+431,
+432,
+434,
+435,
+437,
+438,
+440,
+441,
+442,
+443,
+445,
+447,
+448,
+450,
+458,
+463,
+464,
+468,
+469,
+470,
+472,
+473,
+474,
+475,
+478,
+479,
+480,
+484,
+501,
+502,
+503,
+504,
+505,
+506,
+507,
+508,
+509,
+510,
+512,
+513,
+514,
+515,
+516,
+517,
+518,
+519,
+520,
+530,
+531,
+534,
+539,
+540,
+541,
+548,
+551,
+557,
+559,
+561,
+562,
+563,
+564,
+567,
+570,
+571,
+572,
+573,
+574,
+575,
+579,
+580,
+581,
+582,
+584,
+585,
+586,
+587,
+601,
+602,
+603,
+604,
+605,
+606,
+607,
+608,
+609,
+610,
+612,
+613,
+614,
+615,
+616,
+617,
+618,
+619,
+620,
+623,
+626,
+628,
+629,
+630,
+631,
+636,
+639,
+640,
+641,
+645,
+646,
+647,
+649,
+650,
+651,
+656,
+657,
+658,
+659,
+660,
+661,
+662,
+664,
+667,
+669,
+670,
+671,
+672,
+678,
+680,
+681,
+682,
+683,
+684,
+689,
+701,
+702,
+703,
+704,
+705,
+706,
+707,
+708,
+709,
+712,
+713,
+714,
+715,
+716,
+717,
+718,
+719,
+720,
+721,
+724,
+725,
+726,
+727,
+728,
+730,
+731,
+732,
+734,
+737,
+740,
+742,
+743,
+747,
+753,
+754,
+757,
+758,
+760,
+762,
+763,
+765,
+767,
+769,
+770,
+771,
+772,
+773,
+774,
+775,
+778,
+779,
+780,
+781,
+782,
+784,
+785,
+786,
+787,
+801,
+802,
+803,
+804,
+805,
+806,
+807,
+808,
+809,
+810,
+812,
+813,
+814,
+815,
+816,
+817,
+818,
+819,
+820,
+825,
+826,
+828,
+829,
+830,
+831,
+832,
+835,
+838,
+839,
+840,
+843,
+845,
+847,
+848,
+849,
+850,
+854,
+856,
+857,
+858,
+859,
+860,
+861,
+862,
+863,
+864,
+865,
+867,
+868,
+869,
+870,
+872,
+873,
+876,
+878,
+901,
+902,
+903,
+904,
+905,
+906,
+907,
+908,
+909,
+910,
+912,
+913,
+914,
+915,
+916,
+917,
+918,
+919,
+920,
+925,
+928,
+929,
+930,
+931,
+934,
+936,
+937,
+938,
+939,
+940,
+941,
+943,
+945,
+947,
+948,
+949,
+951,
+952,
+954,
+956,
+959,
+970,
+971,
+972,
+973,
+975,
+978,
+979,
+980,
+983,
+984,
+985,
+986,
+989}
+\clist_const:Nn \c_phone_US_obligatorische_ortsvorwahlen_clist {201,
+202,
+203,
+204,
+205,
+206,
+208,
+209,
+210,
+212,
+213,
+214,
+215,
+217,
+218,
+219,
+220,
+223,
+224,
+226,
+227,
+234,
+235,
+236,
+240,
+248,
+249,
+250,
+251,
+253,
+254,
+256,
+262,
+267,
+270,
+272,
+274,
+276,
+279,
+281,
+283,
+289,
+301,
+302,
+303,
+304,
+305,
+309,
+310,
+312,
+314,
+315,
+317,
+319,
+321,
+323,
+324,
+326,
+327,
+329,
+330,
+331,
+332,
+336,
+337,
+339,
+341,
+343,
+346,
+347,
+350,
+351,
+352,
+354,
+360,
+361,
+363,
+364,
+365,
+367,
+368,
+380,
+382,
+385,
+402,
+403,
+404,
+405,
+406,
+407,
+408,
+409,
+410,
+412,
+414,
+415,
+416,
+417,
+418,
+419,
+424,
+425,
+428,
+430,
+431,
+437,
+438,
+440,
+442,
+443,
+445,
+447,
+448,
+450,
+458,
+463,
+464,
+468,
+469,
+470,
+472,
+474,
+475,
+478,
+480,
+484,
+501,
+503,
+504,
+505,
+508,
+509,
+510,
+512,
+513,
+514,
+515,
+516,
+518,
+519,
+520,
+530,
+531,
+534,
+539,
+540,
+541,
+548,
+551,
+557,
+561,
+562,
+564,
+567,
+570,
+571,
+572,
+574,
+575,
+579,
+581,
+582,
+584,
+587,
+601,
+603,
+604,
+605,
+607,
+608,
+609,
+610,
+613,
+614,
+615,
+616,
+617,
+618,
+619,
+620,
+626,
+628,
+629,
+630,
+631,
+639,
+640,
+645,
+646,
+647,
+650,
+656,
+657,
+658,
+659,
+660,
+662,
+667,
+669,
+671,
+672,
+678,
+680,
+681,
+682,
+683,
+689,
+702,
+703,
+704,
+705,
+706,
+707,
+708,
+713,
+714,
+715,
+716,
+717,
+718,
+719,
+720,
+724,
+725,
+726,
+728,
+730,
+731,
+732,
+737,
+740,
+742,
+743,
+747,
+753,
+754,
+757,
+760,
+762,
+769,
+770,
+771,
+773,
+774,
+775,
+778,
+779,
+780,
+781,
+782,
+785,
+786,
+787,
+801,
+802,
+803,
+804,
+805,
+806,
+808,
+809,
+810,
+812,
+813,
+814,
+815,
+816,
+817,
+818,
+819,
+820,
+825,
+826,
+829,
+830,
+832,
+835,
+838,
+839,
+840,
+843,
+845,
+847,
+848,
+849,
+850,
+854,
+856,
+857,
+858,
+859,
+860,
+861,
+862,
+865,
+872,
+873,
+878,
+902,
+903,
+905,
+906,
+907,
+908,
+909,
+910,
+912,
+914,
+915,
+916,
+917,
+918,
+919,
+920,
+925,
+928,
+929,
+930,
+934,
+937,
+938,
+939,
+940,
+941,
+943,
+945,
+947,
+948,
+949,
+951,
+952,
+954,
+959,
+970,
+971,
+972,
+973,
+975,
+978,
+980,
+983,
+984,
+986,
+989}
+\clist_const:Nn \c_phone_US_sondervorwahlen_clist {500,
+521,
+522,
+523,
+524,
+525,
+526,
+527,
+528,
+533,
+544,
+566,
+577,
+588,
+600,
+622,
+700,
+710,
+800,
+833,
+844,
+855,
+866,
+877,
+888,
+900}
\tl_const:cn {c_phone_US_ortsname_201_tl} {New~Jersey}
\tl_const:cn {c_phone_US_ortsname_202_tl} {Washington,~D.\,C.}
\tl_const:cn {c_phone_US_ortsname_203_tl} {Connecticut}
@@ -28,6 +834,7 @@
\tl_const:cn {c_phone_US_ortsname_229_tl} {Georgia}
\tl_const:cn {c_phone_US_ortsname_231_tl} {Michigan}
\tl_const:cn {c_phone_US_ortsname_234_tl} {Ohio}
+\tl_const:cn {c_phone_US_ortsname_235_tl} {Missouri}
\tl_const:cn {c_phone_US_ortsname_236_tl} {British~Columbia}
\tl_const:cn {c_phone_US_ortsname_239_tl} {Florida}
\tl_const:cn {c_phone_US_ortsname_240_tl} {Maryland}
@@ -43,6 +850,7 @@
\tl_const:cn {c_phone_US_ortsname_256_tl} {Alabama}
\tl_const:cn {c_phone_US_ortsname_260_tl} {Indiana}
\tl_const:cn {c_phone_US_ortsname_262_tl} {Wisconsin}
+\tl_const:cn {c_phone_US_ortsname_263_tl} {Quebec}
\tl_const:cn {c_phone_US_ortsname_264_tl} {Anguilla}
\tl_const:cn {c_phone_US_ortsname_267_tl} {Pennsylvania}
\tl_const:cn {c_phone_US_ortsname_268_tl} {Antigua~and~Barbuda}
@@ -53,6 +861,7 @@
\tl_const:cn {c_phone_US_ortsname_276_tl} {Virginia}
\tl_const:cn {c_phone_US_ortsname_279_tl} {California}
\tl_const:cn {c_phone_US_ortsname_281_tl} {Texas}
+\tl_const:cn {c_phone_US_ortsname_283_tl} {Ohio}
\tl_const:cn {c_phone_US_ortsname_284_tl} {British~Virgin~Islands}
\tl_const:cn {c_phone_US_ortsname_289_tl} {Ontario}
\tl_const:cn {c_phone_US_ortsname_301_tl} {Maryland}
@@ -76,8 +885,11 @@
\tl_const:cn {c_phone_US_ortsname_320_tl} {Minnesota}
\tl_const:cn {c_phone_US_ortsname_321_tl} {Florida}
\tl_const:cn {c_phone_US_ortsname_323_tl} {California}
+\tl_const:cn {c_phone_US_ortsname_324_tl} {Florida}
\tl_const:cn {c_phone_US_ortsname_325_tl} {Texas}
\tl_const:cn {c_phone_US_ortsname_326_tl} {Ohio}
+\tl_const:cn {c_phone_US_ortsname_327_tl} {Arkansas}
+\tl_const:cn {c_phone_US_ortsname_329_tl} {New~York}
\tl_const:cn {c_phone_US_ortsname_330_tl} {Ohio}
\tl_const:cn {c_phone_US_ortsname_331_tl} {Illinois}
\tl_const:cn {c_phone_US_ortsname_332_tl} {New~York}
@@ -91,15 +903,19 @@
\tl_const:cn {c_phone_US_ortsname_345_tl} {Cayman~Islands}
\tl_const:cn {c_phone_US_ortsname_346_tl} {Texas}
\tl_const:cn {c_phone_US_ortsname_347_tl} {New~York}
+\tl_const:cn {c_phone_US_ortsname_350_tl} {California}
\tl_const:cn {c_phone_US_ortsname_351_tl} {Massachusetts}
\tl_const:cn {c_phone_US_ortsname_352_tl} {Florida}
+\tl_const:cn {c_phone_US_ortsname_354_tl} {Quebec}
\tl_const:cn {c_phone_US_ortsname_360_tl} {Washington}
\tl_const:cn {c_phone_US_ortsname_361_tl} {Texas}
+\tl_const:cn {c_phone_US_ortsname_363_tl} {New~York}
\tl_const:cn {c_phone_US_ortsname_364_tl} {Kentucky}
\tl_const:cn {c_phone_US_ortsname_365_tl} {Ontario}
\tl_const:cn {c_phone_US_ortsname_367_tl} {Quebec}
\tl_const:cn {c_phone_US_ortsname_368_tl} {Alberta}
\tl_const:cn {c_phone_US_ortsname_380_tl} {Ohio}
+\tl_const:cn {c_phone_US_ortsname_382_tl} {Ontario}
\tl_const:cn {c_phone_US_ortsname_385_tl} {Utah}
\tl_const:cn {c_phone_US_ortsname_386_tl} {Florida}
\tl_const:cn {c_phone_US_ortsname_401_tl} {Rhode~Island}
@@ -142,8 +958,10 @@
\tl_const:cn {c_phone_US_ortsname_458_tl} {Oregon}
\tl_const:cn {c_phone_US_ortsname_463_tl} {Indiana}
\tl_const:cn {c_phone_US_ortsname_464_tl} {Illinois}
+\tl_const:cn {c_phone_US_ortsname_468_tl} {Quebec}
\tl_const:cn {c_phone_US_ortsname_469_tl} {Texas}
\tl_const:cn {c_phone_US_ortsname_470_tl} {Georgia}
+\tl_const:cn {c_phone_US_ortsname_472_tl} {North~Carolina}
\tl_const:cn {c_phone_US_ortsname_473_tl} {Grenada}
\tl_const:cn {c_phone_US_ortsname_474_tl} {Saskatchewan}
\tl_const:cn {c_phone_US_ortsname_475_tl} {Connecticut}
@@ -178,6 +996,7 @@
\tl_const:cn {c_phone_US_ortsname_541_tl} {Oregon}
\tl_const:cn {c_phone_US_ortsname_548_tl} {Ontario}
\tl_const:cn {c_phone_US_ortsname_551_tl} {New~Jersey}
+\tl_const:cn {c_phone_US_ortsname_557_tl} {Missouri}
\tl_const:cn {c_phone_US_ortsname_559_tl} {California}
\tl_const:cn {c_phone_US_ortsname_561_tl} {Florida}
\tl_const:cn {c_phone_US_ortsname_562_tl} {California}
@@ -194,6 +1013,7 @@
\tl_const:cn {c_phone_US_ortsname_580_tl} {Oklahoma}
\tl_const:cn {c_phone_US_ortsname_581_tl} {Quebec}
\tl_const:cn {c_phone_US_ortsname_582_tl} {Pennsylvania}
+\tl_const:cn {c_phone_US_ortsname_584_tl} {Manitoba}
\tl_const:cn {c_phone_US_ortsname_585_tl} {New~York}
\tl_const:cn {c_phone_US_ortsname_586_tl} {Michigan}
\tl_const:cn {c_phone_US_ortsname_587_tl} {Alberta}
@@ -226,6 +1046,7 @@
\tl_const:cn {c_phone_US_ortsname_639_tl} {Saskatchewan}
\tl_const:cn {c_phone_US_ortsname_640_tl} {New~Jersey}
\tl_const:cn {c_phone_US_ortsname_641_tl} {Iowa}
+\tl_const:cn {c_phone_US_ortsname_645_tl} {Florida}
\tl_const:cn {c_phone_US_ortsname_646_tl} {New~York}
\tl_const:cn {c_phone_US_ortsname_647_tl} {Ontario}
\tl_const:cn {c_phone_US_ortsname_649_tl} {Turks~and~Caicos~Islands}
@@ -248,6 +1069,7 @@
\tl_const:cn {c_phone_US_ortsname_680_tl} {New~York}
\tl_const:cn {c_phone_US_ortsname_681_tl} {West~Virginia}
\tl_const:cn {c_phone_US_ortsname_682_tl} {Texas}
+\tl_const:cn {c_phone_US_ortsname_683_tl} {Ontario}
\tl_const:cn {c_phone_US_ortsname_684_tl} {American~Samoa}
\tl_const:cn {c_phone_US_ortsname_689_tl} {Florida}
\tl_const:cn {c_phone_US_ortsname_701_tl} {North~Dakota}
@@ -273,6 +1095,7 @@
\tl_const:cn {c_phone_US_ortsname_725_tl} {Nevada}
\tl_const:cn {c_phone_US_ortsname_726_tl} {Texas}
\tl_const:cn {c_phone_US_ortsname_727_tl} {Florida}
+\tl_const:cn {c_phone_US_ortsname_728_tl} {Florida}
\tl_const:cn {c_phone_US_ortsname_730_tl} {Illinois}
\tl_const:cn {c_phone_US_ortsname_731_tl} {Tennessee}
\tl_const:cn {c_phone_US_ortsname_732_tl} {New~Jersey}
@@ -282,6 +1105,7 @@
\tl_const:cn {c_phone_US_ortsname_742_tl} {Ontario}
\tl_const:cn {c_phone_US_ortsname_743_tl} {North~Carolina}
\tl_const:cn {c_phone_US_ortsname_747_tl} {California}
+\tl_const:cn {c_phone_US_ortsname_753_tl} {Ontario}
\tl_const:cn {c_phone_US_ortsname_754_tl} {Florida}
\tl_const:cn {c_phone_US_ortsname_757_tl} {Virginia}
\tl_const:cn {c_phone_US_ortsname_758_tl} {Saint~Lucia}
@@ -332,6 +1156,7 @@
\tl_const:cn {c_phone_US_ortsname_830_tl} {Texas}
\tl_const:cn {c_phone_US_ortsname_831_tl} {California}
\tl_const:cn {c_phone_US_ortsname_832_tl} {Texas}
+\tl_const:cn {c_phone_US_ortsname_835_tl} {Pennsylvania}
\tl_const:cn {c_phone_US_ortsname_838_tl} {New~York}
\tl_const:cn {c_phone_US_ortsname_839_tl} {South~Carolina}
\tl_const:cn {c_phone_US_ortsname_840_tl} {California}
@@ -347,6 +1172,7 @@
\tl_const:cn {c_phone_US_ortsname_858_tl} {California}
\tl_const:cn {c_phone_US_ortsname_859_tl} {Kentucky}
\tl_const:cn {c_phone_US_ortsname_860_tl} {Connecticut}
+\tl_const:cn {c_phone_US_ortsname_861_tl} {Illinois}
\tl_const:cn {c_phone_US_ortsname_862_tl} {New~Jersey}
\tl_const:cn {c_phone_US_ortsname_863_tl} {Florida}
\tl_const:cn {c_phone_US_ortsname_864_tl} {South~Carolina}
@@ -359,7 +1185,6 @@
\tl_const:cn {c_phone_US_ortsname_873_tl} {Quebec}
\tl_const:cn {c_phone_US_ortsname_876_tl} {Jamaica}
\tl_const:cn {c_phone_US_ortsname_878_tl} {Pennsylvania}
-\tl_const:cn {c_phone_US_ortsname_879_tl} {Newfoundland~and~Labrador}
\tl_const:cn {c_phone_US_ortsname_901_tl} {Tennessee}
\tl_const:cn {c_phone_US_ortsname_902_tl} {Nova~Scotia,~Prince~Edward~Island}
\tl_const:cn {c_phone_US_ortsname_903_tl} {Texas}
@@ -405,9 +1230,11 @@
\tl_const:cn {c_phone_US_ortsname_971_tl} {Oregon}
\tl_const:cn {c_phone_US_ortsname_972_tl} {Texas}
\tl_const:cn {c_phone_US_ortsname_973_tl} {New~Jersey}
+\tl_const:cn {c_phone_US_ortsname_975_tl} {Missouri}
\tl_const:cn {c_phone_US_ortsname_978_tl} {Massachusetts}
\tl_const:cn {c_phone_US_ortsname_979_tl} {Texas}
\tl_const:cn {c_phone_US_ortsname_980_tl} {North~Carolina}
+\tl_const:cn {c_phone_US_ortsname_983_tl} {Colorado}
\tl_const:cn {c_phone_US_ortsname_984_tl} {North~Carolina}
\tl_const:cn {c_phone_US_ortsname_985_tl} {Louisiana}
\tl_const:cn {c_phone_US_ortsname_986_tl} {Idaho}
@@ -419,6 +1246,8 @@
\tl_const:cn {c_phone_US_ortsname_524_tl} {Non-Geographic~Service}
\tl_const:cn {c_phone_US_ortsname_525_tl} {Non-Geographic~Service}
\tl_const:cn {c_phone_US_ortsname_526_tl} {Non-Geographic~Service}
+\tl_const:cn {c_phone_US_ortsname_527_tl} {Non-Geographic~Service}
+\tl_const:cn {c_phone_US_ortsname_528_tl} {Non-Geographic~Service}
\tl_const:cn {c_phone_US_ortsname_533_tl} {Non-Geographic~Service}
\tl_const:cn {c_phone_US_ortsname_544_tl} {Non-Geographic~Service}
\tl_const:cn {c_phone_US_ortsname_566_tl} {Non-Geographic~Service}
@@ -436,3 +1265,384 @@
\tl_const:cn {c_phone_US_ortsname_877_tl} {Toll-Free}
\tl_const:cn {c_phone_US_ortsname_888_tl} {Toll-Free}
\tl_const:cn {c_phone_US_ortsname_900_tl} {Premium~Service}
+
+\tl_const:Nn \c_phone_US_landesadjektiv_tl {North~American}
+\bool_const:Nn \c_phone_US_erlaubt_durchwahl_bool {\c_false_bool}
+
+\clist_new:N \c_phone_US_vorwahlen_clist
+\clist_concat:NNN \c_phone_US_vorwahlen_clist \c_phone_US_ortsvorwahlen_clist \c_phone_US_sondervorwahlen_clist
+
+\msg_new:nnn {phonenumbers} {US/illegal home area code}
+ {
+ 10-digit~dialling~is~required~in~\tl_use:c {c_phone_US_ortsname_#1_tl}.~#1~cannot~be~set~as~home~area~code~\msg_line_context:.
+ }
+
+\msg_new:nnn {phonenumbers} {US/invalid area code}
+ {
+ unknown~area~code~#1~in~North~American~phone~number~\msg_line_context:
+ }
+
+\msg_new:nnn {phonenumbers} {US/invalid central office code}
+ {
+ invalid~central~office~code~#1~in~North~American~phone~number~\msg_line_context:
+ }
+
+\bool_new:N \l_phone_US_ferngespraechspraefix_bool
+
+\keys_define:nn {phonenumbers}
+ {
+ trunk-prefix .choices:nn = {on,off}
+ {
+ \str_if_eq:VnTF \l_keys_choice_tl {on}
+ {
+ \bool_set_true:N \l_phone_US_ferngespraechspraefix_bool
+ }
+ {
+ \bool_set_false:N \l_phone_US_ferngespraechspraefix_bool
+ }
+ },
+ trunk-prefix .initial:n = off,
+ trunk-prefix .default:n = on
+ }
+
+% Prüfe, ob eine Vorwahl als Heimatvorwahl zulässig ist.
+% #1: Heimatvorwahl
+\prg_new_protected_conditional:Npnn \phone_US_heimatvorwahl_erlaubt:n #1 {T}
+ {
+ \clist_if_in:NnTF \c_phone_US_ortsvorwahlen_clist {#1}
+ {
+ % In Nordamerika können nur nicht obligatorische Ortsvorwahlen Heimatvorwahl sein.
+ \clist_if_in:NnTF \c_phone_US_obligatorische_ortsvorwahlen_clist {#1}
+ {
+ \msg_warning:onn {phonenumbers} {US/illegal home area code} {#1}
+ \prg_return_false:
+ }
+ {
+ \prg_return_true:
+ }
+ }
+ {
+ \msg_warning:nnn {phonenumbers} {invalid home area code} {#1}
+ \prg_return_false:
+ }
+ }
+
+% #1: Vorwahl, #2: Folgt eine Rufnummer?
+\cs_new_protected:Npn \phone_US_vorwahl_schreiben:nN #1 #2
+ {
+ \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {US} }
+ {
+ \bool_lazy_and:nnF { \str_if_eq_p:Vn \l_phone_heimatland_str {US} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} }
+ {
+ \bool_if:NTF \l_phone_US_ferngespraechspraefix_bool
+ {
+ \tl_put_right:Nx \l_phone_ausgabetext_tl
+ {
+ \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place-and-number}
+ {
+ \tl_if_exist:cT {c_phone_US_ortsname_#1_tl}
+ {
+ \tl_use:c {c_phone_US_ortsname_#1_tl}
+ \c_space_tl
+ }
+ }
+
+ \bool_if:NTF #2
+ {
+ \str_case:VnF \l_phone_vorwahltrennung_str
+ {
+ {brackets} {1 \c_space_tl (#1) \c_space_tl}
+ {space} {1 \c_space_tl #1 \c_space_tl}
+ }
+ {
+ 1 \c_phone_bindestrich_tl #1 \c_phone_bindestrich_tl
+ }
+ }
+ {
+ \str_case:VnF \l_phone_vorwahltrennung_str
+ {
+ {brackets} {1 \c_space_tl (#1)}
+ {space} {1 \c_space_tl #1}
+ }
+ {
+ 1 \c_phone_bindestrich_tl #1
+ }
+ }
+ }
+ }
+ {
+ \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place}
+ {
+ \clist_if_in:NnT \c_phone_US_sondervorwahlen_clist {#1}
+ {
+ \str_set:Nn \l_phone_vorwahldarstellung_str {number}
+ }
+ }
+
+ \tl_put_right:Nx \l_phone_ausgabetext_tl
+ {
+ \str_case:Vn \l_phone_vorwahldarstellung_str
+ {
+ {number}
+ {
+ \bool_if:NTF #2
+ {
+ \str_case:VnF \l_phone_vorwahltrennung_str
+ {
+ {brackets} {(#1) \c_space_tl}
+ {space} {#1 \c_space_tl}
+ }
+ {
+ #1 \c_phone_bindestrich_tl
+ }
+ }
+ {
+ #1
+ }
+ }
+ {place}
+ {
+ \bool_if:NTF #2
+ {
+ \str_case:VnF \l_phone_vorwahltrennung_str
+ {
+ {brackets}
+ {
+ (
+ \tl_if_exist:cTF {c_phone_US_ortsname_#1_tl}
+ {
+ \tl_use:c {c_phone_US_ortsname_#1_tl}
+ }
+ {
+ #1
+ }
+ )
+ \c_space_tl
+ }
+ }
+ {
+ \tl_if_exist:cTF {c_phone_US_ortsname_#1_tl}
+ {
+ \tl_use:c {c_phone_US_ortsname_#1_tl}
+ \c_space_tl
+ }
+ {
+ #1 \c_phone_bindestrich_tl
+ }
+ }
+ }
+ {
+ \tl_if_exist:cTF {c_phone_US_ortsname_#1_tl}
+ {
+ \tl_use:c {c_phone_US_ortsname_#1_tl}
+ }
+ {
+ #1
+ }
+ }
+ }
+ {place-and-number}
+ {
+ \tl_if_exist:cT {c_phone_US_ortsname_#1_tl}
+ {
+ \tl_use:c {c_phone_US_ortsname_#1_tl}
+ \c_space_tl
+ }
+
+ \bool_if:NTF #2
+ {
+ \str_case:VnF \l_phone_vorwahltrennung_str
+ {
+ {brackets} {(#1) \c_space_tl}
+ {space} {#1 \c_space_tl}
+ }
+ {
+ #1 \c_phone_bindestrich_tl
+ }
+ }
+ {
+ \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets}
+ {
+ (#1)
+ }
+ {
+ #1
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ {
+ \phone_ungruppierte_auslandsvorwahl_schreiben:n {1}
+
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {\c_space_tl}
+
+ \str_if_eq:VnTF \l_phone_auslandsvorwahltrennung_str {brackets}
+ {
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {(#1)}
+ }
+ {
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {#1}
+ }
+
+ \bool_if:NT #2
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+ }
+
+ % Linktext schreiben, falls eine Rufnummer folgt
+ \bool_if:NT #2
+ {
+ \str_put_right:Nn \l_phone_linktext_str {+1 #1}
+ }
+ }
+
+\cs_generate_variant:Nn \phone_US_vorwahl_schreiben:nN {VN}
+
+% #1: Ortsvorwahl, #2: Vermittlungsstellennummer
+\cs_new_protected:Npn \phone_US_vermittlungsstellennummer_schreiben:nn #1 #2
+ {
+ \str_case:xnTF { \str_head:n {#2} }
+ {
+ {0} { }
+ {1} { }
+ }
+ {
+ \msg_warning:nnn {phonenumbers} {US/invalid central office code} {#2}
+ }
+ {
+ \bool_set_false:N \l_tmpa_bool % Regionalnummer?
+
+ \tl_if_empty:nTF {#1}
+ {
+ \bool_set_true:N \l_tmpa_bool
+ }
+ {
+ \clist_if_in:NnT \c_phone_US_ortsvorwahlen_clist {#1}
+ {
+ \bool_set_true:N \l_tmpa_bool
+ }
+ }
+
+ \bool_if:NTF \l_tmpa_bool
+ {
+ \str_if_eq:xnT { \str_range:nnn {#2} {2} {3} } {11}
+ {
+ \msg_warning:nnn {phonenumbers} {US/invalid central office code} {#2}
+ }
+ }
+ {
+ \str_if_eq:nnT {#2} {911}
+ {
+ \msg_warning:nnn {phonenumbers} {US/invalid central office code} {#2}
+ }
+ }
+ }
+
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {#2}
+
+ \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {US} }
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl
+ }
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl
+ }
+ {
+ \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
+ }
+ }
+
+ % Linktext schreiben, falls eine Vorwahl vorangeht
+ \tl_if_empty:nF {#1}
+ {
+ \str_put_right:Nn \l_phone_linktext_str {#2}
+ }
+ }
+
+\cs_generate_variant:Nn \phone_US_vermittlungsstellennummer_schreiben:nn {Vx}
+
+\cs_new_protected:Npn \phone_US_nummer_schreiben:
+ {
+ \int_case:nnF { \str_count:N \l_phone_bereinigte_nummer_str }
+ {
+ {3}
+ {
+ \clist_if_in:NVTF \c_phone_US_vorwahlen_clist \l_phone_bereinigte_nummer_str
+ {
+ \msg_warning:nn {phonenumbers} {missing subscriber number}
+ }
+ {
+ \msg_warning:nnV {phonenumbers} {US/invalid area code} \l_phone_bereinigte_nummer_str
+ }
+
+ \phone_US_vorwahl_schreiben:VN \l_phone_bereinigte_nummer_str \c_false_bool
+ }
+ {7}
+ {
+ \phone_US_vermittlungsstellennummer_schreiben:Vx \c_empty_tl { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {3} }
+
+ \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:Nnn \l_phone_bereinigte_nummer_str {4} {7} }
+ }
+ {10}
+ {
+ \str_set:Nx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {3} }
+
+ \clist_if_in:NVF \c_phone_US_vorwahlen_clist \l_tmpa_str
+ {
+ \msg_warning:nnx {phonenumbers} {US/invalid area code} {\l_tmpa_str}
+ }
+
+ \phone_US_vorwahl_schreiben:VN \l_tmpa_str \c_true_bool
+
+ \phone_US_vermittlungsstellennummer_schreiben:Vx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {4} {6} }
+
+ \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:Nnn \l_phone_bereinigte_nummer_str {7} {10} }
+ \str_put_right:Nx \l_phone_linktext_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {7} {10} }
+ }
+ }
+ {
+ \int_compare:nNnTF { \str_count:N \l_phone_bereinigte_nummer_str } < {10}
+ {
+ \msg_warning:nnnn {phonenumbers} {number too short} {phone} {10}
+ }
+ {
+ \msg_warning:nnnn {phonenumbers} {number too long} {phone} {10}
+ }
+
+ \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
+ }
+ }
+
+\cs_new_protected:Npn \phone_US_vorwahlliste_ausgeben:n #1
+ {
+ \begin{tabbing}
+ \hspace {3em} \= \kill
+
+ \bool_set_false:N \l_phone_zeilenumbruch_bool
+
+ \clist_map_inline:cn {c_phone_US_ #1 _clist}
+ {
+ \bool_if:NTF \l_phone_zeilenumbruch_bool
+ {
+ \\
+ }
+ {
+ \bool_gset_true:N \l_phone_zeilenumbruch_bool
+ }
+
+ ##1
+ \>
+ \tl_if_exist:cT {c_phone_US_ortsname_ ##1 _tl}
+ {
+ \tl_use:c {c_phone_US_ortsname_ ##1 _tl}
+ }
+ }
+ \end{tabbing}
+ }
diff --git a/macros/latex/contrib/phonenumbers/tex/phonenumbers.sty b/macros/latex/contrib/phonenumbers/tex/phonenumbers.sty
index b1a24faf76..658aaa3b50 100644
--- a/macros/latex/contrib/phonenumbers/tex/phonenumbers.sty
+++ b/macros/latex/contrib/phonenumbers/tex/phonenumbers.sty
@@ -1,10 +1,8 @@
-% phonenumbers.sty
-% LaTeX-Paket zur Formatierung von Telefonnummern
+% phonenumbers package: phonenumbers.sty
% LaTeX package for formatting telephone numbers
-% Autor: K. Wehr
-% Version: 2.4
-% Datum: 13. Mai 2022
-
+% Author: K. Wehr
+% Version: 2.5
+% Date: 2022-07-01
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
@@ -12,15 +10,230 @@
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
+\NeedsTeXFormat{LaTeX2e}[2021-11-15]
+\ProvidesExplPackage {phonenumbers} {2022-07-01} {2.5} {Telephone number package}
-
-\ProvidesExplPackage {phonenumbers} {2022-05-13} {2.4} {Telephone number package}
-
-\RequirePackage{l3keys2e}
-\RequirePackage{ltxcmds}
+\RequirePackage {l3keys2e}
\clist_const:Nn \c_phone_ziffern_clist {0,1,2,3,4,5,6,7,8,9}
\clist_const:Nn \c_phone_gliederungszeichen_clist {(,),[,],/}
+\clist_const:Nn \c_phone_landeskennzahlen_clist {1,
+20,
+211,
+212,
+213,
+216,
+218,
+220,
+221,
+222,
+223,
+224,
+225,
+226,
+227,
+228,
+229,
+230,
+231,
+232,
+233,
+234,
+235,
+236,
+237,
+238,
+239,
+240,
+241,
+242,
+243,
+244,
+245,
+246,
+247,
+248,
+249,
+250,
+251,
+252,
+253,
+254,
+255,
+256,
+257,
+258,
+260,
+261,
+262,
+263,
+264,
+265,
+266,
+267,
+268,
+269,
+27,
+290,
+291,
+297,
+298,
+299,
+30,
+31,
+32,
+33,
+34,
+350,
+351,
+352,
+353,
+354,
+355,
+356,
+357,
+358,
+359,
+36,
+370,
+371,
+372,
+373,
+374,
+375,
+376,
+377,
+378,
+379,
+380,
+381,
+382,
+383,
+385,
+386,
+387,
+388,
+389,
+39,
+40,
+41,
+420,
+421,
+423,
+43,
+44,
+45,
+46,
+47,
+48,
+49,
+500,
+501,
+502,
+503,
+504,
+505,
+506,
+507,
+508,
+509,
+51,
+52,
+53,
+54,
+55,
+56,
+57,
+58,
+590,
+591,
+592,
+593,
+594,
+595,
+596,
+597,
+598,
+599,
+60,
+61,
+62,
+63,
+64,
+65,
+66,
+670,
+672,
+673,
+674,
+675,
+676,
+677,
+678,
+679,
+680,
+681,
+682,
+683,
+685,
+686,
+687,
+688,
+689,
+690,
+691,
+692,
+7,
+800,
+808,
+81,
+82,
+84,
+850,
+852,
+853,
+855,
+856,
+86,
+870,
+878,
+880,
+881,
+882,
+883,
+886,
+888,
+90,
+91,
+92,
+93,
+94,
+95,
+960,
+961,
+962,
+963,
+964,
+965,
+966,
+967,
+968,
+971,
+972,
+973,
+974,
+975,
+976,
+977,
+979,
+98,
+991,
+992,
+993,
+994,
+995,
+996,
+998}
\tl_const:Nn \c_phone_bindestrich_tl { \kern 1pt - \kern 1pt }
\tl_const:Nn \c_phone_schraegstrich_tl { \kern 1pt \slash \kern 1pt }
@@ -39,8 +252,11 @@
\str_new:N \l_phone_linktext_str
\int_new:N \l_phone_ziffernzahl_int
-\int_new:N \l_phone_nummerlaenge_int
+\int_new:N \l_phone_nummernlaenge_int
\int_new:N \l_phone_gruppierungsminimum_int
+\int_new:N \l_phone_hauptnummernlaenge_int % Nummernlänge im nationalen Format ohne Durchwahl
+\int_new:N \l_phone_vorwahllaenge_int
+\int_new:N \l_phone_bindestrichposition_int
\tl_new:N \l_phone_ausgabetext_tl
\tl_new:N \l_phone_formatierte_nummer_tl
@@ -51,6 +267,10 @@
\bool_new:N \l_phone_durchwahl_leer_bool
\bool_new:N \l_phone_nummer_verlinken_bool
\bool_new:N \l_phone_teilnehmerrufnummer_gueltig_bool
+\bool_new:N \l_phone_erstes_zeichen_bool
+\bool_new:N \l_phone_zweites_zeichen_bool
+\bool_new:N \l_phone_auslandsnummer_bool
+\bool_new:N \l_phone_null_am_anfang_bool
\cs_generate_variant:Nn \str_if_eq:nnT {xnT}
\cs_generate_variant:Nn \str_if_eq:nnF {xnF}
@@ -64,7 +284,6 @@
\cs_generate_variant:Nn \msg_warning:nnn {onn}
\cs_generate_variant:Nn \msg_warning:nnn {nnV}
-
\msg_new:nnn {phonenumbers} {illegal character}
{
illegal~character~'#1'~in~phone~number~
@@ -86,7 +305,13 @@
\msg_new:nnn {phonenumbers} {illegal extension}
{
extension~(Durchwahl)~of~
- \phone_landesadjektiv:V \l_phone_land_str
+ \str_if_empty:NTF \l_phone_land_str
+ {
+ unsupported
+ }
+ {
+ \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl }
+ }
\c_space_tl
phone~number~ignored~
\msg_line_context:
@@ -94,7 +319,7 @@
\msg_new:nnn {phonenumbers} {odd extension}
{
- \phone_landesadjektiv:V \l_phone_land_str
+ \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl }
\c_space_tl
non-geographic~number~should~not~contain~an~extension~(Durchwahl)~
\msg_line_context:
@@ -103,7 +328,7 @@
\msg_new:nnn {phonenumbers} {subscriber number too short}
{
subscriber~number~(Teilnehmerrufnummer)~has~less~than~#1~digits~in~
- \phone_landesadjektiv:V \l_phone_land_str
+ \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl }
\c_space_tl
phone~number~
\msg_line_context:
@@ -112,7 +337,7 @@
\msg_new:nnn {phonenumbers} {subscriber number too long}
{
subscriber~number~(Teilnehmerrufnummer)~has~more~than~#1~digits~in~
- \phone_landesadjektiv:V \l_phone_land_str
+ \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl }
\c_space_tl
phone~number~
\msg_line_context:
@@ -121,7 +346,7 @@
\msg_new:nnn {phonenumbers} {illegal start of subscriber number}
{
subscriber~number~(Teilnehmerrufnummer)~starts~with~#1~in~
- \phone_landesadjektiv:V \l_phone_land_str
+ \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl }
\c_space_tl
phone~number~
\msg_line_context:
@@ -130,7 +355,7 @@
\msg_new:nnn {phonenumbers} {missing subscriber number}
{
no~subscriber~number~(Teilnehmerrufnummer)~given~in~
- \phone_landesadjektiv:V \l_phone_land_str
+ \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl }
\c_space_tl
phone~number~
\msg_line_context:
@@ -139,7 +364,7 @@
\msg_new:nnn {phonenumbers} {invalid area code}
{
unknown~area~code~(Vorwahl)~in~
- \phone_landesadjektiv:V \l_phone_land_str
+ \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl }
\c_space_tl
phone~number~
\msg_line_context:
@@ -147,7 +372,7 @@
\msg_new:nnn {phonenumbers} {number too short}
{
- \phone_landesadjektiv:V \l_phone_land_str
+ \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl }
\c_space_tl
#1~number~has~less~than~#2~digits~
\msg_line_context:
@@ -155,7 +380,7 @@
\msg_new:nnn {phonenumbers} {number too long}
{
- \phone_landesadjektiv:V \l_phone_land_str
+ \use:c { c_phone_ \l_phone_land_str _landesadjektiv_tl }
\c_space_tl
#1~number~has~more~than~#2~digits~
\msg_line_context:
@@ -181,7 +406,7 @@
\msg_new:nnn {phonenumbers} {home area code set}
{
Your~home~is~in~
- \tl_use:c {c_phone_\l_phone_heimatland_str _ortsname_#1_tl}
+ \tl_use:c { c_phone_ \l_phone_heimatland_str _ortsname_ #1 _tl }
\c_space_tl
(area~code~#1)~according~to~line~
\msg_line_number:.
@@ -198,7 +423,7 @@
\msg_new:nnn {phonenumbers} {invalid home area code}
{
#1~unknown~as~
- \phone_landesadjektiv:V \l_phone_heimatland_str
+ \use:c { c_phone_ \l_phone_heimatland_str _landesadjektiv_tl }
\c_space_tl
geographic~area~code~(Ortsvorwahl)~
\msg_line_context:
@@ -216,24 +441,6 @@
\msg_line_context:
}
-\cs_new:Npn \phone_landesadjektiv:n #1
- {
- \str_case:nnF {#1}
- {
- {DE} {German}
- {AT} {Austrian}
- {FR} {French}
- {UK} {British}
- {US} {North~American}
- }
- {
- unsupported
- }
- }
-
-\cs_generate_variant:Nn \phone_landesadjektiv:n {V}
-
-
\keys_define:nn {phonenumbers}
{
country .choices:nn = {DE,AT,FR,UK,US}
@@ -331,7 +538,7 @@
{
home-area-code .code:n =
{
- \str_if_eq:nnTF {#1}{none}
+ \str_if_eq:nnTF {#1} {none}
{
\str_if_empty:NF \l_phone_heimatvorwahl_str
{
@@ -346,7 +553,7 @@
\msg_info:nn {phonenumbers} {home country set}
}
- \phone_heimatvorwahl_erlaubt:nT {#1}
+ \use:c { phone_ \l_phone_heimatland_str _heimatvorwahl_erlaubt:nT } {#1}
{
% Auslassen der Vorwahl möglich, Heimatvorwahl setzen:
\str_set:Nn \l_phone_heimatvorwahl_str {#1}
@@ -368,57 +575,6 @@
group-min .value_required:n = true
}
-
-% Prüfe, ob eine Vorwahl als Heimatvorwahl zulässig ist.
-% #1: Heimatvorwahl
-\prg_new_protected_conditional:Npnn \phone_heimatvorwahl_erlaubt:n #1 {T}
- {
- \clist_if_in:cnTF {c_phone_\l_phone_heimatland_str _ortsvorwahlen_clist} {#1}
- {
- \str_case:VnF \l_phone_heimatland_str
- {
- % alle deutschen Ortsvorwahlen können Heimatvorwahl sein
- {DE} { \prg_return_true: }
- % alle österreichischen Ortsvorwahlen können Heimatvorwahl sein
- {AT} { \prg_return_true: }
- % in Frankreich kann nur 0508 Heimatvorwahl sein
- {FR}
- {
- \str_if_eq:nnTF {#1} {0508} { \prg_return_true: }
- {
- \msg_warning:nnn {phonenumbers} {FR/illegal home area code} {#1}
- \prg_return_false:
- }
- }
- }
- {
- % Name der Liste mit den obligatorischen Ortsvorwahlen
- \str_set:Nx \l_tmpa_str {c_phone_\l_phone_heimatland_str _obligatorische_ortsvorwahlen_clist}
-
- % in anderen Ländern können nur nicht obligatorische Ortsvorwahlen Heimatvorwahl sein
- \clist_if_exist:cTF {\l_tmpa_str}
- {
- \clist_if_in:cnTF {\l_tmpa_str} {#1}
- {
- \msg_warning:onn {phonenumbers} {\l_phone_heimatland_str/illegal home area code} {#1}
- \prg_return_false:
- }
- {
- \prg_return_true:
- }
- }
- {
- \prg_return_true:
- }
- }
- }
- {
- \msg_warning:nnn {phonenumbers} {invalid home area code} {#1}
- \prg_return_false:
- }
- }
-
-
% einen Nummernteil von vorne in Zweiergruppen gruppiert schreiben, sofern er nicht kürzer als das Gruppierungsminimum ist
\cs_new_protected:Npn \phone_von_vorne_gruppiert_schreiben:n #1
{
@@ -446,8 +602,7 @@
\cs_generate_variant:Nn \phone_von_vorne_gruppiert_schreiben:n {x,V}
-
-% einen Nummernteil von in Zweiergruppen gruppiert mit führender Einzelziffer schreiben, sofern er nicht kürzer als das Gruppierungsminimum ist
+% einen Nummernteil in Zweiergruppen gruppiert mit führender Einzelziffer schreiben, sofern er nicht kürzer als das Gruppierungsminimum ist
\cs_new_protected:Npn \phone_versetzt_gruppiert_schreiben:n #1
{
\int_set:Nn \l_phone_ziffernzahl_int { \tl_count:n {#1} }
@@ -474,7 +629,6 @@
\cs_generate_variant:Nn \phone_versetzt_gruppiert_schreiben:n {x}
-
% einen Nummernteil von hinten in Zweiergruppen gruppiert schreiben, sofern er nicht kürzer als das Gruppierungsminimum ist
\cs_new_protected:Npn \phone_von_hinten_gruppiert_schreiben:n #1
{
@@ -502,47 +656,51 @@
\cs_generate_variant:Nn \phone_von_hinten_gruppiert_schreiben:n {x,V}
+% #1: Vorwahl, #2: Soll die führende Null ausgegeben werden?
+\cs_new_protected:Npn \phone_geklammerte_ziffernvorwahl_schreiben:nN #1#2
+ {
+ % Klammern werden nur bei Ortsvorwahlen gesetzt
+ \clist_if_in:cnTF { c_phone_ \l_phone_land_str _ortsvorwahlen_clist } {#1}
+ {
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {(}
+ \use:c { phone_ \l_phone_land_str _ziffernvorwahl_schreiben:nN } {#1} #2
+ \tl_put_right:Nn \l_phone_ausgabetext_tl {)}
+ }
+ {
+ \use:c { phone_ \l_phone_land_str _ziffernvorwahl_schreiben:nN } {#1} #2
+ }
+ }
% #1: Landeskennzahl
-\cs_new_protected:Npn \phone_auslandsvorwahl_schreiben:n #1
+\cs_new_protected:Npn \phone_gruppierte_auslandsvorwahl_schreiben:n #1
{
- \str_case:VnTF \l_phone_land_str
+ \str_case:Vn \l_phone_auslandsvorwahltyp_str
{
- {DE} { }
- {AT} { }
- {FR} { }
+ {international} { \tl_put_right:Nn \l_phone_ausgabetext_tl { \c_phone_pluszeichen_tl #1 } }
+ {european} { \phone_von_hinten_gruppiert_schreiben:n { 00 #1 } }
+ {american} { \phone_von_hinten_gruppiert_schreiben:n { 011 #1 } }
}
+ }
+
+\cs_generate_variant:Nn \phone_gruppierte_auslandsvorwahl_schreiben:n {x}
+
+% #1: Landeskennzahl
+\cs_new_protected:Npn \phone_ungruppierte_auslandsvorwahl_schreiben:n #1
+ {
+ \tl_put_right:Nx \l_phone_ausgabetext_tl
{
- \str_case:Vn \l_phone_auslandsvorwahltyp_str
+ \str_case:VnF \l_phone_auslandsvorwahltyp_str
{
- {international} { \tl_put_right:Nn \l_phone_ausgabetext_tl { \c_phone_pluszeichen_tl #1 } }
- {european} { \phone_von_hinten_gruppiert_schreiben:n {00#1} }
- {american} { \phone_von_hinten_gruppiert_schreiben:n {011#1} }
+ {european} { 00 #1 }
+ {american} { 011 #1 }
}
- }
- {
- \tl_put_right:Nx \l_phone_ausgabetext_tl
{
- \str_case:VnF \l_phone_auslandsvorwahltyp_str
- {
- {european} {00 #1}
- {american} {011 #1}
- }
- {
- \c_phone_pluszeichen_tl #1
- }
+ \c_phone_pluszeichen_tl #1
}
}
}
-\cs_generate_variant:Nn \phone_auslandsvorwahl_schreiben:n {x,V}
-
-
-\bool_new:N \l_phone_erstes_zeichen_bool
-\bool_new:N \l_phone_zweites_zeichen_bool
-\bool_new:N \l_phone_auslandsnummer_bool
-\bool_new:N \l_phone_null_am_anfang_bool
-\int_new:N \l_phone_bindestrichposition_int
+\cs_generate_variant:Nn \phone_ungruppierte_auslandsvorwahl_schreiben:n {V}
% #1: eingebene Nummer
\cs_new_protected:Npn \phone_nummer_ueberpruefen:n #1
@@ -662,7 +820,7 @@
}
}
{
- \str_clear:N \l_phone_land_str % Länge 3, nicht mit 49 oder 33 beginnend
+ \str_clear:N \l_phone_land_str % Länge 3, nicht mit 33, 43, 44 oder 49 beginnend
}
}
}
@@ -676,15 +834,14 @@
}
}
- \bool_lazy_and:nnT
+ \bool_lazy_all:nT
{
- \bool_lazy_or_p:nn { \str_if_eq_p:Vn \l_phone_land_str {DE} } { \str_if_eq_p:Vn \l_phone_land_str {AT} }
+ { ! \str_if_empty_p:N \l_phone_land_str }
+ { \bool_if_p:c { c_phone_ \l_phone_land_str _erlaubt_durchwahl_bool } }
+ { \str_if_empty_p:N \l_phone_bereinigte_durchwahl_str }
}
{
- \str_if_empty_p:N \l_phone_bereinigte_durchwahl_str
- }
- {
- % deutsche oder österreichische Nummer ohne explizite Durchwahl
+ % Nummer ohne explizite Durchwahl in einem Land, das Durchwahlen erlaubt
\int_set:Nn \l_phone_bindestrichposition_int {-1}
\int_step_inline:nnnn { \str_count:N \l_phone_bereinigte_nummer_str } {-1} {1}
@@ -733,7 +890,6 @@
\cs_generate_variant:Nn \phone_nummer_ueberpruefen:n {x}
-
% #1: eingebene Durchwahl
\cs_new_protected:Npn \phone_durchwahl_ueberpruefen:n #1
{
@@ -762,27 +918,22 @@
\cs_generate_variant:Nn \phone_durchwahl_ueberpruefen:n {x}
-
\cs_new_protected:Npn \phone_nummer_ausgeben:
{
\bool_if:NF \l_phone_eingabe_leer_bool
{
- \str_case:VnF \l_phone_land_str
+ \str_if_empty:NTF \l_phone_land_str
{
- {DE} {\phone_DE_AT_nummer_schreiben:}
- {AT} {\phone_DE_AT_nummer_schreiben:}
- {FR} {\phone_FR_nummer_schreiben:}
- {UK} {\phone_UK_nummer_schreiben:}
- {US} {\phone_US_nummer_schreiben:}
+ \phone_nicht_unterstuetzte_nummer_schreiben:
}
{
- \phone_SONST_nummer_schreiben:
+ \use:c {phone_ \l_phone_land_str _nummer_schreiben:}
}
}
\bool_lazy_and:nnTF {\l_phone_nummer_verlinken_bool} { ! \str_if_empty_p:N \l_phone_linktext_str }
{
- \ltx@ifpackageloaded {hyperref}
+ \IfPackageLoadedTF {hyperref}
{
\href { tel \c_colon_str \l_phone_linktext_str } {\l_phone_ausgabetext_tl}
}
@@ -795,63 +946,6 @@
}
}
-\cs_new_protected:Npn \phone_vorwahlliste_ausgeben:n #1
- {
- \begin{tabbing}
- \str_case:VnF \l_phone_land_str
- {
- {US} { \hspace {3em} }
- }
- {
- \hspace {4em}
- }
- \=
- \kill
-
- \bool_set_false:N \l_phone_zeilenumbruch_bool
-
- \clist_map_inline:cn {c_phone_\l_phone_land_str _#1_clist}
- {
- \bool_if:NTF \l_phone_zeilenumbruch_bool
- {
- \\
- }
- {
- \bool_gset_true:N \l_phone_zeilenumbruch_bool
- }
-
- \str_case:VnTF \l_phone_land_str
- {
- {DE} { }
- {AT} { }
- {UK} { }
- }
- {
- \phone_gruppierte_vorwahl_schreiben:nN {##1} \c_true_bool
- \tl_use:N \l_phone_ausgabetext_tl
- }
- {
- \bool_if:nTF { \str_if_eq_p:Vn \l_phone_land_str {FR} }
- {
- \phone_von_vorne_gruppiert_schreiben:n {##1}
- \tl_use:N \l_phone_ausgabetext_tl
- }
- {
- ##1
- }
- }
- \>
- \tl_if_exist:cTF {c_phone_\l_phone_land_str _ortsname_##1_tl}
- {
- \tl_use:c {c_phone_\l_phone_land_str _ortsname_##1_tl}
- }
- {
- UNKNOWN~PLACE
- }
- }
- \end{tabbing}
- }
-
\NewDocumentCommand \setphonenumbers {m}
{
\keys_set:no {phonenumbers} {#1}
@@ -874,7 +968,9 @@
\IfValueT {#3}
{
- \bool_lazy_or:nnF { \str_if_eq_p:Vn \l_phone_land_str {DE} } { \str_if_eq_p:Vn \l_phone_land_str {AT} }
+ \bool_lazy_or:nnT
+ { \str_if_empty_p:N \l_phone_land_str }
+ { ! \bool_if_p:c { c_phone_ \l_phone_land_str _erlaubt_durchwahl_bool } }
{
\bool_if:NF \l_phone_durchwahl_leer_bool
{
@@ -895,7 +991,7 @@
\keys_set:no {phonenumbers} {#1}
}
- \phone_vorwahlliste_ausgeben:n {ortsvorwahlen}
+ \use:c { phone_ \l_phone_land_str _vorwahlliste_ausgeben:n } {ortsvorwahlen}
\group_end:
}
@@ -907,12 +1003,10 @@
\keys_set:no {phonenumbers} {#1}
}
- \phone_vorwahlliste_ausgeben:n {sondervorwahlen}
+ \use:c { phone_ \l_phone_land_str _vorwahlliste_ausgeben:n } {sondervorwahlen}
\group_end:
}
-\file_input:n {phn-Landeskennzahlen}
-
\NewDocumentCommand \CountryCodes { }
{
\bool_set_false:N \l_phone_zeilenumbruch_bool
@@ -931,25 +1025,22 @@
}
}
-
-\int_new:N \l_phone_pruefnummerlaenge_int
-
% #1: Nummer, die auf Enthaltensein einer Vorwahl überprüft wird
\prg_new_protected_conditional:Npnn \phone_enthaelt_vorwahl:N #1 {TF,T}
{
\bool_set_false:N \l_phone_vorwahl_gefunden_bool
- \int_set:Nn \l_phone_pruefnummerlaenge_int { \str_count:N #1 }
+ \int_set:Nn \l_phone_nummernlaenge_int { \str_count:N #1 }
\int_step_inline:nnnn {6} {-1} {2}
{
\bool_if:NF \l_phone_vorwahl_gefunden_bool
{
- \int_compare:nT { \l_phone_pruefnummerlaenge_int >= ##1 }
+ \int_compare:nT { \l_phone_nummernlaenge_int >= ##1 }
{
\str_set:Nx \l_phone_vorwahl_str { \str_range:Nnn #1 {1} {##1} }
- \clist_if_in:cVT {c_phone_\l_phone_land_str _vorwahlen_clist} \l_phone_vorwahl_str
+ \clist_if_in:cVT { c_phone_ \l_phone_land_str _vorwahlen_clist } \l_phone_vorwahl_str
{
\bool_set_true:N \l_phone_vorwahl_gefunden_bool
}
@@ -966,108 +1057,6 @@
}
}
-
-% #1: Vorwahl, #2: Soll die führende null ausgegeben werden?
-\cs_new_protected:Npn \phone_gruppierte_vorwahl_schreiben:nN #1#2
- {
- \str_if_eq:VnTF \l_phone_land_str {UK}
- {
- % britische Vorwahl
- \int_compare:nNnTF { \str_count:n {#1} } = {6}
- {
- % sechsstellige britische Vorwahl: Gliederung vor der zweitletzten Ziffer
- \bool_if:NTF #2
- {
- \int_compare:nNnTF {\l_phone_gruppierungsminimum_int} > {6}
- {
- \tl_put_right:Nn \l_phone_ausgabetext_tl {#1}
- }
- {
- \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {1} {4} }
- \tl_put_right:Nn \l_phone_ausgabetext_tl {\,}
- \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {5} {6} }
- }
- }
- {
- \int_compare:nNnTF {\l_phone_gruppierungsminimum_int} > {5}
- {
- \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_tail:n {#1} }
- }
- {
- \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {2} {4} }
- \tl_put_right:Nn \l_phone_ausgabetext_tl {\,}
- \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#1} {5} {6} }
- }
- }
- }
- {
- % nicht sechsstellige britische Vorwahl
- \bool_if:NTF #2
- {
- \tl_put_right:Nn \l_phone_ausgabetext_tl {#1}
- }
- {
- \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_tail:n {#1} }
- }
- }
- }
- {
- % nichtbritische Vorwahl
- \bool_lazy_and:nnTF { \str_if_eq_p:Vn \l_phone_land_str {DE} } { \int_compare_p:nNn { \str_count:n {#1} } = {5} }
- {
- \str_set:Nx \l_tmpa_str { \str_range:nnn {#1} {1} {4} }
-
- % fünfstellige deutsche Vorwahl
- \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_tmpa_str {0137} } { \str_if_eq_p:Vn \l_tmpa_str {0180} }
- {
- % fünfstellige deutsche Vorwahl mit Tarifkennung: letzte Ziffer steht allein
- \bool_if:NTF #2
- {
- \phone_von_vorne_gruppiert_schreiben:n {#1}
- }
- {
- \phone_versetzt_gruppiert_schreiben:x { \str_tail:n {#1} }
- }
- }
- {
- % fünfstellige deutsche Vorwahl ohne Tarifkennung
- \bool_if:NTF #2
- {
- \phone_von_hinten_gruppiert_schreiben:n {#1}
- }
- {
- \phone_von_hinten_gruppiert_schreiben:x { \str_tail:n {#1} }
- }
- }
- }
- {
- % sonstige Vorwahl
- \bool_if:NTF #2
- {
- \phone_von_hinten_gruppiert_schreiben:n {#1}
- }
- {
- \phone_von_hinten_gruppiert_schreiben:x { \str_tail:n {#1} }
- }
- }
- }
- }
-
-% #1: Vorwahl, #2: Soll die führende null ausgegeben werden?
-\cs_new_protected:Npn \phone_geklammerte_vorwahl_schreiben:nN #1#2
- {
- % Klammern werden nur bei Ortsvorwahlen gesetzt
- \clist_if_in:cnTF {c_phone_\l_phone_land_str _ortsvorwahlen_clist} {#1}
- {
- \tl_put_right:Nn \l_phone_ausgabetext_tl {(}
- \phone_gruppierte_vorwahl_schreiben:nN {#1} #2
- \tl_put_right:Nn \l_phone_ausgabetext_tl {)}
- }
- {
- \phone_gruppierte_vorwahl_schreiben:nN {#1} #2
- }
- }
-
% #1: Nummer, #2: Mindestlänge, #3: Höchstlänge, #4: Nummernart
\cs_new_protected:Npn \phone_nummernlaenge_ueberpruefen:nnnn #1#2#3#4
{
@@ -1090,1423 +1079,9 @@
\cs_generate_variant:Nn \phone_nummernlaenge_ueberpruefen:nnnn {V,o}
-
-%%%%%%%%%%%%%%%%%%%% DEUTSCHLAND %%%%%%%%%%%%%%%%%%%%
-
-\file_input:n {phn-DE_Vorwahlen}
-\file_input:n {phn-DE_Ortsnamen}
-
-\clist_new:N \c_phone_DE_vorwahlen_clist
-\clist_concat:NNN \c_phone_DE_vorwahlen_clist \c_phone_DE_ortsvorwahlen_clist \c_phone_DE_sondervorwahlen_clist
-
-
-% #1: Vorwahl, #2: Folgt eine Rufnummer?
-\cs_new_protected:Npn \phone_DE_AT_vorwahl_schreiben:nn #1 #2
- {
- \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:NN \l_phone_heimatland_str \l_phone_land_str }
- {
- \clist_if_in:cnT {c_phone_\l_phone_land_str _sondervorwahlen_clist} {#1}
- {
- \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place}
- {
- \str_set:Nn \l_phone_vorwahldarstellung_str {number}
- }
- }
-
- \bool_lazy_and:nnF { \str_if_eq_p:NN \l_phone_heimatland_str \l_phone_land_str } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} }
- {
- \str_case:Vn \l_phone_vorwahldarstellung_str
- {
- {number}
- {
- \bool_if:nTF {#2}
- {
- \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets}
- {
- \phone_geklammerte_vorwahl_schreiben:nN {#1} \c_true_bool
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
- }
- {
- \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool
-
- \tl_put_right:Nx \l_phone_ausgabetext_tl
- {
- \str_case:VnF \l_phone_vorwahltrennung_str
- {
- {space} {\c_space_tl}
- {hyphen} {\c_phone_bindestrich_tl}
- }
- {
- \c_phone_schraegstrich_tl
- }
- }
- }
- }
- {
- \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool
- }
- }
- {place}
- {
- \bool_if:nTF {#2}
- {
- \str_if_eq:VnT \l_phone_vorwahltrennung_str {brackets}
- {
- \tl_put_right:Nn \l_phone_ausgabetext_tl {(}
- }
-
- \tl_if_exist:cTF {c_phone_\l_phone_land_str _ortsname_#1_tl}
- {
- \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_\l_phone_land_str _ortsname_#1_tl}
- }
- {
- \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool
- }
-
- \tl_put_right:Nx \l_phone_ausgabetext_tl
- {
- \str_case:VnF \l_phone_vorwahltrennung_str
- {
- {brackets} {) \c_space_tl}
- {space} {\c_space_tl}
- {hyphen} {\c_phone_bindestrich_tl}
- }
- {
- \c_phone_schraegstrich_tl
- }
- }
- }
- {
- \tl_if_exist:cTF {c_phone_\l_phone_land_str _ortsname_#1_tl}
- {
- \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_\l_phone_land_str _ortsname_#1_tl}
- }
- {
- \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool
- }
- }
- }
- {place-and-number}
- {
- \tl_if_exist:cT {c_phone_\l_phone_land_str _ortsname_#1_tl}
- {
- \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_\l_phone_land_str _ortsname_#1_tl}
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
- }
-
- \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets}
- {
- \phone_geklammerte_vorwahl_schreiben:nN {#1} \c_true_bool
-
- \bool_if:nT {#2}
- {
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
- }
- }
- {
- \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool
-
- \bool_if:nT {#2}
- {
- \tl_put_right:Nx \l_phone_ausgabetext_tl
- {
- \str_case:VnF \l_phone_vorwahltrennung_str
- {
- {space} {\c_space_tl}
- {hyphen} {\c_phone_bindestrich_tl}
- }
- {
- \c_phone_schraegstrich_tl
- }
- }
- }
- }
- }
- }
- }
- }
- {
- \str_if_eq:VnTF \l_phone_land_str {DE}
- {
- \phone_auslandsvorwahl_schreiben:n {49}
- }
- {
- \phone_auslandsvorwahl_schreiben:n {43}
- }
-
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
-
- \str_if_eq:VnTF \l_phone_auslandsvorwahltrennung_str {brackets}
- {
- \phone_geklammerte_vorwahl_schreiben:nN {#1} \c_false_bool
- }
- {
- \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_false_bool
- }
-
- \bool_if:nT {#2}
- {
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
- }
- }
-
- % Linktext schreiben, falls eine Rufnummer folgt
- \bool_if:nT {#2}
- {
- \str_put_right:Nx \l_phone_linktext_str
- {
- \str_if_eq:VnTF \l_phone_land_str {DE} {+49} {+43}
- }
- \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} }
- }
- }
-
-\cs_generate_variant:Nn \phone_DE_AT_vorwahl_schreiben:nn {Vx}
-
-
-% #1: Vorwahl, #2: Teilnehmerrufnummer
-\cs_new_protected:Npn \phone_DE_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1#2
- {
- \int_set:Nn \l_tmpa_int { \str_count:N #1 }
- \int_add:Nn \l_tmpa_int { \str_count:n {#2} }
- \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str }
-
- \int_compare:nNnTF {\l_tmpa_int} > {13}
- {
- % Gesamtnummer hat mehr als 13 Stellen
- \msg_warning:nnnn {phonenumbers} {number too long} {landline} {13}
- }
- {
- \int_set:Nn \l_tmpa_int { \str_count:n {#2} }
- \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str }
-
- \int_compare:nNnTF {\l_tmpa_int} < {3}
- {
- % Teilnehmerrufnummer hat weniger als 3 Stellen
- \msg_warning:nnn {phonenumbers} {subscriber number too short} {3}
- }
- {
- \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool
- }
- }
- }
-
-% #1: Nummer
-\cs_new_protected:Npn \phone_DE_MABEZnummernlaenge_ueberpruefen:N #1
- {
- \int_set:Nn \l_tmpa_int { \str_count:N #1 }
- \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str }
-
- \int_compare:nNnTF {\l_tmpa_int} > {11}
- {
- % Gesamtnummer hat mehr als 11 Stellen
- \msg_warning:nnnn {phonenumbers} {number too long} {0137~(MABEZ)} {11}
- }
- {
- \int_compare:nNnTF {\l_tmpa_int} < {11}
- {
- % Gesamtnummer hat weniger als 11 Stellen
- \msg_warning:nnnn {phonenumbers} {number too short} {0137~(MABEZ)} {11}
- }
- {
- \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool
- }
- }
- }
-
-% #1: Vorwahl, #2: Teilnehmerrufnummer
-\cs_new_protected:Npn \phone_DE_teilnehmerrufnummer_schreiben:Nn #1 #2
- {
- % Überprüfen der Nummernlänge
- \str_if_empty:NTF #1
- {
- % Festnetznummer ohne Vorwahl
- \bool_if:NF \l_phone_eingabe_leer_bool
- {
- \phone_DE_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1 {#2}
- }
- }
- {
- \clist_if_in:NVTF \c_phone_DE_ortsvorwahlen_clist #1
- {
- % Festnetznummer
- \str_if_eq:xnTF { \str_head:n {#2} } {0}
- {
- \msg_warning:nnn {phonenumbers} {illegal start of subscriber number} {0}
- }
- {
- \phone_DE_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1 {#2}
- }
- }
- {
- % Mobilfunk-/Sondernummer
- \str_set_eq:NN \l_tmpa_str #1
- \str_put_right:Nn \l_tmpa_str {#2}
-
- \str_if_eq:xnTF { \str_range:Nnn #1 {1} {5} } {09009}
- {
- \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {09009}
- }
- {
- \str_case:xnF { \str_range:Nnn #1 {1} {4} }
- {
- {0137} { \phone_DE_MABEZnummernlaenge_ueberpruefen:N \l_tmpa_str }
- {0160} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} }
- {0162} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} }
- {0163} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} }
- {0164} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0164} } % Funkruf
- {0168} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {15} {0168} } % Funkruf
- {0169} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {15} {0169} } % Funkruf
- {0180} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {11} {0180} }
- {0181} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {8} {15} {0181} }
- {0191} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0191} }
- {0192} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0192} }
- {0193} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {5} {14} {0193} }
- {0194} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {7} {14} {0194} }
- {0700} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {0700} }
- {0800} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {14} {freephone} }
- {0900} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {11} {premium~service} }
- }
- {
- \str_case:xn {\str_range:Nnn #1 {1} {3}}
- {
- {015} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {mobile~phone} }
- {017} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {11} {12} {mobile~phone} }
- {018} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {018} }
- {032} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {12} {12} {032} }
- }
- }
- }
-
- \str_if_empty:NF \l_phone_bereinigte_durchwahl_str
- {
- % Mobilfunk- und Sondernummern dürfen keine Durchwahl enthalten (ausgenommen MABEZ-Nummern)
- \str_if_eq:xnF { \str_range:Nnn #1 {1} {4} } {0137}
- {
- \msg_warning:nn {phonenumbers} {odd extension}
- }
- }
- }
-
- \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
- {
- % Für gültige Nummern mit Vorwahl Linktext schreiben:
- \str_put_right:Nn \l_phone_linktext_str {#2}
- \str_put_right:NV \l_phone_linktext_str \l_phone_bereinigte_durchwahl_str
- }
- {
- % Für ungültige Nummern mit Vorwahl Linktext löschen:
- \str_clear:N \l_phone_linktext_str
- }
- }
-
- \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
- {
- \phone_von_hinten_gruppiert_schreiben:n {#2}
- }
- {
- \str_put_right:Nn \l_phone_ausgabetext_tl {#2}
- }
-
- \str_if_empty:NF \l_phone_bereinigte_durchwahl_str
- {
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl
- \phone_von_hinten_gruppiert_schreiben:V \l_phone_bereinigte_durchwahl_str
- }
- }
-
-\cs_generate_variant:Nn \phone_DE_teilnehmerrufnummer_schreiben:Nn {Nx,NV}
-
-
-\int_new:N \l_phone_DE_AT_hauptnummerlaenge_int
-\int_new:N \l_phone_DE_AT_vorwahllaenge_int
-
-\cs_new_protected:Npn \phone_DE_AT_nummer_schreiben:
- {
- \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0}
- {
- \phone_enthaelt_vorwahl:NTF \l_phone_bereinigte_nummer_str
- {
- \int_set:Nn \l_phone_DE_AT_hauptnummerlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str }
- \int_set:Nn \l_phone_DE_AT_vorwahllaenge_int { \str_count:N \l_phone_vorwahl_str }
-
- \phone_DE_AT_vorwahl_schreiben:Vx \l_phone_vorwahl_str
- {
- \int_compare_p:nNn {\l_phone_DE_AT_vorwahllaenge_int} < {\l_phone_DE_AT_hauptnummerlaenge_int}
- }
-
- \int_compare:nNnTF {\l_phone_DE_AT_vorwahllaenge_int} = {\l_phone_DE_AT_hauptnummerlaenge_int}
- {
- \msg_warning:nn {phonenumbers} {missing subscriber number}
- }
- {
- \use:c {phone_\l_phone_land_str _teilnehmerrufnummer_schreiben:Nx} \l_phone_vorwahl_str
- {
- \str_range:Nnn \l_phone_bereinigte_nummer_str { \l_phone_DE_AT_vorwahllaenge_int + 1 } {-1}
- }
- }
- }
- {
- \msg_warning:nn {phonenumbers} {invalid area code}
- \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
- \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_durchwahl_str
- }
- }
- {
- \use:c {phone_\l_phone_land_str _teilnehmerrufnummer_schreiben:NV} \c_empty_tl \l_phone_bereinigte_nummer_str
- }
- }
-
-
-%%%%%%%%%%%%%%%%%%%% ÖSTERREICH %%%%%%%%%%%%%%%%%%%%
-
-\file_input:n {phn-AT_Vorwahlen}
-\file_input:n {phn-AT_Ortsnamen}
-
-\clist_new:N \c_phone_AT_vorwahlen_clist
-\clist_concat:NNN \c_phone_AT_vorwahlen_clist \c_phone_AT_ortsvorwahlen_clist \c_phone_AT_sondervorwahlen_clist
-
-
-% #1: Vorwahl, #2: Teilnehmerrufnummer
-\cs_new_protected:Npn \phone_AT_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1#2
- {
- \int_set:Nn \l_tmpa_int { \str_count:N #1 }
- \int_add:Nn \l_tmpa_int { \str_count:n {#2} }
- \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str }
-
- \int_compare:nNnTF {\l_tmpa_int} > {13}
- {
- % Gesamtnummer hat mehr als 13 Stellen
- \msg_warning:nnnn {phonenumbers} {number too long} {landline} {13}
- }
- {
- \int_set:Nn \l_tmpa_int { \str_count:n {#2} }
- \int_add:Nn \l_tmpa_int { \str_count:N \l_phone_bereinigte_durchwahl_str }
-
- \int_compare:nNnTF {\l_tmpa_int} < {5}
- {
- % Teilnehmerrufnummer hat weniger als 5 Stellen
- \msg_warning:nnn {phonenumbers} {subscriber number too short} {5}
- }
- {
- \bool_lazy_and:nnTF { \str_if_eq_p:Vn #1 {01} } { \int_compare_p:nNn {\l_tmpa_int} < {7} }
- {
- % Wiener Teilnehmerrufnummer hat weniger als 7 Stellen
- \msg_warning:nnn {phonenumbers} {subscriber number too short} {7}
- }
- {
- \bool_lazy_and:nnTF
- {
- \bool_lazy_any_p:n
- {
- { \str_if_eq_p:Vn #1 {02236} }
- { \str_if_eq_p:Vn #1 {02252} }
- { \str_if_eq_p:Vn #1 {0316} }
- { \str_if_eq_p:Vn #1 {0463} }
- { \str_if_eq_p:Vn #1 {0512} }
- { \str_if_eq_p:Vn #1 {05572} }
- { \str_if_eq_p:Vn #1 {0662} }
- { \str_if_eq_p:Vn #1 {07242} }
- { \str_if_eq_p:Vn #1 {0732} }
- }
- }
- {
- \int_compare_p:nNn {\l_tmpa_int} < {6}
- }
- {
- % Teilnehmerrufnummer in bestimmten Ortsnetzen hat weniger als 6 Stellen
- \msg_warning:nnn {phonenumbers} {subscriber number too short} {6}
- }
- {
- \int_compare:nNnTF {\l_tmpa_int} > {9}
- {
- % Teilnehmerrufnummer hat mehr als 9 Stellen
- \msg_warning:nnn {phonenumbers} {subscriber number too long} {9}
- }
- {
- \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool
- }
- }
- }
- }
- }
- }
-
-% #1: Vorwahl, #2: Teilnehmerrufnummer
-\cs_new_protected:Npn \phone_AT_festnetzteilnehmerrufnummer_ueberpruefen:Nn #1#2
- {
- \str_set:Nx \l_tmpa_str { \str_head:n {#2} }
-
- \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_tmpa_str {0} } { \str_if_eq_p:Vn \l_tmpa_str {1} }
- {
- \msg_warning:nnV {phonenumbers} {illegal start of subscriber number} \l_tmpa_str
- }
- {
- \phone_AT_festnetzteilnehmerrufnummernlaenge_ueberpruefen:Nn #1 {#2}
- }
- }
-
-% #1: Vorwahl, #2: Teilnehmerrufnummer
-\cs_new_protected:Npn \phone_AT_teilnehmerrufnummer_schreiben:Nn #1 #2
- {
- \str_if_empty:NTF #1
- {
- % Festnetznummer ohne Vorwahl
- \bool_if:NF \l_phone_eingabe_leer_bool
- {
- \phone_AT_festnetzteilnehmerrufnummer_ueberpruefen:Nn #1 {#2}
- }
- }
- {
- \clist_if_in:NVTF \c_phone_AT_ortsvorwahlen_clist #1
- {
- % Festnetznummer mit Vorwahl
- \phone_AT_festnetzteilnehmerrufnummer_ueberpruefen:Nn #1 {#2}
- }
- {
- % Mobilfunk-/Sondernummer
- \str_set_eq:NN \l_tmpa_str #1
- \str_put_right:Nn \l_tmpa_str {#2}
-
- \str_case:VnF #1
- {
- {0517} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} }
- {0718} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {dial~up} }
- {0720} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {location~independant} }
- {0780} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {convergent~service} }
- {0800} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {freephone} }
- {0804} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {dial~up} }
- {0810} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} }
- {0820} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} }
- {0821} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} }
- {0828} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {service} }
- {0900} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} }
- {0901} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} }
- {0930} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} }
- {0931} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} }
- {0939} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {10} {13} {premium~service} }
- }
- {
- \str_case:xn { \str_range:Nnn #1 {1} {3} }
- {
- {050} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} }
- {057} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} }
- {059} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {VPN} }
- {065} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} }
- {066} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} }
- {067} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} }
- {068} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} }
- {069} { \phone_nummernlaenge_ueberpruefen:Vnnn \l_tmpa_str {9} {13} {mobile~phone} }
- }
- }
-
- \str_if_empty:NF \l_phone_bereinigte_durchwahl_str
- {
- \msg_warning:nn {phonenumbers} {odd extension}
- }
- }
-
- \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
- {
- % Für gültige Nummern mit Vorwahl Linktext schreiben:
- \str_put_right:Nn \l_phone_linktext_str {#2}
- \str_put_right:NV \l_phone_linktext_str \l_phone_bereinigte_durchwahl_str
- }
- {
- % Für ungültige Nummern mit Vorwahl Linktext löschen:
- \str_clear:N \l_phone_linktext_str
- }
- }
-
- \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
- {
- \phone_von_hinten_gruppiert_schreiben:n {#2}
- }
- {
- \str_put_right:Nn \l_phone_ausgabetext_tl {#2}
- }
-
- \str_if_empty:NF \l_phone_bereinigte_durchwahl_str
- {
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl
- \phone_von_hinten_gruppiert_schreiben:V \l_phone_bereinigte_durchwahl_str
- }
- }
-
-\cs_generate_variant:Nn \phone_AT_teilnehmerrufnummer_schreiben:Nn {Nx,NV}
-
-
-%%%%%%%%%%%%%%%%%%%% FRANKREICH %%%%%%%%%%%%%%%%%%%%
-
-\file_input:n {phn-FR_Vorwahlen}
-\file_input:n {phn-FR_Ortsnamen}
-
-\clist_new:N \c_phone_FR_vorwahlen_clist
-\clist_concat:NNN \c_phone_FR_vorwahlen_clist \c_phone_FR_ortsvorwahlen_clist \c_phone_FR_sondervorwahlen_clist
-
-\msg_new:nnn {phonenumbers} {FR/illegal home area code}
- {
- The~only~legal~home~area~code~in~France~is~0508~(Saint-Pierre-et-Miquelon).~#1~cannot~be~set~as~home~area~code~\msg_line_context:.
- }
-
-\msg_new:nnn {phonenumbers} {FR/missing zero}
- {
- French~phone~number~has~no~zero~in~the~beginning~\msg_line_context:
- }
-
-
-% #1: Vorwahl
-\cs_new:Npn \phone_FR_ermittle_landeskennzahl:n #1
- {
- \str_case:nnF {#1}
- {
- {0262} {262}
- {026200} {262}
- {0263} {262}
- {0269} {262}
- {0508} {508}
- {0590} {590}
- {0594} {594}
- {0596} {596}
- {0639} {262}
- {0690} {590}
- {0691} {590}
- {0692} {262}
- {0693} {262}
- {0694} {594}
- {0696} {596}
- {0697} {596}
- {07005} {590}
- {07006} {594}
- {07007} {596}
- {07008} {262}
- {07009} {262}
- {09475} {590}
- {09476} {594}
- {09477} {596}
- {09478} {262}
- {09479} {262}
- {09760} {590}
- {09761} {590}
- {09762} {262}
- {09763} {262}
- {09764} {594}
- {09765} {594}
- {09766} {596}
- {09767} {596}
- {09768} {590}
- {09769} {262}
- }
- {
- 33
- }
- }
-
-% #1: Vorwahl, #2: Rufnummer
-\cs_new_protected:Npn \phone_FR_vorwahl_und_rufnummer_schreiben:nn #1#2
- {
- \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {FR} }
- {
- \clist_if_in:NnT \c_phone_FR_sondervorwahlen_clist {#1}
- {
- \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place}
- {
- \str_set:Nn \l_phone_vorwahldarstellung_str {number}
- }
- }
-
- \bool_lazy_and:nnTF { \str_if_eq_p:Vn \l_phone_heimatland_str {FR} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} }
- {
- \phone_von_hinten_gruppiert_schreiben:n {#2} % reine Teilnehmerrufnummer in Saint-Pierre-et-Miquelon
- }
- {
- \str_case:Vn \l_phone_vorwahldarstellung_str
- {
- {number}
- {
- \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str
- }
- {place}
- {
- \tl_if_exist:cTF {c_phone_FR_ortsname_#1_tl}
- {
- \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_FR_ortsname_#1_tl}
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
- \phone_von_vorne_gruppiert_schreiben:n {#2}
- }
- {
- \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str
- }
- }
- {place-and-number}
- {
- \tl_if_exist:cT {c_phone_FR_ortsname_#1_tl}
- {
- \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_FR_ortsname_#1_tl}
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
- }
-
- \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str
- }
- }
- }
- }
- {
- \phone_auslandsvorwahl_schreiben:x { \phone_FR_ermittle_landeskennzahl:n {#1} }
-
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
-
- \str_if_eq:nnTF {#1} {0508} % in Saint-Pierre-et-Miquelon entfällt die Ortsvorwahl
- {
- \phone_von_hinten_gruppiert_schreiben:n {#2}
- }
- {
- \phone_von_hinten_gruppiert_schreiben:x { \str_tail:N \l_phone_bereinigte_nummer_str }
- }
- }
-
- % Linktext schreiben:
- \str_put_right:Nx \l_phone_linktext_str { + \phone_FR_ermittle_landeskennzahl:n {#1} }
- \str_if_eq:nnF {#1} {0508} % in Saint-Pierre-et-Miquelon entfällt die Ortsvorwahl
- {
- \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} }
- }
- \str_put_right:Nn \l_phone_linktext_str {#2}
- }
-
-\cs_generate_variant:Nn \phone_FR_vorwahl_und_rufnummer_schreiben:nn {Vx,xx}
-
-
-\cs_new_protected:Npn \phone_FR_nummer_schreiben:
- {
- \int_set:Nn \l_phone_nummerlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str }
-
- \int_compare:nNnTF {\l_phone_nummerlaenge_int} < {10}
- {
- \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {3}
- {
- \int_compare:nNnTF {\l_phone_nummerlaenge_int} < {4}
- {
- \msg_warning:nnnn {phonenumbers} {number too short} {short} {4}
- \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
- }
- {
- \int_compare:nNnTF {\l_phone_nummerlaenge_int} > {4}
- {
- \msg_warning:nnnn {phonenumbers} {number too long} {short} {4}
- \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
- }
- {
- \phone_von_vorne_gruppiert_schreiben:V \l_phone_bereinigte_nummer_str
- \str_put_right:NV \l_phone_linktext_str \l_phone_bereinigte_nummer_str
- }
- }
- }
- {
- \msg_warning:nnnn {phonenumbers} {number too short} {phone} {10}
- \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
- }
- }
- {
- \int_compare:nNnTF {\l_phone_nummerlaenge_int} > {10}
- {
- \str_if_eq:xnTF { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {4} } {0700}
- {
- \int_compare:nNnTF { \str_item:Nn \l_phone_bereinigte_nummer_str {5} } < {5}
- {
- % überlange Mobilfunknummer (machine to machine) im Mutterland (14 Stellen)
- \phone_nummernlaenge_ueberpruefen:Vnnn \l_phone_bereinigte_nummer_str {14} {14} {machine~to~machine}
- \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
- {
- \phone_FR_vorwahl_und_rufnummer_schreiben:xx
- {
- \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {4}
- }
- {
- \str_range:Nnn \l_phone_bereinigte_nummer_str {5} {-1}
- }
- }
- {
- \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
- }
- }
- {
- % überlange Mobilfunknummer (machine to machine) in den Überseegebieten (13 Stellen)
- \phone_nummernlaenge_ueberpruefen:Vnnn \l_phone_bereinigte_nummer_str {13} {13} {machine~to~machine}
- \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
- {
- \phone_FR_vorwahl_und_rufnummer_schreiben:xx
- {
- \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {5}
- }
- {
- \str_range:Nnn \l_phone_bereinigte_nummer_str {6} {-1}
- }
- }
- {
- \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
- }
- }
- }
- {
- \msg_warning:nnnn {phonenumbers} {number too long} {phone} {10}
- \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
- }
- }
- {
- \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0}
- {
- \bool_set_false:N \l_phone_vorwahl_gefunden_bool
-
- \int_step_inline:nnnn {6} {-1} {2}
- {
- \bool_if:NF \l_phone_vorwahl_gefunden_bool
- {
- \int_compare:nT { \l_phone_nummerlaenge_int >= ##1 }
- {
- \str_set:Nx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {##1} }
-
- \clist_if_in:NVT \c_phone_FR_vorwahlen_clist \l_tmpa_str
- {
- \bool_set_true:N \l_phone_vorwahl_gefunden_bool
- \phone_FR_vorwahl_und_rufnummer_schreiben:Vx \l_tmpa_str
- {
- \str_range:Nnn \l_phone_bereinigte_nummer_str {##1 + 1} {-1}
- }
- }
- }
- }
- }
-
- \bool_if:NF \l_phone_vorwahl_gefunden_bool
- {
- \msg_warning:nn {phonenumbers} {invalid area code}
- \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
- }
- }
- {
- \msg_warning:nn {phonenumbers} {FR/missing zero}
- \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
- }
- }
- }
- }
-
-
-%%%%%%%%%%%%%%%%%%%% GROSSBRITANNIEN %%%%%%%%%%%%%%%%%%%%
-
-\file_input:n {phn-UK_Vorwahlen}
-\file_input:n {phn-UK_Ortsnamen}
-
-\clist_new:N \c_phone_UK_vorwahlen_clist
-\clist_concat:NNN \c_phone_UK_vorwahlen_clist \c_phone_UK_ortsvorwahlen_clist \c_phone_UK_sondervorwahlen_clist
-
-\msg_new:nnn {phonenumbers} {UK/illegal home area code}
- {
- National~dialling~is~required~in~\tl_use:c {c_phone_UK_ortsname_#1_tl}.~#1~cannot~be~set~as~home~area~code~\msg_line_context:.
- }
-
-\msg_new:nnn {phonenumbers} {UK/national dialling required}
- {
- British~subscriber~number~starting~with~0~or~1~requires~an~area~code~\msg_line_context:
- }
-
-
-% #1: Vorwahl, #2: Folgt eine Rufnummer?
-\cs_new_protected:Npn \phone_UK_vorwahl_schreiben:nn #1 #2
- {
- \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {UK} }
- {
- \clist_if_in:NnT \c_phone_UK_sondervorwahlen_clist {#1}
- {
- \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place}
- {
- \str_set:Nn \l_phone_vorwahldarstellung_str {number}
- }
- }
-
- \bool_lazy_and:nnF { \str_if_eq_p:Vn \l_phone_heimatland_str {UK} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} }
- {
- \str_case:Vn \l_phone_vorwahldarstellung_str
- {
- {number}
- {
- \bool_if:nTF {#2}
- {
- \str_if_eq:VnTF \l_phone_vorwahltrennung_str {space}
- {
- \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool
- }
- {
- \phone_geklammerte_vorwahl_schreiben:nN {#1} \c_true_bool
- }
-
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
- }
- {
- \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool
- }
- }
- {place}
- {
- \bool_if:nTF {#2}
- {
- \str_if_eq:VnF \l_phone_vorwahltrennung_str {space}
- {
- \tl_put_right:Nn \l_phone_ausgabetext_tl {(}
- }
-
- \tl_if_exist:cTF {c_phone_UK_ortsname_#1_tl}
- {
- \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_UK_ortsname_#1_tl}
- }
- {
- \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool
- }
-
- \str_if_eq:VnF \l_phone_vorwahltrennung_str {space}
- {
- \tl_put_right:Nn \l_phone_ausgabetext_tl {)}
- }
-
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
- }
- {
- \tl_if_exist:cTF {c_phone_UK_ortsname_#1_tl}
- {
- \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_UK_ortsname_#1_tl}
- }
- {
- \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool
- }
- }
- }
- {place-and-number}
- {
- \tl_if_exist:cT {c_phone_UK_ortsname_#1_tl}
- {
- \tl_put_right:Nv \l_phone_ausgabetext_tl {c_phone_UK_ortsname_#1_tl}
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
- }
-
- \str_if_eq:VnTF \l_phone_vorwahltrennung_str {space}
- {
- \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_true_bool
- }
- {
- \phone_geklammerte_vorwahl_schreiben:nN {#1} \c_true_bool
- }
-
- \bool_if:nT {#2}
- {
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
- }
- }
- }
- }
- }
- {
- \phone_auslandsvorwahl_schreiben:n {44}
-
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
-
- \str_if_eq:VnTF \l_phone_auslandsvorwahltrennung_str {space}
- {
- \phone_gruppierte_vorwahl_schreiben:nN {#1} \c_false_bool
- }
- {
- \phone_geklammerte_vorwahl_schreiben:nN {#1} \c_false_bool
- }
-
- \bool_if:nT {#2}
- {
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
- }
- }
-
- % Linktext schreiben, falls eine Rufnummer folgt
- \bool_if:nT {#2}
- {
- \str_put_right:Nn \l_phone_linktext_str {+44}
- \str_put_right:Nx \l_phone_linktext_str { \str_tail:n {#1} }
- }
- }
-
-\cs_generate_variant:Nn \phone_UK_vorwahl_schreiben:nn {Vx}
-
-
-% #1: Vorwahl, #2: Teilnehmerrufnummer
-\cs_new_protected:Npn \phone_UK_teilnehmerrufnummer_schreiben:Nn #1 #2
- {
- % Überprüfen der Nummernlänge
- \str_if_empty:NTF #1
- {
- % Festnetznummer ohne Vorwahl (kann zwischen 4 und 8 Ziffern haben)
- \phone_nummernlaenge_ueberpruefen:nnnn {#2} {4} {8} {landline}
-
- % Nummern, die mit 0 oder 1 beginnen, erfordern das Wählen der Vorwahl
- \str_case:xnT { \str_head:n {#2} }
- {
- {0} { }
- {1} { }
- }
- {
- \msg_warning:nn {phonenumbers} {UK/national dialling required}
- }
- }
- {
- \clist_if_in:NVTF \c_phone_UK_ortsvorwahlen_clist #1
- {
- % Festnetznummer, muss in der Regel 11 Ziffern umfassen
- % Ausnahme: Bei den Vorwahlen 01XXX und 016977 sind auch 10 Ziffern möglich.
- \bool_lazy_or:nnTF { \str_if_eq_p:Vn #1 {016977} } { \int_compare_p:nNn { \str_count:N #1 } = {5} }
- {
- \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {10} {11} {landline}
- }
- {
- \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {11} {11} {landline}
- }
- }
- {
- % Mobilfunk-/Sondernummer
- \str_if_eq:xnTF { \str_range:Nnn #1 {1} {4} } {0800}
- {
- % 0800er-Nummern haben 10 oder 11 Ziffern; Ausnahme: 0800 1111
- \str_if_eq:nnTF {#2} {1111}
- {
- \bool_set_true:N \l_phone_teilnehmerrufnummer_gueltig_bool
- }
- {
- \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {10} {11} {freephone}
- }
- }
- {
- % alle anderen Sondernummern haben 11 Ziffern
- \phone_nummernlaenge_ueberpruefen:onnn {#1#2} {11} {11} {non-geographic}
- }
- }
-
- \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
- {
- % Für gültige Nummern mit Vorwahl Linktext schreiben:
- \str_put_right:Nn \l_phone_linktext_str {#2}
- }
- {
- % Für ungültige Nummern mit Vorwahl Linktext löschen:
- \str_clear:N \l_phone_linktext_str
- }
- }
-
- \bool_if:NTF \l_phone_teilnehmerrufnummer_gueltig_bool
- {
- \int_compare:nNnTF { \str_count:n {#2} } > {6}
- {
- % Nummern mit mehr als 6 Ziffern werden in Vierergruppen gegliedert
- \str_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#2} {1} {-5} }
- \tl_put_right:Nn \l_phone_ausgabetext_tl {\,}
- \str_put_right:Nx \l_phone_ausgabetext_tl { \str_range:nnn {#2} {-4} {-1} }
- }
- {
- \str_put_right:Nn \l_phone_ausgabetext_tl {#2}
- }
- }
- {
- \str_put_right:Nn \l_phone_ausgabetext_tl {#2}
- }
- }
-
-\cs_generate_variant:Nn \phone_UK_teilnehmerrufnummer_schreiben:Nn {Nx,NV}
-
-
-\cs_new_protected:Npn \phone_UK_nummer_schreiben:
- {
- \int_set:Nn \l_phone_nummerlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str }
-
- \str_if_eq:xnTF { \str_head:N \l_phone_bereinigte_nummer_str } {0}
- {
- \bool_set_false:N \l_phone_vorwahl_gefunden_bool
-
- \int_step_inline:nnnn {6} {-1} {3}
- {
- \bool_if:NF \l_phone_vorwahl_gefunden_bool
- {
- \int_compare:nT { \l_phone_nummerlaenge_int >= ##1 }
- {
- \str_set:Nx \l_phone_vorwahl_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {##1} }
-
- \clist_if_in:NVT \c_phone_UK_vorwahlen_clist \l_phone_vorwahl_str
- {
- \bool_set_true:N \l_phone_vorwahl_gefunden_bool
-
- \phone_UK_vorwahl_schreiben:Vx \l_phone_vorwahl_str { \int_compare_p:nNn {##1} < {\l_phone_nummerlaenge_int} }
-
- \int_compare:nNnTF {##1} = {\l_phone_nummerlaenge_int}
- {
- \msg_warning:nn {phonenumbers} {missing subscriber number}
- }
- {
- \phone_UK_teilnehmerrufnummer_schreiben:Nx \l_phone_vorwahl_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {##1 + 1} {-1} }
- }
- }
- }
- }
- }
-
- \bool_if:NF \l_phone_vorwahl_gefunden_bool
- {
- \msg_warning:nn {phonenumbers} {invalid area code}
- \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
- }
- }
- {
- \phone_UK_teilnehmerrufnummer_schreiben:NV \c_empty_tl \l_phone_bereinigte_nummer_str
- }
- }
-
-
-%%%%%%%%%%%%%%%%%%%% NORDAMERIKA %%%%%%%%%%%%%%%%%%%%
-
-\file_input:n {phn-US_Vorwahlen}
-\file_input:n {phn-US_Ortsnamen}
-
-\clist_new:N \c_phone_US_vorwahlen_clist
-\clist_concat:NNN \c_phone_US_vorwahlen_clist \c_phone_US_ortsvorwahlen_clist \c_phone_US_sondervorwahlen_clist
-
-\msg_new:nnn {phonenumbers} {US/illegal home area code}
- {
- 10-digit~dialling~is~required~in~\tl_use:c {c_phone_US_ortsname_#1_tl}.~#1~cannot~be~set~as~home~area~code~\msg_line_context:.
- }
-
-\msg_new:nnn {phonenumbers} {US/invalid area code}
- {
- unknown~area~code~#1~in~North~American~phone~number~\msg_line_context:
- }
-
-\msg_new:nnn {phonenumbers} {US/invalid central office code}
- {
- invalid~central~office~code~#1~in~North~American~phone~number~\msg_line_context:
- }
-
-\bool_new:N \l_phone_US_ferngespraechspraefix_bool
-
-\keys_define:nn {phonenumbers}
- {
- trunk-prefix .choices:nn = {on,off}
- {
- \str_if_eq:VnTF \l_keys_choice_tl {on}
- {
- \bool_set_true:N \l_phone_US_ferngespraechspraefix_bool
- }
- {
- \bool_set_false:N \l_phone_US_ferngespraechspraefix_bool
- }
- },
- trunk-prefix .initial:n = off,
- trunk-prefix .default:n = on
- }
-
-
-% #1: Vorwahl, #2: Folgt eine Rufnummer?
-\cs_new_protected:Npn \phone_US_vorwahl_schreiben:nN #1 #2
- {
- \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {US} }
- {
- \bool_lazy_and:nnF { \str_if_eq_p:Vn \l_phone_heimatland_str {US} } { \str_if_eq_p:Vn \l_phone_heimatvorwahl_str {#1} }
- {
- \bool_if:NTF \l_phone_US_ferngespraechspraefix_bool
- {
- \tl_put_right:Nx \l_phone_ausgabetext_tl
- {
- \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place-and-number}
- {
- \tl_if_exist:cT {c_phone_US_ortsname_#1_tl}
- {
- \tl_use:c {c_phone_US_ortsname_#1_tl}
- \c_space_tl
- }
- }
-
- \bool_if:NTF #2
- {
- \str_case:VnF \l_phone_vorwahltrennung_str
- {
- {brackets} {1 \c_space_tl (#1) \c_space_tl}
- {space} {1 \c_space_tl #1 \c_space_tl}
- }
- {
- 1 \c_phone_bindestrich_tl #1 \c_phone_bindestrich_tl
- }
- }
- {
- \str_case:VnF \l_phone_vorwahltrennung_str
- {
- {brackets} {1 \c_space_tl (#1)}
- {space} {1 \c_space_tl #1}
- }
- {
- 1 \c_phone_bindestrich_tl #1
- }
- }
- }
- }
- {
- \str_if_eq:VnT \l_phone_vorwahldarstellung_str {place}
- {
- \clist_if_in:NnT \c_phone_US_sondervorwahlen_clist {#1}
- {
- \str_set:Nn \l_phone_vorwahldarstellung_str {number}
- }
- }
-
- \tl_put_right:Nx \l_phone_ausgabetext_tl
- {
- \str_case:Vn \l_phone_vorwahldarstellung_str
- {
- {number}
- {
- \bool_if:NTF #2
- {
- \str_case:VnF \l_phone_vorwahltrennung_str
- {
- {brackets} {(#1) \c_space_tl}
- {space} {#1 \c_space_tl}
- }
- {
- #1 \c_phone_bindestrich_tl
- }
- }
- {
- #1
- }
- }
- {place}
- {
- \bool_if:NTF #2
- {
- \str_case:VnF \l_phone_vorwahltrennung_str
- {
- {brackets}
- {
- (
- \tl_if_exist:cTF {c_phone_US_ortsname_#1_tl}
- {
- \tl_use:c {c_phone_US_ortsname_#1_tl}
- }
- {
- #1
- }
- )
- \c_space_tl
- }
- }
- {
- \tl_if_exist:cTF {c_phone_US_ortsname_#1_tl}
- {
- \tl_use:c {c_phone_US_ortsname_#1_tl}
- \c_space_tl
- }
- {
- #1 \c_phone_bindestrich_tl
- }
- }
- }
- {
- \tl_if_exist:cTF {c_phone_US_ortsname_#1_tl}
- {
- \tl_use:c {c_phone_US_ortsname_#1_tl}
- }
- {
- #1
- }
- }
- }
- {place-and-number}
- {
- \tl_if_exist:cT {c_phone_US_ortsname_#1_tl}
- {
- \tl_use:c {c_phone_US_ortsname_#1_tl}
- \c_space_tl
- }
-
- \bool_if:NTF #2
- {
- \str_case:VnF \l_phone_vorwahltrennung_str
- {
- {brackets} {(#1) \c_space_tl}
- {space} {#1 \c_space_tl}
- }
- {
- #1 \c_phone_bindestrich_tl
- }
- }
- {
- \str_if_eq:VnTF \l_phone_vorwahltrennung_str {brackets}
- {
- (#1)
- }
- {
- #1
- }
- }
- }
- }
- }
- }
- }
- }
- {
- \phone_auslandsvorwahl_schreiben:n {1}
-
- \tl_put_right:Nn \l_phone_ausgabetext_tl {\c_space_tl}
-
- \str_if_eq:VnTF \l_phone_auslandsvorwahltrennung_str {brackets}
- {
- \tl_put_right:Nn \l_phone_ausgabetext_tl {(#1)}
- }
- {
- \tl_put_right:Nn \l_phone_ausgabetext_tl {#1}
- }
-
- \bool_if:NT #2
- {
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
- }
- }
-
- % Linktext schreiben, falls eine Rufnummer folgt
- \bool_if:NT #2
- {
- \str_put_right:Nn \l_phone_linktext_str {+1 #1}
- }
- }
-
-\cs_generate_variant:Nn \phone_US_vorwahl_schreiben:nN {VN}
-
-
-% #1: Ortsvorwahl, #2: Vermittlungsstellennummer
-\cs_new_protected:Npn \phone_US_vermittlungsstellennummer_schreiben:nn #1 #2
- {
- \str_case:xnTF { \str_head:n {#2} }
- {
- {0} { }
- {1} { }
- }
- {
- \msg_warning:nnn {phonenumbers} {US/invalid central office code} {#2}
- }
- {
- \bool_set_false:N \l_tmpa_bool % Regionalnummer?
-
- \tl_if_empty:nTF {#1}
- {
- \bool_set_true:N \l_tmpa_bool
- }
- {
- \clist_if_in:NnT \c_phone_US_ortsvorwahlen_clist {#1}
- {
- \bool_set_true:N \l_tmpa_bool
- }
- }
-
- \bool_if:NTF \l_tmpa_bool
- {
- \str_if_eq:xnT { \str_range:nnn {#2} {2} {3} } {11}
- {
- \msg_warning:nnn {phonenumbers} {US/invalid central office code} {#2}
- }
- }
- {
- \str_if_eq:nnT {#2} {911}
- {
- \msg_warning:nnn {phonenumbers} {US/invalid central office code} {#2}
- }
- }
- }
-
- \tl_put_right:Nn \l_phone_ausgabetext_tl {#2}
-
- \bool_lazy_or:nnTF { \str_if_eq_p:Vn \l_phone_auslandsvorwahltyp_str {off} } { \str_if_eq_p:Vn \l_phone_heimatland_str {US} }
- {
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl
- }
- {
- \tl_if_empty:nTF {#1}
- {
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_phone_bindestrich_tl
- }
- {
- \tl_put_right:NV \l_phone_ausgabetext_tl \c_space_tl
- }
- }
-
- % Linktext schreiben, falls eine Vorwahl vorangeht
- \tl_if_empty:nF {#1}
- {
- \str_put_right:Nn \l_phone_linktext_str {#2}
- }
- }
-
-\cs_generate_variant:Nn \phone_US_vermittlungsstellennummer_schreiben:nn {Vx}
-
-
-\cs_new_protected:Npn \phone_US_nummer_schreiben:
- {
- \int_case:nnF { \str_count:N \l_phone_bereinigte_nummer_str }
- {
- {3}
- {
- \clist_if_in:NVTF \c_phone_US_vorwahlen_clist \l_phone_bereinigte_nummer_str
- {
- \msg_warning:nn {phonenumbers} {missing subscriber number}
- }
- {
- \msg_warning:nnV {phonenumbers} {US/invalid area code} \l_phone_bereinigte_nummer_str
- }
-
- \phone_US_vorwahl_schreiben:VN \l_phone_bereinigte_nummer_str \c_false_bool
- }
- {7}
- {
- \phone_US_vermittlungsstellennummer_schreiben:Vx \c_empty_tl { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {3} }
-
- \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:Nnn \l_phone_bereinigte_nummer_str {4} {7} }
- }
- {10}
- {
- \str_set:Nx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {3} }
-
- \clist_if_in:NVF \c_phone_US_vorwahlen_clist \l_tmpa_str
- {
- \msg_warning:nnx {phonenumbers} {US/invalid area code} {\l_tmpa_str}
- }
-
- \phone_US_vorwahl_schreiben:VN \l_tmpa_str \c_true_bool
-
- \phone_US_vermittlungsstellennummer_schreiben:Vx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {4} {6} }
-
- \tl_put_right:Nx \l_phone_ausgabetext_tl { \str_range:Nnn \l_phone_bereinigte_nummer_str {7} {10} }
- \str_put_right:Nx \l_phone_linktext_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {7} {10} }
- }
- }
- {
- \int_compare:nNnTF { \str_count:N \l_phone_bereinigte_nummer_str } < {10}
- {
- \msg_warning:nnnn {phonenumbers} {number too short} {phone} {10}
- }
- {
- \msg_warning:nnnn {phonenumbers} {number too long} {phone} {10}
- }
-
- \tl_put_right:NV \l_phone_ausgabetext_tl \l_phone_bereinigte_nummer_str
- }
- }
-
-
-%%%%%%%%%%%%%%%%%%%% SONSTIGE LÄNDER %%%%%%%%%%%%%%%%%%%%
-
-\cs_new_protected:Npn \phone_SONST_nummer_schreiben:
+\cs_new_protected:Npn \phone_nicht_unterstuetzte_nummer_schreiben:
{
- \int_set:Nn \l_phone_nummerlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str }
+ \int_set:Nn \l_phone_nummernlaenge_int { \str_count:N \l_phone_bereinigte_nummer_str }
\bool_set_false:N \l_phone_vorwahl_gefunden_bool
@@ -2514,7 +1089,7 @@
{
\bool_if:NF \l_phone_vorwahl_gefunden_bool
{
- \int_compare:nT { \l_phone_nummerlaenge_int >= ##1 }
+ \int_compare:nT { \l_phone_nummernlaenge_int >= ##1 }
{
\str_set:Nx \l_tmpa_str { \str_range:Nnn \l_phone_bereinigte_nummer_str {1} {##1} }
@@ -2522,9 +1097,9 @@
{
\bool_set_true:N \l_phone_vorwahl_gefunden_bool
- \phone_auslandsvorwahl_schreiben:V \l_tmpa_str
+ \phone_ungruppierte_auslandsvorwahl_schreiben:V \l_tmpa_str
- \int_compare:nNnTF {##1} = {\l_phone_nummerlaenge_int}
+ \int_compare:nNnTF {##1} = {\l_phone_nummernlaenge_int}
{
\msg_warning:nn {phonenumbers} {country code only}
}
@@ -2548,5 +1123,10 @@
}
}
+\file_input:n {phonenumbers-AT.def}
+\file_input:n {phonenumbers-DE.def}
+\file_input:n {phonenumbers-FR.def}
+\file_input:n {phonenumbers-UK.def}
+\file_input:n {phonenumbers-US.def}
\ProcessKeysPackageOptions {phonenumbers}