diff --git a/.gitignore b/.gitignore index d47662b..c3a43c5 100755 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,8 @@ nosetests.xml .pydevproject .log + +.idea +qpython-docs/venv/* +qpython-docs/build/* +qpython-docs/static/* diff --git a/README.md b/README.md index 29bef17..9f3d368 100755 --- a/README.md +++ b/README.md @@ -1,58 +1,9 @@ -# QPython Project -

+# About -Welcome to read the QPython guide! +QPython is a script engine that runs Python on android devices. It lets your android device run Python scripts and projects. It contains the Python interpreter, console, editor, and the SL4A Library for Android. -QPython is a script engine that runs Python on android devices. It lets your android device run Python scripts and projects. It contains the Python interpreter, console, editor, and the SL4A Library for Android. It’s Python on Android! +This is the www.qpython.org website and documentation's project. +## More information -QPython has several millions users in the world already, it's a great project for programming users, welcome to join us for contributing to this project NOW. - - -What's NEW ------------------------- -QPython project include the QPython https://play.google.com/store/apps/details?id=org.qpython.qpy and QPython3 https://play.google.com/store/apps/details?id=org.qpython.qpy3 applications. - -QPython application is using the **Python 2.7.2** , and QPython application is using the **Python 3.2.2** . - - -QPython's newest version is 1.3.0 (Released on 2017/3/20) , QPython3's newest version is 1.0.2 (Released on 2017/3/29), New versions include many amazing features, please upgrade to the newest version as soon from google play, amazon appstore etc. - - -Thanks these guys who are contributing ----------------------------------------- -They are pushing on the QPython project moving forward. - -River, Mae, Zoom.Quiet, MathiasLuo, liyuanrui, Kyle kersey ... - - -Do you want to join the great QPython team ? You could Ask qustions on twitter https://twitter.com/qpython or email us mailto:support@qpython.org. -And you could fork us on github https://github.com/qpython-android/qpython and send pull request. - - -QPython Communities ----------------------- -**There are many active QPython communities where you could meet the QPython users like you** - -* Join Facebook community https://www.facebook.com/groups/qpython -* Join Google group https://groups.google.com/forum/#!forum/qpython -* Join Gitter chat https://gitter.com/qpython-android/qpython -* Join G+ community https://plus.google.com/communities/111759148772865961493 -* QPython on Stackoverflow http://stackoverflow.com/questions/tagged/qpython - -**And you could talk to us through social network** - -* Like us on facebook https://www.facebook.com/QPython -* Follow us on twitter https://twitter.com/qpython - -* Report issue https://github.com/qpython-android/qpython/issues -* Email us mailto:support@qpython.org - - -Support -------------- -We are happy to hear feedback from you, but sometimes some bugs or features demand may not be implemented soon for we lack resources. - -So if you have any issue need the core developer team to solve with higher priority, you could try the https://www.bountysource.com . - -**It's the official QPython Users & Contributors' Guide, please follow http://www.qpython.org for more information.** +Please visit [QPython Project Readme](https://github.com/qpython-android/qpython/blob/master/README.md) diff --git a/docs/.buildinfo b/docs/.buildinfo index 9ae14c2..a9af287 100644 --- a/docs/.buildinfo +++ b/docs/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 58624441babc3dbb65e1c406374e7bff +config: e4277cb8131332b01f6e2dc120dd6b1b tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_sources/contributors.rst.txt b/docs/_sources/contributors.rst.txt index 904f5d7..1d578cf 100644 --- a/docs/_sources/contributors.rst.txt +++ b/docs/_sources/contributors.rst.txt @@ -10,6 +10,8 @@ Developers ----------- `River `_ +`乘着船 `_ + `kyle kersey `_ `Mae `_ diff --git a/docs/_sources/document.rst.txt b/docs/_sources/document.rst.txt index 7ef4e7e..7918285 100644 --- a/docs/_sources/document.rst.txt +++ b/docs/_sources/document.rst.txt @@ -6,7 +6,7 @@ .. image:: _static/bestpython.png -Welcome to read the QPython guide! +Welcome to read the QPython guide ============================================= QPython is a script engine that runs Python on android devices. It lets your android device run Python scripts and projects. It contains the Python interpreter, console, editor, and the SL4A Library for Android. It’s Python on Android! diff --git a/docs/_sources/en/guide_androidhelpers.rst.txt b/docs/_sources/en/guide_androidhelpers.rst.txt index 4a9c194..e64294a 100644 --- a/docs/_sources/en/guide_androidhelpers.rst.txt +++ b/docs/_sources/en/guide_androidhelpers.rst.txt @@ -1446,11 +1446,7 @@ TextToSpeechFacade EyesFreeFacade ========================= -.. py:function:: ttsSpeak(message) - - Speaks the provided message via TTS - :param str message: message BluetoothFacade diff --git a/docs/_sources/en/qpypi.rst.txt b/docs/_sources/en/qpypi.rst.txt new file mode 100644 index 0000000..da142e5 --- /dev/null +++ b/docs/_sources/en/qpypi.rst.txt @@ -0,0 +1,49 @@ +QPYPI +====== +You can extend your QPython capabilities by installing packages. +Because of different computer architectures, we cannot guarantee that QPYPI includes all packages in PYPI. +If you want us to support a package that is not currently supported, you can raise an issue in the QPYPI project + + +QPySLA Package +-------------- + +qsl4ahelper +>>>>>>>>>>>>>>> +It extends qpysl4a's APIs. Now the below project depends on it. +https://github.com/qpython-android/qpy-calcount + + +AIPY Packages +---------------- + +AIPY is a high-level AI learning app, based on related libraries like Numpy, Scipy, theano, keras, etc.... It was developed with a focus on helping you learn and practise AI programming well and fast. + +Numpy +>>>>>>> +NumPy is the fundamental package needed for scientific computing with Python. This package contains: + +:: + + a powerful N-dimensional array object + sophisticated (broadcasting) functions + basic linear algebra functions + basic Fourier transforms + sophisticated random number capabilities + tools for integrating Fortran code + tools for integrating C/C++ code + + +Scipy +>>>>>>>> +SciPy refers to several related but distinct entities: + +:: + + The SciPy ecosystem, a collection of open source software for scientific computing in Python. + The community of people who use and develop this stack. + Several conferences dedicated to scientific computing in Python - SciPy, EuroSciPy and SciPy.in. + The SciPy library, one component of the SciPy stack, providing many numerical routines. + +Other +------ diff --git a/docs/_sources/en/qpython3.rst.txt b/docs/_sources/en/qpython3.rst.txt new file mode 100644 index 0000000..291d604 --- /dev/null +++ b/docs/_sources/en/qpython3.rst.txt @@ -0,0 +1,53 @@ +# About QPython 3L +QPython is the Python engine for android. It contains some amazing features such as Python interpreter, runtime environment, editor and QPYI and integrated SL4A. It makes it easy for you to use Python on Android. And it's FREE. + +QPython already has millions of users worldwide and it is also an open source project. + +For different usage scenarios, QPython has two branches, namely QPython Ox and 3x. + +QPython Ox is mainly aimed at programming learners, and it provides more friendly features for beginners. QPython 3x is mainly for experienced Python users, and it provides some advanced technical features. + +This is the QPython 3L, it is the only Python interpreter which works under android 4.0 in google play. + +# Amazing Features +- Offline Python 3 interpreter: no Internet is required to run Python programs +- It supports running multiple types of projects, including: console program, SL4A program, webapp program +- Convenient QR code reader for transferring codes to your phone +- QPYPI and a custom repository for prebuilt wheel packages for enhanced scientific libraries, such as numpy, scipy, matplotlib, scikit-learn etc +- Easy-to-use editor +- INTEGRATED & EXTENDED SCRIPT LAYER FOR ANDROID LIBRARY (SL4A): IT LETS YOU DRIVE THE ANDROID WORK WITH PYTHON +- Good documentation and customer support + + +# SL4A Features +With SL4A features, you can use Python programming to control Android work: + +- Android Apps API, such as: Application, Activity, Intent & startActivity, SendBroadcast, PackageVersion, System, Toast, Notify, Settings, Preferences, GUI +- Android Resources Manager, such as: Contact, Location, Phone, Sms, ToneGenerator, WakeLock, WifiLock, Clipboard, NetworkStatus, MediaPlayer +- Third App Integrations, such as: Barcode, Browser, SpeechRecongition, SendEmail, TextToSpeech +- Hardwared Manager: Carmer, Sensor, Ringer & Media Volume, Screen Brightness, Battery, Bluetooth, SignalStrength, WebCam, Vibrate, NFC, USB + +[ API Documentation Link ] +https://github.com/qpython-android/qpysl4a/blob/master/README.md + +[ API Samples ] +https://github.com/qpython-android/qpysl4a/issues/1 + +[ IMPORTANT NOTE ] +IT MAY REQUIRE THE BLUETOOTH / LOCATION / READ_SMS / SEND_SMS / CALL_PHONE AND OTHER PERMISSIONS, SO THAT YOU CAN PROGRAM ITH THESE FEATURES. QPYTHON WILL NOT USE THESE PERMISSIONS IN BACKGROUND. + +IF YOU GET EXCEPTION IN RUNTIME WHILE USING SL4A API, PLEASE CHECK WHETHER THE RELEVANT PERMISSIONS IN THE SYSTEM SETTINGS ARE ENABLED. + +# How To Get Professional Customer Support +Please follow the guide to get support https://github.com/qpython-android/qpython/blob/master/README.md + +[ QPython community ] +https://www.facebook.com/groups/qpython + +[ FAQ ] +A: Why can't I use the SMS API of SL4A +Q: Because Google Play and some app stores have strict requirements on the permissions of apps, in QPython 3x, we use x to distinguish branches with different permissions or appstores. For example, L means LIMITED and S means SENSITIVE. +Sometimes you cannot use the corresponding SL4A APIs because the version you installed does not have the corresponding permissions, so you can consider replace what you have installed with the right one. + +You can find other versions here: +https://www.qpython.org/en/qpython_3x_featues.html diff --git a/docs/_sources/en/qpython_3x_featues.rst.txt b/docs/_sources/en/qpython_3x_featues.rst.txt new file mode 100644 index 0000000..0fc4578 --- /dev/null +++ b/docs/_sources/en/qpython_3x_featues.rst.txt @@ -0,0 +1,98 @@ +QPython 3x featues +================== + +QPython 3x, Previously it was QPython3. + +A: Why are there so many branches? + +Q: Because Google Play and some appstores have strict requirements for application permissions, +they require different permissions, we use different branch codes, for example, 3 means it was QPython3, +L means LIMITED, S means SENSITIVE permission is required. + +A: I know there was a QPython before, what is the difference between it and QPython 3x? + +Q: It is now called QPython Ox now, which is mainly aimed at programming learners, and +it provides more friendly features for beginners. QPython 3x is mainly for experienced +Python users, and it provides some advanced technical features. + + +A: Where can I get different branches or versions ? + +Q: Take a look at `this link `_. + +WHAT'S NEW +----------- + +QPython 3x v3.0.0 (Published on 2020/2/1) +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +This is the first version after we restarting the QPython project + +- It added the `qsl4ahelper `_ as a built-in package +- It added a `QPySL4A App project sample `_ into built-in editor, you can create QSLAApp by creating an project +- It rearranged permissions +- It fixed `ssl error `_ bugs + +App's Features +----------------- + +- Offline Python 3 interpreter: no Internet is required to run Python programs +- It supports running multiple types of projects, including: console program, SL4A program, webapp program +- Convenient QR code reader for transferring codes to your phone +- QPYPI and a custom repository for prebuilt wheel packages for enhanced scientific libraries, such as numpy, scipy, matplotlib, scikit-learn etc +- Easy-to-use editor +- INTEGRATED & EXTENDED SCRIPT LAYER FOR ANDROID LIBRARY (SL4A): IT LETS YOU DRIVE THE ANDROID WORK WITH PYTHON +- Good documentation and customer support + + +Android Permissions that QPython requires +------------------------------------------ + +QPython require the BLUETOOTH / LOCATION / BLUETOOTH and OTHER permissions, so that you can program using these FEATURES. AND WE WILL NOT USE THIS PERMISSIONS IN BACKGROUND. + +Both QPython 3S and 3L +>>>>>>>>>>>>>>>>>>>>>> + +- android.permission.INTERNET +- android.permission.WAKE_LOCK +- android.permission.ACCESS_NETWORK_STATE +- android.permission.CHANGE_NETWORK_STATE +- android.permission.ACCESS_WIFI_STATE +- android.permission.CHANGE_WIFI_STATE +- android.permission.RECEIVE_BOOT_COMPLETED +- android.permission.CAMERA +- android.permission.FLASHLIGHT +- android.permission.VIBRATE +- android.permission.RECEIVE_USER_PRESENT +- com.android.vending.BILLING +- com.android.launcher.permission.INSTALL_SHORTCUT +- com.android.launcher.permission.UNINSTALL_SHORTCUT +- android.permission.READ_EXTERNAL_STORAGE +- android.permission.WRITE_EXTERNAL_STORAGE +- android.permission.READ_MEDIA_STORAGE +- android.permission.ACCESS_COARSE_LOCATION +- android.permission.ACCESS_FINE_LOCATION +- android.permission.FOREGROUND_SERVICE +- android.permission.BLUETOOTH +- android.permission.BLUETOOTH_ADMIN +- android.permission.NFC +- android.permission.RECORD_AUDIO +- android.permission.ACCESS_NOTIFICATION_POLICY +- android.permission.KILL_BACKGROUND_PROCESSES +- net.dinglisch.android.tasker.PERMISSION_RUN_TASKS + +QPython 3S +>>>>>>>>>>> +- android.permission.ACCESS_SUPERUSER +- android.permission.READ_SMS +- android.permission.SEND_SMS +- android.permission.RECEIVE_SMS +- android.permission.WRITE_SMS +- android.permission.READ_PHONE_STATE +- android.permission.CALL_PHONE +- android.permission.READ_CALL_LOG +- android.permission.PROCESS_OUTGOING_CALLS +- android.permission.READ_CONTACTS +- android.permission.GET_ACCOUNTS +- android.permission.SYSTEM_ALERT_WINDOW + diff --git a/docs/_sources/en/qpython_ox_featues.rst.txt b/docs/_sources/en/qpython_ox_featues.rst.txt new file mode 100644 index 0000000..f30c15d --- /dev/null +++ b/docs/_sources/en/qpython_ox_featues.rst.txt @@ -0,0 +1,62 @@ +QPython Ox featues +====================== + +Because google play and some appstores have strict requirements on the permissions of the app, we use different strategies in different appstores, which is why the branch name will be different. For example, L means Limited, and S means it contains Sensitive permissions. + +Python +--------- +- Python3 + Python2 basis +- QRCode Reader +- Editor +- QPYPI +- Ftp +- Course + +Permissions +---------------- +Both QPython OL and OS +>>>>>>>>>>>>>>>>>>>>>>>>>>> + +- android.permission.INTERNET +- android.permission.WAKE_LOCK +- android.permission.ACCESS_NETWORK_STATE +- android.permission.CHANGE_NETWORK_STATE +- android.permission.ACCESS_WIFI_STATE +- android.permission.CHANGE_WIFI_STATE +- android.permission.RECEIVE_BOOT_COMPLETED +- android.permission.CAMERA +- android.permission.FLASHLIGHT +- android.permission.VIBRATE +- android.permission.RECEIVE_USER_PRESENT +- com.android.vending.BILLING +- com.android.launcher.permission.INSTALL_SHORTCUT +- com.android.launcher.permission.UNINSTALL_SHORTCUT +- android.permission.READ_EXTERNAL_STORAGE +- android.permission.WRITE_EXTERNAL_STORAGE +- android.permission.READ_MEDIA_STORAGE +- android.permission.ACCESS_COARSE_LOCATION +- android.permission.ACCESS_FINE_LOCATION +- android.permission.FOREGROUND_SERVICE +- android.permission.BLUETOOTH +- android.permission.BLUETOOTH_ADMIN +- android.permission.NFC +- android.permission.RECORD_AUDIO +- android.permission.ACCESS_NOTIFICATION_POLICY +- android.permission.KILL_BACKGROUND_PROCESSES +- net.dinglisch.android.tasker.PERMISSION_RUN_TASKS + +QPython OS +>>>>>>>>>>> +- android.permission.ACCESS_SUPERUSER +- android.permission.SEND_SMS +- android.permission.READ_SMS +- android.permission.SEND_SMS +- android.permission.RECEIVE_SMS +- android.permission.WRITE_SMS +- android.permission.READ_PHONE_STATE +- android.permission.CALL_PHONE +- android.permission.READ_CALL_LOG +- android.permission.PROCESS_OUTGOING_CALLS +- android.permission.READ_CONTACTS +- android.permission.GET_ACCOUNTS +- android.permission.SYSTEM_ALERT_WINDOW diff --git a/docs/_sources/features/2018-09-28-dropbear-cn.rst.txt b/docs/_sources/features/2018-09-28-dropbear-cn.rst.txt index f6de950..11491c4 100644 --- a/docs/_sources/features/2018-09-28-dropbear-cn.rst.txt +++ b/docs/_sources/features/2018-09-28-dropbear-cn.rst.txt @@ -39,11 +39,12 @@ mkdir dropbear # 在 /data/data/org.qpython.qpy/files下创建dropbear目录 初始化对应的key -dbkey -t dss -f dropbear/dropbear_dss_host_key +dbkey -t dss -f dropbear/dropbear_dss_host_key dbkey -t rsa -f dropbear/dropbear_rsa_host_key dbkey -t ecdsa -f dropbear/dropbear_ecdsa_host_key + ``` 完成上述步骤之后,即可启动sshd服务。 diff --git a/docs/agreement-cn.html b/docs/agreement-cn.html new file mode 100644 index 0000000..dbdf8b4 --- /dev/null +++ b/docs/agreement-cn.html @@ -0,0 +1,47 @@ + + + + + + + 用户使用协议 + + + +

用户使用协议

1. 特别提示 +

1.1为使用本手机应用软件及服务,您应当阅读并遵守《用户使用协议》(以下简称“本协议”)。请您务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款,以及同意或使用某项服务的单独协议,并选择接受或不接受。 +

1.2 除非您已阅读并接受本协议所有条款,否则您无权下载、安装或使用本软件及相关服务。您的下载、安装、使用、获取账号、登录等行为即视为您已阅读并同意上述协议的约束。 +

1.3 QPYTHON(以下称“QPYTHON”)同意按照本协议的规定及其不时发布的操作规则提供基于互联网的相关服务(以下称"本服务")。若您需要获得本服务,您(以下称"用户")应当同意本协议的全部条款并按照页面上的提示完成全部的申请程序。 +

+ + +

2. 协议适用主体范围

+ 本协议是用户与本公司之间关于用户下载、安装、使用、复制本软件,以及使用本公司相关服务所订立的协议。 +

+ QPYTHON在网站上公布的服务条款及用户所参加课程的招生方案和班次协议等是本协议的补充。本协议与上述内容存在冲突的,以本协议为准。 本协议内容同时包括QPYTHON可能不断发布的关于本服务的相关协议、业务规则等内容。上述内容一经正式发布,即为本协议不可分割的组成部分,用户若继续使用本公司软件及服务同样应当遵守。 +

+

3. 服务内容与授权使用范围

+

本软件根据用户实际需求提供服务,例如编程工具、在线QPYPI。QPYTHON保留随时变更、中断或终止部分或全部本服务的权利。 +

+

本软件手机应用的授权使用范围:用户可以在手机上安装、使用、显示、运行本软件。 +

+

保留权利:未明示授权的其他一切权利均由本公司所有。

+ +

3. 使用规则

+

用户在使用本软件时,必须遵循以下原则:
+ 遵守你所在国的有关的法律和法规; +
+ 不得为任何非法目的而使用本服务系统;
+ 遵守所有与本服务有关的网络协议、规定和程序;
+ 不得利用本软件系统进行任何可能对互联网的正常运转造成不利影响的行为;
+ 不得利用本软件服务系统进行任何不利于其他用户的行为;
+ 如发现任何非法使用用户账号或账号出现安全漏洞的情况, 应立即通知QPYTHON官方 + +

+

4. 知识产权

+

本软件的作者为严河存, 而QPYTHON的商标权、专利权、商业秘密等知识产权,以及与本软件相关的所有信息内容(包括但不限于视频课件、文字、图片、音频、图表、界面设计、版面框架、有关数据或电子文档等)均属于River授权的北京优趣天下信息技术有限公司,北京优趣天下信息技术有限公司享有上述知识产权,除非事先经本公司的合法授权,任何人皆不得擅自以任何形式使用,否则我们可立即终止向该用户提供产品和服务,并依法追究其法律责任,赔偿本QPYTHON的一切损失。

+ + + + + diff --git a/docs/agreement.html b/docs/agreement.html new file mode 100644 index 0000000..078dd7b --- /dev/null +++ b/docs/agreement.html @@ -0,0 +1,45 @@ + + + + + + User Agreement + + + +

User Agreement

1. Special Tips +

1.1 In order to use this mobile application software and services, you should read and abide by the "User Agreement" (hereinafter referred to as "this Agreement"). Please be sure to carefully read and fully understand the contents of each clause, especially the clauses exempting or limiting liability, as well as separate agreements for agreeing to or using a certain service, and choose to accept or not accept it. +

1.2 Unless you have read and accepted all the terms of this agreement, you have no right to download, install or use this software and related services. Your downloading, installation, use, account acquisition, login, etc. are deemed to have read and agreed to be bound by the above agreement. +

1.3 QPYTHON (hereinafter referred to as "QPYTHON") agrees to provide Internet-based related services (hereinafter referred to as the "Service") in accordance with the provisions of this Agreement and its operating rules published from time to time. If you need to obtain this service, you (hereinafter referred to as "User") should agree to all the terms of this agreement and complete the entire application process according to the prompts on the page. +

+ + +

2. Scope of application of the agreement

+ This agreement is an agreement between the user and the company regarding the user's downloading, installation, use, copying of this software, and use of the company's related services. +

+ The terms of service published by QPYTHON on the website and the enrollment plans and class agreements for courses attended by users are supplements to this agreement. If there is any conflict between this Agreement and the above content, this Agreement shall prevail. The content of this agreement also includes relevant agreements, business rules, etc. regarding this service that QPYTHON may publish from time to time. Once the above content is officially released, it will become an integral part of this agreement. Users must also abide by it if they continue to use the company's software and services. +

+

3. Service content and authorized use scope

+

This software provides services based on the actual needs of users, such as programming tools and online QPYPI. QPYTHON reserves the right to change, interrupt or terminate part or all of this service at any time. +

+

The authorized use scope of this software’s mobile application: Users can install, use, display, and run this software on their mobile phones. +

+

Reserved rights: All other rights not expressly authorized are owned by our company.

+ +

3. Rules of use

+

Users must follow the following principles when using this software:
+ Comply with the relevant laws and regulations of your country; +
+ This service system may not be used for any illegal purpose;
+ Comply with all network protocols, regulations and procedures related to the Service;
+ This software system may not be used to conduct any behavior that may adversely affect the normal operation of the Internet;
+ You may not use this software service system to conduct any behavior that is detrimental to other users;
+ If you discover any illegal use of user accounts or account security vulnerabilities, you should immediately notify QPYTHON officials. + +

+

4. Intellectual Property

+

The author of this software is Yan Hecun, and QPYTHON’s trademark rights, patent rights, trade secrets and other knowledge The property rights, as well as all information content related to this software (including but not limited to video courseware, text, pictures, audio, charts, interface design, layout framework, relevant data or electronic documents, etc.) belong to Beijing Youqutianxia Information authorized by River. Technology Co., Ltd. and Beijing Youqutianxia Information Technology Co., Ltd. enjoy the above intellectual property rights. Unless legally authorized by the company in advance, no one may use it in any form without authorization. Otherwise, we may immediately terminate the provision of products and services to the user, and Investigate its legal liability in accordance with the law and compensate QPYTHON for all losses.

+ + + + diff --git a/docs/community.html b/docs/community.html index 9fe1bc4..d6d01b6 100644 --- a/docs/community.html +++ b/docs/community.html @@ -1,14 +1,22 @@ diff --git a/docs/contributors.html b/docs/contributors.html index 6d2f13f..096dfae 100644 --- a/docs/contributors.html +++ b/docs/contributors.html @@ -1,79 +1,92 @@ - + - - - -Contributors — QPython 0.9 documentation - - - - - - - - - - - - - - -
-
- - - -
-
+ + + + + + + Contributors — QPython 0.9 documentation + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
-
-
-
- - +
+
+
+
+
+ +
+ + +
- - -
- - + + + + + diff --git a/docs/market/default.html b/docs/default.html similarity index 100% rename from docs/market/default.html rename to docs/default.html diff --git a/docs/document.html b/docs/document.html index 124e8bb..82ff8fb 100644 --- a/docs/document.html +++ b/docs/document.html @@ -1,80 +1,93 @@ - + - - - -Welcome to read the QPython guide! — QPython 0.9 documentation - - - - - - - - - - - - - - - -
-
- - - -
-
+ + + + + + + Welcome to read the QPython guide — QPython 0.9 documentation + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
-
-
-
- - + + - - + + + + + diff --git a/docs/en/faq.html b/docs/en/faq.html index 8f5a85a..d1f18be 100644 --- a/docs/en/faq.html +++ b/docs/en/faq.html @@ -1,81 +1,94 @@ - + - - - -FAQ — QPython 0.9 documentation - - - - - - - - - - - - - - - - -
-
- - - -
-
+ + + + + + + FAQ — QPython 0.9 documentation + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
-
-
-
- - +
+
+
+
+
+
+
+ +
- - -
- - + + + + + diff --git a/docs/en/guide.html b/docs/en/guide.html index 6f06cbb..263ae52 100644 --- a/docs/en/guide.html +++ b/docs/en/guide.html @@ -1,81 +1,94 @@ - + - - - -Getting started — QPython 0.9 documentation - - - - - - - - - - - - - - - - -
-
- - - -
-
+ + + + + + + Getting started — QPython 0.9 documentation + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
-
-
-
- - +
+
+
+
+
+
+
+ +
- - -
- - + + + + + diff --git a/docs/en/guide_androidhelpers.html b/docs/en/guide_androidhelpers.html index 7836a7b..2a6e42a 100644 --- a/docs/en/guide_androidhelpers.html +++ b/docs/en/guide_androidhelpers.html @@ -1,81 +1,94 @@ - + - - - -AndroidFacade — QPython 0.9 documentation - - - - - - - - - - - - - - - - -
-
- - - -
-
+ + + + + + + AndroidFacade — QPython 0.9 documentation + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
-
-
-
- - +
+
+
+
+
+
+ +
- - -
- - + + + + + diff --git a/docs/en/guide_contributors.html b/docs/en/guide_contributors.html index 73aefae..9d9d155 100644 --- a/docs/en/guide_contributors.html +++ b/docs/en/guide_contributors.html @@ -1,81 +1,94 @@ - + - - - -Welcome contribute — QPython 0.9 documentation - - - - - - - - - - - - - - - - -
-
- - - -
-
+ + + + + + + Welcome contribute — QPython 0.9 documentation + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
-
-
-
- - +
+
+
+
+
+
+
+ +
- - -
- - + + + + + diff --git a/docs/en/guide_contributors_test.html b/docs/en/guide_contributors_test.html index 28a38a9..52e4135 100644 --- a/docs/en/guide_contributors_test.html +++ b/docs/en/guide_contributors_test.html @@ -1,81 +1,94 @@ - + - - - -Join the tester community — QPython 0.9 documentation - - - - - - - - - - - - - - - - -
-
- - - -
-
+ + + + + + + Join the tester community — QPython 0.9 documentation + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
-
-
-
- - +
+
+
+
+
+
+
+ +
- - -
- - + + + + + diff --git a/docs/en/guide_developers.html b/docs/en/guide_developers.html index 1c58394..8aae853 100644 --- a/docs/en/guide_developers.html +++ b/docs/en/guide_developers.html @@ -1,81 +1,94 @@ - + - - - -Android — QPython 0.9 documentation - - - - - - - - - - - - - - - - -
-
- - - -
-
+ + + + + + + Android — QPython 0.9 documentation + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
-
-
-
- - +
+
+
+
+
+
+ + +
- - -
- - + + + + + diff --git a/docs/en/guide_extend.html b/docs/en/guide_extend.html index 509ecae..b4ef655 100644 --- a/docs/en/guide_extend.html +++ b/docs/en/guide_extend.html @@ -1,81 +1,94 @@ - + - - - -QPython Open API — QPython 0.9 documentation - - - - - - - - - - - - - - - - -
-
- - - -
-
+ + + + + + + QPython Open API — QPython 0.9 documentation + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
-
-
-
- - +
+
+
+
+
+ +
+ + +
- - -
- - + + + + + diff --git a/docs/en/guide_helloworld.html b/docs/en/guide_helloworld.html index a72f8b0..b3abc52 100644 --- a/docs/en/guide_helloworld.html +++ b/docs/en/guide_helloworld.html @@ -1,81 +1,94 @@ - + - - - -Writing “Hello World” — QPython 0.9 documentation - - - - - - - - - - - - - - - - -
-
- - - -
-
+ + + + + + + Writing “Hello World” — QPython 0.9 documentation + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
-
-
-
- - + + + + +
+
+
+
+
+
+ + +
+ + +
- - -
- - + + + + + diff --git a/docs/en/guide_ide.html b/docs/en/guide_ide.html index 0e87ec8..6fa6401 100644 --- a/docs/en/guide_ide.html +++ b/docs/en/guide_ide.html @@ -1,81 +1,94 @@ - + - - - -Use the best way for developing — QPython 0.9 documentation - - - - - - - - - - - - - - - - -
-
- - - -
-
+ + + + + + + Use the best way for developing — QPython 0.9 documentation + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
-
-
-
- - +
+
+
+
+
+
+ + +
- - -
- - + + + + + diff --git a/docs/en/guide_libraries.html b/docs/en/guide_libraries.html index e2c7b1c..eccd84c 100644 --- a/docs/en/guide_libraries.html +++ b/docs/en/guide_libraries.html @@ -1,81 +1,94 @@ - + - - - -QPython built-in Libraries — QPython 0.9 documentation - - - - - - - - - - - - - - - - -
-
- - - -
-
+ + + + + + + QPython built-in Libraries — QPython 0.9 documentation + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
-
-
-
- - -
-
-
-
+ + + +
+
+ + + +
+ + +
+ + +
- - + + + + + diff --git a/docs/en/guide_program.html b/docs/en/guide_program.html index a937305..b66d2b9 100644 --- a/docs/en/guide_program.html +++ b/docs/en/guide_program.html @@ -1,81 +1,94 @@ - + - - - -QPython’s main features — QPython 0.9 documentation - - - - - - - - - - - - - - - - -
-
- - - -
-
+ + + + + + + QPython’s main features — QPython 0.9 documentation + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
-
-
-
- - -
-
+ + + + +
+
+
+
+ +
+ + +
+ + +
- - -
- - + + + + + diff --git a/docs/genindex.html b/docs/genindex.html index 3b50822..491791c 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -1,79 +1,91 @@ - + - - - -Index — QPython 0.9 documentation - - - - - - - - - - - - - - -
-
- - - -
-
+ + + + + + Index — QPython 0.9 documentation + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
-
-
-
- - +
+
+
+
+
+
+ + +
- - -
- - + + + + + diff --git a/docs/market/huawei.html b/docs/huawei.html similarity index 100% rename from docs/market/huawei.html rename to docs/huawei.html diff --git a/docs/index.html b/docs/index.html index b5caf25..5c2f2a0 100755 --- a/docs/index.html +++ b/docs/index.html @@ -1,15 +1,32 @@ -QPython - Best Mobile Python IDE +QPython - Learn Python & AI on mobile - - - + + + + + + + + +
@@ -31,19 +48,24 @@ Home -
  • - Guide -
  • -
  • +
  • Docs
  • + +
  • News
  • +
  • Discuss
  • +
  • YouTube
  • +
  • + QPython+ +
  • -
  • - Github -
  • +
    +
    +
    - - - diff --git a/docs/objects.inv b/docs/objects.inv index 8124e54..9dccc05 100644 Binary files a/docs/objects.inv and b/docs/objects.inv differ diff --git a/docs/privacy-cn.html b/docs/privacy-cn.html new file mode 100644 index 0000000..2dc5da9 --- /dev/null +++ b/docs/privacy-cn.html @@ -0,0 +1,80 @@ + + + + + + + Privacy Policy + + + +

    隐私政策

    +

    本隐私政策于2021年12月12日更新发布并同时生效

    +

    北京优趣天下信息技术有限公司(以下称“QPYTHON”或“我们”)尊重并保护所有使用QPYTHON服务用户的隐私权,在您使用我们提供的服务时,我们可能会收集和使用您的相关信息,我们希望通过本《隐私政策》向您说明,我们如何收集、存储、保护及使用您的个人信息,以及清楚地向您介绍我们对您个人信息的处理方式。本《隐私政策》与您使用QPYTHON的服务相关,因此我们建议您完整地阅读,以帮助您更好地保护您的隐私。 +

    +如您对本《隐私政策》有任何疑问,您可以通过我方平台公布的联系方式与我们联系。如果您不同意本隐私政策任何内容,您应立即停止使用我们的服务。当您使用我们提供的任一服务时,即表示您已同意我们按照本《隐私政策》来合法使用和保护您的个人信息。 +

    信息收集和使用

    +

    QPython在向您提供服务时,可能会收集、储存和使用下列与您有关的信息,收集信息是为了向您提供更好、更优的服务,我们收集信息的范围和用途如下:

    +
      +
    • 您在注册账号时提供的信息:在QPython里,登录和注册不是必须的,但是您在注册并登录账号时,需要您提供手机号码或电子邮箱或第三方账号(Github 等)的信息,我们将通过发送短信验证码或邮件的方式来验证您的账号是否有效。您可根据自身需求选择补充填写个人信息(头像、昵称、简介、行业、职业、城市、生日等),这些补充信息并非强制的
    • +
    • 在您使用产品与/或服务的过程中收集的信息:在您那使用QPython编程服务的过程中,我们可能会收集您使用的设备信息(包括操作系统、软件版本、语言设置、IP地址、IMEI、OAID、IMSI、MAC、应用列表等),浏览信息(包括搜索关键词、访问页面链接和访问时间),发表信息(包括程序,文字、图片、视频),交易信息(包括交易记录),身份信息(包括认证作者、创作者时需要提供的身份证号码或者相关职业资质证书号码)。
    • +
    • 交易信息:当您希望购买课程、电子书、专栏,或使用需付费的其它服务时,您需要使用“支付功能”。在收付款的过程中,我们需要收集您提供的身份证号码、收款方式、第三方支付账号(包括微信帐号,支付宝账号、Apple Pay 账号或其他形式的银行卡信息)以提供高效的交易服务。
    • +
    • 第三方向QPYTHON提供的信息:您在第三方产品与/或服务中使用QPYTHON的时候,我们会收集第三方产品与/或服务向我们提供的有关信息,比如账号昵称,邮件、手机号、程序信息等。您提供的上述信息,将在您使用本产品与/或服务期间持续授权我们使用。在您注销账号时,我们将停止使用并删除上述信息。 +
    • +
    • 个人设备信息(IMEI/MAC/Android ID/IDFA/OAID/OpenUDID/GUID/SIM卡IMSI/ICCID等):QPython使用了友盟(Umeng)移动统计SDK,它使用这些信息用于唯一标识设备,以此统计QPython的卸载与安装信息,以及基于位置来获得设备区域统计功能。更详细的友盟统计SDK的隐私可以参考友盟隐私策略。 +
    • +
    +

    提供上述信息,尤其是个人敏感信息,您可能面临用户信息泄露或用户账号被盗、个人隐私及财产安全难以保障等风险,但我们将尽最大努力避免上述风险发生。 +如您选择不提供上述信息,您可能无法使用我们需要注册和登录才能使用的某些产品与/或服务,或者无法达到相关产品与/或服务拟达到的效果。 +

    +

    我们会这样使用你的信息

    +
      +
    • 向您提供您使用的各项产品与/或服务,并维护、改进这些服务。 +
      1. 发布功能:您可以发布文字、图片、视频,我们需要收集您发布的信息,并展示您的昵称、头像、发布内容b。
      2. +
      3. 搜索功能:您可以使用对关键字进行查询的服务,我们需要使用网络存储机制和应用数据缓存,收集您设备上的信息并进行本地存储,以提供更便捷的搜索服务。
      4. +
      5. 经您同意的其他目的,包括但不限于向您发出产品和服务信息,或通过系统向您展示第三方推广信息,或在征得您同意的情况下与我们的合作伙伴共享信息以便他们向您发送有关其产品和服务的信息。有的信息有可能是您不希望接收的信息。
      6. +
      +
    • +
    • 开展内部数据分析和研究,第三方SDK统计服务,改善我们的产品或服务
      1. 我们收集数据是根据您与我们的互动和您所做出的选择,包括您的隐私设置以及您使用的产品和功能我们收集的数据可能包括 SDK/API/JS 代码版本、浏览器、互联网服务提供商、IP 地址、平台、时间戳、应用标识符、应用程序版本、应用分发渠道、独立设备标识符、iOS 广告标识符(IDFA)、安卓广告主标识符、网卡(MAC)地址、国际移动设备识别码(IMEI)、设备型号、终端制造厂商、终端设备操作系统版本、会话启动/停止时间、语言所在地、时区和网络状态(WiFi等)、硬盘、CPU 和电池使用情况等
    • +
    +

    + 当我们要将信息用于本策略未载明的其它用途时,会事先征求您的同意。当我们要将基于特定目的收集而来的信息用于其他目的时,会事先征求您的同意。 +

    +

    我们使用的一些第三方 SDK 服务商可能也会收集您的个人信息,包括

    +
    • A. 第三方账号登录功能:为给您提供第三方账号登录的功能,第三方服务商可能会获取您的必要设备信息、网络相关信息,合作的 SDK 包括:微信登录 / Github
    • +
    • B. 支付服务:为了保证您能顺利购买平台的商品以及服务,微信 SDK、支付宝支付可能会收集您必要的设备信息、网络相关信息
    • +
    • C. 数据统计功能:我们会使用 Google Analytics/友盟 以准确记录 App 的活跃情况、设备信息、网络相关信息
    • +
    • D. 消息推送:为给您提供及时的消息推送,第三方推送服务商可能会获取您必要设备信息、手机状态信息、地理位置信息、网络相关信息以便进行消息推送(主要为App版本更新信息),这些SDK包括:腾讯推送,小米推送,华为推送,Oppo推送,Vivo推送。
    • + +
    + +

    权限

    + 要使用Android的某些功能进行编程,QPython需要以下权限:摄像头、麦克风、存储、账号、蓝牙、GPS、剪贴板信息和其他等,如果您不需要这些特性,可以从系统设置中禁用它们。 +

    +
      +
    • 为了能使用扫描二维码的便捷功能和让您使用手机的拍照特性进行编程,QPython可能会使用您申请摄像头权限;
    • + +
    • 为了让您能用手机的麦克风、存储进行编程,QPython可能会使用您申请麦克风权限、读写存储等权限
    • +
    • 为了让您使用手机的地理位置用于编程,QPython可能会向您申请位置权限
    • +
    • 为了让您使用手机的账号信息用于编程,QPython可能会向您申请系统设备权限收集设备信息、日志信息
    • +
    • 我们会努力采取各种安全技术保护您的个人信息。未经您同意,我们不会从第三方获取、共享或对外提供您的信息;
    • +
    • 如果不是你主动在系统设置->Apps->QPython权限中管理上述权限,QPython不会自动使用它们
    • +
    +

    安全

    我们珍视您在向我们提供您的个人信息方面的信任,因此我们正在努力使用商业上可接受的方式来保护您的个人信息。但请记住,任何通过互联网的传输方法或电子存储方法都不是100%安全可靠的,我们无法保证其绝对安全性。 +

    对本隐私政策的更改

    我们可能会不时更新我们的隐私政策。因此,建议您定期查看此页面以了解任何更改。我们将通过在此页面上发布新的隐私政策来通知您任何更改。这些更改在发布到此页面后立即生效。 +

    联系我们(support@qpython.org)

    如果您对我的隐私政策有任何疑问或建议,请随时与我联系。 +

    + + + + + + + + diff --git a/docs/privacy.html b/docs/privacy.html new file mode 100644 index 0000000..9858983 --- /dev/null +++ b/docs/privacy.html @@ -0,0 +1,100 @@ + + + + + + + Privacy Policy + + + +

    Privacy Policy

    QPython Team built the QPython/QPython3 apps and their related services. +

    This page is used to inform visitors regarding our policies with the collection, use, and + disclosure of Personal Information if anyone decided to use our App and services. +

    If you choose to use our app and services, then you agree to the collection and use of information in relation + to this policy. The Personal Information that we collect is used for providing and improving the + App and service. We will not use or share your information with anyone except as described + in this Privacy Policy. +

    The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible + at QPython/QPython3 unless otherwise defined in this Privacy Policy. +

    Information Collection and Use

    +

    For a better experience, while using our Service, we may require you to provide us with certain + personally identifiable information, including but not limited to IP address. The information that we request will be retained on your device and is not collected by me in any way. +

    + + +

    The app does use third party services that may collect information used to identify you.

    Link to privacy policy of third party service providers used by the app

    +

    + Location +

    + The Application collects your device's location, which helps the Service Provider determine your approximate geographical location and make use of in below ways: +

    • +Geolocation Services: The Service Provider utilizes location data to provide features such as personalized content, relevant recommendations, and location-based services.
    • +
    • Analytics and Improvements: Aggregated and anonymized location data helps the Service Provider to analyze user behavior, identify trends, and improve the overall performance and functionality of the Application.
    • +
    • Third-Party Services: Periodically, the Service Provider may transmit anonymized location data to external services. These services assist them in enhancing the Application and optimizing their offerings.
    • +
    + +

    + + + + +

    Log Data

    We want to inform you that whenever you use my Service, in a case of an + error in the app we collect data and information (through third party products) on your phone + called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, + device name, operating system version, the configuration of the app when utilizing my Service, + the time and date of your use of the Service, and other statistics. +

    + + + +

    Permissions

    + To enable programming with some of Android’s features, QPython/QPythons requires the following permissions: Bluetooth, GPS, and others, etc. +It doesn't require some permissions like access user account, access phone's status, meaning you cannot use some SL4A APIs.
    + You can disable them from system's setting if you don't need them. + + +

    +

    Cookies

    Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These + are sent to your browser from the websites that you visit and are stored on your device's internal memory. +

    This Service does not use these “cookies” explicitly. However, the app may use third party code and libraries + that use “cookies” to collect information and improve their services. You have the option to either + accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to + refuse our cookies, you may not be able to use some portions of this Service. +

    Service Providers

    We may employ third-party companies and individuals due to the following reasons:

    • To facilitate our Service;
    • To provide the Service on our behalf;
    • To perform Service-related services; or
    • To assist us in analyzing how our Service is used.

    We want to inform users of this Service that these third parties have access to your + Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they + are obligated not to disclose or use the information for any other purpose. +

    Security

    We value your trust in providing us your Personal Information, thus we are striving + to use commercially acceptable means of protecting it. But remember that no method of transmission over + the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee + its absolute security. +

    Links to Other Sites

    This Service may contain links to other sites. If you click on a third-party link, you will be directed + to that site. Note that these external sites are not operated by me. Therefore, we strongly + advise you to review the Privacy Policy of these websites. We have no control over + and assume no responsibility for the content, privacy policies, or practices of any third-party sites + or services. +

    Children’s Privacy

    These Services do not address anyone under the age of 13. We do not knowingly collect + personally identifiable information from children under 13. In the case we discover that a child + under 13 has provided me with personal information, we immediately delete this from + our servers. If you are a parent or guardian and you are aware that your child has provided us with personal + information, please contact me so that we will be able to do necessary actions. +

    Changes to This Privacy Policy

    We may update our Privacy Policy from time to time. Thus, you are advised to review + this page periodically for any changes. We will notify you of any changes by posting + the new Privacy Policy on this page. These changes are effective immediately after they are posted on + this page. +

    Contact Us (support at qpython.org)

    If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact + me. +

    + + + + + + + diff --git a/docs/qlua-privacy.html b/docs/qlua-privacy.html new file mode 100644 index 0000000..2baf1a3 --- /dev/null +++ b/docs/qlua-privacy.html @@ -0,0 +1,69 @@ + + + + + + + Privacy Policy + + + +

    Privacy Policy

    QPython Team built the QLua apps and their related services. +

    This page is used to inform visitors regarding our policies with the collection, use, and + disclosure of Personal Information if anyone decided to use our App and services. +

    If you choose to use our app and services, then you agree to the collection and use of information in relation + to this policy. The Personal Information that we collect is used for providing and improving the + App and service. We will not use or share your information with anyone except as described + in this Privacy Policy. +

    The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible + at QLua unless otherwise defined in this Privacy Policy. +

    Information Collection and Use

    For a better experience, while using our Service, we may require you to provide us with certain + personally identifiable information, including but not limited to IP address. The information that we request will be retained on your device and is not collected by me in any way. +

    The app does use third party services that may collect information used to identify you.

    Link to privacy policy of third party service providers used by the app

    Log Data

    We want to inform you that whenever you use my Service, in a case of an + error in the app we collect data and information (through third party products) on your phone + called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, + device name, operating system version, the configuration of the app when utilizing my Service, + the time and date of your use of the Service, and other statistics. +

    + + +

    Permissions

    + To enable programming with some of Android’s features, QLua requires the following permissions: Bluetooth, GPS, and others, etc. +It doesn't require some permissions like access user account, access phone's status, meaning you cannot use some SL4A APIs.
    + You can disable them from system's setting if you don't need them. + + +

    +

    Cookies

    Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These + are sent to your browser from the websites that you visit and are stored on your device's internal memory. +

    This Service does not use these “cookies” explicitly. However, the app may use third party code and libraries + that use “cookies” to collect information and improve their services. You have the option to either + accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to + refuse our cookies, you may not be able to use some portions of this Service. +

    Service Providers

    We may employ third-party companies and individuals due to the following reasons:

    • To facilitate our Service;
    • To provide the Service on our behalf;
    • To perform Service-related services; or
    • To assist us in analyzing how our Service is used.

    We want to inform users of this Service that these third parties have access to your + Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they + are obligated not to disclose or use the information for any other purpose. +

    Security

    We value your trust in providing us your Personal Information, thus we are striving + to use commercially acceptable means of protecting it. But remember that no method of transmission over + the internet, or method of electronic storage is 100% secure and reliable, and we cannot guarantee + its absolute security. +

    Links to Other Sites

    This Service may contain links to other sites. If you click on a third-party link, you will be directed + to that site. Note that these external sites are not operated by me. Therefore, we strongly + advise you to review the Privacy Policy of these websites. We have no control over + and assume no responsibility for the content, privacy policies, or practices of any third-party sites + or services. +

    Children’s Privacy

    These Services do not address anyone under the age of 13. We do not knowingly collect + personally identifiable information from children under 13. In the case we discover that a child + under 13 has provided me with personal information, we immediately delete this from + our servers. If you are a parent or guardian and you are aware that your child has provided us with personal + information, please contact me so that we will be able to do necessary actions. +

    Changes to This Privacy Policy

    We may update our Privacy Policy from time to time. Thus, you are advised to review + this page periodically for any changes. We will notify you of any changes by posting + the new Privacy Policy on this page. These changes are effective immediately after they are posted on + this page. +

    Contact Us (support at qpython.org)

    If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact + me. +

    This privacy policy page was created at privacypolicytemplate.net and modified/generated by App Privacy Policy Generator

    + + + diff --git a/docs/qlua-rate.html b/docs/qlua-rate.html new file mode 100644 index 0000000..97e5638 --- /dev/null +++ b/docs/qlua-rate.html @@ -0,0 +1 @@ + diff --git a/docs/qpy3-rate.html b/docs/qpy3-rate.html new file mode 100644 index 0000000..0437884 --- /dev/null +++ b/docs/qpy3-rate.html @@ -0,0 +1 @@ + diff --git a/docs/market/qq.html b/docs/qq.html similarity index 100% rename from docs/market/qq.html rename to docs/qq.html diff --git a/docs/quick-start/index.html b/docs/quick-start/index.html deleted file mode 100644 index 08cf5eb..0000000 --- a/docs/quick-start/index.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - - - -Quick Start | QPyPI - - - - - - - -
    - - -
    -
    -
    - -
    -

    Quick Start

    -
    -
    -

    A hands-on introduction to Python for beginning programmers

    -

    If you are a new guy to QPython, you should watch the tutorial video and just follow the steps to learn how to run script with QPython -

    -
    -
    -
    -

    Running with Console

    -

    Running QPython’s simple script with console model

    -
    #qpy:2
    -#qpy:console
    -#qpy:http://qpython.com/s/qpy-sample.py
    -
    -class Calculator(object):
    -    #define class to simulate a simple calculator
    -    def __init__ (self):
    -        #start with zero
    -        self.current = 0
    -    def add(self, amount):
    -        #add number to current
    -        self.current += amount
    -    def getCurrent(self):
    -        return self.current
    -
    -myBuddy = Calculator() # make myBuddy into a Calculator object
    -myBuddy.add(2) #use myBuddy's new add method derived from the Calculator class
    -print(myBuddy.getCurrent()) #print myBuddy's current instance variable
    -
    -
    -
    -
    -
    -

    Running with Kivy

    -

    Running QPython’s script with GUI model ( Kivy library )

    -
    #qpy:2
    -#qpy:kivy
    -#qpy:http://qpython.com/s/qpy-guisample.py
    -
    -from kivy.app import App
    -from kivy.uix.button import Button
    -
    -class TestApp(App):
    -    def build(self):
    -        # display a button with the text : Hello QPython 
    -        return Button(text='Hello QPython')
    -
    -TestApp().run()
    -
    -
    -
    -
    -

    Running as Web App

    -

    Running Web App with QPython

    -
    #qpy:2
    -#qpy:webapp:Hello Qpython
    -#qpy://localhost:8080/hello
    -"""
    -This is a sample for qpython webapp
    -"""
    -from bottle import route, run
    -
    -@route('/hello')
    -def hello():
    -    return "Hello World!"
    -
    -run(host='localhost', port=8080)
    -
    -
    - -
    -
    -
    -
    -

    0 pepole donate.Thank you for donating, which should encourage author greatly

    -

    -
    -
    -
    -
    -
    -
    -
    -
    - - diff --git a/docs/search.html b/docs/search.html index e5fafdc..3519f50 100644 --- a/docs/search.html +++ b/docs/search.html @@ -1,84 +1,97 @@ - + - - - -Search — QPython 0.9 documentation - - - - - - - - - - - - - - - - - -
    -
    - - - -
    -
    + + + + + + Search — QPython 0.9 documentation + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    +
    -
    -
    -
    - - + + + +
    +
    + + + + +
    +
    +
    +
    +
    +
    +
    + +
      +
    • Guide »
    • + +
    • Search
    • +
    + + +
    +
    +
    + +

    Search

    + + + + +

    + Searching for multiple words only shows matches that contain + all words. +

    + + +
    + + + +
    + + + +
    + +
    + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    - - -
    - - + + + + + diff --git a/docs/searchindex.js b/docs/searchindex.js index cb8bcb9..663a9e2 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["contributors","document","en/faq","en/guide","en/guide_androidhelpers","en/guide_contributors","en/guide_contributors_test","en/guide_developers","en/guide_extend","en/guide_helloworld","en/guide_howtostart","en/guide_ide","en/guide_libraries","en/guide_program","features/2018-09-28-dropbear-cn","zh/contributorshowto","zh/howtostart","zhindex"],envversion:53,filenames:["contributors.rst","document.rst","en/faq.rst","en/guide.rst","en/guide_androidhelpers.rst","en/guide_contributors.rst","en/guide_contributors_test.rst","en/guide_developers.rst","en/guide_extend.rst","en/guide_helloworld.rst","en/guide_howtostart.rst","en/guide_ide.rst","en/guide_libraries.rst","en/guide_program.rst","features/2018-09-28-dropbear-cn.rst","zh/contributorshowto.rst","zh/howtostart.rst","zhindex.rst"],objects:{"":{NFCBeamMessage:[4,0,1,""],addContextMenuItem:[4,0,1,""],addOptionsMenuItem:[4,0,1,""],batteryCheckPresent:[4,0,1,""],batteryGetHealth:[4,0,1,""],batteryGetLevel:[4,0,1,""],batteryGetPlugType:[4,0,1,""],batteryGetStatus:[4,0,1,""],batteryGetTechnology:[4,0,1,""],batteryGetTemperature:[4,0,1,""],batteryGetVoltage:[4,0,1,""],batteryStartMonitoring:[4,0,1,""],batteryStopMonitoring:[4,0,1,""],bluetoothAccept:[4,0,1,""],bluetoothActiveConnections:[4,0,1,""],bluetoothConnect:[4,0,1,""],bluetoothDiscoveryCancel:[4,0,1,""],bluetoothDiscoveryStart:[4,0,1,""],bluetoothGetConnectedDeviceName:[4,0,1,""],bluetoothGetLocalAddress:[4,0,1,""],bluetoothGetLocalName:[4,0,1,""],bluetoothGetRemoteDeviceName:[4,0,1,""],bluetoothGetScanMode:[4,0,1,""],bluetoothIsDiscovering:[4,0,1,""],bluetoothMakeDiscoverable:[4,0,1,""],bluetoothRead:[4,0,1,""],bluetoothReadBinary:[4,0,1,""],bluetoothReadLine:[4,0,1,""],bluetoothReadReady:[4,0,1,""],bluetoothSetLocalName:[4,0,1,""],bluetoothStop:[4,0,1,""],bluetoothWrite:[4,0,1,""],bluetoothWriteBinary:[4,0,1,""],cameraCapturePicture:[4,0,1,""],cameraInteractiveCapturePicture:[4,0,1,""],cameraStartPreview:[4,0,1,""],cameraStopPreview:[4,0,1,""],checkAirplaneMode:[4,0,1,""],checkBluetoothState:[4,0,1,""],checkNetworkRoaming:[4,0,1,""],checkRingerSilentMode:[4,0,1,""],checkScreenOn:[4,0,1,""],checkWifiState:[4,0,1,""],contactsGet:[4,0,1,""],contactsGetAttributes:[4,0,1,""],contactsGetById:[4,0,1,""],contactsGetCount:[4,0,1,""],contactsGetIds:[4,0,1,""],dialogCreateAlert:[4,0,1,""],dialogCreateDatePicker:[4,0,1,""],dialogCreateHorizontalProgress:[4,0,1,""],dialogCreateInput:[4,0,1,""],dialogCreateNFCBeamMaster:[4,0,1,""],dialogCreateNFCBeamSlave:[4,0,1,""],dialogCreatePassword:[4,0,1,""],dialogCreateSeekBar:[4,0,1,""],dialogCreateSpinnerProgress:[4,0,1,""],dialogCreateTimePicker:[4,0,1,""],dialogDismiss:[4,0,1,""],dialogGetInput:[4,0,1,""],dialogGetPassword:[4,0,1,""],dialogGetResponse:[4,0,1,""],dialogGetSelectedItems:[4,0,1,""],dialogSetCurrentProgress:[4,0,1,""],dialogSetItems:[4,0,1,""],dialogSetMaxProgress:[4,0,1,""],dialogSetMultiChoiceItems:[4,0,1,""],dialogSetNegativeButtonText:[4,0,1,""],dialogSetNeutralButtonText:[4,0,1,""],dialogSetPositiveButtonText:[4,0,1,""],dialogSetSingleChoiceItems:[4,0,1,""],dialogShow:[4,0,1,""],environment:[4,0,1,""],eventClearBuffer:[4,0,1,""],eventGetBrodcastCategories:[4,0,1,""],eventPoll:[4,0,1,""],eventPost:[4,0,1,""],eventRegisterForBroadcast:[4,0,1,""],eventUnregisterForBroadcast:[4,0,1,""],eventWait:[4,0,1,""],eventWaitFor:[4,0,1,""],executeQPy:[4,0,1,""],forceStopPackage:[4,0,1,""],fullDismiss:[4,0,1,""],fullKeyOverride:[4,0,1,""],fullQuery:[4,0,1,""],fullQueryDetail:[4,0,1,""],fullSetList:[4,0,1,""],fullSetProperty:[4,0,1,""],fullShow:[4,0,1,""],generateDtmfTones:[4,0,1,""],geocode:[4,0,1,""],getCellLocation:[4,0,1,""],getClipboard:[4,0,1,""],getConstants:[4,0,1,""],getDeviceId:[4,0,1,""],getDeviceSoftwareVersion:[4,0,1,""],getInput:[4,0,1,""],getIntent:[4,0,1,""],getLastKnownLocation:[4,0,1,""],getLaunchableApplications:[4,0,1,""],getLine1Number:[4,0,1,""],getMaxMediaVolume:[4,0,1,""],getMaxRingerVolume:[4,0,1,""],getMediaVolume:[4,0,1,""],getNeighboringCellInfo:[4,0,1,""],getNetworkOperator:[4,0,1,""],getNetworkOperatorName:[4,0,1,""],getNetworkStatus:[4,0,1,""],getNetworkType:[4,0,1,""],getPackageVersion:[4,0,1,""],getPackageVersionCode:[4,0,1,""],getPassword:[4,0,1,""],getPhoneType:[4,0,1,""],getRingerVolume:[4,0,1,""],getRunningPackages:[4,0,1,""],getScreenBrightness:[4,0,1,""],getScreenTimeout:[4,0,1,""],getSimCountryIso:[4,0,1,""],getSimOperator:[4,0,1,""],getSimOperatorName:[4,0,1,""],getSimSerialNumber:[4,0,1,""],getSimState:[4,0,1,""],getSubscriberId:[4,0,1,""],getVibrateMode:[4,0,1,""],getVoiceMailAlphaTag:[4,0,1,""],getVoiceMailNumber:[4,0,1,""],launch:[4,0,1,""],locationProviderEnabled:[4,0,1,""],locationProviders:[4,0,1,""],log:[4,0,1,""],makeIntent:[4,0,1,""],makeToast:[4,0,1,""],mediaIsPlaying:[4,0,1,""],mediaPlay:[4,0,1,""],mediaPlayClose:[4,0,1,""],mediaPlayInfo:[4,0,1,""],mediaPlayList:[4,0,1,""],mediaPlayPause:[4,0,1,""],mediaPlaySeek:[4,0,1,""],mediaPlaySetLooping:[4,0,1,""],mediaPlayStart:[4,0,1,""],notify:[4,0,1,""],phoneCall:[4,0,1,""],phoneCallNumber:[4,0,1,""],phoneDial:[4,0,1,""],phoneDialNumber:[4,0,1,""],pick:[4,0,1,""],pickContact:[4,0,1,""],pickPhone:[4,0,1,""],prefGetAll:[4,0,1,""],prefGetValue:[4,0,1,""],prefPutValue:[4,0,1,""],queryAttributes:[4,0,1,""],queryContent:[4,0,1,""],readBatteryData:[4,0,1,""],readLocation:[4,0,1,""],readPhoneState:[4,0,1,""],readSensors:[4,0,1,""],readSignalStrengths:[4,0,1,""],receiveEvent:[4,0,1,""],recognizeSpeech:[4,0,1,""],recorderCaptureVideo:[4,0,1,""],recorderStartMicrophone:[4,0,1,""],recorderStartVideo:[4,0,1,""],recorderStop:[4,0,1,""],requiredVersion:[4,0,1,""],rpcPostEvent:[4,0,1,""],scanBarcode:[4,0,1,""],search:[4,0,1,""],sendBroadcast:[4,0,1,""],sendBroadcastIntent:[4,0,1,""],sendEmail:[4,0,1,""],sensorsGetAccuracy:[4,0,1,""],sensorsGetLight:[4,0,1,""],sensorsReadAccelerometer:[4,0,1,""],sensorsReadMagnetometer:[4,0,1,""],sensorsReadOrientation:[4,0,1,""],setClipboard:[4,0,1,""],setMediaVolume:[4,0,1,""],setResultBoolean:[4,0,1,""],setResultBooleanArray:[4,0,1,""],setResultByte:[4,0,1,""],setResultByteArray:[4,0,1,""],setResultChar:[4,0,1,""],setResultCharArray:[4,0,1,""],setResultDouble:[4,0,1,""],setResultDoubleArray:[4,0,1,""],setResultFloat:[4,0,1,""],setResultFloatArray:[4,0,1,""],setResultInteger:[4,0,1,""],setResultIntegerArray:[4,0,1,""],setResultLong:[4,0,1,""],setResultLongArray:[4,0,1,""],setResultSerializable:[4,0,1,""],setResultShort:[4,0,1,""],setResultShortArray:[4,0,1,""],setResultString:[4,0,1,""],setResultStringArray:[4,0,1,""],setRingerVolume:[4,0,1,""],setScreenBrightness:[4,0,1,""],setScreenTimeout:[4,0,1,""],smsDeleteMessage:[4,0,1,""],smsGetAttributes:[4,0,1,""],smsGetMessageById:[4,0,1,""],smsGetMessageCount:[4,0,1,""],smsGetMessageIds:[4,0,1,""],smsGetMessages:[4,0,1,""],smsMarkMessageRead:[4,0,1,""],smsSend:[4,0,1,""],startActivity:[4,0,1,""],startActivityForResult:[4,0,1,""],startActivityForResultIntent:[4,0,1,""],startActivityIntent:[4,0,1,""],startEventDispatcher:[4,0,1,""],startInteractiveVideoRecording:[4,0,1,""],startLocating:[4,0,1,""],startSensing:[4,0,1,""],startSensingThreshold:[4,0,1,""],startSensingTimed:[4,0,1,""],startTrackingPhoneState:[4,0,1,""],startTrackingSignalStrengths:[4,0,1,""],stopEventDispatcher:[4,0,1,""],stopLocating:[4,0,1,""],stopSensing:[4,0,1,""],stopTrackingPhoneState:[4,0,1,""],stopTrackingSignalStrengths:[4,0,1,""],toggleAirplaneMode:[4,0,1,""],toggleBluetoothState:[4,0,1,""],toggleRingerSilentMode:[4,0,1,""],toggleVibrateMode:[4,0,1,""],toggleWifiState:[4,0,1,""],ttsIsSpeaking:[4,0,1,""],ttsSpeak:[4,0,1,""],usbserialActiveConnections:[4,0,1,""],usbserialConnect:[4,0,1,""],usbserialDisconnect:[4,0,1,""],usbserialGetDeviceList:[4,0,1,""],usbserialGetDeviceName:[4,0,1,""],usbserialHostEnable:[4,0,1,""],usbserialRead:[4,0,1,""],usbserialReadBinary:[4,0,1,""],usbserialReadReady:[4,0,1,""],usbserialWrite:[4,0,1,""],usbserialWriteBinary:[4,0,1,""],view:[4,0,1,""],viewContacts:[4,0,1,""],viewHtml:[4,0,1,""],viewMap:[4,0,1,""],waitForEvent:[4,0,1,""],wakeLockAcquireBright:[4,0,1,""],wakeLockAcquireDim:[4,0,1,""],wakeLockAcquireFull:[4,0,1,""],wakeLockAcquirePartial:[4,0,1,""],wakeLockRelease:[4,0,1,""],webViewShow:[4,0,1,""],webcamAdjustQuality:[4,0,1,""],webcamStart:[4,0,1,""],wifiDisconnect:[4,0,1,""],wifiGetConnectionInfo:[4,0,1,""],wifiGetScanResults:[4,0,1,""],wifiLockAcquireFull:[4,0,1,""],wifiLockAcquireScanOnly:[4,0,1,""],wifiLockRelease:[4,0,1,""],wifiReassociate:[4,0,1,""],wifiReconnect:[4,0,1,""],wifiStartScan:[4,0,1,""]}},objnames:{"0":["py","function","Python function"]},objtypes:{"0":"py:function"},terms:{"160x120":4,"320x240":4,"352x288":4,"3rd":[1,2,3,4,10,13],"640x480":4,"78k0f0730":4,"800x480":4,"\u4e0d\u60f3\u73a9\u4e86\u8bb0\u5f97kill\u6389sshd\u8fdb\u7a0b":14,"\u4e16\u754c":16,"\u4e24\u90e8\u5206":15,"\u4e2d\u6587":15,"\u4e2d\u6587\u7528\u6237\u5411\u5bfc":1,"\u4e3b\u8981\u662f\u7528qpython\u6765\u8fdb\u884c\u7f16\u7a0b\u548c\u5f00\u53d1\u7684\u6307\u5357":15,"\u4e4b\u524d\u9700\u8981\u6307\u5b9apid\u6587\u4ef6\u5c31\u662f\u65b9\u4fbf\u4f60\u83b7\u5f97":14,"\u4ece\u4f60\u7684\u7b14\u8bb0\u672c\u767b\u5f55\u624b\u673a":14,"\u4f46\u662f\u6211\u6700\u559c\u6b22\u7684\u662f\u4eca\u5929\u4ecb\u7ecd\u7684\u8fd9\u4e2a\u7279\u6027":14,"\u4f60\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u6765\u63d0\u4ea4\u5bf9\u5e94\u56fd\u5bb6\u7684\u7ffb\u8bd1":15,"\u4f60\u597d":16,"\u4f60\u61c2\u5f97":14,"\u4f60\u8fd8\u53ef\u4ee5\u767b\u5f55\u5230\u4f60\u7684\u624b\u673a":14,"\u4f7f\u7528\u4e0a\u7684\u5e2e\u52a9":15,"\u4f7f\u7528\u8bf4\u660e":16,"\u501f\u52a9dbconvert":14,"\u5176\u4e2d\u5185\u5bb9\u5176\u4e2d\u53c8\u5206\u4e3a":15,"\u5206\u4e3a\u5728qpython":15,"\u5207\u6362\u4e3aroot\u7528\u6237":14,"\u521a\u88ab\u96c6\u6210\u5230qpython\u4e2d\u7684dropbear":14,"\u521d\u59cb\u5316\u5bf9\u5e94\u7684kei":14,"\u524d\u53f0\u542f\u52a8":14,"\u52a0\u5165qpython":17,"\u5373\u53ef":14,"\u5373\u53ef\u542f\u52a8sshd\u670d\u52a1":14,"\u53e6\u5916\u8fd8\u652f\u6301\u4e0b\u9762\u9ad8\u7ea7\u7279\u6027":14,"\u53ea\u9700\u8981\u628a\u8be5\u6587\u4ef6\u4fdd\u5b58\u5230\u4f60\u7684dropbear\u76ee\u5f55\u4e0b":14,"\u53ef\u4ee5\u628a\u4f60\u7684openssh\u8bc1\u4e66\u8f6c\u6362\u8fc7\u6765":14,"\u540e\u7eed\u8ba1\u5212\u79fb\u690d\u66f4\u591a\u6709\u7528\u7684\u5de5\u5177":14,"\u542f\u52a8sshd\u670d\u52a1":14,"\u548c\u4ee5\u5916\u7684":15,"\u56e0\u4e3a\u4e00\u4e9b\u6743\u9650\u7684\u95ee\u9898":14,"\u56e2\u961f":16,"\u5728":14,"\u5728\u5fae\u535a\u95ee\u6211\u4eec\u95ee\u9898":17,"\u5728\u60f3\u8981\u8d21\u732eqpython\u6587\u6863\u4e4b\u524d\u4ed4\u7ec6\u9605\u8bfb\u6211\u4eec\u7684\u6307\u5357":15,"\u5728\u624b\u673a\u4e0a\u5f00sshd\u670d\u52a1\u9700\u8981root\u6743\u9650":14,"\u5728\u767e\u5ea6\u8d34\u5427\u91cc\u8ba8\u8bba":17,"\u5982\u4f55\u63d0\u4ea4\u6587\u6863":[16,17],"\u5982\u4f55\u63d0\u4ea4\u7ffb\u8bd1":[16,17],"\u5982\u4f55\u8d21\u732e":1,"\u5982\u679c\u68c0\u67e5\u65e0\u95ee\u9898\u5219\u53ef\u4ee5\u63d0\u4ea4":15,"\u5b58\u5230\u5bf9\u5e94\u7684\u76ee\u5f55":14,"\u5b83\u5305\u542b\u4e86\u8bb8\u591a\u60ca\u8273\u7684\u7279\u6027":17,"\u5b8c\u6210\u4e0a\u8ff0\u6b65\u9aa4\u4e4b\u540e":14,"\u5df2\u7ecf\u53d1\u5e03":17,"\u5df2\u7ecf\u767b\u5f55\u5230\u4e86\u8fdc\u7aef\u670d\u52a1\u5668":14,"\u5e38\u89c1\u95ee\u9898":17,"\u5e76\u4e14\u6587\u6863\u4f1a\u901a\u8fc7github":15,"\u5f00\u53d1":16,"\u5feb\u901f\u4e86\u89e3":16,"\u5feb\u901f\u5f00\u59cb":[15,17],"\u60f3\u6210\u4e3a":17,"\u6211\u4eec\u52aa\u529b\u4fdd\u6301\u4e24\u79cd\u8bed\u8a00\u5bf9\u5e94\u5185\u5bb9\u7684\u51c6\u786e\u548c\u540c\u6b65":15,"\u6211\u4eec\u7528sphinx\u6765\u7ec4\u7ec7\u6587\u6863":15,"\u6253\u5f00\u6d4f\u89c8\u5668\u6253\u5f00\u672c\u5730\u6587\u4ef6\u68c0\u67e5":15,"\u62a5\u544a\u95ee\u9898":17,"\u6307\u5b9a\u8bc1\u4e66\u5373\u53ef":14,"\u6309\u7167sphinx\u89c4\u5219\u7f16\u8f91source\u4e2d\u7684\u6587\u4ef6\u5373\u53ef":15,"\u63a5\u4e0b\u6765\u4ece\u4f60\u7684\u7535\u8111\u4e2d\u5c31\u53ef\u4ee5\u767b\u5f55\u4e86\u4f60\u7684\u624b\u673a\u4e86\u9ed8\u8ba4\u5bc6\u7801\u5c31\u662f\u6211\u4eec\u7684app\u540d\u5b57":14,"\u652f\u6301":14,"\u652f\u6301\u8bc1\u4e66\u767b\u5f55":14,"\u6587\u6863\u4f53\u7cfb\u5206\u4e3a":15,"\u6587\u6863\u975e\u5e38\u91cd\u8981":15,"\u662f\u5f88\u591a\u5d4c\u5165\u5f0flinux\u7cfb\u7edf\u9996\u9009\u7684ssh\u5de5\u5177":14,"\u66f4\u591a\u94fe\u63a5":1,"\u6700\u540ecd\u5230qpython":15,"\u6765\u548c\u4e2d\u56fd\u6d3b\u8dc3\u7684qpython":17,"\u6765\u548c\u5168\u4e16\u754c\u7684":17,"\u6b22\u8fce":1,"\u6b22\u8fce\u52a0\u5165":16,"\u6df1\u5165\u6298\u817e\u7684\u6307\u5bfc":15,"\u7136\u540e\u6d4f\u89c8qpython":15,"\u7528":14,"\u7528\u6237\u4e00\u5757\u6765\u73a9\u8f6cqpython":17,"\u7528\u6237\u4e00\u8d77\u73a9\u8f6c":17,"\u7528\u6237\u5f00\u53d1\u7ec4":1,"\u7528\u6237\u5f00\u53d1\u8005\u7ec4":17,"\u7684\u6700\u65b0\u7248\u672c1":17,"\u7684\u8d21\u732e\u8005\u4e48":17,"\u7aef\u53e3":14,"\u7b2c\u4e00\u6b21\u4f7f\u7528":14,"\u7ed3\u5408qpython":14,"\u7ed9\u6211\u4eec\u53d1\u90ae\u4ef6":17,"\u7f16\u7a0b\u5411\u5bfc":16,"\u7f16\u7a0b\u6307\u5357":[15,17],"\u80fd\u8ba9\u4f60\u65b9\u4fbf\u5730\u8fdb\u884c\u7f16\u7a0b\u6765\u81ea\u52a8\u7ba1\u7406\u670d\u52a1\u5668\u6216\u4f60\u7684\u624b\u673a":14,"\u82f1\u6587":15,"\u83b7\u5f97qpython":14,"\u8bf7":17,"\u8bf7\u4ece\u5e94\u7528\u5e02\u573a\u5b89\u88c5":17,"\u8bf7\u52a0\u5165":17,"\u8d21\u732e\u8005\u6307\u5357":[15,17],"\u8d77\u6b65":1,"\u8fd1\u6765\u6084\u6084\u66f4\u65b0\u4e86\u4e0d\u5c11\u597d\u73a9\u7684\u5305":14,"\u8fd9\u4e2a\u529f\u80fd\u9002\u5408\u9ad8\u7ea7\u73a9\u5bb6":14,"\u8fdb\u5165\u5230":15,"\u8fdc\u7a0b\u62f7\u8d1d\u6587\u4ef6":14,"\u9009\u62e9shell":14,"\u957f\u6309termin":14,"\u9664\u4e86\u4ece\u624b\u673a\u4e0a\u767b\u5f55\u670d\u52a1\u5668\u5916":14,"\u9700\u8981\u4eceshell":14,"\u9879\u76ee\u7684qpython":15,"\u9ed1\u5ba2":16,"boolean":4,"byte":4,"case":[2,4,9],"class":[4,9,12,13],"default":[4,8,10,12,13],"docs\u4e2d\u5e76\u8fd0\u884cbuild":15,"docs\u76ee\u5f55\u4e2d":15,"export":8,"files\u4e0b\u521b\u5efadropbear\u76ee\u5f55":14,"final":4,"float":4,"function":[7,9,12,13],"import":[2,4,8,9,12,13],"int":[4,8],"long":[4,10],"new":[4,8,10,12],"null":[4,8],"org\u5373\u53ef\u770b\u5230\u6700\u65b0\u7684\u66f4\u65b0":15,"org\u7f51\u7ad9\u4e2d":15,"page\u529f\u80fd\u76f4\u63a5\u63a8\u5230qpython":15,"qpython\u6587\u6863\u4f53\u7cfb\u8bf4\u660e":[16,17],"qpython\u662f\u4e00\u4e2a\u652f\u6301\u591a\u8bed\u8a00\u7684\u5e94\u7528":15,"qpython\u8d21\u732e\u8005\u6307\u5357":15,"qpython\u9ed1\u5ba2\u6307\u5357":[15,17],"qq\u7ec4":17,"return":[4,8,9,13],"shell\u4e2d\u8f93\u5165ssh":14,"short":4,"ssh\u5de5\u5177":14,"static":4,"switch":10,"team\u5185\u7684":15,"terminal\u4e2d\u8fdb\u884c\u4e0b\u521d\u59cb\u5316\u64cd\u4f5c":14,"throw":4,"true":[4,8],"try":[1,8,9,13],"var":2,"void":8,"while":4,ASE:4,And:[0,1,8,9,12],But:9,For:[4,6,13],GPS:13,IDE:13,IDEs:12,IDs:4,SMS:[4,13],TTS:4,That:9,The:[4,8,10,12,13],Then:[5,9,11],There:[1,4,10],Use:[1,3,9],With:[11,13],__exit:13,__future__:12,__phello__:12,_abcol:12,_codecs_cn:12,_codecs_hk:12,_codecs_iso2022:12,_codecs_jp:12,_codecs_kr:12,_codecs_tw:12,_csv:12,_ctype:12,_ctypes_test:12,_hashlib:12,_heapq:12,_hotshot:12,_io:12,_json:12,_lsprof:12,_lwpcookiejar:12,_mozillacookiejar:12,_multibytecodec:12,_pyio:12,_sqlite3:12,_ssl:12,_strptime:12,_testcapi:12,_threading_loc:12,_weakrefset:12,abc:12,abil:[7,10],abl:[4,7],about:[0,3,4,6,9,10],abov:[2,4,10,11],abridg:4,absolut:4,acc:0,acceler:4,acceleromet:4,accept:4,acces:4,access:[4,11,13],accomplish:13,accuraci:4,acquir:4,act:8,action:[4,8,10],activ:[1,3,4,8,10],activityresultfacad:[3,12],actual:9,adapt:4,add:[4,9,10,13],addcontextmenuitem:4,addit:10,addoptionsmenuitem:4,address:4,adjust:4,advantag:13,after:[6,9,10,11],aifc:12,aim:7,airplan:4,airplanermod:12,alert:12,all:[4,9],allow:[4,7,8,10,13],almost:9,alphabet:4,alreadi:1,also:[3,4,7,10,11,13],altern:13,alwai:10,amaz:[1,13],amazon:1,andoroid:4,android5:2,android:[1,2,3,4,8,9,10,11,12,13,15],androidfacad:[3,12],androidhelp:[1,3,4,8,9],ani:[0,1,4,6,8,9],anoth:[9,10],answer:[0,10],antigrav:12,anydbm:12,anymor:4,anyth:9,anywai:9,api14:4,api:[1,3,13],apk:[4,8],app:[2,8,13,14,16],appcach:4,applic:[1,3,4,10,13],applicationmanagerfacad:[3,12],appreci:0,appstor:1,arduino:4,arg:13,argpars:12,argument:4,argv:8,ascii:4,ask:[1,4,9,10],asset:13,assit:13,associ:4,ast:12,asynchat:12,asyncor:12,atexit:12,attach:4,attachmenturi:4,attribut:4,audio:12,audiodev:12,audioop:12,author:12,authorized_kei:14,autofocu:4,automat:12,avail:[4,9,10],availblock:4,axi:4,azimuth:4,background:13,backlight:4,backspac:9,bad:13,bar:[4,9,10],barcod:12,base64:[4,12],basehttpserv:12,bastion:12,batteri:4,batterycheckpres:4,batterygethealth:4,batterygetlevel:4,batterygetplugtyp:4,batterygetstatu:4,batterygettechnolog:4,batterygettemperatur:4,batterygetvoltag:4,batterymanagerfacad:[3,12],batterystartmonitor:4,batterystopmonitor:4,bdb:12,beam:4,beautifulsoup:12,becam:[1,3,9],becom:[3,5,13],befor:10,begin:9,being:7,below:11,besid:[7,10,11,13],best:[1,3],beta:8,better:[6,7],between:[4,10],big:10,bin:2,bind:4,binhex:12,bio:4,bisect:12,bit:9,blank:9,block:4,blockcount:4,blocksiz:4,blog:[9,10],bluetooth:[4,13],bluetoothaccept:4,bluetoothactiveconnect:4,bluetoothconnect:4,bluetoothdiscoverycancel:4,bluetoothdiscoverystart:4,bluetoothfacad:[3,12],bluetoothgetconnecteddevicenam:4,bluetoothgetlocaladdress:4,bluetoothgetlocalnam:4,bluetoothgetremotedevicenam:4,bluetoothgetscanmod:4,bluetoothisdiscov:4,bluetoothmakediscover:4,bluetoothread:4,bluetoothreadbinari:4,bluetoothreadlin:4,bluetoothreadreadi:4,bluetoothsetlocalnam:4,bluetoothstop:4,bluetoothwrit:4,bluetoothwritebinari:4,board:4,bodi:4,bool:4,both:9,bottl:[12,13,16],bountysourc:1,box:[4,9],brand:10,briefli:5,bright:12,broadcast:4,brows:3,browsabl:8,browser:[3,4,10],bsddb:12,buffer:4,buffers:4,bug:[1,6],build:[0,8,13],built:[1,3,10,11,13],bundl:8,busi:8,button:[4,9,10,11,13],calendar:12,call:[8,9,12],callabck:8,camera:4,cameracapturepictur:4,camerafacad:[3,12],camerainteractivecapturepictur:4,camerastartpreview:4,camerastoppreview:4,can:[0,4,8,9,10,13],cancel:[4,9],cancl:4,cannot:4,cap:10,captur:4,card:4,cat:14,categori:[4,8],caus:13,cdc:4,cdma:4,cell:4,center:10,cgi:12,cgihttpserv:12,cgitb:12,challeng:8,chanc:10,chang:4,charact:4,charg:4,charger:4,chat:1,check:[4,9],checkairplanemod:4,checkbluetoothst:4,checknetworkroam:4,checkout:8,checkringersilentmod:4,checkscreenon:4,checkwifist:4,chines:0,choic:4,choos:[3,4,8,10,11],chosen:4,christo:0,chunk:[4,12],claim:9,classnam:4,clear:4,click:[4,6,9,10,11],clipboard:12,clone:15,close:[4,10,13],cmd:12,code:[4,8,9,10,11,12,13],codec:12,codeop:12,collabor:5,collect:[4,12],colorsi:12,column:4,com:[4,10,15],come:5,comfort:10,comma:4,command:[10,12],commit:4,common:[7,13],commonintentsfacad:[3,12],commun:[3,9],compat:9,compil:[8,10,12,13],compileal:12,complet:13,complex:13,compon:10,comput:3,comun:10,config:12,configchang:8,configpars:12,confirm:4,connect:4,connid:4,consid:[2,4,5,9],consol:[1,3,13],constant:4,consult:10,contact:[4,6,8],contactsfacad:[3,12],contactsget:4,contactsgetattribut:4,contactsgetbyid:4,contactsgetcount:4,contactsgetid:4,contain:[0,1,4,9,10,12],contan:9,content:[3,4],context:[4,8],contextlib:12,contribut:[0,3,6],contributor:1,control:[10,12],conveni:11,convient:11,cooki:12,cookielib:12,cool:6,copi:[10,12],copy_reg:12,core:[1,3],corner:10,could:[1,2,4,6,8,10,11,12,13],couldn:8,countri:4,cprofil:12,cpu:4,creat:[4,6,9,10],creation:4,creator:3,critic:10,csv:12,ctype:12,current:4,dai:4,darciss:0,dashboard:[3,8,14],data:[2,8,12,14],date:4,dbhash:12,dbkei:14,dead:4,debug:13,decim:[4,12],declar:13,def:13,defaulttext:4,defin:[4,13],definit:8,delaytim:4,delet:[4,10],deliveri:7,demand:1,demo:8,demonstr:4,depend:10,deriv:12,describ:9,descript:0,desir:4,desktop:10,destinationaddress:4,detail:[4,5],dev:4,devci:4,develop:[1,4,6,7,8,9,10,12,13],devic:[1,2,4,10,13],dfault:4,dia:12,dial:4,dialog:[9,12],dialogcreatealert:4,dialogcreatedatepick:4,dialogcreatehorizontalprogress:4,dialogcreateinput:4,dialogcreatenfcbeammast:4,dialogcreatenfcbeamslav:4,dialogcreatepassword:4,dialogcreateseekbar:4,dialogcreatespinnerprogress:4,dialogcreatetimepick:4,dialogdismiss:4,dialoggetinput:[4,8,9],dialoggetpassword:4,dialoggetrespons:4,dialoggetselecteditem:4,dialogsetcurrentprogress:4,dialogsetitem:4,dialogsetmaxprogress:4,dialogsetmultichoiceitem:4,dialogsetnegativebuttontext:4,dialogsetneutralbuttontext:4,dialogsetpositivebuttontext:4,dialogsetsinglechoiceitem:4,dialogshow:4,didn:13,differ:[4,7],difflib:12,digit:4,dim:4,dircach:12,directli:[4,10,11],directori:10,dis:12,disabl:4,discharg:4,disconnect:4,discov:4,discover:4,discoveri:4,dismiss:4,displai:[4,9,13],distribut:10,distutil:12,django:13,dmych:[9,10],doc:9,doctest:12,document:[1,3,10,12],docxmlrpcserv:12,doe:[4,9,13],doesn:[2,13],doing:6,don:[0,8,9,10,12,13],dongl:4,doubl:4,down:[6,10],download:4,draft:[9,10],drawabl:4,driver:13,droid:[4,8,9],dropbear:14,dropbear_dss_host_kei:14,dropbear_ecdsa_host_kei:14,dropbear_rsa_host_kei:14,dss:14,dtmf:4,dumbdbm:12,dummy_thread:12,durat:4,dure:4,dynload:3,each:4,easi:13,easili:[10,13],ecdsa:14,edit:[9,10,11],editor:[1,3,9,11],effici:13,els:[4,8,9],email:[0,1,5,8,12],empti:[4,9],enabl:4,encapsul:9,encod:[4,12],engin:[1,3,13],enqueu:4,ensornumb:4,enter:[9,10],enterpris:[1,3],env:2,environ:[4,8,10],equal:4,equival:4,error:[4,13],essenti:13,establish:4,estens:10,etc:[1,4,7,10,13],even:2,event:[3,4],eventclearbuff:4,eventdata:4,eventfacad:[3,12],eventgetbrodcastcategori:4,eventnam:4,eventpol:4,eventpost:4,eventregisterforbroadcast:4,eventunregisterforbroadcast:4,eventwait:4,eventwaitfor:4,ever:4,everi:9,exampl:[4,9,13],exceed:4,except:[9,13],execut:[2,4,9,10],executeqpi:4,exit:[4,13],expans:7,expect:4,experi:13,explicitli:10,explor:10,extend:[4,10],extplgplusnam:8,extra:[4,13],eyesfreefacad:[3,12],facad:[3,12],facebook:[1,2],fail:4,failur:4,fals:[0,4,9,13],familiar:9,faq:1,fast:13,featur:[1,3,4,10,11],feedback:[1,3,5],feel:10,field:[4,9],fifth:9,file:[0,3,4,10,11],filecmp:12,fileinput:12,filenam:4,filepath:[4,13],filter:8,find:[6,8,10],firmwar:4,first:[2,9,10],flag:[4,8],flask:13,flexiabl:13,fnmatch:12,fogapod:0,folder:4,folk:7,follow:[0,1,2,3,6,8,9,10,12,13],foo:12,forc:4,forcestoppackag:4,forget:10,fork:1,format:[4,9],formatt:12,forward:1,found:[4,8,10],fpformat:12,fraction:12,framework:13,free:10,french:0,frodo821:0,from:[1,2,3,4,9,10,12,13],front:13,ftdi:4,ftp:3,ftplib:12,full:[4,8],fulldismiss:4,fullkeyoverrid:4,fullqueri:4,fullquerydetail:4,fullscreen:[4,13],fullsetlist:4,fullsetproperti:4,fullshow:4,functool:12,funni:10,further:9,futur:13,future_builtin:12,gener:[4,8,10],generatedtmfton:4,genericpath:12,geo:12,geocod:4,get:[1,2,10,12,13],getcellloc:4,getclipboard:4,getconst:4,getdefault:4,getdeviceid:4,getdevicesoftwarevers:4,getextra:8,getinput:12,getint:4,getlastknownloc:4,getlaunchableappl:4,getline1numb:4,getmaxmediavolum:4,getmaxringervolum:4,getmediavolum:4,getneighboringcellinfo:4,getnetworkoper:4,getnetworkoperatornam:4,getnetworkstatu:4,getnetworktyp:4,getopt:12,getpackagevers:4,getpackageversioncod:4,getpass:12,getpassword:12,getphonetyp:4,getringervolum:4,getrunningpackag:4,getscreenbright:4,getscreentimeout:4,getsimcountryiso:4,getsimoper:4,getsimoperatornam:4,getsimserialnumb:4,getsimst:4,getstr:8,getsubscriberid:4,gettext:12,getvibratemod:4,getvoicemailalphatag:4,getvoicemailnumb:4,git:[0,15],github:[1,8,15],gitter:1,given:4,glob:12,global:13,goal:3,goe:10,going:9,good:[4,9],googl:1,gps:4,grab:4,great:[1,3,5,7],greater:[4,5],greet:9,group:[0,1,5],grp:12,gsm:4,gsm_signal_strength:4,guarante:4,gui:13,guid:[6,7],gzip:12,handl:[4,8],handler:13,handler_class:13,happen:9,happi:1,hardwar:4,has:[1,4,8,10,11],hash:4,hashlib:12,have:[1,6,8,10,13],head:13,header:13,health:4,heapq:12,hear:1,heard:4,hei:9,hello1:9,hello:[1,3,4,8,10,13],helloworld:9,help:[0,1,3,8,10,11,13],hepler:12,here:[4,8,9,10],hide:13,higher:[1,4],highlight:[10,11],hipip:10,his:[9,10],hmac:12,home:13,homepag:13,hope:5,horizont:4,host:[3,12,13,14],hotshot:12,hour:4,how:[0,1,2,3,4,8],href:13,html:[4,11],htmlentitydef:12,htmllib:12,htmlparser:12,http:[4,8,13,15],httplib:12,icon:[4,10],iconnam:4,id_priv:14,idea:[6,10],identifi:4,ids:4,ihook:12,imag:[4,8],imaplib:12,imei:4,imghdr:12,immedi:4,implement:[1,13],importerror:9,importlib:12,imputil:12,imsi:4,inbox:4,includ:[1,4,10],incom:4,incomingnumb:4,increas:4,indent:[9,10],independ:8,index:[4,10],indic:4,info:4,inform:[6,12,13],initi:4,innov:13,input:[4,9],inputtyp:4,insert:[4,13],inspect:12,instal:[8,10,13],instead:[9,10],integr:[4,10],intent:[8,12],interact:7,interest:6,interfac:[9,10,13],interpret:[1,10],intro:0,introduc:[5,10],introduct:0,invit:[0,5],is24hour:4,iso:4,issu:[1,4],item:4,its:10,japanes:0,java:4,javascript:11,jniu:13,job:13,join:[0,1,3,5,10],jpeg:4,jpegqual:4,json:[4,9,12],just:[0,2,3,9,10,11,12,13],keep:[6,13],kei:[4,9],kernel:4,kersei:0,keyboard:4,keyboardhidden:8,keycod:4,keyword:[11,12],kill:14,kind:0,kit:10,kivi:[3,13],know:[3,6,9],known:4,kuri65536:4,kyle:0,label:[4,8],lack:[1,10],languag:[4,13],languagemodel:4,laptop:[11,13],last:[4,9],later:[2,4],latitud:4,launch:[1,3,4,10],launchabl:4,launcher:8,layer:4,layout:12,lead:10,least:9,leav:[9,10],left:[9,10],length_short:8,let:[6,8,9,10,13],level:[4,10],lib:[10,12],libari:10,librari:[1,3,4,8,13],light:4,like:[1,2,4,7,8,10,11,12,13],line:[4,8,9,10,13],linecach:12,link:[2,10],linux4:12,list:[4,10],listen:4,load:[4,13],local:[1,3,4,10,11,12],localhost:13,locat:12,locationfacad:[3,12],locationprovid:4,locationprovideren:4,lock:4,log:[4,12],log_request:13,logcat:4,logic:9,logo:10,longitud:4,loop:4,lua:11,m78k0f0730:4,macpath:12,macurl2path:12,mae:0,magnet:4,mai:[1,8],mail:4,mailbox:12,mailcap:12,main:[1,3,7,10,11],mainli:10,maintain:[7,10],make:[4,5,6,9,10,13],make_serv:13,makeint:4,maketext:8,maketoast:[4,8,9],manag:12,mani:[1,4,10,13],manual:12,map:4,mark:4,markupbas:12,master:4,match:4,max:4,maximum:4,maximumprogress:4,maximunprogress:4,maxresult:4,mbundl:8,mcc:4,md5:12,mean:9,meanin:9,media:12,mediaisplai:4,mediaplai:4,mediaplayclos:4,mediaplayerfacad:[3,12],mediaplayinfo:4,mediaplaylist:4,mediaplaypaus:4,mediaplayseek:4,mediaplaysetloop:4,mediaplaystart:4,mediarecorderfacad:[3,12],meet:1,meid:4,member:[1,3],mention:2,menu:[4,10],merg:0,messag:[4,9],method:[4,13],mhlib:12,microphon:4,million:1,millisecond:4,mime:4,mimetool:12,mimetyp:[8,12],mimewrit:12,mimifi:12,mindist:4,minupdatedist:4,minut:4,miut:4,mix:[10,13],mjpeg:4,mkdir:14,mmap:12,mnc:4,mobil:4,mode:[7,12,13],model:4,modifi:10,modul:9,modulefind:12,month:4,more:[3,5,10],most:[4,9,10,11,12,13],move:[1,11],mpyapi:8,msec:4,msisdn:4,much:10,multi:13,multifil:12,multipl:4,must:4,mutex:12,myappid:8,mywsgirefserv:13,name:[4,8,9,10,13],necessari:9,need:[1,2,8,9,12,13],neg:4,neighbor:4,netrc:12,network:[1,4],networkstatu:12,newest:1,next:[0,4,9,10],nfc:[12,13],nfcbeammessag:4,nice:10,nntplib:12,non:4,none:[4,9,13],note:[10,13],noth:9,notic:10,notif:[4,9,10],notifi:12,now:[2,6,8,9,10,13],ntpath:12,nturl2path:12,number:[4,10,12],number_of_ev:4,numer:4,numpi:10,object:[4,9,10],obvious:[9,10],occur:4,off:4,offer:[6,7,9,10,13],offici:1,offset:4,oldest:4,onactivityresult:8,onc:10,one:[4,9],onli:[3,4,8,9],onlin:[1,3],onpyapi:8,onqpyexec:8,oop:9,opcod:12,open:[1,3,4,9,10,13],opengl2:13,opengl:13,opensourc:7,oper:4,option:[4,13],optpars:12,order:[4,9],ordinari:10,org:[0,2,4,5,6,8,10,14],organis:3,orient:[4,8],origin:4,os2emxpath:12,other:[2,9,10,13],otherwis:[4,9],our:9,out:[3,6,8],output:9,outsid:8,over:4,overheat:4,overrid:[4,8],own:3,packag:[4,8,10,13],packagenam:4,packagevers:12,page:[10,13],paid:7,param:8,paramet:4,part:[5,7,13],partial:4,pass:[4,13],password:4,path:[4,13],paus:4,pdb:12,pelas:13,peopl:[10,13],percentag:4,period:4,permiss:13,phe:0,phone:[4,11],phonecal:4,phonecallnumb:4,phonedi:4,phonedialnumb:4,phonefacad:[3,12],phonenumb:4,phonestat:12,pic:[10,11],pick:4,pickcontact:4,picker:4,pickl:12,pickletool:12,pickphon:4,pictur:[4,10],pid:14,pip:[1,3,10,12],pip_consol:10,pipe:12,pitch:4,pizza:4,pkg_resourc:12,pkgutil:12,pl2303:4,plai:[1,4,9],plain:[8,11],plan:13,plat:12,platform:12,pleas:[0,1,2,4,5,6,8,10],plistlib:12,plu:10,plug:4,plugin:8,plyer:12,point:[4,13],polit:9,poll:4,pop:9,popen2:12,poplib:12,port:[4,13],posit:4,posixfil:12,posixpath:12,possibl:4,post:[0,4,10],power:[3,4],pprint:12,pre:[8,10,13],prefer:4,preferencesfacad:[3,12],prefgetal:4,prefgetvalu:4,prefputvalu:4,presenc:4,present:4,press:9,preview:[4,11],previou:13,previous:4,print:[9,13],prioriti:1,probabl:4,process:[4,8],product:8,profil:12,program:[1,9,13],progress:[2,12,13],project:[0,1,3,4,6,7,8,10,11,13],prompt:[4,9],properti:[4,10],propos:8,protect:8,provid:12,pstat:12,pty:12,publish:[0,8],pull:[0,1,9],pure:[10,13],purpos:4,push:[1,3],put:[4,9,10,13],putextra:8,putstr:8,py_compil:12,pyclbr:12,pycod:8,pydoc:12,pydoc_data:12,pygam:2,python2:10,python:[1,2,3,8,9,10,11,13],qedit4web:11,qeditor:3,qpy:[1,2,3,12,13,14],qpy_run_with_shar:8,qpyapp:13,qpyhttpd:13,qpyinterfacefacad:[3,12],qpylib:8,qpypi:[3,10],qpyplu:10,qpython3:[0,1,4,8,13,17],qpython:[0,2,3,4,6,9,11,14,15,16],qpythoninit:12,qrcode:[3,10],qscript:13,qsl4a:[1,3],qualiti:4,queri:4,queryattribut:4,querycont:4,question:[0,10],queue:[4,12],quick:[1,3],quickli:[3,10],quiet:13,quiethandl:13,quopri:12,qustion:1,radio:4,random:12,rapid:13,reach:10,reaction:9,read:[9,12],readbatterydata:4,reader:3,readi:6,readloc:4,readphonest:4,readsensor:4,readsignalstrength:4,real:9,receiv:4,receiveev:4,recent:[4,10],recipi:4,recogn:4,recognizeint:4,recognizespeech:4,recommend:13,recongn:4,reconnect:4,record:4,recordaudio:4,recordercapturevideo:4,recorderstartmicrophon:4,recorderstartvideo:4,recorderstop:4,redirect:10,refer:4,regist:4,regular:10,rehot:0,releas:[1,4,13],reload:13,remot:4,remov:[4,13],renam:10,replac:9,repo:0,report:[1,3,4,5],repr:[12,13],repres:4,represent:4,request:[0,1,4,13],requestcod:8,requir:[8,12,13],requiredvers:4,resolut:4,resolutionlevel:4,resolv:4,resourc:[1,4,10,12,13],respond:9,respons:4,rest:10,result:[4,8,9,11],resultcod:[4,8],resultvalu:4,retriev:4,rexec:12,rfc822:12,ringer:12,river:[0,8],rl78:4,rlcomplet:12,roam:4,robotpars:12,role:4,roll:4,root:[2,13],rout:13,router:13,rpc:9,rpcpostev:4,rsa:14,run:[0,1,2,3,4,9,10,11,13],runpi:12,runtim:13,russian:0,said:10,same:[10,12],sampl:[2,3,4,8,13],samples:4,save:[4,9,10],scan:4,scanbarcod:4,scanner:4,sched:12,scheme:8,scp:14,screen:[9,10,12],screenorient:8,screenshot:[9,10,13],script:[1,2,3,4,7,9,10,11,13],script_exec_pi:8,script_result:4,sdcard:[4,10,13],sdk:4,search:[4,10,11],second:[4,10],see:[4,9,10,11,12],seek:4,seem:8,select:4,selectionarg:4,self:[0,4,13],send:[0,1,4,5,6,8],sendbroadcast:12,sendbroadcastint:4,sendemail:12,sensor:4,sensormanagerfacad:[3,12],sensornumb:4,sensorsgetaccuraci:4,sensorsgetlight:4,sensorsreadacceleromet:4,sensorsreadmagnetomet:4,sensorsreadorient:4,sent:4,separ:[4,9],serial:[3,12],serv:13,serve_forev:13,server:[4,13],server_clos:13,server_stat:13,serveradapt:13,servic:[1,3,4,13],session:4,set:[4,8,10,12],setact:8,setclassnam:8,setclipboard:4,setmediavolum:4,setresultboolean:4,setresultbooleanarrai:4,setresultbyt:4,setresultbytearrai:4,setresultchar:4,setresultchararrai:4,setresultdoubl:4,setresultdoublearrai:4,setresultfloat:4,setresultfloatarrai:4,setresultinteg:4,setresultintegerarrai:4,setresultlong:4,setresultlongarrai:4,setresultserializ:4,setresultshort:4,setresultshortarrai:4,setresultstr:4,setresultstringarrai:4,setringervolum:4,setscreenbright:4,setscreentimeout:4,settingsfacad:[3,12],setuptool:12,sever:[1,13],sgmllib:12,sha:12,share:[2,3,4,10,11],shell:11,shelv:12,shlex:12,shortcut:10,shoul:13,should:[3,4,9,10],show:[4,8,9,10],shown:9,shutdown:13,shutil:12,signal:4,signalstrengthfacad:[3,12],silent:12,sim:4,similar:9,simpl:[8,9],simple_serv:13,simplehttpserv:12,simplexmlrpcserv:12,simplifi:12,sinc:10,singl:10,site:[10,12],sl4a:[1,3,4,7,12],slave:4,small:9,smartphon:13,smsdeletemessag:4,smsfacad:[3,12],smsgetattribut:4,smsgetmessag:4,smsgetmessagebyid:4,smsgetmessagecount:4,smsgetmessageid:4,smsmarkmessageread:4,smssend:4,smtpd:12,smtplib:12,sndhdr:12,snippet:11,social:1,socket:[4,12],socketserv:12,softwar:4,solut:13,solv:1,some:[1,3,4,6,9,10,11,13],sometim:1,somth:10,soon:[1,5],sour:2,sourc:[4,10,13],space:9,speak:4,specif:4,specifi:4,speech:4,speechrecognitionfacad:[3,12],spinner:4,spn:4,sponsor:[1,3],sqlite3:12,sre:12,sre_compil:12,sre_const:12,sre_pars:12,sshd:14,ssl:12,stackoverflow:1,stardard:[3,13],start:[1,9,11,12,13],startact:12,startactivityforresult:[4,8],startactivityforresultint:4,startactivityint:4,starteventdispatch:4,startinteractivevideorecord:4,startloc:4,startsens:4,startsensingthreshold:4,startsensingtim:4,starttrackingphonest:4,starttrackingsignalstrength:4,stat:[4,12],state:4,statement:9,static_fil:13,statu:12,statvf:12,stderr:13,step:[1,3],still:9,stop:[12,13],stopeventdispatch:4,stoploc:4,stopsens:4,stoptrackingphonest:4,stoptrackingsignalstrength:4,store:4,str:4,stream:4,street:4,strength:4,string:[0,4,8,9,12],stringio:12,stringold:12,stringprep:12,strong:13,struct:[4,12],subject:4,subprocess:12,subscrib:4,subtyp:4,succeed:4,success:4,successfulli:4,suggest:[3,5],sunau:12,sunaudio:12,suppli:4,support:[0,2,5,6,10,11,12,13],sure:8,swipe:10,symbol:12,symtabl:12,syntax:[10,11],sys:[8,13],sysconfig:12,syslog:12,system:[10,12],tabnanni:12,tag:4,take:[4,13],takepictur:4,talk:1,tap:[9,10],tarfil:12,target:[4,13],targetpath:4,tasker:8,team:[1,3,10,13],technic:13,technolog:[3,4],tell:0,telnetlib:12,temperatur:4,tempfil:12,templat:13,termin:[2,14],termio:12,test:[1,3,6,10],testapp:13,tester:[1,3,5],text:[4,8,9,10,11,13],texttospeechfacad:[3,12],textwrap:12,than:4,thank:[0,5,9,10],thei:[1,12],them:[4,9,10,12],thi:[0,1,4,5,6,8,9,10,12,13],thing:8,think:9,though:10,thread:[12,13],three:[7,9],threshold:4,through:[1,3,8,10,12,13],time:4,timeit:12,timeout:4,titl:[4,9,13],titlebar:13,toaiff:12,toast:[0,8,9,12],toggl:4,toggleairplanemod:4,togglebluetoothst:4,toggleringersilentmod:4,togglevibratemod:4,togglewifist:4,token:12,tone:4,tonedur:4,tonegeneratorfacad:[3,12],tool:[1,3,10],toolbar:[9,10],top:[9,10],topic:0,touch:13,trace:12,traceback:12,track:4,tragi:4,translat:[0,1,3],treat:9,ttsisspeak:4,ttsspeak:4,tty:12,ttyusb0:4,tupl:4,turkish:0,twitter:1,two:[9,10],type:[4,7,10,12],typic:4,uifacad:[3,12],uix:13,unavail:4,undo:10,unicodedata:12,unind:9,uninstal:10,uniqu:4,unittest:12,unknown:4,unless:10,unplug:4,unreadonli:4,unspecifi:4,until:4,updat:[0,4],upgrad:1,upload:[10,11],upper:10,uri:4,url:[4,11,13],urllib2:12,urllib:12,urlpars:12,usag:10,usb:[3,12],usbserialactiveconnect:4,usbserialconnect:4,usbserialdisconnect:4,usbserialgetdevicelist:4,usbserialgetdevicenam:4,usbserialhosten:4,usbserialread:4,usbserialreadbinari:4,usbserialreadreadi:4,usbserialwrit:4,usbserialwritebinari:4,use:[0,4,8,9,10,13],used:[4,9,12],usedrop:10,useful:[4,9,10],user:[3,4,7,8,9,10,12,13,14],userdict:12,userlist:12,usernam:9,userstr:12,uses:4,using:[1,6,7,9,10,12],usual:[10,12],util:4,uuid:[4,12],valu:[4,9],variabl:9,variou:4,veri:[9,11,13],version:[1,4],via:4,vibrat:12,video:[8,12],videos:4,view:[8,11,12,13],viewcontact:4,viewhtml:4,viewmap:4,visibl:4,voic:4,voltag:4,volum:12,wai:[1,3,9,10,13],wait:4,waitforev:4,wake:4,wakelockacquirebright:4,wakelockacquiredim:4,wakelockacquireful:4,wakelockacquireparti:4,wakelockfacad:[3,12],wakelockreleas:4,want:[0,1,3,4,5,6,8,9,10,13],warn:12,watch:8,wave:12,weakref:12,web:[13,16],webapp:[3,13],webbrows:12,webcam:4,webcamadjustqu:4,webcamfacad:[3,12],webcamstart:4,webserv:13,webview:[12,13],webviewshow:4,welcom:3,well:[7,9],were:[4,12],what:[0,6,9,10],when:[4,8,9,10,11,13],whenev:4,where:[1,4,6],which:[0,4,5,7,8,9,10,11,12,13],whichdb:12,whish:13,whole:9,why:[3,9],widget:4,wifi:4,wifidisconnect:4,wififacad:[3,12],wifigetconnectioninfo:4,wifigetscanresult:4,wifilockacquireful:4,wifilockacquirescanonli:4,wifilockreleas:4,wifireassoci:4,wifireconnect:4,wifistartscan:4,wiki:2,willing:0,without:[10,13],wonder:9,word:0,work:[4,9],world:[1,3,4,13],worri:9,wow:9,write:[1,3,4,6,10,11],written:4,wrote:9,wsgiref:[12,13],wsgirequesthandl:13,xdrlib:12,xml:[0,12],xmllib:12,xmlrpclib:12,year:4,yes:10,yet:13,you:[0,1,2,3,4,5,6,8,9,10,11,12,13],your:[0,1,3,6,9,10,13],yourself:13,youself:5,youtub:[4,8],zipfil:12,zrh:0},titles:["Contributors","Welcome to read the QPython guide!","FAQ","Getting started","AndroidFacade","Welcome contribute","Join the tester community","Android","QPython Open API","Writing \u201cHello World\u201d","QPython: How To Start","Use the best way for developing","QPython built-in Libraries","QPython\u2019s main features","\u5982\u4f55\u5728QPython \u4f7f\u7528 SSH","QPython\u6587\u6863\u4f53\u7cfb\u8bf4\u660e","\u5feb\u901f\u5f00\u59cb","\u4e2d\u6587\u7528\u6237\u5411\u5bfc"],titleterms:{"3rd":12,"\u4e2d\u6587\u7528\u6237\u5411\u5bfc":17,"\u4f60\u7684\u670d\u52a1\u5668":14,"\u4f7f\u7528":14,"\u5176\u4ed6":14,"\u5982\u4f55\u5728qpython":14,"\u5982\u4f55\u63d0\u4ea4\u6587\u6863":15,"\u5982\u4f55\u63d0\u4ea4\u7ffb\u8bd1":15,"\u5982\u4f55\u767b\u5f55\u5230\u4f60\u7684\u624b\u673a":14,"\u5982\u4f55\u8d21\u732e":17,"\u5982\u4f55\u8fdc\u7a0b\u767b\u5f55":14,"\u5feb\u901f\u5f00\u59cb":16,"\u66f4\u591a\u94fe\u63a5":17,"\u6b22\u8fce":17,"\u7528\u6237\u5f00\u53d1\u7ec4":17,"\u7f16\u7a0b\u6307\u5357":16,"\u8d21\u732e\u8005\u6307\u5357":16,"\u8d77\u6b65":17,"new":1,"qpython\u6587\u6863\u4f53\u7cfb\u8bf4\u660e":15,"qpython\u9ed1\u5ba2\u6307\u5357":16,For:1,Use:11,activityresultfacad:4,airplanermod:4,alert:4,android:7,androidfacad:4,androidhelp:12,api:[4,7,8,12],applic:8,applicationmanagerfacad:4,audio:4,author:4,barcod:4,batterymanagerfacad:4,becam:5,becom:6,best:11,bluetoothfacad:4,bright:4,brows:7,browser:11,built:[5,12],call:4,camerafacad:4,chines:1,choos:13,clipboard:4,commonintentsfacad:4,commun:[0,1,5,6,10],comput:11,consol:[7,10],contactsfacad:4,content:8,contribut:[1,5],contributor:[0,3],control:4,core:7,dashboard:10,data:4,develop:[0,3,5,11],dia:4,dialog:4,document:5,dynload:12,editor:[7,10],enterpris:7,event:5,eventfacad:4,eyesfreefacad:4,facad:4,faq:2,featur:13,feedback:6,file:7,from:[8,11],ftp:7,geo:4,get:[3,4],getinput:4,getpassword:4,gui:1,guid:[1,3],hello:9,help:5,host:4,how:[5,10],inform:4,intent:4,join:6,kivi:7,launch:5,layout:4,let:1,librari:[7,9,10,12],local:[0,5],locat:4,locationfacad:4,main:13,manag:4,media:4,mediaplayerfacad:4,mediarecorderfacad:4,member:5,mode:4,more:9,networkstatu:4,nfc:4,notifi:4,now:1,onlin:8,open:8,organ:0,organis:5,other:1,own:8,packagevers:4,phonefacad:4,phonestat:4,pip:7,preferencesfacad:4,program:[3,5,7,10],progress:4,project:5,provid:4,python:[7,12],qeditor:11,qpy:[7,8],qpyinterfacefacad:4,qpypi:8,qpython:[1,5,7,8,10,12,13,17],qrcode:7,qsl4a:7,quick:7,read:[1,4],reader:7,report:6,requir:4,ringer:4,run:8,sampl:9,screen:4,script:8,sendbroadcast:4,sendemail:4,sensormanagerfacad:4,serial:4,servic:[7,8],settingsfacad:4,share:[5,8],should:13,signalstrengthfacad:4,silent:4,sl4a:9,smsfacad:4,some:8,speechrecognitionfacad:4,sponsor:5,ssh:14,stardard:12,start:[3,4,10],startact:4,statu:4,stop:4,suggest:6,support:1,system:4,test:5,tester:6,texttospeechfacad:4,thank:1,toast:4,tonegeneratorfacad:4,tool:7,translat:5,uifacad:4,usb:4,user:[1,5],vibrat:4,video:4,view:4,volum:4,wai:11,wakelockfacad:4,webapp:7,webcamfacad:4,webview:4,welcom:[1,5],what:1,who:1,why:13,wififacad:4,world:9,write:9,your:[8,11]}}) \ No newline at end of file +Search.setIndex({"docnames": ["contributors", "document", "en/faq", "en/guide", "en/guide_androidhelpers", "en/guide_contributors", "en/guide_contributors_test", "en/guide_developers", "en/guide_extend", "en/guide_helloworld", "en/guide_howtostart", "en/guide_ide", "en/guide_libraries", "en/guide_program", "en/qpypi", "en/qpython3", "en/qpython_3x_featues", "en/qpython_ox_featues", "features/2018-09-28-dropbear-cn", "zh/contributorshowto", "zh/howtostart", "zhindex"], "filenames": ["contributors.rst", "document.rst", "en\\faq.rst", "en\\guide.rst", "en\\guide_androidhelpers.rst", "en\\guide_contributors.rst", "en\\guide_contributors_test.rst", "en\\guide_developers.rst", "en\\guide_extend.rst", "en\\guide_helloworld.rst", "en\\guide_howtostart.rst", "en\\guide_ide.rst", "en\\guide_libraries.rst", "en\\guide_program.rst", "en\\qpypi.rst", "en\\qpython3.rst", "en\\qpython_3x_featues.rst", "en\\qpython_ox_featues.rst", "features\\2018-09-28-dropbear-cn.rst", "zh\\contributorshowto.rst", "zh\\howtostart.rst", "zhindex.rst"], "titles": ["Contributors", "Welcome to read the QPython guide", "FAQ", "Getting started", "AndroidFacade", "Welcome contribute", "Join the tester community", "Android", "QPython Open API", "Writing \u201cHello World\u201d", "QPython: How To Start", "Use the best way for developing", "QPython built-in Libraries", "QPython\u2019s main features", "QPYPI", "<no title>", "QPython 3x featues", "QPython Ox featues", "\u5982\u4f55\u5728QPython \u4f7f\u7528 SSH", "QPython\u6587\u6863\u4f53\u7cfb\u8bf4\u660e", "\u5feb\u901f\u5f00\u59cb", "\u4e2d\u6587\u7528\u6237\u5411\u5bfc"], "terms": {"thank": [0, 5, 9, 10], "contribut": [0, 3, 6], "help": [0, 1, 3, 8, 10, 11, 13, 14], "qpython": [0, 2, 3, 4, 6, 9, 11, 14, 15, 18, 19, 20], "project": [0, 1, 3, 4, 6, 7, 8, 10, 11, 13, 14, 15, 16], "we": [0, 1, 2, 4, 5, 6, 8, 9, 13, 14, 15, 16, 17], "want": [0, 1, 3, 4, 5, 6, 8, 9, 10, 13, 14], "you": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16], "join": [0, 1, 3, 5, 10], "u": [0, 1, 2, 5, 6, 8, 14], "If": [0, 3, 4, 6, 8, 10, 13, 14], "pleas": [0, 1, 2, 4, 5, 6, 8, 10, 15], "email": [0, 1, 5, 8, 12], "support": [0, 2, 5, 6, 10, 11, 12, 13, 14, 15, 16], "org": [0, 2, 4, 5, 6, 8, 10, 15, 18], "river": [0, 8], "\u4e58\u7740\u8239": 0, "kyle": 0, "kersei": 0, "mae": 0, "zrh": 0, "how": [0, 1, 2, 3, 4, 8, 15], "send": [0, 1, 4, 5, 6, 8], "an": [0, 4, 8, 9, 10, 13, 14, 15, 16], "your": [0, 1, 3, 6, 9, 10, 13, 14, 15, 16], "self": [0, 4, 13], "introduct": 0, "what": [0, 6, 9, 10, 15], "kind": 0, "do": [0, 1, 5, 6, 10, 13], "lr": 0, "chines": 0, "qq": 0, "group": [0, 1, 5, 15], "540717901": [0, 21], "run": [0, 1, 2, 3, 4, 9, 10, 11, 13, 15, 16], "appreci": 0, "build": [0, 8, 13], "topic": 0, "can": [0, 4, 8, 9, 10, 13, 14, 15, 16], "invit": [0, 5], "answer": [0, 10], "ani": [0, 1, 4, 6, 8, 9], "question": [0, 10], "about": [0, 3, 4, 6, 9, 10, 15], "tell": 0, "fogapod": 0, "russian": 0, "frodo821": 0, "japanes": 0, "darciss": 0, "rehot": 0, "acc": 0, "turkish": 0, "christo": 0, "phe": 0, "french": 0, "translat": [0, 1, 3], "ar": [0, 3, 4, 6, 9, 10, 11, 12, 15, 16], "willing": 0, "qpython3": [0, 1, 4, 8, 13, 16, 21], "thi": [0, 1, 4, 5, 6, 8, 9, 10, 12, 13, 14, 15, 16], "repo": 0, "i": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18], "post": [0, 4, 10], "pull": [0, 1, 9], "request": [0, 1, 4, 13], "en": [0, 15], "merg": 0, "publish": [0, 8], "next": [0, 4, 9, 10], "updat": [0, 4], "don": [0, 8, 9, 10, 12, 13], "t": [0, 2, 4, 8, 9, 10, 12, 13, 15, 18], "us": [0, 1, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17], "git": [0, 19], "just": [0, 2, 3, 9, 10, 11, 12, 13], "word": 0, "which": [0, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17], "contain": [0, 1, 4, 9, 10, 12, 14, 15, 17], "fals": [0, 4, 9, 13], "follow": [0, 1, 2, 3, 6, 8, 9, 10, 12, 13, 15], "file": [0, 3, 4, 10, 11], "string": [0, 4, 8, 9, 12], "xml": [0, 12], "toast": [0, 8, 9, 12, 15], "And": [0, 1, 8, 9, 12, 15], "descript": 0, "intro": 0, "md": [0, 15], "script": [1, 2, 3, 4, 7, 9, 10, 11, 13, 15, 16], "engin": [1, 3, 13, 15], "python": [1, 2, 3, 8, 9, 10, 11, 13, 14, 15, 16], "android": [1, 2, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19], "devic": [1, 2, 4, 10, 13], "It": [1, 4, 7, 9, 10, 11, 13, 14, 15, 16], "interpret": [1, 10, 15, 16], "consol": [1, 3, 13, 15, 16], "editor": [1, 3, 9, 11, 15, 16, 17], "sl4a": [1, 3, 4, 7, 12, 15, 16], "librari": [1, 3, 4, 8, 13, 14, 15, 16], "ha": [1, 4, 8, 10, 11, 15], "sever": [1, 13, 14], "million": [1, 15], "world": [1, 3, 4, 13], "alreadi": [1, 15], "great": [1, 3, 5, 7], "program": [1, 9, 13, 14, 15, 16], "includ": [1, 4, 10, 14, 15, 16], "applic": [1, 3, 4, 10, 13, 15, 16], "2": [1, 3, 4, 8, 9, 12, 18, 21], "7": [1, 4, 10, 12], "3": [1, 3, 4, 12, 15, 18, 21], "newest": 1, "version": [1, 4, 15, 16], "1": [1, 3, 4, 9, 13, 15, 18, 21], "releas": [1, 4, 13], "2017": 1, "5": [1, 2, 3, 4], "12": 1, "0": [1, 4, 13, 15, 21], "29": 1, "mani": [1, 4, 10, 13, 14, 16], "amaz": [1, 13, 15], "featur": [1, 3, 4, 10, 11, 15], "upgrad": 1, "soon": [1, 5], "from": [1, 2, 3, 4, 9, 10, 12, 13], "googl": [1, 15, 16, 17], "plai": [1, 4, 9, 15, 16, 17], "amazon": 1, "appstor": [1, 15, 16, 17], "etc": [1, 4, 7, 10, 13, 14, 15, 16], "thei": [1, 12, 16], "push": [1, 3], "move": [1, 11], "forward": 1, "team": [1, 3, 10, 13], "could": [1, 2, 4, 6, 8, 10, 11, 12, 13], "ask": [1, 4, 9, 10], "qustion": 1, "twitter": 1, "fork": 1, "github": [1, 8, 14, 15, 19], "There": [1, 4, 10], "activ": [1, 3, 4, 8, 10, 15], "where": [1, 4, 6, 16], "meet": 1, "like": [1, 2, 4, 7, 8, 10, 11, 12, 13, 14], "facebook": [1, 2, 15], "gitter": 1, "chat": 1, "g": [1, 4, 6], "tester": [1, 3, 5], "stackoverflow": 1, "talk": 1, "through": [1, 3, 8, 10, 12, 13], "social": 1, "network": [1, 4], "report": [1, 3, 4, 5], "issu": [1, 4, 14, 15], "offici": 1, "contributor": 1, "step": [1, 3], "happi": 1, "hear": 1, "feedback": [1, 3, 5], "sometim": [1, 15], "some": [1, 3, 4, 6, 9, 10, 11, 13, 15, 16, 17], "bug": [1, 6, 16], "demand": 1, "mai": [1, 8, 15], "implement": [1, 13], "lack": [1, 10], "resourc": [1, 4, 10, 12, 13, 15], "so": [1, 8, 9, 11, 12, 13, 15, 16], "have": [1, 6, 8, 10, 13, 15, 16, 17], "need": [1, 2, 8, 9, 12, 13, 14], "core": [1, 3], "develop": [1, 4, 6, 7, 8, 9, 10, 12, 13, 14], "solv": 1, "higher": [1, 4], "prioriti": 1, "try": [1, 8, 9, 13], "bountysourc": 1, "servic": [1, 3, 4, 13], "get": [1, 2, 10, 12, 13, 15, 16], "start": [1, 9, 11, 12, 13], "To": [1, 3, 4, 12, 15], "write": [1, 3, 4, 6, 10, 11], "hello": [1, 3, 4, 8, 10, 13], "main": [1, 3, 7, 10, 11], "best": [1, 3], "wai": [1, 3, 9, 10, 13], "built": [1, 3, 10, 11, 13, 16], "3rd": [1, 2, 3, 4, 10, 13], "androidhelp": [1, 3, 4, 8, 9], "api": [1, 3, 13, 14, 15], "open": [1, 3, 4, 9, 10, 13, 14, 15], "onlin": [1, 3], "qsl4a": [1, 3], "pip": [1, 3, 10, 12], "quick": [1, 3], "tool": [1, 3, 10, 14], "qpy": [1, 2, 3, 12, 13, 14, 18], "io": [1, 3, 12], "enterpris": [1, 3], "test": [1, 3, 6, 10], "document": [1, 3, 10, 12, 15, 16], "launch": [1, 3, 4, 10], "local": [1, 3, 4, 10, 11, 12], "becam": [1, 3, 9], "member": [1, 3], "sponsor": [1, 3], "faq": [1, 15], "\u4e2d\u6587\u7528\u6237\u5411\u5bfc": 1, "\u6b22\u8fce": 1, "\u8d77\u6b65": 1, "\u66f4\u591a\u94fe\u63a5": 1, "\u7528\u6237\u5f00\u53d1\u7ec4": 1, "\u5982\u4f55\u8d21\u732e": 1, "other": [2, 9, 10, 13, 15, 16], "termin": [2, 18], "share": [2, 3, 4, 10, 11], "app": [2, 8, 13, 14, 15, 17, 18, 20], "root": [2, 13], "first": [2, 9, 10, 16], "sour": 2, "env": 2, "var": 2, "wiki": 2, "link": [2, 10, 15, 16], "mention": 2, "execut": [2, 4, 9, 10], "data": [2, 8, 12, 18], "bin": 2, "android5": 2, "abov": [2, 4, 10, 11], "case": [2, 4, 9], "sampl": [2, 3, 4, 8, 13, 15, 16], "pygam": 2, "even": 2, "import": [2, 4, 8, 9, 12, 13, 15], "doesn": [2, 13], "now": [2, 6, 8, 9, 10, 13, 14, 16], "consid": [2, 4, 5, 9, 15], "later": [2, 4], "": [2, 3, 4, 7, 9, 10, 11, 14, 15, 17], "progress": [2, 12, 13], "quickli": [3, 10], "dashboard": [3, 8, 18], "4": [3, 4, 15], "commun": [3, 9, 14, 15], "more": [3, 5, 10, 15, 16], "know": [3, 6, 9, 16], "why": [3, 9, 15, 16, 17], "should": [3, 4, 9, 10], "choos": [3, 4, 8, 10, 11], "qeditor": 3, "browser": [3, 4, 10, 15], "comput": [3, 14], "dynload": 3, "stardard": [3, 13], "androidfacad": [3, 12], "applicationmanagerfacad": [3, 12], "camerafacad": [3, 12], "commonintentsfacad": [3, 12], "contactsfacad": [3, 12], "eventfacad": [3, 12], "locationfacad": [3, 12], "phonefacad": [3, 12], "mediarecorderfacad": [3, 12], "sensormanagerfacad": [3, 12], "settingsfacad": [3, 12], "smsfacad": [3, 12], "speechrecognitionfacad": [3, 12], "tonegeneratorfacad": [3, 12], "wakelockfacad": [3, 12], "wififacad": [3, 12], "batterymanagerfacad": [3, 12], "activityresultfacad": [3, 12], "mediaplayerfacad": [3, 12], "preferencesfacad": [3, 12], "qpyinterfacefacad": [3, 12], "texttospeechfacad": [3, 12], "eyesfreefacad": [3, 12], "bluetoothfacad": [3, 12], "signalstrengthfacad": [3, 12], "webcamfacad": [3, 12], "uifacad": [3, 12], "usb": [3, 12, 15], "host": [3, 12, 13, 18], "serial": [3, 12], "facad": [3, 12], "content": [3, 4], "own": 3, "qpypi": [3, 10, 15, 16, 17], "onli": [3, 4, 8, 9, 15], "power": [3, 4, 14], "technologi": [3, 4], "also": [3, 4, 7, 10, 11, 13, 15], "goal": 3, "out": [3, 6, 8], "brows": 3, "qrcode": [3, 10, 17], "reader": [3, 15, 16, 17], "x": [3, 4, 15], "kivi": [3, 13], "webapp": [3, 13, 15, 16], "ftp": [3, 17], "welcom": 3, "user": [3, 4, 7, 8, 9, 10, 12, 13, 15, 16, 18], "creator": 3, "becom": [3, 5, 13], "suggest": [3, 5], "organis": 3, "event": [3, 4], "The": [4, 8, 10, 12, 13, 14], "layer": [4, 15, 16], "abridg": 4, "previous": [4, 16], "name": [4, 8, 9, 10, 13, 15, 17], "environ": [4, 8, 10, 15], "ASE": 4, "allow": [4, 7, 8, 10, 13], "creation": 4, "written": 4, "variou": 4, "languag": [4, 13], "directli": [4, 10, 11], "extend": [4, 10, 14, 15, 16], "integr": [4, 10, 14, 15, 16], "found": [4, 8, 10], "setclipboard": 4, "text": [4, 8, 9, 10, 11, 13], "put": [4, 9, 10, 13], "paramet": 4, "str": 4, "getclipboard": 4, "return": [4, 8, 9, 13], "droid": [4, 8, 9], "result": [4, 8, 9, 11], "makeint": 4, "action": [4, 8, 10], "uri": 4, "type": [4, 7, 10, 12, 15, 16], "extra": [4, 13], "categori": [4, 8], "packagenam": 4, "classnam": 4, "flag": [4, 8], "option": [4, 13], "mime": 4, "subtyp": 4, "object": [4, 9, 10, 14], "map": 4, "add": [4, 9, 10, 13], "list": [4, 10], "packag": [4, 8, 10, 13, 15, 16], "class": [4, 9, 12, 13], "int": [4, 8], "repres": 4, "code": [4, 8, 9, 10, 11, 12, 13, 14, 15, 16], "show": [4, 8, 9, 10], "getint": 4, "startactivityforresult": [4, 8], "A": [4, 10, 15, 16], "represent": 4, "startactivityforresultint": 4, "format": [4, 9], "startactivityint": 4, "wait": 4, "bool": 4, "block": 4, "until": 4, "exit": [4, 13], "broadcast": [4, 14], "sendbroadcastint": 4, "phone": [4, 11, 15, 16], "specifi": 4, "durat": 4, "millisecond": 4, "getnetworkstatu": 4, "connect": 4, "requiredvers": 4, "check": [4, 9, 15], "greater": [4, 5], "than": 4, "equal": 4, "true": [4, 8], "getpackageversioncod": 4, "getpackagevers": 4, "getconst": 4, "constant": 4, "static": 4, "final": 4, "field": [4, 9], "detail": [4, 5], "id": [4, 12, 13], "displai": [4, 9, 13], "offset": 4, "tz": 4, "sdk": 4, "download": 4, "appcach": 4, "availblock": 4, "blocksiz": 4, "blockcount": 4, "sdcard": [4, 10, 13], "log": [4, 12], "messag": [4, 9], "logcat": 4, "subject": 4, "bodi": 4, "attachmenturi": 4, "e": 4, "mail": 4, "given": 4, "recipi": 4, "comma": 4, "separ": [4, 9], "maketoast": [4, 8, 9], "short": 4, "notif": [4, 9, 10], "titl": [4, 9, 13], "queri": 4, "input": [4, 9], "box": [4, 9], "password": 4, "url": [4, 11, 13], "cancel": [4, 9], "when": [4, 8, 9, 10, 11, 13], "click": [4, 6, 9, 10, 11], "http": [4, 8, 13, 14, 15, 19], "set": [4, 8, 10, 12, 15], "none": [4, 9, 13], "getlaunchableappl": 4, "all": [4, 9, 14], "launchabl": 4, "getrunningpackag": 4, "forcestoppackag": 4, "forc": 4, "cameracapturepictur": [4, 12], "targetpath": 4, "take": [4, 13, 16], "pictur": [4, 10], "save": [4, 9, 10], "path": [4, 13], "boolean": 4, "autofocu": 4, "takepictur": 4, "indic": 4, "success": 4, "camerainteractivecapturepictur": [4, 12], "imag": [4, 8], "captur": 4, "scanbarcod": 4, "scanner": 4, "pick": 4, "contact": [4, 6, 8, 15], "valu": [4, 9], "viewmap": 4, "search": [4, 10, 11], "pizza": 4, "123": 4, "my": [4, 10], "street": 4, "viewcontact": 4, "viewhtml": 4, "html": [4, 11, 15], "pickcontact": [4, 12], "pickphon": [4, 12], "number": [4, 10, 12, 14], "select": 4, "contactsgetattribut": [4, 12], "possibl": 4, "attribut": 4, "contactsgetid": [4, 12], "contactsget": [4, 12], "contactsgetbyid": [4, 12], "contactsgetcount": [4, 12], "querycont": [4, 12], "selectionarg": 4, "order": [4, 9], "resolv": 4, "queryattribut": [4, 12], "avail": [4, 9, 10], "column": 4, "eventclearbuff": [4, 12], "clear": 4, "buffer": 4, "eventregisterforbroadcast": [4, 12], "enqueu": 4, "regist": 4, "listen": 4, "new": [4, 8, 10, 12], "signal": 4, "eventunregisterforbroadcast": [4, 12], "eventgetbrodcastcategori": [4, 12], "eventpol": [4, 12], "number_of_ev": 4, "remov": [4, 13], "oldest": 4, "n": [4, 8, 14], "sensor": [4, 15], "properti": [4, 10], "eventwaitfor": [4, 12], "eventnam": 4, "timeout": 4, "suppli": 4, "occur": 4, "eventwait": [4, 12], "eventpost": [4, 12], "queue": [4, 12], "rpcpostev": [4, 12], "receiveev": [4, 12], "waitforev": [4, 12], "starteventdispatch": [4, 12], "port": [4, 13], "up": [4, 8, 9], "socket": [4, 12], "stopeventdispatch": [4, 12], "server": [4, 13], "anymor": 4, "locationprovid": 4, "locationprovideren": 4, "enabl": [4, 15], "startloc": 4, "mindist": 4, "minupdatedist": 4, "collect": [4, 12, 14], "readloc": 4, "current": [4, 14], "stoploc": 4, "getlastknownloc": 4, "last": [4, 9], "known": 4, "gp": [4, 13], "geocod": 4, "latitud": 4, "longitud": 4, "maxresult": 4, "address": 4, "starttrackingphonest": 4, "track": 4, "state": 4, "readphonest": 4, "incom": 4, "incomingnumb": 4, "stoptrackingphonest": 4, "phonecal": 4, "phonecallnumb": 4, "phonedi": 4, "dial": 4, "phonedialnumb": 4, "getcellloc": 4, "cell": 4, "getnetworkoper": 4, "numer": [4, 14], "mcc": 4, "mnc": 4, "oper": 4, "getnetworkoperatornam": 4, "alphabet": 4, "getnetworktyp": 4, "radio": 4, "getphonetyp": 4, "getsimcountryiso": 4, "iso": 4, "countri": 4, "equival": 4, "sim": 4, "getsimoper": 4, "mobil": 4, "6": 4, "decim": [4, 12], "digit": 4, "getsimoperatornam": 4, "spn": 4, "getsimserialnumb": 4, "null": [4, 8], "unavail": 4, "getsimst": 4, "card": 4, "getsubscriberid": 4, "uniqu": 4, "subscrib": 4, "exampl": [4, 9, 13, 15, 16, 17], "imsi": 4, "gsm": 4, "getvoicemailalphatag": 4, "retriev": 4, "identifi": 4, "associ": 4, "voic": 4, "getvoicemailnumb": 4, "checknetworkroam": 4, "roam": 4, "purpos": 4, "getdeviceid": 4, "imei": 4, "meid": 4, "cdma": 4, "getdevicesoftwarevers": 4, "softwar": [4, 14], "sv": 4, "getline1numb": 4, "line": [4, 8, 9, 10, 13], "msisdn": 4, "getneighboringcellinfo": 4, "neighbor": 4, "recorderstartmicrophon": 4, "record": 4, "microphon": 4, "recorderstartvideo": 4, "videos": 4, "camera": [4, 16, 17], "maximum": 4, "session": 4, "method": [4, 13], "recorderstop": 4, "otherwis": [4, 9], "time": 4, "period": 4, "argument": 4, "160x120": 4, "320x240": 4, "352x288": 4, "640x480": 4, "800x480": 4, "recordercapturevideo": 4, "recordaudio": 4, "immedi": 4, "startinteractivevideorecord": 4, "startsensingtim": 4, "sensornumb": 4, "delaytim": 4, "poll": 4, "startsensingthreshold": 4, "ensornumb": 4, "threshold": 4, "axi": 4, "exceed": 4, "chosen": 4, "startsens": 4, "samples": 4, "stopsens": 4, "readsensor": 4, "most": [4, 9, 10, 11, 12, 13], "recent": [4, 10], "sensorsgetaccuraci": 4, "receiv": 4, "accuraci": 4, "sensorsgetlight": 4, "light": 4, "sensorsreadacceleromet": 4, "acceleromet": 4, "float": 4, "acceler": 4, "y": 4, "z": 4, "sensorsreadmagnetomet": 4, "magnet": 4, "sensorsreadorient": 4, "orient": [4, 8], "doubl": 4, "azimuth": 4, "pitch": 4, "roll": 4, "250": 4, "setscreentimeout": 4, "second": [4, 10], "origin": 4, "getscreentimeout": 4, "checkairplanemod": 4, "airplan": 4, "toggleairplanemod": 4, "toggl": 4, "off": 4, "checkringersilentmod": 4, "toggleringersilentmod": 4, "togglevibratemod": 4, "els": [4, 8, 9], "getvibratemod": 4, "getmaxringervolum": 4, "getringervolum": 4, "setringervolum": 4, "getmaxmediavolum": 4, "getmediavolum": 4, "setmediavolum": 4, "getscreenbright": 4, "backlight": 4, "between": [4, 10, 16], "255": 4, "setscreenbright": 4, "checkscreenon": 4, "level": [4, 10, 14], "smssend": [4, 12], "destinationaddress": 4, "sm": [4, 13, 15], "typic": 4, "smsgetmessagecount": [4, 12], "unreadonli": 4, "folder": 4, "default": [4, 8, 10, 12, 13], "inbox": 4, "smsgetmessageid": [4, 12], "smsgetmessag": [4, 12], "smsgetmessagebyid": [4, 12], "smsgetattribut": [4, 12], "smsdeletemessag": [4, 12], "delet": [4, 10], "wa": [4, 14, 16], "smsmarkmessageread": [4, 12], "mark": 4, "recognizespeech": [4, 12], "prompt": [4, 9], "languagemodel": 4, "recogn": 4, "speech": 4, "them": [4, 9, 10, 12], "speak": 4, "overrid": [4, 8], "expect": 4, "differ": [4, 7, 14, 15, 16, 17], "one": [4, 9, 14, 15], "java": 4, "util": 4, "getdefault": 4, "model": 4, "prefer": [4, 15], "see": [4, 9, 10, 11, 12], "recognizeint": 4, "empti": [4, 9], "cannot": [4, 14, 15], "recongn": 4, "generatedtmfton": [4, 12], "phonenumb": 4, "tonedur": 4, "gener": [4, 8, 10], "dtmf": 4, "tone": 4, "100": 4, "each": 4, "wakelockacquireful": [4, 12], "acquir": 4, "full": [4, 8], "wake": 4, "lock": 4, "cpu": 4, "keyboard": 4, "wakelockacquireparti": [4, 12], "partial": 4, "wakelockacquirebright": [4, 12], "wakelockacquiredim": [4, 12], "dim": 4, "wakelockreleas": [4, 12], "wifigetscanresult": [4, 12], "access": [4, 11, 13], "point": [4, 13], "dure": 4, "wifi": 4, "scan": 4, "wifilockacquireful": [4, 12], "wifilockacquirescanonli": [4, 12], "wifilockreleas": [4, 12], "wifistartscan": [4, 12], "initi": 4, "successfulli": 4, "checkwifist": [4, 12], "togglewifist": [4, 12], "wifidisconnect": [4, 12], "disconnect": 4, "succeed": 4, "wifigetconnectioninfo": [4, 12], "wifireassoci": [4, 12], "wifireconnect": [4, 12], "reconnect": 4, "readbatterydata": [4, 12], "batteri": [4, 15], "batterystartmonitor": [4, 12], "batterystopmonitor": [4, 12], "batterygetstatu": [4, 12], "unknown": 4, "charg": 4, "discharg": 4, "batterygethealth": [4, 12], "health": 4, "good": [4, 9, 15, 16], "overheat": 4, "dead": 4, "over": 4, "voltag": 4, "unspecifi": 4, "failur": 4, "batterygetplugtyp": [4, 12], "plug": 4, "unplug": 4, "sourc": [4, 10, 13, 14, 15], "ac": 4, "charger": 4, "batterycheckpres": [4, 12], "presenc": 4, "batterygetlevel": [4, 12], "percentag": 4, "batterygetvoltag": [4, 12], "batterygettemperatur": [4, 12], "temperatur": 4, "batterygettechnologi": [4, 12], "setresultboolean": [4, 12], "resultcod": [4, 8], "resultvalu": 4, "whenev": 4, "apk": [4, 8], "via": 4, "script_result": 4, "byte": 4, "setresultbyt": [4, 12], "setresultshort": [4, 12], "setresultchar": [4, 12], "setresultinteg": [4, 12], "setresultlong": [4, 12], "setresultfloat": [4, 12], "setresultdoubl": [4, 12], "setresultstr": [4, 12], "setresultbooleanarrai": [4, 12], "setresultbytearrai": [4, 12], "setresultshortarrai": [4, 12], "setresultchararrai": [4, 12], "setresultintegerarrai": [4, 12], "setresultlongarrai": [4, 12], "setresultfloatarrai": [4, 12], "setresultdoublearrai": [4, 12], "setresultstringarrai": [4, 12], "setresultserializ": [4, 12], "mediaplai": 4, "tag": 4, "mediaplaypaus": 4, "paus": 4, "mediaplaystart": 4, "mediaplayclos": 4, "close": [4, 10, 13], "mediaisplai": 4, "mediaplaysetloop": 4, "loop": 4, "mediaplayseek": 4, "msec": 4, "seek": 4, "posit": 4, "m": [4, 6, 9], "mediaplayinfo": 4, "mediaplaylist": 4, "load": [4, 13], "prefgetvalu": [4, 12], "kei": [4, 9], "filenam": 4, "desir": 4, "defin": [4, 13], "prefputvalu": [4, 12], "prefgetal": [4, 12], "executeqpi": [4, 12], "absolut": 4, "ttsspeak": [4, 12], "tt": 4, "ttsisspeak": [4, 12], "bluetoothactiveconnect": [4, 12], "bluetooth": [4, 13, 15, 16, 17], "bluetoothwritebinari": [4, 12], "base64": [4, 12], "connid": 4, "encod": [4, 12], "sent": 4, "bluetoothreadbinari": [4, 12], "buffers": 4, "chunk": [4, 12], "4096": 4, "bluetoothconnect": [4, 12], "uuid": [4, 12], "establish": 4, "fail": 4, "pass": [4, 13], "here": [4, 8, 9, 10, 15], "must": 4, "match": 4, "present": 4, "discov": 4, "bluetoothaccept": [4, 12], "accept": 4, "long": [4, 10], "ever": 4, "bluetoothmakediscover": [4, 12], "discover": 4, "300": 4, "bluetoothwrit": [4, 12], "ascii": 4, "charact": 4, "bluetoothreadreadi": [4, 12], "bluetoothread": [4, 12], "bluetoothreadlin": [4, 12], "bluetoothgetremotedevicenam": [4, 12], "remot": 4, "For": [4, 6, 13, 15, 17], "target": [4, 13], "bluetoothgetlocalnam": [4, 12], "visibl": 4, "bluetoothsetlocalnam": [4, 12], "bluetoothgetscanmod": [4, 12], "dongl": 4, "disabl": 4, "non": 4, "bluetoothgetconnecteddevicenam": [4, 12], "checkbluetoothst": [4, 12], "togglebluetoothst": [4, 12], "confirm": 4, "chang": 4, "bluetoothstop": [4, 12], "bluetoothgetlocaladdress": [4, 12], "hardwar": [4, 15], "adapt": 4, "bluetoothdiscoverystart": [4, 12], "discoveri": 4, "process": [4, 8], "error": [4, 13, 16], "bluetoothdiscoverycancel": [4, 12], "bluetoothisdiscov": [4, 12], "starttrackingsignalstrength": [4, 12], "strength": 4, "readsignalstrength": [4, 12], "gsm_signal_strength": 4, "stoptrackingsignalstrength": [4, 12], "webcamstart": [4, 12], "resolutionlevel": 4, "jpegqual": 4, "mjpeg": 4, "stream": 4, "tupl": 4, "increas": 4, "resolut": 4, "10": 4, "20": 4, "webcam": [4, 15], "bind": 4, "webcamadjustqu": [4, 12], "adjust": 4, "qualiti": 4, "while": [4, 15], "camerastartpreview": [4, 12], "filepath": [4, 13], "preview": [4, 11], "throw": 4, "store": [4, 15], "jpeg": 4, "camerastoppreview": [4, 12], "dialogcreateinput": 4, "defaulttext": 4, "inputtyp": 4, "creat": [4, 6, 9, 10, 16], "insert": [4, 13], "ie": 4, "dialogcreatepassword": 4, "dialoggetinput": [4, 8, 9], "dialoggetpassword": 4, "dialogcreateseekbar": 4, "bar": [4, 9, 10], "50": 4, "dialogcreatetimepick": 4, "hour": 4, "minut": 4, "is24hour": 4, "picker": 4, "miut": 4, "dialogcreatedatepick": 4, "year": 4, "month": 4, "dai": 4, "date": 4, "1970": 4, "struct": [4, 12], "json": [4, 9, 12], "role": 4, "master": [4, 15], "slave": 4, "stat": [4, 12], "ok": [4, 9], "cancl": 4, "dialogcreatenfcbeammast": 4, "beam": 4, "nfcbeammessag": 4, "dialogcreatenfcbeamslav": 4, "dialogcreatespinnerprogress": 4, "maximumprogress": 4, "spinner": 4, "maximunprogress": 4, "dfault": 4, "dialogsetcurrentprogress": 4, "dialogsetmaxprogress": 4, "max": 4, "dialogcreatehorizontalprogress": 4, "horizont": 4, "dialogcreatealert": 4, "dialogsetpositivebuttontext": 4, "button": [4, 9, 10, 11, 13], "dialogsetnegativebuttontext": 4, "neg": 4, "dialogsetneutralbuttontext": 4, "dialogsetitem": 4, "item": 4, "dialogsetsinglechoiceitem": 4, "index": [4, 10], "dialogsetmultichoiceitem": 4, "multipl": [4, 15, 16], "choic": 4, "addcontextmenuitem": 4, "label": [4, 8], "eventdata": 4, "context": [4, 8], "menu": [4, 10], "addoptionsmenuitem": 4, "iconnam": 4, "icon": [4, 10], "com": [4, 10, 14, 15, 16, 17, 19], "refer": [4, 14], "r": 4, "drawabl": 4, "dialoggetrespons": 4, "respons": 4, "dialoggetselecteditem": 4, "dialogdismiss": 4, "dismiss": 4, "dialogshow": 4, "fullshow": 4, "fulldismiss": 4, "fullqueri": 4, "fullscreen": [4, 13], "fullquerydetail": 4, "specif": 4, "widget": 4, "fullsetproperti": 4, "fullsetlist": 4, "attach": 4, "fullkeyoverrid": 4, "keycod": 4, "webviewshow": 4, "andoroid": 4, "demonstr": 4, "youtub": [4, 8], "firmwar": 4, "api14": 4, "were": [4, 12], "handl": [4, 8], "kernel": 4, "heard": 4, "make": [4, 5, 6, 9, 10, 13, 15], "dev": 4, "ttyusb0": 4, "In": [4, 9, 13], "doe": [4, 9, 13, 15], "abl": [4, 7], "o": [4, 12], "grab": 4, "info": 4, "probabl": 4, "work": [4, 9, 15, 16], "cdc": 4, "ftdi": 4, "arduino": 4, "2012": 4, "09": 4, "78k0f0730": 4, "rl78": 4, "tragi": 4, "bio": 4, "board": 4, "m78k0f0730": 4, "24": 4, "pl2303": 4, "devci": 4, "kuri65536": 4, "commit": 4, "usbserialgetdevicelist": 4, "usbserialdisconnect": 4, "usbserialactiveconnect": 4, "v": 4, "usbserialwritebinari": 4, "usbserialreadbinari": 4, "usbserialconnect": 4, "hash": 4, "usbserialhosten": 4, "acces": 4, "usbserialwrit": 4, "usbserialreadreadi": 4, "guarante": [4, 14], "usbserialread": 4, "usbserialgetdevicenam": 4, "hope": 5, "introduc": [5, 10], "youself": 5, "briefli": 5, "part": [5, 7, 13], "Then": [5, 9, 11], "collabor": 5, "come": 5, "keep": [6, 13], "interest": 6, "guid": [6, 7, 15], "better": [6, 7], "offer": [6, 7, 9, 10, 13], "after": [6, 9, 10, 11, 16], "readi": 6, "find": [6, 8, 10, 15], "cool": 6, "idea": [6, 10], "let": [6, 8, 9, 10, 13, 15, 16], "down": [6, 10], "inform": [6, 12, 13], "common": [7, 13], "interact": 7, "function": [7, 9, 12, 13, 14], "folk": 7, "being": 7, "besid": [7, 10, 11, 13], "three": [7, 9], "mode": [7, 12, 13], "expans": 7, "abil": [7, 10], "well": [7, 9, 14], "aim": [7, 15, 16], "deliveri": 7, "maintain": [7, 10], "paid": 7, "opensourc": 7, "outsid": 8, "mpyapi": 8, "definit": 8, "seem": 8, "qpylib": 8, "qpy_run_with_shar": 8, "screenorient": 8, "configchang": 8, "keyboardhidden": 8, "export": 8, "intent": [8, 12, 15], "filter": 8, "launcher": [8, 16, 17], "view": [8, 11, 12, 13], "browsabl": 8, "scheme": 8, "mimetyp": [8, 12], "plain": [8, 11], "sy": [8, 13], "argv": 8, "watch": 8, "demo": 8, "video": [8, 12], "call": [8, 9, 12, 16], "extplgplusnam": 8, "setclassnam": 8, "setact": 8, "bundl": 8, "mbundl": 8, "putstr": 8, "myappid": 8, "act": 8, "onpyapi": 8, "onqpyexec": 8, "param": 8, "pycod": 8, "putextra": 8, "script_exec_pi": 8, "callabck": 8, "onactivityresult": 8, "protect": 8, "void": 8, "requestcod": 8, "getextra": 8, "getstr": 8, "maketext": 8, "length_short": 8, "checkout": 8, "product": 8, "plugin": 8, "tasker": [8, 16, 17], "instal": [8, 10, 13, 14, 15], "requir": [8, 12, 13, 15, 17], "pre": [8, 10, 13], "compil": [8, 10, 12, 13], "sure": 8, "couldn": 8, "independ": 8, "beta": 8, "challeng": 8, "thing": 8, "simpl": [8, 9], "busi": 8, "propos": 8, "bit": 9, "familiar": 9, "our": 9, "obvious": [9, 10], "helloworld": 9, "py": [9, 10, 11, 12, 13], "enter": [9, 10], "usernam": 9, "No": 9, "wonder": 9, "similar": 9, "pop": 9, "screen": [9, 10, 12, 15], "screenshot": [9, 10, 13], "top": [9, 10], "anywai": 9, "begin": 9, "modul": 9, "encapsul": 9, "almost": 9, "interfac": [9, 10, 13], "statement": 9, "least": 9, "claim": 9, "read": [9, 12], "By": [9, 10, 13], "re": [9, 12], "go": [9, 10], "compat": 9, "replac": [9, 15], "instead": [9, 10], "further": 9, "except": [9, 13, 15], "importerror": 9, "actual": 9, "necessari": 9, "rpc": 9, "small": 9, "greet": 9, "dialog": [9, 12], "edit": [9, 10, 11], "hello1": 9, "respond": 9, "think": 9, "reaction": 9, "That": 9, "wrote": 9, "But": 9, "print": [9, 13], "oop": 9, "noth": 9, "worri": 9, "output": 9, "tap": [9, 10], "As": [9, 10], "two": [9, 10, 15], "doc": 9, "still": 9, "mean": [9, 15, 16, 17], "wow": 9, "logic": 9, "happen": 9, "leav": [9, 10], "blank": 9, "variabl": 9, "everi": 9, "real": 9, "anoth": [9, 10], "shown": 9, "fifth": 9, "hei": 9, "veri": [9, 11, 13], "polit": 9, "toolbar": [9, 10], "indent": [9, 10], "unind": 9, "space": 9, "backspac": 9, "describ": 9, "anyth": 9, "left": [9, 10], "press": 9, "both": 9, "treat": 9, "contan": 9, "meanin": 9, "whole": 9, "dmych": [9, 10], "draft": [9, 10], "hi": [9, 10], "blog": [9, 10], "usual": [10, 12], "its": 10, "big": 10, "logo": 10, "center": 10, "qr": [10, 15, 16], "funni": 10, "brand": 10, "distribut": 10, "libari": 10, "pure": [10, 13], "mainli": [10, 15, 16], "pip_consol": 10, "kit": 10, "swipe": 10, "pic": [10, 11], "me": 10, "much": 10, "comfort": 10, "ye": 10, "regular": 10, "feel": 10, "free": [10, 15], "comun": 10, "nice": 10, "rest": 10, "without": [10, 13], "system": [10, 12, 15], "compon": [10, 14], "uninstal": 10, "page": [10, 13], "lead": 10, "chanc": 10, "shortcut": 10, "desktop": 10, "said": 10, "befor": [10, 16], "ordinari": 10, "peopl": [10, 13, 14], "explor": 10, "consult": 10, "syntax": [10, 11], "command": [10, 12], "addit": 10, "plu": 10, "usedrop": 10, "upper": 10, "corner": 10, "switch": 10, "note": [10, 13, 15], "unless": 10, "explicitli": 10, "alwai": 10, "reach": 10, "cap": 10, "modifi": 10, "highlight": [10, 11], "though": 10, "easili": [10, 13], "control": [10, 12, 15], "critic": 10, "goe": 10, "undo": 10, "forget": 10, "estens": 10, "sinc": 10, "onc": 10, "singl": 10, "hipip": 10, "qpyplu": 10, "directori": 10, "upload": [10, 11], "renam": 10, "depend": [10, 14], "same": [10, 12], "numpi": [10, 15, 16], "copi": [10, 12], "lib": [10, 12], "python2": [10, 17], "site": [10, 12], "notic": 10, "mix": [10, 13], "c": [10, 13, 14], "redirect": 10, "somth": 10, "usag": [10, 15], "lua": 11, "javascript": 11, "shell": 11, "keyword": [11, 12], "snippet": 11, "convient": 11, "qedit4web": 11, "pc": [11, 13], "laptop": [11, 13], "below": [11, 14], "With": [11, 13, 15], "conveni": [11, 15, 16], "manual": 12, "automat": 12, "_codecs_cn": 12, "_codecs_hk": 12, "_codecs_iso2022": 12, "_codecs_jp": 12, "_codecs_kr": 12, "_codecs_tw": 12, "_csv": 12, "_ctype": 12, "_ctypes_test": 12, "_hashlib": 12, "_heapq": 12, "_hotshot": 12, "_io": 12, "_json": 12, "_lsprof": 12, "_multibytecodec": 12, "_sqlite3": 12, "_ssl": 12, "_testcapi": 12, "audioop": 12, "future_builtin": 12, "grp": 12, "mmap": 12, "syslog": 12, "termio": 12, "unicodedata": 12, "basehttpserv": 12, "binhex": 12, "fnmatch": 12, "mhlib": 12, "quopri": 12, "sysconfig": 12, "bastion": 12, "bisect": 12, "formatt": 12, "mimetool": 12, "random": [12, 14], "tabnanni": 12, "cgihttpserv": 12, "bsddb": 12, "fpformat": 12, "tarfil": 12, "configpars": 12, "cprofil": 12, "fraction": 12, "mimifi": 12, "repr": [12, 13], "telnetlib": 12, "cooki": 12, "calendar": 12, "ftplib": 12, "modulefind": 12, "rexec": 12, "tempfil": 12, "docxmlrpcserv": 12, "cgi": 12, "functool": 12, "multifil": 12, "rfc822": 12, "textwrap": 12, "htmlparser": 12, "cgitb": 12, "genericpath": 12, "mutex": 12, "rlcomplet": 12, "getopt": 12, "netrc": 12, "robotpars": 12, "thread": [12, 13], "mimewrit": 12, "cmd": 12, "getpass": 12, "runpi": 12, "timeit": 12, "gettext": 12, "nntplib": 12, "sched": 12, "toaiff": 12, "simplehttpserv": 12, "codec": 12, "glob": 12, "ntpath": 12, "token": 12, "simplexmlrpcserv": 12, "codeop": 12, "gzip": 12, "nturl2path": 12, "sgmllib": 12, "socketserv": 12, "hashlib": 12, "sha": 12, "trace": 12, "stringio": 12, "colorsi": 12, "heapq": 12, "opcod": 12, "shelv": 12, "traceback": 12, "userdict": 12, "hmac": 12, "optpars": 12, "shlex": 12, "tty": 12, "userlist": 12, "compileal": 12, "hotshot": 12, "shutil": 12, "userstr": 12, "htmlentitydef": 12, "os2emxpath": 12, "unittest": 12, "_lwpcookiejar": 12, "config": 12, "htmllib": 12, "smtpd": 12, "urllib": 12, "_mozillacookiejar": 12, "contextlib": 12, "httplib": 12, "pdb": 12, "smtplib": 12, "urllib2": 12, "__future__": 12, "cookielib": 12, "ihook": 12, "pickl": 12, "sndhdr": 12, "urlpars": 12, "__phello__": 12, "foo": 12, "imaplib": 12, "pickletool": 12, "_abcol": 12, "copy_reg": 12, "imghdr": 12, "pipe": 12, "sqlite3": 12, "uu": 12, "_pyio": 12, "csv": 12, "importlib": 12, "pkgutil": 12, "sre": 12, "_strptime": 12, "ctype": 12, "imputil": 12, "plat": 12, "linux4": 12, "sre_compil": 12, "warn": 12, "_threading_loc": 12, "dbhash": 12, "inspect": 12, "platform": 12, "sre_const": 12, "wave": 12, "_weakrefset": 12, "plistlib": 12, "sre_pars": 12, "weakref": 12, "abc": 12, "difflib": 12, "popen2": 12, "ssl": [12, 16], "webbrows": 12, "aifc": 12, "dircach": 12, "poplib": 12, "whichdb": 12, "antigrav": 12, "di": 12, "tk": 12, "posixfil": 12, "statvf": 12, "wsgiref": [12, 13], "anydbm": 12, "distutil": 12, "linecach": 12, "posixpath": 12, "argpars": 12, "doctest": 12, "pprint": 12, "stringold": 12, "xdrlib": 12, "ast": 12, "dumbdbm": 12, "profil": 12, "stringprep": 12, "asynchat": 12, "dummy_thread": 12, "macpath": 12, "pstat": 12, "xmllib": 12, "asyncor": 12, "macurl2path": 12, "pty": 12, "subprocess": 12, "xmlrpclib": 12, "atexit": 12, "mailbox": 12, "py_compil": 12, "sunau": 12, "zipfil": 12, "audiodev": 12, "mailcap": 12, "pyclbr": 12, "sunaudio": 12, "filecmp": 12, "markupbas": 12, "pydoc": 12, "symbol": 12, "bdb": 12, "fileinput": 12, "md5": 12, "pydoc_data": 12, "symtabl": 12, "beautifulsoup": 12, "pkg_resourc": 12, "plyer": 12, "bottl": [12, 13, 20], "qpythoninit": 12, "setuptool": 12, "simplifi": 12, "hepler": 12, "deriv": 12, "clipboard": [12, 15], "startact": [12, 15], "sendbroadcast": [12, 15], "vibrat": [12, 15, 16, 17], "networkstatu": [12, 15], "packagevers": [12, 15], "sendemail": [12, 15], "getinput": 12, "getpassword": 12, "notifi": [12, 15], "manag": [12, 15], "barcod": [12, 15], "provid": [12, 14, 15, 16], "locat": [12, 15, 16], "geo": 12, "phonestat": 12, "dia": 12, "audio": 12, "stop": [12, 13], "airplanermod": 12, "ringer": [12, 15], "silent": 12, "media": [12, 15], "volum": [12, 15], "bright": [12, 15], "nfc": [12, 13, 15, 16, 17], "alert": 12, "layout": 12, "webview": [12, 13], "statu": 12, "author": 12, "smartphon": 13, "essenti": 13, "technic": [13, 15, 16], "assit": 13, "flexiabl": 13, "complet": 13, "job": 13, "effici": 13, "complex": 13, "experi": 13, "yourself": 13, "permiss": [13, 15], "runtim": [13, 15], "gui": [13, 15], "solut": 13, "rapid": 13, "innov": 13, "multi": 13, "touch": 13, "opengl2": 13, "header": 13, "uix": 13, "testapp": 13, "def": 13, "opengl": 13, "driver": 13, "shoul": 13, "declar": 13, "jniu": 13, "didn": 13, "yet": 13, "plan": 13, "futur": 13, "recommend": 13, "easi": [13, 15, 16], "accomplish": 13, "ui": 13, "advantag": 13, "fast": [13, 14], "strong": 13, "front": 13, "web": [13, 20], "background": [13, 15, 16], "django": 13, "flask": 13, "framework": 13, "ip": 13, "localhost": 13, "8080": 13, "previou": 13, "titlebar": 13, "hide": 13, "127": 13, "serveradapt": 13, "debug": 13, "rout": 13, "static_fil": 13, "templat": 13, "mywsgirefserv": 13, "handler": 13, "simple_serv": 13, "make_serv": 13, "wsgirequesthandl": 13, "quiet": 13, "quiethandl": 13, "log_request": 13, "arg": 13, "kw": 13, "handler_class": 13, "serve_forev": 13, "stderr": 13, "shutdown": 13, "server_clos": 13, "altern": 13, "caus": 13, "bad": 13, "fd": 13, "qpyhttpd": 13, "IN": [13, 15, 16], "router": 13, "__exit": 13, "head": 13, "global": 13, "asset": 13, "server_stat": 13, "home": 13, "h1": 13, "href": 13, "reload": 13, "ex": 13, "webserv": 13, "whish": 13, "serv": 13, "homepag": 13, "q": [13, 15, 16], "pelas": 13, "qscript": 13, "qpyapp": 13, "capabl": 14, "becaus": [14, 15, 16, 17], "architectur": 14, "pypi": 14, "rais": 14, "qpysl4a": [14, 15, 16], "calcount": 14, "high": 14, "ai": 14, "learn": [14, 15, 16], "base": 14, "relat": 14, "theano": 14, "kera": 14, "focu": 14, "practis": 14, "fundament": 14, "scientif": [14, 15, 16], "dimension": 14, "arrai": 14, "sophist": 14, "basic": 14, "linear": 14, "algebra": 14, "fourier": 14, "transform": 14, "fortran": 14, "distinct": 14, "entiti": 14, "ecosystem": 14, "who": 14, "stack": 14, "confer": 14, "dedic": 14, "euroscipi": 14, "routin": 14, "3l": 15, "qpyi": 15, "worldwid": 15, "scenario": 15, "branch": [15, 16, 17], "ox": [15, 16], "3x": 15, "learner": [15, 16], "friendli": [15, 16], "beginn": [15, 16], "experienc": [15, 16], "advanc": [15, 16], "under": 15, "offlin": [15, 16], "internet": [15, 16, 17], "transfer": [15, 16], "custom": [15, 16], "repositori": [15, 16], "prebuilt": [15, 16], "wheel": [15, 16], "enhanc": [15, 16], "scipi": [15, 16], "matplotlib": [15, 16], "scikit": [15, 16], "FOR": [15, 16], "IT": [15, 16], "drive": [15, 16], "THE": [15, 16], "WITH": [15, 16], "tonegener": 15, "wakelock": 15, "wifilock": 15, "mediaplay": 15, "third": 15, "speechrecongit": 15, "texttospeech": 15, "carmer": 15, "signalstrength": 15, "blob": 15, "readm": 15, "read_sm": [15, 16, 17], "send_sm": [15, 16, 17], "call_phon": [15, 16, 17], "AND": [15, 16], "THAT": 15, "ith": 15, "THESE": 15, "WILL": [15, 16], "NOT": [15, 16], "IF": 15, "whether": 15, "relev": 15, "profession": 15, "www": 15, "strict": [15, 16, 17], "distinguish": 15, "l": [15, 16, 17], "limit": [15, 16, 17], "sensit": [15, 16, 17], "correspond": 15, "right": 15, "qpython_3x_featu": 15, "look": 16, "restart": 16, "ad": 16, "qsl4ahelp": 16, "qslaapp": 16, "rearrang": 16, "fix": 16, "wake_lock": [16, 17], "access_network_st": [16, 17], "change_network_st": [16, 17], "access_wifi_st": [16, 17], "change_wifi_st": [16, 17], "receive_boot_complet": [16, 17], "flashlight": [16, 17], "receive_user_pres": [16, 17], "vend": [16, 17], "bill": [16, 17], "install_shortcut": [16, 17], "uninstall_shortcut": [16, 17], "read_external_storag": [16, 17], "write_external_storag": [16, 17], "read_media_storag": [16, 17], "access_coarse_loc": [16, 17], "access_fine_loc": [16, 17], "foreground_servic": [16, 17], "bluetooth_admin": [16, 17], "record_audio": [16, 17], "access_notification_polici": [16, 17], "kill_background_process": [16, 17], "net": [16, 17], "dinglisch": [16, 17], "permission_run_task": [16, 17], "access_superus": [16, 17], "receive_sm": [16, 17], "write_sm": [16, 17], "read_phone_st": [16, 17], "read_call_log": [16, 17], "process_outgoing_cal": [16, 17], "read_contact": [16, 17], "get_account": [16, 17], "system_alert_window": [16, 17], "strategi": 17, "python3": 17, "basi": 17, "cours": 17, "\u8fd1\u6765\u6084\u6084\u66f4\u65b0\u4e86\u4e0d\u5c11\u597d\u73a9\u7684\u5305": 18, "\u4f46\u662f\u6211\u6700\u559c\u6b22\u7684\u662f\u4eca\u5929\u4ecb\u7ecd\u7684\u8fd9\u4e2a\u7279\u6027": 18, "\u521a\u88ab\u96c6\u6210\u5230qpython\u4e2d\u7684dropbear": 18, "ssh\u5de5\u5177": 18, "dropbear": 18, "\u662f\u5f88\u591a\u5d4c\u5165\u5f0flinux\u7cfb\u7edf\u9996\u9009\u7684ssh\u5de5\u5177": 18, "\u7ed3\u5408qpython": 18, "\u80fd\u8ba9\u4f60\u65b9\u4fbf\u5730\u8fdb\u884c\u7f16\u7a0b\u6765\u81ea\u52a8\u7ba1\u7406\u670d\u52a1\u5668\u6216\u4f60\u7684\u624b\u673a": 18, "\u957f\u6309termin": 18, "\u9009\u62e9shell": 18, "shell\u4e2d\u8f93\u5165ssh": 18, "\u5df2\u7ecf\u767b\u5f55\u5230\u4e86\u8fdc\u7aef\u670d\u52a1\u5668": 18, "\u9664\u4e86\u4ece\u624b\u673a\u4e0a\u767b\u5f55\u670d\u52a1\u5668\u5916": 18, "\u4f60\u8fd8\u53ef\u4ee5\u767b\u5f55\u5230\u4f60\u7684\u624b\u673a": 18, "\u8fd9\u4e2a\u529f\u80fd\u9002\u5408\u9ad8\u7ea7\u73a9\u5bb6": 18, "\u56e0\u4e3a\u4e00\u4e9b\u6743\u9650\u7684\u95ee\u9898": 18, "\u5728\u624b\u673a\u4e0a\u5f00sshd\u670d\u52a1\u9700\u8981root\u6743\u9650": 18, "\u7b2c\u4e00\u6b21\u4f7f\u7528": 18, "\u9700\u8981\u4eceshell": 18, "terminal\u4e2d\u8fdb\u884c\u4e0b\u521d\u59cb\u5316\u64cd\u4f5c": 18, "su": 18, "\u5207\u6362\u4e3aroot\u7528\u6237": 18, "mkdir": 18, "\u5728": 18, "files\u4e0b\u521b\u5efadropbear\u76ee\u5f55": 18, "\u521d\u59cb\u5316\u5bf9\u5e94\u7684kei": 18, "dbkei": 18, "dss": 18, "f": 18, "dropbear_dss_host_kei": 18, "rsa": 18, "dropbear_rsa_host_kei": 18, "ecdsa": 18, "dropbear_ecdsa_host_kei": 18, "\u5b8c\u6210\u4e0a\u8ff0\u6b65\u9aa4\u4e4b\u540e": 18, "\u5373\u53ef\u542f\u52a8sshd\u670d\u52a1": 18, "\u542f\u52a8sshd\u670d\u52a1": 18, "sshd": 18, "p": 18, "8088": 18, "db": 18, "pid": 18, "\u524d\u53f0\u542f\u52a8": 18, "\u7aef\u53e3": 18, "\u63a5\u4e0b\u6765\u4ece\u4f60\u7684\u7535\u8111\u4e2d\u5c31\u53ef\u4ee5\u767b\u5f55\u4e86\u4f60\u7684\u624b\u673a\u4e86\u9ed8\u8ba4\u5bc6\u7801\u5c31\u662f\u6211\u4eec\u7684app\u540d\u5b57": 18, "\u4f60\u61c2\u5f97": 18, "\u4ece\u4f60\u7684\u7b14\u8bb0\u672c\u767b\u5f55\u624b\u673a": 18, "\u53e6\u5916\u8fd8\u652f\u6301\u4e0b\u9762\u9ad8\u7ea7\u7279\u6027": 18, "\u652f\u6301\u8bc1\u4e66\u767b\u5f55": 18, "\u501f\u52a9dbconvert": 18, "\u53ef\u4ee5\u628a\u4f60\u7684openssh\u8bc1\u4e66\u8f6c\u6362\u8fc7\u6765": 18, "\u5b58\u5230\u5bf9\u5e94\u7684\u76ee\u5f55": 18, "\u7528": 18, "id_priv": 18, "\u6307\u5b9a\u8bc1\u4e66\u5373\u53ef": 18, "\u652f\u6301": 18, "authorized_kei": 18, "\u53ea\u9700\u8981\u628a\u8be5\u6587\u4ef6\u4fdd\u5b58\u5230\u4f60\u7684dropbear\u76ee\u5f55\u4e0b": 18, "\u5373\u53ef": 18, "scp": 18, "\u8fdc\u7a0b\u62f7\u8d1d\u6587\u4ef6": 18, "\u540e\u7eed\u8ba1\u5212\u79fb\u690d\u66f4\u591a\u6709\u7528\u7684\u5de5\u5177": 18, "\u4e0d\u60f3\u73a9\u4e86\u8bb0\u5f97kill\u6389sshd\u8fdb\u7a0b": 18, "\u4e4b\u524d\u9700\u8981\u6307\u5b9apid\u6587\u4ef6\u5c31\u662f\u65b9\u4fbf\u4f60\u83b7\u5f97": 18, "kill": 18, "cat": 18, "\u83b7\u5f97qpython": 18, "\u6587\u6863\u4f53\u7cfb\u5206\u4e3a": 19, "\u82f1\u6587": 19, "\u4e2d\u6587": 19, "\u4e24\u90e8\u5206": 19, "\u6211\u4eec\u52aa\u529b\u4fdd\u6301\u4e24\u79cd\u8bed\u8a00\u5bf9\u5e94\u5185\u5bb9\u7684\u51c6\u786e\u548c\u540c\u6b65": 19, "\u5176\u4e2d\u5185\u5bb9\u5176\u4e2d\u53c8\u5206\u4e3a": 19, "\u5feb\u901f\u5f00\u59cb": [19, 21], "\u4f7f\u7528\u4e0a\u7684\u5e2e\u52a9": 19, "\u7f16\u7a0b\u6307\u5357": [19, 21], "\u4e3b\u8981\u662f\u7528qpython\u6765\u8fdb\u884c\u7f16\u7a0b\u548c\u5f00\u53d1\u7684\u6307\u5357": 19, "qpython\u9ed1\u5ba2\u6307\u5357": [19, 21], "\u6df1\u5165\u6298\u817e\u7684\u6307\u5bfc": 19, "\u8d21\u732e\u8005\u6307\u5357": [19, 21], "qpython\u8d21\u732e\u8005\u6307\u5357": 19, "\u5206\u4e3a\u5728qpython": 19, "team\u5185\u7684": 19, "\u548c\u4ee5\u5916\u7684": 19, "\u6587\u6863\u975e\u5e38\u91cd\u8981": 19, "\u6211\u4eec\u7528sphinx\u6765\u7ec4\u7ec7\u6587\u6863": 19, "\u5e76\u4e14\u6587\u6863\u4f1a\u901a\u8fc7github": 19, "page\u529f\u80fd\u76f4\u63a5\u63a8\u5230qpython": 19, "org\u7f51\u7ad9\u4e2d": 19, "\u5728\u60f3\u8981\u8d21\u732eqpython\u6587\u6863\u4e4b\u524d\u4ed4\u7ec6\u9605\u8bfb\u6211\u4eec\u7684\u6307\u5357": 19, "clone": 19, "\u8fdb\u5165\u5230": 19, "\u9879\u76ee\u7684qpython": 19, "docs\u76ee\u5f55\u4e2d": 19, "\u6309\u7167sphinx\u89c4\u5219\u7f16\u8f91source\u4e2d\u7684\u6587\u4ef6\u5373\u53ef": 19, "\u6700\u540ecd\u5230qpython": 19, "docs\u4e2d\u5e76\u8fd0\u884cbuild": 19, "sh": 19, "\u6253\u5f00\u6d4f\u89c8\u5668\u6253\u5f00\u672c\u5730\u6587\u4ef6\u68c0\u67e5": 19, "\u5982\u679c\u68c0\u67e5\u65e0\u95ee\u9898\u5219\u53ef\u4ee5\u63d0\u4ea4": 19, "\u7136\u540e\u6d4f\u89c8qpython": 19, "org\u5373\u53ef\u770b\u5230\u6700\u65b0\u7684\u66f4\u65b0": 19, "qpython\u662f\u4e00\u4e2a\u652f\u6301\u591a\u8bed\u8a00\u7684\u5e94\u7528": 19, "\u4f60\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u6765\u63d0\u4ea4\u5bf9\u5e94\u56fd\u5bb6\u7684\u7ffb\u8bd1": 19, "\u4f7f\u7528\u8bf4\u660e": 20, "\u4f60\u597d": 20, "\u4e16\u754c": 20, "\u5f00\u53d1": 20, "\u5feb\u901f\u4e86\u89e3": 20, "\u7f16\u7a0b\u5411\u5bfc": 20, "\u9ed1\u5ba2": 20, "\u6b22\u8fce\u52a0\u5165": 20, "\u56e2\u961f": 20, "qpython\u6587\u6863\u4f53\u7cfb\u8bf4\u660e": [20, 21], "\u5982\u4f55\u63d0\u4ea4\u6587\u6863": [20, 21], "\u5982\u4f55\u63d0\u4ea4\u7ffb\u8bd1": [20, 21], "\u7684\u6700\u65b0\u7248\u672c1": 21, "\u5df2\u7ecf\u53d1\u5e03": 21, "\u5b83\u5305\u542b\u4e86\u8bb8\u591a\u60ca\u8273\u7684\u7279\u6027": 21, "\u8bf7\u4ece\u5e94\u7528\u5e02\u573a\u5b89\u88c5": 21, "\u5e38\u89c1\u95ee\u9898": 21, "\u5728\u767e\u5ea6\u8d34\u5427\u91cc\u8ba8\u8bba": 21, "\u5728\u5fae\u535a\u95ee\u6211\u4eec\u95ee\u9898": 21, "\u7ed9\u6211\u4eec\u53d1\u90ae\u4ef6": 21, "\u62a5\u544a\u95ee\u9898": 21, "\u8bf7\u52a0\u5165": 21, "\u7528\u6237\u5f00\u53d1\u8005\u7ec4": 21, "\u6765\u548c\u5168\u4e16\u754c\u7684": 21, "\u7528\u6237\u4e00\u5757\u6765\u73a9\u8f6cqpython": 21, "\u52a0\u5165qpython": 21, "qq\u7ec4": 21, "q\u7fa4": 21, "\u6765\u548c\u4e2d\u56fd\u6d3b\u8dc3\u7684qpython": 21, "\u7528\u6237\u4e00\u8d77\u73a9\u8f6c": 21, "\u60f3\u6210\u4e3a": 21, "\u7684\u8d21\u732e\u8005\u4e48": 21, "\u8bf7": 21}, "objects": {"": [[4, 0, 1, "", "NFCBeamMessage"], [4, 0, 1, "", "addContextMenuItem"], [4, 0, 1, "", "addOptionsMenuItem"], [4, 0, 1, "", "batteryCheckPresent"], [4, 0, 1, "", "batteryGetHealth"], [4, 0, 1, "", "batteryGetLevel"], [4, 0, 1, "", "batteryGetPlugType"], [4, 0, 1, "", "batteryGetStatus"], [4, 0, 1, "", "batteryGetTechnology"], [4, 0, 1, "", "batteryGetTemperature"], [4, 0, 1, "", "batteryGetVoltage"], [4, 0, 1, "", "batteryStartMonitoring"], [4, 0, 1, "", "batteryStopMonitoring"], [4, 0, 1, "", "bluetoothAccept"], [4, 0, 1, "", "bluetoothActiveConnections"], [4, 0, 1, "", "bluetoothConnect"], [4, 0, 1, "", "bluetoothDiscoveryCancel"], [4, 0, 1, "", "bluetoothDiscoveryStart"], [4, 0, 1, "", "bluetoothGetConnectedDeviceName"], [4, 0, 1, "", "bluetoothGetLocalAddress"], [4, 0, 1, "", "bluetoothGetLocalName"], [4, 0, 1, "", "bluetoothGetRemoteDeviceName"], [4, 0, 1, "", "bluetoothGetScanMode"], [4, 0, 1, "", "bluetoothIsDiscovering"], [4, 0, 1, "", "bluetoothMakeDiscoverable"], [4, 0, 1, "", "bluetoothRead"], [4, 0, 1, "", "bluetoothReadBinary"], [4, 0, 1, "", "bluetoothReadLine"], [4, 0, 1, "", "bluetoothReadReady"], [4, 0, 1, "", "bluetoothSetLocalName"], [4, 0, 1, "", "bluetoothStop"], [4, 0, 1, "", "bluetoothWrite"], [4, 0, 1, "", "bluetoothWriteBinary"], [4, 0, 1, "", "cameraCapturePicture"], [4, 0, 1, "", "cameraInteractiveCapturePicture"], [4, 0, 1, "", "cameraStartPreview"], [4, 0, 1, "", "cameraStopPreview"], [4, 0, 1, "", "checkAirplaneMode"], [4, 0, 1, "", "checkBluetoothState"], [4, 0, 1, "", "checkNetworkRoaming"], [4, 0, 1, "", "checkRingerSilentMode"], [4, 0, 1, "", "checkScreenOn"], [4, 0, 1, "", "checkWifiState"], [4, 0, 1, "", "contactsGet"], [4, 0, 1, "", "contactsGetAttributes"], [4, 0, 1, "", "contactsGetById"], [4, 0, 1, "", "contactsGetCount"], [4, 0, 1, "", "contactsGetIds"], [4, 0, 1, "", "dialogCreateAlert"], [4, 0, 1, "", "dialogCreateDatePicker"], [4, 0, 1, "", "dialogCreateHorizontalProgress"], [4, 0, 1, "", "dialogCreateInput"], [4, 0, 1, "", "dialogCreateNFCBeamMaster"], [4, 0, 1, "", "dialogCreateNFCBeamSlave"], [4, 0, 1, "", "dialogCreatePassword"], [4, 0, 1, "", "dialogCreateSeekBar"], [4, 0, 1, "", "dialogCreateSpinnerProgress"], [4, 0, 1, "", "dialogCreateTimePicker"], [4, 0, 1, "", "dialogDismiss"], [4, 0, 1, "", "dialogGetInput"], [4, 0, 1, "", "dialogGetPassword"], [4, 0, 1, "", "dialogGetResponse"], [4, 0, 1, "", "dialogGetSelectedItems"], [4, 0, 1, "", "dialogSetCurrentProgress"], [4, 0, 1, "", "dialogSetItems"], [4, 0, 1, "", "dialogSetMaxProgress"], [4, 0, 1, "", "dialogSetMultiChoiceItems"], [4, 0, 1, "", "dialogSetNegativeButtonText"], [4, 0, 1, "", "dialogSetNeutralButtonText"], [4, 0, 1, "", "dialogSetPositiveButtonText"], [4, 0, 1, "", "dialogSetSingleChoiceItems"], [4, 0, 1, "", "dialogShow"], [4, 0, 1, "", "environment"], [4, 0, 1, "", "eventClearBuffer"], [4, 0, 1, "", "eventGetBrodcastCategories"], [4, 0, 1, "", "eventPoll"], [4, 0, 1, "", "eventPost"], [4, 0, 1, "", "eventRegisterForBroadcast"], [4, 0, 1, "", "eventUnregisterForBroadcast"], [4, 0, 1, "", "eventWait"], [4, 0, 1, "", "eventWaitFor"], [4, 0, 1, "", "executeQPy"], [4, 0, 1, "", "forceStopPackage"], [4, 0, 1, "", "fullDismiss"], [4, 0, 1, "", "fullKeyOverride"], [4, 0, 1, "", "fullQuery"], [4, 0, 1, "", "fullQueryDetail"], [4, 0, 1, "", "fullSetList"], [4, 0, 1, "", "fullSetProperty"], [4, 0, 1, "", "fullShow"], [4, 0, 1, "", "generateDtmfTones"], [4, 0, 1, "", "geocode"], [4, 0, 1, "", "getCellLocation"], [4, 0, 1, "", "getClipboard"], [4, 0, 1, "", "getConstants"], [4, 0, 1, "", "getDeviceId"], [4, 0, 1, "", "getDeviceSoftwareVersion"], [4, 0, 1, "", "getInput"], [4, 0, 1, "", "getIntent"], [4, 0, 1, "", "getLastKnownLocation"], [4, 0, 1, "", "getLaunchableApplications"], [4, 0, 1, "", "getLine1Number"], [4, 0, 1, "", "getMaxMediaVolume"], [4, 0, 1, "", "getMaxRingerVolume"], [4, 0, 1, "", "getMediaVolume"], [4, 0, 1, "", "getNeighboringCellInfo"], [4, 0, 1, "", "getNetworkOperator"], [4, 0, 1, "", "getNetworkOperatorName"], [4, 0, 1, "", "getNetworkStatus"], [4, 0, 1, "", "getNetworkType"], [4, 0, 1, "", "getPackageVersion"], [4, 0, 1, "", "getPackageVersionCode"], [4, 0, 1, "", "getPassword"], [4, 0, 1, "", "getPhoneType"], [4, 0, 1, "", "getRingerVolume"], [4, 0, 1, "", "getRunningPackages"], [4, 0, 1, "", "getScreenBrightness"], [4, 0, 1, "", "getScreenTimeout"], [4, 0, 1, "", "getSimCountryIso"], [4, 0, 1, "", "getSimOperator"], [4, 0, 1, "", "getSimOperatorName"], [4, 0, 1, "", "getSimSerialNumber"], [4, 0, 1, "", "getSimState"], [4, 0, 1, "", "getSubscriberId"], [4, 0, 1, "", "getVibrateMode"], [4, 0, 1, "", "getVoiceMailAlphaTag"], [4, 0, 1, "", "getVoiceMailNumber"], [4, 0, 1, "", "launch"], [4, 0, 1, "", "locationProviderEnabled"], [4, 0, 1, "", "locationProviders"], [4, 0, 1, "", "log"], [4, 0, 1, "", "makeIntent"], [4, 0, 1, "", "makeToast"], [4, 0, 1, "", "mediaIsPlaying"], [4, 0, 1, "", "mediaPlay"], [4, 0, 1, "", "mediaPlayClose"], [4, 0, 1, "", "mediaPlayInfo"], [4, 0, 1, "", "mediaPlayList"], [4, 0, 1, "", "mediaPlayPause"], [4, 0, 1, "", "mediaPlaySeek"], [4, 0, 1, "", "mediaPlaySetLooping"], [4, 0, 1, "", "mediaPlayStart"], [4, 0, 1, "", "notify"], [4, 0, 1, "", "phoneCall"], [4, 0, 1, "", "phoneCallNumber"], [4, 0, 1, "", "phoneDial"], [4, 0, 1, "", "phoneDialNumber"], [4, 0, 1, "", "pick"], [4, 0, 1, "", "pickContact"], [4, 0, 1, "", "pickPhone"], [4, 0, 1, "", "prefGetAll"], [4, 0, 1, "", "prefGetValue"], [4, 0, 1, "", "prefPutValue"], [4, 0, 1, "", "queryAttributes"], [4, 0, 1, "", "queryContent"], [4, 0, 1, "", "readBatteryData"], [4, 0, 1, "", "readLocation"], [4, 0, 1, "", "readPhoneState"], [4, 0, 1, "", "readSensors"], [4, 0, 1, "", "readSignalStrengths"], [4, 0, 1, "", "receiveEvent"], [4, 0, 1, "", "recognizeSpeech"], [4, 0, 1, "", "recorderCaptureVideo"], [4, 0, 1, "", "recorderStartMicrophone"], [4, 0, 1, "", "recorderStartVideo"], [4, 0, 1, "", "recorderStop"], [4, 0, 1, "", "requiredVersion"], [4, 0, 1, "", "rpcPostEvent"], [4, 0, 1, "", "scanBarcode"], [4, 0, 1, "", "search"], [4, 0, 1, "", "sendBroadcast"], [4, 0, 1, "", "sendBroadcastIntent"], [4, 0, 1, "", "sendEmail"], [4, 0, 1, "", "sensorsGetAccuracy"], [4, 0, 1, "", "sensorsGetLight"], [4, 0, 1, "", "sensorsReadAccelerometer"], [4, 0, 1, "", "sensorsReadMagnetometer"], [4, 0, 1, "", "sensorsReadOrientation"], [4, 0, 1, "", "setClipboard"], [4, 0, 1, "", "setMediaVolume"], [4, 0, 1, "", "setResultBoolean"], [4, 0, 1, "", "setResultBooleanArray"], [4, 0, 1, "", "setResultByte"], [4, 0, 1, "", "setResultByteArray"], [4, 0, 1, "", "setResultChar"], [4, 0, 1, "", "setResultCharArray"], [4, 0, 1, "", "setResultDouble"], [4, 0, 1, "", "setResultDoubleArray"], [4, 0, 1, "", "setResultFloat"], [4, 0, 1, "", "setResultFloatArray"], [4, 0, 1, "", "setResultInteger"], [4, 0, 1, "", "setResultIntegerArray"], [4, 0, 1, "", "setResultLong"], [4, 0, 1, "", "setResultLongArray"], [4, 0, 1, "", "setResultSerializable"], [4, 0, 1, "", "setResultShort"], [4, 0, 1, "", "setResultShortArray"], [4, 0, 1, "", "setResultString"], [4, 0, 1, "", "setResultStringArray"], [4, 0, 1, "", "setRingerVolume"], [4, 0, 1, "", "setScreenBrightness"], [4, 0, 1, "", "setScreenTimeout"], [4, 0, 1, "", "smsDeleteMessage"], [4, 0, 1, "", "smsGetAttributes"], [4, 0, 1, "", "smsGetMessageById"], [4, 0, 1, "", "smsGetMessageCount"], [4, 0, 1, "", "smsGetMessageIds"], [4, 0, 1, "", "smsGetMessages"], [4, 0, 1, "", "smsMarkMessageRead"], [4, 0, 1, "", "smsSend"], [4, 0, 1, "", "startActivity"], [4, 0, 1, "", "startActivityForResult"], [4, 0, 1, "", "startActivityForResultIntent"], [4, 0, 1, "", "startActivityIntent"], [4, 0, 1, "", "startEventDispatcher"], [4, 0, 1, "", "startInteractiveVideoRecording"], [4, 0, 1, "", "startLocating"], [4, 0, 1, "", "startSensing"], [4, 0, 1, "", "startSensingThreshold"], [4, 0, 1, "", "startSensingTimed"], [4, 0, 1, "", "startTrackingPhoneState"], [4, 0, 1, "", "startTrackingSignalStrengths"], [4, 0, 1, "", "stopEventDispatcher"], [4, 0, 1, "", "stopLocating"], [4, 0, 1, "", "stopSensing"], [4, 0, 1, "", "stopTrackingPhoneState"], [4, 0, 1, "", "stopTrackingSignalStrengths"], [4, 0, 1, "", "toggleAirplaneMode"], [4, 0, 1, "", "toggleBluetoothState"], [4, 0, 1, "", "toggleRingerSilentMode"], [4, 0, 1, "", "toggleVibrateMode"], [4, 0, 1, "", "toggleWifiState"], [4, 0, 1, "", "ttsIsSpeaking"], [4, 0, 1, "", "ttsSpeak"], [4, 0, 1, "", "usbserialActiveConnections"], [4, 0, 1, "", "usbserialConnect"], [4, 0, 1, "", "usbserialDisconnect"], [4, 0, 1, "", "usbserialGetDeviceList"], [4, 0, 1, "", "usbserialGetDeviceName"], [4, 0, 1, "", "usbserialHostEnable"], [4, 0, 1, "", "usbserialRead"], [4, 0, 1, "", "usbserialReadBinary"], [4, 0, 1, "", "usbserialReadReady"], [4, 0, 1, "", "usbserialWrite"], [4, 0, 1, "", "usbserialWriteBinary"], [4, 0, 1, "id0", "vibrate"], [4, 0, 1, "", "view"], [4, 0, 1, "", "viewContacts"], [4, 0, 1, "", "viewHtml"], [4, 0, 1, "", "viewMap"], [4, 0, 1, "", "waitForEvent"], [4, 0, 1, "", "wakeLockAcquireBright"], [4, 0, 1, "", "wakeLockAcquireDim"], [4, 0, 1, "", "wakeLockAcquireFull"], [4, 0, 1, "", "wakeLockAcquirePartial"], [4, 0, 1, "", "wakeLockRelease"], [4, 0, 1, "", "webViewShow"], [4, 0, 1, "", "webcamAdjustQuality"], [4, 0, 1, "", "webcamStart"], [4, 0, 1, "", "wifiDisconnect"], [4, 0, 1, "", "wifiGetConnectionInfo"], [4, 0, 1, "", "wifiGetScanResults"], [4, 0, 1, "", "wifiLockAcquireFull"], [4, 0, 1, "", "wifiLockAcquireScanOnly"], [4, 0, 1, "", "wifiLockRelease"], [4, 0, 1, "", "wifiReassociate"], [4, 0, 1, "", "wifiReconnect"], [4, 0, 1, "", "wifiStartScan"]]}, "objtypes": {"0": "py:function"}, "objnames": {"0": ["py", "function", "Python function"]}, "titleterms": {"contributor": [0, 3], "develop": [0, 3, 5, 11], "commun": [0, 1, 5, 6, 10], "organ": 0, "local": [0, 5], "welcom": [1, 5], "read": [1, 4], "qpython": [1, 5, 7, 8, 10, 12, 13, 16, 17, 21], "guid": [1, 3], "what": [1, 16], "": [1, 8, 13, 16], "new": [1, 16], "thank": 1, "gui": 1, "who": 1, "ar": 1, "contribut": [1, 5], "support": 1, "now": 1, "let": 1, "go": 1, "other": [1, 14], "For": 1, "chines": 1, "user": [1, 5], "faq": 2, "get": [3, 4], "start": [3, 4, 10], "program": [3, 5, 7, 10], "androidfacad": 4, "clipboard": 4, "api": [4, 7, 8, 12], "intent": 4, "startact": 4, "sendbroadcast": 4, "vibrat": 4, "networkstatu": 4, "packagevers": 4, "system": 4, "sendemail": 4, "toast": 4, "getinput": 4, "getpassword": 4, "notifi": 4, "applicationmanagerfacad": 4, "manag": 4, "camerafacad": 4, "commonintentsfacad": 4, "barcod": 4, "view": 4, "contactsfacad": 4, "eventfacad": 4, "locationfacad": 4, "provid": 4, "locat": 4, "geo": 4, "phonefacad": 4, "phonestat": 4, "call": 4, "dia": 4, "inform": 4, "mediarecorderfacad": 4, "audio": 4, "video": 4, "stop": 4, "sensormanagerfacad": 4, "data": 4, "settingsfacad": 4, "screen": 4, "airplanermod": 4, "ringer": 4, "silent": 4, "mode": 4, "media": 4, "volum": 4, "bright": 4, "smsfacad": 4, "speechrecognitionfacad": 4, "tonegeneratorfacad": 4, "wakelockfacad": 4, "wififacad": 4, "batterymanagerfacad": 4, "activityresultfacad": 4, "mediaplayerfacad": 4, "control": 4, "preferencesfacad": 4, "qpyinterfacefacad": 4, "texttospeechfacad": 4, "eyesfreefacad": 4, "bluetoothfacad": 4, "signalstrengthfacad": 4, "webcamfacad": 4, "uifacad": 4, "dialog": 4, "nfc": 4, "progress": 4, "alert": 4, "layout": 4, "webview": 4, "usb": 4, "host": 4, "serial": 4, "facad": 4, "requir": [4, 16], "statu": 4, "author": 4, "how": [5, 10], "help": 5, "test": 5, "document": 5, "translat": 5, "launch": 5, "organis": 5, "share": [5, 8], "event": 5, "becam": 5, "member": 5, "built": [5, 12], "sponsor": 5, "project": 5, "join": 6, "tester": 6, "becom": 6, "report": 6, "suggest": 6, "feedback": 6, "android": [7, 16], "consol": [7, 10], "editor": [7, 10], "file": 7, "brows": 7, "qrcode": 7, "reader": 7, "qsl4a": 7, "core": 7, "python": [7, 12, 17], "2": [7, 10, 16], "x": 7, "3": [7, 10, 16], "kivi": 7, "webapp": 7, "pip": 7, "librari": [7, 9, 10, 12], "quick": 7, "tool": 7, "ftp": 7, "qpy": [7, 8], "io": [7, 8], "enterpris": 7, "servic": [7, 8], "open": 8, "some": 8, "content": 8, "script": 8, "run": 8, "from": [8, 11], "your": [8, 11], "own": 8, "applic": 8, "onlin": 8, "qpypi": [8, 14], "write": 9, "hello": 9, "world": 9, "sl4a": 9, "more": 9, "sampl": 9, "To": 10, "1": [10, 16], "dashboard": 10, "4": 10, "5": 10, "us": 11, "best": 11, "wai": 11, "qeditor": 11, "browser": 11, "comput": 11, "dynload": 12, "stardard": 12, "3rd": 12, "androidhelp": 12, "main": 13, "featur": [13, 16], "why": 13, "should": 13, "i": 13, "choos": 13, "qpysla": 14, "packag": 14, "qsl4ahelp": 14, "aipi": 14, "numpi": 14, "scipi": 14, "3x": 16, "featu": [16, 17], "v3": 16, "0": 16, "publish": 16, "2020": 16, "app": 16, "permiss": [16, 17], "both": [16, 17], "3l": 16, "ox": 17, "ol": 17, "o": 17, "\u5982\u4f55\u5728qpython": 18, "\u4f7f\u7528": 18, "ssh": 18, "\u5982\u4f55\u8fdc\u7a0b\u767b\u5f55": 18, "\u4f60\u7684\u670d\u52a1\u5668": 18, "\u5982\u4f55\u767b\u5f55\u5230\u4f60\u7684\u624b\u673a": 18, "\u5176\u4ed6": 18, "qpython\u6587\u6863\u4f53\u7cfb\u8bf4\u660e": 19, "\u5982\u4f55\u63d0\u4ea4\u6587\u6863": 19, "\u5982\u4f55\u63d0\u4ea4\u7ffb\u8bd1": 19, "\u5feb\u901f\u5f00\u59cb": 20, "\u7f16\u7a0b\u6307\u5357": 20, "qpython\u9ed1\u5ba2\u6307\u5357": 20, "\u8d21\u732e\u8005\u6307\u5357": 20, "\u4e2d\u6587\u7528\u6237\u5411\u5bfc": 21, "\u6b22\u8fce": 21, "\u8d77\u6b65": 21, "\u66f4\u591a\u94fe\u63a5": 21, "\u7528\u6237\u5f00\u53d1\u7ec4": 21, "\u5982\u4f55\u8d21\u732e": 21}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"Contributors": [[0, "contributors"]], "Developers": [[0, "developers"]], "Communities Organizers": [[0, "communities-organizers"]], "Localization": [[0, "localization"]], "Welcome to read the QPython guide": [[1, "welcome-to-read-the-qpython-guide"]], "What\u2019s NEW": [[1, "what-s-new"]], "Thanks these guys who are contributing": [[1, "thanks-these-guys-who-are-contributing"]], "QPython Communities": [[1, "qpython-communities"]], "Support": [[1, "support"]], "Now, let\u2019s GO": [[1, "now-let-s-go"]], "Others": [[1, "others"]], "For Chinese users": [[1, "for-chinese-users"]], "FAQ": [[2, "faq"]], "Getting started": [[3, "getting-started"]], "Programming Guide": [[3, "programming-guide"]], "Developer Guide": [[3, "developer-guide"]], "Contributor Guide": [[3, "contributor-guide"]], "AndroidFacade": [[4, "androidfacade"]], "Clipboard APIs": [[4, "clipboard-apis"]], "Intent & startActivity APIs": [[4, "intent-startactivity-apis"]], "SendBroadcast APIs": [[4, "sendbroadcast-apis"]], "Vibrate": [[4, "vibrate"]], "NetworkStatus": [[4, "networkstatus"]], "PackageVersion APIs": [[4, "packageversion-apis"]], "System APIs": [[4, "system-apis"]], "SendEmail": [[4, "sendemail"]], "Toast, getInput, getPassword, notify APIs": [[4, "toast-getinput-getpassword-notify-apis"]], "ApplicationManagerFacade": [[4, "applicationmanagerfacade"]], "Manager APIs": [[4, "manager-apis"]], "CameraFacade": [[4, "camerafacade"]], "CommonIntentsFacade": [[4, "commonintentsfacade"]], "Barcode": [[4, "barcode"]], "View APIs": [[4, "view-apis"]], "ContactsFacade": [[4, "contactsfacade"]], "EventFacade": [[4, "eventfacade"]], "LocationFacade": [[4, "locationfacade"]], "Providers APIs": [[4, "providers-apis"]], "Location APIs": [[4, "location-apis"]], "GEO": [[4, "geo"]], "PhoneFacade": [[4, "phonefacade"]], "PhoneStat APIs": [[4, "phonestat-apis"]], "Call & Dia APIs": [[4, "call-dia-apis"]], "Get information APIs": [[4, "get-information-apis"]], "MediaRecorderFacade": [[4, "mediarecorderfacade"]], "Audio": [[4, "audio"]], "Video APIs": [[4, "video-apis"]], "Stop": [[4, "stop"]], "SensorManagerFacade": [[4, "sensormanagerfacade"]], "Start & Stop": [[4, "start-stop"]], "Read data APIs": [[4, "read-data-apis"]], "SettingsFacade": [[4, "settingsfacade"]], "Screen": [[4, "screen"]], "AirplanerMode": [[4, "airplanermode"]], "Ringer Silent Mode": [[4, "ringer-silent-mode"]], "Vibrate Mode": [[4, "vibrate-mode"]], "Ringer & Media Volume": [[4, "ringer-media-volume"]], "Screen Brightness": [[4, "screen-brightness"]], "SmsFacade": [[4, "smsfacade"]], "SpeechRecognitionFacade": [[4, "speechrecognitionfacade"]], "ToneGeneratorFacade": [[4, "tonegeneratorfacade"]], "WakeLockFacade": [[4, "wakelockfacade"]], "WifiFacade": [[4, "wififacade"]], "BatteryManagerFacade": [[4, "batterymanagerfacade"]], "ActivityResultFacade": [[4, "activityresultfacade"]], "MediaPlayerFacade": [[4, "mediaplayerfacade"]], "Control": [[4, "control"]], "Get Information": [[4, "get-information"]], "PreferencesFacade": [[4, "preferencesfacade"]], "QPyInterfaceFacade": [[4, "qpyinterfacefacade"]], "TextToSpeechFacade": [[4, "texttospeechfacade"]], "EyesFreeFacade": [[4, "eyesfreefacade"]], "BluetoothFacade": [[4, "bluetoothfacade"]], "SignalStrengthFacade": [[4, "signalstrengthfacade"]], "WebCamFacade": [[4, "webcamfacade"]], "UiFacade": [[4, "uifacade"]], "Dialog": [[4, "dialog"]], "NFC": [[4, "nfc"]], "Progress": [[4, "progress"]], "Alert": [[4, "alert"]], "Dialog Control": [[4, "dialog-control"]], "Layout": [[4, "layout"]], "WebView": [[4, "webview"]], "USB Host Serial Facade": [[4, "usb-host-serial-facade"]], "Requirements": [[4, "requirements"]], "Status": [[4, "status"]], "Author": [[4, "author"]], "APIs": [[4, "apis"]], "Welcome contribute": [[5, "welcome-contribute"]], "How to help with test": [[5, "how-to-help-with-test"]], "How to contribute documentation": [[5, "how-to-contribute-documentation"]], "How to translate": [[5, "how-to-translate"]], "How to launch a local QPython users community": [[5, "how-to-launch-a-local-qpython-users-community"]], "How to organise a local qpython user sharing event": [[5, "how-to-organise-a-local-qpython-user-sharing-event"]], "How to became the developer member": [[5, "how-to-became-the-developer-member"]], "How to develop qpython built-in programs": [[5, "how-to-develop-qpython-built-in-programs"]], "How to sponsor QPython project": [[5, "how-to-sponsor-qpython-project"]], "Join the tester community": [[6, "join-the-tester-community"]], "Become a tester": [[6, "become-a-tester"]], "Report or suggest": [[6, "report-or-suggest"]], "Feedback": [[6, "feedback"]], "Android": [[7, "android"]], "Console": [[7, "console"]], "Editor": [[7, "editor"]], "File browsing": [[7, "file-browsing"]], "QRCode reader": [[7, "qrcode-reader"]], "QSL4A": [[7, "qsl4a"]], "QPython Core": [[7, "qpython-core"]], "Python 2.x": [[7, "python-2-x"]], "Python 3.x": [[7, "python-3-x"]], "Console program": [[7, "console-program"]], "Kivy program": [[7, "kivy-program"]], "WebApp program": [[7, "webapp-program"]], "Pip and libraries": [[7, "pip-and-libraries"]], "Pip": [[7, "pip"]], "Libraries": [[7, "libraries"]], "Quick tools": [[7, "quick-tools"]], "QPython API": [[7, "qpython-api"]], "FTP": [[7, "ftp"]], "QPY.IO (Enterprise service)": [[7, "qpy-io-enterprise-service"]], "QPython Open API": [[8, "qpython-open-api"]], "Share some content to QPython\u2019s scripts": [[8, "share-some-content-to-qpython-s-scripts"]], "Run QPython\u2019s script from your own application": [[8, "run-qpython-s-script-from-your-own-application"]], "QPython Online Service": [[8, "qpython-online-service"]], "QPypi": [[8, "qpypi"]], "QPY.IO": [[8, "qpy-io"]], "Writing \u201cHello World\u201d": [[9, "writing-hello-world"]], "Hello world": [[9, "hello-world"]], "SL4A library": [[9, "sl4a-library"]], "More samples": [[9, "more-samples"]], "QPython: How To Start": [[10, "qpython-how-to-start"]], "1. Dashboard": [[10, "dashboard"]], "2. Console and editor": [[10, "console-and-editor"]], "3. Programs": [[10, "programs"]], "4. Libraries": [[10, "libraries"]], "5. Community": [[10, "community"]], "Use the best way for developing": [[11, "use-the-best-way-for-developing"]], "Develop from QEditor": [[11, "develop-from-qeditor"]], "Develop from browser": [[11, "develop-from-browser"]], "Develop from your computer": [[11, "develop-from-your-computer"]], "QPython built-in Libraries": [[12, "qpython-built-in-libraries"]], "QPython dynload libraries": [[12, "qpython-dynload-libraries"]], "QPython stardard libraries": [[12, "qpython-stardard-libraries"]], "Python 3rd Libraries": [[12, "python-3rd-libraries"]], "Androidhelper APIs": [[12, "androidhelper-apis"]], "QPython\u2019s main features": [[13, "qpython-s-main-features"], [13, "id1"]], "Why should I choose QPython": [[13, "why-should-i-choose-qpython"]], "QPYPI": [[14, "qpypi"]], "QPySLA Package": [[14, "qpysla-package"]], "qsl4ahelper": [[14, "qsl4ahelper"]], "AIPY Packages": [[14, "aipy-packages"]], "Numpy": [[14, "numpy"]], "Scipy": [[14, "scipy"]], "Other": [[14, "other"]], "QPython 3x featues": [[16, "qpython-3x-featues"]], "WHAT\u2019S NEW": [[16, "what-s-new"]], "QPython 3x v3.0.0 (Published on 2020/2/1)": [[16, "qpython-3x-v3-0-0-published-on-2020-2-1"]], "App\u2019s Features": [[16, "app-s-features"]], "Android Permissions that QPython requires": [[16, "android-permissions-that-qpython-requires"]], "Both QPython 3S and 3L": [[16, "both-qpython-3s-and-3l"]], "QPython 3S": [[16, "qpython-3s"]], "QPython Ox featues": [[17, "qpython-ox-featues"]], "Python": [[17, "python"]], "Permissions": [[17, "permissions"]], "Both QPython OL and OS": [[17, "both-qpython-ol-and-os"]], "QPython OS": [[17, "qpython-os"]], "\u5982\u4f55\u5728QPython \u4f7f\u7528 SSH": [[18, "qpython-ssh"]], "\u5982\u4f55\u8fdc\u7a0b\u767b\u5f55 \u4f60\u7684\u670d\u52a1\u5668\uff1f": [[18, "id1"]], "\u5982\u4f55\u767b\u5f55\u5230\u4f60\u7684\u624b\u673a?": [[18, "id2"]], "\u5176\u4ed6": [[18, "id9"]], "QPython\u6587\u6863\u4f53\u7cfb\u8bf4\u660e": [[19, "qpython"]], "\u5982\u4f55\u63d0\u4ea4\u6587\u6863": [[19, "id1"]], "\u5982\u4f55\u63d0\u4ea4\u7ffb\u8bd1": [[19, "id2"]], "\u5feb\u901f\u5f00\u59cb": [[20, "id1"]], "\u7f16\u7a0b\u6307\u5357": [[20, "id4"]], "QPython\u9ed1\u5ba2\u6307\u5357": [[20, "id5"]], "\u8d21\u732e\u8005\u6307\u5357": [[20, "id8"]], "\u4e2d\u6587\u7528\u6237\u5411\u5bfc": [[21, "id1"]], "\u6b22\u8fce \uff01": [[21, "id2"]], "QPython \u8d77\u6b65": [[21, "qpython"]], "\u66f4\u591a\u94fe\u63a5": [[21, "id3"]], "QPython \u7528\u6237\u5f00\u53d1\u7ec4": [[21, "id9"]], "\u5982\u4f55\u8d21\u732e": [[21, "id11"]]}, "indexentries": {"nfcbeammessage()": [[4, "NFCBeamMessage"]], "addcontextmenuitem()": [[4, "addContextMenuItem"]], "addoptionsmenuitem()": [[4, "addOptionsMenuItem"]], "batterycheckpresent()": [[4, "batteryCheckPresent"]], "batterygethealth()": [[4, "batteryGetHealth"]], "batterygetlevel()": [[4, "batteryGetLevel"]], "batterygetplugtype()": [[4, "batteryGetPlugType"]], "batterygetstatus()": [[4, "batteryGetStatus"]], "batterygettechnology()": [[4, "batteryGetTechnology"]], "batterygettemperature()": [[4, "batteryGetTemperature"]], "batterygetvoltage()": [[4, "batteryGetVoltage"]], "batterystartmonitoring()": [[4, "batteryStartMonitoring"]], "batterystopmonitoring()": [[4, "batteryStopMonitoring"]], "bluetoothaccept()": [[4, "bluetoothAccept"]], "bluetoothactiveconnections()": [[4, "bluetoothActiveConnections"]], "bluetoothconnect()": [[4, "bluetoothConnect"]], "bluetoothdiscoverycancel()": [[4, "bluetoothDiscoveryCancel"]], "bluetoothdiscoverystart()": [[4, "bluetoothDiscoveryStart"]], "bluetoothgetconnecteddevicename()": [[4, "bluetoothGetConnectedDeviceName"]], "bluetoothgetlocaladdress()": [[4, "bluetoothGetLocalAddress"]], "bluetoothgetlocalname()": [[4, "bluetoothGetLocalName"]], "bluetoothgetremotedevicename()": [[4, "bluetoothGetRemoteDeviceName"]], "bluetoothgetscanmode()": [[4, "bluetoothGetScanMode"]], "bluetoothisdiscovering()": [[4, "bluetoothIsDiscovering"]], "bluetoothmakediscoverable()": [[4, "bluetoothMakeDiscoverable"]], "bluetoothread()": [[4, "bluetoothRead"]], "bluetoothreadbinary()": [[4, "bluetoothReadBinary"]], "bluetoothreadline()": [[4, "bluetoothReadLine"]], "bluetoothreadready()": [[4, "bluetoothReadReady"]], "bluetoothsetlocalname()": [[4, "bluetoothSetLocalName"]], "bluetoothstop()": [[4, "bluetoothStop"]], "bluetoothwrite()": [[4, "bluetoothWrite"]], "bluetoothwritebinary()": [[4, "bluetoothWriteBinary"]], "built-in function": [[4, "NFCBeamMessage"], [4, "addContextMenuItem"], [4, "addOptionsMenuItem"], [4, "batteryCheckPresent"], [4, "batteryGetHealth"], [4, "batteryGetLevel"], [4, "batteryGetPlugType"], [4, "batteryGetStatus"], [4, "batteryGetTechnology"], [4, "batteryGetTemperature"], [4, "batteryGetVoltage"], [4, "batteryStartMonitoring"], [4, "batteryStopMonitoring"], [4, "bluetoothAccept"], [4, "bluetoothActiveConnections"], [4, "bluetoothConnect"], [4, "bluetoothDiscoveryCancel"], [4, "bluetoothDiscoveryStart"], [4, "bluetoothGetConnectedDeviceName"], [4, "bluetoothGetLocalAddress"], [4, "bluetoothGetLocalName"], [4, "bluetoothGetRemoteDeviceName"], [4, "bluetoothGetScanMode"], [4, "bluetoothIsDiscovering"], [4, "bluetoothMakeDiscoverable"], [4, "bluetoothRead"], [4, "bluetoothReadBinary"], [4, "bluetoothReadLine"], [4, "bluetoothReadReady"], [4, "bluetoothSetLocalName"], [4, "bluetoothStop"], [4, "bluetoothWrite"], [4, "bluetoothWriteBinary"], [4, "cameraCapturePicture"], [4, "cameraInteractiveCapturePicture"], [4, "cameraStartPreview"], [4, "cameraStopPreview"], [4, "checkAirplaneMode"], [4, "checkBluetoothState"], [4, "checkNetworkRoaming"], [4, "checkRingerSilentMode"], [4, "checkScreenOn"], [4, "checkWifiState"], [4, "contactsGet"], [4, "contactsGetAttributes"], [4, "contactsGetById"], [4, "contactsGetCount"], [4, "contactsGetIds"], [4, "dialogCreateAlert"], [4, "dialogCreateDatePicker"], [4, "dialogCreateHorizontalProgress"], [4, "dialogCreateInput"], [4, "dialogCreateNFCBeamMaster"], [4, "dialogCreateNFCBeamSlave"], [4, "dialogCreatePassword"], [4, "dialogCreateSeekBar"], [4, "dialogCreateSpinnerProgress"], [4, "dialogCreateTimePicker"], [4, "dialogDismiss"], [4, "dialogGetInput"], [4, "dialogGetPassword"], [4, "dialogGetResponse"], [4, "dialogGetSelectedItems"], [4, "dialogSetCurrentProgress"], [4, "dialogSetItems"], [4, "dialogSetMaxProgress"], [4, "dialogSetMultiChoiceItems"], [4, "dialogSetNegativeButtonText"], [4, "dialogSetNeutralButtonText"], [4, "dialogSetPositiveButtonText"], [4, "dialogSetSingleChoiceItems"], [4, "dialogShow"], [4, "environment"], [4, "eventClearBuffer"], [4, "eventGetBrodcastCategories"], [4, "eventPoll"], [4, "eventPost"], [4, "eventRegisterForBroadcast"], [4, "eventUnregisterForBroadcast"], [4, "eventWait"], [4, "eventWaitFor"], [4, "executeQPy"], [4, "forceStopPackage"], [4, "fullDismiss"], [4, "fullKeyOverride"], [4, "fullQuery"], [4, "fullQueryDetail"], [4, "fullSetList"], [4, "fullSetProperty"], [4, "fullShow"], [4, "generateDtmfTones"], [4, "geocode"], [4, "getCellLocation"], [4, "getClipboard"], [4, "getConstants"], [4, "getDeviceId"], [4, "getDeviceSoftwareVersion"], [4, "getInput"], [4, "getIntent"], [4, "getLastKnownLocation"], [4, "getLaunchableApplications"], [4, "getLine1Number"], [4, "getMaxMediaVolume"], [4, "getMaxRingerVolume"], [4, "getMediaVolume"], [4, "getNeighboringCellInfo"], [4, "getNetworkOperator"], [4, "getNetworkOperatorName"], [4, "getNetworkStatus"], [4, "getNetworkType"], [4, "getPackageVersion"], [4, "getPackageVersionCode"], [4, "getPassword"], [4, "getPhoneType"], [4, "getRingerVolume"], [4, "getRunningPackages"], [4, "getScreenBrightness"], [4, "getScreenTimeout"], [4, "getSimCountryIso"], [4, "getSimOperator"], [4, "getSimOperatorName"], [4, "getSimSerialNumber"], [4, "getSimState"], [4, "getSubscriberId"], [4, "getVibrateMode"], [4, "getVoiceMailAlphaTag"], [4, "getVoiceMailNumber"], [4, "id0"], [4, "launch"], [4, "locationProviderEnabled"], [4, "locationProviders"], [4, "log"], [4, "makeIntent"], [4, "makeToast"], [4, "mediaIsPlaying"], [4, "mediaPlay"], [4, "mediaPlayClose"], [4, "mediaPlayInfo"], [4, "mediaPlayList"], [4, "mediaPlayPause"], [4, "mediaPlaySeek"], [4, "mediaPlaySetLooping"], [4, "mediaPlayStart"], [4, "notify"], [4, "phoneCall"], [4, "phoneCallNumber"], [4, "phoneDial"], [4, "phoneDialNumber"], [4, "pick"], [4, "pickContact"], [4, "pickPhone"], [4, "prefGetAll"], [4, "prefGetValue"], [4, "prefPutValue"], [4, "queryAttributes"], [4, "queryContent"], [4, "readBatteryData"], [4, "readLocation"], [4, "readPhoneState"], [4, "readSensors"], [4, "readSignalStrengths"], [4, "receiveEvent"], [4, "recognizeSpeech"], [4, "recorderCaptureVideo"], [4, "recorderStartMicrophone"], [4, "recorderStartVideo"], [4, "recorderStop"], [4, "requiredVersion"], [4, "rpcPostEvent"], [4, "scanBarcode"], [4, "search"], [4, "sendBroadcast"], [4, "sendBroadcastIntent"], [4, "sendEmail"], [4, "sensorsGetAccuracy"], [4, "sensorsGetLight"], [4, "sensorsReadAccelerometer"], [4, "sensorsReadMagnetometer"], [4, "sensorsReadOrientation"], [4, "setClipboard"], [4, "setMediaVolume"], [4, "setResultBoolean"], [4, "setResultBooleanArray"], [4, "setResultByte"], [4, "setResultByteArray"], [4, "setResultChar"], [4, "setResultCharArray"], [4, "setResultDouble"], [4, "setResultDoubleArray"], [4, "setResultFloat"], [4, "setResultFloatArray"], [4, "setResultInteger"], [4, "setResultIntegerArray"], [4, "setResultLong"], [4, "setResultLongArray"], [4, "setResultSerializable"], [4, "setResultShort"], [4, "setResultShortArray"], [4, "setResultString"], [4, "setResultStringArray"], [4, "setRingerVolume"], [4, "setScreenBrightness"], [4, "setScreenTimeout"], [4, "smsDeleteMessage"], [4, "smsGetAttributes"], [4, "smsGetMessageById"], [4, "smsGetMessageCount"], [4, "smsGetMessageIds"], [4, "smsGetMessages"], [4, "smsMarkMessageRead"], [4, "smsSend"], [4, "startActivity"], [4, "startActivityForResult"], [4, "startActivityForResultIntent"], [4, "startActivityIntent"], [4, "startEventDispatcher"], [4, "startInteractiveVideoRecording"], [4, "startLocating"], [4, "startSensing"], [4, "startSensingThreshold"], [4, "startSensingTimed"], [4, "startTrackingPhoneState"], [4, "startTrackingSignalStrengths"], [4, "stopEventDispatcher"], [4, "stopLocating"], [4, "stopSensing"], [4, "stopTrackingPhoneState"], [4, "stopTrackingSignalStrengths"], [4, "toggleAirplaneMode"], [4, "toggleBluetoothState"], [4, "toggleRingerSilentMode"], [4, "toggleVibrateMode"], [4, "toggleWifiState"], [4, "ttsIsSpeaking"], [4, "ttsSpeak"], [4, "usbserialActiveConnections"], [4, "usbserialConnect"], [4, "usbserialDisconnect"], [4, "usbserialGetDeviceList"], [4, "usbserialGetDeviceName"], [4, "usbserialHostEnable"], [4, "usbserialRead"], [4, "usbserialReadBinary"], [4, "usbserialReadReady"], [4, "usbserialWrite"], [4, "usbserialWriteBinary"], [4, "view"], [4, "viewContacts"], [4, "viewHtml"], [4, "viewMap"], [4, "waitForEvent"], [4, "wakeLockAcquireBright"], [4, "wakeLockAcquireDim"], [4, "wakeLockAcquireFull"], [4, "wakeLockAcquirePartial"], [4, "wakeLockRelease"], [4, "webViewShow"], [4, "webcamAdjustQuality"], [4, "webcamStart"], [4, "wifiDisconnect"], [4, "wifiGetConnectionInfo"], [4, "wifiGetScanResults"], [4, "wifiLockAcquireFull"], [4, "wifiLockAcquireScanOnly"], [4, "wifiLockRelease"], [4, "wifiReassociate"], [4, "wifiReconnect"], [4, "wifiStartScan"]], "cameracapturepicture()": [[4, "cameraCapturePicture"]], "camerainteractivecapturepicture()": [[4, "cameraInteractiveCapturePicture"]], "camerastartpreview()": [[4, "cameraStartPreview"]], "camerastoppreview()": [[4, "cameraStopPreview"]], "checkairplanemode()": [[4, "checkAirplaneMode"]], "checkbluetoothstate()": [[4, "checkBluetoothState"]], "checknetworkroaming()": [[4, "checkNetworkRoaming"]], "checkringersilentmode()": [[4, "checkRingerSilentMode"]], "checkscreenon()": [[4, "checkScreenOn"]], "checkwifistate()": [[4, "checkWifiState"]], "contactsget()": [[4, "contactsGet"]], "contactsgetattributes()": [[4, "contactsGetAttributes"]], "contactsgetbyid()": [[4, "contactsGetById"]], "contactsgetcount()": [[4, "contactsGetCount"]], "contactsgetids()": [[4, "contactsGetIds"]], "dialogcreatealert()": [[4, "dialogCreateAlert"]], "dialogcreatedatepicker()": [[4, "dialogCreateDatePicker"]], "dialogcreatehorizontalprogress()": [[4, "dialogCreateHorizontalProgress"]], "dialogcreateinput()": [[4, "dialogCreateInput"]], "dialogcreatenfcbeammaster()": [[4, "dialogCreateNFCBeamMaster"]], "dialogcreatenfcbeamslave()": [[4, "dialogCreateNFCBeamSlave"]], "dialogcreatepassword()": [[4, "dialogCreatePassword"]], "dialogcreateseekbar()": [[4, "dialogCreateSeekBar"]], "dialogcreatespinnerprogress()": [[4, "dialogCreateSpinnerProgress"]], "dialogcreatetimepicker()": [[4, "dialogCreateTimePicker"]], "dialogdismiss()": [[4, "dialogDismiss"]], "dialoggetinput()": [[4, "dialogGetInput"]], "dialoggetpassword()": [[4, "dialogGetPassword"]], "dialoggetresponse()": [[4, "dialogGetResponse"]], "dialoggetselecteditems()": [[4, "dialogGetSelectedItems"]], "dialogsetcurrentprogress()": [[4, "dialogSetCurrentProgress"]], "dialogsetitems()": [[4, "dialogSetItems"]], "dialogsetmaxprogress()": [[4, "dialogSetMaxProgress"]], "dialogsetmultichoiceitems()": [[4, "dialogSetMultiChoiceItems"]], "dialogsetnegativebuttontext()": [[4, "dialogSetNegativeButtonText"]], "dialogsetneutralbuttontext()": [[4, "dialogSetNeutralButtonText"]], "dialogsetpositivebuttontext()": [[4, "dialogSetPositiveButtonText"]], "dialogsetsinglechoiceitems()": [[4, "dialogSetSingleChoiceItems"]], "dialogshow()": [[4, "dialogShow"]], "environment()": [[4, "environment"]], "eventclearbuffer()": [[4, "eventClearBuffer"]], "eventgetbrodcastcategories()": [[4, "eventGetBrodcastCategories"]], "eventpoll()": [[4, "eventPoll"]], "eventpost()": [[4, "eventPost"]], "eventregisterforbroadcast()": [[4, "eventRegisterForBroadcast"]], "eventunregisterforbroadcast()": [[4, "eventUnregisterForBroadcast"]], "eventwait()": [[4, "eventWait"]], "eventwaitfor()": [[4, "eventWaitFor"]], "executeqpy()": [[4, "executeQPy"]], "forcestoppackage()": [[4, "forceStopPackage"]], "fulldismiss()": [[4, "fullDismiss"]], "fullkeyoverride()": [[4, "fullKeyOverride"]], "fullquery()": [[4, "fullQuery"]], "fullquerydetail()": [[4, "fullQueryDetail"]], "fullsetlist()": [[4, "fullSetList"]], "fullsetproperty()": [[4, "fullSetProperty"]], "fullshow()": [[4, "fullShow"]], "generatedtmftones()": [[4, "generateDtmfTones"]], "geocode()": [[4, "geocode"]], "getcelllocation()": [[4, "getCellLocation"]], "getclipboard()": [[4, "getClipboard"]], "getconstants()": [[4, "getConstants"]], "getdeviceid()": [[4, "getDeviceId"]], "getdevicesoftwareversion()": [[4, "getDeviceSoftwareVersion"]], "getinput()": [[4, "getInput"]], "getintent()": [[4, "getIntent"]], "getlastknownlocation()": [[4, "getLastKnownLocation"]], "getlaunchableapplications()": [[4, "getLaunchableApplications"]], "getline1number()": [[4, "getLine1Number"]], "getmaxmediavolume()": [[4, "getMaxMediaVolume"]], "getmaxringervolume()": [[4, "getMaxRingerVolume"]], "getmediavolume()": [[4, "getMediaVolume"]], "getneighboringcellinfo()": [[4, "getNeighboringCellInfo"]], "getnetworkoperator()": [[4, "getNetworkOperator"]], "getnetworkoperatorname()": [[4, "getNetworkOperatorName"]], "getnetworkstatus()": [[4, "getNetworkStatus"]], "getnetworktype()": [[4, "getNetworkType"]], "getpackageversion()": [[4, "getPackageVersion"]], "getpackageversioncode()": [[4, "getPackageVersionCode"]], "getpassword()": [[4, "getPassword"]], "getphonetype()": [[4, "getPhoneType"]], "getringervolume()": [[4, "getRingerVolume"]], "getrunningpackages()": [[4, "getRunningPackages"]], "getscreenbrightness()": [[4, "getScreenBrightness"]], "getscreentimeout()": [[4, "getScreenTimeout"]], "getsimcountryiso()": [[4, "getSimCountryIso"]], "getsimoperator()": [[4, "getSimOperator"]], "getsimoperatorname()": [[4, "getSimOperatorName"]], "getsimserialnumber()": [[4, "getSimSerialNumber"]], "getsimstate()": [[4, "getSimState"]], "getsubscriberid()": [[4, "getSubscriberId"]], "getvibratemode()": [[4, "getVibrateMode"]], "getvoicemailalphatag()": [[4, "getVoiceMailAlphaTag"]], "getvoicemailnumber()": [[4, "getVoiceMailNumber"]], "launch()": [[4, "launch"]], "locationproviderenabled()": [[4, "locationProviderEnabled"]], "locationproviders()": [[4, "locationProviders"]], "log()": [[4, "log"]], "makeintent()": [[4, "makeIntent"]], "maketoast()": [[4, "makeToast"]], "mediaisplaying()": [[4, "mediaIsPlaying"]], "mediaplay()": [[4, "mediaPlay"]], "mediaplayclose()": [[4, "mediaPlayClose"]], "mediaplayinfo()": [[4, "mediaPlayInfo"]], "mediaplaylist()": [[4, "mediaPlayList"]], "mediaplaypause()": [[4, "mediaPlayPause"]], "mediaplayseek()": [[4, "mediaPlaySeek"]], "mediaplaysetlooping()": [[4, "mediaPlaySetLooping"]], "mediaplaystart()": [[4, "mediaPlayStart"]], "notify()": [[4, "notify"]], "phonecall()": [[4, "phoneCall"]], "phonecallnumber()": [[4, "phoneCallNumber"]], "phonedial()": [[4, "phoneDial"]], "phonedialnumber()": [[4, "phoneDialNumber"]], "pick()": [[4, "pick"]], "pickcontact()": [[4, "pickContact"]], "pickphone()": [[4, "pickPhone"]], "prefgetall()": [[4, "prefGetAll"]], "prefgetvalue()": [[4, "prefGetValue"]], "prefputvalue()": [[4, "prefPutValue"]], "queryattributes()": [[4, "queryAttributes"]], "querycontent()": [[4, "queryContent"]], "readbatterydata()": [[4, "readBatteryData"]], "readlocation()": [[4, "readLocation"]], "readphonestate()": [[4, "readPhoneState"]], "readsensors()": [[4, "readSensors"]], "readsignalstrengths()": [[4, "readSignalStrengths"]], "receiveevent()": [[4, "receiveEvent"]], "recognizespeech()": [[4, "recognizeSpeech"]], "recordercapturevideo()": [[4, "recorderCaptureVideo"]], "recorderstartmicrophone()": [[4, "recorderStartMicrophone"]], "recorderstartvideo()": [[4, "recorderStartVideo"]], "recorderstop()": [[4, "recorderStop"]], "requiredversion()": [[4, "requiredVersion"]], "rpcpostevent()": [[4, "rpcPostEvent"]], "scanbarcode()": [[4, "scanBarcode"]], "search()": [[4, "search"]], "sendbroadcast()": [[4, "sendBroadcast"]], "sendbroadcastintent()": [[4, "sendBroadcastIntent"]], "sendemail()": [[4, "sendEmail"]], "sensorsgetaccuracy()": [[4, "sensorsGetAccuracy"]], "sensorsgetlight()": [[4, "sensorsGetLight"]], "sensorsreadaccelerometer()": [[4, "sensorsReadAccelerometer"]], "sensorsreadmagnetometer()": [[4, "sensorsReadMagnetometer"]], "sensorsreadorientation()": [[4, "sensorsReadOrientation"]], "setclipboard()": [[4, "setClipboard"]], "setmediavolume()": [[4, "setMediaVolume"]], "setresultboolean()": [[4, "setResultBoolean"]], "setresultbooleanarray()": [[4, "setResultBooleanArray"]], "setresultbyte()": [[4, "setResultByte"]], "setresultbytearray()": [[4, "setResultByteArray"]], "setresultchar()": [[4, "setResultChar"]], "setresultchararray()": [[4, "setResultCharArray"]], "setresultdouble()": [[4, "setResultDouble"]], "setresultdoublearray()": [[4, "setResultDoubleArray"]], "setresultfloat()": [[4, "setResultFloat"]], "setresultfloatarray()": [[4, "setResultFloatArray"]], "setresultinteger()": [[4, "setResultInteger"]], "setresultintegerarray()": [[4, "setResultIntegerArray"]], "setresultlong()": [[4, "setResultLong"]], "setresultlongarray()": [[4, "setResultLongArray"]], "setresultserializable()": [[4, "setResultSerializable"]], "setresultshort()": [[4, "setResultShort"]], "setresultshortarray()": [[4, "setResultShortArray"]], "setresultstring()": [[4, "setResultString"]], "setresultstringarray()": [[4, "setResultStringArray"]], "setringervolume()": [[4, "setRingerVolume"]], "setscreenbrightness()": [[4, "setScreenBrightness"]], "setscreentimeout()": [[4, "setScreenTimeout"]], "smsdeletemessage()": [[4, "smsDeleteMessage"]], "smsgetattributes()": [[4, "smsGetAttributes"]], "smsgetmessagebyid()": [[4, "smsGetMessageById"]], "smsgetmessagecount()": [[4, "smsGetMessageCount"]], "smsgetmessageids()": [[4, "smsGetMessageIds"]], "smsgetmessages()": [[4, "smsGetMessages"]], "smsmarkmessageread()": [[4, "smsMarkMessageRead"]], "smssend()": [[4, "smsSend"]], "startactivity()": [[4, "startActivity"]], "startactivityforresult()": [[4, "startActivityForResult"]], "startactivityforresultintent()": [[4, "startActivityForResultIntent"]], "startactivityintent()": [[4, "startActivityIntent"]], "starteventdispatcher()": [[4, "startEventDispatcher"]], "startinteractivevideorecording()": [[4, "startInteractiveVideoRecording"]], "startlocating()": [[4, "startLocating"]], "startsensing()": [[4, "startSensing"]], "startsensingthreshold()": [[4, "startSensingThreshold"]], "startsensingtimed()": [[4, "startSensingTimed"]], "starttrackingphonestate()": [[4, "startTrackingPhoneState"]], "starttrackingsignalstrengths()": [[4, "startTrackingSignalStrengths"]], "stopeventdispatcher()": [[4, "stopEventDispatcher"]], "stoplocating()": [[4, "stopLocating"]], "stopsensing()": [[4, "stopSensing"]], "stoptrackingphonestate()": [[4, "stopTrackingPhoneState"]], "stoptrackingsignalstrengths()": [[4, "stopTrackingSignalStrengths"]], "toggleairplanemode()": [[4, "toggleAirplaneMode"]], "togglebluetoothstate()": [[4, "toggleBluetoothState"]], "toggleringersilentmode()": [[4, "toggleRingerSilentMode"]], "togglevibratemode()": [[4, "toggleVibrateMode"]], "togglewifistate()": [[4, "toggleWifiState"]], "ttsisspeaking()": [[4, "ttsIsSpeaking"]], "ttsspeak()": [[4, "ttsSpeak"]], "usbserialactiveconnections()": [[4, "usbserialActiveConnections"]], "usbserialconnect()": [[4, "usbserialConnect"]], "usbserialdisconnect()": [[4, "usbserialDisconnect"]], "usbserialgetdevicelist()": [[4, "usbserialGetDeviceList"]], "usbserialgetdevicename()": [[4, "usbserialGetDeviceName"]], "usbserialhostenable()": [[4, "usbserialHostEnable"]], "usbserialread()": [[4, "usbserialRead"]], "usbserialreadbinary()": [[4, "usbserialReadBinary"]], "usbserialreadready()": [[4, "usbserialReadReady"]], "usbserialwrite()": [[4, "usbserialWrite"]], "usbserialwritebinary()": [[4, "usbserialWriteBinary"]], "vibrate()": [[4, "id0"]], "view()": [[4, "view"]], "viewcontacts()": [[4, "viewContacts"]], "viewhtml()": [[4, "viewHtml"]], "viewmap()": [[4, "viewMap"]], "waitforevent()": [[4, "waitForEvent"]], "wakelockacquirebright()": [[4, "wakeLockAcquireBright"]], "wakelockacquiredim()": [[4, "wakeLockAcquireDim"]], "wakelockacquirefull()": [[4, "wakeLockAcquireFull"]], "wakelockacquirepartial()": [[4, "wakeLockAcquirePartial"]], "wakelockrelease()": [[4, "wakeLockRelease"]], "webviewshow()": [[4, "webViewShow"]], "webcamadjustquality()": [[4, "webcamAdjustQuality"]], "webcamstart()": [[4, "webcamStart"]], "wifidisconnect()": [[4, "wifiDisconnect"]], "wifigetconnectioninfo()": [[4, "wifiGetConnectionInfo"]], "wifigetscanresults()": [[4, "wifiGetScanResults"]], "wifilockacquirefull()": [[4, "wifiLockAcquireFull"]], "wifilockacquirescanonly()": [[4, "wifiLockAcquireScanOnly"]], "wifilockrelease()": [[4, "wifiLockRelease"]], "wifireassociate()": [[4, "wifiReassociate"]], "wifireconnect()": [[4, "wifiReconnect"]], "wifistartscan()": [[4, "wifiStartScan"]]}}) \ No newline at end of file diff --git a/docs/static/ajax-loader.gif b/docs/static/ajax-loader.gif deleted file mode 100644 index 61faf8c..0000000 Binary files a/docs/static/ajax-loader.gif and /dev/null differ diff --git a/docs/static/basic.css b/docs/static/basic.css index 6f40830..cfc60b8 100644 --- a/docs/static/basic.css +++ b/docs/static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -15,6 +15,12 @@ div.clearer { clear: both; } +div.section::after { + display: block; + content: ''; + clear: left; +} + /* -- relbar ---------------------------------------------------------------- */ div.related { @@ -81,10 +87,26 @@ div.sphinxsidebar input { font-size: 1em; } +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + div.sphinxsidebar #searchbox input[type="text"] { - width: 170px; + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; } + img { border: 0; max-width: 100%; @@ -108,7 +130,7 @@ ul.search li a { font-weight: bold; } -ul.search li div.context { +ul.search li p.context { color: #888; margin: 2px 0 0 30px; text-align: left; @@ -199,6 +221,11 @@ table.modindextable td { /* -- general body styles --------------------------------------------------- */ +div.body { + min-width: 360px; + max-width: 800px; +} + div.body p, div.body dd, div.body li, div.body blockquote { -moz-hyphens: auto; -ms-hyphens: auto; @@ -240,19 +267,25 @@ p.rubric { font-weight: bold; } -img.align-left, .figure.align-left, object.align-left { +img.align-left, figure.align-left, .figure.align-left, object.align-left { clear: left; float: left; margin-right: 1em; } -img.align-right, .figure.align-right, object.align-right { +img.align-right, figure.align-right, .figure.align-right, object.align-right { clear: right; float: right; margin-left: 1em; } -img.align-center, .figure.align-center, object.align-center { +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { display: block; margin-left: auto; margin-right: auto; @@ -266,30 +299,45 @@ img.align-center, .figure.align-center, object.align-center { text-align: center; } +.align-default { + text-align: center; +} + .align-right { text-align: right; } /* -- sidebars -------------------------------------------------------------- */ -div.sidebar { +div.sidebar, +aside.sidebar { margin: 0 0 0.5em 1em; border: 1px solid #ddb; - padding: 7px 7px 0 7px; + padding: 7px; background-color: #ffe; width: 40%; float: right; + clear: right; + overflow-x: auto; } p.sidebar-title { font-weight: bold; } +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + /* -- topics ---------------------------------------------------------------- */ +nav.contents, +aside.topic, div.topic { border: 1px solid #ccc; - padding: 7px 7px 0 7px; + padding: 7px; margin: 10px 0 10px 0; } @@ -311,10 +359,6 @@ div.admonition dt { font-weight: bold; } -div.admonition dl { - margin-bottom: 0; -} - p.admonition-title { margin: 0px 10px 5px 0px; font-weight: bold; @@ -325,13 +369,48 @@ div.body p.centered { margin-top: 25px; } +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + /* -- tables ---------------------------------------------------------------- */ table.docutils { + margin-top: 10px; + margin-bottom: 10px; border: 0; border-collapse: collapse; } +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + table caption span.caption-number { font-style: italic; } @@ -347,10 +426,6 @@ table.docutils td, table.docutils th { border-bottom: 1px solid #aaa; } -table.footnote td, table.footnote th { - border: 0 !important; -} - th { text-align: left; padding-right: 5px; @@ -365,22 +440,34 @@ table.citation td { border-bottom: none; } +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + /* -- figures --------------------------------------------------------------- */ -div.figure { +div.figure, figure { margin: 0.5em; padding: 0.5em; } -div.figure p.caption { +div.figure p.caption, figcaption { padding: 0.3em; } -div.figure p.caption span.caption-number { +div.figure p.caption span.caption-number, +figcaption span.caption-number { font-style: italic; } -div.figure p.caption span.caption-text { +div.figure p.caption span.caption-text, +figcaption span.caption-text { } /* -- field list styles ----------------------------------------------------- */ @@ -405,6 +492,74 @@ table.field-list td, table.field-list th { hyphens: manual; } +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + /* -- other body styles ----------------------------------------------------- */ ol.arabic { @@ -427,11 +582,81 @@ ol.upperroman { list-style: upper-roman; } +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + dl { margin-bottom: 15px; } -dd p { +dd > :first-child { margin-top: 0px; } @@ -445,6 +670,21 @@ dd { margin-left: 30px; } +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + dt:target, span.highlighted { background-color: #fbe54e; } @@ -458,14 +698,6 @@ dl.glossary dt { font-size: 1.1em; } -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - .versionmodified { font-style: italic; } @@ -504,11 +736,26 @@ dl.glossary dt { font-style: oblique; } +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + abbr, acronym { border-bottom: dotted 1px; cursor: help; } +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + /* -- code displays --------------------------------------------------------- */ pre { @@ -516,29 +763,69 @@ pre { overflow-y: hidden; /* fixes display issues on Chrome browsers */ } +pre, div[class*="highlight-"] { + clear: both; +} + span.pre { -moz-hyphens: none; -ms-hyphens: none; -webkit-hyphens: none; hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; } td.linenos pre { - padding: 5px 0px; border: 0; background-color: transparent; color: #aaa; } table.highlighttable { - margin-left: 0.5em; + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; } table.highlighttable td { - padding: 0 0.5em 0 0.5em; + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; } div.code-block-caption { + margin-top: 1em; padding: 2px 5px; font-size: small; } @@ -547,8 +834,14 @@ div.code-block-caption code { background-color: transparent; } -div.code-block-caption + div > div.highlight > pre { - margin-top: 0; +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ } div.code-block-caption span.caption-number { @@ -560,21 +853,7 @@ div.code-block-caption span.caption-text { } div.literal-block-wrapper { - padding: 1em 1em 0; -} - -div.literal-block-wrapper div.highlight { - margin: 0; -} - -code.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -code.descclassname { - background-color: transparent; + margin: 1em 0; } code.xref, a code { @@ -615,8 +894,7 @@ span.eqno { } span.eqno a.headerlink { - position: relative; - left: 0px; + position: absolute; z-index: 1; } diff --git a/docs/static/bootstrap.min.css b/docs/static/bootstrap.min.css new file mode 100644 index 0000000..ed3905e --- /dev/null +++ b/docs/static/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-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:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}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{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}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;-webkit-box-shadow:none!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^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.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}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}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}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;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}.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-family:inherit;font-weight:500;line-height:1.1;color:inherit}.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,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.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%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;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%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,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{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;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.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{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}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;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;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;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}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.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}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{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}.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}.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{border:1px solid #ddd}.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}.table-hover>tbody>tr:hover{background-color:#f5f5f5}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}.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{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;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}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;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,-webkit-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}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.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;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}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}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.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}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.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}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.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);-webkit-box-shadow:none;box-shadow:none;opacity:.65}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;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.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.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;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.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.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;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.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.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;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.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.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;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.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.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;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.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.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-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.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-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;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-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-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@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{display:none}.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;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;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}}.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}}.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}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@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-top:8px;margin-right:15px;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;-webkit-box-shadow:none;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;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-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)}@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}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.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-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 .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-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.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{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.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-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 .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-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.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}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}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}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.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;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{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}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.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}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}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.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}.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 .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}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 .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}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 .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}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 .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}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}.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}.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{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.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}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{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: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,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr: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: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,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr: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>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.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-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{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}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.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:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{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-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{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}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{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}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{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}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{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}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.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}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/docs/static/bootstrap.min.js b/docs/static/bootstrap.min.js new file mode 100644 index 0000000..9bcd2fc --- /dev/null +++ b/docs/static/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
    ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/docs/static/comment-bright.png b/docs/static/comment-bright.png deleted file mode 100644 index 15e27ed..0000000 Binary files a/docs/static/comment-bright.png and /dev/null differ diff --git a/docs/static/comment-close.png b/docs/static/comment-close.png deleted file mode 100644 index 4d91bcf..0000000 Binary files a/docs/static/comment-close.png and /dev/null differ diff --git a/docs/static/comment.png b/docs/static/comment.png deleted file mode 100644 index dfbc0cb..0000000 Binary files a/docs/static/comment.png and /dev/null differ diff --git a/docs/static/doctools.js b/docs/static/doctools.js index 0c15c00..d06a71d 100644 --- a/docs/static/doctools.js +++ b/docs/static/doctools.js @@ -2,310 +2,155 @@ * doctools.js * ~~~~~~~~~~~ * - * Sphinx JavaScript utilities for all documentation. + * Base JavaScript utilities for all Sphinx HTML documentation. * - * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); } - return result; }; -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var bbox = span.getBBox(); - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - var parentOfText = node.parentNode.parentNode; - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} - /** * Small JavaScript module for the documentation. */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); }, /** * i18n support */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", // gettext and ngettext don't access this so that the functions // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated === 'undefined') - return string; - return (typeof translated === 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated === 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } }, - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; }, - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; }, /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + * helper function to focus on search bar */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); }, /** - * highlight the search words provided in the url in the text + * Initialise the domain index toggle buttons */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - if (!body.length) { - body = $('body'); + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('') - .appendTo($('#searchbox')); - } - }, - - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) === 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, + }; - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this === '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); }, - initOnKeyListeners: function() { - $(document).keyup(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box or textarea - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); } - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); } + break; } } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } }); - } + }, }; // quick alias for translations -_ = Documentation.gettext; +const _ = Documentation.gettext; -$(document).ready(function() { - Documentation.init(); -}); \ No newline at end of file +_ready(Documentation.init); diff --git a/docs/static/documentation_options.js b/docs/static/documentation_options.js new file mode 100644 index 0000000..e2f43b8 --- /dev/null +++ b/docs/static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '0.9', + LANGUAGE: 'en-US', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/docs/static/down-pressed.png b/docs/static/down-pressed.png deleted file mode 100644 index 5756c8c..0000000 Binary files a/docs/static/down-pressed.png and /dev/null differ diff --git a/docs/static/down.png b/docs/static/down.png deleted file mode 100644 index 1b3bdad..0000000 Binary files a/docs/static/down.png and /dev/null differ diff --git a/docs/static/googledrive-.png b/docs/static/googledrive-.png new file mode 100644 index 0000000..31d730e Binary files /dev/null and b/docs/static/googledrive-.png differ diff --git a/docs/static/googledrive.jpg b/docs/static/googledrive.jpg new file mode 100644 index 0000000..8e13713 Binary files /dev/null and b/docs/static/googledrive.jpg differ diff --git a/docs/static/jquery-3.1.0.js b/docs/static/jquery-3.1.0.js deleted file mode 100644 index f2fc274..0000000 --- a/docs/static/jquery-3.1.0.js +++ /dev/null @@ -1,10074 +0,0 @@ -/*eslint-disable no-unused-vars*/ -/*! - * jQuery JavaScript Library v3.1.0 - * https://jquery.com/ - * - * Includes Sizzle.js - * https://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * https://jquery.org/license - * - * Date: 2016-07-07T21:44Z - */ -( function( global, factory ) { - - "use strict"; - - if ( typeof module === "object" && typeof module.exports === "object" ) { - - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common -// enough that all such attempts are guarded in a try block. -"use strict"; - -var arr = []; - -var document = window.document; - -var getProto = Object.getPrototypeOf; - -var slice = arr.slice; - -var concat = arr.concat; - -var push = arr.push; - -var indexOf = arr.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var fnToString = hasOwn.toString; - -var ObjectFunctionString = fnToString.call( Object ); - -var support = {}; - - - - function DOMEval( code, doc ) { - doc = doc || document; - - var script = doc.createElement( "script" ); - - script.text = code; - doc.head.appendChild( script ).parentNode.removeChild( script ); - } -/* global Symbol */ -// Defining this global in .eslintrc would create a danger of using the global -// unguarded in another place, it seems safer to define global only for this module - - - -var - version = "3.1.0", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android <=4.0 only - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = jQuery.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - - // As of jQuery 3.0, isNumeric is limited to - // strings and numbers (primitives or objects) - // that can be coerced to finite numbers (gh-2662) - var type = jQuery.type( obj ); - return ( type === "number" || type === "string" ) && - - // parseFloat NaNs numeric-cast false positives ("") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - !isNaN( obj - parseFloat( obj ) ); - }, - - isPlainObject: function( obj ) { - var proto, Ctor; - - // Detect obvious negatives - // Use toString instead of jQuery.type to catch host objects - if ( !obj || toString.call( obj ) !== "[object Object]" ) { - return false; - } - - proto = getProto( obj ); - - // Objects with no prototype (e.g., `Object.create( null )`) are plain - if ( !proto ) { - return true; - } - - // Objects with prototype are plain iff they were constructed by a global Object function - Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; - return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; - }, - - isEmptyObject: function( obj ) { - - /* eslint-disable no-unused-vars */ - // See https://github.com/eslint/eslint/issues/6125 - var name; - - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - DOMEval( code ); - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE <=9 - 11, Edge 12 - 13 - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android <=4.0 only - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - // Support: Android <=4.0 only, PhantomJS 1 only - // push.apply(_, arraylike) throws on ancient WebKit - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: real iOS 8.2 only (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.3.0 - * https://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-01-04 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // https://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + identifier + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + identifier + ")" ), - "CLASS": new RegExp( "^\\.(" + identifier + ")" ), - "TAG": new RegExp( "^(" + identifier + "|[*])" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - - // CSS escapes - // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // CSS string/identifier serialization - // https://drafts.csswg.org/cssom/#common-serializing-idioms - rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g, - fcssescape = function( ch, asCodePoint ) { - if ( asCodePoint ) { - - // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER - if ( ch === "\0" ) { - return "\uFFFD"; - } - - // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; - } - - // Other potentially-special ASCII characters get backslash-escaped - return "\\" + ch; - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }, - - disabledAncestor = addCombinator( - function( elem ) { - return elem.disabled === true; - }, - { dir: "parentNode", next: "legend" } - ); - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var m, i, elem, nid, match, groups, newSelector, - newContext = context && context.ownerDocument, - - // nodeType defaults to 9, since context defaults to document - nodeType = context ? context.nodeType : 9; - - results = results || []; - - // Return early from calls with invalid selector or context - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - // Try to shortcut find operations (as opposed to filters) in HTML documents - if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - context = context || document; - - if ( documentIsHTML ) { - - // If the selector is sufficiently simple, try using a "get*By*" DOM method - // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - - // ID selector - if ( (m = match[1]) ) { - - // Document context - if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - - // Element context - } else { - - // Support: IE, Opera, Webkit - // TODO: identify versions - // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && - contains( context, elem ) && - elem.id === m ) { - - results.push( elem ); - return results; - } - } - - // Type selector - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && - context.getElementsByClassName ) { - - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // Take advantage of querySelectorAll - if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 - // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { - - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", (nid = expando) ); - } - - // Prefix every selector in the list - groups = tokenize( selector ); - i = groups.length; - while ( i-- ) { - groups[i] = "#" + nid + " " + toSelector( groups[i] ); - } - newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {function(string, object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created element and returns a boolean result - */ -function assert( fn ) { - var el = document.createElement("fieldset"); - - try { - return !!fn( el ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( el.parentNode ) { - el.parentNode.removeChild( el ); - } - // release memory in IE - el = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = arr.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - a.sourceIndex - b.sourceIndex; - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for :enabled/:disabled - * @param {Boolean} disabled true for :disabled; false for :enabled - */ -function createDisabledPseudo( disabled ) { - // Known :disabled false positives: - // IE: *[disabled]:not(button, input, select, textarea, optgroup, option, menuitem, fieldset) - // not IE: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable - return function( elem ) { - - // Check form elements and option elements for explicit disabling - return "label" in elem && elem.disabled === disabled || - "form" in elem && elem.disabled === disabled || - - // Check non-disabled form elements for fieldset[disabled] ancestors - "form" in elem && elem.disabled === false && ( - // Support: IE6-11+ - // Ancestry is covered for us - elem.isDisabled === disabled || - - // Otherwise, assume any non-