R/pt_BR.R

# automotive --------------------------------------
automotive_pt_BR = R6Class(
  "automotive_pt_BR",
  inherit = automotive_init,
  cloneable = FALSE,
  private = list(
    license_formats = '???-####'
  )
)
# color ----------------------------------------
color_pt_BR = R6Class(
  "color_pt_BR",
  inherit = color_init,
  cloneable = FALSE,
  private = list(
    all_colors = list(
      c("A\u00e7afr\u00e3o","#F4C430"),
      c("\u00c1gua-marinha m\u00e9dia","#66CDAA"),
      c("\u00c1gua-marinha","#7FFFD4"),
      c("\u00c1gua","#00FFFF"),
      c("Alizarina","#E32636"),
      c("Amarelo brasilis","#ECDB00"),
      c("Amarelo claro","#FFFFE0"),
      c("Amarelo creme","#ECD690"),
      c("Amarelo escuro","#F2B73F"),
      c("Amarelo esverdeado","#9ACD32"),
      c("Amarelo esverdeado","#ADFF2F"),
      c("Amarelo ouro claro","#FAFAD2"),
      c("Amarelo queimado","#EEAD2D"),
      c("Amarelo","#FFFF00"),
      c("\u00c2mbar","#FFBF00"),
      c("Ameixa","#DDA0DD"),
      c("Am\u00eandoa","#FFEBCD"),
      c("Ametista","#9966CC"),
      c("Aspargo","#7BA05B"),
      c("Azul a\u00e7o claro","#B0C4DE"),
      c("Azul a\u00e7o","#4682B4"),
      c("Azul alice","#F0F8FF"),
      c("Azul ard\u00f3sia claro","#8470FF"),
      c("Azul ard\u00f3sia escuro","#483D8B"),
      c("Azul ard\u00f3sia m\u00e9dio","#7B68EE"),
      c("Azul ard\u00f3sia","#6A5ACD"),
      c("Azul areado","#B8CAD4"),
      c("Azul brasilis brilhante","#09ACDB"),
      c("Azul brasilis","#00BDCE"),
      c("Azul cadete","#5F9EA0"),
      c("Azul camarada","#054F77"),
      c("Azul celeste brilhante","#007FFF"),
      c("Azul celeste pernambucano","#00A4CD"),
      c("Azul celeste","#F0FFFF"),
      c("Azul c\u00e9u claro","#87CEFA"),
      c("Azul c\u00e9u profundo","#00BFFF"),
      c("Azul c\u00e9u","#87CEEB"),
      c("Azul claro","#ADD8E6"),
      c("Azul cobalto","#0047AB"),
      c("Azul escuro","#00008B"),
      c("Azul flor de milho","#6495ED"),
      c("Azul for\u00e7a a\u00e9rea","#5D8AA8"),
      c("Azul furtivo","#1E90FF"),
      c("Azul manteiga","#a6aa3e"),
      c("Azul marinho","#120A8F"),
      c("Azul m\u00e9dio","#0000CD"),
      c("Azul meia-noite","#191970"),
      c("Azul petr\u00f3leo","#084D6E"),
      c("Azul p\u00f3lvora","#B0E0E6"),
      c("Azul real","#0000DD"),
      c("Azul taparuere","#248EFF"),
      c("Azul turquesa brilhante","#00DDFF"),
      c("Azul turquesa","#00CCEE"),
      c("Azul violeta","#8A2BE2"),
      c("Azul","#0000FF"),
      c("Bege","#F5F5DC"),
      c("Bord\u00f4","#800000"),
      c("Borgonha","#900020"),
      c("Branco antigo","#FAEBD7"),
      c("Branco fantasma","#F8F8FF"),
      c("Branco floral","#FFFAF0"),
      c("Branco fuma\u00e7a","#F5F5F5"),
      c("Branco navajo","#FFDEAD"),
      c("Branco","#FFFFFF"),
      c("Brasil","#A7F432"),
      c("Bronze","#CD7F32"),
      c("Caqui escuro","#BDB76B"),
      c("Caqui","#F0E68C"),
      c("Caramelo","#8B5742"),
      c("Cardo","#D8BFD8"),
      c("Carmesim","#DC143C"),
      c("Carmim carn\u00e1ceo","#960018"),
      c("Carmim cl\u00e1ssico","#992244"),
      c("Carmim","#712F26"),
      c("Castanho avermelhado","#8B0000"),
      c("Castanho claro","#D2B48C"),
      c("Cenoura","#ED9121"),
      c("Cereja Hollywood","#F400A1"),
      c("Cereja","#DE3163"),
      c("Chocolate","#D2691E"),
      c("Ciano claro","#E0FFFF"),
      c("Ciano escuro","#008B8B"),
      c("Ciano","#00FFFF"),
      c("Cinza ard\u00f3sia claro","#778899"),
      c("Cinza ard\u00f3sia escuro","#2F4F4F"),
      c("Cinza ard\u00f3sia","#708090"),
      c("Cinza claro","#D3D3D3"),
      c("Cinza escuro","#A9A9A9"),
      c("Cinza fosco","#696969"),
      c("Cinza m\u00e9dio","#DCDCDC"),
      c("Cinza","#808080"),
      c("Cobre","#B87333"),
      c("Concha","#FFF5EE"),
      c("Coral claro","#F08080"),
      c("Coral","#FF7F50"),
      c("Couro","#F0DC82"),
      c("Creme de marisco","#FFE4C4"),
      c("Creme de menta","#F5FFFA"),
      c("Creme","#FFFDD0"),
      c("Dourado escuro","#B8860B"),
      c("Dourado p\u00e1lido","#EEE8AA"),
      c("Dourado","#DAA520"),
      c("\u00c9bano","#555D50"),
      c("Emin\u00eancia","#6C3082"),
      c("Escarlate","#FF2400"),
      c("Esmeralda","#50C878"),
      c("Eucalipto","#44D7A8"),
      c("Fandango","#B53389"),
      c("Feldspato","#FDD5B1"),
      c("Ferrugem","#B7410E"),
      c("Flerte","#A2006D"),
      c("F\u00facsia","#FF00FF"),
      c("Fuligem","#3D2B1F"),
      c("Glic\u00ednia","#C9A0DC"),
      c("Glitter","#E6E8FA"),
      c("Gren\u00e1","#831D1C"),
      c("Heliotr\u00f3pio","#DF73FF"),
      c("Herbal","#2E8B57"),
      c("Independ\u00eancia","#4C516D"),
      c("\u00cdndigo","#4B0082"),
      c("Iris","#5A4FCF"),
      c("Jade","#00A86B"),
      c("Jambo","#FF4500"),
      c("Jasmine","#F8DE7E"),
      c("Kiwi","#8EE53F"),
      c("Laranja claro","#FFB84D"),
      c("Laranja escuro","#FF8C00"),
      c("Laranja","#FFA500"),
      c("Lavanda avermelhada","#FFF0F5"),
      c("Lavanda","#E6E6FA"),
      c("Lil\u00e1s","#C8A2C8"),
      c("Lima","#FDE910"),
      c("Lim\u00e3o","#00FF00"),
      c("Linho","#FAF0E6"),
      c("Madeira","#DEB887"),
      c("Magenta escuro","#8B008B"),
      c("Magenta","#FF00FF"),
      c("Malva","#E0B0FF"),
      c("Mam\u00e3o batido","#FFEFD5"),
      c("Man\u00e1","#F0FFF0"),
      c("Marfim","#FFFFF0"),
      c("Marrom amarelado","#F4A460"),
      c("Marrom claro","#A52A2A"),
      c("Marrom rosado","#BC8F8F"),
      c("Marrom sela","#8B4513"),
      c("Marrom","#964b00"),
      c("Milho Claro","#FFF8DC"),
      c("Milho","#FBEC5D"),
      c("Mocassim","#FFE4B5"),
      c("Mostarda","#FFDB58"),
      c("Naval","#000080"),
      c("Neve","#FFFAFA"),
      c("Nyanza","#E9FFDB"),
      c("Ocre","#CC7722"),
      c("Oliva escura","#556B2F"),
      c("Oliva parda","#6B8E23"),
      c("Oliva","#808000"),
      c("Orqu\u00eddea escura","#9932CC"),
      c("Orqu\u00eddea m\u00e9dia","#BA55D3"),
      c("Orqu\u00eddea","#DA70D6"),
      c("Ouro","#FFD700"),
      c("Pardo escuro","#CC6600"),
      c("Pardo","#CD853F"),
      c("P\u00eassego","#FFDAB9"),
      c("Prata","#C0C0C0"),
      c("Preto","#000000"),
      c("P\u00farpura m\u00e9dia","#9370DB"),
      c("P\u00farpura","#800080"),
      c("Quantum","#111111"),
      c("Quartzo","#51484F"),
      c("Renda antiga","#FDF5E6"),
      c("Rosa amoroso","#CD69CD"),
      c("Rosa brilhante","#FF007F"),
      c("Rosa Choque","#FC0FC0"),
      c("Rosa claro","#FFB6C1"),
      c("Rosa dana\u00e7\u00e3o","#DA69A1"),
      c("Rosa emba\u00e7ado","#FFE4E1"),
      c("Rosa forte","#FF69B4"),
      c("Rosa profundo","#FF1493"),
      c("Rosa","#FFCBDB"),
      c("Roxo brasilis","#8A008A"),
      c("Roxo","#993399"),
      c("R\u00fatilo","#6D351A"),
      c("Salm\u00e3o claro","#FFA07A"),
      c("Salm\u00e3o escuro","#E9967A"),
      c("Salm\u00e3o","#FA7F72"),
      c("S\u00e9pia","#705714"),
      c("Siena","#FF8247"),
      c("Tangerina","#F28500"),
      c("Terracota","#E2725B"),
      c("Tijolo refrat\u00e1rio","#B22222"),
      c("Tomate","#FF6347"),
      c("Tri\u00e1ssico","#FF2401"),
      c("Trigo","#F5DEB3"),
      c("Turquesa escura","#00CED1"),
      c("Turquesa m\u00e9dia","#48D1CC"),
      c("Turquesa p\u00e1lida","#AFEEEE"),
      c("Turquesa","#40E0D0"),
      c("Urucum","#EC2300"),
      c("Verde amarelado","#9ACD32"),
      c("Verde claro","#90EE90"),
      c("Verde escuro","#006400"),
      c("Verde espectro","#00FF00"),
      c("Verde floresta","#228B22"),
      c("Verde fluorescente","#CCFF33"),
      c("Verde grama","#7CFC00"),
      c("Verde lima","#32CD32"),
      c("Verde mar claro","#20B2AA"),
      c("Verde mar escuro","#8FBC8F"),
      c("Verde mar m\u00e9dio","#3CB371"),
      c("Verde militar","#78866B"),
      c("Verde p\u00e1lido","#98FB98"),
      c("Verde Paris","#7FFF00"),
      c("Verde primavera m\u00e9dio","#00FA9A"),
      c("Verde primavera","#00FF7F"),
      c("Verde-azulado","#008080"),
      c("Verde","#008000"),
      c("Vermelho enegrecido","#550000"),
      c("Vermelho escuro","#8B0000"),
      c("Vermelho indiano","#CD5C5C"),
      c("Vermelho violeta m\u00e9dio","#C71585"),
      c("Vermelho violeta p\u00e1lido","#DB7093"),
      c("Vermelho violeta","#D02090"),
      c("Vermelho","#FF0000"),
      c("Violeta claro","#F8CBF8"),
      c("Violeta escuro","#9400D3"),
      c("Violeta","#EE82EE"),
      c("Zinco","#E2DDF0")
    ),

    safe_colors = c(
      'preto', 'marrom', 'verde', 'azul escuro', 'verde escuro',
      'roxo', 'laranja', 'verde claro', 'azul', 'rosa', 'violeta',
      'cinza', 'amarelo', 'magenta', 'ciano', 'branco')
  )
)
# person -------------------------------------------------
person_pt_BR = R6Class(
  'person_pt_BR',
  inherit = person_init,
  cloneable = FALSE,
  private = list(
    formats_female = c(
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{prefix_female} {first_name_female} {last_name}'
    ),

    formats_male = c(
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{prefix_male} {first_name_male} {last_name}'

    ),

    formats = c(
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{first_name_female} {last_name}',
      '{prefix_female} {first_name_female} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{first_name_male} {last_name}',
      '{prefix_male} {first_name_male} {last_name}'
    ),


    # To a previous (undocumented?) list of female given names was added the 100
    # most popular names in Brazil in 2014 and 2015 according to Exame magazine:
    # http://exame.abril.com.br/brasil/noticias/os-100-nomes-mais-comuns-no-brasil-em-2014
    # http://exame.abril.com.br/brasil/noticias/os-100-nomes-mais-comuns-no-brasil-em-2015

    first_names_female = c(
      "Agatha",
      "Alana",
      "Alexia",
      "Alice",
      "Al\u00edcia",
      "Amanda",
      "Ana Beatriz",
      "Ana Carolina",
      "Ana Clara",
      "Ana Julia",
      "Ana J\u00falia",
      "Ana Laura",
      "Ana Luiza",
      "Ana L\u00edvia",
      "Ana Sophia",
      "Ana Vit\u00f3ria",
      "Ana",
      "Beatriz",
      "Bianca",
      "Brenda",
      "Bruna",
      "B\u00e1rbara",
      "Camila",
      "Carolina",
      "Caroline",
      "Catarina",
      "Cec\u00edlia",
      "Clara",
      "Clarice",
      "Daniela",
      "Eduarda",
      "Elisa",
      "Eloah",
      "Emanuella",
      "Emanuelly",
      "Emilly",
      "Esther",
      "Evelyn",
      "Fernanda",
      "Gabriela",
      "Gabrielly",
      "Giovanna",
      "Helena",
      "Helo\u00edsa",
      "Isabel",
      "Isabella",
      "Isabelly",
      "Isadora",
      "Isis",
      "Joana",
      "Julia",
      "Juliana",
      "J\u00falia",
      "Kamilly",
      "Lara",
      "Larissa",
      "Laura",
      "Lav\u00ednia",
      "La\u00eds",
      "Let\u00edcia",
      "Lorena",
      "Luana",
      "Luiza",
      "Luna",
      "L\u00edvia",
      "Mait\u00ea",
      "Manuela",
      "Marcela",
      "Maria Alice",
      "Maria Cec\u00edlia",
      "Maria Clara",
      "Maria Eduarda",
      "Maria Fernanda",
      "Maria Julia",
      "Maria Luiza",
      "Maria Sophia",
      "Maria Vit\u00f3ria",
      "Maria",
      "Mariana",
      "Mariane",
      "Marina",
      "Maysa",
      "Melissa",
      "Milena",
      "Mirella",
      "Nat\u00e1lia",
      "Nicole",
      "Nina",
      "Olivia",
      "Pietra",
      "Rafaela",
      "Raquel",
      "Rebeca",
      "Sabrina",
      "Sarah",
      "Sofia",
      "Sophia",
      "Sophie",
      "Stella",
      "Stephany",
      "Valentina",
      "Vit\u00f3ria",
      "Yasmin"
    ),


    # To a previous (undocumented?) list of male given names was added the 100
    # most popular names in Brazil in 2014 and 2015 according to this blog post:
    # http://exame.abril.com.br/brasil/noticias/os-100-nomes-mais-comuns-no-brasil-em-2014
    # http://exame.abril.com.br/brasil/noticias/os-100-nomes-mais-comuns-no-brasil-em-2015

    first_names_male = c(
      "Alexandre",
      "Andr\u00e9",
      "Anthony",
      "Ant\u00f4nio",
      "Arthur",
      "Augusto",
      "Benjamin",
      "Ben\u00edcio",
      "Bernardo",
      "Breno",
      "Bruno",
      "Bryan",
      "Caio",
      "Calebe",
      "Carlos Eduardo",
      "Cau\u00e3",
      "Cau\u00ea",
      "Daniel",
      "Danilo",
      "Davi Lucas",
      "Davi Lucca",
      "Davi Luiz",
      "Davi",
      "Diego",
      "Diogo",
      "Eduardo",
      "Emanuel",
      "Enrico",
      "Enzo Gabriel",
      "Enzo",
      "Erick",
      "Felipe",
      "Fernando",
      "Francisco",
      "Gabriel",
      "Guilherme",
      "Gustavo Henrique",
      "Gustavo",
      "Heitor",
      "Henrique",
      "Ian",
      "Igor",
      "Isaac",
      "Joaquim",
      "Jo\u00e3o Felipe",
      "Jo\u00e3o Gabriel",
      "Jo\u00e3o Guilherme",
      "Jo\u00e3o Lucas",
      "Jo\u00e3o Miguel",
      "Jo\u00e3o Pedro",
      "Jo\u00e3o Vitor",
      "Jo\u00e3o",
      "Juan",
      "Kaique",
      "Kevin",
      "Leandro",
      "Leonardo",
      "Levi",
      "Lorenzo",
      "Lucas Gabriel",
      "Lucas",
      "Lucca",
      "Luigi",
      "Luiz Felipe",
      "Luiz Fernando",
      "Luiz Gustavo",
      "Luiz Henrique",
      "Luiz Miguel",
      "Luiz Ot\u00e1vio",
      "Marcelo",
      "Marcos Vinicius",
      "Matheus",
      "Miguel",
      "Murilo",
      "Nathan",
      "Nicolas",
      "Noah",
      "Ot\u00e1vio",
      "Paulo",
      "Pedro Henrique",
      "Pedro Lucas",
      "Pedro Miguel",
      "Pedro",
      "Pietro",
      "Rafael",
      "Raul",
      "Renan",
      "Rodrigo",
      "Ryan",
      "Samuel",
      "Thales",
      "Theo",
      "Thiago",
      "Thomas",
      "Vicente",
      "Vinicius",
      "Vitor Gabriel",
      "Vitor Hugo",
      "Vitor",
      "Yago",
      "Yuri"
    ),

    first_names = c(
      "Agatha",
      "Alana",
      "Alexia",
      "Alice",
      "Al\u00edcia",
      "Amanda",
      "Ana Beatriz",
      "Ana Carolina",
      "Ana Clara",
      "Ana Julia",
      "Ana J\u00falia",
      "Ana Laura",
      "Ana Luiza",
      "Ana L\u00edvia",
      "Ana Sophia",
      "Ana Vit\u00f3ria",
      "Ana",
      "Beatriz",
      "Bianca",
      "Brenda",
      "Bruna",
      "B\u00e1rbara",
      "Camila",
      "Carolina",
      "Caroline",
      "Catarina",
      "Cec\u00edlia",
      "Clara",
      "Clarice",
      "Daniela",
      "Eduarda",
      "Elisa",
      "Eloah",
      "Emanuella",
      "Emanuelly",
      "Emilly",
      "Esther",
      "Evelyn",
      "Fernanda",
      "Gabriela",
      "Gabrielly",
      "Giovanna",
      "Helena",
      "Helo\u00edsa",
      "Isabel",
      "Isabella",
      "Isabelly",
      "Isadora",
      "Isis",
      "Joana",
      "Julia",
      "Juliana",
      "J\u00falia",
      "Kamilly",
      "Lara",
      "Larissa",
      "Laura",
      "Lav\u00ednia",
      "La\u00eds",
      "Let\u00edcia",
      "Lorena",
      "Luana",
      "Luiza",
      "Luna",
      "L\u00edvia",
      "Mait\u00ea",
      "Manuela",
      "Marcela",
      "Maria Alice",
      "Maria Cec\u00edlia",
      "Maria Clara",
      "Maria Eduarda",
      "Maria Fernanda",
      "Maria Julia",
      "Maria Luiza",
      "Maria Sophia",
      "Maria Vit\u00f3ria",
      "Maria",
      "Mariana",
      "Mariane",
      "Marina",
      "Maysa",
      "Melissa",
      "Milena",
      "Mirella",
      "Nat\u00e1lia",
      "Nicole",
      "Nina",
      "Olivia",
      "Pietra",
      "Rafaela",
      "Raquel",
      "Rebeca",
      "Sabrina",
      "Sarah",
      "Sofia",
      "Sophia",
      "Sophie",
      "Stella",
      "Stephany",
      "Valentina",
      "Vit\u00f3ria",
      "Yasmin",
      "Alexandre",
      "Andr\u00e9",
      "Anthony",
      "Ant\u00f4nio",
      "Arthur",
      "Augusto",
      "Benjamin",
      "Ben\u00edcio",
      "Bernardo",
      "Breno",
      "Bruno",
      "Bryan",
      "Caio",
      "Calebe",
      "Carlos Eduardo",
      "Cau\u00e3",
      "Cau\u00ea",
      "Daniel",
      "Danilo",
      "Davi Lucas",
      "Davi Lucca",
      "Davi Luiz",
      "Davi",
      "Diego",
      "Diogo",
      "Eduardo",
      "Emanuel",
      "Enrico",
      "Enzo Gabriel",
      "Enzo",
      "Erick",
      "Felipe",
      "Fernando",
      "Francisco",
      "Gabriel",
      "Guilherme",
      "Gustavo Henrique",
      "Gustavo",
      "Heitor",
      "Henrique",
      "Ian",
      "Igor",
      "Isaac",
      "Joaquim",
      "Jo\u00e3o Felipe",
      "Jo\u00e3o Gabriel",
      "Jo\u00e3o Guilherme",
      "Jo\u00e3o Lucas",
      "Jo\u00e3o Miguel",
      "Jo\u00e3o Pedro",
      "Jo\u00e3o Vitor",
      "Jo\u00e3o",
      "Juan",
      "Kaique",
      "Kevin",
      "Leandro",
      "Leonardo",
      "Levi",
      "Lorenzo",
      "Lucas Gabriel",
      "Lucas",
      "Lucca",
      "Luigi",
      "Luiz Felipe",
      "Luiz Fernando",
      "Luiz Gustavo",
      "Luiz Henrique",
      "Luiz Miguel",
      "Luiz Ot\u00e1vio",
      "Marcelo",
      "Marcos Vinicius",
      "Matheus",
      "Miguel",
      "Murilo",
      "Nathan",
      "Nicolas",
      "Noah",
      "Ot\u00e1vio",
      "Paulo",
      "Pedro Henrique",
      "Pedro Lucas",
      "Pedro Miguel",
      "Pedro",
      "Pietro",
      "Rafael",
      "Raul",
      "Renan",
      "Rodrigo",
      "Ryan",
      "Samuel",
      "Thales",
      "Theo",
      "Thiago",
      "Thomas",
      "Vicente",
      "Vinicius",
      "Vitor Gabriel",
      "Vitor Hugo",
      "Vitor",
      "Yago",
      "Yuri"
    ),


    # To a previous (undocumented?) list of family names was added the 70
    # most popular family names in Brazil according to this blog post:
    # http://nomeschiques.com/os-70-sobrenomes-mais-comuns-e-famosos-do-brasil/

    last_names = c(
      'Almeida', 'Alves', 'Arag\u00e3o', 'Ara\u00fajo', 'Azevedo', 'Barbosa', 'Barros',
      'Caldeira', 'Campos', 'Cardoso', 'Cardoso', 'Carvalho', 'Castro',
      'Cavalcanti', 'Correia', 'Costa', 'Costela', 'Cunha', 'da Concei\u00e7\u00e3o',
      'da Costa', 'da Cruz', 'da Cunha', 'da Luz', 'da Mata', 'da Mota',
      'da Paz', 'da Rocha', 'da Rosa', 'das Neves', 'Dias', 'Duarte',
      'Farias', 'Fernandes', 'Ferreira', 'Foga\u00e7a', 'Freitas', 'Gomes',
      'Gon\u00e7alves', 'Jesus', 'Lima', 'Lopes', 'Martins', 'Melo', 'Mendes',
      'Monteiro', 'Moraes', 'Moreira', 'Moura', 'Nascimento', 'Nogueira',
      'Novaes', 'Nunes', 'Oliveira', 'Peixoto', 'Pereira', 'Pinto', 'Pires',
      'Porto', 'Ramos', 'Rezende', 'Ribeiro', 'Rocha', 'Rodrigues', 'Sales',
      'Santos', 'Silva', 'Silveira', 'Souza', 'Teixeira', 'Viana', 'Vieira'),

    prefixes_female = c('Srta.', 'Sra.', 'Dra.'),
    prefixes_male = c('Sr.', 'Dr.')


  )
)

# company -------------------------------------------------
company_pt_BR = R6Class(
  "company_pt_BR",
  inherit = company_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_pt_BR$new())$.__enclos_env__$private$first_names,
    first_name = (person_pt_BR$new())$first_name,

    last_names = (person_pt_BR$new())$.__enclos_env__$private$last_names,
    last_name = (person_pt_BR$new())$last_name,
    locale = "pt_BR",
    formats = c(
      '{last_name} {company_suffix}',
      '{last_name} {last_name} {company_suffix}',
      '{last_name}',
      '{last_name}'),

    catch_phrase_formats = c(
      '{catch_phrase_noun} {catch_phrase_verb} {catch_phrase_attribute}'),

    nouns = c(
      'a seguran\u00e7a',
      'o prazer',
      'o conforto',
      'a simplicidade',
      'a certeza',
      'a arte',
      'o poder',
      'o direito',
      'a possibilidade',
      'a vantagem',
      'a liberdade'),

    verbs = c(
      'de conseguir',
      'de avan\u00e7ar',
      'de evoluir',
      'de mudar',
      'de inovar',
      'de ganhar',
      'de atingir seus objetivos',
      'de concretizar seus projetos',
      'de realizar seus sonhos'),

    attributes = c(
      'de maneira eficaz',
      'mais rapidamente',
      'mais facilmente',
      'simplesmente',
      'com toda a tranquilidade',
      'antes de tudo',
      'naturalmente',
      'sem preocupa\u00e7\u00e3o',
      'em estado puro',
      'com for\u00e7a total',
      'direto da fonte',
      'com confian\u00e7a'),

    company_suffixes = c('S/A', 'S.A.', 'Ltda.', '- ME', '- EI', 'e Filhos'),

    company_id_checksum = function(digits){
      weights = c(6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2)

      dv = sum(digits * weights[c(2:13)])
      dv = (11 - dv) %% 11
      dv = ifelse(dv >= 10, 0, dv)
      digits = c(digits, dv)

      dv2 = sum(digits * weights)
      dv2 = (11 - dv2) %% 11
      dv2 = ifelse(dv2 >= 10, 0, dv2)
      return(c(dv, dv2))
    }

  ),

  public = list(
    catch_phrase_noun = function(){
      # Returns a random catch phrase noun.
      return(private$random_element(private$nouns))
    },

    catch_phrase_attribute = function(){
      #  Returns a random catch phrase attribute.
      return(private$random_element(private$attributes))
    },

    catch_phrase_verb = function(){
      # Returns a random catch phrase verb.
      return(private$random_element(private$verbs))
    },

    catch_phrase = function(){
      pattern = private$random_element(private$catch_phrase_formats)
      catch_phrase = private$format_parse(pattern)
      catch_phrase = str_to_sentence(catch_phrase, locale = private$locale)
      return(catch_phrase)
    },

    company_id = function(){
      digits = c(sample(seq(0, 9), 8), 0, 0, 0, 1)
      digits = c(digits, private$company_id_checksum(digits))

      return(str_c(digits, collapse = ""))
    },

    cnpj = function(){
      digits = self$company_id()
      spilt = str_split(digits, "")[[1]]

      temp1 = str_c(spilt[1:2], collapse = "")
      temp2 = str_c(spilt[3:5], collapse = "")
      temp3 = str_c(spilt[6:8], collapse = "")
      temp4 = str_c(spilt[9:12], collapse = "")
      temp5 = str_c(spilt[13:14], collapse = "")
      return(str_c(temp1, ".", temp2, ".", temp3, "/",
                   temp4, "-", temp5))
    }
  )
)
# address --------------------------------------
address_pt_BR = R6Class(
  "address_pt_BR",
  inherit = address_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_pt_BR$new())$.__enclos_env__$private$first_names,
    last_names = (person_pt_BR$new())$.__enclos_env__$private$last_names,
    first_name = (person_pt_BR$new())$first_name,
    last_name = (person_pt_BR$new())$last_name,

    city_suffixes = c(
      'do Sul',
      'do Norte',
      'de Minas',
      'do Campo',
      'Grande',
      'da Serra',
      'do Oeste',
      'de Goi\u00e1s',
      'Paulista',
      'da Mata',
      'Alegre',
      'da Praia',
      'das Flores',
      'das Pedras',
      'dos Dourados',
      'do Amparo',
      'do Galho',
      'da Prata',
      'Verde'),

    street_prefixes = c(
      'Aeroporto',
      'Alameda',
      '\u00c1rea',
      'Avenida',
      'Campo',
      'Ch\u00e1cara',
      'Col\u00f4nia',
      'Condom\u00ednio',
      'Conjunto',
      'Distrito',
      'Esplanada',
      'Esta\u00e7\u00e3o',
      'Estrada',
      'Favela',
      'Fazenda',
      'Feira',
      'Jardim',
      'Ladeira',
      'Lago',
      'Lagoa',
      'Largo',
      'Loteamento',
      'Morro',
      'N\u00facleo',
      'Parque',
      'Passarela',
      'P\u00e1tio',
      'Pra\u00e7a',
      'Praia',
      'Quadra',
      'Recanto',
      'Residencial',
      'Rodovia',
      'Rua',
      'Setor',
      'S\u00edtio',
      'Travessa',
      'Trecho',
      'Trevo',
      'Vale',
      'Vereda',
      'Via',
      'Viaduto',
      'Viela',
      'Vila'),

    city_formats = c(
      '{last_name}',
      '{last_name}',
      '{last_name}',
      '{last_name}',
      '{last_name} {city_suffix}',
      '{last_name} {city_suffix}',
      '{last_name} {city_suffix}',
      '{last_name} de {last_name}'),

    street_name_formats = c(
      '{street_prefix} {last_name}',
      '{street_prefix} {first_name} {last_name}',
      '{street_prefix} de {last_name}'),

    street_address_formats = c(
      '{street_name}',
      '{street_name}, {building_number}',
      '{street_name}, {building_number}',
      '{street_name}, {building_number}',
      '{street_name}, {building_number}',
      '{street_name}, {building_number}',
      '{street_name}, {building_number}'),

    address_formats = c(
      "{street_address}\n{bairro}\n{postcode} {city} / {estado_sigla}"),

    building_number_formats = c('%', '%#', '%#', '%#', '%##'),

    postcode_formats = c('########', '#####-###'),

    bairros = c(
      "Aar\u00e3o Reis",
      "Acaba Mundo",
      "Acaiaca",
      "Ademar Maldonado",
      "Aeroporto",
      "Aguas Claras",
      "Al\u00edpio De Melo",
      "Alpes",
      "Alta Tens\u00e3o 1\u00aa Se\u00e7\u00e3o",
      "Alta Tens\u00e3o 2\u00aa Se\u00e7\u00e3o",
      "Alto Cai\u00e7aras",
      "Alto Das Antenas",
      "Alto Dos Pinheiros",
      "Alto Vera Cruz",
      "\u00c1lvaro Camargos",
      "Ambrosina",
      "Andiroba",
      "Antonio Ribeiro De Abreu 1\u00aa Se\u00e7\u00e3o",
      "Aparecida 7\u00aa Se\u00e7\u00e3o",
      "\u00c1pia",
      "Apolonia",
      "Araguaia",
      "Atila De Paiva",
      "Bacurau",
      "Bairro Das Ind\u00fastrias Ii",
      "Baleia",
      "Bar\u00e3o Homem De Melo 1\u00aa Se\u00e7\u00e3o",
      "Bar\u00e3o Homem De Melo 2\u00aa Se\u00e7\u00e3o",
      "Bar\u00e3o Homem De Melo 3\u00aa Se\u00e7\u00e3o",
      "Barreiro",
      "Beija Flor",
      "Beira Linha",
      "Bela Vitoria",
      "Belmonte",
      "Bernadete",
      "Betania",
      "Biquinhas",
      "Boa Esperan\u00e7a",
      "Boa Uni\u00e3o 1\u00aa Se\u00e7\u00e3o",
      "Boa Uni\u00e3o 2\u00aa Se\u00e7\u00e3o",
      "Boa Viagem",
      "Boa Vista",
      "Bom Jesus",
      "Bonfim",
      "Bonsucesso",
      "Brasil Industrial",
      "Bra\u00fanas",
      "Buraco Quente",
      "Cabana Do Pai Tom\u00e1s",
      "Cachoeirinha",
      "Caetano Furquim",
      "Cai\u00e7ara - Adelaide",
      "Calafate",
      "Calif\u00f3rnia",
      "Camargos",
      "Campo Alegre",
      "Camponesa 1\u00aa Se\u00e7\u00e3o",
      "Camponesa 2\u00aa Se\u00e7\u00e3o",
      "Canaa",
      "Canad\u00e1",
      "Candelaria",
      "Capit\u00e3o Eduardo",
      "Cardoso",
      "Casa Branca",
      "Castanheira",
      "Cdi Jatoba",
      "Cenaculo",
      "C\u00e9u Azul",
      "Ch\u00e1cara Leonina",
      "Cidade Jardim Taquaril",
      "Cinquenten\u00e1rio",
      "Col\u00e9gio Batista",
      "Comiteco",
      "Conc\u00f3rdia",
      "C\u00f4nego Pinheiro 1\u00aa Se\u00e7\u00e3o",
      "C\u00f4nego Pinheiro 2\u00aa Se\u00e7\u00e3o",
      "Confisco",
      "Conjunto Bonsucesso",
      "Conjunto Calif\u00f3rnia I",
      "Conjunto Calif\u00f3rnia Ii",
      "Conjunto Capit\u00e3o Eduardo",
      "Conjunto Celso Machado",
      "Conjunto Floramar",
      "Conjunto Jardim Filad\u00e9lfia",
      "Conjunto Jatoba",
      "Conjunto Lagoa",
      "Conjunto Minas Caixa",
      "Conjunto Novo Dom Bosco",
      "Conjunto Paulo Vi",
      "Conjunto Providencia",
      "Conjunto Santa Maria",
      "Conjunto S\u00e3o Francisco De Assis",
      "Conjunto Serra Verde",
      "Conjunto Taquaril",
      "Copacabana",
      "Coqueiros",
      "Corumbiara",
      "Custodinha",
      "Das Industrias I",
      "Delta",
      "Diamante",
      "Distrito Industrial Do Jatoba",
      "Dom Bosco",
      "Dom Cabral",
      "Dom Joaquim",
      "Dom Silverio",
      "Dona Clara",
      "Emba\u00fabas",
      "Engenho Nogueira",
      "Ermelinda",
      "Ernesto Nascimento",
      "Esperan\u00e7a",
      "Estrela",
      "Estrela Do Oriente",
      "Etelvina Carneiro",
      "Europa",
      "Eymard",
      "Fazendinha",
      "Flamengo",
      "Flavio De Oliveira",
      "Flavio Marques Lisboa",
      "Floramar",
      "Frei Leopoldo",
      "Gameleira",
      "Gar\u00e7as",
      "Gl\u00f3ria",
      "Goiania",
      "Gra\u00e7a",
      "Granja De Freitas",
      "Granja Werneck",
      "Grota",
      "Grotinha",
      "Guarani",
      "Guarat\u00e3",
      "Hava\u00ed",
      "Heliopolis",
      "Horto Florestal",
      "Inconfid\u00eancia",
      "Indai\u00e1",
      "Independ\u00eancia",
      "Ipe",
      "Itapoa",
      "Itatiaia",
      "Jaqueline",
      "Jaragu\u00e1",
      "Jardim Alvorada",
      "Jardim Atlantico",
      "Jardim Do Vale",
      "Jardim Dos Comerciarios",
      "Jardim Felicidade",
      "Jardim Guanabara",
      "Jardim Leblon",
      "Jardim Montanh\u00eas",
      "Jardim S\u00e3o Jos\u00e9",
      "Jardim Vitoria",
      "Jardin\u00f3polis",
      "Jatob\u00e1",
      "Jo\u00e3o Alfredo",
      "Jo\u00e3o Paulo Ii",
      "Jonas Veiga",
      "Juliana",
      "Lagoa",
      "Lagoinha",
      "Lagoinha Leblon",
      "Lajedo",
      "Laranjeiras",
      "Leonina",
      "Leticia",
      "Liberdade",
      "Lind\u00e9ia",
      "Lorena",
      "Madre Gertrudes",
      "Madri",
      "Mala E Cuia",
      "Manacas",
      "Mangueiras",
      "Mantiqueira",
      "Maraj\u00f3",
      "Maravilha",
      "Mar\u00e7ola",
      "Maria Goretti",
      "Maria Helena",
      "Maria Tereza",
      "Maria Virg\u00ednia",
      "Mariano De Abreu",
      "Marieta 1\u00aa Se\u00e7\u00e3o",
      "Marieta 2\u00aa Se\u00e7\u00e3o",
      "Marieta 3\u00aa Se\u00e7\u00e3o",
      "Marilandia",
      "Mariquinhas",
      "Marmiteiros",
      "Milionario",
      "Minas Brasil",
      "Minas Caixa",
      "Minaslandia",
      "Mineir\u00e3o",
      "Miramar",
      "Mirante",
      "Mirtes",
      "Monsenhor Messias",
      "Monte Azul",
      "Monte S\u00e3o Jos\u00e9",
      "Morro Dos Macacos",
      "Nazare",
      "Nossa Senhora Aparecida",
      "Nossa Senhora Da Aparecida",
      "Nossa Senhora Da Concei\u00e7\u00e3o",
      "Nossa Senhora De F\u00e1tima",
      "Nossa Senhora Do Ros\u00e1rio",
      "Nova America",
      "Nova Cachoeirinha",
      "Nova Cintra",
      "Nova Esperan\u00e7a",
      "Nova Floresta",
      "Nova Gameleira",
      "Nova Pampulha",
      "Novo Aar\u00e3o Reis",
      "Novo Das Industrias",
      "Novo Gl\u00f3ria",
      "Novo Santa Cecilia",
      "Novo Tupi",
      "Oeste",
      "Olaria",
      "Olhos D\'\u00e1gua",
      "Ouro Minas",
      "Pantanal",
      "Paquet\u00e1",
      "Para\u00edso",
      "Parque S\u00e3o Jos\u00e9",
      "Parque S\u00e3o Pedro",
      "Paulo Vi",
      "Pedreira Padro Lopes",
      "Penha",
      "Petropolis",
      "Pilar",
      "Pindorama",
      "Pindura Saia",
      "Piraja",
      "Piratininga",
      "Pirineus",
      "Pomp\u00e9ia",
      "Pongelupe",
      "Pousada Santo Antonio",
      "Primeiro De Maio",
      "Providencia",
      "Ribeiro De Abreu",
      "Rio Branco",
      "Salgado Filho",
      "Santa Amelia",
      "Santa Branca",
      "Santa Cecilia",
      "Santa Cruz",
      "Santa Helena",
      "Santa In\u00eas",
      "Santa Isabel",
      "Santa Margarida",
      "Santa Maria",
      "Santa Rita",
      "Santa Rita De C\u00e1ssia",
      "Santa Sofia",
      "Santa Terezinha",
      "Santana Do Cafezal",
      "Santo Andr\u00e9",
      "S\u00e3o Benedito",
      "S\u00e3o Bernardo",
      "S\u00e3o Crist\u00f3v\u00e3o",
      "S\u00e3o Dami\u00e3o",
      "S\u00e3o Francisco",
      "S\u00e3o Francisco Das Chagas",
      "S\u00e3o Gabriel",
      "S\u00e3o Geraldo",
      "S\u00e3o Gon\u00e7alo",
      "S\u00e3o Jo\u00e3o",
      "S\u00e3o Jo\u00e3o Batista",
      "S\u00e3o Jorge 1\u00aa Se\u00e7\u00e3o",
      "S\u00e3o Jorge 2\u00aa Se\u00e7\u00e3o",
      "S\u00e3o Jorge 3\u00aa Se\u00e7\u00e3o",
      "S\u00e3o Jos\u00e9",
      "S\u00e3o Marcos",
      "S\u00e3o Paulo",
      "S\u00e3o Salvador",
      "S\u00e3o Sebasti\u00e3o",
      "S\u00e3o Tomaz",
      "S\u00e3o Vicente",
      "Satelite",
      "Saudade",
      "Senhor Dos Passos",
      "Serra Do Curral",
      "Serra Verde",
      "Serrano",
      "Solar Do Barreiro",
      "Solimoes",
      "Sport Club",
      "Suzana",
      "Taquaril",
      "Teixeira Dias",
      "Tiradentes",
      "Tirol",
      "Tres Marias",
      "Trevo",
      "T\u00fanel De Ibirit\u00e9",
      "Tupi A",
      "Tupi B",
      "Uni\u00e3o",
      "Unidas",
      "Universit\u00e1rio",
      "Universo",
      "Urca",
      "Vale Do Jatoba",
      "Varzea Da Palma",
      "Venda Nova",
      "Ventosa",
      "Vera Cruz",
      "Vila Aeroporto",
      "Vila Aeroporto Jaragu\u00e1",
      "Vila Antena",
      "Vila Antena Montanh\u00eas",
      "Vila Atila De Paiva",
      "Vila Bandeirantes",
      "Vila Barragem Santa L\u00facia",
      "Vila Batik",
      "Vila Betania",
      "Vila Boa Vista",
      "Vila Calafate",
      "Vila Calif\u00f3rnia",
      "Vila Canto Do Sabi\u00e1",
      "Vila Cemig",
      "Vila Cloris",
      "Vila Copacabana",
      "Vila Copasa",
      "Vila Coqueiral",
      "Vila Da Amizade",
      "Vila Da \u00e1ria",
      "Vila Da Luz",
      "Vila Da Paz",
      "Vila Das Oliveiras",
      "Vila Do Pombal",
      "Vila Dos Anjos",
      "Vila Ecol\u00f3gica",
      "Vila Engenho Nogueira",
      "Vila Esplanada",
      "Vila Formosa",
      "Vila Fumec",
      "Vila Hava\u00ed",
      "Vila Independencia 1\u00aa Se\u00e7\u00e3o",
      "Vila Independencia 2\u00aa Se\u00e7\u00e3o",
      "Vila Independencia 3\u00aa Se\u00e7\u00e3o",
      "Vila Inestan",
      "Vila Ipiranga",
      "Vila Jardim Alvorada",
      "Vila Jardim Leblon",
      "Vila Jardim S\u00e3o Jos\u00e9",
      "Vila Madre Gertrudes 1\u00aa Se\u00e7\u00e3o",
      "Vila Madre Gertrudes 2\u00aa Se\u00e7\u00e3o",
      "Vila Madre Gertrudes 3\u00aa Se\u00e7\u00e3o",
      "Vila Madre Gertrudes 4\u00aa Se\u00e7\u00e3o",
      "Vila Maloca",
      "Vila Mangueiras",
      "Vila Mantiqueira",
      "Vila Maria",
      "Vila Minaslandia",
      "Vila Nossa Senhora Do Ros\u00e1rio",
      "Vila Nova",
      "Vila Nova Cachoeirinha 1\u00aa Se\u00e7\u00e3o",
      "Vila Nova Cachoeirinha 2\u00aa Se\u00e7\u00e3o",
      "Vila Nova Cachoeirinha 3\u00aa Se\u00e7\u00e3o",
      "Vila Nova Dos Milionarios",
      "Vila Nova Gameleira 1\u00aa Se\u00e7\u00e3o",
      "Vila Nova Gameleira 2\u00aa Se\u00e7\u00e3o",
      "Vila Nova Gameleira 3\u00aa Se\u00e7\u00e3o",
      "Vila Nova Para\u00edso",
      "Vila Novo S\u00e3o Lucas",
      "Vila Oeste",
      "Vila Olhos D\'\u00e1gua",
      "Vila Ouro Minas",
      "Vila Paquet\u00e1",
      "Vila Para\u00edso",
      "Vila Petropolis",
      "Vila Pilar",
      "Vila Pinho",
      "Vila Piratininga",
      "Vila Piratininga Venda Nova",
      "Vila Primeiro De Maio",
      "Vila Puc",
      "Vila Real 1\u00aa Se\u00e7\u00e3o",
      "Vila Real 2\u00aa Se\u00e7\u00e3o",
      "Vila Rica",
      "Vila Santa Monica 1\u00aa Se\u00e7\u00e3o",
      "Vila Santa Monica 2\u00aa Se\u00e7\u00e3o",
      "Vila Santa Rosa",
      "Vila Santo Ant\u00f4nio",
      "Vila Santo Ant\u00f4nio Barroquinha",
      "Vila S\u00e3o Dimas",
      "Vila S\u00e3o Francisco",
      "Vila S\u00e3o Gabriel",
      "Vila S\u00e3o Gabriel Jacui",
      "Vila S\u00e3o Geraldo",
      "Vila S\u00e3o Jo\u00e3o Batista",
      "Vila S\u00e3o Paulo",
      "Vila S\u00e3o Rafael",
      "Vila Sat\u00e9lite",
      "Vila Sesc",
      "Vila Sumar\u00e9",
      "Vila Suzana Primeira Se\u00e7\u00e3o",
      "Vila Suzana Segunda Se\u00e7\u00e3o",
      "Vila Tirol",
      "Vila Trinta E Um De Mar\u00e7o",
      "Vila Uni\u00e3o",
      "Vila Vista Alegre",
      "Virg\u00ednia",
      "Vista Alegre",
      "Vista Do Sol",
      "Vitoria",
      "Vitoria Da Conquista",
      "Xangri-L\u00e1",
      "Xodo-Marize",
      "Zilah Sposito",
      "Outro",
      "Novo S\u00e3o Lucas",
      "Esplanada",
      "Estoril",
      "Novo Ouro Preto",
      "Ouro Preto",
      "Padre Eust\u00e1quio",
      "Palmares",
      "Palmeiras",
      "Vila De S\u00e1",
      "Floresta",
      "Anchieta",
      "Aparecida",
      "Graja\u00fa",
      "Planalto",
      "Bandeirantes",
      "Gutierrez",
      "Jardim Am\u00e9rica",
      "Renascen\u00e7a",
      "Barro Preto",
      "Barroca",
      "Sagrada Fam\u00edlia",
      "Ipiranga",
      "Belvedere",
      "Santa Efig\u00eania",
      "Santa L\u00facia",
      "Santa Monica",
      "Vila Jardim Montanhes",
      "Santa Rosa",
      "Santa Tereza",
      "Buritis",
      "Vila Paris",
      "Santo Agostinho",
      "Santo Ant\u00f4nio",
      "Cai\u00e7aras",
      "S\u00e3o Bento",
      "Prado",
      "Lourdes",
      "Fern\u00e3o Dias",
      "Carlos Prates",
      "Carmo",
      "Luxemburgo",
      "S\u00e3o Lucas",
      "S\u00e3o Luiz",
      "Mangabeiras",
      "S\u00e3o Pedro",
      "Horto",
      "Cidade Jardim",
      "Castelo",
      "Cidade Nova",
      "Savassi",
      "Serra",
      "Silveira",
      "Sion",
      "Centro",
      "Alto Barroca",
      "Nova Vista",
      "Cora\u00e7\u00e3o De Jesus",
      "Cora\u00e7\u00e3o Eucar\u00edstico",
      "Funcion\u00e1rios",
      "Cruzeiro",
      "Jo\u00e3o Pinheiro",
      "Nova Granada",
      "Nova Su\u00ed\u00e7a",
      "Itaipu"
    ),

    countries = c(
      "Afeganist\u00e3o",
      "\u00e1frica do Sul",
      "Akrotiri",
      "Albania",
      "Alemanha",
      "Andorra",
      "Angola",
      "Anguila",
      "Ant\u00e1rtica",
      "Ant\u00edgua e Barbuda",
      "Antilhas Holandesas",
      "Ar\u00e1bia Saudita",
      "Arg\u00e9lia",
      "Argentina",
      "Arm\u00eania",
      "Aruba",
      "Ashmore and Cartier Islands",
      "Austr\u00e1lia",
      "\u00e1ustria",
      "Azerbaij\u00e3o",
      "Bahamas",
      "Bangladesh",
      "Barbados",
      "Barein",
      "B\u00e9lgica",
      "Belize",
      "Benim",
      "Bermudas",
      "Bielorr\u00fassia",
      "Birmania",
      "Bol\u00edvia",
      "B\u00f3snia e Herzegovina",
      "Botsuana",
      "Brasil",
      "Brunei",
      "Bulg\u00e1ria",
      "Burquina Faso",
      "Burundi",
      "But\u00e3o",
      "Cabo Verde",
      "Camar\u00f5es",
      "Camboja",
      "Canad\u00e1",
      "Catar",
      "Cazaquist\u00e3o",
      "Chade",
      "Chile",
      "China",
      "Chipre",
      "Clipperton Island",
      "Col\u00f4mbia",
      "Comores",
      "Congo-Brazzaville",
      "Congo-Kinshasa",
      "Coral Sea Islands",
      "Coreia do Norte",
      "Coreia do Sul",
      "Costa do Marfim",
      "Costa Rica",
      "Cro\u00e1cia",
      "Cuba",
      "Dhekelia",
      "Dinamarca",
      "Dom\u00ednica",
      "Egito",
      "Costa do Marfim",
      "Costa Rica",
      "Cro\u00e1cia",
      "Cuba",
      "Dhekelia",
      "Dinamarca",
      "Dom\u00ednica",
      "Egito",
      "Emirados \u00e1rabes Unidos",
      "Equador",
      "Eritreia",
      "Eslov\u00e1quia",
      "Eslov\u00eania",
      "Espanha",
      "Estados Unidos",
      "Est\u00f4nia",
      "Eti\u00f3pia",
      "Faro\u00e9",
      "Fiji",
      "Filipinas",
      "Finlandia",
      "Fran\u00e7a",
      "Gab\u00e3o",
      "Gambia",
      "Gana",
      "Ge\u00f3rgia",
      "Ge\u00f3rgia do Sul e Sandwich do Sul",
      "Gibraltar",
      "Granada",
      "Gr\u00e9cia",
      "Gronelandia",
      "Guam",
      "Guatemala",
      "Guernsey",
      "Guiana",
      "Guin\u00e9",
      "Guin\u00e9 Equatorial",
      "Guin\u00e9-Bissau",
      "Haiti",
      "Honduras",
      "Hong Kong",
      "Hungria",
      "I\u00eamen",
      "Ilha Bouvet",
      "Ilha do Natal",
      "Ilha Norfolk",
      "Ilhas Caiman",
      "Ilhas Cook",
      "Ilhas dos Cocos",
      "Ilhas Falkland",
      "Ilhas Heard e McDonald",
      "Ilhas Marshall",
      "Ilhas Salom\u00e3o",
      "Ilhas Turcas e Caicos",
      "Ilhas Virgens Americanas",
      "Ilhas Virgens Britanicas",
      "\u00edndia",
      "Indon\u00e9sia",
      "Iran",
      "Iraque",
      "Irlanda",
      "Islandia",
      "Israel",
      "It\u00e1lia",
      "Jamaica",
      "Jan Mayen",
      "Jap\u00e3o",
      "Jersey",
      "Jibuti",
      "Jordania",
      "Kuwait",
      "Laos",
      "Lesoto",
      "Let\u00f4nia",
      "L\u00edbano",
      "Lib\u00e9ria",
      "L\u00edbia",
      "Liechtenstein",
      "Lituania",
      "Luxemburgo",
      "Macau",
      "Maced\u00f4nia",
      "Madag\u00e1scar",
      "Mal\u00e1sia",
      "Mal\u00e1vi",
      "Maldivas",
      "Mali",
      "Malta",
      "Man, Isle of",
      "Marianas do Norte",
      "Marrocos",
      "Maur\u00edcia",
      "Mauritania",
      "Mayotte",
      "M\u00e9xico",
      "Micron\u00e9sia",
      "Mo\u00e7ambique",
      "Mold\u00e1via",
      "M\u00f4naco",
      "Mong\u00f3lia",
      "Monserrate",
      "Montenegro",
      "Nam\u00edbia",
      "Nauru",
      "Navassa Island",
      "Nepal",
      "Nicar\u00e1gua",
      "N\u00edger",
      "Nig\u00e9ria",
      "Niue",
      "Noruega",
      "Nova Caled\u00f3nia",
      "Nova Zelandia",
      "Om\u00e3",
      "Pa\u00edses Baixos",
      "Palau",
      "Panam\u00e1",
      "Papua-Nova Guin\u00e9",
      "Paquist\u00e3o",
      "Paracel Islands",
      "Paraguai",
      "Peru",
      "Pitcairn",
      "Polin\u00e9sia Francesa",
      "Pol\u00f4nia",
      "Porto Rico",
      "Portugal",
      "Qu\u00eania",
      "Quirguizist\u00e3o",
      "Quirib\u00e1ti",
      "Reino Unido",
      "Rep\u00fablica Centro-Africana",
      "Rep\u00fablica Checa",
      "Rep\u00fablica Dominicana",
      "Rom\u00e9nia",
      "Ruanda",
      "R\u00fassia",
      "Salvador",
      "Samoa",
      "Samoa Americana",
      "Santa Helena",
      "Santa L\u00facia",
      "S\u00e3o Crist\u00f3v\u00e3o e Neves",
      "S\u00e3o Marinho",
      "S\u00e3o Pedro e Miquelon",
      "S\u00e3o Tom\u00e9 e Pr\u00edncipe",
      "S\u00e3o Vicente e Granadinas",
      "Sara Ocidental",
      "Seicheles",
      "Senegal",
      "Serra Leoa",
      "S\u00e9rvia",
      "Singapura",
      "S\u00edria",
      "Som\u00e1lia",
      "Sri Lanka",
      "Suazilandia",
      "Sud\u00e3o",
      "Su\u00e9cia",
      "Su\u00ed\u00e7a",
      "Suriname",
      "Svalbard e Jan Mayen",
      "Tailandia",
      "Taiwan",
      "Tajiquist\u00e3o",
      "Tanzania",
      "Territ\u00f3rio Britanico do Oceano \u00edndico",
      "Territ\u00f3rios Austrais Franceses",
      "Timor Leste",
      "Togo",
      "Tokelau",
      "Tonga",
      "Trindade e Tobago",
      "Tun\u00edsia",
      "Turquemenist\u00e3o",
      "Turquia",
      "Tuvalu",
      "Ucrania",
      "Uganda",
      "Uni\u00e3o Europeia",
      "Uruguai",
      "Usbequist\u00e3o",
      "Vanuatu",
      "Vaticano",
      "Venezuela",
      "Vietnam",
      "Wake Island",
      "Wallis e Futuna",
      "Zambia",
      "Zimbabu\u00e9"
    ),

    estados = c(
      "AC" = "Acre",
      "AL" = "Alagoas",
      "AP" = "Amap\u00e1",
      "AM" = "Amazonas",
      "BA" = "Bahia",
      "CE" = "Cear\u00e1",
      "DF" = "Distrito Federal",
      "ES" = "Esp\u00edrito Santo",
      "GO" = "Goi\u00e1s",
      "MA" = "Maranh\u00e3o",
      "MT" = "Mato Grosso",
      "MS" = "Mato Grosso do Sul",
      "MG" = "Minas Gerais",
      "PA" = "Par\u00e1",
      "PB" = "Para\u00edba",
      "PR" = "Paran\u00e1",
      "PE" = "Pernambuco",
      "PI" = "Piau\u00ed",
      "RJ" = "Rio de Janeiro",
      "RN" = "Rio Grande do Norte",
      "RS" = "Rio Grande do Sul",
      "RO" = "Rond\u00f4nia",
      "RR" = "Roraima",
      "SC" = "Santa Catarina",
      "SP" = "S\u00e3o Paulo",
      "SE" = "Sergipe",
      "TO" = "Tocantins"
    )

  ),

  public = list(
    street_prefix = function() {
      return(private$random_element(private$street_prefixes))
    },

    estado_sigla = function() {
      return(private$random_element(names(private$estados)))
    },

    estado_nome = function(){
      return(private$random_element(unname(private$estados)))
    },

    estado = function(){
      esigla = self$estado_sigla()
      return(c(esigla, unname(private$estados[esigla])))
    },

    bairro = function(){
      return(private$random_element(private$bairros))
    },

    # aliases
    neighborhood = function(){
      return(self$bairro())
    },

    state = function(){
      return(self$estado_nome())
    },

    state_abbr = function(){
      return(self$estado_sigla())
    }

  )
)

# internet -----------------------------------------------
internet_pt_BR = R6Class(
  "internet_pt_BR",
  inherit = internet_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_pt_BR$new())$.__enclos_env__$private$first_names,
    last_names = (person_pt_BR$new())$.__enclos_env__$private$last_names,
    first_name = (person_pt_BR$new())$first_name,
    last_name = (person_pt_BR$new())$last_name,
    safe_email_tlds = c('com', 'net', 'br', 'br'),
    free_email_domains = c(
      'gmail.com',
      'hotmail.com',
      'yahoo.com.br',
      'uol.com.br',
      'bol.com.br',
      'ig.com.br'),
    tlds = c('com', 'com', 'com', 'net', 'org', 'br', 'br', 'br'),
    replacements = list(
      c("\u00e0","a"),
      c("\u00e2","a"),
      c("\u00e3","a"),
      c("\u00e7","c"),
      c("\u00e9","e"),
      c("\u00ea","e"),
      c("\u00ed","i"),
      c("\u00f3","o"),
      c("\u00f4","o"),
      c("\u00f6","o"),
      c("\u00f5","o"),
      c("\u00fa","u")
    )
  ),
  public = list(
    domain_word = function() {
      company = (company_pt_BR$new())$company()
      company_elements = str_split(company, " ")[[1]]
      company = private$to_ascii(company_elements[1])
      return(private$slugify(company, allow_unicode = TRUE))
    }
  )
)
# job ----------------------------------------------------
job_pt_BR = R6Class(
  "job_pt_BR",
  inherit = job_init,
  cloneable = FALSE,
  private = list(
    jobs = c(
      "Acompanhante",
      "A\u00e7ougueiro",
      "Acupunturista",
      "Adestrador de animais",
      "Administrador",
      "Administrador de banco de dados DBA",
      "Administrador de redes",
      "Administrador p\u00fablico",
      "Advogado",
      "Aeromo\u00e7a",
      "Aeronauta",
      "Aerovi\u00e1rio",
      "Afiador de ferramentas",
      "Agente comunit\u00e1rio de sa\u00fade",
      "Agente de combate \u00e0 endemias",
      "Agente de defesa sanit\u00e1ria",
      "Agente de defesa sanit\u00e1ria animal",
      "Agente de viagens",
      "Agente funer\u00e1rio",
      "Agente penitenci\u00e1rio",
      "Agricultor",
      "Agrimensor",
      "Agr\u00f4nomo",
      "Ajudante de produ\u00e7\u00e3o",
      "Alergologista",
      "Alfaiate",
      "Almirante",
      "Almoxarife",
      "Alpinista",
      "Ambientalista",
      "Ambulante",
      "Amolador de ferramentas",
      "Analista de sistemas",
      "Anestesiologista",
      "Angiologista",
      "Antrop\u00f3logo",
      "Apicultor",
      "Apontador de m\u00e3o-de-obra",
      "Apresentador",
      "\u00c1rbitro e mediador",
      "Argumentista",
      "Armador",
      "Armeiro",
      "Arque\u00f3logo",
      "Arquiteto",
      "Arquivista",
      "Arranjador musical",
      "Arrumadeira",
      "Artes\u00e3o",
      "Artista de circo",
      "Artista pl\u00e1stico",
      "Artista/T\u00e9cnico em espet\u00e1culos de divers\u00f5es",
      "Ascensorista",
      "Assessor de imprensa",
      "Assessor parlamentar",
      "Assistente administrativo",
      "Assistente de camera",
      "Assistente de dire\u00e7\u00e3o",
      "Assistente de produ\u00e7\u00e3o",
      "Assistente social",
      "Astrof\u00edsico",
      "Astr\u00f3logo",
      "Astronauta",
      "Astr\u00f4nomo",
      "Atendente",
      "Atleta de arremesso de peso",
      "Atleta de canoagem",
      "Atleta de nado sincronizado",
      "Atleta de tiro com arco",
      "Ator",
      "Atu\u00e1rio",
      "Auditor",
      "Auxiliar administrativo",
      "Auxiliar de reprografia",
      "Auxiliar de servi\u00e7os gerais",
      "Avalista",
      "Aviador",
      "Bab\u00e1",
      "Babysitter",
      "Bailarina",
      "Baixista",
      "Balconista",
      "Banc\u00e1rio",
      "Barbeiro",
      "Barman",
      "Bartender",
      "Baterista",
      "Bedel",
      "Ber\u00e7arista",
      "Bibliotec\u00e1rio",
      "Biblioteconomista",
      "Bi\u00f3logo",
      "Biom\u00e9dico",
      "Bioqu\u00edmico",
      "Biotecn\u00f3logo",
      "B\u00f3ia-fria",
      "Bombeiro",
      "Borracheiro",
      "Botic\u00e1rio",
      "Boxeador",
      "Brigadeiro",
      "Broker/Corretor da bolsa de valores",
      "Cabeleireiro",
      "Cabo",
      "Ca\u00e7a-talentos/Olheiro",
      "Cadeirinha",
      "Cadista",
      "Caixa",
      "Caldeireiro",
      "Cambista",
      "Camel\u00f4",
      "Cameraman",
      "Caminhoneiro",
      "Cancerologista ou Oncologista",
      "Cantor",
      "Capataz",
      "Capel\u00e3o",
      "Capit\u00e3o",
      "Capoeirista",
      "Cardiologista",
      "Carnavalesco",
      "Carpinteiro",
      "Cartazeiro",
      "Carteiro",
      "Cart\u00f3grafo",
      "Cartunista",
      "Catador de carangueijos",
      "Catador de material recicl\u00e1vel",
      "Cen\u00f3grafo",
      "Cenot\u00e9cnico",
      "Ceramista",
      "Cerimonialista",
      "Chapeiro",
      "Chargista",
      "Chaveiro",
      "Chefe de cozinha",
      "Ciclista",
      "Cientista",
      "Cientista da informa\u00e7\u00e3o e documenta\u00e7\u00e3o",
      "Cientista de alimentos",
      "Cientista pol\u00edtico",
      "Cientista social",
      "Cineasta",
      "Cinegrafista",
      "Cinematogr\u00e1fo",
      "Cirurgi\u00e3o bucal",
      "Cirurgi\u00e3o dentista",
      "Clap loader",
      "Clarinetista",
      "Classificador cont\u00e1bil",
      "Cl\u00ednico geral",
      "Co-piloto",
      "Coach",
      "Cobaia M\u00e9dica",
      "Cobrador de \u00f4nibus",
      "Cobrador de ped\u00e1gio",
      "Coloproctologista",
      "Comandante",
      "Comerciante",
      "Comiss\u00e1rio de bordo",
      "Compositor",
      "Comprador",
      "Confeiteiro",
      "Conferente de carga e descarga",
      "Conferente de expedi\u00e7\u00e3o",
      "Conferente de recebimento",
      "Construtor",
      "Consultor",
      "Consultor de moda",
      "Consultor de radiestesia",
      "Cont\u00e1bil",
      "Contabilista",
      "Contador",
      "Contat\u00f3logo",
      "Continuista",
      "Contra regra",
      "Contramestre em transporte mar\u00edtimo",
      "Controlador de v\u00f4o",
      "Controller",
      "Coordenador",
      "Copeiro",
      "Core\u00f3grafo",
      "Coronel",
      "Corredor de atletismo",
      "Corregedor de justi\u00e7a",
      "Corretor da bolsa de valores",
      "Corretor de im\u00f3veis",
      "Corretor de seguros",
      "Cortador de cana-de-a\u00e7ucar",
      "Costureira",
      "Coveiro/Sepultador",
      "Cozinheira",
      "Cr\u00edtico",
      "Cumim",
      "Dan\u00e7arino",
      "Datil\u00f3grafo",
      "Dedetizador",
      "Defensor P\u00fablico",
      "Degustador",
      "Delegado",
      "Dentista",
      "Deputado",
      "Dermatologista",
      "Desembargador de justi\u00e7a",
      "Desenhista",
      "Designer de interiores",
      "Designer de j\u00f3ia",
      "Designer de moda",
      "Designer de produto ou desenhista industrial",
      "Designer gr\u00e1fico",
      "Despachante",
      "Diagramador",
      "Dialoguista",
      "Diarista",
      "Digitador",
      "Diplomata",
      "Diretor de cinema",
      "Diretor de fotografia",
      "Diretor de produ\u00e7\u00e3o",
      "DJ",
      "Dogueiro",
      "Dublador",
      "Dubl\u00ea",
      "Ec\u00f3logo",
      "Economista",
      "Economista dom\u00e9stico",
      "Editor",
      "Editor de mesa de corte",
      "Educador",
      "Educador integrado \u00e0 sa\u00fade p\u00fablica",
      "Eletricista",
      "Eletricista de autom\u00f3veis",
      "Embaixador",
      "Embalador",
      "Embalsamador",
      "Empacotador",
      "Empregado dom\u00e9stico",
      "Empres\u00e1rio",
      "Encanador",
      "Encarregado de manuten\u00e7\u00e3o predial",
      "Endocrinologista",
      "Endodontista",
      "Enfermeiro",
      "Engenheiro ac\u00fastico",
      "Engenheiro aeron\u00e1utico",
      "Engenheiro agr\u00edcola",
      "Engenheiro agrimensor",
      "Engenheiro agr\u00f4nomo",
      "Engenheiro ambiental",
      "Engenheiro cartogr\u00e1fico",
      "Engenheiro civil",
      "Engenheiro de alimentos",
      "Engenheiro de aquicultura",
      "Engenheiro de computa\u00e7\u00e3o",
      "Engenheiro de controle e automa\u00e7\u00e3o",
      "Engenheiro de energia",
      "Engenheiro de ergonomia",
      "Engenheiro de horticultura",
      "Engenheiro de ilumina\u00e7\u00e3o",
      "Engenheiro de manufatura",
      "Engenheiro de materiais",
      "Engenheiro de minas",
      "Engenheiro de petr\u00f3leo",
      "Engenheiro de processos",
      "Engenheiro de produ\u00e7\u00e3o agroindustrial",
      "Engenheiro de produto ou produ\u00e7\u00e3o",
      "Engenheiro de projetos",
      "Engenheiro de seguran\u00e7a do trabalho",
      "Engenheiro de som",
      "Engenheiro de supply chain ou log\u00edstica",
      "Engenheiro de telecomunica\u00e7\u00f5es",
      "Engenheiro de transportes",
      "Engenheiro el\u00e9trico",
      "Engenheiro f\u00edsico",
      "Engenheiro florestal",
      "Engenheiro industrial",
      "Engenheiro mecanico",
      "Engenheiro mecatr\u00f4nico",
      "Engenheiro metal\u00fargico",
      "Engenheiro naval",
      "Engenheiro petroqu\u00edmico",
      "Engenheiro qu\u00edmico",
      "Engenheiro sanitarista",
      "Engenheiro t\u00eaxtil",
      "Engraxate",
      "En\u00f3logo",
      "Entalhador",
      "Epidemi\u00f3logo",
      "Escoteiro",
      "Escritor",
      "Escritur\u00e1rio",
      "Escriv\u00e3o",
      "Escultor",
      "Esgrimista",
      "Especialista em agroneg\u00f3cios",
      "Espeleologista",
      "Estampador de tecidos",
      "Estat\u00edstico",
      "Esteticista",
      "Estilista",
      "Estivador",
      "Estofador",
      "Estoquista",
      "Farmac\u00eautico",
      "Faturista",
      "Faxineiro",
      "Feirante",
      "Ferramenteiro",
      "Ferreiro",
      "Ferrovi\u00e1rio",
      "Figurante",
      "Figurinista",
      "Fil\u00f3sofo",
      "Fiscal",
      "F\u00edsico",
      "F\u00edsico nuclear",
      "Fisiculturista",
      "Fisioterapeuta",
      "Flanelinha",
      "Flautista",
      "Florista",
      "Fonoaudi\u00f3logo",
      "Forneiro",
      "Fot\u00f3grafo",
      "Frentista",
      "Fresador",
      "Fundidor",
      "Fundidor de placa de gesso",
      "Funileiro",
      "Gagsman",
      "Gandula",
      "Gar\u00e7om",
      "Gari",
      "Garimpeiro",
      "Gastroenterologista",
      "Gastr\u00f4nomo",
      "General",
      "Geof\u00edsico",
      "Ge\u00f3grafo",
      "Ge\u00f3logo",
      "Geradorista",
      "Gerente de banco",
      "Gerente de inova\u00e7\u00f5es ou novos neg\u00f3cios",
      "Gerente de riscos em seguros",
      "Gerente de vendas",
      "Geriatra",
      "Gestor ambiental",
      "Gestor de qualidade",
      "Gestor de recursos humanos",
      "Gestor de tecnologia da informa\u00e7\u00e3o",
      "Gestor p\u00fablico",
      "Ginasta art\u00edstica",
      "Ginasta r\u00edtmica",
      "Ginecologista",
      "Gourmet",
      "Governador",
      "Governanta",
      "Grafologista",
      "Gravurista",
      "Guarda ou policial rodovi\u00e1rio",
      "Guarda roupeiro",
      "Guardador de ve\u00edculos",
      "Guia turistico",
      "Guincheiro",
      "Guitarrista",
      "Harpista",
      "Headhunter",
      "Hematologista",
      "Historiador",
      "Homeopata",
      "Hostess",
      "Ilustrador",
      "Implantodontista",
      "Impressor",
      "Imunologista",
      "Infectologista",
      "Inspetor",
      "Instalador de linha telef\u00f4nica",
      "Instalador de pain\u00e9is",
      "Instrumentador cir\u00fargico",
      "Instrumentista musical",
      "Instrutor",
      "Int\u00e9rprete",
      "Int\u00e9rprete de B\u00edblias",
      "Int\u00e9rprete e tradutor de l\u00edngua de sinais",
      "Investigador de Pol\u00edcia",
      "Investigador particular",
      "Jangadeiro",
      "Jardineiro",
      "Jogador de badminton",
      "Jogador de basquete",
      "Jogador de bocha",
      "Jogador de boliche",
      "Jogador de futebol",
      "Jogador de golfe",
      "Jogador de handebol",
      "Jogador de h\u00f3quei",
      "Jogador de t\u00eanis de mesa",
      "Jogador de v\u00f4lei",
      "J\u00f3quei",
      "Jornaleiro",
      "Jornalista",
      "Judoca",
      "Juiz de direito",
      "Juiz de futebol",
      "Juiz ou \u00e1rbitro de futebol",
      "Karateca",
      "Kite-surfer",
      "Laboratorista",
      "Lactarista hospitalar",
      "Lamboteiro",
      "Lancheiro",
      "Lanterneiro",
      "Lapid\u00e1rio",
      "Lavador",
      "Lavador de ve\u00edculos",
      "Le\u00e3o de ch\u00e1cara",
      "Leiloeiro",
      "Leiteiro",
      "Lenhador",
      "Letrista",
      "Levantador de peso",
      "L\u00edder comunit\u00e1rio",
      "Limpador de vidros",
      "Lixeiro/Coletor de lixo",
      "Locutor",
      "Lubrificador de m\u00e1quinas",
      "Lutador de jiu-jitsu",
      "Lutador de karat\u00ea",
      "Lutador de kung fu",
      "Lutador de luta livre",
      "Lutador de taekwondo",
      "Luthier",
      "M\u00e3e social",
      "Maestro",
      "M\u00e1gico",
      "Maitre",
      "Major",
      "Manicure",
      "Manobrista",
      "Maquiador",
      "Maquinista",
      "Marcador de luz",
      "Marceneiro",
      "Marechal",
      "Marinheiro",
      "Marketeiro",
      "Massagista",
      "Massoterapeuta",
      "Matem\u00e1tico",
      "Mecanico",
      "Mecanico de v\u00f4o",
      "Mecan\u00f3grafo",
      "M\u00e9dico",
      "M\u00e9dico cirurgi\u00e3o",
      "M\u00e9dico geneticista",
      "M\u00e9dico legista",
      "M\u00e9dico nuclear",
      "Meeiro",
      "Mensageiro",
      "Meredeira",
      "Mergulhador",
      "Mestre cervejeiro",
      "Mestre-de-obras",
      "Metal\u00fargico",
      "Meteorologista",
      "Microfonista",
      "Militar da Aeron\u00e1utica",
      "Militar da Marinha",
      "Militar do Ex\u00e9rcito",
      "Ministro",
      "Modelista",
      "Modelo",
      "Moldador",
      "Moldureiro",
      "Moleiro",
      "Montador",
      "Montador de negativos",
      "Motofrete",
      "Motorista",
      "Mototaxista",
      "Muse\u00f3logo",
      "M\u00fasico",
      "Musicoterapeuta",
      "Nadador",
      "Natur\u00f3logo",
      "Navegador",
      "Necromaquiador",
      "Nefrologista",
      "Neonatologista",
      "Neurocirurgi\u00e3o",
      "Neurologista",
      "Not\u00e1rio",
      "Numer\u00f3logo",
      "Nutricionista",
      "Nutrologista",
      "Obstetra",
      "Ocean\u00f3grafo",
      "Oculista",
      "Odontologista est\u00e9tico",
      "Odontologista legal",
      "Odontologista preventivo e social",
      "Odontopediatra",
      "Office-boy",
      "Oficial de justi\u00e7a",
      "Oftalmologista",
      "Ombudsman",
      "Operador de bombas",
      "Operador de telemarketing",
      "Operador de v\u00eddeo",
      "Optometrista",
      "Or\u00e7amentista",
      "Orientador educacional",
      "Ortesista",
      "Ortodontista",
      "Ortopedista",
      "Ortoptista",
      "Otorrinolaringologista",
      "Ourives",
      "Paginador",
      "Paisagista",
      "Panfleteiro",
      "Panificador/Padeiro",
      "Paparazzo",
      "Papiloscopista",
      "P\u00e1ra-quedista",
      "Param\u00e9dico",
      "Parteira tradicional",
      "Passador",
      "Pastilheiro",
      "Patinador",
      "Patologista",
      "Patologista oral",
      "Pe\u00e3o de rodeiro",
      "Pecuarista",
      "Pedagogo",
      "Pediatra",
      "Pedicure",
      "Pedreiro",
      "Peixeiro",
      "Penhorista",
      "Percursionista",
      "Perfumista",
      "Perfusionista",
      "Perito criminal",
      "Perito judicial",
      "Personal stylist",
      "Personal trainer",
      "Pescador",
      "Pesquisador",
      "Petroleiro",
      "Pianista",
      "Piloto automobil\u00edstico",
      "Piloto de avi\u00e3o",
      "Pintor",
      "Pizzaiolo",
      "Plastimodelista",
      "Pneumologista",
      "Pod\u00f3logo",
      "Policial civil",
      "Policial federal",
      "Policial militar",
      "Polidor de produ\u00e7\u00e3o",
      "Pol\u00edtico",
      "Porteiro",
      "Portu\u00e1rio",
      "Pr\u00e1tico",
      "Prefeito",
      "Prensista",
      "Preparador de m\u00e1quinas",
      "Presidente da Rep\u00fablica",
      "Procurador de justi\u00e7a",
      "Produtor de audio visual",
      "Produtor de eventos",
      "Produtor de multim\u00eddia",
      "Produtor editorial",
      "Produtor fonogr\u00e1fico",
      "Produtor musical",
      "Professor",
      "Profissional de \u00e1udio",
      "Profissional de cinema",
      "Profissional de com\u00e9rcio exterior",
      "Profissional de educa\u00e7\u00e3o f\u00edsica",
      "Profissional de efeitos especiais",
      "Profissional de hotelaria",
      "Profissional de inform\u00e1tica",
      "Profissional de lingu\u00edstica",
      "Profissional de log\u00edstica",
      "Profissional de manuten\u00e7\u00e3o industrial",
      "Profissional de marketing",
      "Profissional de r\u00e1dio e tv",
      "Profissional de reciclagem",
      "Profissional de recursos humanos",
      "Profissional de relacionamento com investidores RI",
      "Profissional de rela\u00e7\u00f5es internacionais",
      "Profissional de rela\u00e7\u00f5es p\u00fablicas",
      "Profissional de tecnologia de latic\u00ednios",
      "Programador",
      "Projetista mecanico",
      "Promotor de eventos",
      "Promotor de vendas",
      "Promotor p\u00fablico/de justi\u00e7a",
      "Protesista",
      "Prot\u00e9tico dent\u00e1rio",
      "Psic\u00f3logo",
      "Psicomotricista",
      "Psicopedagogo",
      "Psiquiatra",
      "Publicit\u00e1rio",
      "Quadrinista",
      "Qu\u00edmico",
      "Qu\u00edmico farmac\u00eautico",
      "Quiropraxista",
      "Quitandeiro",
      "Radialista",
      "Radialista programador",
      "Radiologista",
      "Radiooperador de v\u00f4o",
      "Radioterap\u00eautico",
      "Rebarbador de metal",
      "Recepcionista",
      "Recreador",
      "Redator",
      "Regente",
      "Rela\u00e7\u00f5es p\u00fablicas",
      "Remador",
      "Rep\u00f3rter",
      "Repositor",
      "Representante comercial",
      "Restaurador",
      "Retificador",
      "Reumatologista",
      "Revendedor",
      "Revisor",
      "Roteirista",
      "Sacoleira",
      "Salgadeira",
      "Salva-vidas",
      "Sapateiro",
      "Sargento",
      "Saxofonista",
      "Secret\u00e1ria",
      "Seguidor de compras",
      "Seguran\u00e7a particular",
      "Selecionador de pessoal",
      "Senador",
      "Separador",
      "Seringueiro",
      "Serralheiro",
      "Servente-de-obras",
      "Serventu\u00e1rio",
      "Sex\u00f3logo",
      "S\u00edndico",
      "Skatista",
      "Soci\u00f3logo",
      "Soldado",
      "Soldador",
      "Somelier",
      "Sonoplasta",
      "Subprefeito",
      "Supervisor",
      "Surfista",
      "Sushiman",
      "Tabeli\u00e3o",
      "Taifeiro",
      "Tapeceiro",
      "Tatuador",
      "Taxidermista/Embalsamador",
      "Taxista",
      "Tecel\u00e3o",
      "T\u00e9cnico de gesso",
      "T\u00e9cnico de som",
      "T\u00e9cnico em agropecu\u00e1ria",
      "T\u00e9cnico em arquivo",
      "T\u00e9cnico em avia\u00e7\u00e3o",
      "T\u00e9cnico em desporto",
      "T\u00e9cnico em documenta\u00e7\u00e3o",
      "T\u00e9cnico em edifica\u00e7\u00f5es",
      "T\u00e9cnico em hardware",
      "T\u00e9cnico em higiene dent\u00e1ria",
      "T\u00e9cnico em \u00f3ptica",
      "T\u00e9cnico em radiologia",
      "T\u00e9cnico em rede",
      "T\u00e9cnico em seguran\u00e7a do trabalho",
      "T\u00e9cnico em taquigrafia",
      "T\u00e9cnico em tratamento de \u00e1gua",
      "T\u00e9cnico tributarista",
      "Tecn\u00f3logo em automa\u00e7\u00e3o industrial",
      "Tecn\u00f3logo em Ci\u00eancias das plantas medicinais",
      "Tecn\u00f3logo em desenvolvimento social",
      "Tecn\u00f3logo em esporte e lazer",
      "Tecn\u00f3logo em geoprocessamento",
      "Tecn\u00f3logo em irriga\u00e7\u00e3o e drenagem",
      "Tecn\u00f3logo em jogos digitais",
      "Tecn\u00f3logo em navega\u00e7\u00e3o fluvial",
      "Tecn\u00f3logo em neg\u00f3cios imobili\u00e1rios",
      "Tecn\u00f3logo em papel e celulose",
      "Tecn\u00f3logo em processos qu\u00edmicos",
      "Tecn\u00f3logo em produ\u00e7\u00e3o de bebidas",
      "Tecn\u00f3logo em produ\u00e7\u00e3o moveleira",
      "Tecn\u00f3logo em produ\u00e7\u00e3o Sucroalcooleira",
      "Tecn\u00f3logo em recursos pesqueiros",
      "Tecn\u00f3logo em rochas ornamentais",
      "Tecn\u00f3logo em silvicultura",
      "Tecn\u00f3logo em tecnologia da madeira",
      "Telefonista",
      "Telegrafista",
      "Tenente",
      "Tenista",
      "Te\u00f3logo",
      "Terapeuta floral",
      "Terapeuta Hol\u00edstico",
      "Terapeuta ocupacional",
      "Tesoureiro",
      "Timoneiro",
      "Tintureiro",
      "Top\u00f3grafo",
      "Torneiro mecanico",
      "Torreiro/Torrista",
      "Tosador",
      "Toxicologista",
      "Tradutor",
      "Transcritor",
      "Transportador",
      "Traumatologista",
      "Treinador",
      "Triatleta",
      "Trilheiro ou m\u00fasico de cinema",
      "Trompetista",
      "Turism\u00f3logo",
      "Uf\u00f3logo",
      "Urbanista",
      "Urologista",
      "Velejador",
      "Vendedor",
      "Ventr\u00edloquo",
      "Vereador",
      "Veterin\u00e1rio",
      "Vigia parlamentar",
      "Vigilante noturno/diurno",
      "Violonista",
      "Vistoriador de sinistros",
      "Viveirista",
      "Webdesigner",
      "Webmaster",
      "Windsurfer",
      "Xil\u00f3grafo",
      "Zelador",
      "Zootecnista"
    )
  )
)

# phone_number -----------------------------------------
phone_number_pt_BR = R6Class(
  "phone_number_pt_BR",
  inherit = phone_number_init,
  cloneable = FALSE,
  private = list(
    formats = c(
      '+55 (011) #### ####',
      '+55 (021) #### ####',
      '+55 (031) #### ####',
      '+55 (041) #### ####',
      '+55 (051) #### ####',
      '+55 (061) #### ####',
      '+55 (071) #### ####',
      '+55 (081) #### ####',
      '+55 11 #### ####',
      '+55 21 #### ####',
      '+55 31 #### ####',
      '+55 41 #### ####',
      '+55 51 ### ####',
      '+55 61 #### ####',
      '+55 71 #### ####',
      '+55 81 #### ####',
      '+55 (011) ####-####',
      '+55 (021) ####-####',
      '+55 (031) ####-####',
      '+55 (041) ####-####',
      '+55 (051) ####-####',
      '+55 (061) ####-####',
      '+55 (071) ####-####',
      '+55 (081) ####-####',
      '+55 11 ####-####',
      '+55 21 ####-####',
      '+55 31 ####-####',
      '+55 41 ####-####',
      '+55 51 ### ####',
      '+55 61 ####-####',
      '+55 71 ####-####',
      '+55 81 ####-####',
      '(011) #### ####',
      '(021) #### ####',
      '(031) #### ####',
      '(041) #### ####',
      '(051) #### ####',
      '(061) #### ####',
      '(071) #### ####',
      '(081) #### ####',
      '11 #### ####',
      '21 #### ####',
      '31 #### ####',
      '41 #### ####',
      '51 ### ####',
      '61 #### ####',
      '71 #### ####',
      '81 #### ####',
      '(011) ####-####',
      '(021) ####-####',
      '(031) ####-####',
      '(041) ####-####',
      '(051) ####-####',
      '(061) ####-####',
      '(071) ####-####',
      '(081) ####-####',
      '11 ####-####',
      '21 ####-####',
      '31 ####-####',
      '41 ####-####',
      '51 ### ####',
      '61 ####-####',
      '71 ####-####',
      '81 ####-####',
      '#### ####',
      '####-####'
    ),
    msisdn_formats = c(
      '5511#########',
      '5521#########',
      '5531#########',
      '5541#########',
      '5551#########',
      '5561#########',
      '5571#########',
      '5581#########'
    ),

    cellphone_formats = '+55 9#### ####'
  ),

  public = list(
    cellphone_number = function(){
      pattern = private$random_element(private$cellphone_formats)
      return(private$numerify(pattern))
    }
  )
)
# ssn -----------------------------------------------------
ssn_pt_BR = R6Class(
  "ssn_pt_BR",
  inherit = ssn_init,
  cloneable = FALSE,
  private = list(
    checksum = function(digits) {
      # Returns the checksum of CPF digits.
      # References to the algorithm:
      #   https://pt.wikipedia.org/wiki/Cadastro_de_pessoas_f%C3%ADsicas#Algoritmo
      # https://metacpan.org/source/MAMAWE/Algorithm-CheckDigits-v1.3.0/lib/Algorithm/CheckDigits/M11_004.pm

      p = seq((length(digits)+1), 2, -1)
      s = sum(p * digits)

      reminder = s %% 11
      if (reminder %in% c(0, 1)) return(0)
      else return(11 - reminder)
    }
  ),

  public = list(
    # Provider for Brazilian SSN also known in Brazil as CPF.
    # There are two methods Provider.ssn and Provider.cpf
    # The snn returns a valid number with numbers only
    # The cpf return a valid number formatted with brazilian mask. eg nnn.nnn.nnn-nn

    ssn = function() {
      digits = sample(seq(0, 9), 9)
      digits = c(digits, private$checksum(digits))
      digits = c(digits, private$checksum(digits))
      return(str_c(digits, collapse = ""))
    },

    cpf = function() {
      temp = self$ssn()
      temp = str_c(str_sub(temp, 1, 3), ".",
                   str_sub(temp, 4, 6), ".",
                   str_sub(temp, 7, 9), "-",
                   str_sub(temp, 10))
      return(temp)
    },

    rg = function() {
      # Brazilian RG, return plain numbers.
      # Check:  https://www.ngmatematica.com/2014/02/como-determinar-o-digito-verificador-do.html

      digits = sample(seq(0, 8), 8)
      weights = seq(2, 9)
      checksum = sum(digits * weights)
      last_digit = 11 - (checksum %% 11)

      if (last_digit == 10) {
        digits = c(digits, "X")
      } else if (last_digit == 11) {
        digits = c(digits, 0)
      } else {
        digits = c(digits, last_digit)
      }
      return(str_c(digits, collapse = ""))
    }
  )
)
# credit_card -----------------
credit_card_pt_BR = R6Class(
  "credit_card_pt_BR",
  inherit = credit_card_init,
  cloneable = FALSE,
  private = list(
    first_names = (person_pt_BR$new())$.__enclos_env__$private$first_names,
    last_names = (person_pt_BR$new())$.__enclos_env__$private$last_names,
    first_name = (person_pt_BR$new())$first_name,
    last_name = (person_pt_BR$new())$last_name
  )
)



# profile  ------------
profile_pt_BR = R6Class(
  "profile_pt_BR",
  inherit = profile_init,
  cloneable = FALSE,
  public = list(
    simple_profile = function(sex) {
      # Generates a basic profile with personal informations
      SEX = c("F", "M")
      if (missing(sex)) {
        sex = sample(SEX, 1)
      }
      if (!(sex %in% SEX)) {
        sex = sample(SEX, 1)
      }

      name = ifelse(sex == "F",
                    (person_pt_BR$new())$name_female(),
                    (person_pt_BR$new())$name_male())
      temp = list(
        "username" = (internet_pt_BR$new())$user_name(),
        "name" = name,
        "sex" = sex,
        "address" = (address_pt_BR$new())$address(),
        "mail" = (internet_pt_BR$new())$free_email(),
        "birthdate" = (date_time_init$new())$date_of_birth()
      )
      return(temp)
    },

    profile = function(fields, sex) {
      # Generates a complete profile.
      # If "fields" is not empty, only the fields in the list will be returned

      if (missing(fields)) fields = c()

      field = list(
        "job" = (job_pt_BR$new())$job(),
        "company" = (company_pt_BR$new())$company(),
        "ssn" = (ssn_pt_BR$new())$ssn(),
        "residence" = (address_pt_BR$new())$address(),
        "current_location" = c((geo_init$new())$latitude(),
                               (geo_init$new())$longitude()),
        "blood_group" = sample(c(
          "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-"), 1),
        "website" = replicate(sample(seq(4), 1), (internet_pt_BR$new())$url())
      )

      field = append(field, self$simple_profile(sex))
      # field selection

      if (length(fields)) {
        nms = intersect(names(field), fields)
        field = field[nms]
      }
      return(field)
    }

  )
)
LuYang19/faker documentation built on Jan. 3, 2020, 12:07 a.m.