aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTyler <[email protected]>2018-10-20 19:52:42 -0700
committerTyler <[email protected]>2018-10-20 19:52:42 -0700
commit7ded5dd46270454f7d6c0417c8ea406c7113feb1 (patch)
tree36181b5ff594a4e536fbecbe12da11e762b99029
parent031ad231ba6e88e8c5f40c5a8b62d2faa3fb7b61 (diff)
downloadfaker-7ded5dd46270454f7d6c0417c8ea406c7113feb1.tar.xz
faker-7ded5dd46270454f7d6c0417c8ea406c7113feb1.zip
merge with master
-rw-r--r--.gitignore4
-rw-r--r--.npmignore5
-rwxr-xr-x.travis.yml4
-rw-r--r--CODE_OF_MERIT.MD52
-rw-r--r--Readme.md8
-rw-r--r--build/src/docs.md8
-rw-r--r--examples/browser/js/jquery.js156
-rw-r--r--lib/address.js169
-rw-r--r--lib/date.js30
-rw-r--r--lib/fake.js3
-rw-r--r--lib/finance.js4
-rw-r--r--lib/git.js87
-rw-r--r--lib/helpers.js3
-rw-r--r--lib/image.js10
-rw-r--r--lib/index.js9
-rw-r--r--lib/locales.js4
-rw-r--r--lib/locales/af_ZA/address/default_country.js3
-rw-r--r--lib/locales/af_ZA/address/index.js4
-rw-r--r--lib/locales/af_ZA/address/postcode.js4
-rw-r--r--lib/locales/af_ZA/cell_phone/formats.js8
-rw-r--r--lib/locales/af_ZA/cell_phone/index.js3
-rw-r--r--lib/locales/af_ZA/company/index.js3
-rw-r--r--lib/locales/af_ZA/company/suffix.js5
-rw-r--r--lib/locales/af_ZA/index.js8
-rw-r--r--lib/locales/af_ZA/internet/domain_suffix.js7
-rw-r--r--lib/locales/af_ZA/internet/index.js3
-rw-r--r--lib/locales/af_ZA/name/female_first_name.js113
-rw-r--r--lib/locales/af_ZA/name/first_name.js227
-rw-r--r--lib/locales/af_ZA/name/index.js6
-rw-r--r--lib/locales/af_ZA/name/last_name.js167
-rw-r--r--lib/locales/af_ZA/name/male_first_name.js116
-rw-r--r--lib/locales/af_ZA/phone_number/formats.js11
-rw-r--r--lib/locales/af_ZA/phone_number/index.js3
-rw-r--r--lib/locales/ar/address/building_number.js5
-rw-r--r--lib/locales/ar/address/city.js3
-rw-r--r--lib/locales/ar/address/city_name.js144
-rw-r--r--lib/locales/ar/address/country.js244
-rw-r--r--lib/locales/ar/address/default_country.js3
-rw-r--r--lib/locales/ar/address/index.js12
-rw-r--r--lib/locales/ar/address/postcode.js4
-rw-r--r--lib/locales/ar/address/postcode_by_state.js4
-rw-r--r--lib/locales/ar/address/secondary_address.js4
-rw-r--r--lib/locales/ar/address/state.js52
-rw-r--r--lib/locales/ar/address/street_address.js3
-rw-r--r--lib/locales/ar/address/street_name.js4
-rw-r--r--lib/locales/ar/address/street_prefix.js10
-rw-r--r--lib/locales/ar/cell_phone/formats.js6
-rw-r--r--lib/locales/ar/cell_phone/index.js3
-rw-r--r--lib/locales/ar/commerce/color.js33
-rw-r--r--lib/locales/ar/commerce/department.js22
-rw-r--r--lib/locales/ar/commerce/index.js4
-rw-r--r--lib/locales/ar/index.js8
-rw-r--r--lib/locales/ar/phone_number/formats.js22
-rw-r--r--lib/locales/ar/phone_number/index.js3
-rw-r--r--lib/locales/de/name/last_name.js1
-rw-r--r--lib/locales/de_AT/name/last_name.js1
-rw-r--r--lib/locales/en/address/direction.js10
-rw-r--r--lib/locales/en/address/direction_abbr.js10
-rw-r--r--lib/locales/en/address/index.js2
-rw-r--r--lib/locales/en/company/bs_noun.js3
-rw-r--r--lib/locales/en/name/last_name.js1
-rw-r--r--lib/locales/en_CA/address/postcode.js19
-rw-r--r--lib/locales/en_IND/address/state.js21
-rw-r--r--lib/locales/en_IND/address/state_abbr.js21
-rw-r--r--lib/locales/en_US/address/postcode_by_state.js262
-rw-r--r--lib/locales/en_ZA/address/city.js3
-rw-r--r--lib/locales/en_ZA/address/city_prefix.js16
-rw-r--r--lib/locales/en_ZA/address/default_country.js6
-rw-r--r--lib/locales/en_ZA/address/index.js7
-rw-r--r--lib/locales/en_ZA/address/postcode.js4
-rw-r--r--lib/locales/en_ZA/address/state.js11
-rw-r--r--lib/locales/en_ZA/cell_phone/formats.js20
-rw-r--r--lib/locales/en_ZA/cell_phone/index.js3
-rw-r--r--lib/locales/en_ZA/company/index.js3
-rw-r--r--lib/locales/en_ZA/company/suffix.js5
-rw-r--r--lib/locales/en_ZA/index.js9
-rw-r--r--lib/locales/en_ZA/internet/domain_suffix.js7
-rw-r--r--lib/locales/en_ZA/internet/index.js3
-rw-r--r--lib/locales/en_ZA/name/female_first_name.js293
-rw-r--r--lib/locales/en_ZA/name/first_name.js552
-rw-r--r--lib/locales/en_ZA/name/index.js7
-rw-r--r--lib/locales/en_ZA/name/last_name.js243
-rw-r--r--lib/locales/en_ZA/name/male_first_name.js253
-rw-r--r--lib/locales/en_ZA/name/name.js4
-rw-r--r--lib/locales/en_ZA/phone_number/area_code.js40
-rw-r--r--lib/locales/en_ZA/phone_number/exchange_code.js285
-rw-r--r--lib/locales/en_ZA/phone_number/formats.js14
-rw-r--r--lib/locales/en_ZA/phone_number/index.js5
-rw-r--r--lib/locales/es/commerce/color.js11
-rw-r--r--lib/locales/es/commerce/department.js21
-rw-r--r--lib/locales/es/commerce/index.js5
-rw-r--r--lib/locales/es/commerce/product_name.js56
-rw-r--r--lib/locales/es/company/adjective.js6
-rw-r--r--lib/locales/es/index.js1
-rw-r--r--lib/locales/es/name/first_name.js12
-rw-r--r--lib/locales/es/name/last_name.js48
-rw-r--r--lib/locales/fr_CA/address/postcode.js19
-rw-r--r--lib/locales/fr_CH/address/city.js3
-rw-r--r--lib/locales/fr_CH/address/city_name.js175
-rw-r--r--lib/locales/fr_CH/address/country_code.js3
-rw-r--r--lib/locales/fr_CH/address/default_country.js3
-rw-r--r--lib/locales/fr_CH/address/index.js9
-rw-r--r--lib/locales/fr_CH/address/postcode.js11
-rw-r--r--lib/locales/fr_CH/address/state.js28
-rw-r--r--lib/locales/fr_CH/index.js6
-rw-r--r--lib/locales/fr_CH/internet/domain_suffix.js8
-rw-r--r--lib/locales/fr_CH/internet/index.js3
-rw-r--r--lib/locales/fr_CH/phone_number/formats.js17
-rw-r--r--lib/locales/fr_CH/phone_number/index.js3
-rw-r--r--lib/locales/id_ID/name/male_first_name.js8
-rw-r--r--lib/locales/pl/cell_phone/formats.js24
-rw-r--r--lib/locales/pt_PT/address/building_number.js6
-rw-r--r--lib/locales/pt_PT/address/city.js3
-rw-r--r--lib/locales/pt_PT/address/city_name.js153
-rw-r--r--lib/locales/pt_PT/address/city_prefix.js2
-rw-r--r--lib/locales/pt_PT/address/city_suffix.js2
-rw-r--r--lib/locales/pt_PT/address/country.js240
-rw-r--r--lib/locales/pt_PT/address/default_country.js3
-rw-r--r--lib/locales/pt_PT/address/direction.js10
-rw-r--r--lib/locales/pt_PT/address/index.js14
-rw-r--r--lib/locales/pt_PT/address/postcode.js3
-rw-r--r--lib/locales/pt_PT/address/street_address.js3
-rw-r--r--lib/locales/pt_PT/address/street_name.js7
-rw-r--r--lib/locales/pt_PT/address/street_prefix.js22
-rw-r--r--lib/locales/pt_PT/cell_phone/formats.js5
-rw-r--r--lib/locales/pt_PT/cell_phone/index.js3
-rw-r--r--lib/locales/pt_PT/commerce/color.js29
-rw-r--r--lib/locales/pt_PT/commerce/department.js24
-rw-r--r--lib/locales/pt_PT/commerce/index.js5
-rw-r--r--lib/locales/pt_PT/commerce/product_name.js60
-rw-r--r--lib/locales/pt_PT/date/index.js4
-rw-r--r--lib/locales/pt_PT/date/month.js31
-rw-r--r--lib/locales/pt_PT/date/weekday.js21
-rw-r--r--lib/locales/pt_PT/index.js10
-rw-r--r--lib/locales/pt_PT/internet/domain_suffix.js13
-rw-r--r--lib/locales/pt_PT/internet/free_email.js11
-rw-r--r--lib/locales/pt_PT/internet/index.js4
-rw-r--r--lib/locales/pt_PT/name/female_first_name.js95
-rw-r--r--lib/locales/pt_PT/name/female_prefix.js6
-rw-r--r--lib/locales/pt_PT/name/first_name.js190
-rw-r--r--lib/locales/pt_PT/name/index.js11
-rw-r--r--lib/locales/pt_PT/name/last_name.js103
-rw-r--r--lib/locales/pt_PT/name/male_first_name.js97
-rw-r--r--lib/locales/pt_PT/name/male_prefix.js6
-rw-r--r--lib/locales/pt_PT/name/name.js7
-rw-r--r--lib/locales/pt_PT/name/prefix.js4
-rw-r--r--lib/locales/pt_PT/name/suffix.js2
-rw-r--r--lib/locales/pt_PT/phone_number/formats.js6
-rw-r--r--lib/locales/pt_PT/phone_number/index.js3
-rw-r--r--lib/locales/ru/commerce/department.js3
-rw-r--r--lib/locales/ru/commerce/product_name.js19
-rw-r--r--lib/locales/ru/company/prefix.js1
-rw-r--r--lib/locales/ru/hacker/abbreviation.js3
-rw-r--r--lib/locales/ru/hacker/ingverb.js3
-rw-r--r--lib/locales/ru/hacker/noun.js3
-rw-r--r--lib/locales/ru/hacker/verb.js4
-rw-r--r--lib/locales/sv/name/first_name_women.js23
-rw-r--r--lib/locales/zu_ZA/address/default_country.js3
-rw-r--r--lib/locales/zu_ZA/address/index.js4
-rw-r--r--lib/locales/zu_ZA/address/postcode.js4
-rw-r--r--lib/locales/zu_ZA/cell_phone/formats.js8
-rw-r--r--lib/locales/zu_ZA/cell_phone/index.js3
-rw-r--r--lib/locales/zu_ZA/company/index.js3
-rw-r--r--lib/locales/zu_ZA/company/suffix.js5
-rw-r--r--lib/locales/zu_ZA/index.js8
-rw-r--r--lib/locales/zu_ZA/internet/domain_suffix.js7
-rw-r--r--lib/locales/zu_ZA/internet/index.js3
-rw-r--r--lib/locales/zu_ZA/name/female_first_name.js52
-rw-r--r--lib/locales/zu_ZA/name/first_name.js102
-rw-r--r--lib/locales/zu_ZA/name/index.js6
-rw-r--r--lib/locales/zu_ZA/name/last_name.js102
-rw-r--r--lib/locales/zu_ZA/name/male_first_name.js52
-rw-r--r--lib/locales/zu_ZA/phone_number/formats.js11
-rw-r--r--lib/locales/zu_ZA/phone_number/index.js3
-rw-r--r--lib/phone_number.js4
-rw-r--r--lib/random.js25
-rw-r--r--lib/unique.js26
-rw-r--r--locale/en_ZA.js5
-rw-r--r--locale/fr_CH.js5
-rw-r--r--test/address.unit.js170
-rw-r--r--test/date.unit.js26
-rw-r--r--test/fake.unit.js20
-rw-r--r--test/finance.unit.js11
-rw-r--r--test/git.unit.js125
-rw-r--r--test/image.unit.js6
-rw-r--r--test/name.unit.js95
-rw-r--r--test/random.unit.js114
-rw-r--r--test/system.unit.js20
-rw-r--r--test/unique.unit.js12
-rw-r--r--vendor/mersenne.js4
-rw-r--r--vendor/unique.js44
-rw-r--r--vendor/user-agent.js13
192 files changed, 6461 insertions, 381 deletions
diff --git a/.gitignore b/.gitignore
index 7edb33a7..f877040a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,11 +12,11 @@ REVISION
/.idea
lib-cov
node_modules/
+reports/
/npm-debug.log
/coverage
/.npm
-
# meteor specific
.build*
-versions.json
+versions.json \ No newline at end of file
diff --git a/.npmignore b/.npmignore
index 00a17f82..bd7cccd5 100644
--- a/.npmignore
+++ b/.npmignore
@@ -1,5 +1,8 @@
.npm/
-build/
+build/*
+build/build/*
+!build/build/faker.js
+!build/build/faker.min.js
doc/
examples/
meteor/
diff --git a/.travis.yml b/.travis.yml
index f9bfca44..6fdb8c4b 100755
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,6 +2,10 @@
sudo: false
language: node_js
node_js:
+ - "10"
+ - "9"
+ - "8"
+ - "7"
- "6"
- "6.1"
- "5"
diff --git a/CODE_OF_MERIT.MD b/CODE_OF_MERIT.MD
new file mode 100644
index 00000000..1e4f8e0a
--- /dev/null
+++ b/CODE_OF_MERIT.MD
@@ -0,0 +1,52 @@
+# Code of Merit
+
+1. The project creators, lead developers, core team, constitute
+the managing members of the project and have final say in every decision
+of the project, technical or otherwise, including overruling previous decisions.
+There are no limitations to this decisional power.
+
+2. Contributions are an expected result of your membership on the project.
+Don't expect others to do your work or help you with your work forever.
+
+3. All members have the same opportunities to seek any challenge they want
+within the project.
+
+4. Authority or position in the project will be proportional
+to the accrued contribution. Seniority must be earned.
+
+5. Software is evolutive: the better implementations must supersede lesser
+implementations. Technical advantage is the primary evaluation metric.
+
+6. This is a space for technical prowess; topics outside of the project
+will not be tolerated.
+
+7. Non technical conflicts will be discussed in a separate space. Disruption
+of the project will not be allowed.
+
+8. Individual characteristics, including but not limited to,
+body, sex, sexual preference, race, language, religion, nationality,
+or political preferences are irrelevant in the scope of the project and
+will not be taken into account concerning your value or that of your contribution
+to the project.
+
+9. Discuss or debate the idea, not the person.
+
+10. There is no room for ambiguity: Ambiguity will be met with questioning;
+further ambiguity will be met with silence. It is the responsibility
+of the originator to provide requested context.
+
+11. If something is illegal outside the scope of the project, it is illegal
+in the scope of the project. This Code of Merit does not take precedence over
+governing law.
+
+12. This Code of Merit governs the technical procedures of the project not the
+activities outside of it.
+
+13. Participation on the project equates to agreement of this Code of Merit.
+
+14. No objectives beyond the stated objectives of this project are relevant
+to the project. Any intent to deviate the project from its original purpose
+of existence will constitute grounds for remedial action which may include
+expulsion from the project.
+
+This document is the Code of Merit (http://code-of-merit.org), version 1.0. \ No newline at end of file
diff --git a/Readme.md b/Readme.md
index 5e7201ba..386da88f 100644
--- a/Readme.md
+++ b/Readme.md
@@ -6,7 +6,7 @@
[![npm version](https://badge.fury.io/js/faker.svg)](http://badge.fury.io/js/faker)
-[![OpenCollective](https://opencollective.com/fakerjs/backers/badge.svg)](#backers)
+[![OpenCollective](https://opencollective.com/fakerjs/backers/badge.svg)](#backers)
[![OpenCollective](https://opencollective.com/fakerjs/sponsors/badge.svg)](#sponsors)
## Demo
@@ -208,6 +208,7 @@ This will interpolate the format string with the value of methods `name.lastName
* phoneFormats
* random
* number
+ * float
* arrayElement
* objectElement
* uuid
@@ -259,6 +260,7 @@ faker.locale = "de";
* en_IE
* en_IND
* en_US
+ * en_ZA
* en_au_ocker
* es
* es_MX
@@ -275,6 +277,7 @@ faker.locale = "de";
* nl
* pl
* pt_BR
+ * pt_PT
* ru
* sk
* sv
@@ -287,7 +290,7 @@ faker.locale = "de";
### Individual Localization Packages
-As of vesion `v3.0.0` faker.js supports incremental loading of locales.
+As of vesion `v3.0.0` faker.js supports incremental loading of locales.
By default, requiring `faker` will include *all* locale data.
@@ -475,4 +478,3 @@ Become a sponsor and get your logo on our README on Github with a link to your s
<a href="https://opencollective.com/fakerjs/sponsor/27/website" target="_blank"><img src="https://opencollective.com/fakerjs/sponsor/27/avatar.svg"></a>
<a href="https://opencollective.com/fakerjs/sponsor/28/website" target="_blank"><img src="https://opencollective.com/fakerjs/sponsor/28/avatar.svg"></a>
<a href="https://opencollective.com/fakerjs/sponsor/29/website" target="_blank"><img src="https://opencollective.com/fakerjs/sponsor/29/avatar.svg"></a>
-
diff --git a/build/src/docs.md b/build/src/docs.md
index e173c05e..653a0fea 100644
--- a/build/src/docs.md
+++ b/build/src/docs.md
@@ -24,22 +24,22 @@ curl http://faker.hook.io?property=name.findName&locale=de
## Usage
### Browser
-
+```html
<script src = "faker.js" type = "text/javascript"></script>
<script>
var randomName = faker.name.findName(); // Caitlyn Kerluke
var randomEmail = faker.internet.email(); // [email protected]
var randomCard = faker.helpers.createCard(); // random contact card containing many properties
</script>
-
+```
### Node.js
-
+```js
var faker = require('faker');
var randomName = faker.name.findName(); // Rowan Nikolaus
var randomEmail = faker.internet.email(); // [email protected]
var randomCard = faker.helpers.createCard(); // random contact card containing many properties
-
+```
## API
diff --git a/examples/browser/js/jquery.js b/examples/browser/js/jquery.js
index 7c243080..49d1fcfb 100644
--- a/examples/browser/js/jquery.js
+++ b/examples/browser/js/jquery.js
@@ -1,154 +1,2 @@
-/*!
- * jQuery JavaScript Library v1.4.2
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Sat Feb 13 22:33:48 2010 -0500
- */
-(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
-e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
-j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
-"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
-true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
-Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
-(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
-a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
-"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
-function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
-c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
-L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
-"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
-a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
-d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
-a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
-!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
-true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
-parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
-false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
-s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
-applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
-else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
-a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
-w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
-cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
-i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
-" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
-this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
-e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
-c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
-a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
-function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
-k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
-C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
-null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
-e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
-f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
-if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
-"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
-a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
-isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
-{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
-if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
-e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
-"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
-d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
-!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
-toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
-u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
-function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
-if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
-e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
-t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
-g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
-for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
-1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
-CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
-relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
-l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
-h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
-CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
-g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
-text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
-setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
-h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
-m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
-"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
-h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
-!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
-h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
-q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
-if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
-(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
-function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
-gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
-c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
-{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
-"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
-d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
-a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
-1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
-a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
-c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
-wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
-prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
-this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
-return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
-""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
-this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
-u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
-1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
-return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
-""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
-c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
-c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
-function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
-Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
-"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
-a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
-a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
-"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
-serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
-function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
-global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
-e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
-"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
-false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
-false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
-c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
-d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
-g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
-1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
-"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
-if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
-this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
-"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
-animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
-j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
-this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
-"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
-c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
-this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
-this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
-e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
-c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
-function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
-this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
-k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
-f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
-a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
-c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
-d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
-"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
-e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
+/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w}); \ No newline at end of file
diff --git a/lib/address.js b/lib/address.js
index 0a6f0c5b..dec676e2 100644
--- a/lib/address.js
+++ b/lib/address.js
@@ -27,12 +27,30 @@ function Address (faker) {
}
/**
+ * Generates random zipcode from state abbreviation. If state abbreviation is
+ * not specified, a random zip code is generated according to the locale's zip format.
+ * Only works for locales with postcode_by_state definition. If a locale does not
+ * have a postcode_by_state definition, a random zip code is generated according
+ * to the locale's zip format.
+ *
+ * @method faker.address.zipCodeByState
+ * @param {String} state
+ */
+ this.zipCodeByState = function (state) {
+ var zipRange = faker.definitions.address.postcode_by_state[state];
+ if (zipRange) {
+ return faker.random.number(zipRange);
+ }
+ return this.zipCode();
+ }
+
+ /**
* Generates a random localized city name. The format string can contain any
* method provided by faker wrapped in `{{}}`, e.g. `{{name.firstName}}` in
* order to build the city name.
*
* If no format string is provided one of the following is randomly used:
- *
+ *
* * `{{address.cityPrefix}} {{name.firstName}}{{address.citySuffix}}`
* * `{{address.cityPrefix}} {{name.firstName}}`
* * `{{name.firstName}}{{address.citySuffix}}`
@@ -131,7 +149,7 @@ function Address (faker) {
this.streetSuffix = function () {
return faker.random.arrayElement(faker.definitions.address.street_suffix);
}
-
+
/**
* streetPrefix
*
@@ -207,11 +225,18 @@ function Address (faker) {
* @method faker.address.latitude
* @param {Double} max default is 90
* @param {Double} min default is -90
+ * @param {number} precision default is 4
*/
- this.latitude = function (max, min) {
- max = max || 90
- min = min || -90
- return faker.random.number({max: max, min:min, precision:0.0001}).toFixed(4);
+ this.latitude = function (max, min, precision) {
+ max = max || 90
+ min = min || -90
+ precision = precision || 4
+
+ return faker.random.number({
+ max: max,
+ min: min,
+ precision: parseFloat((0.0).toPrecision(precision) + '1')
+ }).toFixed(precision);
}
/**
@@ -220,15 +245,135 @@ function Address (faker) {
* @method faker.address.longitude
* @param {Double} max default is 180
* @param {Double} min default is -180
+ * @param {number} precision default is 4
+ */
+ this.longitude = function (max, min, precision) {
+ max = max || 180
+ min = min || -180
+ precision = precision || 4
+
+ return faker.random.number({
+ max: max,
+ min: min,
+ precision: parseFloat((0.0).toPrecision(precision) + '1')
+ }).toFixed(precision);
+ }
+
+ /**
+ * direction
+ *
+ * @method faker.address.direction
+ * @param {Boolean} useAbbr return direction abbreviation. defaults to false
*/
- this.longitude = function (max, min) {
- max = max || 180
- min = min || -180
- return faker.random.number({max: max, min:min, precision:0.0001}).toFixed(4);
+ this.direction = function (useAbbr) {
+ if (typeof useAbbr === 'undefined' || useAbbr === false) {
+ return faker.random.arrayElement(faker.definitions.address.direction);
+ }
+ return faker.random.arrayElement(faker.definitions.address.direction_abbr);
}
-
+
+ this.direction.schema = {
+ "description": "Generates a direction. Use optional useAbbr bool to return abbrevation",
+ "sampleResults": ["Northwest", "South", "SW", "E"]
+ };
+
+ /**
+ * cardinal direction
+ *
+ * @method faker.address.cardinalDirection
+ * @param {Boolean} useAbbr return direction abbreviation. defaults to false
+ */
+ this.cardinalDirection = function (useAbbr) {
+ if (typeof useAbbr === 'undefined' || useAbbr === false) {
+ return (
+ faker.random.arrayElement(faker.definitions.address.direction.slice(0, 4))
+ );
+ }
+ return (
+ faker.random.arrayElement(faker.definitions.address.direction_abbr.slice(0, 4))
+ );
+ }
+
+ this.cardinalDirection.schema = {
+ "description": "Generates a cardinal direction. Use optional useAbbr boolean to return abbrevation",
+ "sampleResults": ["North", "South", "E", "W"]
+ };
+
+ /**
+ * ordinal direction
+ *
+ * @method faker.address.ordinalDirection
+ * @param {Boolean} useAbbr return direction abbreviation. defaults to false
+ */
+ this.ordinalDirection = function (useAbbr) {
+ if (typeof useAbbr === 'undefined' || useAbbr === false) {
+ return (
+ faker.random.arrayElement(faker.definitions.address.direction.slice(4, 8))
+ );
+ }
+ return (
+ faker.random.arrayElement(faker.definitions.address.direction_abbr.slice(4, 8))
+ );
+ }
+
+ this.ordinalDirection.schema = {
+ "description": "Generates an ordinal direction. Use optional useAbbr boolean to return abbrevation",
+ "sampleResults": ["Northwest", "Southeast", "SW", "NE"]
+ };
+
+ this.nearbyGPSCoordinate = function(coordinate, radius, isMetric) {
+ function randomFloat(min, max) {
+ return Math.random() * (max-min) + min;
+ }
+ function degreesToRadians(degrees) {
+ return degrees * (Math.PI/180.0);
+ }
+ function radiansToDegrees(radians) {
+ return radians * (180.0/Math.PI);
+ }
+ function kilometersToMiles(miles) {
+ return miles * 0.621371;
+ }
+ function coordinateWithOffset(coordinate, bearing, distance, isMetric) {
+ var R = 6378.137; // Radius of the Earth (http://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html)
+ var d = isMetric ? distance : kilometersToMiles(distance); // Distance in km
+
+ var lat1 = degreesToRadians(coordinate[0]); //Current lat point converted to radians
+ var lon1 = degreesToRadians(coordinate[1]); //Current long point converted to radians
+
+ var lat2 = Math.asin(Math.sin(lat1) * Math.cos(d/R) +
+ Math.cos(lat1) * Math.sin(d/R) * Math.cos(bearing));
+
+ var lon2 = lon1 + Math.atan2(
+ Math.sin(bearing) * Math.sin(d/R) * Math.cos(lat1),
+ Math.cos(d/R) - Math.sin(lat1) * Math.sin(lat2));
+
+ // Keep longitude in range [-180, 180]
+ if (lon2 > degreesToRadians(180)) {
+ lon2 = lon2 - degreesToRadians(360);
+ } else if (lon2 < degreesToRadians(-180)) {
+ lon2 = lon2 + degreesToRadians(360);
+ }
+
+ return [radiansToDegrees(lat2), radiansToDegrees(lon2)];
+ }
+
+ // If there is no coordinate, the best we can do is return a random GPS coordinate.
+ if (coordinate === undefined) {
+ return [this.latitude(), this.longitude()]
+ }
+ radius = radius || 10.0;
+ isMetric = isMetric || false;
+
+ // TODO: implement either a gaussian/uniform distribution of points in cicular region.
+ // Possibly include param to function that allows user to choose between distributions.
+
+ // This approach will likely result in a higher density of points near the center.
+ var randomCoord = coordinateWithOffset(coordinate, degreesToRadians(Math.random() * 360.0), radius, isMetric);
+ return [randomCoord[0].toFixed(4), randomCoord[1].toFixed(4)];
+ }
+
return this;
}
-
module.exports = Address;
diff --git a/lib/date.js b/lib/date.js
index 1977137b..081ddab5 100644
--- a/lib/date.js
+++ b/lib/date.js
@@ -12,7 +12,11 @@ var _Date = function (faker) {
* @param {date} refDate
*/
self.past = function (years, refDate) {
- var date = (refDate) ? new Date(Date.parse(refDate)) : new Date();
+ var date = new Date();
+ if (typeof refDate !== "undefined") {
+ date = new Date(Date.parse(refDate));
+ }
+
var range = {
min: 1000,
max: (years || 1) * 365 * 24 * 3600 * 1000
@@ -33,7 +37,11 @@ var _Date = function (faker) {
* @param {date} refDate
*/
self.future = function (years, refDate) {
- var date = (refDate) ? new Date(Date.parse(refDate)) : new Date();
+ var date = new Date();
+ if (typeof refDate !== "undefined") {
+ date = new Date(Date.parse(refDate));
+ }
+
var range = {
min: 1000,
max: (years || 1) * 365 * 24 * 3600 * 1000
@@ -67,9 +75,14 @@ var _Date = function (faker) {
*
* @method faker.date.recent
* @param {number} days
+ * @param {date} refDate
*/
- self.recent = function (days) {
+ self.recent = function (days, refDate) {
var date = new Date();
+ if (typeof refDate !== "undefined") {
+ date = new Date(Date.parse(refDate));
+ }
+
var range = {
min: 1000,
max: (days || 1) * 24 * 3600 * 1000
@@ -87,9 +100,14 @@ var _Date = function (faker) {
*
* @method faker.date.soon
* @param {number} days
+ * @param {date} refDate
*/
- self.soon = function (days) {
+ self.soon = function (days, refDate) {
var date = new Date();
+ if (typeof refDate !== "undefined") {
+ date = new Date(Date.parse(refDate));
+ }
+
var range = {
min: 1000,
max: (days || 1) * 24 * 3600 * 1000
@@ -145,9 +163,9 @@ var _Date = function (faker) {
return faker.random.arrayElement(source);
};
-
+
return self;
-
+
};
module['exports'] = _Date;
diff --git a/lib/fake.js b/lib/fake.js
index 7e24c854..186ca274 100644
--- a/lib/fake.js
+++ b/lib/fake.js
@@ -28,8 +28,7 @@ function Fake (faker) {
// if incoming str parameter is not provided, return error message
if (typeof str !== 'string' || str.length === 0) {
- res = 'string parameter is required!';
- return res;
+ throw new Error('string parameter is required!');
}
// find first matching {{ and }}
diff --git a/lib/finance.js b/lib/finance.js
index 268c74b3..e3506265 100644
--- a/lib/finance.js
+++ b/lib/finance.js
@@ -161,12 +161,12 @@ var Finance = function (faker) {
* @method faker.finance.bitcoinAddress
*/
self.bitcoinAddress = function () {
- var addressLength = faker.random.number({ min: 27, max: 34 });
+ var addressLength = faker.random.number({ min: 25, max: 34 });
var address = faker.random.arrayElement(['1', '3']);
for (var i = 0; i < addressLength - 1; i++)
- address += faker.random.alphaNumeric().toUpperCase();
+ address += faker.random.arrayElement('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'.split(''));
return address;
}
diff --git a/lib/git.js b/lib/git.js
new file mode 100644
index 00000000..d431ea2d
--- /dev/null
+++ b/lib/git.js
@@ -0,0 +1,87 @@
+/**
+ * @namespace faker.git
+ */
+
+var Git = function(faker) {
+ var self = this;
+ var f = faker.fake;
+
+ var hexChars = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
+
+ /**
+ * branch
+ *
+ * @method faker.git.branch
+ */
+ self.branch = function() {
+ var noun = faker.hacker.noun().replace(' ', '-');
+ var verb = faker.hacker.verb().replace(' ', '-');
+ return noun + '-' + verb;
+ }
+
+ /**
+ * commitEntry
+ *
+ * @method faker.git.commitEntry
+ * @param {object} options
+ */
+ self.commitEntry = function(options) {
+ options = options || {};
+
+ var entry = 'commit {{git.commitSha}}\r\n';
+
+ if (options.merge || (faker.random.number({ min: 0, max: 4 }) === 0)) {
+ entry += 'Merge: {{git.shortSha}} {{git.shortSha}}\r\n';
+ }
+
+ entry += 'Author: {{name.firstName}} {{name.lastName}} <{{internet.email}}>\r\n';
+ entry += 'Date: ' + faker.date.recent().toString() + '\r\n';
+ entry += '\r\n\xa0\xa0\xa0\xa0{{git.commitMessage}}\r\n';
+
+ return f(entry);
+ };
+
+ /**
+ * commitMessage
+ *
+ * @method faker.git.commitMessage
+ */
+ self.commitMessage = function() {
+ var format = '{{hacker.verb}} {{hacker.adjective}} {{hacker.noun}}';
+ return f(format);
+ };
+
+ /**
+ * commitSha
+ *
+ * @method faker.git.commitSha
+ */
+ self.commitSha = function() {
+ var commit = "";
+
+ for (var i = 0; i < 40; i++) {
+ commit += faker.random.arrayElement(hexChars);
+ }
+
+ return commit;
+ };
+
+ /**
+ * shortSha
+ *
+ * @method faker.git.shortSha
+ */
+ self.shortSha = function() {
+ var shortSha = "";
+
+ for (var i = 0; i < 7; i++) {
+ shortSha += faker.random.arrayElement(hexChars);
+ }
+
+ return shortSha;
+ };
+
+ return self;
+}
+
+module['exports'] = Git;
diff --git a/lib/helpers.js b/lib/helpers.js
index 9bb78267..a602ede6 100644
--- a/lib/helpers.js
+++ b/lib/helpers.js
@@ -56,7 +56,8 @@ var Helpers = function (faker) {
};
/**
- * parses string for symbols (numbers or letters) and replaces them appropriately
+ * parses string for symbols (numbers or letters) and replaces them appropriately (# will be replaced with number,
+ * ? with letter and * will be replaced with number or letter)
*
* @method faker.helpers.replaceSymbols
* @param {string} string
diff --git a/lib/image.js b/lib/image.js
index dc512a68..b25b5895 100644
--- a/lib/image.js
+++ b/lib/image.js
@@ -201,13 +201,15 @@ var Image = function (faker) {
*
* @param {number} width
* @param {number} height
- * @method faker.image.dataurl
+ * @param {string} color
+ * @method faker.image.dataUri
*/
- self.dataUri = function (width, height) {
+ self.dataUri = function (width, height, color) {
+ color = color || 'grey';
+ var svgString = '<svg xmlns="http://www.w3.org/2000/svg" version="1.1" baseProfile="full" width="' + width + '" height="' + height + '"><rect width="100%" height="100%" fill="' + color + '"/><text x="' + width / 2 + '" y="' + height / 2 + '" font-size="20" alignment-baseline="middle" text-anchor="middle" fill="white">' + width + 'x' + height + '</text></svg>';
var rawPrefix = 'data:image/svg+xml;charset=UTF-8,';
- var svgString = '<svg xmlns="http://www.w3.org/2000/svg" version="1.1" baseProfile="full" width="' + width + '" height="' + height + '"> <rect width="100%" height="100%" fill="grey"/> <text x="0" y="20" font-size="20" text-anchor="start" fill="white">' + width + 'x' + height + '</text> </svg>';
return rawPrefix + encodeURIComponent(svgString);
};
}
-module["exports"] = Image; \ No newline at end of file
+module["exports"] = Image;
diff --git a/lib/index.js b/lib/index.js
index e1acb0f4..9de7ca10 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -99,12 +99,15 @@ function Faker (opts) {
var System = require('./system');
self.system = bindAll(new System(self));
+ var Git = require('./git');
+ self.git = bindAll(new Git(self));
+
var Vehicle = require('./vehicle');
self.vehicle = bindAll(new Vehicle(self));
var _definitions = {
- "name": ["first_name", "last_name", "prefix", "suffix", "gender", "title", "male_first_name", "female_first_name", "male_middle_name", "female_middle_name", "male_last_name", "female_last_name"],
- "address": ["city_prefix", "city_suffix", "street_suffix", "county", "country", "country_code", "state", "state_abbr", "street_prefix", "postcode"],
+ "name": ["first_name", "last_name", "prefix", "suffix", "gender", "title", "male_prefix", "female_prefix", "male_first_name", "female_first_name", "male_middle_name", "female_middle_name", "male_last_name", "female_last_name"],
+ "address": ["city_prefix", "city_suffix", "street_suffix", "county", "country", "country_code", "state", "state_abbr", "street_prefix", "postcode", "postcode_by_state", "direction", "direction_abbr"],
"company": ["adjective", "noun", "descriptor", "bs_adjective", "bs_noun", "bs_verb", "suffix"],
"lorem": ["words"],
"hacker": ["abbreviation", "adjective", "noun", "verb", "ingverb", "phrase"],
@@ -113,7 +116,7 @@ function Faker (opts) {
"internet": ["avatar_uri", "domain_suffix", "free_email", "example_email", "password"],
"commerce": ["color", "department", "product_name", "price", "categories"],
"database": ["collation", "column", "engine", "type"],
- "system": ["mimeTypes"],
+ "system": ["mimeTypes", "directoryPaths"],
"date": ["month", "weekday"],
"vehicle": ["vehicle", "manufacturer", "model", "type", "fuel", "vin", "color"],
"title": "",
diff --git a/lib/locales.js b/lib/locales.js
index 98269df7..db99a245 100644
--- a/lib/locales.js
+++ b/lib/locales.js
@@ -1,4 +1,5 @@
exports['az'] = require('./locales/az');
+exports['ar'] = require('./locales/ar');
exports['cz'] = require('./locales/cz');
exports['de'] = require('./locales/de');
exports['de_AT'] = require('./locales/de_AT');
@@ -11,12 +12,14 @@ exports['en_GB'] = require('./locales/en_GB');
exports['en_IE'] = require('./locales/en_IE');
exports['en_IND'] = require('./locales/en_IND');
exports['en_US'] = require('./locales/en_US');
+exports['en_ZA'] = require('./locales/en_ZA');
exports['en_au_ocker'] = require('./locales/en_au_ocker');
exports['es'] = require('./locales/es');
exports['es_MX'] = require('./locales/es_MX');
exports['fa'] = require('./locales/fa');
exports['fr'] = require('./locales/fr');
exports['fr_CA'] = require('./locales/fr_CA');
+exports['fr_CH'] = require('./locales/fr_CH');
exports['ge'] = require('./locales/ge');
exports['id_ID'] = require('./locales/id_ID');
exports['it'] = require('./locales/it');
@@ -28,6 +31,7 @@ exports['nl_BE'] = require('./locales/nl_BE');
exports['nl'] = require('./locales/nl');
exports['pl'] = require('./locales/pl');
exports['pt_BR'] = require('./locales/pt_BR');
+exports['pt_PT'] = require('./locales/pt_PT');
exports['ro'] = require('./locales/ro');
exports['ru'] = require('./locales/ru');
exports['sk'] = require('./locales/sk');
diff --git a/lib/locales/af_ZA/address/default_country.js b/lib/locales/af_ZA/address/default_country.js
new file mode 100644
index 00000000..a31d7565
--- /dev/null
+++ b/lib/locales/af_ZA/address/default_country.js
@@ -0,0 +1,3 @@
+module["exports"] = [
+ "South Africa"
+];
diff --git a/lib/locales/af_ZA/address/index.js b/lib/locales/af_ZA/address/index.js
new file mode 100644
index 00000000..44dff02a
--- /dev/null
+++ b/lib/locales/af_ZA/address/index.js
@@ -0,0 +1,4 @@
+var address = {};
+module['exports'] = address;
+address.default_country = require("./default_country");
+address.postcode = require("./postcode");
diff --git a/lib/locales/af_ZA/address/postcode.js b/lib/locales/af_ZA/address/postcode.js
new file mode 100644
index 00000000..a437640e
--- /dev/null
+++ b/lib/locales/af_ZA/address/postcode.js
@@ -0,0 +1,4 @@
+module["exports"] = [
+ "#####",
+ "####"
+];
diff --git a/lib/locales/af_ZA/cell_phone/formats.js b/lib/locales/af_ZA/cell_phone/formats.js
new file mode 100644
index 00000000..f0f561fd
--- /dev/null
+++ b/lib/locales/af_ZA/cell_phone/formats.js
@@ -0,0 +1,8 @@
+module["exports"] = [
+ "082 ### ####",
+ "084 ### ####",
+ "083 ### ####",
+ "065 ### ####",
+ "082#######",
+ "082 #######"
+];
diff --git a/lib/locales/af_ZA/cell_phone/index.js b/lib/locales/af_ZA/cell_phone/index.js
new file mode 100644
index 00000000..8de997ba
--- /dev/null
+++ b/lib/locales/af_ZA/cell_phone/index.js
@@ -0,0 +1,3 @@
+var cell_phone = {};
+module['exports'] = cell_phone;
+cell_phone.formats = require("./formats");
diff --git a/lib/locales/af_ZA/company/index.js b/lib/locales/af_ZA/company/index.js
new file mode 100644
index 00000000..ddd41f55
--- /dev/null
+++ b/lib/locales/af_ZA/company/index.js
@@ -0,0 +1,3 @@
+var company = {};
+module['exports'] = company;
+company.suffix = require("./suffix");
diff --git a/lib/locales/af_ZA/company/suffix.js b/lib/locales/af_ZA/company/suffix.js
new file mode 100644
index 00000000..f7163b89
--- /dev/null
+++ b/lib/locales/af_ZA/company/suffix.js
@@ -0,0 +1,5 @@
+module["exports"] = [
+ "Pty Ltd",
+ "Ltd",
+ "CC"
+];
diff --git a/lib/locales/af_ZA/index.js b/lib/locales/af_ZA/index.js
new file mode 100644
index 00000000..4385c355
--- /dev/null
+++ b/lib/locales/af_ZA/index.js
@@ -0,0 +1,8 @@
+var en_ZA = {};
+module['exports'] = en_ZA;
+en_ZA.title = "South Africa (Afrikaans)";
+en_ZA.address = require("./address");
+en_ZA.internet = require("./internet");
+en_ZA.phone_number = require("./phone_number");
+en_ZA.cell_phone = require("./cell_phone");
+en_ZA.company = require("./company");
diff --git a/lib/locales/af_ZA/internet/domain_suffix.js b/lib/locales/af_ZA/internet/domain_suffix.js
new file mode 100644
index 00000000..66ac6364
--- /dev/null
+++ b/lib/locales/af_ZA/internet/domain_suffix.js
@@ -0,0 +1,7 @@
+module["exports"] = [
+ "co.za",
+ "com",
+ "org.za",
+ "info",
+ "net.za"
+];
diff --git a/lib/locales/af_ZA/internet/index.js b/lib/locales/af_ZA/internet/index.js
new file mode 100644
index 00000000..abfa2480
--- /dev/null
+++ b/lib/locales/af_ZA/internet/index.js
@@ -0,0 +1,3 @@
+var internet = {};
+module['exports'] = internet;
+internet.domain_suffix = require("./domain_suffix");
diff --git a/lib/locales/af_ZA/name/female_first_name.js b/lib/locales/af_ZA/name/female_first_name.js
new file mode 100644
index 00000000..2a30f61f
--- /dev/null
+++ b/lib/locales/af_ZA/name/female_first_name.js
@@ -0,0 +1,113 @@
+module["exports"] = [
+ "Susan",
+ "Monica",
+ "Linda",
+ "Elsa",
+ "Susan",
+ "Margaret",
+ "Lisa",
+ "Karen",
+ "Helen",
+ "Sandra",
+ "Sara",
+ "Kimberly",
+ "Angelique",
+ "Melissa",
+ "Brenda",
+ "Anna",
+ "Annelie",
+ "Katryn",
+ "Amanda",
+ "Stefanie",
+ "Marie",
+ "Janet",
+ "Rosemarie",
+ "Nicoleen",
+ "Paula",
+ "Robin",
+ "Rita",
+ "Edna",
+ "Carmen",
+ "Cindy",
+ "Edith",
+ "Ethel",
+ "Ellen",
+ "Elaine",
+ "Charlotte",
+ "Pauline",
+ "Juanita",
+ "Anita",
+ "Rhonda",
+ "Hazel",
+ "Debbie",
+ "Clara",
+ "Lucille",
+ "Eleanor",
+ "Alicia",
+ "Michele",
+ "Geraldine",
+ "Erika",
+ "Bernice",
+ "Audrey",
+ "Yvonne",
+ "Annette",
+ "Renette",
+ "Ida",
+ "Melanie",
+ "Jolanda",
+ "Vanessa",
+ "Alma",
+ "Sue-Marie",
+ "Elsa",
+ "Carla",
+ "Rosemary",
+ "Wilma",
+ "Kristin",
+ "Natalie",
+ "Charlene",
+ "Melinda",
+ "Maureen",
+ "Tanya",
+ "Marlene",
+ "Heidi",
+ "Lydia",
+ "Vickie",
+ "Nina",
+ "Leona",
+ "Jenny",
+ "Sonia",
+ "Kristina",
+ "Erika",
+ "Katrina",
+ "Belinda",
+ "Natasha",
+ "Cecile",
+ "Angie",
+ "Lynda",
+ "Amelia",
+ "Monique",
+ "Kayla",
+ "Yvette",
+ "Olivia",
+ "Antoinette",
+ "Bridgette",
+ "Karla",
+ "Leticia",
+ "Krista",
+ "Robyn",
+ "Rosalie",
+ "Bernadette",
+ "Krystal",
+ "Nadine",
+ "Estelle",
+ "Lynette",
+ "Eloise",
+ "Jana",
+ "Kerry",
+ "Jenna",
+ "Tasha",
+ "Sonja",
+ "Elsa",
+ "Elisa",
+ "Kristie"
+ ]; \ No newline at end of file
diff --git a/lib/locales/af_ZA/name/first_name.js b/lib/locales/af_ZA/name/first_name.js
new file mode 100644
index 00000000..56f0345e
--- /dev/null
+++ b/lib/locales/af_ZA/name/first_name.js
@@ -0,0 +1,227 @@
+module["exports"] = [
+ "Susan",
+ "Monica",
+ "Linda",
+ "Elsa",
+ "Susan",
+ "Margaret",
+ "Lisa",
+ "Karen",
+ "Helen",
+ "Sandra",
+ "Sara",
+ "Kimberly",
+ "Angelique",
+ "Melissa",
+ "Brenda",
+ "Anna",
+ "Annelie",
+ "Katryn",
+ "Amanda",
+ "Stefanie",
+ "Marie",
+ "Janet",
+ "Rosemarie",
+ "Nicoleen",
+ "Paula",
+ "Robin",
+ "Rita",
+ "Edna",
+ "Carmen",
+ "Cindy",
+ "Edith",
+ "Ethel",
+ "Ellen",
+ "Elaine",
+ "Charlotte",
+ "Pauline",
+ "Juanita",
+ "Anita",
+ "Rhonda",
+ "Hazel",
+ "Debbie",
+ "Clara",
+ "Lucille",
+ "Eleanor",
+ "Alicia",
+ "Michele",
+ "Geraldine",
+ "Erika",
+ "Bernice",
+ "Audrey",
+ "Yvonne",
+ "Annette",
+ "Renette",
+ "Ida",
+ "Melanie",
+ "Jolanda",
+ "Vanessa",
+ "Alma",
+ "Sue-Marie",
+ "Elsa",
+ "Carla",
+ "Rosemarie",
+ "Wilma",
+ "Kristin",
+ "Natalie",
+ "Charlene",
+ "Melinda",
+ "Maureen",
+ "Tanya",
+ "Marlene",
+ "Heidi",
+ "Lydia",
+ "Vickie",
+ "Nina",
+ "Leona",
+ "Jenny",
+ "Sonia",
+ "Kristina",
+ "Erika",
+ "Katrina",
+ "Belinda",
+ "Natasha",
+ "Cecile",
+ "Angie",
+ "Lynda",
+ "Amelia",
+ "Monique",
+ "Kayla",
+ "Yvette",
+ "Olivia",
+ "Antoinette",
+ "Bridgette",
+ "Karla",
+ "Leticia",
+ "Krista",
+ "Robyn",
+ "Rosalie",
+ "Bernadette",
+ "Krystal",
+ "Nadine",
+ "Estelle",
+ "Lynette",
+ "Eloise",
+ "Jana",
+ "Kerry",
+ "Jenna",
+ "Tasha",
+ "Sonja",
+ "Elsa",
+ "Elisa",
+ "Kristie",
+ "Johan",
+ "Robert",
+ "Michael",
+ "William",
+ "Willem",
+ "David",
+ "Richard",
+ "Thomas",
+ "Charl",
+ "Christopher",
+ "Daniel",
+ "Dante",
+ "Paul",
+ "Mark",
+ "George",
+ "Kenneth",
+ "Steven",
+ "Edward",
+ "Ronald",
+ "Anthony",
+ "Albert",
+ "Kevin",
+ "Jaco",
+ "Jacobus",
+ "Mathuys",
+ "Frankie",
+ "Stephen",
+ "Andre",
+ "Raymond",
+ "Joshua",
+ "Dennis",
+ "Pieter",
+ "Henrie",
+ "Rigard",
+ "Riaan",
+ "Joe",
+ "Johannes",
+ "Hannes",
+ "Gerald",
+ "Gerhard",
+ "Willie",
+ "Roy",
+ "Adam",
+ "Harry",
+ "Wayne",
+ "Billy",
+ "Steve",
+ "Louis",
+ "Eugene",
+ "Russell",
+ "Bobbie",
+ "Victor",
+ "Martin",
+ "Ernest",
+ "Phillip",
+ "Craig",
+ "Alan",
+ "Shawn",
+ "Chris",
+ "Earl",
+ "Jimmy",
+ "Brian",
+ "Mike",
+ "Leonard",
+ "Dale",
+ "Allen",
+ "Vincent",
+ "Francois",
+ "Eddie",
+ "Alexander",
+ "Bernard",
+ "Markus",
+ "Micheal",
+ "Theo",
+ "Oscar",
+ "Derek",
+ "Wesley",
+ "Derrick",
+ "Herman",
+ "Rick",
+ "Ruben",
+ "Cecil",
+ "Andre",
+ "Roland",
+ "Harvey",
+ "Adriaan",
+ "Karl",
+ "Erik",
+ "Neil",
+ "Ian",
+ "Iwan",
+ "Julian",
+ "Nick",
+ "Shaun",
+ "Cameron",
+ "Wilbur",
+ "Rudolph",
+ "Rudy",
+ "Bennie",
+ "Lukas",
+ "Simon",
+ "Rufus",
+ "Hugo",
+ "Conrad",
+ "Tommie",
+ "Jan",
+ "Jacques",
+ "Morne",
+ "Vernon",
+ "Duanne",
+ "Theunis",
+ "Theuns",
+ "Wessel",
+ "Stephaans"
+];
diff --git a/lib/locales/af_ZA/name/index.js b/lib/locales/af_ZA/name/index.js
new file mode 100644
index 00000000..290e3cc2
--- /dev/null
+++ b/lib/locales/af_ZA/name/index.js
@@ -0,0 +1,6 @@
+var name = {};
+module['exports'] = name;
+name.male_first_name = require("./male_first_name");
+name.female_first_name = require("./female_first_name");
+name.first_name = require("./first_name");
+name.last_name = require("./last_name"); \ No newline at end of file
diff --git a/lib/locales/af_ZA/name/last_name.js b/lib/locales/af_ZA/name/last_name.js
new file mode 100644
index 00000000..27c13929
--- /dev/null
+++ b/lib/locales/af_ZA/name/last_name.js
@@ -0,0 +1,167 @@
+module["exports"] = [
+ "van de Merwe",
+ "Schoeman",
+ "Barnard",
+ "de Kock",
+ "Meintjies",
+ "le Roux",
+ "Koen",
+ "Morkel",
+ "Viljoen",
+ "Smit",
+ "Nel",
+ "Grobelaar",
+ "Oppenheimer",
+ "Castelyn",
+ "du Preez",
+ "Cronnje",
+ "Donald",
+ "Pringle",
+ "Snell",
+ "Burger",
+ "van Heerden",
+ "van de Heefer",
+ "Wessels",
+ "Eksteen",
+ "Kirsten",
+ "de Villiers",
+ "Olivier",
+ "Steyn",
+ "Kallis",
+ "Ackerman",
+ "Dippenaar",
+ "Strydon",
+ "Boje",
+ "Pretorius",
+ "Langeveldt",
+ "Botha",
+ "Duminy",
+ "Fuller",
+ "Philander",
+ "Daniels",
+ "Fichardt",
+ "van Zyl",
+ "de Bruyn",
+ "van der Bijl",
+ "Dyer",
+ "van Buuren",
+ "Boyes",
+ "Versfeld",
+ "Bisset",
+ "Castens",
+ "Louw",
+ "Powell",
+ "Snedden",
+ "van Renen",
+ "Myburg",
+ "Bredenkamp",
+ "Mellett",
+ "Hertzog",
+ "Theunissen",
+ "de Waal",
+ "Cloete",
+ "Krige",
+ "Melker",
+ "Loubser",
+ "Stegmann",
+ "Joubert",
+ "Luyt",
+ "Roos",
+ "Lombard",
+ "van der Hoff",
+ "Immelman",
+ "Els",
+ "Delaney",
+ "Strauss",
+ "Meyer",
+ "Pienaar",
+ "du Plessis",
+ "van Rooyen",
+ "Kruger",
+ "Mostert",
+ "Scholtz",
+ "Aucamp",
+ "Albertyn",
+ "Bosman",
+ "Bester",
+ "Truter",
+ "Prinsloo",
+ "van Niekerk",
+ "Zimmerman",
+ "Venter",
+ "van den Berg",
+ "de Wet",
+ "Marais",
+ "van Jaarsveld",
+ "Jordaan",
+ "Malan",
+ "Viviers",
+ "Myburgh",
+ "Hoffman",
+ "Bekker",
+ "Rossouw",
+ "Rens",
+ "Lochner",
+ "Hanekom",
+ "Schmidt",
+ "Bekker",
+ "Wentzel",
+ "van Zyl",
+ "Bezuidenhout",
+ "Cilliers",
+ "Truter",
+ "Naude",
+ "de Vos",
+ "Goosen",
+ "Durand",
+ "Potgieter",
+ "van Deventer",
+ "de Klerk",
+ "Spies",
+ "Snyman",
+ "Oosthuizen",
+ "Bosch",
+ "Vogel",
+ "Fourie",
+ "van Staden",
+ "Wagenaar",
+ "Wolmerans",
+ "Veldsman",
+ "Tromp",
+ "Serfontein",
+ "Claasen",
+ "Heunis",
+ "Visagie",
+ "Ferreira",
+ "Erasmus",
+ "Knoetze",
+ "Jansen van Rensburg",
+ "Styger",
+ "Roberts",
+ "Richter",
+ "Lotter",
+ "Swart",
+ "Badenhorst",
+ "Laubscher",
+ "Hattingh",
+ "Visser",
+ "Brink",
+ "Theron",
+ "Paulse",
+ "Basson",
+ "van der Westhuyzen",
+ "Gerber",
+ "Human",
+ "Uys",
+ "Hougaard",
+ "Steenkamp",
+ "Pieterse",
+ "Brits",
+ "Jantjies",
+ "Etzebeth",
+ "de Jager",
+ "Boshoff",
+ "Kriel",
+ "Vosloo",
+ "Carstens"
+];
diff --git a/lib/locales/af_ZA/name/male_first_name.js b/lib/locales/af_ZA/name/male_first_name.js
new file mode 100644
index 00000000..ad9f0bee
--- /dev/null
+++ b/lib/locales/af_ZA/name/male_first_name.js
@@ -0,0 +1,116 @@
+module["exports"] = [
+ "Johan",
+ "Robert",
+ "Michael",
+ "William",
+ "Willem",
+ "David",
+ "Richard",
+ "Thomas",
+ "Charl",
+ "Christopher",
+ "Daniel",
+ "Dante",
+ "Paul",
+ "Mark",
+ "George",
+ "Kenneth",
+ "Steven",
+ "Edward",
+ "Ronald",
+ "Anthony",
+ "Albert",
+ "Kevin",
+ "Jaco",
+ "Jacobus",
+ "Mathuys",
+ "Frankie",
+ "Stephen",
+ "Andre",
+ "Raymond",
+ "Joshua",
+ "Dennis",
+ "Pieter",
+ "Henrie",
+ "Rigard",
+ "Riaan",
+ "Joe",
+ "Johannes",
+ "Hannes",
+ "Gerald",
+ "Gerhard",
+ "Willie",
+ "Roy",
+ "Adam",
+ "Harry",
+ "Wayne",
+ "Billy",
+ "Steve",
+ "Louis",
+ "Eugene",
+ "Russell",
+ "Bobbie",
+ "Victor",
+ "Martin",
+ "Ernest",
+ "Phillip",
+ "Craig",
+ "Alan",
+ "Shawn",
+ "Chris",
+ "Earl",
+ "Jimmy",
+ "Brian",
+ "Mike",
+ "Leonard",
+ "Dale",
+ "Allen",
+ "Vincent",
+ "Francois",
+ "Eddie",
+ "Alexander",
+ "Bernard",
+ "Markus",
+ "Micheal",
+ "Theo",
+ "Oscar",
+ "Derek",
+ "Wesley",
+ "Derrick",
+ "Herman",
+ "Rick",
+ "Ruben",
+ "Cecil",
+ "Andre",
+ "Roland",
+ "Harvey",
+ "Adriaan",
+ "Karl",
+ "Erik",
+ "Neil",
+ "Ian",
+ "Iwan",
+ "Julian",
+ "Nick",
+ "Shaun",
+ "Cameron",
+ "Wilbur",
+ "Rudolph",
+ "Rudy",
+ "Bennie",
+ "Lukas",
+ "Simon",
+ "Rufus",
+ "Hugo",
+ "Conrad",
+ "Tommie",
+ "Jan",
+ "Jacques",
+ "Morne",
+ "Vernon",
+ "Duanne",
+ "Theunis",
+ "Theuns",
+ "Wessel",
+ "Stephaans"
+ ]; \ No newline at end of file
diff --git a/lib/locales/af_ZA/phone_number/formats.js b/lib/locales/af_ZA/phone_number/formats.js
new file mode 100644
index 00000000..e33e5cbc
--- /dev/null
+++ b/lib/locales/af_ZA/phone_number/formats.js
@@ -0,0 +1,11 @@
+module["exports"] = [
+ "01# ### #####",
+ "02# ### #####",
+ "03# ### #####",
+ "04# ### #####",
+ "05# ### #####",
+ "0800 ### ###",
+ "0860 ### ###",
+ "01#########",
+ "01# ########",
+];
diff --git a/lib/locales/af_ZA/phone_number/index.js b/lib/locales/af_ZA/phone_number/index.js
new file mode 100644
index 00000000..8d35e011
--- /dev/null
+++ b/lib/locales/af_ZA/phone_number/index.js
@@ -0,0 +1,3 @@
+var phone_number = {};
+module['exports'] = phone_number;
+phone_number.formats = require("./formats");
diff --git a/lib/locales/ar/address/building_number.js b/lib/locales/ar/address/building_number.js
new file mode 100644
index 00000000..76d63929
--- /dev/null
+++ b/lib/locales/ar/address/building_number.js
@@ -0,0 +1,5 @@
+module["exports"] = [
+ "#####",
+ "####",
+ "###"
+];
diff --git a/lib/locales/ar/address/city.js b/lib/locales/ar/address/city.js
new file mode 100644
index 00000000..d62eafb1
--- /dev/null
+++ b/lib/locales/ar/address/city.js
@@ -0,0 +1,3 @@
+module["exports"] = [
+ "#{city_name}"
+];
diff --git a/lib/locales/ar/address/city_name.js b/lib/locales/ar/address/city_name.js
new file mode 100644
index 00000000..b096cdde
--- /dev/null
+++ b/lib/locales/ar/address/city_name.js
@@ -0,0 +1,144 @@
+module["exports"] = [
+ "مكة",
+ "المدينة",
+ "القاهرة",
+ "جدة",
+ "تونس",
+ "طرابلس",
+ "بيروت",
+ "الإسكندرية",
+ "بنغازي",
+ "صفاقس",
+ "مراكش",
+ "الدار البيضاء",
+ "غرناطة",
+ "فاس",
+ "وهران",
+ "الجزائر",
+ "الخرطوم",
+ "مقديشو",
+ "القدس",
+ "غزة",
+ "جنين",
+ "نابلس",
+ "دمشق",
+ "بغداد",
+ "البصرة",
+ "صلاح الدين",
+ "الكوفة",
+ "عمان",
+ "صنعاء",
+ "حضرموت",
+ "المنامة",
+ "صيدا",
+ "بنزرت",
+ "سوسة",
+ "نابل",
+ "الحمامات",
+ "جربة",
+ "حلب",
+ "الرياض",
+ "الدّمام",
+ "أبها",
+ "جازان",
+ "القطيف",
+ "الدرعية",
+ "عُنيزة",
+ "نجد",
+ "رابغ",
+ "دبي",
+ "العين",
+ "رأس الخيمة",
+ "أبو ظبي",
+ "عجمان",
+ "الفجيرة",
+ "الرويس",
+ "مصفح",
+ "دوز",
+ "السلع",
+ "الرحبة",
+ "الجهراء",
+ "الكويت",
+ "الفرْوانية",
+ "حَوَلِّـي",
+ "الأحمدي",
+ "الدوحة",
+ "الريان",
+ "دخان",
+ "الخور",
+ "أبو الظلوف",
+ "العريش",
+ "الغنيم",
+ "الغرية",
+ "الموصل",
+ "أربيل",
+ "نينوى",
+ "الأنبار",
+ "الحلة",
+ "سامراء",
+ "ذي قار",
+ "بابل",
+ "واسط",
+ "القادسية",
+ "العقبة",
+ "الكرك",
+ "إربد",
+ "عنجرة",
+ "المفرق",
+ "الفحيص",
+ "أريحا",
+ "يافا",
+ "عكا",
+ "رام الله",
+ "جنين",
+ "بيت لحم",
+ "الرملة",
+ "بيسان",
+ "صفد",
+ "قلقيلية",
+ "طولكرم",
+ "بيت حانون",
+ "صور",
+ "بعلبك",
+ "مرجعيون",
+ "عنجر",
+ "الخيام",
+ "الشرقية",
+ "حمص",
+ "اللاذقية",
+ "تدمر",
+ "حماة",
+ "طرسوس",
+ "بصرى",
+ "معرة النعمان",
+ "دير الزور",
+ "داريا",
+ "دوما",
+ "التل",
+ "إدلب",
+ "عدن",
+ "مأرب",
+ "إب",
+ "عمران",
+ "الشحر",
+ "البيضاء",
+ "بيحان",
+ "يريم",
+ "تريم",
+ "معبر",
+ "الضالع",
+ "بورسعيد",
+ "أسيوط",
+ "الأقصر",
+ "أسوان",
+ "العريش",
+ "المنيا",
+ "سوهاج",
+ "دمياط",
+ "قنا",
+ "سبك الأحد",
+ "نواكشوط",
+ "شمقيط",
+ "وادان",
+ "دورا"
+];
diff --git a/lib/locales/ar/address/country.js b/lib/locales/ar/address/country.js
new file mode 100644
index 00000000..18469d7f
--- /dev/null
+++ b/lib/locales/ar/address/country.js
@@ -0,0 +1,244 @@
+module["exports"] = [
+ "أفغانستان",
+ "ألبانيا",
+ "الجزائر",
+ "أمريكا ساماو",
+ "أندورا",
+ "أنجولا",
+ "أنجويلا",
+ "أنتاركتيكا",
+ "أنتيغوا وباربودا",
+ "الأرجنتين",
+ "أرمينيا",
+ "أروبا",
+ "أرستراليا",
+ "أستريا",
+ "أذرابيجان",
+ "بهماس",
+ "البحرين",
+ "بنغلادش",
+ "بربادوس",
+ "بلاروسيا",
+ "بلجيكا",
+ "بليز",
+ "بينين",
+ "برمودا",
+ "بوتان",
+ "بوليفيا",
+ "البوسنة والهرسك",
+ "بوتسوانا",
+ "جزيرة بوفيه",
+ "البرازيل",
+ "إقليم المحيط الهندي البريطاني",
+ "برونوي دار السلام",
+ "بلغاريا",
+ "بوركينا فاسو",
+ "بوروندي",
+ "كمبوديا",
+ "كاميرون",
+ "كندا",
+ "الرأس الأخضر",
+ "جزر كايمان",
+ "جمهورية إفريقيا الوسطى",
+ "التشاد",
+ "شيلي",
+ "الصين",
+ "جزيرة عيد الميلاد",
+ "جزر كوكوس",
+ "كولومبيا",
+ "Comoros",
+ "كونجو",
+ "جزر كوك",
+ "كوستا ريكا",
+ "ساحل العاج",
+ "كرواتيا",
+ "كوبا",
+ "قبرص",
+ "التشيك",
+ "دنمارك",
+ "جيبوتي",
+ "دومينيكا",
+ "جمهورية الدومينيكان",
+ "إكوادور",
+ "مصر",
+ "السلفادور",
+ "غينيا الاستوائية",
+ "إريتريا",
+ "إستونيا",
+ "أثيوبيا",
+ "جزر فارو",
+ "جزر فوكلاند",
+ "فيجي",
+ "فلندا",
+ "فرنست",
+ "غويانا الفرنسية",
+ "بولينزيا الفرنسية",
+ "أراض فرنسية جنوبية وأنتارتيكية",
+ "جابون",
+ "غمبيا",
+ "جورجيا",
+ "ألمانيا",
+ "غانا",
+ "جبل طارق",
+ "اليونان",
+ "الأرض الخضراء",
+ "غرينادا",
+ "غوادلوب",
+ "غوام",
+ "غواتيمالا",
+ "غيرنزي",
+ "غينيا",
+ "غينيا بيساو",
+ "غيانا",
+ "هايتي",
+ "جزيرة هيرد وجزر ماكدونالد",
+ "الفاتيكان",
+ "هندوراس",
+ "هونكونغ",
+ "هنقاريا",
+ "إسلاند",
+ "الهند",
+ "أندونيسيا",
+ "إيران",
+ "العراق",
+ "إيرلامدا",
+ "جزيرة مان",
+ "إيطاليا",
+ "جامايكا",
+ "اليابان",
+ "جيرزي",
+ "الأردن",
+ "كازاخستان",
+ "كنيا",
+ "كيريباتي",
+ "كوريا الشمالية",
+ "كوريا الجنوبية",
+ "الكويت",
+ "قيرغيزستان",
+ "لاوس",
+ "لتفيا",
+ "لبنان",
+ "ليسوتو",
+ "ليبيريا",
+ "ليبيا",
+ "ليختنشتاين",
+ "ليتيواتيا",
+ "ليكسمبورغ",
+ "ماكاو",
+ "مقدونيا",
+ "مدغشقر",
+ "ملاوي",
+ "ماليزيا",
+ "ملديف",
+ "مالي",
+ "مالطا",
+ "جزر مارشال",
+ "مارتينيك",
+ "موريتانيا",
+ "موريشيوس",
+ "مايوت",
+ "المكسيك",
+ "ولايات ميكرونيسيا المتحدة",
+ "مولدوفا",
+ "موناكو",
+ "منغوليا",
+ "مونتينيغرو",
+ "مونتسرات",
+ "المغرب",
+ "موزنبيق",
+ "ميانمار",
+ "ناميبيا",
+ "ناورو",
+ "نيبال",
+ "جزر الأنتيل الهولندية",
+ "هولاندا",
+ "كالودونيا الجديدة",
+ "زيلاندا الجديدة",
+ "نيكاراغوا",
+ "النيجر",
+ "نيجيريا",
+ "نييوي",
+ "جزيرة نورفولك",
+ "جزر ماريانا الشمالية",
+ "نورواي",
+ "عمان",
+ "باكستان",
+ "بالاو",
+ "فلسطين",
+ "بانما",
+ "بابوا غينيا الجديدة",
+ "باراغواي",
+ "بيرو",
+ "الفيليبين",
+ "جزر بيتكيرن",
+ "بولندا",
+ "البرتغال",
+ "بورتو ريكو",
+ "قطر",
+ "لا ريونيون",
+ "رومانيا",
+ "روسيا",
+ "روندا",
+ "سان بارتيلمي",
+ "سانت هيلانة",
+ "سانت كيتس ونيفيس",
+ "سانت لوسيا",
+ "سانت نرتان",
+ "سان بيير وميكلون",
+ "سانت فينسنت والغرينادين",
+ "ساماو",
+ "سان مارينو",
+ "ساو تومي وبرينسيب",
+ "السعودية",
+ "السنغال",
+ "صربيا",
+ "سيشال",
+ "سيراليون",
+ "سنغفورة",
+ "سلوفاكيا",
+ "سلوفينيا",
+ "جزر سليمان",
+ "الصومال",
+ "جنوب إفريقيا",
+ "جورجيا الجنوبية وجزر ساندويتش الجنوبية",
+ "إسبانيا",
+ "سيري لانكا",
+ "السودان",
+ "سيرينام",
+ "سفالبارد ويان ماين",
+ "سوازيلاند",
+ "السويد",
+ "سويسرا",
+ "سوريا",
+ "تايوات",
+ "طاجكستان",
+ "تنزانيا",
+ "تايلاند",
+ "تيمور الشرقية",
+ "توغو",
+ "توكيلاو",
+ "تونغوا",
+ "ترينيداد وتوباغو",
+ "تونس",
+ "تركيا",
+ "تركمنستان",
+ "جزر توركس وكايكوس",
+ "توفالو",
+ "أوغندا",
+ "أكرانيا",
+ "الإمارات العربية المتحدة",
+ "بريطانيا",
+ "أمريكا",
+ "جزر الولايات المتحدة الصغيرة النائية",
+ "أرغواي",
+ "أزباكستان",
+ "فانواتو",
+ "فينيزويلا",
+ "فيتنام",
+ "جزر العذراء البريطانية",
+ "جزر العذراء الأمريكية",
+ "واليس وفوتونا",
+ "اليمن",
+ "زمبيا",
+ "زمبابوي"
+];
diff --git a/lib/locales/ar/address/default_country.js b/lib/locales/ar/address/default_country.js
new file mode 100644
index 00000000..bdd19df6
--- /dev/null
+++ b/lib/locales/ar/address/default_country.js
@@ -0,0 +1,3 @@
+module["exports"] = [
+ "المملكة العربية السعودية"
+];
diff --git a/lib/locales/ar/address/index.js b/lib/locales/ar/address/index.js
new file mode 100644
index 00000000..d1e09fc6
--- /dev/null
+++ b/lib/locales/ar/address/index.js
@@ -0,0 +1,12 @@
+var address = {};
+module['exports'] = address;
+address.country = require("./country");
+address.building_number = require("./building_number");
+address.secondary_address = require("./secondary_address");
+address.postcode = require("./postcode");
+address.postcode_by_state = require("./postcode_by_state");
+address.state = require("./state");
+address.city = require("./city");
+address.street_name = require("./street_name");
+address.street_address = require("./street_address");
+address.default_country = require("./default_country"); \ No newline at end of file
diff --git a/lib/locales/ar/address/postcode.js b/lib/locales/ar/address/postcode.js
new file mode 100644
index 00000000..f233d46c
--- /dev/null
+++ b/lib/locales/ar/address/postcode.js
@@ -0,0 +1,4 @@
+module["exports"] = [
+ "#####",
+ "#####-####"
+];
diff --git a/lib/locales/ar/address/postcode_by_state.js b/lib/locales/ar/address/postcode_by_state.js
new file mode 100644
index 00000000..f233d46c
--- /dev/null
+++ b/lib/locales/ar/address/postcode_by_state.js
@@ -0,0 +1,4 @@
+module["exports"] = [
+ "#####",
+ "#####-####"
+];
diff --git a/lib/locales/ar/address/secondary_address.js b/lib/locales/ar/address/secondary_address.js
new file mode 100644
index 00000000..b4757b24
--- /dev/null
+++ b/lib/locales/ar/address/secondary_address.js
@@ -0,0 +1,4 @@
+module["exports"] = [
+ "### عمارة",
+ "### طابق"
+];
diff --git a/lib/locales/ar/address/state.js b/lib/locales/ar/address/state.js
new file mode 100644
index 00000000..eaed7742
--- /dev/null
+++ b/lib/locales/ar/address/state.js
@@ -0,0 +1,52 @@
+module["exports"] = [
+ "تونس",
+ "بن عروس",
+ "أريانة",
+ "باجة",
+ "بنزرت",
+ "قابس",
+ "قفصة",
+ "جندوبة",
+ "القيروان",
+ "القصرين",
+ "قبلي",
+ "الكاف",
+ "المهدية",
+ "منوبة",
+ "مدنين",
+ "المنستير",
+ "نابل",
+ "صفاقس",
+ "بوزيد",
+ "سليانة",
+ "سوسة",
+ "تطاوين",
+ "توزر",
+ "زغوان",
+ "أدرار",
+ "الشلف",
+ "الأغواط",
+ "أم البواقي",
+ "باتنة",
+ "بجاية",
+ "بسكرة",
+ "بشار",
+ "البليدة",
+ "البويرة",
+ "تمنراست",
+ "تبسة",
+ "تلمسان",
+ "تيارت",
+ "تيزي وزو",
+ "الجزائر",
+ "الجلفة",
+ "جيجل",
+ "سطيف",
+ "سعيدة",
+ "سكيكدة",
+ "بلعباس",
+ "عنابة",
+ "قالمة",
+ "قسنطينة",
+ "المدية"
+];
diff --git a/lib/locales/ar/address/street_address.js b/lib/locales/ar/address/street_address.js
new file mode 100644
index 00000000..289216e7
--- /dev/null
+++ b/lib/locales/ar/address/street_address.js
@@ -0,0 +1,3 @@
+module["exports"] = [
+ "#{building_number} #{street_name}"
+];
diff --git a/lib/locales/ar/address/street_name.js b/lib/locales/ar/address/street_name.js
new file mode 100644
index 00000000..c104f0e3
--- /dev/null
+++ b/lib/locales/ar/address/street_name.js
@@ -0,0 +1,4 @@
+module["exports"] = [
+ "#{street_preffix} #{Name.first_name}",
+ "#{street_preffix} #{Name.last_name}"
+];
diff --git a/lib/locales/ar/address/street_prefix.js b/lib/locales/ar/address/street_prefix.js
new file mode 100644
index 00000000..0a1b7352
--- /dev/null
+++ b/lib/locales/ar/address/street_prefix.js
@@ -0,0 +1,10 @@
+module["exports"] = [
+ "درب، طريق",
+ "شارع",
+ "سبيل",
+ "جادة",
+ "رصيف",
+ "مَمَر",
+ "طريق مسدود",
+ "ساحة"
+];
diff --git a/lib/locales/ar/cell_phone/formats.js b/lib/locales/ar/cell_phone/formats.js
new file mode 100644
index 00000000..09a6d2a5
--- /dev/null
+++ b/lib/locales/ar/cell_phone/formats.js
@@ -0,0 +1,6 @@
+module["exports"] = [
+ "###-###-####",
+ "(###) ###-####",
+ "1-###-###-####",
+ "###.###.####"
+];
diff --git a/lib/locales/ar/cell_phone/index.js b/lib/locales/ar/cell_phone/index.js
new file mode 100644
index 00000000..8de997ba
--- /dev/null
+++ b/lib/locales/ar/cell_phone/index.js
@@ -0,0 +1,3 @@
+var cell_phone = {};
+module['exports'] = cell_phone;
+cell_phone.formats = require("./formats");
diff --git a/lib/locales/ar/commerce/color.js b/lib/locales/ar/commerce/color.js
new file mode 100644
index 00000000..cac0fbf5
--- /dev/null
+++ b/lib/locales/ar/commerce/color.js
@@ -0,0 +1,33 @@
+module["exports"] = [
+ "أحمر",
+ "أخضر",
+ "أزرق",
+ "أصفر",
+ "purple",
+ "mint green",
+ "teal",
+ "أبيض",
+ "أسود",
+ "برتقالي",
+ "pink",
+ "بني",
+ "maroon",
+ "بنفسجي",
+ "turquoise",
+ "tan",
+ "sky blue",
+ "salmon",
+ "plum",
+ "orchid",
+ "olive",
+ "magenta",
+ "lime",
+ "ivory",
+ "indigo",
+ "ذهبي",
+ "fuchsia",
+ "cyan",
+ "azure",
+ "lavender",
+ "فضي"
+];
diff --git a/lib/locales/ar/commerce/department.js b/lib/locales/ar/commerce/department.js
new file mode 100644
index 00000000..3b07fca7
--- /dev/null
+++ b/lib/locales/ar/commerce/department.js
@@ -0,0 +1,22 @@
+module["exports"] = [
+ "كتب",
+ "ألعاب",
+ "إلكترونيات",
+ "حواسيب",
+ "بيت",
+ "Garden",
+ "أدوات",
+ "Grocery",
+ "صحة",
+ "جمال",
+ "Toys",
+ "أطفال",
+ "رضع",
+ "ملابس",
+ "أحذية",
+ "Jewelery",
+ "أغراض رياضية",
+ "Outdoors",
+ "Automotive",
+ "صناعة"
+];
diff --git a/lib/locales/ar/commerce/index.js b/lib/locales/ar/commerce/index.js
new file mode 100644
index 00000000..e8242422
--- /dev/null
+++ b/lib/locales/ar/commerce/index.js
@@ -0,0 +1,4 @@
+var commerce = {};
+module['exports'] = commerce;
+commerce.color = require("./color");
+commerce.department = require("./department"); \ No newline at end of file
diff --git a/lib/locales/ar/index.js b/lib/locales/ar/index.js
new file mode 100644
index 00000000..20a3ba96
--- /dev/null
+++ b/lib/locales/ar/index.js
@@ -0,0 +1,8 @@
+var ar = {};
+module['exports'] = ar;
+ar.title = "Arabic";
+ar.separator = " & ";
+ar.address = require("./address");
+ar.phone_number = require("./phone_number");
+ar.cell_phone = require("./cell_phone");
+ar.commerce = require("./commerce"); \ No newline at end of file
diff --git a/lib/locales/ar/phone_number/formats.js b/lib/locales/ar/phone_number/formats.js
new file mode 100644
index 00000000..ad3b2a47
--- /dev/null
+++ b/lib/locales/ar/phone_number/formats.js
@@ -0,0 +1,22 @@
+module["exports"] = [
+ "###-###-####",
+ "(###) ###-####",
+ "1-###-###-####",
+ "###.###.####",
+ "###-###-####",
+ "(###) ###-####",
+ "1-###-###-####",
+ "###.###.####",
+ "###-###-#### x###",
+ "(###) ###-#### x###",
+ "1-###-###-#### x###",
+ "###.###.#### x###",
+ "###-###-#### x####",
+ "(###) ###-#### x####",
+ "1-###-###-#### x####",
+ "###.###.#### x####",
+ "###-###-#### x#####",
+ "(###) ###-#### x#####",
+ "1-###-###-#### x#####",
+ "###.###.#### x#####"
+];
diff --git a/lib/locales/ar/phone_number/index.js b/lib/locales/ar/phone_number/index.js
new file mode 100644
index 00000000..8d35e011
--- /dev/null
+++ b/lib/locales/ar/phone_number/index.js
@@ -0,0 +1,3 @@
+var phone_number = {};
+module['exports'] = phone_number;
+phone_number.formats = require("./formats");
diff --git a/lib/locales/de/name/last_name.js b/lib/locales/de/name/last_name.js
index b5fbecd2..ba89ff43 100644
--- a/lib/locales/de/name/last_name.js
+++ b/lib/locales/de/name/last_name.js
@@ -291,7 +291,6 @@ module["exports"] = [
"Ehmann",
"Ehrig",
"Eich",
- "Eichmann",
"Eifert",
"Einert",
"Eisenlauer",
diff --git a/lib/locales/de_AT/name/last_name.js b/lib/locales/de_AT/name/last_name.js
index b5fbecd2..ba89ff43 100644
--- a/lib/locales/de_AT/name/last_name.js
+++ b/lib/locales/de_AT/name/last_name.js
@@ -291,7 +291,6 @@ module["exports"] = [
"Ehmann",
"Ehrig",
"Eich",
- "Eichmann",
"Eifert",
"Einert",
"Eisenlauer",
diff --git a/lib/locales/en/address/direction.js b/lib/locales/en/address/direction.js
new file mode 100644
index 00000000..3d7ff312
--- /dev/null
+++ b/lib/locales/en/address/direction.js
@@ -0,0 +1,10 @@
+module["exports"] = [
+ "North",
+ "East",
+ "South",
+ "West",
+ "Northeast",
+ "Northwest",
+ "Southeast",
+ "Southwest"
+];
diff --git a/lib/locales/en/address/direction_abbr.js b/lib/locales/en/address/direction_abbr.js
new file mode 100644
index 00000000..775ab0ca
--- /dev/null
+++ b/lib/locales/en/address/direction_abbr.js
@@ -0,0 +1,10 @@
+module["exports"] = [
+ "N",
+ "E",
+ "S",
+ "W",
+ "NE",
+ "NW",
+ "SE",
+ "SW"
+];
diff --git a/lib/locales/en/address/index.js b/lib/locales/en/address/index.js
index 575f1d46..05b869c5 100644
--- a/lib/locales/en/address/index.js
+++ b/lib/locales/en/address/index.js
@@ -17,3 +17,5 @@ address.city = require("./city");
address.street_name = require("./street_name");
address.street_address = require("./street_address");
address.default_country = require("./default_country");
+address.direction = require("./direction");
+address.direction_abbr = require("./direction_abbr");
diff --git a/lib/locales/en/company/bs_noun.js b/lib/locales/en/company/bs_noun.js
index c764d732..7b98ccc2 100644
--- a/lib/locales/en/company/bs_noun.js
+++ b/lib/locales/en/company/bs_noun.js
@@ -42,5 +42,6 @@ module["exports"] = [
"functionalities",
"experiences",
"web services",
- "methodologies"
+ "methodologies",
+ "blockchains"
];
diff --git a/lib/locales/en/name/last_name.js b/lib/locales/en/name/last_name.js
index fd2f9259..56438c56 100644
--- a/lib/locales/en/name/last_name.js
+++ b/lib/locales/en/name/last_name.js
@@ -100,7 +100,6 @@ module["exports"] = [
"Durgan",
"Ebert",
"Effertz",
- "Eichmann",
"Emard",
"Emmerich",
"Erdman",
diff --git a/lib/locales/en_CA/address/postcode.js b/lib/locales/en_CA/address/postcode.js
index cd73ce97..0ea6945c 100644
--- a/lib/locales/en_CA/address/postcode.js
+++ b/lib/locales/en_CA/address/postcode.js
@@ -1,3 +1,20 @@
module["exports"] = [
- "?#? #?#"
+ "A#? #?#",
+ "B#? #?#",
+ "C#? #?#",
+ "E#? #?#",
+ "G#? #?#",
+ "H#? #?#",
+ "J#? #?#",
+ "K#? #?#",
+ "L#? #?#",
+ "M#? #?#",
+ "N#? #?#",
+ "P#? #?#",
+ "R#? #?#",
+ "S#? #?#",
+ "T#? #?#",
+ "V#? #?#",
+ "X#? #?#",
+ "Y#? #?#",
];
diff --git a/lib/locales/en_IND/address/state.js b/lib/locales/en_IND/address/state.js
index d2b686c6..8b2746a9 100644
--- a/lib/locales/en_IND/address/state.js
+++ b/lib/locales/en_IND/address/state.js
@@ -1,9 +1,14 @@
module["exports"] = [
+ "Andaman and Nicobar Islands",
"Andra Pradesh",
"Arunachal Pradesh",
"Assam",
"Bihar",
+ "Chandigarh",
"Chhattisgarh",
+ "Dadar and Nagar Haveli",
+ "Daman and Diu",
+ "Delhi",
"Goa",
"Gujarat",
"Haryana",
@@ -12,26 +17,22 @@ module["exports"] = [
"Jharkhand",
"Karnataka",
"Kerala",
+ "Lakshadweep",
"Madya Pradesh",
"Maharashtra",
"Manipur",
"Meghalaya",
"Mizoram",
"Nagaland",
- "Orissa",
+ "Odisha",
+ "Pondicherr",
"Punjab",
"Rajasthan",
"Sikkim",
"Tamil Nadu",
+ "Telangana",
"Tripura",
- "Uttaranchal",
"Uttar Pradesh",
- "West Bengal",
- "Andaman and Nicobar Islands",
- "Chandigarh",
- "Dadar and Nagar Haveli",
- "Daman and Diu",
- "Delhi",
- "Lakshadweep",
- "Pondicherry"
+ "Uttarakhand",
+ "West Bengal"
];
diff --git a/lib/locales/en_IND/address/state_abbr.js b/lib/locales/en_IND/address/state_abbr.js
index 2d2f2b83..3f46ea01 100644
--- a/lib/locales/en_IND/address/state_abbr.js
+++ b/lib/locales/en_IND/address/state_abbr.js
@@ -1,37 +1,38 @@
module["exports"] = [
+ "AN",
"AP",
"AR",
"AS",
"BR",
+ "CH",
"CG",
+ "DN",
+ "DD",
"DL",
"GA",
"GJ",
"HR",
"HP",
"JK",
- "JS",
+ "JH",
"KA",
"KL",
+ "LD",
"MP",
"MH",
"MN",
"ML",
"MZ",
"NL",
- "OR",
+ "OD",
+ "PY",
"PB",
"RJ",
"SK",
"TN",
+ "TS",
"TR",
- "UK",
"UP",
- "WB",
- "AN",
- "CH",
- "DN",
- "DD",
- "LD",
- "PY"
+ "UK",
+ "WB"
];
diff --git a/lib/locales/en_US/address/postcode_by_state.js b/lib/locales/en_US/address/postcode_by_state.js
index bf779111..3bacc4b9 100644
--- a/lib/locales/en_US/address/postcode_by_state.js
+++ b/lib/locales/en_US/address/postcode_by_state.js
@@ -1,54 +1,210 @@
module["exports"] = {
- "AL": "350##",
- "AK": "995##",
- "AS": "967##",
- "AZ": "850##",
- "AR": "717##",
- "CA": "900##",
- "CO": "800##",
- "CT": "061##",
- "DC": "204##",
- "DE": "198##",
- "FL": "322##",
- "GA": "301##",
- "HI": "967##",
- "ID": "832##",
- "IL": "600##",
- "IN": "463##",
- "IA": "510##",
- "KS": "666##",
- "KY": "404##",
- "LA": "701##",
- "ME": "042##",
- "MD": "210##",
- "MA": "026##",
- "MI": "480##",
- "MN": "555##",
- "MS": "387##",
- "MO": "650##",
- "MT": "590##",
- "NE": "688##",
- "NV": "898##",
- "NH": "036##",
- "NJ": "076##",
- "NM": "880##",
- "NY": "122##",
- "NC": "288##",
- "ND": "586##",
- "OH": "444##",
- "OK": "730##",
- "OR": "979##",
- "PA": "186##",
- "RI": "029##",
- "SC": "299##",
- "SD": "577##",
- "TN": "383##",
- "TX": "798##",
- "UT": "847##",
- "VT": "050##",
- "VA": "222##",
- "WA": "990##",
- "WV": "247##",
- "WI": "549##",
- "WY": "831##"
-};
+ AK:{
+ min:99501,
+ max:99950
+ },
+ AL:{
+ min:35004,
+ max:36925
+ },
+ AR:{
+ min:71601,
+ max:72959
+ },
+ AZ:{
+ min:85001,
+ max:86556
+ },
+ CA:{
+ min:90001,
+ max:96162
+ },
+ CO:{
+ min:80001,
+ max:81658
+ },
+ CT:{
+ min:6001,
+ max:6389
+ },
+ DC:{
+ min:20001,
+ max:20039
+ },
+ DE:{
+ min:19701,
+ max:19980
+ },
+ FL:{
+ min:32004,
+ max:34997
+ },
+ GA:{
+ min:30001,
+ max:31999
+ },
+ HI:{
+ min:96701,
+ max:96898
+ },
+ IA:{
+ min:50001,
+ max:52809
+ },
+ ID:{
+ min:83201,
+ max:83876
+ },
+ IL:{
+ min:60001,
+ max:62999
+ },
+ IN:{
+ min:46001,
+ max:47997
+ },
+ KS:{
+ min:66002,
+ max:67954
+ },
+ KY:{
+ min:40003,
+ max:42788
+ },
+ LA:{
+ min:70001,
+ max:71232
+ },
+ MA:{
+ min:1001,
+ max:2791
+ },
+ MD:{
+ min:20331,
+ max:20331
+ },
+ ME:{
+ min:3901,
+ max:4992
+ },
+ MI:{
+ min:48001,
+ max:49971
+ },
+ MN:{
+ min:55001,
+ max:56763
+ },
+ MO:{
+ min:63001,
+ max:65899
+ },
+ MS:{
+ min:38601,
+ max:39776
+ },
+ MT:{
+ min:59001,
+ max:59937
+ },
+ NC:{
+ min:27006,
+ max:28909
+ },
+ ND:{
+ min:58001,
+ max:58856
+ },
+ NE:{
+ min:68001,
+ max:68118
+ },
+ NH:{
+ min:3031,
+ max:3897
+ },
+ NJ:{
+ min:7001,
+ max:8989
+ },
+ NM:{
+ min:87001,
+ max:88441
+ },
+ NV:{
+ min:88901,
+ max:89883
+ },
+ NY:{
+ min:6390,
+ max:6390
+ },
+ OH:{
+ min:43001,
+ max:45999
+ },
+ OK:{
+ min:73001,
+ max:73199
+ },
+ OR:{
+ min:97001,
+ max:97920
+ },
+ PA:{
+ min:15001,
+ max:19640
+ },
+ PR:{
+ min:0,
+ max:0
+ },
+ RI:{
+ min:2801,
+ max:2940
+ },
+ SC:{
+ min:29001,
+ max:29948
+ },
+ SD:{
+ min:57001,
+ max:57799
+ },
+ TN:{
+ min:37010,
+ max:38589
+ },
+ TX:{
+ min:73301,
+ max:73301
+ },
+ UT:{
+ min:84001,
+ max:84784
+ },
+ VA:{
+ min:20040,
+ max:20041
+ },
+ VT:{
+ min:5001,
+ max:5495
+ },
+ WA:{
+ min:98001,
+ max:99403
+ },
+ WI:{
+ min:53001,
+ max:54990
+ },
+ WV:{
+ min:24701,
+ max:26886
+ },
+ WY:{
+ min:82001,
+ max:83128
+ }
+}
diff --git a/lib/locales/en_ZA/address/city.js b/lib/locales/en_ZA/address/city.js
new file mode 100644
index 00000000..f014e156
--- /dev/null
+++ b/lib/locales/en_ZA/address/city.js
@@ -0,0 +1,3 @@
+module["exports"] = [
+ "#{city_prefix}"
+];
diff --git a/lib/locales/en_ZA/address/city_prefix.js b/lib/locales/en_ZA/address/city_prefix.js
new file mode 100644
index 00000000..9b52e83d
--- /dev/null
+++ b/lib/locales/en_ZA/address/city_prefix.js
@@ -0,0 +1,16 @@
+module["exports"] = [
+ "Polokwane",
+ "Johannesburg",
+ "Pretoria",
+ "Tshwane",
+ "Durban",
+ "Pietermaritzburg",
+ "Nelspruit",
+ "Cape Town",
+ "Stellenbosch",
+ "Port Elizabeth",
+ "East London",
+ "Kimberley",
+ "Rustenburg",
+ "Bloemfontein "
+];
diff --git a/lib/locales/en_ZA/address/default_country.js b/lib/locales/en_ZA/address/default_country.js
new file mode 100644
index 00000000..eaf26a73
--- /dev/null
+++ b/lib/locales/en_ZA/address/default_country.js
@@ -0,0 +1,6 @@
+module["exports"] = [
+ "South Africa",
+ "The Republic of South Africa",
+ "SA",
+ "South Africa"
+];
diff --git a/lib/locales/en_ZA/address/index.js b/lib/locales/en_ZA/address/index.js
new file mode 100644
index 00000000..04d128ec
--- /dev/null
+++ b/lib/locales/en_ZA/address/index.js
@@ -0,0 +1,7 @@
+var address = {};
+module['exports'] = address;
+address.city = require("./city");
+address.city_prefix = require("./city_prefix");
+address.default_country = require("./default_country");
+address.postcode = require("./postcode");
+address.state = require("./state"); \ No newline at end of file
diff --git a/lib/locales/en_ZA/address/postcode.js b/lib/locales/en_ZA/address/postcode.js
new file mode 100644
index 00000000..a437640e
--- /dev/null
+++ b/lib/locales/en_ZA/address/postcode.js
@@ -0,0 +1,4 @@
+module["exports"] = [
+ "#####",
+ "####"
+];
diff --git a/lib/locales/en_ZA/address/state.js b/lib/locales/en_ZA/address/state.js
new file mode 100644
index 00000000..6d5bcecf
--- /dev/null
+++ b/lib/locales/en_ZA/address/state.js
@@ -0,0 +1,11 @@
+module["exports"] = [
+ "Limpopo",
+ "Gauteng",
+ "Free State,",
+ "North West",
+ "Northern Cape",
+ "Western Cape,",
+ "KwaZulu-Natal",
+ "Mpumalanga",
+ "Eastern Cape"
+];
diff --git a/lib/locales/en_ZA/cell_phone/formats.js b/lib/locales/en_ZA/cell_phone/formats.js
new file mode 100644
index 00000000..1ebdc000
--- /dev/null
+++ b/lib/locales/en_ZA/cell_phone/formats.js
@@ -0,0 +1,20 @@
+module["exports"] = [
+ "+2760 ### ####",
+ "+2761 ### ####",
+ "+2763 ### ####",
+ "+2772 ### ####",
+ "+2773 ### ####",
+ "+2774 ### ####",
+ "+2776 ### ####",
+ "+2779 ### ####",
+ "+2781 ### ####",
+ "+2782 ### ####",
+ "+2783 ### ####",
+ "+2784 ### ####",
+ "082 ### ####",
+ "084 ### ####",
+ "083 ### ####",
+ "065 ### ####",
+ "082#######",
+ "082 #######"
+]; \ No newline at end of file
diff --git a/lib/locales/en_ZA/cell_phone/index.js b/lib/locales/en_ZA/cell_phone/index.js
new file mode 100644
index 00000000..8de997ba
--- /dev/null
+++ b/lib/locales/en_ZA/cell_phone/index.js
@@ -0,0 +1,3 @@
+var cell_phone = {};
+module['exports'] = cell_phone;
+cell_phone.formats = require("./formats");
diff --git a/lib/locales/en_ZA/company/index.js b/lib/locales/en_ZA/company/index.js
new file mode 100644
index 00000000..ddd41f55
--- /dev/null
+++ b/lib/locales/en_ZA/company/index.js
@@ -0,0 +1,3 @@
+var company = {};
+module['exports'] = company;
+company.suffix = require("./suffix");
diff --git a/lib/locales/en_ZA/company/suffix.js b/lib/locales/en_ZA/company/suffix.js
new file mode 100644
index 00000000..f7163b89
--- /dev/null
+++ b/lib/locales/en_ZA/company/suffix.js
@@ -0,0 +1,5 @@
+module["exports"] = [
+ "Pty Ltd",
+ "Ltd",
+ "CC"
+];
diff --git a/lib/locales/en_ZA/index.js b/lib/locales/en_ZA/index.js
new file mode 100644
index 00000000..af562ffa
--- /dev/null
+++ b/lib/locales/en_ZA/index.js
@@ -0,0 +1,9 @@
+var en_ZA = {};
+module['exports'] = en_ZA;
+en_ZA.title = "South Africa (English)";
+en_ZA.address = require("./address");
+en_ZA.internet = require("./internet");
+en_ZA.name = require("./name");
+en_ZA.phone_number = require("./phone_number");
+en_ZA.cell_phone = require("./cell_phone");
+en_ZA.company = require("./company"); \ No newline at end of file
diff --git a/lib/locales/en_ZA/internet/domain_suffix.js b/lib/locales/en_ZA/internet/domain_suffix.js
new file mode 100644
index 00000000..53b9bbc0
--- /dev/null
+++ b/lib/locales/en_ZA/internet/domain_suffix.js
@@ -0,0 +1,7 @@
+module["exports"] = [
+ "co.za",
+ "com",
+ "org.za",
+ "info",
+ "net.za"
+]; \ No newline at end of file
diff --git a/lib/locales/en_ZA/internet/index.js b/lib/locales/en_ZA/internet/index.js
new file mode 100644
index 00000000..abfa2480
--- /dev/null
+++ b/lib/locales/en_ZA/internet/index.js
@@ -0,0 +1,3 @@
+var internet = {};
+module['exports'] = internet;
+internet.domain_suffix = require("./domain_suffix");
diff --git a/lib/locales/en_ZA/name/female_first_name.js b/lib/locales/en_ZA/name/female_first_name.js
new file mode 100644
index 00000000..ce100663
--- /dev/null
+++ b/lib/locales/en_ZA/name/female_first_name.js
@@ -0,0 +1,293 @@
+module["exports"] = [
+ "Mary",
+ "Patricia",
+ "Linda",
+ "Barbara",
+ "Elizabeth",
+ "Jennifer",
+ "Susan",
+ "Margaret",
+ "Dorothy",
+ "Lisa",
+ "Karen",
+ "Helen",
+ "Sandra",
+ "Donna",
+ "Carol",
+ "Ruth",
+ "Sharon",
+ "Michelle",
+ "Laura",
+ "Sarah",
+ "Kimberly",
+ "Deborah",
+ "Jessica",
+ "Shirley",
+ "Cynthia",
+ "Angela",
+ "Melissa",
+ "Brenda",
+ "Amy",
+ "Anna",
+ "Rebecca",
+ "Kathleen",
+ "Amanda",
+ "Stephanie",
+ "Carolyn",
+ "Christine",
+ "Marie",
+ "Janet",
+ "Catherine",
+ "Ann",
+ "Joyce",
+ "Diane",
+ "Alice",
+ "Julie",
+ "Heather",
+ "Teresa",
+ "Evelyn",
+ "Cheryl",
+ "Katherine",
+ "Joan",
+ "Ashley",
+ "Judith",
+ "Rose",
+ "Janice",
+ "Kelly",
+ "Nicole",
+ "Judy",
+ "Christina",
+ "Kathy",
+ "Theresa",
+ "Beverly",
+ "Denise",
+ "Tammy",
+ "Irene",
+ "Jane",
+ "Lori",
+ "Rachel",
+ "Marilyn",
+ "Andrea",
+ "Kathryn",
+ "Louise",
+ "Sara",
+ "Anne",
+ "Jacqueline",
+ "Julia",
+ "Tina",
+ "Paula",
+ "Diana",
+ "Annie",
+ "Lillian",
+ "Emily",
+ "Robin",
+ "Rita",
+ "Tracy",
+ "Edna",
+ "Tiffany",
+ "Carmen",
+ "Cindy",
+ "Edith",
+ "Kim",
+ "Sherry",
+ "Shannon",
+ "Ethel",
+ "Ellen",
+ "Elaine",
+ "Charlotte",
+ "Monica",
+ "Pauline",
+ "Emma",
+ "Juanita",
+ "Anita",
+ "Rhonda",
+ "Hazel",
+ "Amber",
+ "Debbie",
+ "Clara",
+ "Lucille",
+ "Joanne",
+ "Eleanor",
+ "Megan",
+ "Alicia",
+ "Suzanne",
+ "Michele",
+ "Gail",
+ "Geraldine",
+ "Lauren",
+ "Cathy",
+ "Joann",
+ "Lorraine",
+ "Lynn",
+ "Erica",
+ "Beatrice",
+ "Bernice",
+ "Audrey",
+ "Yvonne",
+ "Annette",
+ "Samantha",
+ "Dana",
+ "Stacy",
+ "Ana",
+ "Renee",
+ "Ida",
+ "Vivian",
+ "Roberta",
+ "Melanie",
+ "Yolanda",
+ "Jeanette",
+ "Katie",
+ "Kristen",
+ "Vanessa",
+ "Alma",
+ "Sue",
+ "Elsie",
+ "Beth",
+ "Jeanne",
+ "Vicki",
+ "Carla",
+ "Tara",
+ "Rosemary",
+ "Eileen",
+ "Lucy",
+ "Stacey",
+ "Wilma",
+ "Gina",
+ "Kristin",
+ "Jessie",
+ "Natalie",
+ "Charlene",
+ "Melinda",
+ "Maureen",
+ "Colleen",
+ "Allison",
+ "Tamara",
+ "Joy",
+ "Claudia",
+ "Jackie",
+ "Marcia",
+ "Tanya",
+ "Nellie",
+ "Marlene",
+ "Heidi",
+ "Glenda",
+ "Lydia",
+ "Viola",
+ "Courtney",
+ "Marian",
+ "Stella",
+ "Caroline",
+ "Vickie",
+ "Maxine",
+ "Irma",
+ "Christy",
+ "Deanna",
+ "Hilda",
+ "Jennie",
+ "Nora",
+ "Nina",
+ "Cassandra",
+ "Leah",
+ "Priscilla",
+ "Carole",
+ "Olga",
+ "Billie",
+ "Dianne",
+ "Tracey",
+ "Leona",
+ "Jenny",
+ "Felicia",
+ "Sonia",
+ "Kristina",
+ "Shelly",
+ "Sherri",
+ "Erika",
+ "Katrina",
+ "Claire",
+ "Lindsay",
+ "Belinda",
+ "Margarita",
+ "Sheryl",
+ "Natasha",
+ "Molly",
+ "Cecilia",
+ "Kristi",
+ "Brandi",
+ "Blanche",
+ "Sandy",
+ "Rosie",
+ "Joanna",
+ "Iris",
+ "Eunice",
+ "Angie",
+ "Lynda",
+ "Madeline",
+ "Amelia",
+ "Monique",
+ "Maggie",
+ "Kayla",
+ "Sonya",
+ "Jan",
+ "Lee",
+ "Kristine",
+ "Candace",
+ "Alison",
+ "Yvette",
+ "Melody",
+ "Olivia",
+ "Kristy",
+ "Antoinette",
+ "Candice",
+ "Bridget",
+ "Karla",
+ "Celia",
+ "Gayle",
+ "Vicky",
+ "Lynne",
+ "Sheri",
+ "Marianne",
+ "Kara",
+ "Jacquelyn",
+ "Erma",
+ "Leticia",
+ "Krista",
+ "Roxanne",
+ "Robyn",
+ "Rosalie",
+ "Alexandra",
+ "Brooke",
+ "Bethany",
+ "Bernadette",
+ "Traci",
+ "Nichole",
+ "Krystal",
+ "Angelina",
+ "Nadine",
+ "Estelle",
+ "Dianna",
+ "Rosemarie",
+ "Desiree",
+ "Lynette",
+ "Cristina",
+ "Leigh",
+ "Meghan",
+ "Eloise",
+ "Rochelle",
+ "Jana",
+ "Gwen",
+ "Kerry",
+ "Jenna",
+ "Tricia",
+ "Laverne",
+ "Alexis",
+ "Tasha",
+ "Kellie",
+ "Sonja",
+ "Mandy",
+ "Lorene",
+ "Elsa",
+ "Camille",
+ "Tami",
+ "Elisa",
+ "Kristie"
+ ]; \ No newline at end of file
diff --git a/lib/locales/en_ZA/name/first_name.js b/lib/locales/en_ZA/name/first_name.js
new file mode 100644
index 00000000..2a3b552d
--- /dev/null
+++ b/lib/locales/en_ZA/name/first_name.js
@@ -0,0 +1,552 @@
+module["exports"] = [
+ "Rapulane",
+ "Nthabiseng",
+ "Kopano",
+ "Mpho",
+ "Lungelo",
+ "Ziyanda",
+ "Nqobile",
+ "Monde",
+ "Mary",
+ "Patricia",
+ "Linda",
+ "Barbara",
+ "Elizabeth",
+ "Jennifer",
+ "Susan",
+ "Margaret",
+ "Dorothy",
+ "Lisa",
+ "Karen",
+ "Helen",
+ "Sandra",
+ "Donna",
+ "Carol",
+ "Ruth",
+ "Sharon",
+ "Michelle",
+ "Laura",
+ "Sarah",
+ "Kimberly",
+ "Deborah",
+ "Jessica",
+ "Shirley",
+ "Cynthia",
+ "Angela",
+ "Melissa",
+ "Brenda",
+ "Amy",
+ "Anna",
+ "Rebecca",
+ "Kathleen",
+ "Amanda",
+ "Stephanie",
+ "Carolyn",
+ "Christine",
+ "Marie",
+ "Janet",
+ "Catherine",
+ "Ann",
+ "Joyce",
+ "Diane",
+ "Alice",
+ "Julie",
+ "Heather",
+ "Teresa",
+ "Evelyn",
+ "Cheryl",
+ "Katherine",
+ "Joan",
+ "Ashley",
+ "Judith",
+ "Rose",
+ "Janice",
+ "Kelly",
+ "Nicole",
+ "Judy",
+ "Christina",
+ "Kathy",
+ "Theresa",
+ "Beverly",
+ "Denise",
+ "Tammy",
+ "Irene",
+ "Jane",
+ "Lori",
+ "Rachel",
+ "Marilyn",
+ "Andrea",
+ "Kathryn",
+ "Louise",
+ "Sara",
+ "Anne",
+ "Jacqueline",
+ "Julia",
+ "Tina",
+ "Paula",
+ "Diana",
+ "Annie",
+ "Lillian",
+ "Emily",
+ "Robin",
+ "Rita",
+ "Tracy",
+ "Edna",
+ "Tiffany",
+ "Carmen",
+ "Cindy",
+ "Edith",
+ "Kim",
+ "Sherry",
+ "Shannon",
+ "Ethel",
+ "Ellen",
+ "Elaine",
+ "Charlotte",
+ "Monica",
+ "Pauline",
+ "Emma",
+ "Juanita",
+ "Anita",
+ "Rhonda",
+ "Hazel",
+ "Amber",
+ "Debbie",
+ "Clara",
+ "Lucille",
+ "Joanne",
+ "Eleanor",
+ "Megan",
+ "Alicia",
+ "Suzanne",
+ "Michele",
+ "Gail",
+ "Geraldine",
+ "Lauren",
+ "Cathy",
+ "Joann",
+ "Lorraine",
+ "Lynn",
+ "Erica",
+ "Beatrice",
+ "Bernice",
+ "Audrey",
+ "Yvonne",
+ "Annette",
+ "Samantha",
+ "Dana",
+ "Stacy",
+ "Ana",
+ "Renee",
+ "Ida",
+ "Vivian",
+ "Roberta",
+ "Melanie",
+ "Yolanda",
+ "Jeanette",
+ "Katie",
+ "Kristen",
+ "Vanessa",
+ "Alma",
+ "Sue",
+ "Elsie",
+ "Beth",
+ "Jeanne",
+ "Vicki",
+ "Carla",
+ "Tara",
+ "Rosemary",
+ "Eileen",
+ "Lucy",
+ "Stacey",
+ "Wilma",
+ "Gina",
+ "Kristin",
+ "Jessie",
+ "Natalie",
+ "Charlene",
+ "Melinda",
+ "Maureen",
+ "Colleen",
+ "Allison",
+ "Tamara",
+ "Joy",
+ "Claudia",
+ "Jackie",
+ "Marcia",
+ "Tanya",
+ "Nellie",
+ "Marlene",
+ "Heidi",
+ "Glenda",
+ "Lydia",
+ "Viola",
+ "Courtney",
+ "Marian",
+ "Stella",
+ "Caroline",
+ "Vickie",
+ "Maxine",
+ "Irma",
+ "Christy",
+ "Deanna",
+ "Hilda",
+ "Jennie",
+ "Nora",
+ "Nina",
+ "Cassandra",
+ "Leah",
+ "Priscilla",
+ "Carole",
+ "Olga",
+ "Billie",
+ "Dianne",
+ "Tracey",
+ "Leona",
+ "Jenny",
+ "Felicia",
+ "Sonia",
+ "Kristina",
+ "Shelly",
+ "Sherri",
+ "Erika",
+ "Katrina",
+ "Claire",
+ "Lindsay",
+ "Belinda",
+ "Margarita",
+ "Sheryl",
+ "Natasha",
+ "Molly",
+ "Cecilia",
+ "Kristi",
+ "Brandi",
+ "Blanche",
+ "Sandy",
+ "Rosie",
+ "Joanna",
+ "Iris",
+ "Eunice",
+ "Angie",
+ "Lynda",
+ "Madeline",
+ "Amelia",
+ "Monique",
+ "Maggie",
+ "Kayla",
+ "Sonya",
+ "Jan",
+ "Lee",
+ "Kristine",
+ "Candace",
+ "Alison",
+ "Yvette",
+ "Melody",
+ "Olivia",
+ "Kristy",
+ "Antoinette",
+ "Candice",
+ "Bridget",
+ "Karla",
+ "Celia",
+ "Gayle",
+ "Vicky",
+ "Lynne",
+ "Sheri",
+ "Marianne",
+ "Kara",
+ "Jacquelyn",
+ "Erma",
+ "Leticia",
+ "Krista",
+ "Roxanne",
+ "Robyn",
+ "Rosalie",
+ "Alexandra",
+ "Brooke",
+ "Bethany",
+ "Bernadette",
+ "Traci",
+ "Nichole",
+ "Krystal",
+ "Angelina",
+ "Nadine",
+ "Estelle",
+ "Dianna",
+ "Rosemarie",
+ "Desiree",
+ "Lynette",
+ "Cristina",
+ "Leigh",
+ "Meghan",
+ "Eloise",
+ "Rochelle",
+ "Jana",
+ "Gwen",
+ "Kerry",
+ "Jenna",
+ "Tricia",
+ "Laverne",
+ "Alexis",
+ "Tasha",
+ "Kellie",
+ "Sonja",
+ "Mandy",
+ "Lorene",
+ "Elsa",
+ "Camille",
+ "Tami",
+ "Elisa",
+ "Kristie",
+ "James",
+ "John",
+ "Robert",
+ "Michael",
+ "William",
+ "David",
+ "Richard",
+ "Thomas",
+ "Charles",
+ "Christopher",
+ "Daniel",
+ "Dante",
+ "Paul",
+ "Mark",
+ "George",
+ "Kenneth",
+ "Steven",
+ "Edward",
+ "Brian",
+ "Ronald",
+ "Anthony",
+ "Albert",
+ "Alfred",
+ "Kevin",
+ "Jason",
+ "Matthew",
+ "Gary",
+ "Timothy",
+ "Frank",
+ "Eric",
+ "Stephen",
+ "Andrew",
+ "Raymond",
+ "Greg",
+ "Joshua",
+ "Jerry",
+ "Dennis",
+ "Peter",
+ "Henry",
+ "Carl",
+ "Arthur",
+ "Ryan",
+ "Roger",
+ "Joe",
+ "Juan",
+ "Jonathan",
+ "Justin",
+ "Terry",
+ "Gerald",
+ "Keith",
+ "Samuel",
+ "Willie",
+ "Ralph",
+ "Roy",
+ "Brandon",
+ "Adam",
+ "Harry",
+ "Wayne",
+ "Billy",
+ "Steve",
+ "Louis",
+ "Jeremy",
+ "Howard",
+ "Eugene",
+ "Carlos",
+ "Russell",
+ "Bobby",
+ "Victor",
+ "Martin",
+ "Ernest",
+ "Phillip",
+ "Craig",
+ "Alan",
+ "Shawn",
+ "Sean",
+ "Philip",
+ "Chris",
+ "Johnny",
+ "Earl",
+ "Jimmy",
+ "Bryan",
+ "Tony",
+ "Luis",
+ "Mike",
+ "Stanley",
+ "Leonard",
+ "Nathan",
+ "Dale",
+ "Manuel",
+ "Rodney",
+ "Curtis",
+ "Norman",
+ "Allen",
+ "Marvin",
+ "Vincent",
+ "Glenn",
+ "Travis",
+ "Jacob",
+ "Kyle",
+ "Francis",
+ "Bradley",
+ "Joel",
+ "Edwin",
+ "Eddie",
+ "Barry",
+ "Alexander",
+ "Bernard",
+ "Marcus",
+ "Micheal",
+ "Theodore",
+ "Clifford",
+ "Miguel",
+ "Oscar",
+ "Jay",
+ "Jim",
+ "Tom",
+ "Calvin",
+ "Alex",
+ "Jon",
+ "Ronnie",
+ "Bill",
+ "Lloyd",
+ "Tommy",
+ "Leon",
+ "Derek",
+ "Warren",
+ "Darrell",
+ "Jerome",
+ "Leo",
+ "Tim",
+ "Wesley",
+ "Gordon",
+ "Dean",
+ "Greg",
+ "Jorge",
+ "Dustin",
+ "Derrick",
+ "Dan",
+ "Herman",
+ "Glen",
+ "Shane",
+ "Rick",
+ "Brent",
+ "Tyler",
+ "Marc",
+ "Ruben",
+ "Brett",
+ "Nathaniel",
+ "Rafael",
+ "Leslie",
+ "Edgar",
+ "Raul",
+ "Ben",
+ "Chester",
+ "Cecil",
+ "Duane",
+ "Franklin",
+ "Andre",
+ "Elmer",
+ "Brad",
+ "Gabriel",
+ "Ron",
+ "Mitchell",
+ "Roland",
+ "Arnold",
+ "Harvey",
+ "Jared",
+ "Adrian",
+ "Karl",
+ "Cory",
+ "Claude",
+ "Erik",
+ "Darryl",
+ "Jamie",
+ "Neil",
+ "Jessie",
+ "Christian",
+ "Ted",
+ "Mathew",
+ "Tyrone",
+ "Darren",
+ "Kurt",
+ "Allan",
+ "Guy",
+ "Max",
+ "Dwayne",
+ "Ian",
+ "Ken",
+ "Bob",
+ "Dave",
+ "Ivan",
+ "Johnnie",
+ "Sid",
+ "Sidney",
+ "Byron",
+ "Julian",
+ "Morris",
+ "Clifton",
+ "Willard",
+ "Daryl",
+ "Ross",
+ "Andy",
+ "Kirk",
+ "Terrence",
+ "Fred",
+ "Freddie",
+ "Wade",
+ "Stuart",
+ "Joey",
+ "Nick",
+ "Julius",
+ "Trevor",
+ "Luke",
+ "Gerard",
+ "Hubert",
+ "Shaun",
+ "Matt",
+ "Cameron",
+ "Neal",
+ "Wilbur",
+ "Grant",
+ "Jean",
+ "Johnathan",
+ "Rudolph",
+ "Rudy",
+ "Marco",
+ "Garry",
+ "Bennie",
+ "Ed",
+ "Colin",
+ "Earnest",
+ "Lucas",
+ "Benny",
+ "Noel",
+ "Garrett",
+ "Gregg",
+ "Devin",
+ "Kim",
+ "Simon",
+ "Rufus",
+ "Clint",
+ "Josh",
+ "Hugo",
+ "Erick",
+ "Frankie",
+ "Stewart",
+ "Terence",
+ "Conrad",
+ "Percy",
+ "Tommie",
+ "Jan"
+]; \ No newline at end of file
diff --git a/lib/locales/en_ZA/name/index.js b/lib/locales/en_ZA/name/index.js
new file mode 100644
index 00000000..f71eef88
--- /dev/null
+++ b/lib/locales/en_ZA/name/index.js
@@ -0,0 +1,7 @@
+var name = {};
+module['exports'] = name;
+name.name = require("./name");
+name.male_first_name = require("./male_first_name");
+name.female_first_name = require("./female_first_name");
+name.first_name = require("./first_name");
+name.last_name = require("./last_name"); \ No newline at end of file
diff --git a/lib/locales/en_ZA/name/last_name.js b/lib/locales/en_ZA/name/last_name.js
new file mode 100644
index 00000000..b92c9a9c
--- /dev/null
+++ b/lib/locales/en_ZA/name/last_name.js
@@ -0,0 +1,243 @@
+module["exports"] = [
+ "Dlamini",
+ "Zulu",
+ "Mabunda",
+ "Makhanya",
+ "Khoza",
+ "Zuma",
+ "Zondi",
+ "Abbott",
+ "Adams",
+ "Anderson",
+ "Adcock",
+ "Ashley",
+ "Amla",
+ "Baloyi",
+ "Bailey",
+ "Barrows",
+ "Barton",
+ "Berge",
+ "Bernhard",
+ "Bernier",
+ "Boyle",
+ "Braun",
+ "Blanckenberg",
+ "Brekke",
+ "Brown",
+ "Bruen",
+ "Bacher",
+ "Boucher",
+ "Bromfield",
+ "Benjamin",
+ "Bongo",
+ "Bhana",
+ "Bhengu",
+ "Carter",
+ "Cameron",
+ "Champlin",
+ "Collins",
+ "Cullinan",
+ "Chetty",
+ "Cook",
+ "Connelly",
+ "Crooks",
+ "Cummings",
+ "Cassim",
+ "Dube",
+ "Dhlamini",
+ "Daniel",
+ "Davis",
+ "Dower",
+ "Dixon",
+ "Dickinson",
+ "Douglas",
+ "Deane",
+ "Ebert",
+ "Elworthy",
+ "Feest",
+ "Fuller",
+ "Fish",
+ "Fisher",
+ "Fichardt",
+ "Govender",
+ "Gupta",
+ "Gandhi",
+ "Gibson",
+ "Gibbs",
+ "Gleason",
+ "Goonam",
+ "Gordhan",
+ "Goodwin",
+ "Grady",
+ "Graham",
+ "Grant",
+ "Green",
+ "Greenholt",
+ "Grimes",
+ "Hlongwane",
+ "Harris",
+ "Hall",
+ "Horne",
+ "Harvey",
+ "Hearne",
+ "Heller",
+ "Herzog",
+ "Hudson",
+ "Hlatshwayo",
+ "Hitchinson",
+ "Hathorn",
+ "Hayworth",
+ "Henderson",
+ "Jacobs",
+ "Jacobson",
+ "Johnson",
+ "Johnston",
+ "Jones",
+ "Joseph",
+ "Kalyan",
+ "Kathrada",
+ "King",
+ "Klusener",
+ "Klein",
+ "Keith",
+ "Kennedy",
+ "Kuhn",
+ "Khumalu",
+ "Khoza",
+ "Kunene",
+ "Kempis",
+ "Kemp",
+ "Kubheka",
+ "Khuzwayo",
+ "Linsey",
+ "Lowe",
+ "Letsoalo",
+ "Mhlanga",
+ "Mabaso",
+ "Mazibuko",
+ "Moosa",
+ "Mhlongo",
+ "Mahlangu",
+ "Markham",
+ "Mansell",
+ "Marvin",
+ "Mayer",
+ "Mbatha",
+ "Maseko",
+ "Milton",
+ "Mkhize",
+ "Moses",
+ "McKenzie",
+ "McMillan",
+ "McLaren",
+ "McLean",
+ "Miller",
+ "Mills",
+ "Mitchell",
+ "Mchunu",
+ "Munsamy",
+ "Mnisi",
+ "Moen",
+ "Motaung",
+ "Mudau",
+ "Mohr",
+ "Monahan",
+ "Moore",
+ "Moosa",
+ "Moonsamy",
+ "Mphahlele",
+ "Morar",
+ "Molefe",
+ "Mthembu",
+ "Muller",
+ "Murray",
+ "Moloi",
+ "Mofokeng",
+ "Modise",
+ "Mtshali",
+ "Mathebula",
+ "Mthethwa",
+ "Maluleke",
+ "Mokwena",
+ "Motloung",
+ "Mahabeer",
+ "Mngomezulu",
+ "Nolan",
+ "Nair",
+ "Ndlovu",
+ "Nkosi",
+ "Ngcobo",
+ "Ngwenya",
+ "Ntuli",
+ "Nxumalo",
+ "Ngubane",
+ "Nhlapo",
+ "Ndaba",
+ "Nkomo",
+ "Oliphant",
+ "Ochse",
+ "O'Linn",
+ "Patel",
+ "Parker",
+ "Parkin",
+ "Pillay",
+ "Parnell",
+ "Peterson",
+ "Procter",
+ "Poore",
+ "Pollock",
+ "Powell",
+ "Price",
+ "Prince",
+ "Pithey",
+ "Reilly",
+ "Reid",
+ "Rowe",
+ "Roberts",
+ "Richards",
+ "Richardson",
+ "Schmidt",
+ "Schultz",
+ "Stewart",
+ "Symcox",
+ "Smith",
+ "Stokes",
+ "Sinclair",
+ "Singh",
+ "Shongwe",
+ "Sibiya",
+ "Schwarz",
+ "Snooke",
+ "Sithole",
+ "Terry",
+ "Thompson",
+ "Tromp",
+ "Tuckett",
+ "Taylor",
+ "Tsabalala",
+ "Wesley",
+ "Walsh",
+ "Weber",
+ "Weimann",
+ "Willoughby",
+ "White",
+ "Welch",
+ "West",
+ "Williamson",
+ "Ziemann",
+ "Albertyn",
+ "Bosman",
+ "Bester",
+ "Truter",
+ "Tsotetsi",
+ "Prinsloo",
+ "van Niekerk",
+ "Zimmerman",
+ "Venter",
+ "van den Berg",
+ "Xaba",
+ "Zulu",
+ "Zungu",
+ "Zuma",
+ "Zwane"
+]; \ No newline at end of file
diff --git a/lib/locales/en_ZA/name/male_first_name.js b/lib/locales/en_ZA/name/male_first_name.js
new file mode 100644
index 00000000..31c1b651
--- /dev/null
+++ b/lib/locales/en_ZA/name/male_first_name.js
@@ -0,0 +1,253 @@
+module["exports"] = [
+ "James",
+ "John",
+ "Robert",
+ "Michael",
+ "William",
+ "David",
+ "Richard",
+ "Thomas",
+ "Charles",
+ "Christopher",
+ "Daniel",
+ "Dante",
+ "Paul",
+ "Mark",
+ "George",
+ "Kenneth",
+ "Steven",
+ "Edward",
+ "Brian",
+ "Ronald",
+ "Anthony",
+ "Albert",
+ "Alfred",
+ "Kevin",
+ "Jason",
+ "Matthew",
+ "Gary",
+ "Timothy",
+ "Frank",
+ "Eric",
+ "Stephen",
+ "Andrew",
+ "Raymond",
+ "Greg",
+ "Joshua",
+ "Jerry",
+ "Dennis",
+ "Peter",
+ "Henry",
+ "Carl",
+ "Arthur",
+ "Ryan",
+ "Roger",
+ "Joe",
+ "Juan",
+ "Jonathan",
+ "Justin",
+ "Terry",
+ "Gerald",
+ "Keith",
+ "Samuel",
+ "Willie",
+ "Ralph",
+ "Roy",
+ "Brandon",
+ "Adam",
+ "Harry",
+ "Wayne",
+ "Billy",
+ "Steve",
+ "Louis",
+ "Jeremy",
+ "Howard",
+ "Eugene",
+ "Carlos",
+ "Russell",
+ "Bobby",
+ "Victor",
+ "Martin",
+ "Ernest",
+ "Phillip",
+ "Craig",
+ "Alan",
+ "Shawn",
+ "Sean",
+ "Philip",
+ "Chris",
+ "Johnny",
+ "Earl",
+ "Jimmy",
+ "Bryan",
+ "Tony",
+ "Luis",
+ "Mike",
+ "Stanley",
+ "Leonard",
+ "Nathan",
+ "Dale",
+ "Manuel",
+ "Rodney",
+ "Curtis",
+ "Norman",
+ "Allen",
+ "Marvin",
+ "Vincent",
+ "Glenn",
+ "Travis",
+ "Jacob",
+ "Kyle",
+ "Francis",
+ "Bradley",
+ "Joel",
+ "Edwin",
+ "Eddie",
+ "Barry",
+ "Alexander",
+ "Bernard",
+ "Marcus",
+ "Micheal",
+ "Theodore",
+ "Clifford",
+ "Miguel",
+ "Oscar",
+ "Jay",
+ "Jim",
+ "Tom",
+ "Calvin",
+ "Alex",
+ "Jon",
+ "Ronnie",
+ "Bill",
+ "Lloyd",
+ "Tommy",
+ "Leon",
+ "Derek",
+ "Warren",
+ "Darrell",
+ "Jerome",
+ "Leo",
+ "Tim",
+ "Wesley",
+ "Gordon",
+ "Dean",
+ "Greg",
+ "Jorge",
+ "Dustin",
+ "Derrick",
+ "Dan",
+ "Herman",
+ "Glen",
+ "Shane",
+ "Rick",
+ "Brent",
+ "Tyler",
+ "Marc",
+ "Ruben",
+ "Brett",
+ "Nathaniel",
+ "Rafael",
+ "Leslie",
+ "Edgar",
+ "Raul",
+ "Ben",
+ "Chester",
+ "Cecil",
+ "Duane",
+ "Franklin",
+ "Andre",
+ "Elmer",
+ "Brad",
+ "Gabriel",
+ "Ron",
+ "Mitchell",
+ "Roland",
+ "Arnold",
+ "Harvey",
+ "Jared",
+ "Adrian",
+ "Karl",
+ "Cory",
+ "Claude",
+ "Erik",
+ "Darryl",
+ "Jamie",
+ "Neil",
+ "Jessie",
+ "Christian",
+ "Ted",
+ "Mathew",
+ "Tyrone",
+ "Darren",
+ "Kurt",
+ "Allan",
+ "Guy",
+ "Max",
+ "Dwayne",
+ "Ian",
+ "Ken",
+ "Bob",
+ "Dave",
+ "Ivan",
+ "Johnnie",
+ "Sid",
+ "Sidney",
+ "Byron",
+ "Julian",
+ "Morris",
+ "Clifton",
+ "Willard",
+ "Daryl",
+ "Ross",
+ "Andy",
+ "Kirk",
+ "Terrence",
+ "Fred",
+ "Freddie",
+ "Wade",
+ "Stuart",
+ "Joey",
+ "Nick",
+ "Julius",
+ "Trevor",
+ "Luke",
+ "Gerard",
+ "Hubert",
+ "Shaun",
+ "Matt",
+ "Cameron",
+ "Neal",
+ "Wilbur",
+ "Grant",
+ "Jean",
+ "Johnathan",
+ "Rudolph",
+ "Rudy",
+ "Marco",
+ "Garry",
+ "Bennie",
+ "Ed",
+ "Colin",
+ "Earnest",
+ "Lucas",
+ "Benny",
+ "Noel",
+ "Garrett",
+ "Gregg",
+ "Devin",
+ "Kim",
+ "Simon",
+ "Rufus",
+ "Clint",
+ "Josh",
+ "Hugo",
+ "Erick",
+ "Frankie",
+ "Stewart",
+ "Terence",
+ "Conrad",
+ "Percy",
+ "Tommie",
+ "Jan"
+ ]; \ No newline at end of file
diff --git a/lib/locales/en_ZA/name/name.js b/lib/locales/en_ZA/name/name.js
new file mode 100644
index 00000000..5734174b
--- /dev/null
+++ b/lib/locales/en_ZA/name/name.js
@@ -0,0 +1,4 @@
+module["exports"] = [
+ "#{first_name} #{last_name}",
+ "#{last_name} #{first_name}"
+];
diff --git a/lib/locales/en_ZA/phone_number/area_code.js b/lib/locales/en_ZA/phone_number/area_code.js
new file mode 100644
index 00000000..0da149d1
--- /dev/null
+++ b/lib/locales/en_ZA/phone_number/area_code.js
@@ -0,0 +1,40 @@
+module["exports"] = [
+ "10",
+ "11",
+ "12",
+ "13",
+ "14",
+ "15",
+ "16",
+ "17",
+ "18",
+ "21",
+ "22",
+ "23",
+ "24",
+ "27",
+ "28",
+ "31",
+ "32",
+ "33",
+ "34",
+ "35",
+ "36",
+ "39",
+ "40",
+ "41",
+ "42",
+ "43",
+ "44",
+ "45",
+ "46",
+ "47",
+ "48",
+ "49",
+ "51",
+ "53",
+ "54",
+ "56",
+ "57",
+ "58"
+];
diff --git a/lib/locales/en_ZA/phone_number/exchange_code.js b/lib/locales/en_ZA/phone_number/exchange_code.js
new file mode 100644
index 00000000..b201c79a
--- /dev/null
+++ b/lib/locales/en_ZA/phone_number/exchange_code.js
@@ -0,0 +1,285 @@
+module["exports"] = [
+ "201",
+ "202",
+ "203",
+ "205",
+ "206",
+ "207",
+ "208",
+ "209",
+ "210",
+ "212",
+ "213",
+ "214",
+ "215",
+ "216",
+ "217",
+ "218",
+ "219",
+ "224",
+ "225",
+ "227",
+ "228",
+ "229",
+ "231",
+ "234",
+ "239",
+ "240",
+ "248",
+ "251",
+ "252",
+ "253",
+ "254",
+ "256",
+ "260",
+ "262",
+ "267",
+ "269",
+ "270",
+ "276",
+ "281",
+ "283",
+ "301",
+ "302",
+ "303",
+ "304",
+ "305",
+ "307",
+ "308",
+ "309",
+ "310",
+ "312",
+ "313",
+ "314",
+ "315",
+ "316",
+ "317",
+ "318",
+ "319",
+ "320",
+ "321",
+ "323",
+ "330",
+ "331",
+ "334",
+ "336",
+ "337",
+ "339",
+ "347",
+ "351",
+ "352",
+ "360",
+ "361",
+ "386",
+ "401",
+ "402",
+ "404",
+ "405",
+ "406",
+ "407",
+ "408",
+ "409",
+ "410",
+ "412",
+ "413",
+ "414",
+ "415",
+ "417",
+ "419",
+ "423",
+ "424",
+ "425",
+ "434",
+ "435",
+ "440",
+ "443",
+ "445",
+ "464",
+ "469",
+ "470",
+ "475",
+ "478",
+ "479",
+ "480",
+ "484",
+ "501",
+ "502",
+ "503",
+ "504",
+ "505",
+ "507",
+ "508",
+ "509",
+ "510",
+ "512",
+ "513",
+ "515",
+ "516",
+ "517",
+ "518",
+ "520",
+ "530",
+ "540",
+ "541",
+ "551",
+ "557",
+ "559",
+ "561",
+ "562",
+ "563",
+ "564",
+ "567",
+ "570",
+ "571",
+ "573",
+ "574",
+ "580",
+ "585",
+ "586",
+ "601",
+ "602",
+ "603",
+ "605",
+ "606",
+ "607",
+ "608",
+ "609",
+ "610",
+ "612",
+ "614",
+ "615",
+ "616",
+ "617",
+ "618",
+ "619",
+ "620",
+ "623",
+ "626",
+ "630",
+ "631",
+ "636",
+ "641",
+ "646",
+ "650",
+ "651",
+ "660",
+ "661",
+ "662",
+ "667",
+ "678",
+ "682",
+ "701",
+ "702",
+ "703",
+ "704",
+ "706",
+ "707",
+ "708",
+ "712",
+ "713",
+ "714",
+ "715",
+ "716",
+ "717",
+ "718",
+ "719",
+ "720",
+ "724",
+ "727",
+ "731",
+ "732",
+ "734",
+ "737",
+ "740",
+ "754",
+ "757",
+ "760",
+ "763",
+ "765",
+ "770",
+ "772",
+ "773",
+ "774",
+ "775",
+ "781",
+ "785",
+ "786",
+ "801",
+ "802",
+ "803",
+ "804",
+ "805",
+ "806",
+ "808",
+ "810",
+ "812",
+ "813",
+ "814",
+ "815",
+ "816",
+ "817",
+ "818",
+ "828",
+ "830",
+ "831",
+ "832",
+ "835",
+ "843",
+ "845",
+ "847",
+ "848",
+ "850",
+ "856",
+ "857",
+ "858",
+ "859",
+ "860",
+ "862",
+ "863",
+ "864",
+ "865",
+ "870",
+ "872",
+ "878",
+ "901",
+ "903",
+ "904",
+ "906",
+ "907",
+ "908",
+ "909",
+ "910",
+ "912",
+ "913",
+ "914",
+ "915",
+ "916",
+ "917",
+ "918",
+ "919",
+ "920",
+ "925",
+ "928",
+ "931",
+ "936",
+ "937",
+ "940",
+ "941",
+ "947",
+ "949",
+ "952",
+ "954",
+ "956",
+ "959",
+ "970",
+ "971",
+ "972",
+ "973",
+ "975",
+ "978",
+ "979",
+ "980",
+ "984",
+ "985",
+ "989"
+];
diff --git a/lib/locales/en_ZA/phone_number/formats.js b/lib/locales/en_ZA/phone_number/formats.js
new file mode 100644
index 00000000..00a824b9
--- /dev/null
+++ b/lib/locales/en_ZA/phone_number/formats.js
@@ -0,0 +1,14 @@
+module["exports"] = [
+ "(0##) ### ####",
+ "0## ### ####",
+ "+27 ## ### ####",
+ "01# ### #####",
+ "02# ### #####",
+ "03# ### #####",
+ "04# ### #####",
+ "05# ### #####",
+ "0800 ### ###",
+ "0860 ### ###",
+ "01#########",
+ "01# ########"
+]; \ No newline at end of file
diff --git a/lib/locales/en_ZA/phone_number/index.js b/lib/locales/en_ZA/phone_number/index.js
new file mode 100644
index 00000000..6e7023a8
--- /dev/null
+++ b/lib/locales/en_ZA/phone_number/index.js
@@ -0,0 +1,5 @@
+var phone_number = {};
+module['exports'] = phone_number;
+phone_number.area_code = require("./area_code");
+phone_number.exchange_code = require("./exchange_code");
+phone_number.formats = require("./formats"); \ No newline at end of file
diff --git a/lib/locales/es/commerce/color.js b/lib/locales/es/commerce/color.js
new file mode 100644
index 00000000..d08b5bbc
--- /dev/null
+++ b/lib/locales/es/commerce/color.js
@@ -0,0 +1,11 @@
+module["exports"] = [
+ "Rojo",
+ "Azul",
+ "Negro",
+ "Gris",
+ "Blanco",
+ "Amarillo",
+ "Verde",
+ "Morado",
+ "Violeta"
+] \ No newline at end of file
diff --git a/lib/locales/es/commerce/department.js b/lib/locales/es/commerce/department.js
new file mode 100644
index 00000000..50fd8504
--- /dev/null
+++ b/lib/locales/es/commerce/department.js
@@ -0,0 +1,21 @@
+module["exports"] = [
+ "Librería",
+ "Deportes",
+ "Videojuegos",
+ "Electrónica",
+ "Moda",
+ "Joyería",
+ "Marroquinería",
+ "Juguetería",
+ "Mascotas",
+ "Bebes",
+ "Bricolaje",
+ "Informática",
+ "Salud",
+ "Parafarmacia",
+ "Papelería",
+ "Cine",
+ "Música",
+ "Hogar",
+ "Decoración"
+] \ No newline at end of file
diff --git a/lib/locales/es/commerce/index.js b/lib/locales/es/commerce/index.js
new file mode 100644
index 00000000..c5513b11
--- /dev/null
+++ b/lib/locales/es/commerce/index.js
@@ -0,0 +1,5 @@
+var commerce = {};
+module["exports"] = commerce;
+commerce.color = require("./color");
+commerce.department = require("./department");
+commerce.product_name = require("./product_name");
diff --git a/lib/locales/es/commerce/product_name.js b/lib/locales/es/commerce/product_name.js
new file mode 100644
index 00000000..df5f82d2
--- /dev/null
+++ b/lib/locales/es/commerce/product_name.js
@@ -0,0 +1,56 @@
+module["exports"] = {
+ "adjective": [
+ "Pequeño",
+ "Ergonómico",
+ "Rústico",
+ "Inteligente",
+ "Increible",
+ "Fantástico",
+ "Práctico",
+ "Sorprendente",
+ "Genérico",
+ "Artesanal",
+ "Hecho a mano",
+ "Guapo",
+ "Guapa",
+ "Refinado",
+ "Sabroso"
+ ],
+ "material": [
+ "Acero",
+ "Madera",
+ "Plástico",
+ "Algodón",
+ "Granito",
+ "Metal",
+ "Ladrillo",
+ "Hormigon"
+ ],
+ "product": [
+ "Silla",
+ "Coche",
+ "Ordenador",
+ "Teclado",
+ "Raton",
+ "Bicicleta",
+ "Pelota",
+ "Guantes",
+ "Pantalones",
+ "Camiseta",
+ "Mesa",
+ "Zapatos",
+ "Gorro",
+ "Toallas",
+ "Sopa",
+ "Atún",
+ "Pollo",
+ "Pescado",
+ "Queso",
+ "Bacon",
+ "Pizza",
+ "Ensalada",
+ "Salchichas",
+ "Patatas fritas"
+ ]
+ };
+ \ No newline at end of file
diff --git a/lib/locales/es/company/adjective.js b/lib/locales/es/company/adjective.js
index b2487737..d25d73c8 100644
--- a/lib/locales/es/company/adjective.js
+++ b/lib/locales/es/company/adjective.js
@@ -20,7 +20,7 @@ module["exports"] = [
"Reducido",
"Mejorado",
"Para toda la empresa",
- "Ergonomico",
+ "Ergonómico",
"Exclusivo",
"Expandido",
"Extendido",
@@ -47,7 +47,7 @@ module["exports"] = [
"Operativo",
"Optimizado",
"Opcional",
- "Organico",
+ "Orgánico",
"Organizado",
"Perseverando",
"Persistente",
@@ -66,7 +66,7 @@ module["exports"] = [
"Re-contextualizado",
"Re-implementado",
"Reducido",
- "Ingenieria inversa",
+ "Ingeniería inversa",
"Robusto",
"Fácil",
"Seguro",
diff --git a/lib/locales/es/index.js b/lib/locales/es/index.js
index 3abfe808..7f3a5697 100644
--- a/lib/locales/es/index.js
+++ b/lib/locales/es/index.js
@@ -7,3 +7,4 @@ es.internet = require("./internet");
es.name = require("./name");
es.phone_number = require("./phone_number");
es.cell_phone = require("./cell_phone");
+es.commerce = require("./commerce");
diff --git a/lib/locales/es/name/first_name.js b/lib/locales/es/name/first_name.js
index 0e12d669..44aa44b6 100644
--- a/lib/locales/es/name/first_name.js
+++ b/lib/locales/es/name/first_name.js
@@ -16,8 +16,8 @@ module["exports"] = [
"César",
"Claudio",
"Clemente",
- "Cristian",
- "Cristobal",
+ "Cristián",
+ "Cristóbal",
"Daniel",
"David",
"Diego",
@@ -162,7 +162,7 @@ module["exports"] = [
"Lilia",
"Lorena",
"Lourdes",
- "Lucia",
+ "Lucía",
"Luisa",
"Luz",
"Magdalena",
@@ -180,7 +180,7 @@ module["exports"] = [
"María Teresa",
"Mariana",
"Maricarmen",
- "Marilu",
+ "Marilú",
"Marisol",
"Marta",
"Mayte",
@@ -196,13 +196,13 @@ module["exports"] = [
"Raquel",
"Rebeca",
"Reina",
- "Rocio",
+ "Rocío",
"Rosa",
"Rosalia",
"Rosario",
"Sara",
"Silvia",
- "Sofia",
+ "Sofía",
"Soledad",
"Sonia",
"Susana",
diff --git a/lib/locales/es/name/last_name.js b/lib/locales/es/name/last_name.js
index 9d69b9a2..b48e4e71 100644
--- a/lib/locales/es/name/last_name.js
+++ b/lib/locales/es/name/last_name.js
@@ -9,14 +9,14 @@ module["exports"] = [
"Adorno",
"Agosto",
"Aguayo",
- "Águilar",
+ "Aguilar",
"Aguilera",
"Aguirre",
"Alanis",
- "Alaniz",
+ "Alaníz",
"Alarcón",
"Alba",
- "Alcala",
+ "Alcalá",
"Alcántar",
"Alcaraz",
"Alejandro",
@@ -24,14 +24,14 @@ module["exports"] = [
"Alfaro",
"Alicea",
"Almanza",
- "Almaraz",
+ "Almaráz",
"Almonte",
"Alonso",
"Alonzo",
"Altamirano",
"Alva",
"Alvarado",
- "Alvarez",
+ "Álvarez",
"Amador",
"Amaya",
"Anaya",
@@ -48,7 +48,7 @@ module["exports"] = [
"Arellano",
"Arenas",
"Arevalo",
- "Arguello",
+ "Argüello",
"Arias",
"Armas",
"Armendáriz",
@@ -90,7 +90,7 @@ module["exports"] = [
"Bermúdez",
"Bernal",
"Berríos",
- "Bétancourt",
+ "Betancourt",
"Blanco",
"Bonilla",
"Borrego",
@@ -119,7 +119,7 @@ module["exports"] = [
"Cantú",
"Caraballo",
"Carbajal",
- "Cardenas",
+ "Cárdenas",
"Cardona",
"Carmona",
"Carranza",
@@ -129,11 +129,11 @@ module["exports"] = [
"Carrera",
"Carrero",
"Carrillo",
- "Carrion",
+ "Carrión",
"Carvajal",
"Casanova",
"Casares",
- "Casárez",
+ "Casarez",
"Casas",
"Casillas",
"Castañeda",
@@ -171,7 +171,7 @@ module["exports"] = [
"Corrales",
"Correa",
"Cortés",
- "Cortez",
+ "Cortéz",
"Cotto",
"Covarrubias",
"Crespo",
@@ -195,10 +195,9 @@ module["exports"] = [
"Delvalle",
"Díaz",
"Domínguez",
- "Domínquez",
"Duarte",
"Dueñas",
- "Duran",
+ "Durán",
"Echevarría",
"Elizondo",
"Enríquez",
@@ -225,7 +224,6 @@ module["exports"] = [
"Flores",
"Flórez",
"Fonseca",
- "Franco",
"Frías",
"Fuentes",
"Gaitán",
@@ -236,7 +234,7 @@ module["exports"] = [
"Galván",
"Gálvez",
"Gamboa",
- "Gamez",
+ "Gámez",
"Gaona",
"Garay",
"García",
@@ -251,9 +249,7 @@ module["exports"] = [
"Godínez",
"Godoy",
"Gómez",
- "Gonzales",
"González",
- "Gollum",
"Gracia",
"Granado",
"Granados",
@@ -264,15 +260,13 @@ module["exports"] = [
"Guerra",
"Guerrero",
"Guevara",
- "Guillen",
+ "Guillén",
"Gurule",
"Gutiérrez",
"Guzmán",
"Haro",
"Henríquez",
"Heredia",
- "Hernádez",
- "Hernandes",
"Hernández",
"Herrera",
"Hidalgo",
@@ -289,7 +283,6 @@ module["exports"] = [
"Jaramillo",
"Jasso",
"Jiménez",
- "Jimínez",
"Juárez",
"Jurado",
"Laboy",
@@ -371,7 +364,7 @@ module["exports"] = [
"Montenegro",
"Montero",
"Montes",
- "Montez",
+ "Montéz",
"Montoya",
"Mora",
"Morales",
@@ -444,7 +437,6 @@ module["exports"] = [
"Perales",
"Peralta",
"Perea",
- "Peres",
"Pérez",
"Pichardo",
"Piña",
@@ -468,10 +460,9 @@ module["exports"] = [
"Quintana",
"Quintanilla",
"Quintero",
- "Quiroz",
+ "Quiróz",
"Rael",
"Ramírez",
- "Ramón",
"Ramos",
"Rangel",
"Rascón",
@@ -495,9 +486,7 @@ module["exports"] = [
"Robles",
"Rocha",
"Rodarte",
- "Rodrígez",
"Rodríguez",
- "Rodríquez",
"Rojas",
"Rojo",
"Roldán",
@@ -512,7 +501,7 @@ module["exports"] = [
"Roybal",
"Rubio",
"Ruelas",
- "Ruiz",
+ "Ruíz",
"Saavedra",
"Sáenz",
"Saiz",
@@ -526,7 +515,6 @@ module["exports"] = [
"Salinas",
"Samaniego",
"Sanabria",
- "Sanches",
"Sánchez",
"Sandoval",
"Santacruz",
@@ -599,7 +587,6 @@ module["exports"] = [
"Vanegas",
"Varela",
"Vargas",
- "Vásquez",
"Vázquez",
"Vega",
"Vela",
@@ -620,7 +607,6 @@ module["exports"] = [
"Villalobos",
"Villalpando",
"Villanueva",
- "Villareal",
"Villarreal",
"Villaseñor",
"Villegas",
diff --git a/lib/locales/fr_CA/address/postcode.js b/lib/locales/fr_CA/address/postcode.js
index cd73ce97..0ea6945c 100644
--- a/lib/locales/fr_CA/address/postcode.js
+++ b/lib/locales/fr_CA/address/postcode.js
@@ -1,3 +1,20 @@
module["exports"] = [
- "?#? #?#"
+ "A#? #?#",
+ "B#? #?#",
+ "C#? #?#",
+ "E#? #?#",
+ "G#? #?#",
+ "H#? #?#",
+ "J#? #?#",
+ "K#? #?#",
+ "L#? #?#",
+ "M#? #?#",
+ "N#? #?#",
+ "P#? #?#",
+ "R#? #?#",
+ "S#? #?#",
+ "T#? #?#",
+ "V#? #?#",
+ "X#? #?#",
+ "Y#? #?#",
];
diff --git a/lib/locales/fr_CH/address/city.js b/lib/locales/fr_CH/address/city.js
new file mode 100644
index 00000000..d62eafb1
--- /dev/null
+++ b/lib/locales/fr_CH/address/city.js
@@ -0,0 +1,3 @@
+module["exports"] = [
+ "#{city_name}"
+];
diff --git a/lib/locales/fr_CH/address/city_name.js b/lib/locales/fr_CH/address/city_name.js
new file mode 100644
index 00000000..3f320626
--- /dev/null
+++ b/lib/locales/fr_CH/address/city_name.js
@@ -0,0 +1,175 @@
+module["exports"] = [
+ "Aarau",
+ "Adliswil",
+ "Aesch",
+ "Affoltern am Albis",
+ "Aigle",
+ "Allschwil",
+ "Altdorf",
+ "Altstätten",
+ "Amriswil",
+ "Appenzell",
+ "Arbon",
+ "Arlesheim",
+ "Arosa",
+ "Arth",
+ "Baar",
+ "Baden",
+ "Bassersdorf",
+ "Bellinzone",
+ "Belp",
+ "Berne",
+ "Berthoud",
+ "Bienne",
+ "Binningen",
+ "Birsfelden",
+ "Brigue-Glis",
+ "Brugg",
+ "Buchs",
+ "Bulle",
+ "Bussigny",
+ "Bâle",
+ "Bülach",
+ "Carouge",
+ "Cham",
+ "Chiasso",
+ "Chêne-Bougeries",
+ "Coire",
+ "Crissier",
+ "Davos",
+ "Delémont",
+ "Dietikon",
+ "Dübendorf",
+ "Ebikon",
+ "Einsiedeln",
+ "Emmen",
+ "Flawil",
+ "Frauenfeld",
+ "Freienbach",
+ "Fribourg",
+ "Genève",
+ "Gland",
+ "Glaris Centre",
+ "Glaris Nord",
+ "Gossau",
+ "Granges",
+ "Herisau",
+ "Hinwil",
+ "Horgen",
+ "Horw",
+ "Illnau-Effretikon",
+ "Interlaken",
+ "Ittigen",
+ "Kloten",
+ "Kreuzlingen",
+ "Kriens",
+ "Köniz",
+ "Küsnacht",
+ "La Chaux-de-Fonds",
+ "La Neuveville",
+ "La Tour-de-Peilz",
+ "Lancy",
+ "Langenthal",
+ "Lausanne",
+ "Le Grand-Saconnex",
+ "Le Locle",
+ "Lenzbourg",
+ "Liestal",
+ "Locarno",
+ "Lucerne",
+ "Lugano",
+ "Lyss",
+ "Martigny",
+ "Meilen",
+ "Mendrisio",
+ "Meyrin",
+ "Monthey",
+ "Montreux",
+ "Morat",
+ "Morges",
+ "Moutier",
+ "Muri bei Bern",
+ "Muttenz",
+ "Männedorf",
+ "Möhlin",
+ "Münchenbuchsee",
+ "Münchenstein",
+ "Münsingen",
+ "Neuchâtel",
+ "Neuhausen am Rheinfall",
+ "Nyon",
+ "Oberwil",
+ "Oftringen",
+ "Olten",
+ "Onex",
+ "Opfikon",
+ "Ostermundigen",
+ "Payerne",
+ "Peseux",
+ "Pfäffikon",
+ "Plan-les-Ouates",
+ "Poliez-Pittet",
+ "Porrentruy",
+ "Pratteln",
+ "Prilly",
+ "Pully",
+ "Rapperswil-Jona",
+ "Regensdorf",
+ "Reinach",
+ "Renens",
+ "Rheinfelden",
+ "Richterswil",
+ "Riehen",
+ "Risch-Rotkreuz",
+ "Romanshorn",
+ "Rorschach",
+ "Rüti",
+ "Saint-Gall",
+ "Saint-Moritz",
+ "Sarnen",
+ "Schaffhouse",
+ "Schlieren",
+ "Schwytz",
+ "Sierre",
+ "Sion",
+ "Soleure",
+ "Spiez",
+ "Spreitenbach",
+ "Stans",
+ "Steffisburg",
+ "Steinhausen",
+ "Stäfa",
+ "Suhr",
+ "Sursee",
+ "Thalwil",
+ "Thoune",
+ "Thônex",
+ "Urdorf",
+ "Uster",
+ "Uzwil",
+ "Vernier",
+ "Versoix",
+ "Vevey",
+ "Veyrier",
+ "Villars-sur-Glâne",
+ "Viège",
+ "Volketswil",
+ "Wallisellen",
+ "Weinfelden",
+ "Wettingen",
+ "Wetzikon",
+ "Wil",
+ "Winterthour",
+ "Wohlen",
+ "Worb",
+ "Wädenswil",
+ "Yverdon-les-Bains",
+ "Zermatt",
+ "Zofingue",
+ "Zollikofen",
+ "Zollikon",
+ "Zoug",
+ "Zuchwil",
+ "Zurich",
+ "Écublens"
+];
diff --git a/lib/locales/fr_CH/address/country_code.js b/lib/locales/fr_CH/address/country_code.js
new file mode 100644
index 00000000..21074410
--- /dev/null
+++ b/lib/locales/fr_CH/address/country_code.js
@@ -0,0 +1,3 @@
+module["exports"] = [
+ "CH",
+];
diff --git a/lib/locales/fr_CH/address/default_country.js b/lib/locales/fr_CH/address/default_country.js
new file mode 100644
index 00000000..4ea8078d
--- /dev/null
+++ b/lib/locales/fr_CH/address/default_country.js
@@ -0,0 +1,3 @@
+module["exports"] = [
+ "Suisse"
+];
diff --git a/lib/locales/fr_CH/address/index.js b/lib/locales/fr_CH/address/index.js
new file mode 100644
index 00000000..23779fc6
--- /dev/null
+++ b/lib/locales/fr_CH/address/index.js
@@ -0,0 +1,9 @@
+var address = {};
+module['exports'] = address;
+address.country_code = require("./country_code");
+address.city = require("./city");
+address.city_name = require("./city_name");
+address.default_country = require("./default_country");
+address.postcode = require("./postcode");
+address.state = require("./state");
+
diff --git a/lib/locales/fr_CH/address/postcode.js b/lib/locales/fr_CH/address/postcode.js
new file mode 100644
index 00000000..cb94e7a7
--- /dev/null
+++ b/lib/locales/fr_CH/address/postcode.js
@@ -0,0 +1,11 @@
+module["exports"] = [
+ "1###",
+ "2###",
+ "3###",
+ "4###",
+ "5###",
+ "6###",
+ "7###",
+ "8###",
+ "9###"
+];
diff --git a/lib/locales/fr_CH/address/state.js b/lib/locales/fr_CH/address/state.js
new file mode 100644
index 00000000..09a036d5
--- /dev/null
+++ b/lib/locales/fr_CH/address/state.js
@@ -0,0 +1,28 @@
+module["exports"] = [
+ "Argovie",
+ "Appenzell Rhodes-Intérieures",
+ "Appenzell Rhodes-Extérieures",
+ "Bâle-Ville",
+ "Bâle-Campagne",
+ "Berne",
+ "Fribourg",
+ "Genève",
+ "Glaris",
+ "Grisons",
+ "Jura",
+ "Lucerne",
+ "Neuchâtel",
+ "Nidwald",
+ "Obwald",
+ "Schaffhouse",
+ "Schwyt",
+ "Soleure",
+ "Saint-Gall",
+ "Thurgovie",
+ "Tessin",
+ "Uri",
+ "Valai",
+ "Vaud",
+ "Zoug",
+ "Zurich"
+];
diff --git a/lib/locales/fr_CH/index.js b/lib/locales/fr_CH/index.js
new file mode 100644
index 00000000..6c5af44d
--- /dev/null
+++ b/lib/locales/fr_CH/index.js
@@ -0,0 +1,6 @@
+var fr_CH = {};
+module['exports'] = fr_CH;
+fr_CH.title = "French (Switzerland)";
+fr_CH.address = require("./address");
+fr_CH.internet = require("./internet");
+fr_CH.phone_number = require("./phone_number");
diff --git a/lib/locales/fr_CH/internet/domain_suffix.js b/lib/locales/fr_CH/internet/domain_suffix.js
new file mode 100644
index 00000000..5a1da08c
--- /dev/null
+++ b/lib/locales/fr_CH/internet/domain_suffix.js
@@ -0,0 +1,8 @@
+module["exports"] = [
+ "com",
+ "net",
+ "biz",
+ "ch",
+ "ch",
+ "ch"
+];
diff --git a/lib/locales/fr_CH/internet/index.js b/lib/locales/fr_CH/internet/index.js
new file mode 100644
index 00000000..abfa2480
--- /dev/null
+++ b/lib/locales/fr_CH/internet/index.js
@@ -0,0 +1,3 @@
+var internet = {};
+module['exports'] = internet;
+internet.domain_suffix = require("./domain_suffix");
diff --git a/lib/locales/fr_CH/phone_number/formats.js b/lib/locales/fr_CH/phone_number/formats.js
new file mode 100644
index 00000000..ff12096b
--- /dev/null
+++ b/lib/locales/fr_CH/phone_number/formats.js
@@ -0,0 +1,17 @@
+module["exports"] = [
+ "0800 ### ###",
+ "0800 ## ## ##",
+ "0## ### ## ##",
+ "0## ### ## ##",
+ "+41 ## ### ## ##",
+ "0900 ### ###",
+ "076 ### ## ##",
+ "079 ### ## ##",
+ "078 ### ## ##",
+ "+4176 ### ## ##",
+ "+4178 ### ## ##",
+ "+4179 ### ## ##",
+ "0041 76 ### ## ##",
+ "0041 78 ### ## ##",
+ "0041 79 ### ## ##",
+];
diff --git a/lib/locales/fr_CH/phone_number/index.js b/lib/locales/fr_CH/phone_number/index.js
new file mode 100644
index 00000000..8d35e011
--- /dev/null
+++ b/lib/locales/fr_CH/phone_number/index.js
@@ -0,0 +1,3 @@
+var phone_number = {};
+module['exports'] = phone_number;
+phone_number.formats = require("./formats");
diff --git a/lib/locales/id_ID/name/male_first_name.js b/lib/locales/id_ID/name/male_first_name.js
index dc9b5ebb..e0ed5571 100644
--- a/lib/locales/id_ID/name/male_first_name.js
+++ b/lib/locales/id_ID/name/male_first_name.js
@@ -155,6 +155,7 @@ module["exports"] = [
"Eja",
"Gada",
"Gadang",
+ "Gading",
"Gaduh",
"Gaiman",
"Galak",
@@ -184,10 +185,9 @@ module["exports"] = [
"Garda",
"Gatot",
"Gatra",
- "Gilang",
- "Galih",
"Ghani",
- "Gading",
+ "Gibran",
+ "Gilang",
"Hairyanto",
"Hardana",
"Hardi",
@@ -493,4 +493,4 @@ module["exports"] = [
"Yosef",
"Yono",
"Yoga"
-]; \ No newline at end of file
+];
diff --git a/lib/locales/pl/cell_phone/formats.js b/lib/locales/pl/cell_phone/formats.js
index ed3d598f..af0b88fe 100644
--- a/lib/locales/pl/cell_phone/formats.js
+++ b/lib/locales/pl/cell_phone/formats.js
@@ -1,14 +1,14 @@
module["exports"] = [
- "50-###-##-##",
- "51-###-##-##",
- "53-###-##-##",
- "57-###-##-##",
- "60-###-##-##",
- "66-###-##-##",
- "69-###-##-##",
- "72-###-##-##",
- "73-###-##-##",
- "78-###-##-##",
- "79-###-##-##",
- "88-###-##-##"
+ "50#-###-###",
+ "51#-###-###",
+ "53#-###-###",
+ "57#-###-###",
+ "60#-###-###",
+ "66#-###-###",
+ "69#-###-###",
+ "72#-###-###",
+ "73#-###-###",
+ "78#-###-###",
+ "79#-###-###",
+ "88#-###-###"
];
diff --git a/lib/locales/pt_PT/address/building_number.js b/lib/locales/pt_PT/address/building_number.js
new file mode 100644
index 00000000..c4716c4d
--- /dev/null
+++ b/lib/locales/pt_PT/address/building_number.js
@@ -0,0 +1,6 @@
+module["exports"] = [
+ "####",
+ "###",
+ "##",
+ "#"
+];
diff --git a/lib/locales/pt_PT/address/city.js b/lib/locales/pt_PT/address/city.js
new file mode 100644
index 00000000..d62eafb1
--- /dev/null
+++ b/lib/locales/pt_PT/address/city.js
@@ -0,0 +1,3 @@
+module["exports"] = [
+ "#{city_name}"
+];
diff --git a/lib/locales/pt_PT/address/city_name.js b/lib/locales/pt_PT/address/city_name.js
new file mode 100644
index 00000000..a3b47a30
--- /dev/null
+++ b/lib/locales/pt_PT/address/city_name.js
@@ -0,0 +1,153 @@
+module["exports"] = [
+ "Abrantes",
+ "Agualva-Cacém",
+ "Águeda",
+ "Albufeira",
+ "Alcácer do Sal",
+ "Alcobaça",
+ "Alfena",
+ "Almada",
+ "Almeirim",
+ "Amadora",
+ "Amarante",
+ "Amora",
+ "Anadia",
+ "Angra do Heroísmo",
+ "Aveiro",
+ "Barcelos",
+ "Barreiro",
+ "Beja",
+ "Braga",
+ "Bragança",
+ "Caldas da Rainha",
+ "Câmara de Lobos",
+ "Caniço",
+ "Cantanhede",
+ "Cartaxo",
+ "Castelo Branco",
+ "Chaves",
+ "Coimbra",
+ "Costa da Caparica",
+ "Covilhã",
+ "Elvas",
+ "Entroncamento",
+ "Ermesinde",
+ "Esmoriz",
+ "Espinho",
+ "Esposende",
+ "Estarreja",
+ "Estremoz",
+ "Évora",
+ "Fafe",
+ "Faro",
+ "Fátima",
+ "Felgueiras",
+ "Fiães",
+ "Figueira da Foz",
+ "Freamunde",
+ "Funchal",
+ "Fundão",
+ "Gafanha da Nazaré",
+ "Gandra",
+ "Gondomar",
+ "Gouveia",
+ "Guarda",
+ "Guimarães",
+ "Horta",
+ "Ílhavo",
+ "Lagoa",
+ "Lagos",
+ "Lamego",
+ "Leiria",
+ "Lisbon",
+ "Lixa",
+ "Loulé",
+ "Loures",
+ "Lourosa",
+ "Macedo de Cavaleiros",
+ "Machico",
+ "Maia",
+ "Mangualde",
+ "Marco de Canaveses",
+ "Marinha Grande",
+ "Matosinhos",
+ "Mealhada",
+ "Mêda",
+ "Miranda do Douro",
+ "Mirandela",
+ "Montemor-o-Novo",
+ "Montijo",
+ "Moura",
+ "Odivelas",
+ "Olhão da Restauração",
+ "Oliveira de Azeméis",
+ "Oliveira do Bairro",
+ "Oliveira do Hospital",
+ "Ourém",
+ "Ovar",
+ "Paços de Ferreira",
+ "Paredes",
+ "Penafiel",
+ "Peniche",
+ "Peso da Régua",
+ "Pinhel",
+ "Pombal",
+ "Ponta Delgada",
+ "Ponte de Sor",
+ "Portalegre",
+ "Portimão",
+ "Porto",
+ "Póvoa de Santa Iria",
+ "Póvoa de Varzim",
+ "Praia da Vitória",
+ "Quarteira",
+ "Queluz",
+ "Rebordosa",
+ "Reguengos de Monsaraz",
+ "Ribeira Grande",
+ "Rio Maior",
+ "Rio Tinto",
+ "Sabugal",
+ "Sacavém",
+ "Santa Comba Dão",
+ "Santa Cruz",
+ "Santa Maria da Feira",
+ "Santana",
+ "Santarém",
+ "Santiago do Cacém",
+ "Santo Tirso",
+ "São João da Madeira",
+ "São Mamede de Infesta",
+ "São Salvador de Lordelo",
+ "Seia",
+ "Seixal",
+ "Serpa",
+ "Setúbal",
+ "Silves",
+ "Sines",
+ "Tarouca",
+ "Tavira",
+ "Tomar",
+ "Tondela",
+ "Torres Novas",
+ "Torres Vedras",
+ "Trancoso",
+ "Trofa",
+ "Valbom",
+ "Vale de Cambra",
+ "Valongo",
+ "Valpaços",
+ "Vendas Novas",
+ "Viana do Castelo",
+ "Vila Baleira (a.k.a. Porto Santo)",
+ "Vila do Conde",
+ "Vila Franca de Xira",
+ "Vila Nova de Famalicão",
+ "Vila Nova de Foz Côa",
+ "Vila Nova de Gaia",
+ "Vila Nova de Santo André",
+ "Vila Real",
+ "Vila Real de Santo António",
+ "Viseu",
+ "Vizela"
+];
diff --git a/lib/locales/pt_PT/address/city_prefix.js b/lib/locales/pt_PT/address/city_prefix.js
new file mode 100644
index 00000000..4464cf4b
--- /dev/null
+++ b/lib/locales/pt_PT/address/city_prefix.js
@@ -0,0 +1,2 @@
+module["exports"] = [
+];
diff --git a/lib/locales/pt_PT/address/city_suffix.js b/lib/locales/pt_PT/address/city_suffix.js
new file mode 100644
index 00000000..4464cf4b
--- /dev/null
+++ b/lib/locales/pt_PT/address/city_suffix.js
@@ -0,0 +1,2 @@
+module["exports"] = [
+];
diff --git a/lib/locales/pt_PT/address/country.js b/lib/locales/pt_PT/address/country.js
new file mode 100644
index 00000000..e89484df
--- /dev/null
+++ b/lib/locales/pt_PT/address/country.js
@@ -0,0 +1,240 @@
+module["exports"] = [
+ "África do Sul",
+ "Áustria",
+ "Índia",
+ "Afeganistão",
+ "Albânia",
+ "Alemanha",
+ "Andorra",
+ "Angola",
+ "Anguila",
+ "Antárctida",
+ "Antígua e Barbuda",
+ "Antilhas Neerlandesas",
+ "Arábia Saudita",
+ "Argélia",
+ "Argentina",
+ "Arménia",
+ "Aruba",
+ "Austrália",
+ "Azerbaijão",
+ "Bélgica",
+ "Bósnia e Herzegovina",
+ "Baamas",
+ "Bangladeche",
+ "Barém",
+ "Barbados",
+ "Belize",
+ "Benim",
+ "Bermudas",
+ "Bielorrússia",
+ "Birmânia",
+ "Bolívia",
+ "Botsuana",
+ "Brasil",
+ "Brunei",
+ "Bulgária",
+ "Burúndi",
+ "Burquina Faso",
+ "Butão",
+ "Cabo Verde",
+ "Camarões",
+ "Camboja",
+ "Canadá",
+ "Catar",
+ "Cazaquistão",
+ "Chade",
+ "Chile",
+ "China",
+ "Chipre",
+ "Colômbia",
+ "Comores",
+ "Congo-Brazzaville",
+ "Congo-Kinshasa",
+ "Coreia do Norte",
+ "Coreia do Sul",
+ "Costa Rica",
+ "Costa do Marfim",
+ "Croácia",
+ "Cuba",
+ "Dinamarca",
+ "Domínica",
+ "Egipto",
+ "Emiratos Árabes Unidos",
+ "Equador",
+ "Eritreia",
+ "Eslováquia",
+ "Eslovénia",
+ "Espanha",
+ "Estónia",
+ "Estados Unidos",
+ "Etiópia",
+ "Faroé",
+ "Fiji",
+ "Filipinas",
+ "Finlândia",
+ "França",
+ "Gâmbia",
+ "Gabão",
+ "Gana",
+ "Geórgia",
+ "Geórgia do Sul e Sandwich do Sul",
+ "Gibraltar",
+ "Grécia",
+ "Granada",
+ "Gronelândia",
+ "Guadalupe",
+ "Guame",
+ "Guatemala",
+ "Guiana",
+ "Guiana Francesa",
+ "Guiné",
+ "Guiné Equatorial",
+ "Guiné-Bissau",
+ "Haiti",
+ "Honduras",
+ "Hong Kong",
+ "Hungria",
+ "Iémen",
+ "Ilha Bouvet",
+ "Ilha Norfolk",
+ "Ilha do Natal",
+ "Ilhas Caimão",
+ "Ilhas Cook",
+ "Ilhas Falkland",
+ "Ilhas Heard e McDonald",
+ "Ilhas Marshall",
+ "Ilhas Menores Distantes dos Estados Unidos",
+ "Ilhas Salomão",
+ "Ilhas Turcas e Caicos",
+ "Ilhas Virgens Americanas",
+ "Ilhas Virgens Britânicas",
+ "Ilhas dos Cocos",
+ "Indonésia",
+ "Irão",
+ "Iraque",
+ "Irlanda",
+ "Islândia",
+ "Israel",
+ "Itália",
+ "Jamaica",
+ "Japão",
+ "Jibuti",
+ "Jordânia",
+ "Jugoslávia",
+ "Kuwait",
+ "Líbano",
+ "Líbia",
+ "Laos",
+ "Lesoto",
+ "Letónia",
+ "Libéria",
+ "Listenstaine",
+ "Lituânia",
+ "Luxemburgo",
+ "México",
+ "Mónaco",
+ "Macau",
+ "Macedónia",
+ "Madagáscar",
+ "Malásia",
+ "Malávi",
+ "Maldivas",
+ "Mali",
+ "Malta",
+ "Marianas do Norte",
+ "Marrocos",
+ "Martinica",
+ "Maurícia",
+ "Mauritânia",
+ "Mayotte",
+ "Micronésia",
+ "Moçambique",
+ "Moldávia",
+ "Mongólia",
+ "Monserrate",
+ "Níger",
+ "Namíbia",
+ "Nauru",
+ "Nepal",
+ "Nicarágua",
+ "Nigéria",
+ "Niue",
+ "Noruega",
+ "Nova Caledónia",
+ "Nova Zelândia",
+ "Omã",
+ "Países Baixos",
+ "Palau",
+ "Panamá",
+ "Papua-Nova Guiné",
+ "Paquistão",
+ "Paraguai",
+ "Peru",
+ "Pitcairn",
+ "Polónia",
+ "Polinésia Francesa",
+ "Porto Rico",
+ "Portugal",
+ "Quénia",
+ "Quirguizistão",
+ "Quiribáti",
+ "Rússia",
+ "Reino Unido",
+ "República Centro-Africana",
+ "República Checa",
+ "República Dominicana",
+ "Reunião",
+ "Roménia",
+ "Ruanda",
+ "São Cristóvão e Neves",
+ "São Marinho",
+ "São Pedro e Miquelon",
+ "São Tomé e Príncipe",
+ "São Vicente e Granadinas",
+ "Síria",
+ "Salvador",
+ "Samoa",
+ "Samoa Americana",
+ "Santa Helena",
+ "Santa Lúcia",
+ "Sara Ocidental",
+ "Seicheles",
+ "Senegal",
+ "Serra Leoa",
+ "Singapura",
+ "Somália",
+ "Sri Lanca",
+ "Suécia",
+ "Suíça",
+ "Suazilândia",
+ "Sudão",
+ "Suriname",
+ "Svalbard e Jan Mayen",
+ "Tailândia",
+ "Taiwan",
+ "Tajiquistão",
+ "Tanzânia",
+ "Território Britânico do Oceano Índico",
+ "Territórios Austrais Franceses",
+ "Timor Leste",
+ "Togo",
+ "Tokelau",
+ "Tonga",
+ "Trindade e Tobago",
+ "Tunísia",
+ "Turquemenistão",
+ "Turquia",
+ "Tuvalu",
+ "Ucrânia",
+ "Uganda",
+ "Uruguai",
+ "Usbequistão",
+ "Vanuatu",
+ "Vaticano",
+ "Venezuela",
+ "Vietname",
+ "Wallis e Futuna",
+ "Zâmbia",
+ "Zimbabué"
+];
diff --git a/lib/locales/pt_PT/address/default_country.js b/lib/locales/pt_PT/address/default_country.js
new file mode 100644
index 00000000..1fd736a8
--- /dev/null
+++ b/lib/locales/pt_PT/address/default_country.js
@@ -0,0 +1,3 @@
+module["exports"] = [
+ "Portugal"
+];
diff --git a/lib/locales/pt_PT/address/direction.js b/lib/locales/pt_PT/address/direction.js
new file mode 100644
index 00000000..8dd20f2b
--- /dev/null
+++ b/lib/locales/pt_PT/address/direction.js
@@ -0,0 +1,10 @@
+module["exports"] = [
+ "Norte",
+ "Este",
+ "Sul",
+ "Oeste",
+ "Nordeste",
+ "Noroeste",
+ "Sudeste",
+ "Sodoeste"
+];
diff --git a/lib/locales/pt_PT/address/index.js b/lib/locales/pt_PT/address/index.js
new file mode 100644
index 00000000..e67c334f
--- /dev/null
+++ b/lib/locales/pt_PT/address/index.js
@@ -0,0 +1,14 @@
+var address = {};
+module['exports'] = address;
+address.country = require("./country");
+address.street_name = require("./street_name");
+address.building_number = require("./building_number");
+address.street_prefix = require("./street_prefix");
+address.postcode = require("./postcode");
+address.city_prefix = require("./city_prefix");
+address.city_name = require("./city_name");
+address.city_suffix = require("./city_suffix");
+address.city = require("./city");
+address.direction = require("./direction");
+address.street_address = require("./street_address");
+address.default_country = require("./default_country");
diff --git a/lib/locales/pt_PT/address/postcode.js b/lib/locales/pt_PT/address/postcode.js
new file mode 100644
index 00000000..7c7e5a36
--- /dev/null
+++ b/lib/locales/pt_PT/address/postcode.js
@@ -0,0 +1,3 @@
+module["exports"] = [
+ "####-###"
+];
diff --git a/lib/locales/pt_PT/address/street_address.js b/lib/locales/pt_PT/address/street_address.js
new file mode 100644
index 00000000..74209742
--- /dev/null
+++ b/lib/locales/pt_PT/address/street_address.js
@@ -0,0 +1,3 @@
+module["exports"] = [
+ "#{street_name} #{building_number}"
+];
diff --git a/lib/locales/pt_PT/address/street_name.js b/lib/locales/pt_PT/address/street_name.js
new file mode 100644
index 00000000..23587837
--- /dev/null
+++ b/lib/locales/pt_PT/address/street_name.js
@@ -0,0 +1,7 @@
+module["exports"] = [
+ "#{street_prefix} #{Name.first_name} #{Name.last_name}",
+ "N#",
+ "N##",
+ "N###",
+ "N###-#"
+];
diff --git a/lib/locales/pt_PT/address/street_prefix.js b/lib/locales/pt_PT/address/street_prefix.js
new file mode 100644
index 00000000..5f0826c6
--- /dev/null
+++ b/lib/locales/pt_PT/address/street_prefix.js
@@ -0,0 +1,22 @@
+module["exports"] = [
+ "Acesso",
+ "Alameda",
+ "Avenida",
+ "Azinhaga",
+ "Bairro",
+ "Beco",
+ "Calçada",
+ "Caminho",
+ "Escadas",
+ "Estrada",
+ "Jardim",
+ "Ladeira",
+ "Largo",
+ "Praça",
+ "Praceta",
+ "Quinta",
+ "Rua",
+ "Travessa",
+ "Urbanização",
+ "Viela"
+];
diff --git a/lib/locales/pt_PT/cell_phone/formats.js b/lib/locales/pt_PT/cell_phone/formats.js
new file mode 100644
index 00000000..97ba1cee
--- /dev/null
+++ b/lib/locales/pt_PT/cell_phone/formats.js
@@ -0,0 +1,5 @@
+module["exports"] = [
+ "+351 91#######",
+ "+351 93#######",
+ "+351 96#######"
+];
diff --git a/lib/locales/pt_PT/cell_phone/index.js b/lib/locales/pt_PT/cell_phone/index.js
new file mode 100644
index 00000000..8de997ba
--- /dev/null
+++ b/lib/locales/pt_PT/cell_phone/index.js
@@ -0,0 +1,3 @@
+var cell_phone = {};
+module['exports'] = cell_phone;
+cell_phone.formats = require("./formats");
diff --git a/lib/locales/pt_PT/commerce/color.js b/lib/locales/pt_PT/commerce/color.js
new file mode 100644
index 00000000..797d78b1
--- /dev/null
+++ b/lib/locales/pt_PT/commerce/color.js
@@ -0,0 +1,29 @@
+module["exports"] = [
+ "vermelho",
+ "verde",
+ "azul",
+ "amarelo",
+ "roxo",
+ "branco",
+ "preto",
+ "laranja",
+ "rosa",
+ "cinzento",
+ "castanho",
+ "violeta",
+ "turquesa",
+ "bronzeado",
+ "salmão",
+ "ameixa",
+ "orquídea",
+ "magenta",
+ "lima",
+ "marfim",
+ "índigo",
+ "ouro",
+ "fúcsia",
+ "ciano",
+ "azure",
+ "lavanda",
+ "prata"
+];
diff --git a/lib/locales/pt_PT/commerce/department.js b/lib/locales/pt_PT/commerce/department.js
new file mode 100644
index 00000000..57299ceb
--- /dev/null
+++ b/lib/locales/pt_PT/commerce/department.js
@@ -0,0 +1,24 @@
+module["exports"] = [
+ "Livros",
+ "Filmes",
+ "Música",
+ "Jogos",
+ "Electrónica",
+ "Computadores",
+ "Casa",
+ "Jardim",
+ "Ferramentas",
+ "Mercearia",
+ "Saúde",
+ "Beleza",
+ "Brinquedos",
+ "Crianças",
+ "Bebé",
+ "Roupas",
+ "Sapatos",
+ "Jóias",
+ "Desporto",
+ "Ar Livre",
+ "Automóveis",
+ "Industrial"
+];
diff --git a/lib/locales/pt_PT/commerce/index.js b/lib/locales/pt_PT/commerce/index.js
new file mode 100644
index 00000000..c05b5272
--- /dev/null
+++ b/lib/locales/pt_PT/commerce/index.js
@@ -0,0 +1,5 @@
+var commerce = {};
+module['exports'] = commerce;
+commerce.color = require("./color");
+commerce.department = require("./department");
+commerce.product_name = require("./product_name");
diff --git a/lib/locales/pt_PT/commerce/product_name.js b/lib/locales/pt_PT/commerce/product_name.js
new file mode 100644
index 00000000..bcf21bb9
--- /dev/null
+++ b/lib/locales/pt_PT/commerce/product_name.js
@@ -0,0 +1,60 @@
+module["exports"] = {
+ "adjective": [
+ "Pequeno",
+ "Ergonómico",
+ "Rústico",
+ "Inteligente",
+ "Linda",
+ "Incrível",
+ "Fantástico",
+ "Prático",
+ "Lustroso",
+ "Impressionante",
+ "Genérico",
+ "Artesanal",
+ "Feito à Mão",
+ "Licenciado",
+ "Refinado",
+ "Sem Marca",
+ "Saboroso"
+ ],
+ "material": [
+ "Aço",
+ "Madeira",
+ "Betão",
+ "Plástico",
+ "Algodão",
+ "Granito",
+ "Borracha",
+ "Metal",
+ "Suave",
+ "Fresco",
+ "Congelado"
+ ],
+ "product": [
+ "Cadeira",
+ "Carro",
+ "Computador",
+ "Teclado",
+ "Rato",
+ "Bicicleta",
+ "Bola",
+ "Luvas",
+ "Calças",
+ "Camisa",
+ "Mesa",
+ "Sapatos",
+ "Chapéu",
+ "Toalhas",
+ "Sabonete",
+ "Atum",
+ "Frango",
+ "Peixe",
+ "Queijo",
+ "Bacon",
+ "Pizza",
+ "Salada",
+ "Salsichas",
+ "Batatas Fritas"
+ ]
+};
diff --git a/lib/locales/pt_PT/date/index.js b/lib/locales/pt_PT/date/index.js
new file mode 100644
index 00000000..8c45d3f6
--- /dev/null
+++ b/lib/locales/pt_PT/date/index.js
@@ -0,0 +1,4 @@
+var date = {};
+module["exports"] = date;
+date.month = require("./month");
+date.weekday = require("./weekday");
diff --git a/lib/locales/pt_PT/date/month.js b/lib/locales/pt_PT/date/month.js
new file mode 100644
index 00000000..1f23a5b5
--- /dev/null
+++ b/lib/locales/pt_PT/date/month.js
@@ -0,0 +1,31 @@
+// Source: https://unicode.org/cldr/trac/browser/trunk/common/main/pt.xml?rev=14409#L1811
+module["exports"] = {
+ wide: [
+ "Janeiro",
+ "Fevereiro",
+ "Março",
+ "Abril",
+ "Maio",
+ "Junho",
+ "Julho",
+ "Agosto",
+ "Setembro",
+ "Outubro",
+ "Novembro",
+ "Dezembro"
+ ],
+ abbr: [
+ "Jan",
+ "Fev",
+ "Mar",
+ "Abr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Ago",
+ "Set",
+ "Out",
+ "Nov",
+ "Dez"
+ ]
+};
diff --git a/lib/locales/pt_PT/date/weekday.js b/lib/locales/pt_PT/date/weekday.js
new file mode 100644
index 00000000..f34e0216
--- /dev/null
+++ b/lib/locales/pt_PT/date/weekday.js
@@ -0,0 +1,21 @@
+// Source: https://unicode.org/cldr/trac/browser/trunk/common/main/pt_PT.xml?rev=14409#L491
+module["exports"] = {
+ wide: [
+ "Segunda",
+ "Terça",
+ "Quarta",
+ "Quinta",
+ "Sexta",
+ "Sábado",
+ "Domingo"
+ ],
+ abbr: [
+ "Seg",
+ "Ter",
+ "Qua",
+ "Qui",
+ "Sex",
+ "Sáb",
+ "Dom"
+ ]
+};
diff --git a/lib/locales/pt_PT/index.js b/lib/locales/pt_PT/index.js
new file mode 100644
index 00000000..913f5e5d
--- /dev/null
+++ b/lib/locales/pt_PT/index.js
@@ -0,0 +1,10 @@
+var pt_PT = {};
+module['exports'] = pt_PT;
+pt_PT.title = "Portuguese (Portugal)";
+pt_PT.address = require("./address");
+pt_PT.internet = require("./internet");
+pt_PT.name = require("./name");
+pt_PT.phone_number = require("./phone_number");
+pt_PT.cell_phone = require("./cell_phone");
+pt_PT.commerce = require("./commerce");
+pt_PT.date = require("./date");
diff --git a/lib/locales/pt_PT/internet/domain_suffix.js b/lib/locales/pt_PT/internet/domain_suffix.js
new file mode 100644
index 00000000..20764908
--- /dev/null
+++ b/lib/locales/pt_PT/internet/domain_suffix.js
@@ -0,0 +1,13 @@
+module["exports"] = [
+ "pt",
+ "gov.pt",
+ "com.pt",
+ "org.pt",
+ "eu",
+ "com",
+ "biz",
+ "info",
+ "name",
+ "net",
+ "org"
+];
diff --git a/lib/locales/pt_PT/internet/free_email.js b/lib/locales/pt_PT/internet/free_email.js
new file mode 100644
index 00000000..7c2bb41b
--- /dev/null
+++ b/lib/locales/pt_PT/internet/free_email.js
@@ -0,0 +1,11 @@
+module["exports"] = [
+ "gmail.com",
+ "yahoo.com",
+ "hotmail.com",
+ "outlook.com",
+ "live.com",
+ "portugalmail.pt",
+ "mail.pt",
+ "sapo.pt",
+ "aeiou.pt"
+];
diff --git a/lib/locales/pt_PT/internet/index.js b/lib/locales/pt_PT/internet/index.js
new file mode 100644
index 00000000..8a337d64
--- /dev/null
+++ b/lib/locales/pt_PT/internet/index.js
@@ -0,0 +1,4 @@
+var internet = {};
+module['exports'] = internet;
+internet.free_email = require("./free_email");
+internet.domain_suffix = require("./domain_suffix");
diff --git a/lib/locales/pt_PT/name/female_first_name.js b/lib/locales/pt_PT/name/female_first_name.js
new file mode 100644
index 00000000..61802046
--- /dev/null
+++ b/lib/locales/pt_PT/name/female_first_name.js
@@ -0,0 +1,95 @@
+module["exports"] = [
+ "Adriana",
+ "Alexandra",
+ "Alice",
+ "Amélia",
+ "Ana",
+ "Ariana",
+ "Áurea",
+ "Aurora",
+ "Bárbara",
+ "Beatriz",
+ "Benedita",
+ "Bruna",
+ "Caetana",
+ "Camila",
+ "Carla",
+ "Carlota",
+ "Carminho",
+ "Carmo",
+ "Carolina",
+ "Catarina",
+ "Cecília",
+ "Célia",
+ "Clara",
+ "Constança",
+ "Daniela",
+ "Débora",
+ "Diana",
+ "Eduarda",
+ "Elisa",
+ "Ema",
+ "Emília",
+ "Érica",
+ "Eva",
+ "Fabiana",
+ "Filipa",
+ "Flor",
+ "Francisca",
+ "Frederica",
+ "Gabriela",
+ "Helena",
+ "Inês",
+ "Irina",
+ "Íris",
+ "Isabel",
+ "Jéssica",
+ "Joana",
+ "Júlia",
+ "Juliana",
+ "Julieta",
+ "Lara",
+ "Laura",
+ "Leonor",
+ "Letícia",
+ "Lia",
+ "Lorena",
+ "Luana",
+ "Luena",
+ "Luísa",
+ "Luna",
+ "Madalena",
+ "Mafalda",
+ "Mara",
+ "Márcia",
+ "Margarida",
+ "Maria",
+ "Mariana",
+ "Marta",
+ "Matilde",
+ "Melissa",
+ "Mia",
+ "Miriam",
+ "Natália",
+ "Nicole",
+ "Núria",
+ "Ofélia",
+ "Olívia",
+ "Paula",
+ "Pilar",
+ "Rafaela",
+ "Raquel",
+ "Rita",
+ "Rosa",
+ "Safira",
+ "Sara",
+ "Sílvia",
+ "Sofia",
+ "Soraia",
+ "Tatiana",
+ "Teresa",
+ "Valentina",
+ "Vânia",
+ "Vera",
+ "Vitória"
+];
diff --git a/lib/locales/pt_PT/name/female_prefix.js b/lib/locales/pt_PT/name/female_prefix.js
new file mode 100644
index 00000000..b275dc0f
--- /dev/null
+++ b/lib/locales/pt_PT/name/female_prefix.js
@@ -0,0 +1,6 @@
+module["exports"] = [
+ "Sra.",
+ "Dra.",
+ "Prof.ª",
+ "Eng.ª"
+];
diff --git a/lib/locales/pt_PT/name/first_name.js b/lib/locales/pt_PT/name/first_name.js
new file mode 100644
index 00000000..a8fa464b
--- /dev/null
+++ b/lib/locales/pt_PT/name/first_name.js
@@ -0,0 +1,190 @@
+module["exports"] = [
+ "Adriana",
+ "Afonso",
+ "Alexandra",
+ "Alexandre",
+ "Alice",
+ "Amélia",
+ "Ana",
+ "André",
+ "Ângelo",
+ "António",
+ "Ariana",
+ "Artur",
+ "Áurea",
+ "Aurora",
+ "Bárbara",
+ "Beatriz",
+ "Benedita",
+ "Benjamim",
+ "Bernardo",
+ "Bruna",
+ "Bruno",
+ "Caetana",
+ "Camila",
+ "Carla",
+ "Carlos",
+ "Carlota",
+ "Carminho",
+ "Carmo",
+ "Carolina",
+ "Catarina",
+ "Cecília",
+ "Célia",
+ "César",
+ "Clara",
+ "Constança",
+ "Cristiano",
+ "Daniel",
+ "Daniela",
+ "David",
+ "Débora",
+ "Diana",
+ "Dinis",
+ "Diogo",
+ "Duarte",
+ "Edgar",
+ "Eduarda",
+ "Eduardo",
+ "Elias",
+ "Elisa",
+ "Ema",
+ "Emanuel",
+ "Emília",
+ "Érica",
+ "Eva",
+ "Fabiana",
+ "Fábio",
+ "Feliciano",
+ "Fernando",
+ "Filipa",
+ "Filipe",
+ "Flor",
+ "Francisca",
+ "Francisco",
+ "Frederica",
+ "Frederico",
+ "Gabriel",
+ "Gabriela",
+ "Gaspar",
+ "Gil",
+ "Gonçalo",
+ "Guilherme",
+ "Gustavo",
+ "Helena",
+ "Hélio",
+ "Henrique",
+ "Hugo",
+ "Igor",
+ "Ígor",
+ "Inês",
+ "Irina",
+ "Íris",
+ "Isabel",
+ "Isac",
+ "Ivan",
+ "Ivo",
+ "Jaime",
+ "Jéssica",
+ "Joana",
+ "João",
+ "Joaquim",
+ "Jorge",
+ "José",
+ "Josué",
+ "Júlia",
+ "Juliana",
+ "Julieta",
+ "Júlio",
+ "Lara",
+ "Laura",
+ "Leandro",
+ "Leonardo",
+ "Leonor",
+ "Letícia",
+ "Lia",
+ "Lorena",
+ "Lourenço",
+ "Luana",
+ "Lucas",
+ "Luena",
+ "Luís",
+ "Luísa",
+ "Luna",
+ "Madalena",
+ "Mafalda",
+ "Manel",
+ "Manuel",
+ "Mara",
+ "Marcelo",
+ "Márcia",
+ "Marco",
+ "Marcos",
+ "Margarida",
+ "Maria",
+ "Mariana",
+ "Mário",
+ "Marta",
+ "Martim",
+ "Mateus",
+ "Matias",
+ "Matilde",
+ "Mauro",
+ "Melissa",
+ "Mia",
+ "Micael",
+ "Miguel",
+ "Miriam",
+ "Moisés",
+ "Natália",
+ "Nicole",
+ "Norberto",
+ "Nuno",
+ "Núria",
+ "Ofélia",
+ "Olívia",
+ "Paula",
+ "Paulo",
+ "Pedro",
+ "Pilar",
+ "Rafael",
+ "Rafaela",
+ "Raquel",
+ "Raul",
+ "Renato",
+ "Ricardo",
+ "Rita",
+ "Roberto",
+ "Rodrigo",
+ "Romeu",
+ "Rosa",
+ "Rúben",
+ "Rui",
+ "Safira",
+ "Salvador",
+ "Samuel",
+ "Sandro",
+ "Santiago",
+ "Sara",
+ "Sebastião",
+ "Sérgio",
+ "Sílvia",
+ "Simão",
+ "Sofia",
+ "Soraia",
+ "Tatiana",
+ "Teresa",
+ "Tiago",
+ "Tomás",
+ "Tomé",
+ "Valentim",
+ "Valentina",
+ "Valter",
+ "Vânia",
+ "Vasco",
+ "Vera",
+ "Vicente",
+ "Vítor",
+ "Vitória",
+ "Xavier"
+];
diff --git a/lib/locales/pt_PT/name/index.js b/lib/locales/pt_PT/name/index.js
new file mode 100644
index 00000000..c2af3f0d
--- /dev/null
+++ b/lib/locales/pt_PT/name/index.js
@@ -0,0 +1,11 @@
+var name = {};
+module['exports'] = name;
+name.male_prefix = require("./male_prefix");
+name.male_first_name = require("./male_first_name");
+name.female_prefix = require("./female_prefix");
+name.female_first_name = require("./female_first_name");
+name.first_name = require("./first_name");
+name.last_name = require("./last_name");
+name.prefix = require("./prefix");
+name.suffix = require("./suffix");
+name.name = require("./name");
diff --git a/lib/locales/pt_PT/name/last_name.js b/lib/locales/pt_PT/name/last_name.js
new file mode 100644
index 00000000..ae41dd3e
--- /dev/null
+++ b/lib/locales/pt_PT/name/last_name.js
@@ -0,0 +1,103 @@
+module["exports"] = [
+ "Abreu",
+ "Albuquerque",
+ "Almeida",
+ "Alves",
+ "Amaral",
+ "Amorim",
+ "Andrade",
+ "Anjos",
+ "Antunes",
+ "Araújo",
+ "Assunção",
+ "Azevedo",
+ "Baptista",
+ "Barbosa",
+ "Barros",
+ "Batista",
+ "Borges",
+ "Braga",
+ "Branco",
+ "Brito",
+ "Campos",
+ "Cardoso",
+ "Carneiro",
+ "Carvalho",
+ "Castro",
+ "Coelho",
+ "Correia",
+ "Costa",
+ "Cruz",
+ "Cunha",
+ "Domingues",
+ "Esteves",
+ "Faria",
+ "Fernandes",
+ "Ferreira",
+ "Figueiredo",
+ "Fonseca",
+ "Freitas",
+ "Garcia",
+ "Gaspar",
+ "Gomes",
+ "Gonçalves",
+ "Guerreiro",
+ "Henriques",
+ "Jesus",
+ "Leal",
+ "Leite",
+ "Lima",
+ "Lopes",
+ "Loureiro",
+ "Lourenço",
+ "Macedo",
+ "Machado",
+ "Magalhães",
+ "Maia",
+ "Marques",
+ "Martins",
+ "Matias",
+ "Matos",
+ "Melo",
+ "Mendes",
+ "Miranda",
+ "Monteiro",
+ "Morais",
+ "Moreira",
+ "Mota",
+ "Moura",
+ "Nascimento",
+ "Neto",
+ "Neves",
+ "Nobre",
+ "Nogueira",
+ "Nunes",
+ "Oliveira",
+ "Pacheco",
+ "Paiva",
+ "Pereira",
+ "Pinheiro",
+ "Pinho",
+ "Pinto",
+ "Pires",
+ "Ramos",
+ "Raposo",
+ "Reis",
+ "Ribeiro",
+ "Rocha",
+ "Rodrigues",
+ "Santos",
+ "Saraiva",
+ "Silva",
+ "Simões",
+ "Soares",
+ "Sousa",
+ "Sá",
+ "Tavares",
+ "Teixeira",
+ "Torres",
+ "Valente",
+ "Vaz",
+ "Vicente",
+ "Vieira"
+];
diff --git a/lib/locales/pt_PT/name/male_first_name.js b/lib/locales/pt_PT/name/male_first_name.js
new file mode 100644
index 00000000..6b2cd32c
--- /dev/null
+++ b/lib/locales/pt_PT/name/male_first_name.js
@@ -0,0 +1,97 @@
+module["exports"] = [
+ "Afonso",
+ "Alexandre",
+ "André",
+ "Ângelo",
+ "António",
+ "Artur",
+ "Benjamim",
+ "Bernardo",
+ "Bruno",
+ "Carlos",
+ "César",
+ "Cristiano",
+ "Daniel",
+ "David",
+ "Dinis",
+ "Diogo",
+ "Duarte",
+ "Edgar",
+ "Eduardo",
+ "Elias",
+ "Emanuel",
+ "Fábio",
+ "Feliciano",
+ "Fernando",
+ "Filipe",
+ "Francisco",
+ "Frederico",
+ "Gabriel",
+ "Gaspar",
+ "Gil",
+ "Gonçalo",
+ "Guilherme",
+ "Gustavo",
+ "Hélio",
+ "Henrique",
+ "Hugo",
+ "Igor",
+ "Ígor",
+ "Isac",
+ "Ivan",
+ "Ivo",
+ "Jaime",
+ "João",
+ "Joaquim",
+ "Jorge",
+ "José",
+ "Josué",
+ "Júlio",
+ "Leandro",
+ "Leonardo",
+ "Lourenço",
+ "Lucas",
+ "Luís",
+ "Manel",
+ "Manuel",
+ "Marcelo",
+ "Marco",
+ "Marcos",
+ "Mário",
+ "Martim",
+ "Mateus",
+ "Matias",
+ "Mauro",
+ "Micael",
+ "Miguel",
+ "Moisés",
+ "Norberto",
+ "Nuno",
+ "Paulo",
+ "Pedro",
+ "Rafael",
+ "Raul",
+ "Renato",
+ "Ricardo",
+ "Roberto",
+ "Rodrigo",
+ "Romeu",
+ "Rúben",
+ "Rui",
+ "Salvador",
+ "Samuel",
+ "Sandro",
+ "Santiago",
+ "Sebastião",
+ "Sérgio",
+ "Simão",
+ "Tiago",
+ "Tomás",
+ "Tomé",
+ "Valentim",
+ "Valter",
+ "Vasco",
+ "Vicente",
+ "Vítor",
+ "Xavier"
+];
diff --git a/lib/locales/pt_PT/name/male_prefix.js b/lib/locales/pt_PT/name/male_prefix.js
new file mode 100644
index 00000000..55107c70
--- /dev/null
+++ b/lib/locales/pt_PT/name/male_prefix.js
@@ -0,0 +1,6 @@
+module["exports"] = [
+ "Sr.",
+ "Dr.",
+ "Prof.",
+ "Eng.º",
+];
diff --git a/lib/locales/pt_PT/name/name.js b/lib/locales/pt_PT/name/name.js
new file mode 100644
index 00000000..c7aaed0a
--- /dev/null
+++ b/lib/locales/pt_PT/name/name.js
@@ -0,0 +1,7 @@
+module["exports"] = [
+ "#{first_name} #{last_name}",
+ "#{male_first_name} #{last_name}",
+ "#{female_first_name} #{last_name}",
+ "#{male_prefix} #{male_first_name} #{last_name}",
+ "#{female_prefix} #{female_first_name} #{last_name}"
+];
diff --git a/lib/locales/pt_PT/name/prefix.js b/lib/locales/pt_PT/name/prefix.js
new file mode 100644
index 00000000..898dd9b7
--- /dev/null
+++ b/lib/locales/pt_PT/name/prefix.js
@@ -0,0 +1,4 @@
+module["exports"] = [
+ "#{female_prefix}",
+ "#{male_prefix}"
+];
diff --git a/lib/locales/pt_PT/name/suffix.js b/lib/locales/pt_PT/name/suffix.js
new file mode 100644
index 00000000..4464cf4b
--- /dev/null
+++ b/lib/locales/pt_PT/name/suffix.js
@@ -0,0 +1,2 @@
+module["exports"] = [
+];
diff --git a/lib/locales/pt_PT/phone_number/formats.js b/lib/locales/pt_PT/phone_number/formats.js
new file mode 100644
index 00000000..1040d5fd
--- /dev/null
+++ b/lib/locales/pt_PT/phone_number/formats.js
@@ -0,0 +1,6 @@
+module["exports"] = [
+ "+351 2########",
+ "+351 91#######",
+ "+351 93#######",
+ "+351 96#######"
+];
diff --git a/lib/locales/pt_PT/phone_number/index.js b/lib/locales/pt_PT/phone_number/index.js
new file mode 100644
index 00000000..8d35e011
--- /dev/null
+++ b/lib/locales/pt_PT/phone_number/index.js
@@ -0,0 +1,3 @@
+var phone_number = {};
+module['exports'] = phone_number;
+phone_number.formats = require("./formats");
diff --git a/lib/locales/ru/commerce/department.js b/lib/locales/ru/commerce/department.js
index db4ed972..53e953bc 100644
--- a/lib/locales/ru/commerce/department.js
+++ b/lib/locales/ru/commerce/department.js
@@ -19,5 +19,8 @@ module["exports"] = [
"Спорт",
"туризм",
"Автомобильное",
+ "Галантерея",
+ "Меха",
+ "Пряжа",
"промышленное"
];
diff --git a/lib/locales/ru/commerce/product_name.js b/lib/locales/ru/commerce/product_name.js
index 1464e40c..a7c34742 100644
--- a/lib/locales/ru/commerce/product_name.js
+++ b/lib/locales/ru/commerce/product_name.js
@@ -6,8 +6,10 @@ module["exports"] = {
"Интеллектуальный",
"Великолепный",
"Невероятный",
+ "Свободный",
+ "Большой",
"Фантастический",
- "Практчиный",
+ "Практичный",
"Лоснящийся",
"Потрясающий"
],
@@ -18,6 +20,10 @@ module["exports"] = {
"Пластиковый",
"Хлопковый",
"Гранитный",
+ "Кожанный",
+ "Неодимовый",
+ "Меховой",
+ "Натуральный",
"Резиновый"
],
"product": [
@@ -29,6 +35,17 @@ module["exports"] = {
"Стол",
"Свитер",
"Ремень",
+ "Ножницы",
+ "Носки",
+ "Майка",
+ "Кепка",
+ "Куртка",
+ "Плащ",
+ "Сабо",
+ "Шарф",
+ "Клатч",
+ "Кошелек",
+ "Портмоне",
"Ботинок"
]
};
diff --git a/lib/locales/ru/company/prefix.js b/lib/locales/ru/company/prefix.js
index 722a8d7e..10c07f44 100644
--- a/lib/locales/ru/company/prefix.js
+++ b/lib/locales/ru/company/prefix.js
@@ -3,6 +3,7 @@ module["exports"] = [
"ООО",
"ЗАО",
"ОАО",
+ "ПАО",
"НКО",
"ТСЖ",
"ОП"
diff --git a/lib/locales/ru/hacker/abbreviation.js b/lib/locales/ru/hacker/abbreviation.js
index 05609fe9..ca2152b1 100644
--- a/lib/locales/ru/hacker/abbreviation.js
+++ b/lib/locales/ru/hacker/abbreviation.js
@@ -20,7 +20,8 @@ module["exports"] = [
"XML",
"EXE",
"COM",
- "HDD",
+ "НМЖД",
+ "ПЗУ",
"SMTP",
"SMS",
"USB",
diff --git a/lib/locales/ru/hacker/ingverb.js b/lib/locales/ru/hacker/ingverb.js
index 7d4ac451..c9cd84cf 100644
--- a/lib/locales/ru/hacker/ingverb.js
+++ b/lib/locales/ru/hacker/ingverb.js
@@ -1,9 +1,12 @@
module["exports"] = [
"резервное копирование",
"обход",
+ "архивирование",
"взлом",
+ "шифрование",
"переопределение",
"сжатие",
+ "скачивание",
"копирование",
"навигация",
"индексирование",
diff --git a/lib/locales/ru/hacker/noun.js b/lib/locales/ru/hacker/noun.js
index ca899b35..c67cbd53 100644
--- a/lib/locales/ru/hacker/noun.js
+++ b/lib/locales/ru/hacker/noun.js
@@ -5,6 +5,9 @@ module["exports"] = [
"интерфейс",
"микрочип",
"код",
+ "парсер",
+ "сокет",
+ "кортеж",
"порт",
"ключ",
"массив",
diff --git a/lib/locales/ru/hacker/verb.js b/lib/locales/ru/hacker/verb.js
index 86606699..cef4a734 100644
--- a/lib/locales/ru/hacker/verb.js
+++ b/lib/locales/ru/hacker/verb.js
@@ -4,11 +4,15 @@ module["exports"] = [
"взломать",
"переопределить",
"сжать",
+ "зашифровать",
+ "импортировать",
+ "экспортировать",
"копировать",
"навигировать",
"индексировать",
"соединить",
"генерировать",
+ "распарсить",
"квантифицировать",
"вычислить",
"синтезировать",
diff --git a/lib/locales/sv/name/first_name_women.js b/lib/locales/sv/name/first_name_women.js
index 4d2f751c..8ba4a89c 100644
--- a/lib/locales/sv/name/first_name_women.js
+++ b/lib/locales/sv/name/first_name_women.js
@@ -1,6 +1,20 @@
module["exports"] = [
- "Maria",
+ "Astrid",
"Anna",
+ "Alice",
+ "Amanda",
+ "Ann",
+ "Agneta",
+ "Anette",
+ "Anneli",
+ "Alexandra",
+ "Agnes",
+ "Anne",
+ "Alva",
+ "Alma",
+ "Angelica",
+ "Ann-Marie",
+ "Maria",
"Margareta",
"Elisabeth",
"Eva",
@@ -8,5 +22,8 @@ module["exports"] = [
"Kristina",
"Karin",
"Elisabet",
- "Marie"
-];
+ "Marie",
+ "Lotta",
+ "Ronja",
+ "Veronica"
+]; \ No newline at end of file
diff --git a/lib/locales/zu_ZA/address/default_country.js b/lib/locales/zu_ZA/address/default_country.js
new file mode 100644
index 00000000..a31d7565
--- /dev/null
+++ b/lib/locales/zu_ZA/address/default_country.js
@@ -0,0 +1,3 @@
+module["exports"] = [
+ "South Africa"
+];
diff --git a/lib/locales/zu_ZA/address/index.js b/lib/locales/zu_ZA/address/index.js
new file mode 100644
index 00000000..44dff02a
--- /dev/null
+++ b/lib/locales/zu_ZA/address/index.js
@@ -0,0 +1,4 @@
+var address = {};
+module['exports'] = address;
+address.default_country = require("./default_country");
+address.postcode = require("./postcode");
diff --git a/lib/locales/zu_ZA/address/postcode.js b/lib/locales/zu_ZA/address/postcode.js
new file mode 100644
index 00000000..a437640e
--- /dev/null
+++ b/lib/locales/zu_ZA/address/postcode.js
@@ -0,0 +1,4 @@
+module["exports"] = [
+ "#####",
+ "####"
+];
diff --git a/lib/locales/zu_ZA/cell_phone/formats.js b/lib/locales/zu_ZA/cell_phone/formats.js
new file mode 100644
index 00000000..f0f561fd
--- /dev/null
+++ b/lib/locales/zu_ZA/cell_phone/formats.js
@@ -0,0 +1,8 @@
+module["exports"] = [
+ "082 ### ####",
+ "084 ### ####",
+ "083 ### ####",
+ "065 ### ####",
+ "082#######",
+ "082 #######"
+];
diff --git a/lib/locales/zu_ZA/cell_phone/index.js b/lib/locales/zu_ZA/cell_phone/index.js
new file mode 100644
index 00000000..8de997ba
--- /dev/null
+++ b/lib/locales/zu_ZA/cell_phone/index.js
@@ -0,0 +1,3 @@
+var cell_phone = {};
+module['exports'] = cell_phone;
+cell_phone.formats = require("./formats");
diff --git a/lib/locales/zu_ZA/company/index.js b/lib/locales/zu_ZA/company/index.js
new file mode 100644
index 00000000..ddd41f55
--- /dev/null
+++ b/lib/locales/zu_ZA/company/index.js
@@ -0,0 +1,3 @@
+var company = {};
+module['exports'] = company;
+company.suffix = require("./suffix");
diff --git a/lib/locales/zu_ZA/company/suffix.js b/lib/locales/zu_ZA/company/suffix.js
new file mode 100644
index 00000000..f7163b89
--- /dev/null
+++ b/lib/locales/zu_ZA/company/suffix.js
@@ -0,0 +1,5 @@
+module["exports"] = [
+ "Pty Ltd",
+ "Ltd",
+ "CC"
+];
diff --git a/lib/locales/zu_ZA/index.js b/lib/locales/zu_ZA/index.js
new file mode 100644
index 00000000..978d9087
--- /dev/null
+++ b/lib/locales/zu_ZA/index.js
@@ -0,0 +1,8 @@
+var en_ZA = {};
+module['exports'] = en_ZA;
+en_ZA.title = "South Africa (Zulu)";
+en_ZA.address = require("./address");
+en_ZA.internet = require("./internet");
+en_ZA.phone_number = require("./phone_number");
+en_ZA.cell_phone = require("./cell_phone");
+en_ZA.company = require("./company");
diff --git a/lib/locales/zu_ZA/internet/domain_suffix.js b/lib/locales/zu_ZA/internet/domain_suffix.js
new file mode 100644
index 00000000..66ac6364
--- /dev/null
+++ b/lib/locales/zu_ZA/internet/domain_suffix.js
@@ -0,0 +1,7 @@
+module["exports"] = [
+ "co.za",
+ "com",
+ "org.za",
+ "info",
+ "net.za"
+];
diff --git a/lib/locales/zu_ZA/internet/index.js b/lib/locales/zu_ZA/internet/index.js
new file mode 100644
index 00000000..abfa2480
--- /dev/null
+++ b/lib/locales/zu_ZA/internet/index.js
@@ -0,0 +1,3 @@
+var internet = {};
+module['exports'] = internet;
+internet.domain_suffix = require("./domain_suffix");
diff --git a/lib/locales/zu_ZA/name/female_first_name.js b/lib/locales/zu_ZA/name/female_first_name.js
new file mode 100644
index 00000000..84e61fca
--- /dev/null
+++ b/lib/locales/zu_ZA/name/female_first_name.js
@@ -0,0 +1,52 @@
+module["exports"] = [
+"Ayanda",
+"Uluthando",
+"Nofoto",
+"Yibanathi",
+"Thadie",
+"Ulwazi",
+"Lerato",
+"Amahle",
+"Khulekani",
+"Jabulile",
+"Mthunzi",
+"Sindisiwe",
+"Inyoni",
+"Ntombizodwa",
+"Zobuhle",
+"Samukelisiwe",
+"Nonhlanhla",
+"Nhlakanipho",
+"Liyana",
+"Nonjabulo",
+"Ntokozo",
+"Nokuthula",
+"Buhle",
+"Isisa",
+"Thobeka",
+"Thabisa",
+"Zanele",
+"Sizani",
+"Nkosingiphile",
+"Mhambi",
+"Nomvula",
+"Thulisile",
+"Lukhona",
+"Mbalienhle",
+"Sizakele",
+"Khethiwe",
+"Nolwazi",
+"Sinenhlanhla",
+"Ayize",
+"Duduzile",
+"Busisiwe",
+"Hlengiwe",
+"Jabulile",
+"Khanyisile",
+"Nandi",
+"Ndondoloza",
+"Nozipho",
+"Nonkululeko",
+"Sibongile",
+"Siphephelo"
+]; \ No newline at end of file
diff --git a/lib/locales/zu_ZA/name/first_name.js b/lib/locales/zu_ZA/name/first_name.js
new file mode 100644
index 00000000..a76e7588
--- /dev/null
+++ b/lib/locales/zu_ZA/name/first_name.js
@@ -0,0 +1,102 @@
+module["exports"] = [
+ "Ayanda",
+ "Uluthando",
+ "Nofoto",
+ "Yibanathi",
+ "Thadie",
+ "Ulwazi",
+ "Lerato",
+ "Amahle",
+ "Khulekani",
+ "Jabulile",
+ "Mthunzi",
+ "Sindisiwe",
+ "Inyoni",
+ "Ntombizodwa",
+ "Zobuhle",
+ "Samukelisiwe",
+ "Nonhlanhla",
+ "Nhlakanipho",
+ "Liyana",
+ "Nonjabulo",
+ "Ntokozo",
+ "Nokuthula",
+ "Buhle",
+ "Isisa",
+ "Thobeka",
+ "Thabisa",
+ "Zanele",
+ "Sizani",
+ "Nkosingiphile",
+ "Mhambi",
+ "Nomvula",
+ "Thulisile",
+ "Lukhona",
+ "Mbalienhle",
+ "Sizakele",
+ "Khethiwe",
+ "Nolwazi",
+ "Sinenhlanhla",
+ "Ayize",
+ "Duduzile",
+ "Busisiwe",
+ "Hlengiwe",
+ "Jabulile",
+ "Khanyisile",
+ "Nandi",
+ "Ndondoloza",
+ "Nozipho",
+ "Nonkululeko",
+ "Sibongile",
+ "Siphephelo",
+ "Bonginkosi",
+ "Kagiso",
+ "Bhekizizwe",
+ "Bhekumbuso",
+ "Shaka",
+ "Funani",
+ "Kgabu",
+ "Solomon",
+ "Gatsha",
+ "Langa",
+ "Phila",
+ "Msizi",
+ "Nkosiyabo",
+ "Linda",
+ "Mpilo",
+ "Siyanda",
+ "Nkanyezi",
+ "Bafana",
+ "Lwandle",
+ "Sfiso",
+ "Thulani",
+ "Thando",
+ "Sanele",
+ "Anele",
+ "Lungelo",
+ "Dumisani",
+ "Bangizwe",
+ "Fanyana",
+ "Bhekimuzi",
+ "Mandla",
+ "Maphikelela",
+ "Mpumelelo",
+ "Mthunzi",
+ "Philani",
+ "Musawenkosi",
+ "Nkosenye",
+ "Nkosinhle",
+ "Phiwokwakhe",
+ "Sifiso",
+ "Zithulele",
+ "Sithembiso",
+ "Sipho",
+ "Siphiwe",
+ "Sibusiso",
+ "Velaphi",
+ "Thamsanqa",
+ "Vusumuzi",
+ "Themba",
+ "Zenzele",
+ "Ndleleni"
+];
diff --git a/lib/locales/zu_ZA/name/index.js b/lib/locales/zu_ZA/name/index.js
new file mode 100644
index 00000000..290e3cc2
--- /dev/null
+++ b/lib/locales/zu_ZA/name/index.js
@@ -0,0 +1,6 @@
+var name = {};
+module['exports'] = name;
+name.male_first_name = require("./male_first_name");
+name.female_first_name = require("./female_first_name");
+name.first_name = require("./first_name");
+name.last_name = require("./last_name"); \ No newline at end of file
diff --git a/lib/locales/zu_ZA/name/last_name.js b/lib/locales/zu_ZA/name/last_name.js
new file mode 100644
index 00000000..2ae7873b
--- /dev/null
+++ b/lib/locales/zu_ZA/name/last_name.js
@@ -0,0 +1,102 @@
+module["exports"] = [
+"Bengu",
+"Bhengu",
+"Buthelezi",
+"Bhuyeni",
+"Bhembe",
+"Bhengani",
+"Bayeni",
+"Chiliza",
+"Cele",
+"Cebekhulu",
+"Dingiswayo",
+"Dlamini",
+"Dube",
+"Fuze",
+"Gwacela",
+"Gigaba",
+"Gumede",
+"Guliwe",
+"Gwala",
+"Gama",
+"Gumede",
+"Hlongwa",
+"Luthuli",
+"Msibi",
+"Mthethwa",
+"Mashinini",
+"Ndebele",
+"Ngubane",
+"Nondlela",
+"Nzimande",
+"Radebe",
+"Seme",
+"Senzangakhona",
+"Sondisa",
+"Zuma",
+"Dhlomo",
+"Nhleko",
+"Mabizela",
+"Khumalo",
+"Kunene",
+"Khawula",
+"Khuzwayo",
+"Lamula",
+"Lembede",
+"Lamula",
+"Mkhatshwa",
+"Moseley",
+"Mavundla",
+"Magoza",
+"Malinga",
+"Mbatha",
+"Mqwebu",
+"Mbende",
+"Maduma",
+"Mgenge",
+"Mehloluhlaza",
+"Maphisa",
+"Mfeka",
+"Mfumu",
+"Musi",
+"Mtolo",
+"Nonyana",
+"Ngema",
+"Ngwazi",
+"Nozulu",
+"Ntombela",
+"Ntanzi",
+"Mbuso",
+"Ngcolosi",
+"Gabhezi",
+"Nsele",
+"Nyanda",
+"Thusi",
+"Mbatha",
+"Biyela",
+"Gumede",
+"Nomvethe",
+"Ndandali",
+"Ncusi",
+"Sibiya",
+"Siyaya",
+"Sothole",
+"Sokhela",
+"Sithuli",
+"Shezi",
+"Siwele",
+"Tshabalala",
+"Thoyana",
+"Thumbeza",
+"Delazy",
+"Zungu",
+"Mthembu",
+"Vilakazi",
+"Vezi",
+"Mabhida",
+"Wosiyane",
+"Yengwa",
+"Zondo",
+"Zondi",
+"Zubane"
+]; \ No newline at end of file
diff --git a/lib/locales/zu_ZA/name/male_first_name.js b/lib/locales/zu_ZA/name/male_first_name.js
new file mode 100644
index 00000000..5bee6b76
--- /dev/null
+++ b/lib/locales/zu_ZA/name/male_first_name.js
@@ -0,0 +1,52 @@
+module["exports"] = [
+ "Bonginkosi",
+ "Kagiso",
+ "Bhekizizwe",
+ "Bhekumbuso",
+ "Shaka",
+ "Funani",
+ "Kgabu",
+ "Solomon",
+ "Gatsha",
+ "Langa",
+ "Phila",
+ "Msizi",
+ "Nkosiyabo",
+ "Linda",
+ "Mpilo",
+ "Siyanda",
+ "Nkanyezi",
+ "Bafana",
+ "Lwandle",
+ "Sfiso",
+ "Thulani",
+ "Thando",
+ "Sanele",
+ "Anele",
+ "Lungelo",
+ "Dumisani",
+ "Bangizwe",
+ "Fanyana",
+ "Bhekimuzi",
+ "Mandla",
+ "Maphikelela",
+ "Mpumelelo",
+ "Mthunzi",
+ "Philani",
+ "Musawenkosi",
+ "Nkosenye",
+ "Nkosinhle",
+ "Phiwokwakhe",
+ "Sifiso",
+ "Zithulele",
+ "Sithembiso",
+ "Sipho",
+ "Siphiwe",
+ "Sibusiso",
+ "Velaphi",
+ "Thamsanqa",
+ "Vusumuzi",
+ "Themba",
+ "Zenzele",
+ "Ndleleni"
+ ]; \ No newline at end of file
diff --git a/lib/locales/zu_ZA/phone_number/formats.js b/lib/locales/zu_ZA/phone_number/formats.js
new file mode 100644
index 00000000..e33e5cbc
--- /dev/null
+++ b/lib/locales/zu_ZA/phone_number/formats.js
@@ -0,0 +1,11 @@
+module["exports"] = [
+ "01# ### #####",
+ "02# ### #####",
+ "03# ### #####",
+ "04# ### #####",
+ "05# ### #####",
+ "0800 ### ###",
+ "0860 ### ###",
+ "01#########",
+ "01# ########",
+];
diff --git a/lib/locales/zu_ZA/phone_number/index.js b/lib/locales/zu_ZA/phone_number/index.js
new file mode 100644
index 00000000..8d35e011
--- /dev/null
+++ b/lib/locales/zu_ZA/phone_number/index.js
@@ -0,0 +1,3 @@
+var phone_number = {};
+module['exports'] = phone_number;
+phone_number.formats = require("./formats");
diff --git a/lib/phone_number.js b/lib/phone_number.js
index 651c7ada..2875a793 100644
--- a/lib/phone_number.js
+++ b/lib/phone_number.js
@@ -10,6 +10,7 @@ var Phone = function (faker) {
*
* @method faker.phone.phoneNumber
* @param {string} format
+ * @memberOf faker.phone
*/
self.phoneNumber = function (format) {
format = format || faker.phone.phoneFormats();
@@ -22,6 +23,7 @@ var Phone = function (faker) {
*
* @method faker.phone.phoneFormatsArrayIndex
* @param phoneFormatsArrayIndex
+ * @memberOf faker.phone
*/
self.phoneNumberFormat = function (phoneFormatsArrayIndex) {
phoneFormatsArrayIndex = phoneFormatsArrayIndex || 0;
@@ -41,4 +43,4 @@ var Phone = function (faker) {
};
-module['exports'] = Phone; \ No newline at end of file
+module['exports'] = Phone;
diff --git a/lib/random.js b/lib/random.js
index 1f408fe0..6ee65493 100644
--- a/lib/random.js
+++ b/lib/random.js
@@ -18,7 +18,7 @@ function Random (faker, seed) {
* returns a single random number based on a max number or range
*
* @method faker.random.number
- * @param {mixed} options
+ * @param {mixed} options {min, max, precision}
*/
this.number = function (options) {
@@ -57,6 +57,29 @@ function Random (faker, seed) {
}
/**
+ * returns a single random floating-point number based on a max number or range
+ *
+ * @method faker.random.float
+ * @param {mixed} options
+ */
+ this.float = function (options) {
+ if (typeof options === "number") {
+ options = {
+ precision: options
+ };
+ }
+ options = options || {};
+ var opts = {};
+ for (var p in options) {
+ opts[p] = options[p];
+ }
+ if (typeof opts.precision === 'undefined') {
+ opts.precision = 0.01;
+ }
+ return faker.random.number(opts);
+ }
+
+ /**
* takes an array and returns a random element of the array
*
* @method faker.random.arrayElement
diff --git a/lib/unique.js b/lib/unique.js
index 4422a942..70d038fa 100644
--- a/lib/unique.js
+++ b/lib/unique.js
@@ -5,12 +5,34 @@ var uniqueExec = require('../vendor/unique');
*/
function Unique (faker) {
+ // initialize unique module class variables
+
+ // maximum time unique.exec will attempt to run before aborting
+ var maxTime = 10;
+
+ // maximum retries unique.exec will recurse before abortings ( max loop depth )
+ var maxRetries = 10;
+
+ // time the script started
+ // var startTime = 0;
+
/**
* unique
*
* @method unique
*/
- this.unique = uniqueExec.exec;
+ this.unique = function unique (method, args, opts) {
+ opts = opts || {};
+ opts.startTime = new Date().getTime();
+ if (typeof opts.maxTime !== 'number') {
+ opts.maxTime = maxTime;
+ }
+ if (typeof opts.maxRetries !== 'number') {
+ opts.maxRetries = maxRetries;
+ }
+ opts.currentIterations = 0;
+ return uniqueExec.exec(method, args, opts);
+ }
}
-module['exports'] = Unique;
+module['exports'] = Unique; \ No newline at end of file
diff --git a/locale/en_ZA.js b/locale/en_ZA.js
new file mode 100644
index 00000000..dad4c7d1
--- /dev/null
+++ b/locale/en_ZA.js
@@ -0,0 +1,5 @@
+var Faker = require('../lib');
+var faker = new Faker({ locale: 'en_ZA', localeFallback: 'en' });
+faker.locales['en_ZA'] = require('../lib/locales/en_ZA');
+faker.locales['en'] = require('../lib/locales/en');
+module['exports'] = faker;
diff --git a/locale/fr_CH.js b/locale/fr_CH.js
new file mode 100644
index 00000000..125016bc
--- /dev/null
+++ b/locale/fr_CH.js
@@ -0,0 +1,5 @@
+var Faker = require('../lib');
+var faker = new Faker({ locale: 'fr_CH', localeFallback: 'en' });
+faker.locales['fr_CH'] = require('../lib/locales/fr_CH');
+faker.locales['en'] = require('../lib/locales/en');
+module['exports'] = faker;
diff --git a/test/address.unit.js b/test/address.unit.js
index 5aba2c36..0d691742 100644
--- a/test/address.unit.js
+++ b/test/address.unit.js
@@ -252,6 +252,40 @@ describe("address.js", function () {
});
});
+ describe("zipCodeByState()", function () {
+ it("returns zipCode valid for specified State", function () {
+ faker.locale = "en_US";
+ var states = ["IL", "GA", "WA"];
+
+ var zipCode1 = faker.address.zipCodeByState(states[0]);
+ assert.ok(zipCode1 >= 60001);
+ assert.ok(zipCode1 <= 62999);
+ var zipCode2 = faker.address.zipCodeByState(states[1]);
+ assert.ok(zipCode2 >= 30001);
+ assert.ok(zipCode2 <= 31999);
+ var zipCode3 = faker.address.zipCodeByState(states[2]);
+ assert.ok(zipCode3 >= 98001);
+ assert.ok(zipCode3 <= 99403);
+ });
+
+ it("returns undefined if state is invalid", function () {
+ var state = "XX";
+ sinon.spy(faker.address, 'zipCode');
+ var zipCode = faker.address.zipCodeByState(state);
+ assert.ok(faker.address.zipCode.called);
+ faker.address.zipCode.restore();
+ });
+
+ it("returns undefined if state is valid but localeis invalid", function () {
+ faker.locale = "zh_CN";
+ var state = "IL";
+ sinon.spy(faker.address, 'zipCode');
+ var zipCode = faker.address.zipCodeByState(state);
+ assert.ok(faker.address.zipCode.called);
+ faker.address.zipCode.restore();
+ });
+ });
+
describe("latitude()", function () {
it("returns random latitude", function () {
for (var i = 0; i < 100; i++) {
@@ -266,11 +300,12 @@ describe("address.js", function () {
}
});
- it("returns latitude with min and max", function () {
+ it("returns latitude with min and max and default precision", function () {
for (var i = 0; i < 100; i++) {
sinon.spy(faker.random, 'number');
var latitude = faker.address.latitude(-5, 5);
assert.ok(typeof latitude === 'string');
+ assert.equal(latitude.split('.')[1].length, 4);
var latitude_float = parseFloat(latitude);
assert.ok(latitude_float >= -5);
assert.ok(latitude_float <= 5);
@@ -278,6 +313,20 @@ describe("address.js", function () {
faker.random.number.restore();
}
});
+
+ it("returns random latitude with custom precision", function () {
+ for (var i = 0; i < 100; i++) {
+ sinon.spy(faker.random, 'number');
+ var latitude = faker.address.latitude(undefined, undefined, 7);
+ assert.ok(typeof latitude === 'string');
+ assert.equal(latitude.split('.')[1].length, 7);
+ var latitude_float = parseFloat(latitude);
+ assert.ok(latitude_float >= -180);
+ assert.ok(latitude_float <= 180);
+ assert.ok(faker.random.number.called);
+ faker.random.number.restore();
+ }
+ });
});
describe("longitude()", function () {
@@ -294,11 +343,12 @@ describe("address.js", function () {
}
});
- it("returns random longitude with min and max", function () {
+ it("returns random longitude with min and max and default precision", function () {
for (var i = 0; i < 100; i++) {
sinon.spy(faker.random, 'number');
var longitude = faker.address.longitude(100, -30);
assert.ok(typeof longitude === 'string');
+ assert.equal(longitude.split('.')[1].length, 4);
var longitude_float = parseFloat(longitude);
assert.ok(longitude_float >= -30);
assert.ok(longitude_float <= 100);
@@ -306,6 +356,122 @@ describe("address.js", function () {
faker.random.number.restore();
}
});
+
+ it("returns random longitude with custom precision", function () {
+ for (var i = 0; i < 100; i++) {
+ sinon.spy(faker.random, 'number');
+ var longitude = faker.address.longitude(undefined, undefined, 7);
+ assert.ok(typeof longitude === 'string');
+ assert.equal(longitude.split('.')[1].length, 7);
+ var longitude_float = parseFloat(longitude);
+ assert.ok(longitude_float >= -180);
+ assert.ok(longitude_float <= 180);
+ assert.ok(faker.random.number.called);
+ faker.random.number.restore();
+ }
+ });
+ });
+
+ describe("direction()", function () {
+ it("returns random direction", function () {
+ sinon.stub(faker.address, 'direction').returns('North');
+ var direction = faker.address.direction();
+
+ assert.equal(direction, 'North');
+ faker.address.direction.restore();
+ })
+
+ it("returns abbreviation when useAbbr is true", function () {
+ sinon.stub(faker.address, 'direction').returns('N');
+ var direction = faker.address.direction(true);
+
+ assert.equal(direction, 'N');
+ faker.address.direction.restore();
+ })
+ })
+
+ describe("ordinalDirection()", function () {
+ it("returns random ordinal direction", function () {
+ sinon.stub(faker.address, 'ordinalDirection').returns('West');
+ var ordinalDirection = faker.address.ordinalDirection();
+
+ assert.equal(ordinalDirection, 'West');
+ faker.address.ordinalDirection.restore();
+ })
+
+ it("returns abbreviation when useAbbr is true", function () {
+ sinon.stub(faker.address, 'ordinalDirection').returns('W');
+ var ordinalDirection = faker.address.ordinalDirection(true);
+
+ assert.equal(ordinalDirection, 'W');
+ faker.address.ordinalDirection.restore();
+ })
+ })
+
+ describe("cardinalDirection()", function () {
+ it("returns random cardinal direction", function () {
+ sinon.stub(faker.address, 'cardinalDirection').returns('Northwest');
+ var cardinalDirection = faker.address.cardinalDirection();
+
+ assert.equal(cardinalDirection, 'Northwest');
+ faker.address.cardinalDirection.restore();
+ })
+
+ it("returns abbreviation when useAbbr is true", function () {
+ sinon.stub(faker.address, 'cardinalDirection').returns('NW');
+ var cardinalDirection = faker.address.cardinalDirection(true);
+
+ assert.equal(cardinalDirection, 'NW');
+ faker.address.cardinalDirection.restore();
+ })
+ })
+
+ describe("nearbyGPSCoordinate()", function () {
+ it("returns random gps coordinate within a distance of another one", function () {
+ function haversine(lat1, lon1, lat2, lon2, isMetric) {
+ function degreesToRadians(degrees) {
+ return degrees * (Math.PI/180.0);
+ }
+ function kilometersToMiles(miles) {
+ return miles * 0.621371;
+ }
+ var R = 6378.137;
+ var dLat = degreesToRadians(lat2-lat1);
+ var dLon = degreesToRadians(lon2-lon1);
+ var a = Math.sin(dLat/2) * Math.sin(dLat/2)
+ + Math.cos(degreesToRadians(lat1)) * Math.cos(degreesToRadians(lat2))
+ * Math.sin(dLon/2) * Math.sin(dLon/2);
+ var distance = R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
+
+ return isMetric ? distance : kilometersToMiles(distance);
+ }
+ for (var i = 0; i < 10000; i++) {
+ var latFloat1 = parseFloat(faker.address.latitude());
+ var lonFloat1 = parseFloat(faker.address.longitude());
+ var radius = (Math.random() * 99) + 1; // range of [1, 100)
+ var isMetric = (Math.round(Math.random()) == 1);
+
+ var coordinate = faker.address.nearbyGPSCoordinate([latFloat1, lonFloat1], radius, isMetric);
+ assert.ok(coordinate.length === 2);
+ assert.ok(typeof coordinate[0] === 'string');
+ assert.ok(typeof coordinate[1] === 'string');
+
+ var latFloat2 = parseFloat(coordinate[0]);
+ assert.ok(latFloat2 >= -90.0);
+ assert.ok(latFloat2 <= 90.0);
+
+ var lonFloat2 = parseFloat(coordinate[1]);
+ assert.ok(lonFloat2 >= -180.0);
+ assert.ok(lonFloat2 <= 180.0);
+
+ // Due to floating point math, and constants that are not extremely precise,
+ // returned points will not be strictly within the given radius of the input
+ // coordinate. Using a error of 1.0 to compensate.
+ var error = 1.0;
+ var actualDistance = haversine(latFloat1, lonFloat1, latFloat2, lonFloat2, isMetric);
+ assert.ok(actualDistance <= (radius + error));
+ }
+ });
});
});
diff --git a/test/date.unit.js b/test/date.unit.js
index bd283d07..c3f4eb6c 100644
--- a/test/date.unit.js
+++ b/test/date.unit.js
@@ -65,6 +65,19 @@ describe("date.js", function () {
assert.ok(date <= new Date());
});
+ it("returns a date N days from the recent past, starting from refDate", function () {
+
+ var days = 30;
+ var refDate = new Date(2120, 11, 9, 10, 0, 0, 0); // set the date beyond the usual calculation (to make sure this is working correctly)
+
+ var date = faker.date.recent(days, refDate);
+
+ var lowerBound = new Date(refDate.getTime() - (days * 24 * 60 * 60 * 1000));
+
+ assert.ok(lowerBound <= date, "`recent()` date should not be further back than `n` days ago");
+ assert.ok(date <= refDate, "`recent()` date should not be ahead of the starting date reference");
+ });
+
});
describe("soon()", function () {
@@ -75,6 +88,19 @@ describe("date.js", function () {
assert.ok(date >= new Date());
});
+ it("returns a date N days from the recent future, starting from refDate", function () {
+
+ var days = 30;
+ var refDate = new Date(1880, 11, 9, 10, 0, 0, 0); // set the date beyond the usual calculation (to make sure this is working correctly)
+
+ var date = faker.date.soon(days, refDate);
+
+ var upperBound = new Date(refDate.getTime() + (days * 24 * 60 * 60 * 1000));
+
+ assert.ok(date <= upperBound, "`soon()` date should not be further ahead than `n` days ago");
+ assert.ok(refDate <= date, "`soon()` date should not be behind the starting date reference");
+ });
+
});
describe("between()", function () {
diff --git a/test/fake.unit.js b/test/fake.unit.js
index e541d938..6a802ec4 100644
--- a/test/fake.unit.js
+++ b/test/fake.unit.js
@@ -27,5 +27,25 @@ describe("fake.js", function () {
var random = faker.fake('{{helpers.randomize(["one", "two", "three"])}}');
assert.ok(arr.indexOf(random) > -1);
});
+
+ it("does not allow undefined parameters", function () {
+ assert.throws(function () {
+ faker.fake()
+ }, Error);
+ });
+
+ it("does not allow invalid module name", function () {
+ assert.throws(function () {
+ faker.fake('{{foo.bar}}')
+ }, Error);
+ });
+
+ it("does not allow invalid method name", function () {
+ assert.throws(function () {
+ faker.fake('{{address.foo}}')
+ }, Error);
+ });
+
+
});
});
diff --git a/test/finance.unit.js b/test/finance.unit.js
index b8b380ee..a64b879a 100644
--- a/test/finance.unit.js
+++ b/test/finance.unit.js
@@ -234,7 +234,12 @@ describe('finance.js', function () {
it("returns a random bitcoin address", function(){
var bitcoinAddress = faker.finance.bitcoinAddress();
- assert.ok(bitcoinAddress.match(/^[A-Z0-9.]{27,34}$/));
+ /**
+ * Note: Although the total length of a Bitcoin address can be 25-33 characters, regex quantifiers only check the proceding token
+ * Therefore we take one from the total length of the address not including the first character ([13])
+ */
+
+ assert.ok(bitcoinAddress.match(/^[13][a-km-zA-HJ-NP-Z1-9]{24,33}$/));
});
});
@@ -308,7 +313,7 @@ describe('finance.js', function () {
assert.ok(luhnFormula(number));
});
});
-
+
describe("creditCardCVV()", function(){
it("returns a random credit card CVV", function(){
var cvv = faker.finance.creditCardCVV();
@@ -316,7 +321,7 @@ describe('finance.js', function () {
assert.ok(cvv.match(/^[0-9]{3}$/));
});
});
-
+
describe("iban()", function () {
var ibanLib = require('../lib/iban');
diff --git a/test/git.unit.js b/test/git.unit.js
new file mode 100644
index 00000000..df86be0b
--- /dev/null
+++ b/test/git.unit.js
@@ -0,0 +1,125 @@
+if (typeof module !== 'undefined') {
+ var assert = require('assert');
+ var sinon = require('sinon');
+ var faker = require('../index');
+}
+
+describe("git.js", function() {
+ describe("branch()", function() {
+ beforeEach(function() {
+ sinon.spy(faker.hacker, 'noun');
+ sinon.spy(faker.hacker, 'verb');
+ });
+
+ afterEach(function() {
+ faker.hacker.noun.restore();
+ faker.hacker.verb.restore();
+ });
+
+ it("returns a branch with hacker noun and verb", function() {
+ faker.git.branch();
+
+ assert.ok(faker.hacker.noun.calledOnce);
+ assert.ok(faker.hacker.verb.calledOnce);
+ });
+ });
+
+ describe("commitEntry()", function() {
+ beforeEach(function() {
+ sinon.spy(faker.git, 'commitMessage');
+ sinon.spy(faker.git, 'commitSha');
+ sinon.spy(faker.internet, 'email');
+ sinon.spy(faker.name, 'firstName');
+ sinon.spy(faker.name, 'lastName');
+ sinon.spy(faker.random, 'number');
+ });
+
+ afterEach(function() {
+ faker.git.commitMessage.restore();
+ faker.git.commitSha.restore();
+ faker.internet.email.restore();
+ faker.name.firstName.restore();
+ faker.name.lastName.restore();
+ faker.random.number.restore();
+ });
+
+ it("returns merge entry at random", function() {
+ faker.git.commitEntry();
+
+ assert.ok(faker.random.number.called);
+ });
+
+ it("returns a commit entry with git commit message and sha", function() {
+ faker.git.commitEntry();
+
+ assert.ok(faker.git.commitMessage.calledOnce);
+ assert.ok(faker.git.commitSha.calledOnce);
+ });
+
+ it("returns a commit entry with internet email", function() {
+ faker.git.commitEntry();
+
+ assert.ok(faker.internet.email.calledOnce);
+ });
+
+ it("returns a commit entry with name first and last", function() {
+ faker.git.commitEntry();
+
+ assert.ok(faker.name.firstName.calledTwice);
+ assert.ok(faker.name.lastName.calledTwice);
+ });
+
+ context("with options['merge'] equal to true", function() {
+ beforeEach(function() {
+ sinon.spy(faker.git, 'shortSha');
+ });
+
+ afterEach(function() {
+ faker.git.shortSha.restore();
+ });
+
+ it("returns a commit entry with merge details", function() {
+ faker.git.commitEntry({ merge: true });
+
+ assert.ok(faker.git.shortSha.calledTwice);
+ });
+ });
+ });
+
+ describe("commitMessage()", function() {
+ beforeEach(function() {
+ sinon.spy(faker.hacker, 'verb');
+ sinon.spy(faker.hacker, 'adjective');
+ sinon.spy(faker.hacker, 'noun');
+ });
+
+ afterEach(function() {
+ faker.hacker.verb.restore();
+ faker.hacker.adjective.restore();
+ faker.hacker.noun.restore();
+ });
+
+ it("returns a commit message with hacker noun, adj and verb", function() {
+ faker.git.commitMessage();
+
+ assert.ok(faker.hacker.verb.calledOnce);
+ assert.ok(faker.hacker.adjective.calledOnce);
+ assert.ok(faker.hacker.noun.calledOnce);
+ });
+ });
+
+
+ describe("commitSha()", function() {
+ it("returns a random commit SHA", function() {
+ var commitSha = faker.git.commitSha();
+ assert.ok(commitSha.match(/^[a-f0-9]{40}$/));
+ });
+ });
+
+ describe("shortSha()", function() {
+ it("returns a random short SHA", function() {
+ var shortSha = faker.git.shortSha();
+ assert.ok(shortSha.match(/^[a-f0-9]{7}$/));
+ });
+ });
+});
diff --git a/test/image.unit.js b/test/image.unit.js
index 2839d91a..02e4c42b 100644
--- a/test/image.unit.js
+++ b/test/image.unit.js
@@ -116,7 +116,11 @@ describe("image.js", function () {
describe("dataUri", function () {
it("returns a blank data", function () {
var dataUri = faker.image.dataUri(200,300);
- assert.equal(dataUri, 'data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20baseProfile%3D%22full%22%20width%3D%22200%22%20height%3D%22300%22%3E%20%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20fill%3D%22grey%22%2F%3E%20%20%3Ctext%20x%3D%220%22%20y%3D%2220%22%20font-size%3D%2220%22%20text-anchor%3D%22start%22%20fill%3D%22white%22%3E200x300%3C%2Ftext%3E%20%3C%2Fsvg%3E');
+ assert.equal(dataUri, 'data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20baseProfile%3D%22full%22%20width%3D%22200%22%20height%3D%22300%22%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20fill%3D%22grey%22%2F%3E%3Ctext%20x%3D%22100%22%20y%3D%22150%22%20font-size%3D%2220%22%20alignment-baseline%3D%22middle%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3E200x300%3C%2Ftext%3E%3C%2Fsvg%3E');
+ });
+ it("returns a customed background color data URI", function () {
+ var dataUri = faker.image.dataUri(200, 300, 'red');
+ assert.equal(dataUri, 'data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20baseProfile%3D%22full%22%20width%3D%22200%22%20height%3D%22300%22%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20fill%3D%22red%22%2F%3E%3Ctext%20x%3D%22100%22%20y%3D%22150%22%20font-size%3D%2220%22%20alignment-baseline%3D%22middle%22%20text-anchor%3D%22middle%22%20fill%3D%22white%22%3E200x300%3C%2Ftext%3E%3C%2Fsvg%3E');
});
});
});
diff --git a/test/name.unit.js b/test/name.unit.js
index e470cfba..679f1202 100644
--- a/test/name.unit.js
+++ b/test/name.unit.js
@@ -51,6 +51,44 @@ describe("name.js", function () {
faker.random.number.restore();
});
+ it("occasionally returns a male full name with a prefix", function () {
+ sinon.stub(faker.random, 'number')
+ .withArgs(8).returns(0) // with prefix
+ .withArgs(1).returns(0); // gender male
+
+ sinon.stub(faker.name, 'prefix').withArgs(0).returns('X');
+ sinon.stub(faker.name, 'firstName').withArgs(0).returns('Y');
+ sinon.stub(faker.name, 'lastName').withArgs(0).returns('Z');
+
+ var name = faker.name.findName();
+
+ assert.equal(name, 'X Y Z');
+
+ faker.random.number.restore();
+ faker.name.prefix.restore();
+ faker.name.firstName.restore();
+ faker.name.lastName.restore();
+ });
+
+ it("occasionally returns a female full name with a prefix", function () {
+ sinon.stub(faker.random, 'number')
+ .withArgs(8).returns(0) // with prefix
+ .withArgs(1).returns(1); // gender female
+
+ sinon.stub(faker.name, 'prefix').withArgs(1).returns('J');
+ sinon.stub(faker.name, 'firstName').withArgs(1).returns('K');
+ sinon.stub(faker.name, 'lastName').withArgs(1).returns('L');
+
+ var name = faker.name.findName();
+
+ assert.equal(name, 'J K L');
+
+ faker.random.number.restore();
+ faker.name.prefix.restore();
+ faker.name.firstName.restore();
+ faker.name.lastName.restore();
+ });
+
it("occasionally returns a first name and last name with a suffix", function () {
sinon.stub(faker.random, 'number').returns(1);
sinon.stub(faker.name, 'suffix').returns('Jr.');
@@ -103,4 +141,61 @@ describe("name.js", function () {
faker.name.jobType.restore();
});
});
+
+ describe("prefix()", function () {
+ describe('when using a locale with gender specific name prefixes', function () {
+ beforeEach(function(){
+ this.oldLocale = faker.locale;
+ faker.locale = 'TEST';
+
+ faker.locales['TEST'] = {
+ name: {
+ male_prefix: ['Mp'],
+ female_prefix: ['Fp']
+ }
+ };
+ });
+
+ afterEach(function () {
+ faker.locale = this.oldLocale;
+ delete faker.locale['TEST'];
+ })
+
+ it("returns male prefix", function () {
+ var prefix = faker.name.prefix(0);
+
+ assert.equal(prefix, 'Mp')
+ });
+
+ it("returns female prefix", function () {
+ var prefix = faker.name.prefix(1);
+
+ assert.equal(prefix, 'Fp');
+ });
+ });
+
+ describe('when using a locale without gender specific name prefixes', function () {
+ beforeEach(function(){
+ this.oldLocale = faker.locale;
+ faker.locale = 'TEST';
+
+ faker.locales['TEST'] = {
+ name: {
+ prefix: ['P']
+ }
+ };
+ });
+
+ afterEach(function () {
+ faker.locale = this.oldLocale;
+ delete faker.locale['TEST'];
+ })
+
+ it("returns a prefix", function () {
+ var prefix = faker.name.prefix();
+
+ assert.equal(prefix, 'P');
+ });
+ });
+ });
});
diff --git a/test/random.unit.js b/test/random.unit.js
index 15546361..cdeb07f1 100644
--- a/test/random.unit.js
+++ b/test/random.unit.js
@@ -3,6 +3,7 @@ if (typeof module !== 'undefined') {
var sinon = require('sinon');
var _ = require('lodash');
var faker = require('../index');
+ var mersenne = require('../vendor/mersenne');
}
@@ -78,11 +79,101 @@ describe("random.js", function () {
assert.equal(opts.max, max);
});
- it('should return deterministic results when seeded', function() {
+ it('should return deterministic results when seeded with integer', function() {
faker.seed(100);
var name = faker.name.findName();
assert.equal(name, 'Eva Jenkins');
})
+
+ it('should return deterministic results when seeded with array - one element', function() {
+ faker.seed([10]);
+ var name = faker.name.findName();
+ assert.equal(name, 'Duane Kub');
+ })
+
+ it('should return deterministic results when seeded with array - multiple elements', function() {
+ faker.seed([10, 100, 1000]);
+ var name = faker.name.findName();
+ assert.equal(name, 'Alma Shanahan');
+ })
+
+ });
+
+ describe("float", function() {
+
+ it("returns a random float with a default precision value (0.01)", function() {
+ var number = faker.random.float();
+ assert.equal(number, Number(number.toFixed(2)));
+ });
+
+ it("returns a random float given a precision value", function() {
+ var number = faker.random.float(0.001);
+ assert.equal(number, Number(number.toFixed(3)));
+ });
+
+ it("returns a random number given a maximum value as Object", function() {
+ var options = { max: 10 };
+ assert.ok(faker.random.float(options) <= options.max);
+ });
+
+ it("returns a random number given a maximum value of 0", function() {
+ var options = { max: 0 };
+ assert.ok(faker.random.float(options) === 0);
+ });
+
+ it("returns a random number given a negative number minimum and maximum value of 0", function() {
+ var options = { min: -100, max: 0 };
+ assert.ok(faker.random.float(options) <= options.max);
+ });
+
+ it("returns a random number between a range", function() {
+ var options = { min: 22, max: 33 };
+ for(var i = 0; i < 5; i++) {
+ var randomNumber = faker.random.float(options);
+ assert.ok(randomNumber >= options.min);
+ assert.ok(randomNumber <= options.max);
+ }
+ });
+
+ it("provides numbers with a given precision", function() {
+ var options = { min: 0, max: 1.5, precision: 0.5 };
+ var results = _.chain(_.range(50))
+ .map(function() {
+ return faker.random.float(options);
+ })
+ .uniq()
+ .value()
+ .sort();
+
+ assert.ok(_.includes(results, 0.5));
+ assert.ok(_.includes(results, 1.0));
+
+ assert.equal(results[0], 0);
+ assert.equal(_.last(results), 1.5);
+
+ });
+
+ it("provides numbers with a with exact precision", function() {
+ var options = { min: 0.5, max: 0.99, precision: 0.01 };
+ for(var i = 0; i < 100; i++) {
+ var number = faker.random.float(options);
+ assert.equal(number, Number(number.toFixed(2)));
+ }
+ });
+
+ it("should not modify the input object", function() {
+ var min = 1;
+ var max = 2;
+ var opts = {
+ min: min,
+ max: max
+ };
+
+ faker.random.float(opts);
+
+ assert.equal(opts.min, min);
+ assert.equal(opts.max, max);
+ });
});
describe('arrayElement', function() {
@@ -209,4 +300,25 @@ describe("random.js", function () {
assert.ok(hex.match(/^(0x)[0-9a-f]+$/i));
})
})
+
+ describe("mersenne twister", function() {
+ it("returns a random number without given min / max arguments", function() {
+ var max = 10;
+ var randomNumber = mersenne.rand();
+ assert.ok(typeof randomNumber === 'number');
+ });
+
+ it("throws an error when attempting to seed() a non-integer", function() {
+ assert.throws(function () {
+ mersenne.seed('abc');
+ }, Error);
+ });
+
+ it("throws an error when attempting to seed() a non-integer", function() {
+ assert.throws(function () {
+ mersenne.seed_array('abc');
+ }, Error);
+ });
+ })
+
});
diff --git a/test/system.unit.js b/test/system.unit.js
index 1edcb8be..dfcfcb0b 100644
--- a/test/system.unit.js
+++ b/test/system.unit.js
@@ -5,6 +5,26 @@ if (typeof module !== 'undefined') {
}
describe("system.js", function () {
+ describe("directoryPath()", function () {
+ it("returns unix fs directory full path", function () {
+ sinon.stub(faker.random, 'words').returns('24/7');
+ var directoryPath = faker.system.directoryPath();
+ assert.equal(directoryPath.indexOf('/'), 0, 'generated directoryPath should start with /');
+
+ faker.random.words.restore();
+ });
+ });
+
+ describe("filePath()", function () {
+ it("returns unix fs file full path", function () {
+ sinon.stub(faker.random, 'words').returns('24/7');
+ var filePath = faker.system.filePath();
+ assert.equal(filePath.indexOf('/'), 0, 'generated filePath should start with /');
+
+ faker.random.words.restore();
+ });
+ });
+
describe("fileName()", function () {
it("returns filenames without system path seperators", function () {
sinon.stub(faker.random, 'words').returns('24/7');
diff --git a/test/unique.unit.js b/test/unique.unit.js
index 4edb8220..47b38d9d 100644
--- a/test/unique.unit.js
+++ b/test/unique.unit.js
@@ -8,8 +8,8 @@ describe("unique.js", function () {
describe("unique()", function () {
it("is able to call a function with no arguments and return a result", function () {
- var result = faker.unique(faker.internet.email);
- assert.equal(typeof result, 'string');
+ var result = faker.unique(faker.internet.email);
+ assert.equal(typeof result, 'string');
});
it("is able to call a function with arguments and return a result", function () {
@@ -17,7 +17,7 @@ describe("unique.js", function () {
assert.ok(result.match(/\@c/));
});
- it("is able to call a function with arguments and return a result", function () {
+ it("is able to call same function with arguments and return a result", function () {
var result = faker.unique(faker.internet.email, ['a', 'b', 'c']); // third argument is provider, or domain for email
assert.ok(result.match(/\@c/));
});
@@ -32,7 +32,7 @@ describe("unique.js", function () {
try {
result = faker.unique(faker.internet.protocol, [], { maxTime: 1, maxRetries: 9999, exclude: ['https', 'http'] });
} catch (err) {
- assert.equal(err.message.substr(0, 16), 'exceeded maxTime');
+ assert.equal(err.message.substr(0, 16), 'Exceeded maxTime');
}
});
@@ -41,11 +41,11 @@ describe("unique.js", function () {
try {
result = faker.unique(faker.internet.protocol, [], { maxTime: 5000, maxRetries: 5, exclude: ['https', 'http'] });
} catch (err) {
- assert.equal(err.message.substr(0, 19), 'exceeded maxRetries');
+ assert.equal(err.message.substr(0, 19), 'Exceeded maxRetries');
}
});
- it("is able to call a function with arguments and return a result", function () {
+ it("is able to call last function with arguments and return a result", function () {
var result = faker.unique(faker.internet.email, ['a', 'b', 'c']); // third argument is provider, or domain for email
assert.ok(result.match(/\@c/));
});
diff --git a/vendor/mersenne.js b/vendor/mersenne.js
index 33b08e2d..690ea197 100644
--- a/vendor/mersenne.js
+++ b/vendor/mersenne.js
@@ -282,5 +282,5 @@ exports.seed_array = function(A) {
{
throw new Error("seed_array(A) must take array of numbers; is " + typeof(A));
}
- gen.init_by_array(A);
-}
+ gen.init_by_array(A, A.length);
+} \ No newline at end of file
diff --git a/vendor/unique.js b/vendor/unique.js
index f1f7425c..25b2c11a 100644
--- a/vendor/unique.js
+++ b/vendor/unique.js
@@ -11,15 +11,6 @@ var found = {};
// defaults to nothing excluded
var exclude = [];
-// maximum time unique.exec will attempt to run before aborting
-var maxTime = 5000;
-
-// maximum retries unique.exec will recurse before abortings ( max loop depth )
-var maxRetries = 50;
-
-// time the script started
-var startTime = new Date().getTime();
-
// current iteration or retries of unique.exec ( current loop depth )
var currentIterations = 0;
@@ -33,38 +24,49 @@ var defaultCompare = function(obj, key) {
};
// common error handler for messages
-unique.errorMessage = function (now, code) {
+unique.errorMessage = function (now, code, opts) {
console.error('error', code);
- console.log('found', Object.keys(found).length, 'unique entries before throwing error. \nretried:', currentIterations, '\ntotal time:', now - startTime, 'ms');
- throw new Error(code + ' for uniquness check. may not be able to generate any more unique values with current settings. try adjusting maxTime or maxRetries parameters for faker.unique()')
+ console.log('found', Object.keys(found).length, 'unique entries before throwing error. \nretried:', currentIterations, '\ntotal time:', now - opts.startTime, 'ms');
+ throw new Error(code + ' for uniqueness check \n\nMay not be able to generate any more unique values with current settings. \nTry adjusting maxTime or maxRetries parameters for faker.unique()')
};
unique.exec = function (method, args, opts) {
+ //console.log(currentIterations)
var now = new Date().getTime();
opts = opts || {};
- opts.maxTime = opts.maxTime || maxTime;
- opts.maxRetries = opts.maxRetries || maxRetries;
+ opts.maxTime = opts.maxTime || 3;
+ opts.maxRetries = opts.maxRetries || 50;
opts.exclude = opts.exclude || exclude;
opts.compare = opts.compare || defaultCompare;
+ if (typeof opts.currentIterations !== 'number') {
+ opts.currentIterations = 0;
+ }
+
+ if (typeof opts.startTime === 'undefined') {
+ opts.startTime = new Date().getTime();
+ }
+
+ var startTime = opts.startTime;
+
// support single exclude argument as string
if (typeof opts.exclude === 'string') {
opts.exclude = [opts.exclude];
}
- if (currentIterations > 0) {
+ if (opts.currentIterations > 0) {
// console.log('iterating', currentIterations)
}
// console.log(now - startTime)
if (now - startTime >= opts.maxTime) {
- return unique.errorMessage(now, 'exceeded maxTime');
+ return unique.errorMessage(now, 'Exceeded maxTime:' + opts.maxTime, opts);
}
- if (currentIterations >= opts.maxRetries) {
- return unique.errorMessage(now, 'exceeded maxRetries');
+ if (opts.currentIterations >= opts.maxRetries) {
+ return unique.errorMessage(now, 'Exceeded maxRetries:' + opts.maxRetries, opts);
}
// execute the provided method to find a potential satifised value
@@ -73,13 +75,13 @@ unique.exec = function (method, args, opts) {
// if the result has not been previously found, add it to the found array and return the value as it's unique
if (opts.compare(found, result) === -1 && opts.exclude.indexOf(result) === -1) {
found[result] = result;
- currentIterations = 0;
+ opts.currentIterations = 0;
return result;
} else {
// console.log('conflict', result);
- currentIterations++;
+ opts.currentIterations++;
return unique.exec(method, args, opts);
}
};
-module.exports = unique; \ No newline at end of file
+module.exports = unique;
diff --git a/vendor/user-agent.js b/vendor/user-agent.js
index ee449bc7..977fde46 100644
--- a/vendor/user-agent.js
+++ b/vendor/user-agent.js
@@ -25,6 +25,7 @@ The license for that script is as follows:
<[email protected]> wrote this file. As long as you retain this notice you can do whatever you want with this stuff.
If we meet some day, and you think this stuff is worth it, you can buy me a beer in return. Luka Pusic
+
*/
function rnd(a, b) {
@@ -33,13 +34,11 @@ function rnd(a, b) {
b = b || 100;
if (typeof b === 'number' && typeof a === 'number') {
- //rnd(int min, int max) returns integer between min, max
- return (function (min, max) {
- if (min > max) {
- throw new RangeError('expected min <= max; got min = ' + min + ', max = ' + max);
- }
- return Math.floor(Math.random() * (max - min + 1)) + min;
- }(a, b));
+
+ // 9/2018 - Added faker random to ensure mersenne and seed
+ var faker = require('../');
+ return faker.random.number({ min: a, max: b});
+
}
if (Object.prototype.toString.call(a) === "[object Array]") {