diff --git a/whatsapp-web.js/.editorconfig b/whatsapp-web.js/.editorconfig
deleted file mode 100644
index 73c5516..0000000
--- a/whatsapp-web.js/.editorconfig
+++ /dev/null
@@ -1,8 +0,0 @@
-root = true
-
-[*]
-indent_style = space
-indent_size = 4
-charset = utf-8
-trim_trailing_whitespace = false
-insert_final_newline = false
\ No newline at end of file
diff --git a/whatsapp-web.js/.eslintrc.json b/whatsapp-web.js/.eslintrc.json
deleted file mode 100644
index 5b8d731..0000000
--- a/whatsapp-web.js/.eslintrc.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "env": {
- "browser": true,
- "commonjs": true,
- "es6": true,
- "node": true
- },
- "extends": "eslint:recommended",
- "globals": {
- "Atomics": "readonly",
- "SharedArrayBuffer": "readonly"
- },
- "parserOptions": {
- "ecmaVersion": 2018
- },
- "rules": {
- "indent": [
- "error",
- 4
- ],
- "linebreak-style": [
- "error",
- "unix"
- ],
- "quotes": [
- "error",
- "single"
- ],
- "semi": [
- "error",
- "always"
- ]
- }
-}
\ No newline at end of file
diff --git a/whatsapp-web.js/.github/stale.yml b/whatsapp-web.js/.github/stale.yml
deleted file mode 100644
index bdb3332..0000000
--- a/whatsapp-web.js/.github/stale.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-# Number of days of inactivity before an issue becomes stale
-daysUntilStale: 30
-# Number of days of inactivity before a stale issue is closed
-daysUntilClose: 7
-# Issues with these labels will never be considered stale
-exemptLabels:
- - pinned
- - security
- - enhancement
- - bug
- - WhatsApp Change
-# Label to use when marking an issue as stale
-staleLabel: stale
-# Comment to post when marking an issue as stale. Set to `false` to disable
-markComment: >
- This issue has been automatically marked as stale because it has not had
- recent activity. It will be closed if no further activity occurs. Thank you
- for your contributions.
-# Comment to post when closing a stale issue. Set to `false` to disable
-closeComment: false
diff --git a/whatsapp-web.js/.github/workflows/lint.yml b/whatsapp-web.js/.github/workflows/lint.yml
deleted file mode 100644
index f822142..0000000
--- a/whatsapp-web.js/.github/workflows/lint.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-name: Lint
-
-on:
- push:
- pull_request:
-
-jobs:
- eslint:
- name: eslint
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v1
- - name: install node v12
- uses: actions/setup-node@v1
- with:
- node-version: 12
- - name: npm install
- run: npm install
- - name: eslint
- uses: icrawl/action-eslint@v1
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- with:
- job-name: eslint
diff --git a/whatsapp-web.js/.gitignore b/whatsapp-web.js/.gitignore
deleted file mode 100644
index ad46b30..0000000
--- a/whatsapp-web.js/.gitignore
+++ /dev/null
@@ -1,61 +0,0 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-
-# Runtime data
-pids
-*.pid
-*.seed
-*.pid.lock
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-
-# nyc test coverage
-.nyc_output
-
-# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Bower dependency directory (https://bower.io/)
-bower_components
-
-# node-waf configuration
-.lock-wscript
-
-# Compiled binary addons (https://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directories
-node_modules/
-jspm_packages/
-
-# TypeScript v1 declaration files
-typings/
-
-# Optional npm cache directory
-.npm
-
-# Optional eslint cache
-.eslintcache
-
-# Optional REPL history
-.node_repl_history
-
-# Output of 'npm pack'
-*.tgz
-
-# Yarn Integrity file
-.yarn-integrity
-
-# dotenv environment variables file
-.env
-
-# next.js build output
-.next
diff --git a/whatsapp-web.js/.jsdoc.json b/whatsapp-web.js/.jsdoc.json
deleted file mode 100644
index 4fa7aa6..0000000
--- a/whatsapp-web.js/.jsdoc.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- "tags": {
- "allowUnknownTags": true,
- "dictionaries": ["jsdoc"]
- },
- "source": {
- "include": ["src", "package.json", "README.md"],
- "includePattern": ".js$",
- "excludePattern": "(node_modules/|docs)"
- },
- "plugins": [
- "plugins/markdown"
- ],
- "templates": {
- "cleverLinks": false,
- "monospaceLinks": true,
- "useLongnameInNav": false,
- "showInheritedInNav": true
- },
- "opts": {
- "destination": "./docs/",
- "encoding": "utf8",
- "recurse": true,
- "template": "./node_modules/jsdoc-baseline"
- }
-}
\ No newline at end of file
diff --git a/whatsapp-web.js/LICENSE b/whatsapp-web.js/LICENSE
deleted file mode 100644
index d22267f..0000000
--- a/whatsapp-web.js/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright 2019 Pedro S Lopez
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/whatsapp-web.js/README.md b/whatsapp-web.js/README.md
deleted file mode 100644
index e0ca45a..0000000
--- a/whatsapp-web.js/README.md
+++ /dev/null
@@ -1,102 +0,0 @@
-[](https://www.npmjs.com/package/whatsapp-web.js) [](https://depfu.com/github/pedroslopez/whatsapp-web.js?project_id=9765)  [](https://discord.gg/H7DqQs4)
-
-# whatsapp-web.js
-A WhatsApp API client that connects through the WhatsApp Web browser app
-
-It uses Puppeteer to run a real instance of Whatsapp Web to avoid getting blocked.
-
-**NOTE:** I can't guarantee you will not be blocked by using this method, although it has worked for me. WhatsApp does not allow bots or unofficial clients on their platform, so this shouldn't be considered totally safe.
-
-## Installation
-
-The module is now available on npm! `npm i whatsapp-web.js`
-
-Please note that Node v10.18.1+ is required due to Puppeteer.
-
-## Example usage
-
-```js
-const { Client } = require('whatsapp-web.js');
-const client = new Client();
-
-client.on('qr', (qr) => {
- // Generate and scan this code with your phone
- console.log('QR RECEIVED', qr);
-});
-
-client.on('ready', () => {
- console.log('Client is ready!');
-});
-
-client.on('message', msg => {
- if (msg.body == '!ping') {
- msg.reply('pong');
- }
-});
-
-client.initialize();
-```
-
-Take a look at [example.js](https://github.com/pedroslopez/whatsapp-web.js/blob/master/example.js) for another example with more use cases.
-
-## Supported features
-
-| Feature | Status |
-| ------------- | ------------- |
-| Send messages | ✅ |
-| Receive messages | ✅ |
-| Send media (images/audio/documents) | ✅ |
-| Send media (video) | ✅ [(requires google chrome)](https://github.com/pedroslopez/whatsapp-web.js/issues/78#issuecomment-592723583) |
-| Send stickers | _pending_ |
-| Receive media (images/audio/video/documents) | ✅ |
-| Send contact cards | _pending_ |
-| Send location | ✅ |
-| Receive location | ✅ |
-| Message replies | ✅ |
-| Join groups by invite | ✅ |
-| Get invite for group | ✅ |
-| Modify group info (subject, description) | ✅ |
-| Add group participants | ✅ |
-| Kick group participants | ✅ |
-| Promote/demote group participants | ✅ |
-| Mention users | ✅ |
-| Mute/unmute chats | ✅ |
-| Get contact info | ✅ |
-| Get profile pictures | ✅ |
-| Set user status message | ✅ |
-
-Something missing? Make an issue and let us know!
-
-## Links
-
-* [Reference](https://pedroslopez.me/whatsapp-web.js)
-* [Guide](https://waguide.pedroslopez.me/) _(work in progress)_
-* [GitHub](https://github.com/pedroslopez/whatsapp-web.js)
-
-## Contributing
-
-Pull requests are welcome! If you see something you'd like to add, please do. For drastic changes, please open an issue first.
-
-## Donating
-
-You can support the maintainer of this project through the link below
-
-[](https://www.paypal.me/psla/)
-
-## Disclaimer
-
-This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with WhatsApp or any of its subsidiaries or its affiliates. The official WhatsApp website can be found at https://whatsapp.com. "WhatsApp" as well as related names, marks, emblems and images are registered trademarks of their respective owners.
-
-## License
-
-Copyright 2019 Pedro S Lopez
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this project except in compliance with the License.
-You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/whatsapp-web.js/docs/._Contact.html b/whatsapp-web.js/docs/._Contact.html
deleted file mode 100644
index 4a30fe9..0000000
Binary files a/whatsapp-web.js/docs/._Contact.html and /dev/null differ
diff --git a/whatsapp-web.js/docs/._index.html b/whatsapp-web.js/docs/._index.html
deleted file mode 100644
index ccd54df..0000000
Binary files a/whatsapp-web.js/docs/._index.html and /dev/null differ
diff --git a/whatsapp-web.js/docs/Base.html b/whatsapp-web.js/docs/Base.html
deleted file mode 100644
index d1b98f0..0000000
--- a/whatsapp-web.js/docs/Base.html
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: Base
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/BusinessContact.html b/whatsapp-web.js/docs/BusinessContact.html
deleted file mode 100644
index 2cc7b43..0000000
--- a/whatsapp-web.js/docs/BusinessContact.html
+++ /dev/null
@@ -1,242 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: BusinessContact
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Properties
-
- businessProfile
- The contact's business profile
-
-
- id
- unknown
- ID that represents the contact
-
- Inherited from
- Contact#id
-
- isBusiness
- unknown
- Indicates if the contact is a business contact
-
- Inherited from
- Contact#isBusiness
-
- isEnterprise
- unknown
- Indicates if the contact is an enterprise contact
-
- Inherited from
- Contact#isEnterprise
-
- isGroup
- unknown
- Indicates if the contact is a group contact
-
- Inherited from
- Contact#isGroup
-
- isMe
- unknown
- Indicates if the contact is the current user's contact
-
- Inherited from
- Contact#isMe
-
-
- Indicates if the number is saved in the current phone's contacts
-
- Inherited from
- Contact#isMyContact
-
- isUser
- unknown
- Indicates if the contact is a user contact
-
- Inherited from
- Contact#isUser
-
-
- Indicates if the number is registered on WhatsApp
-
- Inherited from
- Contact#isWAContact
-
- name
- unknown
- The contact's name, as saved by the current user
-
- Inherited from
- Contact#name
-
- number
- unknown
- Contact's phone number
-
- Inherited from
- Contact#number
-
- pushname
- unknown
- The name that the contact has configured to be shown publically
-
- Inherited from
- Contact#pushname
-
- shortName
- unknown
- A shortened version of name
-
- Inherited from
- Contact#shortName
-
-
- Method
-
- async
- getProfilePicUrl () → Promise containing string
- Returns the contact's profile picture URL, if privacy settings allow it
-
- Inherited from
- Contact#getProfilePicUrl
- Returns
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/Chat.html b/whatsapp-web.js/docs/Chat.html
deleted file mode 100644
index 9b8c796..0000000
--- a/whatsapp-web.js/docs/Chat.html
+++ /dev/null
@@ -1,410 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: Chat
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- new Chat ()
-
- Extends
- Base
-
-
-
- Properties
-
- archived
- boolean
- Indicates if the Chat is archived
-
-
- id
- object
- ID that represents the chat
-
-
- isGroup
- boolean
- Indicates if the Chat is a Group Chat
-
-
- isReadOnly
- boolean
- Indicates if the Chat is readonly
-
-
- name
- string
- Title of the chat
-
-
- timestamp
- number
- Unix timestamp for when the chat was created
-
-
- unreadCount
- number
- Amount of messages unread
-
-
-
- Methods
-
- async
- archive ()
- Archives this chat
-
-
- async
- clearMessages () → Promise containing Boolean
- Clears all messages from the chat
-
- Returns
-
- Promise containing Boolean
result
-
-
-
- async
- clearState ()
- Stops typing or recording in chat immediately.
-
-
- async
- delete () → Promise containing Boolean
- Deletes the chat
-
- Returns
-
- Promise containing Boolean
result
-
-
-
- async
- fetchMessages (searchOptions) → Promise containing Array of Message
- Loads chat messages, sorted from earliest to latest.
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- searchOptions
-
-
- Object
-
-
-
-
-
- Options for searching messages. Right now only limit is supported.
- Values in searchOptions have the following properties:
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- limit
-
-
- Number
-
-
- Yes
-
-
- The amount of messages to return. Note that the actual number of returned messages may be smaller if there aren't enough messages in the conversation. Set this to Infinity to load all messages.
- Defaults to 50.
-
-
-
-
-
-
-
-
-
-
- Returns
-
- Promise containing Array of Message
-
-
- async
- mute (unmuteDate)
- Mutes this chat until a specified date
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- unmuteDate
-
-
- Date
-
-
-
-
-
- Date at which the Chat will be unmuted
-
-
-
-
-
-
-
- async
- sendMessage (content, options) → Promise containing Message
- Send a message to this chat
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- content
-
-
- (string, MessageMedia , or Location )
-
-
-
-
-
-
-
-
-
- options
-
-
- object
-
-
-
-
-
-
-
-
-
-
-
- Returns
-
- Promise containing Message
Message that was just sent
-
-
-
- async
- sendSeen () → Promise containing Boolean
- Set the message as seen
-
- Returns
-
- Promise containing Boolean
result
-
-
-
- async
- sendStateRecording ()
- Simulate recording audio in chat. This will last for 25 seconds.
-
-
- async
- sendStateTyping ()
- Simulate typing in chat. This will last for 25 seconds.
-
-
- async
- unarchive ()
- un-archives this chat
-
-
- async
- unmute ()
- Unmutes this chat
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/Client.html b/whatsapp-web.js/docs/Client.html
deleted file mode 100644
index 0b4c3d8..0000000
--- a/whatsapp-web.js/docs/Client.html
+++ /dev/null
@@ -1,1361 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: Client
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Methods
-
- async
- acceptInvite (inviteCode)
- Accepts an invitation to join a group
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- inviteCode
-
-
- string
-
-
-
-
-
- Invitation code
-
-
-
-
-
-
-
- async
- archiveChat () → boolean
- Enables and returns the archive state of the Chat
-
- Returns
-
- boolean
-
-
- async
- createGroup (name, participants) → (Object, string, or Object with string properties)
- Create a new group
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- name
-
-
- string
-
-
-
-
-
- group title
-
-
-
-
- participants
-
-
- Array of (Contact or string)
-
-
-
-
-
- an array of Contacts or contact IDs to add to the group
-
-
-
-
-
-
- Returns
-
- Object
createRes
-
-
-
- string
createRes.gid - ID for the group that was just created
-
-
-
- Object with string properties
createRes.missingParticipants - participants that were not added to the group. Keys represent the ID for participant that was not added and its value is a status code that represents the reason why participant could not be added. This is usually 403 if the user's privacy settings don't allow you to add them to groups.
-
-
-
- async
- destroy ()
- Closes the client
-
-
- async
- getChatById (chatId) → Promise containing Chat
- Get chat instance by ID
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- chatId
-
-
- string
-
-
-
-
-
-
-
-
-
-
-
- Returns
-
- Promise containing Chat
-
-
- async
- getChats () → Promise containing Array of Chat
- Get all current chat instances
-
- Returns
-
- Promise containing Array of Chat
-
-
- async
-
- Get contact instance by ID
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- contactId
-
-
- string
-
-
-
-
-
-
-
-
-
-
-
- Returns
-
- Promise containing Contact
-
-
- async
-
- Get all current contact instances
-
- Returns
-
- Promise containing Array of Contact
-
-
- async
- getInviteInfo (inviteCode) → Promise containing object
- Returns an object with information about the invite code's group
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- inviteCode
-
-
- string
-
-
-
-
-
-
-
-
-
-
-
- Returns
-
- Promise containing object
Invite information
-
-
-
- async
- getProfilePicUrl (contactId) → Promise containing string
- Returns the contact ID's profile picture URL, if privacy settings allow it
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- contactId
-
-
- string
-
-
-
-
-
- the whatsapp user's ID
-
-
-
-
-
-
- Returns
-
- Promise containing string
-
-
- async
-
- Gets the current connection state for the client
-
- Returns
-
- WAState
-
-
- async
- getWWebVersion ()
- Returns the version of WhatsApp Web currently being run
-
- Returns
-
- Promise
-
-
-
- async
- initialize ()
- Sets up events and requirements, kicks off authentication request
-
-
- async
- isRegisteredUser () → Promise containing Boolean
- Check if a given ID is registered in whatsapp
-
- Returns
-
- Promise containing Boolean
-
-
- async
- logout ()
- Logs out the client, closing the current session
-
-
- async
- muteChat (chatId, unmuteDate)
- Mutes the Chat until a specified date
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- chatId
-
-
- string
-
-
-
-
-
- ID of the chat that will be muted
-
-
-
-
- unmuteDate
-
-
- Date
-
-
-
-
-
- Date when the chat will be unmuted
-
-
-
-
-
-
-
- async
- resetState ()
- Force reset of connection state for the client
-
-
- async
- sendMessage (chatId, content, options) → Promise containing Message
- Send a message to a specific chatId
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- chatId
-
-
- string
-
-
-
-
-
-
-
-
-
- content
-
-
- (string, MessageMedia , or Location )
-
-
-
-
-
-
-
-
-
- options
-
-
- object
-
-
-
-
-
-
-
-
-
-
-
- Returns
-
- Promise containing Message
Message that was just sent
-
-
-
- async
- sendPresenceAvailable ()
- Marks the client as online
-
-
- async
- sendSeen (chatId) → Promise containing boolean
- Mark as seen for the Chat
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- chatId
-
-
- string
-
-
-
-
-
-
-
-
-
-
-
- Returns
-
- Promise containing boolean
result
-
-
-
- async
- setStatus (status)
- Sets the current user's status message
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- status
-
-
- string
-
-
-
-
-
- New status message
-
-
-
-
-
-
-
- async
- unarchiveChat () → boolean
- Changes and returns the archive state of the Chat
-
- Returns
-
- boolean
-
-
- async
- unmuteChat (chatId)
- Unmutes the Chat
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- chatId
-
-
- string
-
-
-
-
-
- ID of the chat that will be unmuted
-
-
-
-
-
-
-
-
- Events
-
- auth_failure
- Emitted when there has been an error while trying to restore an existing session
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- message
-
-
- string
-
-
-
-
-
-
-
-
-
-
-
-
- authenticated
- Emitted when authentication is successful
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- session
-
-
- object
-
-
-
-
-
- Object containing session information. Can be used to restore the session.
-
-
-
-
-
-
-
- change_battery
- Emitted when the battery percentage for the attached device changes
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- batteryInfo
-
-
- object
-
-
-
-
-
- Values in batteryInfo have the following properties:
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- battery
-
-
- number
-
-
-
-
-
- The current battery percentage
-
-
-
-
- plugged
-
-
- boolean
-
-
-
-
-
- Indicates if the phone is plugged in (true) or not (false)
-
-
-
-
-
-
-
-
-
-
-
- change_state
- Emitted when the connection state changes
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- state
-
-
- WAState
-
-
-
-
-
- the new connection state
-
-
-
-
-
-
-
- disconnected
- Emitted when the client has been disconnected
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- reason
-
-
- WAState
-
-
-
-
-
- state that caused the disconnect
-
-
-
-
-
-
-
- group_join
- Emitted when a user joins the chat via invite link or is added by an admin.
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- notification
-
-
- GroupNotification
-
-
-
-
-
- GroupNotification with more information about the action
-
-
-
-
-
-
-
- group_leave
- Emitted when a user leaves the chat or is removed by an admin.
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- notification
-
-
- GroupNotification
-
-
-
-
-
- GroupNotification with more information about the action
-
-
-
-
-
-
-
- group_update
- Emitted when group settings are updated, such as subject, description or picture.
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- notification
-
-
- GroupNotification
-
-
-
-
-
- GroupNotification with more information about the action
-
-
-
-
-
-
-
-
- Emitted when media has been uploaded for a message sent by the client.
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- message
-
-
- Message
-
-
-
-
-
- The message with media that was uploaded
-
-
-
-
-
-
-
- message
- Emitted when a new message is received.
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- message
-
-
- Message
-
-
-
-
-
- The message that was received
-
-
-
-
-
-
-
- message_ack
- Emitted when an ack event occurrs on message type.
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- message
-
-
- Message
-
-
-
-
-
- The message that was affected
-
-
-
-
- ack
-
-
- MessageAck
-
-
-
-
-
- The new ACK value
-
-
-
-
-
-
-
- message_create
- Emitted when a new message is created, which may include the current user's own messages.
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- message
-
-
- Message
-
-
-
-
-
- The message that was created
-
-
-
-
-
-
-
- message_revoke_everyone
- Emitted when a message is deleted for everyone in the chat.
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- message
-
-
- Message
-
-
-
-
-
- The message that was revoked, in its current state. It will not contain the original message's data.
-
-
-
-
- revoked_msg
-
-
- Message
-
-
-
-
-
- The message that was revoked, before it was revoked. It will contain the message's original data.
- Note that due to the way this data is captured, it may be possible that this param will be undefined.
- Value can be null.
-
-
-
-
-
-
-
- message_revoke_me
- Emitted when a message is deleted by the current user.
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- message
-
-
- Message
-
-
-
-
-
- The message that was revoked
-
-
-
-
-
-
-
- qr
- Emitted when the QR code is received
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- qr
-
-
- string
-
-
-
-
-
- QR Code
-
-
-
-
-
-
-
- ready
- Emitted when the client has initialized and is ready to receive messages.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/Client.js.html b/whatsapp-web.js/docs/Client.js.html
deleted file mode 100644
index 92488a5..0000000
--- a/whatsapp-web.js/docs/Client.js.html
+++ /dev/null
@@ -1,715 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Source: Client.js
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 'use strict';
-
-const EventEmitter = require('events');
-const puppeteer = require('puppeteer');
-const moduleRaid = require('@pedroslopez/moduleraid/moduleraid');
-const jsQR = require('jsqr');
-
-const Util = require('./util/Util');
-const InterfaceController = require('./util/InterfaceController');
-const { WhatsWebURL, UserAgent, DefaultOptions, Events, WAState } = require('./util/Constants');
-const { ExposeStore, LoadUtils } = require('./util/Injected');
-const ChatFactory = require('./factories/ChatFactory');
-const ContactFactory = require('./factories/ContactFactory');
-const { ClientInfo, Message, MessageMedia, Contact, Location, GroupNotification } = require('./structures');
-/**
- * Starting point for interacting with the WhatsApp Web API
- * @extends {EventEmitter}
- * @fires Client#qr
- * @fires Client#authenticated
- * @fires Client#auth_failure
- * @fires Client#ready
- * @fires Client#message
- * @fires Client#message_ack
- * @fires Client#message_create
- * @fires Client#message_revoke_me
- * @fires Client#message_revoke_everyone
- * @fires Client#media_uploaded
- * @fires Client#group_join
- * @fires Client#group_leave
- * @fires Client#group_update
- * @fires Client#disconnected
- * @fires Client#change_state
- * @fires Client#change_battery
- */
-class Client extends EventEmitter {
- constructor(options = {}) {
- super();
-
- this.options = Util.mergeDefault(DefaultOptions, options);
-
- this.pupBrowser = null;
- this.pupPage = null;
- }
-
- /**
- * Sets up events and requirements, kicks off authentication request
- */
- async initialize() {
- const browser = await puppeteer.launch(this.options.puppeteer);
- const page = (await browser.pages())[0];
- page.setUserAgent(UserAgent);
-
- this.pupBrowser = browser;
- this.pupPage = page;
-
- if (this.options.session) {
- await page.evaluateOnNewDocument(
- session => {
- localStorage.clear();
- localStorage.setItem('WABrowserId', session.WABrowserId);
- localStorage.setItem('WASecretBundle', session.WASecretBundle);
- localStorage.setItem('WAToken1', session.WAToken1);
- localStorage.setItem('WAToken2', session.WAToken2);
- }, this.options.session);
- }
-
- await page.goto(WhatsWebURL, {
- waitUntil: 'load',
- timeout: 0,
- });
-
- const KEEP_PHONE_CONNECTED_IMG_SELECTOR = '[data-asset-intro-image-light="true"]';
-
- if (this.options.session) {
- // Check if session restore was successfull
- try {
- await page.waitForSelector(KEEP_PHONE_CONNECTED_IMG_SELECTOR, { timeout: this.options.authTimeoutMs });
- } catch (err) {
- if (err.name === 'TimeoutError') {
- /**
- * Emitted when there has been an error while trying to restore an existing session
- * @event Client#auth_failure
- * @param {string} message
- */
- this.emit(Events.AUTHENTICATION_FAILURE, 'Unable to log in. Are the session details valid?');
- browser.close();
- if (this.options.restartOnAuthFail) {
- // session restore failed so try again but without session to force new authentication
- this.options.session = null;
- this.initialize();
- }
- return;
- }
-
- throw err;
- }
-
- } else {
- const getQrCode = async () => {
- // Check if retry button is present
- var QR_RETRY_SELECTOR = 'div[data-ref] > span > div';
- var qrRetry = await page.$(QR_RETRY_SELECTOR);
- if (qrRetry) {
- await qrRetry.click();
- }
-
- // Wait for QR Code
-
- const QR_CANVAS_SELECTOR = 'canvas';
- await page.waitForSelector(QR_CANVAS_SELECTOR, { timeout: this.options.qrTimeoutMs });
- const qrImgData = await page.$eval(QR_CANVAS_SELECTOR, canvas => [].slice.call(canvas.getContext('2d').getImageData(0, 0, 264, 264).data));
- const qr = jsQR(qrImgData, 264, 264).data;
- /**
- * Emitted when the QR code is received
- * @event Client#qr
- * @param {string} qr QR Code
- */
- this.emit(Events.QR_RECEIVED, qr);
- };
- getQrCode();
- this._qrRefreshInterval = setInterval(getQrCode, this.options.qrRefreshIntervalMs);
-
- // Wait for code scan
- await page.waitForSelector(KEEP_PHONE_CONNECTED_IMG_SELECTOR, { timeout: 0 });
- clearInterval(this._qrRefreshInterval);
- this._qrRefreshInterval = undefined;
-
- }
-
- await page.evaluate(ExposeStore, moduleRaid.toString());
-
- // Get session tokens
- const localStorage = JSON.parse(await page.evaluate(() => {
- return JSON.stringify(window.localStorage);
- }));
-
- const session = {
- WABrowserId: localStorage.WABrowserId,
- WASecretBundle: localStorage.WASecretBundle,
- WAToken1: localStorage.WAToken1,
- WAToken2: localStorage.WAToken2
- };
-
- /**
- * Emitted when authentication is successful
- * @event Client#authenticated
- * @param {object} session Object containing session information. Can be used to restore the session.
- */
- this.emit(Events.AUTHENTICATED, session);
-
- // Check window.Store Injection
- await page.waitForFunction('window.Store != undefined');
-
- //Load util functions (serializers, helper functions)
- await page.evaluate(LoadUtils);
-
- // Expose client info
- this.info = new ClientInfo(this, await page.evaluate(() => {
- return window.Store.Conn.serialize();
- }));
-
- // Add InterfaceController
- this.interface = new InterfaceController(this);
-
- // Register events
- await page.exposeFunction('onAddMessageEvent', msg => {
- if (!msg.isNewMsg) return;
-
- if (msg.type === 'gp2') {
- const notification = new GroupNotification(this, msg);
- if (msg.subtype === 'add' || msg.subtype === 'invite') {
- /**
- * Emitted when a user joins the chat via invite link or is added by an admin.
- * @event Client#group_join
- * @param {GroupNotification} notification GroupNotification with more information about the action
- */
- this.emit(Events.GROUP_JOIN, notification);
- } else if (msg.subtype === 'remove' || msg.subtype === 'leave') {
- /**
- * Emitted when a user leaves the chat or is removed by an admin.
- * @event Client#group_leave
- * @param {GroupNotification} notification GroupNotification with more information about the action
- */
- this.emit(Events.GROUP_LEAVE, notification);
- } else {
- /**
- * Emitted when group settings are updated, such as subject, description or picture.
- * @event Client#group_update
- * @param {GroupNotification} notification GroupNotification with more information about the action
- */
- this.emit(Events.GROUP_UPDATE, notification);
- }
- return;
- }
-
- const message = new Message(this, msg);
-
- /**
- * Emitted when a new message is created, which may include the current user's own messages.
- * @event Client#message_create
- * @param {Message} message The message that was created
- */
- this.emit(Events.MESSAGE_CREATE, message);
-
- if (msg.id.fromMe) return;
-
- /**
- * Emitted when a new message is received.
- * @event Client#message
- * @param {Message} message The message that was received
- */
- this.emit(Events.MESSAGE_RECEIVED, message);
- });
-
- let last_message;
-
- await page.exposeFunction('onChangeMessageTypeEvent', (msg) => {
-
- if (msg.type === 'revoked') {
- const message = new Message(this, msg);
- let revoked_msg;
- if (last_message && msg.id.id === last_message.id.id) {
- revoked_msg = new Message(this, last_message);
- }
-
- /**
- * Emitted when a message is deleted for everyone in the chat.
- * @event Client#message_revoke_everyone
- * @param {Message} message The message that was revoked, in its current state. It will not contain the original message's data.
- * @param {?Message} revoked_msg The message that was revoked, before it was revoked. It will contain the message's original data.
- * Note that due to the way this data is captured, it may be possible that this param will be undefined.
- */
- this.emit(Events.MESSAGE_REVOKED_EVERYONE, message, revoked_msg);
- }
-
- });
-
- await page.exposeFunction('onChangeMessageEvent', (msg) => {
-
- if (msg.type !== 'revoked') {
- last_message = msg;
- }
-
- });
-
- await page.exposeFunction('onRemoveMessageEvent', (msg) => {
-
- if (!msg.isNewMsg) return;
-
- const message = new Message(this, msg);
-
- /**
- * Emitted when a message is deleted by the current user.
- * @event Client#message_revoke_me
- * @param {Message} message The message that was revoked
- */
- this.emit(Events.MESSAGE_REVOKED_ME, message);
-
- });
-
- await page.exposeFunction('onMessageAckEvent', (msg, ack) => {
-
- const message = new Message(this, msg);
-
- /**
- * Emitted when an ack event occurrs on message type.
- * @event Client#message_ack
- * @param {Message} message The message that was affected
- * @param {MessageAck} ack The new ACK value
- */
- this.emit(Events.MESSAGE_ACK, message, ack);
-
- });
-
- await page.exposeFunction('onMessageMediaUploadedEvent', (msg) => {
-
- const message = new Message(this, msg);
-
- /**
- * Emitted when media has been uploaded for a message sent by the client.
- * @event Client#media_uploaded
- * @param {Message} message The message with media that was uploaded
- */
- this.emit(Events.MEDIA_UPLOADED, message);
- });
-
- await page.exposeFunction('onAppStateChangedEvent', (state) => {
-
- /**
- * Emitted when the connection state changes
- * @event Client#change_state
- * @param {WAState} state the new connection state
- */
- this.emit(Events.STATE_CHANGED, state);
-
- const ACCEPTED_STATES = [WAState.CONNECTED, WAState.OPENING, WAState.PAIRING, WAState.TIMEOUT];
-
- if(this.options.takeoverOnConflict) {
- ACCEPTED_STATES.push(WAState.CONFLICT);
-
- if(state === WAState.CONFLICT) {
- setTimeout(() => {
- this.pupPage.evaluate(() => window.Store.AppState.takeover());
- }, this.options.takeoverTimeoutMs);
- }
- }
-
- if (!ACCEPTED_STATES.includes(state)) {
- /**
- * Emitted when the client has been disconnected
- * @event Client#disconnected
- * @param {WAState} reason state that caused the disconnect
- */
- this.emit(Events.DISCONNECTED, state);
- this.destroy();
- }
- });
-
- await page.exposeFunction('onBatteryStateChangedEvent', (state) => {
- const { battery, plugged } = state;
-
- if(battery === undefined) return;
-
- /**
- * Emitted when the battery percentage for the attached device changes
- * @event Client#change_battery
- * @param {object} batteryInfo
- * @param {number} batteryInfo.battery - The current battery percentage
- * @param {boolean} batteryInfo.plugged - Indicates if the phone is plugged in (true) or not (false)
- */
- this.emit(Events.BATTERY_CHANGED, { battery, plugged });
- });
-
- await page.evaluate(() => {
- window.Store.Msg.on('add', (msg) => { if(msg.isNewMsg) window.onAddMessageEvent(msg); });
- window.Store.Msg.on('change', (msg) => { window.onChangeMessageEvent(msg); });
- window.Store.Msg.on('change:type', (msg) => { window.onChangeMessageTypeEvent(msg); });
- window.Store.Msg.on('change:ack', (msg, ack) => { window.onMessageAckEvent(msg, ack); });
- window.Store.Msg.on('change:isUnsentMedia', (msg, unsent) => { if(msg.id.fromMe && !unsent) window.onMessageMediaUploadedEvent(msg); });
- window.Store.Msg.on('remove', (msg) => { if(msg.isNewMsg) window.onRemoveMessageEvent(msg); });
- window.Store.AppState.on('change:state', (_AppState, state) => { window.onAppStateChangedEvent(state); });
- window.Store.Conn.on('change:battery', (state) => { window.onBatteryStateChangedEvent(state); });
- });
-
- /**
- * Emitted when the client has initialized and is ready to receive messages.
- * @event Client#ready
- */
- this.emit(Events.READY);
- }
-
- /**
- * Closes the client
- */
- async destroy() {
- if (this._qrRefreshInterval) {
- clearInterval(this._qrRefreshInterval);
- }
- await this.pupBrowser.close();
- }
-
- /**
- * Logs out the client, closing the current session
- */
- async logout() {
- return await this.pupPage.evaluate(() => {
- return window.Store.AppState.logout();
- });
- }
-
- /**
- * Returns the version of WhatsApp Web currently being run
- * @returns Promise<string>
- */
- async getWWebVersion() {
- return await this.pupPage.evaluate(() => {
- return window.Debug.VERSION;
- });
- }
-
- /**
- * Mark as seen for the Chat
- * @param {string} chatId
- * @returns {Promise<boolean>} result
- *
- */
- async sendSeen(chatId) {
- const result = await this.pupPage.evaluate(async (chatId) => {
- return window.WWebJS.sendSeen(chatId);
-
- }, chatId);
- return result;
- }
-
- /**
- * Send a message to a specific chatId
- * @param {string} chatId
- * @param {string|MessageMedia|Location} content
- * @param {object} options
- * @returns {Promise<Message>} Message that was just sent
- */
- async sendMessage(chatId, content, options = {}) {
- let internalOptions = {
- linkPreview: options.linkPreview === false ? undefined : true,
- sendAudioAsVoice: options.sendAudioAsVoice,
- caption: options.caption,
- quotedMessageId: options.quotedMessageId,
- mentionedJidList: Array.isArray(options.mentions) ? options.mentions.map(contact => contact.id._serialized) : []
- };
-
- const sendSeen = typeof options.sendSeen === 'undefined' ? true : options.sendSeen;
-
- if (content instanceof MessageMedia) {
- internalOptions.attachment = content;
- content = '';
- } else if (options.media instanceof MessageMedia) {
- internalOptions.attachment = options.media;
- internalOptions.caption = content;
- content = '';
- } else if (content instanceof Location) {
- internalOptions.location = content;
- content = '';
- }
-
- const newMessage = await this.pupPage.evaluate(async (chatId, message, options, sendSeen) => {
- const chatWid = window.Store.WidFactory.createWid(chatId);
- const chat = await window.Store.Chat.find(chatWid);
-
- if(sendSeen) {
- window.WWebJS.sendSeen(chatId);
- }
-
- const msg = await window.WWebJS.sendMessage(chat, message, options, sendSeen);
- return msg.serialize();
- }, chatId, content, internalOptions, sendSeen);
-
- return new Message(this, newMessage);
- }
-
- /**
- * Get all current chat instances
- * @returns {Promise<Array<Chat>>}
- */
- async getChats() {
- let chats = await this.pupPage.evaluate(() => {
- return window.WWebJS.getChats();
- });
-
- return chats.map(chat => ChatFactory.create(this, chat));
- }
-
- /**
- * Get chat instance by ID
- * @param {string} chatId
- * @returns {Promise<Chat>}
- */
- async getChatById(chatId) {
- let chat = await this.pupPage.evaluate(chatId => {
- return window.WWebJS.getChat(chatId);
- }, chatId);
-
- return ChatFactory.create(this, chat);
- }
-
- /**
- * Get all current contact instances
- * @returns {Promise<Array<Contact>>}
- */
- async getContacts() {
- let contacts = await this.pupPage.evaluate(() => {
- return window.WWebJS.getContacts();
- });
-
- return contacts.map(contact => ContactFactory.create(this, contact));
- }
-
- /**
- * Get contact instance by ID
- * @param {string} contactId
- * @returns {Promise<Contact>}
- */
- async getContactById(contactId) {
- let contact = await this.pupPage.evaluate(contactId => {
- return window.WWebJS.getContact(contactId);
- }, contactId);
-
- return ContactFactory.create(this, contact);
- }
-
- /**
- * Returns an object with information about the invite code's group
- * @param {string} inviteCode
- * @returns {Promise<object>} Invite information
- */
- async getInviteInfo(inviteCode) {
- return await this.pupPage.evaluate(inviteCode => {
- return window.Store.Wap.groupInviteInfo(inviteCode);
- }, inviteCode);
- }
-
- /**
- * Accepts an invitation to join a group
- * @param {string} inviteCode Invitation code
- */
- async acceptInvite(inviteCode) {
- const chatId = await this.pupPage.evaluate(async inviteCode => {
- return await window.Store.Invite.sendJoinGroupViaInvite(inviteCode);
- }, inviteCode);
-
- return chatId._serialized;
- }
-
- /**
- * Sets the current user's status message
- * @param {string} status New status message
- */
- async setStatus(status) {
- await this.pupPage.evaluate(async status => {
- return await window.Store.Wap.sendSetStatus(status);
- }, status);
- }
-
- /**
- * Gets the current connection state for the client
- * @returns {WAState}
- */
- async getState() {
- return await this.pupPage.evaluate(() => {
- return window.Store.AppState.state;
- });
- }
-
- /**
- * Marks the client as online
- */
- async sendPresenceAvailable() {
- return await this.pupPage.evaluate(() => {
- return window.Store.Wap.sendPresenceAvailable();
- });
- }
-
- /**
- * Enables and returns the archive state of the Chat
- * @returns {boolean}
- */
- async archiveChat(chatId) {
- return await this.pupPage.evaluate(async chatId => {
- let chat = await window.Store.Chat.get(chatId);
- await window.Store.Cmd.archiveChat(chat, true);
- return chat.archive;
- }, chatId);
- }
-
- /**
- * Changes and returns the archive state of the Chat
- * @returns {boolean}
- */
- async unarchiveChat(chatId) {
- return await this.pupPage.evaluate(async chatId => {
- let chat = await window.Store.Chat.get(chatId);
- await window.Store.Cmd.archiveChat(chat, false);
- return chat.archive;
- }, chatId);
- }
-
- /**
- * Mutes the Chat until a specified date
- * @param {string} chatId ID of the chat that will be muted
- * @param {Date} unmuteDate Date when the chat will be unmuted
- */
- async muteChat(chatId, unmuteDate) {
- await this.pupPage.evaluate(async (chatId, timestamp) => {
- let chat = await window.Store.Chat.get(chatId);
- await chat.mute.mute(timestamp, !0);
- }, chatId, unmuteDate.getTime() / 1000);
- }
-
- /**
- * Unmutes the Chat
- * @param {string} chatId ID of the chat that will be unmuted
- */
- async unmuteChat(chatId) {
- await this.pupPage.evaluate(async chatId => {
- let chat = await window.Store.Chat.get(chatId);
- await window.Store.Cmd.muteChat(chat, false);
- }, chatId);
- }
-
- /**
- * Returns the contact ID's profile picture URL, if privacy settings allow it
- * @param {string} contactId the whatsapp user's ID
- * @returns {Promise<string>}
- */
- async getProfilePicUrl(contactId) {
- const profilePic = await this.pupPage.evaluate((contactId) => {
- return window.Store.Wap.profilePicFind(contactId);
- }, contactId);
-
- return profilePic ? profilePic.eurl : undefined;
- }
-
- /**
- * Force reset of connection state for the client
- */
- async resetState(){
- await this.pupPage.evaluate(() => {
- window.Store.AppState.phoneWatchdog.shiftTimer.forceRunNow();
- });
- }
-
- /**
- * Check if a given ID is registered in whatsapp
- * @returns {Promise<Boolean>}
- */
- async isRegisteredUser(id) {
- return await this.pupPage.evaluate(async (id) => {
- let result = await window.Store.Wap.queryExist(id);
- return result.jid !== undefined;
- }, id);
- }
-
- /**
- * Create a new group
- * @param {string} name group title
- * @param {Array<Contact|string>} participants an array of Contacts or contact IDs to add to the group
- * @returns {Object} createRes
- * @returns {string} createRes.gid - ID for the group that was just created
- * @returns {Object.<string,string>} createRes.missingParticipants - participants that were not added to the group. Keys represent the ID for participant that was not added and its value is a status code that represents the reason why participant could not be added. This is usually 403 if the user's privacy settings don't allow you to add them to groups.
- */
- async createGroup(name, participants) {
- if(!Array.isArray(participants) || participants.length == 0) {
- throw 'You need to add at least one other participant to the group';
- }
-
- if(participants.every(c => c instanceof Contact)) {
- participants = participants.map(c => c.id._serialized);
- }
-
- const createRes = await this.pupPage.evaluate(async (name, participantIds) => {
- const res = await window.Store.Wap.createGroup(name, participantIds);
- console.log(res);
- if(!res.status === 200) {
- throw 'An error occurred while creating the group!';
- }
-
- return res;
- }, name, participants);
-
- const missingParticipants = createRes.participants.reduce(((missing, c) => {
- const id = Object.keys(c)[0];
- const statusCode = c[id].code;
- if(statusCode != 200) return Object.assign(missing, {[id]: statusCode});
- return missing;
- }), {});
-
- return { gid: createRes.gid, missingParticipants};
- }
-
-}
-
-module.exports = Client;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/ClientInfo.html b/whatsapp-web.js/docs/ClientInfo.html
deleted file mode 100644
index aa4b21e..0000000
--- a/whatsapp-web.js/docs/ClientInfo.html
+++ /dev/null
@@ -1,239 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: ClientInfo
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- new ClientInfo ()
-
- Extends
- Base
-
-
-
- Properties
-
- me
- object
- Current user ID
-
-
- phone
- object
- Information about the phone this client is connected to
-
- Properties
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- wa_version
-
-
- string
-
-
-
-
-
- WhatsApp Version running on the phone
-
-
-
-
- os_version
-
-
- string
-
-
-
-
-
- OS Version running on the phone (iOS or Android version)
-
-
-
-
- device_manufacturer
-
-
- string
-
-
-
-
-
- Device manufacturer
-
-
-
-
- device_model
-
-
- string
-
-
-
-
-
- Device model
-
-
-
-
- os_build_number
-
-
- string
-
-
-
-
-
- OS build number
-
-
-
-
-
-
-
-
- Platform the phone is running on
-
-
- pushname
- string
- Name configured to be shown in push notifications
-
-
-
- Method
-
- async
- getBatteryStatus () → (object, number, or boolean)
- Get current battery percentage and charging status for the attached device
-
- Returns
-
- object
batteryStatus
-
-
-
- number
batteryStatus.battery - The current battery percentage
-
-
-
- boolean
batteryStatus.plugged - Indicates if the phone is plugged in (true) or not (false)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/Contact.html b/whatsapp-web.js/docs/Contact.html
deleted file mode 100644
index 0f29419..0000000
--- a/whatsapp-web.js/docs/Contact.html
+++ /dev/null
@@ -1,211 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: Contact
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Properties
-
- id
- object
- ID that represents the contact
-
-
- isBusiness
- boolean
- Indicates if the contact is a business contact
-
-
- isEnterprise
- boolean
- Indicates if the contact is an enterprise contact
-
-
- isGroup
- boolean
- Indicates if the contact is a group contact
-
-
- isMe
- boolean
- Indicates if the contact is the current user's contact
-
-
-
- Indicates if the number is saved in the current phone's contacts
-
-
- isUser
- boolean
- Indicates if the contact is a user contact
-
-
-
- Indicates if the number is registered on WhatsApp
-
-
- name
- nullable string
- The contact's name, as saved by the current user
-
-
- number
- string
- Contact's phone number
-
-
- pushname
- string
- The name that the contact has configured to be shown publically
-
-
- shortName
- nullable string
- A shortened version of name
-
-
-
- Method
-
- async
- getProfilePicUrl () → Promise containing string
- Returns the contact's profile picture URL, if privacy settings allow it
-
- Returns
-
- Promise containing string
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/GroupChat.html b/whatsapp-web.js/docs/GroupChat.html
deleted file mode 100644
index c225721..0000000
--- a/whatsapp-web.js/docs/GroupChat.html
+++ /dev/null
@@ -1,713 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: GroupChat
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- new GroupChat ()
-
- Extends
- Chat
-
-
-
- Properties
-
- archived
- unknown
- Indicates if the Chat is archived
-
- Inherited from
- Chat#archived
-
- createdAt
- date
- Gets the date at which the group was created
-
-
- description
- string
- Gets the group description
-
-
- id
- unknown
- ID that represents the chat
-
- Inherited from
- Chat#id
-
- isGroup
- unknown
- Indicates if the Chat is a Group Chat
-
- Inherited from
- Chat#isGroup
-
- isReadOnly
- unknown
- Indicates if the Chat is readonly
-
- Inherited from
- Chat#isReadOnly
-
- name
- unknown
- Title of the chat
-
- Inherited from
- Chat#name
-
- owner
- Gets the group owner
-
-
- participants
- array
- Gets the group participants
-
-
- timestamp
- unknown
- Unix timestamp for when the chat was created
-
- Inherited from
- Chat#timestamp
-
- unreadCount
- unknown
- Amount of messages unread
-
- Inherited from
- Chat#unreadCount
-
-
- Methods
-
- async
- addParticipants (participantIds)
- Adds a list of participants by ID to the group
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- participantIds
-
-
- Array of string
-
-
-
-
-
-
-
-
-
-
-
-
- async
- archive ()
- Archives this chat
-
- Inherited from
- Chat#archive
-
- async
- clearMessages () → Promise containing Boolean
- Clears all messages from the chat
-
- Inherited from
- Chat#clearMessages
- Returns
-
- result
-
-
- async
- clearState ()
- Stops typing or recording in chat immediately.
-
- Inherited from
- Chat#clearState
-
- async
- delete () → Promise containing Boolean
- Deletes the chat
-
- Inherited from
- Chat#delete
- Returns
-
- result
-
-
- async
- demoteParticipants (participantIds)
- Demotes participants by IDs to regular users
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- participantIds
-
-
- Array of string
-
-
-
-
-
-
-
-
-
-
-
-
- async
- fetchMessages (searchOptions) → Promise containing Array of Message
- Loads chat messages, sorted from earliest to latest.
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- searchOptions
-
-
-
-
-
-
-
-
- Options for searching messages. Right now only limit is supported.
- Values in searchOptions have the following properties:
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- limit
-
-
-
-
-
- Yes
-
-
- The amount of messages to return. Note that the actual number of returned messages may be smaller if there aren't enough messages in the conversation. Set this to Infinity to load all messages.
- Defaults to 50.
-
-
-
-
-
-
-
-
-
-
- Inherited from
- Chat#fetchMessages
- Returns
-
-
- async
- getInviteCode ()
- Gets the invite code for a specific group
-
-
- async
- leave ()
- Makes the bot leave the group
-
-
- async
- mute (unmuteDate)
- Mutes this chat until a specified date
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- unmuteDate
-
-
-
-
-
-
-
-
- Date at which the Chat will be unmuted
-
-
-
-
-
-
- Inherited from
- Chat#mute
-
- async
-
- Promotes participants by IDs to admins
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- participantIds
-
-
- Array of string
-
-
-
-
-
-
-
-
-
-
-
-
- async
- removeParticipants (participantIds)
- Removes a list of participants by ID to the group
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- participantIds
-
-
- Array of string
-
-
-
-
-
-
-
-
-
-
-
-
- async
- revokeInvite ()
- Invalidates the current group invite code and generates a new one
-
-
- async
- sendMessage (content, options) → Promise containing Message
- Send a message to this chat
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- content
-
-
-
-
-
-
-
-
-
-
-
-
- options
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Inherited from
- Chat#sendMessage
- Returns
-
- Message that was just sent
-
-
- async
- sendSeen () → Promise containing Boolean
- Set the message as seen
-
- Inherited from
- Chat#sendSeen
- Returns
-
- result
-
-
- async
- sendStateRecording ()
- Simulate recording audio in chat. This will last for 25 seconds.
-
- Inherited from
- Chat#sendStateRecording
-
- async
- sendStateTyping ()
- Simulate typing in chat. This will last for 25 seconds.
-
- Inherited from
- Chat#sendStateTyping
-
- async
- setDescription (description)
- Updates the group description
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- description
-
-
- string
-
-
-
-
-
-
-
-
-
-
-
-
- async
- setSubject (subject)
- Updates the group subject
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- subject
-
-
- string
-
-
-
-
-
-
-
-
-
-
-
-
- async
- unarchive ()
- un-archives this chat
-
- Inherited from
- Chat#unarchive
-
- async
- unmute ()
- Unmutes this chat
-
- Inherited from
- Chat#unmute
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/GroupNotification.html b/whatsapp-web.js/docs/GroupNotification.html
deleted file mode 100644
index 27ead88..0000000
--- a/whatsapp-web.js/docs/GroupNotification.html
+++ /dev/null
@@ -1,248 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: GroupNotification
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- new GroupNotification ()
-
- Extends
- Base
-
-
-
- Properties
-
- author
- string
- ContactId for the user that produced the GroupNotification.
-
-
- body
- string
- Extra content
-
-
- chatId
- string
- ID for the Chat that this groupNotification was sent for.
-
-
- id
- object
- ID that represents the groupNotification
-
-
- recipientIds
- Array of string
- Contact IDs for the users that were affected by this GroupNotification.
-
-
- timestamp
- number
- Unix timestamp for when the groupNotification was created
-
-
-
- GroupNotification type
-
-
-
- Methods
-
- getChat () → Promise containing Chat
- Returns the Chat this groupNotification was sent in
-
- Returns
-
- Promise containing Chat
-
-
-
- Returns the Contact this GroupNotification was produced by
-
- Returns
-
- Promise containing Contact
-
-
- async
- getRecipients () → Promise containing Array of Contact
- Returns the Contacts affected by this GroupNotification.
-
- Returns
-
- Promise containing Array of Contact
-
-
- async
- reply (content, options) → Promise containing Message
- Sends a message to the same chat this GroupNotification was produced in.
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- content
-
-
- (string, MessageMedia , or Location )
-
-
-
-
-
-
-
-
-
- options
-
-
- object
-
-
-
-
-
-
-
-
-
-
-
- Returns
-
- Promise containing Message
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/InterfaceController.html b/whatsapp-web.js/docs/InterfaceController.html
deleted file mode 100644
index 91de817..0000000
--- a/whatsapp-web.js/docs/InterfaceController.html
+++ /dev/null
@@ -1,202 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: InterfaceController
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- new InterfaceController ()
-
-
-
-
- Methods
-
- async
- closeRightDrawer ()
- Closes the Right Drawer
-
-
- async
- openChatDrawer (chatId)
- Opens the Chat Drawer
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- chatId
-
-
- string
-
-
-
-
-
- ID of the chat drawer that will be opened
-
-
-
-
-
-
-
- async
- openChatWindow (chatId)
- Opens the Chat Window
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- chatId
-
-
- string
-
-
-
-
-
- ID of the chat window that will be opened
-
-
-
-
-
-
-
- async
- openMessageDrawer (msgId)
- Opens the Message Drawer
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- msgId
-
-
- string
-
-
-
-
-
- ID of the message drawer that will be opened
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/Location.html b/whatsapp-web.js/docs/Location.html
deleted file mode 100644
index d67935a..0000000
--- a/whatsapp-web.js/docs/Location.html
+++ /dev/null
@@ -1,164 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: Location
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- new Location (latitude, longitude, description)
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- latitude
-
-
-
-
-
-
-
-
-
-
-
-
- longitude
-
-
-
-
-
-
-
-
-
-
-
-
- description
-
-
-
-
-
-
-
-
- Value can be null.
-
-
-
-
-
-
-
-
-
- Properties
-
- description
- nullable string
- Name for the location
-
-
- latitude
- number
- Location latitude
-
-
- longitude
- number
- Location longitude
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/Message.html b/whatsapp-web.js/docs/Message.html
deleted file mode 100644
index 8006b87..0000000
--- a/whatsapp-web.js/docs/Message.html
+++ /dev/null
@@ -1,402 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: Message
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- new Message ()
-
- Extends
- Base
-
-
-
- Properties
-
-
- ACK status for the message
-
-
- author
- string
- If the message was sent to a group, this field will contain the user that sent the message.
-
-
- body
- string
- Message content
-
-
- broadcast
- boolean
- Indicates if the message was a broadcast
-
-
- from
- string
- ID for the Chat that this message was sent to, except if the message was sent by the current user.
-
-
- fromMe
- boolean
- Indicates if the message was sent by the current user
-
-
-
- Indicates if the message has media available for download
-
-
- hasQuotedMsg
- boolean
- Indicates if the message was sent as a reply to another message.
-
-
- id
- object
- ID that represents the message
-
-
- isForwarded
- boolean
- Indicates if the message was forwarded
-
-
-
- Location information contained in the message, if the message is type "location"
-
-
-
- MediaKey that represents the sticker 'ID'
-
-
- mentionedIds
- Array of string
- Indicates the mentions in the message body.
-
-
- timestamp
- number
- Unix timestamp for when the message was created
-
-
- to
- string
- ID for who this message is for.
- If the message is sent by the current user, it will be the Chat to which the message is being sent.
- If the message is sent by another user, it will be the ID for the current user.
-
-
-
- Message type
-
-
-
- Methods
-
- async
- delete (everyone)
- Deletes a message from the chat
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- everyone
-
-
- boolean
-
-
-
-
-
- If true and the message is sent by the current user, will delete it for everyone in the chat.
- Value can be null.
-
-
-
-
-
-
-
- async
-
- Downloads and returns the attatched message media
-
- Returns
-
- Promise containing MessageMedia
-
-
- getChat () → Promise containing Chat
- Returns the Chat this message was sent in
-
- Returns
-
- Promise containing Chat
-
-
-
- Returns the Contact this message was sent from
-
- Returns
-
- Promise containing Contact
-
-
- async
- getMentions () → Promise containing Array of Contact
- Returns the Contacts mentioned in this message
-
- Returns
-
- Promise containing Array of Contact
-
-
- async
- getQuotedMessage () → Promise containing Message
- Returns the quoted message, if any
-
- Returns
-
- Promise containing Message
-
-
- async
- reply (content, chatId, options) → Promise containing Message
- Sends a message as a reply to this message. If chatId is specified, it will be sent
- through the specified Chat. If not, it will send the message
- in the same Chat as the original message was sent.
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- content
-
-
- (string, MessageMedia , or Location )
-
-
-
-
-
-
-
-
-
- chatId
-
-
- string
-
-
-
-
-
- Value can be null.
-
-
-
-
- options
-
-
- object
-
-
-
-
-
-
-
-
-
-
-
- Returns
-
- Promise containing Message
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/MessageMedia.html b/whatsapp-web.js/docs/MessageMedia.html
deleted file mode 100644
index f9c1e65..0000000
--- a/whatsapp-web.js/docs/MessageMedia.html
+++ /dev/null
@@ -1,223 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: MessageMedia
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- mimetype
-
-
-
-
-
-
-
-
- MIME type of the attachment
-
-
-
-
- data
-
-
-
-
-
-
-
-
- Base64-encoded data of the file
-
-
-
-
- filename
-
-
-
-
-
-
-
-
- Document file name
- Value can be null.
-
-
-
-
-
-
-
-
-
- Properties
-
- data
- string
- Base64 encoded data that represents the file
-
-
- filename
- nullable string
- Name of the file (for documents)
-
-
- mimetype
- string
- MIME type of the attachment
-
-
-
- Method
-
- static
- fromFilePath (filePath) → MessageMedia
- Creates a MessageMedia instance from a local file path
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- filePath
-
-
- string
-
-
-
-
-
-
-
-
-
-
-
- Returns
-
- MessageMedia
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/PrivateChat.html b/whatsapp-web.js/docs/PrivateChat.html
deleted file mode 100644
index 4057ade..0000000
--- a/whatsapp-web.js/docs/PrivateChat.html
+++ /dev/null
@@ -1,442 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: PrivateChat
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- new PrivateChat ()
-
- Extends
- Chat
-
-
-
- Properties
-
- archived
- unknown
- Indicates if the Chat is archived
-
- Inherited from
- Chat#archived
-
- id
- unknown
- ID that represents the chat
-
- Inherited from
- Chat#id
-
- isGroup
- unknown
- Indicates if the Chat is a Group Chat
-
- Inherited from
- Chat#isGroup
-
- isReadOnly
- unknown
- Indicates if the Chat is readonly
-
- Inherited from
- Chat#isReadOnly
-
- name
- unknown
- Title of the chat
-
- Inherited from
- Chat#name
-
- timestamp
- unknown
- Unix timestamp for when the chat was created
-
- Inherited from
- Chat#timestamp
-
- unreadCount
- unknown
- Amount of messages unread
-
- Inherited from
- Chat#unreadCount
-
-
- Methods
-
- async
- archive ()
- Archives this chat
-
- Inherited from
- Chat#archive
-
- async
- clearMessages () → Promise containing Boolean
- Clears all messages from the chat
-
- Inherited from
- Chat#clearMessages
- Returns
-
- result
-
-
- async
- clearState ()
- Stops typing or recording in chat immediately.
-
- Inherited from
- Chat#clearState
-
- async
- delete () → Promise containing Boolean
- Deletes the chat
-
- Inherited from
- Chat#delete
- Returns
-
- result
-
-
- async
- fetchMessages (searchOptions) → Promise containing Array of Message
- Loads chat messages, sorted from earliest to latest.
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- searchOptions
-
-
-
-
-
-
-
-
- Options for searching messages. Right now only limit is supported.
- Values in searchOptions have the following properties:
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- limit
-
-
-
-
-
- Yes
-
-
- The amount of messages to return. Note that the actual number of returned messages may be smaller if there aren't enough messages in the conversation. Set this to Infinity to load all messages.
- Defaults to 50.
-
-
-
-
-
-
-
-
-
-
- Inherited from
- Chat#fetchMessages
- Returns
-
-
- async
- mute (unmuteDate)
- Mutes this chat until a specified date
-
- Parameter
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- unmuteDate
-
-
-
-
-
-
-
-
- Date at which the Chat will be unmuted
-
-
-
-
-
-
- Inherited from
- Chat#mute
-
- async
- sendMessage (content, options) → Promise containing Message
- Send a message to this chat
-
- Parameters
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- content
-
-
-
-
-
-
-
-
-
-
-
-
- options
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Inherited from
- Chat#sendMessage
- Returns
-
- Message that was just sent
-
-
- async
- sendSeen () → Promise containing Boolean
- Set the message as seen
-
- Inherited from
- Chat#sendSeen
- Returns
-
- result
-
-
- async
- sendStateRecording ()
- Simulate recording audio in chat. This will last for 25 seconds.
-
- Inherited from
- Chat#sendStateRecording
-
- async
- sendStateTyping ()
- Simulate typing in chat. This will last for 25 seconds.
-
- Inherited from
- Chat#sendStateTyping
-
- async
- unarchive ()
- un-archives this chat
-
- Inherited from
- Chat#unarchive
-
- async
- unmute ()
- Unmutes this chat
-
- Inherited from
- Chat#unmute
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/PrivateContact.html b/whatsapp-web.js/docs/PrivateContact.html
deleted file mode 100644
index 62bf71e..0000000
--- a/whatsapp-web.js/docs/PrivateContact.html
+++ /dev/null
@@ -1,235 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: PrivateContact
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Properties
-
- id
- unknown
- ID that represents the contact
-
- Inherited from
- Contact#id
-
- isBusiness
- unknown
- Indicates if the contact is a business contact
-
- Inherited from
- Contact#isBusiness
-
- isEnterprise
- unknown
- Indicates if the contact is an enterprise contact
-
- Inherited from
- Contact#isEnterprise
-
- isGroup
- unknown
- Indicates if the contact is a group contact
-
- Inherited from
- Contact#isGroup
-
- isMe
- unknown
- Indicates if the contact is the current user's contact
-
- Inherited from
- Contact#isMe
-
-
- Indicates if the number is saved in the current phone's contacts
-
- Inherited from
- Contact#isMyContact
-
- isUser
- unknown
- Indicates if the contact is a user contact
-
- Inherited from
- Contact#isUser
-
-
- Indicates if the number is registered on WhatsApp
-
- Inherited from
- Contact#isWAContact
-
- name
- unknown
- The contact's name, as saved by the current user
-
- Inherited from
- Contact#name
-
- number
- unknown
- Contact's phone number
-
- Inherited from
- Contact#number
-
- pushname
- unknown
- The name that the contact has configured to be shown publically
-
- Inherited from
- Contact#pushname
-
- shortName
- unknown
- A shortened version of name
-
- Inherited from
- Contact#shortName
-
-
- Method
-
- async
- getProfilePicUrl () → Promise containing string
- Returns the contact's profile picture URL, if privacy settings allow it
-
- Inherited from
- Contact#getProfilePicUrl
- Returns
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/Util.html b/whatsapp-web.js/docs/Util.html
deleted file mode 100644
index 70c7bc7..0000000
--- a/whatsapp-web.js/docs/Util.html
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Class: Util
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/css/baseline.css b/whatsapp-web.js/docs/css/baseline.css
deleted file mode 100644
index 090f95a..0000000
--- a/whatsapp-web.js/docs/css/baseline.css
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
-html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:none;text-decoration:underline dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}legend,td,th{padding:0}
-/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
-@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999}thead{display:table-header-group}blockquote,img,pre,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.jsdoc-navbar,.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent;position:relative;min-height:100%}body{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;font-family:'Noto Serif',serif;margin-bottom:50px;padding-top:75px}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.1;color:inherit}.summary-callout .h1,.summary-callout .h2,.summary-callout .h3,.summary-callout .h4,.summary-callout .h5,.summary-callout .h6,.summary-callout h1,.summary-callout h2,.summary-callout h3,.summary-callout h4,.summary-callout h5,.summary-callout h6,.symbol-index-section .h1,.symbol-index-section .h2,.symbol-index-section .h3,.symbol-index-section .h4,.symbol-index-section .h5,.symbol-index-section .h6,.symbol-index-section h1,.symbol-index-section h2,.symbol-index-section h3,.symbol-index-section h4,.symbol-index-section h5,.symbol-index-section h6{font-weight:500;line-height:1.1}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h1,.h2,.h3,.h4,.h5,.h6,.summary-callout .h1,.summary-callout .h2,.summary-callout .h3,.summary-callout .h4,.summary-callout .h5,.summary-callout .h6,.summary-callout h1,.summary-callout h2,.summary-callout h3,.summary-callout h4,.summary-callout h5,.summary-callout h6,.symbol-index-section .h1,.symbol-index-section .h2,.symbol-index-section .h3,.symbol-index-section .h4,.symbol-index-section .h5,.symbol-index-section .h6,.symbol-index-section h1,.symbol-index-section h2,.symbol-index-section h3,.symbol-index-section h4,.symbol-index-section h5,.symbol-index-section h6,h1,h2,h3,h4,h5,h6{margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h4,.summary-callout .h1,.summary-callout .h2,.summary-callout .h3,.summary-callout .h4,.summary-callout .h5,.summary-callout .h6,.summary-callout h1,.summary-callout h2,.summary-callout h3,.summary-callout h4,.summary-callout h5,.summary-callout h6,.symbol-index-section .h1,.symbol-index-section .h2,.symbol-index-section .h3,.symbol-index-section .h4,.symbol-index-section .h5,.symbol-index-section .h6,.symbol-index-section h1,.symbol-index-section h2,.symbol-index-section h3,.symbol-index-section h4,.symbol-index-section h5,.symbol-index-section h6,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left,th{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px}dl,ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline{margin-left:-5px}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-compact dt,.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-compact dd,.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child,td>p:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:"\2014 \00A0"}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:""}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:"\00A0 \2014"}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code,kbd,pre{padding:2px 4px;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}#jsdoc-body-container,#jsdoc-footer-container,#jsdoc-navbar-container,.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.row-no-gutters{margin-right:0;margin-left:0}.row-no-gutters [class*=col-]{padding-right:0;padding-left:0}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}pre code,table{background-color:transparent}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th{padding:8px;line-height:1.42857143;border-top:1px solid #ddd}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th,.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.jsdoc-details-table>tbody+tbody,.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.jsdoc-details-table>tbody>tr:hover,.table-hover>tbody>tr:hover,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset,legend{padding:0;border:0}fieldset{min-width:0;margin:0}legend{display:block;width:100%;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;appearance:none}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}input[type=file]{display:block}input[type=range]{display:block;width:100%}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control,select[multiple],select[multiple].input-sm,select[size],textarea.form-control,textarea.input-sm{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.form-control,output{display:block;font-size:14px;line-height:1.42857143;color:#555}output{padding-top:7px}.form-control{width:100%;height:34px;padding:6px 12px;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.checkbox.disabled label,.form-control[disabled],.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .form-control,fieldset[disabled] .radio label{cursor:not-allowed}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],.input-group-sm input[type=time],input[type=date].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,input[type=time].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],.input-group-lg input[type=time],input[type=date].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,input[type=time].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.checkbox-inline,.radio label,.radio-inline{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox label,.radio label{min-height:20px}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px \9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;vertical-align:middle}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.form-group-sm .form-control,.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control,select.input-sm{height:30px;line-height:30px}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.form-group-lg .form-control,.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control,select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg select.form-control,select.input-lg{height:46px;line-height:46px}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;background-image:none;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;background-image:none;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;background-image:none;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;background-image:none;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;background-image:none;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;background-image:none;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-xs{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li,.nav>li>a{position:relative;display:block}.nav>li>a{padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu,.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-justified>li,.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li>a{margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane,li.jqtree-closed>ul{display:none}.navbar-brand>img,.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative}.jsdoc-navbar,.navbar{min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.jsdoc-navbar,.navbar{border-radius:4px}.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.jsdoc-navbar,.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}@media (min-width:768px){.jsdoc-navbar,.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.jsdoc-navbar,.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}#jsdoc-body-container>.navbar-collapse,#jsdoc-body-container>.navbar-header,#jsdoc-footer-container>.navbar-collapse,#jsdoc-footer-container>.navbar-header,#jsdoc-navbar-container>.navbar-collapse,#jsdoc-navbar-container>.navbar-header,.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.jsdoc-navbar-package-name,.navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin:8px -15px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.jsdoc-navbar,.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand,.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .btn-link,.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover,a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .btn-link,.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.label{display:inline;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.badge:focus,a.badge:hover,a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;background-color:#eee}.jumbotron,.jumbotron .h1,.jumbotron h1,a.list-group-item-danger .list-group-item-heading,a.list-group-item-info .list-group-item-heading,a.list-group-item-success .list-group-item-heading,a.list-group-item-warning .list-group-item-heading,button.list-group-item-danger .list-group-item-heading,button.list-group-item-info .list-group-item-heading,button.list-group-item-success .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}a.list-group-item,button.list-group-item{color:#555}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.jsdoc-panel,.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.jsdoc-panel-heading,.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle,.panel-title,.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.dl-compact dd pre,.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table,dd>p{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body,.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.jsdoc-panel,.panel-default,.well blockquote{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}#jsdoc-body-container:after,#jsdoc-body-container:before,#jsdoc-content:after,#jsdoc-content:before,#jsdoc-footer-container:after,#jsdoc-footer-container:before,#jsdoc-navbar-container:after,#jsdoc-navbar-container:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-compact dd:after,.dl-compact dd:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.jsdoc-navbar:after,.jsdoc-navbar:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.panel-body:after,.panel-body:before,.row:after,.row:before,.summary-callout:after,.summary-callout:before,.summary-content:after,.summary-content:before,.symbol-index-content:after,.symbol-index-content:before,.symbol-index:after,.symbol-index:before{display:table;content:" "}#jsdoc-body-container:after,#jsdoc-content:after,#jsdoc-footer-container:after,#jsdoc-navbar-container:after,.clearfix:after,.container-fluid:after,.container:after,.dl-compact dd:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.jsdoc-navbar:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.panel-body:after,.row:after,.summary-callout:after,.summary-content:after,.symbol-index-content:after,.symbol-index:after,li.jqtree_common{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs,.visible-xs-block{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}.visible-xs-inline{display:inline!important}.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm,.visible-sm-block{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}.visible-sm-inline{display:inline!important}.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md,.visible-md-block{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}.visible-md-inline{display:inline!important}.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg,.visible-lg-block{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}.visible-lg-inline{display:inline!important}.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}.hidden-print{display:none!important}}.pln{color:#4d4d4c}@media screen{.str{color:#718c00}.kwd{color:#8959a8}.com{color:#8e908c}.typ{color:#4271ae}.lit{color:#f5871f}.clo,.opn,.pun{color:#4d4d4c}.tag{color:#c82829}.atn{color:#f5871f}.atv{color:#3e999f}.dec{color:#f5871f}.var{color:#c82829}.fun{color:#4271ae}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:700}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:700}.lit{color:#044}.clo,.opn,.pun{color:#440}.tag{color:#006;font-weight:700}.atn{color:#404}.atv{color:#060}}ol.linenums{margin-top:0;margin-bottom:0}.jqtree_common{list-style:none}ul.jqtree_common{padding-left:1.5em}.jqtree-title{margin-left:1.5em}.jqtree-title.jqtree-title-folder{margin-left:0}.jqtree-toggler{margin-left:.2em;margin-right:.6em}.jqtree-toggler.jqtree-closed{margin-left:0;margin-right:.45em}.jqtree-toggler:hover{text-decoration:none}.h1,h1{font-family:'Karla',sans-serif;border-bottom:1px solid #eee;font-size:33px;margin-top:40px}.h1+section .h2:first-child,.h1+section h2:first-child,.h2+section .h3:first-child,.h2+section h3:first-child,h1+section .h2:first-child,h1+section h2:first-child,h2+section .h3:first-child,h2+section h3:first-child{margin-top:20px}.h2,h2{border-bottom:1px solid #eee;font-size:28px;margin-top:40px}.h2,.h3,.h4,.h5,.h6,h2,h3,h4,h5,h6{font-family:'Karla',sans-serif}.h3,h3{font-size:21px;margin-top:40px}.h4,.h5,.h6,h4,h5,h6{margin-top:20px}.summary-callout .h1,.summary-callout .h2,.summary-callout .h3,.summary-callout .h4,.summary-callout .h5,.summary-callout .h6,.summary-callout h1,.summary-callout h2,.summary-callout h3,.summary-callout h4,.summary-callout h5,.summary-callout h6,.symbol-index-section .h1,.symbol-index-section .h2,.symbol-index-section .h3,.symbol-index-section .h4,.symbol-index-section .h5,.symbol-index-section .h6,.symbol-index-section h1,.symbol-index-section h2,.symbol-index-section h3,.symbol-index-section h4,.symbol-index-section h5,.symbol-index-section h6{font-family:'Karla',sans-serif;color:#5bc0de;margin-top:20px}.prettyprint.linenums li,code,pre>code{font-family:'Inconsolata',monospace;font-size:100%}.label,dt,th{font-family:'Karla'}.dl-compact dt{text-align:left}.dl-summary-callout dd{margin-bottom:10px}.label{font-size:100%;font-weight:400;padding:.1em .5em;text-transform:uppercase}.label-async{background-color:#c5e1a5}.label-generator{background-color:#9fa8da}.label-package,.label-private,.label-protected,.label-public{background-color:#90caf9}.label-constant,.label-readonly{background-color:#ffab91}.label-kind{background-color:#ffcc80}.label-inner,.label-static{background-color:#a5d6a7}.label-virtual{background-color:#b39ddb}.page-header{border-bottom:0}.prettyprint.linenums li{color:#a8a9a6}.property-type{margin-left:14px}.signature-params,.signature-returns{color:#a8a9a6}.source-link{font-size:11.2px;margin-top:-.75em}.summary-callout,.symbol-index-section{font-size:12.6px}.summary-callout-heading,.symbol-index-section-heading{border-bottom:0}.symbol-classdesc p:first-child,.symbol-description p:first-child{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.symbol-classdesc p:first-child,.symbol-description p:first-child{font-size:21px}}.symbol-detail-labels{font-size:11.2px;margin-bottom:4px;margin-top:40px}.h2+section>.symbol-detail-labels:first-child,h2+section>.symbol-detail-labels:first-child{margin-top:0}.symbol-detail-labels+.h1,.symbol-detail-labels+.h2,.symbol-detail-labels+.h3,.symbol-detail-labels+.h4,.symbol-detail-labels+.h5,.symbol-detail-labels+.h6,.symbol-detail-labels+h1,.symbol-detail-labels+h2,.symbol-detail-labels+h3,.symbol-detail-labels+h4,.symbol-detail-labels+h5,.symbol-detail-labels+h6{margin-top:0}.symbol-index-list>dd{margin-bottom:.75em}.symbol-index-name{text-indent:-1em;margin-left:1em}.symbol-name{font-weight:700}@media (min-width:768px){#jsdoc-body-container>.navbar-collapse,#jsdoc-body-container>.navbar-header,#jsdoc-footer-container>.navbar-collapse,#jsdoc-footer-container>.navbar-header,#jsdoc-navbar-container>.navbar-collapse,#jsdoc-navbar-container>.navbar-header{margin-right:0;margin-left:0}}.jsdoc-footer{position:absolute;bottom:0;width:100%;height:50px;margin:auto;padding:15px;background-color:#f8f8f8;border:1px solid #e7e7e7}.jsdoc-footer p{margin:0;text-align:center}.symbol-index{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}#jsdoc-content,.summary-callout>.navbar-collapse,.summary-callout>.navbar-header,.summary-content,.symbol-index-content,.symbol-index>.navbar-collapse,.symbol-index>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.summary-callout>.navbar-collapse,.summary-callout>.navbar-header,.symbol-index>.navbar-collapse,.symbol-index>.navbar-header{margin-right:0;margin-left:0}}#jsdoc-content-container,.summary-column,.symbol-index-column{position:relative;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:992px){.summary-column,.symbol-index-column{float:left;width:33.33333333%}}@media (min-width:992px){#jsdoc-content-container{float:left;width:75%;left:25%}}#jsdoc-toc-nav{position:relative;min-height:1px;padding-right:15px;padding-left:15px;font-family:'Karla',sans-serif;margin-top:50px}@media (min-width:992px){#jsdoc-toc-nav{float:left;width:25%;right:75%}}.jsdoc-details-table{width:100%;max-width:100%;margin-bottom:20px}.jsdoc-details-table>thead>tr>th{padding:8px;line-height:1.42857143;border-top:1px solid #ddd}.jsdoc-details-table>tbody>tr>td,.jsdoc-details-table>tbody>tr>th,.jsdoc-details-table>tfoot>tr>td,.jsdoc-details-table>tfoot>tr>th,.jsdoc-details-table>thead>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.jsdoc-details-table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.jsdoc-details-table>caption+thead>tr:first-child>td,.jsdoc-details-table>caption+thead>tr:first-child>th,.jsdoc-details-table>colgroup+thead>tr:first-child>td,.jsdoc-details-table>colgroup+thead>tr:first-child>th,.jsdoc-details-table>thead:first-child>tr:first-child>td,.jsdoc-details-table>thead:first-child>tr:first-child>th{border-top:0}.jsdoc-details-table .table{background-color:#fff}article td,article th{padding:5px 8px 5px 0}.summary-callout{padding:0 1em;margin:1em 0;border:1px solid #eee;border-left-width:1em;border-left-color:#5bc0de;border-radius:3px}
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/global.html b/whatsapp-web.js/docs/global.html
deleted file mode 100644
index 9ef30db..0000000
--- a/whatsapp-web.js/docs/global.html
+++ /dev/null
@@ -1,1032 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Globals
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Globals
-
-
- Properties
-
- read-only
- ChatTypes
- string
- Chat types
-
- Properties
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- SOLO
-
-
-
-
-
-
-
-
-
-
-
-
- GROUP
-
-
-
-
-
-
-
-
-
-
-
-
- UNKNOWN
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- read-only
- Events
- string
- Events that can be emitted by the client
-
- Properties
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- AUTHENTICATED
-
-
-
-
-
-
-
-
-
-
-
-
- AUTHENTICATION_FAILURE
-
-
-
-
-
-
-
-
-
-
-
-
- READY
-
-
-
-
-
-
-
-
-
-
-
-
- MESSAGE_RECEIVED
-
-
-
-
-
-
-
-
-
-
-
-
- MESSAGE_CREATE
-
-
-
-
-
-
-
-
-
-
-
-
- MESSAGE_REVOKED_EVERYONE
-
-
-
-
-
-
-
-
-
-
-
-
- MESSAGE_REVOKED_ME
-
-
-
-
-
-
-
-
-
-
-
-
- MESSAGE_ACK
-
-
-
-
-
-
-
-
-
-
-
-
- MEDIA_UPLOADED
-
-
-
-
-
-
-
-
-
-
-
-
- GROUP_JOIN
-
-
-
-
-
-
-
-
-
-
-
-
- GROUP_LEAVE
-
-
-
-
-
-
-
-
-
-
-
-
- GROUP_UPDATE
-
-
-
-
-
-
-
-
-
-
-
-
- QR_RECEIVED
-
-
-
-
-
-
-
-
-
-
-
-
- DISCONNECTED
-
-
-
-
-
-
-
-
-
-
-
-
- STATE_CHANGED
-
-
-
-
-
-
-
-
-
-
-
-
- BATTERY_CHANGED
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- read-only
- GroupNotificationTypes
- string
- Group notification types
-
- Properties
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- ADD
-
-
-
-
-
-
-
-
-
-
-
-
- INVITE
-
-
-
-
-
-
-
-
-
-
-
-
- REMOVE
-
-
-
-
-
-
-
-
-
-
-
-
- LEAVE
-
-
-
-
-
-
-
-
-
-
-
-
- SUBJECT
-
-
-
-
-
-
-
-
-
-
-
-
- DESCRIPTION
-
-
-
-
-
-
-
-
-
-
-
-
- PICTURE
-
-
-
-
-
-
-
-
-
-
-
-
- ANNOUNCE
-
-
-
-
-
-
-
-
-
-
-
-
- RESTRICT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- read-only
- MessageAck
- number
- Message ACK
-
- Properties
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- ACK_ERROR
-
-
-
-
-
-
-
-
-
-
-
-
- ACK_PENDING
-
-
-
-
-
-
-
-
-
-
-
-
- ACK_SERVER
-
-
-
-
-
-
-
-
-
-
-
-
- ACK_DEVICE
-
-
-
-
-
-
-
-
-
-
-
-
- ACK_READ
-
-
-
-
-
-
-
-
-
-
-
-
- ACK_PLAYED
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- read-only
- MessageTypes
- string
- Message types
-
- Properties
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- TEXT
-
-
-
-
-
-
-
-
-
-
-
-
- AUDIO
-
-
-
-
-
-
-
-
-
-
-
-
- VOICE
-
-
-
-
-
-
-
-
-
-
-
-
- IMAGE
-
-
-
-
-
-
-
-
-
-
-
-
- VIDEO
-
-
-
-
-
-
-
-
-
-
-
-
- DOCUMENT
-
-
-
-
-
-
-
-
-
-
-
-
- STICKER
-
-
-
-
-
-
-
-
-
-
-
-
- LOCATION
-
-
-
-
-
-
-
-
-
-
-
-
- CONTACT_CARD
-
-
-
-
-
-
-
-
-
-
-
-
- CONTACT_CARD_MULTI
-
-
-
-
-
-
-
-
-
-
-
-
- REVOKED
-
-
-
-
-
-
-
-
-
-
-
-
- UNKNOWN
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- read-only
- Status
- number
- Client status
-
- Properties
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- INITIALIZING
-
-
-
-
-
-
-
-
-
-
-
-
- AUTHENTICATING
-
-
-
-
-
-
-
-
-
-
-
-
- READY
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- read-only
- WAState
- string
- WhatsApp state
-
- Properties
-
-
-
- Name
- Type
- Optional
- Description
-
-
-
-
-
- CONFLICT
-
-
-
-
-
-
-
-
-
-
-
-
- CONNECTED
-
-
-
-
-
-
-
-
-
-
-
-
- DEPRECATED_VERSION
-
-
-
-
-
-
-
-
-
-
-
-
- OPENING
-
-
-
-
-
-
-
-
-
-
-
-
- PAIRING
-
-
-
-
-
-
-
-
-
-
-
-
- PROXYBLOCK
-
-
-
-
-
-
-
-
-
-
-
-
- SMB_TOS_BLOCK
-
-
-
-
-
-
-
-
-
-
-
-
- TIMEOUT
-
-
-
-
-
-
-
-
-
-
-
-
- TOS_BLOCK
-
-
-
-
-
-
-
-
-
-
-
-
- UNLAUNCHED
-
-
-
-
-
-
-
-
-
-
-
-
- UNPAIRED
-
-
-
-
-
-
-
-
-
-
-
-
- UNPAIRED_IDLE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/index.html b/whatsapp-web.js/docs/index.html
deleted file mode 100644
index 21824f3..0000000
--- a/whatsapp-web.js/docs/index.html
+++ /dev/null
@@ -1,1999 +0,0 @@
-
-
-
-
-
-
- whatsapp-web.js 1.7.0 » Home
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- whatsapp-web.js
- A WhatsApp API client that connects through the WhatsApp Web browser app
- It uses Puppeteer to run a real instance of Whatsapp Web to avoid getting blocked.
- NOTE: I can't guarantee you will not be blocked by using this method, although it has worked for me. WhatsApp does not allow bots or unofficial clients on their platform, so this shouldn't be considered totally safe.
- Installation
- The module is now available on npm! npm i whatsapp-web.js
- Please note that Node v10.18.1+ is required due to Puppeteer.
- Example usage
- const { Client } = require('whatsapp-web.js');
-const client = new Client();
-
-client.on('qr', (qr) => {
- // Generate and scan this code with your phone
- console.log('QR RECEIVED', qr);
-});
-
-client.on('ready', () => {
- console.log('Client is ready!');
-});
-
-client.on('message', msg => {
- if (msg.body == '!ping') {
- msg.reply('pong');
- }
-});
-
-client.initialize();
-
- Take a look at example.js for another example with more use cases.
- Supported features
-
-
-
- Feature
- Status
-
-
-
-
- Send messages
- ✅
-
-
- Receive messages
- ✅
-
-
- Send media (images/audio/documents)
- ✅
-
-
- Send media (video)
- ✅ (requires google chrome)
-
-
- Send stickers
- pending
-
-
- Receive media (images/audio/video/documents)
- ✅
-
-
- Send contact cards
- pending
-
-
- Send location
- ✅
-
-
- Receive location
- ✅
-
-
- Message replies
- ✅
-
-
- Join groups by invite
- ✅
-
-
- Get invite for group
- ✅
-
-
- Modify group info (subject, description)
- ✅
-
-
- Add group participants
- ✅
-
-
- Kick group participants
- ✅
-
-
- Promote/demote group participants
- ✅
-
-
- Mention users
- ✅
-
-
- Mute/unmute chats
- ✅
-
-
- Get contact info
- ✅
-
-
- Get profile pictures
- ✅
-
-
- Set user status message
- ✅
-
-
-
- Something missing? Make an issue and let us know!
- Links
-
- Contributing
- Pull requests are welcome! If you see something you'd like to add, please do. For drastic changes, please open an issue first.
- Donating
- You can support the maintainer of this project through the link below
-
- Disclaimer
- This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with WhatsApp or any of its subsidiaries or its affiliates. The official WhatsApp website can be found at https://whatsapp.com. "WhatsApp" as well as related names, marks, emblems and images are registered trademarks of their respective owners.
- License
- Copyright 2019 Pedro S Lopez
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this project except in compliance with the License.
- You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
GroupNotificationTypes
-
-
-
-
-
-
InterfaceController
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/whatsapp-web.js/docs/scripts/jquery.min.js b/whatsapp-web.js/docs/scripts/jquery.min.js
deleted file mode 100644
index a1c07fd..0000000
--- a/whatsapp-web.js/docs/scripts/jquery.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jQuery v3.4.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(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),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("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=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)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(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 de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){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[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.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},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML=" ",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML=" ";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.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 l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(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?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===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]||se.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]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(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(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""," "],thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(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=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.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,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/
-
-
-
-
-
-