From 2f10e42cf4544d881e16b22051aca6d87331322a Mon Sep 17 00:00:00 2001 From: Marcin Haba Date: Sun, 21 May 2017 18:28:13 +0200 Subject: [PATCH] baculum: New Baculum API and Baculum Web Squashed commit of the following: commit 16c2ee1fbe3091d33bc4e35b478eb426acf0efdf Merge: f954875 26499de Author: Marcin Haba Date: Sun May 21 18:16:53 2017 +0200 Merge branch 'Branch-7.9' into baculum_config_module commit f954875cab85c7358f00dfd605f2f1503ff97ebc Author: Marcin Haba Date: Sun May 21 17:55:15 2017 +0200 baculum: Update .gitignore commit bca524db009687e5b493310056a1858e3b9a7a96 Author: Marcin Haba Date: Sun May 21 11:48:02 2017 +0200 baculum: Keep README and INSTALL files up-to-date commit c7e7c7383fc1e612eb5869ce5b334f4cebab3b11 Author: Marcin Haba Date: Sun May 21 11:29:43 2017 +0200 baculum: Update sudoers.d examples commit b9c3ece6a6e83cc187a7155ec4ababa2f71eca06 Author: Marcin Haba Date: Sun May 21 11:26:55 2017 +0200 baculum: Remove sudo config for nginx commit 4bde6a3a51744dc0cc8a5de745fede807da01d28 Author: Marcin Haba Date: Sun May 21 11:26:18 2017 +0200 baculum: Remove old nginx config commit c4b586e154c7ec6f1ce5b032bc0a9dc1e2fa0ebc Author: Marcin Haba Date: Sun May 21 11:23:18 2017 +0200 baculum: Remove old, outdated and unused unit tests commit ac66e622027a1a450df69008402a6c5c36dd4747 Author: Marcin Haba Date: Sun May 21 11:20:41 2017 +0200 baculum: Tweak rpm packages dependencies commit b24c7afdb93f37c007f60dcd7c3506b8e757e837 Author: Marcin Haba Date: Sun May 21 11:20:14 2017 +0200 baculum: Update AUTHORS file commit c8b274b37652a4faef3d65851c0cc1122d2ff6e5 Author: Marcin Haba Date: Sun May 21 10:51:06 2017 +0200 baculum: Update baculum version commit 4b8cb333de548007f762213dfd5d1e89940f01e5 Author: Marcin Haba Date: Sun May 21 10:33:39 2017 +0200 baculum: Add genereted rpm and deb meta-files commit e77f5dd6428c90b72a41fbcfee3fff140147c3dd Author: Marcin Haba Date: Sun May 21 10:20:42 2017 +0200 baculum: Remove empty Portuguese translation for api commit b63ec564f1d94d92d4c2e912e7f42d37afdc3a49 Author: Marcin Haba Date: Sun May 21 10:17:03 2017 +0200 baculum: Add to new gui japanese translation from Ken Sawada commit ba5b077f700d5c6c412a0d033f0188a8913c384a Author: Marcin Haba Date: Sun May 21 10:05:42 2017 +0200 baculum: Change token refresh time value commit a27757d47c96bf9e7307806e9fcae74c6ab4ebba Author: Marcin Haba Date: Sun May 21 09:49:33 2017 +0200 baculum: Tweak text in api install wizard commit 827a92ac5db0da018fe4ee834ccd34297d60e71a Author: Marcin Haba Date: Sun May 21 09:44:16 2017 +0200 baculum: Default debug for web page is disabled commit 6bd920a2d74db8cdc0fd4b6a4a46601f215b231e Author: Marcin Haba Date: Sun May 21 06:11:39 2017 +0200 baculum: Update packages version to 7.9.0 commit 794f818fe505da03c5ef8c0ef522c07ea5eb3313 Author: Marcin Haba Date: Sun May 21 06:11:11 2017 +0200 baculum: Fix regexp in lighttpd config commit bcc13e8d91f1d69999d815f00fa70970229e1a33 Author: Marcin Haba Date: Sat May 20 20:28:34 2017 +0200 baculum: Fix switching between oauth2 and basic auth commit 210ea9e2b31478de8dbdb29ad1d15bdb2afcbfc0 Author: Marcin Haba Date: Sat May 20 20:27:58 2017 +0200 baculum: Fix basic auth params for api requests on lighttpd commit c319681ad373d60be27fdb46cf9a77a8043141ce Author: Marcin Haba Date: Sat May 20 18:58:24 2017 +0200 baculum: Remove no longer user endpoints commit d86496386494011849fa10408bffeac16873805f Author: Marcin Haba Date: Sat May 20 18:57:46 2017 +0200 baculum: On clients list there is not possible to remove main api client params commit 229cecdd391c9e40af00eaa35756911a18b19cde Author: Marcin Haba Date: Sat May 20 17:34:44 2017 +0200 baculum: Fix deleting expired authid and tokens commit 2106c9904d6e7aa845df5dc2b89d6e52753a4e32 Author: Marcin Haba Date: Sat May 20 17:34:03 2017 +0200 baculum: Tweak text and style commit d12e6204c7a6ac21076ccd4698b164b56a5eb494 Author: Marcin Haba Date: Sat May 20 16:11:35 2017 +0200 baculum: Fix web redirect url commit e529bba2c46e7bd4931c8c3191d4be05c567fcad Author: Marcin Haba Date: Sat May 20 15:46:09 2017 +0200 baculum: Update text in wizard commit 1fec0153b66d57915f2e7afd140d259a52345f0a Author: Marcin Haba Date: Sat May 20 15:40:07 2017 +0200 baculum: Add exit on switching user in web wizard commit ad42dee9c03a8a551520a238b2ecdba7e0fc69f9 Author: Marcin Haba Date: Sat May 20 15:28:30 2017 +0200 baculum: Add systemd units to deb meta-files commit 514d36ab0842f457173277e020b552844042d77c Author: Marcin Haba Date: Sat May 20 15:24:09 2017 +0200 baculum: Fix default language setting commit c5590fa9b9152c3201dd8f1b961fd48379cdeae9 Author: Marcin Haba Date: Sat May 20 15:06:04 2017 +0200 baculum: Remove sysvinit startup scripts for lighttpd commit d8402f8a564536e44572f6b2b59b6413f5ec3917 Author: Marcin Haba Date: Sat May 20 15:02:03 2017 +0200 baculum: Tweak system unit description commit f98c47231093576e734c7b821626f6dc4a40f01e Author: Marcin Haba Date: Sat May 20 11:59:13 2017 +0200 baculum: Change pidfile name for api and web services commit 5d47ba2fe304abf98370f0deac025376e2391937 Author: Marcin Haba Date: Sat May 20 11:35:07 2017 +0200 baculum: Tweak remove exit when user is switched commit c3d5131361fe264151c839a37cd338efd7d4d9cf Author: Marcin Haba Date: Sat May 20 11:19:41 2017 +0200 baculum: Fix main page for lighttpd server commit 07fc3f858b6649c709ca3e30973ab44877fbad07 Author: Marcin Haba Date: Sun May 14 18:33:57 2017 +0200 baculum: Fix combobox fields in schedule resource commit 030f215eb541727a92b59bf8e5ae5c7d2d70f38b Author: Marcin Haba Date: Sun May 14 17:43:22 2017 +0200 baculum: Fix getting autochanger from status storage output commit ac5457b600c7cb8f64764249a8dc3089ac538daf Author: Marcin Haba Date: Sun May 14 17:19:24 2017 +0200 baculum: Fix fileset regexp commit e1f40abb783af5e846916648d0a3d1bde6177e46 Author: Marcin Haba Date: Sun May 14 16:48:30 2017 +0200 baculum: Add missing breaks to database switch commit 2afafb2afa63b9da4a89c24a8d79d1cb63815e88 Author: Marcin Haba Date: Sun May 14 16:30:38 2017 +0200 baculum: Fix removing license file in prerm deb packages script commit 3f08ae849a3342cde134f4f39c1167ca050fc269 Author: Marcin Haba Date: Sun May 14 16:24:32 2017 +0200 baculum: Add new 7.9 table columns to object-relational mapper commit 4f9651bdfc38a27ce5ab57f4ee84604965fb7148 Author: Marcin Haba Date: Sun May 14 16:23:48 2017 +0200 baculum: Fix console and volume tools commit 0f829cb8006f430445b9712669b18574c605d9d8 Author: Marcin Haba Date: Sun May 14 14:34:35 2017 +0200 baculum: Add missing client resource in new resource menu commit a3ff71ff675b9f3d63a4c55e911494aaf3cd8cc5 Author: Marcin Haba Date: Sun May 14 14:30:15 2017 +0200 baculum: Tweak remove debug commit ffd825e898b8976259807a0e98da0da67935a0ea Author: Marcin Haba Date: Sun May 14 14:22:44 2017 +0200 baculum: Fix separating web and api logs commit 0a0749999a6dd6adcbfbb55900f47a436a4adf26 Author: Marcin Haba Date: Sun May 14 13:33:06 2017 +0200 baculum: Tweak texts in web wizard commit 557d182d9e9dfbb041330f24f81e2554ebb6100a Author: Marcin Haba Date: Sun May 14 13:32:15 2017 +0200 baculum: Fix missing fields in data description file commit 595db20f49caaab9514383b7c71effd6d11ff704 Author: Marcin Haba Date: Sun May 14 12:44:20 2017 +0200 baculum: Tweak comment remove and edit buttons (still unused) commit 8565bbe282dfaed8de3a5a31b1abdfd29f0acd95 Author: Marcin Haba Date: Sun May 14 12:37:13 2017 +0200 baculum: Fix slide window checkboxes setting commit cb6d45029d7c99ec47b12ad63d89d11356b92052 Author: Marcin Haba Date: Sun May 14 12:36:22 2017 +0200 baculum: Avoid doing double requests by bactivebutton control commit aaecca331a83b02e59fabd6227709cb2a309d846 Author: Marcin Haba Date: Sun May 14 11:44:05 2017 +0200 baculum: Stop writing to the catalog commit 469f03f2eb35500b4d6fce1de34f8f04a2a065b0 Author: Marcin Haba Date: Sun May 14 09:30:43 2017 +0200 baculum: Tweak redirect uri text commit 0c913cbc929224307fe37f6ed22166d9a458c3bc Author: Marcin Haba Date: Sat May 13 23:39:25 2017 +0200 baculum: Add missing javascript directory to deb meta-files commit 56e4432ae9f373c37974d5d260055de9f9231223 Author: Marcin Haba Date: Sat May 13 21:41:42 2017 +0200 baculum: Tweak required field validators commit ca21f2eede3f55042f19d1eed433de2f18f5a19e Author: Marcin Haba Date: Sat May 13 09:09:51 2017 +0200 baculum: Fix slide window full width commit f2c6e813ebc4f17d79275d3594ef444c3b472c94 Author: Marcin Haba Date: Sat May 13 03:48:25 2017 +0200 baculum: Start work on fields validation commit f0a6e94341b16a77a648d361c2c2c26df3a2b7eb Author: Marcin Haba Date: Fri May 12 08:06:45 2017 +0200 baculum: Fix panel for basic HTTP users commit f1444b029c3370be4588d069ed615bed9b6c8f80 Author: Marcin Haba Date: Thu May 11 23:39:36 2017 +0200 baculum: Remove custom bconsole function commit 428a10a0428490b19b69cbe59dc6e376883dcc2e Author: Marcin Haba Date: Thu May 11 23:38:20 2017 +0200 baculum: Remove old custom bconsole path in config commit 59b0d5229366678e56fb3e036ee9ccbde3088065 Author: Marcin Haba Date: Thu May 11 22:55:42 2017 +0200 baculum: Add including javascript directory in Makefile commit 8809234d59336be1360025ad5d413f35e0bb3350 Author: Marcin Haba Date: Thu May 11 22:52:16 2017 +0200 baculum: Improvements to api main page (asynchronous actions) commit 06c0e958c45c443811911266849e206c0f575158 Author: Marcin Haba Date: Thu May 11 21:08:32 2017 +0200 baculum: Rearrange elements on api main page (use tabs) commit 39cc38418765d4e184d2d8fb911b50d2325d333e Author: Marcin Haba Date: Thu May 11 17:58:49 2017 +0200 baculum: Tweak main page redirection commit b46d93212df29bcae6e0c962f189e9ff71de2c6a Author: Marcin Haba Date: Thu May 11 08:00:55 2017 +0200 baculum: List api clients (basic and oauth2) commit f144ff5e40716fcf3f7d645dc310416dbc6b72d6 Author: Marcin Haba Date: Tue May 9 22:06:38 2017 +0200 baculum: Create directory for javascript in api side commit d41d511ebaace7efd2476cf4ed40ff493cce30a3 Author: Marcin Haba Date: Tue May 9 22:04:53 2017 +0200 baculum: New control to add auth clients to api part commit c241f534e246658da4c939803487abdbfb0ff195 Author: Marcin Haba Date: Tue May 9 19:24:52 2017 +0200 baculum: Reduce error page commit a890f3dc348f76a85f673b40a042069896a7aac1 Author: Marcin Haba Date: Tue May 9 08:21:14 2017 +0200 baculum: Add scope validation for urls commit 05ba2dd517fb769d29fccce93249e315642d1791 Author: Marcin Haba Date: Mon May 8 20:42:51 2017 +0200 baculum: Fix sudo param for test bconsole commit b1751d114957a50509e8e0fb468db58b4373441d Author: Marcin Haba Date: Mon May 8 20:42:22 2017 +0200 baculum: Move main page to panel directory commit d3eee1e82085c5b2f06169b135d1f9d29696d2d4 Author: Marcin Haba Date: Sun May 7 19:58:23 2017 +0200 baculum: Add default api page commit 14359e3187cb25994878de06dd1c4ecf637ae5b2 Author: Marcin Haba Date: Sun May 7 18:23:19 2017 +0200 baculum: Add force option to bconsole cfg setting commit 5baf93fa1eaa0ec5cc139177f1aa46d19c84bfff Author: Marcin Haba Date: Sun May 7 18:08:11 2017 +0200 baculum: Fix errors handiling in web wizard commit ccf8982622679fdd9426057bcc3b55d16908ee76 Author: Marcin Haba Date: Sun May 7 18:07:04 2017 +0200 baculum: Improve setting bconsole cfg and cmd commit e0a52405ff4ea3bb0f708104e805f57affc2edad Author: Marcin Haba Date: Sat May 6 13:08:33 2017 +0200 baculum: Add errors handling to web part commit 74cfc4167f158ed4498e4a1aad439a42d4bfbfab Author: Marcin Haba Date: Fri May 5 22:48:34 2017 +0200 baculum: Fix typo in array key commit ab8205571f7333e981d75089c8f123c02822dc08 Author: Marcin Haba Date: Fri May 5 22:42:07 2017 +0200 baculum: Tweak bconsole config path parameter commit 6b5e6cd5b3535f6eb3fbf9498f35b9ea7c484ccc Author: Marcin Haba Date: Fri May 5 22:37:19 2017 +0200 baculum: Add missing parameter to set tokens method commit 4f27433a7cdab91f1b4e65b90b7fa4eaa191e2ed Author: Marcin Haba Date: Fri May 5 22:36:28 2017 +0200 baculum: Fix web apache2 prerm file (deb packages) commit 643d239b2a51cffe177e8121f1e6c812fd8c3ea4 Author: Marcin Haba Date: Fri May 5 22:22:09 2017 +0200 baculum: Add capability to define dedicated bconsole config commit 29e33e57e4fd1e1de94e5ba158600d9fe6204706 Author: Marcin Haba Date: Fri May 5 21:14:55 2017 +0200 baculum: Fix pre-selected values in web wizard commit 7f8a0414aafb8af1fa5d232035cae5fa7dcd103c Author: Marcin Haba Date: Fri May 5 04:59:59 2017 +0200 baculum: Redirect to wizard when main host config is deleted commit cebc8eda25f2ecd9aa19139f47171014509968e9 Author: Marcin Haba Date: Thu May 4 21:24:00 2017 +0200 baculum: Add http basic auth support to api home page commit 19ba9946ffe718e92ede8a461932e249297b72ea Author: Marcin Haba Date: Thu May 4 07:45:51 2017 +0200 baculum: Not provide default certificate in packages commit 5674f98aef7f15ef89966363463d4e1d6b510f37 Author: Marcin Haba Date: Thu May 4 07:36:46 2017 +0200 baculum: Update web server configs (default oauth2 disabled) commit 2952dc88d07959f67735fd95833eb5a0938554e5 Author: Marcin Haba Date: Wed May 3 19:38:02 2017 +0200 baculum: Add http headers to oauth2 callback page commit fb4d9da93e3c51e82c07631c32d1ddf3c977cecb Author: Marcin Haba Date: Wed May 3 19:37:06 2017 +0200 baculum: Tweak error messages in add new host portlet commit a3a521cb9d92ecd2048b95cb38dfd791fe709c84 Author: Marcin Haba Date: Wed May 3 19:35:39 2017 +0200 baculum: Add lost refresh icon commit 4d71faf140e7f656c2f901a8ca548ed27082e502 Author: Marcin Haba Date: Wed May 3 19:34:42 2017 +0200 baculum: New styles for api home page commit 417313bd4a534dca0ee703959942dc107244b2c2 Author: Marcin Haba Date: Wed May 3 19:31:04 2017 +0200 baculum: Create oauth2 javascript client to run oauth2 samples commit df27af1e282d41e43b392d4d74511dcf8810d25e Author: Marcin Haba Date: Sun Apr 30 20:17:24 2017 +0200 baculum: Add capability to remove api host on web gui commit 956e830140a32e67a5d6f95f4d66a144674b7f6f Author: Marcin Haba Date: Sun Apr 30 18:53:42 2017 +0200 baculum: Tweak validation in api install wizard commit 5ac3326be99cb1cfeeb80d29cf9f39854c8235a3 Author: Marcin Haba Date: Sun Apr 30 16:44:07 2017 +0200 baculum: Fix missing config path entry commit 784bf3be4df0383106fa2363af5210d6a92020d4 Author: Marcin Haba Date: Sun Apr 30 16:39:04 2017 +0200 baculum: Tweak deb package dependencies commit c62b751fa82b047d22f4a3fcef19080edae54c6d Author: Marcin Haba Date: Sun Apr 30 16:17:45 2017 +0200 baculum: Go to default page after saving api wizard commit 13431652bc62c68b6aca3d8655f8e40e824d5a82 Author: Marcin Haba Date: Sun Apr 30 16:09:38 2017 +0200 baculum: Update paths and apache redirection commit 562b6bcb3bc8ef720732de78db8623491a87cdf8 Author: Marcin Haba Date: Sun Apr 30 16:06:33 2017 +0200 baculum: Add default values to new host portlet commit 5edbcb9deec69e2e6180578ef3d0746ecbd1cf73 Author: Marcin Haba Date: Sun Apr 30 15:21:14 2017 +0200 baculum: Update cert info for deb metafiles commit 1adfcb2f19057041ce60ce930e7e276b29f722ea Author: Marcin Haba Date: Sun Apr 30 15:08:17 2017 +0200 baculum: Update conflicted packages in rpm spec file commit fea6e4055efb15ece4e7b012e68622badcf4a4c2 Author: Marcin Haba Date: Sun Apr 30 15:07:46 2017 +0200 baculum: Save auth params in new host portlet commit 1a0ec6eb15677bcdd86e3c3d0b4c007af5a51a8d Author: Marcin Haba Date: Sun Apr 30 14:23:21 2017 +0200 baculum: Tweak getting language value commit 9e0e174a458468006a6011142b7926d3ba36213c Author: Marcin Haba Date: Sun Apr 30 14:22:01 2017 +0200 baculum: Change log filenames and web redirect in deb and rpm metadata commit 61fe20f0e8907f95fce3f237d705837e0a8dc64c Author: Marcin Haba Date: Sun Apr 30 11:17:03 2017 +0200 baculum: Exclude .gitignore files during packaging commit 38a6e755ea84dc81b805731544cbdf20abefd9a6 Author: Marcin Haba Date: Sun Apr 30 11:09:04 2017 +0200 baculum: Provide cert and key files to lighttpd and apache directories commit b2f1aa12c9c0718d888e244c41847d467f9888ca Author: Marcin Haba Date: Sun Apr 30 10:50:39 2017 +0200 baculum: Tweak Makefile to not prompt key passphrase commit dad5374e69806861e2f65e6a6b334634d1e889c4 Author: Marcin Haba Date: Sun Apr 30 10:48:14 2017 +0200 baculum: Enable web browsers' ssl engine by default commit 3ea2e9cf6c25102d7a21d2089d63a749baeb4577 Author: Marcin Haba Date: Sun Apr 30 07:50:23 2017 +0200 baculum: Prepare deb packages files commit 4328e5c66b62853a99ee34ccee56f91659d88b09 Author: Marcin Haba Date: Sat Apr 29 22:25:02 2017 +0200 baculum: Updated lighttpd and apache configs commit 733c1b943efaf2809110fc6ec566fcaa4301ea90 Author: Marcin Haba Date: Sat Apr 29 22:22:45 2017 +0200 baculum: Add systemd units for api and web commit d6d17326ff965d0b2a19512290c63aba7fce57b9 Author: Marcin Haba Date: Sat Apr 29 22:21:30 2017 +0200 baculum: Enable client mode in new host portlet commit cb5453dd238c1461002b5e26759f85f9f8fa09ba Author: Marcin Haba Date: Sat Apr 29 22:20:50 2017 +0200 baculum: Finish oauth2 support in web wizard commit 0a30b7a5cc6ca19115b78682ba2bbc2bc726455f Author: Marcin Haba Date: Sat Apr 29 22:17:57 2017 +0200 baculum: Create host record and use it in api client commit d60045b03701f3730c38909352cfb116cedc0593 Author: Marcin Haba Date: Sat Apr 29 22:16:04 2017 +0200 baculum: Force refresh session on demand commit 73dda8bf89fcc2f8fcb406a0a4be6035fbafd94c Author: Marcin Haba Date: Sat Apr 29 19:04:27 2017 +0200 baculum: Tweak web server files commit 3e0fd90d6707535dbf2d2ff79c74a80d51cd8551 Author: Marcin Haba Date: Fri Apr 28 18:43:52 2017 +0200 baculum: Add oauth2 scope field to api wizard commit 38d84d2e0be887176e1fe4ca8ece30df756e2619 Author: Marcin Haba Date: Thu Apr 27 21:50:07 2017 +0200 baculum: Move generic oauth2 class to common files commit a947401c1c0074393449156ce736b8fd24cf861e Author: Marcin Haba Date: Thu Apr 27 21:44:57 2017 +0200 baculum: Current changes to api and web wizards commit ef38af71aa0ae3404ba8c35d5efd0ca67ae35289 Author: Marcin Haba Date: Thu Apr 27 21:42:13 2017 +0200 baculum: Fix session management commit 1c2e17c5066fbedc45b8826028cbf1e619fccd53 Author: Marcin Haba Date: Thu Apr 27 21:40:58 2017 +0200 baculum: Use tokens to authorize api requests many times commit 36e5043cdf96af8a1f3a00e65a1d84e4ca297040 Author: Marcin Haba Date: Wed Apr 26 17:57:23 2017 +0200 baculum: Check auth method and oauth2 tokens on request commit b40211e8595f8b5e259f6c11e3531f6adeb3f021 Author: Marcin Haba Date: Tue Apr 25 21:39:07 2017 +0200 baculum: Changes in api wizard to oauth2 commit 64dfdd3eccaec46de67111ca71bd835a4644b744 Author: Marcin Haba Date: Tue Apr 25 21:37:11 2017 +0200 baculum: Baculum specific changes to OAuth2 commit 77d2efa097901dbfa57aced567405892bce3062b Author: Marcin Haba Date: Tue Apr 25 21:30:17 2017 +0200 baculum: OAuth2 files funded by Bacula Systems, thank you. Files are adapted to Baculum already and they don't include refresh token function yet. commit 87a733209d9ad172b7276b78a6daa75698872063 Author: Marcin Haba Date: Sat Apr 22 23:36:53 2017 +0200 baculum: Split pages into two directories: API and Panel commit e8c762122b75447a045667194d3c926886571abc Author: Marcin Haba Date: Sat Apr 22 22:10:18 2017 +0200 baculum: Improve first install by api install wizard commit 53b888996c2604c41f69c96512f9607e9ee14af3 Author: Marcin Haba Date: Sat Apr 22 21:01:46 2017 +0200 baculum: Force checking connection to database commit 3685f050628aec78d4b7350c9bd6826d4a002eb6 Author: Marcin Haba Date: Sat Apr 22 20:49:47 2017 +0200 baculum: Move directive description file to data directory commit 732163de8ebd8a48c3c5f2db5163ca67f4ef26ce Author: Marcin Haba Date: Sat Apr 22 20:36:11 2017 +0200 baculum: Tweak buttons for restore and config wizards commit b00289fd4b2fe264029114ad0e5efa4cecc7cd12 Author: Marcin Haba Date: Sat Apr 22 20:09:26 2017 +0200 baculum: Use basic exceptions for catalog, console and config api features commit cd0eff6cf53ea567044f22fb6c5d967a70958a7c Author: Marcin Haba Date: Sat Apr 22 12:46:00 2017 +0200 baculum: Clean up web config wizard commit 883aa870d08cdbcaee88658045c8a8620307c2d2 Author: Marcin Haba Date: Sat Apr 22 12:08:14 2017 +0200 baculum: Strip index.php in url during switch to another user commit cfb4211d014e9b15a84fbcff4bb4018590cf6a68 Author: Marcin Haba Date: Sat Apr 22 12:07:23 2017 +0200 baculum: Remove debug files in spec file commit 5c79b79c753adb4322921149cb81db51dd6da33e Author: Marcin Haba Date: Sat Apr 22 11:29:24 2017 +0200 baculum: Split user config class into common, web and api parts commit 55554a2004baa110edd7a2f6b248d2f8fe31c7fc Author: Marcin Haba Date: Sat Apr 22 11:24:10 2017 +0200 baculum: Stop lighttpd service when package is uninstalled commit cedfce3cbaf00cfa6b952ba114fc4e9abd73de5e Author: Marcin Haba Date: Fri Apr 21 23:44:43 2017 +0200 baculum: Fix lighttpd config commit 277cdc783f1d21d4b53c7305425f3fdb85ecb82e Author: Marcin Haba Date: Fri Apr 21 22:45:39 2017 +0200 baculum: Update apache and lighttpd config for api and webgui commit bab3c6c1c3a020c37b27a099189cdbba0298146f Author: Marcin Haba Date: Fri Apr 21 22:44:46 2017 +0200 baculum: Rename home page into webhome commit 14a8d162204e0afae80a40e28a8a9cf19da34cbf Author: Marcin Haba Date: Fri Apr 21 20:36:30 2017 +0200 baculum: Tweak style for basic directive field types commit b1dd7982dcc4374eee2402d49dbcd35402cd8260 Author: Marcin Haba Date: Thu Apr 20 21:57:20 2017 +0200 baculum: Add property to determine if directive control is created commit e129d37fba641d406ea1aa8d55f1728f78b12a91 Author: Marcin Haba Date: Thu Apr 20 21:56:20 2017 +0200 baculum: Use new host control in config wizard step commit fd0cbda44c810917879caa90a27dab0f17129be8 Author: Marcin Haba Date: Thu Apr 20 21:55:38 2017 +0200 baculum: Add params to new host control commit 529dab8732194c9ccdfe28ca31532845cc52e010 Author: Marcin Haba Date: Thu Apr 20 19:18:12 2017 +0200 baculum: Add api host name field to new host form commit c92ff5e67d515d0f9458b108e897d6d8e3360735 Author: Marcin Haba Date: Thu Apr 20 08:18:48 2017 +0200 baculum: Not force values for new runscript or fileset commit c70ff1ff54e4f6de4c2046a4caee03ebffda3fa0 Author: Marcin Haba Date: Thu Apr 20 08:00:37 2017 +0200 baculum: Add relation to new resource container commit cf845f2a9323e9f28187113fe2584609385964ca Author: Marcin Haba Date: Thu Apr 20 07:59:15 2017 +0200 baculum: Update combobox values in data description file commit 1b57b3ccabee5215275c848ea6190621c13eff8a Author: Marcin Haba Date: Wed Apr 19 22:44:08 2017 +0200 baculum: Prepare form to add new API hosts commit 0a3f792d0ad1947d41e252f52e6a1470c4374882 Author: Marcin Haba Date: Wed Apr 19 22:42:00 2017 +0200 baculum: Add new runscript menu commit be265d2bd8ce6bf5b46a2be4969a3fc0c0878037 Author: Marcin Haba Date: Wed Apr 19 19:10:45 2017 +0200 baculum: Remove not used portlet commit 1df132a51ddf9f3a152bf3f5d197a81b643ec85c Author: Marcin Haba Date: Wed Apr 19 19:03:13 2017 +0200 baculum: Change runscript control to use groups commit 39344150b79cf25460ae27ab39167cefbd70e206 Author: Marcin Haba Date: Wed Apr 19 19:01:17 2017 +0200 baculum: Tweak text on the api home page commit aec4ecc8b22edc93cbb0de222f705903f79cc60d Author: Marcin Haba Date: Wed Apr 19 06:40:09 2017 +0200 baculum: Fix saving directive runscript control commit e04d283a1f2b0e8e04cf3e787ee87c8a5b77178e Author: Marcin Haba Date: Tue Apr 18 21:30:45 2017 +0200 baculum: Not load directive values by template commit 55012f3c173d3ee3199914666d86a615526482c5 Author: Marcin Haba Date: Tue Apr 18 20:34:23 2017 +0200 baculum: Tweak loading messages control commit 05aaeace37e3af32e36e4ada661c0cbcb629f913 Author: Marcin Haba Date: Tue Apr 18 19:47:41 2017 +0200 baculum: Change way of loading/saving base directive controls commit cc7bcb254e4a75b9c958c0b7933ce26a10c7339e Author: Marcin Haba Date: Mon Apr 17 20:05:28 2017 +0200 baculum: Create menu to add specific message values commit f744b83d4e8f9ceaa53a43417b204c97be6bee52 Author: Marcin Haba Date: Mon Apr 17 14:30:16 2017 +0200 baculum: Change prototype.js methods to jquery methods in config wizard commit d402593acc8d933620b92e9b6d6d751634a693f2 Author: Marcin Haba Date: Mon Apr 17 13:49:18 2017 +0200 baculum: Change way passing params to schedule control commit 02e9d1c0038e8718472f09fe798481ce3fa566b2 Author: Marcin Haba Date: Mon Apr 17 08:04:55 2017 +0200 baculum: Add error code connection to remote host problem commit 4e4364f58c0c41876b048639fe1fe97f53d90d38 Author: Marcin Haba Date: Mon Apr 17 06:41:59 2017 +0200 baculum: Update new patchs in .gitignore commit 32543cb3178213aa8d4303a580eec8f60d616040 Author: Marcin Haba Date: Sun Apr 16 23:07:02 2017 +0200 baculum: Simplify saving new resource commit 4176d06fbbddae1fadc892156a0f686dbe26ba36 Author: Marcin Haba Date: Sun Apr 16 19:29:22 2017 +0200 baculum: Change javascript in api wizard and api home page to new jquery syntax commit c727544f263dcbf10ab66b2945b6ff1414109d76 Author: Marcin Haba Date: Sun Apr 16 18:46:27 2017 +0200 baculum: Add auto-scrolling to new fileset options and files commit 895686f689d8ca8dd59623349a79cdc0ca1ec9e7 Author: Marcin Haba Date: Sun Apr 16 16:38:16 2017 +0200 baculum: Add reset and remove button to combobox and time period type controls commit d3d7b71ae6a49e20f48ed73488279ab18ae91332 Author: Marcin Haba Date: Sun Apr 16 14:01:04 2017 +0200 baculum: Add reset and remove button to directives type text commit fde6ca811e21082b3bc720ec25862360c654ba41 Author: Marcin Haba Date: Sun Apr 16 12:17:19 2017 +0200 baculum: Force values parameter in fileset control commit e0353f7e8a1be668206dbc327de57da5d6d92a32 Author: Marcin Haba Date: Sat Apr 15 10:27:22 2017 +0200 baculum: Simplify fileset options setting commit e6154cb0070e0e5d95db0de141ae31af332bc8ca Author: Marcin Haba Date: Fri Apr 14 22:02:16 2017 +0200 baculum: Fix to boolean directive values commit 2931ab4a6273c41229b4c0852ec3c314255bd23a Author: Marcin Haba Date: Fri Apr 14 20:53:08 2017 +0200 baculum: Fix boolean values when new resource is created commit bdf7cc76299b7ddcf0a7848268067feace46525e Author: Marcin Haba Date: Fri Apr 14 18:46:16 2017 +0200 baculum: Add config part loader and labels commit e9730cf06e1395bf5774f4ed47982d1fcc4e96a2 Author: Marcin Haba Date: Fri Apr 14 08:17:18 2017 +0200 baculum: Keep fileset field values between callbacks commit 2f6d9cada3ee708c59c7f104353b02db85caccd1 Author: Marcin Haba Date: Thu Apr 13 22:34:34 2017 +0200 baculum: Fix new exclude values commit 1db5e4ae1fc4ceb1df4e0732d4c278dd97ea33f8 Author: Marcin Haba Date: Thu Apr 13 22:00:29 2017 +0200 baculum: Work on new fileset fields commit 7c09bbc2f4be52b4fafd470467db0ef8b2bf6afe Author: Marcin Haba Date: Thu Apr 13 07:32:49 2017 +0200 baculum: Add new fileset menu commit 7fa7aaae04071688ccbcd5cb743769d41ea8deb1 Author: Marcin Haba Date: Wed Apr 12 18:30:19 2017 +0200 baculum: Change providing values to fileset control commit 292b0c8670f49f1a0a8b232134762ea4527142f7 Author: Marcin Haba Date: Tue Apr 11 22:52:05 2017 +0200 baculum: Load and save control properties by dedicated methods than control properties commit 201b9bc54a6b05a2102264c1aff0eabc54696ea7 Author: Marcin Haba Date: Tue Apr 11 08:36:05 2017 +0200 baculum: Tweak directive messages list commit a73a06e613a1873f663dcf6609841d7dbf8b2ff6 Author: Marcin Haba Date: Mon Apr 10 21:55:54 2017 +0200 baculum: Add save new messages resource commit 8fe662e0c7a8231a579908ec3a806bd47e7edede Author: Marcin Haba Date: Mon Apr 10 20:47:38 2017 +0200 baculum: Changes to create new resources in existing config commit f52076d51032455f58d96f8c19298006f1e7d1a0 Author: Marcin Haba Date: Sun Apr 9 21:43:36 2017 +0200 baculum: Rest changes to the new framework version commit da98af7a26b93530c5ecd7e29707b9ad7d5d4f6c Author: Marcin Haba Date: Sun Apr 9 17:51:41 2017 +0200 baculum: Prepare restore wizard to work with new framework commit 08cba294391e1bf7118c71e4d9a9677f328e4fab Author: Marcin Haba Date: Sun Apr 9 16:42:12 2017 +0200 baculum: Next part changes to prepare baculum for using new framework commit e70db2108ca02297618ad0b0a120be907c617a91 Author: Marcin Haba Date: Sun Apr 9 11:25:28 2017 +0200 baculum: Remove configs and logs commit 81ced6eeea647ef2bcef879beef639a34ecb8af5 Author: Marcin Haba Date: Sun Apr 9 11:19:10 2017 +0200 baculum: First part changes to prepare baculum for using new framework (prototype.js changed to jQuery) commit bea51401ef9153d2e9e0c49666a8f4e7408ff3fe Author: Marcin Haba Date: Sun Apr 9 11:12:54 2017 +0200 baculum: Update framework to version 3.3.2 commit ebbb5c9394aac37b4572640e487366bc04fbd135 Author: Marcin Haba Date: Sat Apr 8 22:06:51 2017 +0200 baculum: Change way to load/save data from messages control commit 0b3df6d9c9cbf5e38d4490d5b73e41598174b6ad Author: Marcin Haba Date: Sat Apr 8 15:33:38 2017 +0200 baculum: Prepare messages control to create new resource commit f8bae5b334b7c10f5f87736286c7e6a3ae111cbe Author: Marcin Haba Date: Fri Apr 7 20:05:55 2017 +0200 baculum: Add header text about new resource commit d26177df2ef3cab5dfe5a8baa91450b9b1cf639a Author: Marcin Haba Date: Fri Apr 7 19:38:09 2017 +0200 baculum: Move new resource menu to separate control commit 3dda9825151ce0bdb334c17650960d46256a3e6e Author: Marcin Haba Date: Fri Apr 7 18:17:18 2017 +0200 baculum: Add 'required' directive control property commit 01447a6de83b756b40ff35acb07d156126f4d963 Author: Marcin Haba Date: Thu Apr 6 19:11:06 2017 +0200 baculum: Set resource names for combobox controls in new resource form commit f3ff33c9a538b904b390d291c3b8c6e8c30ba94f Author: Marcin Haba Date: Thu Apr 6 06:19:32 2017 +0200 bweb: New menu to add new resources commit 08d6b2968e11f9fec8741bab0dddbcd79dff095e Author: Marcin Haba Date: Wed Apr 5 07:46:04 2017 +0200 baculum: Tweak styles commit f7ce3d9bf93ba7f40eeb5a382e162703ab73f45f Author: Marcin Haba Date: Wed Apr 5 07:45:23 2017 +0200 baculum: Use -R json tools option only for bdirjson commit 9f9dc9ac0a45a604ce03bbb952c36f99c9bdc7d8 Author: Marcin Haba Date: Wed Apr 5 07:44:39 2017 +0200 baculum: Add storage daemon and file daemon destinations commit ab01b0a2034a581c50b49b67a8ef1f2c03ca6bfc Author: Marcin Haba Date: Tue Apr 4 21:52:09 2017 +0200 baculum: Add action loader icons to save button commit 23212989606db87cbb7d71e51e4e8eb3d64859bb Author: Marcin Haba Date: Tue Apr 4 21:51:30 2017 +0200 baculum: Fix multiple saving the same form commit f755fcd37d0621ddfd8a73aa6650056a7cba1edd Author: Marcin Haba Date: Tue Apr 4 20:45:37 2017 +0200 baculum: Keep directive field values between callbacks commit e7f7eef295e03ca183331988b2a2973b578723b4 Author: Marcin Haba Date: Mon Apr 3 22:53:46 2017 +0200 baculum: Add runscript control commit f180d4ea87dc51ab7985e416140dc3e2b2d6c36a Author: Marcin Haba Date: Sun Apr 2 21:03:24 2017 +0200 baculum: Misc changes to schedule and messages controls commit f9cceb6115d1122f835d14b15fc50b1f6ce3285b Author: Marcin Haba Date: Sun Apr 2 16:04:42 2017 +0200 baculum: Save config in messages control commit 10d18961ff007431025c20122ca418e8f5464630 Author: Marcin Haba Date: Sat Apr 1 23:17:06 2017 +0200 baculum: Continue preparing config to save messages control commit e3c746a5dfdd00128372094974174c17a43e5527 Author: Marcin Haba Date: Sat Apr 1 17:19:06 2017 +0200 baculum: Prepare config to save messages control commit 2e8c98861c504b5cb1f3dd265aceab67bc2ca79a Author: Marcin Haba Date: Thu Mar 30 20:18:36 2017 +0200 baculum: Start work on Messages control commit 362f8d9db57e825933b0e55ed03189c0a589375f Author: Marcin Haba Date: Sun Mar 26 11:35:40 2017 +0200 baculum: Save schedule resource in valid form commit e4743ed380a7f59563d588b893668955195ef52c Author: Marcin Haba Date: Sat Mar 25 21:45:19 2017 +0100 baculum: Add weeks to schedule control commit 4a5c5c18d68b1b632e7f515375f91ab12d52690a Author: Marcin Haba Date: Sat Mar 25 21:16:41 2017 +0100 baculum: Add hour and minute to schedule control commit d27c75609047bd5c6c4d5906b18aa1f1b50e5ddb Author: Marcin Haba Date: Sun Mar 12 14:44:09 2017 +0100 baculum: Add day of week range to schedule control commit a93197461dc2eab25cd5b11c67d81e617562a175 Author: Marcin Haba Date: Thu Feb 2 09:00:57 2017 +0100 baculum: More work on schedule control commit c33e7a2ce7cb08eb854cdef6cd7fa5864b7db945 Author: Marcin Haba Date: Tue Jan 31 21:04:44 2017 +0100 baculum: Continue work on the schedule control commit ab6104da853e622eb89f349f11354b0a5eaed4cb Author: Marcin Haba Date: Sun Jan 29 17:16:58 2017 +0100 baculum: Work on the control to manage schedule resource commit 2b482037c51839cd586e7073b6025d9f5f29dec6 Author: Marcin Haba Date: Sat Jan 28 20:18:12 2017 +0100 baculum: Tweak config values treating commit 3a78a913d94ebdb479ccdfb56b11c045a36879e4 Author: Marcin Haba Date: Sat Jan 28 18:07:17 2017 +0100 baculum: Simplify save resource config commit a3d5cb5f9fd018a85a972d967640e7869d13a8b7 Author: Marcin Haba Date: Fri Jan 27 08:40:04 2017 +0100 baculum: Save nested subresources in config commit caaa482952d5aac476db832accd190e12b8b6c27 Author: Marcin Haba Date: Sat Jan 21 14:41:13 2017 +0100 baculum: Improve saving fileset values commit 864469d9a8f201cca7345b8868b7bc83b9c41af8 Author: Marcin Haba Date: Sun Jan 15 15:14:19 2017 +0100 baculum: Prepare to save values from fileset resource control commit 61a61a6647346eaff98ffbe04e3a583ac5c3ab6b Author: Marcin Haba Date: Thu Dec 22 19:07:17 2016 +0100 baculum: New FileSet control supports Excludes commit 730f3d57e1cf8693ab1e81830bd7096f067885f4 Author: Marcin Haba Date: Thu Dec 22 17:32:09 2016 +0100 baculum: Add support for FileSets and options commit 05223e210d20632e9b8feb98aa80e5d45954f736 Author: Marcin Haba Date: Thu Dec 22 17:30:35 2016 +0100 baculum: Check if resource names is array type commit 0443b6c2bbfb2976e23b7f3f11bad87363e520c1 Author: Marcin Haba Date: Thu Dec 22 17:29:00 2016 +0100 baculum: Add Data property to directive list template commit a800316a02adc9a59a92b5b62b4859669709e3d8 Author: Marcin Haba Date: Thu Dec 22 17:25:18 2016 +0100 baculum: Update FileSet options in directive description file commit ee4cd8e43b6353a6508b213f8cc7e9821adacabb Author: Marcin Haba Date: Thu Dec 15 19:21:57 2016 +0100 baculum: Prepare web wizard to save correct config commit 63a82946e780eeeaa0a30ed219be10337af0700a Author: Marcin Haba Date: Thu Dec 15 19:18:48 2016 +0100 baculum: Change setConfig visibility and config validation commit 6b0d568855377ea16b6706c117e9083b1ae0776f Author: Marcin Haba Date: Thu Dec 15 19:18:13 2016 +0100 baculum: Change host managing in api client commit 4a09c9f387adea517262efcb395608f0c4bdcf96 Author: Marcin Haba Date: Thu Dec 15 13:10:18 2016 +0100 baculum: Tweak wizard style commit 81f95cc00cc30d98566d8da7cf32888b40f5f69f Author: Marcin Haba Date: Wed Dec 14 19:18:28 2016 +0100 baculum: Prepare authorization step in web install wizard commit 67c9b0810c6b7ef09e65700b8a8984d28daa5b73 Author: Marcin Haba Date: Wed Dec 14 18:19:21 2016 +0100 baculum: Tweak hide api test icons commit 87047ab143d53773b820da130ff6bd3842412bb6 Author: Marcin Haba Date: Wed Dec 14 18:18:03 2016 +0100 baculum: Remove allowed error codes from API client commit ad2bf6eb4c5db900c010af23e013a2aec5426d8e Author: Marcin Haba Date: Wed Dec 14 18:13:22 2016 +0100 baculum: Show error code in config test when there is no json tool commit 85806c44ecb196424d8bcdc20d9bbb6d1fb25fb2 Author: Marcin Haba Date: Tue Dec 13 19:30:53 2016 +0100 baculum: Misc changes to web install wizard commit 779ecfa53aff1aedd000e9c0f63ce41439f7e3e0 Author: Marcin Haba Date: Tue Dec 13 15:43:05 2016 +0100 baculum: Add checking connection to catalog commit 3fc03ba9549da3228940cdc8ca39b982bf5cb908 Author: Marcin Haba Date: Tue Dec 13 13:16:13 2016 +0100 baculum: Start preparing web wizard to add API instances commit 57c841df03244a5b85a7baa22fd4a2ad72cda14d Author: Marcin Haba Date: Tue Dec 13 07:27:53 2016 +0100 baculum: Prepare wizard skeleton to new web install wizard commit 9fad3dcef1aeb678efc758b5f1560397a8b02d62 Author: Marcin Haba Date: Mon Dec 12 21:30:34 2016 +0100 baculum: Remove storing passwd in session commit 7527e0fdfbc674a6989997fda259fbd4a7b10cd5 Author: Marcin Haba Date: Mon Dec 12 16:03:32 2016 +0100 baculum: Make login simpler. Remove user headers. commit c3661738fd9c0813b1cc7282f9aa312c7794b296 Author: Marcin Haba Date: Sun Dec 11 14:46:07 2016 +0100 baculum: Set config dirs privileges in spec file commit e925bc4bed35917640d4b5426d85053bfb71bdec Author: Marcin Haba Date: Sun Dec 11 14:01:09 2016 +0100 baculum: Fix host field in db connection test commit 1d87ed40529055e5f75b77524c4981a5895da189 Author: Marcin Haba Date: Sun Dec 11 13:26:11 2016 +0100 baculum: Set globalization in api install wizard commit 734e0641fbe2863f2c36a33a8c40e47b3d7e6448 Author: Marcin Haba Date: Sun Dec 11 13:17:22 2016 +0100 baculum: Temporary fix to change language commit 9a27a3e1bf924265aa2fa17a6a0d48d451575bb8 Author: Marcin Haba Date: Sun Dec 11 12:03:24 2016 +0100 baculum: Tweak Config and Logs directories in spec file commit 913b2c4e7ce3870030160869056516fd41028329 Author: Marcin Haba Date: Sun Dec 11 12:02:14 2016 +0100 baculum: Fix language settings in api wizard commit aa77324998f50ff57059956340c9dae9f004094b Author: Marcin Haba Date: Sun Dec 11 11:41:53 2016 +0100 baculum: Move globalization setting to web layer commit 620d3cd96822c552428f8655579a07c051dbe7e2 Author: Marcin Haba Date: Sun Dec 11 10:04:30 2016 +0100 baculum: Update sub-packages dependencies in spec file commit d1855d0af17a865a5c75f1f857759b9b723a2472 Author: Marcin Haba Date: Sun Dec 11 10:03:32 2016 +0100 baculum: Make locale file names more precise commit cfecdec7f93b5109dc9517b0e5d8cd34d6dfe14d Author: Marcin Haba Date: Sun Dec 11 10:02:48 2016 +0100 baculum: Tweak remove not needed include commit 43e0c29cd03546906483cc7c51f5628440c08dc8 Author: Marcin Haba Date: Sat Dec 10 19:11:50 2016 +0100 baculum: Reworked Makefile to support new packages commit 25004e4e7b12823001a07a1b40cbcfa815e2e27c Author: Marcin Haba Date: Sat Dec 10 19:10:47 2016 +0100 baculum: Reworked spec for packages: baculum-common, baculum-api, baculum-api-lighttpd, baculum-api-httpd, baculum-web, baculum-web-lighttpd and baculum-web-httpd commit ed35e8de15e5d135ab1c882780d3b1700f8c76e1 Author: Marcin Haba Date: Sat Dec 10 19:08:09 2016 +0100 baculum: New web servers' config files (api and web) commit b3f408814ec2fc7d496c45845f1361d9807b0a1c Author: Marcin Haba Date: Sat Dec 10 19:02:10 2016 +0100 baculum: Set default page for API service commit 31bf7f3d83d63aed5e688416653afb5a76fefedc Author: Marcin Haba Date: Sat Dec 10 11:48:00 2016 +0100 baculum: Update Makefile after splitting web and api parts into two separate apps commit ef243f9ff28ba41492a740efe2c09b75251ea9d8 Author: Marcin Haba Date: Fri Dec 9 20:12:55 2016 +0100 baculum: Add username and password fields to default API demo page commit df0ae4fcc4ab74fc115feaf303065f065c8989f7 Author: Marcin Haba Date: Fri Dec 9 14:46:57 2016 +0100 baculum: Add default api demo page commit bc2cc34778646e3adc48767b6245c15f27c9e1a0 Author: Marcin Haba Date: Fri Dec 9 07:54:58 2016 +0100 baculum: Set all values in API install wizard commit e611aece026367b37503e462c70bd20020ff4f50 Author: Marcin Haba Date: Thu Dec 8 15:48:41 2016 +0100 baculum: Save api config by api wizard commit 8e53fa910b0754cf211fbb0bc93055a3fcbc5d7c Author: Marcin Haba Date: Sun Dec 4 08:38:33 2016 +0100 baculum: Add JSON tools info to API wizard summary commit 775c6d24d538e9cfc0c175c8ed4e74bfe712bb56 Author: Marcin Haba Date: Sun Dec 4 08:09:14 2016 +0100 baculum: Misc changes to API install wizard commit 3e7d72d8a0ce6b26614c5618af229eb42bbd69f2 Author: Marcin Haba Date: Sun Nov 13 19:14:48 2016 +0100 baculum: API install wizard (in progress) commit 1de8dd14fbaecd3bfe20d23b817720c77d5e048f Author: Marcin Haba Date: Sun Nov 13 19:08:42 2016 +0100 baculum: Move buttons and pages base to common part commit 274b7375bbd635d5e1fb85f3130dd91cf3a1b617 Author: Marcin Haba Date: Sun Nov 13 18:58:08 2016 +0100 baculum: Add internationalization module to API for installer purposes commit 4f82efe60b10fb4ed5bf698dc3687a0f6812eac9 Author: Marcin Haba Date: Sun Nov 13 18:56:47 2016 +0100 baculum: Tweak PHP block code tag commit 70b4d951afab1f3824f5a1329c96d0e55bd47a90 Author: Marcin Haba Date: Sun Nov 6 17:21:55 2016 +0100 baculum: Tweak time period value type commit 0cbb62d701963a4c75cf194895039a4cc85d1400 Author: Marcin Haba Date: Sun Nov 6 17:15:55 2016 +0100 baculum: Skip some not saved directive values commit e5e84754799fcfe4932b1ce64c8d328923f1c519 Author: Marcin Haba Date: Sun Nov 6 17:14:56 2016 +0100 baculum: Tweak setting directive boolean type commit ab1fee3d18969c7dec9341daed21f55a888008b2 Author: Marcin Haba Date: Sun Nov 6 17:10:52 2016 +0100 baculum: Prepare directive time period to save commit 2b67e8fe4d51298b27137fb1b0e8e49594269805 Author: Marcin Haba Date: Sat Nov 5 17:47:30 2016 +0100 baculum: Rework preparing resource to save commit dc3d798ffdc996f66a1b11cbeb127e2aace4b371 Author: Marcin Haba Date: Sat Nov 5 05:26:46 2016 +0100 baculum: Add property to show/hide all directives for resource commit eda98d41881914f67cf18d9a364c46ebbb69588a Author: Marcin Haba Date: Thu Nov 3 06:39:07 2016 +0100 baculum: Fix showing all directive values commit cb610c8bc20a6fa3986c87a076138f0b28b6b922 Author: Marcin Haba Date: Thu Nov 3 06:38:18 2016 +0100 baculum: Set default boolean directive value commit 822ad7401ee7db3cd6bbaa45163b0b29b2a5cabe Author: Marcin Haba Date: Tue Nov 1 15:46:17 2016 +0100 baculum: Switch between showing all/inconfig directives (in progress) commit 0959330530453aee6560958559b094bb3bf4ab15 Author: Marcin Haba Date: Tue Nov 1 14:39:32 2016 +0100 baculum: Pass resource name to directive setting commit 8ea9c467ea8cf4a20baf6c4bc9e3ccc9272297e0 Author: Marcin Haba Date: Thu Oct 20 08:12:48 2016 +0200 baculum: Link action events to resource options commit ff76386cab28999e017fe95b95f43a3b7e9c4156 Author: Marcin Haba Date: Wed Oct 19 19:04:18 2016 +0200 baculum: Add resource options commit 93b434763dfef9bed65bed26327f582697129342 Author: Marcin Haba Date: Fri Oct 14 23:00:44 2016 +0200 baculum: Show/hide all resource directives commit 14a75a13b5b3851295035cfc33f433e395854040 Author: Marcin Haba Date: Fri Oct 14 00:32:28 2016 +0200 baculum: New add/edit/remove directive buttons commit b8176969bf35754a69e156d8afc7a8553ec5912d Author: Marcin Haba Date: Thu Oct 13 21:13:09 2016 +0200 baculum: Tweak show port value commit 0f9897a228e42ba57a4bb9c77c5594946e34ed1d Author: Marcin Haba Date: Thu Oct 13 17:35:57 2016 +0200 baculum: Tweak directives list style commit bf02f66484766077373f8c045ec138ec5e637ec9 Author: Marcin Haba Date: Tue Oct 11 21:56:54 2016 +0200 baculum: Visual improvements to remote host items commit 6cb0d7cbd8d74338feb02a163b9e62a54f67d311 Author: Marcin Haba Date: Tue Oct 11 21:51:47 2016 +0200 baculum: Get API http headers for particular host commit 25584a8bf7e104722e3c424866104c27645c6f3a Author: Marcin Haba Date: Tue Oct 11 21:50:05 2016 +0200 baculum: Enable Web debug to file commit 0a4aff02d73c92dcde0984fddbce568c55fecbd6 Author: Marcin Haba Date: Sun Aug 28 09:48:55 2016 +0200 baculum: Simplify directive values load and add Resource property commit 9f39768df088f7658a2e7cbfc19e94cecc143dab Author: Marcin Haba Date: Thu Aug 25 07:31:36 2016 +0200 baculum: Tweak example Data values in data description file commit 4ea74cde1e84bf505733ba207b01feff34ae4403 Author: Marcin Haba Date: Thu Aug 25 07:30:05 2016 +0200 baculum: Add data directive controls property commit 99936edd4a079a39af8649c90e5f6e5acfdb9bf0 Author: Marcin Haba Date: Wed Aug 24 22:39:29 2016 +0200 baculum: Tweak style for directive fields commit cec14cfe52df883eb92b357ae7cea3ac2b846024 Author: Marcin Haba Date: Wed Aug 24 22:17:33 2016 +0200 baculum: Update data description file for ComboBox field type commit 0db3b4f38be318ccb8baec751a71d608a52c330e Author: Marcin Haba Date: Sun Aug 21 20:57:03 2016 +0200 baculum: Add control for list type directives commit 1221e1db5a3135dba8f9adc4a0334806e7608b79 Author: Marcin Haba Date: Thu Aug 18 08:21:34 2016 +0200 baculum: Add default value as a property to directive controls commit e0693ca4e839b9bf1e4c4ef92a085e9c7f261b96 Author: Marcin Haba Date: Wed Aug 17 22:53:48 2016 +0200 baculum: Skip saving not changed directive values for all currently supported types commit 1d3bf90bee5cb21da296495a71b9275d90a79788 Author: Marcin Haba Date: Wed Aug 17 22:51:12 2016 +0200 baculum: Format directive value depending on value type commit c28522d91a3e40a92b4b7b5fad498c36755b11f6 Author: Marcin Haba Date: Wed Aug 17 08:18:07 2016 +0200 baculum: More accurate value type control commit 118678b1840ffdceb7c7b5cc81b8ce0056d859d6 Author: Marcin Haba Date: Mon Aug 15 05:52:29 2016 +0200 baculum: Add in_config directive controls property commit b9d3d57844cbb0dd4b6cd0cf6fc96da6add7a6a1 Author: Marcin Haba Date: Sun Aug 14 13:19:26 2016 +0200 baculum: Save config on remote hosts started from GUI commit f961a71dd4ef8726795880905b0ffd25da955508 Author: Marcin Haba Date: Sun Jul 24 01:17:15 2016 +0200 baculum: Tweak show items javascript effect commit d535b000e2cba82ab1f66354c5060ead4c39a29e Author: Marcin Haba Date: Sun Jul 24 01:16:43 2016 +0200 baculum: Use new data description with directive controls commit a9f0f089501774eb6f7d0439b6817803ae875b6f Author: Marcin Haba Date: Sun Jul 24 01:15:44 2016 +0200 baculum: Prepare data description for all directives commit 80f8399128c60fc440d17def1e304376435c31ec Author: Marcin Haba Date: Thu Jul 21 21:27:33 2016 +0200 baculum: Block sending requrest about items when an item is hidding commit 78628af1bed6ee48b347221f3458e361e8246472 Author: Marcin Haba Date: Thu Jul 21 21:24:10 2016 +0200 baculum: Update data description file path after separating Web layer commit d9ec02b03045ae0491c73508401e824b103bebdd Author: Marcin Haba Date: Thu Jul 21 21:21:46 2016 +0200 baculum: Tweak indents in saving Bacula config to file commit db98afe5231275738f59aad87b029f8636ca95ad Author: Marcin Haba Date: Wed Jul 20 05:16:51 2016 +0200 baculum: Save config on remote hosts by API Config saved by webGUI can be still invalid because not all directive types are supported there. commit e6b47ead82797cfac8cb30cbaf41c6cadb22da2b Author: Marcin Haba Date: Tue Jul 19 06:40:23 2016 +0200 baculum: Separate Baculum webGUI and Baculum API layers API and Web now are individual applications. commit 1726b7264cd12445af4b104603c6764beffec596 Author: Marcin Haba Date: Thu Jul 14 08:46:42 2016 +0200 baculum: Prepare files to separate Baculum webGUI and Baculum API (first part changes) commit b59ed11eb2f918f7646c9d0d573686d5ee636be1 Author: Marcin Haba Date: Thu Jul 14 07:44:00 2016 +0200 baculum: Improve getting info about supported components commit 33a42a7a3c08af487a7e7a8dd138032140d8b270 Author: Marcin Haba Date: Thu Jul 14 00:35:03 2016 +0200 baculum: Save config data on remote hosts by API (in progress) commit ce2513590d56ad8674ce6a089fcb2e56e1b86646 Author: Marcin Haba Date: Tue Jul 12 08:12:24 2016 +0200 baculum: Tune show/hide items effect commit e8d1b32a8aad44fb28db7a8c27f2b5894e4c9622 Author: Marcin Haba Date: Tue Jul 12 08:10:59 2016 +0200 baculum: Tweak remove unused parameter commit 9cda3b356a180d4464614665b1efbea27bb7774c Author: Marcin Haba Date: Mon Jul 11 08:42:47 2016 +0200 baculum: Add little effect on load config items commit 0973004ef252f25d481c97407d28a678fac2ecce Author: Marcin Haba Date: Mon Jul 11 06:20:13 2016 +0200 baculum: Add API host param to all API request methods commit 0eca175ba42b4f1d1eed50949b0759b0ae23e493 Author: Marcin Haba Date: Mon Jul 11 06:11:02 2016 +0200 baculum: Tweak remove encoding URL parameters in request calls because encoding is already done globally commit cf1a2a3f129c60ee2352116394ce1448f5171fba Author: Marcin Haba Date: Sun Jul 10 21:23:07 2016 +0200 baculum: Enable to get Bacula configs from any defined host by API commit 3334c4cdb21868314b59d5899fd1b2d62c476432 Author: Marcin Haba Date: Sun Jul 10 16:27:57 2016 +0200 baculum: Get Bacula config data from remote hosts (in progress) commit 8af1db471133973fac9df2d096851e841ecade73 Author: Marcin Haba Date: Sat Jul 9 02:25:29 2016 +0200 baculum: Create control templates for config-type data commit e830fd1a4c8d7a9eacaa44e5a8172aa4419e2bee Author: Marcin Haba Date: Fri Jul 8 08:59:28 2016 +0200 baculum: Load config data on appropriate events commit 240cfb15d1bc1169fad69b6c5e2e27a79c2861a2 Author: Marcin Haba Date: Wed Jul 6 01:53:12 2016 +0200 baculum: Misc changes to create controls for config data commit f12612167decf1e9aef20616477df868400620b4 Author: Marcin Haba Date: Tue Jul 5 20:00:26 2016 +0200 baculum: Add control for time period type directives commit ec87f209f35a726561ca290d0318033ce099f603 Author: Marcin Haba Date: Mon Jul 4 07:36:06 2016 +0200 baculum: Add control for boolean type directives commit d7dc2a6540f0dcaac24f48c537a8e2af4351efb8 Author: Marcin Haba Date: Sun Jul 3 14:00:21 2016 +0200 baculum: List resource directives from config in template commit cd63d837f6365a30b219ca37cb9640b151b2d08e Author: Marcin Haba Date: Sun Jul 3 01:07:46 2016 +0200 baculum: Improve handling internal API params commit e4b91098f1b913911b03ee3f1a3656b69c0ee793 Author: Marcin Haba Date: Sat Jul 2 19:53:04 2016 +0200 baculum: Misc changes to config module commit dc349c679a13f4a7f042d14d0f8f100cccb6efbe Author: Marcin Haba Date: Sat Jul 2 10:19:33 2016 +0200 baculum: Tweak change component name and type naming commit ad2bed45e04283b7984907f087857f712e281633 Author: Marcin Haba Date: Sat Jul 2 07:47:29 2016 +0200 baculum: List component resources from config in template commit f53ed319b6c1770af48086a804cc79845d2c804f Author: Marcin Haba Date: Wed Jun 29 08:31:07 2016 +0200 baculum: Show component names in new dedicated control commit fea0f2722c75fb26bf7c6eeb2d54b696cbcdae46 Author: Marcin Haba Date: Mon Jun 27 06:52:58 2016 +0200 baculum: Save directory path for new config files commit 107cbfa72e198c28d8be0102b836c2dfda9d177a Author: Marcin Haba Date: Sun Jun 26 07:41:46 2016 +0200 baculum: Read Bacula config from JSON tools (API side) commit 8e6bf256a5489a7cec806c6104bf7d9388c8b991 Author: Marcin Haba Date: Sat Jun 25 07:05:46 2016 +0200 baculum: Tweak change capital first letter to lower in JSON tools names commit 707e027a07c710c165c17077084b558041021175 Author: Marcin Haba Date: Sat Jun 25 06:55:37 2016 +0200 baculum: Load JSON tools config commit 5b294d6bdfff977f6af538783b264934199a48f0 Author: Marcin Haba Date: Sat Jun 18 22:08:54 2016 +0200 baculum: Validation improvements commit f0d8cebc455f6452e9a1a3131acb9ca56e8705bd Author: Marcin Haba Date: Sat Jun 18 18:51:57 2016 +0200 baculum: Show JSON tools config save state commit 8464c80eb46bd34f4b9471ad6e98288f84919a9c Author: Marcin Haba Date: Sat Jun 18 18:49:56 2016 +0200 baculum: Switch application to debug mode only when it is really needed commit 11cab7debee2a62eac5bf6f971d5b7669a97afe4 Author: Marcin Haba Date: Wed Jun 15 08:35:52 2016 +0200 baculum: Save JSON tools config commit 9c9ecc732f033315e1ee9a3a96ef203d76970a8f Author: Marcin Haba Date: Sun Jun 12 16:30:57 2016 +0200 baculum: Add validators to JSON tools setup form commit 030c14a2e65020fccaa4a0b689736fa165bdbc5c Author: Marcin Haba Date: Sun Jun 12 01:48:20 2016 +0200 baculum: Add JSON tools configuration test commit 2a70b0814519b0fb2c977a82a6c3a8f39a484489 Author: Marcin Haba Date: Sat Jun 11 18:06:16 2016 +0200 baculum: Remove unused double BVFSGetJobids file commit 075103298d7b23ff440540868c740b6f5308b173 Author: Marcin Haba Date: Fri Jun 10 07:55:11 2016 +0200 baculum: Prepare template to perform json tools test commit 37878ee64aff9ff98cc6a7836a99a479f4373a66 Author: Marcin Haba Date: Thu Jun 9 23:06:01 2016 +0200 baculum: Components config path fields commit fcecf1edeac5cc5be3a5f7f417bb0cb35ced15c6 Author: Marcin Haba Date: Thu Jun 9 20:41:37 2016 +0200 baculum: Fields to provide JSON tools paths commit 7c2c3a65b2a0a67bf64ee62c50c6e4baa5b53edd Author: Marcin Haba Date: Sun May 29 17:19:39 2016 +0200 baculum: Save JSON tools config (backend part) commit 93bedc81f6e89b1e0046f4468957c3a93643f416 Author: Marcin Haba Date: Sat May 28 20:04:17 2016 +0200 baculum: Add new empty configuration panel --- gui/baculum/.gitignore | 12 +- gui/baculum/INSTALL | 270 +- gui/baculum/LICENSE | 4 +- gui/baculum/Makefile | 99 +- gui/baculum/README | 173 +- gui/baculum/debian/baculum-apache2.dirs | 1 - gui/baculum/debian/baculum-apache2.install | 2 - gui/baculum/debian/baculum-apache2.links | 1 - gui/baculum/debian/baculum-apache2.postinst | 13 - gui/baculum/debian/baculum-apache2.prerm | 17 - gui/baculum/debian/baculum-api-apache2.dirs | 1 + .../debian/baculum-api-apache2.install | 2 + gui/baculum/debian/baculum-api-apache2.links | 1 + .../debian/baculum-api-apache2.postinst | 12 + gui/baculum/debian/baculum-api-apache2.prerm | 17 + gui/baculum/debian/baculum-api-lighttpd.dirs | 1 + .../debian/baculum-api-lighttpd.install | 3 + gui/baculum/debian/baculum-api-lighttpd.links | 1 + .../debian/baculum-api-lighttpd.postinst | 13 + gui/baculum/debian/baculum-api-lighttpd.prerm | 17 + .../debian/baculum-api-lighttpd.service | 11 + gui/baculum/debian/baculum-api.dirs | 1 + gui/baculum/debian/baculum-api.install | 9 + gui/baculum/debian/baculum-api.links | 2 + gui/baculum/debian/baculum-api.postinst | 11 + gui/baculum/debian/baculum-api.prerm | 10 + gui/baculum/debian/baculum-common.dirs | 3 + gui/baculum/debian/baculum-common.install | 7 + gui/baculum/debian/baculum-common.links | 3 + ...culum.postinst => baculum-common.postinst} | 0 gui/baculum/debian/baculum-common.prerm | 11 + gui/baculum/debian/baculum-lighttpd.dirs | 1 - gui/baculum/debian/baculum-lighttpd.init | 93 - gui/baculum/debian/baculum-lighttpd.install | 2 - gui/baculum/debian/baculum-lighttpd.links | 1 - gui/baculum/debian/baculum-lighttpd.postinst | 14 - gui/baculum/debian/baculum-lighttpd.prerm | 17 - gui/baculum/debian/baculum-web-apache2.dirs | 1 + .../debian/baculum-web-apache2.install | 2 + gui/baculum/debian/baculum-web-apache2.links | 1 + .../debian/baculum-web-apache2.postinst | 12 + gui/baculum/debian/baculum-web-apache2.prerm | 17 + gui/baculum/debian/baculum-web-lighttpd.dirs | 1 + .../debian/baculum-web-lighttpd.install | 3 + gui/baculum/debian/baculum-web-lighttpd.links | 1 + .../debian/baculum-web-lighttpd.postinst | 13 + gui/baculum/debian/baculum-web-lighttpd.prerm | 17 + .../baculum-web-lighttpd.service} | 4 +- gui/baculum/debian/baculum-web.dirs | 1 + gui/baculum/debian/baculum-web.install | 13 + gui/baculum/debian/baculum-web.links | 6 + gui/baculum/debian/baculum-web.postinst | 11 + gui/baculum/debian/baculum-web.prerm | 9 + gui/baculum/debian/baculum.dirs | 1 - gui/baculum/debian/baculum.install | 14 - gui/baculum/debian/baculum.links | 6 - gui/baculum/debian/baculum.prerm | 10 - gui/baculum/debian/changelog | 11 +- gui/baculum/debian/control | 80 +- gui/baculum/debian/rules | 2 +- .../deb-template/baculum-api-apache.conf | 62 + .../deb-template/baculum-api-lighttpd.conf | 117 + .../deb-template/baculum-api-lighttpd.service | 11 + ...um-apache.conf => baculum-web-apache.conf} | 26 +- ...ighttpd.conf => baculum-web-lighttpd.conf} | 31 +- .../baculum-web-lighttpd.service} | 4 +- .../examples/deb/baculum-api-apache.conf | 62 + .../examples/deb/baculum-api-lighttpd.conf | 117 + .../examples/deb/baculum-api-lighttpd.service | 11 + .../examples/deb/baculum-web-apache.conf | 64 + ...ighttpd.conf => baculum-web-lighttpd.conf} | 31 +- .../examples/deb/baculum-web-lighttpd.service | 11 + gui/baculum/examples/nginx/baculum.conf | 42 - .../examples/nginx/php-fpm/baculum-php.conf | 18 - .../rpm-template/baculum-api-apache.conf | 62 + .../rpm-template/baculum-api-lighttpd.conf | 117 + .../rpm-template/baculum-api-lighttpd.service | 11 + ...um-apache.conf => baculum-web-apache.conf} | 26 +- ...ighttpd.conf => baculum-web-lighttpd.conf} | 31 +- .../baculum-web-lighttpd.service} | 4 +- .../examples/rpm-template/baculum.spec | 401 +- gui/baculum/examples/rpm/baculum-apache.conf | 15 - .../examples/rpm/baculum-api-apache.conf | 62 + .../examples/rpm/baculum-api-lighttpd.conf | 117 + .../examples/rpm/baculum-api-lighttpd.service | 11 + .../examples/rpm/baculum-lighttpd.conf | 67 - .../baculum-web-apache.conf} | 26 +- .../examples/rpm/baculum-web-lighttpd.conf | 114 + .../examples/rpm/baculum-web-lighttpd.service | 11 + gui/baculum/examples/rpm/baculum.spec | 401 +- gui/baculum/examples/sudo/baculum-api-httpd | 6 + .../examples/sudo/baculum-api-lighttpd | 6 + gui/baculum/examples/sudo/baculum-httpd | 2 - gui/baculum/examples/sudo/baculum-lighttpd | 2 - gui/baculum/examples/sudo/baculum-nginx | 2 - .../3rdParty/FirePHPCore/FirePHP.class.php | 1528 -- .../3rdParty/FirePHPCore/FirePHP.class.php4 | 1291 -- .../framework/3rdParty/FirePHPCore/LICENSE | 29 - .../framework/3rdParty/FirePHPCore/fb.php | 261 - .../framework/3rdParty/FirePHPCore/fb.php4 | 251 - .../framework/3rdParty/Markdown/License.text | 34 - .../3rdParty/Markdown/MarkdownParser.php | 1256 -- .../framework/3rdParty/Parsedown/LICENSE.txt | 20 - .../3rdParty/Parsedown/Parsedown.php | 1135 -- .../framework/3rdParty/PhpShell/PHP/Shell.php | 1091 -- .../3rdParty/PhpShell/PHP/Shell/Commands.php | 72 - .../PhpShell/PHP/Shell/Extensions.php | 86 - .../PHP/Shell/Extensions/Autoload.php | 60 - .../PHP/Shell/Extensions/AutoloadDebug.php | 84 - .../PhpShell/PHP/Shell/Extensions/Colour.php | 120 - .../PHP/Shell/Extensions/ExecutionTime.php | 56 - .../PHP/Shell/Extensions/InlineHelp.php | 140 - .../PHP/Shell/Extensions/LoadScript.php | 32 - .../PHP/Shell/Extensions/Prototypes.php | 16235 ---------------- .../PHP/Shell/Extensions/VerbosePrint.php | 56 - .../3rdParty/PhpShell/PHP/Shell/Options.php | 132 - .../framework/3rdParty/PhpShell/README | 86 - .../3rdParty/PhpShell/php-shell-cmd.php | 86 - .../3rdParty/PhpShell/php-shell-init.php | 87 - .../framework/3rdParty/ReCaptcha/LICENSE | 22 - .../3rdParty/ReCaptcha/recaptchalib.php | 276 - .../framework/3rdParty/SafeHtml/HTMLSax3.php | 693 - .../3rdParty/SafeHtml/HTMLSax3/Decorators.php | 361 - .../3rdParty/SafeHtml/HTMLSax3/States.php | 286 - .../3rdParty/SafeHtml/TSafeHtmlParser.php | 685 - .../framework/3rdParty/SafeHtml/license.txt | 26 - .../framework/3rdParty/SafeHtml/readme.txt | 81 - .../TextHighlighter/Text/Highlighter.php | 396 - .../TextHighlighter/Text/Highlighter/ABAP.php | 505 - .../TextHighlighter/Text/Highlighter/CPP.php | 840 - .../TextHighlighter/Text/Highlighter/CSS.php | 383 - .../TextHighlighter/Text/Highlighter/DIFF.php | 366 - .../TextHighlighter/Text/Highlighter/DTD.php | 408 - .../Text/Highlighter/Generator.php | 1253 -- .../TextHighlighter/Text/Highlighter/HTML.php | 220 - .../TextHighlighter/Text/Highlighter/JAVA.php | 784 - .../Text/Highlighter/JAVASCRIPT.php | 613 - .../Text/Highlighter/MYSQL.php | 416 - .../TextHighlighter/Text/Highlighter/PERL.php | 1334 -- .../TextHighlighter/Text/Highlighter/PHP.php | 1089 -- .../Text/Highlighter/PRADO.php | 254 - .../Text/Highlighter/PYTHON.php | 629 - .../TextHighlighter/Text/Highlighter/RUBY.php | 807 - .../Text/Highlighter/Renderer.php | 151 - .../Text/Highlighter/Renderer/Array.php | 198 - .../Text/Highlighter/Renderer/BB.php | 237 - .../Text/Highlighter/Renderer/Console.php | 207 - .../Text/Highlighter/Renderer/Html.php | 445 - .../Text/Highlighter/Renderer/HtmlTags.php | 186 - .../Text/Highlighter/Renderer/JSON.php | 85 - .../Text/Highlighter/Renderer/XML.php | 102 - .../TextHighlighter/Text/Highlighter/SQL.php | 401 - .../TextHighlighter/Text/Highlighter/XML.php | 245 - .../3rdParty/TextHighlighter/Text/README | 455 - .../3rdParty/TextHighlighter/Text/TODO | 12 - .../3rdParty/TextHighlighter/Text/abap.xml | 802 - .../3rdParty/TextHighlighter/Text/cpp.xml | 201 - .../3rdParty/TextHighlighter/Text/css.xml | 361 - .../3rdParty/TextHighlighter/Text/diff.xml | 45 - .../3rdParty/TextHighlighter/Text/dtd.xml | 66 - .../3rdParty/TextHighlighter/Text/generate | 171 - .../TextHighlighter/Text/generate.bat | 188 - .../3rdParty/TextHighlighter/Text/html.xml | 33 - .../3rdParty/TextHighlighter/Text/java.xml | 2824 --- .../TextHighlighter/Text/javascript.xml | 173 - .../3rdParty/TextHighlighter/Text/mysql.xml | 424 - .../3rdParty/TextHighlighter/Text/package.xml | 243 - .../3rdParty/TextHighlighter/Text/perl.xml | 439 - .../3rdParty/TextHighlighter/Text/php.xml | 194 - .../3rdParty/TextHighlighter/Text/prado.xml | 40 - .../3rdParty/TextHighlighter/Text/python.xml | 229 - .../3rdParty/TextHighlighter/Text/ruby.xml | 141 - .../3rdParty/TextHighlighter/Text/sample.css | 57 - .../3rdParty/TextHighlighter/Text/sql.xml | 496 - .../3rdParty/TextHighlighter/Text/xml.xml | 37 - .../3rdParty/TextHighlighter/highlight.css | 441 - .../framework/3rdParty/TinyMCE/license.txt | 504 - .../framework/3rdParty/TinyMCE/tiny_mce.md5 | 1 - .../framework/3rdParty/TinyMCE/tiny_mce.tar | Bin 6231552 -> 0 bytes .../framework/3rdParty/WsdlGen/Wsdl.php | 286 - .../3rdParty/WsdlGen/WsdlGenerator.php | 317 - .../3rdParty/WsdlGen/WsdlMessage.php | 80 - .../3rdParty/WsdlGen/WsdlOperation.php | 135 - gui/baculum/framework/3rdParty/readme.html | 34 +- gui/baculum/framework/Caching/TAPCCache.php | 6 +- gui/baculum/framework/Caching/TCache.php | 6 +- gui/baculum/framework/Caching/TDbCache.php | 12 +- gui/baculum/framework/Caching/TEACache.php | 2 +- gui/baculum/framework/Caching/TMemCache.php | 57 +- .../framework/Caching/TSqliteCache.php | 12 +- gui/baculum/framework/Caching/TXCache.php | 6 +- .../Collections/TAttributeCollection.php | 19 +- .../Collections/TDummyDataSource.php | 6 +- gui/baculum/framework/Collections/TList.php | 79 +- .../Collections/TListItemCollection.php | 6 +- gui/baculum/framework/Collections/TMap.php | 93 +- .../Collections/TPagedDataSource.php | 6 +- .../framework/Collections/TPagedList.php | 8 +- .../framework/Collections/TPriorityList.php | 6 +- .../framework/Collections/TPriorityMap.php | 6 +- gui/baculum/framework/Collections/TQueue.php | 6 +- gui/baculum/framework/Collections/TStack.php | 6 +- .../Exceptions/TActiveRecordException.php | 6 +- .../Relations/TActiveRecordBelongsTo.php | 6 +- .../Relations/TActiveRecordHasMany.php | 6 +- .../TActiveRecordHasManyAssociation.php | 6 +- .../Relations/TActiveRecordHasOne.php | 6 +- .../Relations/TActiveRecordRelation.php | 6 +- .../TActiveRecordRelationContext.php | 6 +- .../InputBuilder/TIbmScaffoldInput.php | 6 +- .../InputBuilder/TMssqlScaffoldInput.php | 6 +- .../InputBuilder/TMysqlScaffoldInput.php | 6 +- .../InputBuilder/TPgsqlScaffoldInput.php | 6 +- .../InputBuilder/TScaffoldInputBase.php | 6 +- .../InputBuilder/TScaffoldInputCommon.php | 6 +- .../InputBuilder/TSqliteScaffoldInput.php | 6 +- .../ActiveRecord/Scaffold/TScaffoldBase.php | 6 +- .../Scaffold/TScaffoldEditView.php | 6 +- .../Scaffold/TScaffoldListView.php | 6 +- .../ActiveRecord/Scaffold/TScaffoldSearch.php | 6 +- .../ActiveRecord/Scaffold/TScaffoldView.php | 6 +- .../Data/ActiveRecord/TActiveRecord.php | 8 +- .../Data/ActiveRecord/TActiveRecordConfig.php | 6 +- .../ActiveRecord/TActiveRecordCriteria.php | 6 +- .../ActiveRecord/TActiveRecordGateway.php | 6 +- .../ActiveRecord/TActiveRecordManager.php | 6 +- .../Common/Mssql/TMssqlCommandBuilder.php | 6 +- .../Data/Common/Mssql/TMssqlMetaData.php | 10 +- .../Data/Common/Mssql/TMssqlTableColumn.php | 6 +- .../Data/Common/Mssql/TMssqlTableInfo.php | 6 +- .../Common/Mysql/TMysqlCommandBuilder.php | 6 +- .../Data/Common/Mysql/TMysqlMetaData.php | 8 +- .../Data/Common/Mysql/TMysqlTableColumn.php | 6 +- .../Data/Common/Mysql/TMysqlTableInfo.php | 6 +- .../Common/Oracle/TOracleCommandBuilder.php | 6 +- .../Data/Common/Oracle/TOracleMetaData.php | 10 +- .../Data/Common/Oracle/TOracleTableColumn.php | 6 +- .../Data/Common/Oracle/TOracleTableInfo.php | 6 +- .../Common/Pgsql/TPgsqlCommandBuilder.php | 6 +- .../Data/Common/Pgsql/TPgsqlMetaData.php | 8 +- .../Data/Common/Pgsql/TPgsqlTableColumn.php | 6 +- .../Data/Common/Pgsql/TPgsqlTableInfo.php | 6 +- .../Common/Sqlite/TSqliteCommandBuilder.php | 6 +- .../Data/Common/Sqlite/TSqliteMetaData.php | 10 +- .../Data/Common/Sqlite/TSqliteTableColumn.php | 6 +- .../Data/Common/Sqlite/TSqliteTableInfo.php | 6 +- .../Data/Common/TDbCommandBuilder.php | 6 +- .../framework/Data/Common/TDbMetaData.php | 8 +- .../framework/Data/Common/TDbTableColumn.php | 6 +- .../framework/Data/Common/TDbTableInfo.php | 6 +- .../Data/DataGateway/TDataGatewayCommand.php | 10 +- .../Data/DataGateway/TSqlCriteria.php | 8 +- .../Data/DataGateway/TTableGateway.php | 6 +- .../SqlMap/Configuration/TDiscriminator.php | 6 +- .../TInlineParameterMapParser.php | 6 +- .../SqlMap/Configuration/TParameterMap.php | 6 +- .../Configuration/TParameterProperty.php | 6 +- .../Data/SqlMap/Configuration/TResultMap.php | 6 +- .../SqlMap/Configuration/TResultProperty.php | 6 +- .../Configuration/TSimpleDynamicParser.php | 6 +- .../Configuration/TSqlMapCacheModel.php | 6 +- .../SqlMap/Configuration/TSqlMapStatement.php | 6 +- .../Configuration/TSqlMapXmlConfiguration.php | 8 +- .../TFastSqlMapApplicationCache.php | 6 +- .../Data/SqlMap/DataMapper/TLazyLoadList.php | 6 +- .../SqlMap/DataMapper/TPropertyAccess.php | 6 +- .../Data/SqlMap/DataMapper/TSqlMapCache.php | 6 +- .../SqlMap/DataMapper/TSqlMapPagedList.php | 6 +- .../DataMapper/TSqlMapTypeHandlerRegistry.php | 6 +- .../SqlMap/Statements/TCachingStatement.php | 6 +- .../Statements/TDeleteMappedStatement.php | 6 +- .../Statements/TInsertMappedStatement.php | 6 +- .../SqlMap/Statements/TMappedStatement.php | 7 +- .../SqlMap/Statements/TPreparedCommand.php | 6 +- .../SqlMap/Statements/TPreparedStatement.php | 6 +- .../Statements/TPreparedStatementFactory.php | 6 +- .../Statements/TSelectMappedStatement.php | 6 +- .../SqlMap/Statements/TSimpleDynamicSql.php | 6 +- .../Data/SqlMap/Statements/TStaticSql.php | 6 +- .../Statements/TUpdateMappedStatement.php | 6 +- .../framework/Data/SqlMap/TSqlMapConfig.php | 6 +- .../framework/Data/SqlMap/TSqlMapGateway.php | 6 +- .../framework/Data/SqlMap/TSqlMapManager.php | 6 +- .../framework/Data/TDataSourceConfig.php | 6 +- gui/baculum/framework/Data/TDbCommand.php | 10 +- gui/baculum/framework/Data/TDbConnection.php | 6 +- gui/baculum/framework/Data/TDbDataReader.php | 6 +- gui/baculum/framework/Data/TDbTransaction.php | 6 +- .../framework/Exceptions/TErrorHandler.php | 35 +- .../framework/Exceptions/TException.php | 17 +- .../Exceptions/messages/messages-fr.txt | 4 +- .../Exceptions/messages/messages-id.txt | 4 +- .../Exceptions/messages/messages-zh.txt | 2 + .../Exceptions/messages/messages.txt | 14 +- gui/baculum/framework/I18N/TChoiceFormat.php | 6 +- gui/baculum/framework/I18N/TDateFormat.php | 6 +- gui/baculum/framework/I18N/TGlobalization.php | 13 +- .../I18N/TGlobalizationAutoDetect.php | 6 +- gui/baculum/framework/I18N/TI18NControl.php | 6 +- gui/baculum/framework/I18N/TNumberFormat.php | 6 +- gui/baculum/framework/I18N/TTranslate.php | 6 +- .../framework/I18N/TTranslateParameter.php | 6 +- gui/baculum/framework/I18N/Translation.php | 8 +- .../framework/I18N/core/Gettext/MO.php | 2 +- .../framework/I18N/core/Gettext/PO.php | 2 +- .../framework/I18N/core/MessageSource.php | 9 +- .../I18N/core/MessageSource_MySQL.php | 417 - .../framework/I18N/core/TCache_Lite.php | 9 +- gui/baculum/framework/IO/TTextWriter.php | 6 +- gui/baculum/framework/PradoBase.php | 65 +- .../framework/Security/IUserManager.php | 6 +- .../framework/Security/TAuthManager.php | 6 +- .../framework/Security/TAuthorizationRule.php | 6 +- .../framework/Security/TDbUserManager.php | 6 +- .../framework/Security/TSecurityManager.php | 6 +- gui/baculum/framework/Security/TUser.php | 6 +- .../framework/Security/TUserManager.php | 6 +- gui/baculum/framework/TApplication.php | 16 +- .../framework/TApplicationComponent.php | 6 +- gui/baculum/framework/TComponent.php | 34 +- gui/baculum/framework/TModule.php | 6 +- gui/baculum/framework/TService.php | 6 +- gui/baculum/framework/TShellApplication.php | 6 +- gui/baculum/framework/Util/TCallChain.php | 10 +- gui/baculum/framework/Util/TClassBehavior.php | 4 +- .../framework/Util/TDataFieldAccessor.php | 6 +- gui/baculum/framework/Util/TDateTimeStamp.php | 6 +- gui/baculum/framework/Util/TLogRouter.php | 8 +- gui/baculum/framework/Util/TLogger.php | 6 +- .../framework/Util/TParameterModule.php | 6 +- gui/baculum/framework/Util/TRpcClient.php | 4 +- .../framework/Util/TSimpleDateFormatter.php | 6 +- gui/baculum/framework/Util/TVarDumper.php | 6 +- .../framework/Web/Javascripts/TJavaScript.php | 19 +- .../Web/Javascripts/css-packages.php | 93 + .../framework/Web/Javascripts/packages.php | 118 +- .../source/bootstrap3/css/bootstrap-theme.css | 587 + .../bootstrap3/css/bootstrap-theme.css.map | 1 + .../bootstrap3/css/bootstrap-theme.min.css | 5 + .../source/bootstrap3/css/bootstrap.css | 6800 +++++++ .../source/bootstrap3/css/bootstrap.css.map | 1 + .../source/bootstrap3/css/bootstrap.min.css | 5 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../source/bootstrap3/js/bootstrap.js | 2363 +++ .../source/bootstrap3/js/bootstrap.min.js | 7 + .../css/base/images/animated-overlay.gif | Bin 0 -> 1738 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../base/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../source/jquery/css/base/jquery-ui.css | 7 + .../jquery/css/base/jquery.ui.accordion.css | 5 + .../css/base/jquery.ui.autocomplete.css | 5 + .../jquery/css/base/jquery.ui.button.css | 5 + .../source/jquery/css/base/jquery.ui.core.css | 5 + .../jquery/css/base/jquery.ui.datepicker.css | 5 + .../jquery/css/base/jquery.ui.dialog.css | 5 + .../source/jquery/css/base/jquery.ui.menu.css | 5 + .../jquery/css/base/jquery.ui.progressbar.css | 5 + .../jquery/css/base/jquery.ui.resizable.css | 5 + .../jquery/css/base/jquery.ui.selectable.css | 5 + .../jquery/css/base/jquery.ui.slider.css | 5 + .../jquery/css/base/jquery.ui.spinner.css | 5 + .../source/jquery/css/base/jquery.ui.tabs.css | 5 + .../jquery/css/base/jquery.ui.theme.css | 5 + .../jquery/css/base/jquery.ui.tooltip.css | 5 + .../source/jquery/jquery-ui-i18n.min.js | 6 + .../Javascripts/source/jquery/jquery-ui.js | 15040 ++++++++++++++ .../source/jquery/jquery-ui.min.js | 12 + .../Web/Javascripts/source/jquery/jquery.js | 10337 ++++++++++ .../Javascripts/source/jquery/jquery.min.js | 4 + .../prado/activecontrols/activecontrols3.js | 181 +- .../prado/activecontrols/activedatepicker.js | 38 +- .../source/prado/activecontrols/ajax3.js | 1565 +- .../prado/activecontrols/autocomplete.js | 83 + .../source/prado/activecontrols/dragdrop.js | 10 +- .../prado/activecontrols/inlineeditor.js | 72 +- .../source/prado/activecontrols/json2.js | 479 - .../activefileupload/activefileupload.js | 76 +- .../source/prado/colorpicker/colorpicker.js | 425 +- .../source/prado/controls/accordion.js | 131 +- .../source/prado/controls/controls.js | 241 +- .../source/prado/controls/htmlarea.js | 46 +- .../source/prado/controls/htmlarea4.js | 12 +- .../source/prado/controls/keyboard.js | 2 +- .../source/prado/controls/slider.js | 170 +- .../source/prado/controls/tabpanel.js | 34 +- .../source/prado/datepicker/datepicker.js | 186 +- .../Javascripts/source/prado/logger/logger.js | 57 +- .../Web/Javascripts/source/prado/prado.js | 1288 +- .../source/prado/ratings/ratings.js | 153 +- .../source/prado/validator/validation3.js | 461 +- .../tinymce-405/plugins/media/moxieplayer.swf | Bin 0 -> 20017 bytes .../framework/Web/Services/TFeedService.php | 6 +- .../framework/Web/Services/TJsonService.php | 6 +- .../framework/Web/Services/TPageService.php | 8 +- .../framework/Web/Services/TRpcService.php | 4 +- .../framework/Web/Services/TSoapService.php | 6 +- gui/baculum/framework/Web/TAssetManager.php | 6 +- .../framework/Web/TCacheHttpSession.php | 6 +- gui/baculum/framework/Web/THttpRequest.php | 8 +- gui/baculum/framework/Web/THttpResponse.php | 19 +- .../framework/Web/THttpResponseAdapter.php | 6 +- gui/baculum/framework/Web/THttpSession.php | 21 +- gui/baculum/framework/Web/THttpUtility.php | 6 +- gui/baculum/framework/Web/TUrlManager.php | 6 +- gui/baculum/framework/Web/TUrlMapping.php | 10 +- .../Web/UI/ActiveControls/TActiveButton.php | 9 +- .../Web/UI/ActiveControls/TActiveCheckBox.php | 12 +- .../UI/ActiveControls/TActiveCheckBoxList.php | 52 +- .../UI/ActiveControls/TActiveClientScript.php | 6 +- .../ActiveControls/TActiveControlAdapter.php | 43 +- .../ActiveControls/TActiveCustomValidator.php | 15 +- .../Web/UI/ActiveControls/TActiveDataGrid.php | 39 +- .../Web/UI/ActiveControls/TActiveDataList.php | 2 +- .../UI/ActiveControls/TActiveDatePicker.php | 9 +- .../UI/ActiveControls/TActiveDropDownList.php | 6 +- .../UI/ActiveControls/TActiveFileUpload.php | 10 +- .../UI/ActiveControls/TActiveHiddenField.php | 9 +- .../UI/ActiveControls/TActiveHyperLink.php | 18 +- .../Web/UI/ActiveControls/TActiveImage.php | 18 +- .../UI/ActiveControls/TActiveImageButton.php | 30 +- .../Web/UI/ActiveControls/TActiveLabel.php | 12 +- .../UI/ActiveControls/TActiveLinkButton.php | 12 +- .../Web/UI/ActiveControls/TActiveListBox.php | 15 +- .../TActiveListControlAdapter.php | 6 +- .../UI/ActiveControls/TActiveMultiView.php | 8 +- .../UI/ActiveControls/TActivePageAdapter.php | 8 +- .../Web/UI/ActiveControls/TActivePager.php | 6 +- .../Web/UI/ActiveControls/TActivePanel.php | 6 +- .../UI/ActiveControls/TActiveRadioButton.php | 12 +- .../ActiveControls/TActiveRadioButtonList.php | 34 +- .../UI/ActiveControls/TActiveRatingList.php | 19 +- .../Web/UI/ActiveControls/TActiveRepeater.php | 40 +- .../UI/ActiveControls/TActiveTableCell.php | 2 +- .../Web/UI/ActiveControls/TActiveTableRow.php | 2 +- .../Web/UI/ActiveControls/TActiveTextBox.php | 9 +- .../Web/UI/ActiveControls/TAutoComplete.php | 15 +- .../UI/ActiveControls/TBaseActiveControl.php | 9 +- .../Web/UI/ActiveControls/TCallback.php | 6 +- .../ActiveControls/TCallbackClientScript.php | 460 +- .../UI/ActiveControls/TCallbackClientSide.php | 23 +- .../TCallbackEventParameter.php | 6 +- .../UI/ActiveControls/TCallbackOptions.php | 6 +- .../TCallbackResponseAdapter.php | 9 +- .../Web/UI/ActiveControls/TDraggable.php | 14 +- .../Web/UI/ActiveControls/TDropContainer.php | 67 +- .../TEventTriggeredCallback.php | 6 +- .../Web/UI/ActiveControls/TInPlaceTextBox.php | 14 +- .../ActiveControls/TTimeTriggeredCallback.php | 10 +- .../UI/ActiveControls/TTriggeredCallback.php | 6 +- .../TValueTriggeredCallback.php | 6 +- .../Web/UI/JuiControls/TJuiAutoComplete.php | 495 + .../Web/UI/JuiControls/TJuiControlAdapter.php | 204 + .../Web/UI/JuiControls/TJuiControlOptions.php | 181 + .../Web/UI/JuiControls/TJuiDatePicker.php | 287 + .../Web/UI/JuiControls/TJuiDialog.php | 286 + .../Web/UI/JuiControls/TJuiDraggable.php | 169 + .../Web/UI/JuiControls/TJuiDroppable.php | 220 + .../Web/UI/JuiControls/TJuiProgressbar.php | 156 + .../Web/UI/JuiControls/TJuiResizable.php | 172 + .../Web/UI/JuiControls/TJuiSelectable.php | 280 + .../Web/UI/JuiControls/TJuiSortable.php | 333 + .../Web/UI/TCachePageStatePersister.php | 6 +- .../framework/Web/UI/TClientScriptManager.php | 118 +- .../framework/Web/UI/TCompositeControl.php | 6 +- gui/baculum/framework/Web/UI/TControl.php | 70 +- .../framework/Web/UI/TControlAdapter.php | 6 +- gui/baculum/framework/Web/UI/TForm.php | 6 +- gui/baculum/framework/Web/UI/THtmlWriter.php | 6 +- gui/baculum/framework/Web/UI/TPage.php | 42 +- .../framework/Web/UI/TPageStatePersister.php | 6 +- .../Web/UI/TSessionPageStatePersister.php | 6 +- .../framework/Web/UI/TTemplateControl.php | 92 +- .../Web/UI/TTemplateControlInheritable.php | 4 +- .../framework/Web/UI/TTemplateManager.php | 40 +- .../framework/Web/UI/TThemeManager.php | 6 +- .../Web/UI/WebControls/TAccordion.php | 12 +- .../Web/UI/WebControls/TBaseDataList.php | 6 +- .../Web/UI/WebControls/TBaseValidator.php | 6 +- .../Web/UI/WebControls/TBoundColumn.php | 6 +- .../Web/UI/WebControls/TBulletedList.php | 6 +- .../framework/Web/UI/WebControls/TButton.php | 51 +- .../Web/UI/WebControls/TButtonColumn.php | 6 +- .../framework/Web/UI/WebControls/TCaptcha.php | 6 +- .../Web/UI/WebControls/TCaptchaValidator.php | 6 +- .../Web/UI/WebControls/TCheckBox.php | 28 +- .../Web/UI/WebControls/TCheckBoxColumn.php | 6 +- .../Web/UI/WebControls/TCheckBoxList.php | 32 +- .../Web/UI/WebControls/TClientScript.php | 6 +- .../Web/UI/WebControls/TColorPicker.php | 6 +- .../Web/UI/WebControls/TCompareValidator.php | 6 +- .../Web/UI/WebControls/TConditional.php | 6 +- .../framework/Web/UI/WebControls/TContent.php | 6 +- .../UI/WebControls/TContentPlaceHolder.php | 6 +- .../Web/UI/WebControls/TCustomValidator.php | 6 +- .../Web/UI/WebControls/TDataBoundControl.php | 6 +- .../Web/UI/WebControls/TDataGrid.php | 8 +- .../Web/UI/WebControls/TDataGridColumn.php | 6 +- .../UI/WebControls/TDataGridItemRenderer.php | 6 +- .../UI/WebControls/TDataGridPagerStyle.php | 35 +- .../Web/UI/WebControls/TDataList.php | 6 +- .../UI/WebControls/TDataListItemRenderer.php | 6 +- .../Web/UI/WebControls/TDataRenderer.php | 6 +- .../Web/UI/WebControls/TDataSourceControl.php | 6 +- .../Web/UI/WebControls/TDataSourceView.php | 6 +- .../Web/UI/WebControls/TDataTypeValidator.php | 6 +- .../Web/UI/WebControls/TDatePicker.php | 30 +- .../Web/UI/WebControls/TDropDownList.php | 6 +- .../UI/WebControls/TDropDownListColumn.php | 6 +- .../Web/UI/WebControls/TEditCommandColumn.php | 6 +- .../UI/WebControls/TEmailAddressValidator.php | 6 +- .../Web/UI/WebControls/TExpression.php | 6 +- .../Web/UI/WebControls/TFileUpload.php | 8 +- .../Web/UI/WebControls/TFlushOutput.php | 4 +- .../framework/Web/UI/WebControls/TFont.php | 23 +- .../framework/Web/UI/WebControls/THead.php | 6 +- .../framework/Web/UI/WebControls/THeader1.php | 6 +- .../framework/Web/UI/WebControls/THeader2.php | 6 +- .../framework/Web/UI/WebControls/THeader3.php | 6 +- .../framework/Web/UI/WebControls/THeader4.php | 6 +- .../framework/Web/UI/WebControls/THeader5.php | 6 +- .../framework/Web/UI/WebControls/THeader6.php | 6 +- .../Web/UI/WebControls/THiddenField.php | 2 +- .../Web/UI/WebControls/THtmlArea.php | 8 +- .../Web/UI/WebControls/THtmlArea4.php | 8 +- .../Web/UI/WebControls/THtmlElement.php | 6 +- .../Web/UI/WebControls/THyperLink.php | 2 +- .../Web/UI/WebControls/THyperLinkColumn.php | 6 +- .../framework/Web/UI/WebControls/TImage.php | 6 +- .../Web/UI/WebControls/TImageButton.php | 6 +- .../Web/UI/WebControls/TImageMap.php | 6 +- .../Web/UI/WebControls/TInlineFrame.php | 48 +- .../Web/UI/WebControls/TItemDataRenderer.php | 6 +- .../Web/UI/WebControls/TJavascriptLogger.php | 8 +- .../Web/UI/WebControls/TKeyboard.php | 6 +- .../framework/Web/UI/WebControls/TLabel.php | 8 +- .../Web/UI/WebControls/TLinkButton.php | 6 +- .../framework/Web/UI/WebControls/TListBox.php | 6 +- .../Web/UI/WebControls/TListControl.php | 6 +- .../UI/WebControls/TListControlValidator.php | 6 +- .../Web/UI/WebControls/TListItem.php | 35 +- .../framework/Web/UI/WebControls/TLiteral.php | 8 +- .../Web/UI/WebControls/TLiteralColumn.php | 6 +- .../Web/UI/WebControls/TMarkdown.php | 6 +- .../Web/UI/WebControls/TMultiView.php | 6 +- .../Web/UI/WebControls/TOutputCache.php | 6 +- .../framework/Web/UI/WebControls/TPager.php | 6 +- .../framework/Web/UI/WebControls/TPanel.php | 6 +- .../Web/UI/WebControls/TPanelStyle.php | 27 +- .../Web/UI/WebControls/TPlaceHolder.php | 6 +- .../Web/UI/WebControls/TRadioButton.php | 16 +- .../Web/UI/WebControls/TRadioButtonList.php | 16 +- .../Web/UI/WebControls/TRangeValidator.php | 6 +- .../Web/UI/WebControls/TRatingList.php | 10 +- .../Web/UI/WebControls/TReCaptcha.php | 15 +- .../Web/UI/WebControls/TReCaptcha2.php | 364 + .../UI/WebControls/TReCaptcha2Validator.php | 110 + .../UI/WebControls/TReCaptchaValidator.php | 16 +- .../TRegularExpressionValidator.php | 6 +- .../Web/UI/WebControls/TRepeatInfo.php | 6 +- .../Web/UI/WebControls/TRepeater.php | 6 +- .../UI/WebControls/TRepeaterItemRenderer.php | 6 +- .../WebControls/TRequiredFieldValidator.php | 6 +- .../Web/UI/WebControls/TSafeHtml.php | 6 +- .../framework/Web/UI/WebControls/TSlider.php | 8 +- .../Web/UI/WebControls/TStatements.php | 6 +- .../framework/Web/UI/WebControls/TStyle.php | 68 +- .../Web/UI/WebControls/TStyleSheet.php | 52 +- .../Web/UI/WebControls/TTabPanel.php | 6 +- .../framework/Web/UI/WebControls/TTable.php | 6 +- .../Web/UI/WebControls/TTableCell.php | 6 +- .../Web/UI/WebControls/TTableFooterRow.php | 6 +- .../Web/UI/WebControls/TTableHeaderCell.php | 6 +- .../Web/UI/WebControls/TTableHeaderRow.php | 6 +- .../Web/UI/WebControls/TTableRow.php | 6 +- .../Web/UI/WebControls/TTemplateColumn.php | 6 +- .../framework/Web/UI/WebControls/TTextBox.php | 8 +- .../Web/UI/WebControls/TTextHighlighter.php | 6 +- .../Web/UI/WebControls/TTextProcessor.php | 6 +- .../Web/UI/WebControls/TValidationSummary.php | 6 +- .../Web/UI/WebControls/TWebControl.php | 6 +- .../Web/UI/WebControls/TWebControlAdapter.php | 6 +- .../UI/WebControls/TWebControlDecorator.php | 6 +- .../framework/Web/UI/WebControls/TWizard.php | 6 +- .../TWizardNavigationButtonStyle.php | 6 +- .../Web/UI/WebControls/TXmlTransform.php | 6 +- .../Web/UI/WebControls/assets/captcha.php | 6 +- .../framework/Wsat/TWsatARGenerator.php | 113 +- .../framework/Wsat/TWsatBaseGenerator.php | 82 + .../Wsat/TWsatScaffoldingGenerator.php | 162 + gui/baculum/framework/Wsat/TWsatService.php | 16 +- .../framework/Wsat/pages/TWsatGenerateAR.page | 4 +- .../framework/Wsat/pages/TWsatGenerateAR.php | 8 +- .../framework/Wsat/pages/TWsatHome.page | 36 +- .../framework/Wsat/pages/TWsatHome.php | 8 +- .../framework/Wsat/pages/TWsatLogin.page | 5 +- .../framework/Wsat/pages/TWsatLogin.php | 7 +- .../Wsat/pages/TWsatScaffolding.page | 22 +- .../framework/Wsat/pages/TWsatScaffolding.php | 65 +- .../Wsat/pages/layout/TWsatLayout.tpl | 7 +- .../Wsat/themes/PradoSoft/imgs/pradologo.gif | Bin 3039 -> 2583 bytes .../framework/Wsat/themes/PradoSoft/main.css | 6 + gui/baculum/framework/Xml/TXmlDocument.php | 8 +- gui/baculum/framework/interfaces.php | 6 +- gui/baculum/framework/prado.php | 6 +- gui/baculum/framework/pradolite.php | 448 +- gui/baculum/index.php | 1 - gui/baculum/protected/API/Class/APIConfig.php | 266 + .../protected/API/Class/APIDbModule.php | 108 + gui/baculum/protected/API/Class/APIModule.php | 36 + .../protected/API/Class/APIUrlMapping.php | 34 + .../protected/API/Class/BException.php | 65 + .../protected/API/Class/BaculaConfig.php | 114 + .../protected/API/Class/BaculaSetting.php | 506 + .../protected/API/Class/BaculumAPIPage.php | 27 + .../Class/BaculumAPIServer.php} | 224 +- .../API/Class/BasicAPIUserConfig.php | 41 + gui/baculum/protected/API/Class/Bconsole.php | 206 + .../{ => API}/Class/ClientManager.php | 23 +- .../{ => API}/Class/ClientRecord.php | 4 +- gui/baculum/protected/API/Class/Database.php | 155 + .../{ => API}/Class/FileSetManager.php | 7 +- .../{ => API}/Class/FileSetRecord.php | 4 +- gui/baculum/protected/API/Class/JSONTools.php | 167 + .../protected/{ => API}/Class/JobManager.php | 18 +- .../protected/{ => API}/Class/JobRecord.php | 4 +- .../protected/{ => API}/Class/LogManager.php | 7 +- .../protected/{ => API}/Class/LogRecord.php | 6 +- .../API/Class/OAuth2/AuthIdManager.php | 101 + .../API/Class/OAuth2/AuthIdRecord.php | 53 + .../API/Class/OAuth2/BaculumOAuth2.php | 126 + .../API/Class/OAuth2/OAuth2Config.php | 119 + .../API/Class/OAuth2/TokenManager.php | 120 + .../API/Class/OAuth2/TokenRecord.php | 52 + .../protected/{ => API}/Class/PoolManager.php | 32 +- .../protected/{ => API}/Class/PoolRecord.php | 7 +- .../{ => API}/Class/StorageManager.php | 7 +- .../{ => API}/Class/StorageRecord.php | 6 +- .../{ => API}/Class/VersionManager.php | 7 +- .../{ => API}/Class/VersionRecord.php | 6 +- .../{ => API}/Class/VolumeManager.php | 68 +- .../{ => API}/Class/VolumeRecord.php | 10 +- .../protected/{Data => API/Config}/.gitignore | 0 gui/baculum/protected/API/JavaScript/misc.js | 24 + gui/baculum/protected/API/Lang/en/messages.mo | Bin 0 -> 9980 bytes gui/baculum/protected/API/Lang/en/messages.po | 381 + gui/baculum/protected/API/Lang/pl/messages.mo | Bin 0 -> 10704 bytes gui/baculum/protected/API/Lang/pl/messages.po | 381 + gui/baculum/protected/API/Layouts/Main.php | 26 + gui/baculum/protected/API/Layouts/Main.tpl | 10 + gui/baculum/protected/API/Layouts/Wizard.php | 26 + .../protected/{ => API}/Layouts/Wizard.tpl | 1 + .../protected/{logs => API/Logs}/.gitignore | 0 .../{ => API}/Pages/API/BVFSClearCache.php | 6 +- .../{ => API}/Pages/API/BVFSGetJobids.php | 6 +- .../{ => API}/Pages/API/BVFSLsDirs.php | 14 +- .../{ => API}/Pages/API/BVFSLsFiles.php | 14 +- .../{ => API}/Pages/API/BVFSRestore.php | 14 +- .../{ => API}/Pages/API/BVFSUpdate.php | 12 +- .../{ => API}/Pages/API/BVFSVersions.php | 14 +- .../protected/API/Pages/API/Catalog.php | 35 + .../protected/{ => API}/Pages/API/Client.php | 25 +- .../{ => API}/Pages/API/ClientShow.php | 13 +- .../{ => API}/Pages/API/ClientStatus.php | 13 +- .../protected/{ => API}/Pages/API/Clients.php | 20 +- .../{ => API}/Pages/API/ClientsShow.php | 12 +- .../protected/API/Pages/API/Config.php | 60 + .../protected/API/Pages/API/ConfigDirTest.php | 38 + .../{ => API}/Pages/API/ConsoleCommand.php | 2 +- .../protected/{ => API}/Pages/API/DbSize.php | 2 +- .../{ => API}/Pages/API/Directors.php | 4 +- .../protected/{ => API}/Pages/API/FileSet.php | 2 +- .../{ => API}/Pages/API/FileSets.php | 4 +- .../protected/API/Pages/API/JSONToolsTest.php | 42 + .../protected/{ => API}/Pages/API/Job.php | 2 +- .../{ => API}/Pages/API/JobCancel.php | 2 +- .../{ => API}/Pages/API/JobEstimate.php | 2 +- .../protected/{ => API}/Pages/API/JobLog.php | 2 +- .../protected/{ => API}/Pages/API/JobRun.php | 2 +- .../protected/{ => API}/Pages/API/JobShow.php | 2 +- .../{ => API}/Pages/API/JobTasks.php | 2 +- .../{ => API}/Pages/API/JobTotals.php | 2 +- .../protected/{ => API}/Pages/API/Jobs.php | 2 +- .../protected/API/Pages/API/JobsForClient.php | 46 + .../Pages/API/JobsOnVolume.php} | 38 +- .../{ => API}/Pages/API/JobsRecent.php | 2 +- .../{ => API}/Pages/API/JobsShow.php | 2 +- .../protected/{ => API}/Pages/API/Pool.php | 13 +- .../{ => API}/Pages/API/PoolShow.php | 2 +- .../{ => API}/Pages/API/PoolUpdate.php | 2 +- .../{ => API}/Pages/API/PoolUpdateVolumes.php | 2 +- .../protected/{ => API}/Pages/API/Pools.php | 2 +- .../{ => API}/Pages/API/PoolsShow.php | 2 +- .../{ => API}/Pages/API/RestoreRun.php | 9 +- .../protected/{ => API}/Pages/API/Storage.php | 2 +- .../{ => API}/Pages/API/StorageMount.php | 2 +- .../{ => API}/Pages/API/StorageRelease.php | 2 +- .../{ => API}/Pages/API/StorageShow.php | 2 +- .../{ => API}/Pages/API/StorageStatus.php | 2 +- .../{ => API}/Pages/API/StorageUmount.php | 2 +- .../{ => API}/Pages/API/Storages.php | 2 +- .../{ => API}/Pages/API/StoragesShow.php | 2 +- .../protected/API/Pages/API/Volume.php | 86 + .../{ => API}/Pages/API/VolumePrune.php | 2 +- .../{ => API}/Pages/API/VolumePurge.php | 2 +- .../protected/{ => API}/Pages/API/Volumes.php | 7 +- .../Pages/API/VolumesPools.php} | 18 +- .../protected/API/Pages/API/Welcome.php | 35 + .../protected/API/Pages/OAuth2/Authorize.php | 104 + .../API/Pages/OAuth2/RequestToken.php | 140 + .../protected/API/Pages/Panel/APIHome.page | 237 + .../protected/API/Pages/Panel/APIHome.php | 109 + .../API/Pages/Panel/APIInstallWizard.page | 918 + .../API/Pages/Panel/APIInstallWizard.php | 425 + .../protected/API/Pages/Panel/MainPage.php | 40 + gui/baculum/protected/API/Pages/config.xml | 42 + gui/baculum/protected/API/endpoints.xml | 93 + gui/baculum/protected/Class/API.php | 362 - gui/baculum/protected/Class/Bconsole.php | 145 - .../protected/Class/ConfigurationManager.php | 374 - gui/baculum/protected/Class/Database.php | 156 - gui/baculum/protected/Class/Errors.php | 120 - .../{ => Common}/Class/BaculumPage.php | 55 +- .../Common/Class/BaculumUrlMapping.php | 74 + .../{ => Common}/Class/BaculumUser.php | 9 - .../Class/BaculumUsersManager.php | 44 +- .../Common/Class/BasicUserConfig.php | 168 + .../protected/Common/Class/CommonModule.php | 37 + .../protected/Common/Class/ConfigBacula.php | 187 + .../Common/Class/ConfigFileModule.php | 159 + .../protected/Common/Class/ConfigIni.php | 169 + gui/baculum/protected/Common/Class/Errors.php | 160 + .../protected/Common/Class/Interfaces.php | 45 + .../protected/{ => Common}/Class/Logging.php | 41 +- .../{ => Common}/Class/Miscellaneous.php | 64 +- gui/baculum/protected/Common/Class/OAuth2.php | 267 + gui/baculum/protected/Common/Class/Params.php | 108 + .../protected/Common/Class/SessionRecord.php | 189 + .../{ => Common}/Portlets/BActiveButton.php | 6 +- .../{ => Common}/Portlets/BButton.php | 6 +- .../Common/Portlets/NewAuthClient.php | 112 + .../Common/Portlets/NewAuthClient.tpl | 237 + .../protected/Common/Portlets/NewHost.php | 224 + .../protected/Common/Portlets/NewHost.tpl | 304 + .../Common/Portlets/PortletTemplate.php | 29 + gui/baculum/protected/JavaScript/opentip.js | 1285 -- gui/baculum/protected/Lang/en/messages.mo | Bin 28551 -> 0 bytes gui/baculum/protected/Lang/pl/messages.mo | Bin 30890 -> 0 bytes gui/baculum/protected/Lang/pt/messages.mo | Bin 30644 -> 0 bytes gui/baculum/protected/Pages/BaculumError.page | 50 - .../protected/Pages/ConfigurationWizard.page | 323 - .../protected/Pages/ConfigurationWizard.php | 234 - gui/baculum/protected/Pages/config.xml | 9 - gui/baculum/protected/Portlets/Console.tpl | 37 - .../protected/Web/Class/BaculumAPIClient.php | 551 + .../protected/Web/Class/BaculumWebPage.php | 64 + .../Web/Class/BasicWebUserConfig.php | 41 + .../protected/Web/Class/DataDescription.php | 59 + .../protected/Web/Class/HostConfig.php | 183 + .../protected/Web/Class/HostRecord.php | 88 + .../Class/OAuth2Record.php} | 33 +- gui/baculum/protected/Web/Class/WebConfig.php | 134 + gui/baculum/protected/Web/Class/WebModule.php | 36 + .../protected/Web/Class/WebUrlMapping.php | 34 + gui/baculum/protected/Web/Config/.gitignore | 0 gui/baculum/protected/Web/Data/data_desc.json | 3751 ++++ gui/baculum/protected/{ => Web}/Init.php | 5 +- .../protected/Web/JavaScript/bacula-config.js | 107 + .../JavaScript/configuration-window.js | 60 +- .../{ => Web}/JavaScript/excanvas.js | 0 .../protected/{ => Web}/JavaScript/flotr2.js | 0 .../protected/{ => Web}/JavaScript/graph.js | 52 +- .../protected/{ => Web}/JavaScript/misc.js | 78 +- .../protected/Web/JavaScript/opentip.js | 1793 ++ .../{ => Web}/JavaScript/panel-window.js | 29 +- .../{ => Web}/JavaScript/slide-window.js | 243 +- .../{ => Web}/JavaScript/statistics.js | 0 .../protected/{ => Web}/JavaScript/tooltip.js | 6 +- .../protected/Web/JavaScript/validators.js | 17 + gui/baculum/protected/Web/Lang/en/messages.mo | Bin 0 -> 33263 bytes .../protected/{ => Web}/Lang/en/messages.po | 388 +- gui/baculum/protected/Web/Lang/ja/messages.mo | Bin 0 -> 30191 bytes gui/baculum/protected/Web/Lang/ja/messages.po | 1152 ++ gui/baculum/protected/Web/Lang/pl/messages.mo | Bin 0 -> 35475 bytes .../protected/{ => Web}/Lang/pl/messages.po | 381 +- gui/baculum/protected/Web/Lang/pt/messages.mo | Bin 0 -> 35045 bytes .../protected/{ => Web}/Lang/pt/messages.po | 378 +- .../protected/{ => Web}/Layouts/Main.php | 0 .../protected/{ => Web}/Layouts/Main.tpl | 1 + .../{ => Web}/Layouts/MessageBox.php | 0 .../{ => Web}/Layouts/MessageBox.tpl | 0 .../protected/{ => Web}/Layouts/Wizard.php | 0 gui/baculum/protected/Web/Layouts/Wizard.tpl | 10 + gui/baculum/protected/Web/Logs/.gitignore | 0 .../protected/Web/Pages/BaculumError.page | 14 + .../{ => Web}/Pages/BaculumError.php | 9 +- .../protected/{ => Web}/Pages/Monitor.php | 8 +- .../protected/Web/Pages/OAuth2Redirect.php | 58 + .../{ => Web}/Pages/Requirements.php | 31 +- .../{ => Web}/Pages/RestoreWizard.page | 34 +- .../{ => Web}/Pages/RestoreWizard.php | 10 +- .../protected/Web/Pages/WebConfigWizard.page | 167 + .../protected/Web/Pages/WebConfigWizard.php | 166 + .../Home.page => Web/Pages/WebHome.page} | 87 +- .../{Pages/Home.php => Web/Pages/WebHome.php} | 101 +- gui/baculum/protected/Web/Pages/config.xml | 30 + .../protected/Web/Portlets/BConditional.php | 162 + .../Web/Portlets/BaculaConfigComponents.php | 95 + .../Web/Portlets/BaculaConfigComponents.tpl | 34 + .../Web/Portlets/BaculaConfigDirectives.php | 317 + .../Web/Portlets/BaculaConfigDirectives.tpl | 85 + .../Web/Portlets/BaculaConfigResources.php | 89 + .../Web/Portlets/BaculaConfigResources.tpl | 30 + .../protected/Web/Portlets/BaculaHosts.php | 80 + .../protected/Web/Portlets/BaculaHosts.tpl | 40 + .../Portlets/ClientConfiguration.php | 28 +- .../Portlets/ClientConfiguration.tpl | 71 +- .../{ => Web}/Portlets/ClientList.php | 42 +- .../{ => Web}/Portlets/ClientList.tpl | 2 +- .../Web/Portlets/ComponentListTemplate.php | 67 + .../Web/Portlets/ConfigListTemplate.php | 47 + .../{ => Web}/Portlets/ConfigurationPanel.php | 2 +- .../{ => Web}/Portlets/ConfigurationPanel.tpl | 2 +- .../protected/{ => Web}/Portlets/Console.php | 5 +- .../protected/Web/Portlets/Console.tpl | 37 + .../Web/Portlets/DirectiveBoolean.php | 50 + .../Web/Portlets/DirectiveBoolean.tpl | 13 + .../Web/Portlets/DirectiveComboBox.php | 75 + .../Web/Portlets/DirectiveComboBox.tpl | 23 + .../Web/Portlets/DirectiveFileSet.php | 337 + .../Web/Portlets/DirectiveFileSet.tpl | 60 + .../Web/Portlets/DirectiveListTemplate.php | 139 + .../Web/Portlets/DirectiveMessages.php | 213 + .../Web/Portlets/DirectiveMessages.tpl | 11 + .../Web/Portlets/DirectiveRunscript.php | 190 + .../Web/Portlets/DirectiveRunscript.tpl | 29 + .../Web/Portlets/DirectiveSchedule.php | 355 + .../Web/Portlets/DirectiveSchedule.tpl | 249 + .../Web/Portlets/DirectiveSetting.php | 52 + .../Web/Portlets/DirectiveSetting.tpl | 22 + .../Web/Portlets/DirectiveTemplate.php | 253 + .../protected/Web/Portlets/DirectiveText.php | 53 + .../protected/Web/Portlets/DirectiveText.tpl | 23 + .../Web/Portlets/DirectiveTimePeriod.php | 132 + .../Web/Portlets/DirectiveTimePeriod.tpl | 29 + .../Web/Portlets/HostListTemplate.php | 57 + .../Web/Portlets/IDirectiveField.php | 43 + .../{ => Web}/Portlets/ISlideWindow.php | 2 +- .../{ => Web}/Portlets/JobConfiguration.php | 28 +- .../{ => Web}/Portlets/JobConfiguration.tpl | 26 +- .../protected/{ => Web}/Portlets/JobList.php | 43 +- .../protected/{ => Web}/Portlets/JobList.tpl | 20 +- .../Portlets/JobRunConfiguration.php | 16 +- .../Portlets/JobRunConfiguration.tpl | 24 +- .../{ => Web}/Portlets/JobRunList.php | 45 +- .../{ => Web}/Portlets/JobRunList.tpl | 2 +- .../protected/Web/Portlets/MessageTypes.php | 73 + .../protected/Web/Portlets/MessageTypes.tpl | 5 + .../protected/Web/Portlets/NewFileSetMenu.php | 26 + .../protected/Web/Portlets/NewFileSetMenu.tpl | 30 + .../Web/Portlets/NewMessagesMenu.php | 26 + .../Web/Portlets/NewMessagesMenu.tpl | 113 + .../Web/Portlets/NewResourceMenu.php | 26 + .../Web/Portlets/NewResourceMenu.tpl | 179 + .../Web/Portlets/NewRunscriptMenu.php | 27 + .../Web/Portlets/NewRunscriptMenu.tpl | 14 + .../{ => Web}/Portlets/PoolConfiguration.php | 59 +- .../{ => Web}/Portlets/PoolConfiguration.tpl | 29 +- .../protected/{ => Web}/Portlets/PoolList.php | 41 +- .../protected/{ => Web}/Portlets/PoolList.tpl | 2 +- .../protected/{ => Web}/Portlets/Portlets.php | 4 + .../Web/Portlets/ResourceListTemplate.php | 75 + .../{ => Web}/Portlets/SlideWindow.php | 4 +- .../{ => Web}/Portlets/SlideWindow.tpl | 12 +- .../Portlets/StorageConfiguration.php | 2 +- .../Portlets/StorageConfiguration.tpl | 2 +- .../{ => Web}/Portlets/StorageList.php | 41 +- .../{ => Web}/Portlets/StorageList.tpl | 2 +- .../protected/{ => Web}/Portlets/TrayBar.php | 2 +- .../protected/{ => Web}/Portlets/TrayBar.tpl | 15 +- .../Portlets/VolumeConfiguration.php | 2 +- .../Portlets/VolumeConfiguration.tpl | 34 +- .../{ => Web}/Portlets/VolumeList.php | 46 +- .../{ => Web}/Portlets/VolumeList.tpl | 6 +- .../{ => Web}/Portlets/VolumesTools.php | 3 +- .../{ => Web}/Portlets/VolumesTools.tpl | 26 +- gui/baculum/protected/Web/endpoints.xml | 9 + gui/baculum/protected/application.xml | 131 +- gui/baculum/tests/units/Class/APITest.php | 87 - ...gurationManagerApplicationSettingsTest.php | 231 - .../units/Class/ConfigurationManagerTest.php | 161 - .../ConfigurationManagerUsersConfigTest.php | 226 - gui/baculum/themes/Baculum-v1/add.png | Bin 0 -> 465 bytes .../themes/Baculum-v1/ajax-loader-arrows.gif | Bin 0 -> 847 bytes .../themes/Baculum-v1/bacula-config.css | 162 + gui/baculum/themes/Baculum-v1/config.png | Bin 0 -> 1064 bytes .../themes/Baculum-v1/icon_refresh.png | Bin 0 -> 2258 bytes gui/baculum/themes/Baculum-v1/opentip.css | 695 +- gui/baculum/themes/Baculum-v1/step-bar.png | Bin 0 -> 3535 bytes gui/baculum/themes/Baculum-v1/style.css | 187 +- gui/baculum/themes/Baculum-v1/switch.png | Bin 0 -> 1912 bytes gui/baculum/themes/Baculum-v1/wizard.css | 9 +- 916 files changed, 70777 insertions(+), 60452 deletions(-) delete mode 100644 gui/baculum/debian/baculum-apache2.dirs delete mode 100644 gui/baculum/debian/baculum-apache2.install delete mode 100644 gui/baculum/debian/baculum-apache2.links delete mode 100644 gui/baculum/debian/baculum-apache2.postinst delete mode 100644 gui/baculum/debian/baculum-apache2.prerm create mode 100644 gui/baculum/debian/baculum-api-apache2.dirs create mode 100644 gui/baculum/debian/baculum-api-apache2.install create mode 100644 gui/baculum/debian/baculum-api-apache2.links create mode 100644 gui/baculum/debian/baculum-api-apache2.postinst create mode 100644 gui/baculum/debian/baculum-api-apache2.prerm create mode 100644 gui/baculum/debian/baculum-api-lighttpd.dirs create mode 100644 gui/baculum/debian/baculum-api-lighttpd.install create mode 100644 gui/baculum/debian/baculum-api-lighttpd.links create mode 100644 gui/baculum/debian/baculum-api-lighttpd.postinst create mode 100644 gui/baculum/debian/baculum-api-lighttpd.prerm create mode 100644 gui/baculum/debian/baculum-api-lighttpd.service create mode 100644 gui/baculum/debian/baculum-api.dirs create mode 100644 gui/baculum/debian/baculum-api.install create mode 100644 gui/baculum/debian/baculum-api.links create mode 100644 gui/baculum/debian/baculum-api.postinst create mode 100644 gui/baculum/debian/baculum-api.prerm create mode 100644 gui/baculum/debian/baculum-common.dirs create mode 100644 gui/baculum/debian/baculum-common.install create mode 100644 gui/baculum/debian/baculum-common.links rename gui/baculum/debian/{baculum.postinst => baculum-common.postinst} (100%) create mode 100644 gui/baculum/debian/baculum-common.prerm delete mode 100644 gui/baculum/debian/baculum-lighttpd.dirs delete mode 100755 gui/baculum/debian/baculum-lighttpd.init delete mode 100644 gui/baculum/debian/baculum-lighttpd.install delete mode 100644 gui/baculum/debian/baculum-lighttpd.links delete mode 100644 gui/baculum/debian/baculum-lighttpd.postinst delete mode 100644 gui/baculum/debian/baculum-lighttpd.prerm create mode 100644 gui/baculum/debian/baculum-web-apache2.dirs create mode 100644 gui/baculum/debian/baculum-web-apache2.install create mode 100644 gui/baculum/debian/baculum-web-apache2.links create mode 100644 gui/baculum/debian/baculum-web-apache2.postinst create mode 100644 gui/baculum/debian/baculum-web-apache2.prerm create mode 100644 gui/baculum/debian/baculum-web-lighttpd.dirs create mode 100644 gui/baculum/debian/baculum-web-lighttpd.install create mode 100644 gui/baculum/debian/baculum-web-lighttpd.links create mode 100644 gui/baculum/debian/baculum-web-lighttpd.postinst create mode 100644 gui/baculum/debian/baculum-web-lighttpd.prerm rename gui/baculum/{examples/rpm-template/baculum-lighttpd.service => debian/baculum-web-lighttpd.service} (54%) create mode 100644 gui/baculum/debian/baculum-web.dirs create mode 100644 gui/baculum/debian/baculum-web.install create mode 100644 gui/baculum/debian/baculum-web.links create mode 100644 gui/baculum/debian/baculum-web.postinst create mode 100644 gui/baculum/debian/baculum-web.prerm delete mode 100644 gui/baculum/debian/baculum.dirs delete mode 100644 gui/baculum/debian/baculum.install delete mode 100644 gui/baculum/debian/baculum.links delete mode 100644 gui/baculum/debian/baculum.prerm create mode 100644 gui/baculum/examples/deb-template/baculum-api-apache.conf create mode 100644 gui/baculum/examples/deb-template/baculum-api-lighttpd.conf create mode 100644 gui/baculum/examples/deb-template/baculum-api-lighttpd.service rename gui/baculum/examples/deb-template/{baculum-apache.conf => baculum-web-apache.conf} (63%) rename gui/baculum/examples/deb-template/{baculum-lighttpd.conf => baculum-web-lighttpd.conf} (71%) rename gui/baculum/examples/{rpm/baculum-lighttpd.service => deb-template/baculum-web-lighttpd.service} (57%) create mode 100644 gui/baculum/examples/deb/baculum-api-apache.conf create mode 100644 gui/baculum/examples/deb/baculum-api-lighttpd.conf create mode 100644 gui/baculum/examples/deb/baculum-api-lighttpd.service create mode 100644 gui/baculum/examples/deb/baculum-web-apache.conf rename gui/baculum/examples/deb/{baculum-lighttpd.conf => baculum-web-lighttpd.conf} (70%) create mode 100644 gui/baculum/examples/deb/baculum-web-lighttpd.service delete mode 100644 gui/baculum/examples/nginx/baculum.conf delete mode 100644 gui/baculum/examples/nginx/php-fpm/baculum-php.conf create mode 100644 gui/baculum/examples/rpm-template/baculum-api-apache.conf create mode 100644 gui/baculum/examples/rpm-template/baculum-api-lighttpd.conf create mode 100644 gui/baculum/examples/rpm-template/baculum-api-lighttpd.service rename gui/baculum/examples/rpm-template/{baculum-apache.conf => baculum-web-apache.conf} (63%) rename gui/baculum/examples/rpm-template/{baculum-lighttpd.conf => baculum-web-lighttpd.conf} (71%) rename gui/baculum/examples/{deb-template/baculum-lighttpd.service => rpm-template/baculum-web-lighttpd.service} (55%) delete mode 100644 gui/baculum/examples/rpm/baculum-apache.conf create mode 100644 gui/baculum/examples/rpm/baculum-api-apache.conf create mode 100644 gui/baculum/examples/rpm/baculum-api-lighttpd.conf create mode 100644 gui/baculum/examples/rpm/baculum-api-lighttpd.service delete mode 100644 gui/baculum/examples/rpm/baculum-lighttpd.conf rename gui/baculum/examples/{deb/baculum-apache.conf => rpm/baculum-web-apache.conf} (64%) create mode 100644 gui/baculum/examples/rpm/baculum-web-lighttpd.conf create mode 100644 gui/baculum/examples/rpm/baculum-web-lighttpd.service create mode 100644 gui/baculum/examples/sudo/baculum-api-httpd create mode 100644 gui/baculum/examples/sudo/baculum-api-lighttpd delete mode 100644 gui/baculum/examples/sudo/baculum-httpd delete mode 100644 gui/baculum/examples/sudo/baculum-lighttpd delete mode 100644 gui/baculum/examples/sudo/baculum-nginx delete mode 100644 gui/baculum/framework/3rdParty/FirePHPCore/FirePHP.class.php delete mode 100644 gui/baculum/framework/3rdParty/FirePHPCore/FirePHP.class.php4 delete mode 100644 gui/baculum/framework/3rdParty/FirePHPCore/LICENSE delete mode 100644 gui/baculum/framework/3rdParty/FirePHPCore/fb.php delete mode 100644 gui/baculum/framework/3rdParty/FirePHPCore/fb.php4 delete mode 100644 gui/baculum/framework/3rdParty/Markdown/License.text delete mode 100644 gui/baculum/framework/3rdParty/Markdown/MarkdownParser.php delete mode 100644 gui/baculum/framework/3rdParty/Parsedown/LICENSE.txt delete mode 100644 gui/baculum/framework/3rdParty/Parsedown/Parsedown.php delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/PHP/Shell.php delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Commands.php delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions.php delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/Autoload.php delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/AutoloadDebug.php delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/Colour.php delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/ExecutionTime.php delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/InlineHelp.php delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/LoadScript.php delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/Prototypes.php delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/VerbosePrint.php delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Options.php delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/README delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/php-shell-cmd.php delete mode 100644 gui/baculum/framework/3rdParty/PhpShell/php-shell-init.php delete mode 100644 gui/baculum/framework/3rdParty/ReCaptcha/LICENSE delete mode 100644 gui/baculum/framework/3rdParty/ReCaptcha/recaptchalib.php delete mode 100644 gui/baculum/framework/3rdParty/SafeHtml/HTMLSax3.php delete mode 100644 gui/baculum/framework/3rdParty/SafeHtml/HTMLSax3/Decorators.php delete mode 100644 gui/baculum/framework/3rdParty/SafeHtml/HTMLSax3/States.php delete mode 100644 gui/baculum/framework/3rdParty/SafeHtml/TSafeHtmlParser.php delete mode 100644 gui/baculum/framework/3rdParty/SafeHtml/license.txt delete mode 100644 gui/baculum/framework/3rdParty/SafeHtml/readme.txt delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/ABAP.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/CPP.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/CSS.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/DIFF.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/DTD.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/Generator.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/HTML.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/JAVA.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/JAVASCRIPT.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/MYSQL.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/PERL.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/PHP.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/PRADO.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/PYTHON.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/RUBY.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/Renderer.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/Renderer/Array.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/Renderer/BB.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/Renderer/Console.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/Renderer/Html.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/Renderer/HtmlTags.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/Renderer/JSON.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/Renderer/XML.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/SQL.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/Highlighter/XML.php delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/README delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/TODO delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/abap.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/cpp.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/css.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/diff.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/dtd.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/generate delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/generate.bat delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/html.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/java.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/javascript.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/mysql.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/package.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/perl.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/php.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/prado.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/python.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/ruby.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/sample.css delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/sql.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/Text/xml.xml delete mode 100644 gui/baculum/framework/3rdParty/TextHighlighter/highlight.css delete mode 100644 gui/baculum/framework/3rdParty/TinyMCE/license.txt delete mode 100644 gui/baculum/framework/3rdParty/TinyMCE/tiny_mce.md5 delete mode 100644 gui/baculum/framework/3rdParty/TinyMCE/tiny_mce.tar delete mode 100644 gui/baculum/framework/3rdParty/WsdlGen/Wsdl.php delete mode 100644 gui/baculum/framework/3rdParty/WsdlGen/WsdlGenerator.php delete mode 100644 gui/baculum/framework/3rdParty/WsdlGen/WsdlMessage.php delete mode 100644 gui/baculum/framework/3rdParty/WsdlGen/WsdlOperation.php delete mode 100644 gui/baculum/framework/I18N/core/MessageSource_MySQL.php create mode 100644 gui/baculum/framework/Web/Javascripts/css-packages.php create mode 100644 gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap-theme.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap-theme.css.map create mode 100644 gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap-theme.min.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap.css.map create mode 100644 gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap.min.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/bootstrap3/fonts/glyphicons-halflings-regular.eot create mode 100644 gui/baculum/framework/Web/Javascripts/source/bootstrap3/fonts/glyphicons-halflings-regular.svg create mode 100644 gui/baculum/framework/Web/Javascripts/source/bootstrap3/fonts/glyphicons-halflings-regular.ttf create mode 100644 gui/baculum/framework/Web/Javascripts/source/bootstrap3/fonts/glyphicons-halflings-regular.woff create mode 100644 gui/baculum/framework/Web/Javascripts/source/bootstrap3/fonts/glyphicons-halflings-regular.woff2 create mode 100644 gui/baculum/framework/Web/Javascripts/source/bootstrap3/js/bootstrap.js create mode 100644 gui/baculum/framework/Web/Javascripts/source/bootstrap3/js/bootstrap.min.js create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/images/animated-overlay.gif create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_222222_256x240.png create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_2e83ff_256x240.png create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_454545_256x240.png create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_888888_256x240.png create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/images/ui-icons_cd0a0a_256x240.png create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery-ui.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.accordion.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.autocomplete.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.button.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.core.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.datepicker.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.dialog.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.menu.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.progressbar.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.resizable.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.selectable.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.slider.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.spinner.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.tabs.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.theme.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/css/base/jquery.ui.tooltip.css create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/jquery-ui-i18n.min.js create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/jquery-ui.js create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/jquery-ui.min.js create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/jquery.js create mode 100644 gui/baculum/framework/Web/Javascripts/source/jquery/jquery.min.js create mode 100644 gui/baculum/framework/Web/Javascripts/source/prado/activecontrols/autocomplete.js delete mode 100644 gui/baculum/framework/Web/Javascripts/source/prado/activecontrols/json2.js create mode 100644 gui/baculum/framework/Web/Javascripts/source/tinymce-405/plugins/media/moxieplayer.swf create mode 100644 gui/baculum/framework/Web/UI/JuiControls/TJuiAutoComplete.php create mode 100644 gui/baculum/framework/Web/UI/JuiControls/TJuiControlAdapter.php create mode 100644 gui/baculum/framework/Web/UI/JuiControls/TJuiControlOptions.php create mode 100644 gui/baculum/framework/Web/UI/JuiControls/TJuiDatePicker.php create mode 100644 gui/baculum/framework/Web/UI/JuiControls/TJuiDialog.php create mode 100644 gui/baculum/framework/Web/UI/JuiControls/TJuiDraggable.php create mode 100644 gui/baculum/framework/Web/UI/JuiControls/TJuiDroppable.php create mode 100644 gui/baculum/framework/Web/UI/JuiControls/TJuiProgressbar.php create mode 100644 gui/baculum/framework/Web/UI/JuiControls/TJuiResizable.php create mode 100644 gui/baculum/framework/Web/UI/JuiControls/TJuiSelectable.php create mode 100644 gui/baculum/framework/Web/UI/JuiControls/TJuiSortable.php create mode 100644 gui/baculum/framework/Web/UI/WebControls/TReCaptcha2.php create mode 100644 gui/baculum/framework/Web/UI/WebControls/TReCaptcha2Validator.php create mode 100644 gui/baculum/framework/Wsat/TWsatBaseGenerator.php create mode 100644 gui/baculum/framework/Wsat/TWsatScaffoldingGenerator.php create mode 100644 gui/baculum/protected/API/Class/APIConfig.php create mode 100644 gui/baculum/protected/API/Class/APIDbModule.php create mode 100644 gui/baculum/protected/API/Class/APIModule.php create mode 100644 gui/baculum/protected/API/Class/APIUrlMapping.php create mode 100644 gui/baculum/protected/API/Class/BException.php create mode 100644 gui/baculum/protected/API/Class/BaculaConfig.php create mode 100644 gui/baculum/protected/API/Class/BaculaSetting.php create mode 100644 gui/baculum/protected/API/Class/BaculumAPIPage.php rename gui/baculum/protected/{Class/BaculumAPI.php => API/Class/BaculumAPIServer.php} (56%) create mode 100644 gui/baculum/protected/API/Class/BasicAPIUserConfig.php create mode 100644 gui/baculum/protected/API/Class/Bconsole.php rename gui/baculum/protected/{ => API}/Class/ClientManager.php (68%) rename gui/baculum/protected/{ => API}/Class/ClientRecord.php (91%) create mode 100644 gui/baculum/protected/API/Class/Database.php rename gui/baculum/protected/{ => API}/Class/FileSetManager.php (87%) rename gui/baculum/protected/{ => API}/Class/FileSetRecord.php (90%) create mode 100644 gui/baculum/protected/API/Class/JSONTools.php rename gui/baculum/protected/{ => API}/Class/JobManager.php (91%) rename gui/baculum/protected/{ => API}/Class/JobRecord.php (93%) rename gui/baculum/protected/{ => API}/Class/LogManager.php (87%) rename gui/baculum/protected/{ => API}/Class/LogRecord.php (91%) create mode 100644 gui/baculum/protected/API/Class/OAuth2/AuthIdManager.php create mode 100644 gui/baculum/protected/API/Class/OAuth2/AuthIdRecord.php create mode 100644 gui/baculum/protected/API/Class/OAuth2/BaculumOAuth2.php create mode 100644 gui/baculum/protected/API/Class/OAuth2/OAuth2Config.php create mode 100644 gui/baculum/protected/API/Class/OAuth2/TokenManager.php create mode 100644 gui/baculum/protected/API/Class/OAuth2/TokenRecord.php rename gui/baculum/protected/{ => API}/Class/PoolManager.php (57%) rename gui/baculum/protected/{ => API}/Class/PoolRecord.php (92%) rename gui/baculum/protected/{ => API}/Class/StorageManager.php (88%) rename gui/baculum/protected/{ => API}/Class/StorageRecord.php (90%) rename gui/baculum/protected/{ => API}/Class/VersionManager.php (86%) rename gui/baculum/protected/{ => API}/Class/VersionRecord.php (90%) rename gui/baculum/protected/{ => API}/Class/VolumeManager.php (50%) rename gui/baculum/protected/{ => API}/Class/VolumeRecord.php (90%) rename gui/baculum/protected/{Data => API/Config}/.gitignore (100%) create mode 100644 gui/baculum/protected/API/JavaScript/misc.js create mode 100644 gui/baculum/protected/API/Lang/en/messages.mo create mode 100644 gui/baculum/protected/API/Lang/en/messages.po create mode 100644 gui/baculum/protected/API/Lang/pl/messages.mo create mode 100644 gui/baculum/protected/API/Lang/pl/messages.po create mode 100644 gui/baculum/protected/API/Layouts/Main.php create mode 100644 gui/baculum/protected/API/Layouts/Main.tpl create mode 100644 gui/baculum/protected/API/Layouts/Wizard.php rename gui/baculum/protected/{ => API}/Layouts/Wizard.tpl (86%) rename gui/baculum/protected/{logs => API/Logs}/.gitignore (100%) rename gui/baculum/protected/{ => API}/Pages/API/BVFSClearCache.php (87%) rename gui/baculum/protected/{ => API}/Pages/API/BVFSGetJobids.php (90%) rename gui/baculum/protected/{ => API}/Pages/API/BVFSLsDirs.php (89%) rename gui/baculum/protected/{ => API}/Pages/API/BVFSLsFiles.php (89%) rename gui/baculum/protected/{ => API}/Pages/API/BVFSRestore.php (89%) rename gui/baculum/protected/{ => API}/Pages/API/BVFSUpdate.php (81%) rename gui/baculum/protected/{ => API}/Pages/API/BVFSVersions.php (80%) create mode 100644 gui/baculum/protected/API/Pages/API/Catalog.php rename gui/baculum/protected/{ => API}/Pages/API/Client.php (58%) rename gui/baculum/protected/{ => API}/Pages/API/ClientShow.php (76%) rename gui/baculum/protected/{ => API}/Pages/API/ClientStatus.php (75%) rename gui/baculum/protected/{ => API}/Pages/API/Clients.php (78%) rename gui/baculum/protected/{ => API}/Pages/API/ClientsShow.php (75%) create mode 100644 gui/baculum/protected/API/Pages/API/Config.php create mode 100644 gui/baculum/protected/API/Pages/API/ConfigDirTest.php rename gui/baculum/protected/{ => API}/Pages/API/ConsoleCommand.php (95%) rename gui/baculum/protected/{ => API}/Pages/API/DbSize.php (95%) rename gui/baculum/protected/{ => API}/Pages/API/Directors.php (95%) rename gui/baculum/protected/{ => API}/Pages/API/FileSet.php (97%) rename gui/baculum/protected/{ => API}/Pages/API/FileSets.php (91%) create mode 100644 gui/baculum/protected/API/Pages/API/JSONToolsTest.php rename gui/baculum/protected/{ => API}/Pages/API/Job.php (98%) rename gui/baculum/protected/{ => API}/Pages/API/JobCancel.php (96%) rename gui/baculum/protected/{ => API}/Pages/API/JobEstimate.php (98%) rename gui/baculum/protected/{ => API}/Pages/API/JobLog.php (96%) rename gui/baculum/protected/{ => API}/Pages/API/JobRun.php (98%) rename gui/baculum/protected/{ => API}/Pages/API/JobShow.php (97%) rename gui/baculum/protected/{ => API}/Pages/API/JobTasks.php (98%) rename gui/baculum/protected/{ => API}/Pages/API/JobTotals.php (96%) rename gui/baculum/protected/{ => API}/Pages/API/Jobs.php (97%) create mode 100644 gui/baculum/protected/API/Pages/API/JobsForClient.php rename gui/baculum/protected/{Pages/API/Volume.php => API/Pages/API/JobsOnVolume.php} (53%) rename gui/baculum/protected/{ => API}/Pages/API/JobsRecent.php (96%) rename gui/baculum/protected/{ => API}/Pages/API/JobsShow.php (95%) rename gui/baculum/protected/{ => API}/Pages/API/Pool.php (77%) rename gui/baculum/protected/{ => API}/Pages/API/PoolShow.php (96%) rename gui/baculum/protected/{ => API}/Pages/API/PoolUpdate.php (96%) rename gui/baculum/protected/{ => API}/Pages/API/PoolUpdateVolumes.php (96%) rename gui/baculum/protected/{ => API}/Pages/API/Pools.php (97%) rename gui/baculum/protected/{ => API}/Pages/API/PoolsShow.php (95%) rename gui/baculum/protected/{ => API}/Pages/API/RestoreRun.php (91%) rename gui/baculum/protected/{ => API}/Pages/API/Storage.php (97%) rename gui/baculum/protected/{ => API}/Pages/API/StorageMount.php (96%) rename gui/baculum/protected/{ => API}/Pages/API/StorageRelease.php (96%) rename gui/baculum/protected/{ => API}/Pages/API/StorageShow.php (96%) rename gui/baculum/protected/{ => API}/Pages/API/StorageStatus.php (96%) rename gui/baculum/protected/{ => API}/Pages/API/StorageUmount.php (96%) rename gui/baculum/protected/{ => API}/Pages/API/Storages.php (97%) rename gui/baculum/protected/{ => API}/Pages/API/StoragesShow.php (95%) create mode 100644 gui/baculum/protected/API/Pages/API/Volume.php rename gui/baculum/protected/{ => API}/Pages/API/VolumePrune.php (96%) rename gui/baculum/protected/{ => API}/Pages/API/VolumePurge.php (96%) rename gui/baculum/protected/{ => API}/Pages/API/Volumes.php (84%) rename gui/baculum/protected/{Pages/API/BVFGetJobids.php => API/Pages/API/VolumesPools.php} (58%) create mode 100644 gui/baculum/protected/API/Pages/API/Welcome.php create mode 100644 gui/baculum/protected/API/Pages/OAuth2/Authorize.php create mode 100644 gui/baculum/protected/API/Pages/OAuth2/RequestToken.php create mode 100644 gui/baculum/protected/API/Pages/Panel/APIHome.page create mode 100644 gui/baculum/protected/API/Pages/Panel/APIHome.php create mode 100644 gui/baculum/protected/API/Pages/Panel/APIInstallWizard.page create mode 100644 gui/baculum/protected/API/Pages/Panel/APIInstallWizard.php create mode 100644 gui/baculum/protected/API/Pages/Panel/MainPage.php create mode 100644 gui/baculum/protected/API/Pages/config.xml create mode 100644 gui/baculum/protected/API/endpoints.xml delete mode 100644 gui/baculum/protected/Class/API.php delete mode 100644 gui/baculum/protected/Class/Bconsole.php delete mode 100644 gui/baculum/protected/Class/ConfigurationManager.php delete mode 100644 gui/baculum/protected/Class/Database.php delete mode 100644 gui/baculum/protected/Class/Errors.php rename gui/baculum/protected/{ => Common}/Class/BaculumPage.php (74%) create mode 100644 gui/baculum/protected/Common/Class/BaculumUrlMapping.php rename gui/baculum/protected/{ => Common}/Class/BaculumUser.php (89%) rename gui/baculum/protected/{ => Common}/Class/BaculumUsersManager.php (69%) create mode 100644 gui/baculum/protected/Common/Class/BasicUserConfig.php create mode 100644 gui/baculum/protected/Common/Class/CommonModule.php create mode 100644 gui/baculum/protected/Common/Class/ConfigBacula.php create mode 100644 gui/baculum/protected/Common/Class/ConfigFileModule.php create mode 100644 gui/baculum/protected/Common/Class/ConfigIni.php create mode 100644 gui/baculum/protected/Common/Class/Errors.php create mode 100644 gui/baculum/protected/Common/Class/Interfaces.php rename gui/baculum/protected/{ => Common}/Class/Logging.php (63%) rename gui/baculum/protected/{ => Common}/Class/Miscellaneous.php (85%) create mode 100644 gui/baculum/protected/Common/Class/OAuth2.php create mode 100644 gui/baculum/protected/Common/Class/Params.php create mode 100644 gui/baculum/protected/Common/Class/SessionRecord.php rename gui/baculum/protected/{ => Common}/Portlets/BActiveButton.php (97%) rename gui/baculum/protected/{ => Common}/Portlets/BButton.php (88%) create mode 100644 gui/baculum/protected/Common/Portlets/NewAuthClient.php create mode 100644 gui/baculum/protected/Common/Portlets/NewAuthClient.tpl create mode 100644 gui/baculum/protected/Common/Portlets/NewHost.php create mode 100644 gui/baculum/protected/Common/Portlets/NewHost.tpl create mode 100644 gui/baculum/protected/Common/Portlets/PortletTemplate.php delete mode 100644 gui/baculum/protected/JavaScript/opentip.js delete mode 100644 gui/baculum/protected/Lang/en/messages.mo delete mode 100644 gui/baculum/protected/Lang/pl/messages.mo delete mode 100644 gui/baculum/protected/Lang/pt/messages.mo delete mode 100644 gui/baculum/protected/Pages/BaculumError.page delete mode 100644 gui/baculum/protected/Pages/ConfigurationWizard.page delete mode 100644 gui/baculum/protected/Pages/ConfigurationWizard.php delete mode 100644 gui/baculum/protected/Pages/config.xml delete mode 100644 gui/baculum/protected/Portlets/Console.tpl create mode 100644 gui/baculum/protected/Web/Class/BaculumAPIClient.php create mode 100644 gui/baculum/protected/Web/Class/BaculumWebPage.php create mode 100644 gui/baculum/protected/Web/Class/BasicWebUserConfig.php create mode 100644 gui/baculum/protected/Web/Class/DataDescription.php create mode 100644 gui/baculum/protected/Web/Class/HostConfig.php create mode 100644 gui/baculum/protected/Web/Class/HostRecord.php rename gui/baculum/protected/{Class/ActiveRecord.php => Web/Class/OAuth2Record.php} (52%) create mode 100644 gui/baculum/protected/Web/Class/WebConfig.php create mode 100644 gui/baculum/protected/Web/Class/WebModule.php create mode 100644 gui/baculum/protected/Web/Class/WebUrlMapping.php create mode 100644 gui/baculum/protected/Web/Config/.gitignore create mode 100644 gui/baculum/protected/Web/Data/data_desc.json rename gui/baculum/protected/{ => Web}/Init.php (93%) create mode 100644 gui/baculum/protected/Web/JavaScript/bacula-config.js rename gui/baculum/protected/{ => Web}/JavaScript/configuration-window.js (52%) rename gui/baculum/protected/{ => Web}/JavaScript/excanvas.js (100%) rename gui/baculum/protected/{ => Web}/JavaScript/flotr2.js (100%) rename gui/baculum/protected/{ => Web}/JavaScript/graph.js (88%) rename gui/baculum/protected/{ => Web}/JavaScript/misc.js (82%) create mode 100644 gui/baculum/protected/Web/JavaScript/opentip.js rename gui/baculum/protected/{ => Web}/JavaScript/panel-window.js (57%) rename gui/baculum/protected/{ => Web}/JavaScript/slide-window.js (64%) rename gui/baculum/protected/{ => Web}/JavaScript/statistics.js (100%) rename gui/baculum/protected/{ => Web}/JavaScript/tooltip.js (53%) create mode 100644 gui/baculum/protected/Web/JavaScript/validators.js create mode 100644 gui/baculum/protected/Web/Lang/en/messages.mo rename gui/baculum/protected/{ => Web}/Lang/en/messages.po (76%) create mode 100644 gui/baculum/protected/Web/Lang/ja/messages.mo create mode 100644 gui/baculum/protected/Web/Lang/ja/messages.po create mode 100644 gui/baculum/protected/Web/Lang/pl/messages.mo rename gui/baculum/protected/{ => Web}/Lang/pl/messages.po (76%) create mode 100644 gui/baculum/protected/Web/Lang/pt/messages.mo rename gui/baculum/protected/{ => Web}/Lang/pt/messages.po (78%) rename gui/baculum/protected/{ => Web}/Layouts/Main.php (100%) rename gui/baculum/protected/{ => Web}/Layouts/Main.tpl (93%) rename gui/baculum/protected/{ => Web}/Layouts/MessageBox.php (100%) rename gui/baculum/protected/{ => Web}/Layouts/MessageBox.tpl (100%) rename gui/baculum/protected/{ => Web}/Layouts/Wizard.php (100%) create mode 100644 gui/baculum/protected/Web/Layouts/Wizard.tpl create mode 100644 gui/baculum/protected/Web/Logs/.gitignore create mode 100644 gui/baculum/protected/Web/Pages/BaculumError.page rename gui/baculum/protected/{ => Web}/Pages/BaculumError.php (83%) rename gui/baculum/protected/{ => Web}/Pages/Monitor.php (92%) create mode 100644 gui/baculum/protected/Web/Pages/OAuth2Redirect.php rename gui/baculum/protected/{ => Web}/Pages/Requirements.php (76%) rename gui/baculum/protected/{ => Web}/Pages/RestoreWizard.page (93%) rename gui/baculum/protected/{ => Web}/Pages/RestoreWizard.php (98%) create mode 100644 gui/baculum/protected/Web/Pages/WebConfigWizard.page create mode 100644 gui/baculum/protected/Web/Pages/WebConfigWizard.php rename gui/baculum/protected/{Pages/Home.page => Web/Pages/WebHome.page} (80%) rename gui/baculum/protected/{Pages/Home.php => Web/Pages/WebHome.php} (70%) create mode 100644 gui/baculum/protected/Web/Pages/config.xml create mode 100644 gui/baculum/protected/Web/Portlets/BConditional.php create mode 100644 gui/baculum/protected/Web/Portlets/BaculaConfigComponents.php create mode 100644 gui/baculum/protected/Web/Portlets/BaculaConfigComponents.tpl create mode 100644 gui/baculum/protected/Web/Portlets/BaculaConfigDirectives.php create mode 100644 gui/baculum/protected/Web/Portlets/BaculaConfigDirectives.tpl create mode 100644 gui/baculum/protected/Web/Portlets/BaculaConfigResources.php create mode 100644 gui/baculum/protected/Web/Portlets/BaculaConfigResources.tpl create mode 100644 gui/baculum/protected/Web/Portlets/BaculaHosts.php create mode 100644 gui/baculum/protected/Web/Portlets/BaculaHosts.tpl rename gui/baculum/protected/{ => Web}/Portlets/ClientConfiguration.php (61%) rename gui/baculum/protected/{ => Web}/Portlets/ClientConfiguration.tpl (65%) rename gui/baculum/protected/{ => Web}/Portlets/ClientList.php (62%) rename gui/baculum/protected/{ => Web}/Portlets/ClientList.tpl (97%) create mode 100644 gui/baculum/protected/Web/Portlets/ComponentListTemplate.php create mode 100644 gui/baculum/protected/Web/Portlets/ConfigListTemplate.php rename gui/baculum/protected/{ => Web}/Portlets/ConfigurationPanel.php (94%) rename gui/baculum/protected/{ => Web}/Portlets/ConfigurationPanel.tpl (81%) rename gui/baculum/protected/{ => Web}/Portlets/Console.php (96%) create mode 100644 gui/baculum/protected/Web/Portlets/Console.tpl create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveBoolean.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveBoolean.tpl create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveComboBox.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveComboBox.tpl create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveFileSet.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveFileSet.tpl create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveListTemplate.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveMessages.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveMessages.tpl create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveRunscript.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveRunscript.tpl create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveSchedule.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveSchedule.tpl create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveSetting.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveSetting.tpl create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveTemplate.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveText.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveText.tpl create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveTimePeriod.php create mode 100644 gui/baculum/protected/Web/Portlets/DirectiveTimePeriod.tpl create mode 100644 gui/baculum/protected/Web/Portlets/HostListTemplate.php create mode 100644 gui/baculum/protected/Web/Portlets/IDirectiveField.php rename gui/baculum/protected/{ => Web}/Portlets/ISlideWindow.php (95%) rename gui/baculum/protected/{ => Web}/Portlets/JobConfiguration.php (93%) rename gui/baculum/protected/{ => Web}/Portlets/JobConfiguration.tpl (88%) rename gui/baculum/protected/{ => Web}/Portlets/JobList.php (76%) rename gui/baculum/protected/{ => Web}/Portlets/JobList.tpl (87%) rename gui/baculum/protected/{ => Web}/Portlets/JobRunConfiguration.php (94%) rename gui/baculum/protected/{ => Web}/Portlets/JobRunConfiguration.tpl (89%) rename gui/baculum/protected/{ => Web}/Portlets/JobRunList.php (69%) rename gui/baculum/protected/{ => Web}/Portlets/JobRunList.tpl (97%) create mode 100644 gui/baculum/protected/Web/Portlets/MessageTypes.php create mode 100644 gui/baculum/protected/Web/Portlets/MessageTypes.tpl create mode 100644 gui/baculum/protected/Web/Portlets/NewFileSetMenu.php create mode 100644 gui/baculum/protected/Web/Portlets/NewFileSetMenu.tpl create mode 100644 gui/baculum/protected/Web/Portlets/NewMessagesMenu.php create mode 100644 gui/baculum/protected/Web/Portlets/NewMessagesMenu.tpl create mode 100644 gui/baculum/protected/Web/Portlets/NewResourceMenu.php create mode 100644 gui/baculum/protected/Web/Portlets/NewResourceMenu.tpl create mode 100644 gui/baculum/protected/Web/Portlets/NewRunscriptMenu.php create mode 100644 gui/baculum/protected/Web/Portlets/NewRunscriptMenu.tpl rename gui/baculum/protected/{ => Web}/Portlets/PoolConfiguration.php (50%) rename gui/baculum/protected/{ => Web}/Portlets/PoolConfiguration.tpl (88%) rename gui/baculum/protected/{ => Web}/Portlets/PoolList.php (64%) rename gui/baculum/protected/{ => Web}/Portlets/PoolList.tpl (97%) rename gui/baculum/protected/{ => Web}/Portlets/Portlets.php (95%) create mode 100644 gui/baculum/protected/Web/Portlets/ResourceListTemplate.php rename gui/baculum/protected/{ => Web}/Portlets/SlideWindow.php (97%) rename gui/baculum/protected/{ => Web}/Portlets/SlideWindow.tpl (90%) rename gui/baculum/protected/{ => Web}/Portlets/StorageConfiguration.php (98%) rename gui/baculum/protected/{ => Web}/Portlets/StorageConfiguration.tpl (98%) rename gui/baculum/protected/{ => Web}/Portlets/StorageList.php (63%) rename gui/baculum/protected/{ => Web}/Portlets/StorageList.tpl (97%) rename gui/baculum/protected/{ => Web}/Portlets/TrayBar.php (93%) rename gui/baculum/protected/{ => Web}/Portlets/TrayBar.tpl (79%) rename gui/baculum/protected/{ => Web}/Portlets/VolumeConfiguration.php (99%) rename gui/baculum/protected/{ => Web}/Portlets/VolumeConfiguration.tpl (88%) rename gui/baculum/protected/{ => Web}/Portlets/VolumeList.php (77%) rename gui/baculum/protected/{ => Web}/Portlets/VolumeList.tpl (94%) rename gui/baculum/protected/{ => Web}/Portlets/VolumesTools.php (98%) rename gui/baculum/protected/{ => Web}/Portlets/VolumesTools.tpl (85%) create mode 100644 gui/baculum/protected/Web/endpoints.xml delete mode 100644 gui/baculum/tests/units/Class/APITest.php delete mode 100644 gui/baculum/tests/units/Class/ConfigurationManagerApplicationSettingsTest.php delete mode 100644 gui/baculum/tests/units/Class/ConfigurationManagerTest.php delete mode 100644 gui/baculum/tests/units/Class/ConfigurationManagerUsersConfigTest.php create mode 100644 gui/baculum/themes/Baculum-v1/add.png create mode 100644 gui/baculum/themes/Baculum-v1/ajax-loader-arrows.gif create mode 100644 gui/baculum/themes/Baculum-v1/bacula-config.css create mode 100644 gui/baculum/themes/Baculum-v1/config.png create mode 100644 gui/baculum/themes/Baculum-v1/icon_refresh.png create mode 100644 gui/baculum/themes/Baculum-v1/step-bar.png create mode 100644 gui/baculum/themes/Baculum-v1/switch.png diff --git a/gui/baculum/.gitignore b/gui/baculum/.gitignore index 76773ce1c6..eea02cf020 100644 --- a/gui/baculum/.gitignore +++ b/gui/baculum/.gitignore @@ -1,4 +1,12 @@ assets/* -protected/Data/baculum.log* -protected/Data/settings.conf protected/runtime/* +protected/Web/Logs/* +protected/Web/Config/baculum.users +protected/Web/Config/hosts.conf +protected/Web/Config/settings.conf +protected/Web/Config/session.dump +protected/API/Config/baculum.users +protected/API/Config/api.conf +protected/API/Config/oauth2.conf +protected/API/Config/session.dump +protected/API/Logs/* \ No newline at end of file diff --git a/gui/baculum/INSTALL b/gui/baculum/INSTALL index 63adb22a5f..97dfb36193 100644 --- a/gui/baculum/INSTALL +++ b/gui/baculum/INSTALL @@ -1,13 +1,7 @@ 1. Baculum overview 2. Operating system environment 2.1 General requirements - 2.2 Linux Fedora - 2.3 Linux Debian -3. Preparing Baculum files -4. Preparing Apache Web Server -5. Example VirtualHost configuration -6. Useful configuration samples -7. Makefile +3. Makefile ========================================= @@ -17,16 +11,19 @@ Baculum is Bacula web based interface. It enables Bacula administration functions such as: -- Running Bacula jobs (backup, restore, verify...) -- Monitoring Bacula services by getting status these services -- Bacula console available via web interface -- Support for customized and restricted consoles (Console ACL functionality) -- Multiple Directors support -- Volumes management including labeling new volumes -- User friendly graphs -- Basic storage daemon operations on volumes (mount, umount, release actions) -- Easy in use configuration and restore wizards -- other features... +- Running Bacula jobs (backup, restore, verify...). +- Two services: Baculum API and Baculum Web +- Configuring Bacula on local and remote hosts +- Monitoring Bacula service status. +- Bacula console available via a Web window. +- Multi-user interface. +- Support for customized and restricted consoles (Console ACL function). +- Volume management. +- User friendly graphs and metrics. +- Basic storage daemon operations (mount, umount, release, ...). +- Easy to use configuration and restore wizards. +- Multiple Director support. +- Live AJAX based statuses. 2. Operating system environment @@ -35,7 +32,7 @@ functions such as: 2.1 General requirements -Environment for Baculum installation should have following components: +Environment for Baculum API installation should have following components: - Web Server - with mod_rewrite module loaded. Baculum has been tested with Apache HTTP Server and Lighttpd. @@ -47,231 +44,27 @@ PDO MySQL or PDO SQLite. Note, in case using MySQL database there is required to use MySQL native driver. It is php-mysqlnd for PHP, not php-mysql. * BCMath PHP module. - * cURL PHP module. - * MB String PHP module. * JSON PHP module. * XML PHP module. - Bconsole - configured Bacula text based console -- Access to Bacula catalog database - computer with Baculum installation should be +- Access to Bacula catalog database - computer with Baculum API installation should be able to connect to Bacula catalog database. There is not need to install Baculum -on server with Bacula Catalog DB because Baculum can communicate with Bacula database +on server with Bacula Catalog DB because Baculum API can communicate with Bacula database located on remote server. -Above requirements are validated during Baculum start. So if in installation -environment there is lack some from these components then you will be informed -about it. - - -2.2 Linux Fedora - - -Packages required to run Baculum in Fedora environment can be installed by command: - -# yum install httpd \ -php \ -php-common \ -php-pdo \ -php-pgsql \ -php-mysqlnd \ -php-mbstring \ -php-bcmath \ -php-xml - -In Fedora 20 PHP module for cURL support and for JSON support are compiled in PHP. - -In case of using SELinux functionality in Baculum environment there is need -to load SELinux policy module provided together with Baculum sources in location: - -examples/selinux/baculum.pp - -To load the policy module there can be used following command: - -semodule -i baculum.pp - -Source file the policies module is located in: - -examples/selinux/baculum.te - - -Please make sure that in PHP configuration file (usually located in /etc/php.ini) -there is option error_reporting set as below: - -error_reporting = E_ALL & ~E_STRICT -memory_limit = 256M - -Suggested method for Baculum webGUI access to Bacula Console (bconsole) is using -"sudo" functionality for that. In this case there is need to add to /etc/sudoers file two -lines according to following template: - -Defaults:apache_user !requiretty -apache_user ALL= NOPASSWD: bconsole_path - -For example for user called "apache" from that HTTP service working with Baculum -there is need to add line like below: - -Defaults:apache !requiretty -apache ALL= NOPASSWD: /usr/sbin/bconsole - - -2.3 Linux Debian - - -Packages required to run Baculum in Debian environment can be installed by command: - -# apt-get install apache2 \ -libapache2-mod-php5 \ -php5 \ -php5-pgsql \ -php5-mysql \ -php5-curl \ -php5-json - -In Debian 7.4.0, PHP modules for BCMath and MultiByte String support are compiled in PHP. - -There is need to create symbolic link as below, for enable mod_rewrite module in Apache. - -# ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load - -Please make sure that in PHP configuration file (usually located in /etc/php5/apache2/php.ini) -there is option error_reporting set as below: - -error_reporting = E_ALL & ~E_STRICT -memory_limit = 256M - -Suggested method for Baculum webGUI access to Bacula Console (bconsole) is using -"sudo" functionality for that. In this case there is need to add to /etc/sudoers below -line according to following template: - -Defaults:apache_user !requiretty -apache_user ALL= NOPASSWD: bconsole_path - -For example for user called "www-data" from that HTTP service working with Baculum -there is need to add line like below: - -Defaults:www-data !requiretty -www-data ALL= NOPASSWD: /usr/sbin/bconsole - - -3. Preparing Baculum files - +Environment for Baculum Web installation should have following components: -After downloading and unpacking Baculum sources archive there is need to set write -permissions for web server for three below directories: - -/[files base location]/assets -/[files base location]/protected/Data -/[files base location]/protected/runtime - -These directories permissions are validated during Baculum start. If web server -will not be able to write data in some from above directories then you will be -informed about this fact. - - -4. Preparing Apache Web Server - - -First there is need to configure authentication to Baculum from web server side. -Baculum supports HTTP Basic authentication from web server with passwords stored -in file: - -./protected/Data/baculum.users - -NOTE! -There is possible to use another location than: - ./protected/Data/baculum.users -however then is required provide the same auth data in Baculum initial wizard. - -In Apache web server this authentication method may be realized by following -directives declaration in Apache configuration file: - -AuthType Basic -AuthUserFile /var/www/baculum/protected/Data/baculum.users -Require valid-user - -For creating passwords file you can use htpasswd binary file in following way: - -# htpasswd -c /var/www/baculum/protected/Data/baculum.users someuser - -You will be asked about inputting password and retype password for user. - -NOTE! -"-c" switcher you should use only for new created passwords file. For existing -passwords file "-c" switcher should not be typed. - -NOTE! -From version 7.2.0 plain text passwords for HTTP Basic authentication are no longer -supported by Baculum. For more information please see README file (FAQ, point "b"). - -At the end there is need to give web server user possibility to manage the auth file, -for example: - -# chown www-data:www-data /var/www/baculum/protected/Data/baculum.users - - -5. Example VirtualHost configuration - - - - DocumentRoot /var/www/baculum - ServerName somehost.example.com - - AllowOverride All - AuthType Basic - AuthName MyPrivateFile - AuthUserFile /var/www/baculum/protected/Data/baculum.users - Require valid-user - - - - -Above configuration should be written in a new Apache configuration file. -for example, location for that can be put to /etc/apache2/sites-enabled/baculum.conf. - -In this way, configuration file baculum.conf will be loaded automatically during -Apache server start. - - -6. Useful configuration samples - - -In directory examples/ exists following configuration samples: - ./examples/selinux/ <=== SELinux module example - ./examples/selinux/baculum.te <--- SELinux text module format - ./examples/selinux/baculum.pp <--- SELinux binary module format - ./examples/deb/ <=== samples for some deb-based distributions - ./examples/deb/baculum.startup <--- Baculum SysVinit startup script - ./examples/deb/baculum.lighttpd.conf <--- sample Lighttpd config - ./examples/deb/baculum.users <--- sample HTTP Basic auth file (user: admin, pass: admin) - ./examples/deb/baculum-apache.conf <--- sample Apache config - ./examples/deb-template <=== Directory with templates used by Makefile - ./examples/deb-template/baculum.users <--- sample HTTP Basic auth file (user: admin, pass: admin) - ./examples/deb-template/baculum-lighttpd.conf <--- Lighttpd config template - ./examples/deb-template/baculum-lighttpd.service <--- Baculum systemd unit for Lighttpd - ./examples/deb-template/baculum-apache.conf <--- Apache config template - ./examples/rpm-template/ <=== Directory with templates used by Makefile - ./examples/rpm-template/baculum-apache.conf <--- Apache config template - ./examples/rpm-template/baculum-lighttpd.service <--- Baculum systemd unit for Lighttpd - ./examples/rpm-template/baculum.spec <--- SPEC file - ./examples/rpm-template/baculum-lighttpd.conf <--- Lighttpd config template - ./examples/rpm-template/baculum.users <--- HTTP Basic auth file used by SPEC (user: admin, pass: admin) - ./examples/rpm-template/baculum.startup <--- Baculum SysVinit startup script - ./examples/sudo/ <=== example sudoers.d configurations - ./examples/sudo/baculum-httpd <--- sample sudo for Apache user - ./examples/sudo/baculum-lighttpd <--- sample sudo for Lighttpd user - ./examples/sudo/baculum-nginx <--- sample sudo for Nginx user - ./examples/rpm/ <=== samples for some rpm-based distributions - ./examples/rpm/baculum-apache.conf <--- Apache config file - ./examples/rpm/baculum-lighttpd.service <--- Baculum system unit - ./examples/rpm/baculum.spec <--- example SPEC file - ./examples/rpm/baculum-lighttpd.conf <--- Lighttpd config file - ./examples/rpm/baculum.users <--- HTTP Basic auth file (user: admin, pass: admin) - ./examples/rpm/baculum.startup <--- Baculum SysVinit startup script - ./examples/nginx/ <=== example Nginx configurations - ./examples/nginx/php-fpm/baculum-php.conf <--- example PHP-FPM config for Nginx - ./examples/nginx/baculum.conf <--- sample Nginx config +- Web Server - with mod_rewrite module loaded. Baculum has been +tested with Apache HTTP Server and Lighttpd. +- PHP 5.3 or higher - PHP CLI interpreter is unneeded. +PHP should have installed following modules: + * cURL PHP module. + * MB String PHP module. + * JSON PHP module. + * XML PHP module. -7 Makefile +3. Makefile Together with Baculum source code is provided Makefile file. The Makefile is dedicated @@ -283,5 +76,10 @@ the Makefile in deb metafiles or in rpm SPEC file. Example usage: -# cd baculum/ -# make DESTDIR=/home/abc/baculum_runtime +$ cd baculum/ + +# For RPM distributions: +$ make DESTDIR=/home/abc/baculum_runtime + +# For deb distributions: +$ make DESTDIR=/home/abc/baculum_runtime SAMPLETYPE=deb-template HTTPDNAME=apache2 HTTPDSITECONF=sites-available diff --git a/gui/baculum/LICENSE b/gui/baculum/LICENSE index 7f9be39257..32bd08bdca 100644 --- a/gui/baculum/LICENSE +++ b/gui/baculum/LICENSE @@ -756,7 +756,7 @@ OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Baculum uses Opentip JavaScript framework. -File: protected/JavaScript/opentip.js +File: protected/Web/JavaScript/opentip.js More info at http://www.opentip.org @@ -785,7 +785,7 @@ THE SOFTWARE. Baculum uses Flotr2 JavaScript library for graphs and charts. -File: protected/JavaScript/flotr2.js +File: protected/Web/JavaScript/flotr2.js Copyright (c) 2012 Carl Sutherland diff --git a/gui/baculum/Makefile b/gui/baculum/Makefile index 8207342f9e..84cfa52ec3 100644 --- a/gui/baculum/Makefile +++ b/gui/baculum/Makefile @@ -3,7 +3,7 @@ # usage: make DESTDIR=/some/runtime_dir NAME = baculum -VERSION = 7.4.3 +VERSION = 7.5.0 DEFTEMPLATE = rpm-template DEFHTTPDNAME = httpd DEFHTTPDSITECONF = conf.d @@ -18,7 +18,6 @@ HTTPDCONFDIR = $(SYSCONFDIR)/$(HTTPDNAME)/$(HTTPDSITECONF) UNITDIR = $(SYSUSRDIR)/lib/systemd/system LOCALEDIR = $(SYSUSRDIR)/share/locale WWWDIR = $(SYSUSRDIR)/share/$(NAME)/htdocs -SELINUXDIR = $(SYSUSRDIR)/share/selinux/packages/$(NAME) CACHEDIR = $(SYSVARDIR)/cache/$(NAME) LOGDIR = $(SYSVARDIR)/log HTTPDLOGS = $(LOGDIR)/$(HTTPDNAME) @@ -26,21 +25,41 @@ LIGHTTPDLOGS = $(LOGDIR)/lighttpd # Internal application directories datadir = protected +apidir = API +webdir = Web +commondir = Common frameworkdir = framework themesdir = themes cachedir = assets -configdir = Data +configdir = Config configcachedir = $(datadir)/runtime samplesdir = examples/$(SAMPLETYPE) -datadirsrc = $(datadir)/Class \ - $(datadir)/JavaScript \ - $(datadir)/Layouts \ - $(datadir)/Pages \ - $(datadir)/Portlets +webdatadirsrc = $(datadir)/$(webdir)/Class \ + $(datadir)/$(webdir)/Config \ + $(datadir)/$(webdir)/JavaScript \ + $(datadir)/$(webdir)/Data \ + $(datadir)/$(webdir)/Layouts \ + $(datadir)/$(webdir)/Logs \ + $(datadir)/$(webdir)/Pages \ + $(datadir)/$(webdir)/Portlets -datafilesrc = $(datadir)/application.xml \ - $(datadir)/Init.php +apidatadirsrc = $(datadir)/$(apidir)/Class \ + $(datadir)/$(apidir)/Config \ + $(datadir)/$(apidir)/JavaScript \ + $(datadir)/$(apidir)/Layouts \ + $(datadir)/$(apidir)/Logs \ + $(datadir)/$(apidir)/Pages + +commondatadirsrc = $(datadir)/$(commondir)/Class \ + $(datadir)/$(commondir)/Portlets + +datafilesrc = $(datadir)/application.xml + +webdatafilesrc = $(datadir)/$(webdir)/endpoints.xml \ + $(datadir)/$(webdir)/Init.php + +apidatafilesrc = $(datadir)/$(apidir)/endpoints.xml miscfilesrc = index.php \ AUTHORS \ @@ -49,7 +68,8 @@ miscfilesrc = index.php \ README localelang = en pl pt -localedirsrc = $(datadir)/Lang +localewebdirsrc = $(datadir)/$(webdir)/Lang +localeapidirsrc = $(datadir)/$(apidir)/Lang localefile = messages.mo excluded_dirs = '.*/\(3rdParty\|tinymce-405\).*' @@ -65,17 +85,25 @@ prepare_build: $(DESTDIR)$(HTTPDCONFDIR) \ $(DESTDIR)$(UNITDIR) \ $(DESTDIR)$(WWWDIR) \ - $(DESTDIR)$(SELINUXDIR) \ $(DESTDIR)$(CACHEDIR) \ $(DESTDIR)$(LOCALEDIR) \ $(DESTDIR)$(WWWDIR)/$(cachedir) \ $(DESTDIR)$(WWWDIR)/$(configcachedir) - mkdir -m 700 -p $(DESTDIR)$(CONFDIR)/$(configdir)-apache \ - $(DESTDIR)$(CONFDIR)/$(configdir)-lighttpd + mkdir -m 700 -p $(DESTDIR)$(CONFDIR)/$(configdir)-api-apache \ + $(DESTDIR)$(CONFDIR)/$(configdir)-api-lighttpd \ + $(DESTDIR)$(CONFDIR)/$(configdir)-web-apache \ + $(DESTDIR)$(CONFDIR)/$(configdir)-web-lighttpd prepare_data: prepare_build - mkdir -p $(DESTDIR)$(WWWDIR)/$(datadir) - cp -ra $(datadirsrc) $(DESTDIR)$(WWWDIR)/$(datadir) + mkdir -p $(DESTDIR)$(WWWDIR)/$(datadir) \ + $(DESTDIR)$(WWWDIR)/$(datadir)/$(webdir) \ + $(DESTDIR)$(WWWDIR)/$(datadir)/$(apidir) \ + $(DESTDIR)$(WWWDIR)/$(datadir)/$(commondir) + cp -ra $(webdatadirsrc) $(DESTDIR)$(WWWDIR)/$(datadir)/$(webdir) + cp -a $(webdatafilesrc) $(DESTDIR)$(WWWDIR)/$(datadir)/$(webdir) + cp -ra $(apidatadirsrc) $(DESTDIR)$(WWWDIR)/$(datadir)/$(apidir) + cp -a $(apidatafilesrc) $(DESTDIR)$(WWWDIR)/$(datadir)/$(apidir) + cp -ra $(commondatadirsrc) $(DESTDIR)$(WWWDIR)/$(datadir)/$(commondir) cp -a $(datafilesrc) $(DESTDIR)$(WWWDIR)/$(datadir) cp -a $(miscfilesrc) $(DESTDIR)$(WWWDIR)/ @@ -89,21 +117,36 @@ prepare_themes: prepare_build prepare_locale: prepare_build for lang in $(localelang) ; do \ mkdir -p $(DESTDIR)$(LOCALEDIR)/$$lang/LC_MESSAGES ; \ - mkdir -p $(DESTDIR)$(WWWDIR)/$(localedirsrc)/$$lang ; \ - install -m 644 $(localedirsrc)/$$lang/$(localefile) $(DESTDIR)$(LOCALEDIR)/$$lang/LC_MESSAGES/$(NAME).mo ; \ - ln -s $(LOCALEDIR)/$$lang/LC_MESSAGES/$(NAME).mo $(DESTDIR)$(WWWDIR)/$(localedirsrc)/$$lang/$(localefile) ; \ + mkdir -p $(DESTDIR)$(WWWDIR)/$(localewebdirsrc)/$$lang ; \ + install -m 644 $(localewebdirsrc)/$$lang/$(localefile) $(DESTDIR)$(LOCALEDIR)/$$lang/LC_MESSAGES/$(NAME)-web.mo ; \ + ln -s $(LOCALEDIR)/$$lang/LC_MESSAGES/$(NAME)-web.mo $(DESTDIR)$(WWWDIR)/$(localewebdirsrc)/$$lang/$(localefile) ; \ + done + for lang in $(localelang) ; do \ + mkdir -p $(DESTDIR)$(LOCALEDIR)/$$lang/LC_MESSAGES ; \ + mkdir -p $(DESTDIR)$(WWWDIR)/$(localeapidirsrc)/$$lang ; \ + install -m 644 $(localeapidirsrc)/$$lang/$(localefile) $(DESTDIR)$(LOCALEDIR)/$$lang/LC_MESSAGES/$(NAME)-api.mo ; \ + ln -s $(LOCALEDIR)/$$lang/LC_MESSAGES/$(NAME)-api.mo $(DESTDIR)$(WWWDIR)/$(localeapidirsrc)/$$lang/$(localefile) ; \ done prepare_samples: - install -m 640 $(samplesdir)/$(NAME)-lighttpd.conf $(DESTDIR)$(CONFDIR) - install -m 644 $(samplesdir)/$(NAME)-lighttpd.service $(DESTDIR)$(UNITDIR) - install -m 640 $(samplesdir)/$(NAME)-apache.conf $(DESTDIR)$(HTTPDCONFDIR)/$(NAME).conf - install -m 600 $(samplesdir)/$(NAME).users $(DESTDIR)$(CONFDIR)/$(configdir)-lighttpd - install -m 600 $(samplesdir)/$(NAME).users $(DESTDIR)$(CONFDIR)/$(configdir)-apache + install -m 640 $(samplesdir)/$(NAME)-api-lighttpd.conf $(DESTDIR)$(CONFDIR) + install -m 640 $(samplesdir)/$(NAME)-web-lighttpd.conf $(DESTDIR)$(CONFDIR) + install -m 644 $(samplesdir)/$(NAME)-api-lighttpd.service $(DESTDIR)$(UNITDIR) + install -m 644 $(samplesdir)/$(NAME)-web-lighttpd.service $(DESTDIR)$(UNITDIR) + install -m 640 $(samplesdir)/$(NAME)-api-apache.conf $(DESTDIR)$(HTTPDCONFDIR)/$(NAME)-api.conf + install -m 640 $(samplesdir)/$(NAME)-web-apache.conf $(DESTDIR)$(HTTPDCONFDIR)/$(NAME)-web.conf + install -m 600 $(samplesdir)/$(NAME).users $(DESTDIR)$(CONFDIR)/$(configdir)-api-lighttpd + install -m 600 $(samplesdir)/$(NAME).users $(DESTDIR)$(CONFDIR)/$(configdir)-api-apache + install -m 600 $(samplesdir)/$(NAME).users $(DESTDIR)$(CONFDIR)/$(configdir)-web-lighttpd + install -m 600 $(samplesdir)/$(NAME).users $(DESTDIR)$(CONFDIR)/$(configdir)-web-apache # Default link apache config file - ln -s $(DESTDIR)$(CONFDIR)/$(configdir)-apache $(DESTDIR)$(WWWDIR)/$(datadir)/$(configdir) + #ln -s $(DESTDIR)$(CONFDIR)/$(configdir)-api-apache $(DESTDIR)$(WWWDIR)/$(datadir)/$(configdir) setup: prepare_samples - sed -i -e "s#%DOCUMENTROOT#$(WWWDIR)#g" -e "s#%LOGDIR#$(HTTPDLOGS)#g" $(DESTDIR)$(HTTPDCONFDIR)/$(NAME).conf - sed -i -e "s#%DOCUMENTROOT#$(WWWDIR)#g" -e "s#%LOGDIR#$(LIGHTTPDLOGS)#g" $(DESTDIR)$(CONFDIR)/$(NAME)-lighttpd.conf - sed -i -e "s#%CONFDIR#$(CONFDIR)#g" $(DESTDIR)$(UNITDIR)/$(NAME)-lighttpd.service + sed -i -e "s#%DOCUMENTROOT#$(WWWDIR)#g" -e "s#%LOGDIR#$(HTTPDLOGS)#g" $(DESTDIR)$(HTTPDCONFDIR)/$(NAME)-api.conf + sed -i -e "s#%DOCUMENTROOT#$(WWWDIR)#g" -e "s#%LOGDIR#$(HTTPDLOGS)#g" $(DESTDIR)$(HTTPDCONFDIR)/$(NAME)-web.conf + sed -i -e "s#%DOCUMENTROOT#$(WWWDIR)#g" -e "s#%LOGDIR#$(LIGHTTPDLOGS)#g" $(DESTDIR)$(CONFDIR)/$(NAME)-api-lighttpd.conf + sed -i -e "s#%DOCUMENTROOT#$(WWWDIR)#g" -e "s#%LOGDIR#$(LIGHTTPDLOGS)#g" $(DESTDIR)$(CONFDIR)/$(NAME)-web-lighttpd.conf + sed -i -e "s#%CONFDIR#$(CONFDIR)#g" $(DESTDIR)$(UNITDIR)/$(NAME)-api-lighttpd.service + sed -i -e "s#%CONFDIR#$(CONFDIR)#g" $(DESTDIR)$(UNITDIR)/$(NAME)-web-lighttpd.service + find $(DESTDIR)/ -type f -name .gitignore -exec rm -f {} \; diff --git a/gui/baculum/README b/gui/baculum/README index 823f595829..c39a1d18d3 100644 --- a/gui/baculum/README +++ b/gui/baculum/README @@ -1,179 +1,8 @@ Baculum - Bacula web interface -Table of content: - -1. Customized and restricted consoles -2. Baculum users configuration file -3. FAQ - -================================================================================ - -=== 1. Customized and restricted consoles === - -Baculum supports customized and restricted consoles for each logged in user. - -Before using customized and restricted consoles please check location for -bconsole configuration files for each user. For do it, there is need to run -on Baculum webGUI configuration wizard and there is need to go to "Console" -wizard step (fourth step). - -In "Console" wizard step there is field defined as: - -Bconsole custom config file path: __________________ - -In this field there is required to define location for restricted consoles. -In defined path exists one keyword {user}. It will be replaced into current -logged in username. - -For example, if there is logged user named "john", keyword {user} will be replaced -into "john". - - -Example: - -"Bconsole custom config file path" is defined as: - -/usr/local/bacula/etc/bconsole-{user}.conf - -After login user "john" to Baculum webGUI, for each bconsole request will be -used file: - -/usr/local/bacula/etc/bconsole-john.conf - -It makes available to define some specific console access (or restricted access) -for each Baculum user. - -For user named "willy" in above configured path according bconsole configuration -file will be: - -/usr/local/bacula/etc/bconsole-willy.conf - -etc... - - -NOTE! - -In configuration wizard step "Console" there is also field: - -"Bconsole admin config file path:": ___________________ - -Config file defined in this field will be used by administrator only. For this -reason the best practice is to define here console configuration file that gives -full access for administrator. - -Administrator user and password will be defined in next configuration wizard -step named "Authorization" (fifth step). - - -Baculum users are defined on web server level as described in instruction -in attached to Baculum INSTALL file. - -Example: - -For creating users "john" and "willy" as Baculum HTTP Basic authorization users -there is need to create this users for example by: - -# htpasswd /some/location/htpasswd/file john - -# htpasswd /some/location/htpasswd/file willy - -For case using other HTTP Basic authorization backends (for example LDAP) there -is need to define these users in this specific service. - - -Example of content custom consoles configuration file is below: - -Console { - Name = "BaculaRestrictedUser" - Password = "XXXXXXXXX" - CommandACL = show,.client,.jobs,.fileset,.pool,.storage,.jobs,.bvfs_update, -.bvfs_lsdirs,.bvfs_lsfiles,.bvfs_versions,.bvfs_get_jobids,.bvfs_restore,restore - CatalogACL = *all* - ClientACL = user-fd - JobACL = somejob1,userjob - PoolACL = Full-Pool - StorageACL = VTL - FileSetACL = somejob1-fileset,userjobFileSet3 - WhereACL = *all* -} - -After defining these ACL there is also need to define the console access to -Director service in Bacula Director configuration file as Console{} resource. - - -NOTE! - -Please note that in above example in CommandACL are shown the most -essential commands necessary for proper working of Baculum webGUI and -possibility do to restore action (all .bvfs_* command and "restore" -command) - -Below are the same necessary commands broke one per line: - -show -.client -.jobs -.fileset -.pool -.storage -.jobs -.bvfs_update -.bvfs_lsdirs -.bvfs_lsfiles -.bvfs_versions -.bvfs_get_jobids -.bvfs_restore -restore - - -Catalog Database restriction - -Because Baculum in few parts of interface uses data from Bacula Catalog Database, -for each user who IS NOT administrator there has been disabled EVERY write to -Bacula Catalog database by Baculum webGUI. Modification Bacula Catalog Database -tables is possible ONLY for Baculum administrator. - -Additionally because of Console ACL functionality does not support restriction -on media/volumes level, access to media/volumes has been disabled for all users -except administrator. - - -Configuration wizard restriction - -For security reason there has been disabled access to Configuration Wizard -function for all users except administrator. - - -================================================================================ - -=== 2. Baculum users configuration file === - -There is possible to manage Baculum administrator login and password directly -in configuration wizard step titled "Step 5 - authorization params to Baculum". - -It means that Baculum administrator may change admin auth params by -configuration wizard. - ----------------- NOTE --------------- -In older Baculum versions (before 7.0.5) in Step 5 configuration wizard there were -need to input admin auth params the same as in pre-defined file by "htpasswd" -program. - -In version 7.0.5 has been introduced partial support for possibility changing -username and password from Baculum interface working on Lighttpd web server. - -From version 7.2.0 this limitation has been abolished. As long as Web Server uses -HTTP Basic auth file located in: - -./protected/Data/baculum.users - -and Web Server is capable to write (write permission) to this passwords file as -long is possible to change username and password from Baculum interface level. ------------- NOTE END ------------- - ================================================================================ -=== 3. FAQ === +=== 1. FAQ === a) Why Jobs list and/or Media list windows do not show any content? diff --git a/gui/baculum/debian/baculum-apache2.dirs b/gui/baculum/debian/baculum-apache2.dirs deleted file mode 100644 index 948b7859da..0000000000 --- a/gui/baculum/debian/baculum-apache2.dirs +++ /dev/null @@ -1 +0,0 @@ -etc/baculum/Data-apache \ No newline at end of file diff --git a/gui/baculum/debian/baculum-apache2.install b/gui/baculum/debian/baculum-apache2.install deleted file mode 100644 index b38195f928..0000000000 --- a/gui/baculum/debian/baculum-apache2.install +++ /dev/null @@ -1,2 +0,0 @@ -build/etc/baculum/Data-apache/baculum.users /etc/baculum/Data-apache/ -build/etc/apache2/sites-available/baculum.conf /etc/apache2/sites-available/ \ No newline at end of file diff --git a/gui/baculum/debian/baculum-apache2.links b/gui/baculum/debian/baculum-apache2.links deleted file mode 100644 index 35b0099ad4..0000000000 --- a/gui/baculum/debian/baculum-apache2.links +++ /dev/null @@ -1 +0,0 @@ -etc/baculum/Data-apache usr/share/baculum/htdocs/protected/Data \ No newline at end of file diff --git a/gui/baculum/debian/baculum-apache2.postinst b/gui/baculum/debian/baculum-apache2.postinst deleted file mode 100644 index 80ea2cd417..0000000000 --- a/gui/baculum/debian/baculum-apache2.postinst +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -set -e - -case "$1" in - configure) - chown -R www-data:www-data /etc/baculum/Data-apache - chmod 750 /etc/baculum/Data-apache - chown -R www-data:www-data /var/cache/baculum - ;; -esac - -#DEBHELPER# diff --git a/gui/baculum/debian/baculum-apache2.prerm b/gui/baculum/debian/baculum-apache2.prerm deleted file mode 100644 index 6553bb49ad..0000000000 --- a/gui/baculum/debian/baculum-apache2.prerm +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -set -e - -if [ "$1" = "remove" ] -then - [ ! -e /usr/share/baculum/htdocs/protected/Data/settings.conf ] || - mv /usr/share/baculum/htdocs/protected/Data/settings.conf \ - /usr/share/baculum/htdocs/protected/Data/settings.conf.apache - # remove debug files if any - [ ! -e /usr/share/baculum/htdocs/protected/Data/baculum.dbg ] || - rm /usr/share/baculum/htdocs/protected/Data/baculum*.dbg -fi - -#DEBHELPER# - -exit 0 diff --git a/gui/baculum/debian/baculum-api-apache2.dirs b/gui/baculum/debian/baculum-api-apache2.dirs new file mode 100644 index 0000000000..a107a57d94 --- /dev/null +++ b/gui/baculum/debian/baculum-api-apache2.dirs @@ -0,0 +1 @@ +etc/baculum/Config-api-apache \ No newline at end of file diff --git a/gui/baculum/debian/baculum-api-apache2.install b/gui/baculum/debian/baculum-api-apache2.install new file mode 100644 index 0000000000..a5c4d0e5ba --- /dev/null +++ b/gui/baculum/debian/baculum-api-apache2.install @@ -0,0 +1,2 @@ +build/etc/baculum/Config-api-apache/baculum.users /etc/baculum/Config-api-apache/ +build/etc/apache2/sites-available/baculum-api.conf /etc/apache2/sites-available/ \ No newline at end of file diff --git a/gui/baculum/debian/baculum-api-apache2.links b/gui/baculum/debian/baculum-api-apache2.links new file mode 100644 index 0000000000..89699a0edb --- /dev/null +++ b/gui/baculum/debian/baculum-api-apache2.links @@ -0,0 +1 @@ +etc/baculum/Config-api-apache usr/share/baculum/htdocs/protected/API/Config \ No newline at end of file diff --git a/gui/baculum/debian/baculum-api-apache2.postinst b/gui/baculum/debian/baculum-api-apache2.postinst new file mode 100644 index 0000000000..fbd36fee9f --- /dev/null +++ b/gui/baculum/debian/baculum-api-apache2.postinst @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +case "$1" in + configure) + chown -R www-data:www-data /etc/baculum/Config-api-apache + chmod 750 /etc/baculum/Config-api-apache + ;; +esac + +#DEBHELPER# diff --git a/gui/baculum/debian/baculum-api-apache2.prerm b/gui/baculum/debian/baculum-api-apache2.prerm new file mode 100644 index 0000000000..645e1fc74d --- /dev/null +++ b/gui/baculum/debian/baculum-api-apache2.prerm @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +if [ "$1" = "remove" ] +then + [ ! -e /usr/share/baculum/htdocs/protected/API/Config/api.conf ] || + mv /usr/share/baculum/htdocs/protected/API/Config/api.conf \ + /usr/share/baculum/htdocs/protected/API/Config/api.conf.apache + # remove debug files if any + [ ! -e /usr/share/baculum/htdocs/protected/API/Logs/baculum-api.log ] || + rm /usr/share/baculum/htdocs/protected/API/Logs/baculum-api*.log +fi + +#DEBHELPER# + +exit 0 diff --git a/gui/baculum/debian/baculum-api-lighttpd.dirs b/gui/baculum/debian/baculum-api-lighttpd.dirs new file mode 100644 index 0000000000..fc201098c6 --- /dev/null +++ b/gui/baculum/debian/baculum-api-lighttpd.dirs @@ -0,0 +1 @@ +etc/baculum/Config-api-lighttpd \ No newline at end of file diff --git a/gui/baculum/debian/baculum-api-lighttpd.install b/gui/baculum/debian/baculum-api-lighttpd.install new file mode 100644 index 0000000000..aa1933524f --- /dev/null +++ b/gui/baculum/debian/baculum-api-lighttpd.install @@ -0,0 +1,3 @@ +build/etc/baculum/Config-api-lighttpd/baculum.users /etc/baculum/Config-api-lighttpd/ +build/etc/baculum/baculum-api-lighttpd.conf /etc/baculum/ +build/usr/lib/systemd/system/baculum-api-lighttpd.service /usr/lib/systemd/user/ \ No newline at end of file diff --git a/gui/baculum/debian/baculum-api-lighttpd.links b/gui/baculum/debian/baculum-api-lighttpd.links new file mode 100644 index 0000000000..e7ff09cad5 --- /dev/null +++ b/gui/baculum/debian/baculum-api-lighttpd.links @@ -0,0 +1 @@ +etc/baculum/Config-api-lighttpd usr/share/baculum/htdocs/protected/API/Config diff --git a/gui/baculum/debian/baculum-api-lighttpd.postinst b/gui/baculum/debian/baculum-api-lighttpd.postinst new file mode 100644 index 0000000000..3d9decff4c --- /dev/null +++ b/gui/baculum/debian/baculum-api-lighttpd.postinst @@ -0,0 +1,13 @@ +#!/bin/sh + +set -e + +case "$1" in + configure) + chown -R www-data:www-data /etc/baculum/Config-api-lighttpd + chown www-data:www-data /etc/baculum/baculum-api-lighttpd.conf + chmod 750 /etc/baculum/Config-api-lighttpd + ;; +esac + +#DEBHELPER# diff --git a/gui/baculum/debian/baculum-api-lighttpd.prerm b/gui/baculum/debian/baculum-api-lighttpd.prerm new file mode 100644 index 0000000000..14d083966f --- /dev/null +++ b/gui/baculum/debian/baculum-api-lighttpd.prerm @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +if [ "$1" = "remove" ] +then + [ ! -e /usr/share/baculum/htdocs/protected/API/Config/api.conf ] || + mv /usr/share/baculum/htdocs/protected/API/Config/api.conf \ + /usr/share/baculum/htdocs/protected/API/Config/api.conf.lighttpd + # remove debug files if any + [ ! -e /usr/share/baculum/htdocs/protected/API/Config/baculum-api.dbg ] || + rm /usr/share/baculum/htdocs/protected/API/Config/baculum-api*.dbg +fi + +#DEBHELPER# + +exit 0 diff --git a/gui/baculum/debian/baculum-api-lighttpd.service b/gui/baculum/debian/baculum-api-lighttpd.service new file mode 100644 index 0000000000..46a0d3e472 --- /dev/null +++ b/gui/baculum/debian/baculum-api-lighttpd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Baculum API Bacula Community tool +After=network.target + +[Service] +PIDFile=/var/run/baculum-api.pid +ExecStart=/usr/sbin/lighttpd -f /etc/baculum/baculum-api-lighttpd.conf + +[Install] +WantedBy=multi-user.target + diff --git a/gui/baculum/debian/baculum-api.dirs b/gui/baculum/debian/baculum-api.dirs new file mode 100644 index 0000000000..8ff493739c --- /dev/null +++ b/gui/baculum/debian/baculum-api.dirs @@ -0,0 +1 @@ +usr/share/baculum/htdocs/protected/API \ No newline at end of file diff --git a/gui/baculum/debian/baculum-api.install b/gui/baculum/debian/baculum-api.install new file mode 100644 index 0000000000..7de16e9bd9 --- /dev/null +++ b/gui/baculum/debian/baculum-api.install @@ -0,0 +1,9 @@ +build/usr/share/baculum/htdocs/protected/API/Class /usr/share/baculum/htdocs/protected/API/ +build/usr/share/baculum/htdocs/protected/API/JavaScript /usr/share/baculum/htdocs/protected/API/ +build/usr/share/baculum/htdocs/protected/API/Lang /usr/share/baculum/htdocs/protected/API/ +build/usr/share/baculum/htdocs/protected/API/Layouts /usr/share/baculum/htdocs/protected/API/ +build/usr/share/baculum/htdocs/protected/API/Logs /usr/share/baculum/htdocs/protected/API/ +build/usr/share/baculum/htdocs/protected/API/Pages /usr/share/baculum/htdocs/protected/API/ +build/usr/share/baculum/htdocs/protected/API/endpoints.xml /usr/share/baculum/htdocs/protected/API/ +build/usr/share/locale/en/LC_MESSAGES/baculum-api.mo /usr/share/locale/en/LC_MESSAGES/ +build/usr/share/locale/pl/LC_MESSAGES/baculum-api.mo /usr/share/locale/pl/LC_MESSAGES/ diff --git a/gui/baculum/debian/baculum-api.links b/gui/baculum/debian/baculum-api.links new file mode 100644 index 0000000000..14a8e7adf2 --- /dev/null +++ b/gui/baculum/debian/baculum-api.links @@ -0,0 +1,2 @@ +usr/share/locale/en/LC_MESSAGES/baculum-api.mo usr/share/baculum/htdocs/protected/API/Lang/en/messages.mo +usr/share/locale/pl/LC_MESSAGES/baculum-api.mo usr/share/baculum/htdocs/protected/API/Lang/pl/messages.mo \ No newline at end of file diff --git a/gui/baculum/debian/baculum-api.postinst b/gui/baculum/debian/baculum-api.postinst new file mode 100644 index 0000000000..8de2d8eb19 --- /dev/null +++ b/gui/baculum/debian/baculum-api.postinst @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +case "$1" in + configure) + chown -R www-data:www-data /usr/share/baculum/htdocs/protected/API + ;; +esac + +#DEBHELPER# diff --git a/gui/baculum/debian/baculum-api.prerm b/gui/baculum/debian/baculum-api.prerm new file mode 100644 index 0000000000..9425dc9e03 --- /dev/null +++ b/gui/baculum/debian/baculum-api.prerm @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +rm usr/share/baculum/htdocs/protected/API/Lang/en/messages.mo +rm usr/share/baculum/htdocs/protected/API/Lang/pl/messages.mo + +#DEBHELPER# + +exit 0 \ No newline at end of file diff --git a/gui/baculum/debian/baculum-common.dirs b/gui/baculum/debian/baculum-common.dirs new file mode 100644 index 0000000000..da00ff9d8c --- /dev/null +++ b/gui/baculum/debian/baculum-common.dirs @@ -0,0 +1,3 @@ +usr/share/baculum/htdocs/framework +usr/share/baculum/htdocs/protected/Common +var/cache/baculum \ No newline at end of file diff --git a/gui/baculum/debian/baculum-common.install b/gui/baculum/debian/baculum-common.install new file mode 100644 index 0000000000..be169fa65b --- /dev/null +++ b/gui/baculum/debian/baculum-common.install @@ -0,0 +1,7 @@ +build/usr/share/baculum/htdocs/AUTHORS /usr/share/baculum/htdocs/ +build/usr/share/baculum/htdocs/INSTALL /usr/share/baculum/htdocs/ +build/usr/share/baculum/htdocs/framework /usr/share/baculum/htdocs/ +build/usr/share/baculum/htdocs/index.php /usr/share/baculum/htdocs/ +build/usr/share/baculum/htdocs/protected/application.xml /usr/share/baculum/htdocs/protected/ +build/usr/share/baculum/htdocs/protected/Common /usr/share/baculum/htdocs/protected/ +build/usr/share/baculum/htdocs/themes /usr/share/baculum/htdocs/ \ No newline at end of file diff --git a/gui/baculum/debian/baculum-common.links b/gui/baculum/debian/baculum-common.links new file mode 100644 index 0000000000..25c4a28eed --- /dev/null +++ b/gui/baculum/debian/baculum-common.links @@ -0,0 +1,3 @@ +usr/share/doc/baculum-common/copyright usr/share/baculum/htdocs/LICENSE +var/cache/baculum usr/share/baculum/htdocs/assets +var/cache/baculum usr/share/baculum/htdocs/protected/runtime diff --git a/gui/baculum/debian/baculum.postinst b/gui/baculum/debian/baculum-common.postinst similarity index 100% rename from gui/baculum/debian/baculum.postinst rename to gui/baculum/debian/baculum-common.postinst diff --git a/gui/baculum/debian/baculum-common.prerm b/gui/baculum/debian/baculum-common.prerm new file mode 100644 index 0000000000..384ea7806e --- /dev/null +++ b/gui/baculum/debian/baculum-common.prerm @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +rm /usr/share/baculum/htdocs/LICENSE +rm /usr/share/baculum/htdocs/assets +rm usr/share/baculum/htdocs/protected/runtime + +#DEBHELPER# + +exit 0 \ No newline at end of file diff --git a/gui/baculum/debian/baculum-lighttpd.dirs b/gui/baculum/debian/baculum-lighttpd.dirs deleted file mode 100644 index c4f4fbf6da..0000000000 --- a/gui/baculum/debian/baculum-lighttpd.dirs +++ /dev/null @@ -1 +0,0 @@ -etc/baculum/Data-lighttpd \ No newline at end of file diff --git a/gui/baculum/debian/baculum-lighttpd.init b/gui/baculum/debian/baculum-lighttpd.init deleted file mode 100755 index 28d161f945..0000000000 --- a/gui/baculum/debian/baculum-lighttpd.init +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh -### BEGIN INIT INFO -# Provides: baculum -# Required-Start: $local_fs $remote_fs $network $syslog $named -# Required-Stop: $local_fs $remote_fs $network $syslog $named -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Start/stop Baculum -# Description: Start the Baculum Web GUI. -# This script uses Lighttpd web server for working Baculum Web GUI tool. -### END INIT INFO - -DESC="Baculum Web GUI" -NAME=baculum -SCRIPTNAME=/etc/init.d/$NAME -DAEMON=/usr/sbin/lighttpd -DAEMON_OPTS="-f /etc/baculum/baculum-lighttpd.conf" -PIDFILE="/var/run/$NAME.pid" - -test -x $DAEMON || exit 0 - -check_syntax() -{ - $DAEMON -t $DAEMON_OPTS > /dev/null || exit $? -} - -. /lib/lsb/init-functions - -case "$1" in - start) - check_syntax - log_daemon_msg "Starting $DESC" $NAME - if ! start-stop-daemon --start --oknodo --quiet \ - --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS - then - log_end_msg 1 - else - log_end_msg 0 - fi - ;; - stop) - log_daemon_msg "Stopping $DESC" $NAME - if start-stop-daemon --stop --retry 30 --oknodo --quiet \ - --pidfile $PIDFILE --exec $DAEMON - then - rm -f $PIDFILE - log_end_msg 0 - else - log_end_msg 1 - fi - ;; - reload|force-reload) - check_syntax - log_daemon_msg "Reloading $DESC configuration" $NAME - if start-stop-daemon --stop --signal INT --quiet \ - --pidfile $PIDFILE --exec $DAEMON - then - rm $PIDFILE - if start-stop-daemon --start --quiet \ - --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS ; then - log_end_msg 0 - else - log_end_msg 1 - fi - else - log_end_msg 1 - fi - ;; - reopen-logs) - log_daemon_msg "Reopening $DESC logs" $NAME - if start-stop-daemon --stop --signal HUP --oknodo --quiet \ - --pidfile $PIDFILE --exec $DAEMON - then - log_end_msg 0 - else - log_end_msg 1 - fi - ;; - restart) - check_syntax - $0 stop - $0 start - ;; - status) - status_of_proc -p "$PIDFILE" "$DAEMON" lighttpd && exit 0 || exit $? - ;; - *) - echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload|status}" >&2 - exit 1 - ;; -esac - -exit 0 diff --git a/gui/baculum/debian/baculum-lighttpd.install b/gui/baculum/debian/baculum-lighttpd.install deleted file mode 100644 index 21770ecdcf..0000000000 --- a/gui/baculum/debian/baculum-lighttpd.install +++ /dev/null @@ -1,2 +0,0 @@ -build/etc/baculum/baculum-lighttpd.conf /etc/baculum/ -build/etc/baculum/Data-lighttpd/baculum.users /etc/baculum/Data-lighttpd/ \ No newline at end of file diff --git a/gui/baculum/debian/baculum-lighttpd.links b/gui/baculum/debian/baculum-lighttpd.links deleted file mode 100644 index 5477af7309..0000000000 --- a/gui/baculum/debian/baculum-lighttpd.links +++ /dev/null @@ -1 +0,0 @@ -etc/baculum/Data-lighttpd usr/share/baculum/htdocs/protected/Data diff --git a/gui/baculum/debian/baculum-lighttpd.postinst b/gui/baculum/debian/baculum-lighttpd.postinst deleted file mode 100644 index c00e972a72..0000000000 --- a/gui/baculum/debian/baculum-lighttpd.postinst +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -set -e - -case "$1" in - configure) - chown -R www-data:www-data /etc/baculum/Data-lighttpd - chown www-data:www-data /etc/baculum/baculum-lighttpd.conf - chmod 750 /etc/baculum/Data-lighttpd - chown -R www-data:www-data /var/cache/baculum - ;; -esac - -#DEBHELPER# diff --git a/gui/baculum/debian/baculum-lighttpd.prerm b/gui/baculum/debian/baculum-lighttpd.prerm deleted file mode 100644 index c04eb9631c..0000000000 --- a/gui/baculum/debian/baculum-lighttpd.prerm +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -set -e - -if [ "$1" = "remove" ] -then - [ ! -e /usr/share/baculum/htdocs/protected/Data/settings.conf ] || - mv /usr/share/baculum/htdocs/protected/Data/settings.conf \ - /usr/share/baculum/htdocs/protected/Data/settings.conf.lighttpd - # remove debug files if any - [ ! -e /usr/share/baculum/htdocs/protected/Data/baculum.dbg ] || - rm /usr/share/baculum/htdocs/protected/Data/baculum*.dbg -fi - -#DEBHELPER# - -exit 0 diff --git a/gui/baculum/debian/baculum-web-apache2.dirs b/gui/baculum/debian/baculum-web-apache2.dirs new file mode 100644 index 0000000000..66334e3bfb --- /dev/null +++ b/gui/baculum/debian/baculum-web-apache2.dirs @@ -0,0 +1 @@ +etc/baculum/Config-web-apache \ No newline at end of file diff --git a/gui/baculum/debian/baculum-web-apache2.install b/gui/baculum/debian/baculum-web-apache2.install new file mode 100644 index 0000000000..ee4b60bd69 --- /dev/null +++ b/gui/baculum/debian/baculum-web-apache2.install @@ -0,0 +1,2 @@ +build/etc/baculum/Config-web-apache/baculum.users /etc/baculum/Config-web-apache/ +build/etc/apache2/sites-available/baculum-web.conf /etc/apache2/sites-available/ \ No newline at end of file diff --git a/gui/baculum/debian/baculum-web-apache2.links b/gui/baculum/debian/baculum-web-apache2.links new file mode 100644 index 0000000000..60eefe1320 --- /dev/null +++ b/gui/baculum/debian/baculum-web-apache2.links @@ -0,0 +1 @@ +etc/baculum/Config-web-apache usr/share/baculum/htdocs/protected/Web/Config \ No newline at end of file diff --git a/gui/baculum/debian/baculum-web-apache2.postinst b/gui/baculum/debian/baculum-web-apache2.postinst new file mode 100644 index 0000000000..01b50ff6c5 --- /dev/null +++ b/gui/baculum/debian/baculum-web-apache2.postinst @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +case "$1" in + configure) + chown -R www-data:www-data /etc/baculum/Config-web-apache + chmod 750 /etc/baculum/Config-web-apache + ;; +esac + +#DEBHELPER# diff --git a/gui/baculum/debian/baculum-web-apache2.prerm b/gui/baculum/debian/baculum-web-apache2.prerm new file mode 100644 index 0000000000..22eee382aa --- /dev/null +++ b/gui/baculum/debian/baculum-web-apache2.prerm @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +if [ "$1" = "remove" ] +then + [ ! -e /usr/share/baculum/htdocs/protected/Web/Config/settings.conf ] || + mv /usr/share/baculum/htdocs/protected/Web/Config/settings.conf \ + /usr/share/baculum/htdocs/protected/Web/Config/settings.conf.apache + # remove debug files if any + [ ! -e /usr/share/baculum/htdocs/protected/Web/Config/baculum.dbg ] || + rm /usr/share/baculum/htdocs/protected/Web/Config/baculum*.dbg +fi + +#DEBHELPER# + +exit 0 diff --git a/gui/baculum/debian/baculum-web-lighttpd.dirs b/gui/baculum/debian/baculum-web-lighttpd.dirs new file mode 100644 index 0000000000..ec92ca58fc --- /dev/null +++ b/gui/baculum/debian/baculum-web-lighttpd.dirs @@ -0,0 +1 @@ +etc/baculum/Config-web-lighttpd \ No newline at end of file diff --git a/gui/baculum/debian/baculum-web-lighttpd.install b/gui/baculum/debian/baculum-web-lighttpd.install new file mode 100644 index 0000000000..616abc235f --- /dev/null +++ b/gui/baculum/debian/baculum-web-lighttpd.install @@ -0,0 +1,3 @@ +build/etc/baculum/Config-web-lighttpd/baculum.users /etc/baculum/Config-web-lighttpd/ +build/etc/baculum/baculum-web-lighttpd.conf /etc/baculum/ +build/usr/lib/systemd/system/baculum-web-lighttpd.service /usr/lib/systemd/user/ \ No newline at end of file diff --git a/gui/baculum/debian/baculum-web-lighttpd.links b/gui/baculum/debian/baculum-web-lighttpd.links new file mode 100644 index 0000000000..d847684ef5 --- /dev/null +++ b/gui/baculum/debian/baculum-web-lighttpd.links @@ -0,0 +1 @@ +etc/baculum/Config-web-lighttpd usr/share/baculum/htdocs/protected/Web/Config diff --git a/gui/baculum/debian/baculum-web-lighttpd.postinst b/gui/baculum/debian/baculum-web-lighttpd.postinst new file mode 100644 index 0000000000..2bb793e23a --- /dev/null +++ b/gui/baculum/debian/baculum-web-lighttpd.postinst @@ -0,0 +1,13 @@ +#!/bin/sh + +set -e + +case "$1" in + configure) + chown -R www-data:www-data /etc/baculum/Config-web-lighttpd + chown www-data:www-data /etc/baculum/baculum-web-lighttpd.conf + chmod 750 /etc/baculum/Config-web-lighttpd + ;; +esac + +#DEBHELPER# diff --git a/gui/baculum/debian/baculum-web-lighttpd.prerm b/gui/baculum/debian/baculum-web-lighttpd.prerm new file mode 100644 index 0000000000..715697b5b9 --- /dev/null +++ b/gui/baculum/debian/baculum-web-lighttpd.prerm @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +if [ "$1" = "remove" ] +then + [ ! -e /usr/share/baculum/htdocs/protected/Web/Config/settings.conf ] || + mv /usr/share/baculum/htdocs/protected/Web/Config/settings.conf \ + /usr/share/baculum/htdocs/protected/Web/Config/settings.conf.lighttpd + # remove debug files if any + [ ! -e /usr/share/baculum/htdocs/protected/Web/Config/baculum-web.dbg ] || + rm /usr/share/baculum/htdocs/protected/Web/Config/baculum-web*.dbg +fi + +#DEBHELPER# + +exit 0 diff --git a/gui/baculum/examples/rpm-template/baculum-lighttpd.service b/gui/baculum/debian/baculum-web-lighttpd.service similarity index 54% rename from gui/baculum/examples/rpm-template/baculum-lighttpd.service rename to gui/baculum/debian/baculum-web-lighttpd.service index b54937e132..7b448d9bef 100644 --- a/gui/baculum/examples/rpm-template/baculum-lighttpd.service +++ b/gui/baculum/debian/baculum-web-lighttpd.service @@ -3,8 +3,8 @@ Description=Baculum WebGUI Bacula Community tool After=network.target [Service] -PIDFile=/var/run/baculum.pid -ExecStart=/usr/sbin/lighttpd -f %CONFDIR/baculum-lighttpd.conf +PIDFile=/var/run/baculum-web.pid +ExecStart=/usr/sbin/lighttpd -f /etc/baculum/baculum-web-lighttpd.conf [Install] WantedBy=multi-user.target diff --git a/gui/baculum/debian/baculum-web.dirs b/gui/baculum/debian/baculum-web.dirs new file mode 100644 index 0000000000..59966fe4d6 --- /dev/null +++ b/gui/baculum/debian/baculum-web.dirs @@ -0,0 +1 @@ +usr/share/baculum/htdocs/protected/Web \ No newline at end of file diff --git a/gui/baculum/debian/baculum-web.install b/gui/baculum/debian/baculum-web.install new file mode 100644 index 0000000000..3063bfe298 --- /dev/null +++ b/gui/baculum/debian/baculum-web.install @@ -0,0 +1,13 @@ +build/usr/share/baculum/htdocs/protected/Web/Class /usr/share/baculum/htdocs/protected/Web/ +build/usr/share/baculum/htdocs/protected/Web/Data /usr/share/baculum/htdocs/protected/Web/ +build/usr/share/baculum/htdocs/protected/Web/JavaScript /usr/share/baculum/htdocs/protected/Web/ +build/usr/share/baculum/htdocs/protected/Web/Lang /usr/share/baculum/htdocs/protected/Web/ +build/usr/share/baculum/htdocs/protected/Web/Layouts /usr/share/baculum/htdocs/protected/Web/ +build/usr/share/baculum/htdocs/protected/Web/Logs /usr/share/baculum/htdocs/protected/Web/ +build/usr/share/baculum/htdocs/protected/Web/Pages /usr/share/baculum/htdocs/protected/Web/ +build/usr/share/baculum/htdocs/protected/Web/Portlets /usr/share/baculum/htdocs/protected/Web/ +build/usr/share/baculum/htdocs/protected/Web/Init.php /usr/share/baculum/htdocs/protected/Web/ +build/usr/share/baculum/htdocs/protected/Web/endpoints.xml /usr/share/baculum/htdocs/protected/Web/ +build/usr/share/locale/en/LC_MESSAGES/baculum-web.mo /usr/share/locale/en/LC_MESSAGES/ +build/usr/share/locale/pl/LC_MESSAGES/baculum-web.mo /usr/share/locale/pl/LC_MESSAGES/ +build/usr/share/locale/pt/LC_MESSAGES/baculum-web.mo /usr/share/locale/pt/LC_MESSAGES/ \ No newline at end of file diff --git a/gui/baculum/debian/baculum-web.links b/gui/baculum/debian/baculum-web.links new file mode 100644 index 0000000000..e91614101c --- /dev/null +++ b/gui/baculum/debian/baculum-web.links @@ -0,0 +1,6 @@ +usr/share/javascript/excanvas/excanvas.js usr/share/baculum/htdocs/protected/Web/JavaScript/excanvas.js +var/cache/baculum usr/share/baculum/htdocs/assets +var/cache/baculum usr/share/baculum/htdocs/protected/runtime +usr/share/locale/en/LC_MESSAGES/baculum-web.mo usr/share/baculum/htdocs/protected/Web/Lang/en/messages.mo +usr/share/locale/pl/LC_MESSAGES/baculum-web.mo usr/share/baculum/htdocs/protected/Web/Lang/pl/messages.mo +usr/share/locale/pt/LC_MESSAGES/baculum-web.mo usr/share/baculum/htdocs/protected/Web/Lang/pt/messages.mo \ No newline at end of file diff --git a/gui/baculum/debian/baculum-web.postinst b/gui/baculum/debian/baculum-web.postinst new file mode 100644 index 0000000000..fac64dbdc6 --- /dev/null +++ b/gui/baculum/debian/baculum-web.postinst @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +case "$1" in + configure) + chown -R www-data:www-data /usr/share/baculum/htdocs/protected/Web + ;; +esac + +#DEBHELPER# diff --git a/gui/baculum/debian/baculum-web.prerm b/gui/baculum/debian/baculum-web.prerm new file mode 100644 index 0000000000..071daa28f1 --- /dev/null +++ b/gui/baculum/debian/baculum-web.prerm @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +rm /usr/share/baculum/htdocs/protected/Web/JavaScript/excanvas.js + +#DEBHELPER# + +exit 0 \ No newline at end of file diff --git a/gui/baculum/debian/baculum.dirs b/gui/baculum/debian/baculum.dirs deleted file mode 100644 index 02791f0468..0000000000 --- a/gui/baculum/debian/baculum.dirs +++ /dev/null @@ -1 +0,0 @@ -var/cache/baculum \ No newline at end of file diff --git a/gui/baculum/debian/baculum.install b/gui/baculum/debian/baculum.install deleted file mode 100644 index 0aac04b491..0000000000 --- a/gui/baculum/debian/baculum.install +++ /dev/null @@ -1,14 +0,0 @@ -build/usr/share/baculum/htdocs/AUTHORS /usr/share/baculum/htdocs/ -build/usr/share/baculum/htdocs/framework /usr/share/baculum/htdocs/ -build/usr/share/baculum/htdocs/index.php /usr/share/baculum/htdocs/ -build/usr/share/baculum/htdocs/protected/application.xml /usr/share/baculum/htdocs/protected/ -build/usr/share/baculum/htdocs/protected/Init.php /usr/share/baculum/htdocs/protected/ -build/usr/share/baculum/htdocs/protected/Class /usr/share/baculum/htdocs/protected/ -build/usr/share/baculum/htdocs/protected/JavaScript /usr/share/baculum/htdocs/protected/ -build/usr/share/baculum/htdocs/protected/Lang /usr/share/baculum/htdocs/protected/ -build/usr/share/baculum/htdocs/protected/Layouts /usr/share/baculum/htdocs/protected/ -build/usr/share/baculum/htdocs/protected/Pages /usr/share/baculum/htdocs/protected/ -build/usr/share/baculum/htdocs/protected/Portlets /usr/share/baculum/htdocs/protected/ -build/usr/share/baculum/htdocs/themes /usr/share/baculum/htdocs/ -build/usr/share/locale/en/LC_MESSAGES/baculum.mo /usr/share/locale/en/LC_MESSAGES/ -build/usr/share/locale/pl/LC_MESSAGES/baculum.mo /usr/share/locale/pl/LC_MESSAGES/ \ No newline at end of file diff --git a/gui/baculum/debian/baculum.links b/gui/baculum/debian/baculum.links deleted file mode 100644 index 11559a0345..0000000000 --- a/gui/baculum/debian/baculum.links +++ /dev/null @@ -1,6 +0,0 @@ -usr/share/javascript/excanvas/excanvas.js usr/share/baculum/htdocs/protected/JavaScript/excanvas.js -usr/share/doc/baculum/copyright usr/share/baculum/htdocs/LICENSE -var/cache/baculum usr/share/baculum/htdocs/assets -var/cache/baculum usr/share/baculum/htdocs/protected/runtime -usr/share/locale/en/LC_MESSAGES/baculum.mo usr/share/baculum/htdocs/protected/Lang/en/messages.mo -usr/share/locale/pl/LC_MESSAGES/baculum.mo usr/share/baculum/htdocs/protected/Lang/pl/messages.mo \ No newline at end of file diff --git a/gui/baculum/debian/baculum.prerm b/gui/baculum/debian/baculum.prerm deleted file mode 100644 index b9555f2ad0..0000000000 --- a/gui/baculum/debian/baculum.prerm +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -set -e - -rm /usr/share/baculum/htdocs/protected/JavaScript/excanvas.js -rm /usr/share/baculum/htdocs/LICENSE - -#DEBHELPER# - -exit 0 \ No newline at end of file diff --git a/gui/baculum/debian/changelog b/gui/baculum/debian/changelog index 86a67cb151..1ffb393ae4 100644 --- a/gui/baculum/debian/changelog +++ b/gui/baculum/debian/changelog @@ -1,4 +1,13 @@ -baculum (7.4.3ppa1~trusty1) trusty; urgency=medium +baculum (9.0.0) xenial; urgency=high + + [ Marcin Haba ] + * new Baculum upstream (Web and API) + * split deb metafiles into baculum-api-(lighttpd|apache2), + baculum-web-(lighttpd|apache2) and baculum-common + + -- Marcin Haba Sat, 29 Apr 2017 23:35:01 +0200 + +baculum (7.2.0ppa1~wily1) wily; urgency=medium [ Marcin Haba ] * rebuild upstream 7.2.0 for Ubuntu 15.10 diff --git a/gui/baculum/debian/control b/gui/baculum/debian/control index b68e4f4666..55240dcf59 100644 --- a/gui/baculum/debian/control +++ b/gui/baculum/debian/control @@ -2,38 +2,68 @@ Source: baculum Section: web Priority: optional Maintainer: Marcin Haba -Build-Depends: debhelper (>= 4.0.0) +Build-Depends: debhelper (>= 4.0.0), dh-systemd Standards-Version: 3.9.6 -Package: baculum +Package: baculum-common Section: web Architecture: all -Depends: ${misc:Depends}, php5-cgi, php5-curl, php5-mysql, php5-pgsql, php5-sqlite, php5-json, libjs-excanvas, bacula-console -Description: Web GUI tool for Bacula - Baculum is a Web based tool to manage, administer and - monitor Bacula services. - Baculum is written in PHP and uses the PRADO Framework. - With Baculum installed in a Web server, you can run - backup and restore jobs; access the Bacula console in - a Baculum Web screen; monitor backups; produce graphs; - and more. - -Package: baculum-apache2 +Description: Baculum is web based tool to configure, manage, administer and monitor + Bacula services. From server side Baculum is written in PHP and it works basing + on PRADO Framework. Baculum interface enables e.g. to run Bacula backup and restore + actions, take access to Bacula console via web, watch backup graphs and others. + This package provides the common libraries for Baculum. + This module is a part of Baculum. + +Package: baculum-api +Section: web +Architecture: all +Depends: ${misc:Depends}, php-cgi, php-mysql, php-pgsql, php-sqlite3, php-json, baculum-common, bacula-console +Description: API for Baculum Web GUI + This package provides the API files for Baculum. + This module is a part of Baculum. + +Package: baculum-web Section: web Architecture: all -Depends: ${misc:Depends}, apache2, libapache2-mod-php5, baculum -Conflicts: baculum-lighttpd -Description: Apache configuration for the Baculum Web GUI tool - This package provides the Apache configuration for the - Baculum Web GUI tool. With this module installed it is - possible to run Baculum in an Apache Web server. +Depends: ${misc:Depends}, php-cgi, php-curl, php-json, libjs-excanvas, baculum-common +Description: WebGUI tool for Bacula Community program + This package provides the Web files for Baculum. + This module is a part of Baculum. -Package: baculum-lighttpd +Package: baculum-api-lighttpd Section: web Architecture: all -Depends: ${misc:Depends}, lighttpd, baculum +Depends: ${misc:Depends}, lighttpd, baculum-common, baculum-api Conflicts: baculum-httpd -Description: Lighttpd configuration for the Baculum Web GUI tool - This package provides the Lighttpd configuration for the - Baculum Web GUI tool. With this module installed it is possible - to run Baculum in a Lighttpd Web server. +Description: Lighttpd configuration for Baculum API + This package provides the Lighttpd configuration for Baculum API. + By using this module it is possible to run Baculum API in Lighttpd environment. + +Package: baculum-api-apache2 +Section: web +Architecture: all +Depends: ${misc:Depends}, apache2, libapache2-mod-php, baculum-common, baculum-api +Conflicts: baculum-web-lighttpd +Description: Apache configuration for Baculum API + This package provides the Apache configuration for Baculum API. + By using this module it is possible to run Baculum API in Apache environment. + + +Package: baculum-web-lighttpd +Section: web +Architecture: all +Depends: ${misc:Depends}, lighttpd, baculum-common, baculum-web +Conflicts: baculum-httpd +Description: Lighttpd configuration for Baculum Web + This package provides the Lighttpd configuration for Baculum Web GUI tool. + By using this module it is possible to run Baculum Web in Lighttpd environment. + +Package: baculum-web-apache2 +Section: web +Architecture: all +Depends:${misc:Depends}, apache2, libapache2-mod-php, baculum-common, baculum-web +Conflicts: baculum-web-lighttpd +Description: Apache configuration for Baculum Web GUI tool + This package provides the Apache configuration for Baculum Web GUI tool. + By using this module it is possible to run Baculum Web in Apache environment. diff --git a/gui/baculum/debian/rules b/gui/baculum/debian/rules index 9dd2f0b872..a8fb5a4fc7 100755 --- a/gui/baculum/debian/rules +++ b/gui/baculum/debian/rules @@ -12,6 +12,6 @@ PACKAGE_NAME = baculum %: - dh $@ + dh $@ --with=systemd override_dh_auto_build: make DESTDIR=build SAMPLETYPE=deb-template HTTPDNAME=apache2 HTTPDSITECONF=sites-available diff --git a/gui/baculum/examples/deb-template/baculum-api-apache.conf b/gui/baculum/examples/deb-template/baculum-api-apache.conf new file mode 100644 index 0000000000..1c9170ed84 --- /dev/null +++ b/gui/baculum/examples/deb-template/baculum-api-apache.conf @@ -0,0 +1,62 @@ +Listen 9096 + + + DocumentRoot %DOCUMENTROOT + ServerName localhost + CustomLog %LOGDIR/baculum-api-access.log combined + ErrorLog %LOGDIR/baculum-api-error.log + # + # NOTE: To enable encrypted connection please prepare cert files and + # then uncomment SSL lines below + # + #SSLEngine on + #SSLCertificateFile /etc/baculum/Config-api-apache/baculum.crt + #SSLCertificateKeyFile /etc/baculum/Config-api-apache/baculum.pem + + Options +FollowSymLinks + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^(.+)$ index.php/$1 [L] + RedirectMatch ^/$ /api/?api + Require all granted + + # + # NOTE: When you use OAuth2 then change this location section + # From: + # To: + # + + AuthType Basic + AuthName "Baculum Auth" + AuthUserFile %DOCUMENTROOT/protected/API/Config/baculum.users + Require valid-user + + + Order Deny,Allow + Deny from all + + + Order Deny,Allow + Deny from all + + + Order Deny,Allow + Deny from all + + + + mod_gzip_on Yes + mod_gzip_dechunk Yes + mod_gzip_item_include file \.js$ + mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* + + + ExpiresActive On + ExpiresDefault "access plus 864000 seconds" + + + Header set Cache-Control "max-age=864000, private" + + + diff --git a/gui/baculum/examples/deb-template/baculum-api-lighttpd.conf b/gui/baculum/examples/deb-template/baculum-api-lighttpd.conf new file mode 100644 index 0000000000..36728bea68 --- /dev/null +++ b/gui/baculum/examples/deb-template/baculum-api-lighttpd.conf @@ -0,0 +1,117 @@ +# Baculum WebGUI tool for Bacula Community +# +# Web Server Configuration +# + +server.port = 9096 +server.username = "www-data" +server.groupname = "www-data" +server.document-root = "%DOCUMENTROOT" +server.errorlog = "%LOGDIR/baculum-api-error.log" +accesslog.filename = "%LOGDIR/baculum-api-access.log" +server.pid-file = "/var/run/baculum-api.pid" + +# +# NOTE: To enable encrypted connection please prepare cert files and +# then uncomment SSL lines below +# +#ssl.engine = "enable" +#ssl.pemfile = "/etc/baculum/Config-api-lighttpd/baculum.pem" +#ssl.ca-file = "/etc/baculum/Config-api-lighttpd/baculum.crt" + +server.modules = ( + "mod_auth", + "mod_alias", + "mod_rewrite", + "mod_setenv", + "mod_fastcgi", + "mod_access", + "mod_accesslog" +) + +# +# Uncomment this line and closing braces below when you use OAuth2 +# +# $HTTP["url"] =~ "^/web/page/.*$" { + auth.backend = "htpasswd" + auth.backend.htpasswd.userfile = "%DOCUMENTROOT/protected/API/Config/baculum.users" + auth.require = ( "/" => ( + "method" => "basic", + "realm" => "Baculum Auth", + "require" => "valid-user" + ) + ) +# } + +index-file.names = ( "index.php" ) + +static-file.exclude-extensions = ( ".php" ) + +dir-listing.encoding = "utf-8" + +mimetype.assign = ( + ".html" => "text/html", + ".gif" => "image/gif", + ".png" => "image/png", + ".ico" => "image/x-icon", + ".css" => "text/css", + ".js" => "application/javascript" +) + +alias.url = ( + "/" => "%DOCUMENTROOT/" +) + +fastcgi.server = ( + ".php"=> ( + ( + "bin-path"=>"/usr/bin/php-cgi", + "socket"=>"/tmp/php.sock", + "max-procs" => 1, + "bin-environment" => ( + "PHP_FCGI_CHILDREN" => "4", + "PHP_FCGI_MAX_REQUESTS" => "10000" + ), + "bin-copy-environment" => ( + "PATH", + "SHELL", + "USER" + ), + "broken-scriptfilename" => "enable" + ) + ) +) + +url.rewrite-once = ( + "^/themes/(.+)$" => "/themes/$1", + "^/assets/(.+)$" => "/assets/$1", + "^/$" => "/index.php/api/page/home/", + "^/(.+)$" => "/index.php/$1" +) + +url.access-deny = ( + "^%DOCUMENTROOT/protected/", + "^%DOCUMENTROOT/framework/", + + # Wsat is not used by Baculum. Added here for not storing + # framework Apache specific .htaccess files + "^%DOCUMENTROOT/framework/Wsat/themes/" +) + +### Enable compressing dynamic content ### + +# disable mod_compress when request a php file +$HTTP["url"] !~ "\.php$" { + compress.filetype = ( + "text/plain", + "text/html", + "text/javascript", + "text/css", + "text/xml" + ) +} + +# enable mod_setenv for framework source files: +$HTTP["url"] =~ "^%DOCUMENTROOT/framework/Web/Javascripts/source/" { + setenv.add-response-header = ("Content-Encoding" => "gzip") +} diff --git a/gui/baculum/examples/deb-template/baculum-api-lighttpd.service b/gui/baculum/examples/deb-template/baculum-api-lighttpd.service new file mode 100644 index 0000000000..543bae90bd --- /dev/null +++ b/gui/baculum/examples/deb-template/baculum-api-lighttpd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Baculum API Bacula Community tool +After=network.target + +[Service] +PIDFile=/var/run/baculum-api.pid +ExecStart=/usr/sbin/lighttpd -f %CONFDIR/baculum-api-lighttpd.conf + +[Install] +WantedBy=multi-user.target + diff --git a/gui/baculum/examples/deb-template/baculum-apache.conf b/gui/baculum/examples/deb-template/baculum-web-apache.conf similarity index 63% rename from gui/baculum/examples/deb-template/baculum-apache.conf rename to gui/baculum/examples/deb-template/baculum-web-apache.conf index 7dc51c20ec..34bed7c416 100644 --- a/gui/baculum/examples/deb-template/baculum-apache.conf +++ b/gui/baculum/examples/deb-template/baculum-web-apache.conf @@ -3,19 +3,37 @@ Listen 9095 DocumentRoot %DOCUMENTROOT ServerName localhost - CustomLog %LOGDIR/baculum-access.log combined - ErrorLog %LOGDIR/baculum-error.log + CustomLog %LOGDIR/baculum-web-access.log combined + ErrorLog %LOGDIR/baculum-web-error.log + # + # NOTE: To enable encrypted connection please prepare cert files and + # then uncomment SSL lines below + # + #SSLEngine on + #SSLCertificateFile /etc/baculum/Config-web-apache/baculum.crt + #SSLCertificateKeyFile /etc/baculum/Config-web-apache/baculum.pem Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [L] + RedirectMatch ^/$ /web/ + + + SetEnvIf Request_URI "^/web/redirect$" noauth=1 + AuthType Basic AuthName "Baculum Auth" - AuthUserFile %DOCUMENTROOT/protected/Data/baculum.users + AuthUserFile %DOCUMENTROOT/protected/Web/Config/baculum.users + + Order Deny,Allow + Satisfy Any + Deny from all Require valid-user - + Allow from env=noauth + Allow from env=REDIRECT_noauth + Order Deny,Allow Deny from all diff --git a/gui/baculum/examples/deb-template/baculum-lighttpd.conf b/gui/baculum/examples/deb-template/baculum-web-lighttpd.conf similarity index 71% rename from gui/baculum/examples/deb-template/baculum-lighttpd.conf rename to gui/baculum/examples/deb-template/baculum-web-lighttpd.conf index 74defe9717..1e2ac236c0 100644 --- a/gui/baculum/examples/deb-template/baculum-lighttpd.conf +++ b/gui/baculum/examples/deb-template/baculum-web-lighttpd.conf @@ -7,9 +7,17 @@ server.port = 9095 server.username = "www-data" server.groupname = "www-data" server.document-root = "%DOCUMENTROOT" -server.errorlog = "%LOGDIR/baculum-error.log" -accesslog.filename = "%LOGDIR/baculum-access.log" -server.pid-file = "/var/run/baculum.pid" +server.errorlog = "%LOGDIR/baculum-web-error.log" +accesslog.filename = "%LOGDIR/baculum-web-access.log" +server.pid-file = "/var/run/baculum-web.pid" + +# +# NOTE: To enable encrypted connection please prepare cert files and +# then uncomment SSL lines below +# +#ssl.engine = "enable" +#ssl.pemfile = "/etc/baculum/Config-web-lighttpd/baculum.pem" +#ssl.ca-file = "/etc/baculum/Config-web-lighttpd/baculum.crt" server.modules = ( "mod_auth", @@ -21,14 +29,16 @@ server.modules = ( "mod_accesslog" ) -auth.backend = "htpasswd" -auth.backend.htpasswd.userfile = "%DOCUMENTROOT/protected/Data/baculum.users" -auth.require = ( "/" => ( - "method" => "basic", - "realm" => "Baculum Auth", - "require" => "valid-user" +$HTTP["url"] !~ "/web/redirect$" { + auth.backend = "htpasswd" + auth.backend.htpasswd.userfile = "%DOCUMENTROOT/protected/Web/Config/baculum.users" + auth.require = ( "" => ( + "method" => "basic", + "realm" => "Baculum Auth", + "require" => "valid-user" + ) ) -) +} index-file.names = ( "index.php" ) @@ -72,6 +82,7 @@ fastcgi.server = ( url.rewrite-once = ( "^/themes/(.+)$" => "/themes/$1", "^/assets/(.+)$" => "/assets/$1", + "^/$" => "/index.php?web", "^/(.+)$" => "/index.php/$1" ) diff --git a/gui/baculum/examples/rpm/baculum-lighttpd.service b/gui/baculum/examples/deb-template/baculum-web-lighttpd.service similarity index 57% rename from gui/baculum/examples/rpm/baculum-lighttpd.service rename to gui/baculum/examples/deb-template/baculum-web-lighttpd.service index 6d07142730..6e148089fd 100644 --- a/gui/baculum/examples/rpm/baculum-lighttpd.service +++ b/gui/baculum/examples/deb-template/baculum-web-lighttpd.service @@ -3,8 +3,8 @@ Description=Baculum WebGUI Bacula Community tool After=network.target [Service] -PIDFile=/var/run/baculum.pid -ExecStart=/usr/sbin/lighttpd -f /etc/baculum/baculum-lighttpd.conf +PIDFile=/var/run/baculum-web.pid +ExecStart=/usr/sbin/lighttpd -f %CONFDIR/baculum-web-lighttpd.conf [Install] WantedBy=multi-user.target diff --git a/gui/baculum/examples/deb/baculum-api-apache.conf b/gui/baculum/examples/deb/baculum-api-apache.conf new file mode 100644 index 0000000000..252d927c44 --- /dev/null +++ b/gui/baculum/examples/deb/baculum-api-apache.conf @@ -0,0 +1,62 @@ +Listen 9096 + + + DocumentRoot /usr/share/baculum/htdocs + ServerName localhost + CustomLog /var/log/apache2/baculum-api-access.log combined + ErrorLog /var/log/apache2/baculum-api-error.log + # + # NOTE: To enable encrypted connection please prepare cert files and + # then uncomment SSL lines below + # + #SSLEngine on + #SSLCertificateFile /etc/baculum/Config-api-apache/baculum.crt + #SSLCertificateKeyFile /etc/baculum/Config-api-apache/baculum.pem + + Options +FollowSymLinks + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^(.+)$ index.php/$1 [L] + RedirectMatch ^/$ /api/?api + Require all granted + + # + # NOTE: When you use OAuth2 then change this location section + # From: + # To: + # + + AuthType Basic + AuthName "Baculum Auth" + AuthUserFile /usr/share/baculum/htdocs/protected/API/Config/baculum.users + Require valid-user + + + Order Deny,Allow + Deny from all + + + Order Deny,Allow + Deny from all + + + Order Deny,Allow + Deny from all + + + + mod_gzip_on Yes + mod_gzip_dechunk Yes + mod_gzip_item_include file \.js$ + mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* + + + ExpiresActive On + ExpiresDefault "access plus 864000 seconds" + + + Header set Cache-Control "max-age=864000, private" + + + diff --git a/gui/baculum/examples/deb/baculum-api-lighttpd.conf b/gui/baculum/examples/deb/baculum-api-lighttpd.conf new file mode 100644 index 0000000000..3ab50ee6cc --- /dev/null +++ b/gui/baculum/examples/deb/baculum-api-lighttpd.conf @@ -0,0 +1,117 @@ +# Baculum WebGUI tool for Bacula Community +# +# Web Server Configuration +# + +server.port = 9096 +server.username = "www-data" +server.groupname = "www-data" +server.document-root = "/usr/share/baculum/htdocs" +server.errorlog = "/var/log/lighttpd/baculum-api-error.log" +accesslog.filename = "/var/log/lighttpd/baculum-api-access.log" +server.pid-file = "/var/run/baculum-api.pid" + +# +# NOTE: To enable encrypted connection please prepare cert files and +# then uncomment SSL lines below +# +#ssl.engine = "enable" +#ssl.pemfile = "/etc/baculum/Config-api-lighttpd/baculum.pem" +#ssl.ca-file = "/etc/baculum/Config-api-lighttpd/baculum.crt" + +server.modules = ( + "mod_auth", + "mod_alias", + "mod_rewrite", + "mod_setenv", + "mod_fastcgi", + "mod_access", + "mod_accesslog" +) + +# +# Uncomment this line and closing braces below when you use OAuth2 +# +# $HTTP["url"] =~ "^/web/page/.*$" { + auth.backend = "htpasswd" + auth.backend.htpasswd.userfile = "/usr/share/baculum/htdocs/protected/API/Config/baculum.users" + auth.require = ( "/" => ( + "method" => "basic", + "realm" => "Baculum Auth", + "require" => "valid-user" + ) + ) +# } + +index-file.names = ( "index.php" ) + +static-file.exclude-extensions = ( ".php" ) + +dir-listing.encoding = "utf-8" + +mimetype.assign = ( + ".html" => "text/html", + ".gif" => "image/gif", + ".png" => "image/png", + ".ico" => "image/x-icon", + ".css" => "text/css", + ".js" => "application/javascript" +) + +alias.url = ( + "/" => "/usr/share/baculum/htdocs/" +) + +fastcgi.server = ( + ".php"=> ( + ( + "bin-path"=>"/usr/bin/php-cgi", + "socket"=>"/tmp/php.sock", + "max-procs" => 1, + "bin-environment" => ( + "PHP_FCGI_CHILDREN" => "4", + "PHP_FCGI_MAX_REQUESTS" => "10000" + ), + "bin-copy-environment" => ( + "PATH", + "SHELL", + "USER" + ), + "broken-scriptfilename" => "enable" + ) + ) +) + +url.rewrite-once = ( + "^/themes/(.+)$" => "/themes/$1", + "^/assets/(.+)$" => "/assets/$1", + "^/$" => "/index.php/api/page/home/", + "^/(.+)$" => "/index.php/$1" +) + +url.access-deny = ( + "^/usr/share/baculum/htdocs/protected/", + "^/usr/share/baculum/htdocs/framework/", + + # Wsat is not used by Baculum. Added here for not storing + # framework Apache specific .htaccess files + "^/usr/share/baculum/htdocs/framework/Wsat/themes/" +) + +### Enable compressing dynamic content ### + +# disable mod_compress when request a php file +$HTTP["url"] !~ "\.php$" { + compress.filetype = ( + "text/plain", + "text/html", + "text/javascript", + "text/css", + "text/xml" + ) +} + +# enable mod_setenv for framework source files: +$HTTP["url"] =~ "^/usr/share/baculum/htdocs/framework/Web/Javascripts/source/" { + setenv.add-response-header = ("Content-Encoding" => "gzip") +} diff --git a/gui/baculum/examples/deb/baculum-api-lighttpd.service b/gui/baculum/examples/deb/baculum-api-lighttpd.service new file mode 100644 index 0000000000..46a0d3e472 --- /dev/null +++ b/gui/baculum/examples/deb/baculum-api-lighttpd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Baculum API Bacula Community tool +After=network.target + +[Service] +PIDFile=/var/run/baculum-api.pid +ExecStart=/usr/sbin/lighttpd -f /etc/baculum/baculum-api-lighttpd.conf + +[Install] +WantedBy=multi-user.target + diff --git a/gui/baculum/examples/deb/baculum-web-apache.conf b/gui/baculum/examples/deb/baculum-web-apache.conf new file mode 100644 index 0000000000..eb431e05e4 --- /dev/null +++ b/gui/baculum/examples/deb/baculum-web-apache.conf @@ -0,0 +1,64 @@ +Listen 9095 + + + DocumentRoot /usr/share/baculum/htdocs + ServerName localhost + CustomLog /var/log/apache2/baculum-web-access.log combined + ErrorLog /var/log/apache2/baculum-web-error.log + # + # NOTE: To enable encrypted connection please prepare cert files and + # then uncomment SSL lines below + # + #SSLEngine on + #SSLCertificateFile /etc/baculum/Config-web-apache/baculum.crt + #SSLCertificateKeyFile /etc/baculum/Config-web-apache/baculum.pem + + Options +FollowSymLinks + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^(.*)$ index.php/$1 [L] + RedirectMatch ^/$ /web/ + + + SetEnvIf Request_URI "^/web/redirect$" noauth=1 + + AuthType Basic + AuthName "Baculum Auth" + AuthUserFile /usr/share/baculum/htdocs/protected/Web/Config/baculum.users + + Order Deny,Allow + Satisfy Any + Deny from all + Require valid-user + Allow from env=noauth + Allow from env=REDIRECT_noauth + + + Order Deny,Allow + Deny from all + + + Order Deny,Allow + Deny from all + + + Order Deny,Allow + Deny from all + + + + mod_gzip_on Yes + mod_gzip_dechunk Yes + mod_gzip_item_include file \.js$ + mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* + + + ExpiresActive On + ExpiresDefault "access plus 864000 seconds" + + + Header set Cache-Control "max-age=864000, private" + + + diff --git a/gui/baculum/examples/deb/baculum-lighttpd.conf b/gui/baculum/examples/deb/baculum-web-lighttpd.conf similarity index 70% rename from gui/baculum/examples/deb/baculum-lighttpd.conf rename to gui/baculum/examples/deb/baculum-web-lighttpd.conf index d676efc536..e233c110cf 100644 --- a/gui/baculum/examples/deb/baculum-lighttpd.conf +++ b/gui/baculum/examples/deb/baculum-web-lighttpd.conf @@ -7,9 +7,17 @@ server.port = 9095 server.username = "www-data" server.groupname = "www-data" server.document-root = "/usr/share/baculum/htdocs" -server.errorlog = "/var/log/lighttpd/baculum-error.log" -accesslog.filename = "/var/log/lighttpd/baculum-access.log" -server.pid-file = "/var/run/baculum.pid" +server.errorlog = "/var/log/lighttpd/baculum-web-error.log" +accesslog.filename = "/var/log/lighttpd/baculum-web-access.log" +server.pid-file = "/var/run/baculum-web.pid" + +# +# NOTE: To enable encrypted connection please prepare cert files and +# then uncomment SSL lines below +# +#ssl.engine = "enable" +#ssl.pemfile = "/etc/baculum/Config-web-lighttpd/baculum.pem" +#ssl.ca-file = "/etc/baculum/Config-web-lighttpd/baculum.crt" server.modules = ( "mod_auth", @@ -21,14 +29,16 @@ server.modules = ( "mod_accesslog" ) -auth.backend = "htpasswd" -auth.backend.htpasswd.userfile = "/usr/share/baculum/htdocs/protected/Data/baculum.users" -auth.require = ( "/" => ( - "method" => "basic", - "realm" => "Baculum Auth", - "require" => "valid-user" +$HTTP["url"] !~ "/web/redirect$" { + auth.backend = "htpasswd" + auth.backend.htpasswd.userfile = "/usr/share/baculum/htdocs/protected/Web/Config/baculum.users" + auth.require = ( "" => ( + "method" => "basic", + "realm" => "Baculum Auth", + "require" => "valid-user" + ) ) -) +} index-file.names = ( "index.php" ) @@ -72,6 +82,7 @@ fastcgi.server = ( url.rewrite-once = ( "^/themes/(.+)$" => "/themes/$1", "^/assets/(.+)$" => "/assets/$1", + "^/$" => "/index.php?web", "^/(.+)$" => "/index.php/$1" ) diff --git a/gui/baculum/examples/deb/baculum-web-lighttpd.service b/gui/baculum/examples/deb/baculum-web-lighttpd.service new file mode 100644 index 0000000000..7b448d9bef --- /dev/null +++ b/gui/baculum/examples/deb/baculum-web-lighttpd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Baculum WebGUI Bacula Community tool +After=network.target + +[Service] +PIDFile=/var/run/baculum-web.pid +ExecStart=/usr/sbin/lighttpd -f /etc/baculum/baculum-web-lighttpd.conf + +[Install] +WantedBy=multi-user.target + diff --git a/gui/baculum/examples/nginx/baculum.conf b/gui/baculum/examples/nginx/baculum.conf deleted file mode 100644 index 51d5cab5c4..0000000000 --- a/gui/baculum/examples/nginx/baculum.conf +++ /dev/null @@ -1,42 +0,0 @@ -upstream baculum-php { - server unix:/run/php-fpm/baculum-php.sock; -} - -server { - listen 9095; - server_name localhost; - root /usr/share/baculum/htdocs; - index index.php; - charset utf-8; - set $baculum_index "index.php"; - - location / { - auth_basic "Baculum Auth"; - auth_basic_user_file /usr/share/baculum/htdocs/protected/Data/baculum.users; - index $baculum_index; - try_files $uri $uri/ $baculum_index?$args; - rewrite ^/(.+)$ /index.php/$1 last; - } - - location ~ ^/(protected|framework) { - deny all; - } - - location ~ \.(js|css|png|jpg|gif|ico)$ { - try_files $uri = 404; - } - - location ~ \.php { - fastcgi_split_path_info ^(.+\.php)(.*)$; - set $furi /$baculum_index; - if (-f $document_root$fastcgi_script_name){ - set $furi $fastcgi_script_name; - } - fastcgi_param SCRIPT_FILENAME $document_root$furi; - fastcgi_param SERVER_NAME $host; - fastcgi_param PATH_INFO $fastcgi_path_info; - fastcgi_param PATH_TRANSLATED $document_root$furi; - fastcgi_pass baculum-php; - include fastcgi_params; - } -} \ No newline at end of file diff --git a/gui/baculum/examples/nginx/php-fpm/baculum-php.conf b/gui/baculum/examples/nginx/php-fpm/baculum-php.conf deleted file mode 100644 index 31b19c630a..0000000000 --- a/gui/baculum/examples/nginx/php-fpm/baculum-php.conf +++ /dev/null @@ -1,18 +0,0 @@ -[baculum-php] -listen = /var/run/php-fpm/baculum-php.sock -listen.owner = nginx -listen.group = nginx -listen.mode = 0666 - -listen.backlog = -1 -listen.allowed_clients = 127.0.0.1 - -user = nginx -group = nginx - -pm = dynamic -pm.max_children = 5 -pm.start_servers = 2 -pm.min_spare_servers = 1 -pm.max_spare_servers = 3 -pm.max_requests = 500 diff --git a/gui/baculum/examples/rpm-template/baculum-api-apache.conf b/gui/baculum/examples/rpm-template/baculum-api-apache.conf new file mode 100644 index 0000000000..1c9170ed84 --- /dev/null +++ b/gui/baculum/examples/rpm-template/baculum-api-apache.conf @@ -0,0 +1,62 @@ +Listen 9096 + + + DocumentRoot %DOCUMENTROOT + ServerName localhost + CustomLog %LOGDIR/baculum-api-access.log combined + ErrorLog %LOGDIR/baculum-api-error.log + # + # NOTE: To enable encrypted connection please prepare cert files and + # then uncomment SSL lines below + # + #SSLEngine on + #SSLCertificateFile /etc/baculum/Config-api-apache/baculum.crt + #SSLCertificateKeyFile /etc/baculum/Config-api-apache/baculum.pem + + Options +FollowSymLinks + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^(.+)$ index.php/$1 [L] + RedirectMatch ^/$ /api/?api + Require all granted + + # + # NOTE: When you use OAuth2 then change this location section + # From: + # To: + # + + AuthType Basic + AuthName "Baculum Auth" + AuthUserFile %DOCUMENTROOT/protected/API/Config/baculum.users + Require valid-user + + + Order Deny,Allow + Deny from all + + + Order Deny,Allow + Deny from all + + + Order Deny,Allow + Deny from all + + + + mod_gzip_on Yes + mod_gzip_dechunk Yes + mod_gzip_item_include file \.js$ + mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* + + + ExpiresActive On + ExpiresDefault "access plus 864000 seconds" + + + Header set Cache-Control "max-age=864000, private" + + + diff --git a/gui/baculum/examples/rpm-template/baculum-api-lighttpd.conf b/gui/baculum/examples/rpm-template/baculum-api-lighttpd.conf new file mode 100644 index 0000000000..ab5deefd46 --- /dev/null +++ b/gui/baculum/examples/rpm-template/baculum-api-lighttpd.conf @@ -0,0 +1,117 @@ +# Baculum WebGUI tool for Bacula Community +# +# Web Server Configuration +# + +server.port = 9096 +server.username = "lighttpd" +server.groupname = "lighttpd" +server.document-root = "%DOCUMENTROOT" +server.errorlog = "%LOGDIR/baculum-api-error.log" +accesslog.filename = "%LOGDIR/baculum-api-access.log" +server.pid-file = "/var/run/baculum-api.pid" + +# +# NOTE: To enable encrypted connection please prepare cert files and +# then uncomment SSL lines below +# +#ssl.engine = "enable" +#ssl.pemfile = "/etc/baculum/Config-api-lighttpd/baculum.pem" +#ssl.ca-file = "/etc/baculum/Config-api-lighttpd/baculum.crt" + +server.modules = ( + "mod_auth", + "mod_alias", + "mod_rewrite", + "mod_setenv", + "mod_fastcgi", + "mod_access", + "mod_accesslog" +) + +# +# Uncomment this line and closing braces below when you use OAuth2 +# +# $HTTP["url"] =~ "^/web/page/.*$" { + auth.backend = "htpasswd" + auth.backend.htpasswd.userfile = "%DOCUMENTROOT/protected/API/Config/baculum.users" + auth.require = ( "/" => ( + "method" => "basic", + "realm" => "Baculum Auth", + "require" => "valid-user" + ) + ) +# } + +index-file.names = ( "index.php" ) + +static-file.exclude-extensions = ( ".php" ) + +dir-listing.encoding = "utf-8" + +mimetype.assign = ( + ".html" => "text/html", + ".gif" => "image/gif", + ".png" => "image/png", + ".ico" => "image/x-icon", + ".css" => "text/css", + ".js" => "application/javascript" +) + +alias.url = ( + "/" => "%DOCUMENTROOT/" +) + +fastcgi.server = ( + ".php"=> ( + ( + "bin-path"=>"/usr/bin/php-cgi", + "socket"=>"/tmp/php.sock", + "max-procs" => 1, + "bin-environment" => ( + "PHP_FCGI_CHILDREN" => "4", + "PHP_FCGI_MAX_REQUESTS" => "10000" + ), + "bin-copy-environment" => ( + "PATH", + "SHELL", + "USER" + ), + "broken-scriptfilename" => "enable" + ) + ) +) + +url.rewrite-once = ( + "^/themes/(.+)$" => "/themes/$1", + "^/assets/(.+)$" => "/assets/$1", + "^/$" => "/index.php/api/page/home/", + "^/(.+)$" => "/index.php/$1" +) + +url.access-deny = ( + "^%DOCUMENTROOT/protected/", + "^%DOCUMENTROOT/framework/", + + # Wsat is not used by Baculum. Added here for not storing + # framework Apache specific .htaccess files + "^%DOCUMENTROOT/framework/Wsat/themes/" +) + +### Enable compressing dynamic content ### + +# disable mod_compress when request a php file +$HTTP["url"] !~ "\.php$" { + compress.filetype = ( + "text/plain", + "text/html", + "text/javascript", + "text/css", + "text/xml" + ) +} + +# enable mod_setenv for framework source files: +$HTTP["url"] =~ "^%DOCUMENTROOT/framework/Web/Javascripts/source/" { + setenv.add-response-header = ("Content-Encoding" => "gzip") +} diff --git a/gui/baculum/examples/rpm-template/baculum-api-lighttpd.service b/gui/baculum/examples/rpm-template/baculum-api-lighttpd.service new file mode 100644 index 0000000000..543bae90bd --- /dev/null +++ b/gui/baculum/examples/rpm-template/baculum-api-lighttpd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Baculum API Bacula Community tool +After=network.target + +[Service] +PIDFile=/var/run/baculum-api.pid +ExecStart=/usr/sbin/lighttpd -f %CONFDIR/baculum-api-lighttpd.conf + +[Install] +WantedBy=multi-user.target + diff --git a/gui/baculum/examples/rpm-template/baculum-apache.conf b/gui/baculum/examples/rpm-template/baculum-web-apache.conf similarity index 63% rename from gui/baculum/examples/rpm-template/baculum-apache.conf rename to gui/baculum/examples/rpm-template/baculum-web-apache.conf index 7dc51c20ec..34bed7c416 100644 --- a/gui/baculum/examples/rpm-template/baculum-apache.conf +++ b/gui/baculum/examples/rpm-template/baculum-web-apache.conf @@ -3,19 +3,37 @@ Listen 9095 DocumentRoot %DOCUMENTROOT ServerName localhost - CustomLog %LOGDIR/baculum-access.log combined - ErrorLog %LOGDIR/baculum-error.log + CustomLog %LOGDIR/baculum-web-access.log combined + ErrorLog %LOGDIR/baculum-web-error.log + # + # NOTE: To enable encrypted connection please prepare cert files and + # then uncomment SSL lines below + # + #SSLEngine on + #SSLCertificateFile /etc/baculum/Config-web-apache/baculum.crt + #SSLCertificateKeyFile /etc/baculum/Config-web-apache/baculum.pem Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [L] + RedirectMatch ^/$ /web/ + + + SetEnvIf Request_URI "^/web/redirect$" noauth=1 + AuthType Basic AuthName "Baculum Auth" - AuthUserFile %DOCUMENTROOT/protected/Data/baculum.users + AuthUserFile %DOCUMENTROOT/protected/Web/Config/baculum.users + + Order Deny,Allow + Satisfy Any + Deny from all Require valid-user - + Allow from env=noauth + Allow from env=REDIRECT_noauth + Order Deny,Allow Deny from all diff --git a/gui/baculum/examples/rpm-template/baculum-lighttpd.conf b/gui/baculum/examples/rpm-template/baculum-web-lighttpd.conf similarity index 71% rename from gui/baculum/examples/rpm-template/baculum-lighttpd.conf rename to gui/baculum/examples/rpm-template/baculum-web-lighttpd.conf index fb7f944233..a2784c15ef 100644 --- a/gui/baculum/examples/rpm-template/baculum-lighttpd.conf +++ b/gui/baculum/examples/rpm-template/baculum-web-lighttpd.conf @@ -7,9 +7,17 @@ server.port = 9095 server.username = "lighttpd" server.groupname = "lighttpd" server.document-root = "%DOCUMENTROOT" -server.errorlog = "%LOGDIR/baculum-error.log" -accesslog.filename = "%LOGDIR/baculum-access.log" -server.pid-file = "/var/run/baculum.pid" +server.errorlog = "%LOGDIR/baculum-web-error.log" +accesslog.filename = "%LOGDIR/baculum-web-access.log" +server.pid-file = "/var/run/baculum-web.pid" + +# +# NOTE: To enable encrypted connection please prepare cert files and +# then uncomment SSL lines below +# +#ssl.engine = "enable" +#ssl.pemfile = "/etc/baculum/Config-web-lighttpd/baculum.pem" +#ssl.ca-file = "/etc/baculum/Config-web-lighttpd/baculum.crt" server.modules = ( "mod_auth", @@ -21,14 +29,16 @@ server.modules = ( "mod_accesslog" ) -auth.backend = "htpasswd" -auth.backend.htpasswd.userfile = "%DOCUMENTROOT/protected/Data/baculum.users" -auth.require = ( "/" => ( - "method" => "basic", - "realm" => "Baculum Auth", - "require" => "valid-user" +$HTTP["url"] !~ "/web/redirect$" { + auth.backend = "htpasswd" + auth.backend.htpasswd.userfile = "%DOCUMENTROOT/protected/Web/Config/baculum.users" + auth.require = ( "" => ( + "method" => "basic", + "realm" => "Baculum Auth", + "require" => "valid-user" + ) ) -) +} index-file.names = ( "index.php" ) @@ -72,6 +82,7 @@ fastcgi.server = ( url.rewrite-once = ( "^/themes/(.+)$" => "/themes/$1", "^/assets/(.+)$" => "/assets/$1", + "^/$" => "/index.php?web", "^/(.+)$" => "/index.php/$1" ) diff --git a/gui/baculum/examples/deb-template/baculum-lighttpd.service b/gui/baculum/examples/rpm-template/baculum-web-lighttpd.service similarity index 55% rename from gui/baculum/examples/deb-template/baculum-lighttpd.service rename to gui/baculum/examples/rpm-template/baculum-web-lighttpd.service index b54937e132..6e148089fd 100644 --- a/gui/baculum/examples/deb-template/baculum-lighttpd.service +++ b/gui/baculum/examples/rpm-template/baculum-web-lighttpd.service @@ -3,8 +3,8 @@ Description=Baculum WebGUI Bacula Community tool After=network.target [Service] -PIDFile=/var/run/baculum.pid -ExecStart=/usr/sbin/lighttpd -f %CONFDIR/baculum-lighttpd.conf +PIDFile=/var/run/baculum-web.pid +ExecStart=/usr/sbin/lighttpd -f %CONFDIR/baculum-web-lighttpd.conf [Install] WantedBy=multi-user.target diff --git a/gui/baculum/examples/rpm-template/baculum.spec b/gui/baculum/examples/rpm-template/baculum.spec index ed44b79889..61b549fa87 100644 --- a/gui/baculum/examples/rpm-template/baculum.spec +++ b/gui/baculum/examples/rpm-template/baculum.spec @@ -1,17 +1,16 @@ %global langs en pl %global destdir build +%global metaname baculum -Summary: WebGUI tool for Bacula Community program +Summary: API layer to Baculum WebGUI tool for Bacula Community program Name: baculum -Version: 7.2.0 -Release: 0%{?dist} +Version: 9.0.0 +Release: 1%{?dist} License: AGPLv3 Group: Applications/Internet URL: http://bacula.org/ -Source0: bacula-gui-7.2.0.tar.gz +Source0: bacula-gui-9.0.0.tar.gz BuildRequires: systemd-units -BuildRequires: selinux-policy -BuildRequires: selinux-policy-devel BuildRequires: checkpolicy Requires: bacula-console # Lower version of PHP ( < 5.3.4) does not provide php-mysqlnd db driver @@ -29,24 +28,54 @@ BuildArch: noarch %description The Baculum program allows the user to administer and manage Bacula jobs. By using Baculum it is possible to execute backup/restore operations, monitor -current Bacula jobs, media management and others. Baculum has integrated web -console that communicates with Bacula bconsole program. +current Bacula jobs, configure Bacula, media management and others. Baculum has +integrated web console that communicates with Bacula bconsole program. -%package selinux -Summary: SELinux module for Baculum WebGUI tool -Requires: %name = %version-%release +%package common +Summary: Common libraries for Baculum Group: Applications/Internet -Requires(post): policycoreutils-python -Requires(preun): policycoreutils-python -%description selinux -This package provides an SELinux module for Baculum WebGUI tool. -You should install this package if you are using SELinux, that Baculum -can be run in enforcing mode. +%description common +This package provides the common libraries for Baculum. +This module is a part of Baculum. -%package httpd -Summary: Apache configuration for Baculum WebGUI tool -Requires: %name = %version-%release +%package api +Summary: Baculum API files +Requires: %name-common = %version-%release +Group: Applications/Internet +Requires: bacula-console +# Lower version of PHP ( < 5.3.4) does not provide php-mysqlnd db driver +# and from this reason the lowest is 5.3.4 +Requires: php >= 5.3.4 +Requires: php-bcmath +Requires: php-common +Requires: php-mysqlnd +Requires: php-pdo +Requires: php-pgsql +Requires: php-xml + +%description api +This package provides the API files for Baculum. +This module is a part of Baculum. + +%package web +Summary: Baculum API files +Requires: %name-common = %version-%release +Group: Applications/Internet +# Lower version of PHP ( < 5.3.4) does not provide php-mysqlnd db driver +# and from this reason the lowest is 5.3.4 +Requires: php >= 5.3.4 +Requires: php-common +Requires: php-mbstring +Requires: php-xml + +%description web +This package provides the Web files for Baculum. +This module is a part of Baculum. + +%package api-httpd +Summary: Apache configuration for Baculum API +Requires: %name-api = %version-%release Group: Applications/Internet Requires: httpd # This conflict field is required because Lighttpd and Apache @@ -54,15 +83,15 @@ Requires: httpd # ports cause problems like shared framework cache and # web server specific directories permissions (for lighttpd and apache # users). -Conflicts: %{name}-lighttpd +Conflicts: %{name}-api-lighttpd, %{name}-web-lighttpd -%description httpd -This package provides the Apache configuration for Baculum WebGUI tool. -By using this module it is possible to run Baculum in Apache environment. +%description api-httpd +This package provides the Apache configuration for Baculum API. +By using this module it is possible to run Baculum API in Apache environment. -%package lighttpd -Summary: Lighttpd configuration for Baculum WebGUI tool -Requires: %name = %version-%release +%package api-lighttpd +Summary: Lighttpd configuration for Baculum API +Requires: %name-api = %version-%release Group: Applications/Internet Requires: lighttpd Requires: lighttpd-fastcgi @@ -71,11 +100,44 @@ Requires: lighttpd-fastcgi # ports cause problems like shared framework cache and # web server specific directories permissions (for lighttpd and apache # users). -Conflicts: %{name}-httpd +Conflicts: %{name}-api-httpd, %{name}-web-httpd -%description lighttpd -This package provides the Lighttpd configuration for Baculum WebGUI tool. -By using this module it is possible to run Baculum in Lighttpd environment. +%description api-lighttpd +This package provides the Lighttpd configuration for Baculum API. +By using this module it is possible to run Baculum API in Lighttpd environment. + +%package web-httpd +Summary: Apache configuration for Baculum WebGUI +Requires: %name-web = %version-%release +Group: Applications/Internet +Requires: httpd +# This conflict field is required because Lighttpd and Apache +# cannot listen on the same port at the same time. Even using diffeernt +# ports cause problems like shared framework cache and +# web server specific directories permissions (for lighttpd and apache +# users). +Conflicts: %{name}-web-lighttpd, %{name}-api-lighttpd + +%description web-httpd +This package provides the Apache configuration for Baculum WebGUI. +By using this module it is possible to run Baculum WebGUI in Apache environment. + +%package web-lighttpd +Summary: Lighttpd configuration for Baculum WebGUI +Requires: %name-web = %version-%release +Group: Applications/Internet +Requires: lighttpd +Requires: lighttpd-fastcgi +# This conflict field is required because Lighttpd and Apache +# cannot listen on the same port at the same time. Even using diffeernt +# ports cause problems like shared framework cache and +# web server specific directories permissions (for lighttpd and apache +# users). +Conflicts: %{name}-web-httpd, %{name}-api-httpd + +%description web-lighttpd +This package provides the Lighttpd configuration for Baculum WebGUI. +By using this module it is possible to run Baculum WebGUI in Lighttpd environment. %prep %setup -n bacula-gui-%version/baculum @@ -83,168 +145,231 @@ By using this module it is possible to run Baculum in Lighttpd environment. %build # Execute files preparation in build directory by Makefile make build DESTDIR=%{destdir} -# Compilation SELinuxu policies before loading them -make -C examples/selinux/ -f %{_datadir}/selinux/devel/Makefile %{name}.pp # Remove these cache directories, because here will be symbolic links -rmdir %{destdir}/%{_datadir}/%{name}/htdocs/assets -rmdir %{destdir}/%{_datadir}/%{name}/htdocs/protected/runtime +rmdir %{destdir}/%{_datadir}/%{metaname}/htdocs/assets +rmdir %{destdir}/%{_datadir}/%{metaname}/htdocs/protected/runtime for lang in %{langs}; do - rm %{destdir}/%{_datadir}/%{name}/htdocs/protected/Lang/${lang}/messages.mo + rm %{destdir}/%{_datadir}/%{metaname}/htdocs/protected/API/Lang/${lang}/messages.mo + rm %{destdir}/%{_datadir}/%{metaname}/htdocs/protected/Web/Lang/${lang}/messages.mo done %install cp -ra build/. %{buildroot} -%find_lang %{name} --all-name -install -m 644 examples/selinux/%{name}.pp %{buildroot}%{_datadir}/selinux/packages/%{name}/ +%find_lang %{metaname} --all-name -%post +%post common # these symbolic links indicates to Baculum's cache directory -ln -s %{_localstatedir}/cache/%{name} %{_datadir}/%{name}/htdocs/assets -ln -s %{_localstatedir}/cache/%{name} %{_datadir}/%{name}/htdocs/protected/runtime +ln -s %{_localstatedir}/cache/%{metaname} %{_datadir}/%{metaname}/htdocs/assets +ln -s %{_localstatedir}/cache/%{metaname} %{_datadir}/%{metaname}/htdocs/protected/runtime + +%post api # because framework does not use system locale dir, here are linked # locale files to framework location for lang in %{langs}; do - ln -s %{_datadir}/locale/${lang}/LC_MESSAGES/%{name}.mo \ - %{_datadir}/%{name}/htdocs/protected/Lang/${lang}/messages.mo + ln -s %{_datadir}/locale/${lang}/LC_MESSAGES/%{metaname}-api.mo \ + %{_datadir}/%{metaname}/htdocs/protected/API/Lang/${lang}/messages.mo done -%post selinux -if [ $1 -le 1 ] ; then - # Write access is possible for web servers user only to two directories - # - Data/ directory stores settings and web server HTTP Basic credentials - # - /var/cache/baculum - cache used by framework in specific locations (assets/ and protected/runtime/) - # by symbolic links to cache directory - semanage fcontext -a -t httpd_sys_rw_content_t '%{_datadir}/%{name}/htdocs/protected/Data(/.*)?' 2>/dev/null || : - restorecon -i -R '%{_datadir}/%{name}/htdocs/protected/Data' || : - semanage fcontext -a -t httpd_cache_t '%{_localstatedir}/cache/%{name}(/.*)?' 2>/dev/null || : - restorecon -i -R %{_localstatedir}/cache/%{name} || : - semodule -i %{_datadir}/selinux/packages/%{name}/%{name}.pp 2>/dev/null || : -fi +%post web +# because framework does not use system locale dir, here are linked +# locale files to framework location +for lang in %{langs}; do + ln -s %{_datadir}/locale/${lang}/LC_MESSAGES/%{metaname}-web.mo \ + %{_datadir}/%{metaname}/htdocs/protected/Web/Lang/${lang}/messages.mo +done -%post httpd +%post api-httpd %systemd_post httpd.service -ln -s %{_sysconfdir}/%{name}/Data-apache %{_datadir}/%{name}/htdocs/protected/Data +ln -s %{_sysconfdir}/%{metaname}/Config-api-apache %{_datadir}/%{metaname}/htdocs/protected/API/Config + +%post api-lighttpd +%systemd_post baculum-api-lighttpd.service +ln -s %{_sysconfdir}/%{metaname}/Config-api-lighttpd %{_datadir}/%{metaname}/htdocs/protected/API/Config + +%post web-httpd +%systemd_post httpd.service +ln -s %{_sysconfdir}/%{metaname}/Config-web-apache %{_datadir}/%{metaname}/htdocs/protected/Web/Config + +%post web-lighttpd +%systemd_post baculum-web-lighttpd.service +ln -s %{_sysconfdir}/%{metaname}/Config-web-lighttpd %{_datadir}/%{metaname}/htdocs/protected/Web/Config -%post lighttpd -%systemd_post baculum-lighttpd.service -ln -s %{_sysconfdir}/%{name}/Data-lighttpd %{_datadir}/%{name}/htdocs/protected/Data +%preun common +rm %{_datadir}/%{metaname}/htdocs/assets +rm %{_datadir}/%{metaname}/htdocs/protected/runtime -%preun +%preun api for lang in %{langs}; do - rm %{_datadir}/%{name}/htdocs/protected/Lang/${lang}/messages.mo + rm %{_datadir}/%{metaname}/htdocs/protected/API/Lang/${lang}/messages.mo done -rm %{_datadir}/%{name}/htdocs/assets -rm %{_datadir}/%{name}/htdocs/protected/runtime +%preun web +for lang in %{langs}; do + rm %{_datadir}/%{metaname}/htdocs/protected/Web/Lang/${lang}/messages.mo +done -%preun httpd +%preun api-httpd %systemd_preun httpd.service if [ $1 -lt 1 ] ; then # Rename settings if exist. # Note, 'config' macro cannot be used because this file is created after successful # installation via wizard. Also using 'config' macro to /usr location strictly forbidden # by Packaging Guidelines. - [ ! -e %{_datadir}/%{name}/htdocs/protected/Data/settings.conf ] || - mv %{_datadir}/%{name}/htdocs/protected/Data/settings.conf \ - %{_datadir}/%{name}/htdocs/protected/Data/settings.conf.apache + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/API/Config/api.conf ] || + mv %{_datadir}/%{metaname}/htdocs/protected/API/Config/api.conf \ + %{_datadir}/%{metaname}/htdocs/protected/API/Config/api.conf.apache # remove debug files if any - [ ! -e %{_datadir}/%{name}/htdocs/protected/Data/baculum.dbg ] || - rm %{_datadir}/%{name}/htdocs/protected/Data/baculum*.dbg - rm %{_datadir}/%{name}/htdocs/protected/Data + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/API/Logs/baculum-api.log ] || + rm %{_datadir}/%{metaname}/htdocs/protected/API/Logs/baculum-api*.log + rm %{_datadir}/%{metaname}/htdocs/protected/API/Config +fi +%preun web-httpd +%systemd_preun httpd.service +if [ $1 -lt 1 ] ; then + # Rename settings if exist. + # Note, 'config' macro cannot be used because this file is created after successful + # installation via wizard. Also using 'config' macro to /usr location strictly forbidden + # by Packaging Guidelines. + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/Web/Config/settings.conf ] || + mv %{_datadir}/%{metaname}/htdocs/protected/Web/Config/settings.conf \ + %{_datadir}/%{metaname}/htdocs/protected/Web/Config/settings.conf.apache + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/Web/Config/hosts.conf ] || + mv %{_datadir}/%{metaname}/htdocs/protected/Web/Config/hosts.conf \ + %{_datadir}/%{metaname}/htdocs/protected/Web/Config/hosts.conf.apache + # remove debug files if any + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/Web/Logs/baculum-web.log ] || + rm %{_datadir}/%{metaname}/htdocs/protected/Web/Logs/baculum-web*.log + rm %{_datadir}/%{metaname}/htdocs/protected/Web/Config fi -%preun lighttpd -%systemd_preun baculum-lighttpd.service +%preun api-lighttpd +%systemd_preun baculum-api-lighttpd.service if [ $1 -lt 1 ] ; then + # stop api service + /sbin/service baculum-api-lighttpd stop &>/dev/null || : # Rename settings if exist. # Note, 'config' macro cannot be used because this file is created after successful # installation via wizard. Also using 'config' macro to /usr location strictly forbidden # by Packaging Guidelines. - [ ! -e %{_datadir}/%{name}/htdocs/protected/Data/settings.conf ] || - mv %{_datadir}/%{name}/htdocs/protected/Data/settings.conf \ - %{_datadir}/%{name}/htdocs/protected/Data/settings.conf.lighttpd + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/API/Config/api.conf ] || + mv %{_datadir}/%{metaname}/htdocs/protected/API/Config/api.conf \ + %{_datadir}/%{metaname}/htdocs/protected/API/Config/api.conf.lighttpd # remove debug files if any - [ ! -e %{_datadir}/%{name}/htdocs/protected/Data/baculum.dbg ] || - rm %{_datadir}/%{name}/htdocs/protected/Data/baculum*.dbg - rm %{_datadir}/%{name}/htdocs/protected/Data + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/API/Logs/baculum-api.log ] || + rm %{_datadir}/%{metaname}/htdocs/protected/API/Logs/baculum-api*.log + rm %{_datadir}/%{metaname}/htdocs/protected/API/Config fi -%postun selinux -if [ $1 -eq 0 ] ; then - semanage fcontext -d -t httpd_sys_rw_content_t '%{_datadir}/%{name}/htdocs/protected/Data(/.*)?' 2>/dev/null || : - semanage fcontext -d -t httpd_cache_t '%{_localstatedir}/cache/%{name}(/.*)?' 2>/dev/null || : - semodule -r %{name} 2>/dev/null || : +%preun web-lighttpd +%systemd_preun baculum-web-lighttpd.service +if [ $1 -lt 1 ] ; then + # stop web service + /sbin/service baculum-web-lighttpd stop &>/dev/null || : + # Rename settings if exist. + # Note, 'config' macro cannot be used because this file is created after successful + # installation via wizard. Also using 'config' macro to /usr location strictly forbidden + # by Packaging Guidelines. + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/Web/Config/settings.conf ] || + mv %{_datadir}/%{metaname}/htdocs/protected/Web/Config/settings.conf \ + %{_datadir}/%{metaname}/htdocs/protected/Web/Config/settings.conf.lighttpd + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/Web/Config/hosts.conf ] || + mv %{_datadir}/%{metaname}/htdocs/protected/Web/Config/hosts.conf \ + %{_datadir}/%{metaname}/htdocs/protected/Web/Config/hosts.conf.lighttpd + # remove debug files if any + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/Web/Logs/baculum-web.log ] || + rm %{_datadir}/%{metaname}/htdocs/protected/Web/Logs/baculum-web*.log + rm %{_datadir}/%{metaname}/htdocs/protected/Web/Config fi -%postun httpd +%postun api-httpd +%systemd_postun_with_restart httpd.service + +%postun web-httpd %systemd_postun_with_restart httpd.service -%postun lighttpd -%systemd_postun_with_restart baculum-lighttpd.service +%postun api-lighttpd +%systemd_postun_with_restart baculum-api-lighttpd.service -%files -f %{name}.lang +%postun web-lighttpd +%systemd_postun_with_restart baculum-web-lighttpd.service + +%files -f %{metaname}.lang common %defattr(-,root,root) -# directory excluded here, because it needs to be provided -# with selected web server privileges (lighttpd or apache) -%exclude %{_datadir}/%{name}/htdocs/protected/Data -%{_datadir}/%{name} +%{_datadir}/%{metaname}/htdocs/protected/Common +%{_datadir}/%{metaname}/htdocs/protected/application.xml +%{_datadir}/%{metaname}/htdocs/framework +%{_datadir}/%{metaname}/htdocs/themes +%{_datadir}/%{metaname}/htdocs/LICENSE +%{_datadir}/%{metaname}/htdocs/AUTHORS +%{_datadir}/%{metaname}/htdocs/README +%{_datadir}/%{metaname}/htdocs/INSTALL +%{_datadir}/%{metaname}/htdocs/index.php %license LICENSE %doc AUTHORS README -%files selinux + +%files api +%defattr(-,root,root) +# directory excluded here, because it needs to be provided +# with selected web server privileges (lighttpd or apache) +%exclude %{_datadir}/%{metaname}/htdocs/protected/API/Config +%exclude %{_datadir}/%{metaname}/htdocs/protected/API/Logs +%{_datadir}/%{metaname}/htdocs/protected/API + +%files web %defattr(-,root,root) -%{_datadir}/selinux/packages/%{name}/%{name}.pp +# directory excluded here, because it needs to be provided +# with selected web server privileges (lighttpd or apache) +%exclude %{_datadir}/%{metaname}/htdocs/protected/Web/Config +%exclude %{_datadir}/%{metaname}/htdocs/protected/Web/Logs +%{_datadir}/%{metaname}/htdocs/protected/Web -%files httpd + +%files api-httpd %defattr(644,root,root) +# directory excluded here, because it needs to be provided +# with selected web server privileges (lighttpd or apache) +%exclude %{_datadir}/%{metaname}/htdocs/protected/API/Config # Apache logs are stored in /var/log/httpd/ -%config(noreplace) %{_sysconfdir}/httpd/conf.d/%{name}.conf -%attr(755,apache,apache) %{_localstatedir}/cache/%{name}/ -%attr(700,apache,apache) %{_sysconfdir}/%{name}/Data-apache/ -%attr(600,apache,apache) %{_sysconfdir}/%{name}/Data-apache/%{name}.users +%config(noreplace) %{_sysconfdir}/httpd/conf.d/%{metaname}-api.conf +%attr(755,apache,apache) %{_localstatedir}/cache/%{metaname}/ +%attr(700,apache,apache) %{_sysconfdir}/%{metaname}/Config-api-apache/ +%attr(600,apache,apache) %{_sysconfdir}/%{metaname}/Config-api-apache/%{metaname}.users +%attr(755,apache,apache) %{_datadir}/%{metaname}/htdocs/protected/API/Logs + +%files web-httpd +%defattr(644,root,root) +# directory excluded here, because it needs to be provided +# with selected web server privileges (lighttpd or apache) +%exclude %{_datadir}/%{metaname}/htdocs/protected/Web/Config +# Apache logs are stored in /var/log/httpd/ +%config(noreplace) %{_sysconfdir}/httpd/conf.d/%{metaname}-web.conf +%attr(755,apache,apache) %{_localstatedir}/cache/%{metaname}/ +%attr(700,apache,apache) %{_sysconfdir}/%{metaname}/Config-web-apache/ +%attr(600,apache,apache) %{_sysconfdir}/%{metaname}/Config-web-apache/%{metaname}.users +%attr(755,apache,apache) %{_datadir}/%{metaname}/htdocs/protected/Web/Logs + +%files api-lighttpd +%defattr(644,root,root) +# Lighttpd logs are stored in /var/log/lighttpd +%attr(755,lighttpd,lighttpd) %{_localstatedir}/cache/%{metaname}/ +%attr(700,lighttpd,lighttpd) %{_sysconfdir}/%{metaname}/Config-api-lighttpd/ +%attr(600,lighttpd,lighttpd) %{_sysconfdir}/%{metaname}/Config-api-lighttpd/%{metaname}.users +%attr(755,lighttpd,lighttpd) %{_datadir}/%{metaname}/htdocs/protected/API/Logs +%{_unitdir}/%{metaname}-api-lighttpd.service +%config(noreplace) %{_sysconfdir}/%{metaname}/%{metaname}-api-lighttpd.conf -%files lighttpd +%files web-lighttpd %defattr(644,root,root) # Lighttpd logs are stored in /var/log/lighttpd -%attr(755,lighttpd,lighttpd) %{_localstatedir}/cache/%{name}/ -%attr(700,lighttpd,lighttpd) %{_sysconfdir}/%{name}/Data-lighttpd -%attr(600,lighttpd,lighttpd) %{_sysconfdir}/%{name}/Data-lighttpd/%{name}.users -%{_unitdir}/%{name}-lighttpd.service -%config(noreplace) %{_sysconfdir}/%{name}/%{name}-lighttpd.conf +%attr(755,lighttpd,lighttpd) %{_localstatedir}/cache/%{metaname}/ +%attr(700,lighttpd,lighttpd) %{_sysconfdir}/%{metaname}/Config-web-lighttpd/ +%attr(600,lighttpd,lighttpd) %{_sysconfdir}/%{metaname}/Config-web-lighttpd/%{metaname}.users +%attr(755,lighttpd,lighttpd) %{_datadir}/%{metaname}/htdocs/protected/Web/Logs +%{_unitdir}/%{metaname}-web-lighttpd.service +%config(noreplace) %{_sysconfdir}/%{metaname}/%{metaname}-web-lighttpd.conf %changelog - * Tue Dec 15 2015 Marcin Haba - 7.2.0 - - Add creating and removing Data/ directory symbolic link - - Match locations to bacula-gui directories structure - * Sat Jul 18 2015 Marcin Haba - 7.0.6-0.5.b - - Change baculum.users and Data/ directory permissions to more - restrictive - - Add noreplace param to Lighttpd config file - - Add systemd macros for httpd subpackage - - Fix systemd action in post section - - Move DESTDIR target and languages to global variables - - Do not remove settings file when a web server specific package - is removed (used move action) - - Drop storing Lighttpd logs in separate logs directory - - Define locale files - * Fri Jul 17 2015 Marcin Haba - 7.0.6-0.4.b - - Remove source files: baculum.users, baculum-apache.conf - baculum-lighttpd.conf and baculum-lighttpd.service - - Use reorganized upstream Makefile - * Tue Jul 14 2015 Marcin Haba - 7.0.6-0.3.b - - Separate to subpackage Lighttpd support - - Add Apache subpackage - - Use upstream Makefile to prepare build files - - Cache symlbolic links only in install section - - Add comments to Spec - - Compile SELinux policies instead of install pre-compiled - - Add source files: baculum.users, baculum-apache.conf - baculum-lighttpd.conf and baculum-lighttpd.service - - Change Source0 URL - * Mon Jul 13 2015 Marcin Haba - 7.0.6-0.2.b - - Remove chkconfig and service dependencies from Spec - - Change Spec sections order - - Correct package description typos and errors - * Mon Jul 06 2015 Marcin Haba - 7.0.6-0.1.b + * Sat Dec 10 2016 Marcin Haba - 7.5.0-0.1 - Spec create diff --git a/gui/baculum/examples/rpm/baculum-apache.conf b/gui/baculum/examples/rpm/baculum-apache.conf deleted file mode 100644 index 24a0b25b64..0000000000 --- a/gui/baculum/examples/rpm/baculum-apache.conf +++ /dev/null @@ -1,15 +0,0 @@ -Listen 9095 - - - DocumentRoot /usr/share/baculum/htdocs - ServerName localhost - CustomLog /var/log/httpd/baculum-access.log combined - ErrorLog /var/log/httpd/baculum-error.log - - AllowOverride All - AuthType Basic - AuthName "Baculum Auth" - AuthUserFile /usr/share/baculum/htdocs/protected/Data/baculum.users - Require valid-user - - \ No newline at end of file diff --git a/gui/baculum/examples/rpm/baculum-api-apache.conf b/gui/baculum/examples/rpm/baculum-api-apache.conf new file mode 100644 index 0000000000..44b1640e33 --- /dev/null +++ b/gui/baculum/examples/rpm/baculum-api-apache.conf @@ -0,0 +1,62 @@ +Listen 9096 + + + DocumentRoot /usr/share/baculum/htdocs + ServerName localhost + CustomLog /var/log/httpd/baculum-api-access.log combined + ErrorLog /var/log/httpd/baculum-api-error.log + # + # NOTE: To enable encrypted connection please prepare cert files and + # then uncomment SSL lines below + # + #SSLEngine on + #SSLCertificateFile /etc/baculum/Config-api-apache/baculum.crt + #SSLCertificateKeyFile /etc/baculum/Config-api-apache/baculum.pem + + Options +FollowSymLinks + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^(.+)$ index.php/$1 [L] + RedirectMatch ^/$ /api/?api + Require all granted + + # + # NOTE: When you use OAuth2 then change this location section + # From: + # To: + # + + AuthType Basic + AuthName "Baculum Auth" + AuthUserFile /usr/share/baculum/htdocs/protected/API/Config/baculum.users + Require valid-user + + + Order Deny,Allow + Deny from all + + + Order Deny,Allow + Deny from all + + + Order Deny,Allow + Deny from all + + + + mod_gzip_on Yes + mod_gzip_dechunk Yes + mod_gzip_item_include file \.js$ + mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* + + + ExpiresActive On + ExpiresDefault "access plus 864000 seconds" + + + Header set Cache-Control "max-age=864000, private" + + + diff --git a/gui/baculum/examples/rpm/baculum-api-lighttpd.conf b/gui/baculum/examples/rpm/baculum-api-lighttpd.conf new file mode 100644 index 0000000000..b09afd8d98 --- /dev/null +++ b/gui/baculum/examples/rpm/baculum-api-lighttpd.conf @@ -0,0 +1,117 @@ +# Baculum WebGUI tool for Bacula Community +# +# Web Server Configuration +# + +server.port = 9096 +server.username = "lighttpd" +server.groupname = "lighttpd" +server.document-root = "/usr/share/baculum/htdocs" +server.errorlog = "/var/log/lighttpd/baculum-api-error.log" +accesslog.filename = "/var/log/lighttpd/baculum-api-access.log" +server.pid-file = "/var/run/baculum-api.pid" + +# +# NOTE: To enable encrypted connection please prepare cert files and +# then uncomment SSL lines below +# +#ssl.engine = "enable" +#ssl.pemfile = "/etc/baculum/Config-api-lighttpd/baculum.pem" +#ssl.ca-file = "/etc/baculum/Config-api-lighttpd/baculum.crt" + +server.modules = ( + "mod_auth", + "mod_alias", + "mod_rewrite", + "mod_setenv", + "mod_fastcgi", + "mod_access", + "mod_accesslog" +) + +# +# Uncomment this line and closing braces below when you use OAuth2 +# +# $HTTP["url"] =~ "^/web/page/.*$" { + auth.backend = "htpasswd" + auth.backend.htpasswd.userfile = "/usr/share/baculum/htdocs/protected/API/Config/baculum.users" + auth.require = ( "/" => ( + "method" => "basic", + "realm" => "Baculum Auth", + "require" => "valid-user" + ) + ) +# } + +index-file.names = ( "index.php" ) + +static-file.exclude-extensions = ( ".php" ) + +dir-listing.encoding = "utf-8" + +mimetype.assign = ( + ".html" => "text/html", + ".gif" => "image/gif", + ".png" => "image/png", + ".ico" => "image/x-icon", + ".css" => "text/css", + ".js" => "application/javascript" +) + +alias.url = ( + "/" => "/usr/share/baculum/htdocs/" +) + +fastcgi.server = ( + ".php"=> ( + ( + "bin-path"=>"/usr/bin/php-cgi", + "socket"=>"/tmp/php.sock", + "max-procs" => 1, + "bin-environment" => ( + "PHP_FCGI_CHILDREN" => "4", + "PHP_FCGI_MAX_REQUESTS" => "10000" + ), + "bin-copy-environment" => ( + "PATH", + "SHELL", + "USER" + ), + "broken-scriptfilename" => "enable" + ) + ) +) + +url.rewrite-once = ( + "^/themes/(.+)$" => "/themes/$1", + "^/assets/(.+)$" => "/assets/$1", + "^/$" => "/index.php/api/page/home/", + "^/(.+)$" => "/index.php/$1" +) + +url.access-deny = ( + "^/usr/share/baculum/htdocs/protected/", + "^/usr/share/baculum/htdocs/framework/", + + # Wsat is not used by Baculum. Added here for not storing + # framework Apache specific .htaccess files + "^/usr/share/baculum/htdocs/framework/Wsat/themes/" +) + +### Enable compressing dynamic content ### + +# disable mod_compress when request a php file +$HTTP["url"] !~ "\.php$" { + compress.filetype = ( + "text/plain", + "text/html", + "text/javascript", + "text/css", + "text/xml" + ) +} + +# enable mod_setenv for framework source files: +$HTTP["url"] =~ "^/usr/share/baculum/htdocs/framework/Web/Javascripts/source/" { + setenv.add-response-header = ("Content-Encoding" => "gzip") +} diff --git a/gui/baculum/examples/rpm/baculum-api-lighttpd.service b/gui/baculum/examples/rpm/baculum-api-lighttpd.service new file mode 100644 index 0000000000..46a0d3e472 --- /dev/null +++ b/gui/baculum/examples/rpm/baculum-api-lighttpd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Baculum API Bacula Community tool +After=network.target + +[Service] +PIDFile=/var/run/baculum-api.pid +ExecStart=/usr/sbin/lighttpd -f /etc/baculum/baculum-api-lighttpd.conf + +[Install] +WantedBy=multi-user.target + diff --git a/gui/baculum/examples/rpm/baculum-lighttpd.conf b/gui/baculum/examples/rpm/baculum-lighttpd.conf deleted file mode 100644 index 27af6834d2..0000000000 --- a/gui/baculum/examples/rpm/baculum-lighttpd.conf +++ /dev/null @@ -1,67 +0,0 @@ -# Baculum WebGUI tool for Bacula Community -# -# Web Server Configuration -# - -server.port = 9095 -server.username = "lighttpd" -server.groupname = "lighttpd" -server.document-root = "/usr/share/baculum/htdocs" -server.errorlog = "/var/log/baculum/baculum-error.log" -accesslog.filename = "/var/log/baculum/baculum-access.log" -server.pid-file = "/var/run/baculum.pid" - -server.modules = ( - "mod_auth", - "mod_alias", - "mod_rewrite", - "mod_fastcgi", - "mod_accesslog" -) - -auth.backend = "htpasswd" -auth.backend.htpasswd.userfile = "/usr/share/baculum/htdocs/protected/Data/baculum.users" -auth.require = ( "/" => ( - "method" => "basic", - "realm" => "Baculum Auth", - "require" => "valid-user" -)) - -index-file.names = ( "index.php" ) - -static-file.exclude-extensions = ( ".php" ) - -dir-listing.encoding = "utf-8" - -mimetype.assign = ( - ".html" => "text/html", - ".gif" => "image/gif", - ".png" => "image/png", - ".ico" => "image/x-icon", - ".css" => "text/css", - ".js" => "application/javascript", -) - -alias.url = ( - "/" => "/usr/share/baculum/htdocs/" -) - -fastcgi.server = (".php"=>(( - "bin-path"=>"/usr/bin/php-cgi", - "socket"=>"/tmp/php.sock", - "max-procs" => 1, - "bin-environment" => ( - "PHP_FCGI_CHILDREN" => "4", - "PHP_FCGI_MAX_REQUESTS" => "10000" - ), - "bin-copy-environment" => ( - "PATH", "SHELL", "USER" - ), - "broken-scriptfilename" => "enable" -))) - -url.rewrite-once = ( - "^/themes/(.+)$" => "/themes/$1", - "^/assets/(.+)$" => "/assets/$1", - "^/(.+)$" => "/index.php/$1" -) diff --git a/gui/baculum/examples/deb/baculum-apache.conf b/gui/baculum/examples/rpm/baculum-web-apache.conf similarity index 64% rename from gui/baculum/examples/deb/baculum-apache.conf rename to gui/baculum/examples/rpm/baculum-web-apache.conf index 0d7473bc51..71c385ba2d 100644 --- a/gui/baculum/examples/deb/baculum-apache.conf +++ b/gui/baculum/examples/rpm/baculum-web-apache.conf @@ -3,19 +3,37 @@ Listen 9095 DocumentRoot /usr/share/baculum/htdocs ServerName localhost - CustomLog /var/log/apache2/baculum-access.log combined - ErrorLog /var/log/apache2/baculum-error.log + CustomLog /var/log/httpd/baculum-web-access.log combined + ErrorLog /var/log/httpd/baculum-web-error.log + # + # NOTE: To enable encrypted connection please prepare cert files and + # then uncomment SSL lines below + # + #SSLEngine on + #SSLCertificateFile /etc/baculum/Config-web-apache/baculum.crt + #SSLCertificateKeyFile /etc/baculum/Config-web-apache/baculum.pem Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [L] + RedirectMatch ^/$ /web/ + + + SetEnvIf Request_URI "^/web/redirect$" noauth=1 + AuthType Basic AuthName "Baculum Auth" - AuthUserFile /usr/share/baculum/htdocs/protected/Data/baculum.users + AuthUserFile /usr/share/baculum/htdocs/protected/Web/Config/baculum.users + + Order Deny,Allow + Satisfy Any + Deny from all Require valid-user - + Allow from env=noauth + Allow from env=REDIRECT_noauth + Order Deny,Allow Deny from all diff --git a/gui/baculum/examples/rpm/baculum-web-lighttpd.conf b/gui/baculum/examples/rpm/baculum-web-lighttpd.conf new file mode 100644 index 0000000000..0dbb36c103 --- /dev/null +++ b/gui/baculum/examples/rpm/baculum-web-lighttpd.conf @@ -0,0 +1,114 @@ +# Baculum WebGUI tool for Bacula Community +# +# Web Server Configuration +# + +server.port = 9095 +server.username = "lighttpd" +server.groupname = "lighttpd" +server.document-root = "/usr/share/baculum/htdocs" +server.errorlog = "/var/log/lighttpd/baculum-web-error.log" +accesslog.filename = "/var/log/lighttpd/baculum-web-access.log" +server.pid-file = "/var/run/baculum-web.pid" + +# +# NOTE: To enable encrypted connection please prepare cert files and +# then uncomment SSL lines below +# +#ssl.engine = "enable" +#ssl.pemfile = "/etc/baculum/Config-web-lighttpd/baculum.pem" +#ssl.ca-file = "/etc/baculum/Config-web-lighttpd/baculum.crt" + +server.modules = ( + "mod_auth", + "mod_alias", + "mod_rewrite", + "mod_setenv", + "mod_fastcgi", + "mod_access", + "mod_accesslog" +) + +$HTTP["url"] !~ "/web/redirect$" { + auth.backend = "htpasswd" + auth.backend.htpasswd.userfile = "/usr/share/baculum/htdocs/protected/Web/Config/baculum.users" + auth.require = ( "" => ( + "method" => "basic", + "realm" => "Baculum Auth", + "require" => "valid-user" + ) + ) +} + +index-file.names = ( "index.php" ) + +static-file.exclude-extensions = ( ".php" ) + +dir-listing.encoding = "utf-8" + +mimetype.assign = ( + ".html" => "text/html", + ".gif" => "image/gif", + ".png" => "image/png", + ".ico" => "image/x-icon", + ".css" => "text/css", + ".js" => "application/javascript" +) + +alias.url = ( + "/" => "/usr/share/baculum/htdocs/" +) + +fastcgi.server = ( + ".php"=> ( + ( + "bin-path"=>"/usr/bin/php-cgi", + "socket"=>"/tmp/php.sock", + "max-procs" => 1, + "bin-environment" => ( + "PHP_FCGI_CHILDREN" => "4", + "PHP_FCGI_MAX_REQUESTS" => "10000" + ), + "bin-copy-environment" => ( + "PATH", + "SHELL", + "USER" + ), + "broken-scriptfilename" => "enable" + ) + ) +) + +url.rewrite-once = ( + "^/themes/(.+)$" => "/themes/$1", + "^/assets/(.+)$" => "/assets/$1", + "^/$" => "/index.php?web", + "^/(.+)$" => "/index.php/$1" +) + +url.access-deny = ( + "^/usr/share/baculum/htdocs/protected/", + "^/usr/share/baculum/htdocs/framework/", + + # Wsat is not used by Baculum. Added here for not storing + # framework Apache specific .htaccess files + "^/usr/share/baculum/htdocs/framework/Wsat/themes/" +) + +### Enable compressing dynamic content ### + +# disable mod_compress when request a php file +$HTTP["url"] !~ "\.php$" { + compress.filetype = ( + "text/plain", + "text/html", + "text/javascript", + "text/css", + "text/xml" + ) +} + +# enable mod_setenv for framework source files: +$HTTP["url"] =~ "^/usr/share/baculum/htdocs/framework/Web/Javascripts/source/" { + setenv.add-response-header = ("Content-Encoding" => "gzip") +} diff --git a/gui/baculum/examples/rpm/baculum-web-lighttpd.service b/gui/baculum/examples/rpm/baculum-web-lighttpd.service new file mode 100644 index 0000000000..7b448d9bef --- /dev/null +++ b/gui/baculum/examples/rpm/baculum-web-lighttpd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Baculum WebGUI Bacula Community tool +After=network.target + +[Service] +PIDFile=/var/run/baculum-web.pid +ExecStart=/usr/sbin/lighttpd -f /etc/baculum/baculum-web-lighttpd.conf + +[Install] +WantedBy=multi-user.target + diff --git a/gui/baculum/examples/rpm/baculum.spec b/gui/baculum/examples/rpm/baculum.spec index ed44b79889..afe4b4d08c 100644 --- a/gui/baculum/examples/rpm/baculum.spec +++ b/gui/baculum/examples/rpm/baculum.spec @@ -1,17 +1,16 @@ %global langs en pl %global destdir build +%global metaname baculum -Summary: WebGUI tool for Bacula Community program +Summary: API layer to Baculum WebGUI tool for Bacula Community program Name: baculum -Version: 7.2.0 -Release: 0%{?dist} +Version: 7.9.0 +Release: 1%{?dist} License: AGPLv3 Group: Applications/Internet URL: http://bacula.org/ -Source0: bacula-gui-7.2.0.tar.gz +Source0: bacula-gui-7.9.0.tar.gz BuildRequires: systemd-units -BuildRequires: selinux-policy -BuildRequires: selinux-policy-devel BuildRequires: checkpolicy Requires: bacula-console # Lower version of PHP ( < 5.3.4) does not provide php-mysqlnd db driver @@ -29,24 +28,54 @@ BuildArch: noarch %description The Baculum program allows the user to administer and manage Bacula jobs. By using Baculum it is possible to execute backup/restore operations, monitor -current Bacula jobs, media management and others. Baculum has integrated web -console that communicates with Bacula bconsole program. +current Bacula jobs, configure Bacula, media management and others. Baculum has +integrated web console that communicates with Bacula bconsole program. -%package selinux -Summary: SELinux module for Baculum WebGUI tool -Requires: %name = %version-%release +%package common +Summary: Common libraries for Baculum Group: Applications/Internet -Requires(post): policycoreutils-python -Requires(preun): policycoreutils-python -%description selinux -This package provides an SELinux module for Baculum WebGUI tool. -You should install this package if you are using SELinux, that Baculum -can be run in enforcing mode. +%description common +This package provides the common libraries for Baculum. +This module is a part of Baculum. -%package httpd -Summary: Apache configuration for Baculum WebGUI tool -Requires: %name = %version-%release +%package api +Summary: Baculum API files +Requires: %name-common = %version-%release +Group: Applications/Internet +Requires: bacula-console +# Lower version of PHP ( < 5.3.4) does not provide php-mysqlnd db driver +# and from this reason the lowest is 5.3.4 +Requires: php >= 5.3.4 +Requires: php-bcmath +Requires: php-common +Requires: php-mysqlnd +Requires: php-pdo +Requires: php-pgsql +Requires: php-xml + +%description api +This package provides the API files for Baculum. +This module is a part of Baculum. + +%package web +Summary: Baculum API files +Requires: %name-common = %version-%release +Group: Applications/Internet +# Lower version of PHP ( < 5.3.4) does not provide php-mysqlnd db driver +# and from this reason the lowest is 5.3.4 +Requires: php >= 5.3.4 +Requires: php-common +Requires: php-mbstring +Requires: php-xml + +%description web +This package provides the Web files for Baculum. +This module is a part of Baculum. + +%package api-httpd +Summary: Apache configuration for Baculum API +Requires: %name-api = %version-%release Group: Applications/Internet Requires: httpd # This conflict field is required because Lighttpd and Apache @@ -54,15 +83,15 @@ Requires: httpd # ports cause problems like shared framework cache and # web server specific directories permissions (for lighttpd and apache # users). -Conflicts: %{name}-lighttpd +Conflicts: %{name}-api-lighttpd, %{name}-web-lighttpd -%description httpd -This package provides the Apache configuration for Baculum WebGUI tool. -By using this module it is possible to run Baculum in Apache environment. +%description api-httpd +This package provides the Apache configuration for Baculum API. +By using this module it is possible to run Baculum API in Apache environment. -%package lighttpd -Summary: Lighttpd configuration for Baculum WebGUI tool -Requires: %name = %version-%release +%package api-lighttpd +Summary: Lighttpd configuration for Baculum API +Requires: %name-api = %version-%release Group: Applications/Internet Requires: lighttpd Requires: lighttpd-fastcgi @@ -71,11 +100,44 @@ Requires: lighttpd-fastcgi # ports cause problems like shared framework cache and # web server specific directories permissions (for lighttpd and apache # users). -Conflicts: %{name}-httpd +Conflicts: %{name}-api-httpd, %{name}-web-httpd -%description lighttpd -This package provides the Lighttpd configuration for Baculum WebGUI tool. -By using this module it is possible to run Baculum in Lighttpd environment. +%description api-lighttpd +This package provides the Lighttpd configuration for Baculum API. +By using this module it is possible to run Baculum API in Lighttpd environment. + +%package web-httpd +Summary: Apache configuration for Baculum WebGUI +Requires: %name-web = %version-%release +Group: Applications/Internet +Requires: httpd +# This conflict field is required because Lighttpd and Apache +# cannot listen on the same port at the same time. Even using diffeernt +# ports cause problems like shared framework cache and +# web server specific directories permissions (for lighttpd and apache +# users). +Conflicts: %{name}-web-lighttpd, %{name}-api-lighttpd + +%description web-httpd +This package provides the Apache configuration for Baculum WebGUI. +By using this module it is possible to run Baculum WebGUI in Apache environment. + +%package web-lighttpd +Summary: Lighttpd configuration for Baculum WebGUI +Requires: %name-web = %version-%release +Group: Applications/Internet +Requires: lighttpd +Requires: lighttpd-fastcgi +# This conflict field is required because Lighttpd and Apache +# cannot listen on the same port at the same time. Even using diffeernt +# ports cause problems like shared framework cache and +# web server specific directories permissions (for lighttpd and apache +# users). +Conflicts: %{name}-web-httpd, %{name}-api-httpd + +%description web-lighttpd +This package provides the Lighttpd configuration for Baculum WebGUI. +By using this module it is possible to run Baculum WebGUI in Lighttpd environment. %prep %setup -n bacula-gui-%version/baculum @@ -83,168 +145,231 @@ By using this module it is possible to run Baculum in Lighttpd environment. %build # Execute files preparation in build directory by Makefile make build DESTDIR=%{destdir} -# Compilation SELinuxu policies before loading them -make -C examples/selinux/ -f %{_datadir}/selinux/devel/Makefile %{name}.pp # Remove these cache directories, because here will be symbolic links -rmdir %{destdir}/%{_datadir}/%{name}/htdocs/assets -rmdir %{destdir}/%{_datadir}/%{name}/htdocs/protected/runtime +rmdir %{destdir}/%{_datadir}/%{metaname}/htdocs/assets +rmdir %{destdir}/%{_datadir}/%{metaname}/htdocs/protected/runtime for lang in %{langs}; do - rm %{destdir}/%{_datadir}/%{name}/htdocs/protected/Lang/${lang}/messages.mo + rm %{destdir}/%{_datadir}/%{metaname}/htdocs/protected/API/Lang/${lang}/messages.mo + rm %{destdir}/%{_datadir}/%{metaname}/htdocs/protected/Web/Lang/${lang}/messages.mo done %install cp -ra build/. %{buildroot} -%find_lang %{name} --all-name -install -m 644 examples/selinux/%{name}.pp %{buildroot}%{_datadir}/selinux/packages/%{name}/ +%find_lang %{metaname} --all-name -%post +%post common # these symbolic links indicates to Baculum's cache directory -ln -s %{_localstatedir}/cache/%{name} %{_datadir}/%{name}/htdocs/assets -ln -s %{_localstatedir}/cache/%{name} %{_datadir}/%{name}/htdocs/protected/runtime +ln -s %{_localstatedir}/cache/%{metaname} %{_datadir}/%{metaname}/htdocs/assets +ln -s %{_localstatedir}/cache/%{metaname} %{_datadir}/%{metaname}/htdocs/protected/runtime + +%post api # because framework does not use system locale dir, here are linked # locale files to framework location for lang in %{langs}; do - ln -s %{_datadir}/locale/${lang}/LC_MESSAGES/%{name}.mo \ - %{_datadir}/%{name}/htdocs/protected/Lang/${lang}/messages.mo + ln -s %{_datadir}/locale/${lang}/LC_MESSAGES/%{metaname}-api.mo \ + %{_datadir}/%{metaname}/htdocs/protected/API/Lang/${lang}/messages.mo done -%post selinux -if [ $1 -le 1 ] ; then - # Write access is possible for web servers user only to two directories - # - Data/ directory stores settings and web server HTTP Basic credentials - # - /var/cache/baculum - cache used by framework in specific locations (assets/ and protected/runtime/) - # by symbolic links to cache directory - semanage fcontext -a -t httpd_sys_rw_content_t '%{_datadir}/%{name}/htdocs/protected/Data(/.*)?' 2>/dev/null || : - restorecon -i -R '%{_datadir}/%{name}/htdocs/protected/Data' || : - semanage fcontext -a -t httpd_cache_t '%{_localstatedir}/cache/%{name}(/.*)?' 2>/dev/null || : - restorecon -i -R %{_localstatedir}/cache/%{name} || : - semodule -i %{_datadir}/selinux/packages/%{name}/%{name}.pp 2>/dev/null || : -fi +%post web +# because framework does not use system locale dir, here are linked +# locale files to framework location +for lang in %{langs}; do + ln -s %{_datadir}/locale/${lang}/LC_MESSAGES/%{metaname}-web.mo \ + %{_datadir}/%{metaname}/htdocs/protected/Web/Lang/${lang}/messages.mo +done -%post httpd +%post api-httpd %systemd_post httpd.service -ln -s %{_sysconfdir}/%{name}/Data-apache %{_datadir}/%{name}/htdocs/protected/Data +ln -s %{_sysconfdir}/%{metaname}/Config-api-apache %{_datadir}/%{metaname}/htdocs/protected/API/Config + +%post api-lighttpd +%systemd_post baculum-api-lighttpd.service +ln -s %{_sysconfdir}/%{metaname}/Config-api-lighttpd %{_datadir}/%{metaname}/htdocs/protected/API/Config + +%post web-httpd +%systemd_post httpd.service +ln -s %{_sysconfdir}/%{metaname}/Config-web-apache %{_datadir}/%{metaname}/htdocs/protected/Web/Config + +%post web-lighttpd +%systemd_post baculum-web-lighttpd.service +ln -s %{_sysconfdir}/%{metaname}/Config-web-lighttpd %{_datadir}/%{metaname}/htdocs/protected/Web/Config -%post lighttpd -%systemd_post baculum-lighttpd.service -ln -s %{_sysconfdir}/%{name}/Data-lighttpd %{_datadir}/%{name}/htdocs/protected/Data +%preun common +rm %{_datadir}/%{metaname}/htdocs/assets +rm %{_datadir}/%{metaname}/htdocs/protected/runtime -%preun +%preun api for lang in %{langs}; do - rm %{_datadir}/%{name}/htdocs/protected/Lang/${lang}/messages.mo + rm %{_datadir}/%{metaname}/htdocs/protected/API/Lang/${lang}/messages.mo done -rm %{_datadir}/%{name}/htdocs/assets -rm %{_datadir}/%{name}/htdocs/protected/runtime +%preun web +for lang in %{langs}; do + rm %{_datadir}/%{metaname}/htdocs/protected/Web/Lang/${lang}/messages.mo +done -%preun httpd +%preun api-httpd %systemd_preun httpd.service if [ $1 -lt 1 ] ; then # Rename settings if exist. # Note, 'config' macro cannot be used because this file is created after successful # installation via wizard. Also using 'config' macro to /usr location strictly forbidden # by Packaging Guidelines. - [ ! -e %{_datadir}/%{name}/htdocs/protected/Data/settings.conf ] || - mv %{_datadir}/%{name}/htdocs/protected/Data/settings.conf \ - %{_datadir}/%{name}/htdocs/protected/Data/settings.conf.apache + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/API/Config/api.conf ] || + mv %{_datadir}/%{metaname}/htdocs/protected/API/Config/api.conf \ + %{_datadir}/%{metaname}/htdocs/protected/API/Config/api.conf.apache # remove debug files if any - [ ! -e %{_datadir}/%{name}/htdocs/protected/Data/baculum.dbg ] || - rm %{_datadir}/%{name}/htdocs/protected/Data/baculum*.dbg - rm %{_datadir}/%{name}/htdocs/protected/Data + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/API/Logs/baculum-api.log ] || + rm %{_datadir}/%{metaname}/htdocs/protected/API/Logs/baculum-api*.log + rm %{_datadir}/%{metaname}/htdocs/protected/API/Config +fi +%preun web-httpd +%systemd_preun httpd.service +if [ $1 -lt 1 ] ; then + # Rename settings if exist. + # Note, 'config' macro cannot be used because this file is created after successful + # installation via wizard. Also using 'config' macro to /usr location strictly forbidden + # by Packaging Guidelines. + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/Web/Config/settings.conf ] || + mv %{_datadir}/%{metaname}/htdocs/protected/Web/Config/settings.conf \ + %{_datadir}/%{metaname}/htdocs/protected/Web/Config/settings.conf.apache + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/Web/Config/hosts.conf ] || + mv %{_datadir}/%{metaname}/htdocs/protected/Web/Config/hosts.conf \ + %{_datadir}/%{metaname}/htdocs/protected/Web/Config/hosts.conf.apache + # remove debug files if any + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/Web/Logs/baculum-web.log ] || + rm %{_datadir}/%{metaname}/htdocs/protected/Web/Logs/baculum-web*.log + rm %{_datadir}/%{metaname}/htdocs/protected/Web/Config fi -%preun lighttpd -%systemd_preun baculum-lighttpd.service +%preun api-lighttpd +%systemd_preun baculum-api-lighttpd.service if [ $1 -lt 1 ] ; then + # stop api service + /sbin/service baculum-api-lighttpd stop &>/dev/null || : # Rename settings if exist. # Note, 'config' macro cannot be used because this file is created after successful # installation via wizard. Also using 'config' macro to /usr location strictly forbidden # by Packaging Guidelines. - [ ! -e %{_datadir}/%{name}/htdocs/protected/Data/settings.conf ] || - mv %{_datadir}/%{name}/htdocs/protected/Data/settings.conf \ - %{_datadir}/%{name}/htdocs/protected/Data/settings.conf.lighttpd + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/API/Config/api.conf ] || + mv %{_datadir}/%{metaname}/htdocs/protected/API/Config/api.conf \ + %{_datadir}/%{metaname}/htdocs/protected/API/Config/api.conf.lighttpd # remove debug files if any - [ ! -e %{_datadir}/%{name}/htdocs/protected/Data/baculum.dbg ] || - rm %{_datadir}/%{name}/htdocs/protected/Data/baculum*.dbg - rm %{_datadir}/%{name}/htdocs/protected/Data + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/API/Logs/baculum-api.log ] || + rm %{_datadir}/%{metaname}/htdocs/protected/API/Logs/baculum-api*.log + rm %{_datadir}/%{metaname}/htdocs/protected/API/Config fi -%postun selinux -if [ $1 -eq 0 ] ; then - semanage fcontext -d -t httpd_sys_rw_content_t '%{_datadir}/%{name}/htdocs/protected/Data(/.*)?' 2>/dev/null || : - semanage fcontext -d -t httpd_cache_t '%{_localstatedir}/cache/%{name}(/.*)?' 2>/dev/null || : - semodule -r %{name} 2>/dev/null || : +%preun web-lighttpd +%systemd_preun baculum-web-lighttpd.service +if [ $1 -lt 1 ] ; then + # stop web service + /sbin/service baculum-web-lighttpd stop &>/dev/null || : + # Rename settings if exist. + # Note, 'config' macro cannot be used because this file is created after successful + # installation via wizard. Also using 'config' macro to /usr location strictly forbidden + # by Packaging Guidelines. + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/Web/Config/settings.conf ] || + mv %{_datadir}/%{metaname}/htdocs/protected/Web/Config/settings.conf \ + %{_datadir}/%{metaname}/htdocs/protected/Web/Config/settings.conf.lighttpd + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/Web/Config/hosts.conf ] || + mv %{_datadir}/%{metaname}/htdocs/protected/Web/Config/hosts.conf \ + %{_datadir}/%{metaname}/htdocs/protected/Web/Config/hosts.conf.lighttpd + # remove debug files if any + [ ! -e %{_datadir}/%{metaname}/htdocs/protected/Web/Logs/baculum-web.log ] || + rm %{_datadir}/%{metaname}/htdocs/protected/Web/Logs/baculum-web*.log + rm %{_datadir}/%{metaname}/htdocs/protected/Web/Config fi -%postun httpd +%postun api-httpd +%systemd_postun_with_restart httpd.service + +%postun web-httpd %systemd_postun_with_restart httpd.service -%postun lighttpd -%systemd_postun_with_restart baculum-lighttpd.service +%postun api-lighttpd +%systemd_postun_with_restart baculum-api-lighttpd.service -%files -f %{name}.lang +%postun web-lighttpd +%systemd_postun_with_restart baculum-web-lighttpd.service + +%files -f %{metaname}.lang common %defattr(-,root,root) -# directory excluded here, because it needs to be provided -# with selected web server privileges (lighttpd or apache) -%exclude %{_datadir}/%{name}/htdocs/protected/Data -%{_datadir}/%{name} +%{_datadir}/%{metaname}/htdocs/protected/Common +%{_datadir}/%{metaname}/htdocs/protected/application.xml +%{_datadir}/%{metaname}/htdocs/framework +%{_datadir}/%{metaname}/htdocs/themes +%{_datadir}/%{metaname}/htdocs/LICENSE +%{_datadir}/%{metaname}/htdocs/AUTHORS +%{_datadir}/%{metaname}/htdocs/README +%{_datadir}/%{metaname}/htdocs/INSTALL +%{_datadir}/%{metaname}/htdocs/index.php %license LICENSE %doc AUTHORS README -%files selinux + +%files api +%defattr(-,root,root) +# directory excluded here, because it needs to be provided +# with selected web server privileges (lighttpd or apache) +%exclude %{_datadir}/%{metaname}/htdocs/protected/API/Config +%exclude %{_datadir}/%{metaname}/htdocs/protected/API/Logs +%{_datadir}/%{metaname}/htdocs/protected/API + +%files web %defattr(-,root,root) -%{_datadir}/selinux/packages/%{name}/%{name}.pp +# directory excluded here, because it needs to be provided +# with selected web server privileges (lighttpd or apache) +%exclude %{_datadir}/%{metaname}/htdocs/protected/Web/Config +%exclude %{_datadir}/%{metaname}/htdocs/protected/Web/Logs +%{_datadir}/%{metaname}/htdocs/protected/Web -%files httpd + +%files api-httpd %defattr(644,root,root) +# directory excluded here, because it needs to be provided +# with selected web server privileges (lighttpd or apache) +%exclude %{_datadir}/%{metaname}/htdocs/protected/API/Config # Apache logs are stored in /var/log/httpd/ -%config(noreplace) %{_sysconfdir}/httpd/conf.d/%{name}.conf -%attr(755,apache,apache) %{_localstatedir}/cache/%{name}/ -%attr(700,apache,apache) %{_sysconfdir}/%{name}/Data-apache/ -%attr(600,apache,apache) %{_sysconfdir}/%{name}/Data-apache/%{name}.users +%config(noreplace) %{_sysconfdir}/httpd/conf.d/%{metaname}-api.conf +%attr(755,apache,apache) %{_localstatedir}/cache/%{metaname}/ +%attr(700,apache,apache) %{_sysconfdir}/%{metaname}/Config-api-apache/ +%attr(600,apache,apache) %{_sysconfdir}/%{metaname}/Config-api-apache/%{metaname}.users +%attr(755,apache,apache) %{_datadir}/%{metaname}/htdocs/protected/API/Logs + +%files web-httpd +%defattr(644,root,root) +# directory excluded here, because it needs to be provided +# with selected web server privileges (lighttpd or apache) +%exclude %{_datadir}/%{metaname}/htdocs/protected/Web/Config +# Apache logs are stored in /var/log/httpd/ +%config(noreplace) %{_sysconfdir}/httpd/conf.d/%{metaname}-web.conf +%attr(755,apache,apache) %{_localstatedir}/cache/%{metaname}/ +%attr(700,apache,apache) %{_sysconfdir}/%{metaname}/Config-web-apache/ +%attr(600,apache,apache) %{_sysconfdir}/%{metaname}/Config-web-apache/%{metaname}.users +%attr(755,apache,apache) %{_datadir}/%{metaname}/htdocs/protected/Web/Logs + +%files api-lighttpd +%defattr(644,root,root) +# Lighttpd logs are stored in /var/log/lighttpd +%attr(755,lighttpd,lighttpd) %{_localstatedir}/cache/%{metaname}/ +%attr(700,lighttpd,lighttpd) %{_sysconfdir}/%{metaname}/Config-api-lighttpd/ +%attr(600,lighttpd,lighttpd) %{_sysconfdir}/%{metaname}/Config-api-lighttpd/%{metaname}.users +%attr(755,lighttpd,lighttpd) %{_datadir}/%{metaname}/htdocs/protected/API/Logs +%{_unitdir}/%{metaname}-api-lighttpd.service +%config(noreplace) %{_sysconfdir}/%{metaname}/%{metaname}-api-lighttpd.conf -%files lighttpd +%files web-lighttpd %defattr(644,root,root) # Lighttpd logs are stored in /var/log/lighttpd -%attr(755,lighttpd,lighttpd) %{_localstatedir}/cache/%{name}/ -%attr(700,lighttpd,lighttpd) %{_sysconfdir}/%{name}/Data-lighttpd -%attr(600,lighttpd,lighttpd) %{_sysconfdir}/%{name}/Data-lighttpd/%{name}.users -%{_unitdir}/%{name}-lighttpd.service -%config(noreplace) %{_sysconfdir}/%{name}/%{name}-lighttpd.conf +%attr(755,lighttpd,lighttpd) %{_localstatedir}/cache/%{metaname}/ +%attr(700,lighttpd,lighttpd) %{_sysconfdir}/%{metaname}/Config-web-lighttpd/ +%attr(600,lighttpd,lighttpd) %{_sysconfdir}/%{metaname}/Config-web-lighttpd/%{metaname}.users +%attr(755,lighttpd,lighttpd) %{_datadir}/%{metaname}/htdocs/protected/Web/Logs +%{_unitdir}/%{metaname}-web-lighttpd.service +%config(noreplace) %{_sysconfdir}/%{metaname}/%{metaname}-web-lighttpd.conf %changelog - * Tue Dec 15 2015 Marcin Haba - 7.2.0 - - Add creating and removing Data/ directory symbolic link - - Match locations to bacula-gui directories structure - * Sat Jul 18 2015 Marcin Haba - 7.0.6-0.5.b - - Change baculum.users and Data/ directory permissions to more - restrictive - - Add noreplace param to Lighttpd config file - - Add systemd macros for httpd subpackage - - Fix systemd action in post section - - Move DESTDIR target and languages to global variables - - Do not remove settings file when a web server specific package - is removed (used move action) - - Drop storing Lighttpd logs in separate logs directory - - Define locale files - * Fri Jul 17 2015 Marcin Haba - 7.0.6-0.4.b - - Remove source files: baculum.users, baculum-apache.conf - baculum-lighttpd.conf and baculum-lighttpd.service - - Use reorganized upstream Makefile - * Tue Jul 14 2015 Marcin Haba - 7.0.6-0.3.b - - Separate to subpackage Lighttpd support - - Add Apache subpackage - - Use upstream Makefile to prepare build files - - Cache symlbolic links only in install section - - Add comments to Spec - - Compile SELinux policies instead of install pre-compiled - - Add source files: baculum.users, baculum-apache.conf - baculum-lighttpd.conf and baculum-lighttpd.service - - Change Source0 URL - * Mon Jul 13 2015 Marcin Haba - 7.0.6-0.2.b - - Remove chkconfig and service dependencies from Spec - - Change Spec sections order - - Correct package description typos and errors - * Mon Jul 06 2015 Marcin Haba - 7.0.6-0.1.b + * Sat Dec 10 2016 Marcin Haba - 7.5.0-0.1 - Spec create diff --git a/gui/baculum/examples/sudo/baculum-api-httpd b/gui/baculum/examples/sudo/baculum-api-httpd new file mode 100644 index 0000000000..1c4808e94a --- /dev/null +++ b/gui/baculum/examples/sudo/baculum-api-httpd @@ -0,0 +1,6 @@ +Defaults:apache !requiretty +apache ALL = NOPASSWD: /usr/sbin/bconsole +apache ALL = NOPASSWD: /usr/sbin/bdirjson +apache ALL = NOPASSWD: /usr/sbin/bsdjson +apache ALL = NOPASSWD: /usr/sbin/bfdjson +apache ALL = NOPASSWD: /usr/sbin/bbconsjson diff --git a/gui/baculum/examples/sudo/baculum-api-lighttpd b/gui/baculum/examples/sudo/baculum-api-lighttpd new file mode 100644 index 0000000000..e68beda32e --- /dev/null +++ b/gui/baculum/examples/sudo/baculum-api-lighttpd @@ -0,0 +1,6 @@ +Defaults:lighttpd !requiretty +lighttpd ALL = NOPASSWD: /usr/sbin/bconsole +lighttpd ALL = NOPASSWD: /usr/sbin/bdirjson +lighttpd ALL = NOPASSWD: /usr/sbin/bsdjson +lighttpd ALL = NOPASSWD: /usr/sbin/bfdjson +lighttpd ALL = NOPASSWD: /usr/sbin/bbconsjson diff --git a/gui/baculum/examples/sudo/baculum-httpd b/gui/baculum/examples/sudo/baculum-httpd deleted file mode 100644 index 5a7a9c1243..0000000000 --- a/gui/baculum/examples/sudo/baculum-httpd +++ /dev/null @@ -1,2 +0,0 @@ -Defaults:apache !requiretty -apache ALL= NOPASSWD: /usr/sbin/bconsole diff --git a/gui/baculum/examples/sudo/baculum-lighttpd b/gui/baculum/examples/sudo/baculum-lighttpd deleted file mode 100644 index b06a7e8b31..0000000000 --- a/gui/baculum/examples/sudo/baculum-lighttpd +++ /dev/null @@ -1,2 +0,0 @@ -Defaults:lighttpd !requiretty -lighttpd ALL= NOPASSWD: /usr/sbin/bconsole diff --git a/gui/baculum/examples/sudo/baculum-nginx b/gui/baculum/examples/sudo/baculum-nginx deleted file mode 100644 index c7cb882ff6..0000000000 --- a/gui/baculum/examples/sudo/baculum-nginx +++ /dev/null @@ -1,2 +0,0 @@ -Defaults:nginx !requiretty -nginx ALL= NOPASSWD: /usr/sbin/bconsole diff --git a/gui/baculum/framework/3rdParty/FirePHPCore/FirePHP.class.php b/gui/baculum/framework/3rdParty/FirePHPCore/FirePHP.class.php deleted file mode 100644 index 7d3b95f633..0000000000 --- a/gui/baculum/framework/3rdParty/FirePHPCore/FirePHP.class.php +++ /dev/null @@ -1,1528 +0,0 @@ - - * @license http://www.opensource.org/licenses/bsd-license.php - * @package FirePHP - */ - - -/** - * Sends the given data to the FirePHP Firefox Extension. - * The data can be displayed in the Firebug Console or in the - * "Server" request tab. - * - * For more information see: http://www.firephp.org/ - * - * @copyright Copyright (C) 2007-2009 Christoph Dorn - * @author Christoph Dorn - * @license http://www.opensource.org/licenses/bsd-license.php - * @package FirePHP - */ -class FirePHP { - - /** - * FirePHP version - * - * @var string - */ - const VERSION = '0.3'; - - /** - * Firebug LOG level - * - * Logs a message to firebug console. - * - * @var string - */ - const LOG = 'LOG'; - - /** - * Firebug INFO level - * - * Logs a message to firebug console and displays an info icon before the message. - * - * @var string - */ - const INFO = 'INFO'; - - /** - * Firebug WARN level - * - * Logs a message to firebug console, displays an warning icon before the message and colors the line turquoise. - * - * @var string - */ - const WARN = 'WARN'; - - /** - * Firebug ERROR level - * - * Logs a message to firebug console, displays an error icon before the message and colors the line yellow. Also increments the firebug error count. - * - * @var string - */ - const ERROR = 'ERROR'; - - /** - * Dumps a variable to firebug's server panel - * - * @var string - */ - const DUMP = 'DUMP'; - - /** - * Displays a stack trace in firebug console - * - * @var string - */ - const TRACE = 'TRACE'; - - /** - * Displays an exception in firebug console - * - * Increments the firebug error count. - * - * @var string - */ - const EXCEPTION = 'EXCEPTION'; - - /** - * Displays an table in firebug console - * - * @var string - */ - const TABLE = 'TABLE'; - - /** - * Starts a group in firebug console - * - * @var string - */ - const GROUP_START = 'GROUP_START'; - - /** - * Ends a group in firebug console - * - * @var string - */ - const GROUP_END = 'GROUP_END'; - - /** - * Singleton instance of FirePHP - * - * @var FirePHP - */ - protected static $instance = null; - - /** - * Flag whether we are logging from within the exception handler - * - * @var boolean - */ - protected $inExceptionHandler = false; - - /** - * Flag whether to throw PHP errors that have been converted to ErrorExceptions - * - * @var boolean - */ - protected $throwErrorExceptions = true; - - /** - * Flag whether to convert PHP assertion errors to Exceptions - * - * @var boolean - */ - protected $convertAssertionErrorsToExceptions = true; - - /** - * Flag whether to throw PHP assertion errors that have been converted to Exceptions - * - * @var boolean - */ - protected $throwAssertionExceptions = false; - - /** - * Wildfire protocol message index - * - * @var int - */ - protected $messageIndex = 1; - - /** - * Options for the library - * - * @var array - */ - protected $options = array('maxObjectDepth' => 10, - 'maxArrayDepth' => 20, - 'useNativeJsonEncode' => true, - 'includeLineNumbers' => true); - - /** - * Filters used to exclude object members when encoding - * - * @var array - */ - protected $objectFilters = array(); - - /** - * A stack of objects used to detect recursion during object encoding - * - * @var object - */ - protected $objectStack = array(); - - /** - * Flag to enable/disable logging - * - * @var boolean - */ - protected $enabled = true; - - /** - * The object constructor - */ - function __construct() { - } - - /** - * When the object gets serialized only include specific object members. - * - * @return array - */ - public function __sleep() { - return array('options','objectFilters','enabled'); - } - - /** - * Gets singleton instance of FirePHP - * - * @param boolean $AutoCreate - * @return FirePHP - */ - public static function getInstance($AutoCreate=false) { - if($AutoCreate===true && !self::$instance) { - self::init(); - } - return self::$instance; - } - - /** - * Creates FirePHP object and stores it for singleton access - * - * @return FirePHP - */ - public static function init() { - return self::$instance = new self(); - } - - /** - * Enable and disable logging to Firebug - * - * @param boolean $Enabled TRUE to enable, FALSE to disable - * @return void - */ - public function setEnabled($Enabled) { - $this->enabled = $Enabled; - } - - /** - * Check if logging is enabled - * - * @return boolean TRUE if enabled - */ - public function getEnabled() { - return $this->enabled; - } - - /** - * Specify a filter to be used when encoding an object - * - * Filters are used to exclude object members. - * - * @param string $Class The class name of the object - * @param array $Filter An array of members to exclude - * @return void - */ - public function setObjectFilter($Class, $Filter) { - $this->objectFilters[$Class] = $Filter; - } - - /** - * Set some options for the library - * - * Options: - * - maxObjectDepth: The maximum depth to traverse objects (default: 10) - * - maxArrayDepth: The maximum depth to traverse arrays (default: 20) - * - useNativeJsonEncode: If true will use json_encode() (default: true) - * - includeLineNumbers: If true will include line numbers and filenames (default: true) - * - * @param array $Options The options to be set - * @return void - */ - public function setOptions($Options) { - $this->options = array_merge($this->options,$Options); - } - - /** - * Get options from the library - * - * @return array The currently set options - */ - public function getOptions() { - return $this->options; - } - - /** - * Register FirePHP as your error handler - * - * Will throw exceptions for each php error. - * - * @return mixed Returns a string containing the previously defined error handler (if any) - */ - public function registerErrorHandler($throwErrorExceptions=true) - { - //NOTE: The following errors will not be caught by this error handler: - // E_ERROR, E_PARSE, E_CORE_ERROR, - // E_CORE_WARNING, E_COMPILE_ERROR, - // E_COMPILE_WARNING, E_STRICT - - $this->throwErrorExceptions = $throwErrorExceptions; - - return set_error_handler(array($this,'errorHandler')); - } - - /** - * FirePHP's error handler - * - * Throws exception for each php error that will occur. - * - * @param int $errno - * @param string $errstr - * @param string $errfile - * @param int $errline - * @param array $errcontext - */ - public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) - { - // Don't throw exception if error reporting is switched off - if (error_reporting() == 0) { - return; - } - // Only throw exceptions for errors we are asking for - if (error_reporting() & $errno) { - - $exception = new ErrorException($errstr, 0, $errno, $errfile, $errline); - if($this->throwErrorExceptions) { - throw $exception; - } else { - $this->fb($exception); - } - } - } - - /** - * Register FirePHP as your exception handler - * - * @return mixed Returns the name of the previously defined exception handler, - * or NULL on error. - * If no previous handler was defined, NULL is also returned. - */ - public function registerExceptionHandler() - { - return set_exception_handler(array($this,'exceptionHandler')); - } - - /** - * FirePHP's exception handler - * - * Logs all exceptions to your firebug console and then stops the script. - * - * @param Exception $Exception - * @throws Exception - */ - function exceptionHandler($Exception) { - - $this->inExceptionHandler = true; - - header('HTTP/1.1 500 Internal Server Error'); - - $this->fb($Exception); - - $this->inExceptionHandler = false; - } - - /** - * Register FirePHP driver as your assert callback - * - * @param boolean $convertAssertionErrorsToExceptions - * @param boolean $throwAssertionExceptions - * @return mixed Returns the original setting or FALSE on errors - */ - public function registerAssertionHandler($convertAssertionErrorsToExceptions=true, $throwAssertionExceptions=false) - { - $this->convertAssertionErrorsToExceptions = $convertAssertionErrorsToExceptions; - $this->throwAssertionExceptions = $throwAssertionExceptions; - - if($throwAssertionExceptions && !$convertAssertionErrorsToExceptions) { - throw $this->newException('Cannot throw assertion exceptions as assertion errors are not being converted to exceptions!'); - } - - return assert_options(ASSERT_CALLBACK, array($this, 'assertionHandler')); - } - - /** - * FirePHP's assertion handler - * - * Logs all assertions to your firebug console and then stops the script. - * - * @param string $file File source of assertion - * @param int $line Line source of assertion - * @param mixed $code Assertion code - */ - public function assertionHandler($file, $line, $code) - { - - if($this->convertAssertionErrorsToExceptions) { - - $exception = new ErrorException('Assertion Failed - Code[ '.$code.' ]', 0, null, $file, $line); - - if($this->throwAssertionExceptions) { - throw $exception; - } else { - $this->fb($exception); - } - - } else { - - $this->fb($code, 'Assertion Failed', FirePHP::ERROR, array('File'=>$file,'Line'=>$line)); - - } - } - - /** - * Set custom processor url for FirePHP - * - * @param string $URL - */ - public function setProcessorUrl($URL) - { - $this->setHeader('X-FirePHP-ProcessorURL', $URL); - } - - /** - * Set custom renderer url for FirePHP - * - * @param string $URL - */ - public function setRendererUrl($URL) - { - $this->setHeader('X-FirePHP-RendererURL', $URL); - } - - /** - * Start a group for following messages. - * - * Options: - * Collapsed: [true|false] - * Color: [#RRGGBB|ColorName] - * - * @param string $Name - * @param array $Options OPTIONAL Instructions on how to log the group - * @return true - * @throws Exception - */ - public function group($Name, $Options=null) { - - if(!$Name) { - throw $this->newException('You must specify a label for the group!'); - } - - if($Options) { - if(!is_array($Options)) { - throw $this->newException('Options must be defined as an array!'); - } - if(array_key_exists('Collapsed', $Options)) { - $Options['Collapsed'] = ($Options['Collapsed'])?'true':'false'; - } - } - - return $this->fb(null, $Name, FirePHP::GROUP_START, $Options); - } - - /** - * Ends a group you have started before - * - * @return true - * @throws Exception - */ - public function groupEnd() { - return $this->fb(null, null, FirePHP::GROUP_END); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::LOG - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - public function log($Object, $Label=null) { - return $this->fb($Object, $Label, FirePHP::LOG); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::INFO - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - public function info($Object, $Label=null) { - return $this->fb($Object, $Label, FirePHP::INFO); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::WARN - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - public function warn($Object, $Label=null) { - return $this->fb($Object, $Label, FirePHP::WARN); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::ERROR - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - public function error($Object, $Label=null) { - return $this->fb($Object, $Label, FirePHP::ERROR); - } - - /** - * Dumps key and variable to firebug server panel - * - * @see FirePHP::DUMP - * @param string $Key - * @param mixed $Variable - * @return true - * @throws Exception - */ - public function dump($Key, $Variable) { - return $this->fb($Variable, $Key, FirePHP::DUMP); - } - - /** - * Log a trace in the firebug console - * - * @see FirePHP::TRACE - * @param string $Label - * @return true - * @throws Exception - */ - public function trace($Label) { - return $this->fb($Label, FirePHP::TRACE); - } - - /** - * Log a table in the firebug console - * - * @see FirePHP::TABLE - * @param string $Label - * @param string $Table - * @return true - * @throws Exception - */ - public function table($Label, $Table) { - return $this->fb($Table, $Label, FirePHP::TABLE); - } - - /** - * Check if FirePHP is installed on client - * - * @return boolean - */ - public function detectClientExtension() { - /* Check if FirePHP is installed on client */ - if(!@preg_match_all('/\sFirePHP\/([\.|\d]*)\s?/si',$this->getUserAgent(),$m) || - !version_compare($m[1][0],'0.0.6','>=')) { - return false; - } - return true; - } - - /** - * Log varible to Firebug - * - * @see http://www.firephp.org/Wiki/Reference/Fb - * @param mixed $Object The variable to be logged - * @return true Return TRUE if message was added to headers, FALSE otherwise - * @throws Exception - */ - public function fb($Object) { - - if(!$this->enabled) { - return false; - } - - if (headers_sent($filename, $linenum)) { - // If we are logging from within the exception handler we cannot throw another exception - if($this->inExceptionHandler) { - // Simply echo the error out to the page - echo '
FirePHP ERROR: Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.
'; - } else { - throw $this->newException('Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.'); - } - } - - $Type = null; - $Label = null; - $Options = array(); - - if(func_num_args()==1) { - } else - if(func_num_args()==2) { - switch(func_get_arg(1)) { - case self::LOG: - case self::INFO: - case self::WARN: - case self::ERROR: - case self::DUMP: - case self::TRACE: - case self::EXCEPTION: - case self::TABLE: - case self::GROUP_START: - case self::GROUP_END: - $Type = func_get_arg(1); - break; - default: - $Label = func_get_arg(1); - break; - } - } else - if(func_num_args()==3) { - $Type = func_get_arg(2); - $Label = func_get_arg(1); - } else - if(func_num_args()==4) { - $Type = func_get_arg(2); - $Label = func_get_arg(1); - $Options = func_get_arg(3); - } else { - throw $this->newException('Wrong number of arguments to fb() function!'); - } - - - if(!$this->detectClientExtension()) { - return false; - } - - $meta = array(); - $skipFinalObjectEncode = false; - - if($Object instanceof Exception) { - - $meta['file'] = $this->_escapeTraceFile($Object->getFile()); - $meta['line'] = $Object->getLine(); - - $trace = $Object->getTrace(); - if($Object instanceof ErrorException - && isset($trace[0]['function']) - && $trace[0]['function']=='errorHandler' - && isset($trace[0]['class']) - && $trace[0]['class']=='FirePHP') { - - $severity = false; - switch($Object->getSeverity()) { - case E_WARNING: $severity = 'E_WARNING'; break; - case E_NOTICE: $severity = 'E_NOTICE'; break; - case E_USER_ERROR: $severity = 'E_USER_ERROR'; break; - case E_USER_WARNING: $severity = 'E_USER_WARNING'; break; - case E_USER_NOTICE: $severity = 'E_USER_NOTICE'; break; - case E_STRICT: $severity = 'E_STRICT'; break; - case E_RECOVERABLE_ERROR: $severity = 'E_RECOVERABLE_ERROR'; break; - case E_DEPRECATED: $severity = 'E_DEPRECATED'; break; - case E_USER_DEPRECATED: $severity = 'E_USER_DEPRECATED'; break; - } - - $Object = array('Class'=>get_class($Object), - 'Message'=>$severity.': '.$Object->getMessage(), - 'File'=>$this->_escapeTraceFile($Object->getFile()), - 'Line'=>$Object->getLine(), - 'Type'=>'trigger', - 'Trace'=>$this->_escapeTrace(array_splice($trace,2))); - $skipFinalObjectEncode = true; - } else { - $Object = array('Class'=>get_class($Object), - 'Message'=>$Object->getMessage(), - 'File'=>$this->_escapeTraceFile($Object->getFile()), - 'Line'=>$Object->getLine(), - 'Type'=>'throw', - 'Trace'=>$this->_escapeTrace($trace)); - $skipFinalObjectEncode = true; - } - $Type = self::EXCEPTION; - - } else - if($Type==self::TRACE) { - - $trace = debug_backtrace(); - if(!$trace) return false; - for( $i=0 ; $i_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php' - || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) { - /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ - } else - if(isset($trace[$i]['class']) - && isset($trace[$i+1]['file']) - && $trace[$i]['class']=='FirePHP' - && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') { - /* Skip fb() */ - } else - if($trace[$i]['function']=='fb' - || $trace[$i]['function']=='trace' - || $trace[$i]['function']=='send') { - $Object = array('Class'=>isset($trace[$i]['class'])?$trace[$i]['class']:'', - 'Type'=>isset($trace[$i]['type'])?$trace[$i]['type']:'', - 'Function'=>isset($trace[$i]['function'])?$trace[$i]['function']:'', - 'Message'=>$trace[$i]['args'][0], - 'File'=>isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'', - 'Line'=>isset($trace[$i]['line'])?$trace[$i]['line']:'', - 'Args'=>isset($trace[$i]['args'])?$this->encodeObject($trace[$i]['args']):'', - 'Trace'=>$this->_escapeTrace(array_splice($trace,$i+1))); - - $skipFinalObjectEncode = true; - $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):''; - $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:''; - break; - } - } - - } else - if($Type==self::TABLE) { - - if(isset($Object[0]) && is_string($Object[0])) { - $Object[1] = $this->encodeTable($Object[1]); - } else { - $Object = $this->encodeTable($Object); - } - - $skipFinalObjectEncode = true; - - } else - if($Type==self::GROUP_START) { - - if(!$Label) { - throw $this->newException('You must specify a label for the group!'); - } - - } else { - if($Type===null) { - $Type = self::LOG; - } - } - - if($this->options['includeLineNumbers']) { - if(!isset($meta['file']) || !isset($meta['line'])) { - - $trace = debug_backtrace(); - for( $i=0 ; $trace && $i_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php' - || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) { - /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ - } else - if(isset($trace[$i]['class']) - && isset($trace[$i+1]['file']) - && $trace[$i]['class']=='FirePHP' - && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') { - /* Skip fb() */ - } else - if(isset($trace[$i]['file']) - && substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php') { - /* Skip FB::fb() */ - } else { - $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):''; - $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:''; - break; - } - } - - } - } else { - unset($meta['file']); - unset($meta['line']); - } - - $this->setHeader('X-Wf-Protocol-1','http://meta.wildfirehq.org/Protocol/JsonStream/0.2'); - $this->setHeader('X-Wf-1-Plugin-1','http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/'.self::VERSION); - - $structure_index = 1; - if($Type==self::DUMP) { - $structure_index = 2; - $this->setHeader('X-Wf-1-Structure-2','http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1'); - } else { - $this->setHeader('X-Wf-1-Structure-1','http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1'); - } - - if($Type==self::DUMP) { - $msg = '{"'.$Label.'":'.$this->jsonEncode($Object, $skipFinalObjectEncode).'}'; - } else { - $msg_meta = $Options; - $msg_meta['Type'] = $Type; - if($Label!==null) { - $msg_meta['Label'] = $Label; - } - if(isset($meta['file']) && !isset($msg_meta['File'])) { - $msg_meta['File'] = $meta['file']; - } - if(isset($meta['line']) && !isset($msg_meta['Line'])) { - $msg_meta['Line'] = $meta['line']; - } - $msg = '['.$this->jsonEncode($msg_meta).','.$this->jsonEncode($Object, $skipFinalObjectEncode).']'; - } - - $parts = explode("\n",chunk_split($msg, 5000, "\n")); - - for( $i=0 ; $i2) { - // Message needs to be split into multiple parts - $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex, - (($i==0)?strlen($msg):'') - . '|' . $part . '|' - . (($isetHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex, - strlen($part) . '|' . $part . '|'); - } - - $this->messageIndex++; - - if ($this->messageIndex > 99999) { - throw $this->newException('Maximum number (99,999) of messages reached!'); - } - } - } - - $this->setHeader('X-Wf-1-Index',$this->messageIndex-1); - - return true; - } - - /** - * Standardizes path for windows systems. - * - * @param string $Path - * @return string - */ - protected function _standardizePath($Path) { - return preg_replace('/\\\\+/','/',$Path); - } - - /** - * Escape trace path for windows systems - * - * @param array $Trace - * @return array - */ - protected function _escapeTrace($Trace) { - if(!$Trace) return $Trace; - for( $i=0 ; $i_escapeTraceFile($Trace[$i]['file']); - } - if(isset($Trace[$i]['args'])) { - $Trace[$i]['args'] = $this->encodeObject($Trace[$i]['args']); - } - } - return $Trace; - } - - /** - * Escape file information of trace for windows systems - * - * @param string $File - * @return string - */ - protected function _escapeTraceFile($File) { - /* Check if we have a windows filepath */ - if(strpos($File,'\\')) { - /* First strip down to single \ */ - - $file = preg_replace('/\\\\+/','\\',$File); - - return $file; - } - return $File; - } - - /** - * Send header - * - * @param string $Name - * @param string_type $Value - */ - protected function setHeader($Name, $Value) { - return header($Name.': '.$Value); - } - - /** - * Get user agent - * - * @return string|false - */ - protected function getUserAgent() { - if(!isset($_SERVER['HTTP_USER_AGENT'])) return false; - return $_SERVER['HTTP_USER_AGENT']; - } - - /** - * Returns a new exception - * - * @param string $Message - * @return Exception - */ - protected function newException($Message) { - return new Exception($Message); - } - - /** - * Encode an object into a JSON string - * - * Uses PHP's jeson_encode() if available - * - * @param object $Object The object to be encoded - * @return string The JSON string - */ - public function jsonEncode($Object, $skipObjectEncode=false) - { - if(!$skipObjectEncode) { - $Object = $this->encodeObject($Object); - } - - if(function_exists('json_encode') - && $this->options['useNativeJsonEncode']!=false) { - - return json_encode($Object); - } else { - return $this->json_encode($Object); - } - } - - /** - * Encodes a table by encoding each row and column with encodeObject() - * - * @param array $Table The table to be encoded - * @return array - */ - protected function encodeTable($Table) { - - if(!$Table) return $Table; - - $new_table = array(); - foreach($Table as $row) { - - if(is_array($row)) { - $new_row = array(); - - foreach($row as $item) { - $new_row[] = $this->encodeObject($item); - } - - $new_table[] = $new_row; - } - } - - return $new_table; - } - - /** - * Encodes an object including members with - * protected and private visibility - * - * @param Object $Object The object to be encoded - * @param int $Depth The current traversal depth - * @return array All members of the object - */ - protected function encodeObject($Object, $ObjectDepth = 1, $ArrayDepth = 1) - { - $return = array(); - - if (is_resource($Object)) { - - return '** '.(string)$Object.' **'; - - } else - if (is_object($Object)) { - - if ($ObjectDepth > $this->options['maxObjectDepth']) { - return '** Max Object Depth ('.$this->options['maxObjectDepth'].') **'; - } - - foreach ($this->objectStack as $refVal) { - if ($refVal === $Object) { - return '** Recursion ('.get_class($Object).') **'; - } - } - array_push($this->objectStack, $Object); - - $return['__className'] = $class = get_class($Object); - - $reflectionClass = new ReflectionClass($class); - $properties = array(); - foreach( $reflectionClass->getProperties() as $property) { - $properties[$property->getName()] = $property; - } - - $members = (array)$Object; - - foreach( $properties as $raw_name => $property ) { - - $name = $raw_name; - if($property->isStatic()) { - $name = 'static:'.$name; - } - if($property->isPublic()) { - $name = 'public:'.$name; - } else - if($property->isPrivate()) { - $name = 'private:'.$name; - $raw_name = "\0".$class."\0".$raw_name; - } else - if($property->isProtected()) { - $name = 'protected:'.$name; - $raw_name = "\0".'*'."\0".$raw_name; - } - - if(!(isset($this->objectFilters[$class]) - && is_array($this->objectFilters[$class]) - && in_array($raw_name,$this->objectFilters[$class]))) { - - if(array_key_exists($raw_name,$members) - && !$property->isStatic()) { - - $return[$name] = $this->encodeObject($members[$raw_name], $ObjectDepth + 1, 1); - - } else { - if(method_exists($property,'setAccessible')) { - $property->setAccessible(true); - $return[$name] = $this->encodeObject($property->getValue($Object), $ObjectDepth + 1, 1); - } else - if($property->isPublic()) { - $return[$name] = $this->encodeObject($property->getValue($Object), $ObjectDepth + 1, 1); - } else { - $return[$name] = '** Need PHP 5.3 to get value **'; - } - } - } else { - $return[$name] = '** Excluded by Filter **'; - } - } - - // Include all members that are not defined in the class - // but exist in the object - foreach( $members as $raw_name => $value ) { - - $name = $raw_name; - - if ($name{0} == "\0") { - $parts = explode("\0", $name); - $name = $parts[2]; - } - - if(!isset($properties[$name])) { - $name = 'undeclared:'.$name; - - if(!(isset($this->objectFilters[$class]) - && is_array($this->objectFilters[$class]) - && in_array($raw_name,$this->objectFilters[$class]))) { - - $return[$name] = $this->encodeObject($value, $ObjectDepth + 1, 1); - } else { - $return[$name] = '** Excluded by Filter **'; - } - } - } - - array_pop($this->objectStack); - - } elseif (is_array($Object)) { - - if ($ArrayDepth > $this->options['maxArrayDepth']) { - return '** Max Array Depth ('.$this->options['maxArrayDepth'].') **'; - } - - foreach ($Object as $key => $val) { - - // Encoding the $GLOBALS PHP array causes an infinite loop - // if the recursion is not reset here as it contains - // a reference to itself. This is the only way I have come up - // with to stop infinite recursion in this case. - if($key=='GLOBALS' - && is_array($val) - && array_key_exists('GLOBALS',$val)) { - $val['GLOBALS'] = '** Recursion (GLOBALS) **'; - } - - $return[$key] = $this->encodeObject($val, 1, $ArrayDepth + 1); - } - } else { - if(self::is_utf8($Object)) { - return $Object; - } else { - return utf8_encode($Object); - } - } - return $return; - } - - /** - * Returns true if $string is valid UTF-8 and false otherwise. - * - * @param mixed $str String to be tested - * @return boolean - */ - protected static function is_utf8($str) { - $c=0; $b=0; - $bits=0; - $len=strlen($str); - for($i=0; $i<$len; $i++){ - $c=ord($str[$i]); - if($c > 128){ - if(($c >= 254)) return false; - elseif($c >= 252) $bits=6; - elseif($c >= 248) $bits=5; - elseif($c >= 240) $bits=4; - elseif($c >= 224) $bits=3; - elseif($c >= 192) $bits=2; - else return false; - if(($i+$bits) > $len) return false; - while($bits > 1){ - $i++; - $b=ord($str[$i]); - if($b < 128 || $b > 191) return false; - $bits--; - } - } - } - return true; - } - - /** - * Converts to and from JSON format. - * - * JSON (JavaScript Object Notation) is a lightweight data-interchange - * format. It is easy for humans to read and write. It is easy for machines - * to parse and generate. It is based on a subset of the JavaScript - * Programming Language, Standard ECMA-262 3rd Edition - December 1999. - * This feature can also be found in Python. JSON is a text format that is - * completely language independent but uses conventions that are familiar - * to programmers of the C-family of languages, including C, C++, C#, Java, - * JavaScript, Perl, TCL, and many others. These properties make JSON an - * ideal data-interchange language. - * - * This package provides a simple encoder and decoder for JSON notation. It - * is intended for use with client-side Javascript applications that make - * use of HTTPRequest to perform server communication functions - data can - * be encoded into JSON notation for use in a client-side javascript, or - * decoded from incoming Javascript requests. JSON format is native to - * Javascript, and can be directly eval()'ed with no further parsing - * overhead - * - * All strings should be in ASCII or UTF-8 format! - * - * LICENSE: Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: Redistributions of source code must retain the - * above copyright notice, this list of conditions and the following - * disclaimer. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * @category - * @package Services_JSON - * @author Michal Migurski - * @author Matt Knapp - * @author Brett Stimmerman - * @author Christoph Dorn - * @copyright 2005 Michal Migurski - * @version CVS: $Id: FirePHP.class.php 3187 2012-07-12 11:21:01Z ctrlaltca $ - * @license http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 - */ - - - /** - * Keep a list of objects as we descend into the array so we can detect recursion. - */ - private $json_objectStack = array(); - - - /** - * convert a string from one UTF-8 char to one UTF-16 char - * - * Normally should be handled by mb_convert_encoding, but - * provides a slower PHP-only method for installations - * that lack the multibye string extension. - * - * @param string $utf8 UTF-8 character - * @return string UTF-16 character - * @access private - */ - private function json_utf82utf16($utf8) - { - // oh please oh please oh please oh please oh please - if(function_exists('mb_convert_encoding')) { - return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); - } - - switch(strlen($utf8)) { - case 1: - // this case should never be reached, because we are in ASCII range - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return $utf8; - - case 2: - // return a UTF-16 character from a 2-byte UTF-8 char - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0x07 & (ord($utf8{0}) >> 2)) - . chr((0xC0 & (ord($utf8{0}) << 6)) - | (0x3F & ord($utf8{1}))); - - case 3: - // return a UTF-16 character from a 3-byte UTF-8 char - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr((0xF0 & (ord($utf8{0}) << 4)) - | (0x0F & (ord($utf8{1}) >> 2))) - . chr((0xC0 & (ord($utf8{1}) << 6)) - | (0x7F & ord($utf8{2}))); - } - - // ignoring UTF-32 for now, sorry - return ''; - } - - /** - * encodes an arbitrary variable into JSON format - * - * @param mixed $var any number, boolean, string, array, or object to be encoded. - * see argument 1 to Services_JSON() above for array-parsing behavior. - * if var is a strng, note that encode() always expects it - * to be in ASCII or UTF-8 format! - * - * @return mixed JSON string representation of input var or an error if a problem occurs - * @access public - */ - private function json_encode($var) - { - - if(is_object($var)) { - if(in_array($var,$this->json_objectStack)) { - return '"** Recursion **"'; - } - } - - switch (gettype($var)) { - case 'boolean': - return $var ? 'true' : 'false'; - - case 'NULL': - return 'null'; - - case 'integer': - return (int) $var; - - case 'double': - case 'float': - return (float) $var; - - case 'string': - // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT - $ascii = ''; - $strlen_var = strlen($var); - - /* - * Iterate over every character in the string, - * escaping with a slash or encoding to UTF-8 where necessary - */ - for ($c = 0; $c < $strlen_var; ++$c) { - - $ord_var_c = ord($var{$c}); - - switch (true) { - case $ord_var_c == 0x08: - $ascii .= '\b'; - break; - case $ord_var_c == 0x09: - $ascii .= '\t'; - break; - case $ord_var_c == 0x0A: - $ascii .= '\n'; - break; - case $ord_var_c == 0x0C: - $ascii .= '\f'; - break; - case $ord_var_c == 0x0D: - $ascii .= '\r'; - break; - - case $ord_var_c == 0x22: - case $ord_var_c == 0x2F: - case $ord_var_c == 0x5C: - // double quote, slash, slosh - $ascii .= '\\'.$var{$c}; - break; - - case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): - // characters U-00000000 - U-0000007F (same as ASCII) - $ascii .= $var{$c}; - break; - - case (($ord_var_c & 0xE0) == 0xC0): - // characters U-00000080 - U-000007FF, mask 110XXXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, ord($var{$c + 1})); - $c += 1; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xF0) == 0xE0): - // characters U-00000800 - U-0000FFFF, mask 1110XXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2})); - $c += 2; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xF8) == 0xF0): - // characters U-00010000 - U-001FFFFF, mask 11110XXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3})); - $c += 3; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xFC) == 0xF8): - // characters U-00200000 - U-03FFFFFF, mask 111110XX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3}), - ord($var{$c + 4})); - $c += 4; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xFE) == 0xFC): - // characters U-04000000 - U-7FFFFFFF, mask 1111110X - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3}), - ord($var{$c + 4}), - ord($var{$c + 5})); - $c += 5; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - } - } - - return '"'.$ascii.'"'; - - case 'array': - /* - * As per JSON spec if any array key is not an integer - * we must treat the the whole array as an object. We - * also try to catch a sparsely populated associative - * array with numeric keys here because some JS engines - * will create an array with empty indexes up to - * max_index which can cause memory issues and because - * the keys, which may be relevant, will be remapped - * otherwise. - * - * As per the ECMA and JSON specification an object may - * have any string as a property. Unfortunately due to - * a hole in the ECMA specification if the key is a - * ECMA reserved word or starts with a digit the - * parameter is only accessible using ECMAScript's - * bracket notation. - */ - - // treat as a JSON object - if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { - - $this->json_objectStack[] = $var; - - $properties = array_map(array($this, 'json_name_value'), - array_keys($var), - array_values($var)); - - array_pop($this->json_objectStack); - - foreach($properties as $property) { - if($property instanceof Exception) { - return $property; - } - } - - return '{' . join(',', $properties) . '}'; - } - - $this->json_objectStack[] = $var; - - // treat it like a regular array - $elements = array_map(array($this, 'json_encode'), $var); - - array_pop($this->json_objectStack); - - foreach($elements as $element) { - if($element instanceof Exception) { - return $element; - } - } - - return '[' . join(',', $elements) . ']'; - - case 'object': - $vars = self::encodeObject($var); - - $this->json_objectStack[] = $var; - - $properties = array_map(array($this, 'json_name_value'), - array_keys($vars), - array_values($vars)); - - array_pop($this->json_objectStack); - - foreach($properties as $property) { - if($property instanceof Exception) { - return $property; - } - } - - return '{' . join(',', $properties) . '}'; - - default: - return null; - } - } - - /** - * array-walking function for use in generating JSON-formatted name-value pairs - * - * @param string $name name of key to use - * @param mixed $value reference to an array element to be encoded - * - * @return string JSON-formatted name-value pair, like '"name":value' - * @access private - */ - private function json_name_value($name, $value) - { - // Encoding the $GLOBALS PHP array causes an infinite loop - // if the recursion is not reset here as it contains - // a reference to itself. This is the only way I have come up - // with to stop infinite recursion in this case. - if($name=='GLOBALS' - && is_array($value) - && array_key_exists('GLOBALS',$value)) { - $value['GLOBALS'] = '** Recursion **'; - } - - $encoded_value = $this->json_encode($value); - - if($encoded_value instanceof Exception) { - return $encoded_value; - } - - return $this->json_encode(strval($name)) . ':' . $encoded_value; - } -} diff --git a/gui/baculum/framework/3rdParty/FirePHPCore/FirePHP.class.php4 b/gui/baculum/framework/3rdParty/FirePHPCore/FirePHP.class.php4 deleted file mode 100644 index 3e20120da7..0000000000 --- a/gui/baculum/framework/3rdParty/FirePHPCore/FirePHP.class.php4 +++ /dev/null @@ -1,1291 +0,0 @@ - - * @author Michael Day - * @license http://www.opensource.org/licenses/bsd-license.php - * @package FirePHP - */ - -/** - * FirePHP version - * - * @var string - */ -define('FirePHP_VERSION', '0.3'); - -/** - * Firebug LOG level - * - * Logs a message to firebug console - * - * @var string - */ -define('FirePHP_LOG', 'LOG'); - -/** - * Firebug INFO level - * - * Logs a message to firebug console and displays an info icon before the message - * - * @var string - */ -define('FirePHP_INFO', 'INFO'); - -/** - * Firebug WARN level - * - * Logs a message to firebug console, displays a warning icon before the message and colors the line turquoise - * - * @var string - */ -define('FirePHP_WARN', 'WARN'); - -/** - * Firebug ERROR level - * - * Logs a message to firebug console, displays an error icon before the message and colors the line yellow. Also increments the firebug error count. - * - * @var string - */ -define('FirePHP_ERROR', 'ERROR'); - -/** - * Dumps a variable to firebug's server panel - * - * @var string - */ -define('FirePHP_DUMP', 'DUMP'); - -/** - * Displays a stack trace in firebug console - * - * @var string - */ -define('FirePHP_TRACE', 'TRACE'); - -/** - * Displays a table in firebug console - * - * @var string - */ -define('FirePHP_TABLE', 'TABLE'); - -/** - * Starts a group in firebug console - * - * @var string - */ -define('FirePHP_GROUP_START', 'GROUP_START'); - -/** - * Ends a group in firebug console - * - * @var string - */ -define('FirePHP_GROUP_END', 'GROUP_END'); - -/** - * Sends the given data to the FirePHP Firefox Extension. - * The data can be displayed in the Firebug Console or in the - * "Server" request tab. - * - * For more information see: http://www.firephp.org/ - * - * @copyright Copyright (C) 2007-2009 Christoph Dorn - * @author Christoph Dorn - * @author Michael Day - * @license http://www.opensource.org/licenses/bsd-license.php - * @package FirePHP - */ -class FirePHP { - /** - * Wildfire protocol message index - * - * @var int - */ - var $messageIndex = 1; - - /** - * Options for the library - * - * @var array - */ - var $options = array('maxObjectDepth' => 10, - 'maxArrayDepth' => 20, - 'useNativeJsonEncode' => true, - 'includeLineNumbers' => true); - - /** - * Filters used to exclude object members when encoding - * - * @var array - */ - var $objectFilters = array(); - - /** - * A stack of objects used to detect recursion during object encoding - * - * @var object - */ - var $objectStack = array(); - - /** - * Flag to enable/disable logging - * - * @var boolean - */ - var $enabled = true; - - /** - * The object constructor - */ - function FirePHP() { - } - - - /** - * When the object gets serialized only include specific object members. - * - * @return array - */ - function __sleep() { - return array('options','objectFilters','enabled'); - } - - /** - * Gets singleton instance of FirePHP - * - * @param boolean $AutoCreate - * @return FirePHP - */ - function &getInstance($AutoCreate=false) { - global $FirePHP_Instance; - - if($AutoCreate===true && !$FirePHP_Instance) { - $FirePHP_Instance = new FirePHP(); - } - - return $FirePHP_Instance; - } - - /** - * Enable and disable logging to Firebug - * - * @param boolean $Enabled TRUE to enable, FALSE to disable - * @return void - */ - function setEnabled($Enabled) { - $this->enabled = $Enabled; - } - - /** - * Check if logging is enabled - * - * @return boolean TRUE if enabled - */ - function getEnabled() { - return $this->enabled; - } - - /** - * Specify a filter to be used when encoding an object - * - * Filters are used to exclude object members. - * - * @param string $Class The class name of the object - * @param array $Filter An array of members to exclude - * @return void - */ - function setObjectFilter($Class, $Filter) { - $this->objectFilters[$Class] = $Filter; - } - - /** - * Set some options for the library - * - * Options: - * - maxObjectDepth: The maximum depth to traverse objects (default: 10) - * - maxArrayDepth: The maximum depth to traverse arrays (default: 20) - * - useNativeJsonEncode: If true will use json_encode() (default: true) - * - includeLineNumbers: If true will include line numbers and filenames (default: true) - * - * @param array $Options The options to be set - * @return void - */ - function setOptions($Options) { - $this->options = array_merge($this->options,$Options); - } - - /** - * Get options from the library - * - * @return array The currently set options - */ - function getOptions() { - return $this->options; - } - - /** - * Register FirePHP as your error handler - * - * Will use FirePHP to log each php error. - * - * @return mixed Returns a string containing the previously defined error handler (if any) - */ - function registerErrorHandler() - { - //NOTE: The following errors will not be caught by this error handler: - // E_ERROR, E_PARSE, E_CORE_ERROR, - // E_CORE_WARNING, E_COMPILE_ERROR, - // E_COMPILE_WARNING, E_STRICT - - return set_error_handler(array($this,'errorHandler')); - } - - /** - * FirePHP's error handler - * - * Logs each php error that will occur. - * - * @param int $errno - * @param string $errstr - * @param string $errfile - * @param int $errline - * @param array $errcontext - */ - function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) - { - global $FirePHP_Instance; - // Don't log error if error reporting is switched off - if (error_reporting() == 0) { - return; - } - // Only log error for errors we are asking for - if (error_reporting() & $errno) { - $FirePHP_Instance->group($errstr); - $FirePHP_Instance->error("{$errfile}, line $errline"); - $FirePHP_Instance->groupEnd(); - } - } - - /** - * Register FirePHP driver as your assert callback - * - * @return mixed Returns the original setting - */ - function registerAssertionHandler() - { - return assert_options(ASSERT_CALLBACK, array($this, 'assertionHandler')); - } - - /** - * FirePHP's assertion handler - * - * Logs all assertions to your firebug console and then stops the script. - * - * @param string $file File source of assertion - * @param int $line Line source of assertion - * @param mixed $code Assertion code - */ - function assertionHandler($file, $line, $code) - { - $this->fb($code, 'Assertion Failed', FirePHP_ERROR, array('File'=>$file,'Line'=>$line)); - } - - /** - * Set custom processor url for FirePHP - * - * @param string $URL - */ - function setProcessorUrl($URL) - { - $this->setHeader('X-FirePHP-ProcessorURL', $URL); - } - - /** - * Set custom renderer url for FirePHP - * - * @param string $URL - */ - function setRendererUrl($URL) - { - $this->setHeader('X-FirePHP-RendererURL', $URL); - } - - /** - * Start a group for following messages. - * - * Options: - * Collapsed: [true|false] - * Color: [#RRGGBB|ColorName] - * - * @param string $Name - * @param array $Options OPTIONAL Instructions on how to log the group - * @return true - * @throws Exception - */ - function group($Name, $Options=null) { - - if(!$Name) { - trigger_error('You must specify a label for the group!'); - } - - if($Options) { - if(!is_array($Options)) { - trigger_error('Options must be defined as an array!'); - } - if(array_key_exists('Collapsed', $Options)) { - $Options['Collapsed'] = ($Options['Collapsed'])?'true':'false'; - } - } - - return $this->fb(null, $Name, FirePHP_GROUP_START, $Options); - } - - /** - * Ends a group you have started before - * - * @return true - * @throws Exception - */ - function groupEnd() { - return $this->fb(null, null, FirePHP_GROUP_END); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::LOG - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - function log($Object, $Label=null) { - return $this->fb($Object, $Label, FirePHP_LOG); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::INFO - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - function info($Object, $Label=null) { - return $this->fb($Object, $Label, FirePHP_INFO); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::WARN - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - function warn($Object, $Label=null) { - return $this->fb($Object, $Label, FirePHP_WARN); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::ERROR - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - function error($Object, $Label=null) { - return $this->fb($Object, $Label, FirePHP_ERROR); - } - - /** - * Dumps key and variable to firebug server panel - * - * @see FirePHP::DUMP - * @param string $Key - * @param mixed $Variable - * @return true - * @throws Exception - */ - function dump($Key, $Variable) { - return $this->fb($Variable, $Key, FirePHP_DUMP); - } - - /** - * Log a trace in the firebug console - * - * @see FirePHP::TRACE - * @param string $Label - * @return true - * @throws Exception - */ - function trace($Label) { - return $this->fb($Label, FirePHP_TRACE); - } - - /** - * Log a table in the firebug console - * - * @see FirePHP::TABLE - * @param string $Label - * @param string $Table - * @return true - * @throws Exception - */ - function table($Label, $Table) { - return $this->fb($Table, $Label, FirePHP_TABLE); - } - - /** - * Check if FirePHP is installed on client - * - * @return boolean - */ - function detectClientExtension() { - /* Check if FirePHP is installed on client */ - if(!@preg_match_all('/\sFirePHP\/([\.|\d]*)\s?/si',$this->getUserAgent(),$m) || - !version_compare($m[1][0],'0.0.6','>=')) { - return false; - } - return true; - } - - /** - * Log varible to Firebug - * - * @see http://www.firephp.org/Wiki/Reference/Fb - * @param mixed $Object The variable to be logged - * @return true Return TRUE if message was added to headers, FALSE otherwise - * @throws Exception - */ - function fb($Object) { - - if(!$this->enabled) { - return false; - } - - if (headers_sent($filename, $linenum)) { - trigger_error('Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.'); - } - - $Type = null; - $Label = null; - $Options = array(); - - if(func_num_args()==1) { - } else - if(func_num_args()==2) { - switch(func_get_arg(1)) { - case FirePHP_LOG: - case FirePHP_INFO: - case FirePHP_WARN: - case FirePHP_ERROR: - case FirePHP_DUMP: - case FirePHP_TRACE: - case FirePHP_TABLE: - case FirePHP_GROUP_START: - case FirePHP_GROUP_END: - $Type = func_get_arg(1); - break; - default: - $Label = func_get_arg(1); - break; - } - } else - if(func_num_args()==3) { - $Type = func_get_arg(2); - $Label = func_get_arg(1); - } else - if(func_num_args()==4) { - $Type = func_get_arg(2); - $Label = func_get_arg(1); - $Options = func_get_arg(3); - } else { - trigger_error('Wrong number of arguments to fb() function!'); - } - - - if(!$this->detectClientExtension()) { - return false; - } - - $meta = array(); - $skipFinalObjectEncode = false; - - if($Type==FirePHP_TRACE) { - - $trace = debug_backtrace(); - if(!$trace) return false; - for( $i=0 ; $i_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php' - || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) { - /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ - } else - if(isset($trace[$i]['class']) - && isset($trace[$i+1]['file']) - && $trace[$i]['class']=='FirePHP' - && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') { - /* Skip fb() */ - } else - if($trace[$i]['function']=='fb' - || $trace[$i]['function']=='trace' - || $trace[$i]['function']=='send') { - $Object = array('Class'=>isset($trace[$i]['class'])?$trace[$i]['class']:'', - 'Type'=>isset($trace[$i]['type'])?$trace[$i]['type']:'', - 'Function'=>isset($trace[$i]['function'])?$trace[$i]['function']:'', - 'Message'=>$trace[$i]['args'][0], - 'File'=>isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'', - 'Line'=>isset($trace[$i]['line'])?$trace[$i]['line']:'', - 'Args'=>isset($trace[$i]['args'])?$this->encodeObject($trace[$i]['args']):'', - 'Trace'=>$this->_escapeTrace(array_splice($trace,$i+1))); - - $skipFinalObjectEncode = true; - $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):''; - $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:''; - break; - } - } - - } else - if($Type==FirePHP_TABLE) { - - if(isset($Object[0]) && is_string($Object[0])) { - $Object[1] = $this->encodeTable($Object[1]); - } else { - $Object = $this->encodeTable($Object); - } - - $skipFinalObjectEncode = true; - - } else - if($Type==FirePHP_GROUP_START) { - - if(!$Label) { - trigger_error('You must specify a label for the group!'); - } - } else { - if($Type===null) { - $Type = FirePHP_LOG; - } - } - - if($this->options['includeLineNumbers']) { - if(!isset($meta['file']) || !isset($meta['line'])) { - - $trace = debug_backtrace(); - for( $i=0 ; $trace && $i_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php' - || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) { - /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */ - } else - if(isset($trace[$i]['class']) - && isset($trace[$i+1]['file']) - && $trace[$i]['class']=='FirePHP' - && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') { - /* Skip fb() */ - } else - if(isset($trace[$i]['file']) - && substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php') { - /* Skip FB::fb() */ - } else { - $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):''; - $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:''; - break; - } - } - - } - } else { - unset($meta['file']); - unset($meta['line']); - } - - $this->setHeader('X-Wf-Protocol-1','http://meta.wildfirehq.org/Protocol/JsonStream/0.2'); - $this->setHeader('X-Wf-1-Plugin-1','http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/'.FirePHP_VERSION); - - $structure_index = 1; - if($Type==FirePHP_DUMP) { - $structure_index = 2; - $this->setHeader('X-Wf-1-Structure-2','http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1'); - } else { - $this->setHeader('X-Wf-1-Structure-1','http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1'); - } - - if($Type==FirePHP_DUMP) { - $msg = '{"'.$Label.'":'.$this->jsonEncode($Object, $skipFinalObjectEncode).'}'; - } else { - $msg_meta = $Options; - $msg_meta['Type'] = $Type; - if($Label!==null) { - $msg_meta['Label'] = $Label; - } - if(isset($meta['file']) && !isset($msg_meta['File'])) { - $msg_meta['File'] = $meta['file']; - } - if(isset($meta['line']) && !isset($msg_meta['Line'])) { - $msg_meta['Line'] = $meta['line']; - } - $msg = '['.$this->jsonEncode($msg_meta).','.$this->jsonEncode($Object, $skipFinalObjectEncode).']'; - } - - $parts = explode("\n",chunk_split($msg, 5000, "\n")); - - for( $i=0 ; $i2) { - // Message needs to be split into multiple parts - $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex, - (($i==0)?strlen($msg):'') - . '|' . $part . '|' - . (($isetHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex, - strlen($part) . '|' . $part . '|'); - } - - $this->messageIndex++; - - if ($this->messageIndex > 99999) { - trigger_error('Maximum number (99,999) of messages reached!'); - } - } - } - - $this->setHeader('X-Wf-1-Index',$this->messageIndex-1); - - return true; - } - - - /** - * Standardizes path for windows systems. - * - * @param string $Path - * @return string - */ - function _standardizePath($Path) { - return preg_replace('/\\\\+/','/',$Path); - } - - /** - * Escape trace path for windows systems - * - * @param array $Trace - * @return array - */ - function _escapeTrace($Trace) { - if(!$Trace) return $Trace; - for( $i=0 ; $i_escapeTraceFile($Trace[$i]['file']); - } - if(isset($Trace[$i]['args'])) { - $Trace[$i]['args'] = $this->encodeObject($Trace[$i]['args']); - } - } - return $Trace; - } - - /** - * Escape file information of trace for windows systems - * - * @param string $File - * @return string - */ - function _escapeTraceFile($File) { - /* Check if we have a windows filepath */ - if(strpos($File,'\\')) { - /* First strip down to single \ */ - - $file = preg_replace('/\\\\+/','\\',$File); - - return $file; - } - return $File; - } - - /** - * Send header - * - * @param string $Name - * @param string_type $Value - */ - function setHeader($Name, $Value) { - return header($Name.': '.$Value); - } - - /** - * Get user agent - * - * @return string|false - */ - function getUserAgent() { - if(!isset($_SERVER['HTTP_USER_AGENT'])) return false; - return $_SERVER['HTTP_USER_AGENT']; - } - - /** - * Encode an object into a JSON string - * - * Uses PHP's jeson_encode() if available - * - * @param object $Object The object to be encoded - * @return string The JSON string - */ - function jsonEncode($Object, $skipObjectEncode=false) - { - if(!$skipObjectEncode) { - $Object = $this->encodeObject($Object); - } - - if(function_exists('json_encode') - && $this->options['useNativeJsonEncode']!=false) { - - return json_encode($Object); - } else { - return $this->json_encode($Object); - } - } - - /** - * Encodes a table by encoding each row and column with encodeObject() - * - * @param array $Table The table to be encoded - * @return array - */ - function encodeTable($Table) { - - if(!$Table) return $Table; - - $new_table = array(); - foreach($Table as $row) { - - if(is_array($row)) { - $new_row = array(); - - foreach($row as $item) { - $new_row[] = $this->encodeObject($item); - } - - $new_table[] = $new_row; - } - } - - return $new_table; - } - - /** - * Encodes an object - * - * @param Object $Object The object to be encoded - * @param int $Depth The current traversal depth - * @return array All members of the object - */ - function encodeObject($Object, $ObjectDepth = 1, $ArrayDepth = 1) - { - $return = array(); - - if (is_resource($Object)) { - - return '** '.(string)$Object.' **'; - - } else - if (is_object($Object)) { - - if ($ObjectDepth > $this->options['maxObjectDepth']) { - return '** Max Object Depth ('.$this->options['maxObjectDepth'].') **'; - } - - foreach ($this->objectStack as $refVal) { - if ($refVal === $Object) { - return '** Recursion ('.get_class($Object).') **'; - } - } - array_push($this->objectStack, $Object); - - $return['__className'] = $class = get_class($Object); - - $members = (array)$Object; - - // Include all members that are not defined in the class - // but exist in the object - foreach( $members as $raw_name => $value ) { - - $name = $raw_name; - - if ($name{0} == "\0") { - $parts = explode("\0", $name); - $name = $parts[2]; - } - - if(!isset($properties[$name])) { - $name = 'undeclared:'.$name; - - if(!(isset($this->objectFilters[$class]) - && is_array($this->objectFilters[$class]) - && in_array($raw_name,$this->objectFilters[$class]))) { - - $return[$name] = $this->encodeObject($value, $ObjectDepth + 1, 1); - } else { - $return[$name] = '** Excluded by Filter **'; - } - } - } - - array_pop($this->objectStack); - - } elseif (is_array($Object)) { - - if ($ArrayDepth > $this->options['maxArrayDepth']) { - return '** Max Array Depth ('.$this->options['maxArrayDepth'].') **'; - } - - foreach ($Object as $key => $val) { - - // Encoding the $GLOBALS PHP array causes an infinite loop - // if the recursion is not reset here as it contains - // a reference to itself. This is the only way I have come up - // with to stop infinite recursion in this case. - if($key=='GLOBALS' - && is_array($val) - && array_key_exists('GLOBALS',$val)) { - $val['GLOBALS'] = '** Recursion (GLOBALS) **'; - } - - $return[$key] = $this->encodeObject($val, 1, $ArrayDepth + 1); - } - } else { - if($this->is_utf8($Object)) { - return $Object; - } else { - return utf8_encode($Object); - } - } - return $return; - - } - - /** - * Returns true if $string is valid UTF-8 and false otherwise. - * - * @param mixed $str String to be tested - * @return boolean - */ - function is_utf8($str) { - $c=0; $b=0; - $bits=0; - $len=strlen($str); - for($i=0; $i<$len; $i++){ - $c=ord($str[$i]); - if($c > 128){ - if(($c >= 254)) return false; - elseif($c >= 252) $bits=6; - elseif($c >= 248) $bits=5; - elseif($c >= 240) $bits=4; - elseif($c >= 224) $bits=3; - elseif($c >= 192) $bits=2; - else return false; - if(($i+$bits) > $len) return false; - while($bits > 1){ - $i++; - $b=ord($str[$i]); - if($b < 128 || $b > 191) return false; - $bits--; - } - } - } - return true; - } - - /** - * Converts to and from JSON format. - * - * JSON (JavaScript Object Notation) is a lightweight data-interchange - * format. It is easy for humans to read and write. It is easy for machines - * to parse and generate. It is based on a subset of the JavaScript - * Programming Language, Standard ECMA-262 3rd Edition - December 1999. - * This feature can also be found in Python. JSON is a text format that is - * completely language independent but uses conventions that are familiar - * to programmers of the C-family of languages, including C, C++, C#, Java, - * JavaScript, Perl, TCL, and many others. These properties make JSON an - * ideal data-interchange language. - * - * This package provides a simple encoder and decoder for JSON notation. It - * is intended for use with client-side Javascript applications that make - * use of HTTPRequest to perform server communication functions - data can - * be encoded into JSON notation for use in a client-side javascript, or - * decoded from incoming Javascript requests. JSON format is native to - * Javascript, and can be directly eval()'ed with no further parsing - * overhead - * - * All strings should be in ASCII or UTF-8 format! - * - * LICENSE: Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: Redistributions of source code must retain the - * above copyright notice, this list of conditions and the following - * disclaimer. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR - * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE - * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * @category - * @package Services_JSON - * @author Michal Migurski - * @author Matt Knapp - * @author Brett Stimmerman - * @author Christoph Dorn - * @copyright 2005 Michal Migurski - * @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $ - * @license http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 - */ - - - /** - * Keep a list of objects as we descend into the array so we can detect recursion. - */ - var $json_objectStack = array(); - - - /** - * convert a string from one UTF-8 char to one UTF-16 char - * - * Normally should be handled by mb_convert_encoding, but - * provides a slower PHP-only method for installations - * that lack the multibye string extension. - * - * @param string $utf8 UTF-8 character - * @return string UTF-16 character - * @access private - */ - function json_utf82utf16($utf8) - { - // oh please oh please oh please oh please oh please - if(function_exists('mb_convert_encoding')) { - return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); - } - - switch(strlen($utf8)) { - case 1: - // this case should never be reached, because we are in ASCII range - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return $utf8; - - case 2: - // return a UTF-16 character from a 2-byte UTF-8 char - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0x07 & (ord($utf8{0}) >> 2)) - . chr((0xC0 & (ord($utf8{0}) << 6)) - | (0x3F & ord($utf8{1}))); - - case 3: - // return a UTF-16 character from a 3-byte UTF-8 char - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr((0xF0 & (ord($utf8{0}) << 4)) - | (0x0F & (ord($utf8{1}) >> 2))) - . chr((0xC0 & (ord($utf8{1}) << 6)) - | (0x7F & ord($utf8{2}))); - } - - // ignoring UTF-32 for now, sorry - return ''; - } - - /** - * encodes an arbitrary variable into JSON format - * - * @param mixed $var any number, boolean, string, array, or object to be encoded. - * see argument 1 to Services_JSON() above for array-parsing behavior. - * if var is a strng, note that encode() always expects it - * to be in ASCII or UTF-8 format! - * - * @return mixed JSON string representation of input var or an error if a problem occurs - * @access public - */ - function json_encode($var) - { - - if(is_object($var)) { - if(in_array($var,$this->json_objectStack)) { - return '"** Recursion **"'; - } - } - - switch (gettype($var)) { - case 'boolean': - return $var ? 'true' : 'false'; - - case 'NULL': - return 'null'; - - case 'integer': - return (int) $var; - - case 'double': - case 'float': - return (float) $var; - - case 'string': - // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT - $ascii = ''; - $strlen_var = strlen($var); - - /* - * Iterate over every character in the string, - * escaping with a slash or encoding to UTF-8 where necessary - */ - for ($c = 0; $c < $strlen_var; ++$c) { - - $ord_var_c = ord($var{$c}); - - switch (true) { - case $ord_var_c == 0x08: - $ascii .= '\b'; - break; - case $ord_var_c == 0x09: - $ascii .= '\t'; - break; - case $ord_var_c == 0x0A: - $ascii .= '\n'; - break; - case $ord_var_c == 0x0C: - $ascii .= '\f'; - break; - case $ord_var_c == 0x0D: - $ascii .= '\r'; - break; - - case $ord_var_c == 0x22: - case $ord_var_c == 0x2F: - case $ord_var_c == 0x5C: - // double quote, slash, slosh - $ascii .= '\\'.$var{$c}; - break; - - case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): - // characters U-00000000 - U-0000007F (same as ASCII) - $ascii .= $var{$c}; - break; - - case (($ord_var_c & 0xE0) == 0xC0): - // characters U-00000080 - U-000007FF, mask 110XXXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, ord($var{$c + 1})); - $c += 1; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xF0) == 0xE0): - // characters U-00000800 - U-0000FFFF, mask 1110XXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2})); - $c += 2; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xF8) == 0xF0): - // characters U-00010000 - U-001FFFFF, mask 11110XXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3})); - $c += 3; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xFC) == 0xF8): - // characters U-00200000 - U-03FFFFFF, mask 111110XX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3}), - ord($var{$c + 4})); - $c += 4; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xFE) == 0xFC): - // characters U-04000000 - U-7FFFFFFF, mask 1111110X - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3}), - ord($var{$c + 4}), - ord($var{$c + 5})); - $c += 5; - $utf16 = $this->json_utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - } - } - - return '"'.$ascii.'"'; - - case 'array': - /* - * As per JSON spec if any array key is not an integer - * we must treat the the whole array as an object. We - * also try to catch a sparsely populated associative - * array with numeric keys here because some JS engines - * will create an array with empty indexes up to - * max_index which can cause memory issues and because - * the keys, which may be relevant, will be remapped - * otherwise. - * - * As per the ECMA and JSON specification an object may - * have any string as a property. Unfortunately due to - * a hole in the ECMA specification if the key is a - * ECMA reserved word or starts with a digit the - * parameter is only accessible using ECMAScript's - * bracket notation. - */ - - // treat as a JSON object - if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { - - $this->json_objectStack[] = $var; - - $properties = array_map(array($this, 'json_name_value'), - array_keys($var), - array_values($var)); - - array_pop($this->json_objectStack); - - return '{' . join(',', $properties) . '}'; - } - - $this->json_objectStack[] = $var; - - // treat it like a regular array - $elements = array_map(array($this, 'json_encode'), $var); - - array_pop($this->json_objectStack); - - return '[' . join(',', $elements) . ']'; - - case 'object': - $vars = FirePHP::encodeObject($var); - - $this->json_objectStack[] = $var; - - $properties = array_map(array($this, 'json_name_value'), - array_keys($vars), - array_values($vars)); - - array_pop($this->json_objectStack); - - return '{' . join(',', $properties) . '}'; - - default: - return null; - } - } - - /** - * array-walking function for use in generating JSON-formatted name-value pairs - * - * @param string $name name of key to use - * @param mixed $value reference to an array element to be encoded - * - * @return string JSON-formatted name-value pair, like '"name":value' - * @access private - */ - function json_name_value($name, $value) - { - // Encoding the $GLOBALS PHP array causes an infinite loop - // if the recursion is not reset here as it contains - // a reference to itself. This is the only way I have come up - // with to stop infinite recursion in this case. - if($name=='GLOBALS' - && is_array($value) - && array_key_exists('GLOBALS',$value)) { - $value['GLOBALS'] = '** Recursion **'; - } - - $encoded_value = $this->json_encode($value); - - return $this->json_encode(strval($name)) . ':' . $encoded_value; - } -} - diff --git a/gui/baculum/framework/3rdParty/FirePHPCore/LICENSE b/gui/baculum/framework/3rdParty/FirePHPCore/LICENSE deleted file mode 100644 index 3e390f9d96..0000000000 --- a/gui/baculum/framework/3rdParty/FirePHPCore/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -Software License Agreement (New BSD License) - -Copyright (c) 2006-2009, Christoph Dorn -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of Christoph Dorn nor the names of its - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/gui/baculum/framework/3rdParty/FirePHPCore/fb.php b/gui/baculum/framework/3rdParty/FirePHPCore/fb.php deleted file mode 100644 index 9d1857cbc9..0000000000 --- a/gui/baculum/framework/3rdParty/FirePHPCore/fb.php +++ /dev/null @@ -1,261 +0,0 @@ - - * @license http://www.opensource.org/licenses/bsd-license.php - * @package FirePHP - */ - -require_once dirname(__FILE__).'/FirePHP.class.php'; - -/** - * Sends the given data to the FirePHP Firefox Extension. - * The data can be displayed in the Firebug Console or in the - * "Server" request tab. - * - * @see http://www.firephp.org/Wiki/Reference/Fb - * @param mixed $Object - * @return true - * @throws Exception - */ -function fb() -{ - $instance = FirePHP::getInstance(true); - - $args = func_get_args(); - return call_user_func_array(array($instance,'fb'),$args); -} - - -class FB -{ - /** - * Enable and disable logging to Firebug - * - * @see FirePHP->setEnabled() - * @param boolean $Enabled TRUE to enable, FALSE to disable - * @return void - */ - public static function setEnabled($Enabled) { - $instance = FirePHP::getInstance(true); - $instance->setEnabled($Enabled); - } - - /** - * Check if logging is enabled - * - * @see FirePHP->getEnabled() - * @return boolean TRUE if enabled - */ - public static function getEnabled() { - $instance = FirePHP::getInstance(true); - return $instance->getEnabled(); - } - - /** - * Specify a filter to be used when encoding an object - * - * Filters are used to exclude object members. - * - * @see FirePHP->setObjectFilter() - * @param string $Class The class name of the object - * @param array $Filter An array or members to exclude - * @return void - */ - public static function setObjectFilter($Class, $Filter) { - $instance = FirePHP::getInstance(true); - $instance->setObjectFilter($Class, $Filter); - } - - /** - * Set some options for the library - * - * @see FirePHP->setOptions() - * @param array $Options The options to be set - * @return void - */ - public static function setOptions($Options) { - $instance = FirePHP::getInstance(true); - $instance->setOptions($Options); - } - - /** - * Get options for the library - * - * @see FirePHP->getOptions() - * @return array The options - */ - public static function getOptions() { - $instance = FirePHP::getInstance(true); - return $instance->getOptions(); - } - - /** - * Log object to firebug - * - * @see http://www.firephp.org/Wiki/Reference/Fb - * @param mixed $Object - * @return true - * @throws Exception - */ - public static function send() - { - $instance = FirePHP::getInstance(true); - $args = func_get_args(); - return call_user_func_array(array($instance,'fb'),$args); - } - - /** - * Start a group for following messages - * - * Options: - * Collapsed: [true|false] - * Color: [#RRGGBB|ColorName] - * - * @param string $Name - * @param array $Options OPTIONAL Instructions on how to log the group - * @return true - */ - public static function group($Name, $Options=null) { - $instance = FirePHP::getInstance(true); - return $instance->group($Name, $Options); - } - - /** - * Ends a group you have started before - * - * @return true - * @throws Exception - */ - public static function groupEnd() { - return self::send(null, null, FirePHP::GROUP_END); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::LOG - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - public static function log($Object, $Label=null) { - return self::send($Object, $Label, FirePHP::LOG); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::INFO - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - public static function info($Object, $Label=null) { - return self::send($Object, $Label, FirePHP::INFO); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::WARN - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - public static function warn($Object, $Label=null) { - return self::send($Object, $Label, FirePHP::WARN); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::ERROR - * @param mixes $Object - * @param string $Label - * @return true - * @throws Exception - */ - public static function error($Object, $Label=null) { - return self::send($Object, $Label, FirePHP::ERROR); - } - - /** - * Dumps key and variable to firebug server panel - * - * @see FirePHP::DUMP - * @param string $Key - * @param mixed $Variable - * @return true - * @throws Exception - */ - public static function dump($Key, $Variable) { - return self::send($Variable, $Key, FirePHP::DUMP); - } - - /** - * Log a trace in the firebug console - * - * @see FirePHP::TRACE - * @param string $Label - * @return true - * @throws Exception - */ - public static function trace($Label) { - return self::send($Label, FirePHP::TRACE); - } - - /** - * Log a table in the firebug console - * - * @see FirePHP::TABLE - * @param string $Label - * @param string $Table - * @return true - * @throws Exception - */ - public static function table($Label, $Table) { - return self::send($Table, $Label, FirePHP::TABLE); - } - -} - diff --git a/gui/baculum/framework/3rdParty/FirePHPCore/fb.php4 b/gui/baculum/framework/3rdParty/FirePHPCore/fb.php4 deleted file mode 100644 index 5b69e34873..0000000000 --- a/gui/baculum/framework/3rdParty/FirePHPCore/fb.php4 +++ /dev/null @@ -1,251 +0,0 @@ - - * @author Michael Day - * @license http://www.opensource.org/licenses/bsd-license.php - * @package FirePHP - */ - -require_once dirname(__FILE__).'/FirePHP.class.php4'; - -/** - * Sends the given data to the FirePHP Firefox Extension. - * The data can be displayed in the Firebug Console or in the - * "Server" request tab. - * - * @see http://www.firephp.org/Wiki/Reference/Fb - * @param mixed $Object - * @return true - * @throws Exception - */ -function fb() -{ - $instance =& FirePHP::getInstance(true); - - $args = func_get_args(); - return call_user_func_array(array(&$instance,'fb'),$args); -} - - -class FB -{ - /** - * Enable and disable logging to Firebug - * - * @see FirePHP->setEnabled() - * @param boolean $Enabled TRUE to enable, FALSE to disable - * @return void - */ - function setEnabled($Enabled) { - $instance =& FirePHP::getInstance(true); - $instance->setEnabled($Enabled); - } - - /** - * Check if logging is enabled - * - * @see FirePHP->getEnabled() - * @return boolean TRUE if enabled - */ - function getEnabled() { - $instance =& FirePHP::getInstance(true); - return $instance->getEnabled(); - } - - /** - * Specify a filter to be used when encoding an object - * - * Filters are used to exclude object members. - * - * @see FirePHP->setObjectFilter() - * @param string $Class The class name of the object - * @param array $Filter An array or members to exclude - * @return void - */ - function setObjectFilter($Class, $Filter) { - $instance =& FirePHP::getInstance(true); - $instance->setObjectFilter($Class, $Filter); - } - - /** - * Set some options for the library - * - * @see FirePHP->setOptions() - * @param array $Options The options to be set - * @return void - */ - function setOptions($Options) { - $instance =& FirePHP::getInstance(true); - $instance->setOptions($Options); - } - - /** - * Get options for the library - * - * @see FirePHP->getOptions() - * @return array The options - */ - function getOptions() { - $instance =& FirePHP::getInstance(true); - return $instance->getOptions(); - } - - /** - * Log object to firebug - * - * @see http://www.firephp.org/Wiki/Reference/Fb - * @param mixed $Object - * @return true - */ - function send() - { - $instance =& FirePHP::getInstance(true); - $args = func_get_args(); - return call_user_func_array(array(&$instance,'fb'),$args); - } - - /** - * Start a group for following messages - * - * Options: - * Collapsed: [true|false] - * Color: [#RRGGBB|ColorName] - * - * @param string $Name - * @param array $Options OPTIONAL Instructions on how to log the group - * @return true - */ - function group($Name, $Options=null) { - $instance =& FirePHP::getInstance(true); - return $instance->group($Name, $Options); - } - - /** - * Ends a group you have started before - * - * @return true - */ - function groupEnd() { - return FB::send(null, null, FirePHP_GROUP_END); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::LOG - * @param mixes $Object - * @param string $Label - * @return true - */ - function log($Object, $Label=null) { - return FB::send($Object, $Label, FirePHP_LOG); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::INFO - * @param mixes $Object - * @param string $Label - * @return true - */ - function info($Object, $Label=null) { - return FB::send($Object, $Label, FirePHP_INFO); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::WARN - * @param mixes $Object - * @param string $Label - * @return true - */ - function warn($Object, $Label=null) { - return FB::send($Object, $Label, FirePHP_WARN); - } - - /** - * Log object with label to firebug console - * - * @see FirePHP::ERROR - * @param mixes $Object - * @param string $Label - * @return true - */ - function error($Object, $Label=null) { - return FB::send($Object, $Label, FirePHP_ERROR); - } - - /** - * Dumps key and variable to firebug server panel - * - * @see FirePHP::DUMP - * @param string $Key - * @param mixed $Variable - * @return true - */ - function dump($Key, $Variable) { - return FB::send($Variable, $Key, FirePHP_DUMP); - } - - /** - * Log a trace in the firebug console - * - * @see FirePHP::TRACE - * @param string $Label - * @return true - */ - function trace($Label) { - return FB::send($Label, FirePHP_TRACE); - } - - /** - * Log a table in the firebug console - * - * @see FirePHP::TABLE - * @param string $Label - * @param string $Table - * @return true - */ - function table($Label, $Table) { - return FB::send($Table, $Label, FirePHP_TABLE); - } -} diff --git a/gui/baculum/framework/3rdParty/Markdown/License.text b/gui/baculum/framework/3rdParty/Markdown/License.text deleted file mode 100644 index ea6a6a1ab6..0000000000 --- a/gui/baculum/framework/3rdParty/Markdown/License.text +++ /dev/null @@ -1,34 +0,0 @@ -Copyright (c) 2004-2005, John Gruber - -All rights reserved. - -Copyright (c) 2004-2005, Michel Fortin - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -* Neither the name "Markdown" nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -This software is provided by the copyright holders and contributors "as -is" and any express or implied warranties, including, but not limited -to, the implied warranties of merchantability and fitness for a -particular purpose are disclaimed. In no event shall the copyright owner -or contributors be liable for any direct, indirect, incidental, special, -exemplary, or consequential damages (including, but not limited to, -procurement of substitute goods or services; loss of use, data, or -profits; or business interruption) however caused and on any theory of -liability, whether in contract, strict liability, or tort (including -negligence or otherwise) arising in any way out of the use of this -software, even if advised of the possibility of such damage. diff --git a/gui/baculum/framework/3rdParty/Markdown/MarkdownParser.php b/gui/baculum/framework/3rdParty/Markdown/MarkdownParser.php deleted file mode 100644 index b581dcb52e..0000000000 --- a/gui/baculum/framework/3rdParty/Markdown/MarkdownParser.php +++ /dev/null @@ -1,1256 +0,0 @@ - -# -# Copyright (c) 2004-2005 Michel Fortin - PHP Port -# -# - -/** - * PHP5 version of the markdown parser. - * Usage: - * - * $markdown = new MarkdownParser; - * echo $markdown->parse($text); - * - */ -class MarkdownParser -{ - private static $md_nested_brackets; - private static $md_escape_table = array(); - private static $md_backslash_escape_table = array(); - private static $md_nested_brackets_depth = 6; - - protected $md_empty_element_suffix = " />"; # Change to ">" for HTML output - protected $md_tab_width = 4; - - private $md_list_level = 0; - private $md_urls = array(); - private $md_titles = array(); - private $md_html_blocks = array(); - - public function __construct() - { - if(is_null(self::$md_nested_brackets)) - $this->initialize(); - } - - private function initialize() - { - self::$md_nested_brackets = - str_repeat('(?>[^\[\]]+|\[', self::$md_nested_brackets_depth). - str_repeat('\])*', self::$md_nested_brackets_depth); - - self::$md_escape_table = array( - "\\" => md5("\\"), - "`" => md5("`"), - "*" => md5("*"), - "_" => md5("_"), - "{" => md5("{"), - "}" => md5("}"), - "[" => md5("["), - "]" => md5("]"), - "(" => md5("("), - ")" => md5(")"), - ">" => md5(">"), - "#" => md5("#"), - "+" => md5("+"), - "-" => md5("-"), - "." => md5("."), - "!" => md5("!") - ); - - # Table of hash values for escaped characters: - # Create an identical table but for escaped characters. - foreach (self::$md_escape_table as $key => $char) - self::$md_backslash_escape_table["\\$key"] = $char; - } - - public function parse($text) - { - # - # Main function. The order in which other subs are called here is - # essential. Link and image substitutions need to happen before - # _EscapeSpecialCharsWithinTagAttributes(), so that any *'s or _'s in the - # and tags get encoded. - # - # Clear the hashes. If we don't clear these, you get conflicts - # from other articles when generating a page which contains more than - # one article (e.g. an index page that shows the N most recent - # articles): - $this->md_urls = array(); - $this->md_titles = array(); - $this->md_html_blocks = array(); - - # Standardize line endings: - # DOS to Unix and Mac to Unix - $text = str_replace(array("\r\n", "\r"), "\n", $text); - - # Make sure $text ends with a couple of newlines: - $text .= "\n\n"; - - # Convert all tabs to spaces. - $text = $this->_Detab($text); - - # Strip any lines consisting only of spaces and tabs. - # This makes subsequent regexen easier to write, because we can - # match consecutive blank lines with /\n+/ instead of something - # contorted like /[ \t]*\n+/ . - $text = preg_replace('/^[ \t]+$/m', '', $text); - - # Turn block-level HTML blocks into hash entries - $text = $this->_HashHTMLBlocks($text); - - # Strip link definitions, store in hashes. - $text = $this->_StripLinkDefinitions($text); - - $text = $this->_RunBlockGamut($text); - - $text = $this->_UnescapeSpecialChars($text); - - return $text . "\n"; - } - - - private function _StripLinkDefinitions($text) { - # - # Strips link definitions from text, stores the URLs and titles in - # hash references. - # - $less_than_tab = $this->md_tab_width - 1; - - # Link defs are in the form: ^[id]: url "optional title" - $text = preg_replace_callback('{ - ^[ ]{0,'.$less_than_tab.'}\[(.+)\]: # id = $1 - [ \t]* - \n? # maybe *one* newline - [ \t]* - ? # url = $2 - [ \t]* - \n? # maybe one newline - [ \t]* - (?: - (?<=\s) # lookbehind for whitespace - ["(] - (.+?) # title = $3 - [")] - [ \t]* - )? # title is optional - (?:\n+|\Z) - }xm', - array($this,'_StripLinkDefinitions_callback'), - $text); - return $text; - } - - private function _StripLinkDefinitions_callback($matches) { - $link_id = strtolower($matches[1]); - $this->md_urls[$link_id] = $this->_EncodeAmpsAndAngles($matches[2]); - if (isset($matches[3])) - $this->md_titles[$link_id] = str_replace('"', '"', $matches[3]); - return ''; # String that will replace the block - } - - - private function _HashHTMLBlocks($text) { - $less_than_tab = $this->md_tab_width - 1; - - # Hashify HTML blocks: - # We only want to do this for block-level HTML tags, such as headers, - # lists, and tables. That's because we still want to wrap

s around - # "paragraphs" that are wrapped in non-block-level tags, such as anchors, - # phrase emphasis, and spans. The list of tags we're looking for is - # hard-coded: - $block_tags_a = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|'. - 'script|noscript|form|fieldset|iframe|math|ins|del'; - $block_tags_b = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|'. - 'script|noscript|form|fieldset|iframe|math'; - - # First, look for nested blocks, e.g.: - #

- #
- # tags for inner block must be indented. - #
- #
- # - # The outermost tags must start at the left margin for this to match, and - # the inner nested divs must be indented. - # We need to do this before the next, more liberal match, because the next - # match will start at the first `
` and stop at the first `
`. - $text = preg_replace_callback("{ - ( # save in $1 - ^ # start of line (with /m) - <($block_tags_a) # start tag = $2 - \\b # word break - (.*\\n)*? # any number of lines, minimally matching - # the matching end tag - [ \\t]* # trailing spaces/tabs - (?=\\n+|\\Z) # followed by a newline or end of document - ) - }xm", - array($this,'_HashHTMLBlocks_callback'), - $text); - - # - # Now match more liberally, simply from `\n` to `\n` - # - $text = preg_replace_callback("{ - ( # save in $1 - ^ # start of line (with /m) - <($block_tags_b) # start tag = $2 - \\b # word break - (.*\\n)*? # any number of lines, minimally matching - .* # the matching end tag - [ \\t]* # trailing spaces/tabs - (?=\\n+|\\Z) # followed by a newline or end of document - ) - }xm", - array($this,'_HashHTMLBlocks_callback'), - $text); - - # Special case just for
. It was easier to make a special case than - # to make the other regex more complicated. - $text = preg_replace_callback('{ - (?: - (?<=\n\n) # Starting after a blank line - | # or - \A\n? # the beginning of the doc - ) - ( # save in $1 - [ ]{0,'.$less_than_tab.'} - <(hr) # start tag = $2 - \b # word break - ([^<>])*? # - /?> # the matching end tag - [ \t]* - (?=\n{2,}|\Z) # followed by a blank line or end of document - ) - }x', - array($this,'_HashHTMLBlocks_callback'), - $text); - - # Special case for standalone HTML comments: - $text = preg_replace_callback('{ - (?: - (?<=\n\n) # Starting after a blank line - | # or - \A\n? # the beginning of the doc - ) - ( # save in $1 - [ ]{0,'.$less_than_tab.'} - (?s: - - ) - [ \t]* - (?=\n{2,}|\Z) # followed by a blank line or end of document - ) - }x', - array($this,'_HashHTMLBlocks_callback'), - $text); - - return $text; - } - private function _HashHTMLBlocks_callback($matches) { - $text = $matches[1]; - $key = md5($text); - $this->md_html_blocks[$key] = $text; - return "\n\n$key\n\n"; # String that will replace the block - } - - - private function _RunBlockGamut($text) { - # - # These are all the transformations that form block-level - # tags like paragraphs, headers, and list items. - # - $text = $this->_DoHeaders($text); - - # Do Horizontal Rules: - $text = preg_replace( - array('{^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$}mx', - '{^[ ]{0,2}([ ]? -[ ]?){3,}[ \t]*$}mx', - '{^[ ]{0,2}([ ]? _[ ]?){3,}[ \t]*$}mx'), - "\nmd_empty_element_suffix}\n", - $text); - - $text = $this->_DoLists($text); - $text = $this->_DoCodeBlocks($text); - $text = $this->_DoBlockQuotes($text); - - # We already ran _HashHTMLBlocks() before, in Markdown(), but that - # was to escape raw HTML in the original Markdown source. This time, - # we're escaping the markup we've just created, so that we don't wrap - #

tags around block-level tags. - $text = $this->_HashHTMLBlocks($text); - $text = $this->_FormParagraphs($text); - - return $text; - } - - - private function _RunSpanGamut($text) { - # - # These are all the transformations that occur *within* block-level - # tags like paragraphs, headers, and list items. - # - - $text = $this->_DoCodeSpans($text); - - $text = $this->_EscapeSpecialChars($text); - - # Process anchor and image tags. Images must come first, - # because ![foo][f] looks like an anchor. - $text = $this->_DoImages($text); - $text = $this->_DoAnchors($text); - - # Make links out of things like `` - # Must come after _DoAnchors(), because you can use < and > - # delimiters in inline links like [this](). - $text = $this->_DoAutoLinks($text); - $text = $this->_EncodeAmpsAndAngles($text); - $text = $this->_DoItalicsAndBold($text); - - # Do hard breaks: - $text = preg_replace('/ {2,}\n/', "md_empty_element_suffix}\n", $text); - - return $text; - } - - - private function _EscapeSpecialChars($text) { - $tokens = $this->_TokenizeHTML($text); - - $text = ''; # rebuild $text from the tokens - # $in_pre = 0; # Keep track of when we're inside

 or  tags.
-	#	$tags_to_skip = "!<(/?)(?:pre|code|kbd|script|math)[\s>]!";
-
-		foreach ($tokens as $cur_token) {
-			if ($cur_token[0] == 'tag') {
-				# Within tags, encode * and _ so they don't conflict
-				# with their use in Markdown for italics and strong.
-				# We're replacing each such character with its
-				# corresponding MD5 checksum value; this is likely
-				# overkill, but it should prevent us from colliding
-				# with the escape values by accident.
-				$cur_token[1] = str_replace(array('*', '_'),
-					array(self::$md_escape_table['*'], self::$md_escape_table['_']),
-					$cur_token[1]);
-				$text .= $cur_token[1];
-			} else {
-				$t = $cur_token[1];
-				$t = $this->_EncodeBackslashEscapes($t);
-				$text .= $t;
-			}
-		}
-		return $text;
-	}
-
-
-	private function _DoAnchors($text) {
-	#
-	# Turn Markdown link shortcuts into XHTML  tags.
-	#
-		#
-		# First, handle reference-style links: [link text] [id]
-		#
-		$bracket = self::$md_nested_brackets;
-		$text = preg_replace_callback("{
-			(					# wrap whole match in $1
-			  \\[
-				({$bracket})	# link text = $2
-			  \\]
-
-			  [ ]?				# one optional space
-			  (?:\\n[ ]*)?		# one optional newline followed by spaces
-
-			  \\[
-				(.*?)		# id = $3
-			  \\]
-			)
-			}xs",
-			array($this,'_DoAnchors_reference_callback'), $text);
-
-		#
-		# Next, inline-style links: [link text](url "optional title")
-		#
-		$text = preg_replace_callback("{
-			(				# wrap whole match in $1
-			  \\[
-				({$bracket})	# link text = $2
-			  \\]
-			  \\(			# literal paren
-				[ \\t]*
-				?	# href = $3
-				[ \\t]*
-				(			# $4
-				  (['\"])	# quote char = $5
-				  (.*?)		# Title = $6
-				  \\5		# matching quote
-				)?			# title is optional
-			  \\)
-			)
-			}xs",
-			array($this,'_DoAnchors_inline_callback'), $text);
-
-		return $text;
-	}
-	private function _DoAnchors_reference_callback($matches) {
-		$whole_match = $matches[1];
-		$link_text   = $matches[2];
-		$link_id     = strtolower($matches[3]);
-
-		if ($link_id == "") {
-			$link_id = strtolower($link_text); # for shortcut links like [this][].
-		}
-
-		if (isset($this->md_urls[$link_id])) {
-			$url = $this->md_urls[$link_id];
-			# We've got to encode these to avoid conflicting with italics/bold.
-			$url = str_replace(array('*', '_'),
-							   array(self::$md_escape_table['*'], self::$md_escape_table['_']),
-							   $url);
-			$result = "md_titles[$link_id] ) ) {
-				$title = $this->md_titles[$link_id];
-				$title = str_replace(array('*',     '_'),
-									 array(self::$md_escape_table['*'],
-										   self::$md_escape_table['_']), $title);
-				$result .=  " title=\"$title\"";
-			}
-			$result .= ">$link_text";
-		}
-		else {
-			$result = $whole_match;
-		}
-		return $result;
-	}
-	private function _DoAnchors_inline_callback($matches) {
-		$whole_match	= $matches[1];
-		$link_text		= $matches[2];
-		$url			= $matches[3];
-		$title			=& $matches[6];
-
-		# We've got to encode these to avoid conflicting with italics/bold.
-		$url = str_replace(array('*', '_'),
-						   array(self::$md_escape_table['*'], self::$md_escape_table['_']),
-						   $url);
-		$result = " tags.
-	#
-		#
-		# First, handle reference-style labeled images: ![alt text][id]
-		#
-		$text = preg_replace_callback('{
-			(				# wrap whole match in $1
-			  !\[
-				('.self::$md_nested_brackets.')		# alt text = $2
-			  \]
-
-			  [ ]?				# one optional space
-			  (?:\n[ ]*)?		# one optional newline followed by spaces
-
-			  \[
-				(.*?)		# id = $3
-			  \]
-
-			)
-			}xs',
-			array($this,'_DoImages_reference_callback'), $text);
-
-		#
-		# Next, handle inline images:  ![alt text](url "optional title")
-		# Don't forget: encode * and _
-
-		$text = preg_replace_callback('{
-			(				# wrap whole match in $1
-			  !\[
-				('.self::$md_nested_brackets.')		# alt text = $2
-			  \]
-			  \(			# literal paren
-				[ \t]*
-				?	# src url = $3
-				[ \t]*
-				(			# $4
-				  ([\'"])	# quote char = $5
-				  (.*?)		# title = $6
-				  \5		# matching quote
-				  [ \t]*
-				)?			# title is optional
-			  \)
-			)
-			}xs',
-			array($this,'_DoImages_inline_callback'), $text);
-
-		return $text;
-	}
-	private function _DoImages_reference_callback($matches) {
-		$whole_match = $matches[1];
-		$alt_text    = $matches[2];
-		$link_id     = strtolower($matches[3]);
-
-		if ($link_id == "") {
-			$link_id = strtolower($alt_text); # for shortcut links like ![this][].
-		}
-
-		$alt_text = str_replace('"', '"', $alt_text);
-		if (isset($this->md_urls[$link_id])) {
-			$url = $this->md_urls[$link_id];
-			# We've got to encode these to avoid conflicting with italics/bold.
-			$url = str_replace(array('*', '_'),
-							   array(self::$md_escape_table['*'], self::$md_escape_table['_']),
-							   $url);
-			$result = "\"$alt_text\"";md_titles[$link_id])) {
-				$title = $this->md_titles[$link_id];
-				$title = str_replace(array('*', '_'),
-									 array(self::$md_escape_table['*'],
-										   self::$md_escape_table['_']), $title);
-				$result .=  " title=\"$title\"";
-			}
-			$result .= $this->md_empty_element_suffix;
-		}
-		else {
-			# If there's no such link ID, leave intact:
-			$result = $whole_match;
-		}
-
-		return $result;
-	}
-	private function _DoImages_inline_callback($matches) {
-		$whole_match	= $matches[1];
-		$alt_text		= $matches[2];
-		$url			= $matches[3];
-		$title			= '';
-		if (isset($matches[6])) {
-			$title		= $matches[6];
-		}
-
-		$alt_text = str_replace('"', '"', $alt_text);
-		$title    = str_replace('"', '"', $title);
-		# We've got to encode these to avoid conflicting with italics/bold.
-		$url = str_replace(array('*', '_'),
-						   array(self::$md_escape_table['*'], self::$md_escape_table['_']),
-						   $url);
-		$result = "\"$alt_text\"";md_empty_element_suffix;
-
-		return $result;
-	}
-
-
-	private function _DoHeaders($text) {
-		# Setext-style headers:
-		#	  Header 1
-		#	  ========
-		#
-		#	  Header 2
-		#	  --------
-		#
-		$text = preg_replace(
-			array('{ ^(.+)[ \t]*\n=+[ \t]*\n+ }emx',
-				  '{ ^(.+)[ \t]*\n-+[ \t]*\n+ }emx'),
-			array("'

'.\$this->_RunSpanGamut(\$this->_UnslashQuotes('\\1')).'

\n\n'", - "'

'.\$this->_RunSpanGamut(\$this->_UnslashQuotes('\\1')).'

\n\n'"), - $text); - - # atx-style headers: - # # Header 1 - # ## Header 2 - # ## Header 2 with closing hashes ## - # ... - # ###### Header 6 - # - $text = preg_replace("{ - ^(\\#{1,6}) # $1 = string of #'s - [ \\t]* - (.+?) # $2 = Header text - [ \\t]* - \\#* # optional closing #'s (not counted) - \\n+ - }xme", - "''.\$this->_RunSpanGamut(\$this->_UnslashQuotes('\\2')).'\n\n'", - $text); - - return $text; - } - - - private function _DoLists($text) { - # - # Form HTML ordered (numbered) and unordered (bulleted) lists. - # - $less_than_tab = $this->md_tab_width - 1; - - # Re-usable patterns to match list item bullets and number markers: - $marker_ul = '[*+-]'; - $marker_ol = '\d+[.]'; - $marker_any = "(?:$marker_ul|$marker_ol)"; - - $markers = array($marker_ul, $marker_ol); - - foreach ($markers as $marker) { - # Re-usable pattern to match any entirel ul or ol list: - $whole_list = ' - ( # $1 = whole list - ( # $2 - [ ]{0,'.$less_than_tab.'} - ('.$marker.') # $3 = first list item marker - [ \t]+ - ) - (?s:.+?) - ( # $4 - \z - | - \n{2,} - (?=\S) - (?! # Negative lookahead for another list item marker - [ \t]* - '.$marker.'[ \t]+ - ) - ) - ) - '; // mx - - # We use a different prefix before nested lists than top-level lists. - # See extended comment in _ProcessListItems(). - - if ($this->md_list_level) { - $text = preg_replace_callback('{ - ^ - '.$whole_list.' - }mx', - array($this,'_DoLists_callback_top'), $text); - } - else { - $text = preg_replace_callback('{ - (?:(?<=\n\n)|\A\n?) - '.$whole_list.' - }mx', - array($this,'_DoLists_callback_nested'), $text); - } - } - - return $text; - } - private function _DoLists_callback_top($matches) { - # Re-usable patterns to match list item bullets and number markers: - $marker_ul = '[*+-]'; - $marker_ol = '\d+[.]'; - $marker_any = "(?:$marker_ul|$marker_ol)"; - - $list = $matches[1]; - $list_type = preg_match("/$marker_ul/", $matches[3]) ? "ul" : "ol"; - - $marker_any = ( $list_type == "ul" ? $marker_ul : $marker_ol ); - - # Turn double returns into triple returns, so that we can make a - # paragraph for the last item in a list, if necessary: - $list = preg_replace("/\n{2,}/", "\n\n\n", $list); - $result = $this->_ProcessListItems($list, $marker_any); - - # Trim any trailing whitespace, to put the closing `` - # up on the preceding line, to get it past the current stupid - # HTML block parser. This is a hack to work around the terrible - # hack that is the HTML block parser. - $result = rtrim($result); - $result = "<$list_type>" . $result . "\n"; - return $result; - } - private function _DoLists_callback_nested($matches) { - # Re-usable patterns to match list item bullets and number markers: - $marker_ul = '[*+-]'; - $marker_ol = '\d+[.]'; - $marker_any = "(?:$marker_ul|$marker_ol)"; - - $list = $matches[1]; - $list_type = preg_match("/$marker_ul/", $matches[3]) ? "ul" : "ol"; - - $marker_any = ( $list_type == "ul" ? $marker_ul : $marker_ol ); - - # Turn double returns into triple returns, so that we can make a - # paragraph for the last item in a list, if necessary: - $list = preg_replace("/\n{2,}/", "\n\n\n", $list); - $result = $this->_ProcessListItems($list, $marker_any); - $result = "<$list_type>\n" . $result . "\n"; - return $result; - } - - - private function _ProcessListItems($list_str, $marker_any) { - # - # Process the contents of a single ordered or unordered list, splitting it - # into individual list items. - # - - # The $md_list_level keeps track of when we're inside a list. - # Each time we enter a list, we increment it; when we leave a list, - # we decrement. If it's zero, we're not in a list anymore. - # - # We do this because when we're not inside a list, we want to treat - # something like this: - # - # I recommend upgrading to version - # 8. Oops, now this line is treated - # as a sub-list. - # - # As a single paragraph, despite the fact that the second line starts - # with a digit-period-space sequence. - # - # Whereas when we're inside a list (or sub-list), that line will be - # treated as the start of a sub-list. What a kludge, huh? This is - # an aspect of Markdown's syntax that's hard to parse perfectly - # without resorting to mind-reading. Perhaps the solution is to - # change the syntax rules such that sub-lists must start with a - # starting cardinal number; e.g. "1." or "a.". - - $this->md_list_level++; - - # trim trailing blank lines: - $list_str = preg_replace("/\n{2,}\\z/", "\n", $list_str); - - $list_str = preg_replace_callback('{ - (\n)? # leading line = $1 - (^[ \t]*) # leading whitespace = $2 - ('.$marker_any.') [ \t]+ # list marker = $3 - ((?s:.+?) # list item text = $4 - (\n{1,2})) - (?= \n* (\z | \2 ('.$marker_any.') [ \t]+)) - }xm', - array($this,'_ProcessListItems_callback'), $list_str); - - $this->md_list_level--; - return $list_str; - } - private function _ProcessListItems_callback($matches) { - $item = $matches[4]; - $leading_line =& $matches[1]; - $leading_space =& $matches[2]; - - if ($leading_line || preg_match('/\n{2,}/', $item)) { - $item = $this->_RunBlockGamut($this->_Outdent($item)); - } - else { - # Recursion for sub-lists: - $item = $this->_DoLists($this->_Outdent($item)); - $item = preg_replace('/\n+$/', '', $item); - $item = $this->_RunSpanGamut($item); - } - - return "
  • " . $item . "
  • \n"; - } - - - private function _DoCodeBlocks($text) { - # - # Process Markdown `
    ` blocks.
    -	#
    -		$text = preg_replace_callback('{
    -				(?:\n\n|\A)
    -				(	            # $1 = the code block -- one or more lines, starting with a space/tab
    -				  (?:
    -					(?:[ ]{'.$this->md_tab_width.'} | \t)  # Lines must start with a tab or a tab-width of spaces
    -					.*\n+
    -				  )+
    -				)
    -				((?=^[ ]{0,'.$this->md_tab_width.'}\S)|\Z)	# Lookahead for non-space at line-start, or end of doc
    -			}xm',
    -			array($this,'_DoCodeBlocks_callback'), $text);
    -
    -		return $text;
    -	}
    -	private function _DoCodeBlocks_callback($matches) {
    -		$codeblock = $matches[1];
    -
    -		$codeblock = $this->_EncodeCode($this->_Outdent($codeblock));
    -	//	$codeblock = _Detab($codeblock);
    -		# trim leading newlines and trailing whitespace
    -		$codeblock = preg_replace(array('/\A\n+/', '/\s+\z/'), '', $codeblock);
    -
    -		$result = "\n\n
    " . $codeblock . "\n
    \n\n"; - - return $result; - } - - - private function _DoCodeSpans($text) { - # - # * Backtick quotes are used for spans. - # - # * You can use multiple backticks as the delimiters if you want to - # include literal backticks in the code span. So, this input: - # - # Just type ``foo `bar` baz`` at the prompt. - # - # Will translate to: - # - #

    Just type foo `bar` baz at the prompt.

    - # - # There's no arbitrary limit to the number of backticks you - # can use as delimters. If you need three consecutive backticks - # in your code, use four for delimiters, etc. - # - # * You can use spaces to get literal backticks at the edges: - # - # ... type `` `bar` `` ... - # - # Turns to: - # - # ... type `bar` ... - # - $text = preg_replace_callback('@ - (?_EncodeCode($c); - return "$c"; - } - - - private function _EncodeCode($_) { - # - # Encode/escape certain characters inside Markdown code runs. - # The point is that in code, these characters are literals, - # and lose their special Markdown meanings. - # - # Encode all ampersands; HTML entities are not - # entities within a Markdown code span. - $_ = str_replace('&', '&', $_); - - # Do the angle bracket song and dance: - $_ = str_replace(array('<', '>'), - array('<', '>'), $_); - - # Now, escape characters that are magic in Markdown: - $_ = str_replace(array_keys(self::$md_escape_table), - array_values(self::$md_escape_table), $_); - - return $_; - } - - - private function _DoItalicsAndBold($text) { - # must go first: - $text = preg_replace('{ - ( # $1: Marker - (?\2', $text); - # Then : - $text = preg_replace( - '{ ( (?\2', $text); - - return $text; - } - - - private function _DoBlockQuotes($text) { - $text = preg_replace_callback('/ - ( # Wrap whole match in $1 - ( - ^[ \t]*>[ \t]? # ">" at the start of a line - .+\n # rest of the first line - (.+\n)* # subsequent consecutive lines - \n* # blanks - )+ - ) - /xm', - array($this,'_DoBlockQuotes_callback'), $text); - - return $text; - } - private function _DoBlockQuotes_callback($matches) { - $bq = $matches[1]; - # trim one level of quoting - trim whitespace-only lines - $bq = preg_replace(array('/^[ \t]*>[ \t]?/m', '/^[ \t]+$/m'), '', $bq); - $bq = $this->_RunBlockGamut($bq); # recurse - - $bq = preg_replace('/^/m', " ", $bq); - # These leading spaces screw with
     content, so we need to fix that:
    -		$bq = preg_replace_callback('{(\s*
    .+?
    )}sx', - array($this,'_DoBlockQuotes_callback2'), $bq); - - return "
    \n$bq\n
    \n\n"; - } - private function _DoBlockQuotes_callback2($matches) { - $pre = $matches[1]; - $pre = preg_replace('/^ /m', '', $pre); - return $pre; - } - - - private function _FormParagraphs($text) { - # - # Params: - # $text - string to process with html

    tags - # - # Strip leading and trailing lines: - $text = preg_replace(array('/\A\n+/', '/\n+\z/'), '', $text); - - $grafs = preg_split('/\n{2,}/', $text, -1, PREG_SPLIT_NO_EMPTY); - - # - # Wrap

    tags. - # - foreach ($grafs as $key => $value) { - if (!isset( $this->md_html_blocks[$value] )) { - $value = $this->_RunSpanGamut($value); - $value = preg_replace('/^([ \t]*)/', '

    ', $value); - $value .= "

    "; - $grafs[$key] = $value; - } - } - - # - # Unhashify HTML blocks - # - foreach ($grafs as $key => $value) { - if (isset( $this->md_html_blocks[$value] )) { - $grafs[$key] = $this->md_html_blocks[$value]; - } - } - - return implode("\n\n", $grafs); - } - - - private function _EncodeAmpsAndAngles($text) { - # Smart processing for ampersands and angle brackets that need to be encoded. - - # Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: - # http://bumppo.net/projects/amputator/ - $text = preg_replace('/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/', - '&', $text);; - - # Encode naked <'s - $text = preg_replace('{<(?![a-z/?\$!])}i', '<', $text); - - return $text; - } - - - private function _EncodeBackslashEscapes($text) { - # - # Parameter: String. - # Returns: The string, with after processing the following backslash - # escape sequences. - # - # Must process escaped backslashes first. - return str_replace(array_keys(self::$md_backslash_escape_table), - array_values(self::$md_backslash_escape_table), $text); - } - - - private function _DoAutoLinks($text) { - $text = preg_replace("!<((https?|ftp):[^'\">\\s]+)>!", - '
    \1', $text); - - # Email addresses: - $text = preg_replace('{ - < - (?:mailto:)? - ( - [-.\w]+ - \@ - [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ - ) - > - }exi', - "\$this->_EncodeEmailAddress(\$this->_UnescapeSpecialChars(\$this->_UnslashQuotes('\\1')))", - $text); - - return $text; - } - - - private function _EncodeEmailAddress($addr) { - # - # Input: an email address, e.g. "foo@example.com" - # - # Output: the email address as a mailto link, with each character - # of the address encoded as either a decimal or hex entity, in - # the hopes of foiling most address harvesting spam bots. E.g.: - # - # foo - # @example.com - # - # Based by a filter by Matthew Wickline, posted to the BBEdit-Talk - # mailing list: - # - $addr = "mailto:" . $addr; - $length = strlen($addr); - - # leave ':' alone (to spot mailto: later) - $addr = preg_replace_callback('/([^\:])/', - array($this,'_EncodeEmailAddress_callback'), $addr); - - $addr = "$addr"; - # strip the mailto: from the visible part - $addr = preg_replace('/">.+?:/', '">', $addr); - - return $addr; - } - private function _EncodeEmailAddress_callback($matches) { - $char = $matches[1]; - $r = rand(0, 100); - # roughly 10% raw, 45% hex, 45% dec - # '@' *must* be encoded. I insist. - if ($r > 90 && $char != '@') return $char; - if ($r < 45) return '&#x'.dechex(ord($char)).';'; - return '&#'.ord($char).';'; - } - - - private function _UnescapeSpecialChars($text) { - # - # Swap back in all the special characters we've hidden. - # - return str_replace(array_values(self::$md_escape_table), - array_keys(self::$md_escape_table), $text); - } - - - # _TokenizeHTML is shared between PHP Markdown and PHP SmartyPants. - # We only define it if it is not already defined. - - private function _TokenizeHTML($str) { - # - # Parameter: String containing HTML markup. - # Returns: An array of the tokens comprising the input - # string. Each token is either a tag (possibly with nested, - # tags contained therein, such as , or a - # run of text between tags. Each element of the array is a - # two-element array; the first is either 'tag' or 'text'; - # the second is the actual value. - # - # - # Regular expression derived from the _tokenize() subroutine in - # Brad Choate's MTRegex plugin. - # - # - $index = 0; - $tokens = array(); - - $match = '(?s:)|'. # comment - '(?s:<\?.*?\?>)|'. # processing instruction - # regular tags - '(?:<[/!$]?[-a-zA-Z0-9:]+\b(?>[^"\'>]+|"[^"]*"|\'[^\']*\')*>)'; - - $parts = preg_split("{($match)}", $str, -1, PREG_SPLIT_DELIM_CAPTURE); - - foreach ($parts as $part) { - if (++$index % 2 && $part != '') - $tokens[] = array('text', $part); - else - $tokens[] = array('tag', $part); - } - - return $tokens; - } - - private function _Outdent($text) { - # - # Remove one level of line-leading tabs or spaces - # - return preg_replace("/^(\\t|[ ]{1,".$this->md_tab_width."})/m", "", $text); - } - - - private function _Detab($text) { - # - # Replace tabs with the appropriate amount of space. - # - # For each line we separate the line in blocks delemited by - # tab characters. Then we reconstruct every line by adding the - # appropriate number of space between each blocks. - - $lines = explode("\n", $text); - $text = ""; - - foreach ($lines as $line) { - # Split in blocks. - $blocks = explode("\t", $line); - # Add each blocks to the line. - $line = $blocks[0]; - unset($blocks[0]); # Do not add first block twice. - foreach ($blocks as $block) { - # Calculate amount of space, insert spaces, insert block. - $amount = $this->md_tab_width - strlen($line) % $this->md_tab_width; - $line .= str_repeat(" ", $amount) . $block; - } - $text .= "$line\n"; - } - return $text; - } - - - private function _UnslashQuotes($text) { - # - # This function is useful to remove automaticaly slashed double quotes - # when using preg_replace and evaluating an expression. - # Parameter: String. - # Returns: The string with any slash-double-quote (\") sequence replaced - # by a single double quote. - # - return str_replace('\"', '"', $text); - } -} - -/* - -PHP Markdown -============ - -Description ------------ - -This is a PHP translation of the original Markdown formatter written in -Perl by John Gruber. - -Markdown is a text-to-HTML filter; it translates an easy-to-read / -easy-to-write structured text format into HTML. Markdown's text format -is most similar to that of plain text email, and supports features such -as headers, *emphasis*, code blocks, blockquotes, and links. - -Markdown's syntax is designed not as a generic markup language, but -specifically to serve as a front-end to (X)HTML. You can use span-level -HTML tags anywhere in a Markdown document, and you can use block level -HTML tags (like
    and as well). - -For more information about Markdown's syntax, see: - - - - -Bugs ----- - -To file bug reports please send email to: - - - -Please include with your report: (1) the example input; (2) the output you -expected; (3) the output Markdown actually produced. - - -Version History ---------------- - -See the readme file for detailed release notes for this version. - -1.0.1c - 9 Dec 2005 - -1.0.1b - 6 Jun 2005 - -1.0.1a - 15 Apr 2005 - -1.0.1 - 16 Dec 2004 - -1.0 - 21 Aug 2004 - - -Author & Contributors ---------------------- - -Original Perl version by John Gruber - - -PHP port and other contributions by Michel Fortin - - - -Copyright and License ---------------------- - -Copyright (c) 2004-2005 Michel Fortin - -All rights reserved. - -Copyright (c) 2003-2004 John Gruber - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -* Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -* Neither the name "Markdown" nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - -This software is provided by the copyright holders and contributors "as -is" and any express or implied warranties, including, but not limited -to, the implied warranties of merchantability and fitness for a -particular purpose are disclaimed. In no event shall the copyright owner -or contributors be liable for any direct, indirect, incidental, special, -exemplary, or consequential damages (including, but not limited to, -procurement of substitute goods or services; loss of use, data, or -profits; or business interruption) however caused and on any theory of -liability, whether in contract, strict liability, or tort (including -negligence or otherwise) arising in any way out of the use of this -software, even if advised of the possibility of such damage. - -*/ diff --git a/gui/baculum/framework/3rdParty/Parsedown/LICENSE.txt b/gui/baculum/framework/3rdParty/Parsedown/LICENSE.txt deleted file mode 100644 index baca86f5b8..0000000000 --- a/gui/baculum/framework/3rdParty/Parsedown/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 Emanuil Rusev, erusev.com - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/gui/baculum/framework/3rdParty/Parsedown/Parsedown.php b/gui/baculum/framework/3rdParty/Parsedown/Parsedown.php deleted file mode 100644 index ebc809741c..0000000000 --- a/gui/baculum/framework/3rdParty/Parsedown/Parsedown.php +++ /dev/null @@ -1,1135 +0,0 @@ -breaks_enabled = $breaks_enabled; - - return $this; - } - - private $breaks_enabled = false; - - # - # Synopsis - # - - # Markdown is intended to be easy-to-read by humans - those of us who read - # line by line, left to right, top to bottom. In order to take advantage of - # this, Parsedown tries to read in a similar way. It breaks texts into - # lines, it iterates through them and it looks at how they start and relate - # to each other. - - # - # Methods - # - - function parse($text) - { - # standardize line breaks - $text = str_replace("\r\n", "\n", $text); - $text = str_replace("\r", "\n", $text); - - # replace tabs with spaces - $text = str_replace("\t", ' ', $text); - - # remove surrounding line breaks - $text = trim($text, "\n"); - - # split text into lines - $lines = explode("\n", $text); - - # convert lines into html - $text = $this->parse_block_elements($lines); - - # remove trailing line breaks - $text = chop($text, "\n"); - - return $text; - } - - # - # Private - - private function parse_block_elements(array $lines, $context = '') - { - $blocks = array(); - - $block = array( - 'type' => '', - ); - - foreach ($lines as $line) - { - # context - - switch ($block['type']) - { - case 'fenced': - - if ( ! isset($block['closed'])) - { - if (preg_match('/^[ ]*'.$block['fence'][0].'{3,}[ ]*$/', $line)) - { - $block['closed'] = true; - } - else - { - if ($block['text'] !== '') - { - $block['text'] .= "\n"; - } - - $block['text'] .= $line; - } - - continue 2; - } - - break; - - case 'markup': - - if ( ! isset($block['closed'])) - { - if (strpos($line, $block['start']) !== false) # opening tag - { - $block['depth']++; - } - - if (strpos($line, $block['end']) !== false) # closing tag - { - if ($block['depth'] > 0) - { - $block['depth']--; - } - else - { - $block['closed'] = true; - } - } - - $block['text'] .= "\n".$line; - - continue 2; - } - - break; - } - - # ~ - - $indentation = 0; - - while(isset($line[$indentation]) and $line[$indentation] === ' ') - { - $indentation++; - } - - $outdented_line = $indentation > 0 ? ltrim($line) : $line; - - # blank - - if ($outdented_line === '') - { - $block['interrupted'] = true; - - continue; - } - - # context - - switch ($block['type']) - { - case 'quote': - - if ( ! isset($block['interrupted'])) - { - $line = preg_replace('/^[ ]*>[ ]?/', '', $line); - - $block['lines'] []= $line; - - continue 2; - } - - break; - - case 'li': - - if ($block['indentation'] === $indentation and preg_match('/^'.$block['marker'].'[ ]+(.*)/', $outdented_line, $matches)) - { - unset($block['last']); - - $blocks []= $block; - - $block['last'] = true; - $block['lines'] = array($matches[1]); - - unset($block['first']); - unset($block['interrupted']); - - continue 2; - } - - if ( ! isset($block['interrupted'])) - { - $line = preg_replace('/^[ ]{0,'.$block['baseline'].'}/', '', $line); - - $block['lines'] []= $line; - - continue 2; - } - elseif ($line[0] === ' ') - { - $block['lines'] []= ''; - - $line = preg_replace('/^[ ]{0,'.$block['baseline'].'}/', '', $line); - - $block['lines'] []= $line; - - unset($block['interrupted']); - - continue 2; - } - - break; - } - - # indentation sensitive types - - switch ($line[0]) - { - case ' ': - - # code - - if ($indentation >= 4) - { - $code_line = substr($line, 4); - - if ($block['type'] === 'code') - { - if (isset($block['interrupted'])) - { - $block['text'] .= "\n"; - - unset($block['interrupted']); - } - - $block['text'] .= "\n".$code_line; - } - else - { - $blocks []= $block; - - $block = array( - 'type' => 'code', - 'text' => $code_line, - ); - } - - continue 2; - } - - break; - - case '#': - - # atx heading (#) - - if (isset($line[1])) - { - $blocks []= $block; - - $level = 1; - - while (isset($line[$level]) and $line[$level] === '#') - { - $level++; - } - - $block = array( - 'type' => 'heading', - 'text' => trim($line, '# '), - 'level' => $level, - ); - - continue 2; - } - - break; - - case '-': - case '=': - - # setext heading (===) - - if ($block['type'] === 'paragraph' and isset($block['interrupted']) === false) - { - $chopped_line = chop($line); - - $i = 1; - - while (isset($chopped_line[$i])) - { - if ($chopped_line[$i] !== $line[0]) - { - break 2; - } - - $i++; - } - - $block['type'] = 'heading'; - - $block['level'] = $line[0] === '-' ? 2 : 1; - - continue 2; - } - - break; - } - - # indentation insensitive types - - switch ($outdented_line[0]) - { - case '<': - - $position = strpos($outdented_line, '>'); - - if ($position > 1) - { - $substring = substr($outdented_line, 1, $position - 1); - - $substring = chop($substring); - - if (substr($substring, -1) === '/') - { - $is_self_closing = true; - - $substring = substr($substring, 0, -1); - } - - $position = strpos($substring, ' '); - - if ($position) - { - $name = substr($substring, 0, $position); - } - else - { - $name = $substring; - } - - if ( ! ctype_alpha($name)) - { - break; - } - - if (in_array($name, self::$text_level_elements)) - { - break; - } - - $blocks []= $block; - - if (isset($is_self_closing)) - { - $block = array( - 'type' => 'self-closing tag', - 'text' => $outdented_line, - ); - - unset($is_self_closing); - - continue 2; - } - - $block = array( - 'type' => 'markup', - 'text' => $outdented_line, - 'start' => '<'.$name.'>', - 'end' => '', - 'depth' => 0, - ); - - if (strpos($outdented_line, $block['end'])) - { - $block['closed'] = true; - } - - continue 2; - } - - break; - - case '>': - - # quote - - if (preg_match('/^>[ ]?(.*)/', $outdented_line, $matches)) - { - $blocks []= $block; - - $block = array( - 'type' => 'quote', - 'lines' => array( - $matches[1], - ), - ); - - continue 2; - } - - break; - - case '[': - - # reference - - $position = strpos($outdented_line, ']:'); - - if ($position) - { - $reference = array(); - - $label = substr($outdented_line, 1, $position - 1); - $label = strtolower($label); - - $substring = substr($outdented_line, $position + 2); - $substring = trim($substring); - - if ($substring === '') - { - break; - } - - if ($substring[0] === '<') - { - $position = strpos($substring, '>'); - - if ($position === false) - { - break; - } - - $reference['»'] = substr($substring, 1, $position - 1); - - $substring = substr($substring, $position + 1); - } - else - { - $position = strpos($substring, ' '); - - if ($position === false) - { - $reference['»'] = $substring; - - $substring = false; - } - else - { - $reference['»'] = substr($substring, 0, $position); - - $substring = substr($substring, $position + 1); - } - } - - if ($substring !== false) - { - if ($substring[0] !== '"' and $substring[0] !== "'" and $substring[0] !== '(') - { - break; - } - - $last_char = substr($substring, -1); - - if ($last_char !== '"' and $last_char !== "'" and $last_char !== ')') - { - break; - } - - $reference['#'] = substr($substring, 1, -1); - } - - $this->reference_map[$label] = $reference; - - continue 2; - } - - break; - - case '`': - case '~': - - # fenced code block - - if (preg_match('/^([`]{3,}|[~]{3,})[ ]*(\S+)?[ ]*$/', $outdented_line, $matches)) - { - $blocks []= $block; - - $block = array( - 'type' => 'fenced', - 'text' => '', - 'fence' => $matches[1], - ); - - if (isset($matches[2])) - { - $block['language'] = $matches[2]; - } - - continue 2; - } - - break; - - case '*': - case '+': - case '-': - case '_': - - # hr - - if (preg_match('/^([-*_])([ ]{0,2}\1){2,}[ ]*$/', $outdented_line)) - { - $blocks []= $block; - - $block = array( - 'type' => 'rule', - ); - - continue 2; - } - - # li - - if (preg_match('/^([*+-][ ]+)(.*)/', $outdented_line, $matches)) - { - $blocks []= $block; - - $baseline = $indentation + strlen($matches[1]); - - $block = array( - 'type' => 'li', - 'indentation' => $indentation, - 'baseline' => $baseline, - 'marker' => '[*+-]', - 'first' => true, - 'last' => true, - 'lines' => array(), - ); - - $block['lines'] []= preg_replace('/^[ ]{0,4}/', '', $matches[2]); - - continue 2; - } - } - - # li - - if ($outdented_line[0] <= '9' and preg_match('/^(\d+[.][ ]+)(.*)/', $outdented_line, $matches)) - { - $blocks []= $block; - - $baseline = $indentation + strlen($matches[1]); - - $block = array( - 'type' => 'li', - 'indentation' => $indentation, - 'baseline' => $baseline, - 'marker' => '\d+[.]', - 'first' => true, - 'last' => true, - 'ordered' => true, - 'lines' => array(), - ); - - $block['lines'] []= preg_replace('/^[ ]{0,4}/', '', $matches[2]); - - continue; - } - - # paragraph - - if ($block['type'] === 'paragraph') - { - if (isset($block['interrupted'])) - { - $blocks []= $block; - - $block['text'] = $line; - - unset($block['interrupted']); - } - else - { - if ($this->breaks_enabled) - { - $block['text'] .= ' '; - } - - $block['text'] .= "\n".$line; - } - } - else - { - $blocks []= $block; - - $block = array( - 'type' => 'paragraph', - 'text' => $line, - ); - } - } - - $blocks []= $block; - - unset($blocks[0]); - - # $blocks » HTML - - $markup = ''; - - foreach ($blocks as $block) - { - switch ($block['type']) - { - case 'paragraph': - - $text = $this->parse_span_elements($block['text']); - - if ($context === 'li' and $markup === '') - { - if (isset($block['interrupted'])) - { - $markup .= "\n".'

    '.$text.'

    '."\n"; - } - else - { - $markup .= $text; - - if (isset($blocks[2])) - { - $markup .= "\n"; - } - } - } - else - { - $markup .= '

    '.$text.'

    '."\n"; - } - - break; - - case 'quote': - - $text = $this->parse_block_elements($block['lines']); - - $markup .= '
    '."\n".$text.'
    '."\n"; - - break; - - case 'code': - - $text = htmlspecialchars($block['text'], ENT_NOQUOTES, 'UTF-8'); - - $markup .= '
    '.$text.'
    '."\n"; - - break; - - case 'fenced': - - $text = htmlspecialchars($block['text'], ENT_NOQUOTES, 'UTF-8'); - - $markup .= '
    '."\n"; - - break; - - case 'heading': - - $text = $this->parse_span_elements($block['text']); - - $markup .= ''.$text.''."\n"; - - break; - - case 'rule': - - $markup .= '
    '."\n"; - - break; - - case 'li': - - if (isset($block['first'])) - { - $type = isset($block['ordered']) ? 'ol' : 'ul'; - - $markup .= '<'.$type.'>'."\n"; - } - - if (isset($block['interrupted']) and ! isset($block['last'])) - { - $block['lines'] []= ''; - } - - $text = $this->parse_block_elements($block['lines'], 'li'); - - $markup .= '
  • '.$text.'
  • '."\n"; - - if (isset($block['last'])) - { - $type = isset($block['ordered']) ? 'ol' : 'ul'; - - $markup .= ''."\n"; - } - - break; - - case 'markup': - - $markup .= $block['text']."\n"; - - break; - - default: - - $markup .= $block['text']."\n"; - } - } - - return $markup; - } - - private function parse_span_elements($text, $markers = array(" \n", '![', '&', '*', '<', '[', '\\', '_', '`', 'http', '~~')) - { - if (isset($text[1]) === false or $markers === array()) - { - return $text; - } - - # ~ - - $markup = ''; - - while ($markers) - { - $closest_marker = null; - $closest_marker_index = 0; - $closest_marker_position = null; - - foreach ($markers as $index => $marker) - { - $marker_position = strpos($text, $marker); - - if ($marker_position === false) - { - unset($markers[$index]); - - continue; - } - - if ($closest_marker === null or $marker_position < $closest_marker_position) - { - $closest_marker = $marker; - $closest_marker_index = $index; - $closest_marker_position = $marker_position; - } - } - - # ~ - - if ($closest_marker === null or isset($text[$closest_marker_position + 1]) === false) - { - $markup .= $text; - - break; - } - else - { - $markup .= substr($text, 0, $closest_marker_position); - } - - $text = substr($text, $closest_marker_position); - - # ~ - - unset($markers[$closest_marker_index]); - - # ~ - - switch ($closest_marker) - { - case " \n": - - $markup .= '
    '."\n"; - - $offset = 3; - - break; - - case '![': - case '[': - - if (strpos($text, ']') and preg_match('/\[((?:[^][]|(?R))*)\]/', $text, $matches)) - { - $element = array( - '!' => $text[0] === '!', - 'a' => $matches[1], - ); - - $offset = strlen($matches[0]); - - if ($element['!']) - { - $offset++; - } - - $remaining_text = substr($text, $offset); - - if ($remaining_text[0] === '(' and preg_match('/\([ ]*(.*?)(?:[ ]+[\'"](.+?)[\'"])?[ ]*\)/', $remaining_text, $matches)) - { - $element['»'] = $matches[1]; - - if (isset($matches[2])) - { - $element['#'] = $matches[2]; - } - - $offset += strlen($matches[0]); - } - elseif ($this->reference_map) - { - $reference = $element['a']; - - if (preg_match('/^\s*\[(.*?)\]/', $remaining_text, $matches)) - { - $reference = $matches[1] ? $matches[1] : $element['a']; - - $offset += strlen($matches[0]); - } - - $reference = strtolower($reference); - - if (isset($this->reference_map[$reference])) - { - $element['»'] = $this->reference_map[$reference]['»']; - - if (isset($this->reference_map[$reference]['#'])) - { - $element['#'] = $this->reference_map[$reference]['#']; - } - } - else - { - unset($element); - } - } - else - { - unset($element); - } - } - - if (isset($element)) - { - $element['»'] = str_replace('&', '&', $element['»']); - $element['»'] = str_replace('<', '<', $element['»']); - - if ($element['!']) - { - $markup .= ''.$element['a'].'parse_span_elements($element['a'], $markers); - - $markup .= ''; - } - - unset($element); - } - else - { - $markup .= $closest_marker; - - $offset = $closest_marker === '![' ? 2 : 1; - } - - break; - - case '&': - - if (preg_match('/^&#?\w+;/', $text, $matches)) - { - $markup .= $matches[0]; - - $offset = strlen($matches[0]); - } - else - { - $markup .= '&'; - - $offset = 1; - } - - break; - - case '*': - case '_': - - if ($text[1] === $closest_marker and preg_match(self::$strong_regex[$closest_marker], $text, $matches)) - { - $markers[] = $closest_marker; - $matches[1] = $this->parse_span_elements($matches[1], $markers); - - $markup .= ''.$matches[1].''; - } - elseif (preg_match(self::$em_regex[$closest_marker], $text, $matches)) - { - $markers[] = $closest_marker; - $matches[1] = $this->parse_span_elements($matches[1], $markers); - - $markup .= ''.$matches[1].''; - } - - if (isset($matches) and $matches) - { - $offset = strlen($matches[0]); - } - else - { - $markup .= $closest_marker; - - $offset = 1; - } - - break; - - case '<': - - if (strpos($text, '>') !== false) - { - if ($text[1] === 'h' and preg_match('/^<(https?:[\/]{2}[^\s]+?)>/i', $text, $matches)) - { - $element_url = $matches[1]; - $element_url = str_replace('&', '&', $element_url); - $element_url = str_replace('<', '<', $element_url); - - $markup .= ''.$element_url.''; - - $offset = strlen($matches[0]); - } - elseif (strpos($text, '@') > 1 and preg_match('/<(\S+?@\S+?)>/', $text, $matches)) - { - $markup .= ''.$matches[1].''; - - $offset = strlen($matches[0]); - } - elseif (preg_match('/^<\/?\w.*?>/', $text, $matches)) - { - $markup .= $matches[0]; - - $offset = strlen($matches[0]); - } - else - { - $markup .= '<'; - - $offset = 1; - } - } - else - { - $markup .= '<'; - - $offset = 1; - } - - break; - - case '\\': - - if (in_array($text[1], self::$special_characters)) - { - $markup .= $text[1]; - - $offset = 2; - } - else - { - $markup .= '\\'; - - $offset = 1; - } - - break; - - case '`': - - if (preg_match('/^(`+)[ ]*(.+?)[ ]*(?'.$element_text.''; - - $offset = strlen($matches[0]); - } - else - { - $markup .= '`'; - - $offset = 1; - } - - break; - - case 'http': - - if (preg_match('/^https?:[\/]{2}[^\s]+\b\/*/ui', $text, $matches)) - { - $element_url = $matches[0]; - $element_url = str_replace('&', '&', $element_url); - $element_url = str_replace('<', '<', $element_url); - - $markup .= ''.$element_url.''; - - $offset = strlen($matches[0]); - } - else - { - $markup .= 'http'; - - $offset = 4; - } - - break; - - case '~~': - - if (preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $text, $matches)) - { - $matches[1] = $this->parse_span_elements($matches[1], $markers); - - $markup .= ''.$matches[1].''; - - $offset = strlen($matches[0]); - } - else - { - $markup .= '~~'; - - $offset = 2; - } - - break; - } - - if (isset($offset)) - { - $text = substr($text, $offset); - } - - $markers[$closest_marker_index] = $closest_marker; - } - - return $markup; - } - - # - # Fields - # - - private $reference_map = array(); - - # - # Read-only - - private static $strong_regex = array( - '*' => '/^[*]{2}((?:[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s', - '_' => '/^__((?:[^_]|_[^_]*_)+?)__(?!_)/us', - ); - - private static $em_regex = array( - '*' => '/^[*]((?:[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', - '_' => '/^_((?:[^_]|__[^_]*__)+?)_(?!_)\b/us', - ); - - private static $special_characters = array( - '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', - ); - - private static $text_level_elements = array( - 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont', - 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing', - 'i', 'rp', 'sub', 'code', 'strike', 'marquee', - 'q', 'rt', 'sup', 'font', 'strong', - 's', 'tt', 'var', 'mark', - 'u', 'xm', 'wbr', 'nobr', - 'ruby', - 'span', - 'time', - ); -} diff --git a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell.php b/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell.php deleted file mode 100644 index 8012475e6f..0000000000 --- a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell.php +++ /dev/null @@ -1,1091 +0,0 @@ - - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -/** -* A interactive PHP Shell -* -* The more I work with other languages like python and ruby I like their way how they -* work on problems. While PHP is very forgiving on errors, it is weak on the debugging -* side. It was missing a simple to use interactive shell for years. Python and Ruby have -* their ipython and iruby shell which give you a direct way to interact with the objects. -* No need to write a script and execute it afterwards. -* -* Starting the Shell: -* -* The package contains a shell wrapper for windows and unix: -*
    -* sh>  php-shell.sh
    -* win> php-shell
    -* 
    -* -* Both are calling the wrapper script php -q php-shell-cmd.php -* -* Inline Help -* -*
    -* PHP-Shell - Version 0.2.0, with readline() support
    -* (c) 2006, Jan Kneschke 
    -*
    -* >> use '?' to open the inline help
    -*
    -* >> ?
    -* "inline help for the PHP-shell
    -*
    -*   >> ?
    -*     print this help
    -*   >> ? 
    -*     get the doccomment for a class, method, property or function
    -*   >> p 
    -*     execute a verbose print (if implemented)
    -*   >> quit
    -*     leave shell
    -* "
    -* >> ? PHP_Shell
    -* 
    -* Alternatives -* -* - http://david.acz.org/phpa/ -* - http://www.hping.org/phpinteractive/ -* - the embedded interactive php-shell: $ php -a -* -* @package PHP -*/ - -/** -* PHP_Shell -* -* a interactive PHP Shell with tab-completion and history -* it can catch FATAL errors before executing the code -* -* Extensions are provided through three side-classes: -* -* - PHP_Shell_Commands -* - PHP_Shell_Options -* - PHP_Shell_Extensions -* -* @package PHP -*/ - -require_once(dirname(__FILE__)."/Shell/Commands.php"); -require_once(dirname(__FILE__)."/Shell/Options.php"); /* for the tab-complete */ - -class PHP_Shell { - /** - * current code-buffer - * @var string - */ - protected $code; - - /** - * set if readline support is enabled - * @var bool - */ - protected $have_readline; - - /** - * current version of the class - * @var string - */ - protected $version = '0.3.1'; - - /** - * - */ - protected $stdin; - - protected $code_buffer; - - public $has_semicolon=false; - - /** - * init the shell and change if readline support is available - */ - public function __construct() { - $this->code = ''; - - $this->stdin = null; - - $this->have_readline = function_exists('readline'); - - if ($this->have_readline) { - readline_completion_function('__shell_readline_complete'); - } - - $this->use_readline = true; - - $cmd = PHP_Shell_Commands::getInstance(); - - $cmd->registerCommand('#^quit$#', $this, 'cmdQuit', 'quit', 'leaves the shell'); - $cmd->registerCommand('#^\?$#', $this, 'cmdHelp', '?', 'show this help'); - $cmd->registerCommand('#^\?\s+license$#', $this, 'cmdLicense', '? license', 'show license of the shell'); - } - - - /** - * parse the PHP code - * - * we parse before we eval() the code to - * - fetch fatal errors before they come up - * - know about where we have to wait for closing braces - * - * @return int 0 if a executable statement is in the code-buffer, non-zero otherwise - */ - public function parse() { - ## remove empty lines - if (trim($this->code) == '') return 1; - - $t = token_get_all('code.' ?>'); - - $need_semicolon = 1; /* do we need a semicolon to complete the statement ? */ - $need_return = 1; /* can we prepend a return to the eval-string ? */ - $open_comment = 0; /* a open multi-line comment */ - $eval = ''; /* code to be eval()'ed later */ - $braces = array(); /* to track if we need more closing braces */ - - $methods = array(); /* to track duplicate methods in a class declaration */ - $ts = array(); /* tokens without whitespaces */ - - foreach ($t as $ndx => $token) { - if (is_array($token)) { - $ignore = 0; - - switch($token[0]) { - case T_WHITESPACE: - case T_OPEN_TAG: - case T_CLOSE_TAG: - $ignore = 1; - break; - case T_FOREACH: - case T_DO: - case T_WHILE: - case T_FOR: - - case T_IF: - case T_RETURN: - - case T_CLASS: - case T_FUNCTION: - case T_INTERFACE: - - case T_PRINT: - case T_ECHO: - - case T_COMMENT: - case T_UNSET: - - case T_INCLUDE: - case T_REQUIRE: - case T_INCLUDE_ONCE: - case T_REQUIRE_ONCE: - case T_TRY: - case T_SWITCH: - case T_DEFAULT: - case T_CASE: - case T_BREAK: - case T_DOC_COMMENT: - $need_return = 0; - break; - case T_EMPTY: - case T_ISSET: - case T_EVAL: - case T_EXIT: - - case T_VARIABLE: - case T_STRING: - case T_NEW: - case T_EXTENDS: - case T_IMPLEMENTS: - case T_OBJECT_OPERATOR: - case T_DOUBLE_COLON: - case T_INSTANCEOF: - - case T_CATCH: - case T_THROW: - - case T_ELSE: - case T_AS: - case T_LNUMBER: - case T_DNUMBER: - case T_CONSTANT_ENCAPSED_STRING: - case T_ENCAPSED_AND_WHITESPACE: - case T_CHARACTER: - case T_ARRAY: - case T_DOUBLE_ARROW: - - case T_CONST: - case T_PUBLIC: - case T_PROTECTED: - case T_PRIVATE: - case T_ABSTRACT: - case T_STATIC: - case T_VAR: - - case T_INC: - case T_DEC: - case T_SL: - case T_SL_EQUAL: - case T_SR: - case T_SR_EQUAL: - - case T_IS_EQUAL: - case T_IS_IDENTICAL: - case T_IS_GREATER_OR_EQUAL: - case T_IS_SMALLER_OR_EQUAL: - - case T_BOOLEAN_OR: - case T_LOGICAL_OR: - case T_BOOLEAN_AND: - case T_LOGICAL_AND: - case T_LOGICAL_XOR: - case T_MINUS_EQUAL: - case T_PLUS_EQUAL: - case T_MUL_EQUAL: - case T_DIV_EQUAL: - case T_MOD_EQUAL: - case T_XOR_EQUAL: - case T_AND_EQUAL: - case T_OR_EQUAL: - - case T_FUNC_C: - case T_CLASS_C: - case T_LINE: - case T_FILE: - - case T_BOOL_CAST: - case T_INT_CAST: - case T_STRING_CAST: - - /* just go on */ - break; - default: - /* debug unknown tags*/ - error_log(sprintf("unknown tag: %d (%s): %s".PHP_EOL, $token[0], token_name($token[0]), $token[1])); - - break; - } - if (!$ignore) { - $eval .= $token[1]." "; - $ts[] = array("token" => $token[0], "value" => $token[1]); - } - } else { - $ts[] = array("token" => $token, "value" => ''); - - $last = count($ts) - 1; - - switch ($token) { - case '(': - /* walk backwards through the tokens */ - - if ($last >= 4 && - $ts[$last - 1]['token'] == T_STRING && - $ts[$last - 2]['token'] == T_OBJECT_OPERATOR && - $ts[$last - 3]['token'] == ')' ) { - /* func()->method() - * - * we can't know what func() is return, so we can't - * say if the method() exists or not - * - */ - } else if ($last >= 3 && - $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */ - $ts[0]['token'] != T_ABSTRACT && /* if we are not in a class definition */ - $ts[1]['token'] != T_CLASS && /* if we are not in a class definition */ - $ts[$last - 1]['token'] == T_STRING && - $ts[$last - 2]['token'] == T_OBJECT_OPERATOR && - $ts[$last - 3]['token'] == T_VARIABLE ) { - - /* $object->method( */ - - /* catch (Exception $e) does not set $e in $GLOBALS[] */ - $in_catch = 0; - - foreach ($ts as $v) { - if ($v['token'] == T_CATCH) { - $in_catch = 1; - } - } - - if (!$in_catch) { - /* $object has to exist and has to be a object */ - $objname = $ts[$last - 3]['value']; - - if (!isset($GLOBALS[ltrim($objname, '$')])) { - throw new Exception(sprintf('Variable \'%s\' is not set', $objname)); - } - $object = $GLOBALS[ltrim($objname, '$')]; - - if (!is_object($object)) { - throw new Exception(sprintf('Variable \'%s\' is not a class', $objname)); - } - - $method = $ts[$last - 1]['value']; - - /* obj */ - - if (!method_exists($object, $method)) { - throw new Exception(sprintf("Variable %s (Class '%s') doesn't have a method named '%s'", - $objname, get_class($object), $method)); - } - } - } else if ($last >= 3 && - $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */ - $ts[$last - 1]['token'] == T_VARIABLE && - $ts[$last - 2]['token'] == T_OBJECT_OPERATOR && - $ts[$last - 3]['token'] == T_VARIABLE ) { - - /* $object->$method( */ - - /* $object has to exist and has to be a object */ - $objname = $ts[$last - 3]['value']; - - if (!isset($GLOBALS[ltrim($objname, '$')])) { - throw new Exception(sprintf('Variable \'%s\' is not set', $objname)); - } - $object = $GLOBALS[ltrim($objname, '$')]; - - if (!is_object($object)) { - throw new Exception(sprintf('Variable \'%s\' is not a class', $objname)); - } - - $methodname = $ts[$last - 1]['value']; - - if (!isset($GLOBALS[ltrim($methodname, '$')])) { - throw new Exception(sprintf('Variable \'%s\' is not set', $methodname)); - } - $method = $GLOBALS[ltrim($methodname, '$')]; - - /* obj */ - - if (!method_exists($object, $method)) { - throw new Exception(sprintf("Variable %s (Class '%s') doesn't have a method named '%s'", - $objname, get_class($object), $method)); - } - - } else if ($last >= 6 && - $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */ - $ts[$last - 1]['token'] == T_STRING && - $ts[$last - 2]['token'] == T_OBJECT_OPERATOR && - $ts[$last - 3]['token'] == ']' && - /* might be anything as index */ - $ts[$last - 5]['token'] == '[' && - $ts[$last - 6]['token'] == T_VARIABLE ) { - - /* $object[...]->method( */ - - /* $object has to exist and has to be a object */ - $objname = $ts[$last - 6]['value']; - - if (!isset($GLOBALS[ltrim($objname, '$')])) { - throw new Exception(sprintf('Variable \'%s\' is not set', $objname)); - } - $array = $GLOBALS[ltrim($objname, '$')]; - - if (!is_array($array)) { - throw new Exception(sprintf('Variable \'%s\' is not a array', $objname)); - } - - $andx = $ts[$last - 4]['value']; - - if (!isset($array[$andx])) { - throw new Exception(sprintf('%s[\'%s\'] is not set', $objname, $andx)); - } - - $object = $array[$andx]; - - if (!is_object($object)) { - throw new Exception(sprintf('Variable \'%s\' is not a class', $objname)); - } - - $method = $ts[$last - 1]['value']; - - /* obj */ - - if (!method_exists($object, $method)) { - throw new Exception(sprintf("Variable %s (Class '%s') doesn't have a method named '%s'", - $objname, get_class($object), $method)); - } - - } else if ($last >= 3 && - $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */ - $ts[$last - 1]['token'] == T_STRING && - $ts[$last - 2]['token'] == T_DOUBLE_COLON && - $ts[$last - 3]['token'] == T_STRING ) { - - /* Class::method() */ - - /* $object has to exist and has to be a object */ - $classname = $ts[$last - 3]['value']; - - if (!class_exists($classname)) { - throw new Exception(sprintf('Class \'%s\' doesn\'t exist', $classname)); - } - - $method = $ts[$last - 1]['value']; - - if (!in_array($method, get_class_methods($classname))) { - throw new Exception(sprintf("Class '%s' doesn't have a method named '%s'", - $classname, $method)); - } - } else if ($last >= 3 && - $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */ - $ts[$last - 1]['token'] == T_VARIABLE && - $ts[$last - 2]['token'] == T_DOUBLE_COLON && - $ts[$last - 3]['token'] == T_STRING ) { - - /* $var::method() */ - - /* $object has to exist and has to be a object */ - $classname = $ts[$last - 3]['value']; - - if (!class_exists($classname)) { - throw new Exception(sprintf('Class \'%s\' doesn\'t exist', $classname)); - } - - $methodname = $ts[$last - 1]['value']; - - if (!isset($GLOBALS[ltrim($methodname, '$')])) { - throw new Exception(sprintf('Variable \'%s\' is not set', $methodname)); - } - $method = $GLOBALS[ltrim($methodname, '$')]; - - if (!in_array($method, get_class_methods($classname))) { - throw new Exception(sprintf("Class '%s' doesn't have a method named '%s'", - $classname, $method)); - } - - } else if ($last >= 2 && - $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */ - $ts[$last - 1]['token'] == T_STRING && - $ts[$last - 2]['token'] == T_NEW ) { - - /* new Class() */ - - /* don't care about this in a class ... { ... } */ - - $classname = $ts[$last - 1]['value']; - - if (!class_exists($classname)) { - throw new Exception(sprintf('Class \'%s\' doesn\'t exist', $classname)); - } - - $r = new ReflectionClass($classname); - - if ($r->isAbstract()) { - throw new Exception(sprintf("Can't instantiate abstract Class '%s'", $classname)); - } - - if (!$r->isInstantiable()) { - throw new Exception(sprintf('Class \'%s\' can\'t be instantiated. Is the class abstract ?', $classname)); - } - - } else if ($last >= 2 && - $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */ - $ts[$last - 1]['token'] == T_STRING && - $ts[$last - 2]['token'] == T_FUNCTION ) { - - /* make sure we are not a in class definition */ - - /* function a() */ - - $func = $ts[$last - 1]['value']; - - if (function_exists($func)) { - throw new Exception(sprintf('Function \'%s\' is already defined', $func)); - } - } else if ($last >= 4 && - $ts[0]['token'] == T_CLASS && - $ts[1]['token'] == T_STRING && - $ts[$last - 1]['token'] == T_STRING && - $ts[$last - 2]['token'] == T_FUNCTION ) { - - /* make sure we are not a in class definition */ - - /* class a { .. function a() ... } */ - - $func = $ts[$last - 1]['value']; - $classname = $ts[1]['value']; - - if (isset($methods[$func])) { - throw new Exception(sprintf("Can't redeclare method '%s' in Class '%s'", $func, $classname)); - } - - $methods[$func] = 1; - - } else if ($last >= 1 && - $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */ - $ts[0]['token'] != T_ABSTRACT && /* if we are not in a class definition */ - $ts[1]['token'] != T_CLASS && /* if we are not in a class definition */ - $ts[$last - 1]['token'] == T_STRING ) { - /* func() */ - $funcname = $ts[$last - 1]['value']; - - if (!function_exists($funcname)) { - throw new Exception(sprintf("Function %s() doesn't exist", $funcname)); - } - } else if ($last >= 1 && - $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */ - $ts[$last - 1]['token'] == T_VARIABLE ) { - - /* $object has to exist and has to be a object */ - $funcname = $ts[$last - 1]['value']; - - if (!isset($GLOBALS[ltrim($funcname, '$')])) { - throw new Exception(sprintf('Variable \'%s\' is not set', $funcname)); - } - $func = $GLOBALS[ltrim($funcname, '$')]; - - if (!function_exists($func)) { - throw new Exception(sprintf("Function %s() doesn't exist", $func)); - } - - } - - array_push($braces, $token); - break; - case '{': - $need_return = 0; - - if ($last >= 2 && - $ts[$last - 1]['token'] == T_STRING && - $ts[$last - 2]['token'] == T_CLASS ) { - - /* class name { */ - - $classname = $ts[$last - 1]['value']; - - if (class_exists($classname, false)) { - throw new Exception(sprintf("Class '%s' can't be redeclared", $classname)); - } - } else if ($last >= 4 && - $ts[$last - 1]['token'] == T_STRING && - $ts[$last - 2]['token'] == T_EXTENDS && - $ts[$last - 3]['token'] == T_STRING && - $ts[$last - 4]['token'] == T_CLASS ) { - - /* class classname extends classname { */ - - $classname = $ts[$last - 3]['value']; - $extendsname = $ts[$last - 1]['value']; - - if (class_exists($classname, false)) { - throw new Exception(sprintf("Class '%s' can't be redeclared", - $classname)); - } - if (!class_exists($extendsname, true)) { - throw new Exception(sprintf("Can't extend '%s' ... from not existing Class '%s'", - $classname, $extendsname)); - } - } else if ($last >= 4 && - $ts[$last - 1]['token'] == T_STRING && - $ts[$last - 2]['token'] == T_IMPLEMENTS && - $ts[$last - 3]['token'] == T_STRING && - $ts[$last - 4]['token'] == T_CLASS ) { - - /* class name implements interface { */ - - $classname = $ts[$last - 3]['value']; - $implements = $ts[$last - 1]['value']; - - if (class_exists($classname, false)) { - throw new Exception(sprintf("Class '%s' can't be redeclared", - $classname)); - } - if (!interface_exists($implements, false)) { - throw new Exception(sprintf("Can't implement not existing Interface '%s' for Class '%s'", - $implements, $classname)); - } - } - - array_push($braces, $token); - break; - case '}': - $need_return = 0; - case ')': - array_pop($braces); - break; - case '[': - if ($ts[0]['token'] != T_CLASS && /* if we are not in a class definition */ - $ts[0]['token'] != T_ABSTRACT && /* if we are not in a class definition */ - $ts[1]['token'] != T_CLASS && /* if we are not in a class definition */ - $ts[$last - 1]['token'] == T_VARIABLE) { - /* $a[] only works on array and string */ - - /* $object has to exist and has to be a object */ - $objname = $ts[$last - 1]['value']; - - if (!isset($GLOBALS[ltrim($objname, '$')])) { - throw new Exception(sprintf('Variable \'%s\' is not set', $objname)); - } - $obj = $GLOBALS[ltrim($objname, '$')]; - - if (is_object($obj)) { - throw new Exception(sprintf('Objects (%s) don\'t support array access operators', $objname)); - } - } - break; - } - - $eval .= $token; - } - } - - $last = count($ts) - 1; - if ($last >= 2 && - $ts[$last - 0]['token'] == T_STRING && - $ts[$last - 1]['token'] == T_DOUBLE_COLON && - $ts[$last - 2]['token'] == T_STRING ) { - - /* Class::constant */ - - /* $object has to exist and has to be a object */ - $classname = $ts[$last - 2]['value']; - - if (!class_exists($classname)) { - throw new Exception(sprintf('Class \'%s\' doesn\'t exist', $classname)); - } - - $constname = $ts[$last - 0]['value']; - - $c = new ReflectionClass($classname); - if (!$c->hasConstant($constname)) { - throw new Exception(sprintf("Class '%s' doesn't have a constant named '%s'", - $classname, $constname)); - } - } else if ($last == 0 && - $ts[$last - 0]['token'] == T_VARIABLE ) { - - /* $var */ - - $varname = $ts[$last - 0]['value']; - - if (!isset($GLOBALS[ltrim($varname, '$')])) { - throw new Exception(sprintf('Variable \'%s\' is not set', $varname)); - } - } - - - $need_more = (count($braces) > 0) || $open_comment; - - if ($need_more || ';' === $token) { - $need_semicolon = 0; - } - - if ($need_return) { - $eval = "return ".$eval; - } - - /* add a traling ; if necessary */ - if ($need_semicolon) - { - $this->has_semicolon = preg_match('/;\s*$/', $eval); - $eval .= ';'; - } - - if (!$need_more) { - $this->code = $eval; - } - - return $need_more; - } - - /** - * show the prompt and fetch a single line - * - * uses readline() if avaialbe - * - * @return string a input-line - */ - public function readline() { - if (empty($this->code)) print PHP_EOL; - - $prompt = (empty($this->code)) ? '>> ' : '.. '; - - if (count($this->code_buffer) > 0) { - print $prompt; - - $line = array_shift($this->code_buffer); - - print $line.PHP_EOL; - - return $line.PHP_EOL; - } - - if ($this->have_readline) { - $l = readline($prompt); - - readline_add_history($l); - } else { - print $prompt; - - if (is_null($this->stdin)) { - if (false === ($this->stdin = fopen("php://stdin", "r"))) { - return false; - } - } - $l = fgets($this->stdin); - } - return $l; - } - - /** - * get the inline help - * - * @return string the inline help as string - */ - public function cmdHelp($l) { - $o = 'Inline Help:'.PHP_EOL; - - $cmds = PHP_Shell_Commands::getInstance()->getCommands(); - - $help = array(); - foreach ($cmds as $cmd) { - $help[] = sprintf(' >> %s'.PHP_EOL.' %s'.PHP_EOL, - $cmd['command'], - $cmd['description'] - ); - } - - return var_export(implode("\n", $help), 1); - } - - /** - * get the license string - * - * @return string the inline help as string - */ - public function cmdLicense($l) { - $o = << - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -EOF; - - return var_export($o, 1); - } - - /** - * handle the 'quit' command - * - * @return bool false to leave the input() call - * @see input - */ - protected function cmdQuit($l) { - return false; - } - - /** - * handle the input line - * - * read the input and handle the commands of the shell - * - * @return bool false on 'quit' or EOF, true otherwise - */ - public function input() { - $l = $this->readline(); - - /* got EOF ? */ - if (false === $l) return false; - - $l = trim($l); - - if (empty($this->code)) { - $this->verbose = 0; - - $cmds = PHP_Shell_Commands::getInstance()->getCommands(); - - foreach ($cmds as $cmd) { - if (preg_match($cmd['regex'], $l)) { - $obj = $cmd['obj']; - $func = $cmd['method']; - - if (false === ($l = $obj->$func($l))) { - ## quit - return false; - } - - if (is_array($l)) { - $this->code_buffer = $l; - $l = ''; - } - break; - } - } - } - - $this->appendCode($l); - - return true; - } - - /** - * get the code-buffer - * - * @return string the code-buffer - */ - public function getCode() { - return $this->code; - return $code; - } - - /** - * reset the code-buffer - */ - public function resetCode() { - $this->has_semicolon=false; - $this->code = ''; - } - - /** - * append code to the code-buffer - * - * @param string $code input buffer - */ - public function appendCode($code) { - if (strlen($code)) $code .= PHP_EOL; - - $this->code .= $code; - } - - /** - * check if readline support is enabled - * - * @return bool true if enabled, false otherwise - */ - public function hasReadline() { - return $this->have_readline; - } - - /** - * get version of the class - * - * @return string version-string - */ - public function getVersion() { - return $this->version; - } -} - -/** -* a readline completion callback -* -* @param string $str linebuffer -* @param integer $pos position in linebuffer -* @return array list of possible matches -*/ -function __shell_readline_complete($str, $pos) { - $in = readline_info('line_buffer'); - - /** - * parse the line-buffer backwards to see if we have a - * - constant - * - function - * - variable - */ - - $m = array(); - - if (preg_match('#\$([A-Za-z0-9_]+)->#', $in, $a)) { - /* check for $o->... */ - $name = $a[1]; - - if (isset($GLOBALS[$name]) && is_object($GLOBALS[$name])) { - $c = get_class_methods($GLOBALS[$name]); - - foreach ($c as $v) { - $m[] = $v.'('; - } - $c = get_class_vars(get_class($GLOBALS[$name])); - - foreach ($c as $k => $v) { - $m[] = $k; - } - - return $m; - } - } else if (preg_match('#\$([A-Za-z0-9_]+)\[([^\]]+)\]->#', $in, $a)) { - /* check for $o[...]->... */ - $name = $a[1]; - - if (isset($GLOBALS[$name]) && - is_array($GLOBALS[$name]) && - isset($GLOBALS[$name][$a[2]])) { - - $c = get_class_methods($GLOBALS[$name][$a[2]]); - - foreach ($c as $v) { - $m[] = $v.'('; - } - $c = get_class_vars(get_class($GLOBALS[$name][$a[2]])); - - foreach ($c as $k => $v) { - $m[] = $k; - } - return $m; - } - - } else if (preg_match('#([A-Za-z0-9_]+)::#', $in, $a)) { - /* check for Class:: */ - $name = $a[1]; - - if (class_exists($name, false)) { - $c = get_class_methods($name); - - foreach ($c as $v) { - $m[] = sprintf('%s::%s(', $name, $v); - } - - $cl = new ReflectionClass($name); - $c = $cl->getConstants(); - - foreach ($c as $k => $v) { - $m[] = sprintf('%s::%s', $name, $k); - } - - return $m; - } - } else if (preg_match('#\$([a-zA-Z]?[a-zA-Z0-9_]*)$#', $in)) { - $m = array_keys($GLOBALS); - - return $m; - } else if (preg_match('#new #', $in)) { - $c = get_declared_classes(); - - foreach ($c as $v) { - $m[] = $v.'('; - } - - return $m; - } else if (preg_match('#^:set #', $in)) { - foreach (PHP_Shell_Options::getInstance()->getOptions() as $v) { - $m[] = $v; - } - - return $m; - } - - $f = get_defined_functions(); - - foreach ($f['internal'] as $v) { - $m[] = $v.'('; - } - - foreach ($f['user'] as $v) { - $m[] = $v.'('; - } - - $c = get_declared_classes(); - - foreach ($c as $v) { - $m[] = $v.'::'; - } - - $c = get_defined_constants(); - - foreach ($c as $k => $v) { - $m[] = $k; - } - - /* taken from http://de3.php.net/manual/en/reserved.php */ - $m[] = 'abstract'; - $m[] = 'and'; - $m[] = 'array('; - $m[] = 'as'; - $m[] = 'break'; - $m[] = 'case'; - $m[] = 'catch'; - $m[] = 'class'; - $m[] = 'const'; - $m[] = 'continue'; - # $m[] = 'declare'; - $m[] = 'default'; - $m[] = 'die('; - $m[] = 'do'; - $m[] = 'echo('; - $m[] = 'else'; - $m[] = 'elseif'; - $m[] = 'empty('; - # $m[] = 'enddeclare'; - $m[] = 'eval('; - $m[] = 'exception'; - $m[] = 'extends'; - $m[] = 'exit('; - $m[] = 'extends'; - $m[] = 'final'; - $m[] = 'for ('; - $m[] = 'foreach ('; - $m[] = 'function'; - $m[] = 'global'; - $m[] = 'if'; - $m[] = 'implements'; - $m[] = 'include "'; - $m[] = 'include_once "'; - $m[] = 'interface'; - $m[] = 'isset('; - $m[] = 'list('; - $m[] = 'new'; - $m[] = 'or'; - $m[] = 'print('; - $m[] = 'private'; - $m[] = 'protected'; - $m[] = 'public'; - $m[] = 'require "'; - $m[] = 'require_once "'; - $m[] = 'return'; - $m[] = 'static'; - $m[] = 'switch ('; - $m[] = 'throw'; - $m[] = 'try'; - $m[] = 'unset('; - # $m[] = 'use'; - $m[] = 'var'; - $m[] = 'while'; - $m[] = 'xor'; - $m[] = '__FILE__'; - $m[] = '__FUNCTION__'; - $m[] = '__CLASS__'; - $m[] = '__LINE__'; - $m[] = '__METHOD__'; - - # printf("%s ... %s\n", $str, $pos); - return $m; -} - - diff --git a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Commands.php b/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Commands.php deleted file mode 100644 index 3d4bf5b2a7..0000000000 --- a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Commands.php +++ /dev/null @@ -1,72 +0,0 @@ -' to catch the cmdline strings. -* -* registerCommand() should be called by the extensions in the register() -* method. Its parameters are -* - the regex which matches the command -* - the object and the method to call if the command is matched -* - the human readable command string and the description for the help -*/ -class PHP_Shell_Commands { - /* - * instance of the current class - * - * @var PHP_Shell_Commands - */ - static protected $instance; - - /** - * registered commands - * - * array('quit' => ... ) - * - * @var array - * @see registerCommand - */ - protected $commands = array(); - - /** - * register your own command for the shell - * - * @param string $regex a regex to match against the input line - * @param string $obj a Object - * @param string $method a method in the object to call of the regex matches - * @param string $cmd the command string for the help - * @param string $help the full help description for this command - */ - public function registerCommand($regex, $obj, $method, $cmd, $help) { - $this->commands[] = array( - 'regex' => $regex, - 'obj' => $obj, - 'method' => $method, - 'command' => $cmd, - 'description' => $help - ); - } - - /** - * return a copy of the commands array - * - * @return all commands - */ - public function getCommands() { - return $this->commands; - } - - static function getInstance() { - if (is_null(self::$instance)) { - $class = __CLASS__; - self::$instance = new $class(); - } - return self::$instance; - } -} - - diff --git a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions.php b/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions.php deleted file mode 100644 index 9b210c47c3..0000000000 --- a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions.php +++ /dev/null @@ -1,86 +0,0 @@ -name->... - * - * @param string registered name of the extension - * @return PHP_Shell_Extension object handle - */ - public function __get($key) { - if (!isset($this->exts[$key])) { - throw new Exception("Extension $s is not known."); - } - return $this->exts[$key]; - } - - /** - * register set of extensions - * - * @param array set of (name, class-name) pairs - */ - public function registerExtensions($exts) { - foreach ($exts as $k => $v) { - $this->registerExtension($k, $v); - } - } - - /** - * register a single extension - * - * @param string name of the registered extension - * @param PHP_Shell_Extension the extension object - */ - public function registerExtension($k, PHP_Shell_Extension $obj) { - $obj->register(); - - $this->exts[$k] = $obj; - } - - /** - * @return object a singleton of the class - */ - static function getInstance() { - if (is_null(self::$instance)) { - $class = __CLASS__; - self::$instance = new $class(); - } - return self::$instance; - } -} - - diff --git a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/Autoload.php b/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/Autoload.php deleted file mode 100644 index 72a5692ba5..0000000000 --- a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/Autoload.php +++ /dev/null @@ -1,60 +0,0 @@ -registerOption("autoload", $this, "optSetAutoload"); - $opt->registerOptionAlias("al", "autoload"); - } - - /** - * sets the autoload-flag - * - * - the $value is ignored and doesn't have to be set - * - if __autoload() is defined, the set fails - */ - public function optSetAutoload($key, $value) { - if ($this->autoload) { - print('autload is already enabled'); - return; - } - - if (function_exists('__autoload')) { - print('can\'t enabled autoload as a external __autoload() function is already defined'); - return; - } - - $this->autoload = true; - } - - /** - * is the autoload-flag set ? - * - * @return bool true if __autoload() should be set by the external wrapper - */ - public function isAutoloadEnabled() { - return $this->autoload; - } -} - diff --git a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/AutoloadDebug.php b/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/AutoloadDebug.php deleted file mode 100644 index 3926ff9e65..0000000000 --- a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/AutoloadDebug.php +++ /dev/null @@ -1,84 +0,0 @@ -registerOption('autoloaddebug', $this, 'optSetAutoloadDebug'); - } - - /** - * handle the autoloaddebug flag - * - * @param string - */ - public function optSetAutoloadDebug($key, $value) { - switch ($value) { - case "enable": - case "1": - case "on": - $this->autoload_debug = true; - break; - case "disable": - case "0": - case "off": - $this->autoload_debug = false; - break; - default: - printf(":set %s failed, unknown value. Use :set %s = (on|off)", $key, $key); - return; - } - - } - - /** - * is the autoload-debug flag set ? - * - * @return bool true if debug is enabled - */ - public function isAutoloadDebug() { - return $this->autoload_debug; - } - - /** - * increment the depth counter - */ - public function incAutoloadDepth() { - return $this->autoload_depth++; - } - - /** - * decrement the depth counter - */ - public function decAutoloadDepth() { - return --$this->autoload_depth; - } -} - diff --git a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/Colour.php b/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/Colour.php deleted file mode 100644 index 05d7be1dac..0000000000 --- a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/Colour.php +++ /dev/null @@ -1,120 +0,0 @@ -registerOption("background", $this, "optSetBackground"); - $opt->registerOptionAlias("bg", "background"); - - $this->registerColourScheme( - "plain", array( - "default" => "", "value" => "", - "exception" => "", "reset" => "")); - - $this->registerColourScheme( - "dark", array( - "default" => self::C_YELLOW, - "value" => self::C_WHITE, - "exception" => self::C_PURPLE)); - - $this->registerColourScheme( - "light", array( - "default" => self::C_BLACK, - "value" => self::C_BLUE, - "exception" => self::C_RED)); - - } - - /** - * background colours - */ - public function optSetBackground($key, $value) { - if (is_null($value)) { - print(':set '.$key.' needs a colour-scheme, e.g. :set '.$key.'=dark'); - return; - } - if (false == $this->applyColourScheme($value)) { - print('setting colourscheme failed: colourscheme '.$value.' is unknown'); - return; - } - } - - /** - * get a colour for the shell - * - * @param string $type one of (value|exception|reset|default) - * @return string a colour string or a empty string - */ - public function getColour($type) { - return isset($this->colour[$type]) ? $this->colour[$type] : ''; - } - - /** - * apply a colour scheme to the current shell - * - * @param string $scheme name of the scheme - * @return false if colourscheme is not known, otherwise true - */ - public function applyColourScheme($scheme) { - if (!isset($this->colour_scheme[$scheme])) return false; - - $this->colour = $this->colour_scheme[$scheme]; - - return true; - } - - /** - * registers a colour scheme - * - * @param string $scheme name of the colour scheme - * @param array a array of colours - */ - public function registerColourScheme($scheme, $colours) { - if (!is_array($colours)) return; - - /* set a reset colour if it is not supplied from the outside */ - if (!isset($colours["reset"])) $colours["reset"] = self::C_RESET; - - $this->colour_scheme[$scheme] = $colours; - } -} - diff --git a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/ExecutionTime.php b/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/ExecutionTime.php deleted file mode 100644 index 2c2bf9ad38..0000000000 --- a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/ExecutionTime.php +++ /dev/null @@ -1,56 +0,0 @@ -registerOption("exectime", $this, "optSetExecTime"); - } - - public function optSetExecTime($key, $val) { - switch ($val) { - case "enable": - case "1": - case "on": - $this->show_exectime = true; - break; - case "disable": - case "0": - case "off": - $this->show_exectime = false; - break; - default: - printf(":set %s failed, unknown value. Use :set %s = (on|off)", $key, $key); - break; - } - } - - public function startParseTime() { - $this->parse_time = microtime(1); - $this->exec_time = 0.0; - } - public function startExecTime() { - $this->exec_time = microtime(1); - } - public function stopTime() { - $this->end_time = microtime(1); - } - - public function getParseTime() { - return ($this->exec_time == 0.0 ? $this->end_time : $this->exec_time) - $this->parse_time; - } - - public function getExecTime() { - return ($this->exec_time == 0.0 ? 0.0 : $this->end_time - $this->exec_time); - } - - public function isShow() { - return $this->show_exectime; - } -} diff --git a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/InlineHelp.php b/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/InlineHelp.php deleted file mode 100644 index 4449d1f42b..0000000000 --- a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/InlineHelp.php +++ /dev/null @@ -1,140 +0,0 @@ -registerCommand('#^\? #', $this, 'cmdHelp', '? ', - 'show the DocComment a Class, Method or Function'.PHP_EOL. - ' e.g.: ? fopen(), ? PHP_Shell, ? $__shell'); - } - - /** - * handle the '?' commands - * - * With the help of the Reflection Class we extract the DocComments and display them - * For internal Functions we extract the prototype from the php source. - * - * ? Class::method() - * ? $obj->method() - * ? Class::property - * ? $obj::property - * ? Class - * ? $obj - * ? function() - * - * The license of the PHP_Shell class - * ? license - * - * @return string the help text - */ - public function cmdHelp($l) { - if ("? " == substr($l, 0, strlen("? "))) { - $str = substr($l, 2); - - $cmd = ''; - - if (preg_match('#^([A-Za-z0-9_]+)::([a-zA-Z0-9_]+)\(\s*\)\s*#', $str, $a)) { - /* ? Class::method() */ - - $class = $a[1]; - $method = $a[2]; - - if (false !== ($proto = PHP_ShellPrototypes::getInstance()->get($class.'::'.$method))) { - - $cmd = sprintf("/**\n* %s\n\n* @params %s\n* @return %s\n*/\n", - $proto['description'], - $proto['params'], - $proto['return'] - ); - } else if (class_exists($class, false)) { - $c = new ReflectionClass($class); - - if ($c->hasMethod($method)) { - $cmd = $c->getMethod($method)->getDocComment(); - } - } - } else if (preg_match('#^\$([A-Za-z0-9_]+)->([a-zA-Z0-9_]+)\(\s*\)\s*#', $str, $a)) { - /* ? $obj->method() */ - if (isset($GLOBALS[$a[1]]) && is_object($GLOBALS[$a[1]])) { - $class = get_class($GLOBALS[$a[1]]); - $method = $a[2]; - - $c = new ReflectionClass($class); - - if ($c->hasMethod($method)) { - $cmd = $c->getMethod($method)->getDocComment(); - } - } - } else if (preg_match('#^([A-Za-z0-9_]+)::([a-zA-Z0-9_]+)\s*$#', $str, $a)) { - /* ? Class::property */ - $class = $a[1]; - $property = $a[2]; - if (class_exists($class, false)) { - $c = new ReflectionClass($class); - - if ($c->hasProperty($property)) { - $cmd = $c->getProperty($property)->getDocComment(); - } - } - } else if (preg_match('#^\$([A-Za-z0-9_]+)->([a-zA-Z0-9_]+)\s*$#', $str, $a)) { - /* ? $obj->property */ - if (isset($GLOBALS[$a[1]]) && is_object($GLOBALS[$a[1]])) { - $class = get_class($GLOBALS[$a[1]]); - $method = $a[2]; - - $c = new ReflectionClass($class); - - if ($c->hasProperty($property)) { - $cmd = $c->getProperty($property)->getDocComment(); - } - - } - } else if (preg_match('#^([A-Za-z0-9_]+)$#', $str, $a)) { - /* ? Class */ - if (class_exists($a[1], false)) { - $c = new ReflectionClass($a[1]); - $cmd = $c->getDocComment(); - } - } else if (preg_match('#^\$([A-Za-z0-9_]+)$#', $str, $a)) { - /* ? $object */ - $obj = $a[1]; - if (isset($GLOBALS[$obj]) && is_object($GLOBALS[$obj])) { - $class = get_class($GLOBALS[$obj]); - - $c = new ReflectionClass($class); - $cmd = $c->getDocComment(); - } - - } else if (preg_match('#^([A-Za-z0-9_]+)\(\s*\)$#', $str, $a)) { - /* ? function() */ - $func = $a[1]; - - if (false !== ($proto = PHP_ShellPrototypes::getInstance()->get($func))) { - $cmd = sprintf("/**\n* %s\n*\n* @params %s\n* @return %s\n*/\n", - $proto['description'], - $proto['params'], - $proto['return'] - ); - } else if (function_exists($func)) { - $c = new ReflectionFunction($func); - $cmd = $c->getDocComment(); - } - } - - if ($cmd == '') { - $cmd = var_export(sprintf('no help found for \'%s\'', $str), 1); - } else { - $cmd = var_export($cmd, 1); - } - } else if ("?" == $l) { - $cmd = $this->getHelp(); - $cmd = var_export($cmd, 1); - } - - return $cmd; - } -} diff --git a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/LoadScript.php b/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/LoadScript.php deleted file mode 100644 index a8c4697d8b..0000000000 --- a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/LoadScript.php +++ /dev/null @@ -1,32 +0,0 @@ -registerCommand('#^r #', $this, 'cmdLoadScript', 'r ', - 'load a php-script and execute each line'); - - } - - public function cmdLoadScript($l) { - $l = substr($l, 2); - - if (file_exists($l)) { - $content = file($l); - - $source = array(); - - foreach ($content as $line) { - $line = chop($line); - - if (preg_match('#^<\?php#', $line)) continue; - - $source[] = $line; - } - - return $source; - } - return ""; - } -} diff --git a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/Prototypes.php b/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/Prototypes.php deleted file mode 100644 index 618074e53a..0000000000 --- a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/Prototypes.php +++ /dev/null @@ -1,16235 +0,0 @@ - - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Closes xmlreader - current frees resources until xmlTextReaderClose is fixed in libxml', - ), - 'XMLReader::getAttribute' => - array ( - 'return' => 'string', - 'params' => 'string name', - 'description' => 'Get value of an attribute from current element', - ), - 'XMLReader::getAttributeNo' => - array ( - 'return' => 'string', - 'params' => 'int index', - 'description' => 'Get value of an attribute at index from current element', - ), - 'XMLReader::getAttributeNs' => - array ( - 'return' => 'string', - 'params' => 'string name, string namespaceURI', - 'description' => 'Get value of a attribute via name and namespace from current element', - ), - 'XMLReader::getParserProperty' => - array ( - 'return' => 'boolean', - 'params' => 'int property', - 'description' => 'Indicates whether given property (one of the parser option constants) is set or not on parser', - ), - 'XMLReader::isValid' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Returns boolean indicating if parsed document is valid or not.Must set XMLREADER_LOADDTD or XMLREADER_VALIDATE parser option prior to the first call to reador this method will always return FALSE', - ), - 'XMLReader::lookupNamespace' => - array ( - 'return' => 'string', - 'params' => 'string prefix', - 'description' => 'Return namespaceURI for associated prefix on current node', - ), - 'XMLReader::moveToAttribute' => - array ( - 'return' => 'boolean', - 'params' => 'string name', - 'description' => 'Positions reader at specified attribute - Returns TRUE on success and FALSE on failure', - ), - 'XMLReader::moveToAttributeNo' => - array ( - 'return' => 'boolean', - 'params' => 'int index', - 'description' => 'Positions reader at attribute at spcecified index.Returns TRUE on success and FALSE on failure', - ), - 'XMLReader::moveToAttributeNs' => - array ( - 'return' => 'boolean', - 'params' => 'string name, string namespaceURI', - 'description' => 'Positions reader at attribute spcified by name and namespaceURI.Returns TRUE on success and FALSE on failure', - ), - 'XMLReader::moveToElement' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Moves the position of the current instance to the node that contains the current Attribute node.', - ), - 'XMLReader::moveToFirstAttribute' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Moves the position of the current instance to the first attribute associated with the current node.', - ), - 'XMLReader::moveToNextAttribute' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Moves the position of the current instance to the next attribute associated with the current node.', - ), - 'XMLReader::read' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Moves the position of the current instance to the next node in the stream.', - ), - 'XMLReader::next' => - array ( - 'return' => 'boolean', - 'params' => '[string localname]', - 'description' => 'Moves the position of the current instance to the next node in the stream.', - ), - 'XMLReader::open' => - array ( - 'return' => 'boolean', - 'params' => 'string URI', - 'description' => 'Sets the URI that the the XMLReader will parse.', - ), - 'XMLReader::setParserProperty' => - array ( - 'return' => 'boolean', - 'params' => 'int property, boolean value', - 'description' => 'Sets parser property (one of the parser option constants).Properties must be set after open() or XML() and before the first read() is called', - ), - 'XMLReader::setRelaxNGSchemaSource' => - array ( - 'return' => 'boolean', - 'params' => 'string source', - 'description' => 'Sets the string that the the XMLReader will parse.', - ), - 'XMLReader::XML' => - array ( - 'return' => 'boolean', - 'params' => 'string source', - 'description' => 'Sets the string that the the XMLReader will parse.', - ), - 'XMLReader::expand' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Moves the position of the current instance to the next node in the stream.', - ), - 'SimpleXMLElement::asXML' => - array ( - 'return' => 'string', - 'params' => '[string filename]', - 'description' => 'Return a well-formed XML string based on SimpleXML element', - ), - 'SimpleXMLElement::getNamespaces' => - array ( - 'return' => 'string', - 'params' => '[bool recursve]', - 'description' => 'Return all namespaces in use', - ), - 'SimpleXMLElement::getDocNamespaces' => - array ( - 'return' => 'string', - 'params' => '[bool recursive]', - 'description' => 'Return all namespaces registered with document', - ), - 'SimpleXMLElement::children' => - array ( - 'return' => 'object', - 'params' => '[string ns]', - 'description' => 'Finds children of given node', - ), - 'SimpleXMLElement::getName' => - array ( - 'return' => 'object', - 'params' => '', - 'description' => 'Finds children of given node', - ), - 'SimpleXMLElement::attributes' => - array ( - 'return' => 'array', - 'params' => '[string ns]', - 'description' => 'Identifies an element\'s attributes', - ), - 'SimpleXMLElement::addChild' => - array ( - 'return' => 'void', - 'params' => 'string qName [, string value [,string ns]]', - 'description' => 'Add Element with optional namespace information', - ), - 'SimpleXMLElement::addAttribute' => - array ( - 'return' => 'void', - 'params' => 'string qName, string value [,string ns]', - 'description' => 'Add Attribute with optional namespace information', - ), - 'simplexml_load_file' => - array ( - 'return' => 'simplemxml_element', - 'params' => 'string filename [, string class_name [, int options]]', - 'description' => 'Load a filename and return a simplexml_element object to allow for processing', - ), - 'simplexml_load_string' => - array ( - 'return' => 'simplemxml_element', - 'params' => 'string data [, string class_name [, int options]]', - 'description' => 'Load a string and return a simplexml_element object to allow for processing', - ), - 'simplexml_import_dom' => - array ( - 'return' => 'simplemxml_element', - 'params' => 'domNode node [, string class_name]', - 'description' => 'Get a simplexml_element object from dom to allow for processing', - ), - 'snmpget' => - array ( - 'return' => 'string', - 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]', - 'description' => 'Fetch a SNMP object', - ), - 'snmpgetnext' => - array ( - 'return' => 'string', - 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]', - 'description' => 'Fetch a SNMP object', - ), - 'snmpwalk' => - array ( - 'return' => 'array', - 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]', - 'description' => 'Return all objects under the specified object id', - ), - 'snmprealwalk' => - array ( - 'return' => 'array', - 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]', - 'description' => 'Return all objects including their respective object id withing the specified one', - ), - 'snmp_get_quick_print' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Return the current status of quick_print', - ), - 'snmp_set_quick_print' => - array ( - 'return' => 'void', - 'params' => 'int quick_print', - 'description' => 'Return all objects including their respective object id withing the specified one', - ), - 'snmp_set_enum_print' => - array ( - 'return' => 'void', - 'params' => 'int enum_print', - 'description' => 'Return all values that are enums with their enum value instead of the raw integer', - ), - 'snmp_set_oid_numeric_print' => - array ( - 'return' => 'void', - 'params' => 'int oid_numeric_print', - 'description' => 'Return all objects including their respective object id withing the specified one', - ), - 'snmpset' => - array ( - 'return' => 'int', - 'params' => 'string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]]', - 'description' => 'Set the value of a SNMP object', - ), - 'snmp2_get' => - array ( - 'return' => 'string', - 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]', - 'description' => 'Fetch a SNMP object', - ), - 'snmp2_getnext' => - array ( - 'return' => 'string', - 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]', - 'description' => 'Fetch a SNMP object', - ), - 'snmp2_walk' => - array ( - 'return' => 'array', - 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]', - 'description' => 'Return all objects under the specified object id', - ), - 'snmp2_real_walk' => - array ( - 'return' => 'array', - 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]', - 'description' => 'Return all objects including their respective object id withing the specified one', - ), - 'snmp2_set' => - array ( - 'return' => 'int', - 'params' => 'string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]]', - 'description' => 'Set the value of a SNMP object', - ), - 'php_snmpv3' => - array ( - 'return' => 'void', - 'params' => 'INTERNAL_FUNCTION_PARAMETERS, int st', - 'description' => '** Generic SNMPv3 object fetcher* From here is passed on the the common internal object fetcher.** st=SNMP_CMD_GET snmp3_get() - query an agent and return a single value.* st=SNMP_CMD_GETNEXT snmp3_getnext() - query an agent and return the next single value.* st=SNMP_CMD_WALK snmp3_walk() - walk the mib and return a single dimensional array* containing the values.* st=SNMP_CMD_REALWALK snmp3_real_walk() - walk the mib and return an* array of oid,value pairs.* st=SNMP_CMD_SET snmp3_set() - query an agent and set a single value*', - ), - 'snmp3_get' => - array ( - 'return' => 'int', - 'params' => 'string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]]', - 'description' => 'Fetch the value of a SNMP object', - ), - 'snmp3_getnext' => - array ( - 'return' => 'int', - 'params' => 'string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]]', - 'description' => 'Fetch the value of a SNMP object', - ), - 'snmp3_walk' => - array ( - 'return' => 'int', - 'params' => 'string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]]', - 'description' => 'Fetch the value of a SNMP object', - ), - 'snmp3_real_walk' => - array ( - 'return' => 'int', - 'params' => 'string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]]', - 'description' => 'Fetch the value of a SNMP object', - ), - 'snmp3_set' => - array ( - 'return' => 'int', - 'params' => 'string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id, string type, mixed value [, int timeout [, int retries]]', - 'description' => 'Fetch the value of a SNMP object', - ), - 'snmp_set_valueretrieval' => - array ( - 'return' => 'int', - 'params' => 'int method', - 'description' => 'Specify the method how the SNMP values will be returned', - ), - 'snmp_get_valueretrieval' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Return the method how the SNMP values will be returned', - ), - 'snmp_read_mib' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Reads and parses a MIB file into the active MIB tree.', - ), - 'mysqli_embedded_server_start' => - array ( - 'return' => 'bool', - 'params' => 'bool start, array arguments, array groups', - 'description' => 'initialize and start embedded server', - ), - 'mysqli_embedded_server_end' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => '', - ), - 'mysqli_connect' => - array ( - 'return' => 'object', - 'params' => '[string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]]', - 'description' => 'Open a connection to a mysql server', - ), - 'mysqli_connect_errno' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Returns the numerical value of the error message from last connect command', - ), - 'mysqli_connect_error' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Returns the text of the error message from previous MySQL operation', - ), - 'mysqli_multi_query' => - array ( - 'return' => 'bool', - 'params' => 'object link, string query', - 'description' => 'Binary-safe version of mysql_query()', - ), - 'mysqli_set_charset' => - array ( - 'return' => 'bool', - 'params' => 'object link, string csname', - 'description' => 'sets client character set', - ), - 'mysqli_get_charset' => - array ( - 'return' => 'object', - 'params' => 'object link', - 'description' => 'returns a character set object', - ), - 'mysqli_affected_rows' => - array ( - 'return' => 'mixed', - 'params' => 'object link', - 'description' => 'Get number of affected rows in previous MySQL operation', - ), - 'mysqli_autocommit' => - array ( - 'return' => 'bool', - 'params' => 'object link, bool mode', - 'description' => 'Turn auto commit on or of', - ), - 'mysqli_stmt_bind_param' => - array ( - 'return' => 'bool', - 'params' => 'object stmt, string types, mixed variable [,mixed,....]', - 'description' => 'Bind variables to a prepared statement as parameters', - ), - 'mysqli_stmt_bind_result' => - array ( - 'return' => 'bool', - 'params' => 'object stmt, mixed var, [,mixed, ...]', - 'description' => 'Bind variables to a prepared statement for result storage', - ), - 'mysqli_change_user' => - array ( - 'return' => 'bool', - 'params' => 'object link, string user, string password, string database', - 'description' => 'Change logged-in user of the active connection', - ), - 'mysqli_character_set_name' => - array ( - 'return' => 'string', - 'params' => 'object link', - 'description' => 'Returns the name of the character set used for this connection', - ), - 'mysqli_close' => - array ( - 'return' => 'bool', - 'params' => 'object link', - 'description' => 'Close connection', - ), - 'mysqli_commit' => - array ( - 'return' => 'bool', - 'params' => 'object link', - 'description' => 'Commit outstanding actions and close transaction', - ), - 'mysqli_data_seek' => - array ( - 'return' => 'bool', - 'params' => 'object result, int offset', - 'description' => 'Move internal result pointer', - ), - 'mysqli_debug' => - array ( - 'return' => 'void', - 'params' => 'string debug', - 'description' => '', - ), - 'mysqli_dump_debug_info' => - array ( - 'return' => 'bool', - 'params' => 'object link', - 'description' => '', - ), - 'mysqli_errno' => - array ( - 'return' => 'int', - 'params' => 'object link', - 'description' => 'Returns the numerical value of the error message from previous MySQL operation', - ), - 'mysqli_error' => - array ( - 'return' => 'string', - 'params' => 'object link', - 'description' => 'Returns the text of the error message from previous MySQL operation', - ), - 'mysqli_stmt_execute' => - array ( - 'return' => 'bool', - 'params' => 'object stmt', - 'description' => 'Execute a prepared statement', - ), - 'mysqli_stmt_fetch' => - array ( - 'return' => 'mixed', - 'params' => 'object stmt', - 'description' => 'Fetch results from a prepared statement into the bound variables', - ), - 'mysqli_field_count' => - array ( - 'return' => 'int', - 'params' => 'object link', - 'description' => 'Fetch the number of fields returned by the last query for the given link', - ), - 'mysqli_field_seek' => - array ( - 'return' => 'int', - 'params' => 'object result, int fieldnr', - 'description' => 'Set result pointer to a specified field offset', - ), - 'mysqli_field_tell' => - array ( - 'return' => 'int', - 'params' => 'object result', - 'description' => 'Get current field offset of result pointer', - ), - 'mysqli_free_result' => - array ( - 'return' => 'void', - 'params' => 'object result', - 'description' => 'Free query result memory for the given result handle', - ), - 'mysqli_get_client_info' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Get MySQL client info', - ), - 'mysqli_get_client_version' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get MySQL client info', - ), - 'mysqli_get_proto_info' => - array ( - 'return' => 'int', - 'params' => 'object link', - 'description' => 'Get MySQL protocol information', - ), - 'mysqli_get_server_info' => - array ( - 'return' => 'string', - 'params' => 'object link', - 'description' => 'Get MySQL server info', - ), - 'mysqli_get_server_version' => - array ( - 'return' => 'int', - 'params' => 'object link', - 'description' => 'Return the MySQL version for the server referenced by the given link', - ), - 'mysqli_info' => - array ( - 'return' => 'string', - 'params' => 'object link', - 'description' => 'Get information about the most recent query', - ), - 'mysqli_init' => - array ( - 'return' => 'resource', - 'params' => 'void', - 'description' => 'Initialize mysqli and return a resource for use with mysql_real_connect', - ), - 'mysqli_insert_id' => - array ( - 'return' => 'mixed', - 'params' => 'object link', - 'description' => 'Get the ID generated from the previous INSERT operation', - ), - 'mysqli_kill' => - array ( - 'return' => 'bool', - 'params' => 'object link, int processid', - 'description' => 'Kill a mysql process on the server', - ), - 'mysqli_set_local_infile_handler' => - array ( - 'return' => 'bool', - 'params' => 'object link, callback read_func', - 'description' => 'Set callback functions for LOAD DATA LOCAL INFILE', - ), - 'mysqli_more_results' => - array ( - 'return' => 'bool', - 'params' => 'object link', - 'description' => 'check if there any more query results from a multi query', - ), - 'mysqli_next_result' => - array ( - 'return' => 'bool', - 'params' => 'object link', - 'description' => 'read next result from multi_query', - ), - 'mysqli_num_fields' => - array ( - 'return' => 'int', - 'params' => 'object result', - 'description' => 'Get number of fields in result', - ), - 'mysqli_num_rows' => - array ( - 'return' => 'mixed', - 'params' => 'object result', - 'description' => 'Get number of rows in result', - ), - 'mysqli_options' => - array ( - 'return' => 'bool', - 'params' => 'object link, int flags, mixed values', - 'description' => 'Set options', - ), - 'mysqli_ping' => - array ( - 'return' => 'bool', - 'params' => 'object link', - 'description' => 'Ping a server connection or reconnect if there is no connection', - ), - 'mysqli_prepare' => - array ( - 'return' => 'mixed', - 'params' => 'object link, string query', - 'description' => 'Prepare a SQL statement for execution', - ), - 'mysqli_real_connect' => - array ( - 'return' => 'bool', - 'params' => 'object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]]', - 'description' => 'Open a connection to a mysql server', - ), - 'mysqli_real_query' => - array ( - 'return' => 'bool', - 'params' => 'object link, string query', - 'description' => 'Binary-safe version of mysql_query()', - ), - 'mysqli_real_escape_string' => - array ( - 'return' => 'string', - 'params' => 'object link, string escapestr', - 'description' => 'Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection', - ), - 'mysqli_rollback' => - array ( - 'return' => 'bool', - 'params' => 'object link', - 'description' => 'Undo actions from current transaction', - ), - 'mysqli_send_long_data' => - array ( - 'return' => 'bool', - 'params' => 'object stmt, int param_nr, string data', - 'description' => '', - ), - 'mysqli_stmt_affected_rows' => - array ( - 'return' => 'mixed', - 'params' => 'object stmt', - 'description' => 'Return the number of rows affected in the last query for the given link', - ), - 'mysqli_stmt_close' => - array ( - 'return' => 'bool', - 'params' => 'object stmt', - 'description' => 'Close statement', - ), - 'mysqli_stmt_data_seek' => - array ( - 'return' => 'void', - 'params' => 'object stmt, int offset', - 'description' => 'Move internal result pointer', - ), - 'mysqli_stmt_free_result' => - array ( - 'return' => 'void', - 'params' => 'object stmt', - 'description' => 'Free stored result memory for the given statement handle', - ), - 'mysqli_stmt_insert_id' => - array ( - 'return' => 'mixed', - 'params' => 'object stmt', - 'description' => 'Get the ID generated from the previous INSERT operation', - ), - 'mysqli_stmt_reset' => - array ( - 'return' => 'bool', - 'params' => 'object stmt', - 'description' => 'reset a prepared statement', - ), - 'mysqli_stmt_num_rows' => - array ( - 'return' => 'mixed', - 'params' => 'object stmt', - 'description' => 'Return the number of rows in statements result set', - ), - 'mysqli_select_db' => - array ( - 'return' => 'string', - 'params' => 'object link, string dbname', - 'description' => 'Select a MySQL database', - ), - 'mysqli_sqlstate' => - array ( - 'return' => 'string', - 'params' => 'object link', - 'description' => 'Returns the SQLSTATE error from previous MySQL operation', - ), - 'mysqli_ssl_set' => - array ( - 'return' => 'bool', - 'params' => 'object link ,string key ,string cert ,string ca ,string capath ,string cipher]', - 'description' => '', - ), - 'mysqli_stat' => - array ( - 'return' => 'mixed', - 'params' => 'object link', - 'description' => 'Get current system status', - ), - 'mysqli_stmt_attr_set' => - array ( - 'return' => 'int', - 'params' => 'object stmt, long attr, bool mode', - 'description' => '', - ), - 'mysqli_stmt_attr_get' => - array ( - 'return' => 'int', - 'params' => 'object stmt, long attr', - 'description' => '', - ), - 'mysqli_stmt_errno' => - array ( - 'return' => 'int', - 'params' => 'object stmt', - 'description' => '', - ), - 'mysqli_stmt_error' => - array ( - 'return' => 'string', - 'params' => 'object stmt', - 'description' => '', - ), - 'mysqli_stmt_init' => - array ( - 'return' => 'mixed', - 'params' => 'object link', - 'description' => 'Initialize statement object', - ), - 'mysqli_stmt_prepare' => - array ( - 'return' => 'bool', - 'params' => 'object stmt, string query', - 'description' => 'prepare server side statement with query', - ), - 'mysqli_stmt_result_metadata' => - array ( - 'return' => 'mixed', - 'params' => 'object stmt', - 'description' => 'return result set from statement', - ), - 'mysqli_stmt_store_result' => - array ( - 'return' => 'bool', - 'params' => 'stmt', - 'description' => '', - ), - 'mysqli_stmt_sqlstate' => - array ( - 'return' => 'string', - 'params' => 'object stmt', - 'description' => '', - ), - 'mysqli_store_result' => - array ( - 'return' => 'object', - 'params' => 'object link', - 'description' => 'Buffer result set on client', - ), - 'mysqli_thread_id' => - array ( - 'return' => 'int', - 'params' => 'object link', - 'description' => 'Return the current thread ID', - ), - 'mysqli_thread_safe' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Return whether thread safety is given or not', - ), - 'mysqli_use_result' => - array ( - 'return' => 'mixed', - 'params' => 'object link', - 'description' => 'Directly retrieve query results - do not buffer results on client side', - ), - 'mysqli_disable_reads_from_master' => - array ( - 'return' => 'void', - 'params' => 'object link', - 'description' => '', - ), - 'mysqli_disable_rpl_parse' => - array ( - 'return' => 'void', - 'params' => 'object link', - 'description' => '', - ), - 'mysqli_enable_reads_from_master' => - array ( - 'return' => 'void', - 'params' => 'object link', - 'description' => '', - ), - 'mysqli_enable_rpl_parse' => - array ( - 'return' => 'void', - 'params' => 'object link', - 'description' => '', - ), - 'mysqli_master_query' => - array ( - 'return' => 'bool', - 'params' => 'object link, string query', - 'description' => 'Enforce execution of a query on the master in a master/slave setup', - ), - 'mysqli_rpl_parse_enabled' => - array ( - 'return' => 'int', - 'params' => 'object link', - 'description' => '', - ), - 'mysqli_rpl_probe' => - array ( - 'return' => 'bool', - 'params' => 'object link', - 'description' => '', - ), - 'mysqli_rpl_query_type' => - array ( - 'return' => 'int', - 'params' => 'string query', - 'description' => '', - ), - 'mysqli_send_query' => - array ( - 'return' => 'bool', - 'params' => 'object link, string query', - 'description' => '', - ), - 'mysqli_slave_query' => - array ( - 'return' => 'bool', - 'params' => 'object link, string query', - 'description' => 'Enforce execution of a query on a slave in a master/slave setup', - ), - 'imap_open' => - array ( - 'return' => 'resource', - 'params' => 'string mailbox, string user, string password [, int options]', - 'description' => 'Open an IMAP stream to a mailbox', - ), - 'imap_reopen' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, string mailbox [, int options]', - 'description' => 'Reopen an IMAP stream to a new mailbox', - ), - 'imap_append' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, string folder, string message [, string options]', - 'description' => 'Append a new message to a specified mailbox', - ), - 'imap_num_msg' => - array ( - 'return' => 'int', - 'params' => 'resource stream_id', - 'description' => 'Gives the number of messages in the current mailbox', - ), - 'imap_ping' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id', - 'description' => 'Check if the IMAP stream is still active', - ), - 'imap_num_recent' => - array ( - 'return' => 'int', - 'params' => 'resource stream_id', - 'description' => 'Gives the number of recent messages in current mailbox', - ), - 'imap_get_quota' => - array ( - 'return' => 'array', - 'params' => 'resource stream_id, string qroot', - 'description' => 'Returns the quota set to the mailbox account qroot', - ), - 'imap_get_quotaroot' => - array ( - 'return' => 'array', - 'params' => 'resource stream_id, string mbox', - 'description' => 'Returns the quota set to the mailbox account mbox', - ), - 'imap_set_quota' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, string qroot, int mailbox_size', - 'description' => 'Will set the quota for qroot mailbox', - ), - 'imap_setacl' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, string mailbox, string id, string rights', - 'description' => 'Sets the ACL for a given mailbox', - ), - 'imap_getacl' => - array ( - 'return' => 'array', - 'params' => 'resource stream_id, string mailbox', - 'description' => 'Gets the ACL for a given mailbox', - ), - 'imap_expunge' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id', - 'description' => 'Permanently delete all messages marked for deletion', - ), - 'imap_close' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id [, int options]', - 'description' => 'Close an IMAP stream', - ), - 'imap_headers' => - array ( - 'return' => 'array', - 'params' => 'resource stream_id', - 'description' => 'Returns headers for all messages in a mailbox', - ), - 'imap_body' => - array ( - 'return' => 'string', - 'params' => 'resource stream_id, int msg_no [, int options]', - 'description' => 'Read the message body', - ), - 'imap_mail_copy' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, int msg_no, string mailbox [, int options]', - 'description' => 'Copy specified message to a mailbox', - ), - 'imap_mail_move' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, int msg_no, string mailbox [, int options]', - 'description' => 'Move specified message to a mailbox', - ), - 'imap_createmailbox' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, string mailbox', - 'description' => 'Create a new mailbox', - ), - 'imap_renamemailbox' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, string old_name, string new_name', - 'description' => 'Rename a mailbox', - ), - 'imap_deletemailbox' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, string mailbox', - 'description' => 'Delete a mailbox', - ), - 'imap_list' => - array ( - 'return' => 'array', - 'params' => 'resource stream_id, string ref, string pattern', - 'description' => 'Read the list of mailboxes', - ), - 'imap_getmailboxes' => - array ( - 'return' => 'array', - 'params' => 'resource stream_id, string ref, string pattern', - 'description' => 'Reads the list of mailboxes and returns a full array of objects containing name, attributes, and delimiter', - ), - 'imap_scan' => - array ( - 'return' => 'array', - 'params' => 'resource stream_id, string ref, string pattern, string content', - 'description' => 'Read list of mailboxes containing a certain string', - ), - 'imap_check' => - array ( - 'return' => 'object', - 'params' => 'resource stream_id', - 'description' => 'Get mailbox properties', - ), - 'imap_delete' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, int msg_no [, int options]', - 'description' => 'Mark a message for deletion', - ), - 'imap_undelete' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, int msg_no', - 'description' => 'Remove the delete flag from a message', - ), - 'imap_headerinfo' => - array ( - 'return' => 'object', - 'params' => 'resource stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]]', - 'description' => 'Read the headers of the message', - ), - 'imap_rfc822_parse_headers' => - array ( - 'return' => 'object', - 'params' => 'string headers [, string default_host]', - 'description' => 'Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo()', - ), - 'imap_lsub' => - array ( - 'return' => 'array', - 'params' => 'resource stream_id, string ref, string pattern', - 'description' => 'Return a list of subscribed mailboxes', - ), - 'imap_getsubscribed' => - array ( - 'return' => 'array', - 'params' => 'resource stream_id, string ref, string pattern', - 'description' => 'Return a list of subscribed mailboxes, in the same format as imap_getmailboxes()', - ), - 'imap_subscribe' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, string mailbox', - 'description' => 'Subscribe to a mailbox', - ), - 'imap_unsubscribe' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, string mailbox', - 'description' => 'Unsubscribe from a mailbox', - ), - 'imap_fetchstructure' => - array ( - 'return' => 'object', - 'params' => 'resource stream_id, int msg_no [, int options]', - 'description' => 'Read the full structure of a message', - ), - 'imap_fetchbody' => - array ( - 'return' => 'string', - 'params' => 'resource stream_id, int msg_no, string section [, int options]', - 'description' => 'Get a specific body section', - ), - 'imap_savebody' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, string|resource file, int msg_no[, string section = ""[, int options = 0]]', - 'description' => 'Save a specific body section to a file', - ), - 'imap_base64' => - array ( - 'return' => 'string', - 'params' => 'string text', - 'description' => 'Decode BASE64 encoded text', - ), - 'imap_qprint' => - array ( - 'return' => 'string', - 'params' => 'string text', - 'description' => 'Convert a quoted-printable string to an 8-bit string', - ), - 'imap_8bit' => - array ( - 'return' => 'string', - 'params' => 'string text', - 'description' => 'Convert an 8-bit string to a quoted-printable string', - ), - 'imap_binary' => - array ( - 'return' => 'string', - 'params' => 'string text', - 'description' => 'Convert an 8bit string to a base64 string', - ), - 'imap_mailboxmsginfo' => - array ( - 'return' => 'object', - 'params' => 'resource stream_id', - 'description' => 'Returns info about the current mailbox', - ), - 'imap_rfc822_write_address' => - array ( - 'return' => 'string', - 'params' => 'string mailbox, string host, string personal', - 'description' => 'Returns a properly formatted email address given the mailbox, host, and personal info', - ), - 'imap_rfc822_parse_adrlist' => - array ( - 'return' => 'array', - 'params' => 'string address_string, string default_host', - 'description' => 'Parses an address string', - ), - 'imap_utf8' => - array ( - 'return' => 'string', - 'params' => 'string mime_encoded_text', - 'description' => 'Convert a mime-encoded text to UTF-8', - ), - 'imap_utf7_decode' => - array ( - 'return' => 'string', - 'params' => 'string buf', - 'description' => 'Decode a modified UTF-7 string', - ), - 'imap_utf7_encode' => - array ( - 'return' => 'string', - 'params' => 'string buf', - 'description' => 'Encode a string in modified UTF-7', - ), - 'imap_setflag_full' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, string sequence, string flag [, int options]', - 'description' => 'Sets flags on messages', - ), - 'imap_clearflag_full' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_id, string sequence, string flag [, int options]', - 'description' => 'Clears flags on messages', - ), - 'imap_sort' => - array ( - 'return' => 'array', - 'params' => 'resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset]]]', - 'description' => 'Sort an array of message headers, optionally including only messages that meet specified criteria.', - ), - 'imap_fetchheader' => - array ( - 'return' => 'string', - 'params' => 'resource stream_id, int msg_no [, int options]', - 'description' => 'Get the full unfiltered header for a message', - ), - 'imap_uid' => - array ( - 'return' => 'int', - 'params' => 'resource stream_id, int msg_no', - 'description' => 'Get the unique message id associated with a standard sequential message number', - ), - 'imap_msgno' => - array ( - 'return' => 'int', - 'params' => 'resource stream_id, int unique_msg_id', - 'description' => 'Get the sequence number associated with a UID', - ), - 'imap_status' => - array ( - 'return' => 'object', - 'params' => 'resource stream_id, string mailbox, int options', - 'description' => 'Get status info from a mailbox', - ), - 'imap_bodystruct' => - array ( - 'return' => 'object', - 'params' => 'resource stream_id, int msg_no, string section', - 'description' => 'Read the structure of a specified body section of a specific message', - ), - 'imap_fetch_overview' => - array ( - 'return' => 'array', - 'params' => 'resource stream_id, int msg_no [, int options]', - 'description' => 'Read an overview of the information in the headers of the given message sequence', - ), - 'imap_mail_compose' => - array ( - 'return' => 'string', - 'params' => 'array envelope, array body', - 'description' => 'Create a MIME message based on given envelope and body sections', - ), - 'imap_mail' => - array ( - 'return' => 'bool', - 'params' => 'string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]]', - 'description' => 'Send an email message', - ), - 'imap_search' => - array ( - 'return' => 'array', - 'params' => 'resource stream_id, string criteria [, int options [, string charset]]', - 'description' => 'Return a list of messages matching the given criteria', - ), - 'imap_alerts' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called.', - ), - 'imap_errors' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called.', - ), - 'imap_last_error' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call.', - ), - 'imap_mime_header_decode' => - array ( - 'return' => 'array', - 'params' => 'string str', - 'description' => 'Decode mime header element in accordance with RFC 2047 and return array of objects containing \'charset\' encoding and decoded \'text\'', - ), - 'imap_thread' => - array ( - 'return' => 'array', - 'params' => 'resource stream_id [, int options]', - 'description' => 'Return threaded by REFERENCES tree', - ), - 'imap_timeout' => - array ( - 'return' => 'mixed', - 'params' => 'int timeout_type [, int timeout]', - 'description' => 'Set or fetch imap timeout', - ), - 'session_set_cookie_params' => - array ( - 'return' => 'void', - 'params' => 'int lifetime [, string path [, string domain [, bool secure]]]', - 'description' => 'Set session cookie parameters', - ), - 'session_get_cookie_params' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Return the session cookie parameters', - ), - 'session_name' => - array ( - 'return' => 'string', - 'params' => '[string newname]', - 'description' => 'Return the current session name. If newname is given, the session name is replaced with newname', - ), - 'session_module_name' => - array ( - 'return' => 'string', - 'params' => '[string newname]', - 'description' => 'Return the current module name used for accessing session data. If newname is given, the module name is replaced with newname', - ), - 'session_set_save_handler' => - array ( - 'return' => 'void', - 'params' => 'string open, string close, string read, string write, string destroy, string gc', - 'description' => 'Sets user-level functions', - ), - 'session_save_path' => - array ( - 'return' => 'string', - 'params' => '[string newname]', - 'description' => 'Return the current save path passed to module_name. If newname is given, the save path is replaced with newname', - ), - 'session_id' => - array ( - 'return' => 'string', - 'params' => '[string newid]', - 'description' => 'Return the current session id. If newid is given, the session id is replaced with newid', - ), - 'session_regenerate_id' => - array ( - 'return' => 'bool', - 'params' => '[bool delete_old_session]', - 'description' => 'Update the current session id with a newly generated one. If delete_old_session is set to true, remove the old session.', - ), - 'session_cache_limiter' => - array ( - 'return' => 'string', - 'params' => '[string new_cache_limiter]', - 'description' => 'Return the current cache limiter. If new_cache_limited is given, the current cache_limiter is replaced with new_cache_limiter', - ), - 'session_cache_expire' => - array ( - 'return' => 'int', - 'params' => '[int new_cache_expire]', - 'description' => 'Return the current cache expire. If new_cache_expire is given, the current cache_expire is replaced with new_cache_expire', - ), - 'session_register' => - array ( - 'return' => 'bool', - 'params' => 'mixed var_names [, mixed ...]', - 'description' => 'Adds varname(s) to the list of variables which are freezed at the session end', - ), - 'session_unregister' => - array ( - 'return' => 'bool', - 'params' => 'string varname', - 'description' => 'Removes varname from the list of variables which are freezed at the session end', - ), - 'session_is_registered' => - array ( - 'return' => 'bool', - 'params' => 'string varname', - 'description' => 'Checks if a variable is registered in session', - ), - 'session_encode' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Serializes the current setup and returns the serialized representation', - ), - 'session_decode' => - array ( - 'return' => 'bool', - 'params' => 'string data', - 'description' => 'Deserializes data and reinitializes the variables', - ), - 'session_start' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Begin session - reinitializes freezed variables, registers browsers etc', - ), - 'session_destroy' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Destroy the current session and all data associated with it', - ), - 'session_unset' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => 'Unset all registered variables', - ), - 'session_write_close' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => 'Write session data and end session', - ), - 'mysql_connect' => - array ( - 'return' => 'resource', - 'params' => '[string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]]', - 'description' => 'Opens a connection to a MySQL Server', - ), - 'mysql_pconnect' => - array ( - 'return' => 'resource', - 'params' => '[string hostname[:port][:/path/to/socket] [, string username [, string password [, int flags]]]]', - 'description' => 'Opens a persistent connection to a MySQL Server', - ), - 'mysql_close' => - array ( - 'return' => 'bool', - 'params' => '[int link_identifier]', - 'description' => 'Close a MySQL connection', - ), - 'mysql_select_db' => - array ( - 'return' => 'bool', - 'params' => 'string database_name [, int link_identifier]', - 'description' => 'Selects a MySQL database', - ), - 'mysql_get_client_info' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Returns a string that represents the client library version', - ), - 'mysql_get_host_info' => - array ( - 'return' => 'string', - 'params' => '[int link_identifier]', - 'description' => 'Returns a string describing the type of connection in use, including the server host name', - ), - 'mysql_get_proto_info' => - array ( - 'return' => 'int', - 'params' => '[int link_identifier]', - 'description' => 'Returns the protocol version used by current connection', - ), - 'mysql_get_server_info' => - array ( - 'return' => 'string', - 'params' => '[int link_identifier]', - 'description' => 'Returns a string that represents the server version number', - ), - 'mysql_info' => - array ( - 'return' => 'string', - 'params' => '[int link_identifier]', - 'description' => 'Returns a string containing information about the most recent query', - ), - 'mysql_thread_id' => - array ( - 'return' => 'int', - 'params' => '[int link_identifier]', - 'description' => 'Returns the thread id of current connection', - ), - 'mysql_stat' => - array ( - 'return' => 'string', - 'params' => '[int link_identifier]', - 'description' => 'Returns a string containing status information', - ), - 'mysql_client_encoding' => - array ( - 'return' => 'string', - 'params' => '[int link_identifier]', - 'description' => 'Returns the default character set for the current connection', - ), - 'mysql_create_db' => - array ( - 'return' => 'bool', - 'params' => 'string database_name [, int link_identifier]', - 'description' => 'Create a MySQL database', - ), - 'mysql_drop_db' => - array ( - 'return' => 'bool', - 'params' => 'string database_name [, int link_identifier]', - 'description' => 'Drops (delete) a MySQL database', - ), - 'mysql_query' => - array ( - 'return' => 'resource', - 'params' => 'string query [, int link_identifier]', - 'description' => 'Sends an SQL query to MySQL', - ), - 'mysql_unbuffered_query' => - array ( - 'return' => 'resource', - 'params' => 'string query [, int link_identifier]', - 'description' => 'Sends an SQL query to MySQL, without fetching and buffering the result rows', - ), - 'mysql_db_query' => - array ( - 'return' => 'resource', - 'params' => 'string database_name, string query [, int link_identifier]', - 'description' => 'Sends an SQL query to MySQL', - ), - 'mysql_list_dbs' => - array ( - 'return' => 'resource', - 'params' => '[int link_identifier]', - 'description' => 'List databases available on a MySQL server', - ), - 'mysql_list_tables' => - array ( - 'return' => 'resource', - 'params' => 'string database_name [, int link_identifier]', - 'description' => 'List tables in a MySQL database', - ), - 'mysql_list_fields' => - array ( - 'return' => 'resource', - 'params' => 'string database_name, string table_name [, int link_identifier]', - 'description' => 'List MySQL result fields', - ), - 'mysql_list_processes' => - array ( - 'return' => 'resource', - 'params' => '[int link_identifier]', - 'description' => 'Returns a result set describing the current server threads', - ), - 'mysql_error' => - array ( - 'return' => 'string', - 'params' => '[int link_identifier]', - 'description' => 'Returns the text of the error message from previous MySQL operation', - ), - 'mysql_errno' => - array ( - 'return' => 'int', - 'params' => '[int link_identifier]', - 'description' => 'Returns the number of the error message from previous MySQL operation', - ), - 'mysql_affected_rows' => - array ( - 'return' => 'int', - 'params' => '[int link_identifier]', - 'description' => 'Gets number of affected rows in previous MySQL operation', - ), - 'mysql_escape_string' => - array ( - 'return' => 'string', - 'params' => 'string to_be_escaped', - 'description' => 'Escape string for mysql query', - ), - 'mysql_real_escape_string' => - array ( - 'return' => 'string', - 'params' => 'string to_be_escaped [, int link_identifier]', - 'description' => 'Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection', - ), - 'mysql_insert_id' => - array ( - 'return' => 'int', - 'params' => '[int link_identifier]', - 'description' => 'Gets the ID generated from the previous INSERT operation', - ), - 'mysql_result' => - array ( - 'return' => 'mixed', - 'params' => 'resource result, int row [, mixed field]', - 'description' => 'Gets result data', - ), - 'mysql_num_rows' => - array ( - 'return' => 'int', - 'params' => 'resource result', - 'description' => 'Gets number of rows in a result', - ), - 'mysql_num_fields' => - array ( - 'return' => 'int', - 'params' => 'resource result', - 'description' => 'Gets number of fields in a result', - ), - 'mysql_fetch_row' => - array ( - 'return' => 'array', - 'params' => 'resource result', - 'description' => 'Gets a result row as an enumerated array', - ), - 'mysql_fetch_object' => - array ( - 'return' => 'object', - 'params' => 'resource result [, string class_name [, NULL|array ctor_params]]', - 'description' => 'Fetch a result row as an object', - ), - 'mysql_fetch_array' => - array ( - 'return' => 'array', - 'params' => 'resource result [, int result_type]', - 'description' => 'Fetch a result row as an array (associative, numeric or both)', - ), - 'mysql_fetch_assoc' => - array ( - 'return' => 'array', - 'params' => 'resource result', - 'description' => 'Fetch a result row as an associative array', - ), - 'mysql_data_seek' => - array ( - 'return' => 'bool', - 'params' => 'resource result, int row_number', - 'description' => 'Move internal result pointer', - ), - 'mysql_fetch_lengths' => - array ( - 'return' => 'array', - 'params' => 'resource result', - 'description' => 'Gets max data size of each column in a result', - ), - 'mysql_fetch_field' => - array ( - 'return' => 'object', - 'params' => 'resource result [, int field_offset]', - 'description' => 'Gets column information from a result and return as an object', - ), - 'mysql_field_seek' => - array ( - 'return' => 'bool', - 'params' => 'resource result, int field_offset', - 'description' => 'Sets result pointer to a specific field offset', - ), - 'mysql_field_name' => - array ( - 'return' => 'string', - 'params' => 'resource result, int field_index', - 'description' => 'Gets the name of the specified field in a result', - ), - 'mysql_field_table' => - array ( - 'return' => 'string', - 'params' => 'resource result, int field_offset', - 'description' => 'Gets name of the table the specified field is in', - ), - 'mysql_field_len' => - array ( - 'return' => 'int', - 'params' => 'resource result, int field_offset', - 'description' => 'Returns the length of the specified field', - ), - 'mysql_field_type' => - array ( - 'return' => 'string', - 'params' => 'resource result, int field_offset', - 'description' => 'Gets the type of the specified field in a result', - ), - 'mysql_field_flags' => - array ( - 'return' => 'string', - 'params' => 'resource result, int field_offset', - 'description' => 'Gets the flags associated with the specified field in a result', - ), - 'mysql_free_result' => - array ( - 'return' => 'bool', - 'params' => 'resource result', - 'description' => 'Free result memory', - ), - 'mysql_ping' => - array ( - 'return' => 'bool', - 'params' => '[int link_identifier]', - 'description' => 'Ping a server connection. If no connection then reconnect.', - ), - 'dom_domerrorhandler_handle_error' => - array ( - 'return' => 'dom_boolean', - 'params' => 'domerror error', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleErrorSince:', - ), - 'dom_document_create_element' => - array ( - 'return' => 'DOMElement', - 'params' => 'string tagName [, string value]', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-2141741547Since:', - ), - 'dom_document_create_document_fragment' => - array ( - 'return' => 'DOMDocumentFragment', - 'params' => '', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-35CB04B5Since:', - ), - 'dom_document_create_text_node' => - array ( - 'return' => 'DOMText', - 'params' => 'string data', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1975348127Since:', - ), - 'dom_document_create_comment' => - array ( - 'return' => 'DOMComment', - 'params' => 'string data', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1334481328Since:', - ), - 'dom_document_create_cdatasection' => - array ( - 'return' => 'DOMCdataSection', - 'params' => 'string data', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D26C0AF8Since:', - ), - 'dom_document_create_processing_instruction' => - array ( - 'return' => 'DOMProcessingInstruction', - 'params' => 'string target, string data', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-135944439Since:', - ), - 'dom_document_create_attribute' => - array ( - 'return' => 'DOMAttr', - 'params' => 'string name', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1084891198Since:', - ), - 'dom_document_create_entity_reference' => - array ( - 'return' => 'DOMEntityReference', - 'params' => 'string name', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-392B75AESince:', - ), - 'dom_document_get_elements_by_tag_name' => - array ( - 'return' => 'DOMNodeList', - 'params' => 'string tagname', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C9094Since:', - ), - 'dom_document_import_node' => - array ( - 'return' => 'DOMNode', - 'params' => 'DOMNode importedNode, boolean deep', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Core-Document-importNodeSince: DOM Level 2', - ), - 'dom_document_create_element_ns' => - array ( - 'return' => 'DOMElement', - 'params' => 'string namespaceURI, string qualifiedName [,string value]', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrElNSSince: DOM Level 2', - ), - 'dom_document_create_attribute_ns' => - array ( - 'return' => 'DOMAttr', - 'params' => 'string namespaceURI, string qualifiedName', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrAttrNSSince: DOM Level 2', - ), - 'dom_document_get_elements_by_tag_name_ns' => - array ( - 'return' => 'DOMNodeList', - 'params' => 'string namespaceURI, string localName', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBTNNSSince: DOM Level 2', - ), - 'dom_document_get_element_by_id' => - array ( - 'return' => 'DOMElement', - 'params' => 'string elementId', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBIdSince: DOM Level 2', - ), - 'dom_document_adopt_node' => - array ( - 'return' => 'DOMNode', - 'params' => 'DOMNode source', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-adoptNodeSince: DOM Level 3', - ), - 'dom_document_normalize_document' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-normalizeDocumentSince: DOM Level 3', - ), - 'dom_document_rename_node' => - array ( - 'return' => 'DOMNode', - 'params' => 'node n, string namespaceURI, string qualifiedName', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNodeSince: DOM Level 3', - ), - 'dom_document_load' => - array ( - 'return' => 'DOMNode', - 'params' => 'string source [, int options]', - 'description' => 'URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-loadSince: DOM Level 3', - ), - 'dom_document_loadxml' => - array ( - 'return' => 'DOMNode', - 'params' => 'string source [, int options]', - 'description' => 'URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-loadXMLSince: DOM Level 3', - ), - 'dom_document_save' => - array ( - 'return' => 'int', - 'params' => 'string file', - 'description' => 'Convenience method to save to file', - ), - 'dom_document_savexml' => - array ( - 'return' => 'string', - 'params' => '[node n]', - 'description' => 'URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXMLSince: DOM Level 3', - ), - 'dom_document_xinclude' => - array ( - 'return' => 'int', - 'params' => '[int options]', - 'description' => 'Substitutues xincludes in a DomDocument', - ), - 'dom_document_validate' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Since: DOM extended', - ), - 'dom_document_load_html_file' => - array ( - 'return' => 'DOMNode', - 'params' => 'string source', - 'description' => 'Since: DOM extended', - ), - 'dom_document_load_html' => - array ( - 'return' => 'DOMNode', - 'params' => 'string source', - 'description' => 'Since: DOM extended', - ), - 'dom_document_save_html_file' => - array ( - 'return' => 'int', - 'params' => 'string file', - 'description' => 'Convenience method to save to file as html', - ), - 'dom_document_save_html' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Convenience method to output as html', - ), - 'dom_domstringlist_item' => - array ( - 'return' => 'domstring', - 'params' => 'int index', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-itemSince:', - ), - 'dom_string_extend_find_offset16' => - array ( - 'return' => 'int', - 'params' => 'int offset32', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16Since:', - ), - 'dom_string_extend_find_offset32' => - array ( - 'return' => 'int', - 'params' => 'int offset16', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32Since:', - ), - 'dom_import_simplexml' => - array ( - 'return' => 'somNode', - 'params' => 'sxeobject node', - 'description' => 'Get a simplexml_element object from dom to allow for processing', - ), - 'dom_domimplementation_has_feature' => - array ( - 'return' => 'boolean', - 'params' => 'string feature, string version', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7Since:', - ), - 'dom_domimplementation_create_document_type' => - array ( - 'return' => 'DOMDocumentType', - 'params' => 'string qualifiedName, string publicId, string systemId', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocTypeSince: DOM Level 2', - ), - 'dom_domimplementation_create_document' => - array ( - 'return' => 'DOMDocument', - 'params' => 'string namespaceURI, string qualifiedName, DOMDocumentType doctype', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocumentSince: DOM Level 2', - ), - 'dom_domimplementation_get_feature' => - array ( - 'return' => 'DOMNode', - 'params' => 'string feature, string version', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeatureSince: DOM Level 3', - ), - 'dom_namelist_get_name' => - array ( - 'return' => 'string', - 'params' => 'int index', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNameSince:', - ), - 'dom_namelist_get_namespace_uri' => - array ( - 'return' => 'string', - 'params' => 'int index', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURISince:', - ), - 'dom_text_split_text' => - array ( - 'return' => 'DOMText', - 'params' => 'int offset', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1DSince:', - ), - 'dom_text_is_whitespace_in_element_content' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContentSince: DOM Level 3', - ), - 'dom_text_replace_whole_text' => - array ( - 'return' => 'DOMText', - 'params' => 'string content', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeTextSince: DOM Level 3', - ), - 'dom_element_get_attribute' => - array ( - 'return' => 'string', - 'params' => 'string name', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9Since:', - ), - 'dom_element_set_attribute' => - array ( - 'return' => 'void', - 'params' => 'string name, string value', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082Since:', - ), - 'dom_element_remove_attribute' => - array ( - 'return' => 'void', - 'params' => 'string name', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9Since:', - ), - 'dom_element_get_attribute_node' => - array ( - 'return' => 'DOMAttr', - 'params' => 'string name', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8Since:', - ), - 'dom_element_set_attribute_node' => - array ( - 'return' => 'DOMAttr', - 'params' => 'DOMAttr newAttr', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154Since:', - ), - 'dom_element_remove_attribute_node' => - array ( - 'return' => 'DOMAttr', - 'params' => 'DOMAttr oldAttr', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198Since:', - ), - 'dom_element_get_elements_by_tag_name' => - array ( - 'return' => 'DOMNodeList', - 'params' => 'string name', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918DSince:', - ), - 'dom_element_get_attribute_ns' => - array ( - 'return' => 'string', - 'params' => 'string namespaceURI, string localName', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNSSince: DOM Level 2', - ), - 'dom_element_set_attribute_ns' => - array ( - 'return' => 'void', - 'params' => 'string namespaceURI, string qualifiedName, string value', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNSSince: DOM Level 2', - ), - 'dom_element_remove_attribute_ns' => - array ( - 'return' => 'void', - 'params' => 'string namespaceURI, string localName', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNSSince: DOM Level 2', - ), - 'dom_element_get_attribute_node_ns' => - array ( - 'return' => 'DOMAttr', - 'params' => 'string namespaceURI, string localName', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNSSince: DOM Level 2', - ), - 'dom_element_set_attribute_node_ns' => - array ( - 'return' => 'DOMAttr', - 'params' => 'DOMAttr newAttr', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNSSince: DOM Level 2', - ), - 'dom_element_get_elements_by_tag_name_ns' => - array ( - 'return' => 'DOMNodeList', - 'params' => 'string namespaceURI, string localName', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942Since: DOM Level 2', - ), - 'dom_element_has_attribute' => - array ( - 'return' => 'boolean', - 'params' => 'string name', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrSince: DOM Level 2', - ), - 'dom_element_has_attribute_ns' => - array ( - 'return' => 'boolean', - 'params' => 'string namespaceURI, string localName', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNSSince: DOM Level 2', - ), - 'dom_element_set_id_attribute' => - array ( - 'return' => 'void', - 'params' => 'string name, boolean isId', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrSince: DOM Level 3', - ), - 'dom_element_set_id_attribute_ns' => - array ( - 'return' => 'void', - 'params' => 'string namespaceURI, string localName, boolean isId', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNSSince: DOM Level 3', - ), - 'dom_element_set_id_attribute_node' => - array ( - 'return' => 'void', - 'params' => 'attr idAttr, boolean isId', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNodeSince: DOM Level 3', - ), - 'dom_userdatahandler_handle' => - array ( - 'return' => 'dom_void', - 'params' => 'short operation, string key, domobject data, node src, node dst', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEventSince:', - ), - 'dom_characterdata_substring_data' => - array ( - 'return' => 'string', - 'params' => 'int offset, int count', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6531BCCFSince:', - ), - 'dom_characterdata_append_data' => - array ( - 'return' => 'void', - 'params' => 'string arg', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-32791A2FSince:', - ), - 'dom_characterdata_insert_data' => - array ( - 'return' => 'void', - 'params' => 'int offset, string arg', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3EDB695FSince:', - ), - 'dom_characterdata_delete_data' => - array ( - 'return' => 'void', - 'params' => 'int offset, int count', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7C603781Since:', - ), - 'dom_characterdata_replace_data' => - array ( - 'return' => 'void', - 'params' => 'int offset, int count, string arg', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-E5CBA7FBSince:', - ), - 'dom_domimplementationsource_get_domimplementation' => - array ( - 'return' => 'domdomimplementation', - 'params' => 'string features', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImplSince:', - ), - 'dom_domimplementationsource_get_domimplementations' => - array ( - 'return' => 'domimplementationlist', - 'params' => 'string features', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImplsSince:', - ), - 'dom_node_insert_before' => - array ( - 'return' => 'domnode', - 'params' => 'DomNode newChild, DomNode refChild', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727Since:', - ), - 'dom_node_replace_child' => - array ( - 'return' => 'DomNode', - 'params' => 'DomNode newChild, DomNode oldChild', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307Since:', - ), - 'dom_node_remove_child' => - array ( - 'return' => 'DomNode', - 'params' => 'DomNode oldChild', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066Since:', - ), - 'dom_node_append_child' => - array ( - 'return' => 'DomNode', - 'params' => 'DomNode newChild', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107Since:', - ), - 'dom_node_has_child_nodes' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187Since:', - ), - 'dom_node_clone_node' => - array ( - 'return' => 'DomNode', - 'params' => 'boolean deep', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4Since:', - ), - 'dom_node_normalize' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalizeSince:', - ), - 'dom_node_is_supported' => - array ( - 'return' => 'boolean', - 'params' => 'string feature, string version', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supportsSince: DOM Level 2', - ), - 'dom_node_has_attributes' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrsSince: DOM Level 2', - ), - 'dom_node_compare_document_position' => - array ( - 'return' => 'short', - 'params' => 'DomNode other', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPositionSince: DOM Level 3', - ), - 'dom_node_is_same_node' => - array ( - 'return' => 'boolean', - 'params' => 'DomNode other', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNodeSince: DOM Level 3', - ), - 'dom_node_lookup_prefix' => - array ( - 'return' => 'string', - 'params' => 'string namespaceURI', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefixSince: DOM Level 3', - ), - 'dom_node_is_default_namespace' => - array ( - 'return' => 'boolean', - 'params' => 'string namespaceURI', - 'description' => 'URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespaceSince: DOM Level 3', - ), - 'dom_node_lookup_namespace_uri' => - array ( - 'return' => 'string', - 'params' => 'string prefix', - 'description' => 'URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURISince: DOM Level 3', - ), - 'dom_node_is_equal_node' => - array ( - 'return' => 'boolean', - 'params' => 'DomNode arg', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNodeSince: DOM Level 3', - ), - 'dom_node_get_feature' => - array ( - 'return' => 'DomNode', - 'params' => 'string feature, string version', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeatureSince: DOM Level 3', - ), - 'dom_node_set_user_data' => - array ( - 'return' => 'DomUserData', - 'params' => 'string key, DomUserData data, userdatahandler handler', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserDataSince: DOM Level 3', - ), - 'dom_node_get_user_data' => - array ( - 'return' => 'DomUserData', - 'params' => 'string key', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserDataSince: DOM Level 3', - ), - 'dom_domconfiguration_set_parameter' => - array ( - 'return' => 'dom_void', - 'params' => 'string name, domuserdata value', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-propertySince:', - ), - 'dom_domconfiguration_get_parameter' => - array ( - 'return' => 'domdomuserdata', - 'params' => 'string name', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameterSince:', - ), - 'dom_domconfiguration_can_set_parameter' => - array ( - 'return' => 'boolean', - 'params' => 'string name, domuserdata value', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameterSince:', - ), - 'dom_namednodemap_get_named_item' => - array ( - 'return' => 'DOMNode', - 'params' => 'string name', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549Since:', - ), - 'dom_namednodemap_set_named_item' => - array ( - 'return' => 'DOMNode', - 'params' => 'DOMNode arg', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788Since:', - ), - 'dom_namednodemap_remove_named_item' => - array ( - 'return' => 'DOMNode', - 'params' => 'string name', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193Since:', - ), - 'dom_namednodemap_item' => - array ( - 'return' => 'DOMNode', - 'params' => 'int index', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9Since:', - ), - 'dom_namednodemap_get_named_item_ns' => - array ( - 'return' => 'DOMNode', - 'params' => 'string namespaceURI, string localName', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNSSince: DOM Level 2', - ), - 'dom_namednodemap_set_named_item_ns' => - array ( - 'return' => 'DOMNode', - 'params' => 'DOMNode arg', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNSSince: DOM Level 2', - ), - 'dom_namednodemap_remove_named_item_ns' => - array ( - 'return' => 'DOMNode', - 'params' => 'string namespaceURI, string localName', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNSSince: DOM Level 2', - ), - 'dom_attr_is_id' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-isIdSince: DOM Level 3', - ), - 'dom_domimplementationlist_item' => - array ( - 'return' => 'domdomimplementation', - 'params' => 'int index', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-itemSince:', - ), - 'dom_nodelist_item' => - array ( - 'return' => 'DOMNode', - 'params' => 'int index', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136Since:', - ), - 'PDO::pgsqlLOBCreate' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Creates a new large object, returning its identifier. Must be called inside a transaction.', - ), - 'PDO::pgsqlLOBOpen' => - array ( - 'return' => 'resource', - 'params' => 'string oid [, string mode = \'rb\']', - 'description' => 'Opens an existing large object stream. Must be called inside a transaction.', - ), - 'PDO::pgsqlLOBUnlink' => - array ( - 'return' => 'bool', - 'params' => 'string oid', - 'description' => 'Deletes the large object identified by oid. Must be called inside a transaction.', - ), - 'xmlrpc_encode_request' => - array ( - 'return' => 'string', - 'params' => 'string method, mixed params', - 'description' => 'Generates XML for a method request', - ), - 'xmlrpc_encode' => - array ( - 'return' => 'string', - 'params' => 'mixed value', - 'description' => 'Generates XML for a PHP value', - ), - 'xmlrpc_decode_request' => - array ( - 'return' => 'array', - 'params' => 'string xml, string& method [, string encoding]', - 'description' => 'Decodes XML into native PHP types', - ), - 'xmlrpc_decode' => - array ( - 'return' => 'array', - 'params' => 'string xml [, string encoding]', - 'description' => 'Decodes XML into native PHP types', - ), - 'xmlrpc_server_create' => - array ( - 'return' => 'resource', - 'params' => 'void', - 'description' => 'Creates an xmlrpc server', - ), - 'xmlrpc_server_destroy' => - array ( - 'return' => 'int', - 'params' => 'resource server', - 'description' => 'Destroys server resources', - ), - 'xmlrpc_server_register_method' => - array ( - 'return' => 'bool', - 'params' => 'resource server, string method_name, string function', - 'description' => 'Register a PHP function to handle method matching method_name', - ), - 'xmlrpc_server_register_introspection_callback' => - array ( - 'return' => 'bool', - 'params' => 'resource server, string function', - 'description' => 'Register a PHP function to generate documentation', - ), - 'xmlrpc_server_call_method' => - array ( - 'return' => 'mixed', - 'params' => 'resource server, string xml, mixed user_data [, array output_options]', - 'description' => 'Parses XML requests and call methods', - ), - 'xmlrpc_server_add_introspection_data' => - array ( - 'return' => 'int', - 'params' => 'resource server, array desc', - 'description' => 'Adds introspection documentation', - ), - 'xmlrpc_parse_method_descriptions' => - array ( - 'return' => 'array', - 'params' => 'string xml', - 'description' => 'Decodes XML into a list of method descriptions', - ), - 'xmlrpc_set_type' => - array ( - 'return' => 'bool', - 'params' => 'string value, string type', - 'description' => 'Sets xmlrpc type, base64 or datetime, for a PHP string value', - ), - 'xmlrpc_get_type' => - array ( - 'return' => 'string', - 'params' => 'mixed value', - 'description' => 'Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime strings', - ), - 'xmlrpc_is_fault' => - array ( - 'return' => 'bool', - 'params' => 'array', - 'description' => 'Determines if an array value represents an XMLRPC fault.', - ), - 'textdomain' => - array ( - 'return' => 'string', - 'params' => 'string domain', - 'description' => 'Set the textdomain to "domain". Returns the current domain', - ), - 'gettext' => - array ( - 'return' => 'string', - 'params' => 'string msgid', - 'description' => 'Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist', - ), - 'dgettext' => - array ( - 'return' => 'string', - 'params' => 'string domain_name, string msgid', - 'description' => 'Return the translation of msgid for domain_name, or msgid unaltered if a translation does not exist', - ), - 'dcgettext' => - array ( - 'return' => 'string', - 'params' => 'string domain_name, string msgid, long category', - 'description' => 'Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist', - ), - 'bindtextdomain' => - array ( - 'return' => 'string', - 'params' => 'string domain_name, string dir', - 'description' => 'Bind to the text domain domain_name, looking for translations in dir. Returns the current domain', - ), - 'ngettext' => - array ( - 'return' => 'string', - 'params' => 'string MSGID1, string MSGID2, int N', - 'description' => 'Plural version of gettext()', - ), - 'msg_set_queue' => - array ( - 'return' => 'bool', - 'params' => 'resource queue, array data', - 'description' => 'Set information for a message queue', - ), - 'msg_stat_queue' => - array ( - 'return' => 'array', - 'params' => 'resource queue', - 'description' => 'Returns information about a message queue', - ), - 'msg_get_queue' => - array ( - 'return' => 'resource', - 'params' => 'int key [, int perms]', - 'description' => 'Attach to a message queue', - ), - 'msg_remove_queue' => - array ( - 'return' => 'bool', - 'params' => 'resource queue', - 'description' => 'Destroy the queue', - ), - 'msg_receive' => - array ( - 'return' => 'mixed', - 'params' => 'resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]]', - 'description' => 'Send a message of type msgtype (must be > 0) to a message queue', - ), - 'msg_send' => - array ( - 'return' => 'bool', - 'params' => 'resource queue, int msgtype, mixed message [, bool serialize=true [, bool blocking=true [, int errorcode]]]', - 'description' => 'Send a message of type msgtype (must be > 0) to a message queue', - ), - 'xml_parser_create' => - array ( - 'return' => 'resource', - 'params' => '[string encoding]', - 'description' => 'Create an XML parser', - ), - 'xml_parser_create_ns' => - array ( - 'return' => 'resource', - 'params' => '[string encoding [, string sep]]', - 'description' => 'Create an XML parser', - ), - 'xml_set_object' => - array ( - 'return' => 'int', - 'params' => 'resource parser, object &obj', - 'description' => 'Set up object which should be used for callbacks', - ), - 'xml_set_element_handler' => - array ( - 'return' => 'int', - 'params' => 'resource parser, string shdl, string ehdl', - 'description' => 'Set up start and end element handlers', - ), - 'xml_set_character_data_handler' => - array ( - 'return' => 'int', - 'params' => 'resource parser, string hdl', - 'description' => 'Set up character data handler', - ), - 'xml_set_processing_instruction_handler' => - array ( - 'return' => 'int', - 'params' => 'resource parser, string hdl', - 'description' => 'Set up processing instruction (PI) handler', - ), - 'xml_set_default_handler' => - array ( - 'return' => 'int', - 'params' => 'resource parser, string hdl', - 'description' => 'Set up default handler', - ), - 'xml_set_unparsed_entity_decl_handler' => - array ( - 'return' => 'int', - 'params' => 'resource parser, string hdl', - 'description' => 'Set up unparsed entity declaration handler', - ), - 'xml_set_notation_decl_handler' => - array ( - 'return' => 'int', - 'params' => 'resource parser, string hdl', - 'description' => 'Set up notation declaration handler', - ), - 'xml_set_external_entity_ref_handler' => - array ( - 'return' => 'int', - 'params' => 'resource parser, string hdl', - 'description' => 'Set up external entity reference handler', - ), - 'xml_set_start_namespace_decl_handler' => - array ( - 'return' => 'int', - 'params' => 'resource parser, string hdl', - 'description' => 'Set up character data handler', - ), - 'xml_set_end_namespace_decl_handler' => - array ( - 'return' => 'int', - 'params' => 'resource parser, string hdl', - 'description' => 'Set up character data handler', - ), - 'xml_parse' => - array ( - 'return' => 'int', - 'params' => 'resource parser, string data [, int isFinal]', - 'description' => 'Start parsing an XML document', - ), - 'xml_parse_into_struct' => - array ( - 'return' => 'int', - 'params' => 'resource parser, string data, array &struct, array &index', - 'description' => 'Parsing a XML document', - ), - 'xml_get_error_code' => - array ( - 'return' => 'int', - 'params' => 'resource parser', - 'description' => 'Get XML parser error code', - ), - 'xml_error_string' => - array ( - 'return' => 'string', - 'params' => 'int code', - 'description' => 'Get XML parser error string', - ), - 'xml_get_current_line_number' => - array ( - 'return' => 'int', - 'params' => 'resource parser', - 'description' => 'Get current line number for an XML parser', - ), - 'xml_get_current_column_number' => - array ( - 'return' => 'int', - 'params' => 'resource parser', - 'description' => 'Get current column number for an XML parser', - ), - 'xml_get_current_byte_index' => - array ( - 'return' => 'int', - 'params' => 'resource parser', - 'description' => 'Get current byte index for an XML parser', - ), - 'xml_parser_free' => - array ( - 'return' => 'int', - 'params' => 'resource parser', - 'description' => 'Free an XML parser', - ), - 'xml_parser_set_option' => - array ( - 'return' => 'int', - 'params' => 'resource parser, int option, mixed value', - 'description' => 'Set options in an XML parser', - ), - 'xml_parser_get_option' => - array ( - 'return' => 'int', - 'params' => 'resource parser, int option', - 'description' => 'Get options from an XML parser', - ), - 'utf8_encode' => - array ( - 'return' => 'string', - 'params' => 'string data', - 'description' => 'Encodes an ISO-8859-1 string to UTF-8', - ), - 'utf8_decode' => - array ( - 'return' => 'string', - 'params' => 'string data', - 'description' => 'Converts a UTF-8 encoded string to ISO-8859-1', - ), - 'shm_attach' => - array ( - 'return' => 'int', - 'params' => 'int key [, int memsize [, int perm]]', - 'description' => 'Creates or open a shared memory segment', - ), - 'shm_detach' => - array ( - 'return' => 'bool', - 'params' => 'int shm_identifier', - 'description' => 'Disconnects from shared memory segment', - ), - 'shm_remove' => - array ( - 'return' => 'bool', - 'params' => 'int shm_identifier', - 'description' => 'Removes shared memory from Unix systems', - ), - 'shm_put_var' => - array ( - 'return' => 'bool', - 'params' => 'int shm_identifier, int variable_key, mixed variable', - 'description' => 'Inserts or updates a variable in shared memory', - ), - 'shm_get_var' => - array ( - 'return' => 'mixed', - 'params' => 'int id, int variable_key', - 'description' => 'Returns a variable from shared memory', - ), - 'shm_remove_var' => - array ( - 'return' => 'bool', - 'params' => 'int id, int variable_key', - 'description' => 'Removes variable from shared memory', - ), - 'socket_select' => - array ( - 'return' => 'int', - 'params' => 'array &read_fds, array &write_fds, &array except_fds, int tv_sec[, int tv_usec]', - 'description' => 'Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec', - ), - 'socket_create_listen' => - array ( - 'return' => 'resource', - 'params' => 'int port[, int backlog]', - 'description' => 'Opens a socket on port to accept connections', - ), - 'socket_accept' => - array ( - 'return' => 'resource', - 'params' => 'resource socket', - 'description' => 'Accepts a connection on the listening socket fd', - ), - 'socket_set_nonblock' => - array ( - 'return' => 'bool', - 'params' => 'resource socket', - 'description' => 'Sets nonblocking mode on a socket resource', - ), - 'socket_set_block' => - array ( - 'return' => 'bool', - 'params' => 'resource socket', - 'description' => 'Sets blocking mode on a socket resource', - ), - 'socket_listen' => - array ( - 'return' => 'bool', - 'params' => 'resource socket[, int backlog]', - 'description' => 'Sets the maximum number of connections allowed to be waited for on the socket specified by fd', - ), - 'socket_close' => - array ( - 'return' => 'void', - 'params' => 'resource socket', - 'description' => 'Closes a file descriptor', - ), - 'socket_write' => - array ( - 'return' => 'int', - 'params' => 'resource socket, string buf[, int length]', - 'description' => 'Writes the buffer to the socket resource, length is optional', - ), - 'socket_read' => - array ( - 'return' => 'string', - 'params' => 'resource socket, int length [, int type]', - 'description' => 'Reads a maximum of length bytes from socket', - ), - 'socket_getsockname' => - array ( - 'return' => 'bool', - 'params' => 'resource socket, string &addr[, int &port]', - 'description' => 'Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type.', - ), - 'socket_getpeername' => - array ( - 'return' => 'bool', - 'params' => 'resource socket, string &addr[, int &port]', - 'description' => 'Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type.', - ), - 'socket_create' => - array ( - 'return' => 'resource', - 'params' => 'int domain, int type, int protocol', - 'description' => 'Creates an endpoint for communication in the domain specified by domain, of type specified by type', - ), - 'socket_connect' => - array ( - 'return' => 'bool', - 'params' => 'resource socket, string addr [, int port]', - 'description' => 'Opens a connection to addr:port on the socket specified by socket', - ), - 'socket_strerror' => - array ( - 'return' => 'string', - 'params' => 'int errno', - 'description' => 'Returns a string describing an error', - ), - 'socket_bind' => - array ( - 'return' => 'bool', - 'params' => 'resource socket, string addr [, int port]', - 'description' => 'Binds an open socket to a listening port, port is only specified in AF_INET family.', - ), - 'socket_recv' => - array ( - 'return' => 'int', - 'params' => 'resource socket, string &buf, int len, int flags', - 'description' => 'Receives data from a connected socket', - ), - 'socket_send' => - array ( - 'return' => 'int', - 'params' => 'resource socket, string buf, int len, int flags', - 'description' => 'Sends data to a connected socket', - ), - 'socket_recvfrom' => - array ( - 'return' => 'int', - 'params' => 'resource socket, string &buf, int len, int flags, string &name [, int &port]', - 'description' => 'Receives data from a socket, connected or not', - ), - 'socket_sendto' => - array ( - 'return' => 'int', - 'params' => 'resource socket, string buf, int len, int flags, string addr [, int port]', - 'description' => 'Sends a message to a socket, whether it is connected or not', - ), - 'socket_get_option' => - array ( - 'return' => 'mixed', - 'params' => 'resource socket, int level, int optname', - 'description' => 'Gets socket options for the socket', - ), - 'socket_set_option' => - array ( - 'return' => 'bool', - 'params' => 'resource socket, int level, int optname, int|array optval', - 'description' => 'Sets socket options for the socket', - ), - 'socket_create_pair' => - array ( - 'return' => 'bool', - 'params' => 'int domain, int type, int protocol, array &fd', - 'description' => 'Creates a pair of indistinguishable sockets and stores them in fds.', - ), - 'socket_shutdown' => - array ( - 'return' => 'bool', - 'params' => 'resource socket[, int how]', - 'description' => 'Shuts down a socket for receiving, sending, or both.', - ), - 'socket_last_error' => - array ( - 'return' => 'int', - 'params' => '[resource socket]', - 'description' => 'Returns the last socket error (either the last used or the provided socket resource)', - ), - 'socket_clear_error' => - array ( - 'return' => 'void', - 'params' => '[resource socket]', - 'description' => 'Clears the error on the socket or the last error code.', - ), - 'sybase_connect' => - array ( - 'return' => 'int', - 'params' => '[string host [, string user [, string password [, string charset [, string appname]]]]]', - 'description' => 'Open Sybase server connection', - ), - 'sybase_pconnect' => - array ( - 'return' => 'int', - 'params' => '[string host [, string user [, string password [, string charset [, string appname]]]]]', - 'description' => 'Open persistent Sybase connection', - ), - 'sybase_close' => - array ( - 'return' => 'bool', - 'params' => '[int link_id]', - 'description' => 'Close Sybase connection', - ), - 'sybase_select_db' => - array ( - 'return' => 'bool', - 'params' => 'string database [, int link_id]', - 'description' => 'Select Sybase database', - ), - 'sybase_query' => - array ( - 'return' => 'int', - 'params' => 'string query [, int link_id]', - 'description' => 'Send Sybase query', - ), - 'sybase_free_result' => - array ( - 'return' => 'bool', - 'params' => 'int result', - 'description' => 'Free result memory', - ), - 'sybase_get_last_message' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Returns the last message from server (over min_message_severity)', - ), - 'sybase_num_rows' => - array ( - 'return' => 'int', - 'params' => 'int result', - 'description' => 'Get number of rows in result', - ), - 'sybase_num_fields' => - array ( - 'return' => 'int', - 'params' => 'int result', - 'description' => 'Get number of fields in result', - ), - 'sybase_fetch_row' => - array ( - 'return' => 'array', - 'params' => 'int result', - 'description' => 'Get row as enumerated array', - ), - 'sybase_fetch_object' => - array ( - 'return' => 'object', - 'params' => 'int result [, mixed object]', - 'description' => 'Fetch row as object', - ), - 'sybase_fetch_array' => - array ( - 'return' => 'array', - 'params' => 'int result', - 'description' => 'Fetch row as array', - ), - 'sybase_data_seek' => - array ( - 'return' => 'bool', - 'params' => 'int result, int offset', - 'description' => 'Move internal row pointer', - ), - 'sybase_fetch_field' => - array ( - 'return' => 'object', - 'params' => 'int result [, int offset]', - 'description' => 'Get field information', - ), - 'sybase_field_seek' => - array ( - 'return' => 'bool', - 'params' => 'int result, int offset', - 'description' => 'Set field offset', - ), - 'sybase_result' => - array ( - 'return' => 'string', - 'params' => 'int result, int row, mixed field', - 'description' => 'Get result data', - ), - 'sybase_affected_rows' => - array ( - 'return' => 'int', - 'params' => '[int link_id]', - 'description' => 'Get number of affected rows in last query', - ), - 'sybase_min_error_severity' => - array ( - 'return' => 'void', - 'params' => 'int severity', - 'description' => 'Sets the minimum error severity', - ), - 'sybase_min_message_severity' => - array ( - 'return' => 'void', - 'params' => 'int severity', - 'description' => 'Sets the minimum message severity', - ), - 'confirm_extname_compiled' => - array ( - 'return' => 'string', - 'params' => 'string arg', - 'description' => 'Return a string to confirm that the module is compiled in', - ), - 'fdf_open' => - array ( - 'return' => 'resource', - 'params' => 'string filename', - 'description' => 'Opens a new FDF document', - ), - 'fdf_open_string' => - array ( - 'return' => 'resource', - 'params' => 'string fdf_data', - 'description' => 'Opens a new FDF document from string', - ), - 'fdf_create' => - array ( - 'return' => 'resource', - 'params' => 'void', - 'description' => 'Creates a new FDF document', - ), - 'fdf_close' => - array ( - 'return' => 'void', - 'params' => 'resource fdfdoc', - 'description' => 'Closes the FDF document', - ), - 'fdf_get_value' => - array ( - 'return' => 'string', - 'params' => 'resource fdfdoc, string fieldname [, int which]', - 'description' => 'Gets the value of a field as string', - ), - 'fdf_set_value' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, string fieldname, mixed value [, int isname]', - 'description' => 'Sets the value of a field', - ), - 'fdf_next_field_name' => - array ( - 'return' => 'string', - 'params' => 'resource fdfdoc [, string fieldname]', - 'description' => 'Gets the name of the next field name or the first field name', - ), - 'fdf_set_ap' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, string fieldname, int face, string filename, int pagenr', - 'description' => 'Sets the appearence of a field', - ), - 'fdf_get_ap' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, string fieldname, int face, string filename', - 'description' => 'Gets the appearance of a field and creates a PDF document out of it.', - ), - 'fdf_get_encoding' => - array ( - 'return' => 'string', - 'params' => 'resource fdf', - 'description' => 'Gets FDF file encoding scheme', - ), - 'fdf_set_status' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, string status', - 'description' => 'Sets the value of /Status key', - ), - 'fdf_get_status' => - array ( - 'return' => 'string', - 'params' => 'resource fdfdoc', - 'description' => 'Gets the value of /Status key', - ), - 'fdf_set_file' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, string filename [, string target_frame]', - 'description' => 'Sets the value of /F key', - ), - 'fdf_get_file' => - array ( - 'return' => 'string', - 'params' => 'resource fdfdoc', - 'description' => 'Gets the value of /F key', - ), - 'fdf_save' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc [, string filename]', - 'description' => 'Writes out the FDF file', - ), - 'fdf_save_string' => - array ( - 'return' => 'string', - 'params' => 'resource fdfdoc', - 'description' => 'Returns the FDF file as a string', - ), - 'fdf_add_template' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, int newpage, string filename, string template, int rename', - 'description' => 'Adds a template into the FDF document', - ), - 'fdf_set_flags' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, string fieldname, int whichflags, int newflags', - 'description' => 'Sets flags for a field in the FDF document', - ), - 'fdf_get_flags' => - array ( - 'return' => 'int', - 'params' => 'resorce fdfdoc, string fieldname, int whichflags', - 'description' => 'Gets the flags of a field', - ), - 'fdf_set_opt' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, string fieldname, int element, string value, string name', - 'description' => 'Sets a value in the opt array for a field', - ), - 'fdf_get_opt' => - array ( - 'return' => 'mixed', - 'params' => 'resource fdfdof, string fieldname [, int element]', - 'description' => 'Gets a value from the opt array of a field', - ), - 'fdf_set_submit_form_action' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, string fieldname, int whichtrigger, string url, int flags', - 'description' => 'Sets the submit form action for a field', - ), - 'fdf_set_javascript_action' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, string fieldname, int whichtrigger, string script', - 'description' => 'Sets the javascript action for a field', - ), - 'fdf_set_encoding' => - array ( - 'return' => 'bool', - 'params' => 'resource fdf_document, string encoding', - 'description' => 'Sets FDF encoding (either "Shift-JIS" or "Unicode")', - ), - 'fdf_errno' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Gets error code for last operation', - ), - 'fdf_error' => - array ( - 'return' => 'string', - 'params' => '[int errno]', - 'description' => 'Gets error description for error code', - ), - 'fdf_get_version' => - array ( - 'return' => 'string', - 'params' => '[resource fdfdoc]', - 'description' => 'Gets version number for FDF api or file', - ), - 'fdf_set_version' => - array ( - 'return' => 'bool', - 'params' => 'resourece fdfdoc, string version', - 'description' => 'Sets FDF version for a file', - ), - 'fdf_add_doc_javascript' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, string scriptname, string script', - 'description' => 'Add javascript code to the fdf file', - ), - 'fdf_set_on_import_javascript' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, string script [, bool before_data_import]', - 'description' => 'Adds javascript code to be executed when Acrobat opens the FDF', - ), - 'fdf_set_target_frame' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, string target', - 'description' => 'Sets target frame for form', - ), - 'fdf_remove_item' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, string fieldname, int item', - 'description' => 'Sets target frame for form', - ), - 'fdf_get_attachment' => - array ( - 'return' => 'array', - 'params' => 'resource fdfdoc, string fieldname, string savepath', - 'description' => 'Get attached uploaded file', - ), - 'fdf_enum_values' => - array ( - 'return' => 'bool', - 'params' => 'resource fdfdoc, callback function [, mixed userdata]', - 'description' => 'Call a user defined function for each document value', - ), - 'fdf_header' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => 'Set FDF specific HTTP headers', - ), - 'variant_set' => - array ( - 'return' => 'void', - 'params' => 'object variant, mixed value', - 'description' => 'Assigns a new value for a variant object', - ), - 'variant_add' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left, mixed right', - 'description' => '"Adds" two variant values together and returns the result', - ), - 'variant_cat' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left, mixed right', - 'description' => 'concatenates two variant values together and returns the result', - ), - 'variant_sub' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left, mixed right', - 'description' => 'subtracts the value of the right variant from the left variant value and returns the result', - ), - 'variant_mul' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left, mixed right', - 'description' => 'multiplies the values of the two variants and returns the result', - ), - 'variant_and' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left, mixed right', - 'description' => 'performs a bitwise AND operation between two variants and returns the result', - ), - 'variant_div' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left, mixed right', - 'description' => 'Returns the result from dividing two variants', - ), - 'variant_eqv' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left, mixed right', - 'description' => 'Performs a bitwise equivalence on two variants', - ), - 'variant_idiv' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left, mixed right', - 'description' => 'Converts variants to integers and then returns the result from dividing them', - ), - 'variant_imp' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left, mixed right', - 'description' => 'Performs a bitwise implication on two variants', - ), - 'variant_mod' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left, mixed right', - 'description' => 'Divides two variants and returns only the remainder', - ), - 'variant_or' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left, mixed right', - 'description' => 'Performs a logical disjunction on two variants', - ), - 'variant_pow' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left, mixed right', - 'description' => 'Returns the result of performing the power function with two variants', - ), - 'variant_xor' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left, mixed right', - 'description' => 'Performs a logical exclusion on two variants', - ), - 'variant_abs' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left', - 'description' => 'Returns the absolute value of a variant', - ), - 'variant_fix' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left', - 'description' => 'Returns the integer part ? of a variant', - ), - 'variant_int' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left', - 'description' => 'Returns the integer portion of a variant', - ), - 'variant_neg' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left', - 'description' => 'Performs logical negation on a variant', - ), - 'variant_not' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left', - 'description' => 'Performs bitwise not negation on a variant', - ), - 'variant_round' => - array ( - 'return' => 'mixed', - 'params' => 'mixed left, int decimals', - 'description' => 'Rounds a variant to the specified number of decimal places', - ), - 'variant_cmp' => - array ( - 'return' => 'int', - 'params' => 'mixed left, mixed right [, int lcid [, int flags]]', - 'description' => 'Compares two variants', - ), - 'variant_date_to_timestamp' => - array ( - 'return' => 'int', - 'params' => 'object variant', - 'description' => 'Converts a variant date/time value to unix timestamp', - ), - 'variant_date_from_timestamp' => - array ( - 'return' => 'object', - 'params' => 'int timestamp', - 'description' => 'Returns a variant date representation of a unix timestamp', - ), - 'variant_get_type' => - array ( - 'return' => 'int', - 'params' => 'object variant', - 'description' => 'Returns the VT_XXX type code for a variant', - ), - 'variant_set_type' => - array ( - 'return' => 'void', - 'params' => 'object variant, int type', - 'description' => 'Convert a variant into another type. Variant is modified "in-place"', - ), - 'variant_cast' => - array ( - 'return' => 'object', - 'params' => 'object variant, int type', - 'description' => 'Convert a variant into a new variant object of another type', - ), - 'com_get_active_object' => - array ( - 'return' => 'object', - 'params' => 'string progid [, int code_page ]', - 'description' => 'Returns a handle to an already running instance of a COM object', - ), - 'com_create_guid' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Generate a globally unique identifier (GUID)', - ), - 'com_event_sink' => - array ( - 'return' => 'bool', - 'params' => 'object comobject, object sinkobject [, mixed sinkinterface]', - 'description' => 'Connect events from a COM object to a PHP object', - ), - 'com_print_typeinfo' => - array ( - 'return' => 'bool', - 'params' => 'object comobject | string typelib, string dispinterface, bool wantsink', - 'description' => 'Print out a PHP class definition for a dispatchable interface', - ), - 'com_message_pump' => - array ( - 'return' => 'bool', - 'params' => '[int timeoutms]', - 'description' => 'Process COM messages, sleeping for up to timeoutms milliseconds', - ), - 'com_load_typelib' => - array ( - 'return' => 'bool', - 'params' => 'string typelib_name [, int case_insensitive]', - 'description' => 'Loads a Typelibrary and registers its constants', - ), - 'COMPersistHelper::GetCurFile' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Determines the filename into which an object will be saved, or false if none is set, via IPersistFile::GetCurFile', - ), - 'COMPersistHelper::SaveToFile' => - array ( - 'return' => 'bool', - 'params' => 'string filename [, bool remember]', - 'description' => 'Persist object data to file, via IPersistFile::Save', - ), - 'COMPersistHelper::LoadFromFile' => - array ( - 'return' => 'bool', - 'params' => 'string filename [, int flags]', - 'description' => 'Load object data from file, via IPersistFile::Load', - ), - 'COMPersistHelper::GetMaxStreamSize' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Gets maximum stream size required to store the object data, via IPersistStream::GetSizeMax (or IPersistStreamInit::GetSizeMax)', - ), - 'COMPersistHelper::InitNew' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Initializes the object to a default state, via IPersistStreamInit::InitNew', - ), - 'COMPersistHelper::LoadFromStream' => - array ( - 'return' => 'mixed', - 'params' => 'resource stream', - 'description' => 'Initializes an object from the stream where it was previously saved, via IPersistStream::Load or OleLoadFromStream', - ), - 'COMPersistHelper::SaveToStream' => - array ( - 'return' => 'int', - 'params' => 'resource stream', - 'description' => 'Saves the object to a stream, via IPersistStream::Save', - ), - 'COMPersistHelper::__construct' => - array ( - 'return' => 'int', - 'params' => '[object com_object]', - 'description' => 'Creates a persistence helper object, usually associated with a com_object', - ), - 'pg_connect' => - array ( - 'return' => 'resource', - 'params' => 'string connection_string[, int connect_type] | [string host, string port [, string options [, string tty,]]] string database', - 'description' => 'Open a PostgreSQL connection', - ), - 'pg_pconnect' => - array ( - 'return' => 'resource', - 'params' => 'string connection_string | [string host, string port [, string options [, string tty,]]] string database', - 'description' => 'Open a persistent PostgreSQL connection', - ), - 'pg_close' => - array ( - 'return' => 'bool', - 'params' => '[resource connection]', - 'description' => 'Close a PostgreSQL connection', - ), - 'pg_dbname' => - array ( - 'return' => 'string', - 'params' => '[resource connection]', - 'description' => 'Get the database name', - ), - 'pg_last_error' => - array ( - 'return' => 'string', - 'params' => '[resource connection]', - 'description' => 'Get the error message string', - ), - 'pg_options' => - array ( - 'return' => 'string', - 'params' => '[resource connection]', - 'description' => 'Get the options associated with the connection', - ), - 'pg_port' => - array ( - 'return' => 'int', - 'params' => '[resource connection]', - 'description' => 'Return the port number associated with the connection', - ), - 'pg_tty' => - array ( - 'return' => 'string', - 'params' => '[resource connection]', - 'description' => 'Return the tty name associated with the connection', - ), - 'pg_host' => - array ( - 'return' => 'string', - 'params' => '[resource connection]', - 'description' => 'Returns the host name associated with the connection', - ), - 'pg_version' => - array ( - 'return' => 'array', - 'params' => '[resource connection]', - 'description' => 'Returns an array with client, protocol and server version (when available)', - ), - 'pg_parameter_status' => - array ( - 'return' => 'string|false', - 'params' => '[resource connection,] string param_name', - 'description' => 'Returns the value of a server parameter', - ), - 'pg_ping' => - array ( - 'return' => 'bool', - 'params' => '[resource connection]', - 'description' => 'Ping database. If connection is bad, try to reconnect.', - ), - 'pg_query' => - array ( - 'return' => 'resource', - 'params' => '[resource connection,] string query', - 'description' => 'Execute a query', - ), - 'pg_query_params' => - array ( - 'return' => 'resource', - 'params' => '[resource connection,] string query, array params', - 'description' => 'Execute a query', - ), - 'pg_prepare' => - array ( - 'return' => 'resource', - 'params' => '[resource connection,] string stmtname, string query', - 'description' => 'Prepare a query for future execution', - ), - 'pg_execute' => - array ( - 'return' => 'resource', - 'params' => '[resource connection,] string stmtname, array params', - 'description' => 'Execute a prepared query', - ), - 'pg_num_rows' => - array ( - 'return' => 'int', - 'params' => 'resource result', - 'description' => 'Return the number of rows in the result', - ), - 'pg_num_fields' => - array ( - 'return' => 'int', - 'params' => 'resource result', - 'description' => 'Return the number of fields in the result', - ), - 'pg_affected_rows' => - array ( - 'return' => 'int', - 'params' => 'resource result', - 'description' => 'Returns the number of affected tuples', - ), - 'pg_last_notice' => - array ( - 'return' => 'string', - 'params' => 'resource connection', - 'description' => 'Returns the last notice set by the backend', - ), - 'pg_field_name' => - array ( - 'return' => 'string', - 'params' => 'resource result, int field_number', - 'description' => 'Returns the name of the field', - ), - 'pg_field_size' => - array ( - 'return' => 'int', - 'params' => 'resource result, int field_number', - 'description' => 'Returns the internal size of the field', - ), - 'pg_field_type' => - array ( - 'return' => 'string', - 'params' => 'resource result, int field_number', - 'description' => 'Returns the type name for the given field', - ), - 'pg_field_type_oid' => - array ( - 'return' => 'string', - 'params' => 'resource result, int field_number', - 'description' => 'Returns the type oid for the given field', - ), - 'pg_field_num' => - array ( - 'return' => 'int', - 'params' => 'resource result, string field_name', - 'description' => 'Returns the field number of the named field', - ), - 'pg_fetch_result' => - array ( - 'return' => 'mixed', - 'params' => 'resource result, [int row_number,] mixed field_name', - 'description' => 'Returns values from a result identifier', - ), - 'pg_fetch_row' => - array ( - 'return' => 'array', - 'params' => 'resource result [, int row [, int result_type]]', - 'description' => 'Get a row as an enumerated array', - ), - 'pg_fetch_assoc' => - array ( - 'return' => 'array', - 'params' => 'resource result [, int row]', - 'description' => 'Fetch a row as an assoc array', - ), - 'pg_fetch_array' => - array ( - 'return' => 'array', - 'params' => 'resource result [, int row [, int result_type]]', - 'description' => 'Fetch a row as an array', - ), - 'pg_fetch_object' => - array ( - 'return' => 'object', - 'params' => 'resource result [, int row [, string class_name [, NULL|array ctor_params]]]', - 'description' => 'Fetch a row as an object', - ), - 'pg_fetch_all' => - array ( - 'return' => 'array', - 'params' => 'resource result', - 'description' => 'Fetch all rows into array', - ), - 'pg_fetch_all_columns' => - array ( - 'return' => 'array', - 'params' => 'resource result [, int column_number]', - 'description' => 'Fetch all rows into array', - ), - 'pg_result_seek' => - array ( - 'return' => 'bool', - 'params' => 'resource result, int offset', - 'description' => 'Set internal row offset', - ), - 'pg_field_prtlen' => - array ( - 'return' => 'int', - 'params' => 'resource result, [int row,] mixed field_name_or_number', - 'description' => 'Returns the printed length', - ), - 'pg_field_is_null' => - array ( - 'return' => 'int', - 'params' => 'resource result, [int row,] mixed field_name_or_number', - 'description' => 'Test if a field is NULL', - ), - 'pg_free_result' => - array ( - 'return' => 'bool', - 'params' => 'resource result', - 'description' => 'Free result memory', - ), - 'pg_last_oid' => - array ( - 'return' => 'string', - 'params' => 'resource result', - 'description' => 'Returns the last object identifier', - ), - 'pg_trace' => - array ( - 'return' => 'bool', - 'params' => 'string filename [, string mode [, resource connection]]', - 'description' => 'Enable tracing a PostgreSQL connection', - ), - 'pg_untrace' => - array ( - 'return' => 'bool', - 'params' => '[resource connection]', - 'description' => 'Disable tracing of a PostgreSQL connection', - ), - 'pg_lo_create' => - array ( - 'return' => 'int', - 'params' => '[resource connection]', - 'description' => 'Create a large object', - ), - 'pg_lo_unlink' => - array ( - 'return' => 'bool', - 'params' => '[resource connection,] string large_object_oid', - 'description' => 'Delete a large object', - ), - 'pg_lo_open' => - array ( - 'return' => 'resource', - 'params' => '[resource connection,] int large_object_oid, string mode', - 'description' => 'Open a large object and return fd', - ), - 'pg_lo_close' => - array ( - 'return' => 'bool', - 'params' => 'resource large_object', - 'description' => 'Close a large object', - ), - 'pg_lo_read' => - array ( - 'return' => 'string', - 'params' => 'resource large_object [, int len]', - 'description' => 'Read a large object', - ), - 'pg_lo_write' => - array ( - 'return' => 'int', - 'params' => 'resource large_object, string buf [, int len]', - 'description' => 'Write a large object', - ), - 'pg_lo_read_all' => - array ( - 'return' => 'int', - 'params' => 'resource large_object', - 'description' => 'Read a large object and send straight to browser', - ), - 'pg_lo_import' => - array ( - 'return' => 'int', - 'params' => '[resource connection, ] string filename', - 'description' => 'Import large object direct from filesystem', - ), - 'pg_lo_export' => - array ( - 'return' => 'bool', - 'params' => '[resource connection, ] int objoid, string filename', - 'description' => 'Export large object direct to filesystem', - ), - 'pg_lo_seek' => - array ( - 'return' => 'bool', - 'params' => 'resource large_object, int offset [, int whence]', - 'description' => 'Seeks position of large object', - ), - 'pg_lo_tell' => - array ( - 'return' => 'int', - 'params' => 'resource large_object', - 'description' => 'Returns current position of large object', - ), - 'pg_set_error_verbosity' => - array ( - 'return' => 'int', - 'params' => '[resource connection,] int verbosity', - 'description' => 'Set error verbosity', - ), - 'pg_set_client_encoding' => - array ( - 'return' => 'int', - 'params' => '[resource connection,] string encoding', - 'description' => 'Set client encoding', - ), - 'pg_client_encoding' => - array ( - 'return' => 'string', - 'params' => '[resource connection]', - 'description' => 'Get the current client encoding', - ), - 'pg_end_copy' => - array ( - 'return' => 'bool', - 'params' => '[resource connection]', - 'description' => 'Sync with backend. Completes the Copy command', - ), - 'pg_put_line' => - array ( - 'return' => 'bool', - 'params' => '[resource connection,] string query', - 'description' => 'Send null-terminated string to backend server', - ), - 'pg_copy_to' => - array ( - 'return' => 'array', - 'params' => 'resource connection, string table_name [, string delimiter [, string null_as]]', - 'description' => 'Copy table to array', - ), - 'pg_copy_from' => - array ( - 'return' => 'bool', - 'params' => 'resource connection, string table_name , array rows [, string delimiter [, string null_as]]', - 'description' => 'Copy table from array', - ), - 'pg_escape_string' => - array ( - 'return' => 'string', - 'params' => 'string data', - 'description' => 'Escape string for text/char type', - ), - 'pg_escape_bytea' => - array ( - 'return' => 'string', - 'params' => 'string data', - 'description' => 'Escape binary for bytea type', - ), - 'pg_unescape_bytea' => - array ( - 'return' => 'string', - 'params' => 'string data', - 'description' => 'Unescape binary for bytea type', - ), - 'pg_result_error' => - array ( - 'return' => 'string', - 'params' => 'resource result', - 'description' => 'Get error message associated with result', - ), - 'pg_result_error_field' => - array ( - 'return' => 'string', - 'params' => 'resource result, int fieldcode', - 'description' => 'Get error message field associated with result', - ), - 'pg_connection_status' => - array ( - 'return' => 'int', - 'params' => 'resource connnection', - 'description' => 'Get connection status', - ), - 'pg_transaction_status' => - array ( - 'return' => 'int', - 'params' => 'resource connnection', - 'description' => 'Get transaction status', - ), - 'pg_connection_reset' => - array ( - 'return' => 'bool', - 'params' => 'resource connection', - 'description' => 'Reset connection (reconnect)', - ), - 'pg_cancel_query' => - array ( - 'return' => 'bool', - 'params' => 'resource connection', - 'description' => 'Cancel request', - ), - 'pg_connection_busy' => - array ( - 'return' => 'bool', - 'params' => 'resource connection', - 'description' => 'Get connection is busy or not', - ), - 'pg_send_query' => - array ( - 'return' => 'bool', - 'params' => 'resource connection, string query', - 'description' => 'Send asynchronous query', - ), - 'pg_send_query_params' => - array ( - 'return' => 'bool', - 'params' => 'resource connection, string query', - 'description' => 'Send asynchronous parameterized query', - ), - 'pg_send_prepare' => - array ( - 'return' => 'bool', - 'params' => 'resource connection, string stmtname, string query', - 'description' => 'Asynchronously prepare a query for future execution', - ), - 'pg_send_execute' => - array ( - 'return' => 'bool', - 'params' => 'resource connection, string stmtname, array params', - 'description' => 'Executes prevriously prepared stmtname asynchronously', - ), - 'pg_get_result' => - array ( - 'return' => 'resource', - 'params' => 'resource connection', - 'description' => 'Get asynchronous query result', - ), - 'pg_result_status' => - array ( - 'return' => 'mixed', - 'params' => 'resource result[, long result_type]', - 'description' => 'Get status of query result', - ), - 'pg_get_notify' => - array ( - 'return' => 'array', - 'params' => '[resource connection[, result_type]]', - 'description' => 'Get asynchronous notification', - ), - 'pg_get_pid' => - array ( - 'return' => 'int', - 'params' => '[resource connection', - 'description' => 'Get backend(server) pid', - ), - 'pg_meta_data' => - array ( - 'return' => 'array', - 'params' => 'resource db, string table', - 'description' => 'Get meta_data', - ), - 'pg_convert' => - array ( - 'return' => 'array', - 'params' => 'resource db, string table, array values[, int options]', - 'description' => 'Check and convert values for PostgreSQL SQL statement', - ), - 'pg_insert' => - array ( - 'return' => 'mixed', - 'params' => 'resource db, string table, array values[, int options]', - 'description' => 'Insert values (filed=>value) to table', - ), - 'pg_update' => - array ( - 'return' => 'mixed', - 'params' => 'resource db, string table, array fields, array ids[, int options]', - 'description' => 'Update table using values (field=>value) and ids (id=>value)', - ), - 'pg_delete' => - array ( - 'return' => 'mixed', - 'params' => 'resource db, string table, array ids[, int options]', - 'description' => 'Delete records has ids (id=>value)', - ), - 'pg_select' => - array ( - 'return' => 'mixed', - 'params' => 'resource db, string table, array ids[, int options]', - 'description' => 'Select records that has ids (id=>value)', - ), - 'filepro' => - array ( - 'return' => 'bool', - 'params' => 'string directory', - 'description' => 'Read and verify the map file', - ), - 'filepro_rowcount' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Find out how many rows are in a filePro database', - ), - 'filepro_fieldname' => - array ( - 'return' => 'string', - 'params' => 'int fieldnumber', - 'description' => 'Gets the name of a field', - ), - 'filepro_fieldtype' => - array ( - 'return' => 'string', - 'params' => 'int field_number', - 'description' => 'Gets the type of a field', - ), - 'filepro_fieldwidth' => - array ( - 'return' => 'int', - 'params' => 'int field_number', - 'description' => 'Gets the width of a field', - ), - 'filepro_fieldcount' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Find out how many fields are in a filePro database', - ), - 'filepro_retrieve' => - array ( - 'return' => 'string', - 'params' => 'int row_number, int field_number', - 'description' => 'Retrieves data from a filePro database', - ), - 'bzread' => - array ( - 'return' => 'string', - 'params' => 'int bz[, int length]', - 'description' => 'Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified', - ), - 'bzopen' => - array ( - 'return' => 'resource', - 'params' => 'string|int file|fp, string mode', - 'description' => 'Opens a new BZip2 stream', - ), - 'bzerrno' => - array ( - 'return' => 'int', - 'params' => 'resource bz', - 'description' => 'Returns the error number', - ), - 'bzerrstr' => - array ( - 'return' => 'string', - 'params' => 'resource bz', - 'description' => 'Returns the error string', - ), - 'bzerror' => - array ( - 'return' => 'array', - 'params' => 'resource bz', - 'description' => 'Returns the error number and error string in an associative array', - ), - 'bzcompress' => - array ( - 'return' => 'string', - 'params' => 'string source [, int blocksize100k [, int workfactor]]', - 'description' => 'Compresses a string into BZip2 encoded data', - ), - 'bzdecompress' => - array ( - 'return' => 'string', - 'params' => 'string source [, int small]', - 'description' => 'Decompresses BZip2 compressed data', - ), - 'dba_popen' => - array ( - 'return' => 'resource', - 'params' => 'string path, string mode [, string handlername, string ...]', - 'description' => 'Opens path using the specified handler in mode persistently', - ), - 'dba_open' => - array ( - 'return' => 'resource', - 'params' => 'string path, string mode [, string handlername, string ...]', - 'description' => 'Opens path using the specified handler in mode', - ), - 'dba_close' => - array ( - 'return' => 'void', - 'params' => 'resource handle', - 'description' => 'Closes database', - ), - 'dba_exists' => - array ( - 'return' => 'bool', - 'params' => 'string key, resource handle', - 'description' => 'Checks, if the specified key exists', - ), - 'dba_fetch' => - array ( - 'return' => 'string', - 'params' => 'string key, [int skip ,] resource handle', - 'description' => 'Fetches the data associated with key', - ), - 'dba_key_split' => - array ( - 'return' => 'array|false', - 'params' => 'string key', - 'description' => 'Splits an inifile key into an array of the form array(0=>group,1=>value_name) but returns false if input is false or null', - ), - 'dba_firstkey' => - array ( - 'return' => 'string', - 'params' => 'resource handle', - 'description' => 'Resets the internal key pointer and returns the first key', - ), - 'dba_nextkey' => - array ( - 'return' => 'string', - 'params' => 'resource handle', - 'description' => 'Returns the next key', - ), - 'dba_delete' => - array ( - 'return' => 'bool', - 'params' => 'string key, resource handle', - 'description' => 'Deletes the entry associated with keyIf inifile: remove all other key lines', - ), - 'dba_insert' => - array ( - 'return' => 'bool', - 'params' => 'string key, string value, resource handle', - 'description' => 'If not inifile: Insert value as key, return false, if key exists alreadyIf inifile: Add vakue as key (next instance of key)', - ), - 'dba_replace' => - array ( - 'return' => 'bool', - 'params' => 'string key, string value, resource handle', - 'description' => 'Inserts value as key, replaces key, if key exists alreadyIf inifile: remove all other key lines', - ), - 'dba_optimize' => - array ( - 'return' => 'bool', - 'params' => 'resource handle', - 'description' => 'Optimizes (e.g. clean up, vacuum) database', - ), - 'dba_sync' => - array ( - 'return' => 'bool', - 'params' => 'resource handle', - 'description' => 'Synchronizes database', - ), - 'dba_handlers' => - array ( - 'return' => 'array', - 'params' => '[bool full_info]', - 'description' => 'List configured database handlers', - ), - 'dba_list' => - array ( - 'return' => 'array', - 'params' => '', - 'description' => 'List opened databases', - ), - 'iconv_strlen' => - array ( - 'return' => 'int', - 'params' => 'string str [, string charset]', - 'description' => 'Returns the character count of str', - ), - 'iconv_substr' => - array ( - 'return' => 'string', - 'params' => 'string str, int offset, [int length, string charset]', - 'description' => 'Returns specified part of a string', - ), - 'iconv_strpos' => - array ( - 'return' => 'int', - 'params' => 'string haystack, string needle, int offset [, string charset]', - 'description' => 'Finds position of first occurrence of needle within part of haystack beginning with offset', - ), - 'iconv_strrpos' => - array ( - 'return' => 'int', - 'params' => 'string haystack, string needle [, string charset]', - 'description' => 'Finds position of last occurrence of needle within part of haystack beginning with offset', - ), - 'iconv_mime_encode' => - array ( - 'return' => 'string', - 'params' => 'string field_name, string field_value, [, array preference]', - 'description' => 'Composes a mime header field with field_name and field_value in a specified scheme', - ), - 'iconv_mime_decode' => - array ( - 'return' => 'string', - 'params' => 'string encoded_string [, int mode, string charset]', - 'description' => 'Decodes a mime header field', - ), - 'iconv_mime_decode_headers' => - array ( - 'return' => 'array', - 'params' => 'string headers [, int mode, string charset]', - 'description' => 'Decodes multiple mime header fields', - ), - 'iconv' => - array ( - 'return' => 'string', - 'params' => 'string in_charset, string out_charset, string str', - 'description' => 'Returns str converted to the out_charset character set', - ), - 'ob_iconv_handler' => - array ( - 'return' => 'string', - 'params' => 'string contents, int status', - 'description' => 'Returns str in output buffer converted to the iconv.output_encoding character set', - ), - 'iconv_set_encoding' => - array ( - 'return' => 'bool', - 'params' => 'string type, string charset', - 'description' => 'Sets internal encoding and output encoding for ob_iconv_handler()', - ), - 'iconv_get_encoding' => - array ( - 'return' => 'mixed', - 'params' => '[string type]', - 'description' => 'Get internal encoding and output encoding for ob_iconv_handler()', - ), - 'ctype_alnum' => - array ( - 'return' => 'bool', - 'params' => 'mixed c', - 'description' => 'Checks for alphanumeric character(s)', - ), - 'ctype_alpha' => - array ( - 'return' => 'bool', - 'params' => 'mixed c', - 'description' => 'Checks for alphabetic character(s)', - ), - 'ctype_cntrl' => - array ( - 'return' => 'bool', - 'params' => 'mixed c', - 'description' => 'Checks for control character(s)', - ), - 'ctype_digit' => - array ( - 'return' => 'bool', - 'params' => 'mixed c', - 'description' => 'Checks for numeric character(s)', - ), - 'ctype_lower' => - array ( - 'return' => 'bool', - 'params' => 'mixed c', - 'description' => 'Checks for lowercase character(s)', - ), - 'ctype_graph' => - array ( - 'return' => 'bool', - 'params' => 'mixed c', - 'description' => 'Checks for any printable character(s) except space', - ), - 'ctype_print' => - array ( - 'return' => 'bool', - 'params' => 'mixed c', - 'description' => 'Checks for printable character(s)', - ), - 'ctype_punct' => - array ( - 'return' => 'bool', - 'params' => 'mixed c', - 'description' => 'Checks for any printable character which is not whitespace or an alphanumeric character', - ), - 'ctype_space' => - array ( - 'return' => 'bool', - 'params' => 'mixed c', - 'description' => 'Checks for whitespace character(s)', - ), - 'ctype_upper' => - array ( - 'return' => 'bool', - 'params' => 'mixed c', - 'description' => 'Checks for uppercase character(s)', - ), - 'ctype_xdigit' => - array ( - 'return' => 'bool', - 'params' => 'mixed c', - 'description' => 'Checks for character(s) representing a hexadecimal digit', - ), - 'bcadd' => - array ( - 'return' => 'string', - 'params' => 'string left_operand, string right_operand [, int scale]', - 'description' => 'Returns the sum of two arbitrary precision numbers', - ), - 'bcsub' => - array ( - 'return' => 'string', - 'params' => 'string left_operand, string right_operand [, int scale]', - 'description' => 'Returns the difference between two arbitrary precision numbers', - ), - 'bcmul' => - array ( - 'return' => 'string', - 'params' => 'string left_operand, string right_operand [, int scale]', - 'description' => 'Returns the multiplication of two arbitrary precision numbers', - ), - 'bcdiv' => - array ( - 'return' => 'string', - 'params' => 'string left_operand, string right_operand [, int scale]', - 'description' => 'Returns the quotient of two arbitrary precision numbers (division)', - ), - 'bcmod' => - array ( - 'return' => 'string', - 'params' => 'string left_operand, string right_operand', - 'description' => 'Returns the modulus of the two arbitrary precision operands', - ), - 'bcpowmod' => - array ( - 'return' => 'string', - 'params' => 'string x, string y, string mod [, int scale]', - 'description' => 'Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous', - ), - 'bcpow' => - array ( - 'return' => 'string', - 'params' => 'string x, string y [, int scale]', - 'description' => 'Returns the value of an arbitrary precision number raised to the power of another', - ), - 'bcsqrt' => - array ( - 'return' => 'string', - 'params' => 'string operand [, int scale]', - 'description' => 'Returns the square root of an arbitray precision number', - ), - 'bccomp' => - array ( - 'return' => 'int', - 'params' => 'string left_operand, string right_operand [, int scale]', - 'description' => 'Compares two arbitrary precision numbers', - ), - 'bcscale' => - array ( - 'return' => 'bool', - 'params' => 'int scale', - 'description' => 'Sets default scale parameter for all bc math functions', - ), - 'ldap_connect' => - array ( - 'return' => 'resource', - 'params' => '[string host [, int port]]', - 'description' => 'Connect to an LDAP server', - ), - 'ldap_bind' => - array ( - 'return' => 'bool', - 'params' => 'resource link [, string dn, string password]', - 'description' => 'Bind to LDAP directory', - ), - 'ldap_sasl_bind' => - array ( - 'return' => 'bool', - 'params' => 'resource link [, string binddn, string password, string sasl_mech, string sasl_realm, string sasl_authz_id, string props]', - 'description' => 'Bind to LDAP directory using SASL', - ), - 'ldap_unbind' => - array ( - 'return' => 'bool', - 'params' => 'resource link', - 'description' => 'Unbind from LDAP directory', - ), - 'ldap_read' => - array ( - 'return' => 'resource', - 'params' => 'resource link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]]', - 'description' => 'Read an entry', - ), - 'ldap_list' => - array ( - 'return' => 'resource', - 'params' => 'resource link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]]', - 'description' => 'Single-level search', - ), - 'ldap_search' => - array ( - 'return' => 'resource', - 'params' => 'resource link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]]', - 'description' => 'Search LDAP tree under base_dn', - ), - 'ldap_free_result' => - array ( - 'return' => 'bool', - 'params' => 'resource result', - 'description' => 'Free result memory', - ), - 'ldap_count_entries' => - array ( - 'return' => 'int', - 'params' => 'resource link, resource result', - 'description' => 'Count the number of entries in a search result', - ), - 'ldap_first_entry' => - array ( - 'return' => 'resource', - 'params' => 'resource link, resource result', - 'description' => 'Return first result id', - ), - 'ldap_next_entry' => - array ( - 'return' => 'resource', - 'params' => 'resource link, resource result_entry', - 'description' => 'Get next result entry', - ), - 'ldap_get_entries' => - array ( - 'return' => 'array', - 'params' => 'resource link, resource result', - 'description' => 'Get all result entries', - ), - 'ldap_first_attribute' => - array ( - 'return' => 'string', - 'params' => 'resource link, resource result_entry, int ber', - 'description' => 'Return first attribute', - ), - 'ldap_next_attribute' => - array ( - 'return' => 'string', - 'params' => 'resource link, resource result_entry, resource ber', - 'description' => 'Get the next attribute in result', - ), - 'ldap_get_attributes' => - array ( - 'return' => 'array', - 'params' => 'resource link, resource result_entry', - 'description' => 'Get attributes from a search result entry', - ), - 'ldap_get_values' => - array ( - 'return' => 'array', - 'params' => 'resource link, resource result_entry, string attribute', - 'description' => 'Get all values from a result entry', - ), - 'ldap_get_values_len' => - array ( - 'return' => 'array', - 'params' => 'resource link, resource result_entry, string attribute', - 'description' => 'Get all values with lengths from a result entry', - ), - 'ldap_get_dn' => - array ( - 'return' => 'string', - 'params' => 'resource link, resource result_entry', - 'description' => 'Get the DN of a result entry', - ), - 'ldap_explode_dn' => - array ( - 'return' => 'array', - 'params' => 'string dn, int with_attrib', - 'description' => 'Splits DN into its component parts', - ), - 'ldap_dn2ufn' => - array ( - 'return' => 'string', - 'params' => 'string dn', - 'description' => 'Convert DN to User Friendly Naming format', - ), - 'ldap_add' => - array ( - 'return' => 'bool', - 'params' => 'resource link, string dn, array entry', - 'description' => 'Add entries to LDAP directory', - ), - 'ldap_mod_replace' => - array ( - 'return' => 'bool', - 'params' => 'resource link, string dn, array entry', - 'description' => 'Replace attribute values with new ones', - ), - 'ldap_mod_add' => - array ( - 'return' => 'bool', - 'params' => 'resource link, string dn, array entry', - 'description' => 'Add attribute values to current', - ), - 'ldap_mod_del' => - array ( - 'return' => 'bool', - 'params' => 'resource link, string dn, array entry', - 'description' => 'Delete attribute values', - ), - 'ldap_delete' => - array ( - 'return' => 'bool', - 'params' => 'resource link, string dn', - 'description' => 'Delete an entry from a directory', - ), - 'ldap_errno' => - array ( - 'return' => 'int', - 'params' => 'resource link', - 'description' => 'Get the current ldap error number', - ), - 'ldap_err2str' => - array ( - 'return' => 'string', - 'params' => 'int errno', - 'description' => 'Convert error number to error string', - ), - 'ldap_error' => - array ( - 'return' => 'string', - 'params' => 'resource link', - 'description' => 'Get the current ldap error string', - ), - 'ldap_compare' => - array ( - 'return' => 'bool', - 'params' => 'resource link, string dn, string attr, string value', - 'description' => 'Determine if an entry has a specific value for one of its attributes', - ), - 'ldap_sort' => - array ( - 'return' => 'bool', - 'params' => 'resource link, resource result, string sortfilter', - 'description' => 'Sort LDAP result entries', - ), - 'ldap_get_option' => - array ( - 'return' => 'bool', - 'params' => 'resource link, int option, mixed retval', - 'description' => 'Get the current value of various session-wide parameters', - ), - 'ldap_set_option' => - array ( - 'return' => 'bool', - 'params' => 'resource link, int option, mixed newval', - 'description' => 'Set the value of various session-wide parameters', - ), - 'ldap_parse_result' => - array ( - 'return' => 'bool', - 'params' => 'resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals', - 'description' => 'Extract information from result', - ), - 'ldap_first_reference' => - array ( - 'return' => 'resource', - 'params' => 'resource link, resource result', - 'description' => 'Return first reference', - ), - 'ldap_next_reference' => - array ( - 'return' => 'resource', - 'params' => 'resource link, resource reference_entry', - 'description' => 'Get next reference', - ), - 'ldap_parse_reference' => - array ( - 'return' => 'bool', - 'params' => 'resource link, resource reference_entry, array referrals', - 'description' => 'Extract information from reference entry', - ), - 'ldap_rename' => - array ( - 'return' => 'bool', - 'params' => 'resource link, string dn, string newrdn, string newparent, bool deleteoldrdn', - 'description' => 'Modify the name of an entry', - ), - 'ldap_start_tls' => - array ( - 'return' => 'bool', - 'params' => 'resource link', - 'description' => 'Start TLS', - ), - 'ldap_set_rebind_proc' => - array ( - 'return' => 'bool', - 'params' => 'resource link, string callback', - 'description' => 'Set a callback function to do re-binds on referral chasing.', - ), - 'ldap_t61_to_8859' => - array ( - 'return' => 'string', - 'params' => 'string value', - 'description' => 'Translate t61 characters to 8859 characters', - ), - 'ldap_8859_to_t61' => - array ( - 'return' => 'string', - 'params' => 'string value', - 'description' => 'Translate 8859 characters to t61 characters', - ), - 'SoapServer::setClass' => - array ( - 'return' => 'void', - 'params' => 'string class_name [, mixed args]', - 'description' => 'Sets class which will handle SOAP requests', - ), - 'SoapServer::getFunctions' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Returns list of defined functions', - ), - 'SoapServer::addFunction' => - array ( - 'return' => 'void', - 'params' => 'mixed functions', - 'description' => 'Adds one or several functions those will handle SOAP requests', - ), - 'SoapClient::__getLastRequestHeaders' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Returns last SOAP request headers', - ), - 'SoapClient::__getLastResponseHeaders' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Returns last SOAP response headers', - ), - 'SoapClient::__doRequest' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'SoapClient::__doRequest()', - ), - 'SoapClient::__setCookie' => - array ( - 'return' => 'void', - 'params' => 'string name [, strung value]', - 'description' => 'Sets cookie thet will sent with SOAP request.The call to this function will effect all folowing calls of SOAP methods.If value is not specified cookie is removed.', - ), - 'SoapClient::__setSoapHeaders' => - array ( - 'return' => 'void', - 'params' => 'array SoapHeaders', - 'description' => 'Sets SOAP headers for subsequent calls (replaces any previousvalues).If no value is specified, all of the headers are removed.', - ), - 'SoapClient::__setLocation' => - array ( - 'return' => 'string', - 'params' => '[string new_location]', - 'description' => 'Sets the location option (the endpoint URL that will be touched by thefollowing SOAP requests).If new_location is not specified or null then SoapClient will use endpointfrom WSDL file.The function returns old value of location options.', - ), - 'fbsql_connect' => - array ( - 'return' => 'resource', - 'params' => '[string hostname [, string username [, string password]]]', - 'description' => 'Create a connection to a database server', - ), - 'fbsql_pconnect' => - array ( - 'return' => 'resource', - 'params' => '[string hostname [, string username [, string password]]]', - 'description' => 'Create a persistant connection to a database server', - ), - 'fbsql_close' => - array ( - 'return' => 'bool', - 'params' => '[resource link_identifier]', - 'description' => 'Close a connection to a database server', - ), - 'fbsql_set_transaction' => - array ( - 'return' => 'void', - 'params' => 'resource link_identifier, int locking, int isolation', - 'description' => 'Sets the transaction locking and isolation', - ), - 'fbsql_autocommit' => - array ( - 'return' => 'bool', - 'params' => 'resource link_identifier [, bool OnOff]', - 'description' => 'Turns on auto-commit', - ), - 'fbsql_commit' => - array ( - 'return' => 'bool', - 'params' => '[resource link_identifier]', - 'description' => 'Commit the transaction', - ), - 'fbsql_rollback' => - array ( - 'return' => 'bool', - 'params' => '[resource link_identifier]', - 'description' => 'Rollback all statments since last commit', - ), - 'fbsql_create_blob' => - array ( - 'return' => 'string', - 'params' => 'string blob_data [, resource link_identifier]', - 'description' => 'Create a BLOB in the database for use with an insert or update statement', - ), - 'fbsql_create_clob' => - array ( - 'return' => 'string', - 'params' => 'string clob_data [, resource link_identifier]', - 'description' => 'Create a CLOB in the database for use with an insert or update statement', - ), - 'fbsql_set_lob_mode' => - array ( - 'return' => 'bool', - 'params' => 'resource result, int lob_mode', - 'description' => 'Sets the mode for how LOB data re retreived (actual data or a handle)', - ), - 'fbsql_read_blob' => - array ( - 'return' => 'string', - 'params' => 'string blob_handle [, resource link_identifier]', - 'description' => 'Read the BLOB data identified by blob_handle', - ), - 'fbsql_read_clob' => - array ( - 'return' => 'string', - 'params' => 'string clob_handle [, resource link_identifier]', - 'description' => 'Read the CLOB data identified by clob_handle', - ), - 'fbsql_blob_size' => - array ( - 'return' => 'int', - 'params' => 'string blob_handle [, resource link_identifier]', - 'description' => 'Get the size of a BLOB identified by blob_handle', - ), - 'fbsql_clob_size' => - array ( - 'return' => 'int', - 'params' => 'string clob_handle [, resource link_identifier]', - 'description' => 'Get the size of a CLOB identified by clob_handle', - ), - 'fbsql_hostname' => - array ( - 'return' => 'string', - 'params' => 'resource link_identifier [, string host_name]', - 'description' => 'Get or set the host name used with a connection', - ), - 'fbsql_database' => - array ( - 'return' => 'string', - 'params' => 'resource link_identifier [, string database]', - 'description' => 'Get or set the database name used with a connection', - ), - 'fbsql_database_password' => - array ( - 'return' => 'string', - 'params' => 'resource link_identifier [, string database_password]', - 'description' => 'Get or set the databsae password used with a connection', - ), - 'fbsql_username' => - array ( - 'return' => 'string', - 'params' => 'resource link_identifier [, string username]', - 'description' => 'Get or set the host user used with a connection', - ), - 'fbsql_password' => - array ( - 'return' => 'string', - 'params' => 'resource link_identifier [, string password]', - 'description' => 'Get or set the user password used with a connection', - ), - 'fbsql_set_password' => - array ( - 'return' => 'bool', - 'params' => 'resource link_identifier, string user, string password, string old_password', - 'description' => 'Change the password for a given user', - ), - 'fbsql_select_db' => - array ( - 'return' => 'bool', - 'params' => '[string database_name [, resource link_identifier]]', - 'description' => 'Select the database to open', - ), - 'fbsql_set_characterset' => - array ( - 'return' => 'void', - 'params' => 'resource link_identifier, long charcterset [, long in_out_both]]', - 'description' => 'Change input/output character set', - ), - 'fbsql_change_user' => - array ( - 'return' => 'int', - 'params' => 'string user, string password [, string database [, resource link_identifier]]', - 'description' => 'Change the user for a session', - ), - 'fbsql_create_db' => - array ( - 'return' => 'bool', - 'params' => 'string database_name [, resource link_identifier]', - 'description' => 'Create a new database on the server', - ), - 'fbsql_drop_db' => - array ( - 'return' => 'int', - 'params' => 'string database_name [, resource link_identifier]', - 'description' => 'Drop a database on the server', - ), - 'fbsql_start_db' => - array ( - 'return' => 'bool', - 'params' => 'string database_name [, resource link_identifier [, string database_options]]', - 'description' => 'Start a database on the server', - ), - 'fbsql_stop_db' => - array ( - 'return' => 'bool', - 'params' => 'string database_name [, resource link_identifier]', - 'description' => 'Stop a database on the server', - ), - 'fbsql_db_status' => - array ( - 'return' => 'int', - 'params' => 'string database_name [, resource link_identifier]', - 'description' => 'Gets the status (Stopped, Starting, Running, Stopping) for a given database', - ), - 'fbsql_query' => - array ( - 'return' => 'resource', - 'params' => 'string query [, resource link_identifier [, long batch_size]]', - 'description' => 'Send one or more SQL statements to the server and execute them', - ), - 'fbsql_db_query' => - array ( - 'return' => 'resource', - 'params' => 'string database_name, string query [, resource link_identifier]', - 'description' => 'Send one or more SQL statements to a specified database on the server', - ), - 'fbsql_list_dbs' => - array ( - 'return' => 'resource', - 'params' => '[resource link_identifier]', - 'description' => 'Retreive a list of all databases on the server', - ), - 'fbsql_list_tables' => - array ( - 'return' => 'resource', - 'params' => 'string database [, int link_identifier]', - 'description' => 'Retreive a list of all tables from the specifoied database', - ), - 'fbsql_list_fields' => - array ( - 'return' => 'resource', - 'params' => 'string database_name, string table_name [, resource link_identifier]', - 'description' => 'Retrieve a list of all fields for the specified database.table', - ), - 'fbsql_error' => - array ( - 'return' => 'string', - 'params' => '[resource link_identifier]', - 'description' => 'Returns the last error string', - ), - 'fbsql_errno' => - array ( - 'return' => 'int', - 'params' => '[resource link_identifier]', - 'description' => 'Returns the last error code', - ), - 'fbsql_warnings' => - array ( - 'return' => 'bool', - 'params' => '[int flag]', - 'description' => 'Enable or disable FrontBase warnings', - ), - 'fbsql_affected_rows' => - array ( - 'return' => 'int', - 'params' => '[resource link_identifier]', - 'description' => 'Get the number of rows affected by the last statement', - ), - 'fbsql_insert_id' => - array ( - 'return' => 'int', - 'params' => '[resource link_identifier]', - 'description' => 'Get the internal index for the last insert statement', - ), - 'fbsql_result' => - array ( - 'return' => 'mixed', - 'params' => 'int result [, int row [, mixed field]]', - 'description' => '???', - ), - 'fbsql_next_result' => - array ( - 'return' => 'bool', - 'params' => 'int result', - 'description' => 'Switch to the next result if multiple results are available', - ), - 'fbsql_num_rows' => - array ( - 'return' => 'int', - 'params' => 'int result', - 'description' => 'Get number of rows', - ), - 'fbsql_num_fields' => - array ( - 'return' => 'int', - 'params' => 'int result', - 'description' => 'Get number of fields in the result set', - ), - 'fbsql_fetch_row' => - array ( - 'return' => 'array', - 'params' => 'resource result', - 'description' => 'Fetch a row of data. Returns an indexed array', - ), - 'fbsql_fetch_assoc' => - array ( - 'return' => 'object', - 'params' => 'resource result', - 'description' => 'Detch a row of data. Returns an assoc array', - ), - 'fbsql_fetch_object' => - array ( - 'return' => 'object', - 'params' => 'resource result [, int result_type]', - 'description' => 'Fetch a row of data. Returns an object', - ), - 'fbsql_fetch_array' => - array ( - 'return' => 'array', - 'params' => 'resource result [, int result_type]', - 'description' => 'Fetches a result row as an array (associative, numeric or both)', - ), - 'fbsql_data_seek' => - array ( - 'return' => 'bool', - 'params' => 'int result, int row_number', - 'description' => 'Move the internal row counter to the specified row_number', - ), - 'fbsql_fetch_lengths' => - array ( - 'return' => 'array', - 'params' => 'int result', - 'description' => 'Returns an array of the lengths of each column in the result set', - ), - 'fbsql_fetch_field' => - array ( - 'return' => 'object', - 'params' => 'int result [, int field_index]', - 'description' => 'Get the field properties for a specified field_index', - ), - 'fbsql_field_seek' => - array ( - 'return' => 'bool', - 'params' => 'int result [, int field_index]', - 'description' => '???', - ), - 'fbsql_field_name' => - array ( - 'return' => 'string', - 'params' => 'int result [, int field_index]', - 'description' => 'Get the column name for a specified field_index', - ), - 'fbsql_field_table' => - array ( - 'return' => 'string', - 'params' => 'int result [, int field_index]', - 'description' => 'Get the table name for a specified field_index', - ), - 'fbsql_field_len' => - array ( - 'return' => 'mixed', - 'params' => 'int result [, int field_index]', - 'description' => 'Get the column length for a specified field_index', - ), - 'fbsql_field_type' => - array ( - 'return' => 'string', - 'params' => 'int result [, int field_index]', - 'description' => 'Get the field type for a specified field_index', - ), - 'fbsql_field_flags' => - array ( - 'return' => 'string', - 'params' => 'int result [, int field_index]', - 'description' => '???', - ), - 'fbsql_table_name' => - array ( - 'return' => 'string', - 'params' => 'resource result, int index', - 'description' => 'Retreive the table name for index after a call to fbsql_list_tables()', - ), - 'fbsql_free_result' => - array ( - 'return' => 'bool', - 'params' => 'resource result', - 'description' => 'free the memory used to store a result', - ), - 'fbsql_get_autostart_info' => - array ( - 'return' => 'array', - 'params' => '[resource link_identifier]', - 'description' => '???', - ), - 'sem_get' => - array ( - 'return' => 'resource', - 'params' => 'int key [, int max_acquire [, int perm [, int auto_release]]', - 'description' => 'Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously', - ), - 'sem_acquire' => - array ( - 'return' => 'bool', - 'params' => 'resource id', - 'description' => 'Acquires the semaphore with the given id, blocking if necessary', - ), - 'sem_release' => - array ( - 'return' => 'bool', - 'params' => 'resource id', - 'description' => 'Releases the semaphore with the given id', - ), - 'sem_remove' => - array ( - 'return' => 'bool', - 'params' => 'resource id', - 'description' => 'Removes semaphore from Unix systems', - ), - 'token_get_all' => - array ( - 'return' => 'array', - 'params' => 'string source', - 'description' => '', - ), - 'token_name' => - array ( - 'return' => 'string', - 'params' => 'int type', - 'description' => '', - ), - 'gzfile' => - array ( - 'return' => 'array', - 'params' => 'string filename [, int use_include_path]', - 'description' => 'Read und uncompress entire .gz-file into an array', - ), - 'gzopen' => - array ( - 'return' => 'resource', - 'params' => 'string filename, string mode [, int use_include_path]', - 'description' => 'Open a .gz-file and return a .gz-file pointer', - ), - 'readgzfile' => - array ( - 'return' => 'int', - 'params' => 'string filename [, int use_include_path]', - 'description' => 'Output a .gz-file', - ), - 'gzcompress' => - array ( - 'return' => 'string', - 'params' => 'string data [, int level]', - 'description' => 'Gzip-compress a string', - ), - 'gzuncompress' => - array ( - 'return' => 'string', - 'params' => 'string data [, int length]', - 'description' => 'Unzip a gzip-compressed string', - ), - 'gzdeflate' => - array ( - 'return' => 'string', - 'params' => 'string data [, int level]', - 'description' => 'Gzip-compress a string', - ), - 'gzinflate' => - array ( - 'return' => 'string', - 'params' => 'string data [, int length]', - 'description' => 'Unzip a gzip-compressed string', - ), - 'zlib_get_coding_type' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Returns the coding type used for output compression', - ), - 'gzencode' => - array ( - 'return' => 'string', - 'params' => 'string data [, int level [, int encoding_mode]]', - 'description' => 'GZ encode a string', - ), - 'ob_gzhandler' => - array ( - 'return' => 'string', - 'params' => 'string str, int mode', - 'description' => 'Encode str based on accept-encoding setting - designed to be called from ob_start()', - ), - 'msql_connect' => - array ( - 'return' => 'int', - 'params' => '[string hostname[:port]] [, string username] [, string password]', - 'description' => 'Open a connection to an mSQL Server', - ), - 'msql_pconnect' => - array ( - 'return' => 'int', - 'params' => '[string hostname[:port]] [, string username] [, string password]', - 'description' => 'Open a persistent connection to an mSQL Server', - ), - 'msql_close' => - array ( - 'return' => 'bool', - 'params' => '[resource link_identifier]', - 'description' => 'Close an mSQL connection', - ), - 'msql_select_db' => - array ( - 'return' => 'bool', - 'params' => 'string database_name [, resource link_identifier]', - 'description' => 'Select an mSQL database', - ), - 'msql_create_db' => - array ( - 'return' => 'bool', - 'params' => 'string database_name [, resource link_identifier]', - 'description' => 'Create an mSQL database', - ), - 'msql_drop_db' => - array ( - 'return' => 'bool', - 'params' => 'string database_name [, resource link_identifier]', - 'description' => 'Drop (delete) an mSQL database', - ), - 'msql_query' => - array ( - 'return' => 'resource', - 'params' => 'string query [, resource link_identifier]', - 'description' => 'Send an SQL query to mSQL', - ), - 'msql_db_query' => - array ( - 'return' => 'resource', - 'params' => 'string database_name, string query [, resource link_identifier]', - 'description' => 'Send an SQL query to mSQL', - ), - 'msql_list_dbs' => - array ( - 'return' => 'resource', - 'params' => '[resource link_identifier]', - 'description' => 'List databases available on an mSQL server', - ), - 'msql_list_tables' => - array ( - 'return' => 'resource', - 'params' => 'string database_name [, resource link_identifier]', - 'description' => 'List tables in an mSQL database', - ), - 'msql_list_fields' => - array ( - 'return' => 'resource', - 'params' => 'string database_name, string table_name [, resource link_identifier]', - 'description' => 'List mSQL result fields', - ), - 'msql_error' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Returns the text of the error message from previous mSQL operation', - ), - 'msql_result' => - array ( - 'return' => 'string', - 'params' => 'int query, int row [, mixed field]', - 'description' => 'Get result data', - ), - 'msql_num_rows' => - array ( - 'return' => 'int', - 'params' => 'resource query', - 'description' => 'Get number of rows in a result', - ), - 'msql_num_fields' => - array ( - 'return' => 'int', - 'params' => 'resource query', - 'description' => 'Get number of fields in a result', - ), - 'msql_fetch_row' => - array ( - 'return' => 'array', - 'params' => 'resource query', - 'description' => 'Get a result row as an enumerated array', - ), - 'msql_fetch_object' => - array ( - 'return' => 'object', - 'params' => 'resource query [, resource result_type]', - 'description' => 'Fetch a result row as an object', - ), - 'msql_fetch_array' => - array ( - 'return' => 'array', - 'params' => 'resource query [, int result_type]', - 'description' => 'Fetch a result row as an associative array', - ), - 'msql_data_seek' => - array ( - 'return' => 'bool', - 'params' => 'resource query, int row_number', - 'description' => 'Move internal result pointer', - ), - 'msql_fetch_field' => - array ( - 'return' => 'object', - 'params' => 'resource query [, int field_offset]', - 'description' => 'Get column information from a result and return as an object', - ), - 'msql_field_seek' => - array ( - 'return' => 'bool', - 'params' => 'resource query, int field_offset', - 'description' => 'Set result pointer to a specific field offset', - ), - 'msql_field_name' => - array ( - 'return' => 'string', - 'params' => 'resource query, int field_index', - 'description' => 'Get the name of the specified field in a result', - ), - 'msql_field_table' => - array ( - 'return' => 'string', - 'params' => 'resource query, int field_offset', - 'description' => 'Get name of the table the specified field is in', - ), - 'msql_field_len' => - array ( - 'return' => 'int', - 'params' => 'int query, int field_offet', - 'description' => 'Returns the length of the specified field', - ), - 'msql_field_type' => - array ( - 'return' => 'string', - 'params' => 'resource query, int field_offset', - 'description' => 'Get the type of the specified field in a result', - ), - 'msql_field_flags' => - array ( - 'return' => 'string', - 'params' => 'resource query, int field_offset', - 'description' => 'Get the flags associated with the specified field in a result', - ), - 'msql_free_result' => - array ( - 'return' => 'bool', - 'params' => 'resource query', - 'description' => 'Free result memory', - ), - 'msql_affected_rows' => - array ( - 'return' => 'int', - 'params' => 'resource query', - 'description' => 'Return number of affected rows', - ), - 'PDO::__construct' => - array ( - 'return' => 'void', - 'params' => 'string dsn, string username, string passwd [, array options]', - 'description' => '', - ), - 'PDO::prepare' => - array ( - 'return' => 'object', - 'params' => 'string statment [, array options]', - 'description' => 'Prepares a statement for execution and returns a statement object', - ), - 'PDO::beginTransaction' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Initiates a transaction', - ), - 'PDO::commit' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Commit a transaction', - ), - 'PDO::rollBack' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'roll back a transaction', - ), - 'PDO::setAttribute' => - array ( - 'return' => 'bool', - 'params' => 'long attribute, mixed value', - 'description' => 'Set an attribute', - ), - 'PDO::getAttribute' => - array ( - 'return' => 'mixed', - 'params' => 'long attribute', - 'description' => 'Get an attribute', - ), - 'PDO::exec' => - array ( - 'return' => 'long', - 'params' => 'string query', - 'description' => 'Execute a query that does not return a row set, returning the number of affected rows', - ), - 'PDO::lastInsertId' => - array ( - 'return' => 'string', - 'params' => '[string seqname]', - 'description' => 'Returns the id of the last row that we affected on this connection. Some databases require a sequence or table name to be passed in. Not always meaningful.', - ), - 'PDO::errorCode' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Fetch the error code associated with the last operation on the database handle', - ), - 'PDO::errorInfo' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Fetch extended error information associated with the last operation on the database handle', - ), - 'PDO::query' => - array ( - 'return' => 'object', - 'params' => 'string sql [, PDOStatement::setFetchMode() args]', - 'description' => 'Prepare and execute $sql; returns the statement object for iteration', - ), - 'PDO::quote' => - array ( - 'return' => 'string', - 'params' => 'string string [, int paramtype]', - 'description' => 'quotes string for use in a query. The optional paramtype acts as a hint for drivers that have alternate quoting styles. The default value is PDO_PARAM_STR', - ), - 'PDO::__wakeup' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Prevents use of a PDO instance that has been unserialized', - ), - 'PDO::__sleep' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Prevents serialization of a PDO instance', - ), - 'pdo_drivers' => - array ( - 'return' => 'array', - 'params' => '', - 'description' => 'Return array of available PDO drivers', - ), - 'PDOStatement::execute' => - array ( - 'return' => 'bool', - 'params' => '[array $bound_input_params]', - 'description' => 'Execute a prepared statement, optionally binding parameters', - ), - 'PDOStatement::fetch' => - array ( - 'return' => 'mixed', - 'params' => '[int $how = PDO_FETCH_BOTH [, int $orientation [, int $offset]]]', - 'description' => 'Fetches the next row and returns it, or false if there are no more rows', - ), - 'PDOStatement::fetchObject' => - array ( - 'return' => 'mixed', - 'params' => 'string class_name [, NULL|array ctor_args]', - 'description' => 'Fetches the next row and returns it as an object.', - ), - 'PDOStatement::fetchColumn' => - array ( - 'return' => 'string', - 'params' => '[int column_number]', - 'description' => 'Returns a data of the specified column in the result set.', - ), - 'PDOStatement::fetchAll' => - array ( - 'return' => 'array', - 'params' => '[int $how = PDO_FETCH_BOTH [, string class_name [, NULL|array ctor_args]]]', - 'description' => 'Returns an array of all of the results.', - ), - 'PDOStatement::bindValue' => - array ( - 'return' => 'bool', - 'params' => 'mixed $paramno, mixed $param [, int $type ]', - 'description' => 'bind an input parameter to the value of a PHP variable. $paramno is the 1-based position of the placeholder in the SQL statement (but can be the parameter name for drivers that support named placeholders). It should be called prior to execute().', - ), - 'PDOStatement::bindParam' => - array ( - 'return' => 'bool', - 'params' => 'mixed $paramno, mixed &$param [, int $type [, int $maxlen [, mixed $driverdata]]]', - 'description' => 'bind a parameter to a PHP variable. $paramno is the 1-based position of the placeholder in the SQL statement (but can be the parameter name for drivers that support named placeholders). This isn\'t supported by all drivers. It should be called prior to execute().', - ), - 'PDOStatement::bindColumn' => - array ( - 'return' => 'bool', - 'params' => 'mixed $column, mixed &$param [, int $type [, int $maxlen [, mixed $driverdata]]]', - 'description' => 'bind a column to a PHP variable. On each row fetch $param will contain the value of the corresponding column. $column is the 1-based offset of the column, or the column name. For portability, don\'t call this before execute().', - ), - 'PDOStatement::rowCount' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Returns the number of rows in a result set, or the number of rows affected by the last execute(). It is not always meaningful.', - ), - 'PDOStatement::errorCode' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Fetch the error code associated with the last operation on the statement handle', - ), - 'PDOStatement::errorInfo' => - array ( - 'return' => 'array', - 'params' => '', - 'description' => 'Fetch extended error information associated with the last operation on the statement handle', - ), - 'PDOStatement::setAttribute' => - array ( - 'return' => 'bool', - 'params' => 'long attribute, mixed value', - 'description' => 'Set an attribute', - ), - 'PDOStatement::getAttribute' => - array ( - 'return' => 'mixed', - 'params' => 'long attribute', - 'description' => 'Get an attribute', - ), - 'PDOStatement::columnCount' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Returns the number of columns in the result set', - ), - 'PDOStatement::getColumnMeta' => - array ( - 'return' => 'array', - 'params' => 'int $column', - 'description' => 'Returns meta data for a numbered column', - ), - 'PDOStatement::setFetchMode' => - array ( - 'return' => 'bool', - 'params' => 'int mode [mixed* params]', - 'description' => 'Changes the default fetch mode for subsequent fetches (params have different meaning for different fetch modes)', - ), - 'PDOStatement::nextRowset' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Advances to the next rowset in a multi-rowset statement handle. Returns true if it succeded, false otherwise', - ), - 'PDOStatement::closeCursor' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Closes the cursor, leaving the statement ready for re-execution.', - ), - 'PDOStatement::debugDumpParams' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'A utility for internals hackers to debug parameter internals', - ), - 'PDOStatement::__wakeup' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Prevents use of a PDOStatement instance that has been unserialized', - ), - 'PDOStatement::__sleep' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Prevents serialization of a PDOStatement instance', - ), - 'xsl_xsltprocessor_import_stylesheet' => - array ( - 'return' => 'void', - 'params' => 'domdocument doc', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Since:', - ), - 'xsl_xsltprocessor_transform_to_doc' => - array ( - 'return' => 'domdocument', - 'params' => 'domnode doc', - 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Since:', - ), - 'xsl_xsltprocessor_transform_to_uri' => - array ( - 'return' => 'int', - 'params' => 'domdocument doc, string uri', - 'description' => '', - ), - 'xsl_xsltprocessor_transform_to_xml' => - array ( - 'return' => 'string', - 'params' => 'domdocument doc', - 'description' => '', - ), - 'xsl_xsltprocessor_set_parameter' => - array ( - 'return' => 'bool', - 'params' => 'string namespace, mixed name [, string value]', - 'description' => '', - ), - 'xsl_xsltprocessor_get_parameter' => - array ( - 'return' => 'string', - 'params' => 'string namespace, string name', - 'description' => '', - ), - 'xsl_xsltprocessor_remove_parameter' => - array ( - 'return' => 'bool', - 'params' => 'string namespace, string name', - 'description' => '', - ), - 'xsl_xsltprocessor_register_php_functions' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => '', - ), - 'xsl_xsltprocessor_has_exslt_support' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => '', - ), - 'libxml_set_streams_context' => - array ( - 'return' => 'void', - 'params' => 'resource streams_context', - 'description' => 'Set the streams context for the next libxml document load or write', - ), - 'libxml_use_internal_errors' => - array ( - 'return' => 'void', - 'params' => 'boolean use_errors', - 'description' => 'Disable libxml errors and allow user to fetch error information as needed', - ), - 'libxml_get_last_error' => - array ( - 'return' => 'object', - 'params' => '', - 'description' => 'Retrieve last error from libxml', - ), - 'libxml_get_errors' => - array ( - 'return' => 'object', - 'params' => '', - 'description' => 'Retrieve array of errors', - ), - 'libxml_clear_errors' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Clear last error from libxml', - ), - 'mssql_connect' => - array ( - 'return' => 'int', - 'params' => '[string servername [, string username [, string password [, bool new_link]]]', - 'description' => 'Establishes a connection to a MS-SQL server', - ), - 'mssql_pconnect' => - array ( - 'return' => 'int', - 'params' => '[string servername [, string username [, string password [, bool new_link]]]]', - 'description' => 'Establishes a persistent connection to a MS-SQL server', - ), - 'mssql_close' => - array ( - 'return' => 'bool', - 'params' => '[resource conn_id]', - 'description' => 'Closes a connection to a MS-SQL server', - ), - 'mssql_select_db' => - array ( - 'return' => 'bool', - 'params' => 'string database_name [, resource conn_id]', - 'description' => 'Select a MS-SQL database', - ), - 'mssql_fetch_batch' => - array ( - 'return' => 'int', - 'params' => 'resource result_index', - 'description' => 'Returns the next batch of records', - ), - 'mssql_query' => - array ( - 'return' => 'resource', - 'params' => 'string query [, resource conn_id [, int batch_size]]', - 'description' => 'Perform an SQL query on a MS-SQL server database', - ), - 'mssql_rows_affected' => - array ( - 'return' => 'int', - 'params' => 'resource conn_id', - 'description' => 'Returns the number of records affected by the query', - ), - 'mssql_free_result' => - array ( - 'return' => 'bool', - 'params' => 'resource result_index', - 'description' => 'Free a MS-SQL result index', - ), - 'mssql_get_last_message' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Gets the last message from the MS-SQL server', - ), - 'mssql_num_rows' => - array ( - 'return' => 'int', - 'params' => 'resource mssql_result_index', - 'description' => 'Returns the number of rows fetched in from the result id specified', - ), - 'mssql_num_fields' => - array ( - 'return' => 'int', - 'params' => 'resource mssql_result_index', - 'description' => 'Returns the number of fields fetched in from the result id specified', - ), - 'mssql_fetch_row' => - array ( - 'return' => 'array', - 'params' => 'resource result_id', - 'description' => 'Returns an array of the current row in the result set specified by result_id', - ), - 'mssql_fetch_object' => - array ( - 'return' => 'object', - 'params' => 'resource result_id [, int result_type]', - 'description' => 'Returns a psuedo-object of the current row in the result set specified by result_id', - ), - 'mssql_fetch_array' => - array ( - 'return' => 'array', - 'params' => 'resource result_id [, int result_type]', - 'description' => 'Returns an associative array of the current row in the result set specified by result_id', - ), - 'mssql_fetch_assoc' => - array ( - 'return' => 'array', - 'params' => 'resource result_id', - 'description' => 'Returns an associative array of the current row in the result set specified by result_id', - ), - 'mssql_data_seek' => - array ( - 'return' => 'bool', - 'params' => 'resource result_id, int offset', - 'description' => 'Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number', - ), - 'mssql_fetch_field' => - array ( - 'return' => 'object', - 'params' => 'resource result_id [, int offset]', - 'description' => 'Gets information about certain fields in a query result', - ), - 'mssql_field_length' => - array ( - 'return' => 'int', - 'params' => 'resource result_id [, int offset]', - 'description' => 'Get the length of a MS-SQL field', - ), - 'mssql_field_name' => - array ( - 'return' => 'string', - 'params' => 'resource result_id [, int offset]', - 'description' => 'Returns the name of the field given by offset in the result set given by result_id', - ), - 'mssql_field_type' => - array ( - 'return' => 'string', - 'params' => 'resource result_id [, int offset]', - 'description' => 'Returns the type of a field', - ), - 'mssql_field_seek' => - array ( - 'return' => 'bool', - 'params' => 'int result_id, int offset', - 'description' => 'Seeks to the specified field offset', - ), - 'mssql_result' => - array ( - 'return' => 'string', - 'params' => 'resource result_id, int row, mixed field', - 'description' => 'Returns the contents of one cell from a MS-SQL result set', - ), - 'mssql_next_result' => - array ( - 'return' => 'bool', - 'params' => 'resource result_id', - 'description' => 'Move the internal result pointer to the next result', - ), - 'mssql_min_error_severity' => - array ( - 'return' => 'void', - 'params' => 'int severity', - 'description' => 'Sets the lower error severity', - ), - 'mssql_min_message_severity' => - array ( - 'return' => 'void', - 'params' => 'int severity', - 'description' => 'Sets the lower message severity', - ), - 'mssql_init' => - array ( - 'return' => 'int', - 'params' => 'string sp_name [, resource conn_id]', - 'description' => 'Initializes a stored procedure or a remote stored procedure', - ), - 'mssql_bind' => - array ( - 'return' => 'bool', - 'params' => 'resource stmt, string param_name, mixed var, int type [, int is_output [, int is_null [, int maxlen]]]', - 'description' => 'Adds a parameter to a stored procedure or a remote stored procedure', - ), - 'mssql_execute' => - array ( - 'return' => 'mixed', - 'params' => 'resource stmt [, bool skip_results = false]', - 'description' => 'Executes a stored procedure on a MS-SQL server database', - ), - 'mssql_free_statement' => - array ( - 'return' => 'bool', - 'params' => 'resource result_index', - 'description' => 'Free a MS-SQL statement index', - ), - 'mssql_guid_string' => - array ( - 'return' => 'string', - 'params' => 'string binary [,int short_format]', - 'description' => 'Converts a 16 byte binary GUID to a string', - ), - 'oci_define_by_name' => - array ( - 'return' => 'bool', - 'params' => 'resource stmt, string name, mixed &var [, int type]', - 'description' => 'Define a PHP variable to an Oracle column by name', - ), - 'oci_bind_by_name' => - array ( - 'return' => 'bool', - 'params' => 'resource stmt, string name, mixed &var, [, int maxlength [, int type]]', - 'description' => 'Bind a PHP variable to an Oracle placeholder by name', - ), - 'oci_bind_array_by_name' => - array ( - 'return' => 'bool', - 'params' => 'resource stmt, string name, array &var, int max_table_length [, int max_item_length [, int type ]]', - 'description' => 'Bind a PHP array to an Oracle PL/SQL type by name', - ), - 'oci_free_descriptor' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Deletes large object description', - ), - 'oci_lob_save' => - array ( - 'return' => 'bool', - 'params' => ' string data [, int offset ]', - 'description' => 'Saves a large object', - ), - 'oci_lob_import' => - array ( - 'return' => 'bool', - 'params' => ' string filename ', - 'description' => 'Loads file into a LOB', - ), - 'oci_lob_load' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Loads a large object', - ), - 'oci_lob_read' => - array ( - 'return' => 'string', - 'params' => ' int length ', - 'description' => 'Reads particular part of a large object', - ), - 'oci_lob_eof' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Checks if EOF is reached', - ), - 'oci_lob_tell' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Tells LOB pointer position', - ), - 'oci_lob_rewind' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Rewind pointer of a LOB', - ), - 'oci_lob_seek' => - array ( - 'return' => 'bool', - 'params' => ' int offset [, int whence ]', - 'description' => 'Moves the pointer of a LOB', - ), - 'oci_lob_size' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Returns size of a large object', - ), - 'oci_lob_write' => - array ( - 'return' => 'int', - 'params' => ' string string [, int length ]', - 'description' => 'Writes data to current position of a LOB', - ), - 'oci_lob_append' => - array ( - 'return' => 'bool', - 'params' => ' object lob ', - 'description' => 'Appends data from a LOB to another LOB', - ), - 'oci_lob_truncate' => - array ( - 'return' => 'bool', - 'params' => ' [ int length ]', - 'description' => 'Truncates a LOB', - ), - 'oci_lob_erase' => - array ( - 'return' => 'int', - 'params' => ' [ int offset [, int length ] ] ', - 'description' => 'Erases a specified portion of the internal LOB, starting at a specified offset', - ), - 'oci_lob_flush' => - array ( - 'return' => 'bool', - 'params' => ' [ int flag ] ', - 'description' => 'Flushes the LOB buffer', - ), - 'ocisetbufferinglob' => - array ( - 'return' => 'bool', - 'params' => ' boolean flag ', - 'description' => 'Enables/disables buffering for a LOB', - ), - 'ocigetbufferinglob' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Returns current state of buffering for a LOB', - ), - 'oci_lob_copy' => - array ( - 'return' => 'bool', - 'params' => ' object lob_to, object lob_from [, int length ] ', - 'description' => 'Copies data from a LOB to another LOB', - ), - 'oci_lob_is_equal' => - array ( - 'return' => 'bool', - 'params' => ' object lob1, object lob2 ', - 'description' => 'Tests to see if two LOB/FILE locators are equal', - ), - 'oci_lob_export' => - array ( - 'return' => 'bool', - 'params' => '[string filename [, int start [, int length]]]', - 'description' => 'Writes a large object into a file', - ), - 'oci_lob_write_temporary' => - array ( - 'return' => 'bool', - 'params' => 'string var [, int lob_type]', - 'description' => 'Writes temporary blob', - ), - 'oci_lob_close' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Closes lob descriptor', - ), - 'oci_new_descriptor' => - array ( - 'return' => 'object', - 'params' => 'resource connection [, int type]', - 'description' => 'Initialize a new empty descriptor LOB/FILE (LOB is default)', - ), - 'oci_rollback' => - array ( - 'return' => 'bool', - 'params' => 'resource connection', - 'description' => 'Rollback the current context', - ), - 'oci_commit' => - array ( - 'return' => 'bool', - 'params' => 'resource connection', - 'description' => 'Commit the current context', - ), - 'oci_field_name' => - array ( - 'return' => 'string', - 'params' => 'resource stmt, int col', - 'description' => 'Tell the name of a column', - ), - 'oci_field_size' => - array ( - 'return' => 'int', - 'params' => 'resource stmt, int col', - 'description' => 'Tell the maximum data size of a column', - ), - 'oci_field_scale' => - array ( - 'return' => 'int', - 'params' => 'resource stmt, int col', - 'description' => 'Tell the scale of a column', - ), - 'oci_field_precision' => - array ( - 'return' => 'int', - 'params' => 'resource stmt, int col', - 'description' => 'Tell the precision of a column', - ), - 'oci_field_type' => - array ( - 'return' => 'mixed', - 'params' => 'resource stmt, int col', - 'description' => 'Tell the data type of a column', - ), - 'oci_field_type_raw' => - array ( - 'return' => 'int', - 'params' => 'resource stmt, int col', - 'description' => 'Tell the raw oracle data type of a column', - ), - 'oci_field_is_null' => - array ( - 'return' => 'bool', - 'params' => 'resource stmt, int col', - 'description' => 'Tell whether a column is NULL', - ), - 'oci_internal_debug' => - array ( - 'return' => 'void', - 'params' => 'int onoff', - 'description' => 'Toggle internal debugging output for the OCI extension', - ), - 'oci_execute' => - array ( - 'return' => 'bool', - 'params' => 'resource stmt [, int mode]', - 'description' => 'Execute a parsed statement', - ), - 'oci_cancel' => - array ( - 'return' => 'bool', - 'params' => 'resource stmt', - 'description' => 'Cancel reading from a cursor', - ), - 'oci_fetch' => - array ( - 'return' => 'bool', - 'params' => 'resource stmt', - 'description' => 'Prepare a new row of data for reading', - ), - 'ocifetchinto' => - array ( - 'return' => 'int', - 'params' => 'resource stmt, array &output [, int mode]', - 'description' => 'Fetch a row of result data into an array', - ), - 'oci_fetch_all' => - array ( - 'return' => 'int', - 'params' => 'resource stmt, array &output[, int skip[, int maxrows[, int flags]]]', - 'description' => 'Fetch all rows of result data into an array', - ), - 'oci_fetch_object' => - array ( - 'return' => 'object', - 'params' => ' resource stmt ', - 'description' => 'Fetch a result row as an object', - ), - 'oci_fetch_row' => - array ( - 'return' => 'array', - 'params' => ' resource stmt ', - 'description' => 'Fetch a result row as an enumerated array', - ), - 'oci_fetch_assoc' => - array ( - 'return' => 'array', - 'params' => ' resource stmt ', - 'description' => 'Fetch a result row as an associative array', - ), - 'oci_fetch_array' => - array ( - 'return' => 'array', - 'params' => ' resource stmt [, int mode ]', - 'description' => 'Fetch a result row as an array', - ), - 'oci_free_statement' => - array ( - 'return' => 'bool', - 'params' => 'resource stmt', - 'description' => 'Free all resources associated with a statement', - ), - 'oci_close' => - array ( - 'return' => 'bool', - 'params' => 'resource connection', - 'description' => 'Disconnect from database', - ), - 'oci_new_connect' => - array ( - 'return' => 'resource', - 'params' => 'string user, string pass [, string db]', - 'description' => 'Connect to an Oracle database and log on. Returns a new session.', - ), - 'oci_connect' => - array ( - 'return' => 'resource', - 'params' => 'string user, string pass [, string db [, string charset [, int session_mode ]]', - 'description' => 'Connect to an Oracle database and log on. Returns a new session.', - ), - 'oci_pconnect' => - array ( - 'return' => 'resource', - 'params' => 'string user, string pass [, string db [, string charset ]]', - 'description' => 'Connect to an Oracle database using a persistent connection and log on. Returns a new session.', - ), - 'oci_error' => - array ( - 'return' => 'array', - 'params' => '[resource stmt|connection|global]', - 'description' => 'Return the last error of stmt|connection|global. If no error happened returns false.', - ), - 'oci_num_fields' => - array ( - 'return' => 'int', - 'params' => 'resource stmt', - 'description' => 'Return the number of result columns in a statement', - ), - 'oci_parse' => - array ( - 'return' => 'resource', - 'params' => 'resource connection, string query', - 'description' => 'Parse a query and return a statement', - ), - 'oci_set_prefetch' => - array ( - 'return' => 'bool', - 'params' => 'resource stmt, int prefetch_rows', - 'description' => 'Sets the number of rows to be prefetched on execute to prefetch_rows for stmt', - ), - 'oci_password_change' => - array ( - 'return' => 'bool', - 'params' => 'resource connection, string username, string old_password, string new_password', - 'description' => 'Changes the password of an account', - ), - 'oci_new_cursor' => - array ( - 'return' => 'resource', - 'params' => 'resource connection', - 'description' => 'Return a new cursor (Statement-Handle) - use this to bind ref-cursors!', - ), - 'oci_result' => - array ( - 'return' => 'string', - 'params' => 'resource stmt, mixed column', - 'description' => 'Return a single column of result data', - ), - 'oci_server_version' => - array ( - 'return' => 'string', - 'params' => 'resource connection', - 'description' => 'Return a string containing server version information', - ), - 'oci_statement_type' => - array ( - 'return' => 'string', - 'params' => 'resource stmt', - 'description' => 'Return the query type of an OCI statement', - ), - 'oci_num_rows' => - array ( - 'return' => 'int', - 'params' => 'resource stmt', - 'description' => 'Return the row count of an OCI statement', - ), - 'oci_free_collection' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Deletes collection object', - ), - 'oci_collection_append' => - array ( - 'return' => 'bool', - 'params' => 'string value', - 'description' => 'Append an object to the collection', - ), - 'oci_collection_element_get' => - array ( - 'return' => 'string', - 'params' => 'int ndx', - 'description' => 'Retrieve the value at collection index ndx', - ), - 'oci_collection_assign' => - array ( - 'return' => 'bool', - 'params' => 'object from', - 'description' => 'Assign a collection from another existing collection', - ), - 'oci_collection_element_assign' => - array ( - 'return' => 'bool', - 'params' => 'int index, string val', - 'description' => 'Assign element val to collection at index ndx', - ), - 'oci_collection_size' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Return the size of a collection', - ), - 'oci_collection_max' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Return the max value of a collection. For a varray this is the maximum length of the array', - ), - 'oci_collection_trim' => - array ( - 'return' => 'bool', - 'params' => 'int num', - 'description' => 'Trim num elements from the end of a collection', - ), - 'oci_new_collection' => - array ( - 'return' => 'object', - 'params' => 'resource connection, string tdo [, string schema]', - 'description' => 'Initialize a new collection', - ), - 'mb_language' => - array ( - 'return' => 'string', - 'params' => '[string language]', - 'description' => 'Sets the current language or Returns the current language as a string', - ), - 'mb_internal_encoding' => - array ( - 'return' => 'string', - 'params' => '[string encoding]', - 'description' => 'Sets the current internal encoding or Returns the current internal encoding as a string', - ), - 'mb_http_input' => - array ( - 'return' => 'mixed', - 'params' => '[string type]', - 'description' => 'Returns the input encoding', - ), - 'mb_http_output' => - array ( - 'return' => 'string', - 'params' => '[string encoding]', - 'description' => 'Sets the current output_encoding or returns the current output_encoding as a string', - ), - 'mb_detect_order' => - array ( - 'return' => 'bool|array', - 'params' => '[mixed encoding-list]', - 'description' => 'Sets the current detect_order or Return the current detect_order as a array', - ), - 'mb_substitute_character' => - array ( - 'return' => 'mixed', - 'params' => '[mixed substchar]', - 'description' => 'Sets the current substitute_character or returns the current substitute_character', - ), - 'mb_preferred_mime_name' => - array ( - 'return' => 'string', - 'params' => 'string encoding', - 'description' => 'Return the preferred MIME name (charset) as a string', - ), - 'mb_parse_str' => - array ( - 'return' => 'bool', - 'params' => 'string encoded_string [, array result]', - 'description' => 'Parses GET/POST/COOKIE data and sets global variables', - ), - 'mb_output_handler' => - array ( - 'return' => 'string', - 'params' => 'string contents, int status', - 'description' => 'Returns string in output buffer converted to the http_output encoding', - ), - 'mb_strlen' => - array ( - 'return' => 'int', - 'params' => 'string str [, string encoding]', - 'description' => 'Get character numbers of a string', - ), - 'mb_strpos' => - array ( - 'return' => 'int', - 'params' => 'string haystack, string needle [, int offset [, string encoding]]', - 'description' => 'Find position of first occurrence of a string within another', - ), - 'mb_strrpos' => - array ( - 'return' => 'int', - 'params' => 'string haystack, string needle [, string encoding]', - 'description' => 'Find the last occurrence of a character in a string within another', - ), - 'mb_substr_count' => - array ( - 'return' => 'int', - 'params' => 'string haystack, string needle [, string encoding]', - 'description' => 'Count the number of substring occurrences', - ), - 'mb_substr' => - array ( - 'return' => 'string', - 'params' => 'string str, int start [, int length [, string encoding]]', - 'description' => 'Returns part of a string', - ), - 'mb_strcut' => - array ( - 'return' => 'string', - 'params' => 'string str, int start [, int length [, string encoding]]', - 'description' => 'Returns part of a string', - ), - 'mb_strwidth' => - array ( - 'return' => 'int', - 'params' => 'string str [, string encoding]', - 'description' => 'Gets terminal width of a string', - ), - 'mb_strimwidth' => - array ( - 'return' => 'string', - 'params' => 'string str, int start, int width [, string trimmarker [, string encoding]]', - 'description' => 'Trim the string in terminal width', - ), - 'mb_convert_encoding' => - array ( - 'return' => 'string', - 'params' => 'string str, string to-encoding [, mixed from-encoding]', - 'description' => 'Returns converted string in desired encoding', - ), - 'mb_convert_case' => - array ( - 'return' => 'string', - 'params' => 'string sourcestring, int mode [, string encoding]', - 'description' => 'Returns a case-folded version of sourcestring', - ), - 'mb_strtoupper' => - array ( - 'return' => 'string', - 'params' => 'string sourcestring [, string encoding]', - 'description' => '* Returns a uppercased version of sourcestring', - ), - 'mb_strtolower' => - array ( - 'return' => 'string', - 'params' => 'string sourcestring [, string encoding]', - 'description' => '* Returns a lowercased version of sourcestring', - ), - 'mb_detect_encoding' => - array ( - 'return' => 'string', - 'params' => 'string str [, mixed encoding_list [, bool strict]]', - 'description' => 'Encodings of the given string is returned (as a string)', - ), - 'mb_list_encodings' => - array ( - 'return' => 'array', - 'params' => '', - 'description' => 'Returns an array of all supported encodings', - ), - 'mb_encode_mimeheader' => - array ( - 'return' => 'string', - 'params' => 'string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]]', - 'description' => 'Converts the string to MIME "encoded-word" in the format of =?charset?(B|Q)?encoded_string?=', - ), - 'mb_decode_mimeheader' => - array ( - 'return' => 'string', - 'params' => 'string string', - 'description' => 'Decodes the MIME "encoded-word" in the string', - ), - 'mb_convert_kana' => - array ( - 'return' => 'string', - 'params' => 'string str [, string option] [, string encoding]', - 'description' => 'Conversion between full-width character and half-width character (Japanese)', - ), - 'mb_convert_variables' => - array ( - 'return' => 'string', - 'params' => 'string to-encoding, mixed from-encoding [, mixed ...]', - 'description' => 'Converts the string resource in variables to desired encoding', - ), - 'mb_encode_numericentity' => - array ( - 'return' => 'string', - 'params' => 'string string, array convmap [, string encoding]', - 'description' => 'Converts specified characters to HTML numeric entities', - ), - 'mb_decode_numericentity' => - array ( - 'return' => 'string', - 'params' => 'string string, array convmap [, string encoding]', - 'description' => 'Converts HTML numeric entities to character code', - ), - 'mb_send_mail' => - array ( - 'return' => 'int', - 'params' => 'string to, string subject, string message [, string additional_headers [, string additional_parameters]]', - 'description' => '* Sends an email message with MIME scheme', - ), - 'mb_get_info' => - array ( - 'return' => 'mixed', - 'params' => '[string type]', - 'description' => 'Returns the current settings of mbstring', - ), - 'mb_check_encoding' => - array ( - 'return' => 'bool', - 'params' => '[string var[, string encoding]]', - 'description' => 'Check if the string is valid for the specified encoding', - ), - 'mb_regex_encoding' => - array ( - 'return' => 'string', - 'params' => '[string encoding]', - 'description' => 'Returns the current encoding for regex as a string.', - ), - 'mb_ereg' => - array ( - 'return' => 'int', - 'params' => 'string pattern, string string [, array registers]', - 'description' => 'Regular expression match for multibyte string', - ), - 'mb_eregi' => - array ( - 'return' => 'int', - 'params' => 'string pattern, string string [, array registers]', - 'description' => 'Case-insensitive regular expression match for multibyte string', - ), - 'mb_ereg_replace' => - array ( - 'return' => 'string', - 'params' => 'string pattern, string replacement, string string [, string option]', - 'description' => 'Replace regular expression for multibyte string', - ), - 'mb_eregi_replace' => - array ( - 'return' => 'string', - 'params' => 'string pattern, string replacement, string string', - 'description' => 'Case insensitive replace regular expression for multibyte string', - ), - 'mb_split' => - array ( - 'return' => 'array', - 'params' => 'string pattern, string string [, int limit]', - 'description' => 'split multibyte string into array by regular expression', - ), - 'mb_ereg_match' => - array ( - 'return' => 'bool', - 'params' => 'string pattern, string string [,string option]', - 'description' => 'Regular expression match for multibyte string', - ), - 'mb_ereg_search' => - array ( - 'return' => 'bool', - 'params' => '[string pattern[, string option]]', - 'description' => 'Regular expression search for multibyte string', - ), - 'mb_ereg_search_pos' => - array ( - 'return' => 'array', - 'params' => '[string pattern[, string option]]', - 'description' => 'Regular expression search for multibyte string', - ), - 'mb_ereg_search_regs' => - array ( - 'return' => 'array', - 'params' => '[string pattern[, string option]]', - 'description' => 'Regular expression search for multibyte string', - ), - 'mb_ereg_search_init' => - array ( - 'return' => 'bool', - 'params' => 'string string [, string pattern[, string option]]', - 'description' => 'Initialize string and regular expression for search.', - ), - 'mb_ereg_search_getregs' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Get matched substring of the last time', - ), - 'mb_ereg_search_getpos' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get search start position', - ), - 'mb_ereg_search_setpos' => - array ( - 'return' => 'bool', - 'params' => 'int position', - 'description' => 'Set search start position', - ), - 'mb_regex_set_options' => - array ( - 'return' => 'string', - 'params' => '[string options]', - 'description' => 'Set or get the default options for mbregex functions', - ), - 'preg_match' => - array ( - 'return' => 'int', - 'params' => 'string pattern, string subject [, array subpatterns [, int flags [, int offset]]]', - 'description' => 'Perform a Perl-style regular expression match', - ), - 'preg_match_all' => - array ( - 'return' => 'int', - 'params' => 'string pattern, string subject, array subpatterns [, int flags [, int offset]]', - 'description' => 'Perform a Perl-style global regular expression match', - ), - 'preg_replace' => - array ( - 'return' => 'string', - 'params' => 'mixed regex, mixed replace, mixed subject [, int limit [, count]]', - 'description' => 'Perform Perl-style regular expression replacement.', - ), - 'preg_replace_callback' => - array ( - 'return' => 'string', - 'params' => 'mixed regex, mixed callback, mixed subject [, int limit [, count]]', - 'description' => 'Perform Perl-style regular expression replacement using replacement callback.', - ), - 'preg_split' => - array ( - 'return' => 'array', - 'params' => 'string pattern, string subject [, int limit [, int flags]]', - 'description' => 'Split string into an array using a perl-style regular expression as a delimiter', - ), - 'preg_quote' => - array ( - 'return' => 'string', - 'params' => 'string str, string delim_char', - 'description' => 'Quote regular expression characters plus an optional character', - ), - 'preg_grep' => - array ( - 'return' => 'array', - 'params' => 'string regex, array input', - 'description' => 'Searches array and returns entries which match regex', - ), - 'pcntl_fork' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Forks the currently running process following the same behavior as the UNIX fork() system call', - ), - 'pcntl_alarm' => - array ( - 'return' => 'int', - 'params' => 'int seconds', - 'description' => 'Set an alarm clock for delivery of a signal', - ), - 'pcntl_waitpid' => - array ( - 'return' => 'int', - 'params' => 'int pid, int &status, int options', - 'description' => 'Waits on or returns the status of a forked child as defined by the waitpid() system call', - ), - 'pcntl_wait' => - array ( - 'return' => 'int', - 'params' => 'int &status', - 'description' => 'Waits on or returns the status of a forked child as defined by the waitpid() system call', - ), - 'pcntl_wifexited' => - array ( - 'return' => 'bool', - 'params' => 'int status', - 'description' => 'Returns true if the child status code represents a successful exit', - ), - 'pcntl_wifstopped' => - array ( - 'return' => 'bool', - 'params' => 'int status', - 'description' => 'Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid)', - ), - 'pcntl_wifsignaled' => - array ( - 'return' => 'bool', - 'params' => 'int status', - 'description' => 'Returns true if the child status code represents a process that was terminated due to a signal', - ), - 'pcntl_wexitstatus' => - array ( - 'return' => 'int', - 'params' => 'int status', - 'description' => 'Returns the status code of a child\'s exit', - ), - 'pcntl_wtermsig' => - array ( - 'return' => 'int', - 'params' => 'int status', - 'description' => 'Returns the number of the signal that terminated the process who\'s status code is passed', - ), - 'pcntl_wstopsig' => - array ( - 'return' => 'int', - 'params' => 'int status', - 'description' => 'Returns the number of the signal that caused the process to stop who\'s status code is passed', - ), - 'pcntl_exec' => - array ( - 'return' => 'bool', - 'params' => 'string path [, array args [, array envs]]', - 'description' => 'Executes specified program in current process space as defined by exec(2)', - ), - 'pcntl_signal' => - array ( - 'return' => 'bool', - 'params' => 'int signo, callback handle [, bool restart_syscalls]', - 'description' => 'Assigns a system signal handler to a PHP function', - ), - 'pcntl_getpriority' => - array ( - 'return' => 'int', - 'params' => '[int pid [, int process_identifier]]', - 'description' => 'Get the priority of any process', - ), - 'pcntl_setpriority' => - array ( - 'return' => 'bool', - 'params' => 'int priority [, int pid [, int process_identifier]]', - 'description' => 'Change the priority of any process', - ), - 'mcrypt_module_open' => - array ( - 'return' => 'resource', - 'params' => 'string cipher, string cipher_directory, string mode, string mode_directory', - 'description' => 'Opens the module of the algorithm and the mode to be used', - ), - 'mcrypt_generic_init' => - array ( - 'return' => 'int', - 'params' => 'resource td, string key, string iv', - 'description' => 'This function initializes all buffers for the specific module', - ), - 'mcrypt_generic' => - array ( - 'return' => 'string', - 'params' => 'resource td, string data', - 'description' => 'This function encrypts the plaintext', - ), - 'mdecrypt_generic' => - array ( - 'return' => 'string', - 'params' => 'resource td, string data', - 'description' => 'This function decrypts the plaintext', - ), - 'mcrypt_enc_get_supported_key_sizes' => - array ( - 'return' => 'array', - 'params' => 'resource td', - 'description' => 'This function decrypts the crypttext', - ), - 'mcrypt_enc_self_test' => - array ( - 'return' => 'int', - 'params' => 'resource td', - 'description' => 'This function runs the self test on the algorithm specified by the descriptor td', - ), - 'mcrypt_module_close' => - array ( - 'return' => 'bool', - 'params' => 'resource td', - 'description' => 'Free the descriptor td', - ), - 'mcrypt_generic_end' => - array ( - 'return' => 'bool', - 'params' => 'resource td', - 'description' => 'This function terminates encrypt specified by the descriptor td', - ), - 'mcrypt_generic_deinit' => - array ( - 'return' => 'bool', - 'params' => 'resource td', - 'description' => 'This function terminates encrypt specified by the descriptor td', - ), - 'mcrypt_enc_is_block_algorithm_mode' => - array ( - 'return' => 'bool', - 'params' => 'resource td', - 'description' => 'Returns TRUE if the mode is for use with block algorithms', - ), - 'mcrypt_enc_is_block_algorithm' => - array ( - 'return' => 'bool', - 'params' => 'resource td', - 'description' => 'Returns TRUE if the alrogithm is a block algorithms', - ), - 'mcrypt_enc_is_block_mode' => - array ( - 'return' => 'bool', - 'params' => 'resource td', - 'description' => 'Returns TRUE if the mode outputs blocks', - ), - 'mcrypt_enc_get_block_size' => - array ( - 'return' => 'int', - 'params' => 'resource td', - 'description' => 'Returns the block size of the cipher specified by the descriptor td', - ), - 'mcrypt_enc_get_key_size' => - array ( - 'return' => 'int', - 'params' => 'resource td', - 'description' => 'Returns the maximum supported key size in bytes of the algorithm specified by the descriptor td', - ), - 'mcrypt_enc_get_iv_size' => - array ( - 'return' => 'int', - 'params' => 'resource td', - 'description' => 'Returns the size of the IV in bytes of the algorithm specified by the descriptor td', - ), - 'mcrypt_enc_get_algorithms_name' => - array ( - 'return' => 'string', - 'params' => 'resource td', - 'description' => 'Returns the name of the algorithm specified by the descriptor td', - ), - 'mcrypt_enc_get_modes_name' => - array ( - 'return' => 'string', - 'params' => 'resource td', - 'description' => 'Returns the name of the mode specified by the descriptor td', - ), - 'mcrypt_module_self_test' => - array ( - 'return' => 'bool', - 'params' => 'string algorithm [, string lib_dir]', - 'description' => 'Does a self test of the module "module"', - ), - 'mcrypt_module_is_block_algorithm_mode' => - array ( - 'return' => 'bool', - 'params' => 'string mode [, string lib_dir]', - 'description' => 'Returns TRUE if the mode is for use with block algorithms', - ), - 'mcrypt_module_is_block_algorithm' => - array ( - 'return' => 'bool', - 'params' => 'string algorithm [, string lib_dir]', - 'description' => 'Returns TRUE if the algorithm is a block algorithm', - ), - 'mcrypt_module_is_block_mode' => - array ( - 'return' => 'bool', - 'params' => 'string mode [, string lib_dir]', - 'description' => 'Returns TRUE if the mode outputs blocks of bytes', - ), - 'mcrypt_module_get_algo_block_size' => - array ( - 'return' => 'int', - 'params' => 'string algorithm [, string lib_dir]', - 'description' => 'Returns the block size of the algorithm', - ), - 'mcrypt_module_get_algo_key_size' => - array ( - 'return' => 'int', - 'params' => 'string algorithm [, string lib_dir]', - 'description' => 'Returns the maximum supported key size of the algorithm', - ), - 'mcrypt_module_get_supported_key_sizes' => - array ( - 'return' => 'array', - 'params' => 'string algorithm [, string lib_dir]', - 'description' => 'This function decrypts the crypttext', - ), - 'mcrypt_list_algorithms' => - array ( - 'return' => 'array', - 'params' => '[string lib_dir]', - 'description' => 'List all algorithms in "module_dir"', - ), - 'mcrypt_list_modes' => - array ( - 'return' => 'array', - 'params' => '[string lib_dir]', - 'description' => 'List all modes "module_dir"', - ), - 'mcrypt_get_key_size' => - array ( - 'return' => 'int', - 'params' => 'string cipher, string module', - 'description' => 'Get the key size of cipher', - ), - 'mcrypt_get_block_size' => - array ( - 'return' => 'int', - 'params' => 'string cipher, string module', - 'description' => 'Get the key size of cipher', - ), - 'mcrypt_get_iv_size' => - array ( - 'return' => 'int', - 'params' => 'string cipher, string module', - 'description' => 'Get the IV size of cipher (Usually the same as the blocksize)', - ), - 'mcrypt_get_cipher_name' => - array ( - 'return' => 'string', - 'params' => 'string cipher', - 'description' => 'Get the key size of cipher', - ), - 'mcrypt_encrypt' => - array ( - 'return' => 'string', - 'params' => 'string cipher, string key, string data, string mode, string iv', - 'description' => 'OFB crypt/decrypt data using key key with cipher cipher starting with iv', - ), - 'mcrypt_decrypt' => - array ( - 'return' => 'string', - 'params' => 'string cipher, string key, string data, string mode, string iv', - 'description' => 'OFB crypt/decrypt data using key key with cipher cipher starting with iv', - ), - 'mcrypt_ecb' => - array ( - 'return' => 'string', - 'params' => 'int cipher, string key, string data, int mode, string iv', - 'description' => 'ECB crypt/decrypt data using key key with cipher cipher starting with iv', - ), - 'mcrypt_cbc' => - array ( - 'return' => 'string', - 'params' => 'int cipher, string key, string data, int mode, string iv', - 'description' => 'CBC crypt/decrypt data using key key with cipher cipher starting with iv', - ), - 'mcrypt_cfb' => - array ( - 'return' => 'string', - 'params' => 'int cipher, string key, string data, int mode, string iv', - 'description' => 'CFB crypt/decrypt data using key key with cipher cipher starting with iv', - ), - 'mcrypt_ofb' => - array ( - 'return' => 'string', - 'params' => 'int cipher, string key, string data, int mode, string iv', - 'description' => 'OFB crypt/decrypt data using key key with cipher cipher starting with iv', - ), - 'mcrypt_create_iv' => - array ( - 'return' => 'string', - 'params' => 'int size, int source', - 'description' => 'Create an initialization vector (IV)', - ), - 'readline' => - array ( - 'return' => 'string', - 'params' => '[string prompt]', - 'description' => 'Reads a line', - ), - 'readline_info' => - array ( - 'return' => 'mixed', - 'params' => '[string varname] [, string newvalue]', - 'description' => 'Gets/sets various internal readline variables.', - ), - 'readline_add_history' => - array ( - 'return' => 'bool', - 'params' => '[string prompt]', - 'description' => 'Adds a line to the history', - ), - 'readline_clear_history' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Clears the history', - ), - 'readline_list_history' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Lists the history', - ), - 'readline_read_history' => - array ( - 'return' => 'bool', - 'params' => '[string filename] [, int from] [,int to]', - 'description' => 'Reads the history', - ), - 'readline_write_history' => - array ( - 'return' => 'bool', - 'params' => '[string filename]', - 'description' => 'Writes the history', - ), - 'readline_completion_function' => - array ( - 'return' => 'bool', - 'params' => 'string funcname', - 'description' => 'Readline completion function?', - ), - 'readline_callback_handler_install' => - array ( - 'return' => 'void', - 'params' => 'string prompt, mixed callback', - 'description' => 'Initializes the readline callback interface and terminal, prints the prompt and returns immediately', - ), - 'readline_callback_read_char' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Informs the readline callback interface that a character is ready for input', - ), - 'readline_callback_handler_remove' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Removes a previously installed callback handler and restores terminal settings', - ), - 'readline_redisplay' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => 'Ask readline to redraw the display', - ), - 'readline_on_new_line' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => 'Inform readline that the cursor has moved to a new line', - ), - 'dbase_open' => - array ( - 'return' => 'int', - 'params' => 'string name, int mode', - 'description' => 'Opens a dBase-format database file', - ), - 'dbase_close' => - array ( - 'return' => 'bool', - 'params' => 'int identifier', - 'description' => 'Closes an open dBase-format database file', - ), - 'dbase_numrecords' => - array ( - 'return' => 'int', - 'params' => 'int identifier', - 'description' => 'Returns the number of records in the database', - ), - 'dbase_numfields' => - array ( - 'return' => 'int', - 'params' => 'int identifier', - 'description' => 'Returns the number of fields (columns) in the database', - ), - 'dbase_pack' => - array ( - 'return' => 'bool', - 'params' => 'int identifier', - 'description' => 'Packs the database (deletes records marked for deletion)', - ), - 'dbase_add_record' => - array ( - 'return' => 'bool', - 'params' => 'int identifier, array data', - 'description' => 'Adds a record to the database', - ), - 'dbase_replace_record' => - array ( - 'return' => 'bool', - 'params' => 'int identifier, array data, int recnum', - 'description' => 'Replaces a record to the database', - ), - 'dbase_delete_record' => - array ( - 'return' => 'bool', - 'params' => 'int identifier, int record', - 'description' => 'Marks a record to be deleted', - ), - 'dbase_get_record' => - array ( - 'return' => 'array', - 'params' => 'int identifier, int record', - 'description' => 'Returns an array representing a record from the database', - ), - 'dbase_get_record_with_names' => - array ( - 'return' => 'array', - 'params' => 'int identifier, int record', - 'description' => 'Returns an associative array representing a record from the database', - ), - 'dbase_create' => - array ( - 'return' => 'bool', - 'params' => 'string filename, array fields', - 'description' => 'Creates a new dBase-format database file', - ), - 'dbase_get_header_info' => - array ( - 'return' => 'array', - 'params' => 'int database_handle', - 'description' => '', - ), - 'ibase_add_user' => - array ( - 'return' => 'bool', - 'params' => 'resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]]', - 'description' => 'Add a user to security database', - ), - 'ibase_modify_user' => - array ( - 'return' => 'bool', - 'params' => 'resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]]', - 'description' => 'Modify a user in security database', - ), - 'ibase_delete_user' => - array ( - 'return' => 'bool', - 'params' => 'resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]]', - 'description' => 'Delete a user from security database', - ), - 'ibase_service_attach' => - array ( - 'return' => 'resource', - 'params' => 'string host, string dba_username, string dba_password', - 'description' => 'Connect to the service manager', - ), - 'ibase_service_detach' => - array ( - 'return' => 'bool', - 'params' => 'resource service_handle', - 'description' => 'Disconnect from the service manager', - ), - 'ibase_backup' => - array ( - 'return' => 'mixed', - 'params' => 'resource service_handle, string source_db, string dest_file [, int options [, bool verbose]]', - 'description' => 'Initiates a backup task in the service manager and returns immediately', - ), - 'ibase_restore' => - array ( - 'return' => 'mixed', - 'params' => 'resource service_handle, string source_file, string dest_db [, int options [, bool verbose]]', - 'description' => 'Initiates a restore task in the service manager and returns immediately', - ), - 'ibase_maintain_db' => - array ( - 'return' => 'bool', - 'params' => 'resource service_handle, string db, int action [, int argument]', - 'description' => 'Execute a maintenance command on the database server', - ), - 'ibase_db_info' => - array ( - 'return' => 'string', - 'params' => 'resource service_handle, string db, int action [, int argument]', - 'description' => 'Request statistics about a database', - ), - 'ibase_server_info' => - array ( - 'return' => 'string', - 'params' => 'resource service_handle, int action', - 'description' => 'Request information about a database server', - ), - 'ibase_errmsg' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Return error message', - ), - 'ibase_errcode' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Return error code', - ), - 'ibase_connect' => - array ( - 'return' => 'resource', - 'params' => 'string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]]', - 'description' => 'Open a connection to an InterBase database', - ), - 'ibase_pconnect' => - array ( - 'return' => 'resource', - 'params' => 'string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]]', - 'description' => 'Open a persistent connection to an InterBase database', - ), - 'ibase_close' => - array ( - 'return' => 'bool', - 'params' => '[resource link_identifier]', - 'description' => 'Close an InterBase connection', - ), - 'ibase_drop_db' => - array ( - 'return' => 'bool', - 'params' => '[resource link_identifier]', - 'description' => 'Drop an InterBase database', - ), - 'ibase_trans' => - array ( - 'return' => 'resource', - 'params' => '[int trans_args [, resource link_identifier [, ... ], int trans_args [, resource link_identifier [, ... ]] [, ...]]]', - 'description' => 'Start a transaction over one or several databases', - ), - 'ibase_commit' => - array ( - 'return' => 'bool', - 'params' => ' resource link_identifier ', - 'description' => 'Commit transaction', - ), - 'ibase_rollback' => - array ( - 'return' => 'bool', - 'params' => ' resource link_identifier ', - 'description' => 'Rollback transaction', - ), - 'ibase_commit_ret' => - array ( - 'return' => 'bool', - 'params' => ' resource link_identifier ', - 'description' => 'Commit transaction and retain the transaction context', - ), - 'ibase_rollback_ret' => - array ( - 'return' => 'bool', - 'params' => ' resource link_identifier ', - 'description' => 'Rollback transaction and retain the transaction context', - ), - 'ibase_gen_id' => - array ( - 'return' => 'int', - 'params' => 'string generator [, int increment [, resource link_identifier ]]', - 'description' => 'Increments the named generator and returns its new value', - ), - 'ibase_blob_create' => - array ( - 'return' => 'resource', - 'params' => '[resource link_identifier]', - 'description' => 'Create blob for adding data', - ), - 'ibase_blob_open' => - array ( - 'return' => 'resource', - 'params' => '[ resource link_identifier, ] string blob_id', - 'description' => 'Open blob for retrieving data parts', - ), - 'ibase_blob_add' => - array ( - 'return' => 'bool', - 'params' => 'resource blob_handle, string data', - 'description' => 'Add data into created blob', - ), - 'ibase_blob_get' => - array ( - 'return' => 'string', - 'params' => 'resource blob_handle, int len', - 'description' => 'Get len bytes data from open blob', - ), - 'ibase_blob_close' => - array ( - 'return' => 'string', - 'params' => 'resource blob_handle', - 'description' => 'Close blob', - ), - 'ibase_blob_cancel' => - array ( - 'return' => 'bool', - 'params' => 'resource blob_handle', - 'description' => 'Cancel creating blob', - ), - 'ibase_blob_info' => - array ( - 'return' => 'array', - 'params' => '[ resource link_identifier, ] string blob_id', - 'description' => 'Return blob length and other useful info', - ), - 'ibase_blob_echo' => - array ( - 'return' => 'bool', - 'params' => '[ resource link_identifier, ] string blob_id', - 'description' => 'Output blob contents to browser', - ), - 'ibase_blob_import' => - array ( - 'return' => 'string', - 'params' => '[ resource link_identifier, ] resource file', - 'description' => 'Create blob, copy file in it, and close it', - ), - 'ibase_query' => - array ( - 'return' => 'mixed', - 'params' => '[resource link_identifier, [ resource link_identifier, ]] string query [, mixed bind_arg [, mixed bind_arg [, ...]]]', - 'description' => 'Execute a query', - ), - 'ibase_affected_rows' => - array ( - 'return' => 'int', - 'params' => ' [ resource link_identifier ] ', - 'description' => 'Returns the number of rows affected by the previous INSERT, UPDATE or DELETE statement', - ), - 'ibase_num_rows' => - array ( - 'return' => 'int', - 'params' => ' resource result_identifier ', - 'description' => 'Return the number of rows that are available in a result', - ), - 'ibase_fetch_row' => - array ( - 'return' => 'array', - 'params' => 'resource result [, int fetch_flags]', - 'description' => 'Fetch a row from the results of a query', - ), - 'ibase_fetch_assoc' => - array ( - 'return' => 'array', - 'params' => 'resource result [, int fetch_flags]', - 'description' => 'Fetch a row from the results of a query', - ), - 'ibase_fetch_object' => - array ( - 'return' => 'object', - 'params' => 'resource result [, int fetch_flags]', - 'description' => 'Fetch a object from the results of a query', - ), - 'ibase_name_result' => - array ( - 'return' => 'bool', - 'params' => 'resource result, string name', - 'description' => 'Assign a name to a result for use with ... WHERE CURRENT OF statements', - ), - 'ibase_free_result' => - array ( - 'return' => 'bool', - 'params' => 'resource result', - 'description' => 'Free the memory used by a result', - ), - 'ibase_prepare' => - array ( - 'return' => 'resource', - 'params' => '[resource link_identifier, ] string query', - 'description' => 'Prepare a query for later execution', - ), - 'ibase_execute' => - array ( - 'return' => 'mixed', - 'params' => 'resource query [, mixed bind_arg [, mixed bind_arg [, ...]]]', - 'description' => 'Execute a previously prepared query', - ), - 'ibase_free_query' => - array ( - 'return' => 'bool', - 'params' => 'resource query', - 'description' => 'Free memory used by a query', - ), - 'ibase_num_fields' => - array ( - 'return' => 'int', - 'params' => 'resource query_result', - 'description' => 'Get the number of fields in result', - ), - 'ibase_field_info' => - array ( - 'return' => 'array', - 'params' => 'resource query_result, int field_number', - 'description' => 'Get information about a field', - ), - 'ibase_num_params' => - array ( - 'return' => 'int', - 'params' => 'resource query', - 'description' => 'Get the number of params in a prepared query', - ), - 'ibase_param_info' => - array ( - 'return' => 'array', - 'params' => 'resource query, int field_number', - 'description' => 'Get information about a parameter', - ), - 'ibase_wait_event' => - array ( - 'return' => 'string', - 'params' => '[resource link_identifier,] string event [, string event [, ...]]', - 'description' => 'Waits for any one of the passed Interbase events to be posted by the database, and returns its name', - ), - 'ibase_set_event_handler' => - array ( - 'return' => 'resource', - 'params' => '[resource link_identifier,] callback handler, string event [, string event [, ...]]', - 'description' => 'Register the callback for handling each of the named events', - ), - 'ibase_free_event_handler' => - array ( - 'return' => 'bool', - 'params' => 'resource event', - 'description' => 'Frees the event handler set by ibase_set_event_handler()', - ), - 'openssl_x509_export_to_file' => - array ( - 'return' => 'bool', - 'params' => 'mixed x509, string outfilename [, bool notext = true]', - 'description' => 'Exports a CERT to file or a var', - ), - 'openssl_x509_export' => - array ( - 'return' => 'bool', - 'params' => 'mixed x509, string &out [, bool notext = true]', - 'description' => 'Exports a CERT to file or a var', - ), - 'openssl_x509_check_private_key' => - array ( - 'return' => 'bool', - 'params' => 'mixed cert, mixed key', - 'description' => 'Checks if a private key corresponds to a CERT', - ), - 'openssl_x509_parse' => - array ( - 'return' => 'array', - 'params' => 'mixed x509 [, bool shortnames=true]', - 'description' => 'Returns an array of the fields/values of the CERT', - ), - 'openssl_x509_checkpurpose' => - array ( - 'return' => 'int', - 'params' => 'mixed x509cert, int purpose, array cainfo [, string untrustedfile]', - 'description' => 'Checks the CERT to see if it can be used for the purpose in purpose. cainfo holds information about trusted CAs', - ), - 'openssl_x509_read' => - array ( - 'return' => 'resource', - 'params' => 'mixed cert', - 'description' => 'Reads X.509 certificates', - ), - 'openssl_x509_free' => - array ( - 'return' => 'void', - 'params' => 'resource x509', - 'description' => 'Frees X.509 certificates', - ), - 'openssl_csr_export_to_file' => - array ( - 'return' => 'bool', - 'params' => 'resource csr, string outfilename [, bool notext=true]', - 'description' => 'Exports a CSR to file', - ), - 'openssl_csr_export' => - array ( - 'return' => 'bool', - 'params' => 'resource csr, string &out [, bool notext=true]', - 'description' => 'Exports a CSR to file or a var', - ), - 'openssl_csr_sign' => - array ( - 'return' => 'resource', - 'params' => 'mixed csr, mixed x509, mixed priv_key, long days [, array config_args [, long serial]]', - 'description' => 'Signs a cert with another CERT', - ), - 'openssl_csr_new' => - array ( - 'return' => 'bool', - 'params' => 'array dn, resource &privkey [, array configargs, array extraattribs]', - 'description' => 'Generates a privkey and CSR', - ), - 'openssl_pkey_new' => - array ( - 'return' => 'resource', - 'params' => '[array configargs]', - 'description' => 'Generates a new private key', - ), - 'openssl_pkey_export_to_file' => - array ( - 'return' => 'bool', - 'params' => 'mixed key, string outfilename [, string passphrase, array config_args', - 'description' => 'Gets an exportable representation of a key into a file', - ), - 'openssl_pkey_export' => - array ( - 'return' => 'bool', - 'params' => 'mixed key, &mixed out [, string passphrase [, array config_args]]', - 'description' => 'Gets an exportable representation of a key into a string or file', - ), - 'openssl_pkey_get_public' => - array ( - 'return' => 'int', - 'params' => 'mixed cert', - 'description' => 'Gets public key from X.509 certificate', - ), - 'openssl_pkey_free' => - array ( - 'return' => 'void', - 'params' => 'int key', - 'description' => 'Frees a key', - ), - 'openssl_pkey_get_private' => - array ( - 'return' => 'int', - 'params' => 'string key [, string passphrase]', - 'description' => 'Gets private keys', - ), - 'openssl_pkcs7_verify' => - array ( - 'return' => 'bool', - 'params' => 'string filename, long flags [, string signerscerts [, array cainfo [, string extracerts [, string content]]]]', - 'description' => 'Verifys that the data block is intact, the signer is who they say they are, and returns the CERTs of the signers', - ), - 'openssl_pkcs7_encrypt' => - array ( - 'return' => 'bool', - 'params' => 'string infile, string outfile, mixed recipcerts, array headers [, long flags [, long cipher]]', - 'description' => 'Encrypts the message in the file named infile with the certificates in recipcerts and output the result to the file named outfile', - ), - 'openssl_pkcs7_sign' => - array ( - 'return' => 'bool', - 'params' => 'string infile, string outfile, mixed signcert, mixed signkey, array headers [, long flags [, string extracertsfilename]]', - 'description' => 'Signs the MIME message in the file named infile with signcert/signkey and output the result to file name outfile. headers lists plain text headers to exclude from the signed portion of the message, and should include to, from and subject as a minimum', - ), - 'openssl_pkcs7_decrypt' => - array ( - 'return' => 'bool', - 'params' => 'string infilename, string outfilename, mixed recipcert [, mixed recipkey]', - 'description' => 'Decrypts the S/MIME message in the file name infilename and output the results to the file name outfilename. recipcert is a CERT for one of the recipients. recipkey specifies the private key matching recipcert, if recipcert does not include the key', - ), - 'openssl_private_encrypt' => - array ( - 'return' => 'bool', - 'params' => 'string data, string crypted, mixed key [, int padding]', - 'description' => 'Encrypts data with private key', - ), - 'openssl_private_decrypt' => - array ( - 'return' => 'bool', - 'params' => 'string data, string decrypted, mixed key [, int padding]', - 'description' => 'Decrypts data with private key', - ), - 'openssl_public_encrypt' => - array ( - 'return' => 'bool', - 'params' => 'string data, string crypted, mixed key [, int padding]', - 'description' => 'Encrypts data with public key', - ), - 'openssl_public_decrypt' => - array ( - 'return' => 'bool', - 'params' => 'string data, string crypted, resource key [, int padding]', - 'description' => 'Decrypts data with public key', - ), - 'openssl_error_string' => - array ( - 'return' => 'mixed', - 'params' => 'void', - 'description' => 'Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages', - ), - 'openssl_sign' => - array ( - 'return' => 'bool', - 'params' => 'string data, &string signature, mixed key', - 'description' => 'Signs data', - ), - 'openssl_verify' => - array ( - 'return' => 'int', - 'params' => 'string data, string signature, mixed key', - 'description' => 'Verifys data', - ), - 'openssl_seal' => - array ( - 'return' => 'int', - 'params' => 'string data, &string sealdata, &array ekeys, array pubkeys', - 'description' => 'Seals data', - ), - 'openssl_open' => - array ( - 'return' => 'bool', - 'params' => 'string data, &string opendata, string ekey, mixed privkey', - 'description' => 'Opens data', - ), - 'date' => - array ( - 'return' => 'string', - 'params' => 'string format [, long timestamp]', - 'description' => 'Format a local date/time', - ), - 'gmdate' => - array ( - 'return' => 'string', - 'params' => 'string format [, long timestamp]', - 'description' => 'Format a GMT date/time', - ), - 'idate' => - array ( - 'return' => 'int', - 'params' => 'string format [, int timestamp]', - 'description' => 'Format a local time/date as integer', - ), - 'strtotime' => - array ( - 'return' => 'int', - 'params' => 'string time [, int now ]', - 'description' => 'Convert string representation of date and time to a timestamp', - ), - 'mktime' => - array ( - 'return' => 'int', - 'params' => 'int hour, int min, int sec, int mon, int day, int year', - 'description' => 'Get UNIX timestamp for a date', - ), - 'gmmktime' => - array ( - 'return' => 'int', - 'params' => 'int hour, int min, int sec, int mon, int day, int year', - 'description' => 'Get UNIX timestamp for a GMT date', - ), - 'checkdate' => - array ( - 'return' => 'bool', - 'params' => 'int month, int day, int year', - 'description' => 'Returns true(1) if it is a valid date in gregorian calendar', - ), - 'strftime' => - array ( - 'return' => 'string', - 'params' => 'string format [, int timestamp]', - 'description' => 'Format a local time/date according to locale settings', - ), - 'gmstrftime' => - array ( - 'return' => 'string', - 'params' => 'string format [, int timestamp]', - 'description' => 'Format a GMT/UCT time/date according to locale settings', - ), - 'time' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Return current UNIX timestamp', - ), - 'localtime' => - array ( - 'return' => 'array', - 'params' => '[int timestamp [, bool associative_array]]', - 'description' => 'Returns the results of the C system call localtime as an associative array if the associative_array argument is set to 1 other wise it is a regular array', - ), - 'getdate' => - array ( - 'return' => 'array', - 'params' => '[int timestamp]', - 'description' => 'Get date/time information', - ), - 'date_default_timezone_set' => - array ( - 'return' => 'bool', - 'params' => 'string timezone_identifier', - 'description' => 'Sets the default timezone used by all date/time functions in a script', - ), - 'date_default_timezone_get' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Gets the default timezone used by all date/time functions in a script', - ), - 'date_sunrise' => - array ( - 'return' => 'mixed', - 'params' => 'mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]]', - 'description' => 'Returns time of sunrise for a given day and location', - ), - 'date_sunset' => - array ( - 'return' => 'mixed', - 'params' => 'mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]]', - 'description' => 'Returns time of sunset for a given day and location', - ), - 'date_sun_info' => - array ( - 'return' => 'array', - 'params' => 'long time, float latitude, float longitude', - 'description' => 'Returns an array with information about sun set/rise and twilight begin/end', - ), - 'wddx_serialize_value' => - array ( - 'return' => 'string', - 'params' => 'mixed var [, string comment]', - 'description' => 'Creates a new packet and serializes the given value', - ), - 'wddx_serialize_vars' => - array ( - 'return' => 'string', - 'params' => 'mixed var_name [, mixed ...]', - 'description' => 'Creates a new packet and serializes given variables into a struct', - ), - 'wddx_packet_start' => - array ( - 'return' => 'int', - 'params' => '[string comment]', - 'description' => 'Starts a WDDX packet with optional comment and returns the packet id', - ), - 'wddx_packet_end' => - array ( - 'return' => 'string', - 'params' => 'int packet_id', - 'description' => 'Ends specified WDDX packet and returns the string containing the packet', - ), - 'wddx_add_vars' => - array ( - 'return' => 'int', - 'params' => 'int packet_id, mixed var_names [, mixed ...]', - 'description' => 'Serializes given variables and adds them to packet given by packet_id', - ), - 'wddx_deserialize' => - array ( - 'return' => 'mixed', - 'params' => 'mixed packet', - 'description' => 'Deserializes given packet and returns a PHP value', - ), - 'gmp_init' => - array ( - 'return' => 'resource', - 'params' => 'mixed number [, int base]', - 'description' => 'Initializes GMP number', - ), - 'gmp_intval' => - array ( - 'return' => 'int', - 'params' => 'resource gmpnumber', - 'description' => 'Gets signed long value of GMP number', - ), - 'gmp_strval' => - array ( - 'return' => 'string', - 'params' => 'resource gmpnumber [, int base]', - 'description' => 'Gets string representation of GMP number', - ), - 'gmp_add' => - array ( - 'return' => 'resource', - 'params' => 'resource a, resource b', - 'description' => 'Add a and b', - ), - 'gmp_sub' => - array ( - 'return' => 'resource', - 'params' => 'resource a, resource b', - 'description' => 'Subtract b from a', - ), - 'gmp_mul' => - array ( - 'return' => 'resource', - 'params' => 'resource a, resource b', - 'description' => 'Multiply a and b', - ), - 'gmp_div_qr' => - array ( - 'return' => 'array', - 'params' => 'resource a, resource b [, int round]', - 'description' => 'Divide a by b, returns quotient and reminder', - ), - 'gmp_div_r' => - array ( - 'return' => 'resource', - 'params' => 'resource a, resource b [, int round]', - 'description' => 'Divide a by b, returns reminder only', - ), - 'gmp_div_q' => - array ( - 'return' => 'resource', - 'params' => 'resource a, resource b [, int round]', - 'description' => 'Divide a by b, returns quotient only', - ), - 'gmp_mod' => - array ( - 'return' => 'resource', - 'params' => 'resource a, resource b', - 'description' => 'Computes a modulo b', - ), - 'gmp_divexact' => - array ( - 'return' => 'resource', - 'params' => 'resource a, resource b', - 'description' => 'Divide a by b using exact division algorithm', - ), - 'gmp_neg' => - array ( - 'return' => 'resource', - 'params' => 'resource a', - 'description' => 'Negates a number', - ), - 'gmp_abs' => - array ( - 'return' => 'resource', - 'params' => 'resource a', - 'description' => 'Calculates absolute value', - ), - 'gmp_fact' => - array ( - 'return' => 'resource', - 'params' => 'int a', - 'description' => 'Calculates factorial function', - ), - 'gmp_pow' => - array ( - 'return' => 'resource', - 'params' => 'resource base, int exp', - 'description' => 'Raise base to power exp', - ), - 'gmp_powm' => - array ( - 'return' => 'resource', - 'params' => 'resource base, resource exp, resource mod', - 'description' => 'Raise base to power exp and take result modulo mod', - ), - 'gmp_sqrt' => - array ( - 'return' => 'resource', - 'params' => 'resource a', - 'description' => 'Takes integer part of square root of a', - ), - 'gmp_sqrtrem' => - array ( - 'return' => 'array', - 'params' => 'resource a', - 'description' => 'Square root with remainder', - ), - 'gmp_perfect_square' => - array ( - 'return' => 'bool', - 'params' => 'resource a', - 'description' => 'Checks if a is an exact square', - ), - 'gmp_prob_prime' => - array ( - 'return' => 'int', - 'params' => 'resource a[, int reps]', - 'description' => 'Checks if a is "probably prime"', - ), - 'gmp_gcd' => - array ( - 'return' => 'resource', - 'params' => 'resource a, resource b', - 'description' => 'Computes greatest common denominator (gcd) of a and b', - ), - 'gmp_gcdext' => - array ( - 'return' => 'array', - 'params' => 'resource a, resource b', - 'description' => 'Computes G, S, and T, such that AS + BT = G = `gcd\' (A, B)', - ), - 'gmp_invert' => - array ( - 'return' => 'resource', - 'params' => 'resource a, resource b', - 'description' => 'Computes the inverse of a modulo b', - ), - 'gmp_jacobi' => - array ( - 'return' => 'int', - 'params' => 'resource a, resource b', - 'description' => 'Computes Jacobi symbol', - ), - 'gmp_legendre' => - array ( - 'return' => 'int', - 'params' => 'resource a, resource b', - 'description' => 'Computes Legendre symbol', - ), - 'gmp_cmp' => - array ( - 'return' => 'int', - 'params' => 'resource a, resource b', - 'description' => 'Compares two numbers', - ), - 'gmp_sign' => - array ( - 'return' => 'int', - 'params' => 'resource a', - 'description' => 'Gets the sign of the number', - ), - 'gmp_random' => - array ( - 'return' => 'resource', - 'params' => '[int limiter]', - 'description' => 'Gets random number', - ), - 'gmp_and' => - array ( - 'return' => 'resource', - 'params' => 'resource a, resource b', - 'description' => 'Calculates logical AND of a and b', - ), - 'gmp_or' => - array ( - 'return' => 'resource', - 'params' => 'resource a, resource b', - 'description' => 'Calculates logical OR of a and b', - ), - 'gmp_com' => - array ( - 'return' => 'resource', - 'params' => 'resource a', - 'description' => 'Calculates one\'s complement of a', - ), - 'gmp_xor' => - array ( - 'return' => 'resource', - 'params' => 'resource a, resource b', - 'description' => 'Calculates logical exclusive OR of a and b', - ), - 'gmp_setbit' => - array ( - 'return' => 'void', - 'params' => 'resource &a, int index[, bool set_clear]', - 'description' => 'Sets or clear bit in a', - ), - 'gmp_clrbit' => - array ( - 'return' => 'void', - 'params' => 'resource &a, int index', - 'description' => 'Clears bit in a', - ), - 'gmp_popcount' => - array ( - 'return' => 'int', - 'params' => 'resource a', - 'description' => 'Calculates the population count of a', - ), - 'gmp_hamdist' => - array ( - 'return' => 'int', - 'params' => 'resource a, resource b', - 'description' => 'Calculates hamming distance between a and b', - ), - 'gmp_scan0' => - array ( - 'return' => 'int', - 'params' => 'resource a, int start', - 'description' => 'Finds first zero bit', - ), - 'gmp_scan1' => - array ( - 'return' => 'int', - 'params' => 'resource a, int start', - 'description' => 'Finds first non-zero bit', - ), - 'gd_info' => - array ( - 'return' => 'array', - 'params' => '', - 'description' => '', - ), - 'imageloadfont' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Load a new font', - ), - 'imagesetstyle' => - array ( - 'return' => 'bool', - 'params' => 'resource im, array styles', - 'description' => 'Set the line drawing styles for use with imageline and IMG_COLOR_STYLED.', - ), - 'imagecreatetruecolor' => - array ( - 'return' => 'resource', - 'params' => 'int x_size, int y_size', - 'description' => 'Create a new true color image', - ), - 'imageistruecolor' => - array ( - 'return' => 'bool', - 'params' => 'resource im', - 'description' => 'return true if the image uses truecolor', - ), - 'imagetruecolortopalette' => - array ( - 'return' => 'void', - 'params' => 'resource im, bool ditherFlag, int colorsWanted', - 'description' => 'Convert a true colour image to a palette based image with a number of colours, optionally using dithering.', - ), - 'imagecolormatch' => - array ( - 'return' => 'bool', - 'params' => 'resource im1, resource im2', - 'description' => 'Makes the colors of the palette version of an image more closely match the true color version', - ), - 'imagesetthickness' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int thickness', - 'description' => 'Set line thickness for drawing lines, ellipses, rectangles, polygons etc.', - ), - 'imagefilledellipse' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int cx, int cy, int w, int h, int color', - 'description' => 'Draw an ellipse', - ), - 'imagefilledarc' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int cx, int cy, int w, int h, int s, int e, int col, int style', - 'description' => 'Draw a filled partial ellipse', - ), - 'imagealphablending' => - array ( - 'return' => 'bool', - 'params' => 'resource im, bool on', - 'description' => 'Turn alpha blending mode on or off for the given image', - ), - 'imagesavealpha' => - array ( - 'return' => 'bool', - 'params' => 'resource im, bool on', - 'description' => 'Include alpha channel to a saved image', - ), - 'imagelayereffect' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int effect', - 'description' => 'Set the alpha blending flag to use the bundled libgd layering effects', - ), - 'imagecolorallocatealpha' => - array ( - 'return' => 'int', - 'params' => 'resource im, int red, int green, int blue, int alpha', - 'description' => 'Allocate a color with an alpha level. Works for true color and palette based images', - ), - 'imagecolorresolvealpha' => - array ( - 'return' => 'int', - 'params' => 'resource im, int red, int green, int blue, int alpha', - 'description' => 'Resolve/Allocate a colour with an alpha level. Works for true colour and palette based images', - ), - 'imagecolorclosestalpha' => - array ( - 'return' => 'int', - 'params' => 'resource im, int red, int green, int blue, int alpha', - 'description' => 'Find the closest matching colour with alpha transparency', - ), - 'imagecolorexactalpha' => - array ( - 'return' => 'int', - 'params' => 'resource im, int red, int green, int blue, int alpha', - 'description' => 'Find exact match for colour with transparency', - ), - 'imagecopyresampled' => - array ( - 'return' => 'bool', - 'params' => 'resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h', - 'description' => 'Copy and resize part of an image using resampling to help ensure clarity', - ), - 'imagerotate' => - array ( - 'return' => 'resource', - 'params' => 'resource src_im, float angle, int bgdcolor', - 'description' => 'Rotate an image using a custom angle', - ), - 'imagesettile' => - array ( - 'return' => 'bool', - 'params' => 'resource image, resource tile', - 'description' => 'Set the tile image to $tile when filling $image with the "IMG_COLOR_TILED" color', - ), - 'imagesetbrush' => - array ( - 'return' => 'bool', - 'params' => 'resource image, resource brush', - 'description' => 'Set the brush image to $brush when filling $image with the "IMG_COLOR_BRUSHED" color', - ), - 'imagecreate' => - array ( - 'return' => 'resource', - 'params' => 'int x_size, int y_size', - 'description' => 'Create a new image', - ), - 'imagetypes' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM', - ), - 'imagecreatefromstring' => - array ( - 'return' => 'resource', - 'params' => 'string image', - 'description' => 'Create a new image from the image stream in the string', - ), - 'imagecreatefromgif' => - array ( - 'return' => 'resource', - 'params' => 'string filename', - 'description' => 'Create a new image from GIF file or URL', - ), - 'imagecreatefromjpeg' => - array ( - 'return' => 'resource', - 'params' => 'string filename', - 'description' => 'Create a new image from JPEG file or URL', - ), - 'imagecreatefrompng' => - array ( - 'return' => 'resource', - 'params' => 'string filename', - 'description' => 'Create a new image from PNG file or URL', - ), - 'imagecreatefromxbm' => - array ( - 'return' => 'resource', - 'params' => 'string filename', - 'description' => 'Create a new image from XBM file or URL', - ), - 'imagecreatefromxpm' => - array ( - 'return' => 'resource', - 'params' => 'string filename', - 'description' => 'Create a new image from XPM file or URL', - ), - 'imagecreatefromwbmp' => - array ( - 'return' => 'resource', - 'params' => 'string filename', - 'description' => 'Create a new image from WBMP file or URL', - ), - 'imagecreatefromgd' => - array ( - 'return' => 'resource', - 'params' => 'string filename', - 'description' => 'Create a new image from GD file or URL', - ), - 'imagecreatefromgd2' => - array ( - 'return' => 'resource', - 'params' => 'string filename', - 'description' => 'Create a new image from GD2 file or URL', - ), - 'imagecreatefromgd2part' => - array ( - 'return' => 'resource', - 'params' => 'string filename, int srcX, int srcY, int width, int height', - 'description' => 'Create a new image from a given part of GD2 file or URL', - ), - 'imagexbm' => - array ( - 'return' => 'int', - 'params' => 'int im, string filename [, int foreground]', - 'description' => 'Output XBM image to browser or file', - ), - 'imagegif' => - array ( - 'return' => 'bool', - 'params' => 'resource im [, string filename]', - 'description' => 'Output GIF image to browser or file', - ), - 'imagepng' => - array ( - 'return' => 'bool', - 'params' => 'resource im [, string filename]', - 'description' => 'Output PNG image to browser or file', - ), - 'imagejpeg' => - array ( - 'return' => 'bool', - 'params' => 'resource im [, string filename [, int quality]]', - 'description' => 'Output JPEG image to browser or file', - ), - 'imagewbmp' => - array ( - 'return' => 'bool', - 'params' => 'resource im [, string filename, [, int foreground]]', - 'description' => 'Output WBMP image to browser or file', - ), - 'imagegd' => - array ( - 'return' => 'bool', - 'params' => 'resource im [, string filename]', - 'description' => 'Output GD image to browser or file', - ), - 'imagegd2' => - array ( - 'return' => 'bool', - 'params' => 'resource im [, string filename, [, int chunk_size, [, int type]]]', - 'description' => 'Output GD2 image to browser or file', - ), - 'imagedestroy' => - array ( - 'return' => 'bool', - 'params' => 'resource im', - 'description' => 'Destroy an image', - ), - 'imagecolorallocate' => - array ( - 'return' => 'int', - 'params' => 'resource im, int red, int green, int blue', - 'description' => 'Allocate a color for an image', - ), - 'imagepalettecopy' => - array ( - 'return' => 'void', - 'params' => 'resource dst, resource src', - 'description' => 'Copy the palette from the src image onto the dst image', - ), - 'imagecolorat' => - array ( - 'return' => 'int', - 'params' => 'resource im, int x, int y', - 'description' => 'Get the index of the color of a pixel', - ), - 'imagecolorclosest' => - array ( - 'return' => 'int', - 'params' => 'resource im, int red, int green, int blue', - 'description' => 'Get the index of the closest color to the specified color', - ), - 'imagecolorclosesthwb' => - array ( - 'return' => 'int', - 'params' => 'resource im, int red, int green, int blue', - 'description' => 'Get the index of the color which has the hue, white and blackness nearest to the given color', - ), - 'imagecolordeallocate' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int index', - 'description' => 'De-allocate a color for an image', - ), - 'imagecolorresolve' => - array ( - 'return' => 'int', - 'params' => 'resource im, int red, int green, int blue', - 'description' => 'Get the index of the specified color or its closest possible alternative', - ), - 'imagecolorexact' => - array ( - 'return' => 'int', - 'params' => 'resource im, int red, int green, int blue', - 'description' => 'Get the index of the specified color', - ), - 'imagecolorset' => - array ( - 'return' => 'void', - 'params' => 'resource im, int col, int red, int green, int blue', - 'description' => 'Set the color for the specified palette index', - ), - 'imagecolorsforindex' => - array ( - 'return' => 'array', - 'params' => 'resource im, int col', - 'description' => 'Get the colors for an index', - ), - 'imagegammacorrect' => - array ( - 'return' => 'bool', - 'params' => 'resource im, float inputgamma, float outputgamma', - 'description' => 'Apply a gamma correction to a GD image', - ), - 'imagesetpixel' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int x, int y, int col', - 'description' => 'Set a single pixel', - ), - 'imageline' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int x1, int y1, int x2, int y2, int col', - 'description' => 'Draw a line', - ), - 'imagedashedline' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int x1, int y1, int x2, int y2, int col', - 'description' => 'Draw a dashed line', - ), - 'imagerectangle' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int x1, int y1, int x2, int y2, int col', - 'description' => 'Draw a rectangle', - ), - 'imagefilledrectangle' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int x1, int y1, int x2, int y2, int col', - 'description' => 'Draw a filled rectangle', - ), - 'imagearc' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int cx, int cy, int w, int h, int s, int e, int col', - 'description' => 'Draw a partial ellipse', - ), - 'imageellipse' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int cx, int cy, int w, int h, int color', - 'description' => 'Draw an ellipse', - ), - 'imagefilltoborder' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int x, int y, int border, int col', - 'description' => 'Flood fill to specific color', - ), - 'imagefill' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int x, int y, int col', - 'description' => 'Flood fill', - ), - 'imagecolorstotal' => - array ( - 'return' => 'int', - 'params' => 'resource im', - 'description' => 'Find out the number of colors in an image\'s palette', - ), - 'imagecolortransparent' => - array ( - 'return' => 'int', - 'params' => 'resource im [, int col]', - 'description' => 'Define a color as transparent', - ), - 'imageinterlace' => - array ( - 'return' => 'int', - 'params' => 'resource im [, int interlace]', - 'description' => 'Enable or disable interlace', - ), - 'imagepolygon' => - array ( - 'return' => 'bool', - 'params' => 'resource im, array point, int num_points, int col', - 'description' => 'Draw a polygon', - ), - 'imagefilledpolygon' => - array ( - 'return' => 'bool', - 'params' => 'resource im, array point, int num_points, int col', - 'description' => 'Draw a filled polygon', - ), - 'imagefontwidth' => - array ( - 'return' => 'int', - 'params' => 'int font', - 'description' => 'Get font width', - ), - 'imagefontheight' => - array ( - 'return' => 'int', - 'params' => 'int font', - 'description' => 'Get font height', - ), - 'imagechar' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int font, int x, int y, string c, int col', - 'description' => 'Draw a character', - ), - 'imagecharup' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int font, int x, int y, string c, int col', - 'description' => 'Draw a character rotated 90 degrees counter-clockwise', - ), - 'imagestring' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int font, int x, int y, string str, int col', - 'description' => 'Draw a string horizontally', - ), - 'imagestringup' => - array ( - 'return' => 'bool', - 'params' => 'resource im, int font, int x, int y, string str, int col', - 'description' => 'Draw a string vertically - rotated 90 degrees counter-clockwise', - ), - 'imagecopy' => - array ( - 'return' => 'bool', - 'params' => 'resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h', - 'description' => 'Copy part of an image', - ), - 'imagecopymerge' => - array ( - 'return' => 'bool', - 'params' => 'resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct', - 'description' => 'Merge one part of an image with another', - ), - 'imagecopymergegray' => - array ( - 'return' => 'bool', - 'params' => 'resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct', - 'description' => 'Merge one part of an image with another', - ), - 'imagecopyresized' => - array ( - 'return' => 'bool', - 'params' => 'resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h', - 'description' => 'Copy and resize part of an image', - ), - 'imagesx' => - array ( - 'return' => 'int', - 'params' => 'resource im', - 'description' => 'Get image width', - ), - 'imagesy' => - array ( - 'return' => 'int', - 'params' => 'resource im', - 'description' => 'Get image height', - ), - 'imageftbbox' => - array ( - 'return' => 'array', - 'params' => 'float size, float angle, string font_file, string text [, array extrainfo]', - 'description' => 'Give the bounding box of a text using fonts via freetype2', - ), - 'imagefttext' => - array ( - 'return' => 'array', - 'params' => 'resource im, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo]', - 'description' => 'Write text to the image using fonts via freetype2', - ), - 'imagettfbbox' => - array ( - 'return' => 'array', - 'params' => 'float size, float angle, string font_file, string text', - 'description' => 'Give the bounding box of a text using TrueType fonts', - ), - 'imagettftext' => - array ( - 'return' => 'array', - 'params' => 'resource im, float size, float angle, int x, int y, int col, string font_file, string text', - 'description' => 'Write text to the image using a TrueType font', - ), - 'imagepsloadfont' => - array ( - 'return' => 'resource', - 'params' => 'string pathname', - 'description' => 'Load a new font from specified file', - ), - 'imagepscopyfont' => - array ( - 'return' => 'int', - 'params' => 'int font_index', - 'description' => 'Make a copy of a font for purposes like extending or reenconding', - ), - 'imagepsfreefont' => - array ( - 'return' => 'bool', - 'params' => 'resource font_index', - 'description' => 'Free memory used by a font', - ), - 'imagepsencodefont' => - array ( - 'return' => 'bool', - 'params' => 'resource font_index, string filename', - 'description' => 'To change a fonts character encoding vector', - ), - 'imagepsextendfont' => - array ( - 'return' => 'bool', - 'params' => 'resource font_index, float extend', - 'description' => 'Extend or or condense (if extend < 1) a font', - ), - 'imagepsslantfont' => - array ( - 'return' => 'bool', - 'params' => 'resource font_index, float slant', - 'description' => 'Slant a font', - ), - 'imagepstext' => - array ( - 'return' => 'array', - 'params' => 'resource image, string text, resource font, int size, int xcoord, int ycoord [, int space, int tightness, float angle, int antialias]', - 'description' => 'Rasterize a string over an image', - ), - 'imagepsbbox' => - array ( - 'return' => 'array', - 'params' => 'string text, resource font, int size [, int space, int tightness, int angle]', - 'description' => 'Return the bounding box needed by a string if rasterized', - ), - 'image2wbmp' => - array ( - 'return' => 'bool', - 'params' => 'resource im [, string filename [, int threshold]]', - 'description' => 'Output WBMP image to browser or file', - ), - 'imagefilter' => - array ( - 'return' => 'bool', - 'params' => 'resource src_im, int filtertype, [args] ', - 'description' => 'Applies Filter an image using a custom angle', - ), - 'imageconvolution' => - array ( - 'return' => 'resource', - 'params' => 'resource src_im, array matrix3x3, double div, double offset', - 'description' => 'Apply a 3x3 convolution matrix, using coefficient div and offset', - ), - 'imageantialias' => - array ( - 'return' => 'bool', - 'params' => 'resource im, bool on', - 'description' => 'Should antialiased functions used or not', - ), - 'recode_string' => - array ( - 'return' => 'string', - 'params' => 'string request, string str', - 'description' => 'Recode string str according to request string', - ), - 'recode_file' => - array ( - 'return' => 'bool', - 'params' => 'string request, resource input, resource output', - 'description' => 'Recode file input into file output according to request', - ), - 'posix_kill' => - array ( - 'return' => 'bool', - 'params' => 'int pid, int sig', - 'description' => 'Send a signal to a process (POSIX.1, 3.3.2)', - ), - 'posix_getpid' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get the current process id (POSIX.1, 4.1.1)', - ), - 'posix_getppid' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get the parent process id (POSIX.1, 4.1.1)', - ), - 'posix_getuid' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get the current user id (POSIX.1, 4.2.1)', - ), - 'posix_getgid' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get the current group id (POSIX.1, 4.2.1)', - ), - 'posix_geteuid' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get the current effective user id (POSIX.1, 4.2.1)', - ), - 'posix_getegid' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get the current effective group id (POSIX.1, 4.2.1)', - ), - 'posix_setuid' => - array ( - 'return' => 'bool', - 'params' => 'long uid', - 'description' => 'Set user id (POSIX.1, 4.2.2)', - ), - 'posix_setgid' => - array ( - 'return' => 'bool', - 'params' => 'int uid', - 'description' => 'Set group id (POSIX.1, 4.2.2)', - ), - 'posix_seteuid' => - array ( - 'return' => 'bool', - 'params' => 'long uid', - 'description' => 'Set effective user id', - ), - 'posix_setegid' => - array ( - 'return' => 'bool', - 'params' => 'long uid', - 'description' => 'Set effective group id', - ), - 'posix_getgroups' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Get supplementary group id\'s (POSIX.1, 4.2.3)', - ), - 'posix_getlogin' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Get user name (POSIX.1, 4.2.4)', - ), - 'posix_getpgrp' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get current process group id (POSIX.1, 4.3.1)', - ), - 'posix_setsid' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Create session and set process group id (POSIX.1, 4.3.2)', - ), - 'posix_setpgid' => - array ( - 'return' => 'bool', - 'params' => 'int pid, int pgid', - 'description' => 'Set process group id for job control (POSIX.1, 4.3.3)', - ), - 'posix_getpgid' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)', - ), - 'posix_getsid' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)', - ), - 'posix_uname' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Get system name (POSIX.1, 4.4.1)', - ), - 'posix_times' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Get process times (POSIX.1, 4.5.2)', - ), - 'posix_ctermid' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Generate terminal path name (POSIX.1, 4.7.1)', - ), - 'posix_ttyname' => - array ( - 'return' => 'string', - 'params' => 'int fd', - 'description' => 'Determine terminal device name (POSIX.1, 4.7.2)', - ), - 'posix_isatty' => - array ( - 'return' => 'bool', - 'params' => 'int fd', - 'description' => 'Determine if filedesc is a tty (POSIX.1, 4.7.1)', - ), - 'posix_getcwd' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Get working directory pathname (POSIX.1, 5.2.2)', - ), - 'posix_mkfifo' => - array ( - 'return' => 'bool', - 'params' => 'string pathname, int mode', - 'description' => 'Make a FIFO special file (POSIX.1, 5.4.2)', - ), - 'posix_mknod' => - array ( - 'return' => 'bool', - 'params' => 'string pathname, int mode [, int major [, int minor]]', - 'description' => 'Make a special or ordinary file (POSIX.1)', - ), - 'posix_access' => - array ( - 'return' => 'bool', - 'params' => 'string file [, int mode]', - 'description' => 'Determine accessibility of a file (POSIX.1 5.6.3)', - ), - 'posix_getgrnam' => - array ( - 'return' => 'array', - 'params' => 'string groupname', - 'description' => 'Group database access (POSIX.1, 9.2.1)', - ), - 'posix_getgrgid' => - array ( - 'return' => 'array', - 'params' => 'long gid', - 'description' => 'Group database access (POSIX.1, 9.2.1)', - ), - 'posix_getpwnam' => - array ( - 'return' => 'array', - 'params' => 'string groupname', - 'description' => 'User database access (POSIX.1, 9.2.2)', - ), - 'posix_getpwuid' => - array ( - 'return' => 'array', - 'params' => 'long uid', - 'description' => 'User database access (POSIX.1, 9.2.2)', - ), - 'posix_getrlimit' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)', - ), - 'posix_get_last_error' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Retrieve the error number set by the last posix function which failed.', - ), - 'posix_strerror' => - array ( - 'return' => 'string', - 'params' => 'int errno', - 'description' => 'Retrieve the system error message associated with the given errno.', - ), - 'curl_multi_init' => - array ( - 'return' => 'resource', - 'params' => 'void', - 'description' => 'Returns a new cURL multi handle', - ), - 'curl_multi_add_handle' => - array ( - 'return' => 'int', - 'params' => 'resource multi, resource ch', - 'description' => 'Add a normal cURL handle to a cURL multi handle', - ), - 'curl_multi_remove_handle' => - array ( - 'return' => 'int', - 'params' => 'resource mh, resource ch', - 'description' => 'Remove a multi handle from a set of cURL handles', - ), - 'curl_multi_select' => - array ( - 'return' => 'int', - 'params' => 'resource mh[, double timeout]', - 'description' => 'Get all the sockets associated with the cURL extension, which can then be "selected"', - ), - 'curl_multi_exec' => - array ( - 'return' => 'int', - 'params' => 'resource mh, int &still_running', - 'description' => 'Run the sub-connections of the current cURL handle', - ), - 'curl_multi_getcontent' => - array ( - 'return' => 'string', - 'params' => 'resource ch', - 'description' => 'Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set', - ), - 'curl_multi_info_read' => - array ( - 'return' => 'array', - 'params' => 'resource mh', - 'description' => 'Get information about the current transfers', - ), - 'curl_multi_close' => - array ( - 'return' => 'void', - 'params' => 'resource mh', - 'description' => 'Close a set of cURL handles', - ), - 'curl_version' => - array ( - 'return' => 'array', - 'params' => '[int version]', - 'description' => 'Return cURL version information.', - ), - 'curl_init' => - array ( - 'return' => 'resource', - 'params' => '[string url]', - 'description' => 'Initialize a CURL session', - ), - 'curl_copy_handle' => - array ( - 'return' => 'resource', - 'params' => 'resource ch', - 'description' => 'Copy a cURL handle along with all of it\'s preferences', - ), - 'curl_setopt' => - array ( - 'return' => 'bool', - 'params' => 'resource ch, int option, mixed value', - 'description' => 'Set an option for a CURL transfer', - ), - 'curl_setopt_array' => - array ( - 'return' => 'bool', - 'params' => 'resource ch, array options', - 'description' => 'Set an array of option for a CURL transfer', - ), - 'curl_exec' => - array ( - 'return' => 'bool', - 'params' => 'resource ch', - 'description' => 'Perform a CURL session', - ), - 'curl_getinfo' => - array ( - 'return' => 'mixed', - 'params' => 'resource ch, int opt', - 'description' => 'Get information regarding a specific transfer', - ), - 'curl_error' => - array ( - 'return' => 'string', - 'params' => 'resource ch', - 'description' => 'Return a string contain the last error for the current session', - ), - 'curl_errno' => - array ( - 'return' => 'int', - 'params' => 'resource ch', - 'description' => 'Return an integer containing the last error number', - ), - 'curl_close' => - array ( - 'return' => 'void', - 'params' => 'resource ch', - 'description' => 'Close a CURL session', - ), - 'ncurses_addch' => - array ( - 'return' => 'int', - 'params' => 'int ch', - 'description' => 'Adds character at current position and advance cursor', - ), - 'ncurses_waddch' => - array ( - 'return' => 'int', - 'params' => 'resource window, int ch', - 'description' => 'Adds character at current position in a window and advance cursor', - ), - 'ncurses_color_set' => - array ( - 'return' => 'int', - 'params' => 'int pair', - 'description' => 'Sets fore- and background color', - ), - 'ncurses_delwin' => - array ( - 'return' => 'bool', - 'params' => 'resource window', - 'description' => 'Deletes a ncurses window', - ), - 'ncurses_end' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Stops using ncurses, clean up the screen', - ), - 'ncurses_getch' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Reads a character from keyboard', - ), - 'ncurses_has_colors' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Checks if terminal has colors', - ), - 'ncurses_init' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Initializes ncurses', - ), - 'ncurses_init_pair' => - array ( - 'return' => 'int', - 'params' => 'int pair, int fg, int bg', - 'description' => 'Allocates a color pair', - ), - 'ncurses_move' => - array ( - 'return' => 'int', - 'params' => 'int y, int x', - 'description' => 'Moves output position', - ), - 'ncurses_newpad' => - array ( - 'return' => 'resource', - 'params' => 'int rows, int cols', - 'description' => 'Creates a new pad (window)', - ), - 'ncurses_prefresh' => - array ( - 'return' => 'int', - 'params' => 'resource pad, int pminrow, int pmincol, int sminrow, int smincol, int smaxrow, int smaxcol', - 'description' => 'Copys a region from a pad into the virtual screen', - ), - 'ncurses_pnoutrefresh' => - array ( - 'return' => 'int', - 'params' => 'resource pad, int pminrow, int pmincol, int sminrow, int smincol, int smaxrow, int smaxcol', - 'description' => 'Copys a region from a pad into the virtual screen', - ), - 'ncurses_newwin' => - array ( - 'return' => 'int', - 'params' => 'int rows, int cols, int y, int x', - 'description' => 'Creates a new window', - ), - 'ncurses_refresh' => - array ( - 'return' => 'int', - 'params' => 'int ch', - 'description' => 'Refresh screen', - ), - 'ncurses_start_color' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Starts using colors', - ), - 'ncurses_standout' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Starts using \'standout\' attribute', - ), - 'ncurses_standend' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Stops using \'standout\' attribute', - ), - 'ncurses_baudrate' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Returns baudrate of terminal', - ), - 'ncurses_beep' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Let the terminal beep', - ), - 'ncurses_can_change_color' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Checks if we can change terminals colors', - ), - 'ncurses_cbreak' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Switches of input buffering', - ), - 'ncurses_clear' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Clears screen', - ), - 'ncurses_clrtobot' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Clears screen from current position to bottom', - ), - 'ncurses_clrtoeol' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Clears screen from current position to end of line', - ), - 'ncurses_reset_prog_mode' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Resets the prog mode saved by def_prog_mode', - ), - 'ncurses_reset_shell_mode' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Resets the shell mode saved by def_shell_mode', - ), - 'ncurses_def_prog_mode' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Saves terminals (program) mode', - ), - 'ncurses_def_shell_mode' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Saves terminal (shell) mode', - ), - 'ncurses_delch' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Deletes character at current position, move rest of line left', - ), - 'ncurses_deleteln' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Deletes line at current position, move rest of screen up', - ), - 'ncurses_doupdate' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Writes all prepared refreshes to terminal', - ), - 'ncurses_echo' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Activates keyboard input echo', - ), - 'ncurses_erase' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Erases terminal screen', - ), - 'ncurses_erasechar' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Returns current erase character', - ), - 'ncurses_flash' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Flashes terminal screen (visual bell)', - ), - 'ncurses_flushinp' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Flushes keyboard input buffer', - ), - 'ncurses_has_ic' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Checks for insert- and delete-capabilities', - ), - 'ncurses_has_il' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Checks for line insert- and delete-capabilities', - ), - 'ncurses_inch' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Gets character and attribute at current position', - ), - 'ncurses_insertln' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Inserts a line, move rest of screen down', - ), - 'ncurses_isendwin' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Ncurses is in endwin mode, normal screen output may be performed', - ), - 'ncurses_killchar' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Returns current line kill character', - ), - 'ncurses_nl' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Translates newline and carriage return / line feed', - ), - 'ncurses_nocbreak' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Switches terminal to cooked mode', - ), - 'ncurses_noecho' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Switches off keyboard input echo', - ), - 'ncurses_nonl' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Do not ranslate newline and carriage return / line feed', - ), - 'ncurses_noraw' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Switches terminal out of raw mode', - ), - 'ncurses_raw' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Switches terminal into raw mode', - ), - 'ncurses_meta' => - array ( - 'return' => 'int', - 'params' => 'resource window, bool 8bit', - 'description' => 'Enables/Disable 8-bit meta key information', - ), - 'ncurses_werase' => - array ( - 'return' => 'int', - 'params' => 'resource window', - 'description' => 'Erase window contents', - ), - 'ncurses_resetty' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Restores saved terminal state', - ), - 'ncurses_savetty' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Saves terminal state', - ), - 'ncurses_termattrs' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Returns a logical OR of all attribute flags supported by terminal', - ), - 'ncurses_use_default_colors' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Assigns terminal default colors to color id -1', - ), - 'ncurses_slk_attr' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Returns current soft label keys attribute', - ), - 'ncurses_slk_clear' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Clears soft label keys from screen', - ), - 'ncurses_slk_noutrefresh' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Copies soft label keys to virtual screen', - ), - 'ncurses_slk_refresh' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Copies soft label keys to screen', - ), - 'ncurses_slk_restore' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Restores soft label keys', - ), - 'ncurses_slk_touch' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Forces output when ncurses_slk_noutrefresh is performed', - ), - 'ncurses_slk_set' => - array ( - 'return' => 'bool', - 'params' => 'int labelnr, string label, int format', - 'description' => 'Sets function key labels', - ), - 'ncurses_attroff' => - array ( - 'return' => 'int', - 'params' => 'int attributes', - 'description' => 'Turns off the given attributes', - ), - 'ncurses_attron' => - array ( - 'return' => 'int', - 'params' => 'int attributes', - 'description' => 'Turns on the given attributes', - ), - 'ncurses_attrset' => - array ( - 'return' => 'int', - 'params' => 'int attributes', - 'description' => 'Sets given attributes', - ), - 'ncurses_bkgd' => - array ( - 'return' => 'int', - 'params' => 'int attrchar', - 'description' => 'Sets background property for terminal screen', - ), - 'ncurses_curs_set' => - array ( - 'return' => 'int', - 'params' => 'int visibility', - 'description' => 'Sets cursor state', - ), - 'ncurses_delay_output' => - array ( - 'return' => 'int', - 'params' => 'int milliseconds', - 'description' => 'Delays output on terminal using padding characters', - ), - 'ncurses_echochar' => - array ( - 'return' => 'int', - 'params' => 'int character', - 'description' => 'Single character output including refresh', - ), - 'ncurses_halfdelay' => - array ( - 'return' => 'int', - 'params' => 'int tenth', - 'description' => 'Puts terminal into halfdelay mode', - ), - 'ncurses_has_key' => - array ( - 'return' => 'int', - 'params' => 'int keycode', - 'description' => 'Checks for presence of a function key on terminal keyboard', - ), - 'ncurses_insch' => - array ( - 'return' => 'int', - 'params' => 'int character', - 'description' => 'Inserts character moving rest of line including character at current position', - ), - 'ncurses_insdelln' => - array ( - 'return' => 'int', - 'params' => 'int count', - 'description' => 'Inserts lines before current line scrolling down (negative numbers delete and scroll up)', - ), - 'ncurses_mouseinterval' => - array ( - 'return' => 'int', - 'params' => 'int milliseconds', - 'description' => 'Sets timeout for mouse button clicks', - ), - 'ncurses_napms' => - array ( - 'return' => 'int', - 'params' => 'int milliseconds', - 'description' => 'Sleep', - ), - 'ncurses_scrl' => - array ( - 'return' => 'int', - 'params' => 'int count', - 'description' => 'Scrolls window content up or down without changing current position', - ), - 'ncurses_slk_attroff' => - array ( - 'return' => 'int', - 'params' => 'int intarg', - 'description' => '???', - ), - 'ncurses_slk_attron' => - array ( - 'return' => 'int', - 'params' => 'int intarg', - 'description' => '???', - ), - 'ncurses_slk_attrset' => - array ( - 'return' => 'int', - 'params' => 'int intarg', - 'description' => '???', - ), - 'ncurses_slk_color' => - array ( - 'return' => 'int', - 'params' => 'int intarg', - 'description' => 'Sets color for soft label keys', - ), - 'ncurses_slk_init' => - array ( - 'return' => 'int', - 'params' => 'int intarg', - 'description' => 'Inits soft label keys', - ), - 'ncurses_typeahead' => - array ( - 'return' => 'int', - 'params' => 'int fd', - 'description' => 'Specifys different filedescriptor for typeahead checking', - ), - 'ncurses_ungetch' => - array ( - 'return' => 'int', - 'params' => 'int keycode', - 'description' => 'Puts a character back into the input stream', - ), - 'ncurses_vidattr' => - array ( - 'return' => 'int', - 'params' => 'int intarg', - 'description' => '???', - ), - 'ncurses_use_extended_names' => - array ( - 'return' => 'int', - 'params' => 'bool flag', - 'description' => 'Controls use of extended names in terminfo descriptions', - ), - 'ncurses_bkgdset' => - array ( - 'return' => 'void', - 'params' => 'int attrchar', - 'description' => 'Controls screen background', - ), - 'ncurses_filter' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => '', - ), - 'ncurses_noqiflush' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Do not flush on signal characters', - ), - 'ncurses_qiflush' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => 'Flushes on signal characters', - ), - 'ncurses_timeout' => - array ( - 'return' => 'void', - 'params' => 'int millisec', - 'description' => 'Sets timeout for special key sequences', - ), - 'ncurses_use_env' => - array ( - 'return' => 'void', - 'params' => 'int flag', - 'description' => 'Controls use of environment information about terminal size', - ), - 'ncurses_addstr' => - array ( - 'return' => 'int', - 'params' => 'string text', - 'description' => 'Outputs text at current position', - ), - 'ncurses_putp' => - array ( - 'return' => 'int', - 'params' => 'string text', - 'description' => '???', - ), - 'ncurses_scr_dump' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Dumps screen content to file', - ), - 'ncurses_scr_init' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Initializes screen from file dump', - ), - 'ncurses_scr_restore' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Restores screen from file dump', - ), - 'ncurses_scr_set' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Inherits screen from file dump', - ), - 'ncurses_mvaddch' => - array ( - 'return' => 'int', - 'params' => 'int y, int x, int c', - 'description' => 'Moves current position and add character', - ), - 'ncurses_mvaddchnstr' => - array ( - 'return' => 'int', - 'params' => 'int y, int x, string s, int n', - 'description' => 'Moves position and add attrributed string with specified length', - ), - 'ncurses_addchnstr' => - array ( - 'return' => 'int', - 'params' => 'string s, int n', - 'description' => 'Adds attributed string with specified length at current position', - ), - 'ncurses_mvaddchstr' => - array ( - 'return' => 'int', - 'params' => 'int y, int x, string s', - 'description' => 'Moves position and add attributed string', - ), - 'ncurses_addchstr' => - array ( - 'return' => 'int', - 'params' => 'string s', - 'description' => 'Adds attributed string at current position', - ), - 'ncurses_mvaddnstr' => - array ( - 'return' => 'int', - 'params' => 'int y, int x, string s, int n', - 'description' => 'Moves position and add string with specified length', - ), - 'ncurses_addnstr' => - array ( - 'return' => 'int', - 'params' => 'string s, int n', - 'description' => 'Adds string with specified length at current position', - ), - 'ncurses_mvaddstr' => - array ( - 'return' => 'int', - 'params' => 'int y, int x, string s', - 'description' => 'Moves position and add string', - ), - 'ncurses_mvdelch' => - array ( - 'return' => 'int', - 'params' => 'int y, int x', - 'description' => 'Moves position and delete character, shift rest of line left', - ), - 'ncurses_mvgetch' => - array ( - 'return' => 'int', - 'params' => 'int y, int x', - 'description' => 'Moves position and get character at new position', - ), - 'ncurses_mvinch' => - array ( - 'return' => 'int', - 'params' => 'int y, int x', - 'description' => 'Moves position and get attributed character at new position', - ), - 'ncurses_insstr' => - array ( - 'return' => 'int', - 'params' => 'string text', - 'description' => 'Inserts string at current position, moving rest of line right', - ), - 'ncurses_instr' => - array ( - 'return' => 'int', - 'params' => 'string &buffer', - 'description' => 'Reads string from terminal screen', - ), - 'ncurses_mvhline' => - array ( - 'return' => 'int', - 'params' => 'int y, int x, int attrchar, int n', - 'description' => 'Sets new position and draw a horizontal line using an attributed character and max. n characters long', - ), - 'ncurses_mvvline' => - array ( - 'return' => 'int', - 'params' => 'int y, int x, int attrchar, int n', - 'description' => 'Sets new position and draw a vertical line using an attributed character and max. n characters long', - ), - 'ncurses_mvcur' => - array ( - 'return' => 'int', - 'params' => 'int old_y,int old_x, int new_y, int new_x', - 'description' => 'Moves cursor immediately', - ), - 'ncurses_init_color' => - array ( - 'return' => 'int', - 'params' => 'int color, int r, int g, int b', - 'description' => 'Sets new RGB value for color', - ), - 'ncurses_color_content' => - array ( - 'return' => 'int', - 'params' => 'int color, int &r, int &g, int &b', - 'description' => 'Gets the RGB value for color', - ), - 'ncurses_pair_content' => - array ( - 'return' => 'int', - 'params' => 'int pair, int &f, int &b', - 'description' => 'Gets the RGB value for color', - ), - 'ncurses_border' => - array ( - 'return' => 'int', - 'params' => 'int left, int right, int top, int bottom, int tl_corner, int tr_corner, int bl_corner, int br_corner', - 'description' => 'Draws a border around the screen using attributed characters', - ), - 'ncurses_wborder' => - array ( - 'return' => 'int', - 'params' => 'resource window, int left, int right, int top, int bottom, int tl_corner, int tr_corner, int bl_corner, int br_corner', - 'description' => 'Draws a border around the window using attributed characters', - ), - 'ncurses_assume_default_colors' => - array ( - 'return' => 'int', - 'params' => 'int fg, int bg', - 'description' => 'Defines default colors for color 0', - ), - 'ncurses_define_key' => - array ( - 'return' => 'int', - 'params' => 'string definition, int keycode', - 'description' => 'Defines a keycode', - ), - 'ncurses_hline' => - array ( - 'return' => 'int', - 'params' => 'int charattr, int n', - 'description' => 'Draws a horizontal line at current position using an attributed character and max. n characters long', - ), - 'ncurses_vline' => - array ( - 'return' => 'int', - 'params' => 'int charattr, int n', - 'description' => 'Draws a vertical line at current position using an attributed character and max. n characters long', - ), - 'ncurses_whline' => - array ( - 'return' => 'int', - 'params' => 'resource window, int charattr, int n', - 'description' => 'Draws a horizontal line in a window at current position using an attributed character and max. n characters long', - ), - 'ncurses_wvline' => - array ( - 'return' => 'int', - 'params' => 'resource window, int charattr, int n', - 'description' => 'Draws a vertical line in a window at current position using an attributed character and max. n characters long', - ), - 'ncurses_keyok' => - array ( - 'return' => 'int', - 'params' => 'int keycode, int enable', - 'description' => 'Enables or disable a keycode', - ), - 'ncurses_mvwaddstr' => - array ( - 'return' => 'int', - 'params' => 'resource window, int y, int x, string text', - 'description' => 'Adds string at new position in window', - ), - 'ncurses_wrefresh' => - array ( - 'return' => 'int', - 'params' => 'resource window', - 'description' => 'Refreshes window on terminal screen', - ), - 'ncurses_termname' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Returns terminal name', - ), - 'ncurses_longname' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Returns terminal description', - ), - 'ncurses_mousemask' => - array ( - 'return' => 'int', - 'params' => 'int newmask, int &oldmask', - 'description' => 'Returns and sets mouse options', - ), - 'ncurses_getmouse' => - array ( - 'return' => 'bool', - 'params' => 'array &mevent', - 'description' => 'Reads mouse event from queue. The content of mevent is cleared before new data is added.', - ), - 'ncurses_ungetmouse' => - array ( - 'return' => 'int', - 'params' => 'array mevent', - 'description' => 'Pushes mouse event to queue', - ), - 'ncurses_mouse_trafo' => - array ( - 'return' => 'bool', - 'params' => 'int &y, int &x, bool toscreen', - 'description' => 'Transforms coordinates', - ), - 'ncurses_wmouse_trafo' => - array ( - 'return' => 'bool', - 'params' => 'resource window, int &y, int &x, bool toscreen', - 'description' => 'Transforms window/stdscr coordinates', - ), - 'ncurses_getyx' => - array ( - 'return' => 'void', - 'params' => 'resource window, int &y, int &x', - 'description' => 'Returns the current cursor position for a window', - ), - 'ncurses_getmaxyx' => - array ( - 'return' => 'void', - 'params' => 'resource window, int &y, int &x', - 'description' => 'Returns the size of a window', - ), - 'ncurses_wmove' => - array ( - 'return' => 'int', - 'params' => 'resource window, int y, int x', - 'description' => 'Moves windows output position', - ), - 'ncurses_keypad' => - array ( - 'return' => 'int', - 'params' => 'resource window, bool bf', - 'description' => 'Turns keypad on or off', - ), - 'ncurses_wcolor_set' => - array ( - 'return' => 'int', - 'params' => 'resource window, int color_pair', - 'description' => 'Sets windows color pairings', - ), - 'ncurses_wclear' => - array ( - 'return' => 'int', - 'params' => 'resource window', - 'description' => 'Clears window', - ), - 'ncurses_wnoutrefresh' => - array ( - 'return' => 'int', - 'params' => 'resource window', - 'description' => 'Copies window to virtual screen', - ), - 'ncurses_waddstr' => - array ( - 'return' => 'int', - 'params' => 'resource window, string str [, int n]', - 'description' => 'Outputs text at current postion in window', - ), - 'ncurses_wgetch' => - array ( - 'return' => 'int', - 'params' => 'resource window', - 'description' => 'Reads a character from keyboard (window)', - ), - 'ncurses_wattroff' => - array ( - 'return' => 'int', - 'params' => 'resource window, int attrs', - 'description' => 'Turns off attributes for a window', - ), - 'ncurses_wattron' => - array ( - 'return' => 'int', - 'params' => 'resource window, int attrs', - 'description' => 'Turns on attributes for a window', - ), - 'ncurses_wattrset' => - array ( - 'return' => 'int', - 'params' => 'resource window, int attrs', - 'description' => 'Set the attributes for a window', - ), - 'ncurses_wstandend' => - array ( - 'return' => 'int', - 'params' => 'resource window', - 'description' => 'End standout mode for a window', - ), - 'ncurses_wstandout' => - array ( - 'return' => 'int', - 'params' => 'resource window', - 'description' => 'Enter standout mode for a window', - ), - 'ncurses_new_panel' => - array ( - 'return' => 'resource', - 'params' => 'resource window', - 'description' => 'Create a new panel and associate it with window', - ), - 'ncurses_del_panel' => - array ( - 'return' => 'bool', - 'params' => 'resource panel', - 'description' => 'Remove panel from the stack and delete it (but not the associated window)', - ), - 'ncurses_hide_panel' => - array ( - 'return' => 'int', - 'params' => 'resource panel', - 'description' => 'Remove panel from the stack, making it invisible', - ), - 'ncurses_show_panel' => - array ( - 'return' => 'int', - 'params' => 'resource panel', - 'description' => 'Places an invisible panel on top of the stack, making it visible', - ), - 'ncurses_top_panel' => - array ( - 'return' => 'int', - 'params' => 'resource panel', - 'description' => 'Moves a visible panel to the top of the stack', - ), - 'ncurses_bottom_panel' => - array ( - 'return' => 'int', - 'params' => 'resource panel', - 'description' => 'Moves a visible panel to the bottom of the stack', - ), - 'ncurses_move_panel' => - array ( - 'return' => 'int', - 'params' => 'resource panel, int startx, int starty', - 'description' => 'Moves a panel so that it\'s upper-left corner is at [startx, starty]', - ), - 'ncurses_replace_panel' => - array ( - 'return' => 'int', - 'params' => 'resource panel, resource window', - 'description' => 'Replaces the window associated with panel', - ), - 'ncurses_panel_above' => - array ( - 'return' => 'resource', - 'params' => 'resource panel', - 'description' => 'Returns the panel above panel. If panel is null, returns the bottom panel in the stack', - ), - 'ncurses_panel_below' => - array ( - 'return' => 'resource', - 'params' => 'resource panel', - 'description' => 'Returns the panel below panel. If panel is null, returns the top panel in the stack', - ), - 'ncurses_panel_window' => - array ( - 'return' => 'resource', - 'params' => 'resource panel', - 'description' => 'Returns the window associated with panel', - ), - 'ncurses_update_panels' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => 'Refreshes the virtual screen to reflect the relations between panels in the stack.', - ), - 'ftp_connect' => - array ( - 'return' => 'resource', - 'params' => 'string host [, int port [, int timeout]]', - 'description' => 'Opens a FTP stream', - ), - 'ftp_ssl_connect' => - array ( - 'return' => 'resource', - 'params' => 'string host [, int port [, int timeout]]', - 'description' => 'Opens a FTP-SSL stream', - ), - 'ftp_login' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, string username, string password', - 'description' => 'Logs into the FTP server', - ), - 'ftp_pwd' => - array ( - 'return' => 'string', - 'params' => 'resource stream', - 'description' => 'Returns the present working directory', - ), - 'ftp_cdup' => - array ( - 'return' => 'bool', - 'params' => 'resource stream', - 'description' => 'Changes to the parent directory', - ), - 'ftp_chdir' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, string directory', - 'description' => 'Changes directories', - ), - 'ftp_exec' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, string command', - 'description' => 'Requests execution of a program on the FTP server', - ), - 'ftp_raw' => - array ( - 'return' => 'array', - 'params' => 'resource stream, string command', - 'description' => 'Sends a literal command to the FTP server', - ), - 'ftp_mkdir' => - array ( - 'return' => 'string', - 'params' => 'resource stream, string directory', - 'description' => 'Creates a directory and returns the absolute path for the new directory or false on error', - ), - 'ftp_rmdir' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, string directory', - 'description' => 'Removes a directory', - ), - 'ftp_chmod' => - array ( - 'return' => 'int', - 'params' => 'resource stream, int mode, string filename', - 'description' => 'Sets permissions on a file', - ), - 'ftp_alloc' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, int size[, &response]', - 'description' => 'Attempt to allocate space on the remote FTP server', - ), - 'ftp_nlist' => - array ( - 'return' => 'array', - 'params' => 'resource stream, string directory', - 'description' => 'Returns an array of filenames in the given directory', - ), - 'ftp_rawlist' => - array ( - 'return' => 'array', - 'params' => 'resource stream, string directory [, bool recursive]', - 'description' => 'Returns a detailed listing of a directory as an array of output lines', - ), - 'ftp_systype' => - array ( - 'return' => 'string', - 'params' => 'resource stream', - 'description' => 'Returns the system type identifier', - ), - 'ftp_fget' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, resource fp, string remote_file, int mode[, int resumepos]', - 'description' => 'Retrieves a file from the FTP server and writes it to an open file', - ), - 'ftp_nb_fget' => - array ( - 'return' => 'int', - 'params' => 'resource stream, resource fp, string remote_file, int mode[, int resumepos]', - 'description' => 'Retrieves a file from the FTP server asynchronly and writes it to an open file', - ), - 'ftp_pasv' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, bool pasv', - 'description' => 'Turns passive mode on or off', - ), - 'ftp_get' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, string local_file, string remote_file, int mode[, int resume_pos]', - 'description' => 'Retrieves a file from the FTP server and writes it to a local file', - ), - 'ftp_nb_get' => - array ( - 'return' => 'int', - 'params' => 'resource stream, string local_file, string remote_file, int mode[, int resume_pos]', - 'description' => 'Retrieves a file from the FTP server nbhronly and writes it to a local file', - ), - 'ftp_nb_continue' => - array ( - 'return' => 'int', - 'params' => 'resource stream', - 'description' => 'Continues retrieving/sending a file nbronously', - ), - 'ftp_fput' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, string remote_file, resource fp, int mode[, int startpos]', - 'description' => 'Stores a file from an open file to the FTP server', - ), - 'ftp_nb_fput' => - array ( - 'return' => 'int', - 'params' => 'resource stream, string remote_file, resource fp, int mode[, int startpos]', - 'description' => 'Stores a file from an open file to the FTP server nbronly', - ), - 'ftp_put' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, string remote_file, string local_file, int mode[, int startpos]', - 'description' => 'Stores a file on the FTP server', - ), - 'ftp_nb_put' => - array ( - 'return' => 'int', - 'params' => 'resource stream, string remote_file, string local_file, int mode[, int startpos]', - 'description' => 'Stores a file on the FTP server', - ), - 'ftp_size' => - array ( - 'return' => 'int', - 'params' => 'resource stream, string filename', - 'description' => 'Returns the size of the file, or -1 on error', - ), - 'ftp_mdtm' => - array ( - 'return' => 'int', - 'params' => 'resource stream, string filename', - 'description' => 'Returns the last modification time of the file, or -1 on error', - ), - 'ftp_rename' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, string src, string dest', - 'description' => 'Renames the given file to a new path', - ), - 'ftp_delete' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, string file', - 'description' => 'Deletes a file', - ), - 'ftp_site' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, string cmd', - 'description' => 'Sends a SITE command to the server', - ), - 'ftp_close' => - array ( - 'return' => 'bool', - 'params' => 'resource stream', - 'description' => 'Closes the FTP stream', - ), - 'ftp_set_option' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, int option, mixed value', - 'description' => 'Sets an FTP option', - ), - 'ftp_get_option' => - array ( - 'return' => 'mixed', - 'params' => 'resource stream, int option', - 'description' => 'Gets an FTP option', - ), - 'birdstep_connect' => - array ( - 'return' => 'int', - 'params' => 'string server, string user, string pass', - 'description' => '', - ), - 'birdstep_close' => - array ( - 'return' => 'bool', - 'params' => 'int id', - 'description' => '', - ), - 'birdstep_exec' => - array ( - 'return' => 'int', - 'params' => 'int index, string exec_str', - 'description' => '', - ), - 'birdstep_fetch' => - array ( - 'return' => 'bool', - 'params' => 'int index', - 'description' => '', - ), - 'birdstep_result' => - array ( - 'return' => 'mixed', - 'params' => 'int index, int col', - 'description' => '', - ), - 'birdstep_freeresult' => - array ( - 'return' => 'bool', - 'params' => 'int index', - 'description' => '', - ), - 'birdstep_autocommit' => - array ( - 'return' => 'bool', - 'params' => 'int index', - 'description' => '', - ), - 'birdstep_off_autocommit' => - array ( - 'return' => 'bool', - 'params' => 'int index', - 'description' => '', - ), - 'birdstep_commit' => - array ( - 'return' => 'bool', - 'params' => 'int index', - 'description' => '', - ), - 'birdstep_rollback' => - array ( - 'return' => 'bool', - 'params' => 'int index', - 'description' => '', - ), - 'birdstep_fieldname' => - array ( - 'return' => 'string', - 'params' => 'int index, int col', - 'description' => '', - ), - 'birdstep_fieldnum' => - array ( - 'return' => 'int', - 'params' => 'int index', - 'description' => '', - ), - 'odbc_close_all' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => 'Close all ODBC connections', - ), - 'odbc_binmode' => - array ( - 'return' => 'bool', - 'params' => 'int result_id, int mode', - 'description' => 'Handle binary column data', - ), - 'odbc_longreadlen' => - array ( - 'return' => 'bool', - 'params' => 'int result_id, int length', - 'description' => 'Handle LONG columns', - ), - 'odbc_prepare' => - array ( - 'return' => 'resource', - 'params' => 'resource connection_id, string query', - 'description' => 'Prepares a statement for execution', - ), - 'odbc_execute' => - array ( - 'return' => 'bool', - 'params' => 'resource result_id [, array parameters_array]', - 'description' => 'Execute a prepared statement', - ), - 'odbc_cursor' => - array ( - 'return' => 'string', - 'params' => 'resource result_id', - 'description' => 'Get cursor name', - ), - 'odbc_data_source' => - array ( - 'return' => 'array', - 'params' => 'resource connection_id, int fetch_type', - 'description' => 'Return information about the currently connected data source', - ), - 'odbc_exec' => - array ( - 'return' => 'resource', - 'params' => 'resource connection_id, string query [, int flags]', - 'description' => 'Prepare and execute an SQL statement', - ), - 'odbc_fetch_object' => - array ( - 'return' => 'object', - 'params' => 'int result [, int rownumber]', - 'description' => 'Fetch a result row as an object', - ), - 'odbc_fetch_array' => - array ( - 'return' => 'array', - 'params' => 'int result [, int rownumber]', - 'description' => 'Fetch a result row as an associative array', - ), - 'odbc_fetch_into' => - array ( - 'return' => 'int', - 'params' => 'resource result_id, array result_array, [, int rownumber]', - 'description' => 'Fetch one result row into an array', - ), - 'solid_fetch_prev' => - array ( - 'return' => 'bool', - 'params' => 'resource result_id', - 'description' => '', - ), - 'odbc_fetch_row' => - array ( - 'return' => 'bool', - 'params' => 'resource result_id [, int row_number]', - 'description' => 'Fetch a row', - ), - 'odbc_result' => - array ( - 'return' => 'mixed', - 'params' => 'resource result_id, mixed field', - 'description' => 'Get result data', - ), - 'odbc_result_all' => - array ( - 'return' => 'int', - 'params' => 'resource result_id [, string format]', - 'description' => 'Print result as HTML table', - ), - 'odbc_free_result' => - array ( - 'return' => 'bool', - 'params' => 'resource result_id', - 'description' => 'Free resources associated with a result', - ), - 'odbc_connect' => - array ( - 'return' => 'resource', - 'params' => 'string DSN, string user, string password [, int cursor_option]', - 'description' => 'Connect to a datasource', - ), - 'odbc_pconnect' => - array ( - 'return' => 'resource', - 'params' => 'string DSN, string user, string password [, int cursor_option]', - 'description' => 'Establish a persistent connection to a datasource', - ), - 'odbc_close' => - array ( - 'return' => 'void', - 'params' => 'resource connection_id', - 'description' => 'Close an ODBC connection', - ), - 'odbc_num_rows' => - array ( - 'return' => 'int', - 'params' => 'resource result_id', - 'description' => 'Get number of rows in a result', - ), - 'odbc_next_result' => - array ( - 'return' => 'bool', - 'params' => 'resource result_id', - 'description' => 'Checks if multiple results are avaiable', - ), - 'odbc_num_fields' => - array ( - 'return' => 'int', - 'params' => 'resource result_id', - 'description' => 'Get number of columns in a result', - ), - 'odbc_field_name' => - array ( - 'return' => 'string', - 'params' => 'resource result_id, int field_number', - 'description' => 'Get a column name', - ), - 'odbc_field_type' => - array ( - 'return' => 'string', - 'params' => 'resource result_id, int field_number', - 'description' => 'Get the datatype of a column', - ), - 'odbc_field_len' => - array ( - 'return' => 'int', - 'params' => 'resource result_id, int field_number', - 'description' => 'Get the length (precision) of a column', - ), - 'odbc_field_scale' => - array ( - 'return' => 'int', - 'params' => 'resource result_id, int field_number', - 'description' => 'Get the scale of a column', - ), - 'odbc_field_num' => - array ( - 'return' => 'int', - 'params' => 'resource result_id, string field_name', - 'description' => 'Return column number', - ), - 'odbc_autocommit' => - array ( - 'return' => 'mixed', - 'params' => 'resource connection_id [, int OnOff]', - 'description' => 'Toggle autocommit mode or get status', - ), - 'odbc_commit' => - array ( - 'return' => 'bool', - 'params' => 'resource connection_id', - 'description' => 'Commit an ODBC transaction', - ), - 'odbc_rollback' => - array ( - 'return' => 'bool', - 'params' => 'resource connection_id', - 'description' => 'Rollback a transaction', - ), - 'odbc_error' => - array ( - 'return' => 'string', - 'params' => '[resource connection_id]', - 'description' => 'Get the last error code', - ), - 'odbc_errormsg' => - array ( - 'return' => 'string', - 'params' => '[resource connection_id]', - 'description' => 'Get the last error message', - ), - 'odbc_setoption' => - array ( - 'return' => 'bool', - 'params' => 'resource conn_id|result_id, int which, int option, int value', - 'description' => 'Sets connection or statement options', - ), - 'odbc_tables' => - array ( - 'return' => 'resource', - 'params' => 'resource connection_id [, string qualifier [, string owner [, string name [, string table_types]]]]', - 'description' => 'Call the SQLTables function', - ), - 'odbc_columns' => - array ( - 'return' => 'resource', - 'params' => 'resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]]', - 'description' => 'Returns a result identifier that can be used to fetch a list of column names in specified tables', - ), - 'odbc_columnprivileges' => - array ( - 'return' => 'resource', - 'params' => 'resource connection_id, string catalog, string schema, string table, string column', - 'description' => 'Returns a result identifier that can be used to fetch a list of columns and associated privileges for the specified table', - ), - 'odbc_foreignkeys' => - array ( - 'return' => 'resource', - 'params' => 'resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table', - 'description' => 'Returns a result identifier to either a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table', - ), - 'odbc_gettypeinfo' => - array ( - 'return' => 'resource', - 'params' => 'resource connection_id [, int data_type]', - 'description' => 'Returns a result identifier containing information about data types supported by the data source', - ), - 'odbc_primarykeys' => - array ( - 'return' => 'resource', - 'params' => 'resource connection_id, string qualifier, string owner, string table', - 'description' => 'Returns a result identifier listing the column names that comprise the primary key for a table', - ), - 'odbc_procedurecolumns' => - array ( - 'return' => 'resource', - 'params' => 'resource connection_id [, string qualifier, string owner, string proc, string column]', - 'description' => 'Returns a result identifier containing the list of input and output parameters, as well as the columns that make up the result set for the specified procedures', - ), - 'odbc_procedures' => - array ( - 'return' => 'resource', - 'params' => 'resource connection_id [, string qualifier, string owner, string name]', - 'description' => 'Returns a result identifier containg the list of procedure names in a datasource', - ), - 'odbc_specialcolumns' => - array ( - 'return' => 'resource', - 'params' => 'resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable', - 'description' => 'Returns a result identifier containing either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction', - ), - 'odbc_statistics' => - array ( - 'return' => 'resource', - 'params' => 'resource connection_id, string qualifier, string owner, string name, int unique, int accuracy', - 'description' => 'Returns a result identifier that contains statistics about a single table and the indexes associated with the table', - ), - 'odbc_tableprivileges' => - array ( - 'return' => 'resource', - 'params' => 'resource connection_id, string qualifier, string owner, string name', - 'description' => 'Returns a result identifier containing a list of tables and the privileges associated with each table', - ), - 'pspell_new' => - array ( - 'return' => 'int', - 'params' => 'string language [, string spelling [, string jargon [, string encoding [, int mode]]]]', - 'description' => 'Load a dictionary', - ), - 'pspell_new_personal' => - array ( - 'return' => 'int', - 'params' => 'string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]]', - 'description' => 'Load a dictionary with a personal wordlist', - ), - 'pspell_new_config' => - array ( - 'return' => 'int', - 'params' => 'int config', - 'description' => 'Load a dictionary based on the given config', - ), - 'pspell_check' => - array ( - 'return' => 'bool', - 'params' => 'int pspell, string word', - 'description' => 'Returns true if word is valid', - ), - 'pspell_suggest' => - array ( - 'return' => 'array', - 'params' => 'int pspell, string word', - 'description' => 'Returns array of suggestions', - ), - 'pspell_store_replacement' => - array ( - 'return' => 'bool', - 'params' => 'int pspell, string misspell, string correct', - 'description' => 'Notify the dictionary of a user-selected replacement', - ), - 'pspell_add_to_personal' => - array ( - 'return' => 'bool', - 'params' => 'int pspell, string word', - 'description' => 'Adds a word to a personal list', - ), - 'pspell_add_to_session' => - array ( - 'return' => 'bool', - 'params' => 'int pspell, string word', - 'description' => 'Adds a word to the current session', - ), - 'pspell_clear_session' => - array ( - 'return' => 'bool', - 'params' => 'int pspell', - 'description' => 'Clears the current session', - ), - 'pspell_save_wordlist' => - array ( - 'return' => 'bool', - 'params' => 'int pspell', - 'description' => 'Saves the current (personal) wordlist', - ), - 'pspell_config_create' => - array ( - 'return' => 'int', - 'params' => 'string language [, string spelling [, string jargon [, string encoding]]]', - 'description' => 'Create a new config to be used later to create a manager', - ), - 'pspell_config_runtogether' => - array ( - 'return' => 'bool', - 'params' => 'int conf, bool runtogether', - 'description' => 'Consider run-together words as valid components', - ), - 'pspell_config_mode' => - array ( - 'return' => 'bool', - 'params' => 'int conf, long mode', - 'description' => 'Select mode for config (PSPELL_FAST, PSPELL_NORMAL or PSPELL_BAD_SPELLERS)', - ), - 'pspell_config_ignore' => - array ( - 'return' => 'bool', - 'params' => 'int conf, int ignore', - 'description' => 'Ignore words <= n chars', - ), - 'pspell_config_personal' => - array ( - 'return' => 'bool', - 'params' => 'int conf, string personal', - 'description' => 'Use a personal dictionary for this config', - ), - 'pspell_config_dict_dir' => - array ( - 'return' => 'bool', - 'params' => 'int conf, string directory', - 'description' => 'location of the main word list', - ), - 'pspell_config_data_dir' => - array ( - 'return' => 'bool', - 'params' => 'int conf, string directory', - 'description' => 'location of language data files', - ), - 'pspell_config_repl' => - array ( - 'return' => 'bool', - 'params' => 'int conf, string repl', - 'description' => 'Use a personal dictionary with replacement pairs for this config', - ), - 'pspell_config_save_repl' => - array ( - 'return' => 'bool', - 'params' => 'int conf, bool save', - 'description' => 'Save replacement pairs when personal list is saved for this config', - ), - 'dl' => - array ( - 'return' => 'int', - 'params' => 'string extension_filename', - 'description' => 'Load a PHP extension at runtime', - ), - 'ftok' => - array ( - 'return' => 'int', - 'params' => 'string pathname, string proj', - 'description' => 'Convert a pathname and a project identifier to a System V IPC key', - ), - 'assert' => - array ( - 'return' => 'int', - 'params' => 'string|bool assertion', - 'description' => 'Checks if assertion is false', - ), - 'assert_options' => - array ( - 'return' => 'mixed', - 'params' => 'int what [, mixed value]', - 'description' => 'Set/get the various assert flags', - ), - 'sprintf' => - array ( - 'return' => 'string', - 'params' => 'string format [, mixed arg1 [, mixed ...]]', - 'description' => 'Return a formatted string', - ), - 'vsprintf' => - array ( - 'return' => 'string', - 'params' => 'string format, array args', - 'description' => 'Return a formatted string', - ), - 'printf' => - array ( - 'return' => 'int', - 'params' => 'string format [, mixed arg1 [, mixed ...]]', - 'description' => 'Output a formatted string', - ), - 'vprintf' => - array ( - 'return' => 'int', - 'params' => 'string format, array args', - 'description' => 'Output a formatted string', - ), - 'fprintf' => - array ( - 'return' => 'int', - 'params' => 'resource stream, string format [, mixed arg1 [, mixed ...]]', - 'description' => 'Output a formatted string into a stream', - ), - 'vfprintf' => - array ( - 'return' => 'int', - 'params' => 'resource stream, string format, array args', - 'description' => 'Output a formatted string into a stream', - ), - 'stream_socket_pair' => - array ( - 'return' => 'array', - 'params' => 'int domain, int type, int protocol', - 'description' => 'Creates a pair of connected, indistinguishable socket streams', - ), - 'stream_socket_client' => - array ( - 'return' => 'resource', - 'params' => 'string remoteaddress [, long &errcode, string &errstring, double timeout, long flags, resource context]', - 'description' => 'Open a client connection to a remote address', - ), - 'stream_socket_server' => - array ( - 'return' => 'resource', - 'params' => 'string localaddress [, long &errcode, string &errstring, long flags, resource context]', - 'description' => 'Create a server socket bound to localaddress', - ), - 'stream_socket_accept' => - array ( - 'return' => 'resource', - 'params' => 'resource serverstream, [ double timeout, string &peername ]', - 'description' => 'Accept a client connection from a server socket', - ), - 'stream_socket_get_name' => - array ( - 'return' => 'string', - 'params' => 'resource stream, bool want_peer', - 'description' => 'Returns either the locally bound or remote name for a socket stream', - ), - 'stream_socket_sendto' => - array ( - 'return' => 'long', - 'params' => 'resouce stream, string data [, long flags [, string target_addr]]', - 'description' => 'Send data to a socket stream. If target_addr is specified it must be in dotted quad (or [ipv6]) format', - ), - 'stream_socket_recvfrom' => - array ( - 'return' => 'string', - 'params' => 'resource stream, long amount [, long flags [, string &remote_addr]]', - 'description' => 'Receives data from a socket stream', - ), - 'stream_get_contents' => - array ( - 'return' => 'long', - 'params' => 'resource source [, long maxlen [, long offset]]', - 'description' => 'Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string.', - ), - 'stream_copy_to_stream' => - array ( - 'return' => 'long', - 'params' => 'resource source, resource dest [, long maxlen [, long pos]]', - 'description' => 'Reads up to maxlen bytes from source stream and writes them to dest stream.', - ), - 'stream_get_meta_data' => - array ( - 'return' => 'resource', - 'params' => 'resource fp', - 'description' => 'Retrieves header/meta data from streams/file pointers', - ), - 'stream_get_transports' => - array ( - 'return' => 'array', - 'params' => '', - 'description' => 'Retrieves list of registered socket transports', - ), - 'stream_get_wrappers' => - array ( - 'return' => 'array', - 'params' => '', - 'description' => 'Retrieves list of registered stream wrappers', - ), - 'stream_select' => - array ( - 'return' => 'int', - 'params' => 'array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec]', - 'description' => 'Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec', - ), - 'stream_context_get_options' => - array ( - 'return' => 'array', - 'params' => 'resource context|resource stream', - 'description' => 'Retrieve options for a stream/wrapper/context', - ), - 'stream_context_set_option' => - array ( - 'return' => 'bool', - 'params' => 'resource context|resource stream, string wrappername, string optionname, mixed value', - 'description' => 'Set an option for a wrapper', - ), - 'stream_context_set_params' => - array ( - 'return' => 'bool', - 'params' => 'resource context|resource stream, array options', - 'description' => 'Set parameters for a file context', - ), - 'stream_context_get_default' => - array ( - 'return' => 'resource', - 'params' => '[array options]', - 'description' => 'Get a handle on the default file/stream context and optionally set parameters', - ), - 'stream_context_create' => - array ( - 'return' => 'resource', - 'params' => '[array options]', - 'description' => 'Create a file context and optionally set parameters', - ), - 'stream_filter_prepend' => - array ( - 'return' => 'resource', - 'params' => 'resource stream, string filtername[, int read_write[, string filterparams]]', - 'description' => 'Prepend a filter to a stream', - ), - 'stream_filter_append' => - array ( - 'return' => 'resource', - 'params' => 'resource stream, string filtername[, int read_write[, string filterparams]]', - 'description' => 'Append a filter to a stream', - ), - 'stream_filter_remove' => - array ( - 'return' => 'bool', - 'params' => 'resource stream_filter', - 'description' => 'Flushes any data in the filter\'s internal buffer, removes it from the chain, and frees the resource', - ), - 'stream_get_line' => - array ( - 'return' => 'string', - 'params' => 'resource stream, int maxlen [, string ending]', - 'description' => 'Read up to maxlen bytes from a stream or until the ending string is found', - ), - 'stream_set_blocking' => - array ( - 'return' => 'bool', - 'params' => 'resource socket, int mode', - 'description' => 'Set blocking/non-blocking mode on a socket or stream', - ), - 'set_socket_blocking' => - array ( - 'return' => 'bool', - 'params' => 'resource socket, int mode', - 'description' => 'Set blocking/non-blocking mode on a socket', - ), - 'stream_set_timeout' => - array ( - 'return' => 'bool', - 'params' => 'resource stream, int seconds, int microseconds', - 'description' => 'Set timeout on stream read to seconds + microseonds', - ), - 'stream_set_write_buffer' => - array ( - 'return' => 'int', - 'params' => 'resource fp, int buffer', - 'description' => 'Set file write buffer', - ), - 'stream_socket_enable_crypto' => - array ( - 'return' => 'int', - 'params' => 'resource stream, bool enable [, int cryptokind, resource sessionstream]', - 'description' => 'Enable or disable a specific kind of crypto on the stream', - ), - 'proc_terminate' => - array ( - 'return' => 'int', - 'params' => 'resource process [, long signal]', - 'description' => 'kill a process opened by proc_open', - ), - 'proc_close' => - array ( - 'return' => 'int', - 'params' => 'resource process', - 'description' => 'close a process opened by proc_open', - ), - 'proc_get_status' => - array ( - 'return' => 'array', - 'params' => 'resource process', - 'description' => 'get information about a process opened by proc_open', - ), - 'proc_open' => - array ( - 'return' => 'resource', - 'params' => 'string command, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]]', - 'description' => 'Run a process with more control over it\'s file descriptors', - ), - 'opendir' => - array ( - 'return' => 'mixed', - 'params' => 'string path[, resource context]', - 'description' => 'Open a directory and return a dir_handle', - ), - 'dir' => - array ( - 'return' => 'object', - 'params' => 'string directory[, resource context]', - 'description' => 'Directory class with properties, handle and class and methods read, rewind and close', - ), - 'closedir' => - array ( - 'return' => 'void', - 'params' => '[resource dir_handle]', - 'description' => 'Close directory connection identified by the dir_handle', - ), - 'chroot' => - array ( - 'return' => 'bool', - 'params' => 'string directory', - 'description' => 'Change root directory', - ), - 'chdir' => - array ( - 'return' => 'bool', - 'params' => 'string directory', - 'description' => 'Change the current directory', - ), - 'getcwd' => - array ( - 'return' => 'mixed', - 'params' => 'void', - 'description' => 'Gets the current directory', - ), - 'rewinddir' => - array ( - 'return' => 'void', - 'params' => '[resource dir_handle]', - 'description' => 'Rewind dir_handle back to the start', - ), - 'readdir' => - array ( - 'return' => 'string', - 'params' => '[resource dir_handle]', - 'description' => 'Read directory entry from dir_handle', - ), - 'glob' => - array ( - 'return' => 'array', - 'params' => 'string pattern [, int flags]', - 'description' => 'Find pathnames matching a pattern', - ), - 'scandir' => - array ( - 'return' => 'array', - 'params' => 'string dir [, int sorting_order [, resource context]]', - 'description' => 'List files & directories inside the specified path', - ), - 'disk_total_space' => - array ( - 'return' => 'float', - 'params' => 'string path', - 'description' => 'Get total disk space for filesystem that path is on', - ), - 'disk_free_space' => - array ( - 'return' => 'float', - 'params' => 'string path', - 'description' => 'Get free disk space for filesystem that path is on', - ), - 'chgrp' => - array ( - 'return' => 'bool', - 'params' => 'string filename, mixed group', - 'description' => 'Change file group', - ), - 'lchgrp' => - array ( - 'return' => 'bool', - 'params' => 'string filename, mixed group', - 'description' => 'Change symlink group', - ), - 'chmod' => - array ( - 'return' => 'bool', - 'params' => 'string filename, int mode', - 'description' => 'Change file mode', - ), - 'touch' => - array ( - 'return' => 'bool', - 'params' => 'string filename [, int time [, int atime]]', - 'description' => 'Set modification time of file', - ), - 'clearstatcache' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => 'Clear file stat cache', - ), - 'fileperms' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Get file permissions', - ), - 'fileinode' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Get file inode', - ), - 'filesize' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Get file size', - ), - 'fileowner' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Get file owner', - ), - 'filegroup' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Get file group', - ), - 'fileatime' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Get last access time of file', - ), - 'filemtime' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Get last modification time of file', - ), - 'filectime' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Get inode modification time of file', - ), - 'filetype' => - array ( - 'return' => 'string', - 'params' => 'string filename', - 'description' => 'Get file type', - ), - 'is_writable' => - array ( - 'return' => 'bool', - 'params' => 'string filename', - 'description' => 'Returns true if file can be written', - ), - 'is_readable' => - array ( - 'return' => 'bool', - 'params' => 'string filename', - 'description' => 'Returns true if file can be read', - ), - 'is_executable' => - array ( - 'return' => 'bool', - 'params' => 'string filename', - 'description' => 'Returns true if file is executable', - ), - 'is_file' => - array ( - 'return' => 'bool', - 'params' => 'string filename', - 'description' => 'Returns true if file is a regular file', - ), - 'is_dir' => - array ( - 'return' => 'bool', - 'params' => 'string filename', - 'description' => 'Returns true if file is directory', - ), - 'is_link' => - array ( - 'return' => 'bool', - 'params' => 'string filename', - 'description' => 'Returns true if file is symbolic link', - ), - 'file_exists' => - array ( - 'return' => 'bool', - 'params' => 'string filename', - 'description' => 'Returns true if filename exists', - ), - 'lstat' => - array ( - 'return' => 'array', - 'params' => 'string filename', - 'description' => 'Give information about a file or symbolic link', - ), - 'stat' => - array ( - 'return' => 'array', - 'params' => 'string filename', - 'description' => 'Give information about a file', - ), - 'convert_cyr_string' => - array ( - 'return' => 'string', - 'params' => 'string str, string from, string to', - 'description' => 'Convert from one Cyrillic character set to another', - ), - 'krsort' => - array ( - 'return' => 'bool', - 'params' => 'array array_arg [, int sort_flags]', - 'description' => 'Sort an array by key value in reverse order', - ), - 'ksort' => - array ( - 'return' => 'bool', - 'params' => 'array array_arg [, int sort_flags]', - 'description' => 'Sort an array by key', - ), - 'count' => - array ( - 'return' => 'int', - 'params' => 'mixed var [, int mode]', - 'description' => 'Count the number of elements in a variable (usually an array)', - ), - 'natsort' => - array ( - 'return' => 'void', - 'params' => 'array array_arg', - 'description' => 'Sort an array using natural sort', - ), - 'natcasesort' => - array ( - 'return' => 'void', - 'params' => 'array array_arg', - 'description' => 'Sort an array using case-insensitive natural sort', - ), - 'asort' => - array ( - 'return' => 'bool', - 'params' => 'array array_arg [, int sort_flags]', - 'description' => 'Sort an array and maintain index association', - ), - 'arsort' => - array ( - 'return' => 'bool', - 'params' => 'array array_arg [, int sort_flags]', - 'description' => 'Sort an array in reverse order and maintain index association', - ), - 'sort' => - array ( - 'return' => 'bool', - 'params' => 'array array_arg [, int sort_flags]', - 'description' => 'Sort an array', - ), - 'rsort' => - array ( - 'return' => 'bool', - 'params' => 'array array_arg [, int sort_flags]', - 'description' => 'Sort an array in reverse order', - ), - 'usort' => - array ( - 'return' => 'bool', - 'params' => 'array array_arg, string cmp_function', - 'description' => 'Sort an array by values using a user-defined comparison function', - ), - 'uasort' => - array ( - 'return' => 'bool', - 'params' => 'array array_arg, string cmp_function', - 'description' => 'Sort an array with a user-defined comparison function and maintain index association', - ), - 'uksort' => - array ( - 'return' => 'bool', - 'params' => 'array array_arg, string cmp_function', - 'description' => 'Sort an array by keys using a user-defined comparison function', - ), - 'end' => - array ( - 'return' => 'mixed', - 'params' => 'array array_arg', - 'description' => 'Advances array argument\'s internal pointer to the last element and return it', - ), - 'prev' => - array ( - 'return' => 'mixed', - 'params' => 'array array_arg', - 'description' => 'Move array argument\'s internal pointer to the previous element and return it', - ), - 'next' => - array ( - 'return' => 'mixed', - 'params' => 'array array_arg', - 'description' => 'Move array argument\'s internal pointer to the next element and return it', - ), - 'reset' => - array ( - 'return' => 'mixed', - 'params' => 'array array_arg', - 'description' => 'Set array argument\'s internal pointer to the first element and return it', - ), - 'current' => - array ( - 'return' => 'mixed', - 'params' => 'array array_arg', - 'description' => 'Return the element currently pointed to by the internal array pointer', - ), - 'key' => - array ( - 'return' => 'mixed', - 'params' => 'array array_arg', - 'description' => 'Return the key of the element currently pointed to by the internal array pointer', - ), - 'min' => - array ( - 'return' => 'mixed', - 'params' => 'mixed arg1 [, mixed arg2 [, mixed ...]]', - 'description' => 'Return the lowest value in an array or a series of arguments', - ), - 'max' => - array ( - 'return' => 'mixed', - 'params' => 'mixed arg1 [, mixed arg2 [, mixed ...]]', - 'description' => 'Return the highest value in an array or a series of arguments', - ), - 'array_walk' => - array ( - 'return' => 'bool', - 'params' => 'array input, string funcname [, mixed userdata]', - 'description' => 'Apply a user function to every member of an array', - ), - 'array_walk_recursive' => - array ( - 'return' => 'bool', - 'params' => 'array input, string funcname [, mixed userdata]', - 'description' => 'Apply a user function recursively to every member of an array', - ), - 'in_array' => - array ( - 'return' => 'bool', - 'params' => 'mixed needle, array haystack [, bool strict]', - 'description' => 'Checks if the given value exists in the array', - ), - 'array_search' => - array ( - 'return' => 'mixed', - 'params' => 'mixed needle, array haystack [, bool strict]', - 'description' => 'Searches the array for a given value and returns the corresponding key if successful', - ), - 'extract' => - array ( - 'return' => 'int', - 'params' => 'array var_array [, int extract_type [, string prefix]]', - 'description' => 'Imports variables into symbol table from an array', - ), - 'compact' => - array ( - 'return' => 'array', - 'params' => 'mixed var_names [, mixed ...]', - 'description' => 'Creates a hash containing variables and their values', - ), - 'array_fill' => - array ( - 'return' => 'array', - 'params' => 'int start_key, int num, mixed val', - 'description' => 'Create an array containing num elements starting with index start_key each initialized to val', - ), - 'range' => - array ( - 'return' => 'array', - 'params' => 'mixed low, mixed high[, int step]', - 'description' => 'Create an array containing the range of integers or characters from low to high (inclusive)', - ), - 'shuffle' => - array ( - 'return' => 'bool', - 'params' => 'array array_arg', - 'description' => 'Randomly shuffle the contents of an array', - ), - 'array_push' => - array ( - 'return' => 'int', - 'params' => 'array stack, mixed var [, mixed ...]', - 'description' => 'Pushes elements onto the end of the array', - ), - 'array_pop' => - array ( - 'return' => 'mixed', - 'params' => 'array stack', - 'description' => 'Pops an element off the end of the array', - ), - 'array_shift' => - array ( - 'return' => 'mixed', - 'params' => 'array stack', - 'description' => 'Pops an element off the beginning of the array', - ), - 'array_unshift' => - array ( - 'return' => 'int', - 'params' => 'array stack, mixed var [, mixed ...]', - 'description' => 'Pushes elements onto the beginning of the array', - ), - 'array_splice' => - array ( - 'return' => 'array', - 'params' => 'array input, int offset [, int length [, array replacement]]', - 'description' => 'Removes the elements designated by offset and length and replace them with supplied array', - ), - 'array_slice' => - array ( - 'return' => 'array', - 'params' => 'array input, int offset [, int length]', - 'description' => 'Returns elements specified by offset and length', - ), - 'array_merge' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...]', - 'description' => 'Merges elements from passed arrays into one array', - ), - 'array_merge_recursive' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...]', - 'description' => 'Recursively merges elements from passed arrays into one array', - ), - 'array_keys' => - array ( - 'return' => 'array', - 'params' => 'array input [, mixed search_value[, bool strict]]', - 'description' => 'Return just the keys from the input array, optionally only for the specified search_value', - ), - 'array_values' => - array ( - 'return' => 'array', - 'params' => 'array input', - 'description' => 'Return just the values from the input array', - ), - 'array_count_values' => - array ( - 'return' => 'array', - 'params' => 'array input', - 'description' => 'Return the value as key and the frequency of that value in input as value', - ), - 'array_reverse' => - array ( - 'return' => 'array', - 'params' => 'array input [, bool preserve keys]', - 'description' => 'Return input as a new array with the order of the entries reversed', - ), - 'array_pad' => - array ( - 'return' => 'array', - 'params' => 'array input, int pad_size, mixed pad_value', - 'description' => 'Returns a copy of input array padded with pad_value to size pad_size', - ), - 'array_flip' => - array ( - 'return' => 'array', - 'params' => 'array input', - 'description' => 'Return array with key <-> value flipped', - ), - 'array_change_key_case' => - array ( - 'return' => 'array', - 'params' => 'array input [, int case=CASE_LOWER]', - 'description' => 'Retuns an array with all string keys lowercased [or uppercased]', - ), - 'array_unique' => - array ( - 'return' => 'array', - 'params' => 'array input', - 'description' => 'Removes duplicate values from array', - ), - 'array_intersect_key' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...]', - 'description' => 'Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). Equivalent of array_intersect_assoc() but does not do compare of the data.', - ), - 'array_intersect_ukey' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...], callback key_compare_func', - 'description' => 'Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). The comparison of the keys is performed by a user supplied function. Equivalent of array_intersect_uassoc() but does not do compare of the data.', - ), - 'array_intersect' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...]', - 'description' => 'Returns the entries of arr1 that have values which are present in all the other arguments', - ), - 'array_uintersect' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...], callback data_compare_func', - 'description' => 'Returns the entries of arr1 that have values which are present in all the other arguments. Data is compared by using an user-supplied callback.', - ), - 'array_intersect_assoc' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...]', - 'description' => 'Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check', - ), - 'array_uintersect_assoc' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...], callback data_compare_func', - 'description' => 'Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Data is compared by using an user-supplied callback.', - ), - 'array_intersect_uassoc' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...], callback key_compare_func', - 'description' => 'Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check and they are compared by using an user-supplied callback.', - ), - 'array_uintersect_uassoc' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...], callback data_compare_func, callback key_compare_func', - 'description' => 'Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Both data and keys are compared by using user-supplied callbacks.', - ), - 'array_diff_key' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...]', - 'description' => 'Returns the entries of arr1 that have keys which are not present in any of the others arguments. This function is like array_diff() but works on the keys instead of the values. The associativity is preserved.', - ), - 'array_diff_ukey' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...], callback key_comp_func', - 'description' => 'Returns the entries of arr1 that have keys which are not present in any of the others arguments. User supplied function is used for comparing the keys. This function is like array_udiff() but works on the keys instead of the values. The associativity is preserved.', - ), - 'array_diff' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...]', - 'description' => 'Returns the entries of arr1 that have values which are not present in any of the others arguments.', - ), - 'array_udiff' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...], callback data_comp_func', - 'description' => 'Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function.', - ), - 'array_diff_assoc' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...]', - 'description' => 'Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal', - ), - 'array_diff_uassoc' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...], callback data_comp_func', - 'description' => 'Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Elements are compared by user supplied function.', - ), - 'array_udiff_assoc' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...], callback key_comp_func', - 'description' => 'Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys are compared by user supplied function.', - ), - 'array_udiff_uassoc' => - array ( - 'return' => 'array', - 'params' => 'array arr1, array arr2 [, array ...], callback data_comp_func, callback key_comp_func', - 'description' => 'Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys and elements are compared by user supplied functions.', - ), - 'array_multisort' => - array ( - 'return' => 'bool', - 'params' => 'array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]', - 'description' => 'Sort multiple arrays at once similar to how ORDER BY clause works in SQL', - ), - 'array_rand' => - array ( - 'return' => 'mixed', - 'params' => 'array input [, int num_req]', - 'description' => 'Return key/keys for random entry/entries in the array', - ), - 'array_sum' => - array ( - 'return' => 'mixed', - 'params' => 'array input', - 'description' => 'Returns the sum of the array entries', - ), - 'array_product' => - array ( - 'return' => 'mixed', - 'params' => 'array input', - 'description' => 'Returns the product of the array entries', - ), - 'array_reduce' => - array ( - 'return' => 'mixed', - 'params' => 'array input, mixed callback [, int initial]', - 'description' => 'Iteratively reduce the array to a single value via the callback.', - ), - 'array_filter' => - array ( - 'return' => 'array', - 'params' => 'array input [, mixed callback]', - 'description' => 'Filters elements from the array via the callback.', - ), - 'array_map' => - array ( - 'return' => 'array', - 'params' => 'mixed callback, array input1 [, array input2 ,...]', - 'description' => 'Applies the callback to the elements in given arrays.', - ), - 'array_key_exists' => - array ( - 'return' => 'bool', - 'params' => 'mixed key, array search', - 'description' => 'Checks if the given key or index exists in the array', - ), - 'array_chunk' => - array ( - 'return' => 'array', - 'params' => 'array input, int size [, bool preserve_keys]', - 'description' => 'Split array into chunks', - ), - 'array_combine' => - array ( - 'return' => 'array', - 'params' => 'array keys, array values', - 'description' => 'Creates an array by using the elements of the first parameter as keys and the elements of the second as correspoding keys', - ), - 'soundex' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Calculate the soundex key of a string', - ), - 'strptime' => - array ( - 'return' => 'string', - 'params' => 'string timestamp, string format', - 'description' => 'Parse a time/date generated with strftime()', - ), - 'md5' => - array ( - 'return' => 'string', - 'params' => 'string str, [ bool raw_output]', - 'description' => 'Calculate the md5 hash of a string', - ), - 'md5_file' => - array ( - 'return' => 'string', - 'params' => 'string filename [, bool raw_output]', - 'description' => 'Calculate the md5 hash of given filename', - ), - 'header' => - array ( - 'return' => 'void', - 'params' => 'string header [, bool replace, [int http_response_code]]', - 'description' => 'Sends a raw HTTP header', - ), - 'setcookie' => - array ( - 'return' => 'bool', - 'params' => 'string name [, string value [, int expires [, string path [, string domain [, bool secure]]]]]', - 'description' => 'Send a cookie', - ), - 'setrawcookie' => - array ( - 'return' => 'bool', - 'params' => 'string name [, string value [, int expires [, string path [, string domain [, bool secure]]]]]', - 'description' => 'Send a cookie with no url encoding of the value', - ), - 'headers_sent' => - array ( - 'return' => 'bool', - 'params' => '[string &$file [, int &$line]]', - 'description' => 'Returns true if headers have already been sent, false otherwise', - ), - 'headers_list' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Return list of headers to be sent / already sent', - ), - 'crc32' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Calculate the crc32 polynomial of a string', - ), - 'abs' => - array ( - 'return' => 'int', - 'params' => 'int number', - 'description' => 'Return the absolute value of the number', - ), - 'ceil' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the next highest integer value of the number', - ), - 'floor' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the next lowest integer value from the number', - ), - 'round' => - array ( - 'return' => 'float', - 'params' => 'float number [, int precision]', - 'description' => 'Returns the number rounded to specified precision', - ), - 'sin' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the sine of the number in radians', - ), - 'cos' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the cosine of the number in radians', - ), - 'tan' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the tangent of the number in radians', - ), - 'asin' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the arc sine of the number in radians', - ), - 'acos' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Return the arc cosine of the number in radians', - ), - 'atan' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the arc tangent of the number in radians', - ), - 'atan2' => - array ( - 'return' => 'float', - 'params' => 'float y, float x', - 'description' => 'Returns the arc tangent of y/x, with the resulting quadrant determined by the signs of y and x', - ), - 'sinh' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the hyperbolic sine of the number, defined as (exp(number) - exp(-number))/2', - ), - 'cosh' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the hyperbolic cosine of the number, defined as (exp(number) + exp(-number))/2', - ), - 'tanh' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the hyperbolic tangent of the number, defined as sinh(number)/cosh(number)', - ), - 'asinh' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number', - ), - 'acosh' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number', - ), - 'atanh' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number', - ), - 'pi' => - array ( - 'return' => 'float', - 'params' => 'void', - 'description' => 'Returns an approximation of pi', - ), - 'is_finite' => - array ( - 'return' => 'bool', - 'params' => 'float val', - 'description' => 'Returns whether argument is finite', - ), - 'is_infinite' => - array ( - 'return' => 'bool', - 'params' => 'float val', - 'description' => 'Returns whether argument is infinite', - ), - 'is_nan' => - array ( - 'return' => 'bool', - 'params' => 'float val', - 'description' => 'Returns whether argument is not a number', - ), - 'pow' => - array ( - 'return' => 'number', - 'params' => 'number base, number exponent', - 'description' => 'Returns base raised to the power of exponent. Returns integer result when possible', - ), - 'exp' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns e raised to the power of the number', - ), - 'expm1' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero', - ), - 'log1p' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero', - ), - 'log' => - array ( - 'return' => 'float', - 'params' => 'float number, [float base]', - 'description' => 'Returns the natural logarithm of the number, or the base log if base is specified', - ), - 'log10' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the base-10 logarithm of the number', - ), - 'sqrt' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Returns the square root of the number', - ), - 'hypot' => - array ( - 'return' => 'float', - 'params' => 'float num1, float num2', - 'description' => 'Returns sqrt(num1*num1 + num2*num2)', - ), - 'deg2rad' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Converts the number in degrees to the radian equivalent', - ), - 'rad2deg' => - array ( - 'return' => 'float', - 'params' => 'float number', - 'description' => 'Converts the radian number to the equivalent number in degrees', - ), - 'bindec' => - array ( - 'return' => 'int', - 'params' => 'string binary_number', - 'description' => 'Returns the decimal equivalent of the binary number', - ), - 'hexdec' => - array ( - 'return' => 'int', - 'params' => 'string hexadecimal_number', - 'description' => 'Returns the decimal equivalent of the hexadecimal number', - ), - 'octdec' => - array ( - 'return' => 'int', - 'params' => 'string octal_number', - 'description' => 'Returns the decimal equivalent of an octal string', - ), - 'decbin' => - array ( - 'return' => 'string', - 'params' => 'int decimal_number', - 'description' => 'Returns a string containing a binary representation of the number', - ), - 'decoct' => - array ( - 'return' => 'string', - 'params' => 'int decimal_number', - 'description' => 'Returns a string containing an octal representation of the given number', - ), - 'dechex' => - array ( - 'return' => 'string', - 'params' => 'int decimal_number', - 'description' => 'Returns a string containing a hexadecimal representation of the given number', - ), - 'base_convert' => - array ( - 'return' => 'string', - 'params' => 'string number, int frombase, int tobase', - 'description' => 'Converts a number in a string from any base <= 36 to any base <= 36', - ), - 'number_format' => - array ( - 'return' => 'string', - 'params' => 'float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]]', - 'description' => 'Formats a number with grouped thousands', - ), - 'fmod' => - array ( - 'return' => 'float', - 'params' => 'float x, float y', - 'description' => 'Returns the remainder of dividing x by y as a float', - ), - 'gethostbyaddr' => - array ( - 'return' => 'string', - 'params' => 'string ip_address', - 'description' => 'Get the Internet host name corresponding to a given IP address', - ), - 'gethostbyname' => - array ( - 'return' => 'string', - 'params' => 'string hostname', - 'description' => 'Get the IP address corresponding to a given Internet host name', - ), - 'gethostbynamel' => - array ( - 'return' => 'array', - 'params' => 'string hostname', - 'description' => 'Return a list of IP addresses that a given hostname resolves to.', - ), - 'dns_check_record' => - array ( - 'return' => 'int', - 'params' => 'string host [, string type]', - 'description' => 'Check DNS records corresponding to a given Internet host name or IP address', - ), - 'dns_get_record' => - array ( - 'return' => 'array|false', - 'params' => 'string hostname [, int type[, array authns, array addtl]]', - 'description' => 'Get any Resource Record corresponding to a given Internet host name', - ), - 'dns_get_mx' => - array ( - 'return' => 'bool', - 'params' => 'string hostname, array mxhosts [, array weight]', - 'description' => 'Get MX records corresponding to a given Internet host name', - ), - 'bin2hex' => - array ( - 'return' => 'string', - 'params' => 'string data', - 'description' => 'Converts the binary representation of data to hex', - ), - 'strspn' => - array ( - 'return' => 'int', - 'params' => 'string str, string mask [, start [, len]]', - 'description' => 'Finds length of initial segment consisting entirely of characters found in mask. If start or/and length is provided works like strspn(substr($s,$start,$len),$good_chars)', - ), - 'strcspn' => - array ( - 'return' => 'int', - 'params' => 'string str, string mask [, start [, len]]', - 'description' => 'Finds length of initial segment consisting entirely of characters not found in mask. If start or/and length is provide works like strcspn(substr($s,$start,$len),$bad_chars)', - ), - 'nl_langinfo' => - array ( - 'return' => 'string', - 'params' => 'int item', - 'description' => 'Query language and locale information', - ), - 'strcoll' => - array ( - 'return' => 'int', - 'params' => 'string str1, string str2', - 'description' => 'Compares two strings using the current locale', - ), - 'trim' => - array ( - 'return' => 'string', - 'params' => 'string str [, string character_mask]', - 'description' => 'Strips whitespace from the beginning and end of a string', - ), - 'rtrim' => - array ( - 'return' => 'string', - 'params' => 'string str [, string character_mask]', - 'description' => 'Removes trailing whitespace', - ), - 'ltrim' => - array ( - 'return' => 'string', - 'params' => 'string str [, string character_mask]', - 'description' => 'Strips whitespace from the beginning of a string', - ), - 'wordwrap' => - array ( - 'return' => 'string', - 'params' => 'string str [, int width [, string break [, boolean cut]]]', - 'description' => 'Wraps buffer to selected number of characters using string break char', - ), - 'explode' => - array ( - 'return' => 'array', - 'params' => 'string separator, string str [, int limit]', - 'description' => 'Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned.', - ), - 'join' => - array ( - 'return' => 'string', - 'params' => 'array src, string glue', - 'description' => 'An alias for implode', - ), - 'implode' => - array ( - 'return' => 'string', - 'params' => '[string glue,] array pieces', - 'description' => 'Joins array elements placing glue string between items and return one string', - ), - 'strtok' => - array ( - 'return' => 'string', - 'params' => '[string str,] string token', - 'description' => 'Tokenize a string', - ), - 'strtoupper' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Makes a string uppercase', - ), - 'strtolower' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Makes a string lowercase', - ), - 'basename' => - array ( - 'return' => 'string', - 'params' => 'string path [, string suffix]', - 'description' => 'Returns the filename component of the path', - ), - 'dirname' => - array ( - 'return' => 'string', - 'params' => 'string path', - 'description' => 'Returns the directory name component of the path', - ), - 'pathinfo' => - array ( - 'return' => 'array', - 'params' => 'string path', - 'description' => 'Returns information about a certain string', - ), - 'stristr' => - array ( - 'return' => 'string', - 'params' => 'string haystack, string needle', - 'description' => 'Finds first occurrence of a string within another, case insensitive', - ), - 'strstr' => - array ( - 'return' => 'string', - 'params' => 'string haystack, string needle', - 'description' => 'Finds first occurrence of a string within another', - ), - 'strchr' => - array ( - 'return' => 'string', - 'params' => 'string haystack, string needle', - 'description' => 'An alias for strstr', - ), - 'strpos' => - array ( - 'return' => 'int', - 'params' => 'string haystack, string needle [, int offset]', - 'description' => 'Finds position of first occurrence of a string within another', - ), - 'stripos' => - array ( - 'return' => 'int', - 'params' => 'string haystack, string needle [, int offset]', - 'description' => 'Finds position of first occurrence of a string within another, case insensitive', - ), - 'strrpos' => - array ( - 'return' => 'int', - 'params' => 'string haystack, string needle [, int offset]', - 'description' => 'Finds position of last occurrence of a string within another string', - ), - 'strripos' => - array ( - 'return' => 'int', - 'params' => 'string haystack, string needle [, int offset]', - 'description' => 'Finds position of last occurrence of a string within another string', - ), - 'strrchr' => - array ( - 'return' => 'string', - 'params' => 'string haystack, string needle', - 'description' => 'Finds the last occurrence of a character in a string within another', - ), - 'chunk_split' => - array ( - 'return' => 'string', - 'params' => 'string str [, int chunklen [, string ending]]', - 'description' => 'Returns split line', - ), - 'substr' => - array ( - 'return' => 'string', - 'params' => 'string str, int start [, int length]', - 'description' => 'Returns part of a string', - ), - 'substr_replace' => - array ( - 'return' => 'mixed', - 'params' => 'mixed str, mixed repl, mixed start [, mixed length]', - 'description' => 'Replaces part of a string with another string', - ), - 'quotemeta' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Quotes meta characters', - ), - 'ord' => - array ( - 'return' => 'int', - 'params' => 'string character', - 'description' => 'Returns ASCII value of character', - ), - 'chr' => - array ( - 'return' => 'string', - 'params' => 'int ascii', - 'description' => 'Converts ASCII code to a character', - ), - 'ucfirst' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Makes a string\'s first character uppercase', - ), - 'ucwords' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Uppercase the first character of every word in a string', - ), - 'strtr' => - array ( - 'return' => 'string', - 'params' => 'string str, string from, string to', - 'description' => 'Translates characters in str using given translation tables', - ), - 'strrev' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Reverse a string', - ), - 'similar_text' => - array ( - 'return' => 'int', - 'params' => 'string str1, string str2 [, float percent]', - 'description' => 'Calculates the similarity between two strings', - ), - 'addcslashes' => - array ( - 'return' => 'string', - 'params' => 'string str, string charlist', - 'description' => 'Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except \'\\n\', \'\\r\', \'\\t\' etc...)', - ), - 'addslashes' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Escapes single quote, double quotes and backslash characters in a string with backslashes', - ), - 'stripcslashes' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Strips backslashes from a string. Uses C-style conventions', - ), - 'stripslashes' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Strips backslashes from a string', - ), - 'str_replace' => - array ( - 'return' => 'mixed', - 'params' => 'mixed search, mixed replace, mixed subject [, int &replace_count]', - 'description' => 'Replaces all occurrences of search in haystack with replace', - ), - 'str_ireplace' => - array ( - 'return' => 'mixed', - 'params' => 'mixed search, mixed replace, mixed subject [, int &replace_count]', - 'description' => 'Replaces all occurrences of search in haystack with replace / case-insensitive', - ), - 'hebrev' => - array ( - 'return' => 'string', - 'params' => 'string str [, int max_chars_per_line]', - 'description' => 'Converts logical Hebrew text to visual text', - ), - 'hebrevc' => - array ( - 'return' => 'string', - 'params' => 'string str [, int max_chars_per_line]', - 'description' => 'Converts logical Hebrew text to visual text with newline conversion', - ), - 'nl2br' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Converts newlines to HTML line breaks', - ), - 'strip_tags' => - array ( - 'return' => 'string', - 'params' => 'string str [, string allowable_tags]', - 'description' => 'Strips HTML and PHP tags from a string', - ), - 'setlocale' => - array ( - 'return' => 'string', - 'params' => 'mixed category, string locale [, string ...]', - 'description' => 'Set locale information', - ), - 'parse_str' => - array ( - 'return' => 'void', - 'params' => 'string encoded_string [, array result]', - 'description' => 'Parses GET/POST/COOKIE data and sets global variables', - ), - 'str_repeat' => - array ( - 'return' => 'string', - 'params' => 'string input, int mult', - 'description' => 'Returns the input string repeat mult times', - ), - 'count_chars' => - array ( - 'return' => 'mixed', - 'params' => 'string input [, int mode]', - 'description' => 'Returns info about what characters are used in input', - ), - 'strnatcmp' => - array ( - 'return' => 'int', - 'params' => 'string s1, string s2', - 'description' => 'Returns the result of string comparison using \'natural\' algorithm', - ), - 'localeconv' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Returns numeric formatting information based on the current locale', - ), - 'strnatcasecmp' => - array ( - 'return' => 'int', - 'params' => 'string s1, string s2', - 'description' => 'Returns the result of case-insensitive string comparison using \'natural\' algorithm', - ), - 'substr_count' => - array ( - 'return' => 'int', - 'params' => 'string haystack, string needle [, int offset [, int length]]', - 'description' => 'Returns the number of times a substring occurs in the string', - ), - 'str_pad' => - array ( - 'return' => 'string', - 'params' => 'string input, int pad_length [, string pad_string [, int pad_type]]', - 'description' => 'Returns input string padded on the left or right to specified length with pad_string', - ), - 'sscanf' => - array ( - 'return' => 'mixed', - 'params' => 'string str, string format [, string ...]', - 'description' => 'Implements an ANSI C compatible sscanf', - ), - 'str_rot13' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Perform the rot13 transform on a string', - ), - 'str_shuffle' => - array ( - 'return' => 'void', - 'params' => 'string str', - 'description' => 'Shuffles string. One permutation of all possible is created', - ), - 'str_word_count' => - array ( - 'return' => 'mixed', - 'params' => 'string str, [int format [, string charlist]]', - 'description' => 'Counts the number of words inside a string. If format of 1 is specified,then the function will return an array containing all the wordsfound inside the string. If format of 2 is specified, then the functionwill return an associated array where the position of the word is the keyand the word itself is the value.For the purpose of this function, \'word\' is defined as a locale dependentstring containing alphabetic characters, which also may contain, but not startwith "\'" and "-" characters.', - ), - 'money_format' => - array ( - 'return' => 'string', - 'params' => 'string format , float value', - 'description' => 'Convert monetary value(s) to string', - ), - 'str_split' => - array ( - 'return' => 'array', - 'params' => 'string str [, int split_length]', - 'description' => 'Convert a string to an array. If split_length is specified, break the string down into chunks each split_length characters long.', - ), - 'strpbrk' => - array ( - 'return' => 'array', - 'params' => 'string haystack, string char_list', - 'description' => 'Search a string for any of a set of characters', - ), - 'substr_compare' => - array ( - 'return' => 'int', - 'params' => 'string main_str, string str, int offset [, int length [, bool case_sensitivity]]', - 'description' => 'Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters', - ), - 'fsockopen' => - array ( - 'return' => 'resource', - 'params' => 'string hostname, int port [, int errno [, string errstr [, float timeout]]]', - 'description' => 'Open Internet or Unix domain socket connection', - ), - 'pfsockopen' => - array ( - 'return' => 'resource', - 'params' => 'string hostname, int port [, int errno [, string errstr [, float timeout]]]', - 'description' => 'Open persistent Internet or Unix domain socket connection', - ), - 'readlink' => - array ( - 'return' => 'string', - 'params' => 'string filename', - 'description' => 'Return the target of a symbolic link', - ), - 'linkinfo' => - array ( - 'return' => 'int', - 'params' => 'string filename', - 'description' => 'Returns the st_dev field of the UNIX C stat structure describing the link', - ), - 'symlink' => - array ( - 'return' => 'int', - 'params' => 'string target, string link', - 'description' => 'Create a symbolic link', - ), - 'link' => - array ( - 'return' => 'int', - 'params' => 'string target, string link', - 'description' => 'Create a hard link', - ), - 'getmyuid' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get PHP script owner\'s UID', - ), - 'getmygid' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get PHP script owner\'s GID', - ), - 'getmypid' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get current process ID', - ), - 'getmyinode' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get the inode of the current script being parsed', - ), - 'getlastmod' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get time of last page modification', - ), - 'var_dump' => - array ( - 'return' => 'void', - 'params' => 'mixed var', - 'description' => 'Dumps a string representation of variable to output', - ), - 'debug_zval_dump' => - array ( - 'return' => 'void', - 'params' => 'mixed var', - 'description' => 'Dumps a string representation of an internal zend value to output.', - ), - 'var_export' => - array ( - 'return' => 'mixed', - 'params' => 'mixed var [, bool return]', - 'description' => 'Outputs or returns a string representation of a variable', - ), - 'serialize' => - array ( - 'return' => 'string', - 'params' => 'mixed variable', - 'description' => 'Returns a string representation of variable (which can later be unserialized)', - ), - 'unserialize' => - array ( - 'return' => 'mixed', - 'params' => 'string variable_representation', - 'description' => 'Takes a string representation of variable and recreates it', - ), - 'memory_get_usage' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Returns the allocated by PHP memory', - ), - 'ereg' => - array ( - 'return' => 'int', - 'params' => 'string pattern, string string [, array registers]', - 'description' => 'Regular expression match', - ), - 'eregi' => - array ( - 'return' => 'int', - 'params' => 'string pattern, string string [, array registers]', - 'description' => 'Case-insensitive regular expression match', - ), - 'ereg_replace' => - array ( - 'return' => 'string', - 'params' => 'string pattern, string replacement, string string', - 'description' => 'Replace regular expression', - ), - 'eregi_replace' => - array ( - 'return' => 'string', - 'params' => 'string pattern, string replacement, string string', - 'description' => 'Case insensitive replace regular expression', - ), - 'split' => - array ( - 'return' => 'array', - 'params' => 'string pattern, string string [, int limit]', - 'description' => 'Split string into array by regular expression', - ), - 'spliti' => - array ( - 'return' => 'array', - 'params' => 'string pattern, string string [, int limit]', - 'description' => 'Split string into array by regular expression case-insensitive', - ), - 'sql_regcase' => - array ( - 'return' => 'string', - 'params' => 'string string', - 'description' => 'Make regular expression for case insensitive match', - ), - 'crypt' => - array ( - 'return' => 'string', - 'params' => 'string str [, string salt]', - 'description' => 'Encrypt a string', - ), - 'ezmlm_hash' => - array ( - 'return' => 'int', - 'params' => 'string addr', - 'description' => 'Calculate EZMLM list hash value.', - ), - 'mail' => - array ( - 'return' => 'int', - 'params' => 'string to, string subject, string message [, string additional_headers [, string additional_parameters]]', - 'description' => 'Send an email message', - ), - 'srand' => - array ( - 'return' => 'void', - 'params' => '[int seed]', - 'description' => 'Seeds random number generator', - ), - 'mt_srand' => - array ( - 'return' => 'void', - 'params' => '[int seed]', - 'description' => 'Seeds Mersenne Twister random number generator', - ), - 'rand' => - array ( - 'return' => 'int', - 'params' => '[int min, int max]', - 'description' => 'Returns a random number', - ), - 'mt_rand' => - array ( - 'return' => 'int', - 'params' => '[int min, int max]', - 'description' => 'Returns a random number from Mersenne Twister', - ), - 'getrandmax' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Returns the maximum value a random number can have', - ), - 'mt_getrandmax' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Returns the maximum value a random number from Mersenne Twister can have', - ), - 'get_browser' => - array ( - 'return' => 'mixed', - 'params' => '[string browser_name [, bool return_array]]', - 'description' => 'Get information about the capabilities of a browser. If browser_name is omittedor null, HTTP_USER_AGENT is used. Returns an object by default; if return_arrayis true, returns an array.', - ), - 'iptcembed' => - array ( - 'return' => 'array', - 'params' => 'string iptcdata, string jpeg_file_name [, int spool]', - 'description' => 'Embed binary IPTC data into a JPEG image.', - ), - 'iptcparse' => - array ( - 'return' => 'array', - 'params' => 'string iptcdata', - 'description' => 'Parse binary IPTC-data into associative array', - ), - 'quoted_printable_decode' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Convert a quoted-printable string to an 8 bit string', - ), - 'pack' => - array ( - 'return' => 'string', - 'params' => 'string format, mixed arg1 [, mixed arg2 [, mixed ...]]', - 'description' => 'Takes one or more arguments and packs them into a binary string according to the format argument', - ), - 'unpack' => - array ( - 'return' => 'array', - 'params' => 'string format, string input', - 'description' => 'Unpack binary string into named array elements according to format argument', - ), - 'base64_encode' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Encodes string using MIME base64 algorithm', - ), - 'base64_decode' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Decodes string using MIME base64 algorithm', - ), - 'gettype' => - array ( - 'return' => 'string', - 'params' => 'mixed var', - 'description' => 'Returns the type of the variable', - ), - 'settype' => - array ( - 'return' => 'bool', - 'params' => 'mixed var, string type', - 'description' => 'Set the type of the variable', - ), - 'intval' => - array ( - 'return' => 'int', - 'params' => 'mixed var [, int base]', - 'description' => 'Get the integer value of a variable using the optional base for the conversion', - ), - 'floatval' => - array ( - 'return' => 'float', - 'params' => 'mixed var', - 'description' => 'Get the float value of a variable', - ), - 'strval' => - array ( - 'return' => 'string', - 'params' => 'mixed var', - 'description' => 'Get the string value of a variable', - ), - 'is_null' => - array ( - 'return' => 'bool', - 'params' => 'mixed var', - 'description' => 'Returns true if variable is null', - ), - 'is_resource' => - array ( - 'return' => 'bool', - 'params' => 'mixed var', - 'description' => 'Returns true if variable is a resource', - ), - 'is_bool' => - array ( - 'return' => 'bool', - 'params' => 'mixed var', - 'description' => 'Returns true if variable is a boolean', - ), - 'is_long' => - array ( - 'return' => 'bool', - 'params' => 'mixed var', - 'description' => 'Returns true if variable is a long (integer)', - ), - 'is_float' => - array ( - 'return' => 'bool', - 'params' => 'mixed var', - 'description' => 'Returns true if variable is float point', - ), - 'is_string' => - array ( - 'return' => 'bool', - 'params' => 'mixed var', - 'description' => 'Returns true if variable is a string', - ), - 'is_array' => - array ( - 'return' => 'bool', - 'params' => 'mixed var', - 'description' => 'Returns true if variable is an array', - ), - 'is_object' => - array ( - 'return' => 'bool', - 'params' => 'mixed var', - 'description' => 'Returns true if variable is an object', - ), - 'is_numeric' => - array ( - 'return' => 'bool', - 'params' => 'mixed value', - 'description' => 'Returns true if value is a number or a numeric string', - ), - 'is_scalar' => - array ( - 'return' => 'bool', - 'params' => 'mixed value', - 'description' => 'Returns true if value is a scalar', - ), - 'is_callable' => - array ( - 'return' => 'bool', - 'params' => 'mixed var [, bool syntax_only [, string callable_name]]', - 'description' => 'Returns true if var is callable.', - ), - 'version_compare' => - array ( - 'return' => 'int', - 'params' => 'string ver1, string ver2 [, string oper]', - 'description' => 'Compares two "PHP-standardized" version number strings', - ), - 'exec' => - array ( - 'return' => 'string', - 'params' => 'string command [, array &output [, int &return_value]]', - 'description' => 'Execute an external program', - ), - 'system' => - array ( - 'return' => 'int', - 'params' => 'string command [, int &return_value]', - 'description' => 'Execute an external program and display output', - ), - 'passthru' => - array ( - 'return' => 'void', - 'params' => 'string command [, int &return_value]', - 'description' => 'Execute an external program and display raw output', - ), - 'escapeshellcmd' => - array ( - 'return' => 'string', - 'params' => 'string command', - 'description' => 'Escape shell metacharacters', - ), - 'escapeshellarg' => - array ( - 'return' => 'string', - 'params' => 'string arg', - 'description' => 'Quote and escape an argument for use in a shell command', - ), - 'shell_exec' => - array ( - 'return' => 'string', - 'params' => 'string cmd', - 'description' => 'Execute command via shell and return complete output as string', - ), - 'proc_nice' => - array ( - 'return' => 'bool', - 'params' => 'int priority', - 'description' => 'Change the priority of the current process', - ), - 'constant' => - array ( - 'return' => 'mixed', - 'params' => 'string const_name', - 'description' => 'Given the name of a constant this function will return the constants associated value', - ), - 'inet_ntop' => - array ( - 'return' => 'string', - 'params' => 'string in_addr', - 'description' => 'Converts a packed inet address to a human readable IP address string', - ), - 'inet_pton' => - array ( - 'return' => 'string', - 'params' => 'string ip_address', - 'description' => 'Converts a human readable IP address to a packed binary string', - ), - 'ip2long' => - array ( - 'return' => 'int', - 'params' => 'string ip_address', - 'description' => 'Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address', - ), - 'long2ip' => - array ( - 'return' => 'string', - 'params' => 'int proper_address', - 'description' => 'Converts an (IPv4) Internet network address into a string in Internet standard dotted format', - ), - 'getenv' => - array ( - 'return' => 'string', - 'params' => 'string varname', - 'description' => 'Get the value of an environment variable', - ), - 'putenv' => - array ( - 'return' => 'bool', - 'params' => 'string setting', - 'description' => 'Set the value of an environment variable', - ), - 'getopt' => - array ( - 'return' => 'array', - 'params' => 'string options [, array longopts]', - 'description' => 'Get options from the command line argument list', - ), - 'flush' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => 'Flush the output buffer', - ), - 'sleep' => - array ( - 'return' => 'void', - 'params' => 'int seconds', - 'description' => 'Delay for a given number of seconds', - ), - 'usleep' => - array ( - 'return' => 'void', - 'params' => 'int micro_seconds', - 'description' => 'Delay for a given number of micro seconds', - ), - 'time_nanosleep' => - array ( - 'return' => 'mixed', - 'params' => 'long seconds, long nanoseconds', - 'description' => 'Delay for a number of seconds and nano seconds', - ), - 'time_sleep_until' => - array ( - 'return' => 'mixed', - 'params' => 'float timestamp', - 'description' => 'Make the script sleep until the specified time', - ), - 'get_current_user' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Get the name of the owner of the current PHP script', - ), - 'get_cfg_var' => - array ( - 'return' => 'string', - 'params' => 'string option_name', - 'description' => 'Get the value of a PHP configuration option', - ), - 'set_magic_quotes_runtime' => - array ( - 'return' => 'bool', - 'params' => 'int new_setting', - 'description' => 'Set the current active configuration setting of magic_quotes_runtime and return previous', - ), - 'get_magic_quotes_runtime' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get the current active configuration setting of magic_quotes_runtime', - ), - 'get_magic_quotes_gpc' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get the current active configuration setting of magic_quotes_gpc', - ), - 'error_log' => - array ( - 'return' => 'bool', - 'params' => 'string message [, int message_type [, string destination [, string extra_headers]]]', - 'description' => 'Send an error message somewhere', - ), - 'call_user_func' => - array ( - 'return' => 'mixed', - 'params' => 'string function_name [, mixed parmeter] [, mixed ...]', - 'description' => 'Call a user function which is the first parameter', - ), - 'call_user_func_array' => - array ( - 'return' => 'mixed', - 'params' => 'string function_name, array parameters', - 'description' => 'Call a user function which is the first parameter with the arguments contained in array', - ), - 'call_user_method' => - array ( - 'return' => 'mixed', - 'params' => 'string method_name, mixed object [, mixed parameter] [, mixed ...]', - 'description' => 'Call a user method on a specific object or class', - ), - 'call_user_method_array' => - array ( - 'return' => 'mixed', - 'params' => 'string method_name, mixed object, array params', - 'description' => 'Call a user method on a specific object or class using a parameter array', - ), - 'register_shutdown_function' => - array ( - 'return' => 'void', - 'params' => 'string function_name', - 'description' => 'Register a user-level function to be called on request termination', - ), - 'highlight_file' => - array ( - 'return' => 'bool', - 'params' => 'string file_name [, bool return] ', - 'description' => 'Syntax highlight a source file', - ), - 'php_strip_whitespace' => - array ( - 'return' => 'string', - 'params' => 'string file_name', - 'description' => 'Return source with stripped comments and whitespace', - ), - 'highlight_string' => - array ( - 'return' => 'bool', - 'params' => 'string string [, bool return] ', - 'description' => 'Syntax highlight a string or optionally return it', - ), - 'ini_get' => - array ( - 'return' => 'string', - 'params' => 'string varname', - 'description' => 'Get a configuration option', - ), - 'ini_get_all' => - array ( - 'return' => 'array', - 'params' => '[string extension]', - 'description' => 'Get all configuration options', - ), - 'ini_set' => - array ( - 'return' => 'string', - 'params' => 'string varname, string newvalue', - 'description' => 'Set a configuration option, returns false on error and the old value of the configuration option on success', - ), - 'ini_restore' => - array ( - 'return' => 'void', - 'params' => 'string varname', - 'description' => 'Restore the value of a configuration option specified by varname', - ), - 'set_include_path' => - array ( - 'return' => 'string', - 'params' => 'string new_include_path', - 'description' => 'Sets the include_path configuration option', - ), - 'get_include_path' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Get the current include_path configuration option', - ), - 'restore_include_path' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Restore the value of the include_path configuration option', - ), - 'print_r' => - array ( - 'return' => 'mixed', - 'params' => 'mixed var [, bool return]', - 'description' => 'Prints out or returns information about the specified variable', - ), - 'connection_aborted' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Returns true if client disconnected', - ), - 'connection_status' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Returns the connection status bitfield', - ), - 'ignore_user_abort' => - array ( - 'return' => 'int', - 'params' => 'bool value', - 'description' => 'Set whether we want to ignore a user abort event or not', - ), - 'getservbyname' => - array ( - 'return' => 'int', - 'params' => 'string service, string protocol', - 'description' => 'Returns port associated with service. Protocol must be "tcp" or "udp"', - ), - 'getservbyport' => - array ( - 'return' => 'string', - 'params' => 'int port, string protocol', - 'description' => 'Returns service name associated with port. Protocol must be "tcp" or "udp"', - ), - 'getprotobyname' => - array ( - 'return' => 'int', - 'params' => 'string name', - 'description' => 'Returns protocol number associated with name as per /etc/protocols', - ), - 'getprotobynumber' => - array ( - 'return' => 'string', - 'params' => 'int proto', - 'description' => 'Returns protocol name associated with protocol number proto', - ), - 'register_tick_function' => - array ( - 'return' => 'bool', - 'params' => 'string function_name [, mixed arg [, mixed ... ]]', - 'description' => 'Registers a tick callback function', - ), - 'unregister_tick_function' => - array ( - 'return' => 'void', - 'params' => 'string function_name', - 'description' => 'Unregisters a tick callback function', - ), - 'is_uploaded_file' => - array ( - 'return' => 'bool', - 'params' => 'string path', - 'description' => 'Check if file was created by rfc1867 upload', - ), - 'move_uploaded_file' => - array ( - 'return' => 'bool', - 'params' => 'string path, string new_path', - 'description' => 'Move a file if and only if it was created by an upload', - ), - 'parse_ini_file' => - array ( - 'return' => 'array', - 'params' => 'string filename [, bool process_sections]', - 'description' => 'Parse configuration file', - ), - 'import_request_variables' => - array ( - 'return' => 'bool', - 'params' => 'string types [, string prefix]', - 'description' => 'Import GET/POST/Cookie variables into the global scope', - ), - 'define_syslog_variables' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => 'Initializes all syslog-related variables', - ), - 'openlog' => - array ( - 'return' => 'bool', - 'params' => 'string ident, int option, int facility', - 'description' => 'Open connection to system logger', - ), - 'closelog' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Close connection to system logger', - ), - 'syslog' => - array ( - 'return' => 'bool', - 'params' => 'int priority, string message', - 'description' => 'Generate a system log message', - ), - 'phpinfo' => - array ( - 'return' => 'void', - 'params' => '[int what]', - 'description' => 'Output a page of useful information about PHP and the current request', - ), - 'phpversion' => - array ( - 'return' => 'string', - 'params' => '[string extension]', - 'description' => 'Return the current PHP version', - ), - 'phpcredits' => - array ( - 'return' => 'void', - 'params' => '[int flag]', - 'description' => 'Prints the list of people who\'ve contributed to the PHP project', - ), - 'php_logo_guid' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Return the special ID used to request the PHP logo in phpinfo screens', - ), - 'php_real_logo_guid' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Return the special ID used to request the PHP logo in phpinfo screens', - ), - 'php_egg_logo_guid' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Return the special ID used to request the PHP logo in phpinfo screens', - ), - 'zend_logo_guid' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Return the special ID used to request the Zend logo in phpinfo screens', - ), - 'php_sapi_name' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Return the current SAPI module name', - ), - 'php_uname' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Return information about the system PHP was built on', - ), - 'php_ini_scanned_files' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Return comma-separated string of .ini files parsed from the additional ini dir', - ), - 'levenshtein' => - array ( - 'return' => 'int', - 'params' => 'string str1, string str2', - 'description' => 'Calculate Levenshtein distance between two strings', - ), - 'lcg_value' => - array ( - 'return' => 'float', - 'params' => '', - 'description' => 'Returns a value from the combined linear congruential generator', - ), - 'http_build_query' => - array ( - 'return' => 'string', - 'params' => 'mixed formdata [, string prefix [, string arg_separator]]', - 'description' => 'Generates a form-encoded query string from an associative array or object.', - ), - 'microtime' => - array ( - 'return' => 'mixed', - 'params' => '[bool get_as_float]', - 'description' => 'Returns either a string or a float containing the current time in seconds and microseconds', - ), - 'gettimeofday' => - array ( - 'return' => 'array', - 'params' => '[bool get_as_float]', - 'description' => 'Returns the current time as array', - ), - 'getrusage' => - array ( - 'return' => 'array', - 'params' => '[int who]', - 'description' => 'Returns an array of usage statistics', - ), - 'metaphone' => - array ( - 'return' => 'string', - 'params' => 'string text, int phones', - 'description' => 'Break english phrases down into their phonemes', - ), - 'htmlspecialchars' => - array ( - 'return' => 'string', - 'params' => 'string string [, int quote_style]', - 'description' => 'Convert special HTML entities back to characters', - ), - 'html_entity_decode' => - array ( - 'return' => 'string', - 'params' => 'string string [, int quote_style][, string charset]', - 'description' => 'Convert all HTML entities to their applicable characters', - ), - 'htmlentities' => - array ( - 'return' => 'string', - 'params' => 'string string [, int quote_style][, string charset]', - 'description' => 'Convert all applicable characters to HTML entities', - ), - 'get_html_translation_table' => - array ( - 'return' => 'array', - 'params' => '[int table [, int quote_style]]', - 'description' => 'Returns the internal translation table used by htmlspecialchars and htmlentities', - ), - 'stream_bucket_make_writeable' => - array ( - 'return' => 'object', - 'params' => 'resource brigade', - 'description' => 'Return a bucket object from the brigade for operating on', - ), - 'stream_bucket_prepend' => - array ( - 'return' => 'void', - 'params' => 'resource brigade, resource bucket', - 'description' => 'Prepend bucket to brigade', - ), - 'stream_bucket_append' => - array ( - 'return' => 'void', - 'params' => 'resource brigade, resource bucket', - 'description' => 'Append bucket to brigade', - ), - 'stream_bucket_new' => - array ( - 'return' => 'resource', - 'params' => 'resource stream, string buffer', - 'description' => 'Create a new bucket for use on the current stream', - ), - 'stream_get_filters' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Returns a list of registered filters', - ), - 'stream_filter_register' => - array ( - 'return' => 'bool', - 'params' => 'string filtername, string classname', - 'description' => 'Registers a custom filter handler class', - ), - 'sha1' => - array ( - 'return' => 'string', - 'params' => 'string str [, bool raw_output]', - 'description' => 'Calculate the sha1 hash of a string', - ), - 'sha1_file' => - array ( - 'return' => 'string', - 'params' => 'string filename [, bool raw_output]', - 'description' => 'Calculate the sha1 hash of given filename', - ), - 'image_type_to_mime_type' => - array ( - 'return' => 'string', - 'params' => 'int imagetype', - 'description' => 'Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype', - ), - 'image_type_to_extension' => - array ( - 'return' => 'string', - 'params' => 'int imagetype [, bool include_dot]', - 'description' => 'Get file extension for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype', - ), - 'getimagesize' => - array ( - 'return' => 'array', - 'params' => 'string imagefile [, array info]', - 'description' => 'Get the size of an image as 4-element array', - ), - 'uniqid' => - array ( - 'return' => 'string', - 'params' => '[string prefix , bool more_entropy]', - 'description' => 'Generates a unique ID', - ), - 'parse_url' => - array ( - 'return' => 'mixed', - 'params' => 'string url, [int url_component]', - 'description' => 'Parse a URL and return its components', - ), - 'urlencode' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'URL-encodes string', - ), - 'urldecode' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Decodes URL-encoded string', - ), - 'rawurlencode' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'URL-encodes string', - ), - 'rawurldecode' => - array ( - 'return' => 'string', - 'params' => 'string str', - 'description' => 'Decodes URL-encodes string', - ), - 'get_headers' => - array ( - 'return' => 'array', - 'params' => 'string url', - 'description' => 'fetches all the headers sent by the server in response to a HTTP request', - ), - 'uuencode' => - array ( - 'return' => 'string', - 'params' => 'string data', - 'description' => 'uuencode a string', - ), - 'uudecode' => - array ( - 'return' => 'string', - 'params' => 'string data', - 'description' => 'decode a uuencoded string', - ), - 'flock' => - array ( - 'return' => 'bool', - 'params' => 'resource fp, int operation [, int &wouldblock]', - 'description' => 'Portable file locking', - ), - 'get_meta_tags' => - array ( - 'return' => 'array', - 'params' => 'string filename [, bool use_include_path]', - 'description' => 'Extracts all meta tag content attributes from a file and returns an array', - ), - 'file_get_contents' => - array ( - 'return' => 'string', - 'params' => 'string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]]', - 'description' => 'Read the entire file into a string', - ), - 'file_put_contents' => - array ( - 'return' => 'int', - 'params' => 'string file, mixed data [, int flags [, resource context]]', - 'description' => 'Write/Create a file with contents data and return the number of bytes written', - ), - 'file' => - array ( - 'return' => 'array', - 'params' => 'string filename [, int flags[, resource context]]', - 'description' => 'Read entire file into an array', - ), - 'tempnam' => - array ( - 'return' => 'string', - 'params' => 'string dir, string prefix', - 'description' => 'Create a unique filename in a directory', - ), - 'tmpfile' => - array ( - 'return' => 'resource', - 'params' => 'void', - 'description' => 'Create a temporary file that will be deleted automatically after use', - ), - 'fopen' => - array ( - 'return' => 'resource', - 'params' => 'string filename, string mode [, bool use_include_path [, resource context]]', - 'description' => 'Open a file or a URL and return a file pointer', - ), - 'fclose' => - array ( - 'return' => 'bool', - 'params' => 'resource fp', - 'description' => 'Close an open file pointer', - ), - 'popen' => - array ( - 'return' => 'resource', - 'params' => 'string command, string mode', - 'description' => 'Execute a command and open either a read or a write pipe to it', - ), - 'pclose' => - array ( - 'return' => 'int', - 'params' => 'resource fp', - 'description' => 'Close a file pointer opened by popen()', - ), - 'feof' => - array ( - 'return' => 'bool', - 'params' => 'resource fp', - 'description' => 'Test for end-of-file on a file pointer', - ), - 'fgets' => - array ( - 'return' => 'string', - 'params' => 'resource fp[, int length]', - 'description' => 'Get a line from file pointer', - ), - 'fgetc' => - array ( - 'return' => 'string', - 'params' => 'resource fp', - 'description' => 'Get a character from file pointer', - ), - 'fgetss' => - array ( - 'return' => 'string', - 'params' => 'resource fp [, int length, string allowable_tags]', - 'description' => 'Get a line from file pointer and strip HTML tags', - ), - 'fscanf' => - array ( - 'return' => 'mixed', - 'params' => 'resource stream, string format [, string ...]', - 'description' => 'Implements a mostly ANSI compatible fscanf()', - ), - 'fwrite' => - array ( - 'return' => 'int', - 'params' => 'resource fp, string str [, int length]', - 'description' => 'Binary-safe file write', - ), - 'fflush' => - array ( - 'return' => 'bool', - 'params' => 'resource fp', - 'description' => 'Flushes output', - ), - 'rewind' => - array ( - 'return' => 'bool', - 'params' => 'resource fp', - 'description' => 'Rewind the position of a file pointer', - ), - 'ftell' => - array ( - 'return' => 'int', - 'params' => 'resource fp', - 'description' => 'Get file pointer\'s read/write position', - ), - 'fseek' => - array ( - 'return' => 'int', - 'params' => 'resource fp, int offset [, int whence]', - 'description' => 'Seek on a file pointer', - ), - 'mkdir' => - array ( - 'return' => 'bool', - 'params' => 'string pathname [, int mode [, bool recursive [, resource context]]]', - 'description' => 'Create a directory', - ), - 'rmdir' => - array ( - 'return' => 'bool', - 'params' => 'string dirname[, resource context]', - 'description' => 'Remove a directory', - ), - 'readfile' => - array ( - 'return' => 'int', - 'params' => 'string filename [, bool use_include_path[, resource context]]', - 'description' => 'Output a file or a URL', - ), - 'umask' => - array ( - 'return' => 'int', - 'params' => '[int mask]', - 'description' => 'Return or change the umask', - ), - 'fpassthru' => - array ( - 'return' => 'int', - 'params' => 'resource fp', - 'description' => 'Output all remaining data from a file pointer', - ), - 'rename' => - array ( - 'return' => 'bool', - 'params' => 'string old_name, string new_name[, resource context]', - 'description' => 'Rename a file', - ), - 'unlink' => - array ( - 'return' => 'bool', - 'params' => 'string filename[, context context]', - 'description' => 'Delete a file', - ), - 'ftruncate' => - array ( - 'return' => 'bool', - 'params' => 'resource fp, int size', - 'description' => 'Truncate file to \'size\' length', - ), - 'fstat' => - array ( - 'return' => 'array', - 'params' => 'resource fp', - 'description' => 'Stat() on a filehandle', - ), - 'copy' => - array ( - 'return' => 'bool', - 'params' => 'string source_file, string destination_file', - 'description' => 'Copy a file', - ), - 'fread' => - array ( - 'return' => 'string', - 'params' => 'resource fp, int length', - 'description' => 'Binary-safe file read', - ), - 'fputcsv' => - array ( - 'return' => 'int', - 'params' => 'resource fp, array fields [, string delimiter [, string enclosure]]', - 'description' => 'Format line as CSV and write to file pointer', - ), - 'fgetcsv' => - array ( - 'return' => 'array', - 'params' => 'resource fp [,int length [, string delimiter [, string enclosure]]]', - 'description' => 'Get line from file pointer and parse for CSV fields', - ), - 'realpath' => - array ( - 'return' => 'string', - 'params' => 'string path', - 'description' => 'Return the resolved path', - ), - 'fnmatch' => - array ( - 'return' => 'bool', - 'params' => 'string pattern, string filename [, int flags]', - 'description' => 'Match filename against pattern', - ), - 'xmlwriter_set_indent' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, bool indent', - 'description' => 'Toggle indentation on/off - returns FALSE on error', - ), - 'xmlwriter_set_indent_string' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string indentString', - 'description' => 'Set string used for indenting - returns FALSE on error', - ), - 'xmlwriter_start_attribute' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string name', - 'description' => 'Create start attribute - returns FALSE on error', - ), - 'xmlwriter_end_attribute' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter', - 'description' => 'End attribute - returns FALSE on error', - ), - 'xmlwriter_start_attribute_ns' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string prefix, string name, string uri', - 'description' => 'Create start namespaced attribute - returns FALSE on error', - ), - 'xmlwriter_write_attribute' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string name, string content', - 'description' => 'Write full attribute - returns FALSE on error', - ), - 'xmlwriter_write_attribute_ns' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string prefix, string name, string uri, string content', - 'description' => 'Write full namespaced attribute - returns FALSE on error', - ), - 'xmlwriter_start_element' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string name', - 'description' => 'Create start element tag - returns FALSE on error', - ), - 'xmlwriter_start_element_ns' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string prefix, string name, string uri', - 'description' => 'Create start namespaced element tag - returns FALSE on error', - ), - 'xmlwriter_end_element' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter', - 'description' => 'End current element - returns FALSE on error', - ), - 'xmlwriter_write_element' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string name, string content', - 'description' => 'Write full element tag - returns FALSE on error', - ), - 'xmlwriter_write_element_ns' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string prefix, string name, string uri, string content', - 'description' => 'Write full namesapced element tag - returns FALSE on error', - ), - 'xmlwriter_start_pi' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string target', - 'description' => 'Create start PI tag - returns FALSE on error', - ), - 'xmlwriter_end_pi' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter', - 'description' => 'End current PI - returns FALSE on error', - ), - 'xmlwriter_write_pi' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string target, string content', - 'description' => 'Write full PI tag - returns FALSE on error', - ), - 'xmlwriter_start_cdata' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter', - 'description' => 'Create start CDATA tag - returns FALSE on error', - ), - 'xmlwriter_end_cdata' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter', - 'description' => 'End current CDATA - returns FALSE on error', - ), - 'xmlwriter_write_cdata' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string content', - 'description' => 'Write full CDATA tag - returns FALSE on error', - ), - 'xmlwriter_text' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string content', - 'description' => 'Write text - returns FALSE on error', - ), - 'xmlwriter_start_comment' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter', - 'description' => 'Create start comment - returns FALSE on error', - ), - 'xmlwriter_end_comment' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter', - 'description' => 'Create end comment - returns FALSE on error', - ), - 'xmlwriter_write_comment' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string content', - 'description' => 'Write full comment tag - returns FALSE on error', - ), - 'xmlwriter_start_document' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string version, string encoding, string standalone', - 'description' => 'Create document tag - returns FALSE on error', - ), - 'xmlwriter_end_document' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter', - 'description' => 'End current document - returns FALSE on error', - ), - 'xmlwriter_start_dtd' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string name, string pubid, string sysid', - 'description' => 'Create start DTD tag - returns FALSE on error', - ), - 'xmlwriter_end_dtd' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter', - 'description' => 'End current DTD - returns FALSE on error', - ), - 'xmlwriter_write_dtd' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string name, string pubid, string sysid, string subset', - 'description' => 'Write full DTD tag - returns FALSE on error', - ), - 'xmlwriter_start_dtd_element' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string name', - 'description' => 'Create start DTD element - returns FALSE on error', - ), - 'xmlwriter_end_dtd_element' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter', - 'description' => 'End current DTD element - returns FALSE on error', - ), - 'xmlwriter_write_dtd_element' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string name, string content', - 'description' => 'Write full DTD element tag - returns FALSE on error', - ), - 'xmlwriter_start_dtd_attlist' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string name', - 'description' => 'Create start DTD AttList - returns FALSE on error', - ), - 'xmlwriter_end_dtd_attlist' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter', - 'description' => 'End current DTD AttList - returns FALSE on error', - ), - 'xmlwriter_write_dtd_attlist' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string name, string content', - 'description' => 'Write full DTD AttList tag - returns FALSE on error', - ), - 'xmlwriter_start_dtd_entity' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string name, bool isparam', - 'description' => 'Create start DTD Entity - returns FALSE on error', - ), - 'xmlwriter_end_dtd_entity' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter', - 'description' => 'End current DTD Entity - returns FALSE on error', - ), - 'xmlwriter_write_dtd_entity' => - array ( - 'return' => 'bool', - 'params' => 'resource xmlwriter, string name, string content', - 'description' => 'Write full DTD Entity tag - returns FALSE on error', - ), - 'xmlwriter_open_uri' => - array ( - 'return' => 'resource', - 'params' => 'resource xmlwriter, string source', - 'description' => 'Create new xmlwriter using source uri for output', - ), - 'xmlwriter_open_memory' => - array ( - 'return' => 'resource', - 'params' => '', - 'description' => 'Create new xmlwriter using memory for string output', - ), - 'xmlwriter_output_memory' => - array ( - 'return' => 'string', - 'params' => 'resource xmlwriter [,bool flush]', - 'description' => 'Output current buffer as string', - ), - 'xmlwriter_flush' => - array ( - 'return' => 'mixed', - 'params' => 'resource xmlwriter [,bool empty]', - 'description' => 'Output current buffer', - ), - 'easter_date' => - array ( - 'return' => 'int', - 'params' => '[int year]', - 'description' => 'Return the timestamp of midnight on Easter of a given year (defaults to current year)', - ), - 'easter_days' => - array ( - 'return' => 'int', - 'params' => '[int year, [int method]]', - 'description' => 'Return the number of days after March 21 that Easter falls on for a given year (defaults to current year)', - ), - 'cal_info' => - array ( - 'return' => 'array', - 'params' => 'int calendar', - 'description' => 'Returns information about a particular calendar', - ), - 'cal_days_in_month' => - array ( - 'return' => 'int', - 'params' => 'int calendar, int month, int year', - 'description' => 'Returns the number of days in a month for a given year and calendar', - ), - 'cal_to_jd' => - array ( - 'return' => 'int', - 'params' => 'int calendar, int month, int day, int year', - 'description' => 'Converts from a supported calendar to Julian Day Count', - ), - 'cal_from_jd' => - array ( - 'return' => 'array', - 'params' => 'int jd, int calendar', - 'description' => 'Converts from Julian Day Count to a supported calendar and return extended information', - ), - 'jdtogregorian' => - array ( - 'return' => 'string', - 'params' => 'int juliandaycount', - 'description' => 'Converts a julian day count to a gregorian calendar date', - ), - 'gregoriantojd' => - array ( - 'return' => 'int', - 'params' => 'int month, int day, int year', - 'description' => 'Converts a gregorian calendar date to julian day count', - ), - 'jdtojulian' => - array ( - 'return' => 'string', - 'params' => 'int juliandaycount', - 'description' => 'Convert a julian day count to a julian calendar date', - ), - 'juliantojd' => - array ( - 'return' => 'int', - 'params' => 'int month, int day, int year', - 'description' => 'Converts a julian calendar date to julian day count', - ), - 'jdtojewish' => - array ( - 'return' => 'string', - 'params' => 'int juliandaycount [, bool hebrew [, int fl]]', - 'description' => 'Converts a julian day count to a jewish calendar date', - ), - 'jewishtojd' => - array ( - 'return' => 'int', - 'params' => 'int month, int day, int year', - 'description' => 'Converts a jewish calendar date to a julian day count', - ), - 'jdtofrench' => - array ( - 'return' => 'string', - 'params' => 'int juliandaycount', - 'description' => 'Converts a julian day count to a french republic calendar date', - ), - 'frenchtojd' => - array ( - 'return' => 'int', - 'params' => 'int month, int day, int year', - 'description' => 'Converts a french republic calendar date to julian day count', - ), - 'jddayofweek' => - array ( - 'return' => 'mixed', - 'params' => 'int juliandaycount [, int mode]', - 'description' => 'Returns name or number of day of week from julian day count', - ), - 'jdmonthname' => - array ( - 'return' => 'string', - 'params' => 'int juliandaycount, int mode', - 'description' => 'Returns name of month for julian day count', - ), - 'unixtojd' => - array ( - 'return' => 'int', - 'params' => '[int timestamp]', - 'description' => 'Convert UNIX timestamp to Julian Day', - ), - 'jdtounix' => - array ( - 'return' => 'int', - 'params' => 'int jday', - 'description' => 'Convert Julian Day to UNIX timestamp', - ), - 'mime_content_type' => - array ( - 'return' => 'string', - 'params' => 'string filename|resource stream', - 'description' => 'Return content-type for file', - ), - 'exif_tagname' => - array ( - 'return' => 'string', - 'params' => 'index', - 'description' => 'Get headername for index or false if not defined', - ), - 'exif_read_data' => - array ( - 'return' => 'array', - 'params' => 'string filename [, sections_needed [, sub_arrays[, read_thumbnail]]]', - 'description' => 'Reads header data from the JPEG/TIFF image filename and optionally reads the internal thumbnails', - ), - 'exif_thumbnail' => - array ( - 'return' => 'string', - 'params' => 'string filename [, &width, &height [, &imagetype]]', - 'description' => 'Reads the embedded thumbnail', - ), - 'exif_imagetype' => - array ( - 'return' => 'int', - 'params' => 'string imagefile', - 'description' => 'Get the type of an image', - ), - 'ming_setscale' => - array ( - 'return' => 'void', - 'params' => 'int scale', - 'description' => 'Set scale (?)', - ), - 'ming_useswfversion' => - array ( - 'return' => 'void', - 'params' => 'int version', - 'description' => 'Use SWF version (?)', - ), - 'ming_useconstants' => - array ( - 'return' => 'void', - 'params' => 'int use', - 'description' => 'Use constant pool (?)', - ), - 'swfaction::__construct' => - array ( - 'return' => 'void', - 'params' => 'string', - 'description' => 'Creates a new SWFAction object, compiling the given script', - ), - 'swfbitmap::__construct' => - array ( - 'return' => 'void', - 'params' => 'mixed file [, mixed maskfile]', - 'description' => 'Creates a new SWFBitmap object from jpg (with optional mask) or dbl file', - ), - 'swfbitmap::getWidth' => - array ( - 'return' => 'float', - 'params' => '', - 'description' => 'Returns the width of this bitmap', - ), - 'swfbitmap::getHeight' => - array ( - 'return' => 'float', - 'params' => '', - 'description' => 'Returns the height of this bitmap', - ), - 'swfbutton::__construct' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Creates a new SWFButton object', - ), - 'swfbutton::setHit' => - array ( - 'return' => 'void', - 'params' => 'object SWFCharacter', - 'description' => 'Sets the character for this button\'s hit test state', - ), - 'swfbutton::setOver' => - array ( - 'return' => 'void', - 'params' => 'object SWFCharacter', - 'description' => 'Sets the character for this button\'s over state', - ), - 'swfbutton::setUp' => - array ( - 'return' => 'void', - 'params' => 'object SWFCharacter', - 'description' => 'Sets the character for this button\'s up state', - ), - 'swfbutton::setDown' => - array ( - 'return' => 'void', - 'params' => 'object SWFCharacter', - 'description' => 'Sets the character for this button\'s down state', - ), - 'swfbutton::addShape' => - array ( - 'return' => 'void', - 'params' => 'object SWFCharacter, int flags', - 'description' => 'Sets the character to display for the condition described in flags', - ), - 'swfbutton::setMenu' => - array ( - 'return' => 'void', - 'params' => 'int flag', - 'description' => 'enable track as menu button behaviour', - ), - 'swfbutton::setAction' => - array ( - 'return' => 'void', - 'params' => 'object SWFAction', - 'description' => 'Sets the action to perform when button is pressed', - ), - 'swfbutton::addASound' => - array ( - 'return' => 'SWFSoundInstance', - 'params' => 'SWFSound sound, int flags', - 'description' => 'associates a sound with a button transitionNOTE: the transitions are all wrong _UP, _OVER, _DOWN _HIT', - ), - 'swfbutton::addAction' => - array ( - 'return' => 'void', - 'params' => 'object SWFAction, int flags', - 'description' => 'Sets the action to perform when conditions described in flags is met', - ), - 'ming_keypress' => - array ( - 'return' => 'int', - 'params' => 'string str', - 'description' => 'Returns the action flag for keyPress(char)', - ), - 'swfdisplayitem::moveTo' => - array ( - 'return' => 'void', - 'params' => 'int x, int y', - 'description' => 'Moves this SWFDisplayItem to movie coordinates (x, y)', - ), - 'swfdisplayitem::move' => - array ( - 'return' => 'void', - 'params' => 'float dx, float dy', - 'description' => 'Displaces this SWFDisplayItem by (dx, dy) in movie coordinates', - ), - 'swfdisplayitem::scaleTo' => - array ( - 'return' => 'void', - 'params' => 'float xScale [, float yScale]', - 'description' => 'Scales this SWFDisplayItem by xScale in the x direction, yScale in the y, or both to xScale if only one arg', - ), - 'swfdisplayitem::scale' => - array ( - 'return' => 'void', - 'params' => 'float xScale, float yScale', - 'description' => 'Multiplies this SWFDisplayItem\'s current x scale by xScale, its y scale by yScale', - ), - 'swfdisplayitem::rotateTo' => - array ( - 'return' => 'void', - 'params' => 'float degrees', - 'description' => 'Rotates this SWFDisplayItem the given (clockwise) degrees from its original orientation', - ), - 'swfdisplayitem::rotate' => - array ( - 'return' => 'void', - 'params' => 'float degrees', - 'description' => 'Rotates this SWFDisplayItem the given (clockwise) degrees from its current orientation', - ), - 'swfdisplayitem::skewXTo' => - array ( - 'return' => 'void', - 'params' => 'float xSkew', - 'description' => 'Sets this SWFDisplayItem\'s x skew value to xSkew', - ), - 'swfdisplayitem::skewX' => - array ( - 'return' => 'void', - 'params' => 'float xSkew', - 'description' => 'Adds xSkew to this SWFDisplayItem\'s x skew value', - ), - 'swfdisplayitem::skewYTo' => - array ( - 'return' => 'void', - 'params' => 'float ySkew', - 'description' => 'Sets this SWFDisplayItem\'s y skew value to ySkew', - ), - 'swfdisplayitem::skewY' => - array ( - 'return' => 'void', - 'params' => 'float ySkew', - 'description' => 'Adds ySkew to this SWFDisplayItem\'s y skew value', - ), - 'swfdisplayitem::setMatrix' => - array ( - 'return' => 'void', - 'params' => 'float a, float b, float c, float d, float x, float y', - 'description' => 'Sets the item\'s transform matrix', - ), - 'swfdisplayitem::setDepth' => - array ( - 'return' => 'void', - 'params' => 'int depth', - 'description' => 'Sets this SWFDisplayItem\'s z-depth to depth. Items with higher depth values are drawn on top of those with lower values', - ), - 'swfdisplayitem::setRatio' => - array ( - 'return' => 'void', - 'params' => 'float ratio', - 'description' => 'Sets this SWFDisplayItem\'s ratio to ratio. Obviously only does anything if displayitem was created from an SWFMorph', - ), - 'swfdisplayitem::addColor' => - array ( - 'return' => 'void', - 'params' => 'int r, int g, int b [, int a]', - 'description' => 'Sets the add color part of this SWFDisplayItem\'s CXform to (r, g, b [, a]), a defaults to 0', - ), - 'swfdisplayitem::multColor' => - array ( - 'return' => 'void', - 'params' => 'float r, float g, float b [, float a]', - 'description' => 'Sets the multiply color part of this SWFDisplayItem\'s CXform to (r, g, b [, a]), a defaults to 1.0', - ), - 'swfdisplayitem::setName' => - array ( - 'return' => 'void', - 'params' => 'string name', - 'description' => 'Sets this SWFDisplayItem\'s name to name', - ), - 'swfdisplayitem::addAction' => - array ( - 'return' => 'void', - 'params' => 'object SWFAction, int flags', - 'description' => 'Adds this SWFAction to the given SWFSprite instance', - ), - 'swfdisplayitem::setMaskLevel' => - array ( - 'return' => 'void', - 'params' => 'int level', - 'description' => 'defines a MASK layer at level', - ), - 'swfdisplayitem::endMask' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'another way of defining a MASK layer', - ), - 'swffill::__construct' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Creates a new SWFFill object', - ), - 'swffill::moveTo' => - array ( - 'return' => 'void', - 'params' => 'float x, float y', - 'description' => 'Moves this SWFFill to shape coordinates (x,y)', - ), - 'swffill::scaleTo' => - array ( - 'return' => 'void', - 'params' => 'float xScale [, float yScale]', - 'description' => 'Scales this SWFFill by xScale in the x direction, yScale in the y, or both to xScale if only one arg', - ), - 'swffill::rotateTo' => - array ( - 'return' => 'void', - 'params' => 'float degrees', - 'description' => 'Rotates this SWFFill the given (clockwise) degrees from its original orientation', - ), - 'swffill::skewXTo' => - array ( - 'return' => 'void', - 'params' => 'float xSkew', - 'description' => 'Sets this SWFFill\'s x skew value to xSkew', - ), - 'swffill::skewYTo' => - array ( - 'return' => 'void', - 'params' => 'float ySkew', - 'description' => 'Sets this SWFFill\'s y skew value to ySkew', - ), - 'swffontcha::raddChars' => - array ( - 'return' => 'void', - 'params' => 'string', - 'description' => 'adds characters to a font for exporting font', - ), - 'swffontchar::addChars' => - array ( - 'return' => 'void', - 'params' => 'string', - 'description' => 'adds characters to a font for exporting font', - ), - 'swffont::__construct' => - array ( - 'return' => 'void', - 'params' => 'string filename', - 'description' => 'Creates a new SWFFont object from given file', - ), - 'swffont::getWidth' => - array ( - 'return' => 'float', - 'params' => 'string str', - 'description' => 'Calculates the width of the given string in this font at full height', - ), - 'swffont::getUTF8Width' => - array ( - 'return' => 'int', - 'params' => 'string', - 'description' => 'Calculates the width of the given string in this font at full height', - ), - 'swffont::getWideWidth' => - array ( - 'return' => 'int', - 'params' => 'string', - 'description' => 'Calculates the width of the given string in this font at full height', - ), - 'swffont::getAscent' => - array ( - 'return' => 'float', - 'params' => '', - 'description' => 'Returns the ascent of the font, or 0 if not available', - ), - 'swffont::getDescent' => - array ( - 'return' => 'float', - 'params' => '', - 'description' => 'Returns the descent of the font, or 0 if not available', - ), - 'swffont::getLeading' => - array ( - 'return' => 'float', - 'params' => '', - 'description' => 'Returns the leading of the font, or 0 if not available', - ), - 'swffont::addChars' => - array ( - 'return' => 'void', - 'params' => 'string', - 'description' => 'adds characters to a font required within textfields', - ), - 'swffont::getShape' => - array ( - 'return' => 'string', - 'params' => 'code', - 'description' => 'Returns the glyph shape of a char as a text string', - ), - 'swfgradient::__construct' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Creates a new SWFGradient object', - ), - 'swfgradient::addEntry' => - array ( - 'return' => 'void', - 'params' => 'float ratio, int r, int g, int b [, int a]', - 'description' => 'Adds given entry to the gradient', - ), - 'swfmorph::__construct' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Creates a new SWFMorph object', - ), - 'swfmorph::getShape1' => - array ( - 'return' => 'object', - 'params' => '', - 'description' => 'Return\'s this SWFMorph\'s start shape object', - ), - 'swfmorph::getShape2' => - array ( - 'return' => 'object', - 'params' => '', - 'description' => 'Return\'s this SWFMorph\'s start shape object', - ), - 'swfsound::__construct' => - array ( - 'return' => 'void', - 'params' => 'string filename, int flags', - 'description' => 'Creates a new SWFSound object from given file', - ), - 'swfvideostream_init' => - array ( - 'return' => 'class', - 'params' => '[file]', - 'description' => 'Returns a SWVideoStream object', - ), - 'swfprebuiltclip_init' => - array ( - 'return' => 'class', - 'params' => '[file]', - 'description' => 'Returns a SWFPrebuiltClip object', - ), - 'swfmovie::__construct' => - array ( - 'return' => 'void', - 'params' => 'int version', - 'description' => 'Creates swfmovie object according to the passed version', - ), - 'swfmovie::nextframe' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => '', - ), - 'swfmovie::labelframe' => - array ( - 'return' => 'void', - 'params' => 'object SWFBlock', - 'description' => '', - ), - 'swfmovie::add' => - array ( - 'return' => 'object', - 'params' => 'object SWFBlock', - 'description' => '', - ), - 'swfmovie::output' => - array ( - 'return' => 'int', - 'params' => '[int compression]', - 'description' => '', - ), - 'swfmovie::saveToFile' => - array ( - 'return' => 'int', - 'params' => 'stream x [, int compression]', - 'description' => '', - ), - 'swfmovie::save' => - array ( - 'return' => 'int', - 'params' => 'mixed where [, int compression]', - 'description' => 'Saves the movie. \'where\' can be stream and the movie will be saved there otherwise it is treated as string and written in file with that name', - ), - 'swfmovie::setBackground' => - array ( - 'return' => 'void', - 'params' => 'int r, int g, int b', - 'description' => 'Sets background color (r,g,b)', - ), - 'swfmovie::setRate' => - array ( - 'return' => 'void', - 'params' => 'float rate', - 'description' => 'Sets movie rate', - ), - 'swfmovie::setDimension' => - array ( - 'return' => 'void', - 'params' => 'float x, float y', - 'description' => 'Sets movie dimension', - ), - 'swfmovie::setFrames' => - array ( - 'return' => 'void', - 'params' => 'int frames', - 'description' => 'Sets number of frames', - ), - 'swfmovie::streamMP3' => - array ( - 'return' => 'void', - 'params' => 'mixed file', - 'description' => 'Sets sound stream of the SWF movie. The parameter can be stream or string.', - ), - 'swfshape::__construct' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Creates a new SWFShape object', - ), - 'swfshape::setline' => - array ( - 'return' => 'void', - 'params' => 'int width, int r, int g, int b [, int a]', - 'description' => 'Sets the current line style for this SWFShape', - ), - 'swfshape::addfill' => - array ( - 'return' => 'object', - 'params' => 'mixed arg1, int arg2, [int b [, int a]]', - 'description' => 'Returns a fill object, for use with swfshape_setleftfill and swfshape_setrightfill. If 1 or 2 parameter(s) is (are) passed first should be object (from gradient class) and the second int (flags). Gradient fill is performed. If 3 or 4 parameters are passed : r, g, b [, a]. Solid fill is performed.', - ), - 'swfshape::setleftfill' => - array ( - 'return' => 'void', - 'params' => 'int arg1 [, int g ,int b [,int a]]', - 'description' => 'Sets the right side fill style to fill in case only one parameter is passed. When 3 or 4 parameters are passed they are treated as : int r, int g, int b, int a . Solid fill is performed in this case before setting right side fill type.', - ), - 'swfshape::movepento' => - array ( - 'return' => 'void', - 'params' => 'float x, float y', - 'description' => 'Moves the pen to shape coordinates (x, y)', - ), - 'swfshape::movepen' => - array ( - 'return' => 'void', - 'params' => 'float x, float y', - 'description' => 'Moves the pen from its current location by vector (x, y)', - ), - 'swfshape::drawlineto' => - array ( - 'return' => 'void', - 'params' => 'float x, float y', - 'description' => 'Draws a line from the current pen position to shape coordinates (x, y) in the current line style', - ), - 'swfshape::drawline' => - array ( - 'return' => 'void', - 'params' => 'float dx, float dy', - 'description' => 'Draws a line from the current pen position (x, y) to the point (x+dx, y+dy) in the current line style', - ), - 'swfshape::drawcurveto' => - array ( - 'return' => 'void', - 'params' => 'float ax, float ay, float bx, float by [, float dx, float dy]', - 'description' => 'Draws a curve from the current pen position (x,y) to the point (bx, by) in the current line style, using point (ax, ay) as a control point. Or draws a cubic bezier to point (dx, dy) with control points (ax, ay) and (bx, by)', - ), - 'swfshape::drawcurve' => - array ( - 'return' => 'void', - 'params' => 'float adx, float ady, float bdx, float bdy [, float cdx, float cdy]', - 'description' => 'Draws a curve from the current pen position (x, y) to the point (x+bdx, y+bdy) in the current line style, using point (x+adx, y+ady) as a control point or draws a cubic bezier to point (x+cdx, x+cdy) with control points (x+adx, y+ady) and (x+bdx, y+bdy)', - ), - 'swfshape::drawglyph' => - array ( - 'return' => 'void', - 'params' => 'SWFFont font, string character [, int size]', - 'description' => 'Draws the first character in the given string into the shape using the glyph definition from the given font', - ), - 'swfshape::drawcircle' => - array ( - 'return' => 'void', - 'params' => 'float r', - 'description' => 'Draws a circle of radius r centered at the current location, in a counter-clockwise fashion', - ), - 'swfshape::drawarc' => - array ( - 'return' => 'void', - 'params' => 'float r, float startAngle, float endAngle', - 'description' => 'Draws an arc of radius r centered at the current location, from angle startAngle to angle endAngle measured clockwise from 12 o\'clock', - ), - 'swfshape::drawcubic' => - array ( - 'return' => 'void', - 'params' => 'float bx, float by, float cx, float cy, float dx, float dy', - 'description' => 'Draws a cubic bezier curve using the current position and the three given points as control points', - ), - 'swfsprite::__construct' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Creates a new SWFSprite object', - ), - 'swfsprite::add' => - array ( - 'return' => 'object', - 'params' => 'object SWFCharacter', - 'description' => 'Adds the character to the sprite, returns a displayitem object', - ), - 'swfsprite::remove' => - array ( - 'return' => 'void', - 'params' => 'object SWFDisplayItem', - 'description' => 'Remove the named character from the sprite\'s display list', - ), - 'swfsprite::nextFrame' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Moves the sprite to the next frame', - ), - 'swfsprite::labelFrame' => - array ( - 'return' => 'void', - 'params' => 'string label', - 'description' => 'Labels frame', - ), - 'swfsprite::setFrames' => - array ( - 'return' => 'void', - 'params' => 'int frames', - 'description' => 'Sets the number of frames in this SWFSprite', - ), - 'swftext::__construct' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Creates new SWFText object', - ), - 'swftext::setFont' => - array ( - 'return' => 'void', - 'params' => 'object font', - 'description' => 'Sets this SWFText object\'s current font to given font', - ), - 'swftext::setHeight' => - array ( - 'return' => 'void', - 'params' => 'float height', - 'description' => 'Sets this SWFText object\'s current height to given height', - ), - 'swftext::setSpacing' => - array ( - 'return' => 'void', - 'params' => 'float spacing', - 'description' => 'Sets this SWFText object\'s current letterspacing to given spacing', - ), - 'swftext::setColor' => - array ( - 'return' => 'void', - 'params' => 'int r, int g, int b [, int a]', - 'description' => 'Sets this SWFText object\'s current color to the given color', - ), - 'swftext::moveTo' => - array ( - 'return' => 'void', - 'params' => 'float x, float y', - 'description' => 'Moves this SWFText object\'s current pen position to (x, y) in text coordinates', - ), - 'swftext::addString' => - array ( - 'return' => 'void', - 'params' => 'string text', - 'description' => 'Writes the given text into this SWFText object at the current pen position, using the current font, height, spacing, and color', - ), - 'swftext::addUTF8String' => - array ( - 'return' => 'void', - 'params' => 'string text', - 'description' => 'Writes the given text into this SWFText object at the current pen position,using the current font, height, spacing, and color', - ), - 'swftext::addWideString' => - array ( - 'return' => 'void', - 'params' => 'string text', - 'description' => 'Writes the given text into this SWFText object at the current pen position,using the current font, height, spacing, and color', - ), - 'swftext::getWidth' => - array ( - 'return' => 'float', - 'params' => 'string str', - 'description' => 'Calculates the width of the given string in this text objects current font and size', - ), - 'swftext::getUTF8Width' => - array ( - 'return' => 'double', - 'params' => 'string', - 'description' => 'calculates the width of the given string in this text objects current font and size', - ), - 'swftext::getWideWidth' => - array ( - 'return' => 'double', - 'params' => 'string', - 'description' => 'calculates the width of the given string in this text objects current font and size', - ), - 'swftext::getAscent' => - array ( - 'return' => 'float', - 'params' => '', - 'description' => 'Returns the ascent of the current font at its current size, or 0 if not available', - ), - 'swftext::getDescent' => - array ( - 'return' => 'float', - 'params' => '', - 'description' => 'Returns the descent of the current font at its current size, or 0 if not available', - ), - 'swftext::getLeading' => - array ( - 'return' => 'float', - 'params' => '', - 'description' => 'Returns the leading of the current font at its current size, or 0 if not available', - ), - 'swftextfield::__construct' => - array ( - 'return' => 'void', - 'params' => '[int flags]', - 'description' => 'Creates a new SWFTextField object', - ), - 'swftextfield::setFont' => - array ( - 'return' => 'void', - 'params' => 'object font', - 'description' => 'Sets the font for this textfield', - ), - 'swftextfield::setBounds' => - array ( - 'return' => 'void', - 'params' => 'float width, float height', - 'description' => 'Sets the width and height of this textfield', - ), - 'swftextfield::align' => - array ( - 'return' => 'void', - 'params' => 'int alignment', - 'description' => 'Sets the alignment of this textfield', - ), - 'swftextfield::setHeight' => - array ( - 'return' => 'void', - 'params' => 'float height', - 'description' => 'Sets the font height of this textfield', - ), - 'swftextfield::setLeftMargin' => - array ( - 'return' => 'void', - 'params' => 'float margin', - 'description' => 'Sets the left margin of this textfield', - ), - 'swftextfield::setRightMargin' => - array ( - 'return' => 'void', - 'params' => 'float margin', - 'description' => 'Sets the right margin of this textfield', - ), - 'swftextfield::setMargins' => - array ( - 'return' => 'void', - 'params' => 'float left, float right', - 'description' => 'Sets both margins of this textfield', - ), - 'swftextfield::setIndentation' => - array ( - 'return' => 'void', - 'params' => 'float indentation', - 'description' => 'Sets the indentation of the first line of this textfield', - ), - 'swftextfield::setLineSpacing' => - array ( - 'return' => 'void', - 'params' => 'float space', - 'description' => 'Sets the line spacing of this textfield', - ), - 'swftextfield::setColor' => - array ( - 'return' => 'void', - 'params' => 'int r, int g, int b [, int a]', - 'description' => 'Sets the color of this textfield', - ), - 'swftextfield::setName' => - array ( - 'return' => 'void', - 'params' => 'string var_name', - 'description' => 'Sets the variable name of this textfield', - ), - 'swftextfield::addString' => - array ( - 'return' => 'void', - 'params' => 'string str', - 'description' => 'Adds the given string to this textfield', - ), - 'swftextfield::setPadding' => - array ( - 'return' => 'void', - 'params' => 'float padding', - 'description' => 'Sets the padding of this textfield', - ), - 'swftextfield::addChars' => - array ( - 'return' => 'void', - 'params' => 'string', - 'description' => 'adds characters to a font that will be available within a textfield', - ), - 'SplObjectStorage::attach' => - array ( - 'return' => 'void', - 'params' => '$obj', - 'description' => 'Attaches an object to the storage if not yet contained', - ), - 'SplObjectStorage::detach' => - array ( - 'return' => 'void', - 'params' => '$obj', - 'description' => 'Detaches an object from the storage', - ), - 'SplObjectStorage::contains' => - array ( - 'return' => 'bool', - 'params' => '$obj', - 'description' => 'Determine whethe an object is contained in the storage', - ), - 'SplObjectStorage::count' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Determine number of objects in storage', - ), - 'SplObjectStorage::rewind' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => '', - ), - 'SplObjectStorage::valid' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => '', - ), - 'SplObjectStorage::key' => - array ( - 'return' => 'mixed', - 'params' => '', - 'description' => '', - ), - 'SplObjectStorage::current' => - array ( - 'return' => 'mixed', - 'params' => '', - 'description' => '', - ), - 'SplObjectStorage::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => '', - ), - 'RecursiveIteratorIterator::rewind' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Rewind the iterator to the first element of the top level inner iterator.', - ), - 'RecursiveIteratorIterator::valid' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Check whether the current position is valid', - ), - 'RecursiveIteratorIterator::key' => - array ( - 'return' => 'mixed', - 'params' => '', - 'description' => 'Access the current key', - ), - 'RecursiveIteratorIterator::current' => - array ( - 'return' => 'mixed', - 'params' => '', - 'description' => 'Access the current element value', - ), - 'RecursiveIteratorIterator::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Move forward to the next element', - ), - 'RecursiveIteratorIterator::getDepth' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get the current depth of the recursive iteration', - ), - 'RecursiveIteratorIterator::getSubIterator' => - array ( - 'return' => 'RecursiveIterator', - 'params' => '[int level]', - 'description' => 'The current active sub iterator or the iterator at specified level', - ), - 'RecursiveIteratorIterator::getInnerIterator' => - array ( - 'return' => 'RecursiveIterator', - 'params' => '', - 'description' => 'The current active sub iterator', - ), - 'RecursiveIteratorIterator::beginIteration' => - array ( - 'return' => 'RecursiveIterator', - 'params' => '', - 'description' => 'Called when iteration begins (after first rewind() call)', - ), - 'RecursiveIteratorIterator::endIteration' => - array ( - 'return' => 'RecursiveIterator', - 'params' => '', - 'description' => 'Called when iteration ends (when valid() first returns false', - ), - 'RecursiveIteratorIterator::callHasChildren' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Called for each element to test whether it has children', - ), - 'RecursiveIteratorIterator::callGetChildren' => - array ( - 'return' => 'RecursiveIterator', - 'params' => '', - 'description' => 'Return children of current element', - ), - 'RecursiveIteratorIterator::beginChildren' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Called when recursing one level down', - ), - 'RecursiveIteratorIterator::endChildren' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Called when end recursing one level', - ), - 'RecursiveIteratorIterator::nextElement' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Called when the next element is available', - ), - 'RecursiveIteratorIterator::setMaxDepth' => - array ( - 'return' => 'void', - 'params' => '[$max_depth = -1]', - 'description' => 'Set the maximum allowed depth (or any depth if pmax_depth = -1]', - ), - 'RecursiveIteratorIterator::getMaxDepth' => - array ( - 'return' => 'int|false', - 'params' => '', - 'description' => 'Return the maximum accepted depth or false if any depth is allowed', - ), - 'FilterIterator::__construct' => - array ( - 'return' => 'void', - 'params' => 'Iterator it', - 'description' => 'Create an Iterator from another iterator', - ), - 'FilterIterator::getInnerIterator' => - array ( - 'return' => 'Iterator', - 'params' => '', - 'description' => 'proto Iterator CachingIterator::getInnerIterator()proto Iterator LimitIterator::getInnerIterator()proto Iterator ParentIterator::getInnerIterator()Get the inner iterator', - ), - 'ParentIterator::rewind' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'proto void IteratorIterator::rewind()Rewind the iterator', - ), - 'FilterIterator::valid' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'proto bool ParentIterator::valid()proto bool IteratorIterator::valid()proto bool NoRewindIterator::valid()Check whether the current element is valid', - ), - 'FilterIterator::key' => - array ( - 'return' => 'mixed', - 'params' => '', - 'description' => 'proto mixed CachingIterator::key()proto mixed LimitIterator::key()proto mixed ParentIterator::key()proto mixed IteratorIterator::key()proto mixed NoRewindIterator::key()proto mixed AppendIterator::key()Get the current key', - ), - 'FilterIterator::current' => - array ( - 'return' => 'mixed', - 'params' => '', - 'description' => 'proto mixed CachingIterator::current()proto mixed LimitIterator::current()proto mixed ParentIterator::current()proto mixed IteratorIterator::current()proto mixed NoRewindIterator::current()proto mixed AppendIterator::current()Get the current element value', - ), - 'ParentIterator::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'proto void IteratorIterator::next()proto void NoRewindIterator::next()Move the iterator forward', - ), - 'FilterIterator::rewind' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Rewind the iterator', - ), - 'FilterIterator::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Move the iterator forward', - ), - 'RecursiveFilterIterator::__construct' => - array ( - 'return' => 'void', - 'params' => 'RecursiveIterator it', - 'description' => 'Create a RecursiveFilterIterator from a RecursiveIterator', - ), - 'RecursiveFilterIterator::hasChildren' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Check whether the inner iterator\'s current element has children', - ), - 'RecursiveFilterIterator::getChildren' => - array ( - 'return' => 'RecursiveFilterIterator', - 'params' => '', - 'description' => 'Return the inner iterator\'s children contained in a RecursiveFilterIterator', - ), - 'ParentIterator::__construct' => - array ( - 'return' => 'void', - 'params' => 'RecursiveIterator it', - 'description' => 'Create a ParentIterator from a RecursiveIterator', - ), - 'ParentIterator::hasChildren' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Check whether the inner iterator\'s current element has children', - ), - 'ParentIterator::getChildren' => - array ( - 'return' => 'ParentIterator', - 'params' => '', - 'description' => 'Return the inner iterator\'s children contained in a ParentIterator', - ), - 'LimitIterator::rewind' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Rewind the iterator to the specified starting offset', - ), - 'LimitIterator::valid' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Check whether the current element is valid', - ), - 'LimitIterator::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Move the iterator forward', - ), - 'LimitIterator::seek' => - array ( - 'return' => 'void', - 'params' => 'int position', - 'description' => 'Seek to the given position', - ), - 'LimitIterator::getPosition' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Return the current position', - ), - 'CachingIterator::__construct' => - array ( - 'return' => 'void', - 'params' => 'Iterator it [, flags = CIT_CALL_TOSTRING]', - 'description' => 'Construct a CachingIterator from an Iterator', - ), - 'CachingIterator::rewind' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Rewind the iterator', - ), - 'CachingIterator::valid' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Check whether the current element is valid', - ), - 'CachingIterator::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Move the iterator forward', - ), - 'CachingIterator::hasNext' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Check whether the inner iterator has a valid next element', - ), - 'CachingIterator::__toString' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Return the string representation of the current element', - ), - 'RecursiveCachingIterator::__construct' => - array ( - 'return' => 'void', - 'params' => 'RecursiveIterator it [, flags = CIT_CALL_TOSTRING]', - 'description' => 'Create an iterator from a RecursiveIterator', - ), - 'RecursiveCachingIterator::hasChildren' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Check whether the current element of the inner iterator has children', - ), - 'RecursiveCachingIterator::getChildren' => - array ( - 'return' => 'RecursiveCachingIterator', - 'params' => '', - 'description' => 'Return the inner iterator\'s children as a RecursiveCachingIterator', - ), - 'IteratorIterator::__construct' => - array ( - 'return' => 'void', - 'params' => 'Traversable it', - 'description' => 'Create an iterator from anything that is traversable', - ), - 'NoRewindIterator::__construct' => - array ( - 'return' => 'void', - 'params' => 'Iterator it', - 'description' => 'Create an iterator from another iterator', - ), - 'NoRewindIterator::rewind' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Prevent a call to inner iterators rewind()', - ), - 'NoRewindIterator::valid' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Return inner iterators valid()', - ), - 'NoRewindIterator::key' => - array ( - 'return' => 'mixed', - 'params' => '', - 'description' => 'Return inner iterators key()', - ), - 'NoRewindIterator::current' => - array ( - 'return' => 'mixed', - 'params' => '', - 'description' => 'Return inner iterators current()', - ), - 'NoRewindIterator::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Return inner iterators next()', - ), - 'InfiniteIterator::__construct' => - array ( - 'return' => 'void', - 'params' => 'Iterator it', - 'description' => 'Create an iterator from another iterator', - ), - 'InfiniteIterator::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Prevent a call to inner iterators rewind() (internally the current data will be fetched if valid())', - ), - 'EmptyIterator::rewind' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Does nothing', - ), - 'EmptyIterator::valid' => - array ( - 'return' => 'false', - 'params' => '', - 'description' => 'Return false', - ), - 'EmptyIterator::key' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Throws exception BadMethodCallException', - ), - 'EmptyIterator::current' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Throws exception BadMethodCallException', - ), - 'EmptyIterator::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Does nothing', - ), - 'AppendIterator::__construct' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Create an AppendIterator', - ), - 'AppendIterator::append' => - array ( - 'return' => 'void', - 'params' => 'Iterator it', - 'description' => 'Append an iterator', - ), - 'AppendIterator::rewind' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Rewind to the first iterator and rewind the first iterator, too', - ), - 'AppendIterator::valid' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Check if the current state is valid', - ), - 'AppendIterator::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Forward to next element', - ), - 'iterator_to_array' => - array ( - 'return' => 'array', - 'params' => 'Traversable it', - 'description' => 'Copy the iterator into an array', - ), - 'iterator_count' => - array ( - 'return' => 'int', - 'params' => 'Traversable it', - 'description' => 'Count the elements in an iterator', - ), - 'class_parents' => - array ( - 'return' => 'array', - 'params' => 'object instance', - 'description' => 'Return an array containing the names of all parent classes', - ), - 'class_implements' => - array ( - 'return' => 'array', - 'params' => 'mixed what [, bool autoload ]', - 'description' => 'Return all classes and interfaces implemented by SPL', - ), - 'spl_classes' => - array ( - 'return' => 'array', - 'params' => '', - 'description' => 'Return an array containing the names of all clsses and interfaces defined in SPL', - ), - 'spl_autoload' => - array ( - 'return' => 'void', - 'params' => 'string class_name [, string file_extensions]', - 'description' => 'Default implementation for __autoload()', - ), - 'spl_autoload_extensions' => - array ( - 'return' => 'string', - 'params' => '[string file_extensions]', - 'description' => 'Register and return default file extensions for spl_autoload', - ), - 'spl_autoload_call' => - array ( - 'return' => 'void', - 'params' => 'string class_name', - 'description' => 'Try all registerd autoload function to load the requested class', - ), - 'spl_autoload_register' => - array ( - 'return' => 'bool', - 'params' => '[mixed autoload_function = "spl_autoload" [, throw = true]]', - 'description' => 'Register given function as __autoload() implementation', - ), - 'spl_autoload_unregister' => - array ( - 'return' => 'bool', - 'params' => 'mixed autoload_function', - 'description' => 'Unregister given function as __autoload() implementation', - ), - 'spl_autoload_functions' => - array ( - 'return' => 'false|array', - 'params' => '', - 'description' => 'Return all registered __autoload() functionns', - ), - 'SimpleXMLIterator::rewind' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Rewind to first element', - ), - 'SimpleXMLIterator::valid' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Check whether iteration is valid', - ), - 'SimpleXMLIterator::current' => - array ( - 'return' => 'SimpleXMLIterator', - 'params' => '', - 'description' => 'Get current element', - ), - 'SimpleXMLIterator::key' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Get name of current child element', - ), - 'SimpleXMLIterator::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Move to next element', - ), - 'SimpleXMLIterator::hasChildren' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Check whether element has children (elements)', - ), - 'SimpleXMLIterator::getChildren' => - array ( - 'return' => 'SimpleXMLIterator', - 'params' => '', - 'description' => 'Get child element iterator', - ), - 'SimpleXMLIterator::count' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get number of child elements', - ), - 'DirectoryIterator::__construct' => - array ( - 'return' => 'void', - 'params' => 'string path', - 'description' => 'Cronstructs a new dir iterator from a path.', - ), - 'DirectoryIterator::rewind' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Rewind dir back to the start', - ), - 'DirectoryIterator::key' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Return current dir entry', - ), - 'DirectoryIterator::current' => - array ( - 'return' => 'DirectoryIterator', - 'params' => '', - 'description' => 'Return this (needed for Iterator interface)', - ), - 'DirectoryIterator::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Move to next entry', - ), - 'DirectoryIterator::valid' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Check whether dir contains more entries', - ), - 'SplFileInfo::getPath' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Return the path', - ), - 'SplFileInfo::getFilename' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Return filename only', - ), - 'DirectoryIterator::getFilename' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Return filename of current dir entry', - ), - 'SplFileInfo::getPathname' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Return path and filename', - ), - 'RecursiveDirectoryIterator::key' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Return getPathname() or getFilename() depending on flags', - ), - 'RecursiveDirectoryIterator::current' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Return getFilename(), getFileInfo() or $this depending on flags', - ), - 'DirectoryIterator::isDot' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Returns true if current entry is \'.\' or \'..\'', - ), - 'SplFileInfo::__construct' => - array ( - 'return' => 'void', - 'params' => 'string file_name', - 'description' => 'Cronstructs a new SplFileInfo from a path.', - ), - 'SplFileInfo::getPerms' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get file permissions', - ), - 'SplFileInfo::getInode' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get file inode', - ), - 'SplFileInfo::getSize' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get file size', - ), - 'SplFileInfo::getOwner' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get file owner', - ), - 'SplFileInfo::getGroup' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get file group', - ), - 'SplFileInfo::getATime' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get last access time of file', - ), - 'SplFileInfo::getMTime' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get last modification time of file', - ), - 'SplFileInfo::getCTime' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get inode modification time of file', - ), - 'SplFileInfo::getType' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Get file type', - ), - 'SplFileInfo::isWritable' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Returns true if file can be written', - ), - 'SplFileInfo::isReadable' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Returns true if file can be read', - ), - 'SplFileInfo::isExecutable' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Returns true if file is executable', - ), - 'SplFileInfo::isFile' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Returns true if file is a regular file', - ), - 'SplFileInfo::isDir' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Returns true if file is directory', - ), - 'SplFileInfo::isLink' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Returns true if file is symbolic link', - ), - 'SplFileInfo::openFile' => - array ( - 'return' => 'SplFileObject', - 'params' => '[string mode = \'r\' [, bool use_include_path [, resource context]]]', - 'description' => 'Open the current file', - ), - 'SplFileInfo::setFileClass' => - array ( - 'return' => 'void', - 'params' => '[string class_name]', - 'description' => 'Class to use in openFile()', - ), - 'SplFileInfo::setInfoClass' => - array ( - 'return' => 'void', - 'params' => '[string class_name]', - 'description' => 'Class to use in getFileInfo(), getPathInfo()', - ), - 'SplFileInfo::getFileInfo' => - array ( - 'return' => 'SplFileInfo', - 'params' => '[string $class_name]', - 'description' => 'Get/copy file info', - ), - 'SplFileInfo::getPathInfo' => - array ( - 'return' => 'SplFileInfo', - 'params' => '[string $class_name]', - 'description' => 'Get/copy file info', - ), - 'RecursiveDirectoryIterator::__construct' => - array ( - 'return' => 'void', - 'params' => 'string path [, int flags]', - 'description' => 'Cronstructs a new dir iterator from a path.', - ), - 'RecursiveDirectoryIterator::rewind' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Rewind dir back to the start', - ), - 'RecursiveDirectoryIterator::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Move to next entry', - ), - 'RecursiveDirectoryIterator::hasChildren' => - array ( - 'return' => 'bool', - 'params' => '[bool $allow_links = false]', - 'description' => 'Returns whether current entry is a directory and not \'.\' or \'..\'', - ), - 'DirectoryIterator::getChildren' => - array ( - 'return' => 'RecursiveDirectoryIterator', - 'params' => '', - 'description' => 'Returns an iterator for the current entry if it is a directory', - ), - 'RecursiveDirectoryIterator::getSubPath' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Get sub path', - ), - 'RecursiveDirectoryIterator::getSubPathname' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Get sub path and file name', - ), - 'SplFileObject::__construct' => - array ( - 'return' => 'void', - 'params' => '[int max_memory]', - 'description' => 'Construct a new temp file object', - ), - 'SplFileObject::rewind' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Rewind the file and read the first line', - ), - 'SplFileObject::getFilename' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Return the filename', - ), - 'SplFileObject::eof' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Return whether end of file is reached', - ), - 'SplFileObject::valid' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Return !eof()', - ), - 'SplFileObject::fgets' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Rturn next line from file', - ), - 'SplFileObject::current' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Return current line from file', - ), - 'SplFileObject::key' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Return line number', - ), - 'SplFileObject::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Read next line', - ), - 'SplFileObject::setFlags' => - array ( - 'return' => 'void', - 'params' => 'int flags', - 'description' => 'Set file handling flags', - ), - 'SplFileObject::getFlags' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get file handling flags', - ), - 'SplFileObject::setMaxLineLen' => - array ( - 'return' => 'void', - 'params' => 'int max_len', - 'description' => 'Set maximum line length', - ), - 'SplFileObject::getMaxLineLen' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get maximum line length', - ), - 'SplFileObject::hasChildren' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Return false', - ), - 'SplFileObject::getChildren' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Read NULL', - ), - 'SplFileObject::fgetcsv' => - array ( - 'return' => 'array', - 'params' => '[string delimiter [, string enclosure]]', - 'description' => 'Return current line as csv', - ), - 'SplFileObject::flock' => - array ( - 'return' => 'bool', - 'params' => 'int operation [, int &wouldblock]', - 'description' => 'Portable file locking', - ), - 'SplFileObject::fflush' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Flush the file', - ), - 'SplFileObject::ftell' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Return current file position', - ), - 'SplFileObject::fseek' => - array ( - 'return' => 'int', - 'params' => 'int pos [, int whence = SEEK_SET]', - 'description' => 'Return current file position', - ), - 'SplFileObject::fgetc' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get a character form the file', - ), - 'SplFileObject::fgetss' => - array ( - 'return' => 'string', - 'params' => '[string allowable_tags]', - 'description' => 'Get a line from file pointer and strip HTML tags', - ), - 'SplFileObject::fpassthru' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Output all remaining data from a file pointer', - ), - 'SplFileObject::fscanf' => - array ( - 'return' => 'bool', - 'params' => 'string format [, string ...]', - 'description' => 'Implements a mostly ANSI compatible fscanf()', - ), - 'SplFileObject::fwrite' => - array ( - 'return' => 'mixed', - 'params' => 'string str [, int length]', - 'description' => 'Binary-safe file write', - ), - 'SplFileObject::fstat' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Stat() on a filehandle', - ), - 'SplFileObject::ftruncate' => - array ( - 'return' => 'bool', - 'params' => 'int size', - 'description' => 'Truncate file to \'size\' length', - ), - 'SplFileObject::seek' => - array ( - 'return' => 'void', - 'params' => 'int line_pos', - 'description' => 'Seek to specified line', - ), - 'ArrayObject::offsetExists' => - array ( - 'return' => 'bool', - 'params' => 'mixed $index', - 'description' => 'proto bool ArrayIterator::offsetExists(mixed $index)Returns whether the requested $index exists.', - ), - 'ArrayObject::offsetGet' => - array ( - 'return' => 'bool', - 'params' => 'mixed $index', - 'description' => 'proto bool ArrayIterator::offsetGet(mixed $index)Returns the value at the specified $index.', - ), - 'ArrayObject::offsetSet' => - array ( - 'return' => 'void', - 'params' => 'mixed $index, mixed $newval', - 'description' => 'proto void ArrayIterator::offsetSet(mixed $index, mixed $newval)Sets the value at the specified $index to $newval.', - ), - 'ArrayObject::append' => - array ( - 'return' => 'void', - 'params' => 'mixed $newval', - 'description' => 'proto void ArrayIterator::append(mixed $newval)Appends the value (cannot be called for objects).', - ), - 'ArrayObject::offsetUnset' => - array ( - 'return' => 'void', - 'params' => 'mixed $index', - 'description' => 'proto void ArrayIterator::offsetUnset(mixed $index)Unsets the value at the specified $index.', - ), - 'ArrayObject::__construct' => - array ( - 'return' => 'void', - 'params' => 'array|object ar = array() [, int flags = 0 [, string iterator_class = "ArrayIterator"]]', - 'description' => 'proto void ArrayIterator::__construct(array|object ar = array() [, int flags = 0])Cronstructs a new array iterator from a path.', - ), - 'ArrayObject::setIteratorClass' => - array ( - 'return' => 'void', - 'params' => 'string iterator_class', - 'description' => 'Set the class used in getIterator.', - ), - 'ArrayObject::getIteratorClass' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Get the class used in getIterator.', - ), - 'ArrayObject::getFlags' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get flags', - ), - 'ArrayObject::setFlags' => - array ( - 'return' => 'void', - 'params' => 'int flags', - 'description' => 'Set flags', - ), - 'ArrayObject::exchangeArray' => - array ( - 'return' => 'Array|Object', - 'params' => 'Array|Object ar = array()', - 'description' => 'Replace the referenced array or object with a new one and return the old one (right now copy - to be changed)', - ), - 'ArrayObject::getIterator' => - array ( - 'return' => 'ArrayIterator', - 'params' => '', - 'description' => 'Create a new iterator from a ArrayObject instance', - ), - 'ArrayIterator::rewind' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Rewind array back to the start', - ), - 'ArrayIterator::seek' => - array ( - 'return' => 'void', - 'params' => 'int $position', - 'description' => 'Seek to position.', - ), - 'ArrayObject::count' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'proto int ArrayIterator::count()Return the number of elements in the Iterator.', - ), - 'ArrayIterator::current' => - array ( - 'return' => 'mixed|NULL', - 'params' => '', - 'description' => 'Return current array entry', - ), - 'ArrayIterator::key' => - array ( - 'return' => 'mixed|NULL', - 'params' => '', - 'description' => 'Return current array key', - ), - 'ArrayIterator::next' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => 'Move to next entry', - ), - 'ArrayIterator::valid' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Check whether array contains more entries', - ), - 'RecursiveArrayIterator::hasChildren' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => 'Check whether current element has children (e.g. is an array)', - ), - 'RecursiveArrayIterator::getChildren' => - array ( - 'return' => 'object', - 'params' => '', - 'description' => 'Create a sub iterator for the current element (same class as $this)', - ), - 'hash' => - array ( - 'return' => 'string', - 'params' => 'string algo, string data[, bool raw_output = false]', - 'description' => 'Generate a hash of a given input stringReturns lowercase hexits by default', - ), - 'hash_file' => - array ( - 'return' => 'string', - 'params' => 'string algo, string filename[, bool raw_output = false]', - 'description' => 'Generate a hash of a given fileReturns lowercase hexits by default', - ), - 'hash_hmac' => - array ( - 'return' => 'string', - 'params' => 'string algo, string data, string key[, bool raw_output = false]', - 'description' => 'Generate a hash of a given input string with a key using HMACReturns lowercase hexits by default', - ), - 'hash_hmac_file' => - array ( - 'return' => 'string', - 'params' => 'string algo, string filename, string key[, bool raw_output = false]', - 'description' => 'Generate a hash of a given file with a key using HMACReturns lowercase hexits by default', - ), - 'hash_init' => - array ( - 'return' => 'resource', - 'params' => 'string algo[, int options, string key]', - 'description' => 'Initialize a hashing context', - ), - 'hash_update' => - array ( - 'return' => 'bool', - 'params' => 'resource context, string data', - 'description' => 'Pump data into the hashing algorithm', - ), - 'hash_update_stream' => - array ( - 'return' => 'int', - 'params' => 'resource context, resource handle[, integer length]', - 'description' => 'Pump data into the hashing algorithm from an open stream', - ), - 'hash_update_file' => - array ( - 'return' => 'bool', - 'params' => 'resource context, string filename[, resource context]', - 'description' => 'Pump data into the hashing algorithm from a file', - ), - 'hash_final' => - array ( - 'return' => 'string', - 'params' => 'resource context[, bool raw_output=false]', - 'description' => 'Output resulting digest', - ), - 'hash_algos' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Return a list of registered hashing algorithms', - ), - 'sybase_unbuffered_query' => - array ( - 'return' => 'int', - 'params' => 'string query [, int link_id]', - 'description' => 'Send Sybase query', - ), - 'sybase_fetch_assoc' => - array ( - 'return' => 'array', - 'params' => 'int result', - 'description' => 'Fetch row as array without numberic indices', - ), - 'sybase_min_client_severity' => - array ( - 'return' => 'void', - 'params' => 'int severity', - 'description' => 'Sets minimum client severity', - ), - 'sybase_min_server_severity' => - array ( - 'return' => 'void', - 'params' => 'int severity', - 'description' => 'Sets minimum server severity', - ), - 'sybase_deadlock_retry_count' => - array ( - 'return' => 'void', - 'params' => 'int retry_count', - 'description' => 'Sets deadlock retry count', - ), - 'sybase_set_message_handler' => - array ( - 'return' => 'bool', - 'params' => 'mixed error_func [, resource connection]', - 'description' => 'Set the error handler, to be called when a server message is raised.If error_func is NULL the handler will be deleted', - ), - 'mhash_count' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Gets the number of available hashes', - ), - 'mhash_get_block_size' => - array ( - 'return' => 'int', - 'params' => 'int hash', - 'description' => 'Gets the block size of hash', - ), - 'mhash_get_hash_name' => - array ( - 'return' => 'string', - 'params' => 'int hash', - 'description' => 'Gets the name of hash', - ), - 'mhash' => - array ( - 'return' => 'string', - 'params' => 'int hash, string data [, string key]', - 'description' => 'Hash data with hash', - ), - 'mhash_keygen_s2k' => - array ( - 'return' => 'string', - 'params' => 'int hash, string input_password, string salt, int bytes', - 'description' => 'Generates a key using hash functions', - ), - 'tidy_parse_string' => - array ( - 'return' => 'bool', - 'params' => 'string input [, mixed config_options [, string encoding]]', - 'description' => 'Parse a document stored in a string', - ), - 'tidy_get_error_buffer' => - array ( - 'return' => 'string', - 'params' => '[boolean detailed]', - 'description' => 'Return warnings and errors which occured parsing the specified document', - ), - 'tidy_get_output' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Return a string representing the parsed tidy markup', - ), - 'tidy_parse_file' => - array ( - 'return' => 'boolean', - 'params' => 'string file [, mixed config_options [, string encoding [, bool use_include_path]]]', - 'description' => 'Parse markup in file or URI', - ), - 'tidy_clean_repair' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Execute configured cleanup and repair operations on parsed markup', - ), - 'tidy_repair_string' => - array ( - 'return' => 'boolean', - 'params' => 'string data [, mixed config_file [, string encoding]]', - 'description' => 'Repair a string using an optionally provided configuration file', - ), - 'tidy_repair_file' => - array ( - 'return' => 'boolean', - 'params' => 'string filename [, mixed config_file [, string encoding [, bool use_include_path]]]', - 'description' => 'Repair a file using an optionally provided configuration file', - ), - 'tidy_diagnose' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Run configured diagnostics on parsed and repaired markup.', - ), - 'tidy_get_release' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Get release date (version) for Tidy library', - ), - 'tidy_get_opt_doc' => - array ( - 'return' => 'string', - 'params' => 'tidy resource, string optname', - 'description' => 'Returns the documentation for the given option name', - ), - 'tidy_get_config' => - array ( - 'return' => 'array', - 'params' => '', - 'description' => 'Get current Tidy configuarion', - ), - 'tidy_get_status' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get status of specfied document.', - ), - 'tidy_get_html_ver' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get the Detected HTML version for the specified document.', - ), - 'tidy_is_xhtml' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Indicates if the document is a generic (non HTML/XHTML) XML document.', - ), - 'tidy_error_count' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Returns the Number of Tidy errors encountered for specified document.', - ), - 'tidy_warning_count' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Returns the Number of Tidy warnings encountered for specified document.', - ), - 'tidy_access_count' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Returns the Number of Tidy accessibility warnings encountered for specified document.', - ), - 'tidy_config_count' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Returns the Number of Tidy configuration errors encountered for specified document.', - ), - 'tidy_getopt' => - array ( - 'return' => 'mixed', - 'params' => 'string option', - 'description' => 'Returns the value of the specified configuration option for the tidy document.', - ), - 'tidy_get_root' => - array ( - 'return' => 'TidyNode', - 'params' => '', - 'description' => 'Returns a TidyNode Object representing the root of the tidy parse tree', - ), - 'tidy_get_html' => - array ( - 'return' => 'TidyNode', - 'params' => '', - 'description' => 'Returns a TidyNode Object starting from the tag of the tidy parse tree', - ), - 'tidy_get_head' => - array ( - 'return' => 'TidyNode', - 'params' => '', - 'description' => 'Returns a TidyNode Object starting from the tag of the tidy parse tree', - ), - 'tidy_get_body' => - array ( - 'return' => 'TidyNode', - 'params' => 'resource tidy', - 'description' => 'Returns a TidyNode Object starting from the tag of the tidy parse tree', - ), - 'tidyNode::hasChildren' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Returns true if this node has children', - ), - 'tidyNode::hasSiblings' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Returns true if this node has siblings', - ), - 'tidyNode::isComment' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Returns true if this node represents a comment', - ), - 'tidyNode::isHtml' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Returns true if this node is part of a HTML document', - ), - 'tidyNode::isXhtml' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Returns true if this node is part of a XHTML document', - ), - 'tidyNode::isXml' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Returns true if this node is part of a XML document', - ), - 'tidyNode::isText' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Returns true if this node represents text (no markup)', - ), - 'tidyNode::isJste' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Returns true if this node is JSTE', - ), - 'tidyNode::isAsp' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Returns true if this node is ASP', - ), - 'tidyNode::isPhp' => - array ( - 'return' => 'boolean', - 'params' => '', - 'description' => 'Returns true if this node is PHP', - ), - 'smfi_setflags' => - array ( - 'return' => 'string', - 'params' => 'long flags', - 'description' => 'Sets the flags describing the actions the filter may take.', - ), - 'smfi_settimeout' => - array ( - 'return' => 'string', - 'params' => 'long timeout', - 'description' => 'Sets the number of seconds libmilter will wait for an MTA connection before timing out a socket.', - ), - 'smfi_getsymval' => - array ( - 'return' => 'string', - 'params' => 'string macro', - 'description' => 'Returns the value of the given macro or NULL if the macro is not defined.', - ), - 'smfi_setreply' => - array ( - 'return' => 'string', - 'params' => 'string rcode, string xcode, string message', - 'description' => 'Directly set the SMTP error reply code for this connection.This code will be used on subsequent error replies resulting from actions taken by this filter.', - ), - 'smfi_addheader' => - array ( - 'return' => 'string', - 'params' => 'string headerf, string headerv', - 'description' => 'Adds a header to the current message.', - ), - 'smfi_chgheader' => - array ( - 'return' => 'string', - 'params' => 'string headerf, string headerv', - 'description' => 'Changes a header\'s value for the current message.', - ), - 'smfi_addrcpt' => - array ( - 'return' => 'string', - 'params' => 'string rcpt', - 'description' => 'Add a recipient to the message envelope.', - ), - 'smfi_delrcpt' => - array ( - 'return' => 'string', - 'params' => 'string rcpt', - 'description' => 'Removes the named recipient from the current message\'s envelope.', - ), - 'smfi_replacebody' => - array ( - 'return' => 'string', - 'params' => 'string body', - 'description' => 'Replaces the body of the current message. If called more than once,subsequent calls result in data being appended to the new body.', - ), - 'virtual' => - array ( - 'return' => 'bool', - 'params' => 'string filename', - 'description' => 'Perform an Apache sub-request', - ), - 'getallheaders' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Alias for apache_request_headers()', - ), - 'apache_response_headers' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Fetch all HTTP response headers', - ), - 'apache_note' => - array ( - 'return' => 'string', - 'params' => 'string note_name [, string note_value]', - 'description' => 'Get and set Apache request notes', - ), - 'apache_setenv' => - array ( - 'return' => 'bool', - 'params' => 'string variable, string value [, bool walk_to_top]', - 'description' => 'Set an Apache subprocess_env variable', - ), - 'apache_getenv' => - array ( - 'return' => 'bool', - 'params' => 'string variable [, bool walk_to_top]', - 'description' => 'Get an Apache subprocess_env variable', - ), - 'apache_get_version' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Fetch Apache version', - ), - 'apache_get_modules' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Get a list of loaded Apache modules', - ), - 'nsapi_virtual' => - array ( - 'return' => 'bool', - 'params' => 'string uri', - 'description' => 'Perform an NSAPI sub-request', - ), - 'nsapi_request_headers' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Get all headers from the request', - ), - 'nsapi_response_headers' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Get all headers from the response', - ), - 'ApacheRequest::filename' => - array ( - 'return' => 'string', - 'params' => '[string new_filename]', - 'description' => '', - ), - 'ApacheRequest::uri' => - array ( - 'return' => 'string', - 'params' => '[string new_uri]', - 'description' => '', - ), - 'ApacheRequest::unparsed_uri' => - array ( - 'return' => 'string', - 'params' => '[string new_unparsed_uri]', - 'description' => '', - ), - 'ApacheRequest::path_info' => - array ( - 'return' => 'string', - 'params' => '[string new_path_info]', - 'description' => '', - ), - 'ApacheRequest::args' => - array ( - 'return' => 'string', - 'params' => '[string new_args]', - 'description' => '', - ), - 'ApacheRequest::boundary' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::content_type' => - array ( - 'return' => 'string', - 'params' => '[string new_type]', - 'description' => '', - ), - 'ApacheRequest::content_encoding' => - array ( - 'return' => 'string', - 'params' => '[string new_encoding]', - 'description' => '', - ), - 'ApacheRequest::handler' => - array ( - 'return' => 'string', - 'params' => '[string new_handler]', - 'description' => '', - ), - 'ApacheRequest::the_request' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::protocol' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::hostname' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::status_line' => - array ( - 'return' => 'string', - 'params' => '[string new_status_line]', - 'description' => '', - ), - 'ApacheRequest::method' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::proto_num' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::assbackwards' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::proxyreq' => - array ( - 'return' => 'int', - 'params' => '[int new_proxyreq]', - 'description' => '', - ), - 'ApacheRequest::chunked' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::header_only' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::request_time' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::status' => - array ( - 'return' => 'int', - 'params' => '[int new_status]', - 'description' => '', - ), - 'ApacheRequest::method_number' => - array ( - 'return' => 'int', - 'params' => '[int method_number]', - 'description' => '', - ), - 'ApacheRequest::allowed' => - array ( - 'return' => 'int', - 'params' => '[int allowed]', - 'description' => '', - ), - 'ApacheRequest::bytes_sent' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::mtime' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::content_length' => - array ( - 'return' => 'int', - 'params' => '[int new_content_length]', - 'description' => '', - ), - 'ApacheRequest::remaining' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::no_cache' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::no_local_copy' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => '', - ), - 'ApacheRequest::read_body' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => '', - ), - 'apache_request_headers_in' => - array ( - 'return' => 'array', - 'params' => '', - 'description' => '* fetch all incoming request headers', - ), - 'apache_request_headers_out' => - array ( - 'return' => 'array', - 'params' => '[{string name|array list} [, string value [, bool replace = false]]]', - 'description' => '* fetch all outgoing request headers', - ), - 'apache_request_err_headers_out' => - array ( - 'return' => 'array', - 'params' => '[{string name|array list} [, string value [, bool replace = false]]]', - 'description' => '* fetch all headers that go out in case of an error or a subrequest', - ), - 'apache_request_server_port' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => '', - ), - 'apache_request_remote_host' => - array ( - 'return' => 'int', - 'params' => '[int type]', - 'description' => '', - ), - 'apache_request_update_mtime' => - array ( - 'return' => 'long', - 'params' => '[int dependency_mtime]', - 'description' => '', - ), - 'apache_request_set_etag' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => '', - ), - 'apache_request_set_last_modified' => - array ( - 'return' => 'void', - 'params' => '', - 'description' => '', - ), - 'apache_request_meets_conditions' => - array ( - 'return' => 'long', - 'params' => '', - 'description' => '', - ), - 'apache_request_discard_request_body' => - array ( - 'return' => 'long', - 'params' => '', - 'description' => '', - ), - 'apache_request_satisfies' => - array ( - 'return' => 'long', - 'params' => '', - 'description' => '', - ), - 'apache_request_is_initial_req' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => '', - ), - 'apache_request_some_auth_required' => - array ( - 'return' => 'bool', - 'params' => '', - 'description' => '', - ), - 'apache_request_auth_type' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => '', - ), - 'apache_request_auth_name' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => '', - ), - 'apache_request_log_error' => - array ( - 'return' => 'boolean', - 'params' => 'string message, [long facility]', - 'description' => '', - ), - 'apache_request_sub_req_lookup_uri' => - array ( - 'return' => 'object', - 'params' => 'string uri', - 'description' => 'Returns sub-request for the specified uri. You wouldneed to run it yourself with run()', - ), - 'apache_request_sub_req_lookup_file' => - array ( - 'return' => 'object', - 'params' => 'string file', - 'description' => 'Returns sub-request for the specified file. You wouldneed to run it yourself with run().', - ), - 'apache_request_sub_req_method_uri' => - array ( - 'return' => 'object', - 'params' => 'string method, string uri', - 'description' => 'Returns sub-request for the specified file. You wouldneed to run it yourself with run().', - ), - 'apache_request_run' => - array ( - 'return' => 'long', - 'params' => '', - 'description' => 'This is a wrapper for ap_sub_run_req and ap_destory_sub_req. It takessub_request, runs it, destroys it, and returns it\'s status.', - ), - 'apache_child_terminate' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Terminate apache process after this request', - ), - 'apache_request_headers' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Fetch all HTTP request headers', - ), - 'apache_lookup_uri' => - array ( - 'return' => 'object', - 'params' => 'string URI', - 'description' => 'Perform a partial request of the given URI to obtain information about it', - ), - 'apache_reset_timeout' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Reset the Apache write timer', - ), - 'stream_wrapper_register' => - array ( - 'return' => 'bool', - 'params' => 'string protocol, string classname', - 'description' => 'Registers a custom URL protocol handler class', - ), - 'stream_wrapper_unregister' => - array ( - 'return' => 'bool', - 'params' => 'string protocol', - 'description' => 'Unregister a wrapper for the life of the current request.', - ), - 'stream_wrapper_restore' => - array ( - 'return' => 'bool', - 'params' => 'string protocol', - 'description' => 'Restore the original protocol handler, overriding if necessary', - ), - 'set_time_limit' => - array ( - 'return' => 'bool', - 'params' => 'int seconds', - 'description' => 'Sets the maximum time a script can run', - ), - 'ob_list_handlers' => - array ( - 'return' => 'false|array', - 'params' => '', - 'description' => '* List all output_buffers in an array', - ), - 'ob_start' => - array ( - 'return' => 'bool', - 'params' => '[ string|array user_function [, int chunk_size [, bool erase]]]', - 'description' => 'Turn on Output Buffering (specifying an optional output handler).', - ), - 'ob_flush' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Flush (send) contents of the output buffer. The last buffer content is sent to next buffer', - ), - 'ob_clean' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Clean (delete) the current output buffer', - ), - 'ob_end_flush' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Flush (send) the output buffer, and delete current output buffer', - ), - 'ob_end_clean' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Clean the output buffer, and delete current output buffer', - ), - 'ob_get_flush' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Get current buffer contents, flush (send) the output buffer, and delete current output buffer', - ), - 'ob_get_clean' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Get current buffer contents and delete current output buffer', - ), - 'ob_get_contents' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Return the contents of the output buffer', - ), - 'ob_get_level' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Return the nesting level of the output buffer', - ), - 'ob_get_length' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Return the length of the output buffer', - ), - 'ob_get_status' => - array ( - 'return' => 'false|array', - 'params' => '[bool full_status]', - 'description' => 'Return the status of the active or all output buffers', - ), - 'ob_implicit_flush' => - array ( - 'return' => 'void', - 'params' => '[int flag]', - 'description' => 'Turn implicit flush on/off and is equivalent to calling flush() after every output call', - ), - 'output_reset_rewrite_vars' => - array ( - 'return' => 'bool', - 'params' => 'void', - 'description' => 'Reset(clear) URL rewriter values', - ), - 'output_add_rewrite_var' => - array ( - 'return' => 'bool', - 'params' => 'string name, string value', - 'description' => 'Add URL rewriter values', - ), - 'zend_version' => - array ( - 'return' => 'string', - 'params' => 'void', - 'description' => 'Get the version of the Zend Engine', - ), - 'func_num_args' => - array ( - 'return' => 'int', - 'params' => 'void', - 'description' => 'Get the number of arguments that were passed to the function', - ), - 'func_get_arg' => - array ( - 'return' => 'mixed', - 'params' => 'int arg_num', - 'description' => 'Get the $arg_num\'th argument that was passed to the function', - ), - 'func_get_args' => - array ( - 'return' => 'array', - 'params' => '', - 'description' => 'Get an array of the arguments that were passed to the function', - ), - 'strlen' => - array ( - 'return' => 'int', - 'params' => 'string str', - 'description' => 'Get string length', - ), - 'strcmp' => - array ( - 'return' => 'int', - 'params' => 'string str1, string str2', - 'description' => 'Binary safe string comparison', - ), - 'strncmp' => - array ( - 'return' => 'int', - 'params' => 'string str1, string str2, int len', - 'description' => 'Binary safe string comparison', - ), - 'strcasecmp' => - array ( - 'return' => 'int', - 'params' => 'string str1, string str2', - 'description' => 'Binary safe case-insensitive string comparison', - ), - 'strncasecmp' => - array ( - 'return' => 'int', - 'params' => 'string str1, string str2, int len', - 'description' => 'Binary safe string comparison', - ), - 'each' => - array ( - 'return' => 'array', - 'params' => 'array arr', - 'description' => 'Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element', - ), - 'error_reporting' => - array ( - 'return' => 'int', - 'params' => 'int new_error_level=null', - 'description' => 'Return the current error_reporting level, and if an argument was passed - change to the new level', - ), - 'define' => - array ( - 'return' => 'bool', - 'params' => 'string constant_name, mixed value, boolean case_sensitive=true', - 'description' => 'Define a new constant', - ), - 'defined' => - array ( - 'return' => 'bool', - 'params' => 'string constant_name', - 'description' => 'Check whether a constant exists', - ), - 'get_class' => - array ( - 'return' => 'string', - 'params' => '[object object]', - 'description' => 'Retrieves the class name', - ), - 'get_parent_class' => - array ( - 'return' => 'string', - 'params' => '[mixed object]', - 'description' => 'Retrieves the parent class name for object or class or current scope.', - ), - 'is_subclass_of' => - array ( - 'return' => 'bool', - 'params' => 'object object, string class_name', - 'description' => 'Returns true if the object has this class as one of its parents', - ), - 'is_a' => - array ( - 'return' => 'bool', - 'params' => 'object object, string class_name', - 'description' => 'Returns true if the object is of this class or has this class as one of its parents', - ), - 'get_class_vars' => - array ( - 'return' => 'array', - 'params' => 'string class_name', - 'description' => 'Returns an array of default properties of the class.', - ), - 'get_object_vars' => - array ( - 'return' => 'array', - 'params' => 'object obj', - 'description' => 'Returns an array of object properties', - ), - 'get_class_methods' => - array ( - 'return' => 'array', - 'params' => 'mixed class', - 'description' => 'Returns an array of method names for class or class instance.', - ), - 'method_exists' => - array ( - 'return' => 'bool', - 'params' => 'object object, string method', - 'description' => 'Checks if the class method exists', - ), - 'property_exists' => - array ( - 'return' => 'bool', - 'params' => 'mixed object_or_class, string property_name', - 'description' => 'Checks if the object or class has a property', - ), - 'class_exists' => - array ( - 'return' => 'bool', - 'params' => 'string classname [, bool autoload]', - 'description' => 'Checks if the class exists', - ), - 'interface_exists' => - array ( - 'return' => 'bool', - 'params' => 'string classname [, bool autoload]', - 'description' => 'Checks if the class exists', - ), - 'function_exists' => - array ( - 'return' => 'bool', - 'params' => 'string function_name', - 'description' => 'Checks if the function exists', - ), - 'leak' => - array ( - 'return' => 'void', - 'params' => 'int num_bytes=3', - 'description' => 'Cause an intentional memory leak, for testing/debugging purposes', - ), - 'get_included_files' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Returns an array with the file names that were include_once()\'d', - ), - 'trigger_error' => - array ( - 'return' => 'void', - 'params' => 'string messsage [, int error_type]', - 'description' => 'Generates a user-level error/warning/notice message', - ), - 'set_error_handler' => - array ( - 'return' => 'string', - 'params' => 'string error_handler [, int error_types]', - 'description' => 'Sets a user-defined error handler function. Returns the previously defined error handler, or false on error', - ), - 'restore_error_handler' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => 'Restores the previously defined error handler function', - ), - 'set_exception_handler' => - array ( - 'return' => 'string', - 'params' => 'callable exception_handler', - 'description' => 'Sets a user-defined exception handler function. Returns the previously defined exception handler, or false on error', - ), - 'restore_exception_handler' => - array ( - 'return' => 'void', - 'params' => 'void', - 'description' => 'Restores the previously defined exception handler function', - ), - 'get_declared_classes' => - array ( - 'return' => 'array', - 'params' => '', - 'description' => 'Returns an array of all declared classes.', - ), - 'get_declared_interfaces' => - array ( - 'return' => 'array', - 'params' => '', - 'description' => 'Returns an array of all declared interfaces.', - ), - 'get_defined_functions' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Returns an array of all defined functions', - ), - 'get_defined_vars' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Returns an associative array of names and values of all currently defined variable names (variables in the current scope)', - ), - 'create_function' => - array ( - 'return' => 'string', - 'params' => 'string args, string code', - 'description' => 'Creates an anonymous function, and returns its name (funny, eh?)', - ), - 'get_resource_type' => - array ( - 'return' => 'string', - 'params' => 'resource res', - 'description' => 'Get the resource type name for a given resource', - ), - 'get_loaded_extensions' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Return an array containing names of loaded extensions', - ), - 'get_defined_constants' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Return an array containing the names and values of all defined constants', - ), - 'debug_backtrace' => - array ( - 'return' => 'array', - 'params' => 'void', - 'description' => 'Return backtrace as array', - ), - 'extension_loaded' => - array ( - 'return' => 'bool', - 'params' => 'string extension_name', - 'description' => 'Returns true if the named extension is loaded', - ), - 'get_extension_funcs' => - array ( - 'return' => 'array', - 'params' => 'string extension_name', - 'description' => 'Returns an array with the names of functions belonging to the named extension', - ), - 'Exception::__clone' => - array ( - 'return' => 'Exception', - 'params' => '', - 'description' => 'Clone the exception object', - ), - 'Exception::getFile' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Get the file in which the exception occurred', - ), - 'Exception::getLine' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get the line in which the exception occurred', - ), - 'Exception::getMessage' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Get the exception message', - ), - 'Exception::getCode' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get the exception code', - ), - 'Exception::getTrace' => - array ( - 'return' => 'array', - 'params' => '', - 'description' => 'Get the stack trace for the location in which the exception occurred', - ), - 'ErrorException::getSeverity' => - array ( - 'return' => 'int', - 'params' => '', - 'description' => 'Get the exception severity', - ), - 'Exception::getTraceAsString' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Obtain the backtrace for the exception as a string (instead of an array)', - ), - 'Exception::__toString' => - array ( - 'return' => 'string', - 'params' => '', - 'description' => 'Obtain the string representation of the Exception object', - ), -) ; - - public function get($k) { - if (isset($this->prototype[$k])) { - return $this->prototype[$k]; - } else { - return false; - } - } - - static function getInstance() { - if (is_null(self::$instance)) { - $class = __CLASS__; - self::$instance = new $class(); - } - return self::$instance; - } -} \ No newline at end of file diff --git a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/VerbosePrint.php b/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/VerbosePrint.php deleted file mode 100644 index 425937c1de..0000000000 --- a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Extensions/VerbosePrint.php +++ /dev/null @@ -1,56 +0,0 @@ -registerCommand('#^p #', $this, 'cmdPrint', 'p ', 'print the variable verbosly'); - - $opt = PHP_Shell_Options::getInstance(); - $opt->registerOption('verboseprint', $this, 'optSetVerbose'); -*/ - } - - /** - * handle the 'p ' command - * - * set the verbose flag - * - * @return string the pure command-string without the 'p ' command - */ - public function cmdPrint($l) { - $this->oneshot_verbose = true; - - $cmd = substr($l, 2); - - return $cmd; - } - - public function optSetVerbose($key, $val) { - switch($val) { - case "false": - case "on": - case "1": - $this->opt_verbose = true; - default: - $this->opt_verbose = false; - break; - } - } - - /** - * check if we have a verbose print-out - * - * @return bool 1 if verbose, 0 otherwise - */ - public function isVerbose() { - $v = $this->opt_verbose || $this->oneshot_verbose; - - $this->oneshot_verbose = false; - - return $v; - } -} - - diff --git a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Options.php b/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Options.php deleted file mode 100644 index 8f5e57d1c6..0000000000 --- a/gui/baculum/framework/3rdParty/PhpShell/PHP/Shell/Options.php +++ /dev/null @@ -1,132 +0,0 @@ -registerCommand('#^:set #', $this, 'cmdSet', ':set ', 'set a shell variable'); - } - - /** - * register a option - * - * @param string name of the option - * @param object a object handle - * @param string method-name of the setor in the object - * @param string (unused) - */ - public function registerOption($option, $obj, $setor, $getor = null) { - if (!method_exists($obj, $setor)) { - throw new Exception(sprintf("setor %s doesn't exist on class %s", $setor, get_class($obj))); - } - - $this->options[trim($option)] = array("obj" => $obj, "setor" => $setor); - } - - /** - * set a shell-var - * - * :set al to enable autoload - * :set bg=dark to enable highlighting with a dark backgroud - */ - public function cmdSet($l) { - if (!preg_match('#:set\s+([a-z]+)\s*(?:=\s*([a-z0-9]+)\s*)?$#i', $l, $a)) { - print(':set failed: either :set
    + + + + + + + + + + + + + + + + + + + + + + + + @@ -41,10 +65,10 @@ projects. - + - - + + @@ -92,8 +116,8 @@ projects. - - + + diff --git a/gui/baculum/framework/Caching/TAPCCache.php b/gui/baculum/framework/Caching/TAPCCache.php index ec0aa35ccb..ee6e165cdd 100644 --- a/gui/baculum/framework/Caching/TAPCCache.php +++ b/gui/baculum/framework/Caching/TAPCCache.php @@ -3,9 +3,9 @@ * TAPCCache class file * * @author Alban Hanry - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Caching */ diff --git a/gui/baculum/framework/Caching/TCache.php b/gui/baculum/framework/Caching/TCache.php index 99b3f24c54..fb41344632 100644 --- a/gui/baculum/framework/Caching/TCache.php +++ b/gui/baculum/framework/Caching/TCache.php @@ -3,9 +3,9 @@ * TCache and cache dependency classes. * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Caching */ diff --git a/gui/baculum/framework/Caching/TDbCache.php b/gui/baculum/framework/Caching/TDbCache.php index deb95f259b..a296cf48a9 100644 --- a/gui/baculum/framework/Caching/TDbCache.php +++ b/gui/baculum/framework/Caching/TDbCache.php @@ -3,9 +3,9 @@ * TDbCache class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Caching */ @@ -461,12 +461,12 @@ class TDbCache extends TCache try { $sql='SELECT value FROM '.$this->_cacheTable.' WHERE itemkey=\''.$key.'\' AND (expire=0 OR expire>'.time().') ORDER BY expire DESC'; $command=$this->getDbConnection()->createCommand($sql); - return Prado::unserialize($command->queryScalar()); + return unserialize($command->queryScalar()); } catch(Exception $e) { $this->initializeCache(true); - return Prado::unserialize($command->queryScalar()); + return unserialize($command->queryScalar()); } } @@ -503,7 +503,7 @@ class TDbCache extends TCache { $command=$this->getDbConnection()->createCommand($sql); $command->bindValue(':key',$key,PDO::PARAM_STR); - $command->bindValue(':value',Prado::serialize($value),PDO::PARAM_LOB); + $command->bindValue(':value',serialize($value),PDO::PARAM_LOB); $command->execute(); return true; } diff --git a/gui/baculum/framework/Caching/TEACache.php b/gui/baculum/framework/Caching/TEACache.php index f57011a61a..e2231764fe 100644 --- a/gui/baculum/framework/Caching/TEACache.php +++ b/gui/baculum/framework/Caching/TEACache.php @@ -1 +1 @@ - * @link http://www.pradosoft.com/ * @copyright Copyright © 2005-2014 PradoSoft * @license http://www.pradosoft.com/license/ * @package System.Caching */ /** * TEACache class * * TEACache implements a cache application module based on {@link http://eaccelerator.net/ eAccelerator}. * * By definition, cache does not ensure the existence of a value * even if it never expires. Cache is not meant to be an persistent storage. * * To use this module, the eAccelerator PHP extension must be loaded and enabled * * Please note that as of v0.9.6, eAccelerator no longer supports data caching. * This means if you still want to use this component, your eAccelerator should be of 0.9.5.x or lower version. * * Some usage examples of TEACache are as follows, * * $cache=new TEACache; // TEACache may also be loaded as a Prado application module * $cache->init(null); * $cache->add('object',$object); * $object2=$cache->get('object'); * * * If loaded, TEACache will register itself with {@link TApplication} as the * cache module. It can be accessed via {@link TApplication::getCache()}. * * TEACache may be configured in application configuration file as follows * * * * * @author Dario Rigolin * @package System.Caching * @since 3.2.2 */ class TEACache extends TCache { /** * Initializes this module. * This method is required by the IModule interface. * @param TXmlElement configuration for this module, can be null * @throws TConfigurationException if eaccelerator extension is not installed or not started, check your php.ini */ public function init($config) { if(!function_exists('eaccelerator_get')) throw new TConfigurationException('eacceleratorcache_extension_required'); parent::init($config); } /** * Retrieves a value from cache with a specified key. * This is the implementation of the method declared in the parent class. * @param string a unique key identifying the cached value * @return string the value stored in cache, false if the value is not in the cache or expired. */ protected function getValue($key) { $value = eaccelerator_get($key); return ($value === null) ? false : $value; } /** * Stores a value identified by a key in cache. * This is the implementation of the method declared in the parent class. * * @param string the key identifying the value to be cached * @param string the value to be cached * @param integer the number of seconds in which the cached value will expire. 0 means never expire. * @return boolean true if the value is successfully stored into cache, false otherwise */ protected function setValue($key,$value,$expire) { return eaccelerator_put($key,$value,$expire); } /** * Stores a value identified by a key into cache if the cache does not contain this key. * This is the implementation of the method declared in the parent class. * * @param string the key identifying the value to be cached * @param string the value to be cached * @param integer the number of seconds in which the cached value will expire. 0 means never expire. * @return boolean true if the value is successfully stored into cache, false otherwise */ protected function addValue($key,$value,$expire) { return (null === eaccelerator_get($key)) ? $this->setValue($key,$value,$expire) : false; } /** * Deletes a value with the specified key from cache * This is the implementation of the method declared in the parent class. * @param string the key of the value to be deleted * @return boolean if no error happens during deletion */ protected function deleteValue($key) { return eaccelerator_rm($key); } /** * Deletes all values from cache. * Be careful of performing this operation if the cache is shared by multiple applications. */ public function flush() { // first, remove expired content from cache eaccelerator_gc(); // now, remove leftover cache-keys $keys = eaccelerator_list_keys(); foreach($keys as $key) $this->deleteValue(substr($key['name'], 1)); return true; } } \ No newline at end of file + * @link https://github.com/pradosoft/prado * @copyright Copyright © 2005-2016 The PRADO Group * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Caching */ /** * TEACache class * * TEACache implements a cache application module based on {@link http://eaccelerator.net/ eAccelerator}. * * By definition, cache does not ensure the existence of a value * even if it never expires. Cache is not meant to be an persistent storage. * * To use this module, the eAccelerator PHP extension must be loaded and enabled * * Please note that as of v0.9.6, eAccelerator no longer supports data caching. * This means if you still want to use this component, your eAccelerator should be of 0.9.5.x or lower version. * * Some usage examples of TEACache are as follows, * * $cache=new TEACache; // TEACache may also be loaded as a Prado application module * $cache->init(null); * $cache->add('object',$object); * $object2=$cache->get('object'); * * * If loaded, TEACache will register itself with {@link TApplication} as the * cache module. It can be accessed via {@link TApplication::getCache()}. * * TEACache may be configured in application configuration file as follows * * * * * @author Dario Rigolin * @package System.Caching * @since 3.2.2 */ class TEACache extends TCache { /** * Initializes this module. * This method is required by the IModule interface. * @param TXmlElement configuration for this module, can be null * @throws TConfigurationException if eaccelerator extension is not installed or not started, check your php.ini */ public function init($config) { if(!function_exists('eaccelerator_get')) throw new TConfigurationException('eacceleratorcache_extension_required'); parent::init($config); } /** * Retrieves a value from cache with a specified key. * This is the implementation of the method declared in the parent class. * @param string a unique key identifying the cached value * @return string the value stored in cache, false if the value is not in the cache or expired. */ protected function getValue($key) { $value = eaccelerator_get($key); return ($value === null) ? false : $value; } /** * Stores a value identified by a key in cache. * This is the implementation of the method declared in the parent class. * * @param string the key identifying the value to be cached * @param string the value to be cached * @param integer the number of seconds in which the cached value will expire. 0 means never expire. * @return boolean true if the value is successfully stored into cache, false otherwise */ protected function setValue($key,$value,$expire) { return eaccelerator_put($key,$value,$expire); } /** * Stores a value identified by a key into cache if the cache does not contain this key. * This is the implementation of the method declared in the parent class. * * @param string the key identifying the value to be cached * @param string the value to be cached * @param integer the number of seconds in which the cached value will expire. 0 means never expire. * @return boolean true if the value is successfully stored into cache, false otherwise */ protected function addValue($key,$value,$expire) { return (null === eaccelerator_get($key)) ? $this->setValue($key,$value,$expire) : false; } /** * Deletes a value with the specified key from cache * This is the implementation of the method declared in the parent class. * @param string the key of the value to be deleted * @return boolean if no error happens during deletion */ protected function deleteValue($key) { return eaccelerator_rm($key); } /** * Deletes all values from cache. * Be careful of performing this operation if the cache is shared by multiple applications. */ public function flush() { // first, remove expired content from cache eaccelerator_gc(); // now, remove leftover cache-keys $keys = eaccelerator_list_keys(); foreach($keys as $key) $this->deleteValue(substr($key['name'], 1)); return true; } } \ No newline at end of file diff --git a/gui/baculum/framework/Caching/TMemCache.php b/gui/baculum/framework/Caching/TMemCache.php index c2d4901b86..ba4a200807 100644 --- a/gui/baculum/framework/Caching/TMemCache.php +++ b/gui/baculum/framework/Caching/TMemCache.php @@ -4,9 +4,9 @@ * * @author Qiang Xue * @author Carl G. Mathisen - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Caching */ @@ -73,7 +73,7 @@ * of TMemCache. * * Automatic compression of values may be used (using zlib extension) by setting {@link getThreshold Threshold} and {@link getMinSavings MinSavings} properties. - * NB : MemCache server(s) must be restarted to apply settings. Require (PECL memcache >= 2.0.0). + * NB : MemCache server(s) must be restarted to apply settings. Require (PECL memcache >= 2.0.0) or memcached if {@link useMemcached} is true. * * @author Qiang Xue * @package System.Caching @@ -129,6 +129,14 @@ class TMemCache extends TCache private $_failureCallback = null; + /** + * @var boolean whether to use memcached or memcache as the underlying caching extension. + * If true {@link http://pecl.php.net/package/memcached memcached} will be used. + * If false {@link http://pecl.php.net/package/memcache memcache}. will be used. + * Defaults to false. + */ + private $_useMemcached=false; + /** * @var array list of servers available */ @@ -140,7 +148,7 @@ class TMemCache extends TCache */ public function __destruct() { - if($this->_cache!==null) + if($this->_cache!==null && !$this->_useMemcached) $this->_cache->close(); } @@ -155,9 +163,12 @@ class TMemCache extends TCache */ public function init($config) { - if(!extension_loaded('memcache')) + if(!extension_loaded('memcache') && !$this->_useMemcached) throw new TConfigurationException('memcache_extension_required'); - $this->_cache=new Memcache; + if(!extension_loaded('memcached') && $this->_useMemcached) + throw new TConfigurationException('memcached_extension_required'); + + $this->_cache = $this->_useMemcached ? new Memcached : new Memcache; $this->loadConfig($config); if(count($this->_servers)) { @@ -258,7 +269,27 @@ class TMemCache extends TCache else $this->_port=TPropertyValue::ensureInteger($value); } + + /** + * @return boolean if memcached instead memcache + */ + public function getUseMemcached() + { + return $this->_useMemcached; + } + /** + * @param string if memcached instead memcache + * @throws TInvalidOperationException if the module is already initialized + */ + public function setUseMemcached($value) + { + if($this->_initialized) + throw new TInvalidOperationException('memcache_host_unchangeable'); + else + $this->_useMemcached=$value; + } + /** * @return integer minimum value length before attempting to compress */ @@ -321,7 +352,11 @@ class TMemCache extends TCache */ protected function setValue($key,$value,$expire) { - return $this->_cache->set($key,$value,0,$expire); + if($this->_useMemcached) { + return $this->_cache->set($key,$value,$expire); + } else { + return $this->_cache->set($key,$value,0,$expire); + } } /** @@ -335,7 +370,11 @@ class TMemCache extends TCache */ protected function addValue($key,$value,$expire) { - return $this->_cache->add($key,$value,0,$expire); + if($this->_useMemcached) { + $this->_cache->add($key,$value,$expire); + } else { + return $this->_cache->add($key,$value,0,$expire); + } } /** diff --git a/gui/baculum/framework/Caching/TSqliteCache.php b/gui/baculum/framework/Caching/TSqliteCache.php index 7689b58e22..db7639d953 100644 --- a/gui/baculum/framework/Caching/TSqliteCache.php +++ b/gui/baculum/framework/Caching/TSqliteCache.php @@ -3,9 +3,9 @@ * TSqliteCache class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Caching */ @@ -161,7 +161,7 @@ class TSqliteCache extends TCache { $sql='SELECT value FROM '.self::CACHE_TABLE.' WHERE key=\''.$key.'\' AND (expire=0 OR expire>'.time().') LIMIT 1'; if(($ret=$this->_db->query($sql))!=false && ($row=$ret->fetch(SQLITE_ASSOC))!==false) - return Prado::unserialize($row['value']); + return unserialize($row['value']); else return false; } @@ -178,7 +178,7 @@ class TSqliteCache extends TCache protected function setValue($key,$value,$expire) { $expire=($expire<=0)?0:time()+$expire; - $sql='REPLACE INTO '.self::CACHE_TABLE.' VALUES(\''.$key.'\',\''.sqlite_escape_string(Prado::serialize($value)).'\','.$expire.')'; + $sql='REPLACE INTO '.self::CACHE_TABLE.' VALUES(\''.$key.'\',\''.sqlite_escape_string(serialize($value)).'\','.$expire.')'; return $this->_db->query($sql)!==false; } @@ -194,7 +194,7 @@ class TSqliteCache extends TCache protected function addValue($key,$value,$expire) { $expire=($expire<=0)?0:time()+$expire; - $sql='INSERT INTO '.self::CACHE_TABLE.' VALUES(\''.$key.'\',\''.sqlite_escape_string(Prado::serialize($value)).'\','.$expire.')'; + $sql='INSERT INTO '.self::CACHE_TABLE.' VALUES(\''.$key.'\',\''.sqlite_escape_string(serialize($value)).'\','.$expire.')'; return @$this->_db->query($sql)!==false; } diff --git a/gui/baculum/framework/Caching/TXCache.php b/gui/baculum/framework/Caching/TXCache.php index b29fd38c98..ef771bd367 100644 --- a/gui/baculum/framework/Caching/TXCache.php +++ b/gui/baculum/framework/Caching/TXCache.php @@ -3,9 +3,9 @@ * TXCache class file * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Caching */ diff --git a/gui/baculum/framework/Collections/TAttributeCollection.php b/gui/baculum/framework/Collections/TAttributeCollection.php index 775ad054b9..eb3cb29eb5 100644 --- a/gui/baculum/framework/Collections/TAttributeCollection.php +++ b/gui/baculum/framework/Collections/TAttributeCollection.php @@ -3,9 +3,9 @@ * TAttributeCollection classes * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Collections */ @@ -44,6 +44,19 @@ class TAttributeCollection extends TMap { private $_caseSensitive=false; + /** + * Returns an array with the names of all variables of this object that should NOT be serialized + * because their value is the default one or useless to be cached for the next page loads. + * Reimplement in derived classes to add new variables, but remember to also to call the parent + * implementation first. + */ + protected function _getZappableSleepProps(&$exprops) + { + parent::_getZappableSleepProps($exprops); + if ($this->_caseSensitive===false) + $exprops[] = "\0TAttributeCollection\0_caseSensitive"; + } + /** * Returns a property value or an event handler list by property or event name. * This method overrides the parent implementation by returning diff --git a/gui/baculum/framework/Collections/TDummyDataSource.php b/gui/baculum/framework/Collections/TDummyDataSource.php index 7345982a97..275d847312 100644 --- a/gui/baculum/framework/Collections/TDummyDataSource.php +++ b/gui/baculum/framework/Collections/TDummyDataSource.php @@ -3,9 +3,9 @@ * TDummyDataSource, TDummyDataSourceIterator classes * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Collections */ diff --git a/gui/baculum/framework/Collections/TList.php b/gui/baculum/framework/Collections/TList.php index 765fa2ceed..6e9e16f91e 100644 --- a/gui/baculum/framework/Collections/TList.php +++ b/gui/baculum/framework/Collections/TList.php @@ -3,9 +3,9 @@ * TList, TListIterator classes * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Collections */ @@ -406,78 +406,7 @@ class TList extends TComponent implements IteratorAggregate,ArrayAccess,Countabl * @package System.Collections * @since 3.0 */ -class TListIterator implements Iterator +class TListIterator extends ArrayIterator { - /** - * @var array the data to be iterated through - */ - private $_d; - /** - * @var integer index of the current item - */ - private $_i; - /** - * @var integer count of the data items - */ - private $_c; - - /** - * Constructor. - * @param array the data to be iterated through - */ - public function __construct(&$data) - { - $this->_d=&$data; - $this->_i=0; - $this->_c=count($this->_d); - } - - /** - * Rewinds internal array pointer. - * This method is required by the interface Iterator. - */ - public function rewind() - { - $this->_i=0; - } - - /** - * Returns the key of the current array item. - * This method is required by the interface Iterator. - * @return integer the key of the current array item - */ - public function key() - { - return $this->_i; - } - - /** - * Returns the current array item. - * This method is required by the interface Iterator. - * @return mixed the current array item - */ - public function current() - { - return $this->_d[$this->_i]; - } - - /** - * Moves the internal pointer to the next array item. - * This method is required by the interface Iterator. - */ - public function next() - { - $this->_i++; - } - - /** - * Returns whether there is an item at current position. - * This method is required by the interface Iterator. - * @return boolean - */ - public function valid() - { - return $this->_i<$this->_c; - } } diff --git a/gui/baculum/framework/Collections/TListItemCollection.php b/gui/baculum/framework/Collections/TListItemCollection.php index 90a1fbf170..5c146b6efd 100644 --- a/gui/baculum/framework/Collections/TListItemCollection.php +++ b/gui/baculum/framework/Collections/TListItemCollection.php @@ -5,9 +5,9 @@ * * @author Robin J. Rogge * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Collections */ diff --git a/gui/baculum/framework/Collections/TMap.php b/gui/baculum/framework/Collections/TMap.php index a0ae8d5b58..017f70b8be 100644 --- a/gui/baculum/framework/Collections/TMap.php +++ b/gui/baculum/framework/Collections/TMap.php @@ -3,9 +3,9 @@ * TMap, TMapIterator classes * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Collections */ @@ -41,6 +41,21 @@ class TMap extends TComponent implements IteratorAggregate,ArrayAccess,Countable */ private $_r=false; + /** + * Returns an array with the names of all variables of this object that should NOT be serialized + * because their value is the default one or useless to be cached for the next page loads. + * Reimplement in derived classes to add new variables, but remember to also to call the parent + * implementation first. + */ + protected function _getZappableSleepProps(&$exprops) + { + parent::_getZappableSleepProps($exprops); + if ($this->_d===array()) + $exprops[] = "\0TMap\0_d"; + if ($this->_r===false) + $exprops[] = "\0TMap\0_r"; + } + /** * Constructor. * Initializes the list with an array or an iterable object. @@ -275,76 +290,6 @@ class TMap extends TComponent implements IteratorAggregate,ArrayAccess,Countable * @package System.Collections * @since 3.0 */ -class TMapIterator implements Iterator +class TMapIterator extends ArrayIterator { - /** - * @var array the data to be iterated through - */ - private $_d; - /** - * @var array list of keys in the map - */ - private $_keys; - /** - * @var mixed current key - */ - private $_key; - - /** - * Constructor. - * @param array the data to be iterated through - */ - public function __construct(&$data) - { - $this->_d=&$data; - $this->_keys=array_keys($data); - } - - /** - * Rewinds internal array pointer. - * This method is required by the interface Iterator. - */ - public function rewind() - { - $this->_key=reset($this->_keys); - } - - /** - * Returns the key of the current array element. - * This method is required by the interface Iterator. - * @return mixed the key of the current array element - */ - public function key() - { - return $this->_key; - } - - /** - * Returns the current array element. - * This method is required by the interface Iterator. - * @return mixed the current array element - */ - public function current() - { - return $this->_d[$this->_key]; - } - - /** - * Moves the internal pointer to the next array element. - * This method is required by the interface Iterator. - */ - public function next() - { - $this->_key=next($this->_keys); - } - - /** - * Returns whether there is an element at current position. - * This method is required by the interface Iterator. - * @return boolean - */ - public function valid() - { - return $this->_key!==false; - } } diff --git a/gui/baculum/framework/Collections/TPagedDataSource.php b/gui/baculum/framework/Collections/TPagedDataSource.php index 745fc052c4..7fe43e563a 100644 --- a/gui/baculum/framework/Collections/TPagedDataSource.php +++ b/gui/baculum/framework/Collections/TPagedDataSource.php @@ -3,9 +3,9 @@ * TPagedDataSource, TPagedListIterator, TPagedMapIterator classes * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Collections */ diff --git a/gui/baculum/framework/Collections/TPagedList.php b/gui/baculum/framework/Collections/TPagedList.php index 57e567e03d..a933b4e3af 100644 --- a/gui/baculum/framework/Collections/TPagedList.php +++ b/gui/baculum/framework/Collections/TPagedList.php @@ -3,9 +3,9 @@ * TPagedList, TPagedListFetchDataEventParameter, TPagedListPageChangedEventParameter class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Collections */ @@ -295,7 +295,7 @@ class TPagedList extends TList else { $data=$this->toArray(); - return new TListIterator($data); + return new ArrayIterator($data); } } diff --git a/gui/baculum/framework/Collections/TPriorityList.php b/gui/baculum/framework/Collections/TPriorityList.php index 6a66b5bec5..06dbae0bae 100644 --- a/gui/baculum/framework/Collections/TPriorityList.php +++ b/gui/baculum/framework/Collections/TPriorityList.php @@ -3,9 +3,9 @@ * TPriorityList, TPriorityListIterator classes * * @author Brad Anderson - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Collections */ diff --git a/gui/baculum/framework/Collections/TPriorityMap.php b/gui/baculum/framework/Collections/TPriorityMap.php index 352e56ffda..eebb81b29c 100644 --- a/gui/baculum/framework/Collections/TPriorityMap.php +++ b/gui/baculum/framework/Collections/TPriorityMap.php @@ -3,9 +3,9 @@ * TPriorityMap, TPriorityMapIterator classes * * @author Brad Anderson - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Collections */ diff --git a/gui/baculum/framework/Collections/TQueue.php b/gui/baculum/framework/Collections/TQueue.php index ffa81b9555..ac6f9dfb94 100644 --- a/gui/baculum/framework/Collections/TQueue.php +++ b/gui/baculum/framework/Collections/TQueue.php @@ -3,9 +3,9 @@ * TQueue, TQueueIterator classes * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @version $Id$ * @package System.Collections */ diff --git a/gui/baculum/framework/Collections/TStack.php b/gui/baculum/framework/Collections/TStack.php index 91996aaaa3..8bb42166ea 100644 --- a/gui/baculum/framework/Collections/TStack.php +++ b/gui/baculum/framework/Collections/TStack.php @@ -3,9 +3,9 @@ * TStack, TStackIterator classes * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Collections */ diff --git a/gui/baculum/framework/Data/ActiveRecord/Exceptions/TActiveRecordException.php b/gui/baculum/framework/Data/ActiveRecord/Exceptions/TActiveRecordException.php index 11fb796bed..fd762f67ac 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Exceptions/TActiveRecordException.php +++ b/gui/baculum/framework/Data/ActiveRecord/Exceptions/TActiveRecordException.php @@ -3,9 +3,9 @@ * TActiveRecordException class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord */ diff --git a/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordBelongsTo.php b/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordBelongsTo.php index 2197b48c62..ff3d798ad9 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordBelongsTo.php +++ b/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordBelongsTo.php @@ -3,9 +3,9 @@ * TActiveRecordBelongsTo class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @version $Id$ * @package System.Data.ActiveRecord.Relations */ diff --git a/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordHasMany.php b/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordHasMany.php index 92fe495afc..a14e8faa39 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordHasMany.php +++ b/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordHasMany.php @@ -3,9 +3,9 @@ * TActiveRecordHasMany class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @version $Id$ * @package System.Data.ActiveRecord.Relations */ diff --git a/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordHasManyAssociation.php b/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordHasManyAssociation.php index 1b58f11261..9a5471072f 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordHasManyAssociation.php +++ b/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordHasManyAssociation.php @@ -3,9 +3,9 @@ * TActiveRecordHasManyAssociation class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @version $Id$ * @package System.Data.ActiveRecord.Relations */ diff --git a/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordHasOne.php b/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordHasOne.php index 46c4d9fb3e..9c62cbdddd 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordHasOne.php +++ b/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordHasOne.php @@ -3,9 +3,9 @@ * TActiveRecordHasOne class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @version $Id$ * @package System.Data.ActiveRecord.Relations */ diff --git a/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordRelation.php b/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordRelation.php index 7fe2d46865..354c3e20be 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordRelation.php +++ b/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordRelation.php @@ -3,9 +3,9 @@ * TActiveRecordRelation class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @version $Id$ * @package System.Data.ActiveRecord.Relations */ diff --git a/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordRelationContext.php b/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordRelationContext.php index 961dcd9104..7b8944cb27 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordRelationContext.php +++ b/gui/baculum/framework/Data/ActiveRecord/Relations/TActiveRecordRelationContext.php @@ -3,9 +3,9 @@ * TActiveRecordRelationContext class. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @version $Id$ * @package System.Data.ActiveRecord.Relations */ diff --git a/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php b/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php index 0a2c0cd3a4..4786d86212 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php +++ b/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TIbmScaffoldInput.php @@ -3,9 +3,9 @@ * TIbmScaffoldInput class file. * * @author Cesar Ramos - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord.Scaffold.InputBuilder */ Prado::using('System.Data.ActiveRecord.Scaffold.InputBuilder.TScaffoldInputCommon'); diff --git a/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php b/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php index 1cb7343833..14554d1614 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php +++ b/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMssqlScaffoldInput.php @@ -2,9 +2,9 @@ /** * TMssqlScaffoldInput class file. * - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord.Scaffold.InputBuilder */ Prado::using('System.Data.ActiveRecord.Scaffold.InputBuilder.TScaffoldInputCommon'); diff --git a/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php b/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php index e2e753187a..6ae2c90a04 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php +++ b/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TMysqlScaffoldInput.php @@ -2,9 +2,9 @@ /** * TMysqlScaffoldInput class file. * - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord.Scaffold.InputBuilder */ Prado::using('System.Data.ActiveRecord.Scaffold.InputBuilder.TScaffoldInputCommon'); diff --git a/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php b/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php index 6d10874af1..4e02f1683d 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php +++ b/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TPgsqlScaffoldInput.php @@ -2,9 +2,9 @@ /** * TPgsqlScaffoldInput class file. * - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord.Scaffold.InputBuilder */ Prado::using('System.Data.ActiveRecord.Scaffold.InputBuilder.TScaffoldInputCommon'); diff --git a/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php b/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php index 14244b4c24..e1bc308dc8 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php +++ b/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputBase.php @@ -2,9 +2,9 @@ /** * TScaffoldInputBase class file. * - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord.Scaffold.InputBuilder */ class TScaffoldInputBase diff --git a/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php b/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php index 3394680e26..b4bbebfe3a 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php +++ b/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TScaffoldInputCommon.php @@ -2,9 +2,9 @@ /** * TScaffoldInputCommon class file. * - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord.Scaffold.InputBuilder */ Prado::using('System.Data.ActiveRecord.Scaffold.InputBuilder.TScaffoldInputBase'); diff --git a/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php b/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php index 441d277077..2350a2b7bd 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php +++ b/gui/baculum/framework/Data/ActiveRecord/Scaffold/InputBuilder/TSqliteScaffoldInput.php @@ -2,9 +2,9 @@ /** * TSqliteScaffoldInput class file. * - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord.Scaffold.InputBuilder */ Prado::using('System.Data.ActiveRecord.Scaffold.InputBuilder.TScaffoldInputCommon'); diff --git a/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldBase.php b/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldBase.php index 122dfbd20e..1a209c732a 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldBase.php +++ b/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldBase.php @@ -3,9 +3,9 @@ * TScaffoldBase class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord.Scaffold */ diff --git a/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldEditView.php b/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldEditView.php index 74e79eaa43..3134934f2d 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldEditView.php +++ b/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldEditView.php @@ -3,9 +3,9 @@ * TScaffoldEditView class and IScaffoldEditRenderer interface file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord.Scaffold */ diff --git a/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php b/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php index afdb126c3b..0903126b0d 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php +++ b/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php @@ -3,9 +3,9 @@ * TScaffoldListView class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord.Scaffold */ diff --git a/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldSearch.php b/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldSearch.php index ea2d2c9497..30c3e7f897 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldSearch.php +++ b/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldSearch.php @@ -3,9 +3,9 @@ * TScaffoldSearch class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @version $Id$ * @package System.Data.ActiveRecord.Scaffold */ diff --git a/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldView.php b/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldView.php index acc78fd24d..291bf65929 100644 --- a/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldView.php +++ b/gui/baculum/framework/Data/ActiveRecord/Scaffold/TScaffoldView.php @@ -3,9 +3,9 @@ * TScaffoldView class. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord.Scaffold */ diff --git a/gui/baculum/framework/Data/ActiveRecord/TActiveRecord.php b/gui/baculum/framework/Data/ActiveRecord/TActiveRecord.php index 735579cdb3..91d57805ff 100644 --- a/gui/baculum/framework/Data/ActiveRecord/TActiveRecord.php +++ b/gui/baculum/framework/Data/ActiveRecord/TActiveRecord.php @@ -3,9 +3,9 @@ * TActiveRecord, TActiveRecordEventParameter, TActiveRecordInvalidFinderResult class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord */ @@ -612,6 +612,8 @@ abstract class TActiveRecord extends TComponent */ public function findByPk($keys) { + if($keys === null) + return null; if(func_num_args() > 1) $keys = func_get_args(); $data = $this->getRecordGateway()->findRecordByPK($this,$keys); diff --git a/gui/baculum/framework/Data/ActiveRecord/TActiveRecordConfig.php b/gui/baculum/framework/Data/ActiveRecord/TActiveRecordConfig.php index 6e726df061..fd69e3cafd 100644 --- a/gui/baculum/framework/Data/ActiveRecord/TActiveRecordConfig.php +++ b/gui/baculum/framework/Data/ActiveRecord/TActiveRecordConfig.php @@ -3,9 +3,9 @@ * TActiveRecordConfig class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord */ diff --git a/gui/baculum/framework/Data/ActiveRecord/TActiveRecordCriteria.php b/gui/baculum/framework/Data/ActiveRecord/TActiveRecordCriteria.php index aec3ce5362..366011a905 100644 --- a/gui/baculum/framework/Data/ActiveRecord/TActiveRecordCriteria.php +++ b/gui/baculum/framework/Data/ActiveRecord/TActiveRecordCriteria.php @@ -3,9 +3,9 @@ * TActiveRecordCriteria class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord */ diff --git a/gui/baculum/framework/Data/ActiveRecord/TActiveRecordGateway.php b/gui/baculum/framework/Data/ActiveRecord/TActiveRecordGateway.php index 9f20e1addf..62cf624f99 100644 --- a/gui/baculum/framework/Data/ActiveRecord/TActiveRecordGateway.php +++ b/gui/baculum/framework/Data/ActiveRecord/TActiveRecordGateway.php @@ -3,9 +3,9 @@ * TActiveRecordGateway, TActiveRecordStatementType, TActiveRecordEventParameter classes file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord */ diff --git a/gui/baculum/framework/Data/ActiveRecord/TActiveRecordManager.php b/gui/baculum/framework/Data/ActiveRecord/TActiveRecordManager.php index 4aa2cde976..615555afa1 100644 --- a/gui/baculum/framework/Data/ActiveRecord/TActiveRecordManager.php +++ b/gui/baculum/framework/Data/ActiveRecord/TActiveRecordManager.php @@ -3,9 +3,9 @@ * TActiveRecordManager class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.ActiveRecord */ diff --git a/gui/baculum/framework/Data/Common/Mssql/TMssqlCommandBuilder.php b/gui/baculum/framework/Data/Common/Mssql/TMssqlCommandBuilder.php index ac718bcb7b..d23e62e631 100644 --- a/gui/baculum/framework/Data/Common/Mssql/TMssqlCommandBuilder.php +++ b/gui/baculum/framework/Data/Common/Mssql/TMssqlCommandBuilder.php @@ -3,9 +3,9 @@ * TMsssqlCommandBuilder class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common */ diff --git a/gui/baculum/framework/Data/Common/Mssql/TMssqlMetaData.php b/gui/baculum/framework/Data/Common/Mssql/TMssqlMetaData.php index 2157142801..725d0a5eeb 100644 --- a/gui/baculum/framework/Data/Common/Mssql/TMssqlMetaData.php +++ b/gui/baculum/framework/Data/Common/Mssql/TMssqlMetaData.php @@ -3,9 +3,9 @@ * TMssqlMetaData class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common.Mssql */ @@ -23,7 +23,7 @@ Prado::using('System.Data.Common.Mssql.TMssqlTableInfo'); * @since 3.1 */ class TMssqlMetaData extends TDbMetaData -{ +{ /** * @return string TDbTableInfo class name. */ @@ -258,7 +258,7 @@ EOD; } return false; } - + /** * Returns all table names in the database. * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema. diff --git a/gui/baculum/framework/Data/Common/Mssql/TMssqlTableColumn.php b/gui/baculum/framework/Data/Common/Mssql/TMssqlTableColumn.php index e3bd431e54..793a14f702 100644 --- a/gui/baculum/framework/Data/Common/Mssql/TMssqlTableColumn.php +++ b/gui/baculum/framework/Data/Common/Mssql/TMssqlTableColumn.php @@ -3,9 +3,9 @@ * TMssqlTableColumn class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common.Mssql */ diff --git a/gui/baculum/framework/Data/Common/Mssql/TMssqlTableInfo.php b/gui/baculum/framework/Data/Common/Mssql/TMssqlTableInfo.php index d003b336ea..3a0c86f121 100644 --- a/gui/baculum/framework/Data/Common/Mssql/TMssqlTableInfo.php +++ b/gui/baculum/framework/Data/Common/Mssql/TMssqlTableInfo.php @@ -3,9 +3,9 @@ * TMssqlTableInfo class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common.Mssql */ diff --git a/gui/baculum/framework/Data/Common/Mysql/TMysqlCommandBuilder.php b/gui/baculum/framework/Data/Common/Mysql/TMysqlCommandBuilder.php index 38e98b4fde..3dccb77280 100644 --- a/gui/baculum/framework/Data/Common/Mysql/TMysqlCommandBuilder.php +++ b/gui/baculum/framework/Data/Common/Mysql/TMysqlCommandBuilder.php @@ -3,9 +3,9 @@ * TMysqlCommandBuilder class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common */ diff --git a/gui/baculum/framework/Data/Common/Mysql/TMysqlMetaData.php b/gui/baculum/framework/Data/Common/Mysql/TMysqlMetaData.php index 71c7550103..57773214c6 100644 --- a/gui/baculum/framework/Data/Common/Mysql/TMysqlMetaData.php +++ b/gui/baculum/framework/Data/Common/Mysql/TMysqlMetaData.php @@ -3,9 +3,9 @@ * TMysqlMetaData class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common.Mysql */ @@ -385,7 +385,7 @@ EOD; } return false; } - + /** * Returns all table names in the database. * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema. diff --git a/gui/baculum/framework/Data/Common/Mysql/TMysqlTableColumn.php b/gui/baculum/framework/Data/Common/Mysql/TMysqlTableColumn.php index dd62f0f667..24790ea328 100644 --- a/gui/baculum/framework/Data/Common/Mysql/TMysqlTableColumn.php +++ b/gui/baculum/framework/Data/Common/Mysql/TMysqlTableColumn.php @@ -3,9 +3,9 @@ * TMysqlTableColumn class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common.Mysql */ diff --git a/gui/baculum/framework/Data/Common/Mysql/TMysqlTableInfo.php b/gui/baculum/framework/Data/Common/Mysql/TMysqlTableInfo.php index 17b32aa97f..c5386681b8 100644 --- a/gui/baculum/framework/Data/Common/Mysql/TMysqlTableInfo.php +++ b/gui/baculum/framework/Data/Common/Mysql/TMysqlTableInfo.php @@ -3,9 +3,9 @@ * TMysqlTableInfo class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common.Mysql */ diff --git a/gui/baculum/framework/Data/Common/Oracle/TOracleCommandBuilder.php b/gui/baculum/framework/Data/Common/Oracle/TOracleCommandBuilder.php index 56173c3a5f..9db393789a 100644 --- a/gui/baculum/framework/Data/Common/Oracle/TOracleCommandBuilder.php +++ b/gui/baculum/framework/Data/Common/Oracle/TOracleCommandBuilder.php @@ -4,9 +4,9 @@ * TOracleCommandBuilder class file. * * @author Marcos Nobre - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common */ diff --git a/gui/baculum/framework/Data/Common/Oracle/TOracleMetaData.php b/gui/baculum/framework/Data/Common/Oracle/TOracleMetaData.php index 7b5bd195f4..f7c740611e 100644 --- a/gui/baculum/framework/Data/Common/Oracle/TOracleMetaData.php +++ b/gui/baculum/framework/Data/Common/Oracle/TOracleMetaData.php @@ -3,9 +3,9 @@ * TOracleMetaData class file. * * @author Marcos Nobre - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common.Oracle */ @@ -334,7 +334,7 @@ EOD; } return false; } - + /** * Returns all table names in the database. * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema. @@ -371,4 +371,4 @@ EOD; } return $names; } -} +} \ No newline at end of file diff --git a/gui/baculum/framework/Data/Common/Oracle/TOracleTableColumn.php b/gui/baculum/framework/Data/Common/Oracle/TOracleTableColumn.php index bc89d8c5e0..7dd28389cc 100644 --- a/gui/baculum/framework/Data/Common/Oracle/TOracleTableColumn.php +++ b/gui/baculum/framework/Data/Common/Oracle/TOracleTableColumn.php @@ -3,9 +3,9 @@ * TOracleTableColumn class file. * * @author Marcos Nobre - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common.Oracle */ diff --git a/gui/baculum/framework/Data/Common/Oracle/TOracleTableInfo.php b/gui/baculum/framework/Data/Common/Oracle/TOracleTableInfo.php index 4a2e31fd3a..156a2a15ff 100644 --- a/gui/baculum/framework/Data/Common/Oracle/TOracleTableInfo.php +++ b/gui/baculum/framework/Data/Common/Oracle/TOracleTableInfo.php @@ -4,9 +4,9 @@ * TOracleTableInfo class file. * * @author Marcos Nobre - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common */ diff --git a/gui/baculum/framework/Data/Common/Pgsql/TPgsqlCommandBuilder.php b/gui/baculum/framework/Data/Common/Pgsql/TPgsqlCommandBuilder.php index 851dabb5ae..9612978724 100644 --- a/gui/baculum/framework/Data/Common/Pgsql/TPgsqlCommandBuilder.php +++ b/gui/baculum/framework/Data/Common/Pgsql/TPgsqlCommandBuilder.php @@ -3,9 +3,9 @@ * TPgsqlCommandBuilder class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common */ diff --git a/gui/baculum/framework/Data/Common/Pgsql/TPgsqlMetaData.php b/gui/baculum/framework/Data/Common/Pgsql/TPgsqlMetaData.php index 595f46e811..bf99b9fcac 100644 --- a/gui/baculum/framework/Data/Common/Pgsql/TPgsqlMetaData.php +++ b/gui/baculum/framework/Data/Common/Pgsql/TPgsqlMetaData.php @@ -3,9 +3,9 @@ * TPgsqlMetaData class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common.Pgsql */ @@ -416,7 +416,7 @@ EOD; } return false; } - + /** * Returns all table names in the database. * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema. diff --git a/gui/baculum/framework/Data/Common/Pgsql/TPgsqlTableColumn.php b/gui/baculum/framework/Data/Common/Pgsql/TPgsqlTableColumn.php index fd0fd23c84..ff06b2030b 100644 --- a/gui/baculum/framework/Data/Common/Pgsql/TPgsqlTableColumn.php +++ b/gui/baculum/framework/Data/Common/Pgsql/TPgsqlTableColumn.php @@ -3,9 +3,9 @@ * TPgsqlTableColumn class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common.Pgsql */ diff --git a/gui/baculum/framework/Data/Common/Pgsql/TPgsqlTableInfo.php b/gui/baculum/framework/Data/Common/Pgsql/TPgsqlTableInfo.php index 43298ffa9f..17aacee1e2 100644 --- a/gui/baculum/framework/Data/Common/Pgsql/TPgsqlTableInfo.php +++ b/gui/baculum/framework/Data/Common/Pgsql/TPgsqlTableInfo.php @@ -3,9 +3,9 @@ * TPgsqlTableInfo class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common.Pgsql */ diff --git a/gui/baculum/framework/Data/Common/Sqlite/TSqliteCommandBuilder.php b/gui/baculum/framework/Data/Common/Sqlite/TSqliteCommandBuilder.php index b442f7b4b0..eaa06788f3 100644 --- a/gui/baculum/framework/Data/Common/Sqlite/TSqliteCommandBuilder.php +++ b/gui/baculum/framework/Data/Common/Sqlite/TSqliteCommandBuilder.php @@ -3,9 +3,9 @@ * TSqliteCommandBuilder class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common */ diff --git a/gui/baculum/framework/Data/Common/Sqlite/TSqliteMetaData.php b/gui/baculum/framework/Data/Common/Sqlite/TSqliteMetaData.php index 9bc345f3f8..2fb641b02a 100644 --- a/gui/baculum/framework/Data/Common/Sqlite/TSqliteMetaData.php +++ b/gui/baculum/framework/Data/Common/Sqlite/TSqliteMetaData.php @@ -3,9 +3,9 @@ * TSqliteMetaData class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common.Sqlite */ @@ -188,7 +188,7 @@ class TSqliteMetaData extends TDbMetaData } return false; } - + /** * Returns all table names in the database. * @param string $schema the schema of the tables. This is not used for sqlite database. @@ -199,4 +199,4 @@ class TSqliteMetaData extends TDbMetaData $sql="SELECT DISTINCT tbl_name FROM sqlite_master WHERE tbl_name<>'sqlite_sequence'"; return $this->getDbConnection()->createCommand($sql)->queryColumn(); } -} +} \ No newline at end of file diff --git a/gui/baculum/framework/Data/Common/Sqlite/TSqliteTableColumn.php b/gui/baculum/framework/Data/Common/Sqlite/TSqliteTableColumn.php index f54b6f5993..018323a109 100644 --- a/gui/baculum/framework/Data/Common/Sqlite/TSqliteTableColumn.php +++ b/gui/baculum/framework/Data/Common/Sqlite/TSqliteTableColumn.php @@ -3,9 +3,9 @@ * TSqliteTableColumn class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common.Sqlite */ diff --git a/gui/baculum/framework/Data/Common/Sqlite/TSqliteTableInfo.php b/gui/baculum/framework/Data/Common/Sqlite/TSqliteTableInfo.php index e15f050a6b..387382e4ec 100644 --- a/gui/baculum/framework/Data/Common/Sqlite/TSqliteTableInfo.php +++ b/gui/baculum/framework/Data/Common/Sqlite/TSqliteTableInfo.php @@ -3,9 +3,9 @@ * TSqliteTableInfo class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common.Sqlite */ diff --git a/gui/baculum/framework/Data/Common/TDbCommandBuilder.php b/gui/baculum/framework/Data/Common/TDbCommandBuilder.php index 7a7b75d446..389fe777b9 100644 --- a/gui/baculum/framework/Data/Common/TDbCommandBuilder.php +++ b/gui/baculum/framework/Data/Common/TDbCommandBuilder.php @@ -3,9 +3,9 @@ * TDbCommandBuilder class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common */ diff --git a/gui/baculum/framework/Data/Common/TDbMetaData.php b/gui/baculum/framework/Data/Common/TDbMetaData.php index 5b4568cb91..d44cd0bac7 100644 --- a/gui/baculum/framework/Data/Common/TDbMetaData.php +++ b/gui/baculum/framework/Data/Common/TDbMetaData.php @@ -3,9 +3,9 @@ * TDbMetaData class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common */ @@ -178,7 +178,7 @@ abstract class TDbMetaData extends TComponent return $lft . str_replace(self::$delimiterIdentifier, '', $name) . $rgt; } - + /** * Returns all table names in the database. * This method should be overridden by child classes in order to support this feature diff --git a/gui/baculum/framework/Data/Common/TDbTableColumn.php b/gui/baculum/framework/Data/Common/TDbTableColumn.php index fe96e12afc..b994dd72a9 100644 --- a/gui/baculum/framework/Data/Common/TDbTableColumn.php +++ b/gui/baculum/framework/Data/Common/TDbTableColumn.php @@ -3,9 +3,9 @@ * TDbTableColumn class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common */ diff --git a/gui/baculum/framework/Data/Common/TDbTableInfo.php b/gui/baculum/framework/Data/Common/TDbTableInfo.php index 5060845bde..0285f9273b 100644 --- a/gui/baculum/framework/Data/Common/TDbTableInfo.php +++ b/gui/baculum/framework/Data/Common/TDbTableInfo.php @@ -3,9 +3,9 @@ * TDbTableInfo class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.Common */ diff --git a/gui/baculum/framework/Data/DataGateway/TDataGatewayCommand.php b/gui/baculum/framework/Data/DataGateway/TDataGatewayCommand.php index fb0f5df028..bbc741a805 100644 --- a/gui/baculum/framework/Data/DataGateway/TDataGatewayCommand.php +++ b/gui/baculum/framework/Data/DataGateway/TDataGatewayCommand.php @@ -3,9 +3,9 @@ * TDataGatewayCommand, TDataGatewayEventParameter and TDataGatewayResultEventParameter class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @version $Id$ * @package System.Data.DataGateway */ @@ -160,6 +160,8 @@ class TDataGatewayCommand extends TComponent */ public function findByPk($keys) { + if($keys===null) + return null; list($where, $parameters) = $this->getPrimaryKeyCondition((array)$keys); $command = $this->getBuilder()->createFindCommand($where, $parameters); $this->onCreateCommand($command, new TSqlCriteria($where,$parameters)); @@ -196,6 +198,8 @@ class TDataGatewayCommand extends TComponent */ public function deleteByPk($keys) { + if(count($keys)==0) + return 0; $where = $this->getCompositeKeyCondition((array)$keys); $command = $this->getBuilder()->createDeleteCommand($where); $this->onCreateCommand($command, new TSqlCriteria($where,$keys)); diff --git a/gui/baculum/framework/Data/DataGateway/TSqlCriteria.php b/gui/baculum/framework/Data/DataGateway/TSqlCriteria.php index bc1bbbbb4b..c5562380e2 100644 --- a/gui/baculum/framework/Data/DataGateway/TSqlCriteria.php +++ b/gui/baculum/framework/Data/DataGateway/TSqlCriteria.php @@ -3,9 +3,9 @@ * TDbSqlCriteria class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.DataGateway */ @@ -127,6 +127,8 @@ class TSqlCriteria extends TComponent public function setCondition($value) { if(empty($value)) { + // reset the condition + $this->_condition = null; return; } diff --git a/gui/baculum/framework/Data/DataGateway/TTableGateway.php b/gui/baculum/framework/Data/DataGateway/TTableGateway.php index b527fbb4d4..d1b8264a70 100644 --- a/gui/baculum/framework/Data/DataGateway/TTableGateway.php +++ b/gui/baculum/framework/Data/DataGateway/TTableGateway.php @@ -3,9 +3,9 @@ * TTableGateway class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @version $Id$ * @package System.Data.DataGateway */ diff --git a/gui/baculum/framework/Data/SqlMap/Configuration/TDiscriminator.php b/gui/baculum/framework/Data/SqlMap/Configuration/TDiscriminator.php index 1f7347ae90..45aa9847c4 100644 --- a/gui/baculum/framework/Data/SqlMap/Configuration/TDiscriminator.php +++ b/gui/baculum/framework/Data/SqlMap/Configuration/TDiscriminator.php @@ -3,9 +3,9 @@ * TDiscriminator and TSubMap classes file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Configuration */ diff --git a/gui/baculum/framework/Data/SqlMap/Configuration/TInlineParameterMapParser.php b/gui/baculum/framework/Data/SqlMap/Configuration/TInlineParameterMapParser.php index e8977b0d01..56e2929961 100644 --- a/gui/baculum/framework/Data/SqlMap/Configuration/TInlineParameterMapParser.php +++ b/gui/baculum/framework/Data/SqlMap/Configuration/TInlineParameterMapParser.php @@ -3,9 +3,9 @@ * TInlineParameterMapParser class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Configuration */ diff --git a/gui/baculum/framework/Data/SqlMap/Configuration/TParameterMap.php b/gui/baculum/framework/Data/SqlMap/Configuration/TParameterMap.php index 2eaad9a37b..0f137c57ff 100644 --- a/gui/baculum/framework/Data/SqlMap/Configuration/TParameterMap.php +++ b/gui/baculum/framework/Data/SqlMap/Configuration/TParameterMap.php @@ -3,9 +3,9 @@ * TParameterMap class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Configuration */ diff --git a/gui/baculum/framework/Data/SqlMap/Configuration/TParameterProperty.php b/gui/baculum/framework/Data/SqlMap/Configuration/TParameterProperty.php index 84007a2867..d706a83693 100644 --- a/gui/baculum/framework/Data/SqlMap/Configuration/TParameterProperty.php +++ b/gui/baculum/framework/Data/SqlMap/Configuration/TParameterProperty.php @@ -3,9 +3,9 @@ * TParameterPropert class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Configuration */ diff --git a/gui/baculum/framework/Data/SqlMap/Configuration/TResultMap.php b/gui/baculum/framework/Data/SqlMap/Configuration/TResultMap.php index e35faf286a..d0f017a045 100644 --- a/gui/baculum/framework/Data/SqlMap/Configuration/TResultMap.php +++ b/gui/baculum/framework/Data/SqlMap/Configuration/TResultMap.php @@ -3,9 +3,9 @@ * TResultMap class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Configuration */ diff --git a/gui/baculum/framework/Data/SqlMap/Configuration/TResultProperty.php b/gui/baculum/framework/Data/SqlMap/Configuration/TResultProperty.php index 796060aec4..0a4f8f1148 100644 --- a/gui/baculum/framework/Data/SqlMap/Configuration/TResultProperty.php +++ b/gui/baculum/framework/Data/SqlMap/Configuration/TResultProperty.php @@ -3,9 +3,9 @@ * TResultProperty class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Configuration */ diff --git a/gui/baculum/framework/Data/SqlMap/Configuration/TSimpleDynamicParser.php b/gui/baculum/framework/Data/SqlMap/Configuration/TSimpleDynamicParser.php index 2926003611..899ed74cb2 100644 --- a/gui/baculum/framework/Data/SqlMap/Configuration/TSimpleDynamicParser.php +++ b/gui/baculum/framework/Data/SqlMap/Configuration/TSimpleDynamicParser.php @@ -3,9 +3,9 @@ * TSimpleDynamicParser class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Configuration */ diff --git a/gui/baculum/framework/Data/SqlMap/Configuration/TSqlMapCacheModel.php b/gui/baculum/framework/Data/SqlMap/Configuration/TSqlMapCacheModel.php index 271db67556..54b8c32643 100644 --- a/gui/baculum/framework/Data/SqlMap/Configuration/TSqlMapCacheModel.php +++ b/gui/baculum/framework/Data/SqlMap/Configuration/TSqlMapCacheModel.php @@ -3,9 +3,9 @@ * TSqlMapCacheModel, TSqlMapCacheTypes and TSqlMapCacheKey classes file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Configuration */ diff --git a/gui/baculum/framework/Data/SqlMap/Configuration/TSqlMapStatement.php b/gui/baculum/framework/Data/SqlMap/Configuration/TSqlMapStatement.php index 0efcc5b68e..e0533bf2fb 100644 --- a/gui/baculum/framework/Data/SqlMap/Configuration/TSqlMapStatement.php +++ b/gui/baculum/framework/Data/SqlMap/Configuration/TSqlMapStatement.php @@ -4,9 +4,9 @@ * TSqlMapSelect and TSqlMapSelectKey classes file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Configuration */ diff --git a/gui/baculum/framework/Data/SqlMap/Configuration/TSqlMapXmlConfiguration.php b/gui/baculum/framework/Data/SqlMap/Configuration/TSqlMapXmlConfiguration.php index db178f7088..5018699199 100644 --- a/gui/baculum/framework/Data/SqlMap/Configuration/TSqlMapXmlConfiguration.php +++ b/gui/baculum/framework/Data/SqlMap/Configuration/TSqlMapXmlConfiguration.php @@ -3,9 +3,9 @@ * TSqlMapXmlConfigBuilder, TSqlMapXmlConfiguration, TSqlMapXmlMappingConfiguration classes file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Configuration */ @@ -347,7 +347,7 @@ class TSqlMapXmlMappingConfiguration extends TSqlMapXmlConfigBuilder static $bCacheDependencies; if($bCacheDependencies === null) - $bCacheDependencies = Prado::getApplication()->getMode() !== TApplicationMode::Performance; + $bCacheDependencies = true; //Prado::getApplication()->getMode() !== TApplicationMode::Performance; if($bCacheDependencies) $this->_manager->getCacheDependencies() diff --git a/gui/baculum/framework/Data/SqlMap/DataMapper/TFastSqlMapApplicationCache.php b/gui/baculum/framework/Data/SqlMap/DataMapper/TFastSqlMapApplicationCache.php index d2e3d014ee..07527abe99 100644 --- a/gui/baculum/framework/Data/SqlMap/DataMapper/TFastSqlMapApplicationCache.php +++ b/gui/baculum/framework/Data/SqlMap/DataMapper/TFastSqlMapApplicationCache.php @@ -3,9 +3,9 @@ * TFastSqlMapApplicationCache class file contains Fast SqlMap cache implementation. * * @author Berczi Gabor - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap */ diff --git a/gui/baculum/framework/Data/SqlMap/DataMapper/TLazyLoadList.php b/gui/baculum/framework/Data/SqlMap/DataMapper/TLazyLoadList.php index d50c1b8405..c7dac7be15 100644 --- a/gui/baculum/framework/Data/SqlMap/DataMapper/TLazyLoadList.php +++ b/gui/baculum/framework/Data/SqlMap/DataMapper/TLazyLoadList.php @@ -3,9 +3,9 @@ * TLazyLoadList, TObjectProxy classes file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap */ diff --git a/gui/baculum/framework/Data/SqlMap/DataMapper/TPropertyAccess.php b/gui/baculum/framework/Data/SqlMap/DataMapper/TPropertyAccess.php index c19b77ab4e..f49e0ff410 100644 --- a/gui/baculum/framework/Data/SqlMap/DataMapper/TPropertyAccess.php +++ b/gui/baculum/framework/Data/SqlMap/DataMapper/TPropertyAccess.php @@ -3,9 +3,9 @@ * TPropertyAccess class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap */ diff --git a/gui/baculum/framework/Data/SqlMap/DataMapper/TSqlMapCache.php b/gui/baculum/framework/Data/SqlMap/DataMapper/TSqlMapCache.php index aa853b6c59..fb7e310ea4 100644 --- a/gui/baculum/framework/Data/SqlMap/DataMapper/TSqlMapCache.php +++ b/gui/baculum/framework/Data/SqlMap/DataMapper/TSqlMapCache.php @@ -3,9 +3,9 @@ * TSqlMapCache class file contains FIFO, LRU, and GLOBAL cache implementations. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap */ diff --git a/gui/baculum/framework/Data/SqlMap/DataMapper/TSqlMapPagedList.php b/gui/baculum/framework/Data/SqlMap/DataMapper/TSqlMapPagedList.php index d789471dd4..5781c5b58c 100644 --- a/gui/baculum/framework/Data/SqlMap/DataMapper/TSqlMapPagedList.php +++ b/gui/baculum/framework/Data/SqlMap/DataMapper/TSqlMapPagedList.php @@ -3,9 +3,9 @@ * TSqlMapPagedList class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap */ diff --git a/gui/baculum/framework/Data/SqlMap/DataMapper/TSqlMapTypeHandlerRegistry.php b/gui/baculum/framework/Data/SqlMap/DataMapper/TSqlMapTypeHandlerRegistry.php index 18b8ef99dd..f1e73f0286 100644 --- a/gui/baculum/framework/Data/SqlMap/DataMapper/TSqlMapTypeHandlerRegistry.php +++ b/gui/baculum/framework/Data/SqlMap/DataMapper/TSqlMapTypeHandlerRegistry.php @@ -3,9 +3,9 @@ * TSqlMapTypeHandlerRegistry, and abstract TSqlMapTypeHandler classes file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap */ diff --git a/gui/baculum/framework/Data/SqlMap/Statements/TCachingStatement.php b/gui/baculum/framework/Data/SqlMap/Statements/TCachingStatement.php index ad22b84fce..f286812a8e 100644 --- a/gui/baculum/framework/Data/SqlMap/Statements/TCachingStatement.php +++ b/gui/baculum/framework/Data/SqlMap/Statements/TCachingStatement.php @@ -3,9 +3,9 @@ * TCachingStatement class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Statements */ diff --git a/gui/baculum/framework/Data/SqlMap/Statements/TDeleteMappedStatement.php b/gui/baculum/framework/Data/SqlMap/Statements/TDeleteMappedStatement.php index 119beb3955..9cc476aa6c 100644 --- a/gui/baculum/framework/Data/SqlMap/Statements/TDeleteMappedStatement.php +++ b/gui/baculum/framework/Data/SqlMap/Statements/TDeleteMappedStatement.php @@ -3,9 +3,9 @@ * TDeleteMappedStatement class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Statements */ diff --git a/gui/baculum/framework/Data/SqlMap/Statements/TInsertMappedStatement.php b/gui/baculum/framework/Data/SqlMap/Statements/TInsertMappedStatement.php index de785b9472..074ee59514 100644 --- a/gui/baculum/framework/Data/SqlMap/Statements/TInsertMappedStatement.php +++ b/gui/baculum/framework/Data/SqlMap/Statements/TInsertMappedStatement.php @@ -3,9 +3,9 @@ * TInsertMappedStatement class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Statements */ diff --git a/gui/baculum/framework/Data/SqlMap/Statements/TMappedStatement.php b/gui/baculum/framework/Data/SqlMap/Statements/TMappedStatement.php index 4d3b635571..abade1b2b2 100644 --- a/gui/baculum/framework/Data/SqlMap/Statements/TMappedStatement.php +++ b/gui/baculum/framework/Data/SqlMap/Statements/TMappedStatement.php @@ -3,9 +3,9 @@ * TMappedStatement and related classes. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Statements */ @@ -919,7 +919,6 @@ class TMappedStatement extends TComponent implements IMappedStatement public function __wakeup() { - parent::__wakeup(); if (is_null($this->_selectQueue)) $this->_selectQueue = array(); } diff --git a/gui/baculum/framework/Data/SqlMap/Statements/TPreparedCommand.php b/gui/baculum/framework/Data/SqlMap/Statements/TPreparedCommand.php index 8b4bdbcc68..827fd2388b 100644 --- a/gui/baculum/framework/Data/SqlMap/Statements/TPreparedCommand.php +++ b/gui/baculum/framework/Data/SqlMap/Statements/TPreparedCommand.php @@ -3,9 +3,9 @@ * TPreparedCommand class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Statements */ diff --git a/gui/baculum/framework/Data/SqlMap/Statements/TPreparedStatement.php b/gui/baculum/framework/Data/SqlMap/Statements/TPreparedStatement.php index 79f39aeaf6..3f33ed6fd6 100644 --- a/gui/baculum/framework/Data/SqlMap/Statements/TPreparedStatement.php +++ b/gui/baculum/framework/Data/SqlMap/Statements/TPreparedStatement.php @@ -3,9 +3,9 @@ * TPreparedStatement class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Statements */ diff --git a/gui/baculum/framework/Data/SqlMap/Statements/TPreparedStatementFactory.php b/gui/baculum/framework/Data/SqlMap/Statements/TPreparedStatementFactory.php index 6eef27c30e..9dffd566d8 100644 --- a/gui/baculum/framework/Data/SqlMap/Statements/TPreparedStatementFactory.php +++ b/gui/baculum/framework/Data/SqlMap/Statements/TPreparedStatementFactory.php @@ -3,9 +3,9 @@ * TPreparedStatementFactory class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Statements */ diff --git a/gui/baculum/framework/Data/SqlMap/Statements/TSelectMappedStatement.php b/gui/baculum/framework/Data/SqlMap/Statements/TSelectMappedStatement.php index 8e6ea75ebf..a819fd7d26 100644 --- a/gui/baculum/framework/Data/SqlMap/Statements/TSelectMappedStatement.php +++ b/gui/baculum/framework/Data/SqlMap/Statements/TSelectMappedStatement.php @@ -3,9 +3,9 @@ * TSelectMappedStatement class. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Statements */ diff --git a/gui/baculum/framework/Data/SqlMap/Statements/TSimpleDynamicSql.php b/gui/baculum/framework/Data/SqlMap/Statements/TSimpleDynamicSql.php index b2e0356d06..26ae872fed 100644 --- a/gui/baculum/framework/Data/SqlMap/Statements/TSimpleDynamicSql.php +++ b/gui/baculum/framework/Data/SqlMap/Statements/TSimpleDynamicSql.php @@ -3,9 +3,9 @@ * TSimpleDynamicSql class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Statements */ diff --git a/gui/baculum/framework/Data/SqlMap/Statements/TStaticSql.php b/gui/baculum/framework/Data/SqlMap/Statements/TStaticSql.php index f0110332b4..d925deae52 100644 --- a/gui/baculum/framework/Data/SqlMap/Statements/TStaticSql.php +++ b/gui/baculum/framework/Data/SqlMap/Statements/TStaticSql.php @@ -3,9 +3,9 @@ * TStaticSql class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Statements */ diff --git a/gui/baculum/framework/Data/SqlMap/Statements/TUpdateMappedStatement.php b/gui/baculum/framework/Data/SqlMap/Statements/TUpdateMappedStatement.php index 9ba2458d91..173cf29bca 100644 --- a/gui/baculum/framework/Data/SqlMap/Statements/TUpdateMappedStatement.php +++ b/gui/baculum/framework/Data/SqlMap/Statements/TUpdateMappedStatement.php @@ -3,9 +3,9 @@ * TUpdateMappedStatement class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap.Statements */ diff --git a/gui/baculum/framework/Data/SqlMap/TSqlMapConfig.php b/gui/baculum/framework/Data/SqlMap/TSqlMapConfig.php index d99b99d558..8fa6e4163a 100644 --- a/gui/baculum/framework/Data/SqlMap/TSqlMapConfig.php +++ b/gui/baculum/framework/Data/SqlMap/TSqlMapConfig.php @@ -3,9 +3,9 @@ * TSqlMapConfig class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap */ diff --git a/gui/baculum/framework/Data/SqlMap/TSqlMapGateway.php b/gui/baculum/framework/Data/SqlMap/TSqlMapGateway.php index 8ce09ee44d..c9b6bc4fd1 100644 --- a/gui/baculum/framework/Data/SqlMap/TSqlMapGateway.php +++ b/gui/baculum/framework/Data/SqlMap/TSqlMapGateway.php @@ -3,9 +3,9 @@ * TSqlMapGateway class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap */ diff --git a/gui/baculum/framework/Data/SqlMap/TSqlMapManager.php b/gui/baculum/framework/Data/SqlMap/TSqlMapManager.php index 0fa6fd5779..66b7b66d2f 100644 --- a/gui/baculum/framework/Data/SqlMap/TSqlMapManager.php +++ b/gui/baculum/framework/Data/SqlMap/TSqlMapManager.php @@ -3,9 +3,9 @@ * TSqlMapManager class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data.SqlMap */ diff --git a/gui/baculum/framework/Data/TDataSourceConfig.php b/gui/baculum/framework/Data/TDataSourceConfig.php index ecece8c490..b01a28d2f7 100644 --- a/gui/baculum/framework/Data/TDataSourceConfig.php +++ b/gui/baculum/framework/Data/TDataSourceConfig.php @@ -3,9 +3,9 @@ * TDataSourceConfig class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data */ diff --git a/gui/baculum/framework/Data/TDbCommand.php b/gui/baculum/framework/Data/TDbCommand.php index 43472ea480..b2dcbb88fd 100644 --- a/gui/baculum/framework/Data/TDbCommand.php +++ b/gui/baculum/framework/Data/TDbCommand.php @@ -3,9 +3,9 @@ * TDbCommand class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data */ @@ -201,8 +201,8 @@ class TDbCommand extends TComponent */ public function getDebugStatementText() { - if(Prado::getApplication()->getMode() === TApplicationMode::Debug) - return $this->_statement instanceof PDOStatement ? + //if(Prado::getApplication()->getMode() === TApplicationMode::Debug) + return $this->_statement instanceof PDOStatement ? $this->_statement->queryString : $this->getText(); } diff --git a/gui/baculum/framework/Data/TDbConnection.php b/gui/baculum/framework/Data/TDbConnection.php index b475c05986..b5bb8cf978 100644 --- a/gui/baculum/framework/Data/TDbConnection.php +++ b/gui/baculum/framework/Data/TDbConnection.php @@ -3,9 +3,9 @@ * TDbConnection class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data */ diff --git a/gui/baculum/framework/Data/TDbDataReader.php b/gui/baculum/framework/Data/TDbDataReader.php index b28cd490ce..6c4b3141d0 100644 --- a/gui/baculum/framework/Data/TDbDataReader.php +++ b/gui/baculum/framework/Data/TDbDataReader.php @@ -3,9 +3,9 @@ * TDbDataReader class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data */ diff --git a/gui/baculum/framework/Data/TDbTransaction.php b/gui/baculum/framework/Data/TDbTransaction.php index 8a2a08219f..04271cfc82 100644 --- a/gui/baculum/framework/Data/TDbTransaction.php +++ b/gui/baculum/framework/Data/TDbTransaction.php @@ -3,9 +3,9 @@ * TDbTransaction class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Data */ diff --git a/gui/baculum/framework/Exceptions/TErrorHandler.php b/gui/baculum/framework/Exceptions/TErrorHandler.php index ad5fe66220..76f7396a2a 100644 --- a/gui/baculum/framework/Exceptions/TErrorHandler.php +++ b/gui/baculum/framework/Exceptions/TErrorHandler.php @@ -3,9 +3,9 @@ * TErrorHandler class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Exceptions */ @@ -185,7 +185,7 @@ class TErrorHandler extends TModule $errorMessage = $exception->getMessage(); if($isDebug) - $version=$_SERVER['SERVER_SOFTWARE'].' PRADO/'.Prado::getVersion(); + $version=$_SERVER['SERVER_SOFTWARE'].' PRADO/'.Prado::getVersion(); else { $version=''; @@ -199,19 +199,7 @@ class TErrorHandler extends TModule '%%Time%%' => @strftime('%Y-%m-%d %H:%M',time()) ); - $CGI=substr(php_sapi_name(), 0, 3) == 'cgi'; // FastCGI / IIS - if($isDebug) - { - if ($CGI) - header("Status: $statusCode ".$exception->getMessage(), true, TPropertyValue::ensureInteger($statusCode)); - else - header("HTTP/1.0 $statusCode ".$exception->getMessage(), true, TPropertyValue::ensureInteger($statusCode)); - } else { - if ($CGI) - header("Status: $statusCode", true, TPropertyValue::ensureInteger($statusCode)); - else - header("HTTP/1.0 $statusCode", true, TPropertyValue::ensureInteger($statusCode)); - } + $this->getApplication()->getResponse()->setStatusCode($statusCode, $isDebug ? $exception->getMessage() : null); echo strtr($content,$tokens); } @@ -280,7 +268,7 @@ class TErrorHandler extends TModule } if($this->getApplication()->getMode()===TApplicationMode::Debug) - $version=$_SERVER['SERVER_SOFTWARE'].' PRADO/'.Prado::getVersion(); + $version=$_SERVER['SERVER_SOFTWARE'].' PRADO/'.Prado::getVersion(); else $version=''; @@ -357,7 +345,12 @@ class TErrorHandler extends TModule // if PHP exception, we want to show the 2nd stack level context // because the 1st stack level is of little use (it's in error handler) if($exception instanceof TPhpErrorException) - $result=isset($trace[0]['file'])?$trace[0]:$trace[1]; + { + if(isset($trace[0]['file'])) + $result=$trace[0]; + elseif(isset($trace[1])) + $result=$trace[1]; + } else if($exception instanceof TInvalidOperationException) { // in case of getter or setter error, find out the exact file and row @@ -404,8 +397,8 @@ class TErrorHandler extends TModule private function addLink($message) { - $baseUrl='http://www.pradosoft.com/docs/classdoc'; - return preg_replace('/\b(T[A-Z]\w+)\b/',"\${1}",$message); + $baseUrl='http://pradosoft.github.io/docs/manual/class-'; + return preg_replace('/\b(T[A-Z]\w+)\b/',"\${1}",$message); } } diff --git a/gui/baculum/framework/Exceptions/TException.php b/gui/baculum/framework/Exceptions/TException.php index 24dbdb0f6f..2c915a4206 100644 --- a/gui/baculum/framework/Exceptions/TException.php +++ b/gui/baculum/framework/Exceptions/TException.php @@ -3,9 +3,9 @@ * Exception classes file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Exceptions */ @@ -357,6 +357,17 @@ class TPhpErrorException extends TSystemException $errorType=isset($errorTypes[$errno])?$errorTypes[$errno]:'Unknown Error'; parent::__construct("[$errorType] $errstr (@line $errline in file $errfile)."); } + + /** + * Returns if error is one of fatal type. + * + * @param array $error error got from error_get_last() + * @return boolean if error is one of fatal type + */ + public static function isFatalError($error) + { + return isset($error['type']) && in_array($error['type'], array(E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING)); + } } diff --git a/gui/baculum/framework/Exceptions/messages/messages-fr.txt b/gui/baculum/framework/Exceptions/messages/messages-fr.txt index 4e6a396b92..84f53069a3 100644 --- a/gui/baculum/framework/Exceptions/messages/messages-fr.txt +++ b/gui/baculum/framework/Exceptions/messages/messages-fr.txt @@ -415,4 +415,6 @@ tactivetablecell_control_outoftable = {0} '{1}' must be enclosed within a TTabl tactivetablecell_control_notincollection = {0} '{1}' no member of the TTableCellCollection of the parent TTableRow control. tactivetablerow_control_outoftable = {0} '{1}' must be enclosed within a TTable control. -tactivetablerow_control_notincollection = {0} '{1}' no member of the TTableRowCollection of the parent TTable control. \ No newline at end of file +tactivetablerow_control_notincollection = {0} '{1}' no member of the TTableRowCollection of the parent TTable control. + +juidatepicker_settextmode_unsupported = TextMode of TJuiDatePicker cannot be changed. \ No newline at end of file diff --git a/gui/baculum/framework/Exceptions/messages/messages-id.txt b/gui/baculum/framework/Exceptions/messages/messages-id.txt index 687d4f308c..dfba22bc03 100644 --- a/gui/baculum/framework/Exceptions/messages/messages-id.txt +++ b/gui/baculum/framework/Exceptions/messages/messages-id.txt @@ -461,4 +461,6 @@ ar_data_invalid = {0}.copyFrom() hanya bisa menggunakan obyek atay array s ar_save_invalid = Turunan {0} tidak bisa disimpan karena kondisi sudah dihapus ataupun tidak dikenal. ar_delete_invalid = Turunan {0} tidak bisa dihapus karena ada rekaman baru atau rekaman sudah dihapus. -datasource_dbconnection_invalid = TDataSourceConfig.DbConnection '{0}' tidak benar. ia merujuk ke modul aplikasi yang benar. \ No newline at end of file +datasource_dbconnection_invalid = TDataSourceConfig.DbConnection '{0}' tidak benar. ia merujuk ke modul aplikasi yang benar. + +juidatepicker_settextmode_unsupported = TextMode of TJuiDatePicker cannot be changed. \ No newline at end of file diff --git a/gui/baculum/framework/Exceptions/messages/messages-zh.txt b/gui/baculum/framework/Exceptions/messages/messages-zh.txt index 9dc14a8b82..7490ccde1f 100644 --- a/gui/baculum/framework/Exceptions/messages/messages-zh.txt +++ b/gui/baculum/framework/Exceptions/messages/messages-zh.txt @@ -432,3 +432,5 @@ urlmapping_configfile_inexistent = TUrlMapping.ConfigFile '{0}' is not a file. urlmapping_configfile_invalid = TUrlMapping.ConfigFile '{0}' must point to an XML file in namespace format. urlmappingpattern_serviceparameter_required = TUrlMappingPattern.ServiceParameter is required for pattern '{0}'. + +juidatepicker_settextmode_unsupported = TextMode of TJuiDatePicker cannot be changed. \ No newline at end of file diff --git a/gui/baculum/framework/Exceptions/messages/messages.txt b/gui/baculum/framework/Exceptions/messages/messages.txt index bcfc7f97e1..895801409e 100644 --- a/gui/baculum/framework/Exceptions/messages/messages.txt +++ b/gui/baculum/framework/Exceptions/messages/messages.txt @@ -210,6 +210,7 @@ page_statepersister_invalid = Page state persister must implement IPageStateP page_csmanagerclass_invalid = ClientScriptManager class '{0}' must be an instance of TClientScriptManager. csmanager_pradoscript_invalid = Unknown Prado script library name '{0}'. +csmanager_pradostyle_invalid = Unknown Prado style library name '{0}'. csmanager_invalid_packages = Unkownn packages '{1}' for javascript packages defined in '{0}'. Valid packages are '{2}'. contentplaceholder_id_required = TContentPlaceHolder must have an ID. @@ -500,4 +501,15 @@ tactivetablecell_control_outoftable = {0} '{1}' must be enclosed within a TTabl tactivetablecell_control_notincollection = {0} '{1}' no member of the TTableCellCollection of the parent TTableRow control. tactivetablerow_control_outoftable = {0} '{1}' must be enclosed within a TTable control. -tactivetablerow_control_notincollection = {0} '{1}' no member of the TTableRowCollection of the parent TTable control. \ No newline at end of file +tactivetablerow_control_notincollection = {0} '{1}' no member of the TTableRowCollection of the parent TTable control. + +juioptions_control_invalid = Control '{0}' must implement IJuiOptions. +juioptions_option_invalid = '{1}' is not a valid option for control '{0}'. + +ratinglist_invalid_caption_id = '{0}' is not a valid caption control for TRatingList '{0}'. + +accordion_activeviewid_invalid = TAccordion.ActiveViewID has an invalid ID '{0}'. +accordion_activeviewindex_invalid = TAccordion.ActiveViewIndex has an invalid Index '{0}'. +accordion_view_inexistent = TAccordion cannot find the specified view. + +juidatepicker_settextmode_unsupported = TextMode of TJuiDatePicker cannot be changed. \ No newline at end of file diff --git a/gui/baculum/framework/I18N/TChoiceFormat.php b/gui/baculum/framework/I18N/TChoiceFormat.php index 4525aaadcd..81900c30a1 100644 --- a/gui/baculum/framework/I18N/TChoiceFormat.php +++ b/gui/baculum/framework/I18N/TChoiceFormat.php @@ -3,9 +3,9 @@ * TChoiceFormat, I18N choice format component. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.I18N */ diff --git a/gui/baculum/framework/I18N/TDateFormat.php b/gui/baculum/framework/I18N/TDateFormat.php index e7846be756..3108508d46 100644 --- a/gui/baculum/framework/I18N/TDateFormat.php +++ b/gui/baculum/framework/I18N/TDateFormat.php @@ -3,9 +3,9 @@ * TDateFromat formatting component. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.I18N */ diff --git a/gui/baculum/framework/I18N/TGlobalization.php b/gui/baculum/framework/I18N/TGlobalization.php index 3fbaa2b49d..9a57ec3b61 100644 --- a/gui/baculum/framework/I18N/TGlobalization.php +++ b/gui/baculum/framework/I18N/TGlobalization.php @@ -3,9 +3,9 @@ * TGlobalization class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.I18N */ @@ -214,7 +214,7 @@ class TGlobalization extends TModule throw new TConfigurationException("invalid source dir '{$config['source']}'"); } } - if($config['cache']) + if(isset($config['cache']) && TPropertyValue::ensureBoolean($config['cache'])) { $config['cache'] = $this->getApplication()->getRunTimePath().'/i18n'; if(!is_dir($config['cache'])) @@ -225,6 +225,10 @@ class TGlobalization extends TModule chmod($config['cache'], PRADO_CHMOD); //make it deletable } } + else + { + unset($config['cache']); + } $this->_translation = $config; } @@ -294,4 +298,3 @@ class TGlobalization extends TModule } } - diff --git a/gui/baculum/framework/I18N/TGlobalizationAutoDetect.php b/gui/baculum/framework/I18N/TGlobalizationAutoDetect.php index a79a128de9..707424d090 100644 --- a/gui/baculum/framework/I18N/TGlobalizationAutoDetect.php +++ b/gui/baculum/framework/I18N/TGlobalizationAutoDetect.php @@ -3,9 +3,9 @@ * TMultiView and TView class file. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @version $Revision: 1.66 $ $Date: ${DATE} ${TIME} $ * @package System.I18N */ diff --git a/gui/baculum/framework/I18N/TI18NControl.php b/gui/baculum/framework/I18N/TI18NControl.php index 96fc8b62e2..b89440d1f8 100644 --- a/gui/baculum/framework/I18N/TI18NControl.php +++ b/gui/baculum/framework/I18N/TI18NControl.php @@ -3,9 +3,9 @@ * Base I18N component. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.I18N */ diff --git a/gui/baculum/framework/I18N/TNumberFormat.php b/gui/baculum/framework/I18N/TNumberFormat.php index 89eab245bd..4e8a022eb4 100644 --- a/gui/baculum/framework/I18N/TNumberFormat.php +++ b/gui/baculum/framework/I18N/TNumberFormat.php @@ -3,9 +3,9 @@ * TNumberFromat component. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.I18N */ diff --git a/gui/baculum/framework/I18N/TTranslate.php b/gui/baculum/framework/I18N/TTranslate.php index 1365b937af..9f70a50488 100644 --- a/gui/baculum/framework/I18N/TTranslate.php +++ b/gui/baculum/framework/I18N/TTranslate.php @@ -3,9 +3,9 @@ * TTranslate, I18N translation component. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.I18N */ diff --git a/gui/baculum/framework/I18N/TTranslateParameter.php b/gui/baculum/framework/I18N/TTranslateParameter.php index d5c4123095..230c0a9c04 100644 --- a/gui/baculum/framework/I18N/TTranslateParameter.php +++ b/gui/baculum/framework/I18N/TTranslateParameter.php @@ -3,9 +3,9 @@ * TTranslateParameter component. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.I18N */ diff --git a/gui/baculum/framework/I18N/Translation.php b/gui/baculum/framework/I18N/Translation.php index 9592ef53c0..f22a68f0b6 100644 --- a/gui/baculum/framework/I18N/Translation.php +++ b/gui/baculum/framework/I18N/Translation.php @@ -3,9 +3,9 @@ * Translation, static. * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.I18N */ @@ -51,7 +51,7 @@ class Translation extends TComponent $source->setCulture($app->getCulture()); - if(TPropertyValue::ensureBoolean($config['cache'])) + if(isset($config['cache'])) $source->setCache(new MessageCache($config['cache'])); self::$formatters[$catalogue] = new MessageFormat($source, $app->getCharset()); diff --git a/gui/baculum/framework/I18N/core/Gettext/MO.php b/gui/baculum/framework/I18N/core/Gettext/MO.php index 3e84ef2ef9..1afb5ea52f 100644 --- a/gui/baculum/framework/I18N/core/Gettext/MO.php +++ b/gui/baculum/framework/I18N/core/Gettext/MO.php @@ -77,7 +77,7 @@ class TGettext_MO extends TGettext * @return object File_Gettext_MO * @param string $file path to GNU MO file */ - function TGettext_MO($file = '') + function __construct($file = '') { $this->file = $file; } diff --git a/gui/baculum/framework/I18N/core/Gettext/PO.php b/gui/baculum/framework/I18N/core/Gettext/PO.php index 950a5de34c..3caccf885a 100644 --- a/gui/baculum/framework/I18N/core/Gettext/PO.php +++ b/gui/baculum/framework/I18N/core/Gettext/PO.php @@ -58,7 +58,7 @@ class TGettext_PO extends TGettext * @return object File_Gettext_PO * @param string path to GNU PO file */ - function TGettext_PO($file = '') + function __construct($file = '') { $this->file = $file; } diff --git a/gui/baculum/framework/I18N/core/MessageSource.php b/gui/baculum/framework/I18N/core/MessageSource.php index 7d5d6ed3f9..f035786018 100644 --- a/gui/baculum/framework/I18N/core/MessageSource.php +++ b/gui/baculum/framework/I18N/core/MessageSource.php @@ -37,7 +37,6 @@ require_once(dirname(__FILE__).'/MessageCache.php'); * # gettext -- Translated messages are stored in the gettext format. * # Database -- Use an existing TDbConnection to store the messages. * # SQLite -- (Deprecated) Store the translation messages in a SQLite database. - * # MySQL -- (Deprecated) Using a MySQL database to store the messages. * * A custom message source can be instantiated by specifying the filename * parameter to point to the custom class file. E.g. @@ -114,8 +113,8 @@ abstract class MessageSource implements IMessageSource * For 'gettext' and 'XLIFF', 'source' should point to the directory * where the messages are stored. * For 'Database', 'source' must be a valid connection id. - * If one of the deprecated types 'MySQL' or 'SQLite' is used, - * 'source' must contain a valid DSN. + * If a deprecated 'SQLite' type is used, 'source' must contain + * a valid DSN. * * Custom message source are possible by supplying the a filename parameter * in the factory method. @@ -128,8 +127,8 @@ abstract class MessageSource implements IMessageSource */ static function &factory($type, $source='.', $filename='') { - $types = array('XLIFF','gettext','Database','MySQL','SQLite'); - + $types = array('XLIFF','gettext','Database','SQLite'); + if(empty($filename) && !in_array($type, $types)) throw new Exception('Invalid type "'.$type.'", valid types are '. implode(', ', $types)); diff --git a/gui/baculum/framework/I18N/core/MessageSource_MySQL.php b/gui/baculum/framework/I18N/core/MessageSource_MySQL.php deleted file mode 100644 index 743694fa9e..0000000000 --- a/gui/baculum/framework/I18N/core/MessageSource_MySQL.php +++ /dev/null @@ -1,417 +0,0 @@ - - * @version $Revision: 1.4 $ $Date: 2005/02/25 09:59:40 $ - * @package System.I18N.core - */ - -/** - * Get the MessageSource class file. - */ -require_once(dirname(__FILE__).'/MessageSource.php'); - -/** - * Get the I18N utility file, contains the DSN parser. - */ -require_once(dirname(__FILE__).'/util.php'); - -/** - * MessageSource_MySQL class. - * - * Retrive the message translation from a MySQL database. - * - * See the MessageSource::factory() method to instantiate this class. - * - * @author Xiang Wei Zhuo - * @version v1.0, last update on Fri Dec 24 16:58:58 EST 2004 - * @package System.I18N.core - */ -class MessageSource_MySQL extends MessageSource -{ - /** - * The datasource string, full DSN to the database. - * @var string - */ - protected $source; - - /** - * The DSN array property, parsed by PEAR's DB DSN parser. - * @var array - */ - protected $dns; - - /** - * A resource link to the database - * @var db - */ - protected $db; - /** - * Constructor. - * Create a new message source using MySQL. - * @param string MySQL datasource, in PEAR's DB DSN format. - * @see MessageSource::factory(); - */ - function __construct($source) - { - $this->source = (string)$source; - $this->dns = parseDSN($this->source); - $this->db = $this->connect(); - } - - /** - * Destructor, close the database connection. - */ - function __destruct() - { - @mysql_close($this->db); - } - - /** - * Connect to the MySQL datasource - * @return resource MySQL connection. - * @throws Exception, connection and database errors. - */ - protected function connect() - { - /*static $conn; - - if($conn!==null) - return $conn; - */ - $dsninfo = $this->dns; - - if (isset($dsninfo['protocol']) && $dsninfo['protocol'] == 'unix') - $dbhost = ':' . $dsninfo['socket']; - else - { - $dbhost = $dsninfo['hostspec'] ? $dsninfo['hostspec'] : 'localhost'; - if (!empty($dsninfo['port'])) - $dbhost .= ':' . $dsninfo['port']; - } - $user = $dsninfo['username']; - $pw = $dsninfo['password']; - - $connect_function = 'mysql_connect'; - - if ($dbhost && $user && $pw) - $conn = @$connect_function($dbhost, $user, $pw); - elseif ($dbhost && $user) - $conn = @$connect_function($dbhost, $user); - elseif ($dbhost) - $conn = @$connect_function($dbhost); - else - $conn = false; - - if (empty($conn)) - { - throw new Exception('Error in connecting to '.$dsninfo); - } - - if ($dsninfo['database']) - { - if (!@mysql_select_db($dsninfo['database'], $conn)) - throw new Exception('Error in connecting database, dns:'. - $dsninfo); - } - else - throw new Exception('Please provide a database for message'. - ' translation.'); - return $conn; - } - - /** - * Get the database connection. - * @return db database connection. - */ - public function connection() - { - return $this->db; - } - - /** - * Get an array of messages for a particular catalogue and cultural - * variant. - * @param string the catalogue name + variant - * @return array translation messages. - */ - protected function &loadData($variant) - { - $variant = mysql_real_escape_string($variant); - - $statement = - "SELECT t.id, t.source, t.target, t.comments - FROM trans_unit t, catalogue c - WHERE c.cat_id = t.cat_id - AND c.name = '{$variant}' - ORDER BY id ASC"; - - $rs = mysql_query($statement,$this->db); - - $result = array(); - - while($row = mysql_fetch_array($rs,MYSQL_NUM)) - { - $source = $row[1]; - $result[$source][] = $row[2]; //target - $result[$source][] = $row[0]; //id - $result[$source][] = $row[3]; //comments - } - - return $result; - } - - /** - * Get the last modified unix-time for this particular catalogue+variant. - * We need to query the database to get the date_modified. - * @param string catalogue+variant - * @return int last modified in unix-time format. - */ - protected function getLastModified($source) - { - $source = mysql_real_escape_string($source); - - $rs = mysql_query( - "SELECT date_modified FROM catalogue WHERE name = '{$source}'", - $this->db); - - $result = $rs ? (int)mysql_result($rs,0) : 0; - - return $result; - } - - /** - * Check if a particular catalogue+variant exists in the database. - * @param string catalogue+variant - * @return boolean true if the catalogue+variant is in the database, - * false otherwise. - */ - protected function isValidSource($variant) - { - $variant = mysql_real_escape_string ($variant); - - $rs = mysql_query( - "SELECT COUNT(*) FROM catalogue WHERE name = '{$variant}'", - $this->db); - - $row = mysql_fetch_array($rs,MYSQL_NUM); - - $result = $row && $row[0] == '1'; - - return $result; - } - - /** - * Get all the variants of a particular catalogue. - * @param string catalogue name - * @return array list of all variants for this catalogue. - */ - protected function getCatalogueList($catalogue) - { - $variants = explode('_',$this->culture); - - $catalogues = array($catalogue); - - $variant = null; - - for($i = 0, $k = count($variants); $i < $k; ++$i) - { - if(isset($variants[$i]{0})) - { - $variant .= ($variant)?'_'.$variants[$i]:$variants[$i]; - $catalogues[] = $catalogue.'.'.$variant; - } - } - return array_reverse($catalogues); - } - - /** - * Retrive catalogue details, array($cat_id, $variant, $count). - * @param string catalogue - * @return array catalogue details, array($cat_id, $variant, $count). - */ - private function getCatalogueDetails($catalogue='messages') - { - if(empty($catalogue)) - $catalogue = 'messages'; - - $variant = $catalogue.'.'.$this->culture; - - $name = mysql_real_escape_string($this->getSource($variant)); - - $rs = mysql_query("SELECT cat_id - FROM catalogue WHERE name = '{$name}'", $this->db); - - if(mysql_num_rows($rs) != 1) - return false; - - $cat_id = (int)mysql_result($rs,0); - - //first get the catalogue ID - $rs = mysql_query( - "SELECT count(msg_id) - FROM trans_unit - WHERE cat_id = {$cat_id}", $this->db); - - $count = (int)mysql_result($rs,0); - - return array($cat_id, $variant, $count); - } - - /** - * Update the catalogue last modified time. - * @return boolean true if updated, false otherwise. - */ - private function updateCatalogueTime($cat_id, $variant) - { - $time = time(); - - $result = mysql_query("UPDATE catalogue - SET date_modified = {$time} - WHERE cat_id = {$cat_id}", $this->db); - - if(!empty($this->cache)) - $this->cache->clean($variant, $this->culture); - - return $result; - } - - /** - * Save the list of untranslated blocks to the translation source. - * If the translation was not found, you should add those - * strings to the translation source via the append() method. - * @param string the catalogue to add to - * @return boolean true if saved successfuly, false otherwise. - */ - function save($catalogue='messages') - { - $messages = $this->untranslated; - - if(count($messages) <= 0) return false; - - $details = $this->getCatalogueDetails($catalogue); - - if($details) - list($cat_id, $variant, $count) = $details; - else - return false; - - if($cat_id <= 0) return false; - $inserted = 0; - - $time = time(); - - foreach($messages as $message) - { - $count++; $inserted++; - $message = mysql_real_escape_string($message); - $statement = "INSERT INTO trans_unit - (cat_id,id,source,date_added) VALUES - ({$cat_id}, {$count},'{$message}',$time)"; - mysql_query($statement, $this->db); - } - if($inserted > 0) - $this->updateCatalogueTime($cat_id, $variant); - - return $inserted > 0; - } - - /** - * Delete a particular message from the specified catalogue. - * @param string the source message to delete. - * @param string the catalogue to delete from. - * @return boolean true if deleted, false otherwise. - */ - function delete($message, $catalogue='messages') - { - $details = $this->getCatalogueDetails($catalogue); - if($details) - list($cat_id, $variant, $count) = $details; - else - return false; - - $text = mysql_real_escape_string($message); - - $statement = "DELETE FROM trans_unit WHERE - cat_id = {$cat_id} AND source = '{$message}'"; - $deleted = false; - - mysql_query($statement, $this->db); - - if(mysql_affected_rows($this->db) == 1) - $deleted = $this->updateCatalogueTime($cat_id, $variant); - - return $deleted; - - } - - /** - * Update the translation. - * @param string the source string. - * @param string the new translation string. - * @param string comments - * @param string the catalogue of the translation. - * @return boolean true if translation was updated, false otherwise. - */ - function update($text, $target, $comments, $catalogue='messages') - { - $details = $this->getCatalogueDetails($catalogue); - if($details) - list($cat_id, $variant, $count) = $details; - else - return false; - - $comments = mysql_real_escape_string($comments); - $target = mysql_real_escape_string($target); - $text = mysql_real_escape_string($text); - - $time = time(); - - $statement = "UPDATE trans_unit SET - target = '{$target}', - comments = '{$comments}', - date_modified = '{$time}' - WHERE cat_id = {$cat_id} - AND source = '{$text}'"; - - $updated = false; - - mysql_query($statement, $this->db); - if(mysql_affected_rows($this->db) == 1) - $updated = $this->updateCatalogueTime($cat_id, $variant); - - return $updated; - } - - /** - * Returns a list of catalogue as key and all it variants as value. - * @return array list of catalogues - */ - function catalogues() - { - $statement = 'SELECT name FROM catalogue ORDER BY name'; - $rs = mysql_query($statement, $this->db); - $result = array(); - while($row = mysql_fetch_array($rs,MYSQL_NUM)) - { - $details = explode('.',$row[0]); - if(!isset($details[1])) $details[1] = null; - - $result[] = $details; - } - return $result; - } - -} - diff --git a/gui/baculum/framework/I18N/core/TCache_Lite.php b/gui/baculum/framework/I18N/core/TCache_Lite.php index 69e1c30869..b42bf1f9f8 100644 --- a/gui/baculum/framework/I18N/core/TCache_Lite.php +++ b/gui/baculum/framework/I18N/core/TCache_Lite.php @@ -228,7 +228,7 @@ class TCache_Lite * @param array $options options * @access public */ - function TCache_Lite($options = array(null)) + function __construct($options = array(null)) { $availableOptions = array( 'automaticSerialization', 'fileNameProtection', @@ -533,18 +533,11 @@ class TCache_Lite // because the filesize can be cached by PHP itself... clearstatcache(); $length = @filesize($this->_file); - if(version_compare(PHP_VERSION, '5.3.0', 'lt')) - { - $mqr = get_magic_quotes_runtime(); - set_magic_quotes_runtime(0); - } if ($this->_readControl) { $hashControl = @fread($fp, 32); $length = $length - 32; } $data = @fread($fp, $length); - if(isset($mqr)) - set_magic_quotes_runtime($mqr); if ($this->_fileLocking) @flock($fp, LOCK_UN); @fclose($fp); if ($this->_readControl) { diff --git a/gui/baculum/framework/IO/TTextWriter.php b/gui/baculum/framework/IO/TTextWriter.php index f888083d7e..237755fe93 100644 --- a/gui/baculum/framework/IO/TTextWriter.php +++ b/gui/baculum/framework/IO/TTextWriter.php @@ -3,9 +3,9 @@ * TTextWriter class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.IO */ diff --git a/gui/baculum/framework/PradoBase.php b/gui/baculum/framework/PradoBase.php index 407411b7d8..f6c0312fbb 100644 --- a/gui/baculum/framework/PradoBase.php +++ b/gui/baculum/framework/PradoBase.php @@ -6,9 +6,9 @@ * and error handling mechanism. * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System */ @@ -69,7 +69,7 @@ class PradoBase */ public static function getVersion() { - return '3.2.4'; + return '3.3.2'; } /** @@ -83,10 +83,18 @@ class PradoBase * Sets error handler to be Prado::phpErrorHandler */ set_error_handler(array('PradoBase','phpErrorHandler')); + /** + * Sets shutdown function to be Prado::phpFatalErrorHandler + */ + register_shutdown_function(array('PradoBase','phpFatalErrorHandler')); /** * Sets exception handler to be Prado::exceptionHandler */ set_exception_handler(array('PradoBase','exceptionHandler')); + /** + * Disable php's builtin error reporting to avoid duplicated reports + */ + ini_set('display_errors', 0); } /** @@ -96,9 +104,7 @@ class PradoBase */ public static function autoload($className) { - include_once($className.self::CLASS_FILE_EXT); - if(!class_exists($className,false) && !interface_exists($className,false)) - self::fatalError("Class file for '$className' cannot be found."); + @include_once($className.self::CLASS_FILE_EXT); } /** @@ -114,8 +120,8 @@ class PradoBase $url=$am->publishFilePath(self::getPathOfNamespace('System.'.$logoName,'.gif')); } else - $url='http://www.pradosoft.com/images/'.$logoName.'.gif'; - return 'Powered by PRADO'; + $url='http://pradosoft.github.io/docs/'.$logoName.'.gif'; + return 'Powered by PRADO'; } /** @@ -134,6 +140,23 @@ class PradoBase throw new TPhpErrorException($errno,$errstr,$errfile,$errline); } + /** + * PHP shutdown function used to catch fatal errors. + * This method should be registered as PHP error handler using + * {@link register_shutdown_function}. The method throws an exception that + * contains the error information. + */ + public static function phpFatalErrorHandler() + { + $error = error_get_last(); + if($error && + TPhpErrorException::isFatalError($error) && + error_reporting() & $error['type']) + { + self::exceptionHandler(new TPhpErrorException($error['type'],$error['message'],$error['file'],$error['line'])); + } + } + /** * Default exception handler. * This method should be registered as default exception handler using @@ -188,30 +211,6 @@ class PradoBase return PRADO_DIR; } - /** - * Serializes a data. - * The original PHP serialize function has a bug that may not serialize - * properly an object. - * @param mixed data to be serialized - * @return string the serialized data - */ - public static function serialize($data) - { - return serialize($data); - } - - /** - * Unserializes a data. - * The original PHP unserialize function has a bug that may not unserialize - * properly an object. - * @param string data to be unserialized - * @return mixed unserialized data, null if unserialize failed - */ - public static function unserialize($str) - { - return unserialize($str); - } - /** * Creates a component with the specified type. * A component type can be either the component class name diff --git a/gui/baculum/framework/Security/IUserManager.php b/gui/baculum/framework/Security/IUserManager.php index 0ca659292a..ff69c2104a 100644 --- a/gui/baculum/framework/Security/IUserManager.php +++ b/gui/baculum/framework/Security/IUserManager.php @@ -3,9 +3,9 @@ * IUserManager interface file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Security */ diff --git a/gui/baculum/framework/Security/TAuthManager.php b/gui/baculum/framework/Security/TAuthManager.php index 2bf6a5b189..aaa816fca6 100644 --- a/gui/baculum/framework/Security/TAuthManager.php +++ b/gui/baculum/framework/Security/TAuthManager.php @@ -3,9 +3,9 @@ * TAuthManager class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Security */ diff --git a/gui/baculum/framework/Security/TAuthorizationRule.php b/gui/baculum/framework/Security/TAuthorizationRule.php index aa9bed9062..9f9aa5063a 100644 --- a/gui/baculum/framework/Security/TAuthorizationRule.php +++ b/gui/baculum/framework/Security/TAuthorizationRule.php @@ -3,9 +3,9 @@ * TAuthorizationRule, TAuthorizationRuleCollection class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Security */ /** diff --git a/gui/baculum/framework/Security/TDbUserManager.php b/gui/baculum/framework/Security/TDbUserManager.php index 0832dfe5a8..578059d207 100644 --- a/gui/baculum/framework/Security/TDbUserManager.php +++ b/gui/baculum/framework/Security/TDbUserManager.php @@ -3,9 +3,9 @@ * TDbUserManager class * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Security */ diff --git a/gui/baculum/framework/Security/TSecurityManager.php b/gui/baculum/framework/Security/TSecurityManager.php index bdb85564c1..1b61211484 100644 --- a/gui/baculum/framework/Security/TSecurityManager.php +++ b/gui/baculum/framework/Security/TSecurityManager.php @@ -4,9 +4,9 @@ * TSecurityManager class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Security */ diff --git a/gui/baculum/framework/Security/TUser.php b/gui/baculum/framework/Security/TUser.php index 8a229b1ade..ffa34d8c3f 100644 --- a/gui/baculum/framework/Security/TUser.php +++ b/gui/baculum/framework/Security/TUser.php @@ -3,9 +3,9 @@ * TUser class file. * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Security */ diff --git a/gui/baculum/framework/Security/TUserManager.php b/gui/baculum/framework/Security/TUserManager.php index 4ad67a1561..b7e03836a5 100644 --- a/gui/baculum/framework/Security/TUserManager.php +++ b/gui/baculum/framework/Security/TUserManager.php @@ -3,9 +3,9 @@ * TUserManager class * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Security */ diff --git a/gui/baculum/framework/TApplication.php b/gui/baculum/framework/TApplication.php index bb5d1d7a67..3982fe7efb 100644 --- a/gui/baculum/framework/TApplication.php +++ b/gui/baculum/framework/TApplication.php @@ -3,9 +3,9 @@ * TApplication class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System */ @@ -1069,10 +1069,10 @@ class TApplication extends TComponent $config=new TApplicationConfiguration; $config->loadFromFile($this->_configFile); if($this->_cacheFile!==null) - file_put_contents($this->_cacheFile,Prado::serialize($config),LOCK_EX); + file_put_contents($this->_cacheFile,serialize($config),LOCK_EX); } else - $config=Prado::unserialize(file_get_contents($this->_cacheFile)); + $config=unserialize(file_get_contents($this->_cacheFile)); $this->applyConfiguration($config,false); } @@ -1839,11 +1839,11 @@ class TApplicationStatePersister extends TModule implements IStatePersister public function load() { if(($cache=$this->getApplication()->getCache())!==null && ($value=$cache->get(self::CACHE_NAME))!==false) - return Prado::unserialize($value); + return unserialize($value); else { if(($content=@file_get_contents($this->getStateFilePath()))!==false) - return Prado::unserialize($content); + return unserialize($content); else return null; } @@ -1855,7 +1855,7 @@ class TApplicationStatePersister extends TModule implements IStatePersister */ public function save($state) { - $content=Prado::serialize($state); + $content=serialize($state); $saveFile=true; if(($cache=$this->getApplication()->getCache())!==null) { diff --git a/gui/baculum/framework/TApplicationComponent.php b/gui/baculum/framework/TApplicationComponent.php index a906a232d9..b167181b60 100644 --- a/gui/baculum/framework/TApplicationComponent.php +++ b/gui/baculum/framework/TApplicationComponent.php @@ -3,9 +3,9 @@ * TApplicationComponent class * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System */ diff --git a/gui/baculum/framework/TComponent.php b/gui/baculum/framework/TComponent.php index 484a31866b..0752d04c7b 100644 --- a/gui/baculum/framework/TComponent.php +++ b/gui/baculum/framework/TComponent.php @@ -7,9 +7,9 @@ * Global Events, intra-object events, Class behaviors, expanded behaviors * @author Brad Anderson * - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System */ @@ -555,7 +555,10 @@ class TComponent return isset($args[0])?$args[0]:null; } - throw new TApplicationException('component_method_undefined',get_class($this),$method); + // don't thrown an exception for __magicMethods() or any other weird methods natively implemented by php + if (!method_exists($this, $method)) { + throw new TApplicationException('component_method_undefined',get_class($this),$method); + } } @@ -1697,16 +1700,6 @@ class TComponent return null; } - /** - * Do not call this method. This is a PHP magic method that will be called automatically - * after any unserialization; it can perform reinitialization tasks on the object. - */ - public function __wakeup() - { - if ($this->_e===null) - $this->_e = array(); - } - /** * Returns an array with the names of all variables of that object that should be serialized. * Do not call this method. This is a PHP magic method that will be called automatically @@ -1717,6 +1710,18 @@ class TComponent $a = (array)$this; $a = array_keys($a); $exprops = array(); + $this->_getZappableSleepProps($exprops); + return array_diff($a, $exprops); + } + + /** + * Returns an array with the names of all variables of this object that should NOT be serialized + * because their value is the default one or useless to be cached for the next page loads. + * Reimplement in derived classes to add new variables, but remember to also to call the parent + * implementation first. + */ + protected function _getZappableSleepProps(&$exprops) + { if($this->_listeningenabled===false) $exprops[] = "\0TComponent\0_listeningenabled"; if($this->_behaviorsenabled===true) @@ -1725,7 +1730,6 @@ class TComponent $exprops[] = "\0TComponent\0_e"; if ($this->_m===null) $exprops[] = "\0TComponent\0_m"; - return array_diff($a,$exprops); } } diff --git a/gui/baculum/framework/TModule.php b/gui/baculum/framework/TModule.php index 7c14996255..9148cb3964 100644 --- a/gui/baculum/framework/TModule.php +++ b/gui/baculum/framework/TModule.php @@ -3,9 +3,9 @@ * TModule class file. * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System */ diff --git a/gui/baculum/framework/TService.php b/gui/baculum/framework/TService.php index 9c51eb5aa6..e4c61e3218 100644 --- a/gui/baculum/framework/TService.php +++ b/gui/baculum/framework/TService.php @@ -3,9 +3,9 @@ * TService class file. * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System */ diff --git a/gui/baculum/framework/TShellApplication.php b/gui/baculum/framework/TShellApplication.php index e989ed9f26..619656e6fb 100644 --- a/gui/baculum/framework/TShellApplication.php +++ b/gui/baculum/framework/TShellApplication.php @@ -3,9 +3,9 @@ * TShellApplication class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System */ diff --git a/gui/baculum/framework/Util/TCallChain.php b/gui/baculum/framework/Util/TCallChain.php index a6d99a61a6..49891641bb 100644 --- a/gui/baculum/framework/Util/TCallChain.php +++ b/gui/baculum/framework/Util/TCallChain.php @@ -3,9 +3,9 @@ * TCallChain class file. * * @author Brad Anderson - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2008-2014 Pradosoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2008-2015 Pradosoft + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT */ /** @@ -19,7 +19,7 @@ class TCallChain extends TList implements IDynamicMethods { /** - * @var {@link TListIterator} for moving through the chained method calls + * @var {@link ArrayIterator} for moving through the chained method calls */ private $_iterator=null; @@ -97,7 +97,7 @@ class TCallChain extends TList implements IDynamicMethods if(!$this->_iterator) { $chain_array=array_reverse($this->toArray()); - $this->_iterator=new TListIterator($chain_array); + $this->_iterator=new ArrayIterator($chain_array); } if($this->_iterator->valid()) do { diff --git a/gui/baculum/framework/Util/TClassBehavior.php b/gui/baculum/framework/Util/TClassBehavior.php index 03ea0c578e..05f009d2a5 100644 --- a/gui/baculum/framework/Util/TClassBehavior.php +++ b/gui/baculum/framework/Util/TClassBehavior.php @@ -3,9 +3,9 @@ * TClassBehavior class file. * * @author Brad Anderson - * @link http://www.pradosoft.com/ + * @link https://github.com/pradosoft/prado * @copyright Copyright © 2008-2011 Pradosoft - * @license http://www.pradosoft.com/license/ + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT */ /** diff --git a/gui/baculum/framework/Util/TDataFieldAccessor.php b/gui/baculum/framework/Util/TDataFieldAccessor.php index 1bead02e74..d718165070 100644 --- a/gui/baculum/framework/Util/TDataFieldAccessor.php +++ b/gui/baculum/framework/Util/TDataFieldAccessor.php @@ -3,9 +3,9 @@ * TDataFieldAccessor class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Util */ diff --git a/gui/baculum/framework/Util/TDateTimeStamp.php b/gui/baculum/framework/Util/TDateTimeStamp.php index fcbd573f4c..260301f003 100644 --- a/gui/baculum/framework/Util/TDateTimeStamp.php +++ b/gui/baculum/framework/Util/TDateTimeStamp.php @@ -3,9 +3,9 @@ * TDateTimeStamp class file. * @author Fabio Bas ctrlaltca[AT]gmail[DOT]com - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Util */ diff --git a/gui/baculum/framework/Util/TLogRouter.php b/gui/baculum/framework/Util/TLogRouter.php index 4682e9ef43..2e1201b44b 100644 --- a/gui/baculum/framework/Util/TLogRouter.php +++ b/gui/baculum/framework/Util/TLogRouter.php @@ -3,9 +3,9 @@ * TLogRouter, TLogRoute, TFileLogRoute, TEmailLogRoute class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Util */ @@ -24,7 +24,7 @@ Prado::using('System.Data.TDbConnection'); * The format is as follows, * * - * + * * * PHP configuration style: * diff --git a/gui/baculum/framework/Util/TLogger.php b/gui/baculum/framework/Util/TLogger.php index 6fd12ccfe7..4f1de3c612 100644 --- a/gui/baculum/framework/Util/TLogger.php +++ b/gui/baculum/framework/Util/TLogger.php @@ -3,9 +3,9 @@ * TLogger class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Util */ diff --git a/gui/baculum/framework/Util/TParameterModule.php b/gui/baculum/framework/Util/TParameterModule.php index 84616c635e..ce600f65fa 100644 --- a/gui/baculum/framework/Util/TParameterModule.php +++ b/gui/baculum/framework/Util/TParameterModule.php @@ -3,9 +3,9 @@ * TParameterModule class * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Util */ diff --git a/gui/baculum/framework/Util/TRpcClient.php b/gui/baculum/framework/Util/TRpcClient.php index 91b27b52a8..c8920a2e44 100644 --- a/gui/baculum/framework/Util/TRpcClient.php +++ b/gui/baculum/framework/Util/TRpcClient.php @@ -2,9 +2,9 @@ /** * @author Robin J. Rogge - * @link http://www.pradosoft.com/ + * @link https://github.com/pradosoft/prado * @copyright 2010 Bigpoint GmbH - * @license http://www.pradosoft.com/license/ + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @since 3.2 * @package System.Util */ diff --git a/gui/baculum/framework/Util/TSimpleDateFormatter.php b/gui/baculum/framework/Util/TSimpleDateFormatter.php index 18e7152917..021948e490 100644 --- a/gui/baculum/framework/Util/TSimpleDateFormatter.php +++ b/gui/baculum/framework/Util/TSimpleDateFormatter.php @@ -3,9 +3,9 @@ * TSimpleDateFormatter class file * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Util */ diff --git a/gui/baculum/framework/Util/TVarDumper.php b/gui/baculum/framework/Util/TVarDumper.php index c89b205a65..9c09dea5a1 100644 --- a/gui/baculum/framework/Util/TVarDumper.php +++ b/gui/baculum/framework/Util/TVarDumper.php @@ -3,9 +3,9 @@ * TVarDumper class file * * @author Qiang Xue - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Util */ diff --git a/gui/baculum/framework/Web/Javascripts/TJavaScript.php b/gui/baculum/framework/Web/Javascripts/TJavaScript.php index d7703bfd3c..bd0f2be015 100644 --- a/gui/baculum/framework/Web/Javascripts/TJavaScript.php +++ b/gui/baculum/framework/Web/Javascripts/TJavaScript.php @@ -3,9 +3,9 @@ * TJavaScript class file * * @author Wei Zhuo - * @link http://www.pradosoft.com/ - * @copyright Copyright © 2005-2014 PradoSoft - * @license http://www.pradosoft.com/license/ + * @link https://github.com/pradosoft/prado + * @copyright Copyright © 2005-2016 The PRADO Group + * @license https://github.com/pradosoft/prado/blob/master/COPYRIGHT * @package System.Web.Javascripts */ @@ -57,6 +57,19 @@ class TJavaScript return ''; } + /** + * Renders a list of javascript code + * @param array javascript blocks + * @return string rendering result + */ + public static function renderScriptBlocksCallback($scripts) + { + if(count($scripts)) + return implode("\n",$scripts)."\n"; + else + return ''; + } + /** * Renders javascript block * @param string javascript block diff --git a/gui/baculum/framework/Web/Javascripts/css-packages.php b/gui/baculum/framework/Web/Javascripts/css-packages.php new file mode 100644 index 0000000000..8bc5fe5928 --- /dev/null +++ b/gui/baculum/framework/Web/Javascripts/css-packages.php @@ -0,0 +1,93 @@ + array( + JQUERY_DIR.'/css/base/jquery-ui.css', + ), + 'jquery.ui.accordion' => array( + JQUERY_DIR.'/css/base/jquery.ui.accordion.css', + ), + 'jquery.ui.autocomplete' => array( + JQUERY_DIR.'/css/base/jquery.ui.autocomplete.css', + ), + 'jquery.ui.button' => array( + JQUERY_DIR.'/css/base/jquery.ui.button.css', + ), + 'jquery.ui.core' => array( + JQUERY_DIR.'/css/base/jquery.ui.core.css', + ), + 'jquery.ui.datepicker' => array( + JQUERY_DIR.'/css/base/jquery.ui.datepicker.css', + ), + 'jquery.ui.dialog' => array( + JQUERY_DIR.'/css/base/jquery.ui.dialog.css', + ), + 'jquery.ui.menu' => array( + JQUERY_DIR.'/css/base/jquery.ui.menu.css', + ), + 'jquery.ui.progressbar' => array( + JQUERY_DIR.'/css/base/jquery.ui.progressbar.css', + ), + 'jquery.ui.resizable' => array( + JQUERY_DIR.'/css/base/jquery.ui.resizable.css', + ), + 'jquery.ui.selectable' => array( + JQUERY_DIR.'/css/base/jquery.ui.selectable.css', + ), + 'jquery.ui.slider' => array( + JQUERY_DIR.'/css/base/jquery.ui.slider.css', + ), + 'jquery.ui.spinner' => array( + JQUERY_DIR.'/css/base/jquery.ui.spinner.css', + ), + 'jquery.ui.tabs' => array( + JQUERY_DIR.'/css/base/jquery.ui.tabs.css', + ), + 'jquery.ui.theme' => array( + JQUERY_DIR.'/css/base/jquery.ui.theme.css', + ), + 'jquery.ui.tooltip' => array( + JQUERY_DIR.'/css/base/jquery.ui.tooltip.css', + ), + + // bootstrap + 'bootstrap' => array( + BOOTSTRAP_DIR.'/css/bootstrap.css', + ), + 'bootstrap-theme' => array( + BOOTSTRAP_DIR.'/css/bootstrap-theme.css', + ), +); + + +//package names and their dependencies +$dependencies = array( + 'jquery-ui' => array('jquery-ui'), + 'jquery.ui.accordion' => array('jquery.ui.core', 'jquery.ui.accordion'), + 'jquery.ui.autocomplete' => array('jquery.ui.core', 'jquery.ui.autocomplete'), + 'jquery.ui.button' => array('jquery.ui.core', 'jquery.ui.button'), + 'jquery.ui.core' => array('jquery.ui.core'), + 'jquery.ui.datepicker' => array('jquery.ui.core', 'jquery.ui.datepicker'), + 'jquery.ui.dialog' => array('jquery.ui.core', 'jquery.ui.dialog'), + 'jquery.ui.menu' => array('jquery.ui.core', 'jquery.ui.menu'), + 'jquery.ui.progressbar' => array('jquery.ui.core', 'jquery.ui.progressbar'), + 'jquery.ui.resizable' => array('jquery.ui.core', 'jquery.ui.resizable'), + 'jquery.ui.selectable' => array('jquery.ui.core', 'jquery.ui.selectable'), + 'jquery.ui.slider' => array('jquery.ui.core', 'jquery.ui.slider'), + 'jquery.ui.spinner' => array('jquery.ui.core', 'jquery.ui.spinner'), + 'jquery.ui.tabs' => array('jquery.ui.core', 'jquery.ui.tabs'), + 'jquery.ui.theme' => array('jquery.ui.core', 'jquery.ui.theme'), + 'jquery.ui.tooltip' => array('jquery.ui.core', 'jquery.ui.tooltip'), + 'bootstrap' => array('bootstrap'), + 'bootstrap-theme' => array('bootstrap', 'bootstrap-theme'), +); + +return array($packages, $dependencies); + diff --git a/gui/baculum/framework/Web/Javascripts/packages.php b/gui/baculum/framework/Web/Javascripts/packages.php index 1d98f60f70..68b4822d58 100644 --- a/gui/baculum/framework/Web/Javascripts/packages.php +++ b/gui/baculum/framework/Web/Javascripts/packages.php @@ -4,23 +4,16 @@ // To make future upgrades easier if (!defined('PROTOTYPE_DIR')) define ('PROTOTYPE_DIR', 'prototype-1.7'); +if (!defined('JQUERY_DIR')) define ('JQUERY_DIR', 'jquery'); +if (!defined('BOOTSTRAP_DIR')) define ('BOOTSTRAP_DIR', 'bootstrap3'); if (!defined('SCRIPTACULOUS_DIR')) define ('SCRIPTACULOUS_DIR', 'scriptaculous-1.9.0'); //package names and its contents (files relative to the current directory) $packages = array( - 'prototype' => array( - PROTOTYPE_DIR.'/prototype.js', - SCRIPTACULOUS_DIR.'/builder.js', - ), + // base prado scripts 'prado' => array( 'prado/prado.js', - 'prado/scriptaculous-adapter.js', - 'prado/controls/controls.js', - SCRIPTACULOUS_DIR.'/effects.js' - ), - - 'effects' => array( - SCRIPTACULOUS_DIR.'/effects.js' + 'prado/controls/controls.js' ), 'logger' => array( @@ -40,21 +33,10 @@ $packages = array( ), 'ajax' => array( - SCRIPTACULOUS_DIR.'/controls.js', - 'prado/activecontrols/json2.js', 'prado/activecontrols/ajax3.js', 'prado/activecontrols/activecontrols3.js', ), - 'dragdrop'=>array( - SCRIPTACULOUS_DIR.'/dragdrop.js', - 'prado/activecontrols/dragdrop.js' - ), - - 'dragdropextra'=>array( - 'prado/activecontrols/dragdropextra.js', - ), - 'slider'=>array( 'prado/controls/slider.js' ), @@ -66,19 +48,15 @@ $packages = array( 'tabpanel'=>array( 'prado/controls/tabpanel.js' ), - + 'activedatepicker' => array( 'prado/activecontrols/activedatepicker.js' ), - + 'activefileupload' => array( 'prado/activefileupload/activefileupload.js' ), - 'accordion'=>array( - 'prado/controls/accordion.js' - ), - 'htmlarea'=>array( 'prado/controls/htmlarea.js' ), @@ -87,39 +65,81 @@ $packages = array( 'prado/controls/htmlarea4.js' ), - 'ratings' => array( - 'prado/ratings/ratings.js', + 'accordion'=>array( + 'prado/controls/accordion.js' ), 'inlineeditor' => array( 'prado/activecontrols/inlineeditor.js' ), + 'ratings' => array( + 'prado/ratings/ratings.js', + ), + + // jquery + 'jquery' => array( + JQUERY_DIR.'/jquery.js', + ), + 'jqueryui' => array( + JQUERY_DIR.'/jquery-ui.js', + JQUERY_DIR.'/jquery-ui-i18n.min.js', + ), + + // prototype + scriptaculous + 'prototype' => array( + PROTOTYPE_DIR.'/prototype.js', + SCRIPTACULOUS_DIR.'/builder.js', + SCRIPTACULOUS_DIR.'/effects.js' + ), + + //bootstrap + 'bootstrap' => array( + BOOTSTRAP_DIR.'/js/bootstrap.js', + ), + + 'dragdrop'=>array( + SCRIPTACULOUS_DIR.'/dragdrop.js', + 'prado/activecontrols/dragdrop.js' + ), + + 'dragdropextra'=>array( + 'prado/activecontrols/dragdropextra.js', + ), + + 'autocomplete' => array( + SCRIPTACULOUS_DIR.'/controls.js', + 'prado/activecontrols/autocomplete.js' + ), ); //package names and their dependencies $dependencies = array( + 'jquery' => array('jquery'), + 'prado' => array('jquery', 'prado'), + 'bootstrap' => array('jquery', 'bootstrap'), + 'validator' => array('jquery', 'prado', 'validator'), + 'tabpanel' => array('jquery', 'prado', 'tabpanel'), + 'ajax' => array('jquery', 'prado', 'ajax'), + 'logger' => array('jquery', 'prado', 'logger'), + 'activefileupload' => array('jquery', 'prado', 'ajax', 'activefileupload'), + 'effects' => array('jquery', 'jqueryui'), + 'datepicker' => array('jquery', 'prado', 'datepicker'), + 'activedatepicker' => array('jquery', 'prado', 'datepicker', 'ajax', 'activedatepicker'), + 'colorpicker' => array('jquery', 'prado', 'colorpicker'), + 'htmlarea' => array('jquery', 'prado', 'htmlarea'), + 'htmlarea4' => array('jquery', 'prado', 'htmlarea4'), + 'keyboard' => array('jquery', 'prado', 'keyboard'), + 'slider' => array('jquery', 'prado', 'slider'), + 'inlineeditor' => array('jquery', 'prado', 'ajax', 'inlineeditor'), + 'accordion' => array('jquery', 'prado', 'accordion'), + 'ratings' => array('jquery', 'prado', 'ajax', 'ratings'), + 'jqueryui' => array('jquery', 'jqueryui'), 'prototype' => array('prototype'), - 'prado' => array('prototype', 'prado'), - 'effects' => array('prototype', 'prado', 'effects'), - 'validator' => array('prototype', 'prado', 'validator'), - 'logger' => array('prototype', 'prado', 'logger'), - 'datepicker' => array('prototype', 'prado', 'datepicker'), - 'colorpicker' => array('prototype', 'prado', 'colorpicker'), - 'ajax' => array('prototype', 'prado', 'effects', 'ajax'), - 'dragdrop' => array('prototype', 'prado', 'effects', 'ajax', 'dragdrop'), - 'slider' => array('prototype', 'prado', 'slider'), - 'keyboard' => array('prototype', 'prado', 'keyboard'), - 'tabpanel' => array('prototype', 'prado', 'tabpanel'), - 'activedatepicker' => array('prototype', 'prado', 'datepicker', 'ajax', 'activedatepicker'), - 'activefileupload' => array('prototype', 'prado', 'effects', 'ajax', 'activefileupload'), - 'dragdropextra' => array('prototype', 'prado', 'effects', 'ajax', 'dragdrop','dragdropextra'), - 'accordion' => array('prototype', 'prado', 'effects', 'accordion'), - 'htmlarea' => array('prototype', 'prado', 'htmlarea'), - 'htmlarea4' => array('prototype', 'prado', 'htmlarea4'), - 'ratings' => array('prototype', 'prado', 'effects', 'ajax', 'ratings'), - 'inlineeditor' => array('prototype', 'prado', 'effects', 'ajax', 'inlineeditor'), + 'dragdrop' => array('prototype', 'jquery', 'prado', 'ajax', 'dragdrop'), + 'dragdropextra' => array('prototype', 'jquery', 'prado', 'ajax', 'dragdrop','dragdropextra'), + 'autocomplete' => array('prototype', 'jquery', 'prado', 'ajax', 'autocomplete'), ); return array($packages, $dependencies); diff --git a/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap-theme.css b/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap-theme.css new file mode 100644 index 0000000000..c19cd5c4ba --- /dev/null +++ b/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap-theme.css @@ -0,0 +1,587 @@ +/*! + * Bootstrap v3.3.5 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); +} +.btn-default:active, +.btn-primary:active, +.btn-success:active, +.btn-info:active, +.btn-warning:active, +.btn-danger:active, +.btn-default.active, +.btn-primary.active, +.btn-success.active, +.btn-info.active, +.btn-warning.active, +.btn-danger.active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-default.disabled, +.btn-primary.disabled, +.btn-success.disabled, +.btn-info.disabled, +.btn-warning.disabled, +.btn-danger.disabled, +.btn-default[disabled], +.btn-primary[disabled], +.btn-success[disabled], +.btn-info[disabled], +.btn-warning[disabled], +.btn-danger[disabled], +fieldset[disabled] .btn-default, +fieldset[disabled] .btn-primary, +fieldset[disabled] .btn-success, +fieldset[disabled] .btn-info, +fieldset[disabled] .btn-warning, +fieldset[disabled] .btn-danger { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-default .badge, +.btn-primary .badge, +.btn-success .badge, +.btn-info .badge, +.btn-warning .badge, +.btn-danger .badge { + text-shadow: none; +} +.btn:active, +.btn.active { + background-image: none; +} +.btn-default { + text-shadow: 0 1px 0 #fff; + background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); + background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); + background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #dbdbdb; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus { + background-color: #e0e0e0; + background-position: 0 -15px; +} +.btn-default:active, +.btn-default.active { + background-color: #e0e0e0; + border-color: #dbdbdb; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #e0e0e0; + background-image: none; +} +.btn-primary { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88)); + background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #245580; +} +.btn-primary:hover, +.btn-primary:focus { + background-color: #265a88; + background-position: 0 -15px; +} +.btn-primary:active, +.btn-primary.active { + background-color: #265a88; + border-color: #245580; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #265a88; + background-image: none; +} +.btn-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); + background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #3e8f3e; +} +.btn-success:hover, +.btn-success:focus { + background-color: #419641; + background-position: 0 -15px; +} +.btn-success:active, +.btn-success.active { + background-color: #419641; + border-color: #3e8f3e; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #419641; + background-image: none; +} +.btn-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); + background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #28a4c9; +} +.btn-info:hover, +.btn-info:focus { + background-color: #2aabd2; + background-position: 0 -15px; +} +.btn-info:active, +.btn-info.active { + background-color: #2aabd2; + border-color: #28a4c9; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #2aabd2; + background-image: none; +} +.btn-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #e38d13; +} +.btn-warning:hover, +.btn-warning:focus { + background-color: #eb9316; + background-position: 0 -15px; +} +.btn-warning:active, +.btn-warning.active { + background-color: #eb9316; + border-color: #e38d13; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #eb9316; + background-image: none; +} +.btn-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); + background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #b92c28; +} +.btn-danger:hover, +.btn-danger:focus { + background-color: #c12e2a; + background-position: 0 -15px; +} +.btn-danger:active, +.btn-danger.active { + background-color: #c12e2a; + border-color: #b92c28; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #c12e2a; + background-image: none; +} +.thumbnail, +.img-thumbnail { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #e8e8e8; + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #2e6da4; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; +} +.navbar-default { + background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); + background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); + background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); + background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); +} +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255, 255, 255, .25); +} +.navbar-inverse { + background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); + background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-radius: 4px; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); + background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); + background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); +} +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); +} +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} +@media (max-width: 767px) { + .navbar .navbar-nav .open .dropdown-menu > .active > a, + .navbar .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; + } +} +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); +} +.alert-success { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); + background-repeat: repeat-x; + border-color: #b2dba1; +} +.alert-info { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); + background-repeat: repeat-x; + border-color: #9acfea; +} +.alert-warning { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); + background-repeat: repeat-x; + border-color: #f5e79e; +} +.alert-danger { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); + background-repeat: repeat-x; + border-color: #dca7a7; +} +.progress { + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090)); + background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-striped { + 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); +} +.list-group { + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 #286090; + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); + background-repeat: repeat-x; + border-color: #2b669a; +} +.list-group-item.active .badge, +.list-group-item.active:hover .badge, +.list-group-item.active:focus .badge { + text-shadow: none; +} +.panel { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: 0 1px 2px rgba(0, 0, 0, .05); +} +.panel-default > .panel-heading { + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.panel-primary > .panel-heading { + background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4)); + background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0); + background-repeat: repeat-x; +} +.panel-success > .panel-heading { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); + background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); + background-repeat: repeat-x; +} +.panel-info > .panel-heading { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); + background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); + background-repeat: repeat-x; +} +.panel-warning > .panel-heading { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); + background-repeat: repeat-x; +} +.panel-danger > .panel-heading { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); + background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); + background-repeat: repeat-x; +} +.well { + background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); + background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; + border-color: #dcdcdc; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); +} +/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git a/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap-theme.css.map b/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap-theme.css.map new file mode 100644 index 0000000000..753531147d --- /dev/null +++ b/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap-theme.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"AAAA;;;;GAIG;ACeH;;;;;;EAME,yCAAA;EC2CA,4FAAA;EACQ,oFAAA;CFvDT;ACgBC;;;;;;;;;;;;ECsCA,yDAAA;EACQ,iDAAA;CFxCT;ACMC;;;;;;;;;;;;;;;;;;ECiCA,yBAAA;EACQ,iBAAA;CFnBT;AC/BD;;;;;;EAuBI,kBAAA;CDgBH;ACyBC;;EAEE,uBAAA;CDvBH;AC4BD;EErEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;EAuC2C,0BAAA;EAA2B,mBAAA;CDjBvE;ACpBC;;EAEE,0BAAA;EACA,6BAAA;CDsBH;ACnBC;;EAEE,0BAAA;EACA,sBAAA;CDqBH;ACfG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6BL;ACbD;EEtEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8DD;AC5DC;;EAEE,0BAAA;EACA,6BAAA;CD8DH;AC3DC;;EAEE,0BAAA;EACA,sBAAA;CD6DH;ACvDG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqEL;ACpDD;EEvEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CDsGD;ACpGC;;EAEE,0BAAA;EACA,6BAAA;CDsGH;ACnGC;;EAEE,0BAAA;EACA,sBAAA;CDqGH;AC/FG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6GL;AC3FD;EExEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8ID;AC5IC;;EAEE,0BAAA;EACA,6BAAA;CD8IH;AC3IC;;EAEE,0BAAA;EACA,sBAAA;CD6IH;ACvIG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqJL;AClID;EEzEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CDsLD;ACpLC;;EAEE,0BAAA;EACA,6BAAA;CDsLH;ACnLC;;EAEE,0BAAA;EACA,sBAAA;CDqLH;AC/KG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6LL;ACzKD;EE1EI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8ND;AC5NC;;EAEE,0BAAA;EACA,6BAAA;CD8NH;AC3NC;;EAEE,0BAAA;EACA,sBAAA;CD6NH;ACvNG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqOL;AC1MD;;EClCE,mDAAA;EACQ,2CAAA;CFgPT;ACrMD;;EE3FI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF0FF,0BAAA;CD2MD;ACzMD;;;EEhGI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFgGF,0BAAA;CD+MD;ACtMD;EE7GI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ECnBF,oEAAA;EH+HA,mBAAA;ECjEA,4FAAA;EACQ,oFAAA;CF8QT;ACjND;;EE7GI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ED2CF,yDAAA;EACQ,iDAAA;CFwRT;AC9MD;;EAEE,+CAAA;CDgND;AC5MD;EEhII,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ECnBF,oEAAA;EHkJA,mBAAA;CDkND;ACrND;;EEhII,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ED2CF,wDAAA;EACQ,gDAAA;CF+ST;AC/ND;;EAYI,0CAAA;CDuNH;AClND;;;EAGE,iBAAA;CDoND;AC/LD;EAfI;;;IAGE,YAAA;IE7JF,yEAAA;IACA,oEAAA;IACA,8FAAA;IAAA,uEAAA;IACA,4BAAA;IACA,uHAAA;GH+WD;CACF;AC3MD;EACE,8CAAA;EC3HA,2FAAA;EACQ,mFAAA;CFyUT;ACnMD;EEtLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CD+MD;AC1MD;EEvLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CDuND;ACjND;EExLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CD+ND;ACxND;EEzLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CDuOD;ACxND;EEjMI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH4ZH;ACrND;EE3MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHmaH;AC3ND;EE5MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH0aH;ACjOD;EE7MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHibH;ACvOD;EE9MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHwbH;AC7OD;EE/MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH+bH;AChPD;EElLI,8MAAA;EACA,yMAAA;EACA,sMAAA;CHqaH;AC5OD;EACE,mBAAA;EC9KA,mDAAA;EACQ,2CAAA;CF6ZT;AC7OD;;;EAGE,8BAAA;EEnOE,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFiOF,sBAAA;CDmPD;ACxPD;;;EAQI,kBAAA;CDqPH;AC3OD;ECnME,kDAAA;EACQ,0CAAA;CFibT;ACrOD;EE5PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHoeH;AC3OD;EE7PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH2eH;ACjPD;EE9PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHkfH;ACvPD;EE/PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHyfH;AC7PD;EEhQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHggBH;ACnQD;EEjQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHugBH;ACnQD;EExQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFsQF,sBAAA;EC3NA,0FAAA;EACQ,kFAAA;CFqeT","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap-theme.min.css b/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap-theme.min.css new file mode 100644 index 0000000000..61358b13d0 --- /dev/null +++ b/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap-theme.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.5 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .badge{text-shadow:none}.btn.active,.btn:active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:focus,.btn-default:hover{background-color:#e0e0e0;background-position:0 -15px}.btn-default.active,.btn-default:active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:focus,.btn-primary:hover{background-color:#265a88;background-position:0 -15px}.btn-primary.active,.btn-primary:active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:focus,.btn-success:hover{background-color:#419641;background-position:0 -15px}.btn-success.active,.btn-success:active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:focus,.btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.btn-info.active,.btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:focus,.btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.btn-warning.active,.btn-warning:active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:focus,.btn-danger:hover{background-color:#c12e2a;background-position:0 -15px}.btn-danger.active,.btn-danger:active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{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)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} \ No newline at end of file diff --git a/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap.css b/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap.css new file mode 100644 index 0000000000..680e768786 --- /dev/null +++ b/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap.css @@ -0,0 +1,6800 @@ +/*! + * Bootstrap v3.3.5 (http://getbootstrap.com) + * Copyright 2011-2015 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: bold; +} +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 #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +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 { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !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^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + 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 th, + .table-bordered td { + 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: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before, +.glyphicon-eur: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; +} +*:before, +*:after { + -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; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > 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, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.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, +.h4, +h5, +.h5, +h6, +.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:hover, +a.text-primary:focus { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover, +a.text-success:focus { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover, +a.text-info:focus { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover, +a.text-warning:focus { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover, +a.text-danger:focus { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover, +a.bg-success:focus { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover, +a.bg-info:focus { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover, +a.bg-warning:focus { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover, +a.bg-danger:focus { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + 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; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +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[title], +abbr[data-original-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 p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small: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 footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small: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: bold; + -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-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + 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-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + 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-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + 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-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + 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 > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + 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 > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + 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 > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + 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: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + 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="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + 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[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[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .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"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .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"] { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox 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; +} +textarea.input-sm, +select[multiple].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 textarea.form-control, +.form-group-sm select[multiple].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; +} +textarea.input-lg, +select[multiple].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 textarea.form-control, +.form-group-lg select[multiple].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; +} +.input-lg + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.form-group-lg .form-control + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-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 .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-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 .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-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 .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + 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: 14.333333px; + 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: normal; + 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:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + 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:hover, +.btn-default.active:hover, +.open > .dropdown-toggle.btn-default:hover, +.btn-default:active:focus, +.btn-default.active:focus, +.open > .dropdown-toggle.btn-default:focus, +.btn-default:active.focus, +.btn-default.active.focus, +.open > .dropdown-toggle.btn-default.focus { + 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, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + 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:hover, +.btn-primary.active:hover, +.open > .dropdown-toggle.btn-primary:hover, +.btn-primary:active:focus, +.btn-primary.active:focus, +.open > .dropdown-toggle.btn-primary:focus, +.btn-primary:active.focus, +.btn-primary.active.focus, +.open > .dropdown-toggle.btn-primary.focus { + 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, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + 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:hover, +.btn-success.active:hover, +.open > .dropdown-toggle.btn-success:hover, +.btn-success:active:focus, +.btn-success.active:focus, +.open > .dropdown-toggle.btn-success:focus, +.btn-success:active.focus, +.btn-success.active.focus, +.open > .dropdown-toggle.btn-success.focus { + 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, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + 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:hover, +.btn-info.active:hover, +.open > .dropdown-toggle.btn-info:hover, +.btn-info:active:focus, +.btn-info.active:focus, +.open > .dropdown-toggle.btn-info:focus, +.btn-info:active.focus, +.btn-info.active.focus, +.open > .dropdown-toggle.btn-info.focus { + 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, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + 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:hover, +.btn-warning.active:hover, +.open > .dropdown-toggle.btn-warning:hover, +.btn-warning:active:focus, +.btn-warning.active:focus, +.open > .dropdown-toggle.btn-warning:focus, +.btn-warning:active.focus, +.btn-warning.active.focus, +.open > .dropdown-toggle.btn-warning.focus { + 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, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + 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:hover, +.btn-danger.active:hover, +.open > .dropdown-toggle.btn-danger:hover, +.btn-danger:active:focus, +.btn-danger.active:focus, +.open > .dropdown-toggle.btn-danger:focus, +.btn-danger:active.focus, +.btn-danger.active.focus, +.open > .dropdown-toggle.btn-danger.focus { + 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, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + 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:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + 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="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].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; +} +.dropup, +.dropdown { + 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: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + 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 > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + 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-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-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="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + 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-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; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].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; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control: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: normal; + 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="radio"], +.input-group-addon input[type="checkbox"] { + 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:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + 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:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + 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:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + 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:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + 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:hover, +.nav-tabs > li.active > a:focus { + 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:hover, +.nav-tabs.nav-justified > .active > a:focus { + 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:hover, + .nav-tabs.nav-justified > .active > a:focus { + 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:hover, +.nav-pills > li.active > a:focus { + 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:hover, +.nav-tabs-justified > .active > a:focus { + 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:hover, + .nav-tabs-justified > .active > a:focus { + 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-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + 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-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + 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:hover, +.navbar-brand:focus { + 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 > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + 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 .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + 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:hover, +.navbar-default .navbar-brand:focus { + 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:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + 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:hover, +.navbar-default .navbar-nav > .open > a:focus { + 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:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + 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:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + 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:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + 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:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + 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:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + 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:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + 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:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + z-index: 3; + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + 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:hover, +.pager li > a:focus { + 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:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + 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]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + 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-xs .badge, +.btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + 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 { + 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 > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + 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: bold; +} +.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-striped .progress-bar, +.progress-bar-striped { + 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.active .progress-bar, +.progress-bar.active { + -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-left, +.media-right, +.media-body { + 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:hover, +button.list-group-item:hover, +a.list-group-item:focus, +button.list-group-item:focus { + 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:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .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:hover, +button.list-group-item-success:hover, +a.list-group-item-success:focus, +button.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +button.list-group-item-success.active, +a.list-group-item-success.active:hover, +button.list-group-item-success.active:hover, +a.list-group-item-success.active:focus, +button.list-group-item-success.active:focus { + 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:hover, +button.list-group-item-info:hover, +a.list-group-item-info:focus, +button.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +button.list-group-item-info.active, +a.list-group-item-info.active:hover, +button.list-group-item-info.active:hover, +a.list-group-item-info.active:focus, +button.list-group-item-info.active:focus { + 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:hover, +button.list-group-item-warning:hover, +a.list-group-item-warning:focus, +button.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +button.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +button.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus, +button.list-group-item-warning.active:focus { + 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:hover, +button.list-group-item-danger:hover, +a.list-group-item-danger:focus, +button.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +button.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +button.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus, +button.list-group-item-danger.active:focus { + 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 > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.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 > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead: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-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .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 td:first-child, +.panel > .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 td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th: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 th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .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 td:last-child, +.panel > .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 td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th: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 th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .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 td:first-child, +.panel > .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 td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .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 td:last-child, +.panel > .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 td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .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 th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.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 > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + 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 iframe, +.embed-responsive embed, +.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: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + 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 { + min-height: 16.42857143px; + 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: normal; + 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: normal; + 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 > img, +.carousel-inner > .item > a > 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.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + 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); + 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:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -10px; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + 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-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer: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-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-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; + } + th.visible-xs, + td.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; + } + th.visible-sm, + td.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; + } + th.visible-md, + td.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; + } + th.visible-lg, + td.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; + } + th.visible-print, + td.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.css.map */ diff --git a/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap.css.map b/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap.css.map new file mode 100644 index 0000000000..9f60ed2b1b --- /dev/null +++ b/gui/baculum/framework/Web/Javascripts/source/bootstrap3/css/bootstrap.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,4EAA4E;ACG5E;EACE,wBAAA;EACA,2BAAA;EACA,+BAAA;CDDD;ACQD;EACE,UAAA;CDND;ACmBD;;;;;;;;;;;;;EAaE,eAAA;CDjBD;ACyBD;;;;EAIE,sBAAA;EACA,yBAAA;CDvBD;AC+BD;EACE,cAAA;EACA,UAAA;CD7BD;ACqCD;;EAEE,cAAA;CDnCD;AC6CD;EACE,8BAAA;CD3CD;ACmDD;;EAEE,WAAA;CDjDD;AC2DD;EACE,0BAAA;CDzDD;ACgED;;EAEE,kBAAA;CD9DD;ACqED;EACE,mBAAA;CDnED;AC2ED;EACE,eAAA;EACA,iBAAA;CDzED;ACgFD;EACE,iBAAA;EACA,YAAA;CD9ED;ACqFD;EACE,eAAA;CDnFD;AC0FD;;EAEE,eAAA;EACA,eAAA;EACA,mBAAA;EACA,yBAAA;CDxFD;AC2FD;EACE,YAAA;CDzFD;AC4FD;EACE,gBAAA;CD1FD;ACoGD;EACE,UAAA;CDlGD;ACyGD;EACE,iBAAA;CDvGD;ACiHD;EACE,iBAAA;CD/GD;ACsHD;EACE,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EACA,UAAA;CDpHD;AC2HD;EACE,eAAA;CDzHD;ACgID;;;;EAIE,kCAAA;EACA,eAAA;CD9HD;ACgJD;;;;;EAKE,eAAA;EACA,cAAA;EACA,UAAA;CD9ID;ACqJD;EACE,kBAAA;CDnJD;AC6JD;;EAEE,qBAAA;CD3JD;ACsKD;;;;EAIE,2BAAA;EACA,gBAAA;CDpKD;AC2KD;;EAEE,gBAAA;CDzKD;ACgLD;;EAEE,UAAA;EACA,WAAA;CD9KD;ACsLD;EACE,oBAAA;CDpLD;AC+LD;;EAEE,+BAAA;KAAA,4BAAA;UAAA,uBAAA;EACA,WAAA;CD7LD;ACsMD;;EAEE,aAAA;CDpMD;AC4MD;EACE,8BAAA;EACA,gCAAA;KAAA,6BAAA;UAAA,wBAAA;CD1MD;ACmND;;EAEE,yBAAA;CDjND;ACwND;EACE,0BAAA;EACA,cAAA;EACA,+BAAA;CDtND;AC8ND;EACE,UAAA;EACA,WAAA;CD5ND;ACmOD;EACE,eAAA;CDjOD;ACyOD;EACE,kBAAA;CDvOD;ACiPD;EACE,0BAAA;EACA,kBAAA;CD/OD;ACkPD;;EAEE,WAAA;CDhPD;AACD,qFAAqF;AElFrF;EA7FI;;;IAGI,mCAAA;IACA,uBAAA;IACA,oCAAA;YAAA,4BAAA;IACA,6BAAA;GFkLL;EE/KC;;IAEI,2BAAA;GFiLL;EE9KC;IACI,6BAAA;GFgLL;EE7KC;IACI,8BAAA;GF+KL;EE1KC;;IAEI,YAAA;GF4KL;EEzKC;;IAEI,uBAAA;IACA,yBAAA;GF2KL;EExKC;IACI,4BAAA;GF0KL;EEvKC;;IAEI,yBAAA;GFyKL;EEtKC;IACI,2BAAA;GFwKL;EErKC;;;IAGI,WAAA;IACA,UAAA;GFuKL;EEpKC;;IAEI,wBAAA;GFsKL;EEhKC;IACI,cAAA;GFkKL;EEhKC;;IAGQ,kCAAA;GFiKT;EE9JC;IACI,uBAAA;GFgKL;EE7JC;IACI,qCAAA;GF+JL;EEhKC;;IAKQ,kCAAA;GF+JT;EE5JC;;IAGQ,kCAAA;GF6JT;CACF;AGnPD;EACE,oCAAA;EACA,sDAAA;EACA,gYAAA;CHqPD;AG7OD;EACE,mBAAA;EACA,SAAA;EACA,sBAAA;EACA,oCAAA;EACA,mBAAA;EACA,oBAAA;EACA,eAAA;EACA,oCAAA;EACA,mCAAA;CH+OD;AG3OmC;EAAW,eAAA;CH8O9C;AG7OmC;EAAW,eAAA;CHgP9C;AG9OmC;;EAAW,iBAAA;CHkP9C;AGjPmC;EAAW,iBAAA;CHoP9C;AGnPmC;EAAW,iBAAA;CHsP9C;AGrPmC;EAAW,iBAAA;CHwP9C;AGvPmC;EAAW,iBAAA;CH0P9C;AGzPmC;EAAW,iBAAA;CH4P9C;AG3PmC;EAAW,iBAAA;CH8P9C;AG7PmC;EAAW,iBAAA;CHgQ9C;AG/PmC;EAAW,iBAAA;CHkQ9C;AGjQmC;EAAW,iBAAA;CHoQ9C;AGnQmC;EAAW,iBAAA;CHsQ9C;AGrQmC;EAAW,iBAAA;CHwQ9C;AGvQmC;EAAW,iBAAA;CH0Q9C;AGzQmC;EAAW,iBAAA;CH4Q9C;AG3QmC;EAAW,iBAAA;CH8Q9C;AG7QmC;EAAW,iBAAA;CHgR9C;AG/QmC;EAAW,iBAAA;CHkR9C;AGjRmC;EAAW,iBAAA;CHoR9C;AGnRmC;EAAW,iBAAA;CHsR9C;AGrRmC;EAAW,iBAAA;CHwR9C;AGvRmC;EAAW,iBAAA;CH0R9C;AGzRmC;EAAW,iBAAA;CH4R9C;AG3RmC;EAAW,iBAAA;CH8R9C;AG7RmC;EAAW,iBAAA;CHgS9C;AG/RmC;EAAW,iBAAA;CHkS9C;AGjSmC;EAAW,iBAAA;CHoS9C;AGnSmC;EAAW,iBAAA;CHsS9C;AGrSmC;EAAW,iBAAA;CHwS9C;AGvSmC;EAAW,iBAAA;CH0S9C;AGzSmC;EAAW,iBAAA;CH4S9C;AG3SmC;EAAW,iBAAA;CH8S9C;AG7SmC;EAAW,iBAAA;CHgT9C;AG/SmC;EAAW,iBAAA;CHkT9C;AGjTmC;EAAW,iBAAA;CHoT9C;AGnTmC;EAAW,iBAAA;CHsT9C;AGrTmC;EAAW,iBAAA;CHwT9C;AGvTmC;EAAW,iBAAA;CH0T9C;AGzTmC;EAAW,iBAAA;CH4T9C;AG3TmC;EAAW,iBAAA;CH8T9C;AG7TmC;EAAW,iBAAA;CHgU9C;AG/TmC;EAAW,iBAAA;CHkU9C;AGjUmC;EAAW,iBAAA;CHoU9C;AGnUmC;EAAW,iBAAA;CHsU9C;AGrUmC;EAAW,iBAAA;CHwU9C;AGvUmC;EAAW,iBAAA;CH0U9C;AGzUmC;EAAW,iBAAA;CH4U9C;AG3UmC;EAAW,iBAAA;CH8U9C;AG7UmC;EAAW,iBAAA;CHgV9C;AG/UmC;EAAW,iBAAA;CHkV9C;AGjVmC;EAAW,iBAAA;CHoV9C;AGnVmC;EAAW,iBAAA;CHsV9C;AGrVmC;EAAW,iBAAA;CHwV9C;AGvVmC;EAAW,iBAAA;CH0V9C;AGzVmC;EAAW,iBAAA;CH4V9C;AG3VmC;EAAW,iBAAA;CH8V9C;AG7VmC;EAAW,iBAAA;CHgW9C;AG/VmC;EAAW,iBAAA;CHkW9C;AGjWmC;EAAW,iBAAA;CHoW9C;AGnWmC;EAAW,iBAAA;CHsW9C;AGrWmC;EAAW,iBAAA;CHwW9C;AGvWmC;EAAW,iBAAA;CH0W9C;AGzWmC;EAAW,iBAAA;CH4W9C;AG3WmC;EAAW,iBAAA;CH8W9C;AG7WmC;EAAW,iBAAA;CHgX9C;AG/WmC;EAAW,iBAAA;CHkX9C;AGjXmC;EAAW,iBAAA;CHoX9C;AGnXmC;EAAW,iBAAA;CHsX9C;AGrXmC;EAAW,iBAAA;CHwX9C;AGvXmC;EAAW,iBAAA;CH0X9C;AGzXmC;EAAW,iBAAA;CH4X9C;AG3XmC;EAAW,iBAAA;CH8X9C;AG7XmC;EAAW,iBAAA;CHgY9C;AG/XmC;EAAW,iBAAA;CHkY9C;AGjYmC;EAAW,iBAAA;CHoY9C;AGnYmC;EAAW,iBAAA;CHsY9C;AGrYmC;EAAW,iBAAA;CHwY9C;AGvYmC;EAAW,iBAAA;CH0Y9C;AGzYmC;EAAW,iBAAA;CH4Y9C;AG3YmC;EAAW,iBAAA;CH8Y9C;AG7YmC;EAAW,iBAAA;CHgZ9C;AG/YmC;EAAW,iBAAA;CHkZ9C;AGjZmC;EAAW,iBAAA;CHoZ9C;AGnZmC;EAAW,iBAAA;CHsZ9C;AGrZmC;EAAW,iBAAA;CHwZ9C;AGvZmC;EAAW,iBAAA;CH0Z9C;AGzZmC;EAAW,iBAAA;CH4Z9C;AG3ZmC;EAAW,iBAAA;CH8Z9C;AG7ZmC;EAAW,iBAAA;CHga9C;AG/ZmC;EAAW,iBAAA;CHka9C;AGjamC;EAAW,iBAAA;CHoa9C;AGnamC;EAAW,iBAAA;CHsa9C;AGramC;EAAW,iBAAA;CHwa9C;AGvamC;EAAW,iBAAA;CH0a9C;AGzamC;EAAW,iBAAA;CH4a9C;AG3amC;EAAW,iBAAA;CH8a9C;AG7amC;EAAW,iBAAA;CHgb9C;AG/amC;EAAW,iBAAA;CHkb9C;AGjbmC;EAAW,iBAAA;CHob9C;AGnbmC;EAAW,iBAAA;CHsb9C;AGrbmC;EAAW,iBAAA;CHwb9C;AGvbmC;EAAW,iBAAA;CH0b9C;AGzbmC;EAAW,iBAAA;CH4b9C;AG3bmC;EAAW,iBAAA;CH8b9C;AG7bmC;EAAW,iBAAA;CHgc9C;AG/bmC;EAAW,iBAAA;CHkc9C;AGjcmC;EAAW,iBAAA;CHoc9C;AGncmC;EAAW,iBAAA;CHsc9C;AGrcmC;EAAW,iBAAA;CHwc9C;AGvcmC;EAAW,iBAAA;CH0c9C;AGzcmC;EAAW,iBAAA;CH4c9C;AG3cmC;EAAW,iBAAA;CH8c9C;AG7cmC;EAAW,iBAAA;CHgd9C;AG/cmC;EAAW,iBAAA;CHkd9C;AGjdmC;EAAW,iBAAA;CHod9C;AGndmC;EAAW,iBAAA;CHsd9C;AGrdmC;EAAW,iBAAA;CHwd9C;AGvdmC;EAAW,iBAAA;CH0d9C;AGzdmC;EAAW,iBAAA;CH4d9C;AG3dmC;EAAW,iBAAA;CH8d9C;AG7dmC;EAAW,iBAAA;CHge9C;AG/dmC;EAAW,iBAAA;CHke9C;AGjemC;EAAW,iBAAA;CHoe9C;AGnemC;EAAW,iBAAA;CHse9C;AGremC;EAAW,iBAAA;CHwe9C;AGvemC;EAAW,iBAAA;CH0e9C;AGzemC;EAAW,iBAAA;CH4e9C;AG3emC;EAAW,iBAAA;CH8e9C;AG7emC;EAAW,iBAAA;CHgf9C;AG/emC;EAAW,iBAAA;CHkf9C;AGjfmC;EAAW,iBAAA;CHof9C;AGnfmC;EAAW,iBAAA;CHsf9C;AGrfmC;EAAW,iBAAA;CHwf9C;AGvfmC;EAAW,iBAAA;CH0f9C;AGzfmC;EAAW,iBAAA;CH4f9C;AG3fmC;EAAW,iBAAA;CH8f9C;AG7fmC;EAAW,iBAAA;CHggB9C;AG/fmC;EAAW,iBAAA;CHkgB9C;AGjgBmC;EAAW,iBAAA;CHogB9C;AGngBmC;EAAW,iBAAA;CHsgB9C;AGrgBmC;EAAW,iBAAA;CHwgB9C;AGvgBmC;EAAW,iBAAA;CH0gB9C;AGzgBmC;EAAW,iBAAA;CH4gB9C;AG3gBmC;EAAW,iBAAA;CH8gB9C;AG7gBmC;EAAW,iBAAA;CHghB9C;AG/gBmC;EAAW,iBAAA;CHkhB9C;AGjhBmC;EAAW,iBAAA;CHohB9C;AGnhBmC;EAAW,iBAAA;CHshB9C;AGrhBmC;EAAW,iBAAA;CHwhB9C;AGvhBmC;EAAW,iBAAA;CH0hB9C;AGzhBmC;EAAW,iBAAA;CH4hB9C;AG3hBmC;EAAW,iBAAA;CH8hB9C;AG7hBmC;EAAW,iBAAA;CHgiB9C;AG/hBmC;EAAW,iBAAA;CHkiB9C;AGjiBmC;EAAW,iBAAA;CHoiB9C;AGniBmC;EAAW,iBAAA;CHsiB9C;AGriBmC;EAAW,iBAAA;CHwiB9C;AGviBmC;EAAW,iBAAA;CH0iB9C;AGziBmC;EAAW,iBAAA;CH4iB9C;AG3iBmC;EAAW,iBAAA;CH8iB9C;AG7iBmC;EAAW,iBAAA;CHgjB9C;AG/iBmC;EAAW,iBAAA;CHkjB9C;AGjjBmC;EAAW,iBAAA;CHojB9C;AGnjBmC;EAAW,iBAAA;CHsjB9C;AGrjBmC;EAAW,iBAAA;CHwjB9C;AGvjBmC;EAAW,iBAAA;CH0jB9C;AGzjBmC;EAAW,iBAAA;CH4jB9C;AG3jBmC;EAAW,iBAAA;CH8jB9C;AG7jBmC;EAAW,iBAAA;CHgkB9C;AG/jBmC;EAAW,iBAAA;CHkkB9C;AGjkBmC;EAAW,iBAAA;CHokB9C;AGnkBmC;EAAW,iBAAA;CHskB9C;AGrkBmC;EAAW,iBAAA;CHwkB9C;AGvkBmC;EAAW,iBAAA;CH0kB9C;AGzkBmC;EAAW,iBAAA;CH4kB9C;AG3kBmC;EAAW,iBAAA;CH8kB9C;AG7kBmC;EAAW,iBAAA;CHglB9C;AG/kBmC;EAAW,iBAAA;CHklB9C;AGjlBmC;EAAW,iBAAA;CHolB9C;AGnlBmC;EAAW,iBAAA;CHslB9C;AGrlBmC;EAAW,iBAAA;CHwlB9C;AGvlBmC;EAAW,iBAAA;CH0lB9C;AGzlBmC;EAAW,iBAAA;CH4lB9C;AG3lBmC;EAAW,iBAAA;CH8lB9C;AG7lBmC;EAAW,iBAAA;CHgmB9C;AG/lBmC;EAAW,iBAAA;CHkmB9C;AGjmBmC;EAAW,iBAAA;CHomB9C;AGnmBmC;EAAW,iBAAA;CHsmB9C;AGrmBmC;EAAW,iBAAA;CHwmB9C;AGvmBmC;EAAW,iBAAA;CH0mB9C;AGzmBmC;EAAW,iBAAA;CH4mB9C;AG3mBmC;EAAW,iBAAA;CH8mB9C;AG7mBmC;EAAW,iBAAA;CHgnB9C;AG/mBmC;EAAW,iBAAA;CHknB9C;AGjnBmC;EAAW,iBAAA;CHonB9C;AGnnBmC;EAAW,iBAAA;CHsnB9C;AGrnBmC;EAAW,iBAAA;CHwnB9C;AGvnBmC;EAAW,iBAAA;CH0nB9C;AGznBmC;EAAW,iBAAA;CH4nB9C;AG3nBmC;EAAW,iBAAA;CH8nB9C;AG7nBmC;EAAW,iBAAA;CHgoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AG/nBmC;EAAW,iBAAA;CHkoB9C;AGjoBmC;EAAW,iBAAA;CHooB9C;AGnoBmC;EAAW,iBAAA;CHsoB9C;AGroBmC;EAAW,iBAAA;CHwoB9C;AGvoBmC;EAAW,iBAAA;CH0oB9C;AGzoBmC;EAAW,iBAAA;CH4oB9C;AG3oBmC;EAAW,iBAAA;CH8oB9C;AG7oBmC;EAAW,iBAAA;CHgpB9C;AG/oBmC;EAAW,iBAAA;CHkpB9C;AGjpBmC;EAAW,iBAAA;CHopB9C;AGnpBmC;EAAW,iBAAA;CHspB9C;AGrpBmC;EAAW,iBAAA;CHwpB9C;AGvpBmC;EAAW,iBAAA;CH0pB9C;AGzpBmC;EAAW,iBAAA;CH4pB9C;AG3pBmC;EAAW,iBAAA;CH8pB9C;AG7pBmC;EAAW,iBAAA;CHgqB9C;AG/pBmC;EAAW,iBAAA;CHkqB9C;AGjqBmC;EAAW,iBAAA;CHoqB9C;AGnqBmC;EAAW,iBAAA;CHsqB9C;AGrqBmC;EAAW,iBAAA;CHwqB9C;AGvqBmC;EAAW,iBAAA;CH0qB9C;AGzqBmC;EAAW,iBAAA;CH4qB9C;AG3qBmC;EAAW,iBAAA;CH8qB9C;AG7qBmC;EAAW,iBAAA;CHgrB9C;AG/qBmC;EAAW,iBAAA;CHkrB9C;AGjrBmC;EAAW,iBAAA;CHorB9C;AGnrBmC;EAAW,iBAAA;CHsrB9C;AGrrBmC;EAAW,iBAAA;CHwrB9C;AGvrBmC;EAAW,iBAAA;CH0rB9C;AGzrBmC;EAAW,iBAAA;CH4rB9C;AG3rBmC;EAAW,iBAAA;CH8rB9C;AG7rBmC;EAAW,iBAAA;CHgsB9C;AG/rBmC;EAAW,iBAAA;CHksB9C;AGjsBmC;EAAW,iBAAA;CHosB9C;AGnsBmC;EAAW,iBAAA;CHssB9C;AGrsBmC;EAAW,iBAAA;CHwsB9C;AGvsBmC;EAAW,iBAAA;CH0sB9C;AGzsBmC;EAAW,iBAAA;CH4sB9C;AG3sBmC;EAAW,iBAAA;CH8sB9C;AG7sBmC;EAAW,iBAAA;CHgtB9C;AG/sBmC;EAAW,iBAAA;CHktB9C;AGjtBmC;EAAW,iBAAA;CHotB9C;AGntBmC;EAAW,iBAAA;CHstB9C;AGrtBmC;EAAW,iBAAA;CHwtB9C;AGvtBmC;EAAW,iBAAA;CH0tB9C;AGztBmC;EAAW,iBAAA;CH4tB9C;AG3tBmC;EAAW,iBAAA;CH8tB9C;AG7tBmC;EAAW,iBAAA;CHguB9C;AG/tBmC;EAAW,iBAAA;CHkuB9C;AGjuBmC;EAAW,iBAAA;CHouB9C;AGnuBmC;EAAW,iBAAA;CHsuB9C;AGruBmC;EAAW,iBAAA;CHwuB9C;AGvuBmC;EAAW,iBAAA;CH0uB9C;AGzuBmC;EAAW,iBAAA;CH4uB9C;AG3uBmC;EAAW,iBAAA;CH8uB9C;AG7uBmC;EAAW,iBAAA;CHgvB9C;AIthCD;ECgEE,+BAAA;EACG,4BAAA;EACK,uBAAA;CLy9BT;AIxhCD;;EC6DE,+BAAA;EACG,4BAAA;EACK,uBAAA;CL+9BT;AIthCD;EACE,gBAAA;EACA,8CAAA;CJwhCD;AIrhCD;EACE,4DAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,0BAAA;CJuhCD;AInhCD;;;;EAIE,qBAAA;EACA,mBAAA;EACA,qBAAA;CJqhCD;AI/gCD;EACE,eAAA;EACA,sBAAA;CJihCD;AI/gCC;;EAEE,eAAA;EACA,2BAAA;CJihCH;AI9gCC;EErDA,qBAAA;EAEA,2CAAA;EACA,qBAAA;CNqkCD;AIxgCD;EACE,UAAA;CJ0gCD;AIpgCD;EACE,uBAAA;CJsgCD;AIlgCD;;;;;EGvEE,eAAA;EACA,gBAAA;EACA,aAAA;CPglCD;AItgCD;EACE,mBAAA;CJwgCD;AIlgCD;EACE,aAAA;EACA,wBAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;EC6FA,yCAAA;EACK,oCAAA;EACG,iCAAA;EEvLR,sBAAA;EACA,gBAAA;EACA,aAAA;CPgmCD;AIlgCD;EACE,mBAAA;CJogCD;AI9/BD;EACE,iBAAA;EACA,oBAAA;EACA,UAAA;EACA,8BAAA;CJggCD;AIx/BD;EACE,mBAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,WAAA;EACA,iBAAA;EACA,uBAAA;EACA,UAAA;CJ0/BD;AIl/BC;;EAEE,iBAAA;EACA,YAAA;EACA,aAAA;EACA,UAAA;EACA,kBAAA;EACA,WAAA;CJo/BH;AIz+BD;EACE,gBAAA;CJ2+BD;AQloCD;;;;;;;;;;;;EAEE,qBAAA;EACA,iBAAA;EACA,iBAAA;EACA,eAAA;CR8oCD;AQnpCD;;;;;;;;;;;;;;;;;;;;;;;;EASI,oBAAA;EACA,eAAA;EACA,eAAA;CRoqCH;AQhqCD;;;;;;EAGE,iBAAA;EACA,oBAAA;CRqqCD;AQzqCD;;;;;;;;;;;;EAQI,eAAA;CR+qCH;AQ5qCD;;;;;;EAGE,iBAAA;EACA,oBAAA;CRirCD;AQrrCD;;;;;;;;;;;;EAQI,eAAA;CR2rCH;AQvrCD;;EAAU,gBAAA;CR2rCT;AQ1rCD;;EAAU,gBAAA;CR8rCT;AQ7rCD;;EAAU,gBAAA;CRisCT;AQhsCD;;EAAU,gBAAA;CRosCT;AQnsCD;;EAAU,gBAAA;CRusCT;AQtsCD;;EAAU,gBAAA;CR0sCT;AQpsCD;EACE,iBAAA;CRssCD;AQnsCD;EACE,oBAAA;EACA,gBAAA;EACA,iBAAA;EACA,iBAAA;CRqsCD;AQhsCD;EAAA;IAFI,gBAAA;GRssCD;CACF;AQ9rCD;;EAEE,eAAA;CRgsCD;AQ7rCD;;EAEE,0BAAA;EACA,cAAA;CR+rCD;AQ3rCD;EAAuB,iBAAA;CR8rCtB;AQ7rCD;EAAuB,kBAAA;CRgsCtB;AQ/rCD;EAAuB,mBAAA;CRksCtB;AQjsCD;EAAuB,oBAAA;CRosCtB;AQnsCD;EAAuB,oBAAA;CRssCtB;AQnsCD;EAAuB,0BAAA;CRssCtB;AQrsCD;EAAuB,0BAAA;CRwsCtB;AQvsCD;EAAuB,2BAAA;CR0sCtB;AQvsCD;EACE,eAAA;CRysCD;AQvsCD;ECrGE,eAAA;CT+yCD;AS9yCC;;EAEE,eAAA;CTgzCH;AQ3sCD;ECxGE,eAAA;CTszCD;ASrzCC;;EAEE,eAAA;CTuzCH;AQ/sCD;EC3GE,eAAA;CT6zCD;AS5zCC;;EAEE,eAAA;CT8zCH;AQntCD;EC9GE,eAAA;CTo0CD;ASn0CC;;EAEE,eAAA;CTq0CH;AQvtCD;ECjHE,eAAA;CT20CD;AS10CC;;EAEE,eAAA;CT40CH;AQvtCD;EAGE,YAAA;EE3HA,0BAAA;CVm1CD;AUl1CC;;EAEE,0BAAA;CVo1CH;AQztCD;EE9HE,0BAAA;CV01CD;AUz1CC;;EAEE,0BAAA;CV21CH;AQ7tCD;EEjIE,0BAAA;CVi2CD;AUh2CC;;EAEE,0BAAA;CVk2CH;AQjuCD;EEpIE,0BAAA;CVw2CD;AUv2CC;;EAEE,0BAAA;CVy2CH;AQruCD;EEvIE,0BAAA;CV+2CD;AU92CC;;EAEE,0BAAA;CVg3CH;AQpuCD;EACE,oBAAA;EACA,oBAAA;EACA,iCAAA;CRsuCD;AQ9tCD;;EAEE,cAAA;EACA,oBAAA;CRguCD;AQnuCD;;;;EAMI,iBAAA;CRmuCH;AQ5tCD;EACE,gBAAA;EACA,iBAAA;CR8tCD;AQ1tCD;EALE,gBAAA;EACA,iBAAA;EAMA,kBAAA;CR6tCD;AQ/tCD;EAKI,sBAAA;EACA,kBAAA;EACA,mBAAA;CR6tCH;AQxtCD;EACE,cAAA;EACA,oBAAA;CR0tCD;AQxtCD;;EAEE,wBAAA;CR0tCD;AQxtCD;EACE,kBAAA;CR0tCD;AQxtCD;EACE,eAAA;CR0tCD;AQjsCD;EAAA;IAVM,YAAA;IACA,aAAA;IACA,YAAA;IACA,kBAAA;IGtNJ,iBAAA;IACA,wBAAA;IACA,oBAAA;GXs6CC;EQ3sCH;IAHM,mBAAA;GRitCH;CACF;AQxsCD;;EAGE,aAAA;EACA,kCAAA;CRysCD;AQvsCD;EACE,eAAA;EA9IqB,0BAAA;CRw1CtB;AQrsCD;EACE,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,+BAAA;CRusCD;AQlsCG;;;EACE,iBAAA;CRssCL;AQhtCD;;;EAmBI,eAAA;EACA,eAAA;EACA,wBAAA;EACA,eAAA;CRksCH;AQhsCG;;;EACE,uBAAA;CRosCL;AQ5rCD;;EAEE,oBAAA;EACA,gBAAA;EACA,gCAAA;EACA,eAAA;EACA,kBAAA;CR8rCD;AQxrCG;;;;;;EAAW,YAAA;CRgsCd;AQ/rCG;;;;;;EACE,uBAAA;CRssCL;AQhsCD;EACE,oBAAA;EACA,mBAAA;EACA,wBAAA;CRksCD;AYx+CD;;;;EAIE,+DAAA;CZ0+CD;AYt+CD;EACE,iBAAA;EACA,eAAA;EACA,eAAA;EACA,0BAAA;EACA,mBAAA;CZw+CD;AYp+CD;EACE,iBAAA;EACA,eAAA;EACA,eAAA;EACA,0BAAA;EACA,mBAAA;EACA,uDAAA;UAAA,+CAAA;CZs+CD;AY5+CD;EASI,WAAA;EACA,gBAAA;EACA,kBAAA;EACA,yBAAA;UAAA,iBAAA;CZs+CH;AYj+CD;EACE,eAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,wBAAA;EACA,sBAAA;EACA,sBAAA;EACA,eAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;CZm+CD;AY9+CD;EAeI,WAAA;EACA,mBAAA;EACA,eAAA;EACA,sBAAA;EACA,8BAAA;EACA,iBAAA;CZk+CH;AY79CD;EACE,kBAAA;EACA,mBAAA;CZ+9CD;AazhDD;ECHE,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;Cd+hDD;AazhDC;EAAA;IAFE,aAAA;Gb+hDD;CACF;Aa3hDC;EAAA;IAFE,aAAA;GbiiDD;CACF;Aa7hDD;EAAA;IAFI,cAAA;GbmiDD;CACF;Aa1hDD;ECvBE,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,oBAAA;CdojDD;AavhDD;ECvBE,mBAAA;EACA,oBAAA;CdijDD;AejjDG;EACE,mBAAA;EAEA,gBAAA;EAEA,mBAAA;EACA,oBAAA;CfijDL;AejiDG;EACE,YAAA;CfmiDL;Ae5hDC;EACE,YAAA;Cf8hDH;Ae/hDC;EACE,oBAAA;CfiiDH;AeliDC;EACE,oBAAA;CfoiDH;AeriDC;EACE,WAAA;CfuiDH;AexiDC;EACE,oBAAA;Cf0iDH;Ae3iDC;EACE,oBAAA;Cf6iDH;Ae9iDC;EACE,WAAA;CfgjDH;AejjDC;EACE,oBAAA;CfmjDH;AepjDC;EACE,oBAAA;CfsjDH;AevjDC;EACE,WAAA;CfyjDH;Ae1jDC;EACE,oBAAA;Cf4jDH;Ae7jDC;EACE,mBAAA;Cf+jDH;AejjDC;EACE,YAAA;CfmjDH;AepjDC;EACE,oBAAA;CfsjDH;AevjDC;EACE,oBAAA;CfyjDH;Ae1jDC;EACE,WAAA;Cf4jDH;Ae7jDC;EACE,oBAAA;Cf+jDH;AehkDC;EACE,oBAAA;CfkkDH;AenkDC;EACE,WAAA;CfqkDH;AetkDC;EACE,oBAAA;CfwkDH;AezkDC;EACE,oBAAA;Cf2kDH;Ae5kDC;EACE,WAAA;Cf8kDH;Ae/kDC;EACE,oBAAA;CfilDH;AellDC;EACE,mBAAA;CfolDH;AehlDC;EACE,YAAA;CfklDH;AelmDC;EACE,WAAA;CfomDH;AermDC;EACE,mBAAA;CfumDH;AexmDC;EACE,mBAAA;Cf0mDH;Ae3mDC;EACE,UAAA;Cf6mDH;Ae9mDC;EACE,mBAAA;CfgnDH;AejnDC;EACE,mBAAA;CfmnDH;AepnDC;EACE,UAAA;CfsnDH;AevnDC;EACE,mBAAA;CfynDH;Ae1nDC;EACE,mBAAA;Cf4nDH;Ae7nDC;EACE,UAAA;Cf+nDH;AehoDC;EACE,mBAAA;CfkoDH;AenoDC;EACE,kBAAA;CfqoDH;AejoDC;EACE,WAAA;CfmoDH;AernDC;EACE,kBAAA;CfunDH;AexnDC;EACE,0BAAA;Cf0nDH;Ae3nDC;EACE,0BAAA;Cf6nDH;Ae9nDC;EACE,iBAAA;CfgoDH;AejoDC;EACE,0BAAA;CfmoDH;AepoDC;EACE,0BAAA;CfsoDH;AevoDC;EACE,iBAAA;CfyoDH;Ae1oDC;EACE,0BAAA;Cf4oDH;Ae7oDC;EACE,0BAAA;Cf+oDH;AehpDC;EACE,iBAAA;CfkpDH;AenpDC;EACE,0BAAA;CfqpDH;AetpDC;EACE,yBAAA;CfwpDH;AezpDC;EACE,gBAAA;Cf2pDH;Aa3pDD;EElCI;IACE,YAAA;GfgsDH;EezrDD;IACE,YAAA;Gf2rDD;Ee5rDD;IACE,oBAAA;Gf8rDD;Ee/rDD;IACE,oBAAA;GfisDD;EelsDD;IACE,WAAA;GfosDD;EersDD;IACE,oBAAA;GfusDD;EexsDD;IACE,oBAAA;Gf0sDD;Ee3sDD;IACE,WAAA;Gf6sDD;Ee9sDD;IACE,oBAAA;GfgtDD;EejtDD;IACE,oBAAA;GfmtDD;EeptDD;IACE,WAAA;GfstDD;EevtDD;IACE,oBAAA;GfytDD;Ee1tDD;IACE,mBAAA;Gf4tDD;Ee9sDD;IACE,YAAA;GfgtDD;EejtDD;IACE,oBAAA;GfmtDD;EeptDD;IACE,oBAAA;GfstDD;EevtDD;IACE,WAAA;GfytDD;Ee1tDD;IACE,oBAAA;Gf4tDD;Ee7tDD;IACE,oBAAA;Gf+tDD;EehuDD;IACE,WAAA;GfkuDD;EenuDD;IACE,oBAAA;GfquDD;EetuDD;IACE,oBAAA;GfwuDD;EezuDD;IACE,WAAA;Gf2uDD;Ee5uDD;IACE,oBAAA;Gf8uDD;Ee/uDD;IACE,mBAAA;GfivDD;Ee7uDD;IACE,YAAA;Gf+uDD;Ee/vDD;IACE,WAAA;GfiwDD;EelwDD;IACE,mBAAA;GfowDD;EerwDD;IACE,mBAAA;GfuwDD;EexwDD;IACE,UAAA;Gf0wDD;Ee3wDD;IACE,mBAAA;Gf6wDD;Ee9wDD;IACE,mBAAA;GfgxDD;EejxDD;IACE,UAAA;GfmxDD;EepxDD;IACE,mBAAA;GfsxDD;EevxDD;IACE,mBAAA;GfyxDD;Ee1xDD;IACE,UAAA;Gf4xDD;Ee7xDD;IACE,mBAAA;Gf+xDD;EehyDD;IACE,kBAAA;GfkyDD;Ee9xDD;IACE,WAAA;GfgyDD;EelxDD;IACE,kBAAA;GfoxDD;EerxDD;IACE,0BAAA;GfuxDD;EexxDD;IACE,0BAAA;Gf0xDD;Ee3xDD;IACE,iBAAA;Gf6xDD;Ee9xDD;IACE,0BAAA;GfgyDD;EejyDD;IACE,0BAAA;GfmyDD;EepyDD;IACE,iBAAA;GfsyDD;EevyDD;IACE,0BAAA;GfyyDD;Ee1yDD;IACE,0BAAA;Gf4yDD;Ee7yDD;IACE,iBAAA;Gf+yDD;EehzDD;IACE,0BAAA;GfkzDD;EenzDD;IACE,yBAAA;GfqzDD;EetzDD;IACE,gBAAA;GfwzDD;CACF;AahzDD;EE3CI;IACE,YAAA;Gf81DH;Eev1DD;IACE,YAAA;Gfy1DD;Ee11DD;IACE,oBAAA;Gf41DD;Ee71DD;IACE,oBAAA;Gf+1DD;Eeh2DD;IACE,WAAA;Gfk2DD;Een2DD;IACE,oBAAA;Gfq2DD;Eet2DD;IACE,oBAAA;Gfw2DD;Eez2DD;IACE,WAAA;Gf22DD;Ee52DD;IACE,oBAAA;Gf82DD;Ee/2DD;IACE,oBAAA;Gfi3DD;Eel3DD;IACE,WAAA;Gfo3DD;Eer3DD;IACE,oBAAA;Gfu3DD;Eex3DD;IACE,mBAAA;Gf03DD;Ee52DD;IACE,YAAA;Gf82DD;Ee/2DD;IACE,oBAAA;Gfi3DD;Eel3DD;IACE,oBAAA;Gfo3DD;Eer3DD;IACE,WAAA;Gfu3DD;Eex3DD;IACE,oBAAA;Gf03DD;Ee33DD;IACE,oBAAA;Gf63DD;Ee93DD;IACE,WAAA;Gfg4DD;Eej4DD;IACE,oBAAA;Gfm4DD;Eep4DD;IACE,oBAAA;Gfs4DD;Eev4DD;IACE,WAAA;Gfy4DD;Ee14DD;IACE,oBAAA;Gf44DD;Ee74DD;IACE,mBAAA;Gf+4DD;Ee34DD;IACE,YAAA;Gf64DD;Ee75DD;IACE,WAAA;Gf+5DD;Eeh6DD;IACE,mBAAA;Gfk6DD;Een6DD;IACE,mBAAA;Gfq6DD;Eet6DD;IACE,UAAA;Gfw6DD;Eez6DD;IACE,mBAAA;Gf26DD;Ee56DD;IACE,mBAAA;Gf86DD;Ee/6DD;IACE,UAAA;Gfi7DD;Eel7DD;IACE,mBAAA;Gfo7DD;Eer7DD;IACE,mBAAA;Gfu7DD;Eex7DD;IACE,UAAA;Gf07DD;Ee37DD;IACE,mBAAA;Gf67DD;Ee97DD;IACE,kBAAA;Gfg8DD;Ee57DD;IACE,WAAA;Gf87DD;Eeh7DD;IACE,kBAAA;Gfk7DD;Een7DD;IACE,0BAAA;Gfq7DD;Eet7DD;IACE,0BAAA;Gfw7DD;Eez7DD;IACE,iBAAA;Gf27DD;Ee57DD;IACE,0BAAA;Gf87DD;Ee/7DD;IACE,0BAAA;Gfi8DD;Eel8DD;IACE,iBAAA;Gfo8DD;Eer8DD;IACE,0BAAA;Gfu8DD;Eex8DD;IACE,0BAAA;Gf08DD;Ee38DD;IACE,iBAAA;Gf68DD;Ee98DD;IACE,0BAAA;Gfg9DD;Eej9DD;IACE,yBAAA;Gfm9DD;Eep9DD;IACE,gBAAA;Gfs9DD;CACF;Aa38DD;EE9CI;IACE,YAAA;Gf4/DH;Eer/DD;IACE,YAAA;Gfu/DD;Eex/DD;IACE,oBAAA;Gf0/DD;Ee3/DD;IACE,oBAAA;Gf6/DD;Ee9/DD;IACE,WAAA;GfggED;EejgED;IACE,oBAAA;GfmgED;EepgED;IACE,oBAAA;GfsgED;EevgED;IACE,WAAA;GfygED;Ee1gED;IACE,oBAAA;Gf4gED;Ee7gED;IACE,oBAAA;Gf+gED;EehhED;IACE,WAAA;GfkhED;EenhED;IACE,oBAAA;GfqhED;EethED;IACE,mBAAA;GfwhED;Ee1gED;IACE,YAAA;Gf4gED;Ee7gED;IACE,oBAAA;Gf+gED;EehhED;IACE,oBAAA;GfkhED;EenhED;IACE,WAAA;GfqhED;EethED;IACE,oBAAA;GfwhED;EezhED;IACE,oBAAA;Gf2hED;Ee5hED;IACE,WAAA;Gf8hED;Ee/hED;IACE,oBAAA;GfiiED;EeliED;IACE,oBAAA;GfoiED;EeriED;IACE,WAAA;GfuiED;EexiED;IACE,oBAAA;Gf0iED;Ee3iED;IACE,mBAAA;Gf6iED;EeziED;IACE,YAAA;Gf2iED;Ee3jED;IACE,WAAA;Gf6jED;Ee9jED;IACE,mBAAA;GfgkED;EejkED;IACE,mBAAA;GfmkED;EepkED;IACE,UAAA;GfskED;EevkED;IACE,mBAAA;GfykED;Ee1kED;IACE,mBAAA;Gf4kED;Ee7kED;IACE,UAAA;Gf+kED;EehlED;IACE,mBAAA;GfklED;EenlED;IACE,mBAAA;GfqlED;EetlED;IACE,UAAA;GfwlED;EezlED;IACE,mBAAA;Gf2lED;Ee5lED;IACE,kBAAA;Gf8lED;Ee1lED;IACE,WAAA;Gf4lED;Ee9kED;IACE,kBAAA;GfglED;EejlED;IACE,0BAAA;GfmlED;EeplED;IACE,0BAAA;GfslED;EevlED;IACE,iBAAA;GfylED;Ee1lED;IACE,0BAAA;Gf4lED;Ee7lED;IACE,0BAAA;Gf+lED;EehmED;IACE,iBAAA;GfkmED;EenmED;IACE,0BAAA;GfqmED;EetmED;IACE,0BAAA;GfwmED;EezmED;IACE,iBAAA;Gf2mED;Ee5mED;IACE,0BAAA;Gf8mED;Ee/mED;IACE,yBAAA;GfinED;EelnED;IACE,gBAAA;GfonED;CACF;AgBxrED;EACE,8BAAA;ChB0rED;AgBxrED;EACE,iBAAA;EACA,oBAAA;EACA,eAAA;EACA,iBAAA;ChB0rED;AgBxrED;EACE,iBAAA;ChB0rED;AgBprED;EACE,YAAA;EACA,gBAAA;EACA,oBAAA;ChBsrED;AgBzrED;;;;;;EAWQ,aAAA;EACA,wBAAA;EACA,oBAAA;EACA,8BAAA;ChBsrEP;AgBpsED;EAoBI,uBAAA;EACA,iCAAA;ChBmrEH;AgBxsED;;;;;;EA8BQ,cAAA;ChBkrEP;AgBhtED;EAoCI,8BAAA;ChB+qEH;AgBntED;EAyCI,0BAAA;ChB6qEH;AgBtqED;;;;;;EAOQ,aAAA;ChBuqEP;AgB5pED;EACE,0BAAA;ChB8pED;AgB/pED;;;;;;EAQQ,0BAAA;ChB+pEP;AgBvqED;;EAeM,yBAAA;ChB4pEL;AgBlpED;EAEI,0BAAA;ChBmpEH;AgB1oED;EAEI,0BAAA;ChB2oEH;AgBloED;EACE,iBAAA;EACA,YAAA;EACA,sBAAA;ChBooED;AgB/nEG;;EACE,iBAAA;EACA,YAAA;EACA,oBAAA;ChBkoEL;AiB9wEC;;;;;;;;;;;;EAOI,0BAAA;CjBqxEL;AiB/wEC;;;;;EAMI,0BAAA;CjBgxEL;AiBnyEC;;;;;;;;;;;;EAOI,0BAAA;CjB0yEL;AiBpyEC;;;;;EAMI,0BAAA;CjBqyEL;AiBxzEC;;;;;;;;;;;;EAOI,0BAAA;CjB+zEL;AiBzzEC;;;;;EAMI,0BAAA;CjB0zEL;AiB70EC;;;;;;;;;;;;EAOI,0BAAA;CjBo1EL;AiB90EC;;;;;EAMI,0BAAA;CjB+0EL;AiBl2EC;;;;;;;;;;;;EAOI,0BAAA;CjBy2EL;AiBn2EC;;;;;EAMI,0BAAA;CjBo2EL;AgBltED;EACE,iBAAA;EACA,kBAAA;ChBotED;AgBvpED;EAAA;IA1DI,YAAA;IACA,oBAAA;IACA,mBAAA;IACA,6CAAA;IACA,0BAAA;GhBqtED;EgB/pEH;IAlDM,iBAAA;GhBotEH;EgBlqEH;;;;;;IAzCY,oBAAA;GhBmtET;EgB1qEH;IAjCM,UAAA;GhB8sEH;EgB7qEH;;;;;;IAxBY,eAAA;GhB6sET;EgBrrEH;;;;;;IApBY,gBAAA;GhBitET;EgB7rEH;;;;IAPY,iBAAA;GhB0sET;CACF;AkBp6ED;EACE,WAAA;EACA,UAAA;EACA,UAAA;EAIA,aAAA;ClBm6ED;AkBh6ED;EACE,eAAA;EACA,YAAA;EACA,WAAA;EACA,oBAAA;EACA,gBAAA;EACA,qBAAA;EACA,eAAA;EACA,UAAA;EACA,iCAAA;ClBk6ED;AkB/5ED;EACE,sBAAA;EACA,gBAAA;EACA,mBAAA;EACA,kBAAA;ClBi6ED;AkBt5ED;Eb4BE,+BAAA;EACG,4BAAA;EACK,uBAAA;CL63ET;AkBt5ED;;EAEE,gBAAA;EACA,mBAAA;EACA,oBAAA;ClBw5ED;AkBr5ED;EACE,eAAA;ClBu5ED;AkBn5ED;EACE,eAAA;EACA,YAAA;ClBq5ED;AkBj5ED;;EAEE,aAAA;ClBm5ED;AkB/4ED;;;EZvEE,qBAAA;EAEA,2CAAA;EACA,qBAAA;CN09ED;AkB/4ED;EACE,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;ClBi5ED;AkBv3ED;EACE,eAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,0BAAA;EACA,uBAAA;EACA,0BAAA;EACA,mBAAA;EbxDA,yDAAA;EACQ,iDAAA;EAyHR,uFAAA;EACK,0EAAA;EACG,uEAAA;CL0zET;AmBl8EC;EACE,sBAAA;EACA,WAAA;EdUF,uFAAA;EACQ,+EAAA;CL27ET;AK15EC;EACE,eAAA;EACA,WAAA;CL45EH;AK15EC;EAA0B,eAAA;CL65E3B;AK55EC;EAAgC,eAAA;CL+5EjC;AkB/3EC;;;EAGE,0BAAA;EACA,WAAA;ClBi4EH;AkB93EC;;EAEE,oBAAA;ClBg4EH;AkB53EC;EACE,aAAA;ClB83EH;AkBl3ED;EACE,yBAAA;ClBo3ED;AkB50ED;EAtBI;;;;IACE,kBAAA;GlBw2EH;EkBr2EC;;;;;;;;IAEE,kBAAA;GlB62EH;EkB12EC;;;;;;;;IAEE,kBAAA;GlBk3EH;CACF;AkBx2ED;EACE,oBAAA;ClB02ED;AkBl2ED;;EAEE,mBAAA;EACA,eAAA;EACA,iBAAA;EACA,oBAAA;ClBo2ED;AkBz2ED;;EAQI,iBAAA;EACA,mBAAA;EACA,iBAAA;EACA,oBAAA;EACA,gBAAA;ClBq2EH;AkBl2ED;;;;EAIE,mBAAA;EACA,mBAAA;EACA,mBAAA;ClBo2ED;AkBj2ED;;EAEE,iBAAA;ClBm2ED;AkB/1ED;;EAEE,mBAAA;EACA,sBAAA;EACA,mBAAA;EACA,iBAAA;EACA,uBAAA;EACA,oBAAA;EACA,gBAAA;ClBi2ED;AkB/1ED;;EAEE,cAAA;EACA,kBAAA;ClBi2ED;AkBx1EC;;;;;;EAGE,oBAAA;ClB61EH;AkBv1EC;;;;EAEE,oBAAA;ClB21EH;AkBr1EC;;;;EAGI,oBAAA;ClBw1EL;AkB70ED;EAEE,iBAAA;EACA,oBAAA;EAEA,iBAAA;EACA,iBAAA;ClB60ED;AkB30EC;;EAEE,gBAAA;EACA,iBAAA;ClB60EH;AkBh0ED;EC7PE,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CnBgkFD;AmB9jFC;EACE,aAAA;EACA,kBAAA;CnBgkFH;AmB7jFC;;EAEE,aAAA;CnB+jFH;AkB50ED;EAEI,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;ClB60EH;AkBn1ED;EASI,aAAA;EACA,kBAAA;ClB60EH;AkBv1ED;;EAcI,aAAA;ClB60EH;AkB31ED;EAiBI,aAAA;EACA,iBAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;ClB60EH;AkBz0ED;ECzRE,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CnBqmFD;AmBnmFC;EACE,aAAA;EACA,kBAAA;CnBqmFH;AmBlmFC;;EAEE,aAAA;CnBomFH;AkBr1ED;EAEI,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;ClBs1EH;AkB51ED;EASI,aAAA;EACA,kBAAA;ClBs1EH;AkBh2ED;;EAcI,aAAA;ClBs1EH;AkBp2ED;EAiBI,aAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;ClBs1EH;AkB70ED;EAEE,mBAAA;ClB80ED;AkBh1ED;EAMI,sBAAA;ClB60EH;AkBz0ED;EACE,mBAAA;EACA,OAAA;EACA,SAAA;EACA,WAAA;EACA,eAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;EACA,mBAAA;EACA,qBAAA;ClB20ED;AkBz0ED;;;EAGE,YAAA;EACA,aAAA;EACA,kBAAA;ClB20ED;AkBz0ED;;;EAGE,YAAA;EACA,aAAA;EACA,kBAAA;ClB20ED;AkBv0ED;;;;;;;;;;ECpZI,eAAA;CnBuuFH;AkBn1ED;EChZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CLwrFT;AmBtuFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL6rFT;AkB71ED;ECtYI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBsuFH;AkBl2ED;EChYI,eAAA;CnBquFH;AkBl2ED;;;;;;;;;;ECvZI,eAAA;CnBqwFH;AkB92ED;ECnZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CLstFT;AmBpwFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CL2tFT;AkBx3ED;ECzYI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBowFH;AkB73ED;ECnYI,eAAA;CnBmwFH;AkB73ED;;;;;;;;;;EC1ZI,eAAA;CnBmyFH;AkBz4ED;ECtZI,sBAAA;Ed+CF,yDAAA;EACQ,iDAAA;CLovFT;AmBlyFG;EACE,sBAAA;Ed4CJ,0EAAA;EACQ,kEAAA;CLyvFT;AkBn5ED;EC5YI,eAAA;EACA,sBAAA;EACA,0BAAA;CnBkyFH;AkBx5ED;ECtYI,eAAA;CnBiyFH;AkBp5EC;EACG,UAAA;ClBs5EJ;AkBp5EC;EACG,OAAA;ClBs5EJ;AkB54ED;EACE,eAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;ClB84ED;AkB3zED;EAAA;IA9DM,sBAAA;IACA,iBAAA;IACA,uBAAA;GlB63EH;EkBj0EH;IAvDM,sBAAA;IACA,YAAA;IACA,uBAAA;GlB23EH;EkBt0EH;IAhDM,sBAAA;GlBy3EH;EkBz0EH;IA5CM,sBAAA;IACA,uBAAA;GlBw3EH;EkB70EH;;;IAtCQ,YAAA;GlBw3EL;EkBl1EH;IAhCM,YAAA;GlBq3EH;EkBr1EH;IA5BM,iBAAA;IACA,uBAAA;GlBo3EH;EkBz1EH;;IApBM,sBAAA;IACA,cAAA;IACA,iBAAA;IACA,uBAAA;GlBi3EH;EkBh2EH;;IAdQ,gBAAA;GlBk3EL;EkBp2EH;;IATM,mBAAA;IACA,eAAA;GlBi3EH;EkBz2EH;IAHM,OAAA;GlB+2EH;CACF;AkBr2ED;;;;EASI,cAAA;EACA,iBAAA;EACA,iBAAA;ClBk2EH;AkB72ED;;EAiBI,iBAAA;ClBg2EH;AkBj3ED;EJhhBE,mBAAA;EACA,oBAAA;Cdo4FD;AkB90EC;EAAA;IAVI,kBAAA;IACA,iBAAA;IACA,iBAAA;GlB41EH;CACF;AkB53ED;EAwCI,YAAA;ClBu1EH;AkBz0EC;EAAA;IAJM,yBAAA;IACA,gBAAA;GlBi1EL;CACF;AkBv0EC;EAAA;IAJM,iBAAA;IACA,gBAAA;GlB+0EL;CACF;AoBl6FD;EACE,sBAAA;EACA,iBAAA;EACA,oBAAA;EACA,mBAAA;EACA,uBAAA;EACA,+BAAA;MAAA,2BAAA;EACA,gBAAA;EACA,uBAAA;EACA,8BAAA;EACA,oBAAA;EC6CA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,mBAAA;EhB4JA,0BAAA;EACG,uBAAA;EACC,sBAAA;EACI,kBAAA;CL6tFT;AoBr6FG;;;;;;EdrBF,qBAAA;EAEA,2CAAA;EACA,qBAAA;CNi8FD;AoBz6FC;;;EAGE,eAAA;EACA,sBAAA;CpB26FH;AoBx6FC;;EAEE,WAAA;EACA,uBAAA;Ef2BF,yDAAA;EACQ,iDAAA;CLg5FT;AoBx6FC;;;EAGE,oBAAA;EE7CF,cAAA;EAGA,0BAAA;EjB8DA,yBAAA;EACQ,iBAAA;CLy5FT;AoBx6FG;;EAEE,qBAAA;CpB06FL;AoBj6FD;EC3DE,eAAA;EACA,0BAAA;EACA,sBAAA;CrB+9FD;AqB79FC;;EAEE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB+9FP;AqB79FC;EACE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB+9FP;AqB79FC;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB+9FP;AqB79FG;;;;;;;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBq+FT;AqBl+FC;;;EAGE,uBAAA;CrBo+FH;AqB/9FG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACI,sBAAA;CrB6+FT;AoB/9FD;ECTI,eAAA;EACA,0BAAA;CrB2+FH;AoBh+FD;EC9DE,eAAA;EACA,0BAAA;EACA,sBAAA;CrBiiGD;AqB/hGC;;EAEE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBiiGP;AqB/hGC;EACE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBiiGP;AqB/hGC;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBiiGP;AqB/hGG;;;;;;;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBuiGT;AqBpiGC;;;EAGE,uBAAA;CrBsiGH;AqBjiGG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACI,sBAAA;CrB+iGT;AoB9hGD;ECZI,eAAA;EACA,0BAAA;CrB6iGH;AoB9hGD;EClEE,eAAA;EACA,0BAAA;EACA,sBAAA;CrBmmGD;AqBjmGC;;EAEE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBmmGP;AqBjmGC;EACE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBmmGP;AqBjmGC;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBmmGP;AqBjmGG;;;;;;;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBymGT;AqBtmGC;;;EAGE,uBAAA;CrBwmGH;AqBnmGG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACI,sBAAA;CrBinGT;AoB5lGD;EChBI,eAAA;EACA,0BAAA;CrB+mGH;AoB5lGD;ECtEE,eAAA;EACA,0BAAA;EACA,sBAAA;CrBqqGD;AqBnqGC;;EAEE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBqqGP;AqBnqGC;EACE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBqqGP;AqBnqGC;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBqqGP;AqBnqGG;;;;;;;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB2qGT;AqBxqGC;;;EAGE,uBAAA;CrB0qGH;AqBrqGG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACI,sBAAA;CrBmrGT;AoB1pGD;ECpBI,eAAA;EACA,0BAAA;CrBirGH;AoB1pGD;EC1EE,eAAA;EACA,0BAAA;EACA,sBAAA;CrBuuGD;AqBruGC;;EAEE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBuuGP;AqBruGC;EACE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBuuGP;AqBruGC;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrBuuGP;AqBruGG;;;;;;;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB6uGT;AqB1uGC;;;EAGE,uBAAA;CrB4uGH;AqBvuGG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACI,sBAAA;CrBqvGT;AoBxtGD;ECxBI,eAAA;EACA,0BAAA;CrBmvGH;AoBxtGD;EC9EE,eAAA;EACA,0BAAA;EACA,sBAAA;CrByyGD;AqBvyGC;;EAEE,eAAA;EACA,0BAAA;EACI,sBAAA;CrByyGP;AqBvyGC;EACE,eAAA;EACA,0BAAA;EACI,sBAAA;CrByyGP;AqBvyGC;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrByyGP;AqBvyGG;;;;;;;;;EAGE,eAAA;EACA,0BAAA;EACI,sBAAA;CrB+yGT;AqB5yGC;;;EAGE,uBAAA;CrB8yGH;AqBzyGG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACI,sBAAA;CrBuzGT;AoBtxGD;EC5BI,eAAA;EACA,0BAAA;CrBqzGH;AoBjxGD;EACE,eAAA;EACA,oBAAA;EACA,iBAAA;CpBmxGD;AoBjxGC;;;;;EAKE,8BAAA;EfnCF,yBAAA;EACQ,iBAAA;CLuzGT;AoBlxGC;;;;EAIE,0BAAA;CpBoxGH;AoBlxGC;;EAEE,eAAA;EACA,2BAAA;EACA,8BAAA;CpBoxGH;AoBhxGG;;;;EAEE,eAAA;EACA,sBAAA;CpBoxGL;AoB3wGD;;ECrEE,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CrBo1GD;AoB9wGD;;ECzEE,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CrB21GD;AoBjxGD;;EC7EE,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CrBk2GD;AoBhxGD;EACE,eAAA;EACA,YAAA;CpBkxGD;AoB9wGD;EACE,gBAAA;CpBgxGD;AoBzwGC;;;EACE,YAAA;CpB6wGH;AuBv6GD;EACE,WAAA;ElBoLA,yCAAA;EACK,oCAAA;EACG,iCAAA;CLsvGT;AuB16GC;EACE,WAAA;CvB46GH;AuBx6GD;EACE,cAAA;CvB06GD;AuBx6GC;EAAY,eAAA;CvB26Gb;AuB16GC;EAAY,mBAAA;CvB66Gb;AuB56GC;EAAY,yBAAA;CvB+6Gb;AuB56GD;EACE,mBAAA;EACA,UAAA;EACA,iBAAA;ElBuKA,gDAAA;EACQ,2CAAA;KAAA,wCAAA;EAOR,mCAAA;EACQ,8BAAA;KAAA,2BAAA;EAGR,yCAAA;EACQ,oCAAA;KAAA,iCAAA;CLgwGT;AwB18GD;EACE,sBAAA;EACA,SAAA;EACA,UAAA;EACA,iBAAA;EACA,uBAAA;EACA,uBAAA;EACA,yBAAA;EACA,oCAAA;EACA,mCAAA;CxB48GD;AwBx8GD;;EAEE,mBAAA;CxB08GD;AwBt8GD;EACE,WAAA;CxBw8GD;AwBp8GD;EACE,mBAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,cAAA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,iBAAA;EACA,0BAAA;EACA,0BAAA;EACA,sCAAA;EACA,mBAAA;EnBsBA,oDAAA;EACQ,4CAAA;EmBrBR,qCAAA;UAAA,6BAAA;CxBu8GD;AwBl8GC;EACE,SAAA;EACA,WAAA;CxBo8GH;AwB79GD;ECzBE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,0BAAA;CzBy/GD;AwBn+GD;EAmCI,eAAA;EACA,kBAAA;EACA,YAAA;EACA,oBAAA;EACA,wBAAA;EACA,eAAA;EACA,oBAAA;CxBm8GH;AwB77GC;;EAEE,sBAAA;EACA,eAAA;EACA,0BAAA;CxB+7GH;AwBz7GC;;;EAGE,eAAA;EACA,sBAAA;EACA,WAAA;EACA,0BAAA;CxB27GH;AwBl7GC;;;EAGE,eAAA;CxBo7GH;AwBh7GC;;EAEE,sBAAA;EACA,8BAAA;EACA,uBAAA;EE3GF,oEAAA;EF6GE,oBAAA;CxBk7GH;AwB76GD;EAGI,eAAA;CxB66GH;AwBh7GD;EAQI,WAAA;CxB26GH;AwBn6GD;EACE,WAAA;EACA,SAAA;CxBq6GD;AwB75GD;EACE,QAAA;EACA,YAAA;CxB+5GD;AwB35GD;EACE,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,oBAAA;CxB65GD;AwBz5GD;EACE,gBAAA;EACA,QAAA;EACA,SAAA;EACA,UAAA;EACA,OAAA;EACA,aAAA;CxB25GD;AwBv5GD;EACE,SAAA;EACA,WAAA;CxBy5GD;AwBj5GD;;EAII,cAAA;EACA,0BAAA;EACA,4BAAA;EACA,YAAA;CxBi5GH;AwBx5GD;;EAWI,UAAA;EACA,aAAA;EACA,mBAAA;CxBi5GH;AwB53GD;EAXE;IApEA,WAAA;IACA,SAAA;GxB+8GC;EwB54GD;IA1DA,QAAA;IACA,YAAA;GxBy8GC;CACF;A2BzlHD;;EAEE,mBAAA;EACA,sBAAA;EACA,uBAAA;C3B2lHD;A2B/lHD;;EAMI,mBAAA;EACA,YAAA;C3B6lHH;A2B3lHG;;;;;;;;EAIE,WAAA;C3BimHL;A2B3lHD;;;;EAKI,kBAAA;C3B4lHH;A2BvlHD;EACE,kBAAA;C3BylHD;A2B1lHD;;;EAOI,YAAA;C3BwlHH;A2B/lHD;;;EAYI,iBAAA;C3BwlHH;A2BplHD;EACE,iBAAA;C3BslHD;A2BllHD;EACE,eAAA;C3BolHD;A2BnlHC;EClDA,8BAAA;EACG,2BAAA;C5BwoHJ;A2BllHD;;EC/CE,6BAAA;EACG,0BAAA;C5BqoHJ;A2BjlHD;EACE,YAAA;C3BmlHD;A2BjlHD;EACE,iBAAA;C3BmlHD;A2BjlHD;;ECnEE,8BAAA;EACG,2BAAA;C5BwpHJ;A2BhlHD;ECjEE,6BAAA;EACG,0BAAA;C5BopHJ;A2B/kHD;;EAEE,WAAA;C3BilHD;A2BhkHD;EACE,kBAAA;EACA,mBAAA;C3BkkHD;A2BhkHD;EACE,mBAAA;EACA,oBAAA;C3BkkHD;A2B7jHD;EtB/CE,yDAAA;EACQ,iDAAA;CL+mHT;A2B7jHC;EtBnDA,yBAAA;EACQ,iBAAA;CLmnHT;A2B1jHD;EACE,eAAA;C3B4jHD;A2BzjHD;EACE,wBAAA;EACA,uBAAA;C3B2jHD;A2BxjHD;EACE,wBAAA;C3B0jHD;A2BnjHD;;;EAII,eAAA;EACA,YAAA;EACA,YAAA;EACA,gBAAA;C3BojHH;A2B3jHD;EAcM,YAAA;C3BgjHL;A2B9jHD;;;;EAsBI,iBAAA;EACA,eAAA;C3B8iHH;A2BziHC;EACE,iBAAA;C3B2iHH;A2BziHC;EACE,6BAAA;ECpKF,8BAAA;EACC,6BAAA;C5BgtHF;A2B1iHC;EACE,+BAAA;EChLF,2BAAA;EACC,0BAAA;C5B6tHF;A2B1iHD;EACE,iBAAA;C3B4iHD;A2B1iHD;;EC/KE,8BAAA;EACC,6BAAA;C5B6tHF;A2BziHD;EC7LE,2BAAA;EACC,0BAAA;C5ByuHF;A2BriHD;EACE,eAAA;EACA,YAAA;EACA,oBAAA;EACA,0BAAA;C3BuiHD;A2B3iHD;;EAOI,YAAA;EACA,oBAAA;EACA,UAAA;C3BwiHH;A2BjjHD;EAYI,YAAA;C3BwiHH;A2BpjHD;EAgBI,WAAA;C3BuiHH;A2BthHD;;;;EAKM,mBAAA;EACA,uBAAA;EACA,qBAAA;C3BuhHL;A6BjwHD;EACE,mBAAA;EACA,eAAA;EACA,0BAAA;C7BmwHD;A6BhwHC;EACE,YAAA;EACA,gBAAA;EACA,iBAAA;C7BkwHH;A6B3wHD;EAeI,mBAAA;EACA,WAAA;EAKA,YAAA;EAEA,YAAA;EACA,iBAAA;C7B0vHH;A6BjvHD;;;EV8BE,aAAA;EACA,mBAAA;EACA,gBAAA;EACA,uBAAA;EACA,mBAAA;CnBwtHD;AmBttHC;;;EACE,aAAA;EACA,kBAAA;CnB0tHH;AmBvtHC;;;;;;EAEE,aAAA;CnB6tHH;A6BnwHD;;;EVyBE,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;CnB+uHD;AmB7uHC;;;EACE,aAAA;EACA,kBAAA;CnBivHH;AmB9uHC;;;;;;EAEE,aAAA;CnBovHH;A6BjxHD;;;EAGE,oBAAA;C7BmxHD;A6BjxHC;;;EACE,iBAAA;C7BqxHH;A6BjxHD;;EAEE,UAAA;EACA,oBAAA;EACA,uBAAA;C7BmxHD;A6B9wHD;EACE,kBAAA;EACA,gBAAA;EACA,oBAAA;EACA,eAAA;EACA,eAAA;EACA,mBAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;C7BgxHD;A6B7wHC;EACE,kBAAA;EACA,gBAAA;EACA,mBAAA;C7B+wHH;A6B7wHC;EACE,mBAAA;EACA,gBAAA;EACA,mBAAA;C7B+wHH;A6BnyHD;;EA0BI,cAAA;C7B6wHH;A6BxwHD;;;;;;;EDhGE,8BAAA;EACG,2BAAA;C5Bi3HJ;A6BzwHD;EACE,gBAAA;C7B2wHD;A6BzwHD;;;;;;;EDpGE,6BAAA;EACG,0BAAA;C5Bs3HJ;A6B1wHD;EACE,eAAA;C7B4wHD;A6BvwHD;EACE,mBAAA;EAGA,aAAA;EACA,oBAAA;C7BuwHD;A6B5wHD;EAUI,mBAAA;C7BqwHH;A6B/wHD;EAYM,kBAAA;C7BswHL;A6BnwHG;;;EAGE,WAAA;C7BqwHL;A6BhwHC;;EAGI,mBAAA;C7BiwHL;A6B9vHC;;EAGI,WAAA;EACA,kBAAA;C7B+vHL;A8B15HD;EACE,iBAAA;EACA,gBAAA;EACA,iBAAA;C9B45HD;A8B/5HD;EAOI,mBAAA;EACA,eAAA;C9B25HH;A8Bn6HD;EAWM,mBAAA;EACA,eAAA;EACA,mBAAA;C9B25HL;A8B15HK;;EAEE,sBAAA;EACA,0BAAA;C9B45HP;A8Bv5HG;EACE,eAAA;C9By5HL;A8Bv5HK;;EAEE,eAAA;EACA,sBAAA;EACA,8BAAA;EACA,oBAAA;C9By5HP;A8Bl5HG;;;EAGE,0BAAA;EACA,sBAAA;C9Bo5HL;A8B77HD;ELHE,YAAA;EACA,cAAA;EACA,iBAAA;EACA,0BAAA;CzBm8HD;A8Bn8HD;EA0DI,gBAAA;C9B44HH;A8Bn4HD;EACE,iCAAA;C9Bq4HD;A8Bt4HD;EAGI,YAAA;EAEA,oBAAA;C9Bq4HH;A8B14HD;EASM,kBAAA;EACA,wBAAA;EACA,8BAAA;EACA,2BAAA;C9Bo4HL;A8Bn4HK;EACE,sCAAA;C9Bq4HP;A8B/3HK;;;EAGE,eAAA;EACA,0BAAA;EACA,0BAAA;EACA,iCAAA;EACA,gBAAA;C9Bi4HP;A8B53HC;EAqDA,YAAA;EA8BA,iBAAA;C9B6yHD;A8Bh4HC;EAwDE,YAAA;C9B20HH;A8Bn4HC;EA0DI,mBAAA;EACA,mBAAA;C9B40HL;A8Bv4HC;EAgEE,UAAA;EACA,WAAA;C9B00HH;A8B9zHD;EAAA;IAPM,oBAAA;IACA,UAAA;G9By0HH;E8Bn0HH;IAJQ,iBAAA;G9B00HL;CACF;A8Bp5HC;EAuFE,gBAAA;EACA,mBAAA;C9Bg0HH;A8Bx5HC;;;EA8FE,0BAAA;C9B+zHH;A8BjzHD;EAAA;IATM,iCAAA;IACA,2BAAA;G9B8zHH;E8BtzHH;;;IAHM,6BAAA;G9B8zHH;CACF;A8B/5HD;EAEI,YAAA;C9Bg6HH;A8Bl6HD;EAMM,mBAAA;C9B+5HL;A8Br6HD;EASM,iBAAA;C9B+5HL;A8B15HK;;;EAGE,eAAA;EACA,0BAAA;C9B45HP;A8Bp5HD;EAEI,YAAA;C9Bq5HH;A8Bv5HD;EAIM,gBAAA;EACA,eAAA;C9Bs5HL;A8B14HD;EACE,YAAA;C9B44HD;A8B74HD;EAII,YAAA;C9B44HH;A8Bh5HD;EAMM,mBAAA;EACA,mBAAA;C9B64HL;A8Bp5HD;EAYI,UAAA;EACA,WAAA;C9B24HH;A8B/3HD;EAAA;IAPM,oBAAA;IACA,UAAA;G9B04HH;E8Bp4HH;IAJQ,iBAAA;G9B24HL;CACF;A8Bn4HD;EACE,iBAAA;C9Bq4HD;A8Bt4HD;EAKI,gBAAA;EACA,mBAAA;C9Bo4HH;A8B14HD;;;EAYI,0BAAA;C9Bm4HH;A8Br3HD;EAAA;IATM,iCAAA;IACA,2BAAA;G9Bk4HH;E8B13HH;;;IAHM,6BAAA;G9Bk4HH;CACF;A8Bz3HD;EAEI,cAAA;C9B03HH;A8B53HD;EAKI,eAAA;C9B03HH;A8Bj3HD;EAEE,iBAAA;EF3OA,2BAAA;EACC,0BAAA;C5B8lIF;A+BxlID;EACE,mBAAA;EACA,iBAAA;EACA,oBAAA;EACA,8BAAA;C/B0lID;A+BllID;EAAA;IAFI,mBAAA;G/BwlID;CACF;A+BzkID;EAAA;IAFI,YAAA;G/B+kID;CACF;A+BjkID;EACE,oBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kCAAA;EACA,2DAAA;UAAA,mDAAA;EAEA,kCAAA;C/BkkID;A+BhkIC;EACE,iBAAA;C/BkkIH;A+BtiID;EAAA;IAxBI,YAAA;IACA,cAAA;IACA,yBAAA;YAAA,iBAAA;G/BkkID;E+BhkIC;IACE,0BAAA;IACA,wBAAA;IACA,kBAAA;IACA,6BAAA;G/BkkIH;E+B/jIC;IACE,oBAAA;G/BikIH;E+B5jIC;;;IAGE,gBAAA;IACA,iBAAA;G/B8jIH;CACF;A+B1jID;;EAGI,kBAAA;C/B2jIH;A+BtjIC;EAAA;;IAFI,kBAAA;G/B6jIH;CACF;A+BpjID;;;;EAII,oBAAA;EACA,mBAAA;C/BsjIH;A+BhjIC;EAAA;;;;IAHI,gBAAA;IACA,eAAA;G/B0jIH;CACF;A+B9iID;EACE,cAAA;EACA,sBAAA;C/BgjID;A+B3iID;EAAA;IAFI,iBAAA;G/BijID;CACF;A+B7iID;;EAEE,gBAAA;EACA,SAAA;EACA,QAAA;EACA,cAAA;C/B+iID;A+BziID;EAAA;;IAFI,iBAAA;G/BgjID;CACF;A+B9iID;EACE,OAAA;EACA,sBAAA;C/BgjID;A+B9iID;EACE,UAAA;EACA,iBAAA;EACA,sBAAA;C/BgjID;A+B1iID;EACE,YAAA;EACA,mBAAA;EACA,gBAAA;EACA,kBAAA;EACA,aAAA;C/B4iID;A+B1iIC;;EAEE,sBAAA;C/B4iIH;A+BrjID;EAaI,eAAA;C/B2iIH;A+BliID;EALI;;IAEE,mBAAA;G/B0iIH;CACF;A+BhiID;EACE,mBAAA;EACA,aAAA;EACA,mBAAA;EACA,kBAAA;EC9LA,gBAAA;EACA,mBAAA;ED+LA,8BAAA;EACA,uBAAA;EACA,8BAAA;EACA,mBAAA;C/BmiID;A+B/hIC;EACE,WAAA;C/BiiIH;A+B/iID;EAmBI,eAAA;EACA,YAAA;EACA,YAAA;EACA,mBAAA;C/B+hIH;A+BrjID;EAyBI,gBAAA;C/B+hIH;A+BzhID;EAAA;IAFI,cAAA;G/B+hID;CACF;A+BthID;EACE,oBAAA;C/BwhID;A+BzhID;EAII,kBAAA;EACA,qBAAA;EACA,kBAAA;C/BwhIH;A+B5/HC;EAAA;IAtBI,iBAAA;IACA,YAAA;IACA,YAAA;IACA,cAAA;IACA,8BAAA;IACA,UAAA;IACA,yBAAA;YAAA,iBAAA;G/BshIH;E+BtgID;;IAbM,2BAAA;G/BuhIL;E+B1gID;IAVM,kBAAA;G/BuhIL;E+BthIK;;IAEE,uBAAA;G/BwhIP;CACF;A+BtgID;EAAA;IAXI,YAAA;IACA,UAAA;G/BqhID;E+B3gIH;IAPM,YAAA;G/BqhIH;E+B9gIH;IALQ,kBAAA;IACA,qBAAA;G/BshIL;CACF;A+B3gID;EACE,mBAAA;EACA,oBAAA;EACA,mBAAA;EACA,kCAAA;EACA,qCAAA;E1B9NA,6FAAA;EACQ,qFAAA;E2B/DR,gBAAA;EACA,mBAAA;ChC4yID;AkB5xHD;EAAA;IA9DM,sBAAA;IACA,iBAAA;IACA,uBAAA;GlB81HH;EkBlyHH;IAvDM,sBAAA;IACA,YAAA;IACA,uBAAA;GlB41HH;EkBvyHH;IAhDM,sBAAA;GlB01HH;EkB1yHH;IA5CM,sBAAA;IACA,uBAAA;GlBy1HH;EkB9yHH;;;IAtCQ,YAAA;GlBy1HL;EkBnzHH;IAhCM,YAAA;GlBs1HH;EkBtzHH;IA5BM,iBAAA;IACA,uBAAA;GlBq1HH;EkB1zHH;;IApBM,sBAAA;IACA,cAAA;IACA,iBAAA;IACA,uBAAA;GlBk1HH;EkBj0HH;;IAdQ,gBAAA;GlBm1HL;EkBr0HH;;IATM,mBAAA;IACA,eAAA;GlBk1HH;EkB10HH;IAHM,OAAA;GlBg1HH;CACF;A+BpjIC;EAAA;IANI,mBAAA;G/B8jIH;E+B5jIG;IACE,iBAAA;G/B8jIL;CACF;A+B7iID;EAAA;IARI,YAAA;IACA,UAAA;IACA,eAAA;IACA,gBAAA;IACA,eAAA;IACA,kBAAA;I1BzPF,yBAAA;IACQ,iBAAA;GLmzIP;CACF;A+BnjID;EACE,cAAA;EHpUA,2BAAA;EACC,0BAAA;C5B03IF;A+BnjID;EACE,iBAAA;EHzUA,6BAAA;EACC,4BAAA;EAOD,8BAAA;EACC,6BAAA;C5By3IF;A+B/iID;EChVE,gBAAA;EACA,mBAAA;ChCk4ID;A+BhjIC;ECnVA,iBAAA;EACA,oBAAA;ChCs4ID;A+BjjIC;ECtVA,iBAAA;EACA,oBAAA;ChC04ID;A+B3iID;EChWE,iBAAA;EACA,oBAAA;ChC84ID;A+BviID;EAAA;IAJI,YAAA;IACA,kBAAA;IACA,mBAAA;G/B+iID;CACF;A+BlhID;EAhBE;IExWA,uBAAA;GjC84IC;E+BriID;IE5WA,wBAAA;IF8WE,oBAAA;G/BuiID;E+BziID;IAKI,gBAAA;G/BuiIH;CACF;A+B9hID;EACE,0BAAA;EACA,sBAAA;C/BgiID;A+BliID;EAKI,eAAA;C/BgiIH;A+B/hIG;;EAEE,eAAA;EACA,8BAAA;C/BiiIL;A+B1iID;EAcI,eAAA;C/B+hIH;A+B7iID;EAmBM,eAAA;C/B6hIL;A+B3hIK;;EAEE,eAAA;EACA,8BAAA;C/B6hIP;A+BzhIK;;;EAGE,eAAA;EACA,0BAAA;C/B2hIP;A+BvhIK;;;EAGE,eAAA;EACA,8BAAA;C/ByhIP;A+BjkID;EA8CI,sBAAA;C/BshIH;A+BrhIG;;EAEE,0BAAA;C/BuhIL;A+BxkID;EAoDM,0BAAA;C/BuhIL;A+B3kID;;EA0DI,sBAAA;C/BqhIH;A+B9gIK;;;EAGE,0BAAA;EACA,eAAA;C/BghIP;A+B/+HC;EAAA;IAzBQ,eAAA;G/B4gIP;E+B3gIO;;IAEE,eAAA;IACA,8BAAA;G/B6gIT;E+BzgIO;;;IAGE,eAAA;IACA,0BAAA;G/B2gIT;E+BvgIO;;;IAGE,eAAA;IACA,8BAAA;G/BygIT;CACF;A+B3mID;EA8GI,eAAA;C/BggIH;A+B//HG;EACE,eAAA;C/BigIL;A+BjnID;EAqHI,eAAA;C/B+/HH;A+B9/HG;;EAEE,eAAA;C/BggIL;A+B5/HK;;;;EAEE,eAAA;C/BggIP;A+Bx/HD;EACE,0BAAA;EACA,sBAAA;C/B0/HD;A+B5/HD;EAKI,eAAA;C/B0/HH;A+Bz/HG;;EAEE,eAAA;EACA,8BAAA;C/B2/HL;A+BpgID;EAcI,eAAA;C/By/HH;A+BvgID;EAmBM,eAAA;C/Bu/HL;A+Br/HK;;EAEE,eAAA;EACA,8BAAA;C/Bu/HP;A+Bn/HK;;;EAGE,eAAA;EACA,0BAAA;C/Bq/HP;A+Bj/HK;;;EAGE,eAAA;EACA,8BAAA;C/Bm/HP;A+B3hID;EA+CI,sBAAA;C/B++HH;A+B9+HG;;EAEE,0BAAA;C/Bg/HL;A+BliID;EAqDM,0BAAA;C/Bg/HL;A+BriID;;EA2DI,sBAAA;C/B8+HH;A+Bx+HK;;;EAGE,0BAAA;EACA,eAAA;C/B0+HP;A+Bn8HC;EAAA;IA/BQ,sBAAA;G/Bs+HP;E+Bv8HD;IA5BQ,0BAAA;G/Bs+HP;E+B18HD;IAzBQ,eAAA;G/Bs+HP;E+Br+HO;;IAEE,eAAA;IACA,8BAAA;G/Bu+HT;E+Bn+HO;;;IAGE,eAAA;IACA,0BAAA;G/Bq+HT;E+Bj+HO;;;IAGE,eAAA;IACA,8BAAA;G/Bm+HT;CACF;A+B3kID;EA+GI,eAAA;C/B+9HH;A+B99HG;EACE,eAAA;C/Bg+HL;A+BjlID;EAsHI,eAAA;C/B89HH;A+B79HG;;EAEE,eAAA;C/B+9HL;A+B39HK;;;;EAEE,eAAA;C/B+9HP;AkCzmJD;EACE,kBAAA;EACA,oBAAA;EACA,iBAAA;EACA,0BAAA;EACA,mBAAA;ClC2mJD;AkChnJD;EAQI,sBAAA;ClC2mJH;AkCnnJD;EAWM,kBAAA;EACA,eAAA;EACA,eAAA;ClC2mJL;AkCxnJD;EAkBI,eAAA;ClCymJH;AmC7nJD;EACE,sBAAA;EACA,gBAAA;EACA,eAAA;EACA,mBAAA;CnC+nJD;AmCnoJD;EAOI,gBAAA;CnC+nJH;AmCtoJD;;EAUM,mBAAA;EACA,YAAA;EACA,kBAAA;EACA,wBAAA;EACA,sBAAA;EACA,eAAA;EACA,0BAAA;EACA,0BAAA;EACA,kBAAA;CnCgoJL;AmC9nJG;;EAGI,eAAA;EPXN,+BAAA;EACG,4BAAA;C5B2oJJ;AmC7nJG;;EPvBF,gCAAA;EACG,6BAAA;C5BwpJJ;AmCxnJG;;;;EAEE,WAAA;EACA,eAAA;EACA,0BAAA;EACA,sBAAA;CnC4nJL;AmCtnJG;;;;;;EAGE,WAAA;EACA,eAAA;EACA,0BAAA;EACA,sBAAA;EACA,gBAAA;CnC2nJL;AmClrJD;;;;;;EAkEM,eAAA;EACA,0BAAA;EACA,sBAAA;EACA,oBAAA;CnCwnJL;AmC/mJD;;EC3EM,mBAAA;EACA,gBAAA;EACA,uBAAA;CpC8rJL;AoC5rJG;;ERKF,+BAAA;EACG,4BAAA;C5B2rJJ;AoC3rJG;;ERTF,gCAAA;EACG,6BAAA;C5BwsJJ;AmC1nJD;;EChFM,kBAAA;EACA,gBAAA;EACA,iBAAA;CpC8sJL;AoC5sJG;;ERKF,+BAAA;EACG,4BAAA;C5B2sJJ;AoC3sJG;;ERTF,gCAAA;EACG,6BAAA;C5BwtJJ;AqC3tJD;EACE,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,mBAAA;CrC6tJD;AqCjuJD;EAOI,gBAAA;CrC6tJH;AqCpuJD;;EAUM,sBAAA;EACA,kBAAA;EACA,0BAAA;EACA,0BAAA;EACA,oBAAA;CrC8tJL;AqC5uJD;;EAmBM,sBAAA;EACA,0BAAA;CrC6tJL;AqCjvJD;;EA2BM,aAAA;CrC0tJL;AqCrvJD;;EAkCM,YAAA;CrCutJL;AqCzvJD;;;;EA2CM,eAAA;EACA,0BAAA;EACA,oBAAA;CrCotJL;AsClwJD;EACE,gBAAA;EACA,wBAAA;EACA,eAAA;EACA,kBAAA;EACA,eAAA;EACA,eAAA;EACA,mBAAA;EACA,oBAAA;EACA,yBAAA;EACA,qBAAA;CtCowJD;AsChwJG;;EAEE,eAAA;EACA,sBAAA;EACA,gBAAA;CtCkwJL;AsC7vJC;EACE,cAAA;CtC+vJH;AsC3vJC;EACE,mBAAA;EACA,UAAA;CtC6vJH;AsCtvJD;ECtCE,0BAAA;CvC+xJD;AuC5xJG;;EAEE,0BAAA;CvC8xJL;AsCzvJD;EC1CE,0BAAA;CvCsyJD;AuCnyJG;;EAEE,0BAAA;CvCqyJL;AsC5vJD;EC9CE,0BAAA;CvC6yJD;AuC1yJG;;EAEE,0BAAA;CvC4yJL;AsC/vJD;EClDE,0BAAA;CvCozJD;AuCjzJG;;EAEE,0BAAA;CvCmzJL;AsClwJD;ECtDE,0BAAA;CvC2zJD;AuCxzJG;;EAEE,0BAAA;CvC0zJL;AsCrwJD;EC1DE,0BAAA;CvCk0JD;AuC/zJG;;EAEE,0BAAA;CvCi0JL;AwCn0JD;EACE,sBAAA;EACA,gBAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,eAAA;EACA,uBAAA;EACA,oBAAA;EACA,mBAAA;EACA,0BAAA;EACA,oBAAA;CxCq0JD;AwCl0JC;EACE,cAAA;CxCo0JH;AwCh0JC;EACE,mBAAA;EACA,UAAA;CxCk0JH;AwC/zJC;;EAEE,OAAA;EACA,iBAAA;CxCi0JH;AwC5zJG;;EAEE,eAAA;EACA,sBAAA;EACA,gBAAA;CxC8zJL;AwCzzJC;;EAEE,eAAA;EACA,0BAAA;CxC2zJH;AwCxzJC;EACE,aAAA;CxC0zJH;AwCvzJC;EACE,kBAAA;CxCyzJH;AwCtzJC;EACE,iBAAA;CxCwzJH;AyCl3JD;EACE,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,eAAA;EACA,0BAAA;CzCo3JD;AyCz3JD;;EASI,eAAA;CzCo3JH;AyC73JD;EAaI,oBAAA;EACA,gBAAA;EACA,iBAAA;CzCm3JH;AyCl4JD;EAmBI,0BAAA;CzCk3JH;AyC/2JC;;EAEE,mBAAA;CzCi3JH;AyCz4JD;EA4BI,gBAAA;CzCg3JH;AyC91JD;EAAA;IAdI,kBAAA;IACA,qBAAA;GzCg3JD;EyC92JC;;IAEE,mBAAA;IACA,oBAAA;GzCg3JH;EyCx2JH;;IAHM,gBAAA;GzC+2JH;CACF;A0C15JD;EACE,eAAA;EACA,aAAA;EACA,oBAAA;EACA,wBAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;ErCiLA,4CAAA;EACK,uCAAA;EACG,oCAAA;CL4uJT;A0Ct6JD;;EAaI,kBAAA;EACA,mBAAA;C1C65JH;A0Cz5JC;;;EAGE,sBAAA;C1C25JH;A0Ch7JD;EA0BI,aAAA;EACA,eAAA;C1Cy5JH;A2Cl7JD;EACE,cAAA;EACA,oBAAA;EACA,8BAAA;EACA,mBAAA;C3Co7JD;A2Cx7JD;EAQI,cAAA;EAEA,eAAA;C3Ck7JH;A2C57JD;EAeI,kBAAA;C3Cg7JH;A2C/7JD;;EAqBI,iBAAA;C3C86JH;A2Cn8JD;EAyBI,gBAAA;C3C66JH;A2Cr6JD;;EAEE,oBAAA;C3Cu6JD;A2Cz6JD;;EAMI,mBAAA;EACA,UAAA;EACA,aAAA;EACA,eAAA;C3Cu6JH;A2C/5JD;ECvDE,0BAAA;EACA,sBAAA;EACA,eAAA;C5Cy9JD;A2Cp6JD;EClDI,0BAAA;C5Cy9JH;A2Cv6JD;EC/CI,eAAA;C5Cy9JH;A2Ct6JD;EC3DE,0BAAA;EACA,sBAAA;EACA,eAAA;C5Co+JD;A2C36JD;ECtDI,0BAAA;C5Co+JH;A2C96JD;ECnDI,eAAA;C5Co+JH;A2C76JD;EC/DE,0BAAA;EACA,sBAAA;EACA,eAAA;C5C++JD;A2Cl7JD;EC1DI,0BAAA;C5C++JH;A2Cr7JD;ECvDI,eAAA;C5C++JH;A2Cp7JD;ECnEE,0BAAA;EACA,sBAAA;EACA,eAAA;C5C0/JD;A2Cz7JD;EC9DI,0BAAA;C5C0/JH;A2C57JD;EC3DI,eAAA;C5C0/JH;A6C5/JD;EACE;IAAQ,4BAAA;G7C+/JP;E6C9/JD;IAAQ,yBAAA;G7CigKP;CACF;A6C9/JD;EACE;IAAQ,4BAAA;G7CigKP;E6ChgKD;IAAQ,yBAAA;G7CmgKP;CACF;A6CtgKD;EACE;IAAQ,4BAAA;G7CigKP;E6ChgKD;IAAQ,yBAAA;G7CmgKP;CACF;A6C5/JD;EACE,iBAAA;EACA,aAAA;EACA,oBAAA;EACA,0BAAA;EACA,mBAAA;ExCsCA,uDAAA;EACQ,+CAAA;CLy9JT;A6C3/JD;EACE,YAAA;EACA,UAAA;EACA,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,mBAAA;EACA,0BAAA;ExCyBA,uDAAA;EACQ,+CAAA;EAyHR,oCAAA;EACK,+BAAA;EACG,4BAAA;CL62JT;A6Cx/JD;;ECCI,8MAAA;EACA,yMAAA;EACA,sMAAA;EDAF,mCAAA;UAAA,2BAAA;C7C4/JD;A6Cr/JD;;ExC5CE,2DAAA;EACK,sDAAA;EACG,mDAAA;CLqiKT;A6Cl/JD;EErEE,0BAAA;C/C0jKD;A+CvjKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9C0gKH;A6Ct/JD;EEzEE,0BAAA;C/CkkKD;A+C/jKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9CkhKH;A6C1/JD;EE7EE,0BAAA;C/C0kKD;A+CvkKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9C0hKH;A6C9/JD;EEjFE,0BAAA;C/CklKD;A+C/kKC;EDgDE,8MAAA;EACA,yMAAA;EACA,sMAAA;C9CkiKH;AgD1lKD;EAEE,iBAAA;ChD2lKD;AgDzlKC;EACE,cAAA;ChD2lKH;AgDvlKD;;EAEE,QAAA;EACA,iBAAA;ChDylKD;AgDtlKD;EACE,eAAA;ChDwlKD;AgDrlKD;EACE,eAAA;ChDulKD;AgDplKC;EACE,gBAAA;ChDslKH;AgDllKD;;EAEE,mBAAA;ChDolKD;AgDjlKD;;EAEE,oBAAA;ChDmlKD;AgDhlKD;;;EAGE,oBAAA;EACA,oBAAA;ChDklKD;AgD/kKD;EACE,uBAAA;ChDilKD;AgD9kKD;EACE,uBAAA;ChDglKD;AgD5kKD;EACE,cAAA;EACA,mBAAA;ChD8kKD;AgDxkKD;EACE,gBAAA;EACA,iBAAA;ChD0kKD;AiDjoKD;EAEE,oBAAA;EACA,gBAAA;CjDkoKD;AiD1nKD;EACE,mBAAA;EACA,eAAA;EACA,mBAAA;EAEA,oBAAA;EACA,0BAAA;EACA,0BAAA;CjD2nKD;AiDxnKC;ErB3BA,6BAAA;EACC,4BAAA;C5BspKF;AiDznKC;EACE,iBAAA;ErBvBF,gCAAA;EACC,+BAAA;C5BmpKF;AiDlnKD;;EAEE,eAAA;CjDonKD;AiDtnKD;;EAKI,eAAA;CjDqnKH;AiDjnKC;;;;EAEE,sBAAA;EACA,eAAA;EACA,0BAAA;CjDqnKH;AiDjnKD;EACE,YAAA;EACA,iBAAA;CjDmnKD;AiD9mKC;;;EAGE,0BAAA;EACA,eAAA;EACA,oBAAA;CjDgnKH;AiDrnKC;;;EASI,eAAA;CjDinKL;AiD1nKC;;;EAYI,eAAA;CjDmnKL;AiD9mKC;;;EAGE,WAAA;EACA,eAAA;EACA,0BAAA;EACA,sBAAA;CjDgnKH;AiDtnKC;;;;;;;;;EAYI,eAAA;CjDqnKL;AiDjoKC;;;EAeI,eAAA;CjDunKL;AkDztKC;EACE,eAAA;EACA,0BAAA;ClD2tKH;AkDztKG;;EAEE,eAAA;ClD2tKL;AkD7tKG;;EAKI,eAAA;ClD4tKP;AkDztKK;;;;EAEE,eAAA;EACA,0BAAA;ClD6tKP;AkD3tKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClDguKP;AkDtvKC;EACE,eAAA;EACA,0BAAA;ClDwvKH;AkDtvKG;;EAEE,eAAA;ClDwvKL;AkD1vKG;;EAKI,eAAA;ClDyvKP;AkDtvKK;;;;EAEE,eAAA;EACA,0BAAA;ClD0vKP;AkDxvKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClD6vKP;AkDnxKC;EACE,eAAA;EACA,0BAAA;ClDqxKH;AkDnxKG;;EAEE,eAAA;ClDqxKL;AkDvxKG;;EAKI,eAAA;ClDsxKP;AkDnxKK;;;;EAEE,eAAA;EACA,0BAAA;ClDuxKP;AkDrxKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClD0xKP;AkDhzKC;EACE,eAAA;EACA,0BAAA;ClDkzKH;AkDhzKG;;EAEE,eAAA;ClDkzKL;AkDpzKG;;EAKI,eAAA;ClDmzKP;AkDhzKK;;;;EAEE,eAAA;EACA,0BAAA;ClDozKP;AkDlzKK;;;;;;EAGE,YAAA;EACA,0BAAA;EACA,sBAAA;ClDuzKP;AiDttKD;EACE,cAAA;EACA,mBAAA;CjDwtKD;AiDttKD;EACE,iBAAA;EACA,iBAAA;CjDwtKD;AmDl1KD;EACE,oBAAA;EACA,0BAAA;EACA,8BAAA;EACA,mBAAA;E9C0DA,kDAAA;EACQ,0CAAA;CL2xKT;AmDj1KD;EACE,cAAA;CnDm1KD;AmD90KD;EACE,mBAAA;EACA,qCAAA;EvBpBA,6BAAA;EACC,4BAAA;C5Bq2KF;AmDp1KD;EAMI,eAAA;CnDi1KH;AmD50KD;EACE,cAAA;EACA,iBAAA;EACA,gBAAA;EACA,eAAA;CnD80KD;AmDl1KD;;;;;EAWI,eAAA;CnD80KH;AmDz0KD;EACE,mBAAA;EACA,0BAAA;EACA,8BAAA;EvBxCA,gCAAA;EACC,+BAAA;C5Bo3KF;AmDn0KD;;EAGI,iBAAA;CnDo0KH;AmDv0KD;;EAMM,oBAAA;EACA,iBAAA;CnDq0KL;AmDj0KG;;EAEI,cAAA;EvBvEN,6BAAA;EACC,4BAAA;C5B24KF;AmD/zKG;;EAEI,iBAAA;EvBvEN,gCAAA;EACC,+BAAA;C5By4KF;AmDx1KD;EvB1DE,2BAAA;EACC,0BAAA;C5Bq5KF;AmD3zKD;EAEI,oBAAA;CnD4zKH;AmDzzKD;EACE,oBAAA;CnD2zKD;AmDnzKD;;;EAII,iBAAA;CnDozKH;AmDxzKD;;;EAOM,mBAAA;EACA,oBAAA;CnDszKL;AmD9zKD;;EvBzGE,6BAAA;EACC,4BAAA;C5B26KF;AmDn0KD;;;;EAmBQ,4BAAA;EACA,6BAAA;CnDszKP;AmD10KD;;;;;;;;EAwBU,4BAAA;CnD4zKT;AmDp1KD;;;;;;;;EA4BU,6BAAA;CnDk0KT;AmD91KD;;EvBjGE,gCAAA;EACC,+BAAA;C5Bm8KF;AmDn2KD;;;;EAyCQ,+BAAA;EACA,gCAAA;CnDg0KP;AmD12KD;;;;;;;;EA8CU,+BAAA;CnDs0KT;AmDp3KD;;;;;;;;EAkDU,gCAAA;CnD40KT;AmD93KD;;;;EA2DI,8BAAA;CnDy0KH;AmDp4KD;;EA+DI,cAAA;CnDy0KH;AmDx4KD;;EAmEI,UAAA;CnDy0KH;AmD54KD;;;;;;;;;;;;EA0EU,eAAA;CnDg1KT;AmD15KD;;;;;;;;;;;;EA8EU,gBAAA;CnD01KT;AmDx6KD;;;;;;;;EAuFU,iBAAA;CnD21KT;AmDl7KD;;;;;;;;EAgGU,iBAAA;CnD41KT;AmD57KD;EAsGI,UAAA;EACA,iBAAA;CnDy1KH;AmD/0KD;EACE,oBAAA;CnDi1KD;AmDl1KD;EAKI,iBAAA;EACA,mBAAA;CnDg1KH;AmDt1KD;EASM,gBAAA;CnDg1KL;AmDz1KD;EAcI,iBAAA;CnD80KH;AmD51KD;;EAkBM,8BAAA;CnD80KL;AmDh2KD;EAuBI,cAAA;CnD40KH;AmDn2KD;EAyBM,iCAAA;CnD60KL;AmDt0KD;EC1PE,sBAAA;CpDmkLD;AoDjkLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpDmkLH;AoDtkLC;EAMI,0BAAA;CpDmkLL;AoDzkLC;EASI,eAAA;EACA,0BAAA;CpDmkLL;AoDhkLC;EAEI,6BAAA;CpDikLL;AmDr1KD;EC7PE,sBAAA;CpDqlLD;AoDnlLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpDqlLH;AoDxlLC;EAMI,0BAAA;CpDqlLL;AoD3lLC;EASI,eAAA;EACA,0BAAA;CpDqlLL;AoDllLC;EAEI,6BAAA;CpDmlLL;AmDp2KD;EChQE,sBAAA;CpDumLD;AoDrmLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpDumLH;AoD1mLC;EAMI,0BAAA;CpDumLL;AoD7mLC;EASI,eAAA;EACA,0BAAA;CpDumLL;AoDpmLC;EAEI,6BAAA;CpDqmLL;AmDn3KD;ECnQE,sBAAA;CpDynLD;AoDvnLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpDynLH;AoD5nLC;EAMI,0BAAA;CpDynLL;AoD/nLC;EASI,eAAA;EACA,0BAAA;CpDynLL;AoDtnLC;EAEI,6BAAA;CpDunLL;AmDl4KD;ECtQE,sBAAA;CpD2oLD;AoDzoLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD2oLH;AoD9oLC;EAMI,0BAAA;CpD2oLL;AoDjpLC;EASI,eAAA;EACA,0BAAA;CpD2oLL;AoDxoLC;EAEI,6BAAA;CpDyoLL;AmDj5KD;ECzQE,sBAAA;CpD6pLD;AoD3pLC;EACE,eAAA;EACA,0BAAA;EACA,sBAAA;CpD6pLH;AoDhqLC;EAMI,0BAAA;CpD6pLL;AoDnqLC;EASI,eAAA;EACA,0BAAA;CpD6pLL;AoD1pLC;EAEI,6BAAA;CpD2pLL;AqD3qLD;EACE,mBAAA;EACA,eAAA;EACA,UAAA;EACA,WAAA;EACA,iBAAA;CrD6qLD;AqDlrLD;;;;;EAYI,mBAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,aAAA;EACA,YAAA;EACA,UAAA;CrD6qLH;AqDxqLD;EACE,uBAAA;CrD0qLD;AqDtqLD;EACE,oBAAA;CrDwqLD;AsDnsLD;EACE,iBAAA;EACA,cAAA;EACA,oBAAA;EACA,0BAAA;EACA,0BAAA;EACA,mBAAA;EjDwDA,wDAAA;EACQ,gDAAA;CL8oLT;AsD7sLD;EASI,mBAAA;EACA,kCAAA;CtDusLH;AsDlsLD;EACE,cAAA;EACA,mBAAA;CtDosLD;AsDlsLD;EACE,aAAA;EACA,mBAAA;CtDosLD;AuD1tLD;EACE,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,eAAA;EACA,eAAA;EACA,6BAAA;EjCRA,aAAA;EAGA,0BAAA;CtBmuLD;AuD3tLC;;EAEE,eAAA;EACA,sBAAA;EACA,gBAAA;EjCfF,aAAA;EAGA,0BAAA;CtB2uLD;AuDvtLC;EACE,WAAA;EACA,gBAAA;EACA,wBAAA;EACA,UAAA;EACA,yBAAA;CvDytLH;AwD9uLD;EACE,iBAAA;CxDgvLD;AwD5uLD;EACE,cAAA;EACA,iBAAA;EACA,gBAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,kCAAA;EAIA,WAAA;CxD2uLD;AwDxuLC;EnD+GA,sCAAA;EACI,kCAAA;EACC,iCAAA;EACG,8BAAA;EAkER,oDAAA;EAEK,0CAAA;EACG,oCAAA;CL2jLT;AwD9uLC;EnD2GA,mCAAA;EACI,+BAAA;EACC,8BAAA;EACG,2BAAA;CLsoLT;AwDlvLD;EACE,mBAAA;EACA,iBAAA;CxDovLD;AwDhvLD;EACE,mBAAA;EACA,YAAA;EACA,aAAA;CxDkvLD;AwD9uLD;EACE,mBAAA;EACA,0BAAA;EACA,0BAAA;EACA,qCAAA;EACA,mBAAA;EnDaA,iDAAA;EACQ,yCAAA;EmDZR,qCAAA;UAAA,6BAAA;EAEA,WAAA;CxDgvLD;AwD5uLD;EACE,gBAAA;EACA,OAAA;EACA,SAAA;EACA,UAAA;EACA,QAAA;EACA,cAAA;EACA,0BAAA;CxD8uLD;AwD5uLC;ElCrEA,WAAA;EAGA,yBAAA;CtBkzLD;AwD/uLC;ElCtEA,aAAA;EAGA,0BAAA;CtBszLD;AwD9uLD;EACE,cAAA;EACA,iCAAA;EACA,0BAAA;CxDgvLD;AwD7uLD;EACE,iBAAA;CxD+uLD;AwD3uLD;EACE,UAAA;EACA,wBAAA;CxD6uLD;AwDxuLD;EACE,mBAAA;EACA,cAAA;CxD0uLD;AwDtuLD;EACE,cAAA;EACA,kBAAA;EACA,8BAAA;CxDwuLD;AwD3uLD;EAQI,iBAAA;EACA,iBAAA;CxDsuLH;AwD/uLD;EAaI,kBAAA;CxDquLH;AwDlvLD;EAiBI,eAAA;CxDouLH;AwD/tLD;EACE,mBAAA;EACA,aAAA;EACA,YAAA;EACA,aAAA;EACA,iBAAA;CxDiuLD;AwD/sLD;EAZE;IACE,aAAA;IACA,kBAAA;GxD8tLD;EwD5tLD;InDvEA,kDAAA;IACQ,0CAAA;GLsyLP;EwD3tLD;IAAY,aAAA;GxD8tLX;CACF;AwDztLD;EAFE;IAAY,aAAA;GxD+tLX;CACF;AyD92LD;EACE,mBAAA;EACA,cAAA;EACA,eAAA;ECRA,4DAAA;EAEA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;EACA,wBAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mBAAA;EACA,qBAAA;EACA,kBAAA;EDHA,gBAAA;EnCVA,WAAA;EAGA,yBAAA;CtBq4LD;AyD13LC;EnCdA,aAAA;EAGA,0BAAA;CtBy4LD;AyD73LC;EAAW,iBAAA;EAAmB,eAAA;CzDi4L/B;AyDh4LC;EAAW,iBAAA;EAAmB,eAAA;CzDo4L/B;AyDn4LC;EAAW,gBAAA;EAAmB,eAAA;CzDu4L/B;AyDt4LC;EAAW,kBAAA;EAAmB,eAAA;CzD04L/B;AyDt4LD;EACE,iBAAA;EACA,iBAAA;EACA,eAAA;EACA,mBAAA;EACA,0BAAA;EACA,mBAAA;CzDw4LD;AyDp4LD;EACE,mBAAA;EACA,SAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;CzDs4LD;AyDl4LC;EACE,UAAA;EACA,UAAA;EACA,kBAAA;EACA,wBAAA;EACA,0BAAA;CzDo4LH;AyDl4LC;EACE,UAAA;EACA,WAAA;EACA,oBAAA;EACA,wBAAA;EACA,0BAAA;CzDo4LH;AyDl4LC;EACE,UAAA;EACA,UAAA;EACA,oBAAA;EACA,wBAAA;EACA,0BAAA;CzDo4LH;AyDl4LC;EACE,SAAA;EACA,QAAA;EACA,iBAAA;EACA,4BAAA;EACA,4BAAA;CzDo4LH;AyDl4LC;EACE,SAAA;EACA,SAAA;EACA,iBAAA;EACA,4BAAA;EACA,2BAAA;CzDo4LH;AyDl4LC;EACE,OAAA;EACA,UAAA;EACA,kBAAA;EACA,wBAAA;EACA,6BAAA;CzDo4LH;AyDl4LC;EACE,OAAA;EACA,WAAA;EACA,iBAAA;EACA,wBAAA;EACA,6BAAA;CzDo4LH;AyDl4LC;EACE,OAAA;EACA,UAAA;EACA,iBAAA;EACA,wBAAA;EACA,6BAAA;CzDo4LH;A2Dj+LD;EACE,mBAAA;EACA,OAAA;EACA,QAAA;EACA,cAAA;EACA,cAAA;EACA,iBAAA;EACA,aAAA;EDXA,4DAAA;EAEA,mBAAA;EACA,oBAAA;EACA,uBAAA;EACA,iBAAA;EACA,wBAAA;EACA,iBAAA;EACA,kBAAA;EACA,sBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mBAAA;EACA,qBAAA;EACA,kBAAA;ECAA,gBAAA;EAEA,0BAAA;EACA,qCAAA;UAAA,6BAAA;EACA,0BAAA;EACA,qCAAA;EACA,mBAAA;EtD8CA,kDAAA;EACQ,0CAAA;CLi8LT;A2D5+LC;EAAY,kBAAA;C3D++Lb;A2D9+LC;EAAY,kBAAA;C3Di/Lb;A2Dh/LC;EAAY,iBAAA;C3Dm/Lb;A2Dl/LC;EAAY,mBAAA;C3Dq/Lb;A2Dl/LD;EACE,UAAA;EACA,kBAAA;EACA,gBAAA;EACA,0BAAA;EACA,iCAAA;EACA,2BAAA;C3Do/LD;A2Dj/LD;EACE,kBAAA;C3Dm/LD;A2D3+LC;;EAEE,mBAAA;EACA,eAAA;EACA,SAAA;EACA,UAAA;EACA,0BAAA;EACA,oBAAA;C3D6+LH;A2D1+LD;EACE,mBAAA;C3D4+LD;A2D1+LD;EACE,mBAAA;EACA,YAAA;C3D4+LD;A2Dx+LC;EACE,UAAA;EACA,mBAAA;EACA,uBAAA;EACA,0BAAA;EACA,sCAAA;EACA,cAAA;C3D0+LH;A2Dz+LG;EACE,aAAA;EACA,YAAA;EACA,mBAAA;EACA,uBAAA;EACA,0BAAA;C3D2+LL;A2Dx+LC;EACE,SAAA;EACA,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,4BAAA;EACA,wCAAA;C3D0+LH;A2Dz+LG;EACE,aAAA;EACA,UAAA;EACA,cAAA;EACA,qBAAA;EACA,4BAAA;C3D2+LL;A2Dx+LC;EACE,UAAA;EACA,mBAAA;EACA,oBAAA;EACA,6BAAA;EACA,yCAAA;EACA,WAAA;C3D0+LH;A2Dz+LG;EACE,aAAA;EACA,SAAA;EACA,mBAAA;EACA,oBAAA;EACA,6BAAA;C3D2+LL;A2Dv+LC;EACE,SAAA;EACA,aAAA;EACA,kBAAA;EACA,sBAAA;EACA,2BAAA;EACA,uCAAA;C3Dy+LH;A2Dx+LG;EACE,aAAA;EACA,WAAA;EACA,sBAAA;EACA,2BAAA;EACA,cAAA;C3D0+LL;A4DnmMD;EACE,mBAAA;C5DqmMD;A4DlmMD;EACE,mBAAA;EACA,iBAAA;EACA,YAAA;C5DomMD;A4DvmMD;EAMI,cAAA;EACA,mBAAA;EvD6KF,0CAAA;EACK,qCAAA;EACG,kCAAA;CLw7LT;A4D9mMD;;EAcM,eAAA;C5DomML;A4D1kMC;EAAA;IvDiKA,uDAAA;IAEK,6CAAA;IACG,uCAAA;IA7JR,oCAAA;IAEQ,4BAAA;IA+GR,4BAAA;IAEQ,oBAAA;GL69LP;E4DxmMG;;IvDmHJ,2CAAA;IACQ,mCAAA;IuDjHF,QAAA;G5D2mML;E4DzmMG;;IvD8GJ,4CAAA;IACQ,oCAAA;IuD5GF,QAAA;G5D4mML;E4D1mMG;;;IvDyGJ,wCAAA;IACQ,gCAAA;IuDtGF,QAAA;G5D6mML;CACF;A4DnpMD;;;EA6CI,eAAA;C5D2mMH;A4DxpMD;EAiDI,QAAA;C5D0mMH;A4D3pMD;;EAsDI,mBAAA;EACA,OAAA;EACA,YAAA;C5DymMH;A4DjqMD;EA4DI,WAAA;C5DwmMH;A4DpqMD;EA+DI,YAAA;C5DwmMH;A4DvqMD;;EAmEI,QAAA;C5DwmMH;A4D3qMD;EAuEI,YAAA;C5DumMH;A4D9qMD;EA0EI,WAAA;C5DumMH;A4D/lMD;EACE,mBAAA;EACA,OAAA;EACA,QAAA;EACA,UAAA;EACA,WAAA;EtC9FA,aAAA;EAGA,0BAAA;EsC6FA,gBAAA;EACA,eAAA;EACA,mBAAA;EACA,0CAAA;C5DkmMD;A4D7lMC;EdlGE,mGAAA;EACA,8FAAA;EACA,qHAAA;EAAA,+FAAA;EACA,4BAAA;EACA,uHAAA;C9CksMH;A4DjmMC;EACE,WAAA;EACA,SAAA;EdvGA,mGAAA;EACA,8FAAA;EACA,qHAAA;EAAA,+FAAA;EACA,4BAAA;EACA,uHAAA;C9C2sMH;A4DnmMC;;EAEE,WAAA;EACA,eAAA;EACA,sBAAA;EtCtHF,aAAA;EAGA,0BAAA;CtB0tMD;A4DpoMD;;;;EAsCI,mBAAA;EACA,SAAA;EACA,kBAAA;EACA,WAAA;EACA,sBAAA;C5DomMH;A4D9oMD;;EA8CI,UAAA;EACA,mBAAA;C5DomMH;A4DnpMD;;EAmDI,WAAA;EACA,oBAAA;C5DomMH;A4DxpMD;;EAwDI,YAAA;EACA,aAAA;EACA,eAAA;EACA,mBAAA;C5DomMH;A4D/lMG;EACE,iBAAA;C5DimML;A4D7lMG;EACE,iBAAA;C5D+lML;A4DrlMD;EACE,mBAAA;EACA,aAAA;EACA,UAAA;EACA,YAAA;EACA,WAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,mBAAA;C5DulMD;A4DhmMD;EAYI,sBAAA;EACA,YAAA;EACA,aAAA;EACA,YAAA;EACA,oBAAA;EACA,0BAAA;EACA,oBAAA;EACA,gBAAA;EAWA,0BAAA;EACA,mCAAA;C5D6kMH;A4D5mMD;EAkCI,UAAA;EACA,YAAA;EACA,aAAA;EACA,0BAAA;C5D6kMH;A4DtkMD;EACE,mBAAA;EACA,UAAA;EACA,WAAA;EACA,aAAA;EACA,YAAA;EACA,kBAAA;EACA,qBAAA;EACA,eAAA;EACA,mBAAA;EACA,0CAAA;C5DwkMD;A4DvkMC;EACE,kBAAA;C5DykMH;A4DhiMD;EAhCE;;;;IAKI,YAAA;IACA,aAAA;IACA,kBAAA;IACA,gBAAA;G5DkkMH;E4D1kMD;;IAYI,mBAAA;G5DkkMH;E4D9kMD;;IAgBI,oBAAA;G5DkkMH;E4D7jMD;IACE,UAAA;IACA,WAAA;IACA,qBAAA;G5D+jMD;E4D3jMD;IACE,aAAA;G5D6jMD;CACF;A6D3zMC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEE,aAAA;EACA,eAAA;C7Dy1MH;A6Dv1MC;;;;;;;;;;;;;;;EACE,YAAA;C7Du2MH;AiC/2MD;E6BRE,eAAA;EACA,kBAAA;EACA,mBAAA;C9D03MD;AiCj3MD;EACE,wBAAA;CjCm3MD;AiCj3MD;EACE,uBAAA;CjCm3MD;AiC32MD;EACE,yBAAA;CjC62MD;AiC32MD;EACE,0BAAA;CjC62MD;AiC32MD;EACE,mBAAA;CjC62MD;AiC32MD;E8BzBE,YAAA;EACA,mBAAA;EACA,kBAAA;EACA,8BAAA;EACA,UAAA;C/Du4MD;AiCz2MD;EACE,yBAAA;CjC22MD;AiCp2MD;EACE,gBAAA;CjCs2MD;AgEv4MD;EACE,oBAAA;ChEy4MD;AgEn4MD;;;;ECdE,yBAAA;CjEu5MD;AgEl4MD;;;;;;;;;;;;EAYE,yBAAA;ChEo4MD;AgE73MD;EAAA;IChDE,0BAAA;GjEi7MC;EiEh7MD;IAAU,0BAAA;GjEm7MT;EiEl7MD;IAAU,8BAAA;GjEq7MT;EiEp7MD;;IACU,+BAAA;GjEu7MT;CACF;AgEv4MD;EAAA;IAFI,0BAAA;GhE64MD;CACF;AgEv4MD;EAAA;IAFI,2BAAA;GhE64MD;CACF;AgEv4MD;EAAA;IAFI,iCAAA;GhE64MD;CACF;AgEt4MD;EAAA;ICrEE,0BAAA;GjE+8MC;EiE98MD;IAAU,0BAAA;GjEi9MT;EiEh9MD;IAAU,8BAAA;GjEm9MT;EiEl9MD;;IACU,+BAAA;GjEq9MT;CACF;AgEh5MD;EAAA;IAFI,0BAAA;GhEs5MD;CACF;AgEh5MD;EAAA;IAFI,2BAAA;GhEs5MD;CACF;AgEh5MD;EAAA;IAFI,iCAAA;GhEs5MD;CACF;AgE/4MD;EAAA;IC1FE,0BAAA;GjE6+MC;EiE5+MD;IAAU,0BAAA;GjE++MT;EiE9+MD;IAAU,8BAAA;GjEi/MT;EiEh/MD;;IACU,+BAAA;GjEm/MT;CACF;AgEz5MD;EAAA;IAFI,0BAAA;GhE+5MD;CACF;AgEz5MD;EAAA;IAFI,2BAAA;GhE+5MD;CACF;AgEz5MD;EAAA;IAFI,iCAAA;GhE+5MD;CACF;AgEx5MD;EAAA;IC/GE,0BAAA;GjE2gNC;EiE1gND;IAAU,0BAAA;GjE6gNT;EiE5gND;IAAU,8BAAA;GjE+gNT;EiE9gND;;IACU,+BAAA;GjEihNT;CACF;AgEl6MD;EAAA;IAFI,0BAAA;GhEw6MD;CACF;AgEl6MD;EAAA;IAFI,2BAAA;GhEw6MD;CACF;AgEl6MD;EAAA;IAFI,iCAAA;GhEw6MD;CACF;AgEj6MD;EAAA;IC5HE,yBAAA;GjEiiNC;CACF;AgEj6MD;EAAA;ICjIE,yBAAA;GjEsiNC;CACF;AgEj6MD;EAAA;ICtIE,yBAAA;GjE2iNC;CACF;AgEj6MD;EAAA;IC3IE,yBAAA;GjEgjNC;CACF;AgE95MD;ECnJE,yBAAA;CjEojND;AgE35MD;EAAA;ICjKE,0BAAA;GjEgkNC;EiE/jND;IAAU,0BAAA;GjEkkNT;EiEjkND;IAAU,8BAAA;GjEokNT;EiEnkND;;IACU,+BAAA;GjEskNT;CACF;AgEz6MD;EACE,yBAAA;ChE26MD;AgEt6MD;EAAA;IAFI,0BAAA;GhE46MD;CACF;AgE16MD;EACE,yBAAA;ChE46MD;AgEv6MD;EAAA;IAFI,2BAAA;GhE66MD;CACF;AgE36MD;EACE,yBAAA;ChE66MD;AgEx6MD;EAAA;IAFI,iCAAA;GhE86MD;CACF;AgEv6MD;EAAA;ICpLE,yBAAA;GjE+lNC;CACF","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n 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');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\2a\";\n}\n.glyphicon-plus:before {\n content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #ffffff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #ffffff;\n background-color: #333333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #cccccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .col-sm-1, .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-sm-10, .col-sm-11, .col-sm-12 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .col-md-1, .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-md-10, .col-md-11, .col-md-12 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .col-lg-1, .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-lg-10, .col-lg-11, .col-lg-12 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #dddddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #dddddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #dddddd;\n}\n.table .table {\n background-color: #ffffff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #dddddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #ffffff;\n background-image: none;\n border: 1px solid #cccccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 14.333333px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333333;\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default .badge {\n color: #ffffff;\n background-color: #333333;\n}\n.btn-primary {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #ffffff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #ffffff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #ffffff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #ffffff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.btn-success {\n color: #ffffff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #ffffff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #ffffff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #ffffff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #ffffff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #ffffff;\n}\n.btn-info {\n color: #ffffff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #ffffff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #ffffff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #ffffff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #ffffff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #ffffff;\n}\n.btn-warning {\n color: #ffffff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #ffffff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #ffffff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #ffffff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #ffffff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #ffffff;\n}\n.btn-danger {\n color: #ffffff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #ffffff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #ffffff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #ffffff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #ffffff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #ffffff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #ffffff;\n border: 1px solid #cccccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #ffffff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-bottom-left-radius: 4px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #cccccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #dddddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #dddddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #dddddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #ffffff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #ffffff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #dddddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #ffffff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #cccccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #dddddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #dddddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #cccccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777777;\n}\n.navbar-default .navbar-link:hover {\n color: #333333;\n}\n.navbar-default .btn-link {\n color: #777777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #cccccc;\n}\n.navbar-inverse {\n background-color: #222222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #ffffff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #ffffff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #ffffff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #ffffff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #ffffff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #ffffff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #ffffff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #ffffff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #ffffff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #cccccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 3;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #dddddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 2;\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #ffffff;\n border-color: #dddddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #ffffff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #ffffff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #ffffff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #ffffff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #ffffff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #ffffff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #ffffff;\n border: 1px solid #dddddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #ffffff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #dddddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #dddddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #dddddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #dddddd;\n}\n.panel-default {\n border-color: #dddddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #dddddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #dddddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #dddddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000000;\n text-shadow: 0 1px 0 #ffffff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #ffffff;\n border: 1px solid #999999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n min-height: 16.42857143px;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #ffffff;\n text-align: center;\n background-color: #000000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #ffffff;\n background-clip: padding-box;\n border: 1px solid #cccccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #ffffff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #ffffff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #ffffff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #ffffff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #ffffff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #ffffff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #ffffff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -15px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // Default\n outline: thin dotted;\n // WebKit\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @grid-float-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n }\n\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n//\n// Note that as of 8.3, iOS doesn't support `datetime` or `week`.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n &.form-control {\n line-height: @input-height-base;\n }\n\n &.input-sm,\n .input-group-sm & {\n line-height: @input-height-small;\n }\n\n &.input-lg,\n .input-group-lg & {\n line-height: @input-height-large;\n }\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: @form-group-margin-bottom;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because ", that.document[0] ) + .attr( "colspan", $( this ).attr( "colspan" ) || 1 ) + .appendTo( element ); + }); + } else if ( nodeName === "img" ) { + element.attr( "src", that.currentItem.attr( "src" ) ); + } + + if ( !className ) { + element.css( "visibility", "hidden" ); + } + + return element; + }, + update: function(container, p) { + + // 1. If a className is set as 'placeholder option, we don't force sizes - the class is responsible for that + // 2. The option 'forcePlaceholderSize can be enabled to force it even if a class name is specified + if(className && !o.forcePlaceholderSize) { + return; + } + + //If the element doesn't have a actual height by itself (without styles coming from a stylesheet), it receives the inline height from the dragged item + if(!p.height()) { p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop")||0, 10) - parseInt(that.currentItem.css("paddingBottom")||0, 10)); } + if(!p.width()) { p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft")||0, 10) - parseInt(that.currentItem.css("paddingRight")||0, 10)); } + } + }; + } + + //Create the placeholder + that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem)); + + //Append it after the actual current item + that.currentItem.after(that.placeholder); + + //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317) + o.placeholder.update(that, that.placeholder); + + }, + + _contactContainers: function(event) { + var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, base, cur, nearBottom, floating, + innermostContainer = null, + innermostIndex = null; + + // get innermost container that intersects with item + for (i = this.containers.length - 1; i >= 0; i--) { + + // never consider a container that's located within the item itself + if($.contains(this.currentItem[0], this.containers[i].element[0])) { + continue; + } + + if(this._intersectsWith(this.containers[i].containerCache)) { + + // if we've already found a container and it's more "inner" than this, then continue + if(innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) { + continue; + } + + innermostContainer = this.containers[i]; + innermostIndex = i; + + } else { + // container doesn't intersect. trigger "out" event if necessary + if(this.containers[i].containerCache.over) { + this.containers[i]._trigger("out", event, this._uiHash(this)); + this.containers[i].containerCache.over = 0; + } + } + + } + + // if no intersecting containers found, return + if(!innermostContainer) { + return; + } + + // move the item into the container if it's not there already + if(this.containers.length === 1) { + if (!this.containers[innermostIndex].containerCache.over) { + this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); + this.containers[innermostIndex].containerCache.over = 1; + } + } else { + + //When entering a new container, we will find the item with the least distance and append our item near it + dist = 10000; + itemWithLeastDistance = null; + floating = innermostContainer.floating || isFloating(this.currentItem); + posProperty = floating ? "left" : "top"; + sizeProperty = floating ? "width" : "height"; + base = this.positionAbs[posProperty] + this.offset.click[posProperty]; + for (j = this.items.length - 1; j >= 0; j--) { + if(!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) { + continue; + } + if(this.items[j].item[0] === this.currentItem[0]) { + continue; + } + if (floating && !isOverAxis(this.positionAbs.top + this.offset.click.top, this.items[j].top, this.items[j].height)) { + continue; + } + cur = this.items[j].item.offset()[posProperty]; + nearBottom = false; + if(Math.abs(cur - base) > Math.abs(cur + this.items[j][sizeProperty] - base)){ + nearBottom = true; + cur += this.items[j][sizeProperty]; + } + + if(Math.abs(cur - base) < dist) { + dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j]; + this.direction = nearBottom ? "up": "down"; + } + } + + //Check if dropOnEmpty is enabled + if(!itemWithLeastDistance && !this.options.dropOnEmpty) { + return; + } + + if(this.currentContainer === this.containers[innermostIndex]) { + return; + } + + itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); + this._trigger("change", event, this._uiHash()); + this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); + this.currentContainer = this.containers[innermostIndex]; + + //Update the placeholder + this.options.placeholder.update(this.currentContainer, this.placeholder); + + this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); + this.containers[innermostIndex].containerCache.over = 1; + } + + + }, + + _createHelper: function(event) { + + var o = this.options, + helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : (o.helper === "clone" ? this.currentItem.clone() : this.currentItem); + + //Add the helper to the DOM if that didn't happen already + if(!helper.parents("body").length) { + $(o.appendTo !== "parent" ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]); + } + + if(helper[0] === this.currentItem[0]) { + this._storedCSS = { width: this.currentItem[0].style.width, height: this.currentItem[0].style.height, position: this.currentItem.css("position"), top: this.currentItem.css("top"), left: this.currentItem.css("left") }; + } + + if(!helper[0].style.width || o.forceHelperSize) { + helper.width(this.currentItem.width()); + } + if(!helper[0].style.height || o.forceHelperSize) { + helper.height(this.currentItem.height()); + } + + return helper; + + }, + + _adjustOffsetFromHelper: function(obj) { + if (typeof obj === "string") { + obj = obj.split(" "); + } + if ($.isArray(obj)) { + obj = {left: +obj[0], top: +obj[1] || 0}; + } + if ("left" in obj) { + this.offset.click.left = obj.left + this.margins.left; + } + if ("right" in obj) { + this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left; + } + if ("top" in obj) { + this.offset.click.top = obj.top + this.margins.top; + } + if ("bottom" in obj) { + this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top; + } + }, + + _getParentOffset: function() { + + + //Get the offsetParent and cache its position + this.offsetParent = this.helper.offsetParent(); + var po = this.offsetParent.offset(); + + // This is a special case where we need to modify a offset calculated on start, since the following happened: + // 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent + // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that + // the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag + if(this.cssPosition === "absolute" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) { + po.left += this.scrollParent.scrollLeft(); + po.top += this.scrollParent.scrollTop(); + } + + // This needs to be actually done for all browsers, since pageX/pageY includes this information + // with an ugly IE fix + if( this.offsetParent[0] === document.body || (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && $.ui.ie)) { + po = { top: 0, left: 0 }; + } + + return { + top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0), + left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0) + }; + + }, + + _getRelativeOffset: function() { + + if(this.cssPosition === "relative") { + var p = this.currentItem.position(); + return { + top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(), + left: p.left - (parseInt(this.helper.css("left"),10) || 0) + this.scrollParent.scrollLeft() + }; + } else { + return { top: 0, left: 0 }; + } + + }, + + _cacheMargins: function() { + this.margins = { + left: (parseInt(this.currentItem.css("marginLeft"),10) || 0), + top: (parseInt(this.currentItem.css("marginTop"),10) || 0) + }; + }, + + _cacheHelperProportions: function() { + this.helperProportions = { + width: this.helper.outerWidth(), + height: this.helper.outerHeight() + }; + }, + + _setContainment: function() { + + var ce, co, over, + o = this.options; + if(o.containment === "parent") { + o.containment = this.helper[0].parentNode; + } + if(o.containment === "document" || o.containment === "window") { + this.containment = [ + 0 - this.offset.relative.left - this.offset.parent.left, + 0 - this.offset.relative.top - this.offset.parent.top, + $(o.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left, + ($(o.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top + ]; + } + + if(!(/^(document|window|parent)$/).test(o.containment)) { + ce = $(o.containment)[0]; + co = $(o.containment).offset(); + over = ($(ce).css("overflow") !== "hidden"); + + this.containment = [ + co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left, + co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top, + co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left, + co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top + ]; + } + + }, + + _convertPositionTo: function(d, pos) { + + if(!pos) { + pos = this.position; + } + var mod = d === "absolute" ? 1 : -1, + scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, + scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); + + return { + top: ( + pos.top + // The absolute mouse position + this.offset.relative.top * mod + // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.top * mod - // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod) + ), + left: ( + pos.left + // The absolute mouse position + this.offset.relative.left * mod + // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.left * mod - // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod) + ) + }; + + }, + + _generatePosition: function(event) { + + var top, left, + o = this.options, + pageX = event.pageX, + pageY = event.pageY, + scroll = this.cssPosition === "absolute" && !(this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName); + + // This is another very weird special case that only happens for relative elements: + // 1. If the css position is relative + // 2. and the scroll parent is the document or similar to the offset parent + // we have to refresh the relative offset during the scroll so there are no jumps + if(this.cssPosition === "relative" && !(this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0])) { + this.offset.relative = this._getRelativeOffset(); + } + + /* + * - Position constraining - + * Constrain the position to a mix of grid, containment. + */ + + if(this.originalPosition) { //If we are not dragging yet, we won't check for options + + if(this.containment) { + if(event.pageX - this.offset.click.left < this.containment[0]) { + pageX = this.containment[0] + this.offset.click.left; + } + if(event.pageY - this.offset.click.top < this.containment[1]) { + pageY = this.containment[1] + this.offset.click.top; + } + if(event.pageX - this.offset.click.left > this.containment[2]) { + pageX = this.containment[2] + this.offset.click.left; + } + if(event.pageY - this.offset.click.top > this.containment[3]) { + pageY = this.containment[3] + this.offset.click.top; + } + } + + if(o.grid) { + top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1]; + pageY = this.containment ? ( (top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3]) ? top : ((top - this.offset.click.top >= this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top; + + left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0]; + pageX = this.containment ? ( (left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2]) ? left : ((left - this.offset.click.left >= this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left; + } + + } + + return { + top: ( + pageY - // The absolute mouse position + this.offset.click.top - // Click offset (relative to the element) + this.offset.relative.top - // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.top + // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) )) + ), + left: ( + pageX - // The absolute mouse position + this.offset.click.left - // Click offset (relative to the element) + this.offset.relative.left - // Only for relative positioned nodes: Relative offset from element to offset parent + this.offset.parent.left + // The offsetParent's offset without borders (offset + border) + ( ( this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() )) + ) + }; + + }, + + _rearrange: function(event, i, a, hardRefresh) { + + a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], (this.direction === "down" ? i.item[0] : i.item[0].nextSibling)); + + //Various things done here to improve the performance: + // 1. we create a setTimeout, that calls refreshPositions + // 2. on the instance, we have a counter variable, that get's higher after every append + // 3. on the local scope, we copy the counter variable, and check in the timeout, if it's still the same + // 4. this lets only the last addition to the timeout stack through + this.counter = this.counter ? ++this.counter : 1; + var counter = this.counter; + + this._delay(function() { + if(counter === this.counter) { + this.refreshPositions(!hardRefresh); //Precompute after each DOM insertion, NOT on mousemove + } + }); + + }, + + _clear: function(event, noPropagation) { + + this.reverting = false; + // We delay all events that have to be triggered to after the point where the placeholder has been removed and + // everything else normalized again + var i, + delayedTriggers = []; + + // We first have to update the dom position of the actual currentItem + // Note: don't do it if the current item is already removed (by a user), or it gets reappended (see #4088) + if(!this._noFinalSort && this.currentItem.parent().length) { + this.placeholder.before(this.currentItem); + } + this._noFinalSort = null; + + if(this.helper[0] === this.currentItem[0]) { + for(i in this._storedCSS) { + if(this._storedCSS[i] === "auto" || this._storedCSS[i] === "static") { + this._storedCSS[i] = ""; + } + } + this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"); + } else { + this.currentItem.show(); + } + + if(this.fromOutside && !noPropagation) { + delayedTriggers.push(function(event) { this._trigger("receive", event, this._uiHash(this.fromOutside)); }); + } + if((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) { + delayedTriggers.push(function(event) { this._trigger("update", event, this._uiHash()); }); //Trigger update callback if the DOM position has changed + } + + // Check if the items Container has Changed and trigger appropriate + // events. + if (this !== this.currentContainer) { + if(!noPropagation) { + delayedTriggers.push(function(event) { this._trigger("remove", event, this._uiHash()); }); + delayedTriggers.push((function(c) { return function(event) { c._trigger("receive", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); + delayedTriggers.push((function(c) { return function(event) { c._trigger("update", event, this._uiHash(this)); }; }).call(this, this.currentContainer)); + } + } + + + //Post events to containers + function delayEvent( type, instance, container ) { + return function( event ) { + container._trigger( type, event, instance._uiHash( instance ) ); + }; + } + for (i = this.containers.length - 1; i >= 0; i--){ + if (!noPropagation) { + delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) ); + } + if(this.containers[i].containerCache.over) { + delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) ); + this.containers[i].containerCache.over = 0; + } + } + + //Do what was originally in plugins + if ( this.storedCursor ) { + this.document.find( "body" ).css( "cursor", this.storedCursor ); + this.storedStylesheet.remove(); + } + if(this._storedOpacity) { + this.helper.css("opacity", this._storedOpacity); + } + if(this._storedZIndex) { + this.helper.css("zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex); + } + + this.dragging = false; + if(this.cancelHelperRemoval) { + if(!noPropagation) { + this._trigger("beforeStop", event, this._uiHash()); + for (i=0; i < delayedTriggers.length; i++) { + delayedTriggers[i].call(this, event); + } //Trigger all delayed events + this._trigger("stop", event, this._uiHash()); + } + + this.fromOutside = false; + return false; + } + + if(!noPropagation) { + this._trigger("beforeStop", event, this._uiHash()); + } + + //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node! + this.placeholder[0].parentNode.removeChild(this.placeholder[0]); + + if(this.helper[0] !== this.currentItem[0]) { + this.helper.remove(); + } + this.helper = null; + + if(!noPropagation) { + for (i=0; i < delayedTriggers.length; i++) { + delayedTriggers[i].call(this, event); + } //Trigger all delayed events + this._trigger("stop", event, this._uiHash()); + } + + this.fromOutside = false; + return true; + + }, + + _trigger: function() { + if ($.Widget.prototype._trigger.apply(this, arguments) === false) { + this.cancel(); + } + }, + + _uiHash: function(_inst) { + var inst = _inst || this; + return { + helper: inst.helper, + placeholder: inst.placeholder || $([]), + position: inst.position, + originalPosition: inst.originalPosition, + offset: inst.positionAbs, + item: inst.currentItem, + sender: _inst ? _inst.element : null + }; + } + +}); + +})(jQuery); + +(function($, undefined) { + +var dataSpace = "ui-effects-"; + +$.effects = { + effect: {} +}; + +/*! + * jQuery Color Animations v2.1.2 + * https://github.com/jquery/jquery-color + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * Date: Wed Jan 16 08:47:09 2013 -0600 + */ +(function( jQuery, undefined ) { + + var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", + + // plusequals test for += 100 -= 100 + rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, + // a set of RE's that can match strings and generate color tuples. + stringParsers = [{ + re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ], + execResult[ 3 ], + execResult[ 4 ] + ]; + } + }, { + re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + parse: function( execResult ) { + return [ + execResult[ 1 ] * 2.55, + execResult[ 2 ] * 2.55, + execResult[ 3 ] * 2.55, + execResult[ 4 ] + ]; + } + }, { + // this regex ignores A-F because it's compared against an already lowercased string + re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ], 16 ) + ]; + } + }, { + // this regex ignores A-F because it's compared against an already lowercased string + re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, + parse: function( execResult ) { + return [ + parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), + parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), + parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) + ]; + } + }, { + re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, + space: "hsla", + parse: function( execResult ) { + return [ + execResult[ 1 ], + execResult[ 2 ] / 100, + execResult[ 3 ] / 100, + execResult[ 4 ] + ]; + } + }], + + // jQuery.Color( ) + color = jQuery.Color = function( color, green, blue, alpha ) { + return new jQuery.Color.fn.parse( color, green, blue, alpha ); + }, + spaces = { + rgba: { + props: { + red: { + idx: 0, + type: "byte" + }, + green: { + idx: 1, + type: "byte" + }, + blue: { + idx: 2, + type: "byte" + } + } + }, + + hsla: { + props: { + hue: { + idx: 0, + type: "degrees" + }, + saturation: { + idx: 1, + type: "percent" + }, + lightness: { + idx: 2, + type: "percent" + } + } + } + }, + propTypes = { + "byte": { + floor: true, + max: 255 + }, + "percent": { + max: 1 + }, + "degrees": { + mod: 360, + floor: true + } + }, + support = color.support = {}, + + // element for support tests + supportElem = jQuery( "

    " )[ 0 ], + + // colors = jQuery.Color.names + colors, + + // local aliases of functions called often + each = jQuery.each; + +// determine rgba support immediately +supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; +support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; + +// define cache name and alpha properties +// for rgba and hsla spaces +each( spaces, function( spaceName, space ) { + space.cache = "_" + spaceName; + space.props.alpha = { + idx: 3, + type: "percent", + def: 1 + }; +}); + +function clamp( value, prop, allowEmpty ) { + var type = propTypes[ prop.type ] || {}; + + if ( value == null ) { + return (allowEmpty || !prop.def) ? null : prop.def; + } + + // ~~ is an short way of doing floor for positive numbers + value = type.floor ? ~~value : parseFloat( value ); + + // IE will pass in empty strings as value for alpha, + // which will hit this case + if ( isNaN( value ) ) { + return prop.def; + } + + if ( type.mod ) { + // we add mod before modding to make sure that negatives values + // get converted properly: -10 -> 350 + return (value + type.mod) % type.mod; + } + + // for now all property types without mod have min and max + return 0 > value ? 0 : type.max < value ? type.max : value; +} + +function stringParse( string ) { + var inst = color(), + rgba = inst._rgba = []; + + string = string.toLowerCase(); + + each( stringParsers, function( i, parser ) { + var parsed, + match = parser.re.exec( string ), + values = match && parser.parse( match ), + spaceName = parser.space || "rgba"; + + if ( values ) { + parsed = inst[ spaceName ]( values ); + + // if this was an rgba parse the assignment might happen twice + // oh well.... + inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; + rgba = inst._rgba = parsed._rgba; + + // exit each( stringParsers ) here because we matched + return false; + } + }); + + // Found a stringParser that handled it + if ( rgba.length ) { + + // if this came from a parsed string, force "transparent" when alpha is 0 + // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) + if ( rgba.join() === "0,0,0,0" ) { + jQuery.extend( rgba, colors.transparent ); + } + return inst; + } + + // named colors + return colors[ string ]; +} + +color.fn = jQuery.extend( color.prototype, { + parse: function( red, green, blue, alpha ) { + if ( red === undefined ) { + this._rgba = [ null, null, null, null ]; + return this; + } + if ( red.jquery || red.nodeType ) { + red = jQuery( red ).css( green ); + green = undefined; + } + + var inst = this, + type = jQuery.type( red ), + rgba = this._rgba = []; + + // more than 1 argument specified - assume ( red, green, blue, alpha ) + if ( green !== undefined ) { + red = [ red, green, blue, alpha ]; + type = "array"; + } + + if ( type === "string" ) { + return this.parse( stringParse( red ) || colors._default ); + } + + if ( type === "array" ) { + each( spaces.rgba.props, function( key, prop ) { + rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); + }); + return this; + } + + if ( type === "object" ) { + if ( red instanceof color ) { + each( spaces, function( spaceName, space ) { + if ( red[ space.cache ] ) { + inst[ space.cache ] = red[ space.cache ].slice(); + } + }); + } else { + each( spaces, function( spaceName, space ) { + var cache = space.cache; + each( space.props, function( key, prop ) { + + // if the cache doesn't exist, and we know how to convert + if ( !inst[ cache ] && space.to ) { + + // if the value was null, we don't need to copy it + // if the key was alpha, we don't need to copy it either + if ( key === "alpha" || red[ key ] == null ) { + return; + } + inst[ cache ] = space.to( inst._rgba ); + } + + // this is the only case where we allow nulls for ALL properties. + // call clamp with alwaysAllowEmpty + inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); + }); + + // everything defined but alpha? + if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { + // use the default of 1 + inst[ cache ][ 3 ] = 1; + if ( space.from ) { + inst._rgba = space.from( inst[ cache ] ); + } + } + }); + } + return this; + } + }, + is: function( compare ) { + var is = color( compare ), + same = true, + inst = this; + + each( spaces, function( _, space ) { + var localCache, + isCache = is[ space.cache ]; + if (isCache) { + localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; + each( space.props, function( _, prop ) { + if ( isCache[ prop.idx ] != null ) { + same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); + return same; + } + }); + } + return same; + }); + return same; + }, + _space: function() { + var used = [], + inst = this; + each( spaces, function( spaceName, space ) { + if ( inst[ space.cache ] ) { + used.push( spaceName ); + } + }); + return used.pop(); + }, + transition: function( other, distance ) { + var end = color( other ), + spaceName = end._space(), + space = spaces[ spaceName ], + startColor = this.alpha() === 0 ? color( "transparent" ) : this, + start = startColor[ space.cache ] || space.to( startColor._rgba ), + result = start.slice(); + + end = end[ space.cache ]; + each( space.props, function( key, prop ) { + var index = prop.idx, + startValue = start[ index ], + endValue = end[ index ], + type = propTypes[ prop.type ] || {}; + + // if null, don't override start value + if ( endValue === null ) { + return; + } + // if null - use end + if ( startValue === null ) { + result[ index ] = endValue; + } else { + if ( type.mod ) { + if ( endValue - startValue > type.mod / 2 ) { + startValue += type.mod; + } else if ( startValue - endValue > type.mod / 2 ) { + startValue -= type.mod; + } + } + result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); + } + }); + return this[ spaceName ]( result ); + }, + blend: function( opaque ) { + // if we are already opaque - return ourself + if ( this._rgba[ 3 ] === 1 ) { + return this; + } + + var rgb = this._rgba.slice(), + a = rgb.pop(), + blend = color( opaque )._rgba; + + return color( jQuery.map( rgb, function( v, i ) { + return ( 1 - a ) * blend[ i ] + a * v; + })); + }, + toRgbaString: function() { + var prefix = "rgba(", + rgba = jQuery.map( this._rgba, function( v, i ) { + return v == null ? ( i > 2 ? 1 : 0 ) : v; + }); + + if ( rgba[ 3 ] === 1 ) { + rgba.pop(); + prefix = "rgb("; + } + + return prefix + rgba.join() + ")"; + }, + toHslaString: function() { + var prefix = "hsla(", + hsla = jQuery.map( this.hsla(), function( v, i ) { + if ( v == null ) { + v = i > 2 ? 1 : 0; + } + + // catch 1 and 2 + if ( i && i < 3 ) { + v = Math.round( v * 100 ) + "%"; + } + return v; + }); + + if ( hsla[ 3 ] === 1 ) { + hsla.pop(); + prefix = "hsl("; + } + return prefix + hsla.join() + ")"; + }, + toHexString: function( includeAlpha ) { + var rgba = this._rgba.slice(), + alpha = rgba.pop(); + + if ( includeAlpha ) { + rgba.push( ~~( alpha * 255 ) ); + } + + return "#" + jQuery.map( rgba, function( v ) { + + // default to 0 when nulls exist + v = ( v || 0 ).toString( 16 ); + return v.length === 1 ? "0" + v : v; + }).join(""); + }, + toString: function() { + return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); + } +}); +color.fn.parse.prototype = color.fn; + +// hsla conversions adapted from: +// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 + +function hue2rgb( p, q, h ) { + h = ( h + 1 ) % 1; + if ( h * 6 < 1 ) { + return p + (q - p) * h * 6; + } + if ( h * 2 < 1) { + return q; + } + if ( h * 3 < 2 ) { + return p + (q - p) * ((2/3) - h) * 6; + } + return p; +} + +spaces.hsla.to = function ( rgba ) { + if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { + return [ null, null, null, rgba[ 3 ] ]; + } + var r = rgba[ 0 ] / 255, + g = rgba[ 1 ] / 255, + b = rgba[ 2 ] / 255, + a = rgba[ 3 ], + max = Math.max( r, g, b ), + min = Math.min( r, g, b ), + diff = max - min, + add = max + min, + l = add * 0.5, + h, s; + + if ( min === max ) { + h = 0; + } else if ( r === max ) { + h = ( 60 * ( g - b ) / diff ) + 360; + } else if ( g === max ) { + h = ( 60 * ( b - r ) / diff ) + 120; + } else { + h = ( 60 * ( r - g ) / diff ) + 240; + } + + // chroma (diff) == 0 means greyscale which, by definition, saturation = 0% + // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) + if ( diff === 0 ) { + s = 0; + } else if ( l <= 0.5 ) { + s = diff / add; + } else { + s = diff / ( 2 - add ); + } + return [ Math.round(h) % 360, s, l, a == null ? 1 : a ]; +}; + +spaces.hsla.from = function ( hsla ) { + if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { + return [ null, null, null, hsla[ 3 ] ]; + } + var h = hsla[ 0 ] / 360, + s = hsla[ 1 ], + l = hsla[ 2 ], + a = hsla[ 3 ], + q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, + p = 2 * l - q; + + return [ + Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), + Math.round( hue2rgb( p, q, h ) * 255 ), + Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), + a + ]; +}; + + +each( spaces, function( spaceName, space ) { + var props = space.props, + cache = space.cache, + to = space.to, + from = space.from; + + // makes rgba() and hsla() + color.fn[ spaceName ] = function( value ) { + + // generate a cache for this space if it doesn't exist + if ( to && !this[ cache ] ) { + this[ cache ] = to( this._rgba ); + } + if ( value === undefined ) { + return this[ cache ].slice(); + } + + var ret, + type = jQuery.type( value ), + arr = ( type === "array" || type === "object" ) ? value : arguments, + local = this[ cache ].slice(); + + each( props, function( key, prop ) { + var val = arr[ type === "object" ? key : prop.idx ]; + if ( val == null ) { + val = local[ prop.idx ]; + } + local[ prop.idx ] = clamp( val, prop ); + }); + + if ( from ) { + ret = color( from( local ) ); + ret[ cache ] = local; + return ret; + } else { + return color( local ); + } + }; + + // makes red() green() blue() alpha() hue() saturation() lightness() + each( props, function( key, prop ) { + // alpha is included in more than one space + if ( color.fn[ key ] ) { + return; + } + color.fn[ key ] = function( value ) { + var vtype = jQuery.type( value ), + fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), + local = this[ fn ](), + cur = local[ prop.idx ], + match; + + if ( vtype === "undefined" ) { + return cur; + } + + if ( vtype === "function" ) { + value = value.call( this, cur ); + vtype = jQuery.type( value ); + } + if ( value == null && prop.empty ) { + return this; + } + if ( vtype === "string" ) { + match = rplusequals.exec( value ); + if ( match ) { + value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); + } + } + local[ prop.idx ] = value; + return this[ fn ]( local ); + }; + }); +}); + +// add cssHook and .fx.step function for each named hook. +// accept a space separated string of properties +color.hook = function( hook ) { + var hooks = hook.split( " " ); + each( hooks, function( i, hook ) { + jQuery.cssHooks[ hook ] = { + set: function( elem, value ) { + var parsed, curElem, + backgroundColor = ""; + + if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) { + value = color( parsed || value ); + if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { + curElem = hook === "backgroundColor" ? elem.parentNode : elem; + while ( + (backgroundColor === "" || backgroundColor === "transparent") && + curElem && curElem.style + ) { + try { + backgroundColor = jQuery.css( curElem, "backgroundColor" ); + curElem = curElem.parentNode; + } catch ( e ) { + } + } + + value = value.blend( backgroundColor && backgroundColor !== "transparent" ? + backgroundColor : + "_default" ); + } + + value = value.toRgbaString(); + } + try { + elem.style[ hook ] = value; + } catch( e ) { + // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit' + } + } + }; + jQuery.fx.step[ hook ] = function( fx ) { + if ( !fx.colorInit ) { + fx.start = color( fx.elem, hook ); + fx.end = color( fx.end ); + fx.colorInit = true; + } + jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); + }; + }); + +}; + +color.hook( stepHooks ); + +jQuery.cssHooks.borderColor = { + expand: function( value ) { + var expanded = {}; + + each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { + expanded[ "border" + part + "Color" ] = value; + }); + return expanded; + } +}; + +// Basic color names only. +// Usage of any of the other color names requires adding yourself or including +// jquery.color.svg-names.js. +colors = jQuery.Color.names = { + // 4.1. Basic color keywords + aqua: "#00ffff", + black: "#000000", + blue: "#0000ff", + fuchsia: "#ff00ff", + gray: "#808080", + green: "#008000", + lime: "#00ff00", + maroon: "#800000", + navy: "#000080", + olive: "#808000", + purple: "#800080", + red: "#ff0000", + silver: "#c0c0c0", + teal: "#008080", + white: "#ffffff", + yellow: "#ffff00", + + // 4.2.3. "transparent" color keyword + transparent: [ null, null, null, 0 ], + + _default: "#ffffff" +}; + +})( jQuery ); + + +/******************************************************************************/ +/****************************** CLASS ANIMATIONS ******************************/ +/******************************************************************************/ +(function() { + +var classAnimationActions = [ "add", "remove", "toggle" ], + shorthandStyles = { + border: 1, + borderBottom: 1, + borderColor: 1, + borderLeft: 1, + borderRight: 1, + borderTop: 1, + borderWidth: 1, + margin: 1, + padding: 1 + }; + +$.each([ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) { + $.fx.step[ prop ] = function( fx ) { + if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { + jQuery.style( fx.elem, prop, fx.end ); + fx.setAttr = true; + } + }; +}); + +function getElementStyles( elem ) { + var key, len, + style = elem.ownerDocument.defaultView ? + elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : + elem.currentStyle, + styles = {}; + + if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { + len = style.length; + while ( len-- ) { + key = style[ len ]; + if ( typeof style[ key ] === "string" ) { + styles[ $.camelCase( key ) ] = style[ key ]; + } + } + // support: Opera, IE <9 + } else { + for ( key in style ) { + if ( typeof style[ key ] === "string" ) { + styles[ key ] = style[ key ]; + } + } + } + + return styles; +} + + +function styleDifference( oldStyle, newStyle ) { + var diff = {}, + name, value; + + for ( name in newStyle ) { + value = newStyle[ name ]; + if ( oldStyle[ name ] !== value ) { + if ( !shorthandStyles[ name ] ) { + if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { + diff[ name ] = value; + } + } + } + } + + return diff; +} + +// support: jQuery <1.8 +if ( !$.fn.addBack ) { + $.fn.addBack = function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + }; +} + +$.effects.animateClass = function( value, duration, easing, callback ) { + var o = $.speed( duration, easing, callback ); + + return this.queue( function() { + var animated = $( this ), + baseClass = animated.attr( "class" ) || "", + applyClassChange, + allAnimations = o.children ? animated.find( "*" ).addBack() : animated; + + // map the animated objects to store the original styles. + allAnimations = allAnimations.map(function() { + var el = $( this ); + return { + el: el, + start: getElementStyles( this ) + }; + }); + + // apply class change + applyClassChange = function() { + $.each( classAnimationActions, function(i, action) { + if ( value[ action ] ) { + animated[ action + "Class" ]( value[ action ] ); + } + }); + }; + applyClassChange(); + + // map all animated objects again - calculate new styles and diff + allAnimations = allAnimations.map(function() { + this.end = getElementStyles( this.el[ 0 ] ); + this.diff = styleDifference( this.start, this.end ); + return this; + }); + + // apply original class + animated.attr( "class", baseClass ); + + // map all animated objects again - this time collecting a promise + allAnimations = allAnimations.map(function() { + var styleInfo = this, + dfd = $.Deferred(), + opts = $.extend({}, o, { + queue: false, + complete: function() { + dfd.resolve( styleInfo ); + } + }); + + this.el.animate( this.diff, opts ); + return dfd.promise(); + }); + + // once all animations have completed: + $.when.apply( $, allAnimations.get() ).done(function() { + + // set the final class + applyClassChange(); + + // for each animated element, + // clear all css properties that were animated + $.each( arguments, function() { + var el = this.el; + $.each( this.diff, function(key) { + el.css( key, "" ); + }); + }); + + // this is guarnteed to be there if you use jQuery.speed() + // it also handles dequeuing the next anim... + o.complete.call( animated[ 0 ] ); + }); + }); +}; + +$.fn.extend({ + addClass: (function( orig ) { + return function( classNames, speed, easing, callback ) { + return speed ? + $.effects.animateClass.call( this, + { add: classNames }, speed, easing, callback ) : + orig.apply( this, arguments ); + }; + })( $.fn.addClass ), + + removeClass: (function( orig ) { + return function( classNames, speed, easing, callback ) { + return arguments.length > 1 ? + $.effects.animateClass.call( this, + { remove: classNames }, speed, easing, callback ) : + orig.apply( this, arguments ); + }; + })( $.fn.removeClass ), + + toggleClass: (function( orig ) { + return function( classNames, force, speed, easing, callback ) { + if ( typeof force === "boolean" || force === undefined ) { + if ( !speed ) { + // without speed parameter + return orig.apply( this, arguments ); + } else { + return $.effects.animateClass.call( this, + (force ? { add: classNames } : { remove: classNames }), + speed, easing, callback ); + } + } else { + // without force parameter + return $.effects.animateClass.call( this, + { toggle: classNames }, force, speed, easing ); + } + }; + })( $.fn.toggleClass ), + + switchClass: function( remove, add, speed, easing, callback) { + return $.effects.animateClass.call( this, { + add: add, + remove: remove + }, speed, easing, callback ); + } +}); + +})(); + +/******************************************************************************/ +/*********************************** EFFECTS **********************************/ +/******************************************************************************/ + +(function() { + +$.extend( $.effects, { + version: "1.10.4", + + // Saves a set of properties in a data storage + save: function( element, set ) { + for( var i=0; i < set.length; i++ ) { + if ( set[ i ] !== null ) { + element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); + } + } + }, + + // Restores a set of previously saved properties from a data storage + restore: function( element, set ) { + var val, i; + for( i=0; i < set.length; i++ ) { + if ( set[ i ] !== null ) { + val = element.data( dataSpace + set[ i ] ); + // support: jQuery 1.6.2 + // http://bugs.jquery.com/ticket/9917 + // jQuery 1.6.2 incorrectly returns undefined for any falsy value. + // We can't differentiate between "" and 0 here, so we just assume + // empty string since it's likely to be a more common value... + if ( val === undefined ) { + val = ""; + } + element.css( set[ i ], val ); + } + } + }, + + setMode: function( el, mode ) { + if (mode === "toggle") { + mode = el.is( ":hidden" ) ? "show" : "hide"; + } + return mode; + }, + + // Translates a [top,left] array into a baseline value + // this should be a little more flexible in the future to handle a string & hash + getBaseline: function( origin, original ) { + var y, x; + switch ( origin[ 0 ] ) { + case "top": y = 0; break; + case "middle": y = 0.5; break; + case "bottom": y = 1; break; + default: y = origin[ 0 ] / original.height; + } + switch ( origin[ 1 ] ) { + case "left": x = 0; break; + case "center": x = 0.5; break; + case "right": x = 1; break; + default: x = origin[ 1 ] / original.width; + } + return { + x: x, + y: y + }; + }, + + // Wraps the element around a wrapper that copies position properties + createWrapper: function( element ) { + + // if the element is already wrapped, return it + if ( element.parent().is( ".ui-effects-wrapper" )) { + return element.parent(); + } + + // wrap the element + var props = { + width: element.outerWidth(true), + height: element.outerHeight(true), + "float": element.css( "float" ) + }, + wrapper = $( "

    " ) + .addClass( "ui-effects-wrapper" ) + .css({ + fontSize: "100%", + background: "transparent", + border: "none", + margin: 0, + padding: 0 + }), + // Store the size in case width/height are defined in % - Fixes #5245 + size = { + width: element.width(), + height: element.height() + }, + active = document.activeElement; + + // support: Firefox + // Firefox incorrectly exposes anonymous content + // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 + try { + active.id; + } catch( e ) { + active = document.body; + } + + element.wrap( wrapper ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).focus(); + } + + wrapper = element.parent(); //Hotfix for jQuery 1.4 since some change in wrap() seems to actually lose the reference to the wrapped element + + // transfer positioning properties to the wrapper + if ( element.css( "position" ) === "static" ) { + wrapper.css({ position: "relative" }); + element.css({ position: "relative" }); + } else { + $.extend( props, { + position: element.css( "position" ), + zIndex: element.css( "z-index" ) + }); + $.each([ "top", "left", "bottom", "right" ], function(i, pos) { + props[ pos ] = element.css( pos ); + if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { + props[ pos ] = "auto"; + } + }); + element.css({ + position: "relative", + top: 0, + left: 0, + right: "auto", + bottom: "auto" + }); + } + element.css(size); + + return wrapper.css( props ).show(); + }, + + removeWrapper: function( element ) { + var active = document.activeElement; + + if ( element.parent().is( ".ui-effects-wrapper" ) ) { + element.parent().replaceWith( element ); + + // Fixes #7595 - Elements lose focus when wrapped. + if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { + $( active ).focus(); + } + } + + + return element; + }, + + setTransition: function( element, list, factor, value ) { + value = value || {}; + $.each( list, function( i, x ) { + var unit = element.cssUnit( x ); + if ( unit[ 0 ] > 0 ) { + value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; + } + }); + return value; + } +}); + +// return an effect options object for the given parameters: +function _normalizeArguments( effect, options, speed, callback ) { + + // allow passing all options as the first parameter + if ( $.isPlainObject( effect ) ) { + options = effect; + effect = effect.effect; + } + + // convert to an object + effect = { effect: effect }; + + // catch (effect, null, ...) + if ( options == null ) { + options = {}; + } + + // catch (effect, callback) + if ( $.isFunction( options ) ) { + callback = options; + speed = null; + options = {}; + } + + // catch (effect, speed, ?) + if ( typeof options === "number" || $.fx.speeds[ options ] ) { + callback = speed; + speed = options; + options = {}; + } + + // catch (effect, options, callback) + if ( $.isFunction( speed ) ) { + callback = speed; + speed = null; + } + + // add options to effect + if ( options ) { + $.extend( effect, options ); + } + + speed = speed || options.duration; + effect.duration = $.fx.off ? 0 : + typeof speed === "number" ? speed : + speed in $.fx.speeds ? $.fx.speeds[ speed ] : + $.fx.speeds._default; + + effect.complete = callback || options.complete; + + return effect; +} + +function standardAnimationOption( option ) { + // Valid standard speeds (nothing, number, named speed) + if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { + return true; + } + + // Invalid strings - treat as "normal" speed + if ( typeof option === "string" && !$.effects.effect[ option ] ) { + return true; + } + + // Complete callback + if ( $.isFunction( option ) ) { + return true; + } + + // Options hash (but not naming an effect) + if ( typeof option === "object" && !option.effect ) { + return true; + } + + // Didn't match any standard API + return false; +} + +$.fn.extend({ + effect: function( /* effect, options, speed, callback */ ) { + var args = _normalizeArguments.apply( this, arguments ), + mode = args.mode, + queue = args.queue, + effectMethod = $.effects.effect[ args.effect ]; + + if ( $.fx.off || !effectMethod ) { + // delegate to the original method (e.g., .show()) if possible + if ( mode ) { + return this[ mode ]( args.duration, args.complete ); + } else { + return this.each( function() { + if ( args.complete ) { + args.complete.call( this ); + } + }); + } + } + + function run( next ) { + var elem = $( this ), + complete = args.complete, + mode = args.mode; + + function done() { + if ( $.isFunction( complete ) ) { + complete.call( elem[0] ); + } + if ( $.isFunction( next ) ) { + next(); + } + } + + // If the element already has the correct final state, delegate to + // the core methods so the internal tracking of "olddisplay" works. + if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { + elem[ mode ](); + done(); + } else { + effectMethod.call( elem[0], args, done ); + } + } + + return queue === false ? this.each( run ) : this.queue( queue || "fx", run ); + }, + + show: (function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "show"; + return this.effect.call( this, args ); + } + }; + })( $.fn.show ), + + hide: (function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "hide"; + return this.effect.call( this, args ); + } + }; + })( $.fn.hide ), + + toggle: (function( orig ) { + return function( option ) { + if ( standardAnimationOption( option ) || typeof option === "boolean" ) { + return orig.apply( this, arguments ); + } else { + var args = _normalizeArguments.apply( this, arguments ); + args.mode = "toggle"; + return this.effect.call( this, args ); + } + }; + })( $.fn.toggle ), + + // helper functions + cssUnit: function(key) { + var style = this.css( key ), + val = []; + + $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { + if ( style.indexOf( unit ) > 0 ) { + val = [ parseFloat( style ), unit ]; + } + }); + return val; + } +}); + +})(); + +/******************************************************************************/ +/*********************************** EASING ***********************************/ +/******************************************************************************/ + +(function() { + +// based on easing equations from Robert Penner (http://www.robertpenner.com/easing) + +var baseEasings = {}; + +$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { + baseEasings[ name ] = function( p ) { + return Math.pow( p, i + 2 ); + }; +}); + +$.extend( baseEasings, { + Sine: function ( p ) { + return 1 - Math.cos( p * Math.PI / 2 ); + }, + Circ: function ( p ) { + return 1 - Math.sqrt( 1 - p * p ); + }, + Elastic: function( p ) { + return p === 0 || p === 1 ? p : + -Math.pow( 2, 8 * (p - 1) ) * Math.sin( ( (p - 1) * 80 - 7.5 ) * Math.PI / 15 ); + }, + Back: function( p ) { + return p * p * ( 3 * p - 2 ); + }, + Bounce: function ( p ) { + var pow2, + bounce = 4; + + while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} + return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); + } +}); + +$.each( baseEasings, function( name, easeIn ) { + $.easing[ "easeIn" + name ] = easeIn; + $.easing[ "easeOut" + name ] = function( p ) { + return 1 - easeIn( 1 - p ); + }; + $.easing[ "easeInOut" + name ] = function( p ) { + return p < 0.5 ? + easeIn( p * 2 ) / 2 : + 1 - easeIn( p * -2 + 2 ) / 2; + }; +}); + +})(); + +})(jQuery); + +(function( $, undefined ) { + +var uid = 0, + hideProps = {}, + showProps = {}; + +hideProps.height = hideProps.paddingTop = hideProps.paddingBottom = + hideProps.borderTopWidth = hideProps.borderBottomWidth = "hide"; +showProps.height = showProps.paddingTop = showProps.paddingBottom = + showProps.borderTopWidth = showProps.borderBottomWidth = "show"; + +$.widget( "ui.accordion", { + version: "1.10.4", + options: { + active: 0, + animate: {}, + collapsible: false, + event: "click", + header: "> li > :first-child,> :not(li):even", + heightStyle: "auto", + icons: { + activeHeader: "ui-icon-triangle-1-s", + header: "ui-icon-triangle-1-e" + }, + + // callbacks + activate: null, + beforeActivate: null + }, + + _create: function() { + var options = this.options; + this.prevShow = this.prevHide = $(); + this.element.addClass( "ui-accordion ui-widget ui-helper-reset" ) + // ARIA + .attr( "role", "tablist" ); + + // don't allow collapsible: false and active: false / null + if ( !options.collapsible && (options.active === false || options.active == null) ) { + options.active = 0; + } + + this._processPanels(); + // handle negative values + if ( options.active < 0 ) { + options.active += this.headers.length; + } + this._refresh(); + }, + + _getCreateEventData: function() { + return { + header: this.active, + panel: !this.active.length ? $() : this.active.next(), + content: !this.active.length ? $() : this.active.next() + }; + }, + + _createIcons: function() { + var icons = this.options.icons; + if ( icons ) { + $( "" ) + .addClass( "ui-accordion-header-icon ui-icon " + icons.header ) + .prependTo( this.headers ); + this.active.children( ".ui-accordion-header-icon" ) + .removeClass( icons.header ) + .addClass( icons.activeHeader ); + this.headers.addClass( "ui-accordion-icons" ); + } + }, + + _destroyIcons: function() { + this.headers + .removeClass( "ui-accordion-icons" ) + .children( ".ui-accordion-header-icon" ) + .remove(); + }, + + _destroy: function() { + var contents; + + // clean up main element + this.element + .removeClass( "ui-accordion ui-widget ui-helper-reset" ) + .removeAttr( "role" ); + + // clean up headers + this.headers + .removeClass( "ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" ) + .removeAttr( "role" ) + .removeAttr( "aria-expanded" ) + .removeAttr( "aria-selected" ) + .removeAttr( "aria-controls" ) + .removeAttr( "tabIndex" ) + .each(function() { + if ( /^ui-accordion/.test( this.id ) ) { + this.removeAttribute( "id" ); + } + }); + this._destroyIcons(); + + // clean up content panels + contents = this.headers.next() + .css( "display", "" ) + .removeAttr( "role" ) + .removeAttr( "aria-hidden" ) + .removeAttr( "aria-labelledby" ) + .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled" ) + .each(function() { + if ( /^ui-accordion/.test( this.id ) ) { + this.removeAttribute( "id" ); + } + }); + if ( this.options.heightStyle !== "content" ) { + contents.css( "height", "" ); + } + }, + + _setOption: function( key, value ) { + if ( key === "active" ) { + // _activate() will handle invalid values and update this.options + this._activate( value ); + return; + } + + if ( key === "event" ) { + if ( this.options.event ) { + this._off( this.headers, this.options.event ); + } + this._setupEvents( value ); + } + + this._super( key, value ); + + // setting collapsible: false while collapsed; open first panel + if ( key === "collapsible" && !value && this.options.active === false ) { + this._activate( 0 ); + } + + if ( key === "icons" ) { + this._destroyIcons(); + if ( value ) { + this._createIcons(); + } + } + + // #5332 - opacity doesn't cascade to positioned elements in IE + // so we need to add the disabled class to the headers and panels + if ( key === "disabled" ) { + this.headers.add( this.headers.next() ) + .toggleClass( "ui-state-disabled", !!value ); + } + }, + + _keydown: function( event ) { + if ( event.altKey || event.ctrlKey ) { + return; + } + + var keyCode = $.ui.keyCode, + length = this.headers.length, + currentIndex = this.headers.index( event.target ), + toFocus = false; + + switch ( event.keyCode ) { + case keyCode.RIGHT: + case keyCode.DOWN: + toFocus = this.headers[ ( currentIndex + 1 ) % length ]; + break; + case keyCode.LEFT: + case keyCode.UP: + toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; + break; + case keyCode.SPACE: + case keyCode.ENTER: + this._eventHandler( event ); + break; + case keyCode.HOME: + toFocus = this.headers[ 0 ]; + break; + case keyCode.END: + toFocus = this.headers[ length - 1 ]; + break; + } + + if ( toFocus ) { + $( event.target ).attr( "tabIndex", -1 ); + $( toFocus ).attr( "tabIndex", 0 ); + toFocus.focus(); + event.preventDefault(); + } + }, + + _panelKeyDown : function( event ) { + if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { + $( event.currentTarget ).prev().focus(); + } + }, + + refresh: function() { + var options = this.options; + this._processPanels(); + + // was collapsed or no panel + if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) { + options.active = false; + this.active = $(); + // active false only when collapsible is true + } else if ( options.active === false ) { + this._activate( 0 ); + // was active, but active panel is gone + } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { + // all remaining panel are disabled + if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) { + options.active = false; + this.active = $(); + // activate previous panel + } else { + this._activate( Math.max( 0, options.active - 1 ) ); + } + // was active, active panel still exists + } else { + // make sure active index is correct + options.active = this.headers.index( this.active ); + } + + this._destroyIcons(); + + this._refresh(); + }, + + _processPanels: function() { + this.headers = this.element.find( this.options.header ) + .addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" ); + + this.headers.next() + .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ) + .filter(":not(.ui-accordion-content-active)") + .hide(); + }, + + _refresh: function() { + var maxHeight, + options = this.options, + heightStyle = options.heightStyle, + parent = this.element.parent(), + accordionId = this.accordionId = "ui-accordion-" + + (this.element.attr( "id" ) || ++uid); + + this.active = this._findActive( options.active ) + .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ) + .removeClass( "ui-corner-all" ); + this.active.next() + .addClass( "ui-accordion-content-active" ) + .show(); + + this.headers + .attr( "role", "tab" ) + .each(function( i ) { + var header = $( this ), + headerId = header.attr( "id" ), + panel = header.next(), + panelId = panel.attr( "id" ); + if ( !headerId ) { + headerId = accordionId + "-header-" + i; + header.attr( "id", headerId ); + } + if ( !panelId ) { + panelId = accordionId + "-panel-" + i; + panel.attr( "id", panelId ); + } + header.attr( "aria-controls", panelId ); + panel.attr( "aria-labelledby", headerId ); + }) + .next() + .attr( "role", "tabpanel" ); + + this.headers + .not( this.active ) + .attr({ + "aria-selected": "false", + "aria-expanded": "false", + tabIndex: -1 + }) + .next() + .attr({ + "aria-hidden": "true" + }) + .hide(); + + // make sure at least one header is in the tab order + if ( !this.active.length ) { + this.headers.eq( 0 ).attr( "tabIndex", 0 ); + } else { + this.active.attr({ + "aria-selected": "true", + "aria-expanded": "true", + tabIndex: 0 + }) + .next() + .attr({ + "aria-hidden": "false" + }); + } + + this._createIcons(); + + this._setupEvents( options.event ); + + if ( heightStyle === "fill" ) { + maxHeight = parent.height(); + this.element.siblings( ":visible" ).each(function() { + var elem = $( this ), + position = elem.css( "position" ); + + if ( position === "absolute" || position === "fixed" ) { + return; + } + maxHeight -= elem.outerHeight( true ); + }); + + this.headers.each(function() { + maxHeight -= $( this ).outerHeight( true ); + }); + + this.headers.next() + .each(function() { + $( this ).height( Math.max( 0, maxHeight - + $( this ).innerHeight() + $( this ).height() ) ); + }) + .css( "overflow", "auto" ); + } else if ( heightStyle === "auto" ) { + maxHeight = 0; + this.headers.next() + .each(function() { + maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); + }) + .height( maxHeight ); + } + }, + + _activate: function( index ) { + var active = this._findActive( index )[ 0 ]; + + // trying to activate the already active panel + if ( active === this.active[ 0 ] ) { + return; + } + + // trying to collapse, simulate a click on the currently active header + active = active || this.active[ 0 ]; + + this._eventHandler({ + target: active, + currentTarget: active, + preventDefault: $.noop + }); + }, + + _findActive: function( selector ) { + return typeof selector === "number" ? this.headers.eq( selector ) : $(); + }, + + _setupEvents: function( event ) { + var events = { + keydown: "_keydown" + }; + if ( event ) { + $.each( event.split(" "), function( index, eventName ) { + events[ eventName ] = "_eventHandler"; + }); + } + + this._off( this.headers.add( this.headers.next() ) ); + this._on( this.headers, events ); + this._on( this.headers.next(), { keydown: "_panelKeyDown" }); + this._hoverable( this.headers ); + this._focusable( this.headers ); + }, + + _eventHandler: function( event ) { + var options = this.options, + active = this.active, + clicked = $( event.currentTarget ), + clickedIsActive = clicked[ 0 ] === active[ 0 ], + collapsing = clickedIsActive && options.collapsible, + toShow = collapsing ? $() : clicked.next(), + toHide = active.next(), + eventData = { + oldHeader: active, + oldPanel: toHide, + newHeader: collapsing ? $() : clicked, + newPanel: toShow + }; + + event.preventDefault(); + + if ( + // click on active header, but not collapsible + ( clickedIsActive && !options.collapsible ) || + // allow canceling activation + ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { + return; + } + + options.active = collapsing ? false : this.headers.index( clicked ); + + // when the call to ._toggle() comes after the class changes + // it causes a very odd bug in IE 8 (see #6720) + this.active = clickedIsActive ? $() : clicked; + this._toggle( eventData ); + + // switch classes + // corner classes on the previously active header stay after the animation + active.removeClass( "ui-accordion-header-active ui-state-active" ); + if ( options.icons ) { + active.children( ".ui-accordion-header-icon" ) + .removeClass( options.icons.activeHeader ) + .addClass( options.icons.header ); + } + + if ( !clickedIsActive ) { + clicked + .removeClass( "ui-corner-all" ) + .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ); + if ( options.icons ) { + clicked.children( ".ui-accordion-header-icon" ) + .removeClass( options.icons.header ) + .addClass( options.icons.activeHeader ); + } + + clicked + .next() + .addClass( "ui-accordion-content-active" ); + } + }, + + _toggle: function( data ) { + var toShow = data.newPanel, + toHide = this.prevShow.length ? this.prevShow : data.oldPanel; + + // handle activating a panel during the animation for another activation + this.prevShow.add( this.prevHide ).stop( true, true ); + this.prevShow = toShow; + this.prevHide = toHide; + + if ( this.options.animate ) { + this._animate( toShow, toHide, data ); + } else { + toHide.hide(); + toShow.show(); + this._toggleComplete( data ); + } + + toHide.attr({ + "aria-hidden": "true" + }); + toHide.prev().attr( "aria-selected", "false" ); + // if we're switching panels, remove the old header from the tab order + // if we're opening from collapsed state, remove the previous header from the tab order + // if we're collapsing, then keep the collapsing header in the tab order + if ( toShow.length && toHide.length ) { + toHide.prev().attr({ + "tabIndex": -1, + "aria-expanded": "false" + }); + } else if ( toShow.length ) { + this.headers.filter(function() { + return $( this ).attr( "tabIndex" ) === 0; + }) + .attr( "tabIndex", -1 ); + } + + toShow + .attr( "aria-hidden", "false" ) + .prev() + .attr({ + "aria-selected": "true", + tabIndex: 0, + "aria-expanded": "true" + }); + }, + + _animate: function( toShow, toHide, data ) { + var total, easing, duration, + that = this, + adjust = 0, + down = toShow.length && + ( !toHide.length || ( toShow.index() < toHide.index() ) ), + animate = this.options.animate || {}, + options = down && animate.down || animate, + complete = function() { + that._toggleComplete( data ); + }; + + if ( typeof options === "number" ) { + duration = options; + } + if ( typeof options === "string" ) { + easing = options; + } + // fall back from options to animation in case of partial down settings + easing = easing || options.easing || animate.easing; + duration = duration || options.duration || animate.duration; + + if ( !toHide.length ) { + return toShow.animate( showProps, duration, easing, complete ); + } + if ( !toShow.length ) { + return toHide.animate( hideProps, duration, easing, complete ); + } + + total = toShow.show().outerHeight(); + toHide.animate( hideProps, { + duration: duration, + easing: easing, + step: function( now, fx ) { + fx.now = Math.round( now ); + } + }); + toShow + .hide() + .animate( showProps, { + duration: duration, + easing: easing, + complete: complete, + step: function( now, fx ) { + fx.now = Math.round( now ); + if ( fx.prop !== "height" ) { + adjust += fx.now; + } else if ( that.options.heightStyle !== "content" ) { + fx.now = Math.round( total - toHide.outerHeight() - adjust ); + adjust = 0; + } + } + }); + }, + + _toggleComplete: function( data ) { + var toHide = data.oldPanel; + + toHide + .removeClass( "ui-accordion-content-active" ) + .prev() + .removeClass( "ui-corner-top" ) + .addClass( "ui-corner-all" ); + + // Work around for rendering bug in IE (#5421) + if ( toHide.length ) { + toHide.parent()[0].className = toHide.parent()[0].className; + } + this._trigger( "activate", null, data ); + } +}); + +})( jQuery ); + +(function( $, undefined ) { + +$.widget( "ui.autocomplete", { + version: "1.10.4", + defaultElement: "", + options: { + appendTo: null, + autoFocus: false, + delay: 300, + minLength: 1, + position: { + my: "left top", + at: "left bottom", + collision: "none" + }, + source: null, + + // callbacks + change: null, + close: null, + focus: null, + open: null, + response: null, + search: null, + select: null + }, + + requestIndex: 0, + pending: 0, + + _create: function() { + // Some browsers only repeat keydown events, not keypress events, + // so we use the suppressKeyPress flag to determine if we've already + // handled the keydown event. #7269 + // Unfortunately the code for & in keypress is the same as the up arrow, + // so we use the suppressKeyPressRepeat flag to avoid handling keypress + // events when we know the keydown event was used to modify the + // search term. #7799 + var suppressKeyPress, suppressKeyPressRepeat, suppressInput, + nodeName = this.element[0].nodeName.toLowerCase(), + isTextarea = nodeName === "textarea", + isInput = nodeName === "input"; + + this.isMultiLine = + // Textareas are always multi-line + isTextarea ? true : + // Inputs are always single-line, even if inside a contentEditable element + // IE also treats inputs as contentEditable + isInput ? false : + // All other element types are determined by whether or not they're contentEditable + this.element.prop( "isContentEditable" ); + + this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ]; + this.isNewMenu = true; + + this.element + .addClass( "ui-autocomplete-input" ) + .attr( "autocomplete", "off" ); + + this._on( this.element, { + keydown: function( event ) { + if ( this.element.prop( "readOnly" ) ) { + suppressKeyPress = true; + suppressInput = true; + suppressKeyPressRepeat = true; + return; + } + + suppressKeyPress = false; + suppressInput = false; + suppressKeyPressRepeat = false; + var keyCode = $.ui.keyCode; + switch( event.keyCode ) { + case keyCode.PAGE_UP: + suppressKeyPress = true; + this._move( "previousPage", event ); + break; + case keyCode.PAGE_DOWN: + suppressKeyPress = true; + this._move( "nextPage", event ); + break; + case keyCode.UP: + suppressKeyPress = true; + this._keyEvent( "previous", event ); + break; + case keyCode.DOWN: + suppressKeyPress = true; + this._keyEvent( "next", event ); + break; + case keyCode.ENTER: + case keyCode.NUMPAD_ENTER: + // when menu is open and has focus + if ( this.menu.active ) { + // #6055 - Opera still allows the keypress to occur + // which causes forms to submit + suppressKeyPress = true; + event.preventDefault(); + this.menu.select( event ); + } + break; + case keyCode.TAB: + if ( this.menu.active ) { + this.menu.select( event ); + } + break; + case keyCode.ESCAPE: + if ( this.menu.element.is( ":visible" ) ) { + this._value( this.term ); + this.close( event ); + // Different browsers have different default behavior for escape + // Single press can mean undo or clear + // Double press in IE means clear the whole form + event.preventDefault(); + } + break; + default: + suppressKeyPressRepeat = true; + // search timeout should be triggered before the input value is changed + this._searchTimeout( event ); + break; + } + }, + keypress: function( event ) { + if ( suppressKeyPress ) { + suppressKeyPress = false; + if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { + event.preventDefault(); + } + return; + } + if ( suppressKeyPressRepeat ) { + return; + } + + // replicate some key handlers to allow them to repeat in Firefox and Opera + var keyCode = $.ui.keyCode; + switch( event.keyCode ) { + case keyCode.PAGE_UP: + this._move( "previousPage", event ); + break; + case keyCode.PAGE_DOWN: + this._move( "nextPage", event ); + break; + case keyCode.UP: + this._keyEvent( "previous", event ); + break; + case keyCode.DOWN: + this._keyEvent( "next", event ); + break; + } + }, + input: function( event ) { + if ( suppressInput ) { + suppressInput = false; + event.preventDefault(); + return; + } + this._searchTimeout( event ); + }, + focus: function() { + this.selectedItem = null; + this.previous = this._value(); + }, + blur: function( event ) { + if ( this.cancelBlur ) { + delete this.cancelBlur; + return; + } + + clearTimeout( this.searching ); + this.close( event ); + this._change( event ); + } + }); + + this._initSource(); + this.menu = $( "
    Memo
    jQueryjQuery - Write less, do moreMIT LicenseCore of Prado javascript library.
    jQuery UIjQuery user interfaceMIT LicenseSystem.Web.UI.JuiControlsjQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.
    Low Pro JQjQuery - Write less, do moreMIT License A jQuery port of the Low Pro behavior framework that was originally written for Prototype. Prado actually uses it as a base to emulate OOP subclassing, inheritance and contructor events.
    ReCaptcha ReCaptcha - Stop spam, read books
    TinyMCETinyMCE Javascript Content Editor (v3.5.6)TinyMCE Javascript WYSIWYG Editor GNU LESSER GENERAL PUBLIC LICENSESystem.Web.UI.WebControls.THtmlAreaTinyMCE is a powerful WYSIWYG editor control for web browsers such as MSIE or Mozilla that enables the user to edit HTML contents in a more user friendly way.System.Web.UI.WebControls.THtmlArea, System.Web.UI.WebControls.THtmlArea4TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL. TinyMCE has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.
    N.A.../Web/Javascripts/prototype Prototype javascript library The Prototype License (MIT based)N.A.Core of Prado javascript library.System.Web.UI.TAutoComplete, TDraggable, TDropContainerPrototype used to be the core of Prado javascript library. Now it's still supported for backwards compatibility
    ../Web/Javascripts/prado/logger/logger.js 
    " + + ""; + thead = (showWeek ? "" : ""); + for (dow = 0; dow < 7; dow++) { // days of the week + day = (dow + firstDay) % 7; + thead += "= 5 ? " class='ui-datepicker-week-end'" : "") + ">" + + "" + dayNamesMin[day] + ""; + } + calender += thead + ""; + daysInMonth = this._getDaysInMonth(drawYear, drawMonth); + if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) { + inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); + } + leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; + curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate + numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043) + this.maxRows = numRows; + printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); + for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows + calender += ""; + tbody = (!showWeek ? "" : ""); + for (dow = 0; dow < 7; dow++) { // create date picker days + daySettings = (beforeShowDay ? + beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]); + otherMonth = (printDate.getMonth() !== drawMonth); + unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] || + (minDate && printDate < minDate) || (maxDate && printDate > maxDate); + tbody += ""; // display selectable date + printDate.setDate(printDate.getDate() + 1); + printDate = this._daylightSavingAdjust(printDate); + } + calender += tbody + ""; + } + drawMonth++; + if (drawMonth > 11) { + drawMonth = 0; + drawYear++; + } + calender += "
    " + this._get(inst, "weekHeader") + "
    " + + this._get(inst, "calculateWeek")(printDate) + "" + // actions + (otherMonth && !showOtherMonths ? " " : // display for other months + (unselectable ? "" + printDate.getDate() + "" : "" + printDate.getDate() + "")) + "
    " + (isMultiMonth ? "
    " + + ((numMonths[0] > 0 && col === numMonths[1]-1) ? "
    " : "") : ""); + group += calender; + } + html += group; + } + html += buttonPanel; + inst._keyEvent = false; + return html; + }, + + /* Generate the month and year header. */ + _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, + secondary, monthNames, monthNamesShort) { + + var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear, + changeMonth = this._get(inst, "changeMonth"), + changeYear = this._get(inst, "changeYear"), + showMonthAfterYear = this._get(inst, "showMonthAfterYear"), + html = "
    ", + monthHtml = ""; + + // month selection + if (secondary || !changeMonth) { + monthHtml += "" + monthNames[drawMonth] + ""; + } else { + inMinYear = (minDate && minDate.getFullYear() === drawYear); + inMaxYear = (maxDate && maxDate.getFullYear() === drawYear); + monthHtml += ""; + } + + if (!showMonthAfterYear) { + html += monthHtml + (secondary || !(changeMonth && changeYear) ? " " : ""); + } + + // year selection + if ( !inst.yearshtml ) { + inst.yearshtml = ""; + if (secondary || !changeYear) { + html += "" + drawYear + ""; + } else { + // determine range of years to display + years = this._get(inst, "yearRange").split(":"); + thisYear = new Date().getFullYear(); + determineYear = function(value) { + var year = (value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) : + (value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) : + parseInt(value, 10))); + return (isNaN(year) ? thisYear : year); + }; + year = determineYear(years[0]); + endYear = Math.max(year, determineYear(years[1] || "")); + year = (minDate ? Math.max(year, minDate.getFullYear()) : year); + endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); + inst.yearshtml += ""; + + html += inst.yearshtml; + inst.yearshtml = null; + } + } + + html += this._get(inst, "yearSuffix"); + if (showMonthAfterYear) { + html += (secondary || !(changeMonth && changeYear) ? " " : "") + monthHtml; + } + html += "
    "; // Close datepicker_header + return html; + }, + + /* Adjust one of the date sub-fields. */ + _adjustInstDate: function(inst, offset, period) { + var year = inst.drawYear + (period === "Y" ? offset : 0), + month = inst.drawMonth + (period === "M" ? offset : 0), + day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0), + date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day))); + + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + if (period === "M" || period === "Y") { + this._notifyChange(inst); + } + }, + + /* Ensure a date is within any min/max bounds. */ + _restrictMinMax: function(inst, date) { + var minDate = this._getMinMaxDate(inst, "min"), + maxDate = this._getMinMaxDate(inst, "max"), + newDate = (minDate && date < minDate ? minDate : date); + return (maxDate && newDate > maxDate ? maxDate : newDate); + }, + + /* Notify change of month/year. */ + _notifyChange: function(inst) { + var onChange = this._get(inst, "onChangeMonthYear"); + if (onChange) { + onChange.apply((inst.input ? inst.input[0] : null), + [inst.selectedYear, inst.selectedMonth + 1, inst]); + } + }, + + /* Determine the number of months to show. */ + _getNumberOfMonths: function(inst) { + var numMonths = this._get(inst, "numberOfMonths"); + return (numMonths == null ? [1, 1] : (typeof numMonths === "number" ? [1, numMonths] : numMonths)); + }, + + /* Determine the current maximum date - ensure no time components are set. */ + _getMinMaxDate: function(inst, minMax) { + return this._determineDate(inst, this._get(inst, minMax + "Date"), null); + }, + + /* Find the number of days in a given month. */ + _getDaysInMonth: function(year, month) { + return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate(); + }, + + /* Find the day of the week of the first of a month. */ + _getFirstDayOfMonth: function(year, month) { + return new Date(year, month, 1).getDay(); + }, + + /* Determines if we should allow a "next/prev" month display change. */ + _canAdjustMonth: function(inst, offset, curYear, curMonth) { + var numMonths = this._getNumberOfMonths(inst), + date = this._daylightSavingAdjust(new Date(curYear, + curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1)); + + if (offset < 0) { + date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); + } + return this._isInRange(inst, date); + }, + + /* Is the given date in the accepted range? */ + _isInRange: function(inst, date) { + var yearSplit, currentYear, + minDate = this._getMinMaxDate(inst, "min"), + maxDate = this._getMinMaxDate(inst, "max"), + minYear = null, + maxYear = null, + years = this._get(inst, "yearRange"); + if (years){ + yearSplit = years.split(":"); + currentYear = new Date().getFullYear(); + minYear = parseInt(yearSplit[0], 10); + maxYear = parseInt(yearSplit[1], 10); + if ( yearSplit[0].match(/[+\-].*/) ) { + minYear += currentYear; + } + if ( yearSplit[1].match(/[+\-].*/) ) { + maxYear += currentYear; + } + } + + return ((!minDate || date.getTime() >= minDate.getTime()) && + (!maxDate || date.getTime() <= maxDate.getTime()) && + (!minYear || date.getFullYear() >= minYear) && + (!maxYear || date.getFullYear() <= maxYear)); + }, + + /* Provide the configuration settings for formatting/parsing. */ + _getFormatConfig: function(inst) { + var shortYearCutoff = this._get(inst, "shortYearCutoff"); + shortYearCutoff = (typeof shortYearCutoff !== "string" ? shortYearCutoff : + new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); + return {shortYearCutoff: shortYearCutoff, + dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"), + monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames")}; + }, + + /* Format the given date for display. */ + _formatDate: function(inst, day, month, year) { + if (!day) { + inst.currentDay = inst.selectedDay; + inst.currentMonth = inst.selectedMonth; + inst.currentYear = inst.selectedYear; + } + var date = (day ? (typeof day === "object" ? day : + this._daylightSavingAdjust(new Date(year, month, day))) : + this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); + return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst)); + } +}); + +/* + * Bind hover events for datepicker elements. + * Done via delegate so the binding only occurs once in the lifetime of the parent div. + * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker. + */ +function bindHover(dpDiv) { + var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"; + return dpDiv.delegate(selector, "mouseout", function() { + $(this).removeClass("ui-state-hover"); + if (this.className.indexOf("ui-datepicker-prev") !== -1) { + $(this).removeClass("ui-datepicker-prev-hover"); + } + if (this.className.indexOf("ui-datepicker-next") !== -1) { + $(this).removeClass("ui-datepicker-next-hover"); + } + }) + .delegate(selector, "mouseover", function(){ + if (!$.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0])) { + $(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"); + $(this).addClass("ui-state-hover"); + if (this.className.indexOf("ui-datepicker-prev") !== -1) { + $(this).addClass("ui-datepicker-prev-hover"); + } + if (this.className.indexOf("ui-datepicker-next") !== -1) { + $(this).addClass("ui-datepicker-next-hover"); + } + } + }); +} + +/* jQuery extend now ignores nulls! */ +function extendRemove(target, props) { + $.extend(target, props); + for (var name in props) { + if (props[name] == null) { + target[name] = props[name]; + } + } + return target; +} + +/* Invoke the datepicker functionality. + @param options string - a command, optionally followed by additional parameters or + Object - settings for attaching new datepicker functionality + @return jQuery object */ +$.fn.datepicker = function(options){ + + /* Verify an empty collection wasn't passed - Fixes #6976 */ + if ( !this.length ) { + return this; + } + + /* Initialise the date picker. */ + if (!$.datepicker.initialized) { + $(document).mousedown($.datepicker._checkExternalClick); + $.datepicker.initialized = true; + } + + /* Append datepicker main container to body if not exist. */ + if ($("#"+$.datepicker._mainDivId).length === 0) { + $("body").append($.datepicker.dpDiv); + } + + var otherArgs = Array.prototype.slice.call(arguments, 1); + if (typeof options === "string" && (options === "isDisabled" || options === "getDate" || options === "widget")) { + return $.datepicker["_" + options + "Datepicker"]. + apply($.datepicker, [this[0]].concat(otherArgs)); + } + if (options === "option" && arguments.length === 2 && typeof arguments[1] === "string") { + return $.datepicker["_" + options + "Datepicker"]. + apply($.datepicker, [this[0]].concat(otherArgs)); + } + return this.each(function() { + typeof options === "string" ? + $.datepicker["_" + options + "Datepicker"]. + apply($.datepicker, [this].concat(otherArgs)) : + $.datepicker._attachDatepicker(this, options); + }); +}; + +$.datepicker = new Datepicker(); // singleton instance +$.datepicker.initialized = false; +$.datepicker.uuid = new Date().getTime(); +$.datepicker.version = "1.10.4"; + +})(jQuery); + +(function( $, undefined ) { + +var sizeRelatedOptions = { + buttons: true, + height: true, + maxHeight: true, + maxWidth: true, + minHeight: true, + minWidth: true, + width: true + }, + resizableRelatedOptions = { + maxHeight: true, + maxWidth: true, + minHeight: true, + minWidth: true + }; + +$.widget( "ui.dialog", { + version: "1.10.4", + options: { + appendTo: "body", + autoOpen: true, + buttons: [], + closeOnEscape: true, + closeText: "close", + dialogClass: "", + draggable: true, + hide: null, + height: "auto", + maxHeight: null, + maxWidth: null, + minHeight: 150, + minWidth: 150, + modal: false, + position: { + my: "center", + at: "center", + of: window, + collision: "fit", + // Ensure the titlebar is always visible + using: function( pos ) { + var topOffset = $( this ).css( pos ).offset().top; + if ( topOffset < 0 ) { + $( this ).css( "top", pos.top - topOffset ); + } + } + }, + resizable: true, + show: null, + title: null, + width: 300, + + // callbacks + beforeClose: null, + close: null, + drag: null, + dragStart: null, + dragStop: null, + focus: null, + open: null, + resize: null, + resizeStart: null, + resizeStop: null + }, + + _create: function() { + this.originalCss = { + display: this.element[0].style.display, + width: this.element[0].style.width, + minHeight: this.element[0].style.minHeight, + maxHeight: this.element[0].style.maxHeight, + height: this.element[0].style.height + }; + this.originalPosition = { + parent: this.element.parent(), + index: this.element.parent().children().index( this.element ) + }; + this.originalTitle = this.element.attr("title"); + this.options.title = this.options.title || this.originalTitle; + + this._createWrapper(); + + this.element + .show() + .removeAttr("title") + .addClass("ui-dialog-content ui-widget-content") + .appendTo( this.uiDialog ); + + this._createTitlebar(); + this._createButtonPane(); + + if ( this.options.draggable && $.fn.draggable ) { + this._makeDraggable(); + } + if ( this.options.resizable && $.fn.resizable ) { + this._makeResizable(); + } + + this._isOpen = false; + }, + + _init: function() { + if ( this.options.autoOpen ) { + this.open(); + } + }, + + _appendTo: function() { + var element = this.options.appendTo; + if ( element && (element.jquery || element.nodeType) ) { + return $( element ); + } + return this.document.find( element || "body" ).eq( 0 ); + }, + + _destroy: function() { + var next, + originalPosition = this.originalPosition; + + this._destroyOverlay(); + + this.element + .removeUniqueId() + .removeClass("ui-dialog-content ui-widget-content") + .css( this.originalCss ) + // Without detaching first, the following becomes really slow + .detach(); + + this.uiDialog.stop( true, true ).remove(); + + if ( this.originalTitle ) { + this.element.attr( "title", this.originalTitle ); + } + + next = originalPosition.parent.children().eq( originalPosition.index ); + // Don't try to place the dialog next to itself (#8613) + if ( next.length && next[0] !== this.element[0] ) { + next.before( this.element ); + } else { + originalPosition.parent.append( this.element ); + } + }, + + widget: function() { + return this.uiDialog; + }, + + disable: $.noop, + enable: $.noop, + + close: function( event ) { + var activeElement, + that = this; + + if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) { + return; + } + + this._isOpen = false; + this._destroyOverlay(); + + if ( !this.opener.filter(":focusable").focus().length ) { + + // support: IE9 + // IE9 throws an "Unspecified error" accessing document.activeElement from an