use wasm_bindgen::prelude::*;
use crate::utils::seeder;
use crate::locales::en::person::name::{last_name, neutral_first_name};
#[wasm_bindgen(js_name = canada_street_suffix)]
pub fn street_suffix() -> String {
STREETSUFFIXES[seeder::gen_range(0..STREETSUFFIXES_LEN)].to_string()
}
#[wasm_bindgen(js_name = canada_street_name)]
pub fn street_name() -> String {
let format = seeder::gen_range(0..2);
match format {
0 => concat_string!(neutral_first_name(), " ", street_suffix()),
1 => concat_string!(last_name(), " ", street_suffix()),
_ => "".to_string(),
}
}
#[wasm_bindgen(js_name = canada_province)]
pub fn province() -> String {
PROVINCES[seeder::gen_range(0..PROVINCES_LEN)].to_string()
}
#[wasm_bindgen(js_name = canada_city)]
pub fn city(province: &str) -> String {
match &province as &str {
"ON" => CITIES_ON[seeder::gen_range(0..CITIES_ON_LEN)].to_string(),
"QC" => CITIES_QC[seeder::gen_range(0..CITIES_QC_LEN)].to_string(),
"BC" => CITIES_BC[seeder::gen_range(0..CITIES_BC_LEN)].to_string(),
"AB" => CITIES_AB[seeder::gen_range(0..CITIES_AB_LEN)].to_string(),
"SK" => CITIES_SK[seeder::gen_range(0..CITIES_SK_LEN)].to_string(),
"MB" => CITIES_MB[seeder::gen_range(0..CITIES_MB_LEN)].to_string(),
"NS" => CITIES_NS[seeder::gen_range(0..CITIES_NS_LEN)].to_string(),
"NB" => CITIES_NB[seeder::gen_range(0..CITIES_NB_LEN)].to_string(),
"PE" => CITIES_PE[seeder::gen_range(0..CITIES_PE_LEN)].to_string(),
"NL" => CITIES_NL[seeder::gen_range(0..CITIES_NL_LEN)].to_string(),
"YT" => CITIES_YT[seeder::gen_range(0..CITIES_YT_LEN)].to_string(),
"NT" => CITIES_NT[seeder::gen_range(0..CITIES_NT_LEN)].to_string(),
"NU" => CITIES_NU[seeder::gen_range(0..CITIES_NU_LEN)].to_string(),
_ => "".to_string(),
}
}
#[wasm_bindgen(js_name = canada_province_code)]
pub fn province_code(province: &str, city: &str) -> String {
let postal_start = match &province as &str {
"ON" => {
let parts = city.split("::");
parts.last().unwrap()
}
"QC" => {
let parts = city.split("::");
parts.last().unwrap()
}
"BC" => "V",
"AB" => "T",
"SK" => "S",
"MB" => "R",
"NS" => "B",
"NB" => "E",
"PE" => "C",
"NL" => "A",
"YT" => "Y",
"NT" => "X",
"NU" => "X",
_ => "",
};
concat_string!(
postal_start,
seeder::gen_range(1..9).to_string(),
(seeder::gen_range(b'A'..b'Z') as char).to_string(),
seeder::gen_range(1..9).to_string(),
(seeder::gen_range(b'A'..b'Z') as char).to_string(),
seeder::gen_range(1..9).to_string()
)
}
#[wasm_bindgen(js_name = canada_street_address)]
pub fn street_address() -> String {
let format = seeder::gen_range(3..6);
match format {
5 => format!("{} {}", seeder::gen_range(10000..99999), street_name()),
4 => format!("{} {}", seeder::gen_range(1000..9999), street_name()),
3 => format!("{} {}", seeder::gen_range(100..999), street_name()),
_ => "".to_string(),
}
}
#[wasm_bindgen(js_name = canada_full_address)]
pub fn full_address() -> String {
let format = seeder::gen_range(0..2);
let province = province();
let mut city = city(&province);
let postal_code = province_code(&province, &city);
let mut parts = city.split("::");
city = parts.next().unwrap().to_string();
match format {
0 => format!(
"{}, {}, {} {}",
street_address(),
city,
province,
postal_code
),
1 => format!(
"{} {}, {}, {} {}",
street_address(),
secondary_address(),
city,
province,
postal_code
),
_ => "".to_string(),
}
}
#[wasm_bindgen(js_name = canada_secondary_address)]
pub fn secondary_address() -> String {
concat_string!(
SECONDARY_FORMATS[seeder::gen_range(0..SECONDARY_FORMATS_LEN)].to_string(),
" ",
seeder::gen_range(100..999).to_string()
)
}
static STREETSUFFIXES: [&'static str; 225] = [
"Alley",
"Avenue",
"Branch",
"Bridge",
"Brook",
"Brooks",
"Burg",
"Burgs",
"Bypass",
"Camp",
"Canyon",
"Cape",
"Causeway",
"Center",
"Centers",
"Circle",
"Circles",
"Cliff",
"Cliffs",
"Club",
"Common",
"Corner",
"Corners",
"Course",
"Court",
"Courts",
"Cove",
"Coves",
"Creek",
"Crescent",
"Crest",
"Crossing",
"Crossroad",
"Curve",
"Dale",
"Dam",
"Divide",
"Drive",
"Drive",
"Drives",
"Estate",
"Estates",
"Expressway",
"Extension",
"Extensions",
"Fall",
"Falls",
"Ferry",
"Field",
"Fields",
"Flat",
"Flats",
"Ford",
"Fords",
"Forest",
"Forge",
"Forges",
"Fork",
"Forks",
"Fort",
"Freeway",
"Garden",
"Gardens",
"Gateway",
"Glen",
"Glens",
"Green",
"Greens",
"Grove",
"Groves",
"Harbor",
"Harbors",
"Haven",
"Heights",
"Highway",
"Hill",
"Hills",
"Hollow",
"Inlet",
"Inlet",
"Island",
"Island",
"Islands",
"Islands",
"Isle",
"Isle",
"Junction",
"Junctions",
"Key",
"Keys",
"Knoll",
"Knolls",
"Lake",
"Lakes",
"Land",
"Landing",
"Lane",
"Light",
"Lights",
"Loaf",
"Lock",
"Locks",
"Locks",
"Lodge",
"Lodge",
"Loop",
"Mall",
"Manor",
"Manors",
"Meadow",
"Meadows",
"Mews",
"Mill",
"Mills",
"Mission",
"Mission",
"Motorway",
"Mount",
"Mountain",
"Mountain",
"Mountains",
"Mountains",
"Neck",
"Orchard",
"Oval",
"Overpass",
"Park",
"Parks",
"Parkway",
"Parkways",
"Pass",
"Passage",
"Path",
"Pike",
"Pine",
"Pines",
"Place",
"Plain",
"Plains",
"Plains",
"Plaza",
"Plaza",
"Point",
"Points",
"Port",
"Port",
"Ports",
"Ports",
"Prairie",
"Prairie",
"Radial",
"Ramp",
"Ranch",
"Rapid",
"Rapids",
"Rest",
"Ridge",
"Ridges",
"River",
"Road",
"Road",
"Roads",
"Roads",
"Route",
"Row",
"Rue",
"Run",
"Shoal",
"Shoals",
"Shore",
"Shores",
"Skyway",
"Spring",
"Springs",
"Springs",
"Spur",
"Spurs",
"Square",
"Square",
"Squares",
"Squares",
"Station",
"Station",
"Stravenue",
"Stravenue",
"Stream",
"Stream",
"Street",
"Street",
"Streets",
"Summit",
"Summit",
"Terrace",
"Throughway",
"Trace",
"Track",
"Trafficway",
"Trail",
"Trail",
"Tunnel",
"Tunnel",
"Turnpike",
"Turnpike",
"Underpass",
"Union",
"Unions",
"Valley",
"Valleys",
"Via",
"Viaduct",
"View",
"Views",
"Village",
"Village",
"Villages",
"Ville",
"Vista",
"Vista",
"Walk",
"Walks",
"Wall",
"Way",
"Ways",
"Well",
"Wells",
];
static STREETSUFFIXES_LEN: usize = STREETSUFFIXES.len();
static CITIES_ON: [&'static str; 182] = [
"Ajax::L",
"Algoma::P",
"Ancaster::L",
"Acton::L",
"Sudbury::P",
"Alliston::L",
"Amherstburg::N",
"Amherstview::K",
"Arnprior::K",
"Aurora::L",
"Aylmer::N",
"Barrie::L",
"Belleville::K",
"Bowmanville::L",
"Brampton::L",
"Brant::N",
"Burlington::L",
"Baden::N",
"Bolton::L",
"Bracebridge::P",
"Bradford::L",
"Brampton West::L",
"Brant and Norfolk::N",
"Brockville::K",
"Bruce Peninsula::N",
"Cambridge::N",
"Chatham::N",
"Cornwall::K",
"Caledon::L",
"Caledon Village::L",
"Caledonia::N",
"Carleton Place::K",
"Cobourg::K",
"Coghrane Region::P",
"Collingwood::L",
"Concord::L",
"Courtice::L",
"Cumberland::K",
"Don Mills::M",
"Downsview::M",
"Dufferin County::L",
"Delhi::N",
"Dryden::P",
"Dundas::L",
"Dunnville::N",
"Durham::L",
"East York::M",
"Etobicoke::M",
"East Haldimand County::L",
"Elgin::N",
"Elizabethtown::K",
"Elliot Lake::P",
"Elmira::N",
"Espanola::P",
"Essex::N",
"Frontenac County::",
"Fergus::N",
"Fort Erie::L",
"Fort Frances::P",
"Gloucester::K",
"Greater Sudbury::P",
"Guelph::N",
"Gananoque::K",
"Georgetown::L",
"Georgian Bay South Shore::L",
"Goderich::N",
"Gravenhurst::P",
"Greely::K",
"Grimsby::L",
"Halton::L",
"Hamilton::L",
"Hanover::N",
"Hawkesbury::K",
"Holland Landing::L",
"Huntsville::P",
"Huron::N",
"Ingersoll::N",
"Innisfil::L",
"Kanata::K",
"Kingston::K",
"Kitchener::N",
"Kapuskasing::P",
"Kawartha Lakes::K",
"Kenora::P",
"Kent::N",
"Keswick::L",
"Kincardine::N",
"King City::L",
"Kingsville::N",
"Kirkland Lake::P",
"La Salle::N",
"Lake Simcoe::L",
"Lake Superior::P",
"London::N",
"Lake of Woods::P",
"Lambton::N",
"Leamington::N",
"Lindsay::K",
"Listowel::N",
"Markham::L",
"Mississauga::L",
"Manitoulin::P",
"Manotick::K",
"Maple::L",
"Meaford::N",
"Middlesex::N",
"Midhurst::L",
"Midland::L",
"Milton::L",
"Minesing::L",
"Nepean::K",
"Newmarket::L",
"Niagara Falls::L",
"Nipissing::P",
"North Bay::P",
"North York::M",
"Napanee::K",
"National Capital Region::K",
"Neebing::P",
"Niagra::L",
"North Peel::L",
"Oakville::L",
"Orangeville::L",
"Oshawa::L",
"Ottawa::K",
"Orillia::L",
"Orleans::K",
"Owen Sound::N",
"Oxford::N",
"Parry Sound::P",
"Pembroke::K",
"Peterborough::K",
"Peterborough County::K",
"Pickering::L",
"Paris::N",
"Port Colborne::L",
"Port Hope::L",
"Port Perry::L",
"Port Stanley::N",
"Renfrew County::K",
"Richmond Hill::L",
"Rainy River Region::P",
"Renfrew::K",
"Rideau Lakes::K",
"Rockland::K",
"Russel::K",
"Sarnia::N",
"Sault Ste.::P",
"Scarborough::M",
"St. Catharines::L",
"St. Thomas::N",
"Simcoe::N",
"Sioux Lookout::P",
"Smiths Falls::K",
"Springwater::L",
"St Marys::N",
"Stittsville::K",
"Souffville::L",
"Stratford::N",
"Tecumseh::N",
"Thornhill::L",
"Tilsonburg::N",
"Trenton::K",
"Tecumseh::N",
"Thunder Bay::P",
"Timiskaming::P",
"Timmins::P",
"Toronto::M",
"Waterloo::N",
"Welland::L",
"Whitby::L",
"Willowdale::M",
"Windsor::N",
"Woodbridge::L",
"Woodstock::N",
"York::M",
"Uxbridge::L",
"Wallaceburg::N",
"Wasaga Beach::L",
"Waterdown::L",
"Wellington::N",
"Weston::M",
];
static CITIES_ON_LEN: usize = CITIES_ON.len();
static CITIES_QC: [&'static str; 156] = [
"Abitibi-Temiscamingue::J",
"Ahuntsic::H",
"Anjou::H",
"Auteuil::H",
"Aylmer::J",
"Bas-Saint-Laurent::G",
"Beauport::G",
"Cap-De-La-Madeleine::G",
"Capitale-Nationale::G",
"Cartierville::H",
"Chaudiere-Appalaches::G",
"Chicoutimi::G",
"Chomedey::H",
"Cote-Des-Neiges::H",
"Cote-Nord::G",
"Dollard-Des-Ormeaux::H",
"Estrie::G",
"Gaspesie-Iles-De-La-Madeleine::J",
"Gatineau::G",
"Hull::J",
"Jean-Talon::G",
"Jonquiere::G",
"Lachine::H",
"Lanaudiere::J",
"Lasalle::H",
"Laurentides::J",
"Laval::H",
"Longueuil::J",
"Loretteville::G",
"Mauricie::G",
"Mercier::H",
"Mirabel::J",
"Monteregie::J",
"Montreal::H",
"Mount Royal::H",
"Nord-Du-Quebec::G",
"Notre-Dame-De-Grace::H",
"Outaouais::J",
"Petite-Patrie::H",
"Place::H",
"Plateau Mont-Royal::H",
"Region De::G",
"Rosemont::H",
"Rouyn-Noranda::J",
"Saguenay/Lac-Saint-Jean::G",
"Saint-Hubert::J",
"Saint-Laurent::H",
"Saint-Leonard::H",
"Sainte-Foy::G",
"Sainte-Therese-De-Blainville::J",
"Shawinigan::G",
"Sherbrooke::J",
"Sorel::J",
"Trois-Rivieres::G",
"Val-Belair::G",
"Verdun::H",
"Victoriaville::G",
"Villeray::H",
"Abitibi-Temiscamingue-Est::J",
"Akwesasne Region::H",
"Appalaches::G",
"Baie-Comeau::G",
"Bas-St-Laurent::G",
"Becancour::G",
"Beloeil::J",
"Black Lake::G",
"Bois-Francs::J",
"Bromptonville::J",
"Buckingham::J",
"Cap-Aux-Meules::G",
"Cap-Rouge::G",
"Cartierville::H",
"Charlesbourg::G",
"Charny::G",
"Chatham::J",
"Chaudiere::G",
"Coaticook::J",
"Cote-Saint-Luc::H",
"Degelis::G",
"Dorval Central::H",
"Drummondville::J",
"Duvernay::H",
"Estrie-Ouest::J",
"Fabreville:H",
"Gaspesie::G",
"Grand-Mere::G",
"Greenfield Park::J",
"Hochelaga::H",
"Joliette::J",
"Lassomption::J",
"Lerable::G",
"Lile Bizard::H",
"Lile-Des-Soeurs::H",
"Lile-Dorval::H",
"La Baie::G",
"La Plaine::J",
"Lac-Megantic::G",
"Lac-Saint-Charles:G",
"Laterriere::G",
"Le Fjord::G",
"Les Iles-De-La-Madeleine::G",
"Maisonneuve::H",
"Manicouagan::G",
"Masson-Angers::J",
"Metabetchouan-Lac-A-La-Croix::G",
"Mount Royal::H",
"Nunavik::J",
"Outremont::H",
"Parc-Extension::H",
"Petite-Bourgogne::H",
"Pierrefonds::H",
"Pincourt::J",
"Pintendre::G",
"Pointe-Aux-Trembles::H",
"Pointe-Saint-Charles::H",
"Pont-Viau::H",
"Region Doka::J",
"Reserved::H",
"Riviere-Des-Prairies::H",
"Rock Forest::J",
"Roxboro::H",
"Saguenay-Lac-St-Jean::G",
"Saint-Basile-Le-Grand::J",
"Saint-Bruno::J",
"Saint-Cyrille-De-Wendover::J",
"Saint-Elie-Dorford::J",
"Saint-Emile::G",
"Saint-Etienne-De-Lauzon::G",
"Saint-Franthois::H",
"Saint-Henri::H",
"Saint-Hubert::J",
"Saint-Jean-Chrysostome::G",
"Saint-Luc::J",
"Saint-Michel::H",
"Saint-Nicolas::G",
"Saint-Pierre::H",
"Saint-Raymond::G",
"Saint-Redempteur::G",
"Saint-Sophie::J",
"Saint-Vincent-De-Paul::H",
"Sainte-Agathe-Des-Monts::J",
"Sainte-Anne-De-Bellevue::H",
"Sainte-Anne-Des-Monts::G",
"Sainte-Dorothee::H",
"Sainte-Genevieve::H",
"Sainte-Rose::H",
"Sainte-Therese-De-Blainville::J",
"Senneville::H",
"Sept-Iles::G",
"St-Augustin-De-Desmaures",
"Tour De La Bourse::H",
"Valleyfield::J",
"Vaudreuil-Dorion Rcm::J",
"Vaudreuil-Soulanges::J",
"Ville Emard::H",
"Vimont::H",
];
static CITIES_QC_LEN: usize = CITIES_QC.len();
static CITIES_BC: [&'static str; 53] = [
"Abbotsford",
"Armstrong",
"Burnaby",
"Campbell River",
"Castlegar",
"Chilliwack",
"Colwood",
"Coquitlam",
"Courtenay",
"Cranbrook",
"Dawson Creek",
"Delta",
"Duncan",
"Enderby",
"Fernie",
"Fort St. John",
"Grand Forks",
"Greenwood",
"Kamloops",
"Kelowna",
"Kimberley",
"Langford",
"Langley",
"Maple Ridge",
"Merritt",
"Mission",
"Nanaimo",
"Nelson",
"New Westminster",
"North Vancouver",
"Parksville",
"Penticton",
"Pitt Meadows",
"Port Alberni",
"Port Coquitlam",
"Port Moody",
"Powell River",
"Prince George",
"Prince Rupert",
"Quesnel",
"Revelstoke",
"Richmond",
"Rossland",
"Salmon Arm",
"Surrey",
"Terrace",
"Trail",
"Vancouver",
"Vernon",
"Victoria",
"West Kelowna",
"White Rock",
"Williams Lake",
];
static CITIES_BC_LEN: usize = CITIES_BC.len();
static CITIES_AB: [&'static str; 124] = [
"Athabasca",
"Banff",
"Barrhead",
"Bashaw",
"Bassano",
"Beaverlodge",
"Bentley",
"Blackfalds",
"Bon Accord",
"Bonnyville",
"Bow Island",
"Bowden",
"Bruderheim",
"Calmar",
"Canmore",
"Cardston",
"Carstairs",
"Castor",
"Claresholm",
"Coaldale",
"Coalhurst",
"Cochrane",
"Coronation",
"Crossfield",
"Daysland",
"Devon",
"Diamond Valley",
"Didsbury",
"Drayton Valley",
"Drumheller",
"Eckville",
"Edson",
"Elk Point",
"Fairview",
"Falher",
"Fort Macleod",
"Fox Creek",
"Gibbons",
"Grimshaw",
"Hanna",
"Hardisty",
"High Level",
"High Prairie",
"High River",
"Hinton",
"Innisfail",
"Irricana",
"Killam",
"Lamont",
"Legal",
"Magrath",
"Manning",
"Mayerthorpe",
"McLennan",
"Milk River",
"Millet",
"Morinville",
"Mundare",
"Nanton",
"Nobleford",
"Okotoks",
"Olds",
"Onoway",
"Oyen",
"Peace River",
"Penhold",
"Picture Butte",
"Pincher Creek",
"Ponoka",
"Provost",
"Rainbow Lake",
"Raymond",
"Redcliff",
"Redwater",
"Rimbey",
"Rocky Mountain House",
"Sedgewick",
"Sexsmith",
"Slave Lake",
"Smoky Lake",
"Spirit River",
"St. Paul",
"Stavely",
"Stettler",
"Stony Plain",
"Strathmore",
"Sundre",
"Swan Hills",
"Sylvan Lake",
"Taber",
"Thorsby",
"Three Hills",
"Tofield",
"Trochu",
"Two Hills",
"Valleyview",
"Vauxhall",
"Vegreville",
"Vermilion",
"Viking",
"Vulcan",
"Wainwright",
"Wembley",
"Westlock",
"Whitecourt",
"Airdrie",
"Beaumont",
"Brooks",
"Calgary",
"Camrose",
"Chestermere",
"Cold Lake",
"Edmonton",
"Fort Saskatchewan",
"Grande Prairie",
"Lacombe",
"Leduc",
"Lethbridge",
"Lloydminster",
"Medicine Hat",
"Red Deer",
"Spruce Grove",
"St. Albert",
"Wetaskiwin",
];
static CITIES_AB_LEN: usize = CITIES_AB.len();
static CITIES_MB: [&'static str; 35] = [
"Brandon",
"Dauphin",
"Flin Flon",
"Morden",
"Portage la Prairie",
"Selkirk",
"Steinbach",
"Thompson",
"Winkler",
"Winnipeg",
"Altona",
"Arborg",
"Beausejour",
"Carberry",
"Carman",
"Churchill",
"Gillam",
"Grand Rapids",
"Lac du Bonnet",
"Leaf Rapids",
"Lynn Lake",
"Melita",
"Minnedosa",
"Morris",
"Neepawa",
"Niverville",
"The Pas",
"Powerview-Pine Falls",
"Snow Lake",
"Ste. Anne",
"Stonewall",
"Swan River",
"Teulon",
"Virden",
"Winnipeg Beach",
];
static CITIES_MB_LEN: usize = CITIES_MB.len();
static CITIES_SK: [&'static str; 164] = [
"Estevan",
"Flin Flon",
"Humboldt",
"Lloydminster",
"Martensville",
"Meadow Lake",
"Melfort",
"Melville",
"Moose Jaw",
"North Battleford",
"Prince Albert",
"Regina",
"Saskatoon",
"Swift Current",
"Warman",
"Weyburn",
"Yorkton",
"Aberdeen",
"Alameda",
"Allan",
"Arborfield",
"Arcola",
"Asquith",
"Assiniboia",
"Balcarres",
"Balgonie",
"Battleford",
"Bengough",
"Bienfait",
"Big River",
"Biggar",
"Birch Hills",
"Blaine Lake",
"Bredenbury",
"Broadview",
"Bruno",
"Burstall",
"Cabri",
"Canora",
"Carlyle",
"Carnduff",
"Carrot River",
"Central Butte",
"Choiceland",
"Churchbridge",
"Colonsay",
"Coronach",
"Craik",
"Cudworth",
"Cupar",
"Cut Knife",
"Dalmeny",
"Davidson",
"Delisle",
"Duck Lake",
"Dundurn",
"Eastend",
"Eatonia",
"Elrose",
"Esterhazy",
"Eston",
"Fleming",
"Foam Lake",
"Fort QuAppelle",
"Francis",
"Govan",
"Grand Coulee",
"Gravelbourg",
"Grenfell",
"Gull Lake",
"Hafford",
"Hague",
"Hanley",
"Hepburn",
"Herbert",
"Hudson Bay",
"Imperial",
"Indian Head",
"Ituna",
"Kamsack",
"Kelvington",
"Kerrobert",
"Kindersley",
"Kinistino",
"Kipling",
"Kyle",
"Lafleche",
"Lampman",
"Langenburg",
"Langham",
"Lanigan",
"Lashburn",
"Leader",
"Lemberg",
"Leroy",
"Lumsden",
"Luseland",
"Macklin",
"Maidstone",
"Maple Creek",
"Marshall",
"Midale",
"Milestone",
"Moosomin",
"Morse",
"Mossbank",
"Naicam",
"Nipawin",
"Nokomis",
"Norquay",
"Ogema",
"Osler",
"Outlook",
"Oxbow",
"Pense",
"Pilot Butte",
"Ponteix",
"Porcupine Plain",
"Preeceville",
"QuAppelle",
"Radisson",
"Radville",
"Raymore",
"Redvers",
"Regina Beach",
"Rocanville",
"Rockglen",
"Rose Valley",
"Rosetown",
"Rosthern",
"Rouleau",
"Saltcoats",
"Scott",
"Shaunavon",
"Shellbrook",
"Sintaluta",
"Southey",
"Spiritwood",
"Springside",
"St. Brieux",
"St. Walburg",
"Star City",
"Stoughton",
"Strasbourg",
"Sturgis",
"Tisdale",
"Turtleford",
"Unity",
"Vonda",
"Wadena",
"Wakaw",
"Waldheim",
"Wapella",
"Watrous",
"Watson",
"Wawota",
"White City",
"Whitewood",
"Wilkie",
"Willow Bunch",
"Wolseley",
"Wynyard",
"Yellow Grass",
"Zealandia",
];
static CITIES_SK_LEN: usize = CITIES_SK.len();
static CITIES_YT: [&'static str; 4] = [
"Dawson City",
"Faro",
"Watson Lake",
"Whitehorse",
];
static CITIES_YT_LEN: usize = CITIES_YT.len();
static CITIES_NT: [&'static str; 7] = [
"Fort Smith",
"Hay River",
"Inuvik",
"Norman Wells",
"Fort Simpson",
"Yellowknife",
"Sachs Harbour",
];
static CITIES_NT_LEN: usize = CITIES_NT.len();
static CITIES_NU: [&'static str; 1] = ["Iqaluit"];
static CITIES_NU_LEN: usize = CITIES_NU.len();
static CITIES_NL: [&'static str; 272] = [
"Corner Brook",
"Mount Pearl",
"St. Johns",
"Admirals Beach",
"Anchor Point",
"Appleton",
"Aquaforte",
"Arnolds Cove",
"Avondale",
"Badger",
"Baie Verte",
"Baine Harbour",
"Bauline",
"Bay Bulls",
"Bay de Verde",
"Bay LArgent",
"Bay Roberts",
"Baytona",
"Beachside",
"Bellburns",
"Belleoram",
"Birchy Bay",
"Bird Cove",
"Bishops Cove",
"Bishops Falls",
"Bonavista",
"Botwood",
"Branch",
"Brents Cove",
"Brighton",
"Brigus",
"Bryants Cove",
"Buchans",
"Burgeo",
"Burin",
"Burlington",
"Burnt Islands",
"Campbellton",
"Cape Broyle",
"Cape St. George",
"Carbonear",
"Carmanville",
"Cartwright, Labrador",
"Centreville-Wareham-Trinity",
"Chance Cove",
"Change Islands",
"Channel-Port aux Basques",
"Chapel Arm",
"Charlottetown",
"Clarenville",
"Clarkes Beach",
"Coachmans Cove",
"Colinet",
"Colliers",
"Come By Chance",
"Comfort Cove-Newstead",
"Conception Bay South",
"Conception Harbour",
"Conche",
"Cooks Harbour",
"Cormack",
"Cottlesville",
"Cow Head",
"Coxs Cove",
"Crow Head",
"Cupids",
"Daniels Harbour",
"Deer Lake",
"Dover",
"Duntara",
"Eastport",
"Elliston",
"Embree",
"Englee",
"English Harbour East",
"Fermeuse",
"Ferryland",
"Flatrock",
"Fleur de Lys",
"Flowers Cove",
"Fogo Island",
"Forteau",
"Fortune",
"Fox Cove-Mortier",
"Fox Harbour",
"Frenchmans Cove",
"Gallants",
"Gambo",
"Gander",
"Garnish",
"Gaskiers-Point La Haye",
"Gaultois",
"Gillams",
"Glenburnie-Birchy Head-Shoal Brook",
"Glenwood",
"Glovertown",
"Goose Cove East",
"Grand Bank",
"Grand Falls-Windsor",
"Grand le Pierre",
"Greenspond",
"Hampden",
"Hants Harbour",
"Happy Adventure",
"Happy Valley-Goose Bay",
"Harbour Breton",
"Harbour Grace",
"Harbour Main-Chapels Cove-Lakeview",
"Hare Bay",
"Hawkes Bay",
"Hearts Content",
"Hearts Delight-Islington",
"Hearts Desire",
"Hermitage-Sandyville",
"Holyrood",
"Howley",
"Hughes Brook",
"Humber Arm South",
"Indian Bay",
"Irishtown-Summerside",
"Isle aux Morts",
"Jacksons Arm",
"Keels",
"Kings Cove",
"Kings Point",
"Kippens",
"Labrador City",
"Lamaline",
"LAnse-au-Clair",
"LAnse-au-Loup",
"Lark Harbour",
"LaScie",
"Lawn",
"Leading Tickles",
"Lewins Cove",
"Lewisporte",
"Little Bay",
"Little Bay East",
"Little Bay Islands",
"Little Burnt Bay",
"Logy Bay-Middle Cove-Outer Cove",
"Long Harbour-Mount Arlington Heights",
"Lords Cove",
"Lourdes",
"Lumsden",
"Lushes Bight-Beaumont-Beaumont North",
"Main Brook",
"Marys Harbour",
"Marystown",
"Massey Drive",
"McIvers",
"Meadows",
"Middle Arm",
"Miles Cove",
"Millertown",
"Milltown-Head of Bay dEspoir",
"Mings Bight",
"Morrisville",
"Mount Carmel-Mitchells Brook-St. Catherines",
"Mount Moriah",
"Musgrave Harbour",
"Musgravetown",
"New Perlican",
"New-Wes-Valley",
"Nippers Harbour",
"Normans Cove-Long Cove",
"Norris Arm",
"Norris Point",
"North River",
"North West River",
"Northern Arm",
"Old Perlican",
"Pacquet",
"Paradise",
"Parkers Cove",
"Parsons Pond",
"Pasadena",
"Peterview",
"Petty Harbour-Maddox Cove",
"Pilleys Island",
"Pinware",
"Placentia",
"Point au Gaul",
"Point Lance",
"Point Leamington",
"Point May",
"Point of Bay",
"Pools Cove",
"Port Anson",
"Port au Choix",
"Port au Port East",
"Port au Port West-Aguathuna-Felix Cove",
"Port Blandford",
"Port Hope Simpson",
"Port Kirwan",
"Port Rexton",
"Port Saunders",
"Portugal Cove South",
"Portugal Cove–St. Philips",
"Pouch Cove",
"Raleigh",
"Ramea",
"Red Bay",
"Red Harbour",
"Reidville",
"Rencontre East",
"Renews-Cappahayden",
"River of Ponds",
"Riverhead",
"Roberts Arm",
"Rocky Harbour",
"Roddickton-Bide Arm",
"Rose Blanche-Harbour le Cou",
"Rushoon",
"Sallys Cove",
"Salmon Cove",
"Salvage",
"Sandringham",
"Sandy Cove",
"Seal Cove (Fortune Bay)",
"Seal Cove (White Bay)",
"Small Point-Adams Cove-Blackhead-Broad Cove",
"South Brook",
"South River",
"Southern Harbour",
"Spaniards Bay",
"Springdale",
"St. Albans",
"St. Anthony",
"St. Bernards-Jacques Fontaine",
"St. Brendans",
"St. Brides",
"St. Georges",
"St. Jacques-Coombs Cove",
"St. Josephs",
"St. Lawrence",
"St. Lewis",
"St. Lunaire-Griquet",
"St. Marys",
"St. Pauls",
"St. Shotts",
"St. Vincents-St. Stephens-Peters River",
"Steady Brook",
"Stephenville",
"Stephenville Crossing",
"Summerford",
"Sunnyside",
"Terra Nova",
"Terrenceville",
"Tilt Cove",
"Torbay",
"Traytown",
"Trepassey",
"Trinity",
"Trinity Bay North",
"Triton",
"Trout River",
"Twillingate",
"Upper Island Cove",
"Victoria",
"Wabana",
"Wabush",
"West St. Modeste",
"Westport",
"Whitbourne",
"Whiteway",
"Winterland",
"Winterton",
"Witless Bay",
"Woodstock",
"Woody Point, Bonne Bay",
"York Harbour",
];
static CITIES_NL_LEN: usize = CITIES_NL.len();
static CITIES_NS: [&'static str; 28] = [
"Amherst",
"Annapolis Royal",
"Antigonish",
"Berwick",
"Bridgewater",
"Clarks Harbour",
"Digby",
"Kentville",
"Lockeport",
"Lunenburg",
"Mahone Bay",
"Middleton",
"Mulgrave",
"New Glasgow",
"Oxford",
"Pictou",
"Port Hawkesbury",
"Shelburne",
"Stellarton",
"Stewiacke",
"Trenton",
"Truro",
"Westville",
"Wolfville",
"Yarmouth",
"Halifax",
"Sydney",
"Dartmouth",
];
static CITIES_NS_LEN: usize = CITIES_NS.len();
static CITIES_NB: [&'static str; 34] = [
"Bathurst",
"Campbellton",
"Dieppe",
"Edmundston",
"Fredericton",
"Miramichi",
"Moncton",
"Saint John",
"Beresford",
"Bouctouche",
"Caraquet",
"Dalhousie",
"Florenceville-Bristol",
"Grand Bay-Westfield",
"Grand Falls",
"Hampton",
"Hartland",
"Lamèque",
"Nackawic",
"Oromocto",
"Quispamsis",
"Richibucto",
"Riverview",
"Rothesay",
"Sackville",
"Saint Andrews",
"Saint-Léonard",
"Saint-Quentin",
"Shediac",
"Shippagan",
"St. George",
"St. Stephen",
"Sussex",
"Woodstock",
];
static CITIES_NB_LEN: usize = CITIES_NB.len();
static CITIES_PE: [&'static str; 12] = [
"Alberton",
"Borden-Carleton",
"Cornwall",
"Kensington",
"North Rustico",
"OLeary",
"Souris",
"Stratford",
"Three Rivers",
"Tignish",
"Charlottetown",
"Summerside",
];
static CITIES_PE_LEN: usize = CITIES_PE.len();
static PROVINCES: [&'static str; 13] = [
"ON", "QC", "BC", "AB", "SK", "MB", "PE", "NB", "NS", "NL", "YT", "NT", "NU",
];
static PROVINCES_LEN: usize = PROVINCES.len();
static SECONDARY_FORMATS: [&'static str; 2] = [
"Suite",
"Apt.",
];
static SECONDARY_FORMATS_LEN: usize = SECONDARY_FORMATS.len();