From ff55141a1e6d02ecd2dd381683aefcec2294f039 Mon Sep 17 00:00:00 2001 From: xuanchen <122383162@qq.com> Date: Wed, 11 Jan 2023 11:00:43 +0800 Subject: [PATCH] fisrt --- .editorconfig | 15 + .env.example | 37 + .gitattributes | 5 + .gitignore | 15 + .styleci.yml | 13 + README.md | 122 + app/Admin/Actions/LinkCreateAddress.php | 20 + app/Admin/Actions/LinkStockOrderDeliver.php | 20 + app/Admin/Actions/LinkVipOrderRefund.php | 20 + app/Admin/Controllers/AuthController.php | 10 + app/Admin/Controllers/HomeController.php | 259 + app/Admin/Controllers/LeadyController.php | 17 + .../Controllers/Material/IndexController.php | 54 + app/Admin/Controllers/ModuleController.php | 100 + .../Platform/DashboardController.php | 291 + .../Platform/ExperienceController.php | 140 + .../Controllers/Platform/VipController.php | 257 + .../Platform/VipOrderController.php | 85 + app/Admin/Controllers/TestController.php | 123 + app/Admin/Extensions/CleanCache.php | 29 + app/Admin/Routes/material.php | 10 + app/Admin/Routes/modules.php | 12 + app/Admin/Routes/platform.php | 15 + app/Admin/Routes/test.php | 12 + app/Admin/Traits/WithUploads.php | 103 + app/Admin/bootstrap.php | 62 + app/Admin/routes.php | 24 + app/Api/Controllers/Controller.php | 12 + app/Api/Controllers/Data/IndexController.php | 159 + app/Api/Controllers/IndexController.php | 12 + .../Controllers/Wechat/IndexController.php | 63 + app/Api/Resources/BaseCollection.php | 21 + .../Resources/Order/OrderDataCollection.php | 32 + app/Api/Resources/User/UserBaseResource.php | 20 + app/Api/Resources/User/UserDataCollection.php | 20 + app/Api/Resources/User/UserDataResource.php | 22 + app/Api/Routes/data.php | 14 + app/Api/Routes/wechat.php | 12 + .../WechatHandlers/EventMessageHandler.php | 142 + app/Api/WechatHandlers/FileMessageHandler.php | 27 + .../WechatHandlers/ImageMessageHandler.php | 24 + app/Api/WechatHandlers/LinkMessageHandler.php | 25 + .../WechatHandlers/LocationMessageHandler.php | 25 + .../ShortVideoMessageHandler.php | 24 + app/Api/WechatHandlers/TextMessageHandler.php | 16 + .../WechatHandlers/TransferMessageHandler.php | 15 + .../WechatHandlers/VideoMessageHandler.php | 24 + .../WechatHandlers/VoiceMessageHandler.php | 25 + app/Api/bootstrap.php | 1 + app/Api/routes.php | 25 + app/Bonus/IdentityBonus.php | 305 + app/Channels/WechatMiniChannel.php | 15 + app/Console/Commands/MonthPerfCommand.php | 36 + app/Console/Commands/StartBounsCommand.php | 57 + app/Console/Kernel.php | 66 + app/Exceptions/Handler.php | 43 + app/Http/Controllers/Controller.php | 29 + app/Http/Controllers/ImageController.php | 18 + app/Http/Kernel.php | 66 + app/Http/Middleware/Authenticate.php | 21 + app/Http/Middleware/EncryptCookies.php | 17 + .../PreventRequestsDuringMaintenance.php | 17 + .../Middleware/RedirectIfAuthenticated.php | 32 + app/Http/Middleware/TrimStrings.php | 19 + app/Http/Middleware/TrustHosts.php | 20 + app/Http/Middleware/TrustProxies.php | 23 + app/Http/Middleware/VerifyCsrfToken.php | 17 + app/Jobs/Bonus/BuyIdentityJob.php | 43 + app/Jobs/Bonus/MonthPerfJob.php | 57 + app/Jobs/Bonus/SendBounsJob.php | 55 + app/Listeners/PaymentPaidListener.php | 15 + app/Listeners/UserOrderPaidListener.php | 41 + app/Models/Bouns.php | 128 + app/Models/BounsOrder.php | 12 + app/Models/BounsUserPerf.php | 26 + app/Models/Job.php | 8 + app/Models/Material.php | 11 + app/Models/Model.php | 27 + app/Models/Module.php | 51 + app/Notifications/SystemOpenVip.php | 100 + app/Notifications/SystemOrderDelivered.php | 90 + app/Notifications/SystemRemindUserSign.php | 81 + app/Notifications/SystemUpdateCase.php | 81 + app/Providers/AppServiceProvider.php | 28 + app/Providers/AuthServiceProvider.php | 30 + app/Providers/BroadcastServiceProvider.php | 21 + app/Providers/EventServiceProvider.php | 32 + app/Providers/RouteServiceProvider.php | 63 + app/Traits/HasClicks.php | 84 + app/Traits/HasCovers.php | 83 + app/Traits/HasStatus.php | 87 + app/Traits/Macroable.php | 50 + app/Traits/OrderByIdDesc.php | 22 + app/Traits/OrderByOrderAsc.php | 22 + app/Traits/WithPosition.php | 65 + artisan | 53 + bootstrap/app.php | 55 + bootstrap/cache/.gitignore | 2 + composer.json | 96 + composer.lock | 13154 +++++++ config/admin.php | 439 + config/agent.php | 40 + config/api.php | 48 + config/app.php | 236 + config/auth.php | 117 + config/broadcasting.php | 64 + config/cache.php | 106 + config/cors.php | 34 + config/database.php | 147 + config/favorite.php | 23 + config/filesystems.php | 72 + config/hashing.php | 52 + config/image.php | 20 + config/jwt.php | 304 + config/laravel-model-caching.php | 11 + config/logging.php | 119 + config/mail.php | 110 + config/modules.php | 272 + config/queue.php | 93 + config/services.php | 33 + config/session.php | 201 + config/subscribe.php | 23 + config/tencent_map.php | 6 + config/ueditor.php | 118 + config/versionable.php | 30 + config/view.php | 36 + config/wechat.php | 146 + config/withdraw.php | 13 + database/.gitignore | 2 + database/factories/UserFactory.php | 47 + .../2016_01_04_173148_create_admin_tables.php | 119 + ...18_12_14_000000_create_favorites_table.php | 29 + ..._08_19_000000_create_failed_jobs_table.php | 36 + ...4_09_000000_create_subscriptions_table.php | 29 + ...21_08_06_104216_create_materials_table.php | 32 + .../2022_08_30_150338_create_bouns_table.php | 36 + ...08_30_150355_create_bouns_orders_table.php | 36 + ..._153401_create_bouns_user_perves_table.php | 40 + database/seeders/AdminPanelSeeder.php | 106 + database/seeders/DatabaseSeeder.php | 18 + docs/READMD.md | 2 + docs/Trait doc.md | 117 + modules.json | 13 + modules/.gitignore | 15 + modules/Cms/.gitignore | 4 + modules/Cms/README.md | 49 + modules/Configuration/.gitignore | 4 + modules/Configuration/README.md | 6 + modules/Coupon/.gitignore | 4 + modules/Coupon/README.md | 10 + modules/Linker/.gitignore | 4 + modules/Linker/README.md | 22 + modules/Mall/.gitignore | 4 + modules/Mall/README.md | 37 + modules/Notification/README.md | 154 + modules/Payment/.gitignore | 4 + modules/Payment/README.md | 46 + modules/README.md | 27 + modules/Storage/.gitignore | 4 + modules/Storage/README.md | 70 + modules/User/.gitignore | 4 + modules/User/README.md | 12 + package.json | 18 + public/.htaccess | 21 + public/favicon.ico | 0 public/index.php | 55 + public/robots.txt | 2 + public/vendor/js/setStock.js | 21 + .../AdminLTE/bootstrap/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 .../AdminLTE/bootstrap/js/bootstrap.min.js | 7 + .../AdminLTE/dist/css/AdminLTE.min.css | 7 + .../dist/css/skins/_all-skins.min.css | 1 + .../dist/css/skins/skin-black-light.min.css | 1 + .../dist/css/skins/skin-black.min.css | 1 + .../dist/css/skins/skin-blue-light.min.css | 1 + .../AdminLTE/dist/css/skins/skin-blue.min.css | 1 + .../dist/css/skins/skin-green-light.min.css | 1 + .../dist/css/skins/skin-green.min.css | 1 + .../dist/css/skins/skin-purple-light.min.css | 1 + .../dist/css/skins/skin-purple.min.css | 1 + .../dist/css/skins/skin-red-light.min.css | 1 + .../AdminLTE/dist/css/skins/skin-red.min.css | 1 + .../dist/css/skins/skin-yellow-light.min.css | 1 + .../dist/css/skins/skin-yellow.min.css | 1 + .../AdminLTE/dist/img/boxed-bg.jpg | Bin 0 -> 123770 bytes .../AdminLTE/dist/img/boxed-bg.png | Bin 0 -> 43694 bytes .../AdminLTE/dist/img/default-50x50.gif | Bin 0 -> 184 bytes .../laravel-admin/AdminLTE/dist/img/icons.png | Bin 0 -> 1154 bytes .../AdminLTE/dist/img/user2-160x160.jpg | Bin 0 -> 7070 bytes .../laravel-admin/AdminLTE/dist/js/app.min.js | 13 + .../bootstrap-slider/bootstrap-slider.js | 1167 + .../plugins/bootstrap-slider/slider.css | 169 + .../colorpicker/bootstrap-colorpicker.min.css | 9 + .../colorpicker/bootstrap-colorpicker.min.js | 1 + .../colorpicker/img/alpha-horizontal.png | Bin 0 -> 3635 bytes .../plugins/colorpicker/img/alpha.png | Bin 0 -> 3271 bytes .../colorpicker/img/hue-horizontal.png | Bin 0 -> 2837 bytes .../AdminLTE/plugins/colorpicker/img/hue.png | Bin 0 -> 2972 bytes .../plugins/colorpicker/img/saturation.png | Bin 0 -> 8817 bytes .../AdminLTE/plugins/iCheck/all.css | 61 + .../AdminLTE/plugins/iCheck/flat/_all.css | 560 + .../AdminLTE/plugins/iCheck/flat/aero.css | 56 + .../AdminLTE/plugins/iCheck/flat/aero.png | Bin 0 -> 1520 bytes .../AdminLTE/plugins/iCheck/flat/aero@2x.png | Bin 0 -> 3218 bytes .../AdminLTE/plugins/iCheck/flat/blue.css | 56 + .../AdminLTE/plugins/iCheck/flat/blue.png | Bin 0 -> 1518 bytes .../AdminLTE/plugins/iCheck/flat/blue@2x.png | Bin 0 -> 3217 bytes .../AdminLTE/plugins/iCheck/flat/flat.css | 56 + .../AdminLTE/plugins/iCheck/flat/flat.png | Bin 0 -> 1515 bytes .../AdminLTE/plugins/iCheck/flat/flat@2x.png | Bin 0 -> 3217 bytes .../AdminLTE/plugins/iCheck/flat/green.css | 56 + .../AdminLTE/plugins/iCheck/flat/green.png | Bin 0 -> 1444 bytes .../AdminLTE/plugins/iCheck/flat/green@2x.png | Bin 0 -> 3117 bytes .../AdminLTE/plugins/iCheck/flat/grey.css | 56 + .../AdminLTE/plugins/iCheck/flat/grey.png | Bin 0 -> 1516 bytes .../AdminLTE/plugins/iCheck/flat/grey@2x.png | Bin 0 -> 3217 bytes .../AdminLTE/plugins/iCheck/flat/orange.css | 56 + .../AdminLTE/plugins/iCheck/flat/orange.png | Bin 0 -> 1518 bytes .../plugins/iCheck/flat/orange@2x.png | Bin 0 -> 3275 bytes .../AdminLTE/plugins/iCheck/flat/pink.css | 56 + .../AdminLTE/plugins/iCheck/flat/pink.png | Bin 0 -> 1522 bytes .../AdminLTE/plugins/iCheck/flat/pink@2x.png | Bin 0 -> 3218 bytes .../AdminLTE/plugins/iCheck/flat/purple.css | 56 + .../AdminLTE/plugins/iCheck/flat/purple.png | Bin 0 -> 1519 bytes .../plugins/iCheck/flat/purple@2x.png | Bin 0 -> 3218 bytes .../AdminLTE/plugins/iCheck/flat/red.css | 56 + .../AdminLTE/plugins/iCheck/flat/red.png | Bin 0 -> 1516 bytes .../AdminLTE/plugins/iCheck/flat/red@2x.png | Bin 0 -> 3276 bytes .../AdminLTE/plugins/iCheck/flat/yellow.css | 56 + .../AdminLTE/plugins/iCheck/flat/yellow.png | Bin 0 -> 1516 bytes .../plugins/iCheck/flat/yellow@2x.png | Bin 0 -> 3216 bytes .../plugins/iCheck/futurico/futurico.css | 56 + .../plugins/iCheck/futurico/futurico.png | Bin 0 -> 1734 bytes .../plugins/iCheck/futurico/futurico@2x.png | Bin 0 -> 3446 bytes .../AdminLTE/plugins/iCheck/icheck.min.js | 10 + .../AdminLTE/plugins/iCheck/line/_all.css | 740 + .../AdminLTE/plugins/iCheck/line/aero.css | 74 + .../AdminLTE/plugins/iCheck/line/blue.css | 74 + .../AdminLTE/plugins/iCheck/line/green.css | 74 + .../AdminLTE/plugins/iCheck/line/grey.css | 74 + .../AdminLTE/plugins/iCheck/line/line.css | 74 + .../AdminLTE/plugins/iCheck/line/line.png | Bin 0 -> 588 bytes .../AdminLTE/plugins/iCheck/line/line@2x.png | Bin 0 -> 1073 bytes .../AdminLTE/plugins/iCheck/line/orange.css | 74 + .../AdminLTE/plugins/iCheck/line/pink.css | 74 + .../AdminLTE/plugins/iCheck/line/purple.css | 74 + .../AdminLTE/plugins/iCheck/line/red.css | 74 + .../AdminLTE/plugins/iCheck/line/yellow.css | 74 + .../AdminLTE/plugins/iCheck/minimal/_all.css | 557 + .../AdminLTE/plugins/iCheck/minimal/aero.css | 62 + .../AdminLTE/plugins/iCheck/minimal/aero.png | Bin 0 -> 1151 bytes .../plugins/iCheck/minimal/aero@2x.png | Bin 0 -> 1409 bytes .../AdminLTE/plugins/iCheck/minimal/blue.css | 62 + .../AdminLTE/plugins/iCheck/minimal/blue.png | Bin 0 -> 1132 bytes .../plugins/iCheck/minimal/blue@2x.png | Bin 0 -> 1410 bytes .../AdminLTE/plugins/iCheck/minimal/green.css | 62 + .../AdminLTE/plugins/iCheck/minimal/green.png | Bin 0 -> 1143 bytes .../plugins/iCheck/minimal/green@2x.png | Bin 0 -> 1408 bytes .../AdminLTE/plugins/iCheck/minimal/grey.css | 62 + .../AdminLTE/plugins/iCheck/minimal/grey.png | Bin 0 -> 1142 bytes .../plugins/iCheck/minimal/grey@2x.png | Bin 0 -> 1407 bytes .../plugins/iCheck/minimal/minimal.css | 62 + .../plugins/iCheck/minimal/minimal.png | Bin 0 -> 1114 bytes .../plugins/iCheck/minimal/minimal@2x.png | Bin 0 -> 1410 bytes .../plugins/iCheck/minimal/orange.css | 62 + .../plugins/iCheck/minimal/orange.png | Bin 0 -> 1139 bytes .../plugins/iCheck/minimal/orange@2x.png | Bin 0 -> 1407 bytes .../AdminLTE/plugins/iCheck/minimal/pink.css | 62 + .../AdminLTE/plugins/iCheck/minimal/pink.png | Bin 0 -> 1150 bytes .../plugins/iCheck/minimal/pink@2x.png | Bin 0 -> 1409 bytes .../plugins/iCheck/minimal/purple.css | 62 + .../plugins/iCheck/minimal/purple.png | Bin 0 -> 1132 bytes .../plugins/iCheck/minimal/purple@2x.png | Bin 0 -> 1409 bytes .../AdminLTE/plugins/iCheck/minimal/red.css | 62 + .../AdminLTE/plugins/iCheck/minimal/red.png | Bin 0 -> 1130 bytes .../plugins/iCheck/minimal/red@2x.png | Bin 0 -> 1410 bytes .../plugins/iCheck/minimal/yellow.css | 62 + .../plugins/iCheck/minimal/yellow.png | Bin 0 -> 1135 bytes .../plugins/iCheck/minimal/yellow@2x.png | Bin 0 -> 1406 bytes .../plugins/iCheck/polaris/polaris.css | 62 + .../plugins/iCheck/polaris/polaris.png | Bin 0 -> 6401 bytes .../plugins/iCheck/polaris/polaris@2x.png | Bin 0 -> 16760 bytes .../AdminLTE/plugins/iCheck/square/_all.css | 620 + .../AdminLTE/plugins/iCheck/square/aero.css | 62 + .../AdminLTE/plugins/iCheck/square/aero.png | Bin 0 -> 2167 bytes .../plugins/iCheck/square/aero@2x.png | Bin 0 -> 4455 bytes .../AdminLTE/plugins/iCheck/square/blue.css | 62 + .../AdminLTE/plugins/iCheck/square/blue.png | Bin 0 -> 2185 bytes .../plugins/iCheck/square/blue@2x.png | Bin 0 -> 4485 bytes .../AdminLTE/plugins/iCheck/square/green.css | 62 + .../AdminLTE/plugins/iCheck/square/green.png | Bin 0 -> 2193 bytes .../plugins/iCheck/square/green@2x.png | Bin 0 -> 4498 bytes .../AdminLTE/plugins/iCheck/square/grey.css | 62 + .../AdminLTE/plugins/iCheck/square/grey.png | Bin 0 -> 2186 bytes .../plugins/iCheck/square/grey@2x.png | Bin 0 -> 4483 bytes .../AdminLTE/plugins/iCheck/square/orange.css | 62 + .../AdminLTE/plugins/iCheck/square/orange.png | Bin 0 -> 2181 bytes .../plugins/iCheck/square/orange@2x.png | Bin 0 -> 4474 bytes .../AdminLTE/plugins/iCheck/square/pink.css | 62 + .../AdminLTE/plugins/iCheck/square/pink.png | Bin 0 -> 2189 bytes .../plugins/iCheck/square/pink@2x.png | Bin 0 -> 4479 bytes .../AdminLTE/plugins/iCheck/square/purple.css | 62 + .../AdminLTE/plugins/iCheck/square/purple.png | Bin 0 -> 2188 bytes .../plugins/iCheck/square/purple@2x.png | Bin 0 -> 4501 bytes .../AdminLTE/plugins/iCheck/square/red.css | 62 + .../AdminLTE/plugins/iCheck/square/red.png | Bin 0 -> 2190 bytes .../AdminLTE/plugins/iCheck/square/red@2x.png | Bin 0 -> 4490 bytes .../AdminLTE/plugins/iCheck/square/square.css | 62 + .../AdminLTE/plugins/iCheck/square/square.png | Bin 0 -> 2175 bytes .../plugins/iCheck/square/square@2x.png | Bin 0 -> 4478 bytes .../AdminLTE/plugins/iCheck/square/yellow.css | 62 + .../AdminLTE/plugins/iCheck/square/yellow.png | Bin 0 -> 2131 bytes .../plugins/iCheck/square/yellow@2x.png | Bin 0 -> 4385 bytes .../input-mask/jquery.inputmask.bundle.min.js | 10 + .../input-mask/phone-codes/phone-be.json | 45 + .../input-mask/phone-codes/phone-codes.json | 294 + .../plugins/input-mask/phone-codes/readme.txt | 1 + .../ionslider/img/sprite-skin-flat.png | Bin 0 -> 352 bytes .../ionslider/img/sprite-skin-nice.png | Bin 0 -> 1022 bytes .../plugins/ionslider/ion.rangeSlider.css | 126 + .../plugins/ionslider/ion.rangeSlider.min.js | 22 + .../ionslider/ion.rangeSlider.skinFlat.css | 89 + .../ionslider/ion.rangeSlider.skinNice.css | 85 + .../plugins/jQuery/jQuery-2.1.4.min.js | 4 + .../AdminLTE/plugins/select2/i18n/ar.js | 3 + .../AdminLTE/plugins/select2/i18n/az.js | 3 + .../AdminLTE/plugins/select2/i18n/bg.js | 3 + .../AdminLTE/plugins/select2/i18n/ca.js | 3 + .../AdminLTE/plugins/select2/i18n/cs.js | 3 + .../AdminLTE/plugins/select2/i18n/da.js | 3 + .../AdminLTE/plugins/select2/i18n/de.js | 3 + .../AdminLTE/plugins/select2/i18n/el.js | 3 + .../AdminLTE/plugins/select2/i18n/en.js | 3 + .../AdminLTE/plugins/select2/i18n/es.js | 3 + .../AdminLTE/plugins/select2/i18n/et.js | 3 + .../AdminLTE/plugins/select2/i18n/eu.js | 3 + .../AdminLTE/plugins/select2/i18n/fa.js | 3 + .../AdminLTE/plugins/select2/i18n/fi.js | 3 + .../AdminLTE/plugins/select2/i18n/fr.js | 3 + .../AdminLTE/plugins/select2/i18n/gl.js | 3 + .../AdminLTE/plugins/select2/i18n/he.js | 3 + .../AdminLTE/plugins/select2/i18n/hi.js | 3 + .../AdminLTE/plugins/select2/i18n/hr.js | 3 + .../AdminLTE/plugins/select2/i18n/hu.js | 3 + .../AdminLTE/plugins/select2/i18n/id.js | 3 + .../AdminLTE/plugins/select2/i18n/is.js | 3 + .../AdminLTE/plugins/select2/i18n/it.js | 3 + .../AdminLTE/plugins/select2/i18n/ja.js | 3 + .../AdminLTE/plugins/select2/i18n/km.js | 3 + .../AdminLTE/plugins/select2/i18n/ko.js | 3 + .../AdminLTE/plugins/select2/i18n/lt.js | 3 + .../AdminLTE/plugins/select2/i18n/lv.js | 3 + .../AdminLTE/plugins/select2/i18n/mk.js | 3 + .../AdminLTE/plugins/select2/i18n/ms.js | 3 + .../AdminLTE/plugins/select2/i18n/nb.js | 3 + .../AdminLTE/plugins/select2/i18n/nl.js | 3 + .../AdminLTE/plugins/select2/i18n/pl.js | 3 + .../AdminLTE/plugins/select2/i18n/pt-BR.js | 3 + .../AdminLTE/plugins/select2/i18n/pt.js | 3 + .../AdminLTE/plugins/select2/i18n/ro.js | 3 + .../AdminLTE/plugins/select2/i18n/ru.js | 3 + .../AdminLTE/plugins/select2/i18n/sk.js | 3 + .../AdminLTE/plugins/select2/i18n/sr-Cyrl.js | 3 + .../AdminLTE/plugins/select2/i18n/sr.js | 3 + .../AdminLTE/plugins/select2/i18n/sv.js | 3 + .../AdminLTE/plugins/select2/i18n/th.js | 3 + .../AdminLTE/plugins/select2/i18n/tr.js | 3 + .../AdminLTE/plugins/select2/i18n/uk.js | 3 + .../AdminLTE/plugins/select2/i18n/vi.js | 3 + .../AdminLTE/plugins/select2/i18n/zh-CN.js | 3 + .../AdminLTE/plugins/select2/i18n/zh-TW.js | 3 + .../plugins/select2/select2.full.min.js | 3 + .../AdminLTE/plugins/select2/select2.min.css | 1 + .../slimScroll/jquery.slimscroll.min.js | 16 + .../dist/bootstrap-duallistbox.min.css | 10 + .../dist/jquery.bootstrap-duallistbox.min.js | 9 + .../bootstrap-fileinput/css/fileinput.min.css | 12 + .../bootstrap-fileinput/img/loading-sm.gif | Bin 0 -> 2670 bytes .../bootstrap-fileinput/img/loading.gif | Bin 0 -> 847 bytes .../bootstrap-fileinput/js/fileinput.min.js | 13 + .../js/plugins/canvas-to-blob.js | 95 + .../js/plugins/canvas-to-blob.min.js | 1 + .../bootstrap-fileinput/js/plugins/piexif.js | 2471 ++ .../js/plugins/piexif.min.js | 1 + .../bootstrap-fileinput/js/plugins/purify.js | 1009 + .../js/plugins/purify.min.js | 1 + .../js/plugins/sortable.js | 1590 + .../js/plugins/sortable.min.js | 1 + .../css/bootstrap3/bootstrap-switch.min.css | 22 + .../dist/js/bootstrap-switch.min.js | 22 + .../css/bootstrap-editable.css | 663 + .../bootstrap3-editable/img/clear.png | Bin 0 -> 509 bytes .../bootstrap3-editable/img/loading.gif | Bin 0 -> 1849 bytes .../js/bootstrap-editable.min.js | 7 + .../css/bootstrap-datetimepicker.min.css | 5 + .../build/js/bootstrap-datetimepicker.min.js | 9 + .../font-awesome/css/font-awesome.min.css | 4 + .../font-awesome/fonts/FontAwesome.otf | Bin 0 -> 134808 bytes .../fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../fonts/fontawesome-webfont.svg | 2671 ++ .../fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes .../fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes .../dist/css/fontawesome-iconpicker.min.css | 9 + .../dist/js/fontawesome-iconpicker.min.js | 1 + .../laravel-admin/google-fonts/fonts.css | 50 + .../fonts/Source-Sans-Pro-Bold.ttf | Bin 0 -> 34908 bytes .../fonts/Source-Sans-Pro-Bold.woff | Bin 0 -> 17264 bytes .../fonts/Source-Sans-Pro-Bold.woff2 | Bin 0 -> 13892 bytes .../fonts/Source-Sans-Pro-Italic.ttf | Bin 0 -> 33864 bytes .../fonts/Source-Sans-Pro-Italic.woff | Bin 0 -> 17288 bytes .../fonts/Source-Sans-Pro-Italic.woff2 | Bin 0 -> 13980 bytes .../fonts/Source-Sans-Pro-Light-Italic.ttf | Bin 0 -> 33996 bytes .../fonts/Source-Sans-Pro-Light-Italic.woff | Bin 0 -> 17304 bytes .../fonts/Source-Sans-Pro-Light-Italic.woff2 | Bin 0 -> 13772 bytes .../fonts/Source-Sans-Pro-Light.ttf | Bin 0 -> 35368 bytes .../fonts/Source-Sans-Pro-Light.woff | Bin 0 -> 17540 bytes .../fonts/Source-Sans-Pro-Light.woff2 | Bin 0 -> 14308 bytes .../fonts/Source-Sans-Pro-Semibold-Italic.ttf | Bin 0 -> 33592 bytes .../Source-Sans-Pro-Semibold-Italic.woff | Bin 0 -> 17168 bytes .../Source-Sans-Pro-Semibold-Italic.woff2 | Bin 0 -> 13716 bytes .../fonts/Source-Sans-Pro-Semibold.ttf | Bin 0 -> 34808 bytes .../fonts/Source-Sans-Pro-Semibold.woff | Bin 0 -> 17380 bytes .../fonts/Source-Sans-Pro-Semibold.woff2 | Bin 0 -> 13992 bytes .../google-fonts/fonts/Source-Sans-Pro.eot | Bin 0 -> 16229 bytes .../google-fonts/fonts/Source-Sans-Pro.svg | 345 + .../google-fonts/fonts/Source-Sans-Pro.ttf | Bin 0 -> 35064 bytes .../google-fonts/fonts/Source-Sans-Pro.woff | Bin 0 -> 17500 bytes .../google-fonts/fonts/Source-Sans-Pro.woff2 | Bin 0 -> 14308 bytes .../laravel-admin/jquery-pjax/jquery.pjax.js | 950 + .../laravel-admin/laravel-admin.css | 85 + .../laravel-admin/laravel-admin.js | 198 + .../moment/min/moment-with-locales.min.js | 80 + .../laravel-admin/nestable/jquery.nestable.js | 484 + .../laravel-admin/nestable/nestable.css | 34 + .../laravel-admin/nprogress/nprogress.css | 74 + .../laravel-admin/nprogress/nprogress.js | 476 + .../number-input/bootstrap-number-input.js | 88 + .../sweetalert2/dist/sweetalert2.css | 1145 + .../sweetalert2/dist/sweetalert2.min.js | 1 + .../laravel-admin/toastr/build/toastr.min.css | 1 + .../laravel-admin/toastr/build/toastr.min.js | 2 + .../vendor/ueditor/dialogs/anchor/anchor.html | 40 + .../ueditor/dialogs/attachment/attachment.css | 681 + .../dialogs/attachment/attachment.html | 60 + .../ueditor/dialogs/attachment/attachment.js | 754 + .../attachment/fileTypeImages/icon_chm.gif | Bin 0 -> 923 bytes .../fileTypeImages/icon_default.png | Bin 0 -> 841 bytes .../attachment/fileTypeImages/icon_doc.gif | Bin 0 -> 1012 bytes .../attachment/fileTypeImages/icon_exe.gif | Bin 0 -> 949 bytes .../attachment/fileTypeImages/icon_jpg.gif | Bin 0 -> 950 bytes .../attachment/fileTypeImages/icon_mp3.gif | Bin 0 -> 986 bytes .../attachment/fileTypeImages/icon_mv.gif | Bin 0 -> 1001 bytes .../attachment/fileTypeImages/icon_pdf.gif | Bin 0 -> 996 bytes .../attachment/fileTypeImages/icon_ppt.gif | Bin 0 -> 1001 bytes .../attachment/fileTypeImages/icon_psd.gif | Bin 0 -> 1009 bytes .../attachment/fileTypeImages/icon_rar.gif | Bin 0 -> 1007 bytes .../attachment/fileTypeImages/icon_txt.gif | Bin 0 -> 970 bytes .../attachment/fileTypeImages/icon_xls.gif | Bin 0 -> 1005 bytes .../dialogs/attachment/images/alignicon.gif | Bin 0 -> 1051 bytes .../dialogs/attachment/images/alignicon.png | Bin 0 -> 3714 bytes .../ueditor/dialogs/attachment/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/attachment/images/file-icons.gif | Bin 0 -> 20097 bytes .../dialogs/attachment/images/file-icons.png | Bin 0 -> 44070 bytes .../dialogs/attachment/images/icons.gif | Bin 0 -> 453 bytes .../dialogs/attachment/images/icons.png | Bin 0 -> 2678 bytes .../dialogs/attachment/images/image.png | Bin 0 -> 1672 bytes .../dialogs/attachment/images/progress.png | Bin 0 -> 1269 bytes .../dialogs/attachment/images/success.gif | Bin 0 -> 445 bytes .../dialogs/attachment/images/success.png | Bin 0 -> 1621 bytes .../ueditor/dialogs/background/background.css | 94 + .../dialogs/background/background.html | 56 + .../ueditor/dialogs/background/background.js | 376 + .../ueditor/dialogs/background/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/background/images/success.png | Bin 0 -> 1621 bytes .../ueditor/dialogs/charts/chart.config.js | 65 + .../vendor/ueditor/dialogs/charts/charts.css | 165 + .../vendor/ueditor/dialogs/charts/charts.html | 89 + .../vendor/ueditor/dialogs/charts/charts.js | 519 + .../ueditor/dialogs/charts/images/charts0.png | Bin 0 -> 25306 bytes .../ueditor/dialogs/charts/images/charts1.png | Bin 0 -> 19263 bytes .../ueditor/dialogs/charts/images/charts2.png | Bin 0 -> 23016 bytes .../ueditor/dialogs/charts/images/charts3.png | Bin 0 -> 7823 bytes .../ueditor/dialogs/charts/images/charts4.png | Bin 0 -> 8344 bytes .../ueditor/dialogs/charts/images/charts5.png | Bin 0 -> 47084 bytes .../ueditor/dialogs/emotion/emotion.css | 43 + .../ueditor/dialogs/emotion/emotion.html | 54 + .../vendor/ueditor/dialogs/emotion/emotion.js | 186 + .../ueditor/dialogs/emotion/images/0.gif | Bin 0 -> 43 bytes .../ueditor/dialogs/emotion/images/bface.gif | Bin 0 -> 27167 bytes .../ueditor/dialogs/emotion/images/cface.gif | Bin 0 -> 8603 bytes .../ueditor/dialogs/emotion/images/fface.gif | Bin 0 -> 18479 bytes .../dialogs/emotion/images/jxface2.gif | Bin 0 -> 40706 bytes .../emotion/images/neweditor-tab-bg.png | Bin 0 -> 216 bytes .../ueditor/dialogs/emotion/images/tface.gif | Bin 0 -> 19805 bytes .../ueditor/dialogs/emotion/images/wface.gif | Bin 0 -> 49850 bytes .../ueditor/dialogs/emotion/images/yface.gif | Bin 0 -> 28409 bytes public/vendor/ueditor/dialogs/gmap/gmap.html | 89 + public/vendor/ueditor/dialogs/help/help.css | 7 + public/vendor/ueditor/dialogs/help/help.html | 82 + public/vendor/ueditor/dialogs/help/help.js | 56 + public/vendor/ueditor/dialogs/image/image.css | 894 + .../vendor/ueditor/dialogs/image/image.html | 120 + public/vendor/ueditor/dialogs/image/image.js | 1139 + .../dialogs/image/images/alignicon.jpg | Bin 0 -> 16101 bytes .../ueditor/dialogs/image/images/bg.png | Bin 0 -> 2810 bytes .../ueditor/dialogs/image/images/icons.gif | Bin 0 -> 453 bytes .../ueditor/dialogs/image/images/icons.png | Bin 0 -> 2678 bytes .../ueditor/dialogs/image/images/image.png | Bin 0 -> 1672 bytes .../ueditor/dialogs/image/images/progress.png | Bin 0 -> 1269 bytes .../ueditor/dialogs/image/images/success.gif | Bin 0 -> 445 bytes .../ueditor/dialogs/image/images/success.png | Bin 0 -> 1621 bytes .../dialogs/insertframe/insertframe.html | 98 + public/vendor/ueditor/dialogs/internal.js | 81 + public/vendor/ueditor/dialogs/link/link.html | 126 + public/vendor/ueditor/dialogs/map/map.html | 135 + public/vendor/ueditor/dialogs/map/show.html | 118 + public/vendor/ueditor/dialogs/music/music.css | 30 + .../vendor/ueditor/dialogs/music/music.html | 32 + public/vendor/ueditor/dialogs/music/music.js | 192 + .../ueditor/dialogs/preview/preview.html | 40 + .../ueditor/dialogs/scrawl/images/addimg.png | Bin 0 -> 628 bytes .../ueditor/dialogs/scrawl/images/brush.png | Bin 0 -> 608 bytes .../ueditor/dialogs/scrawl/images/delimg.png | Bin 0 -> 516 bytes .../ueditor/dialogs/scrawl/images/delimgH.png | Bin 0 -> 578 bytes .../ueditor/dialogs/scrawl/images/empty.png | Bin 0 -> 519 bytes .../ueditor/dialogs/scrawl/images/emptyH.png | Bin 0 -> 657 bytes .../ueditor/dialogs/scrawl/images/eraser.png | Bin 0 -> 43271 bytes .../ueditor/dialogs/scrawl/images/redo.png | Bin 0 -> 454 bytes .../ueditor/dialogs/scrawl/images/redoH.png | Bin 0 -> 536 bytes .../ueditor/dialogs/scrawl/images/scale.png | Bin 0 -> 435 bytes .../ueditor/dialogs/scrawl/images/scaleH.png | Bin 0 -> 330 bytes .../ueditor/dialogs/scrawl/images/size.png | Bin 0 -> 775 bytes .../ueditor/dialogs/scrawl/images/undo.png | Bin 0 -> 444 bytes .../ueditor/dialogs/scrawl/images/undoH.png | Bin 0 -> 511 bytes .../vendor/ueditor/dialogs/scrawl/scrawl.css | 72 + .../vendor/ueditor/dialogs/scrawl/scrawl.html | 95 + .../vendor/ueditor/dialogs/scrawl/scrawl.js | 671 + .../dialogs/searchreplace/searchreplace.html | 102 + .../dialogs/searchreplace/searchreplace.js | 164 + .../dialogs/snapscreen/snapscreen.html | 58 + .../ueditor/dialogs/spechars/spechars.html | 21 + .../ueditor/dialogs/spechars/spechars.js | 57 + .../vendor/ueditor/dialogs/table/dragicon.png | Bin 0 -> 304 bytes .../ueditor/dialogs/table/edittable.css | 84 + .../ueditor/dialogs/table/edittable.html | 64 + .../vendor/ueditor/dialogs/table/edittable.js | 237 + .../vendor/ueditor/dialogs/table/edittd.html | 61 + .../vendor/ueditor/dialogs/table/edittip.html | 33 + .../vendor/ueditor/dialogs/template/config.js | 42 + .../ueditor/dialogs/template/images/bg.gif | Bin 0 -> 84 bytes .../ueditor/dialogs/template/images/pre0.png | Bin 0 -> 250 bytes .../ueditor/dialogs/template/images/pre1.png | Bin 0 -> 291 bytes .../ueditor/dialogs/template/images/pre2.png | Bin 0 -> 394 bytes .../ueditor/dialogs/template/images/pre3.png | Bin 0 -> 485 bytes .../ueditor/dialogs/template/images/pre4.png | Bin 0 -> 393 bytes .../ueditor/dialogs/template/template.css | 18 + .../ueditor/dialogs/template/template.html | 26 + .../ueditor/dialogs/template/template.js | 53 + .../ueditor/dialogs/video/images/bg.png | Bin 0 -> 2810 bytes .../dialogs/video/images/center_focus.jpg | Bin 0 -> 11795 bytes .../dialogs/video/images/file-icons.gif | Bin 0 -> 20097 bytes .../dialogs/video/images/file-icons.png | Bin 0 -> 44070 bytes .../ueditor/dialogs/video/images/icons.gif | Bin 0 -> 453 bytes .../ueditor/dialogs/video/images/icons.png | Bin 0 -> 2678 bytes .../ueditor/dialogs/video/images/image.png | Bin 0 -> 1672 bytes .../dialogs/video/images/left_focus.jpg | Bin 0 -> 11423 bytes .../dialogs/video/images/none_focus.jpg | Bin 0 -> 11546 bytes .../ueditor/dialogs/video/images/progress.png | Bin 0 -> 1269 bytes .../dialogs/video/images/right_focus.jpg | Bin 0 -> 11334 bytes .../ueditor/dialogs/video/images/success.gif | Bin 0 -> 445 bytes .../ueditor/dialogs/video/images/success.png | Bin 0 -> 1621 bytes public/vendor/ueditor/dialogs/video/video.css | 635 + .../vendor/ueditor/dialogs/video/video.html | 86 + public/vendor/ueditor/dialogs/video/video.js | 789 + .../vendor/ueditor/dialogs/webapp/webapp.html | 53 + .../dialogs/wordimage/fClipboard_ueditor.swf | Bin 0 -> 1908 bytes .../dialogs/wordimage/imageUploader.swf | Bin 0 -> 62857 bytes .../ueditor/dialogs/wordimage/tangram.js | 1495 + .../ueditor/dialogs/wordimage/wordimage.html | 111 + .../ueditor/dialogs/wordimage/wordimage.js | 157 + public/vendor/ueditor/index.html | 175 + public/vendor/ueditor/lang/en/en.js | 684 + .../ueditor/lang/en/images/addimage.png | Bin 0 -> 3373 bytes .../lang/en/images/alldeletebtnhoverskin.png | Bin 0 -> 743 bytes .../lang/en/images/alldeletebtnupskin.png | Bin 0 -> 743 bytes .../ueditor/lang/en/images/background.png | Bin 0 -> 3854 bytes .../vendor/ueditor/lang/en/images/button.png | Bin 0 -> 4929 bytes public/vendor/ueditor/lang/en/images/copy.png | Bin 0 -> 1222 bytes .../ueditor/lang/en/images/deletedisable.png | Bin 0 -> 649 bytes .../ueditor/lang/en/images/deleteenable.png | Bin 0 -> 664 bytes .../ueditor/lang/en/images/listbackground.png | Bin 0 -> 3750 bytes .../ueditor/lang/en/images/localimage.png | Bin 0 -> 3083 bytes .../vendor/ueditor/lang/en/images/music.png | Bin 0 -> 91561 bytes .../lang/en/images/rotateleftdisable.png | Bin 0 -> 719 bytes .../lang/en/images/rotateleftenable.png | Bin 0 -> 952 bytes .../lang/en/images/rotaterightdisable.png | Bin 0 -> 754 bytes .../lang/en/images/rotaterightenable.png | Bin 0 -> 1007 bytes .../vendor/ueditor/lang/en/images/upload.png | Bin 0 -> 3941 bytes .../vendor/ueditor/lang/zh-cn/images/copy.png | Bin 0 -> 4319 bytes .../ueditor/lang/zh-cn/images/localimage.png | Bin 0 -> 6979 bytes .../ueditor/lang/zh-cn/images/music.png | Bin 0 -> 23106 bytes .../ueditor/lang/zh-cn/images/upload.png | Bin 0 -> 6608 bytes public/vendor/ueditor/lang/zh-cn/zh-cn.js | 669 + .../ueditor/themes/default/css/ueditor.css | 1903 + .../themes/default/css/ueditor.min.css | 8 + .../ueditor/themes/default/dialogbase.css | 100 + .../ueditor/themes/default/images/anchor.gif | Bin 0 -> 184 bytes .../ueditor/themes/default/images/arrow.png | Bin 0 -> 1173 bytes .../themes/default/images/arrow_down.png | Bin 0 -> 1610 bytes .../themes/default/images/arrow_up.png | Bin 0 -> 1649 bytes .../themes/default/images/button-bg.gif | Bin 0 -> 1114 bytes .../themes/default/images/cancelbutton.gif | Bin 0 -> 1227 bytes .../ueditor/themes/default/images/charts.png | Bin 0 -> 518 bytes .../themes/default/images/cursor_h.gif | Bin 0 -> 253 bytes .../themes/default/images/cursor_h.png | Bin 0 -> 175 bytes .../themes/default/images/cursor_v.gif | Bin 0 -> 370 bytes .../themes/default/images/cursor_v.png | Bin 0 -> 177 bytes .../themes/default/images/dialog-title-bg.png | Bin 0 -> 938 bytes .../themes/default/images/filescan.png | Bin 0 -> 4282 bytes .../themes/default/images/highlighted.gif | Bin 0 -> 111 bytes .../themes/default/images/icons-all.gif | Bin 0 -> 3750 bytes .../ueditor/themes/default/images/icons.gif | Bin 0 -> 20947 bytes .../ueditor/themes/default/images/icons.png | Bin 0 -> 19694 bytes .../themes/default/images/loaderror.png | Bin 0 -> 3209 bytes .../ueditor/themes/default/images/loading.gif | Bin 0 -> 734 bytes .../ueditor/themes/default/images/lock.gif | Bin 0 -> 1062 bytes .../default/images/neweditor-tab-bg.png | Bin 0 -> 216 bytes .../themes/default/images/pagebreak.gif | Bin 0 -> 54 bytes .../ueditor/themes/default/images/scale.png | Bin 0 -> 167 bytes .../themes/default/images/sortable.png | Bin 0 -> 2851 bytes .../ueditor/themes/default/images/spacer.gif | Bin 0 -> 43 bytes .../themes/default/images/sparator_v.png | Bin 0 -> 122 bytes .../default/images/table-cell-align.png | Bin 0 -> 1847 bytes .../default/images/tangram-colorpicker.png | Bin 0 -> 17355 bytes .../themes/default/images/toolbar_bg.png | Bin 0 -> 170 bytes .../themes/default/images/unhighlighted.gif | Bin 0 -> 111 bytes .../ueditor/themes/default/images/upload.png | Bin 0 -> 6608 bytes .../themes/default/images/videologo.gif | Bin 0 -> 1604 bytes .../ueditor/themes/default/images/word.gif | Bin 0 -> 1019 bytes .../themes/default/images/wordpaste.png | Bin 0 -> 6467 bytes public/vendor/ueditor/themes/iframe.css | 1 + .../third-party/SyntaxHighlighter/shCore.js | 3655 ++ .../SyntaxHighlighter/shCoreDefault.css | 1 + .../third-party/codemirror/codemirror.css | 104 + .../third-party/codemirror/codemirror.js | 3581 ++ .../highcharts/adapters/mootools-adapter.js | 13 + .../adapters/mootools-adapter.src.js | 313 + .../highcharts/adapters/prototype-adapter.js | 15 + .../adapters/prototype-adapter.src.js | 316 + .../adapters/standalone-framework.js | 17 + .../adapters/standalone-framework.src.js | 583 + .../third-party/highcharts/highcharts-more.js | 50 + .../highcharts/highcharts-more.src.js | 2430 ++ .../third-party/highcharts/highcharts.js | 283 + .../third-party/highcharts/highcharts.src.js | 16974 +++++++++ .../highcharts/modules/annotations.js | 7 + .../highcharts/modules/annotations.src.js | 401 + .../highcharts/modules/canvas-tools.js | 133 + .../highcharts/modules/canvas-tools.src.js | 3113 ++ .../third-party/highcharts/modules/data.js | 17 + .../highcharts/modules/data.src.js | 582 + .../highcharts/modules/drilldown.js | 11 + .../highcharts/modules/drilldown.src.js | 447 + .../highcharts/modules/exporting.js | 22 + .../highcharts/modules/exporting.src.js | 709 + .../third-party/highcharts/modules/funnel.js | 12 + .../highcharts/modules/funnel.src.js | 289 + .../third-party/highcharts/modules/heatmap.js | 1 + .../highcharts/modules/heatmap.src.js | 53 + .../third-party/highcharts/modules/map.js | 27 + .../third-party/highcharts/modules/map.src.js | 1002 + .../highcharts/modules/no-data-to-display.js | 12 + .../modules/no-data-to-display.src.js | 128 + .../highcharts/themes/dark-blue.js | 254 + .../highcharts/themes/dark-green.js | 255 + .../third-party/highcharts/themes/gray.js | 257 + .../third-party/highcharts/themes/grid.js | 103 + .../third-party/highcharts/themes/skies.js | 89 + .../ueditor/third-party/jquery-1.10.2.js | 9789 +++++ .../ueditor/third-party/jquery-1.10.2.min.js | 6 + .../ueditor/third-party/jquery-1.10.2.min.map | 1 + .../snapscreen/UEditorSnapscreen.exe | Bin 0 -> 519936 bytes .../ueditor/third-party/video-js/font/vjs.eot | Bin 0 -> 3536 bytes .../ueditor/third-party/video-js/font/vjs.svg | 65 + .../ueditor/third-party/video-js/font/vjs.ttf | Bin 0 -> 3372 bytes .../third-party/video-js/font/vjs.woff | Bin 0 -> 4228 bytes .../ueditor/third-party/video-js/video-js.css | 766 + .../third-party/video-js/video-js.min.css | 5 + .../ueditor/third-party/video-js/video-js.swf | Bin 0 -> 16236 bytes .../ueditor/third-party/video-js/video.dev.js | 7108 ++++ .../ueditor/third-party/video-js/video.js | 129 + .../third-party/webuploader/Uploader.swf | Bin 0 -> 49382 bytes .../third-party/webuploader/webuploader.css | 28 + .../webuploader/webuploader.custom.js | 5670 +++ .../webuploader/webuploader.custom.min.js | 2 + .../webuploader/webuploader.flashonly.js | 4176 +++ .../webuploader/webuploader.flashonly.min.js | 2 + .../webuploader/webuploader.html5only.js | 5559 +++ .../webuploader/webuploader.html5only.min.js | 2 + .../third-party/webuploader/webuploader.js | 6733 ++++ .../webuploader/webuploader.min.js | 2 + .../webuploader/webuploader.withoutimage.js | 4593 +++ .../webuploader.withoutimage.min.js | 2 + .../zeroclipboard/ZeroClipboard.js | 1256 + .../zeroclipboard/ZeroClipboard.min.js | 9 + .../zeroclipboard/ZeroClipboard.swf | Bin 0 -> 3933 bytes public/vendor/ueditor/ueditor.all.js | 29431 ++++++++++++++++ public/vendor/ueditor/ueditor.all.min.js | 709 + public/vendor/ueditor/ueditor.config.js | 413 + public/vendor/ueditor/ueditor.parse.js | 1022 + public/vendor/ueditor/ueditor.parse.min.js | 28 + public/web.config | 28 + resources/css/app.css | 0 resources/js/app.js | 1 + resources/js/bootstrap.js | 28 + resources/js/setStock.js | 21 + resources/lang/ar/admin.php | 105 + resources/lang/az/admin.php | 102 + resources/lang/en/admin.php | 114 + resources/lang/en/auth.php | 20 + resources/lang/en/pagination.php | 19 + resources/lang/en/passwords.php | 22 + resources/lang/en/validation.php | 152 + resources/lang/es/admin.php | 90 + resources/lang/fa/admin.php | 102 + resources/lang/fr/admin.php | 102 + resources/lang/he/admin.php | 79 + resources/lang/id/admin.php | 106 + resources/lang/ja/admin.php | 102 + resources/lang/ko/admin.php | 104 + resources/lang/ms/admin.php | 102 + resources/lang/nl/admin.php | 107 + resources/lang/pl/admin.php | 78 + resources/lang/pt-BR/admin.php | 102 + resources/lang/pt/admin.php | 102 + resources/lang/ru.json | 618 + resources/lang/ru/admin.php | 107 + resources/lang/ru/auth.php | 18 + resources/lang/ru/pagination.php | 17 + resources/lang/ru/passwords.php | 20 + resources/lang/ru/validation-inline.php | 131 + resources/lang/ru/validation.php | 162 + resources/lang/tr/admin.php | 107 + resources/lang/uk/admin.php | 106 + resources/lang/ur/admin.php | 107 + resources/lang/vendor/ueditor/en/upload.php | 34 + .../lang/vendor/ueditor/zh_CN/upload.php | 31 + .../lang/vendor/ueditor/zh_TW/upload.php | 33 + resources/lang/zh_CN.json | 618 + resources/lang/zh_CN/admin.php | 124 + resources/lang/zh_CN/auth.php | 18 + resources/lang/zh_CN/pagination.php | 17 + resources/lang/zh_CN/passwords.php | 20 + resources/lang/zh_CN/validation-inline.php | 131 + resources/lang/zh_CN/validation.php | 161 + resources/lang/zh_TW.json | 618 + resources/lang/zh_TW/admin.php | 112 + resources/lang/zh_TW/auth.php | 18 + resources/lang/zh_TW/pagination.php | 17 + resources/lang/zh_TW/passwords.php | 20 + resources/lang/zh_TW/validation-inline.php | 131 + resources/lang/zh_TW/validation.php | 161 + resources/views/image.blade.php | 10 + .../views/vendor/ueditor/assets.blade.php | 7 + resources/views/welcome.blade.php | 132 + routes/api.php | 1 + routes/channels.php | 1 + routes/console.php | 1 + routes/laravel_admin_wechat.php | 26 + routes/web.php | 21 + server.php | 21 + storage/app/.gitignore | 3 + storage/app/public/.gitignore | 2 + storage/framework/.gitignore | 9 + storage/framework/cache/.gitignore | 3 + storage/framework/cache/data/.gitignore | 2 + storage/framework/sessions/.gitignore | 2 + storage/framework/testing/.gitignore | 2 + storage/framework/views/.gitignore | 2 + storage/logs/.gitignore | 2 + tests/CreatesApplication.php | 22 + tests/Feature/ExampleTest.php | 21 + tests/TestCase.php | 10 + tests/Unit/ExampleTest.php | 18 + webpack.mix.js | 17 + 791 files changed, 177427 insertions(+) create mode 100644 .editorconfig create mode 100644 .env.example create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .styleci.yml create mode 100644 README.md create mode 100644 app/Admin/Actions/LinkCreateAddress.php create mode 100644 app/Admin/Actions/LinkStockOrderDeliver.php create mode 100644 app/Admin/Actions/LinkVipOrderRefund.php create mode 100644 app/Admin/Controllers/AuthController.php create mode 100644 app/Admin/Controllers/HomeController.php create mode 100644 app/Admin/Controllers/LeadyController.php create mode 100644 app/Admin/Controllers/Material/IndexController.php create mode 100644 app/Admin/Controllers/ModuleController.php create mode 100644 app/Admin/Controllers/Platform/DashboardController.php create mode 100644 app/Admin/Controllers/Platform/ExperienceController.php create mode 100644 app/Admin/Controllers/Platform/VipController.php create mode 100644 app/Admin/Controllers/Platform/VipOrderController.php create mode 100644 app/Admin/Controllers/TestController.php create mode 100644 app/Admin/Extensions/CleanCache.php create mode 100644 app/Admin/Routes/material.php create mode 100644 app/Admin/Routes/modules.php create mode 100644 app/Admin/Routes/platform.php create mode 100644 app/Admin/Routes/test.php create mode 100644 app/Admin/Traits/WithUploads.php create mode 100644 app/Admin/bootstrap.php create mode 100644 app/Admin/routes.php create mode 100644 app/Api/Controllers/Controller.php create mode 100644 app/Api/Controllers/Data/IndexController.php create mode 100644 app/Api/Controllers/IndexController.php create mode 100644 app/Api/Controllers/Wechat/IndexController.php create mode 100644 app/Api/Resources/BaseCollection.php create mode 100644 app/Api/Resources/Order/OrderDataCollection.php create mode 100644 app/Api/Resources/User/UserBaseResource.php create mode 100644 app/Api/Resources/User/UserDataCollection.php create mode 100644 app/Api/Resources/User/UserDataResource.php create mode 100644 app/Api/Routes/data.php create mode 100644 app/Api/Routes/wechat.php create mode 100644 app/Api/WechatHandlers/EventMessageHandler.php create mode 100644 app/Api/WechatHandlers/FileMessageHandler.php create mode 100644 app/Api/WechatHandlers/ImageMessageHandler.php create mode 100644 app/Api/WechatHandlers/LinkMessageHandler.php create mode 100644 app/Api/WechatHandlers/LocationMessageHandler.php create mode 100644 app/Api/WechatHandlers/ShortVideoMessageHandler.php create mode 100644 app/Api/WechatHandlers/TextMessageHandler.php create mode 100644 app/Api/WechatHandlers/TransferMessageHandler.php create mode 100644 app/Api/WechatHandlers/VideoMessageHandler.php create mode 100644 app/Api/WechatHandlers/VoiceMessageHandler.php create mode 100644 app/Api/bootstrap.php create mode 100644 app/Api/routes.php create mode 100644 app/Bonus/IdentityBonus.php create mode 100644 app/Channels/WechatMiniChannel.php create mode 100644 app/Console/Commands/MonthPerfCommand.php create mode 100644 app/Console/Commands/StartBounsCommand.php create mode 100644 app/Console/Kernel.php create mode 100644 app/Exceptions/Handler.php create mode 100644 app/Http/Controllers/Controller.php create mode 100644 app/Http/Controllers/ImageController.php create mode 100644 app/Http/Kernel.php create mode 100644 app/Http/Middleware/Authenticate.php create mode 100644 app/Http/Middleware/EncryptCookies.php create mode 100644 app/Http/Middleware/PreventRequestsDuringMaintenance.php create mode 100644 app/Http/Middleware/RedirectIfAuthenticated.php create mode 100644 app/Http/Middleware/TrimStrings.php create mode 100644 app/Http/Middleware/TrustHosts.php create mode 100644 app/Http/Middleware/TrustProxies.php create mode 100644 app/Http/Middleware/VerifyCsrfToken.php create mode 100644 app/Jobs/Bonus/BuyIdentityJob.php create mode 100644 app/Jobs/Bonus/MonthPerfJob.php create mode 100644 app/Jobs/Bonus/SendBounsJob.php create mode 100644 app/Listeners/PaymentPaidListener.php create mode 100644 app/Listeners/UserOrderPaidListener.php create mode 100644 app/Models/Bouns.php create mode 100644 app/Models/BounsOrder.php create mode 100644 app/Models/BounsUserPerf.php create mode 100644 app/Models/Job.php create mode 100644 app/Models/Material.php create mode 100644 app/Models/Model.php create mode 100644 app/Models/Module.php create mode 100644 app/Notifications/SystemOpenVip.php create mode 100644 app/Notifications/SystemOrderDelivered.php create mode 100644 app/Notifications/SystemRemindUserSign.php create mode 100644 app/Notifications/SystemUpdateCase.php create mode 100644 app/Providers/AppServiceProvider.php create mode 100644 app/Providers/AuthServiceProvider.php create mode 100644 app/Providers/BroadcastServiceProvider.php create mode 100644 app/Providers/EventServiceProvider.php create mode 100644 app/Providers/RouteServiceProvider.php create mode 100644 app/Traits/HasClicks.php create mode 100644 app/Traits/HasCovers.php create mode 100644 app/Traits/HasStatus.php create mode 100644 app/Traits/Macroable.php create mode 100644 app/Traits/OrderByIdDesc.php create mode 100644 app/Traits/OrderByOrderAsc.php create mode 100644 app/Traits/WithPosition.php create mode 100644 artisan create mode 100644 bootstrap/app.php create mode 100644 bootstrap/cache/.gitignore create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/admin.php create mode 100644 config/agent.php create mode 100644 config/api.php create mode 100644 config/app.php create mode 100644 config/auth.php create mode 100644 config/broadcasting.php create mode 100644 config/cache.php create mode 100644 config/cors.php create mode 100644 config/database.php create mode 100644 config/favorite.php create mode 100644 config/filesystems.php create mode 100644 config/hashing.php create mode 100644 config/image.php create mode 100644 config/jwt.php create mode 100644 config/laravel-model-caching.php create mode 100644 config/logging.php create mode 100644 config/mail.php create mode 100644 config/modules.php create mode 100644 config/queue.php create mode 100644 config/services.php create mode 100644 config/session.php create mode 100644 config/subscribe.php create mode 100644 config/tencent_map.php create mode 100644 config/ueditor.php create mode 100644 config/versionable.php create mode 100644 config/view.php create mode 100644 config/wechat.php create mode 100644 config/withdraw.php create mode 100644 database/.gitignore create mode 100644 database/factories/UserFactory.php create mode 100644 database/migrations/2016_01_04_173148_create_admin_tables.php create mode 100644 database/migrations/2018_12_14_000000_create_favorites_table.php create mode 100644 database/migrations/2019_08_19_000000_create_failed_jobs_table.php create mode 100644 database/migrations/2020_04_09_000000_create_subscriptions_table.php create mode 100644 database/migrations/2021_08_06_104216_create_materials_table.php create mode 100644 database/migrations/2022_08_30_150338_create_bouns_table.php create mode 100644 database/migrations/2022_08_30_150355_create_bouns_orders_table.php create mode 100644 database/migrations/2022_09_26_153401_create_bouns_user_perves_table.php create mode 100644 database/seeders/AdminPanelSeeder.php create mode 100644 database/seeders/DatabaseSeeder.php create mode 100644 docs/READMD.md create mode 100644 docs/Trait doc.md create mode 100644 modules.json create mode 100644 modules/.gitignore create mode 100644 modules/Cms/.gitignore create mode 100644 modules/Cms/README.md create mode 100644 modules/Configuration/.gitignore create mode 100644 modules/Configuration/README.md create mode 100644 modules/Coupon/.gitignore create mode 100644 modules/Coupon/README.md create mode 100644 modules/Linker/.gitignore create mode 100644 modules/Linker/README.md create mode 100644 modules/Mall/.gitignore create mode 100644 modules/Mall/README.md create mode 100644 modules/Notification/README.md create mode 100644 modules/Payment/.gitignore create mode 100644 modules/Payment/README.md create mode 100644 modules/README.md create mode 100644 modules/Storage/.gitignore create mode 100644 modules/Storage/README.md create mode 100644 modules/User/.gitignore create mode 100644 modules/User/README.md create mode 100644 package.json create mode 100644 public/.htaccess create mode 100644 public/favicon.ico create mode 100644 public/index.php create mode 100644 public/robots.txt create mode 100644 public/vendor/js/setStock.js create mode 100644 public/vendor/laravel-admin/AdminLTE/bootstrap/css/bootstrap.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.eot create mode 100644 public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.svg create mode 100644 public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.ttf create mode 100644 public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.woff create mode 100644 public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.woff2 create mode 100644 public/vendor/laravel-admin/AdminLTE/bootstrap/js/bootstrap.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/AdminLTE.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/_all-skins.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-black-light.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-black.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-blue-light.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-blue.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-green-light.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-green.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-purple-light.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-purple.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-red-light.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-red.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-yellow-light.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-yellow.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/img/boxed-bg.jpg create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/img/boxed-bg.png create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/img/default-50x50.gif create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/img/icons.png create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/img/user2-160x160.jpg create mode 100644 public/vendor/laravel-admin/AdminLTE/dist/js/app.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/bootstrap-slider/bootstrap-slider.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/bootstrap-slider/slider.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/bootstrap-colorpicker.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/bootstrap-colorpicker.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/img/alpha-horizontal.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/img/alpha.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/img/hue-horizontal.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/img/hue.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/img/saturation.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/all.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/_all.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/aero.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/aero.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/aero@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/blue.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/blue.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/blue@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/flat.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/flat.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/flat@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/green.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/green.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/green@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/grey.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/grey.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/grey@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/orange.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/orange.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/orange@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/pink.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/pink.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/pink@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/purple.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/purple.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/purple@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/red.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/red.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/red@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/yellow.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/yellow.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/flat/yellow@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/futurico/futurico.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/futurico/futurico.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/futurico/futurico@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/icheck.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/_all.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/aero.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/blue.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/green.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/grey.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/line.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/line.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/line@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/orange.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/pink.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/purple.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/red.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/line/yellow.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/_all.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/aero.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/aero.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/aero@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/blue.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/blue.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/blue@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/green.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/green.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/green@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/grey.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/grey.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/grey@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/minimal.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/minimal.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/minimal@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/orange.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/orange.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/orange@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/pink.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/pink.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/pink@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/purple.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/purple.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/purple@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/red.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/red.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/red@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/yellow.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/yellow.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/minimal/yellow@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/polaris/polaris.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/polaris/polaris.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/polaris/polaris@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/_all.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/aero.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/aero.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/aero@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/blue.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/blue.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/blue@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/green.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/green.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/green@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/grey.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/grey.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/grey@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/orange.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/orange.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/orange@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/pink.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/pink.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/pink@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/purple.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/purple.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/purple@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/red.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/red.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/red@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/square.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/square.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/square@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/yellow.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/yellow.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/iCheck/square/yellow@2x.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/input-mask/jquery.inputmask.bundle.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/input-mask/phone-codes/phone-be.json create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/input-mask/phone-codes/phone-codes.json create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/input-mask/phone-codes/readme.txt create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/ionslider/img/sprite-skin-flat.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/ionslider/img/sprite-skin-nice.png create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/ionslider/ion.rangeSlider.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/ionslider/ion.rangeSlider.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/ionslider/ion.rangeSlider.skinFlat.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/ionslider/ion.rangeSlider.skinNice.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/jQuery/jQuery-2.1.4.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ar.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/az.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/bg.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ca.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/cs.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/da.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/de.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/el.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/en.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/es.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/et.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/eu.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/fa.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/fi.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/fr.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/gl.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/he.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/hi.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/hr.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/hu.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/id.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/is.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/it.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ja.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/km.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ko.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/lt.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/lv.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/mk.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ms.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/nb.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/nl.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/pl.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/pt-BR.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/pt.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ro.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/ru.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/sk.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/sr-Cyrl.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/sr.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/sv.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/th.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/tr.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/uk.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/vi.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/zh-CN.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/i18n/zh-TW.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/select2.full.min.js create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/select2/select2.min.css create mode 100644 public/vendor/laravel-admin/AdminLTE/plugins/slimScroll/jquery.slimscroll.min.js create mode 100644 public/vendor/laravel-admin/bootstrap-duallistbox/dist/bootstrap-duallistbox.min.css create mode 100644 public/vendor/laravel-admin/bootstrap-duallistbox/dist/jquery.bootstrap-duallistbox.min.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/css/fileinput.min.css create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/img/loading-sm.gif create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/img/loading.gif create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/fileinput.min.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/canvas-to-blob.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/canvas-to-blob.min.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/piexif.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/piexif.min.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/purify.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/purify.min.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/sortable.js create mode 100644 public/vendor/laravel-admin/bootstrap-fileinput/js/plugins/sortable.min.js create mode 100644 public/vendor/laravel-admin/bootstrap-switch/dist/css/bootstrap3/bootstrap-switch.min.css create mode 100644 public/vendor/laravel-admin/bootstrap-switch/dist/js/bootstrap-switch.min.js create mode 100644 public/vendor/laravel-admin/bootstrap3-editable/css/bootstrap-editable.css create mode 100644 public/vendor/laravel-admin/bootstrap3-editable/img/clear.png create mode 100644 public/vendor/laravel-admin/bootstrap3-editable/img/loading.gif create mode 100644 public/vendor/laravel-admin/bootstrap3-editable/js/bootstrap-editable.min.js create mode 100644 public/vendor/laravel-admin/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css create mode 100644 public/vendor/laravel-admin/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js create mode 100644 public/vendor/laravel-admin/font-awesome/css/font-awesome.min.css create mode 100644 public/vendor/laravel-admin/font-awesome/fonts/FontAwesome.otf create mode 100644 public/vendor/laravel-admin/font-awesome/fonts/fontawesome-webfont.eot create mode 100644 public/vendor/laravel-admin/font-awesome/fonts/fontawesome-webfont.svg create mode 100644 public/vendor/laravel-admin/font-awesome/fonts/fontawesome-webfont.ttf create mode 100644 public/vendor/laravel-admin/font-awesome/fonts/fontawesome-webfont.woff create mode 100644 public/vendor/laravel-admin/font-awesome/fonts/fontawesome-webfont.woff2 create mode 100644 public/vendor/laravel-admin/fontawesome-iconpicker/dist/css/fontawesome-iconpicker.min.css create mode 100644 public/vendor/laravel-admin/fontawesome-iconpicker/dist/js/fontawesome-iconpicker.min.js create mode 100644 public/vendor/laravel-admin/google-fonts/fonts.css create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Bold.ttf create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Bold.woff create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Bold.woff2 create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Italic.ttf create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Italic.woff create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Italic.woff2 create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Light-Italic.ttf create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Light-Italic.woff create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Light-Italic.woff2 create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Light.ttf create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Light.woff create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Light.woff2 create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Semibold-Italic.ttf create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Semibold-Italic.woff create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Semibold-Italic.woff2 create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Semibold.ttf create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Semibold.woff create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro-Semibold.woff2 create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro.eot create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro.svg create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro.ttf create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro.woff create mode 100644 public/vendor/laravel-admin/google-fonts/fonts/Source-Sans-Pro.woff2 create mode 100644 public/vendor/laravel-admin/jquery-pjax/jquery.pjax.js create mode 100644 public/vendor/laravel-admin/laravel-admin/laravel-admin.css create mode 100644 public/vendor/laravel-admin/laravel-admin/laravel-admin.js create mode 100644 public/vendor/laravel-admin/moment/min/moment-with-locales.min.js create mode 100644 public/vendor/laravel-admin/nestable/jquery.nestable.js create mode 100644 public/vendor/laravel-admin/nestable/nestable.css create mode 100644 public/vendor/laravel-admin/nprogress/nprogress.css create mode 100644 public/vendor/laravel-admin/nprogress/nprogress.js create mode 100644 public/vendor/laravel-admin/number-input/bootstrap-number-input.js create mode 100644 public/vendor/laravel-admin/sweetalert2/dist/sweetalert2.css create mode 100644 public/vendor/laravel-admin/sweetalert2/dist/sweetalert2.min.js create mode 100644 public/vendor/laravel-admin/toastr/build/toastr.min.css create mode 100644 public/vendor/laravel-admin/toastr/build/toastr.min.js create mode 100644 public/vendor/ueditor/dialogs/anchor/anchor.html create mode 100644 public/vendor/ueditor/dialogs/attachment/attachment.css create mode 100644 public/vendor/ueditor/dialogs/attachment/attachment.html create mode 100644 public/vendor/ueditor/dialogs/attachment/attachment.js create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_chm.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_default.png create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_doc.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_exe.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_jpg.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_mp3.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_mv.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_pdf.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_ppt.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_psd.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_rar.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_txt.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/fileTypeImages/icon_xls.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/images/alignicon.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/images/alignicon.png create mode 100644 public/vendor/ueditor/dialogs/attachment/images/bg.png create mode 100644 public/vendor/ueditor/dialogs/attachment/images/file-icons.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/images/file-icons.png create mode 100644 public/vendor/ueditor/dialogs/attachment/images/icons.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/images/icons.png create mode 100644 public/vendor/ueditor/dialogs/attachment/images/image.png create mode 100644 public/vendor/ueditor/dialogs/attachment/images/progress.png create mode 100644 public/vendor/ueditor/dialogs/attachment/images/success.gif create mode 100644 public/vendor/ueditor/dialogs/attachment/images/success.png create mode 100644 public/vendor/ueditor/dialogs/background/background.css create mode 100644 public/vendor/ueditor/dialogs/background/background.html create mode 100644 public/vendor/ueditor/dialogs/background/background.js create mode 100644 public/vendor/ueditor/dialogs/background/images/bg.png create mode 100644 public/vendor/ueditor/dialogs/background/images/success.png create mode 100644 public/vendor/ueditor/dialogs/charts/chart.config.js create mode 100644 public/vendor/ueditor/dialogs/charts/charts.css create mode 100644 public/vendor/ueditor/dialogs/charts/charts.html create mode 100644 public/vendor/ueditor/dialogs/charts/charts.js create mode 100644 public/vendor/ueditor/dialogs/charts/images/charts0.png create mode 100644 public/vendor/ueditor/dialogs/charts/images/charts1.png create mode 100644 public/vendor/ueditor/dialogs/charts/images/charts2.png create mode 100644 public/vendor/ueditor/dialogs/charts/images/charts3.png create mode 100644 public/vendor/ueditor/dialogs/charts/images/charts4.png create mode 100644 public/vendor/ueditor/dialogs/charts/images/charts5.png create mode 100644 public/vendor/ueditor/dialogs/emotion/emotion.css create mode 100644 public/vendor/ueditor/dialogs/emotion/emotion.html create mode 100644 public/vendor/ueditor/dialogs/emotion/emotion.js create mode 100644 public/vendor/ueditor/dialogs/emotion/images/0.gif create mode 100644 public/vendor/ueditor/dialogs/emotion/images/bface.gif create mode 100644 public/vendor/ueditor/dialogs/emotion/images/cface.gif create mode 100644 public/vendor/ueditor/dialogs/emotion/images/fface.gif create mode 100644 public/vendor/ueditor/dialogs/emotion/images/jxface2.gif create mode 100644 public/vendor/ueditor/dialogs/emotion/images/neweditor-tab-bg.png create mode 100644 public/vendor/ueditor/dialogs/emotion/images/tface.gif create mode 100644 public/vendor/ueditor/dialogs/emotion/images/wface.gif create mode 100644 public/vendor/ueditor/dialogs/emotion/images/yface.gif create mode 100644 public/vendor/ueditor/dialogs/gmap/gmap.html create mode 100644 public/vendor/ueditor/dialogs/help/help.css create mode 100644 public/vendor/ueditor/dialogs/help/help.html create mode 100644 public/vendor/ueditor/dialogs/help/help.js create mode 100644 public/vendor/ueditor/dialogs/image/image.css create mode 100644 public/vendor/ueditor/dialogs/image/image.html create mode 100644 public/vendor/ueditor/dialogs/image/image.js create mode 100644 public/vendor/ueditor/dialogs/image/images/alignicon.jpg create mode 100644 public/vendor/ueditor/dialogs/image/images/bg.png create mode 100644 public/vendor/ueditor/dialogs/image/images/icons.gif create mode 100644 public/vendor/ueditor/dialogs/image/images/icons.png create mode 100644 public/vendor/ueditor/dialogs/image/images/image.png create mode 100644 public/vendor/ueditor/dialogs/image/images/progress.png create mode 100644 public/vendor/ueditor/dialogs/image/images/success.gif create mode 100644 public/vendor/ueditor/dialogs/image/images/success.png create mode 100644 public/vendor/ueditor/dialogs/insertframe/insertframe.html create mode 100644 public/vendor/ueditor/dialogs/internal.js create mode 100644 public/vendor/ueditor/dialogs/link/link.html create mode 100644 public/vendor/ueditor/dialogs/map/map.html create mode 100644 public/vendor/ueditor/dialogs/map/show.html create mode 100644 public/vendor/ueditor/dialogs/music/music.css create mode 100644 public/vendor/ueditor/dialogs/music/music.html create mode 100644 public/vendor/ueditor/dialogs/music/music.js create mode 100644 public/vendor/ueditor/dialogs/preview/preview.html create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/addimg.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/brush.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/delimg.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/delimgH.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/empty.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/emptyH.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/eraser.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/redo.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/redoH.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/scale.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/scaleH.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/size.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/undo.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/images/undoH.png create mode 100644 public/vendor/ueditor/dialogs/scrawl/scrawl.css create mode 100644 public/vendor/ueditor/dialogs/scrawl/scrawl.html create mode 100644 public/vendor/ueditor/dialogs/scrawl/scrawl.js create mode 100644 public/vendor/ueditor/dialogs/searchreplace/searchreplace.html create mode 100644 public/vendor/ueditor/dialogs/searchreplace/searchreplace.js create mode 100644 public/vendor/ueditor/dialogs/snapscreen/snapscreen.html create mode 100644 public/vendor/ueditor/dialogs/spechars/spechars.html create mode 100644 public/vendor/ueditor/dialogs/spechars/spechars.js create mode 100644 public/vendor/ueditor/dialogs/table/dragicon.png create mode 100644 public/vendor/ueditor/dialogs/table/edittable.css create mode 100644 public/vendor/ueditor/dialogs/table/edittable.html create mode 100644 public/vendor/ueditor/dialogs/table/edittable.js create mode 100644 public/vendor/ueditor/dialogs/table/edittd.html create mode 100644 public/vendor/ueditor/dialogs/table/edittip.html create mode 100644 public/vendor/ueditor/dialogs/template/config.js create mode 100644 public/vendor/ueditor/dialogs/template/images/bg.gif create mode 100644 public/vendor/ueditor/dialogs/template/images/pre0.png create mode 100644 public/vendor/ueditor/dialogs/template/images/pre1.png create mode 100644 public/vendor/ueditor/dialogs/template/images/pre2.png create mode 100644 public/vendor/ueditor/dialogs/template/images/pre3.png create mode 100644 public/vendor/ueditor/dialogs/template/images/pre4.png create mode 100644 public/vendor/ueditor/dialogs/template/template.css create mode 100644 public/vendor/ueditor/dialogs/template/template.html create mode 100644 public/vendor/ueditor/dialogs/template/template.js create mode 100644 public/vendor/ueditor/dialogs/video/images/bg.png create mode 100644 public/vendor/ueditor/dialogs/video/images/center_focus.jpg create mode 100644 public/vendor/ueditor/dialogs/video/images/file-icons.gif create mode 100644 public/vendor/ueditor/dialogs/video/images/file-icons.png create mode 100644 public/vendor/ueditor/dialogs/video/images/icons.gif create mode 100644 public/vendor/ueditor/dialogs/video/images/icons.png create mode 100644 public/vendor/ueditor/dialogs/video/images/image.png create mode 100644 public/vendor/ueditor/dialogs/video/images/left_focus.jpg create mode 100644 public/vendor/ueditor/dialogs/video/images/none_focus.jpg create mode 100644 public/vendor/ueditor/dialogs/video/images/progress.png create mode 100644 public/vendor/ueditor/dialogs/video/images/right_focus.jpg create mode 100644 public/vendor/ueditor/dialogs/video/images/success.gif create mode 100644 public/vendor/ueditor/dialogs/video/images/success.png create mode 100644 public/vendor/ueditor/dialogs/video/video.css create mode 100644 public/vendor/ueditor/dialogs/video/video.html create mode 100644 public/vendor/ueditor/dialogs/video/video.js create mode 100644 public/vendor/ueditor/dialogs/webapp/webapp.html create mode 100644 public/vendor/ueditor/dialogs/wordimage/fClipboard_ueditor.swf create mode 100644 public/vendor/ueditor/dialogs/wordimage/imageUploader.swf create mode 100644 public/vendor/ueditor/dialogs/wordimage/tangram.js create mode 100644 public/vendor/ueditor/dialogs/wordimage/wordimage.html create mode 100644 public/vendor/ueditor/dialogs/wordimage/wordimage.js create mode 100644 public/vendor/ueditor/index.html create mode 100644 public/vendor/ueditor/lang/en/en.js create mode 100644 public/vendor/ueditor/lang/en/images/addimage.png create mode 100644 public/vendor/ueditor/lang/en/images/alldeletebtnhoverskin.png create mode 100644 public/vendor/ueditor/lang/en/images/alldeletebtnupskin.png create mode 100644 public/vendor/ueditor/lang/en/images/background.png create mode 100644 public/vendor/ueditor/lang/en/images/button.png create mode 100644 public/vendor/ueditor/lang/en/images/copy.png create mode 100644 public/vendor/ueditor/lang/en/images/deletedisable.png create mode 100644 public/vendor/ueditor/lang/en/images/deleteenable.png create mode 100644 public/vendor/ueditor/lang/en/images/listbackground.png create mode 100644 public/vendor/ueditor/lang/en/images/localimage.png create mode 100644 public/vendor/ueditor/lang/en/images/music.png create mode 100644 public/vendor/ueditor/lang/en/images/rotateleftdisable.png create mode 100644 public/vendor/ueditor/lang/en/images/rotateleftenable.png create mode 100644 public/vendor/ueditor/lang/en/images/rotaterightdisable.png create mode 100644 public/vendor/ueditor/lang/en/images/rotaterightenable.png create mode 100644 public/vendor/ueditor/lang/en/images/upload.png create mode 100644 public/vendor/ueditor/lang/zh-cn/images/copy.png create mode 100644 public/vendor/ueditor/lang/zh-cn/images/localimage.png create mode 100644 public/vendor/ueditor/lang/zh-cn/images/music.png create mode 100644 public/vendor/ueditor/lang/zh-cn/images/upload.png create mode 100644 public/vendor/ueditor/lang/zh-cn/zh-cn.js create mode 100644 public/vendor/ueditor/themes/default/css/ueditor.css create mode 100644 public/vendor/ueditor/themes/default/css/ueditor.min.css create mode 100644 public/vendor/ueditor/themes/default/dialogbase.css create mode 100644 public/vendor/ueditor/themes/default/images/anchor.gif create mode 100644 public/vendor/ueditor/themes/default/images/arrow.png create mode 100644 public/vendor/ueditor/themes/default/images/arrow_down.png create mode 100644 public/vendor/ueditor/themes/default/images/arrow_up.png create mode 100644 public/vendor/ueditor/themes/default/images/button-bg.gif create mode 100644 public/vendor/ueditor/themes/default/images/cancelbutton.gif create mode 100644 public/vendor/ueditor/themes/default/images/charts.png create mode 100644 public/vendor/ueditor/themes/default/images/cursor_h.gif create mode 100644 public/vendor/ueditor/themes/default/images/cursor_h.png create mode 100644 public/vendor/ueditor/themes/default/images/cursor_v.gif create mode 100644 public/vendor/ueditor/themes/default/images/cursor_v.png create mode 100644 public/vendor/ueditor/themes/default/images/dialog-title-bg.png create mode 100644 public/vendor/ueditor/themes/default/images/filescan.png create mode 100644 public/vendor/ueditor/themes/default/images/highlighted.gif create mode 100644 public/vendor/ueditor/themes/default/images/icons-all.gif create mode 100644 public/vendor/ueditor/themes/default/images/icons.gif create mode 100644 public/vendor/ueditor/themes/default/images/icons.png create mode 100644 public/vendor/ueditor/themes/default/images/loaderror.png create mode 100644 public/vendor/ueditor/themes/default/images/loading.gif create mode 100644 public/vendor/ueditor/themes/default/images/lock.gif create mode 100644 public/vendor/ueditor/themes/default/images/neweditor-tab-bg.png create mode 100644 public/vendor/ueditor/themes/default/images/pagebreak.gif create mode 100644 public/vendor/ueditor/themes/default/images/scale.png create mode 100644 public/vendor/ueditor/themes/default/images/sortable.png create mode 100644 public/vendor/ueditor/themes/default/images/spacer.gif create mode 100644 public/vendor/ueditor/themes/default/images/sparator_v.png create mode 100644 public/vendor/ueditor/themes/default/images/table-cell-align.png create mode 100644 public/vendor/ueditor/themes/default/images/tangram-colorpicker.png create mode 100644 public/vendor/ueditor/themes/default/images/toolbar_bg.png create mode 100644 public/vendor/ueditor/themes/default/images/unhighlighted.gif create mode 100644 public/vendor/ueditor/themes/default/images/upload.png create mode 100644 public/vendor/ueditor/themes/default/images/videologo.gif create mode 100644 public/vendor/ueditor/themes/default/images/word.gif create mode 100644 public/vendor/ueditor/themes/default/images/wordpaste.png create mode 100644 public/vendor/ueditor/themes/iframe.css create mode 100644 public/vendor/ueditor/third-party/SyntaxHighlighter/shCore.js create mode 100644 public/vendor/ueditor/third-party/SyntaxHighlighter/shCoreDefault.css create mode 100644 public/vendor/ueditor/third-party/codemirror/codemirror.css create mode 100644 public/vendor/ueditor/third-party/codemirror/codemirror.js create mode 100644 public/vendor/ueditor/third-party/highcharts/adapters/mootools-adapter.js create mode 100644 public/vendor/ueditor/third-party/highcharts/adapters/mootools-adapter.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/adapters/prototype-adapter.js create mode 100644 public/vendor/ueditor/third-party/highcharts/adapters/prototype-adapter.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/adapters/standalone-framework.js create mode 100644 public/vendor/ueditor/third-party/highcharts/adapters/standalone-framework.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/highcharts-more.js create mode 100644 public/vendor/ueditor/third-party/highcharts/highcharts-more.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/highcharts.js create mode 100644 public/vendor/ueditor/third-party/highcharts/highcharts.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/annotations.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/annotations.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/canvas-tools.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/canvas-tools.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/data.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/data.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/drilldown.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/drilldown.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/exporting.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/exporting.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/funnel.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/funnel.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/heatmap.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/heatmap.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/map.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/map.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/no-data-to-display.js create mode 100644 public/vendor/ueditor/third-party/highcharts/modules/no-data-to-display.src.js create mode 100644 public/vendor/ueditor/third-party/highcharts/themes/dark-blue.js create mode 100644 public/vendor/ueditor/third-party/highcharts/themes/dark-green.js create mode 100644 public/vendor/ueditor/third-party/highcharts/themes/gray.js create mode 100644 public/vendor/ueditor/third-party/highcharts/themes/grid.js create mode 100644 public/vendor/ueditor/third-party/highcharts/themes/skies.js create mode 100644 public/vendor/ueditor/third-party/jquery-1.10.2.js create mode 100644 public/vendor/ueditor/third-party/jquery-1.10.2.min.js create mode 100644 public/vendor/ueditor/third-party/jquery-1.10.2.min.map create mode 100644 public/vendor/ueditor/third-party/snapscreen/UEditorSnapscreen.exe create mode 100644 public/vendor/ueditor/third-party/video-js/font/vjs.eot create mode 100644 public/vendor/ueditor/third-party/video-js/font/vjs.svg create mode 100644 public/vendor/ueditor/third-party/video-js/font/vjs.ttf create mode 100644 public/vendor/ueditor/third-party/video-js/font/vjs.woff create mode 100644 public/vendor/ueditor/third-party/video-js/video-js.css create mode 100644 public/vendor/ueditor/third-party/video-js/video-js.min.css create mode 100644 public/vendor/ueditor/third-party/video-js/video-js.swf create mode 100644 public/vendor/ueditor/third-party/video-js/video.dev.js create mode 100644 public/vendor/ueditor/third-party/video-js/video.js create mode 100644 public/vendor/ueditor/third-party/webuploader/Uploader.swf create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.css create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.custom.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.custom.min.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.flashonly.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.flashonly.min.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.html5only.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.html5only.min.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.min.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.withoutimage.js create mode 100644 public/vendor/ueditor/third-party/webuploader/webuploader.withoutimage.min.js create mode 100644 public/vendor/ueditor/third-party/zeroclipboard/ZeroClipboard.js create mode 100644 public/vendor/ueditor/third-party/zeroclipboard/ZeroClipboard.min.js create mode 100644 public/vendor/ueditor/third-party/zeroclipboard/ZeroClipboard.swf create mode 100644 public/vendor/ueditor/ueditor.all.js create mode 100644 public/vendor/ueditor/ueditor.all.min.js create mode 100644 public/vendor/ueditor/ueditor.config.js create mode 100644 public/vendor/ueditor/ueditor.parse.js create mode 100644 public/vendor/ueditor/ueditor.parse.min.js create mode 100644 public/web.config create mode 100644 resources/css/app.css create mode 100644 resources/js/app.js create mode 100644 resources/js/bootstrap.js create mode 100644 resources/js/setStock.js create mode 100644 resources/lang/ar/admin.php create mode 100644 resources/lang/az/admin.php create mode 100644 resources/lang/en/admin.php create mode 100644 resources/lang/en/auth.php create mode 100644 resources/lang/en/pagination.php create mode 100644 resources/lang/en/passwords.php create mode 100644 resources/lang/en/validation.php create mode 100644 resources/lang/es/admin.php create mode 100644 resources/lang/fa/admin.php create mode 100644 resources/lang/fr/admin.php create mode 100644 resources/lang/he/admin.php create mode 100644 resources/lang/id/admin.php create mode 100644 resources/lang/ja/admin.php create mode 100644 resources/lang/ko/admin.php create mode 100644 resources/lang/ms/admin.php create mode 100644 resources/lang/nl/admin.php create mode 100644 resources/lang/pl/admin.php create mode 100644 resources/lang/pt-BR/admin.php create mode 100644 resources/lang/pt/admin.php create mode 100644 resources/lang/ru.json create mode 100644 resources/lang/ru/admin.php create mode 100644 resources/lang/ru/auth.php create mode 100644 resources/lang/ru/pagination.php create mode 100644 resources/lang/ru/passwords.php create mode 100644 resources/lang/ru/validation-inline.php create mode 100644 resources/lang/ru/validation.php create mode 100644 resources/lang/tr/admin.php create mode 100644 resources/lang/uk/admin.php create mode 100644 resources/lang/ur/admin.php create mode 100644 resources/lang/vendor/ueditor/en/upload.php create mode 100644 resources/lang/vendor/ueditor/zh_CN/upload.php create mode 100644 resources/lang/vendor/ueditor/zh_TW/upload.php create mode 100644 resources/lang/zh_CN.json create mode 100644 resources/lang/zh_CN/admin.php create mode 100644 resources/lang/zh_CN/auth.php create mode 100644 resources/lang/zh_CN/pagination.php create mode 100644 resources/lang/zh_CN/passwords.php create mode 100644 resources/lang/zh_CN/validation-inline.php create mode 100644 resources/lang/zh_CN/validation.php create mode 100644 resources/lang/zh_TW.json create mode 100644 resources/lang/zh_TW/admin.php create mode 100644 resources/lang/zh_TW/auth.php create mode 100644 resources/lang/zh_TW/pagination.php create mode 100644 resources/lang/zh_TW/passwords.php create mode 100644 resources/lang/zh_TW/validation-inline.php create mode 100644 resources/lang/zh_TW/validation.php create mode 100644 resources/views/image.blade.php create mode 100644 resources/views/vendor/ueditor/assets.blade.php create mode 100644 resources/views/welcome.blade.php create mode 100644 routes/api.php create mode 100644 routes/channels.php create mode 100644 routes/console.php create mode 100644 routes/laravel_admin_wechat.php create mode 100644 routes/web.php create mode 100644 server.php create mode 100644 storage/app/.gitignore create mode 100644 storage/app/public/.gitignore create mode 100644 storage/framework/.gitignore create mode 100644 storage/framework/cache/.gitignore create mode 100644 storage/framework/cache/data/.gitignore create mode 100644 storage/framework/sessions/.gitignore create mode 100644 storage/framework/testing/.gitignore create mode 100644 storage/framework/views/.gitignore create mode 100644 storage/logs/.gitignore create mode 100644 tests/CreatesApplication.php create mode 100644 tests/Feature/ExampleTest.php create mode 100644 tests/TestCase.php create mode 100644 tests/Unit/ExampleTest.php create mode 100644 webpack.mix.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6537ca4 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..0a3f574 --- /dev/null +++ b/.env.example @@ -0,0 +1,37 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +LOG_CHANNEL=stack +LOG_LEVEL=debug + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=laravel +DB_USERNAME=root +DB_PASSWORD= + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +MEMCACHED_HOST=127.0.0.1 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 +REDIS_DB=1 +REDIS_CACHE_DB=1 + +FILESYSTEM_DRIVER=public +OSS_ACCESS_KEY= +OSS_SECRET_KEY= +OSS_ENDPOINT= +OSS_BUCKET= +OSS_IS_CNAME=false +OSS_CDN_HOST= diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..967315d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +* text=auto +*.css linguist-vendored +*.scss linguist-vendored +*.js linguist-vendored +CHANGELOG.md export-ignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4f1aa71 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +/node_modules +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.phpunit.result.cache +docker-compose.override.yml +Homestead.json +Homestead.yaml +npm-debug.log +yarn-error.log +.idea +.DS_Store \ No newline at end of file diff --git a/.styleci.yml b/.styleci.yml new file mode 100644 index 0000000..9231873 --- /dev/null +++ b/.styleci.yml @@ -0,0 +1,13 @@ +php: + preset: laravel + disabled: + - no_unused_imports + finder: + not-name: + - index.php + - server.php +js: + finder: + not-name: + - webpack.mix.js +css: true diff --git a/README.md b/README.md new file mode 100644 index 0000000..7fdc34a --- /dev/null +++ b/README.md @@ -0,0 +1,122 @@ +

+ +# UzTech.Laravel + +> Jason.Chen , 为了构建一个健壮的底层。 + +[TOC] + +## 1.安装 + +```shell +git pull http://git.yuzhankeji.cn/UzTech/laravel.git +``` + +```shell +# 生成 laravel 密钥 +php artisan key:generate --ansi + +# 数据库迁移 +php artisan migrate + +# 数据填充 +php artisan db:seed --class=AdminPanelSeeder + +# api 密钥 +php artisan jwt:secret +``` + +手动导入 initial.sql 后台数据基础文件 + +## 包含的基础组件 + +> OSS文件管理包 +> +> "jasonc/flysystem-oss": "^2.0" +> +> 模块化工具 +> +> "nwidart/laravel-modules": "^8.2" +> +> 模块安装工具 +> +> "joshbrw/laravel-module-installer": "^2.0" +> +> API 管理工具 +> +> "jasonc/api": "^3.3" +> +> 后台模板 +> +> "encore/laravel-admin": "^1.8" + +## 模块安装 + +> 模块安装完毕之后,要执行 composer dump-autoload + +### 1. + +## 模块开发 + +### 1. 创建新模块 + +```shell + +php artisan make:module ModuleName + +``` + +### 2. 模块目录的一些规范 + +``` +modules/ + ├── Blog/ + ├── Config/ 配置目录,使用 Config::get('module_name.') 调用 + ├── Console/ 控制台命令 + ├── Kernel.php 执行定时任务 + ├── Database/ 数据库 + ├── Migrations/ 数据表单迁移 + ├── Seeders/ 数据填充文件 + ├── Events/ 事件目录 + ├── Http/ + ├── Controllers/ 控制器 + ├── Admin/ + ├── Api/ + ├── Middleware/ 中间件目录 + ├── Requests/ 请求验证 + ├── Resources API接口资源 + ├── Jobs/ 队列 + ├── Listeners/ 监听器 + ├── Models/ 模型 + ├── Traits/ 模块内部模型使用的traits + ├── Providers/ + ├── BlogServiceProvider.php + ├── RouteServiceProvider.php + ├── Resources/ 静态资源目录 + ├── assets/ + ├── js/ + ├── app.js + ├── sass/ + ├── app.scss + ├── lang/ + ├── views/ + ├── Routes/ 路由 + ├── admin.php + ├── api.php + ├── Service/ 内部服务 + ├── Traits/ 对外的traits + ├── composer.json + ├── module.json + ├── README.md +``` +### 3. 定时任务相关说明 + +``` +定时任务命令在ServiceProvider中加载 +if ($this->app->runningInConsole()) { + $this->commands([]); +} +定时任务的执行 +在模型文件夹 Console 建立 Kernel 类,类中 runCommand 执行定时任务 +$schedule->command(**)->everyMinute(); +``` \ No newline at end of file diff --git a/app/Admin/Actions/LinkCreateAddress.php b/app/Admin/Actions/LinkCreateAddress.php new file mode 100644 index 0000000..3ee916a --- /dev/null +++ b/app/Admin/Actions/LinkCreateAddress.php @@ -0,0 +1,20 @@ +row->id); + } + +} \ No newline at end of file diff --git a/app/Admin/Actions/LinkStockOrderDeliver.php b/app/Admin/Actions/LinkStockOrderDeliver.php new file mode 100644 index 0000000..bd5f1ec --- /dev/null +++ b/app/Admin/Actions/LinkStockOrderDeliver.php @@ -0,0 +1,20 @@ +row->user->id); + } + +} \ No newline at end of file diff --git a/app/Admin/Actions/LinkVipOrderRefund.php b/app/Admin/Actions/LinkVipOrderRefund.php new file mode 100644 index 0000000..eecadb1 --- /dev/null +++ b/app/Admin/Actions/LinkVipOrderRefund.php @@ -0,0 +1,20 @@ +row->user->username); + } + +} \ No newline at end of file diff --git a/app/Admin/Controllers/AuthController.php b/app/Admin/Controllers/AuthController.php new file mode 100644 index 0000000..3488577 --- /dev/null +++ b/app/Admin/Controllers/AuthController.php @@ -0,0 +1,10 @@ + + * @param Content $content + * @return Content + */ + public function index(Content $content) + { + $this->content = $content->title('数据看板')->description('Description...'); + $admin = Admin::user(); + if ($admin->id == 1) { + $this->getUserData(); + $this->getUserStockData(); + $this->getUserStockOrderData(); + } else { + $this->content->row($this->setDivider('您没有权限查看数据')); + } + + return $this->content; + } + + /** + * Notes: 获取用户数据 + * + * @Author: 玄尘 + * @Date : 2021/11/17 11:24 + */ + public function getUserData() + { + $this->content->row($this->setDivider('用户统计')); + + $users = [ + 'all' => [ + 'name' => '用户总数', + 'color' => 'blue', + 'count' => User::count() + ], + 'ty' => [ + 'name' => '月卡', + 'color' => 'green', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', 2); + })->count() + ], + 'jk' => [ + 'name' => '季卡用户数', + 'color' => 'red', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', 3); + })->count() + ], + 'nk' => [ + 'name' => '年卡用户数', + 'color' => 'yellow', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', 4); + })->count(), + ], + ]; + + $this->content->row(function (Row $row) use ($users) { + foreach ($users as $user) { + $row->column(2, function (Column $column) use ($user) { + $column->append(new InfoBox( + $user['name'], + 'users', + $user['color'], + '/admin/users', + $user['count'], + )); + + }); + } + }); + + return $this->content; + } + + /** + * Notes: 用户水数量 + * + * @Author: 玄尘 + * @Date: 2022/9/1 13:35 + * @return mixed + */ + public function getUserStockData() + { + $this->content->row($this->setDivider('会员水库存数')); + + $all = UserStock::query()->sum('stock'); + $holds = UserStock::query()->sum('hold'); + $sy = bcsub($all, $holds); + + $users = [ + 'all' => [ + 'name' => '总数', + 'color' => 'blue', + 'count' => UserStock::query()->sum('stock') + ], + 'stock' => [ + 'name' => '已提货数', + 'color' => 'green', + 'count' => UserStock::query()->sum('hold') + ], + 'sy' => [ + 'name' => '待提货数', + 'color' => 'green', + 'count' => $sy + ], + ]; + + $this->content->row(function (Row $row) use ($users) { + foreach ($users as $user) { + $row->column(2, function (Column $column) use ($user) { + $column->append(new InfoBox( + $user['name'], + 'goods', + $user['color'], + '/admin/stocks', + $user['count'], + )); + + }); + } + }); + + return $this->content; + } + + /** + * Notes: 提货订单数量 + * + * @Author: 玄尘 + * @Date: 2022/9/1 13:51 + */ + public function getUserStockOrderData() + { + $this->content->row($this->setDivider('会员提货订单')); + + + $deliver = OrderItem::query() + ->whereHas('order', function ($q) { + $q->paid(); + })->sum('qty'); + + $deliverd = OrderItem::query() + ->whereHas('order', function ($q) { + $q->whereIn('state', [ + Order::STATUS_SIGNED, + Order::STATUS_DELIVERED, + ]); + })->sum('qty'); + + $users = [ + 'all' => [ + 'name' => '订单总数', + 'color' => 'blue', + 'count' => Order::query()->where('type', Order::TYPE_SAMPLE)->count() + ], + 'deliver' => [ + 'name' => '待发货', + 'color' => 'green', + 'count' => Order::query() + ->where('type', Order::TYPE_SAMPLE) + ->paid() + ->count() + ], + 'deliverd' => [ + 'name' => '已发货', + 'color' => 'green', + 'count' => Order::query() + ->where('type', Order::TYPE_SAMPLE) + ->whereIn('state', [ + Order::STATUS_DELIVERED, + ]) + ->count(), + ], + 'signed' => [ + 'name' => '已签收', + 'color' => 'green', + 'count' => Order::query() + ->where('type', Order::TYPE_SAMPLE) + ->whereIn('state', [ + Order::STATUS_SIGNED, + ]) + ->count() + ], + ]; + + $this->content->row(function (Row $row) use ($users) { + foreach ($users as $user) { + $row->column(2, function (Column $column) use ($user) { + $column->append(new InfoBox( + $user['name'], + 'goods', + $user['color'], + '/admin/stocks', + $user['count'], + )); + + }); + } + }); + + return $this->content; + } + + /** + * Notes : 清理模型缓存 + * + * @Date : 2021/6/8 10:51 上午 + * @Author : < Jason.C > + * @return string + */ + public function cleanCache(): string + { + Artisan::call('modelCache:clear'); + + return '缓存清理成功'; + } + + public function setDivider($title) + { + return << + + {$title} + + +HTML; + } + +} diff --git a/app/Admin/Controllers/LeadyController.php b/app/Admin/Controllers/LeadyController.php new file mode 100644 index 0000000..a790c76 --- /dev/null +++ b/app/Admin/Controllers/LeadyController.php @@ -0,0 +1,17 @@ +price); + dd(111); + } +} diff --git a/app/Admin/Controllers/Material/IndexController.php b/app/Admin/Controllers/Material/IndexController.php new file mode 100644 index 0000000..411f5d5 --- /dev/null +++ b/app/Admin/Controllers/Material/IndexController.php @@ -0,0 +1,54 @@ +column('id', '编号'); + $grid->column('title', '名称'); + $grid->column('地址')->display(function () { + return $this->cover_url; + }); + $grid->column('created_at', '创建时间'); + + return $grid; + } + + /** + * Make a form builder. + * + * @return Form + */ + protected function form(): Form + { + $form = new Form(new Material()); + $form->text('title', '名称'); + + $form->image('cover', '图片1')->move('materials/'.date('Y/m/d')); + + return $form; + } + +} diff --git a/app/Admin/Controllers/ModuleController.php b/app/Admin/Controllers/ModuleController.php new file mode 100644 index 0000000..deef07b --- /dev/null +++ b/app/Admin/Controllers/ModuleController.php @@ -0,0 +1,100 @@ +disableBatchActions(); + $grid->disableFilter(); + $grid->disableCreateButton(); + $grid->disablePagination(); + $grid->disableActions(); + + $grid->column('name', '模块名称'); + $grid->column('alias', '别名'); + $grid->column('version', '版本'); + $grid->column('author', '作者'); + $grid->column('description', '模块简介'); + $grid->column('enabled', '状态')->bool(); + $grid->column('id', '操作')->display(function () { + if ($this->enabled) { + return sprintf('%s', route('admin.module.disable', $this->name), '禁用'); + } else { + return sprintf('%s', route('admin.module.enable', $this->name), '启用'); + } + }); + + return $grid; + } + + /** + * Notes : 禁用模块 + * @Date : 2021/3/11 1:13 下午 + * @Author : < Jason.C > + * @param $name + * @return \Illuminate\Http\RedirectResponse + */ + public function disable($name): RedirectResponse + { + try { + $module = ModuleManager::find($name); + + $module->disable(); + + $class = sprintf('\\%s\\%s\\%s', config('modules.namespace'), $module->getName(), $module->getName()); + + if (class_exists($class)) { + call_user_func([$class, 'uninstall']); + } + + admin_success('Success', $name . '模块禁用成功'); + } catch (\Exception $exception) { + admin_error('Error', $exception->getMessage()); + } + + return back(); + } + + /** + * Notes : 启用模块 + * @Date : 2021/3/11 1:13 下午 + * @Author : < Jason.C > + * @param $name + * @return \Illuminate\Http\RedirectResponse + */ + public function enable($name): RedirectResponse + { + try { + $module = ModuleManager::find($name); + + $module->enable(); + + $class = sprintf('\\%s\\%s\\%s', config('modules.namespace'), $module->getName(), $module->getName()); + + if (class_exists($class)) { + call_user_func([$class, 'install']); + } + + admin_success('Success', $name . '模块启用成功'); + } catch (\Exception $exception) { + admin_error('Error', $exception->getMessage()); + } + + return back(); + } + +} \ No newline at end of file diff --git a/app/Admin/Controllers/Platform/DashboardController.php b/app/Admin/Controllers/Platform/DashboardController.php new file mode 100644 index 0000000..b17b3c6 --- /dev/null +++ b/app/Admin/Controllers/Platform/DashboardController.php @@ -0,0 +1,291 @@ +content = $content->title('数据看板')->description('Description...'); + $this->getVipUserData(); + $this->getUserStockData(); +// $this->getChannelData(); + return $this->content; + + } + + /** + * Notes: 获取用户数据 + * + * @Author: 玄尘 + * @Date : 2021/11/17 11:24 + */ + public function getVipUserData(): Content + { + $this->content->row($this->setDivider('会员统计')); + $users = [ + 'all' => [ + 'name' => '总会员量', + 'color' => 'blue', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', '>', 1); + })->count() + ], + 'mo' => [ + 'name' => '月卡会员量', + 'color' => 'red', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', 2); + })->count() + ], + 'jk' => [ + 'name' => '季卡会员量', + 'color' => 'red', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', 3); + })->count() + ], + 'nk' => [ + 'name' => '年卡会员量', + 'color' => 'yellow', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', 4); + })->count(), + ], + 'onlone' => [ + 'name' => '在线会员数', + 'color' => 'red', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', '>', 1); + }) + ->where('status', User::STATUS_INIT) + ->count(), + ], + 'refund' => [ + 'name' => '退费会员数', + 'color' => 'maroon', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', '>', 1); + }) + ->where('status', User::STATUS_REFUND) + ->count(), + ], + ]; + + $this->content->row(function (Row $row) use ($users) { + foreach ($users as $user) { + $row->column(2, function (Column $column) use ($user) { + $column->append(new InfoBox( + $user['name'], + 'users', + $user['color'], + '/admin/platform/vips', + $user['count'], + )); + + }); + } + }); + + return $this->content; + } + + /** + * Notes: 获取渠道数据 + * + * @Author: 玄尘 + * @Date: 2022/10/14 13:55 + */ + public function getChannelData() + { + $this->content->row($this->setDivider('渠道数据')); + $channels = UserChannel::query()->get(); + + $users = [ + 'all' => [ + 'name' => '总会员量', + 'color' => 'blue', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', '>', 2); + }) + ], + 'jk' => [ + 'name' => '季卡会员量', + 'color' => 'red', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', 3); + }) + ], + 'nk' => [ + 'name' => '年卡会员量', + 'color' => 'yellow', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', 4); + }), + ], + 'cs' => [ + 'name' => '创始会员量', + 'color' => 'aqua', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', 5); + }), + ], + 'hh' => [ + 'name' => '合伙人量', + 'color' => 'navy', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', 6); + }), + ], + // 'onlone' => [ + // 'name' => '在线会员数', + // 'color' => 'red', + // 'count' => User::query() + // ->whereHas('identities', function ($q) { + // $q->where('id', '>', 2); + // }) + // ->where('status', User::STATUS_INIT), + // ], + 'refund' => [ + 'name' => '退费会员数', + 'color' => 'maroon', + 'count' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', '>', 2); + }) + ->where('status', User::STATUS_REFUND), + ], + ]; + foreach ($channels as $channel) { + $this->channel_id = $channel->id; + $this->content->row(function (Row $row) use ($channel, $users) { + foreach ($users as $user) { + $row->column(2, function (Column $column) use ($channel, $user) { + $column->append(new InfoBox( + $channel->name.'-'.$user['name'], + 'users', + $user['color'], + '/admin/platform/vips?channel_id='.$channel->id, + (clone $user['count'])->where('channel_id', $channel->id)->count(), + )); + }); + } + }); + } + + return $this->content; + } + + /** + * Notes: 用户水数量 + * + * @Author: 玄尘 + * @Date: 2022/9/1 13:35 + * @return mixed + */ + public function getUserStockData() + { + $this->content->row($this->setDivider('会员库存数')); + + $all = UserStock::query()->sum('stock'); + $holds = UserStock::query()->sum('hold'); + $sy = bcsub($all, $holds); + + $users = [ + 'all' => [ + 'name' => '累计总箱数', + 'color' => 'blue', + 'count' => $all + ], + 'stock' => [ + 'name' => '累计提货数', + 'color' => 'green', + 'count' => $holds + ], + 'sy' => [ + 'name' => '累计剩余', + 'color' => 'green', + 'count' => $sy + ], + 'online' => [ + 'name' => '线上发货', + 'color' => 'green', + 'count' => OrderItem::query() + ->whereHas('order', function ($q) { + $q->where('type', Order::TYPE_SAMPLE) + ->whereIn('state', [ + Order::STATUS_PAID, + Order::STATUS_DELIVERED, + Order::STATUS_SIGNED, + ])->where('channel', Order::CHANNEL_USER); + }) + ->sum('qty') + ], + 'offline' => [ + 'name' => '线下发货', + 'color' => 'green', + 'count' => OrderItem::query() + ->whereHas('order', function ($q) { + $q->where('type', Order::TYPE_SAMPLE) + ->whereIn('state', [ + Order::STATUS_PAID, + Order::STATUS_DELIVERED, + Order::STATUS_SIGNED, + ])->where('channel', Order::CHANNEL_SYSTEM); + }) + ->sum('qty') + ], + ]; + + $this->content->row(function (Row $row) use ($users) { + foreach ($users as $user) { + $row->column(2, function (Column $column) use ($user) { + $column->append(new InfoBox( + $user['name'], + 'goods', + $user['color'], + '/admin/users/stocks', + $user['count'], + )); + + }); + } + }); + + return $this->content; + } + + public function setDivider($title) + { + return << + + {$title} + + +HTML; + } + +} \ No newline at end of file diff --git a/app/Admin/Controllers/Platform/ExperienceController.php b/app/Admin/Controllers/Platform/ExperienceController.php new file mode 100644 index 0000000..fb1bbb6 --- /dev/null +++ b/app/Admin/Controllers/Platform/ExperienceController.php @@ -0,0 +1,140 @@ +disableCreateButton(); + $grid->model()->with(['symptoms', 'user', 'user.sign', 'user.userStock']) + ->withCount(['logs', 'surveys']) + ->where('type', GoutCase::TYPE_TY); + + $grid->actions(function (Grid\Displayers\Actions $actions) { + $actions->disableEdit(); + $actions->disableDelete(); + $actions->disableView(); + + if ($actions->row->canAudit()) { + $actions->add(new Audit()); + } + + if ($actions->row->manage_status == GoutCase::MANAGE_STATUS_DELIVER) { + $actions->add(new LinkStockOrderDeliver()); + } + if ($actions->row->manage_status == GoutCase::MANAGE_STATUS_REFUND) { + $actions->add(new LinkVipOrderRefund()); + } + }); + + $grid->filter(function (Grid\Filter $filter) { + $filter->column(1 / 2, function (Grid\Filter $filter) { + $filter->like('name', '姓名'); + $filter->equal('mobile', '手机号'); + }); + $filter->column(1 / 2, function (Grid\Filter $filter) { + $filter->equal('status', '状态')->select((new GoutCase())->status_map); + }); + }); + + $grid->column('id', '#ID#'); + $grid->column('name', '姓名'); + $grid->column('mobile', '手机号'); + $grid->column('建档信息') + ->display(function ($title, $column) { + return '查看'; + })->modal('建档信息', CaseData::class); + + $grid->column('报告数据') + ->display(function ($title, $column) { + return '查看'; + })->modal('亚健康数据', CaseSymptoms::class); + + $grid->column('symptoms', '症状') + ->display(function () { + return $this->symptoms->pluck('title'); + })->label(); + $grid->column('是否关注') + ->display(function () { + return $this->user->isOfficialSubscribe(); + }) + ->bool(); +// + $grid->column('缴纳保证金') + ->display(function () { + return $this->user->isExperiencePrice() ? '已缴' : '待缴'; + }) + ->label([ + '已缴' => 'primary', + '待缴' => 'success', + ]); + + $grid->column('是否收货') + ->display(function () { + return $this->user->userStock->stock_order_status_text; + }) + ->label(UserStock::STOCK_ORDER_STATUS_MAP); + + $grid->column('is_coupon', '是否发券') + ->using(GoutCase::COUPONS) + ->label(GoutCase::COUPONS_MAP); + + $grid->column('喝水打卡') + ->display(function () { + return $this->user->sign->counts; + }); +// + $grid->column('完结报告') + ->display(function () { + return $this->logs_count > 1 ? '已上传' : '待上传'; + }) + ->label([ + '已上传' => 'primary', + '待上传' => 'success', + ]); +// + $grid->column('是否退保') + ->display(function () { + return $this->user->isExperiencePriceRefund() ? '是' : '否'; + }) + ->label([ + '是' => 'primary', + '否' => 'success', + ]); + $grid->column('好转反馈') + ->display(function () { + return $this->surveys_count; + }); + + $grid->column('manage_status', '状态') + ->using((new GoutCase())->manage_status_map) + ->label([ + GoutCase::MANAGE_STATUS_INIT => 'primary', + GoutCase::MANAGE_STATUS_DELIVER => 'success', + GoutCase::MANAGE_STATUS_REFUND => 'danger', + GoutCase::MANAGE_STATUS_PASS => 'info', + GoutCase::MANAGE_STATUS_FINISH => 'warning', + ]); + + $grid->column('created_at', '创建时间'); + + return $grid; + } + +} \ No newline at end of file diff --git a/app/Admin/Controllers/Platform/VipController.php b/app/Admin/Controllers/Platform/VipController.php new file mode 100644 index 0000000..90f7f02 --- /dev/null +++ b/app/Admin/Controllers/Platform/VipController.php @@ -0,0 +1,257 @@ + + * @return Grid + */ + public function grid(): Grid + { + $grid = new Grid(new User()); + + $grid->actions(function (Grid\Displayers\Actions $actions) { + $actions->disableEdit(); + $actions->disableDelete(); + $actions->disableView(); + if ($actions->row->status == User::STATUS_INIT) { + $actions->add(new UserStatusRefund()); + } + if ($actions->row->status == User::STATUS_REFUND) { + $actions->add(new UserStatusInit()); + } + + $actions->add(new JoinIdentity()); + $actions->add(new AddUserRemark()); + $actions->add(new LinkCreateAddress()); + + }); + + $grid->quickSearch('username')->placeholder('快速搜索用户名'); + + $grid->filter(function (Grid\Filter $filter) { + $filter->column(1 / 3, function (Grid\Filter $filter) { + $filter->like('username', '用户名'); + $filter->equal('channel_id', '渠道')->select(UserChannel::pluck('name', 'id')); + }); + + $filter->column(1 / 3, function (Grid\Filter $filter) { + $filter->like('info.nickname', '用户昵称'); + }); + $filter->column(1 / 3, function (Grid\Filter $filter) { + $filter->equal('identities.id', '身份') + ->select(Identity::query()->where('id', '>', 1)->pluck('name', 'id')); + }); + }); + + $grid->model() + ->whereHas('identities', function ($q) { + $q->where('id', '>', 1); + }) + ->withCount(['addresses', 'logs']) + ->with(['info', 'parent', 'identities', 'addresses', 'vipOrders', 'userStock', 'logs']); + + //序号 姓名 手机号 会员类型 会员编号 缴费金额 加入时间 状态(正常,退费) 用箱数 提货箱数 剩余箱数 + $grid->column('id', '序号'); + $grid->column('username', '手机号'); + $grid->column('identities', '会员类型') + ->display(function () { + $data = []; + foreach ($this->identities as $identity) { + $data[] = $identity->name; + } + return $data; + }) + ->label(); + $grid->column('serial', '会员编号') + ->display(function () { + $data = []; + foreach ($this->identities as $identity) { + $data[] = $identity->serial_prefix.$identity->getOriginal('pivot_serial'); + } + return $data; + }) + ->label(); + + $grid->column('price', '缴费金额') + ->display(function () { + return $this->getOpenVipPrices(); + }) + ->label(); + + $grid->column('created_at', '加入时间'); + $grid->column('status', '状态') + ->using(User::STATUS) + ->label(); + $grid->column('userStock.stock', '总箱数'); + $grid->column('userStock.hold', '提货箱数'); + $grid->column('userStock.residue', '剩余箱数'); + $grid->column('addresses_count', '收货地址') + ->link(function () { + return route('admin.mall.addresses.index', ['user_id' => $this->id]); + }, '_self'); + $grid->column('logs_count', '备注') + ->modal('备注信息', UserLog::class); + + $grid->disableExport(false); + $grid->export(function ($export) { + $export->column('identities', function ($value, $original) { + return strip_tags($value); + }); + $export->column('serial', function ($value, $original) { + return strip_tags($value); + }); + $export->column('price', function ($value, $original) { + return strip_tags($value); + }); + $export->column('status', function ($value, $original) { + return strip_tags($value); + }); + +// $export->column('use_way', function ($value, $original) { +// return strip_tags($value); +// }); +// $export->column('所属用户', function ($value, $original) { +// return iconv('gb2312//ignore', 'utf-8', +// iconv('utf-8', 'gb2312//ignore', strip_tags(str_replace(" ", " ", $value)))); +// }); +// +// $export->column('couponGrant.code', function ($value, $original) { +// return $value."\n"; +// }); + + $export->except(['addresses_count', 'logs_count']); + + $export->filename($this->title.date("YmdHis")); + }); + + return $grid; + } + + /** + * Notes : 编辑表单 + * + * @Date : 2021/7/15 5:09 下午 + * @Author : + * @return Form + * @throws Exception + */ + public function form(): Form + { +// if (! config('user.create_user_by_admin')) { +// throw new Exception('不运允许操作用户'); +// } + + Admin::script(" $(document.body).append(` +HTML; + } + +} \ No newline at end of file diff --git a/app/Admin/Routes/material.php b/app/Admin/Routes/material.php new file mode 100644 index 0000000..6524265 --- /dev/null +++ b/app/Admin/Routes/material.php @@ -0,0 +1,10 @@ + 'Material', +], function (Router $router) { + $router->resource('materials', 'IndexController'); + +}); diff --git a/app/Admin/Routes/modules.php b/app/Admin/Routes/modules.php new file mode 100644 index 0000000..92206a0 --- /dev/null +++ b/app/Admin/Routes/modules.php @@ -0,0 +1,12 @@ + 'modules', +], function (Router $router) { + $router->get('', 'ModuleController@index'); + $router->get('{name}/disable', 'ModuleController@disable')->name('module.disable'); + $router->get('{name}/enable', 'ModuleController@enable')->name('module.enable'); +}); diff --git a/app/Admin/Routes/platform.php b/app/Admin/Routes/platform.php new file mode 100644 index 0000000..ae2d445 --- /dev/null +++ b/app/Admin/Routes/platform.php @@ -0,0 +1,15 @@ + 'Platform', + 'prefix' => 'platform', +], function (Router $router) { + $router->resource('experiences', 'ExperienceController');//体验官审核 + $router->resource('vip_orders', 'VipOrderController');//体验官审核 + $router->resource('vips', 'VipController');//会员管理 + $router->get('identity_stock', 'VipController@stock')->name('platform.identity_stock');;//会员管理 + $router->get('dashboard', 'DashboardController@index'); + +}); diff --git a/app/Admin/Routes/test.php b/app/Admin/Routes/test.php new file mode 100644 index 0000000..0437915 --- /dev/null +++ b/app/Admin/Routes/test.php @@ -0,0 +1,12 @@ + 'test', +], function (Router $router) { + $router->get('', 'TestController@index'); + $router->get('truncate', 'TestController@truncate'); + $router->get('leady', 'LeadyController@index'); +}); diff --git a/app/Admin/Traits/WithUploads.php b/app/Admin/Traits/WithUploads.php new file mode 100644 index 0000000..8db1613 --- /dev/null +++ b/app/Admin/Traits/WithUploads.php @@ -0,0 +1,103 @@ + + * @param \Encore\Admin\Form $form + * @param string $filed + * @param string $label + */ + public function cover(Renderable $form, string $filed = 'cover', string $label = '封面图片') + { + $cover = $form->image($filed, $label) + ->move('images/'.date('Y/m/d')) + ->uniqueName() + ->removable() + ->retainable(); + + $waterConfig = config('admin.image_water'); + + if (! empty($waterConfig)) { + $cover->insert(...$waterConfig); + } + + $coverThumb = config('admin.cover_thumb'); + + if (! empty($coverThumb)) { + $cover->thumbnail($coverThumb); + } + } + + /** + * Notes: 上传视频 + * + * @Author: 玄尘 + * @Date: 2022/9/30 9:44 + * @param Renderable $form + * @param string $filed + * @param string $label + */ + public function video(Renderable $form, string $filed = 'path', string $label = '视频') + { + $form->file($filed, $label) + ->move('videos/'.date('Y/m/d')) + ->uniqueName() + ->removable() + ->downloadable() + ->retainable(); + } + + /** + * Notes : 统一的多图上传 + * + * @Date : 2021/4/25 2:06 下午 + * @Author : < Jason.C > + * @param \Encore\Admin\Form $form + * @param string $filed + * @param string $label + */ + public function pictures(Renderable $form, string $filed = 'pictures', string $label = '多图轮播') + { + $pictures = $form->multipleImage($filed, $label) + ->move('images/'.date('Y/m/d')) + ->uniqueName() + ->removable() + ->retainable(); + + // 多图如果开启排序的话,会报错,暂时没由解决办法 ->sortable() + $waterConfig = config('admin.image_water'); + + if (! empty($waterConfig)) { + $pictures->insert(...$waterConfig); + } + } + + /** + * Notes : 统一的附件上传 + * + * @Date : 2021/4/25 3:03 下午 + * @Author : < Jason.C > + * @param \Illuminate\Contracts\Support\Renderable $form + * @param string $filed + * @param string $label + */ + public function attachments(Renderable $form, string $filed = 'attachments', string $label = '内容附件') + { + $form->multipleFile($filed, $label) + ->move('attachments/'.date('Y/m/d')) + ->uniqueName() + ->removable() + ->retainable() + ->sortable(); + } + +} \ No newline at end of file diff --git a/app/Admin/bootstrap.php b/app/Admin/bootstrap.php new file mode 100644 index 0000000..8731e84 --- /dev/null +++ b/app/Admin/bootstrap.php @@ -0,0 +1,62 @@ + + * Bootstraper for Admin. + * Here you can remove builtin form field: + * Encore\Admin\Form::forget(['map', 'editor']); + * Or extend custom form field: + * Encore\Admin\Form::extend('php', PHPEditor::class); + * Or require js and css assets: + * Admin::css('/packages/prettydocs/css/styles.css'); + * Admin::js('/packages/prettydocs/js/main.js'); + */ + +use App\Admin\Extensions\CleanCache; +use Encore\Admin\Facades\Admin; +use Encore\Admin\Form; +use Encore\Admin\Grid; +use Encore\Admin\Show; +use Encore\Admin\Widgets\Navbar; + +Form::forget(['map', 'editor']); + +Admin::navbar(function (Navbar $navbar) { + $navbar->right(new CleanCache()); + $navbar->right(new Navbar\Fullscreen()); +}); + +Form::init(function (Form $form) { + $form->disableEditingCheck(); + $form->disableCreatingCheck(); + $form->disableViewCheck(); + + $form->tools(function (Form\Tools $tools) { + $tools->disableView(); + // $tools->disableDelete(); + // $tools->disableList(); + }); +}); + +Show::init(function (Show $show) { + $show->panel() + ->tools(function ($tools) { + // $tools->disableEdit(); + // $tools->disableList(); + $tools->disableDelete(); + });; +}); + +Grid::init(function (Grid $grid) { + $grid->disableExport(); + $grid->actions(function (Grid\Displayers\Actions $actions) { + $actions->disableView(); + }); + $grid->disableBatchActions(); + $grid->filter(function ($filter) { + $filter->disableIdFilter(); + }); + // $grid->expandFilter(); +}); + diff --git a/app/Admin/routes.php b/app/Admin/routes.php new file mode 100644 index 0000000..29c3e68 --- /dev/null +++ b/app/Admin/routes.php @@ -0,0 +1,24 @@ + config('admin.route.prefix'), + 'namespace' => config('admin.route.namespace'), + 'middleware' => config('admin.route.middleware'), + 'as' => config('admin.route.as'), +], function (Router $router) { + + $router->get('/', 'HomeController@index')->name('home'); + + $router->get('clean_cache', 'HomeController@cleanCache')->name('cleanCache'); + + foreach (glob(admin_path('Routes') . '/*.php') as $routeFile) { + require $routeFile; + } + +}); diff --git a/app/Api/Controllers/Controller.php b/app/Api/Controllers/Controller.php new file mode 100644 index 0000000..c2b8958 --- /dev/null +++ b/app/Api/Controllers/Controller.php @@ -0,0 +1,12 @@ +whereIn('state', [ + Order::STATUS_PAID, + Order::STATUS_DELIVERED, + Order::STATUS_SIGNED, + Order::STATUS_COMPLETED, + ]) + ->count(); + $donate = (new User())->getALlJzCount(); + + $orderQuery = Order::query()->where('type', Order::TYPE_NORMAL); + + /** + * + */ + $amount = (clone $orderQuery)->whereIn('state', [ + Order::STATUS_PAID, + Order::STATUS_DELIVERED, + Order::STATUS_SIGNED, + Order::STATUS_COMPLETED, + ])->sum('amount'); + + $data = [ + 'activities' => [ + 'all' => $all, + 'donate' => $donate, + 'residue' => bcsub($all, $donate), + ], + 'orders' => [ + 'users' => User::query()->whereHas('orders', function ($q) { + $q->whereIn('state', [ + Order::STATUS_PAID, + Order::STATUS_DELIVERED, + Order::STATUS_SIGNED, + Order::STATUS_COMPLETED, + ])->where('type', Order::TYPE_NORMAL); + })->count(), + + 'all' => (clone $orderQuery) + ->whereIn('state', [ + Order::STATUS_PAID, + Order::STATUS_DELIVERED, + Order::STATUS_SIGNED, + Order::STATUS_COMPLETED, + ])->count(), + 'paid' => (clone $orderQuery)->where('state', Order::STATUS_PAID)->count(), + 'delivered' => (clone $orderQuery)->where('state', Order::STATUS_DELIVERED)->count(), + 'signed' => (clone $orderQuery)->where('state', Order::STATUS_SIGNED)->count(), + 'completed' => (clone $orderQuery)->where('state', Order::STATUS_COMPLETED)->count(), + 'amount' => floatval($amount), + ], + 'users' => [ + 'all' => User::count(), + 'yk' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', 2); + })->count(), + 'jk' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', 3); + })->count(), + 'nk' => User::query() + ->whereHas('identities', function ($q) { + $q->where('id', 4); + })->count(), + ] + ]; + + return $this->success($data); + } + + /** + * Notes: description + * + * @Author: 玄尘 + * @Date: 2023/1/5 13:50 + */ + public function orders(Request $request) + { + $status = $request->status ?? 'all'; + + $orders = Order::query() + ->where('type', Order::TYPE_NORMAL) + ->when($status !== 'all', function ($q) use ($status) { + $q->where('state', $status); + }, function ($q) { + $q->whereIn('state', [ + Order::STATUS_PAID, + Order::STATUS_DELIVERED, + Order::STATUS_SIGNED, + Order::STATUS_COMPLETED, + ]); + }) + ->paginate(); + + return $this->success(new OrderDataCollection($orders)); + } + + /** + * Notes: description + * + * @Author: 玄尘 + * @Date: 2023/1/5 14:13 + */ + public function users() + { + $users = User::query() + ->withCount([ + 'orders' => function ($q) { + $q->whereIn('state', [ + Order::STATUS_PAID, + Order::STATUS_DELIVERED, + Order::STATUS_SIGNED, + Order::STATUS_COMPLETED, + ]); + } + ]) + ->withSum([ + 'orders' => function ($q) { + $q->whereIn('state', [ + Order::STATUS_PAID, + Order::STATUS_DELIVERED, + Order::STATUS_SIGNED, + Order::STATUS_COMPLETED, + ]); + } + ], 'amount') + ->whereHas('orders', function ($q) { + $q->whereIn('state', [ + Order::STATUS_PAID, + Order::STATUS_DELIVERED, + Order::STATUS_SIGNED, + Order::STATUS_COMPLETED, + ])->where('type', Order::TYPE_NORMAL); + }) + ->paginate(); + return $this->success(new UserDataCollection($users)); + + } +} diff --git a/app/Api/Controllers/IndexController.php b/app/Api/Controllers/IndexController.php new file mode 100644 index 0000000..8e3c1e2 --- /dev/null +++ b/app/Api/Controllers/IndexController.php @@ -0,0 +1,12 @@ +success('Json Api is ready'); + } +} diff --git a/app/Api/Controllers/Wechat/IndexController.php b/app/Api/Controllers/Wechat/IndexController.php new file mode 100644 index 0000000..cfd7cdb --- /dev/null +++ b/app/Api/Controllers/Wechat/IndexController.php @@ -0,0 +1,63 @@ +server->push(function ($message) { + switch ($message['MsgType']) { + case 'event': + return '收到事件消息'; + break; + case 'text': + return '收到文字消息'; + break; + case 'image': + return '收到图片消息'; + break; + case 'voice': + return '收到语音消息'; + break; + case 'video': + return '收到视频消息'; + break; + case 'location': + return '收到坐标消息'; + break; + case 'link': + return '收到链接消息'; + break; + case 'file': + return '收到文件消息'; + // ... 其它消息 + default: + return '收到其它消息'; + break; + } + + // ... + }); + + $app->server->push(EventMessageHandler::class, Message::EVENT); + + return $app->server->serve(); + } +} diff --git a/app/Api/Resources/BaseCollection.php b/app/Api/Resources/BaseCollection.php new file mode 100644 index 0000000..b9b721b --- /dev/null +++ b/app/Api/Resources/BaseCollection.php @@ -0,0 +1,21 @@ + $this->currentPage(), + 'total_page' => $this->lastPage(), + 'per_page' => $this->perPage(), + 'has_more' => $this->hasMorePages(), + 'total' => $this->total(), + ]; + } + +} diff --git a/app/Api/Resources/Order/OrderDataCollection.php b/app/Api/Resources/Order/OrderDataCollection.php new file mode 100644 index 0000000..8d22182 --- /dev/null +++ b/app/Api/Resources/Order/OrderDataCollection.php @@ -0,0 +1,32 @@ + $this->collection->map(function ($order) { + return [ + 'order_no' => $order->order_no, + 'user' => new UserBaseResource($order->user), + 'express' => new OrderExpressResource($order->express), + 'qty' => $order->items()->sum('qty'), + 'amount' => $order->amount, + 'freight' => $order->freight, + 'total' => $order->total, + 'type' => $order->type_text, + 'state' => $order->state_text, + ]; + }), + 'page' => $this->page(), + ]; + } + +} \ No newline at end of file diff --git a/app/Api/Resources/User/UserBaseResource.php b/app/Api/Resources/User/UserBaseResource.php new file mode 100644 index 0000000..f3d63b4 --- /dev/null +++ b/app/Api/Resources/User/UserBaseResource.php @@ -0,0 +1,20 @@ + $this->id, + 'username' => $this->username, + 'nickname' => $this->info->nickname, + 'avatar' => $this->info->avatar ?? '', + ]; + } + +} diff --git a/app/Api/Resources/User/UserDataCollection.php b/app/Api/Resources/User/UserDataCollection.php new file mode 100644 index 0000000..2299ddd --- /dev/null +++ b/app/Api/Resources/User/UserDataCollection.php @@ -0,0 +1,20 @@ + $this->collection->map(function ($info) { + return new UserDataResource($info); + }), + 'page' => $this->page(), + ]; + } + +} \ No newline at end of file diff --git a/app/Api/Resources/User/UserDataResource.php b/app/Api/Resources/User/UserDataResource.php new file mode 100644 index 0000000..57e3a70 --- /dev/null +++ b/app/Api/Resources/User/UserDataResource.php @@ -0,0 +1,22 @@ + $this->id, + 'username' => $this->username, + 'nickname' => $this->info->nickname, + 'orders_count' => $this->orders_count, + 'orders_sum_amount' => $this->orders_sum_amount, + 'avatar' => $this->info->avatar ?? '', + ]; + } + +} diff --git a/app/Api/Routes/data.php b/app/Api/Routes/data.php new file mode 100644 index 0000000..349e870 --- /dev/null +++ b/app/Api/Routes/data.php @@ -0,0 +1,14 @@ + 'Data', + 'middleware' => config('api.route.middleware'), +], function (Router $router) { + $router->get('data', 'IndexController@index'); + $router->get('data/orders', 'IndexController@orders'); + $router->get('data/users', 'IndexController@users'); +}); + diff --git a/app/Api/Routes/wechat.php b/app/Api/Routes/wechat.php new file mode 100644 index 0000000..4c2bcad --- /dev/null +++ b/app/Api/Routes/wechat.php @@ -0,0 +1,12 @@ + 'Wechat', + 'middleware' => config('api.route.middleware'), +], function (Router $router) { + $router->any('wechat', 'IndexController@serve')->name('wechat'); +}); + diff --git a/app/Api/WechatHandlers/EventMessageHandler.php b/app/Api/WechatHandlers/EventMessageHandler.php new file mode 100644 index 0000000..4c38c34 --- /dev/null +++ b/app/Api/WechatHandlers/EventMessageHandler.php @@ -0,0 +1,142 @@ +Event)) { + $this->payload = $payload; + return call_user_func_array([$this, $payload->Event], []); + } else { + // return '暂不支持的消息类型'; + } + } + + + /** + * Notes: 关注事件 + * + * @Author: 玄尘 + * @Date: 2022/7/27 9:41 + */ + private function subscribe() + { + $app = app('wechat.official_account'); + $user = $app->user->get($this->payload->FromUserName); + + if ($user->unionid) { + $wechatUsers = UserWechat::query() + ->where('unionid', $user->unionid) + ->get(); + if ($wechatUsers->isNotEmpty()) { + foreach ($wechatUsers as $wechatUser) { + if ($wechatUser->official) { + if ($wechatUser->official->subscribe != 1) { + $wechatUser->official->update([ + 'subscribe' => 1, + 'subscribed_at' => Carbon::parse($user->subscribe_time)->toDateTimeString(), + ]); + } + } else { + $wechatUser->official()->create([ + 'openid' => $this->payload->FromUserName, + 'subscribe' => 1, + 'subscribed_at' => Carbon::parse($user->subscribe_time)->toDateTimeString(), + ]); + } + + } + } + + //插入关注数据 + $this->setUserSubscribe($user->unionid, $this->payload->FromUserName, 1); + + } else { + // 先查找用户是否存在,不存在再注册 + $officialUsers = UserWechatOfficial::query() + ->where('openid', $this->payload->FromUserName) + ->get(); + + //设置总表uniond + if ($officialUsers->isNotEmpty()) { + foreach ($officialUsers as $officialUser) { + if (! $officialUser->userWechat->unionid && $user->unionid) { + $officialUser->userWechat->update([ + 'unionid' => $user->unionid + ]); + } + + if ($officialUser->subscribe != 1) { + $officialUser->update([ + 'subscribe' => 1, + 'subscribed_at' => Carbon::parse($user->subscribe_time)->toDateTimeString(), + ]); + } + } + } + } + + return $this->firstSubscribeMessage(); + } + + /** + * Notes: 取消关注事件 + * + * @Author: 玄尘 + * @Date: 2022/7/27 9:41 + */ + private function unsubscribe() + { + $officialUsers = UserWechatOfficial::where('openid', $this->payload->FromUserName)->get(); + if ($officialUsers->isNotEmpty()) { + foreach ($officialUsers as $officialUser) { + $officialUser->update([ + 'subscribe' => 0, + 'subscribed_at' => null, + ]); + + //设置取消关注 + if ($officialUser->userWechat) { + $this->setUserSubscribe($officialUser->userWechat->unionid, $officialUser->openid, 0); + } + } + } + } + + /** + * Notes: 关注返回的消息 + * + * @Author: 玄尘 + * @Date: 2022/8/2 11:37 + * @return Text + */ + private function firstSubscribeMessage() + { + $officialUser = UserWechatOfficial::where('openid', $this->payload->FromUserName)->first(); + $text = new Text('扎西德勒!感谢关注锶源昆仑。锶源昆仑天然饮用水,水源地位于海拔4300米的昆仑山,水中富含镁离子、锶元素、钙元素等微量元素且氘含量低,稀世罕见,仅供30000人饮用。 +参与打卡“锶享体验官”活动,请点击公众号菜单上的按钮“锶享体验官”进入活动,来申请喝水体验官吧!'); + if ($officialUser && $officialUser->userWechat) { + $nickname = $officialUser->userWechat->nickname; + $text = new Text('扎西德勒!'.$nickname.',感谢关注锶源昆仑。锶源昆仑天然饮用水,水源地位于海拔4300米的昆仑山,水中富含镁离子、锶元素、钙元素等微量元素且氘含量低,稀世罕见,仅供30000人饮用。 +参与打卡“锶享体验官”活动,请点击公众号菜单上的按钮“锶享体验官”进入活动,来申请喝水体验官吧!'); + } + + + return $text; + } + +} diff --git a/app/Api/WechatHandlers/FileMessageHandler.php b/app/Api/WechatHandlers/FileMessageHandler.php new file mode 100644 index 0000000..33a4a21 --- /dev/null +++ b/app/Api/WechatHandlers/FileMessageHandler.php @@ -0,0 +1,27 @@ +ToUserName; + $payload->FromUserName; + $payload->CreateTime; + $payload->MsgId; + + $payload->Title; + $payload->Description; + $payload->FileKey; + $payload->FileMd5; + $payload->FileTotalLen; + + return '文件消息'; + } + +} diff --git a/app/Api/WechatHandlers/ImageMessageHandler.php b/app/Api/WechatHandlers/ImageMessageHandler.php new file mode 100644 index 0000000..c8b95d8 --- /dev/null +++ b/app/Api/WechatHandlers/ImageMessageHandler.php @@ -0,0 +1,24 @@ +ToUserName; +// $payload->FromUserName; +// $payload->CreateTime; +// $payload->MsgId; +// +// $payload->MediaId; +// $payload->PicUrl; + + return '图片消息'; + } + +} diff --git a/app/Api/WechatHandlers/LinkMessageHandler.php b/app/Api/WechatHandlers/LinkMessageHandler.php new file mode 100644 index 0000000..d272b66 --- /dev/null +++ b/app/Api/WechatHandlers/LinkMessageHandler.php @@ -0,0 +1,25 @@ +ToUserName; + $payload->FromUserName; + $payload->CreateTime; + $payload->MsgId; + + $payload->Title; + $payload->Description; + $payload->Url; + + return '链接消息'; + } + +} diff --git a/app/Api/WechatHandlers/LocationMessageHandler.php b/app/Api/WechatHandlers/LocationMessageHandler.php new file mode 100644 index 0000000..637b0d8 --- /dev/null +++ b/app/Api/WechatHandlers/LocationMessageHandler.php @@ -0,0 +1,25 @@ +ToUserName; + $payload->FromUserName; + $payload->CreateTime; + $payload->MsgId; + + $payload->Latitude; + $payload->Longitude; + $payload->Precision; + + return '上报位置消息'; + } + +} diff --git a/app/Api/WechatHandlers/ShortVideoMessageHandler.php b/app/Api/WechatHandlers/ShortVideoMessageHandler.php new file mode 100644 index 0000000..a502f26 --- /dev/null +++ b/app/Api/WechatHandlers/ShortVideoMessageHandler.php @@ -0,0 +1,24 @@ +ToUserName; + $payload->FromUserName; + $payload->CreateTime; + $payload->MsgId; + + $payload->MediaId; + $payload->ThumbMediaId; + + return '短视频消息'; + } + +} diff --git a/app/Api/WechatHandlers/TextMessageHandler.php b/app/Api/WechatHandlers/TextMessageHandler.php new file mode 100644 index 0000000..ea1525e --- /dev/null +++ b/app/Api/WechatHandlers/TextMessageHandler.php @@ -0,0 +1,16 @@ +ToUserName; + $payload->FromUserName; + $payload->CreateTime; + $payload->MsgId; + + $payload->MediaId; + $payload->ThumbMediaId; + + return '视频消息'; + } + +} diff --git a/app/Api/WechatHandlers/VoiceMessageHandler.php b/app/Api/WechatHandlers/VoiceMessageHandler.php new file mode 100644 index 0000000..ae21e09 --- /dev/null +++ b/app/Api/WechatHandlers/VoiceMessageHandler.php @@ -0,0 +1,25 @@ +ToUserName; + $payload->FromUserName; + $payload->CreateTime; + $payload->MsgId; + + $payload->MediaId; + $payload->Format; + $payload->Recognition; + + return '语音消息'; + } + +} diff --git a/app/Api/bootstrap.php b/app/Api/bootstrap.php new file mode 100644 index 0000000..b3d9bbc --- /dev/null +++ b/app/Api/bootstrap.php @@ -0,0 +1 @@ +name('home'); + +/** + * 分组的路由示例 + */ +Route::group([ +// 'as' => '', +// 'domain' => '', +// 'middleware' => '', +// 'namespace' => '', +// 'prefix' => '', +], function (Router $router) { + $router->get('/', 'IndexController@index')->name('home'); +}); +/** + * 文件夹引入的示例 + */ +foreach (glob(app_path('Api/Routes').'/*.php') as $routeFile) { + require $routeFile; +} \ No newline at end of file diff --git a/app/Bonus/IdentityBonus.php b/app/Bonus/IdentityBonus.php new file mode 100644 index 0000000..32bedfc --- /dev/null +++ b/app/Bonus/IdentityBonus.php @@ -0,0 +1,305 @@ +identity; + $parent = $user->parent; + $parentIdentity = $parent ? $user->parent->identityFirst() : ''; + + //开通赠送水滴 + $crystal = $order->identity->getRule('give_crystal', '0'); + if ($crystal > 0) { + $user->account->rule('open_identity_score', $crystal, true, array_merge($source, [ + 'user_order_id' => $order->id + ])); + } + //发券 + self::grantCoupon($user, $order, $parent, $parentIdentity); + + //是否有上级 + if ($parent && $parentIdentity && $order->price > 0) { + //增加业绩 + $parent->addPerf($order->price, $order); + //开通的是季卡 + if ($identity->job == Identity::JOB_JK) { + + + //直推季卡获得水滴 + $hasRecommend_jk_score = $parentIdentity->getRule('recommend_jk_score', ''); + if ($hasRecommend_jk_score) { + $user->parent->account->rule( + 'recommend_jk_score', + $hasRecommend_jk_score, + false, + array_merge($source, [ + 'user_order_id' => $order->id + ]) + ); + } + + //合伙人推荐奖励 + self::setHhRecommendJk($hasRecommend_jk_score, $user, $order, $source); + } + + //开通的是年卡 + if ($identity->job == Identity::JOB_NK) { + //直推年卡获得水滴 + $hasRecommend_nk_score = $parentIdentity->getRule('recommend_nk_score', ''); + if ($hasRecommend_nk_score) { + $user->parent->account->rule( + 'recommend_nk_score', + $hasRecommend_nk_score, + false, + array_merge($source, [ + 'user_order_id' => $order->id + ]) + ); + } + + //合伙人推荐奖励 + self::setHhRecommendNk($hasRecommend_nk_score, $user, $order, $source); + } + } + + return true; + } catch (\Exception $exception) { + return $exception->getMessage(); + } + + } + + /** + * Notes: 发券 + * 推荐会员得优惠券 季卡 年卡 创始 + * + * @Author: 玄尘 + * @Date: 2022/8/31 13:53 + */ + public static function grantCoupon($user, $order, $parent, $parentIdentity) + { + if ($parent && $parentIdentity->job !== Identity::JOB_HH) { + $jkIdentity = Identity::query()->Jk()->first(); + $openJkCount = $parent->getOpenJkCount();//开通季卡次数 + $recommendUserCoupunCount = $parent->getRecommendUserCouponCount();//推荐季卡得优惠券数 + $recommend_coupon = $parentIdentity->getRule('recommend_coupon', null);//是否有推荐奖励 + + //推荐季卡得优惠券 + if ($recommend_coupon && $order->type == Order::TYPE_OPEN && $openJkCount > $recommendUserCoupunCount) { + $coupon = Coupon::query() + ->whereHas('items', function ($q) use ($jkIdentity) { + $q->withGoods($jkIdentity); + }) + ->first(); + + $ended_at = Carbon::parse($parentIdentity->pivot->ended_at); + if ($coupon && $ended_at->gt(now())) { + $days = $ended_at->addMonth()->diffInDays(now()); + #TODO 推季卡会员得优惠券 + // $user->parent->getCoupon($coupon->id, CouponGrant::CHANNEL_EXPAND, $days); + $user->parent->getCoupon($coupon->id, CouponGrant::CHANNEL_EXPAND); + } + } + } + } + + /** + * Notes: 合伙人推荐季卡 + * + * @Author: 玄尘 + * @Date: 2022/8/19 15:11 + */ + public static function setHhRecommendJk($score, $user, $order, $source) + { + $hhUsers = $user->getParentHh();//获取所有合伙人 + $hhIdentity = Identity::query()->where('job', Identity::JOB_HH)->first(); + $rule_name = 'recommend_indirect_jk_balance'; + if ($hhIdentity && ! empty($hhUsers)) { + //有人获得了推荐水滴就是间推 + + $i = 1; + foreach ($hhUsers as $hhUser) { + $jkChildren = $hhUser->getJkChildrenCount(); + $amount = 0; + + if ($i > 1) { + break; + } + + //间接 + if ($score) { + if ($jkChildren > 10) { + $rateName = 'recommend_rate_indirect_jk_balance_gt'; + } else { + $rateName = 'recommend_rate_indirect_jk_balance_lte'; + } + } else {//直接 + if ($jkChildren > 10) { + $rateName = 'recommend_rate_jk_balance_gt'; + } else { + $rateName = 'recommend_rate_jk_balance_lte'; + } + + $rule_name = 'recommend_jk_balance'; + } + + $hasRate = $hhIdentity->getRule($rateName, 0);//获取比例 + $rateData = self::getNonZeroRate($hasRate); + $amount = bcmul($order->price, $rateData, 2); + + if ($amount) { + //执行分润 + $hhUser->account->rule( + $rule_name, + $amount, + false, + array_merge($source, [ + 'user_order_id' => $order->id, + 'rate' => $rateData + ]) + ); + //培育津贴 + self::allowance($hhUser, $amount, $source); + } + + $i++; + } + } else { + info('没有找到合伙人'); + } + } + + /** + * Notes: 合伙人间推季卡 + * + * @Author: 玄尘 + * @Date: 2022/8/19 15:13 + */ + public static function setHhRecommendNk($score, $user, $order, $source) + { + $hhUsers = $user->getParentHh();//获取所有合伙人 + $hhIdentity = Identity::query()->where('job', Identity::JOB_HH)->first(); + $rule_name = 'recommend_indirect_nk_balance'; + if ($hhIdentity && ! empty($hhUsers)) { + //有人获得了推荐水滴就是间推 + $i = 1; + foreach ($hhUsers as $hhUser) { + $nkChildren = $hhUser->getNkChildrenCount(); + $amount = 0; + if ($i > 1) { + break; + } + + //间接 + if ($score) { + if ($nkChildren > 10) { + $rateName = 'recommend_rate_indirect_nk_balance_gt'; + } else { + $rateName = 'recommend_rate_indirect_nk_balance_lte'; + } + } else {//直接 + if ($nkChildren > 10) { + $rateName = 'recommend_rate_nk_balance_gt'; + } else { + $rateName = 'recommend_rate_nk_balance_lte'; + } + + $rule_name = 'recommend_nk_balance'; + } + $hasRate = $hhIdentity->getRule($rateName, 0);//获取比例 + $rateData = self::getNonZeroRate($hasRate); + $amount = bcmul($order->price, $rateData, 2); + + + if ($amount > 0) { + //执行分润 + $hhUser->account->rule( + $rule_name, + $amount, + false, + array_merge($source, [ + 'user_order_id' => $order->id, + 'rate' => $rateData + ]) + ); + + //培育津贴 + self::allowance($hhUser, $amount, $source); + } + $i++; + } + } + } + + + /** + * Notes: 获取百分比数据 + * + * @Author: 玄尘 + * @Date: 2022/8/19 14:56 + * @param $rate + * @param $decimals + * @return int|string|null + */ + public static function getNonZeroRate($rate, $decimals = 2) + { + return $rate > 0 ? bcdiv($rate, 100, $decimals) : 0; + } + + /** + * Notes: 培育津贴 + * + * @Author: 玄尘 + * @Date: 2022/8/30 14:32 + */ + public static function allowance(User $user, $amount, $source) + { + $UserIdentity = $user->identityFirst(); + $hasRate = $UserIdentity->getRule('recommend_rate_allowance', 0);//获取培育津贴比例 + if ($UserIdentity->job == Identity::JOB_HH && $hasRate) { + $hhUsers = $user->getParentHh();//获取所有合伙人 + $rateData = self::getNonZeroRate($hasRate); + $amount = bcmul($amount, $rateData, 2); + + $i = 1; + if (! empty($hhUsers)) { + foreach ($hhUsers as $hhUser) { + if ($i > 1) { + break; + } + $hhUser->account->rule( + 'allowance_balance', + $amount, + false, + $source + ); + $i++; + } + } + } + + } + + +} diff --git a/app/Channels/WechatMiniChannel.php b/app/Channels/WechatMiniChannel.php new file mode 100644 index 0000000..532c002 --- /dev/null +++ b/app/Channels/WechatMiniChannel.php @@ -0,0 +1,15 @@ +toWeChat($notifiable); + } + +} \ No newline at end of file diff --git a/app/Console/Commands/MonthPerfCommand.php b/app/Console/Commands/MonthPerfCommand.php new file mode 100644 index 0000000..e136684 --- /dev/null +++ b/app/Console/Commands/MonthPerfCommand.php @@ -0,0 +1,36 @@ +argument('last') ?: 0; + + User::whereHas('identities', function ($query) { + $query->where('id', 6); + }) + ->whereHas('identityMiddle', function ($query) { + $query->where('star', '>', 0); + }) + ->chunkById(100, function ($users) use ($last) { + foreach ($users as $user) { + MonthPerfJob::dispatch($user, $last); + } + }); + } +} diff --git a/app/Console/Commands/StartBounsCommand.php b/app/Console/Commands/StartBounsCommand.php new file mode 100644 index 0000000..90a8b59 --- /dev/null +++ b/app/Console/Commands/StartBounsCommand.php @@ -0,0 +1,57 @@ +argument('star') ?: 0; + if (!in_array($star, Bouns::TYPEARRAY)) { + throw new Exception('星级参数不正确'); + } + $last = $this->argument('last') ?: 0; + + $time = now()->startOfMonth()->toDateTimeString(); + if ($last) { + $time = now()->subMonth()->startOfMonth()->toDateTimeString(); + } + $bouns = Bouns::where('date', $time) + ->where('type', $star) + ->where('status', Bouns::STATUS_INIT) + ->first(); + if (!$bouns) { + throw new Exception('分红内容不存在或状态不正确'); + } + $bounsUserPerf = BounsUserPerf::where('date', $bouns->date) + ->where('star', '>=', $bouns->type) + ->get(); + if ($bounsUserPerf->count() > 0) { + $allOld = bcmul($bounsUserPerf->sum('old_perf'), 0.3, 4);//累计业绩 + $allNew = bcmul($bounsUserPerf->sum('new_perf'), 0.7, 4);//新增业绩 + $allPerf = bcadd($allOld, $allNew, 4);//总业绩 + $price = bcdiv($bouns->total, $allPerf, 6);//单价 + $bouns->doIng(); + foreach ($bounsUserPerf as $bounsPerf) { + SendBounsJob::dispatch($bounsPerf, $price, $bouns); + } + } else { + $bouns->doEnd(); + } + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100644 index 0000000..4f58b2b --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,66 @@ +command('inspire')->hourly(); + $schedule->command('Bonus:MonthPerf 1')->monthlyOn(1, '00:01'); + $schedule->command('Bonus:StartMonth 1 1')->monthlyOn(1, '00:10'); + $schedule->command('Bonus:StartMonth 2 1')->monthlyOn(1, '00:15'); + $schedule->command('Bonus:StartMonth 3 1')->monthlyOn(1, '00:20'); + $schedule->command('Bonus:StartMonth 4 1')->monthlyOn(1, '00:25'); + $schedule->command('Bonus:StartMonth 5 1')->monthlyOn(1, '00:30'); + $this->modules($schedule); + } + + /** + * 要执行任务的位置增加Console\Kernel类 + * 类中 runCommand(Schedule $schedule) + * 模型中的command在模型的ServiceProvider自行注册 + * @param \Illuminate\Console\Scheduling\Schedule $schedule + */ + protected function modules(Schedule $schedule) + { + $data = ModuleManager::toCollection(); + foreach ($data as $name => $module) { + $nameSpace = "\\Modules\\$name\\Console\\Kernel"; + if (class_exists($nameSpace)) { + $runKernel = resolve($nameSpace); + $runKernel->runCommand($schedule); + } + } + } + + /** + * Register the commands for the application. + * @return void + */ + protected function commands() + { + $this->load(__DIR__.'/Commands'); + + // require base_path('routes/console.php'); + } + +} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php new file mode 100644 index 0000000..68b212b --- /dev/null +++ b/app/Exceptions/Handler.php @@ -0,0 +1,43 @@ +reportable(function (Throwable $e) { + // + }); + } + +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..1af52c2 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,29 @@ + + * @param string $token + * @return array + */ + protected function respondWithToken(string $token): array + { + return [ + 'access_token' => $token, + 'token_type' => 'Bearer', + 'expires_in' => auth('api')->factory()->getTTL() * 60, + ]; + } + +} diff --git a/app/Http/Controllers/ImageController.php b/app/Http/Controllers/ImageController.php new file mode 100644 index 0000000..df5a1dd --- /dev/null +++ b/app/Http/Controllers/ImageController.php @@ -0,0 +1,18 @@ +name; + $img = Material::query()->where('title', $name)->first(); + + return view('image', compact('img')); + } +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php new file mode 100644 index 0000000..28f3dd2 --- /dev/null +++ b/app/Http/Kernel.php @@ -0,0 +1,66 @@ + [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + // \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ +// 'throttle:api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + ]; + + /** + * The application's route middleware. + * + * These middleware may be assigned to groups or used individually. + * + * @var array + */ + protected $routeMiddleware = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + ]; +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..704089a --- /dev/null +++ b/app/Http/Middleware/Authenticate.php @@ -0,0 +1,21 @@ +expectsJson()) { + return route('login'); + } + } +} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..033136a --- /dev/null +++ b/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..a8a252d --- /dev/null +++ b/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,19 @@ +allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..a3b6aef --- /dev/null +++ b/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,23 @@ +user = $user->fresh(); + $this->order = $order->fresh(); + $this->source = $source; + } + + public function handle() + { + IdentityBonus::BuyIdentity($this->user, $this->order, $this->source); + } + +} \ No newline at end of file diff --git a/app/Jobs/Bonus/MonthPerfJob.php b/app/Jobs/Bonus/MonthPerfJob.php new file mode 100644 index 0000000..e6367d5 --- /dev/null +++ b/app/Jobs/Bonus/MonthPerfJob.php @@ -0,0 +1,57 @@ +user = $user->fresh(); + $this->last = $last; + } + + public function handle() + { + $time = [now()->startOfMonth()->toDateTimeString(), now()->endOfMonth()->toDateTimeString()]; + if ($this->last) { + $time = [ + now()->subMonth()->startOfMonth()->toDateTimeString(), + now()->subMonth()->endOfMonth()->toDateTimeString() + ]; + } + $old = $this->user->allPerf(); + $new = $this->user->allPerf($time); + BounsUserPerf::updateOrCreate([ + 'user_id' => $this->user->id, + 'date' => $time[0], + ], [ + 'star' => $this->user->identityFirst()->pivot->star, + 'old_perf' => $old, + 'new_perf' => $new, + ]); + } +} diff --git a/app/Jobs/Bonus/SendBounsJob.php b/app/Jobs/Bonus/SendBounsJob.php new file mode 100644 index 0000000..c6f16bb --- /dev/null +++ b/app/Jobs/Bonus/SendBounsJob.php @@ -0,0 +1,55 @@ +bounsPerf = $bounsPerf->fresh(); + $this->price = $price; + $this->bouns = $bouns; + } + + public function handle() + { + try { + $perf = bcadd(bcmul($this->bounsPerf->old_perf, 0.3, 4), + bcmul($this->bounsPerf->new_perf, 0.7, 4), 4); + + $this->bounsPerf->price = $this->price; + $this->bounsPerf->amount = $this->price * $perf; + $this->bounsPerf->user->account->rule('star_balance', $this->bounsPerf->amount, false, [ + 'remark' => Bouns::TYPES[$this->bouns->type], + 'star' => $this->bouns->type, + ]); + } catch (\Exception $e) { + $this->bounsPerf->status = BounsUserPerf::STATUS_ERROR; + } + $this->bounsPerf->save(); + if (Job::where('queue', 'BONUS')->where('payload', 'like', '%SendBounsJob%')->count() <= 1) { + $this->bouns->doEnd(); + } + } +} diff --git a/app/Listeners/PaymentPaidListener.php b/app/Listeners/PaymentPaidListener.php new file mode 100644 index 0000000..992e0b4 --- /dev/null +++ b/app/Listeners/PaymentPaidListener.php @@ -0,0 +1,15 @@ +payment; + + } +} diff --git a/app/Listeners/UserOrderPaidListener.php b/app/Listeners/UserOrderPaidListener.php new file mode 100644 index 0000000..3d30d3a --- /dev/null +++ b/app/Listeners/UserOrderPaidListener.php @@ -0,0 +1,41 @@ +order; + $user = $event->order->user; + $identity = $event->order->identity; + $source = [ + 'identity_id' => $identity->id, + 'order_id' => $event->order->id, + 'type' => $event->order->type, + ]; + +// BuyIdentityJob::dispatch($user, $order, $source);//个人赠送水滴 +// Bouns::addBouns($order, $order->price); + + #TODO 开通会员赠送水滴 +// TaskFacade::do('open_vip', $user->id, [ +// 'identity_id' => $event->order->identity_id +// ]); + + #TODO 邀请一名健康体验馆 赠送水滴 +// if ($user->parent) { +// TaskFacade::do('recommend_ty', $user->parent->id, [ +// 'user_id' => $user->id +// ]); +// } + } + +} diff --git a/app/Models/Bouns.php b/app/Models/Bouns.php new file mode 100644 index 0000000..8931f29 --- /dev/null +++ b/app/Models/Bouns.php @@ -0,0 +1,128 @@ + 'array', + ]; + const ONE_STAR = 1; + const TWO_STAR = 2; + const THREE_STAR = 3; + const FOUR_STAR = 4; + const FIVE_STAR = 5; + const TYPES = [ + self::ONE_STAR => '一星分红', + self::TWO_STAR => '二星分红', + self::THREE_STAR => '三星分红', + self::FOUR_STAR => '四星分红', + self::FIVE_STAR => '五星分红', + ]; + + const TYPEARRAY = [self::ONE_STAR, self::TWO_STAR, self::THREE_STAR, self::FOUR_STAR, self::FIVE_STAR]; + + const STATUS_INIT = 0; + const STATUS_SENDING = 1; + const STATUS_SENDED = 2; + const STATUS_REJECT = 8; + const STATUS_ERROR = 9; + const STATUS = [ + self::STATUS_INIT => '待发放', + self::STATUS_SENDING => '发放中', + self::STATUS_SENDED => '发放完毕', + self::STATUS_REJECT => '停发', + self::STATUS_ERROR => '错误', + ]; + + protected function orders() + { + return $this->hasMany(BounsOrder::class); + } + + /** + * 增加累计额度,增加对应订单记录 + * @param BaseModel $order + * @param float $total + * @param float $rate + * @return void + */ + protected function addAmount(BaseModel $order, float $total, float $rate) + { + $amount = bcmul($total, bcdiv($rate, 100, 4), 2); + if ($this->orders()->create([ + 'order_type' => $order->getMorphClass(), + 'order_id' => $order->id, + 'type' => $this->type, + 'total' => $total, + 'amount' => $amount, + ])) { + $this->increment('total', $amount); + } + } + + /** + * 获取分红模型 + * @param int $type 类别 + * @param bool $last 是否上一期 + * @return mixed + */ + public static function getBouns(int $type, bool $last = false) + { + $time = now()->startOfMonth(); + if ($last) { + $time = now()->subMonth()->startOfMonth(); + } + return Bouns::firstOrCreate([ + 'type' => $type, + 'date' => $time->toDateTimeString(), + ], [ + 'total' => 0, + 'status' => self::STATUS_INIT, + ]); + } + + /** + * 增加分红 + * @param BaseModel $order 订单 + * @param float $total 订单金额(未计算前) + * @return void + */ + public static function addBouns(BaseModel $order, float $total) + { + $rateArray = [ + self::ONE_STAR => app('Conf_user')['one_star_balance_rate'] ?? 0, + self::TWO_STAR => app('Conf_user')['two_star_balance_rate'] ?? 0, + self::THREE_STAR => app('Conf_user')['three_star_balance_rate'] ?? 0, + self::FOUR_STAR => app('Conf_user')['four_star_balance_rate'] ?? 0, + self::FIVE_STAR => app('Conf_user')['five_star_balance_rate'] ?? 0, + ]; + foreach ($rateArray as $key => $rate) { + if ($rate > 0) { + $model = Bouns::getBouns($key); + $model->addAmount($order, $total, $rate); + } + } + } + + public function doIng() + { + $this->status = self::STATUS_SENDING; + $this->save(); + } + + public function doEnd() + { + $this->status = self::STATUS_SENDED; + $this->save(); + } + + public function doError() + { + $this->status = self::STATUS_ERROR; + $this->save(); + } +} diff --git a/app/Models/BounsOrder.php b/app/Models/BounsOrder.php new file mode 100644 index 0000000..fa3700b --- /dev/null +++ b/app/Models/BounsOrder.php @@ -0,0 +1,12 @@ +belongsTo(Bouns::class); + } +} diff --git a/app/Models/BounsUserPerf.php b/app/Models/BounsUserPerf.php new file mode 100644 index 0000000..706e7fe --- /dev/null +++ b/app/Models/BounsUserPerf.php @@ -0,0 +1,26 @@ + '待发放', + self::STATUS_SUCCESS => '完成', + self::STATUS_ERROR => '失败', + ]; + + public function bouns() + { + return $this->belongsTo(Bouns::class); + } +} diff --git a/app/Models/Job.php b/app/Models/Job.php new file mode 100644 index 0000000..a7eb155 --- /dev/null +++ b/app/Models/Job.php @@ -0,0 +1,8 @@ + + * @return \Illuminate\Pagination\LengthAwarePaginator + */ + public function paginate(): LengthAwarePaginator + { + $perPage = Request::get('per_page', 20); + // $page = Request::get('page', 1); + // $start = ($page - 1) * $perPage; + + $data = ModuleManager::toCollection(); + + $movies = $data->map(function ($module) { + return [ + 'id' => $module->getName(), + 'name' => $module->getName(), + 'alias' => $module->getAlias(), + 'description' => $module->getDescription(), + 'priority' => $module->getPriority(), + 'keywords' => $module->get('keywords'), + 'requires' => $module->getRequires(), + 'enabled' => $module->isEnabled(), + 'version' => $module->get('version'), + 'author' => $module->get('author'), + ]; + }); + + $movies = static::hydrate($movies->toArray()); + + $paginator = new LengthAwarePaginator($movies, ModuleManager::count(), $perPage); + + $paginator->setPath(url()->current()); + + return $paginator; + } + +} diff --git a/app/Notifications/SystemOpenVip.php b/app/Notifications/SystemOpenVip.php new file mode 100644 index 0000000..d6fea2c --- /dev/null +++ b/app/Notifications/SystemOpenVip.php @@ -0,0 +1,100 @@ +identity; + $remark = '赠送'.$identity->stock.'箱水'; +// if ($identity->job == Identity::JOB_HH) { +// $remark = '开启奖金模式'; +// } + + $this->title = "恭喜您!开通{$identityMiddle->identity->name}成功!"; + $this->identityMiddle = $identityMiddle; + $this->identity = $identity; + $this->remark = $remark; + $this->url = config('user.web.base'); + } + + public function via(): array + { + return [DatabaseChannel::class, WechatMiniChannel::class]; + } + + /** + * Notes: 开通会员 + * + * @Author: 玄尘 + * @Date: 2022/8/9 10:44 + * @param User $notifiable + * @return bool + */ + public function toWeChat(User $notifiable): bool + { + if ($notifiable->isOfficialSubscribe()) { + $app = app('wechat.official_account'); + + $start_at = $this->identityMiddle->started_at ?? ''; + $end_at = $this->identityMiddle->ended_at ?? ''; + $time = $start_at.' ~ '.$end_at; + if (empty($start_at) || empty($end_at)) { + $time = '永久'; + } + + $app->template_message->send([ + 'touser' => $notifiable->wechat->official_openid, + 'template_id' => 'gtS1LS9Irw7h2RtQLT5Cxx4p28-k8PrPyH53HBU2oWk', + 'url' => $this->url, + 'data' => [ + 'first' => $this->title, + 'keyword1' => $time, + 'keyword2' => $this->remark, + 'remark' => '', + ], + ]); + + } + + return true; + } + + /** + * 发送到数据库 + * + * @param mixed $notifiable + * @return array + */ + public function toDatabase(User $notifiable): array + { + return [ + 'title' => $this->title, + 'content' => $this->remark, + 'url' => $this->url, + ]; + } +} diff --git a/app/Notifications/SystemOrderDelivered.php b/app/Notifications/SystemOrderDelivered.php new file mode 100644 index 0000000..c3ba1df --- /dev/null +++ b/app/Notifications/SystemOrderDelivered.php @@ -0,0 +1,90 @@ +title = $title; + $this->order = $order; + $this->url = $url; + } + + public function via(): array + { + return [DatabaseChannel::class, WechatMiniChannel::class]; + } + + /** + * Notes: 订单发货 + * + * @Author: 玄尘 + * @Date: 2022/8/4 16:22 + * @param User $notifiable + * @return bool + */ + public function toWeChat(User $notifiable): bool + { + if ($notifiable->isOfficialSubscribe()) { + $app = app('wechat.official_account'); + $remark = '您的宝贝已经发货,请耐心等待'; + if ($this->order->express->type == OrderExpress::TYPE_LOGISTICS) { + $remark .= ',经办人:'.$this->order->express->person; + } + + $res = $app->template_message->send([ + 'touser' => $notifiable->wechat->official_openid, + 'template_id' => 'UvUA6wvPSegvT7i8IVrLipktbtCmyjtdnuKD8EvyOO8', + 'url' => $this->url, + 'data' => [ + 'first' => $this->title, + 'keyword1' => $this->order->order_no, + 'keyword2' => $this->order->express->deliver_at, + 'keyword3' => $this->order->express->express_id > 0 ? $this->order->express->express->name : '', + 'keyword4' => $this->order->express->express_no ?? '', + 'keyword5' => $this->order->express->getFullAddress(), + 'remark' => $remark, + ], + ]); + } + return true; + } + + /** + * Notes: 数据库 + * + * @Author: 玄尘 + * @Date: 2022/8/4 16:38 + * @param User $notifiable + * @return array + */ + public function toDatabase(User $notifiable): array + { + return [ + 'title' => $this->title, + 'content' => '订单编号:'.$this->order->order_no.' 已发货', + 'url' => $this->url, + ]; + } +} diff --git a/app/Notifications/SystemRemindUserSign.php b/app/Notifications/SystemRemindUserSign.php new file mode 100644 index 0000000..c97b459 --- /dev/null +++ b/app/Notifications/SystemRemindUserSign.php @@ -0,0 +1,81 @@ +title = '喝水打卡提醒'; + $this->content = '您今天还没有喝水打卡,请前去打卡'; + $this->url = config('user.web.base'); + } + + public function via(): array + { + return [DatabaseChannel::class, WechatMiniChannel::class]; + } + + /** + * Notes: 喝水打卡提醒 + * + * @Author: 玄尘 + * @Date: 2022/8/8 8:48 + * @param User $notifiable + * @return bool + */ + public function toWeChat(User $notifiable): bool + { + if ($notifiable->isOfficialSubscribe()) { + $app = app('wechat.official_account'); + + $app->template_message->send([ + 'touser' => $notifiable->wechat->official_openid, + 'template_id' => 'N7-vo1bSYXahw22pplkHtI7WGg96dPf1KdMxbKdx6ao', + 'url' => $this->url, + 'data' => [ + 'first' => $this->title, + 'keyword1' => now(), + 'keyword2' => $this->content, + 'remark' => '', + ], + ]); + + } + + return true; + } + + /** + * 发送到数据库 + * + * @param mixed $notifiable + * @return array + */ + public function toDatabase(User $notifiable): array + { + return [ + 'title' => $this->title, + 'content' => $this->content, + 'url' => $this->url, + ]; + } +} diff --git a/app/Notifications/SystemUpdateCase.php b/app/Notifications/SystemUpdateCase.php new file mode 100644 index 0000000..2456b30 --- /dev/null +++ b/app/Notifications/SystemUpdateCase.php @@ -0,0 +1,81 @@ +title = '上传报告提醒'; + $this->url = config('user.web.base'); + } + + public function via(): array + { + return [DatabaseChannel::class, WechatMiniChannel::class]; + } + + /** + * Notes: 喝水打卡提醒 + * + * @Author: 玄尘 + * @Date: 2022/8/8 8:48 + * @param User $notifiable + * @return bool + */ + public function toWeChat(User $notifiable): bool + { + if ($notifiable->isOfficialSubscribe()) { + $app = app('wechat.official_account'); + + $app->template_message->send([ + 'touser' => $notifiable->wechat->official_openid, + 'template_id' => '3sksrHdMTu3k1yderqyP5hOYXWltNf-CvESRG4r3Fnc', + 'url' => $this->url, + 'data' => [ + 'first' => $this->title, + 'keyword1' => now(), + 'keyword2' => '您已经连续打卡30天,请上传报告', + 'remark' => '', + ], + ]); + + } + + return true; + } + + /** + * 发送到数据库 + * + * @param mixed $notifiable + * @return array + */ + public function toDatabase(User $notifiable): array + { + return [ + 'title' => $this->title, + 'content' => '您已经连续打卡30天,请上传报告', + 'url' => $this->url, + ]; + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..ee8ca5b --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,28 @@ + 'App\Policies\ModelPolicy', + ]; + + /** + * Register any authentication / authorization services. + * + * @return void + */ + public function boot() + { + $this->registerPolicies(); + + // + } +} diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..395c518 --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,21 @@ + [ + UserOrderPaidListener::class, + ], + ]; + + /** + * Register any events for your application. + * + * @return void + */ + public function boot() + { + // + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..3bd3c81 --- /dev/null +++ b/app/Providers/RouteServiceProvider.php @@ -0,0 +1,63 @@ +configureRateLimiting(); + + $this->routes(function () { + Route::prefix('api') + ->middleware('api') + ->namespace($this->namespace) + ->group(base_path('routes/api.php')); + + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web.php')); + }); + } + + /** + * Configure the rate limiters for the application. + * + * @return void + */ + protected function configureRateLimiting() + { + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip()); + }); + } +} diff --git a/app/Traits/HasClicks.php b/app/Traits/HasClicks.php new file mode 100644 index 0000000..aa241f7 --- /dev/null +++ b/app/Traits/HasClicks.php @@ -0,0 +1,84 @@ + + * @return string + */ + private function getClicksField(): string + { + return $this->clicks_filed ?? 'clicks'; + } + + /** + * Notes : 获取缓存前缀 + * @Date : 2021/3/16 5:52 下午 + * @Author : < Jason.C > + * @return string + */ + private function getClickCachePrefix(): string + { + return $this->cachePrefix ?? class_basename(__CLASS__); + } + + /** + * Notes : 生成一个缓存KEY + * @Date : 2021/3/16 5:52 下午 + * @Author : < Jason.C > + * @param string|null $appends + * @return string + */ + private function getCacheKey(string $appends = null): string + { + return $this->getClickCachePrefix() . ':' . $this->getKey() . ':' . $appends; + } + + /** + * Notes : 增加点击量 + * @Date : 2021/3/17 9:20 上午 + * @Author : < Jason.C > + * @param int $step + */ + public function incrementClicks(int $step = 1): void + { + Cache::increment($this->getCacheKey('clicks'), $step); + + if (rand(1, $this->saveRate) === 1) { + $this->update([$this->getClicksField() => $this->clicks]); + } + } + + /** + * Notes : 获取缓存的浏览次数 + * @Date : 2021/3/16 5:52 下午 + * @Author : < Jason.C > + * @return int + */ + public function getClicksAttribute(): int + { + $clicks = Cache::get($this->getCacheKey('clicks')); + + if (is_null($clicks)) { + return Cache::rememberForever($this->getCacheKey('clicks'), function () { + return $this->getAttributes()[$this->getClicksField()]; + }); + } else { + return $clicks; + } + } + +} \ No newline at end of file diff --git a/app/Traits/HasCovers.php b/app/Traits/HasCovers.php new file mode 100644 index 0000000..b8f7562 --- /dev/null +++ b/app/Traits/HasCovers.php @@ -0,0 +1,83 @@ + + * @return string + */ + public function getCoverField(): string + { + return $this->cover_field ?? 'cover'; + } + + /** + * Notes : 获取图片字段(多图) + * @Date : 2021/3/16 4:35 下午 + * @Author : < Jason.C > + * @return string + */ + public function getPicturesField(): string + { + return $this->pictures_field ?? 'pictures'; + } + + /** + * Notes : 解析单图地址 + * @Date : 2021/3/16 4:54 下午 + * @Author : < Jason.C > + * @return string + */ + public function getCoverUrlAttribute(): string + { + $cover = $this->getAttribute($this->getCoverField()); + + return $this->parseImageUrl($cover); + } + + /** + * Notes : 解析多图地址 + * @Date : 2021/3/16 4:54 下午 + * @Author : < Jason.C > + * @return array + */ + public function getPicturesUrlAttribute(): array + { + $pictures = $this->getAttribute($this->getPicturesField()); + + if (empty($pictures)) { + return []; + } + + return collect($pictures)->map(function ($picture) { + return $this->parseImageUrl($picture); + })->toArray(); + } + + /** + * Notes : 解析图片文件的实际展示地址 + * @Date : 2021/3/16 4:53 下午 + * @Author : < Jason.C > + * @param string|null $image + * @return string + */ + public function parseImageUrl(?string $image): string + { + if (empty($image)) { + return ''; + } elseif (Str::startsWith($image, 'http')) { + return $image; + } else { + return Storage::url($image); + } + } + +} \ No newline at end of file diff --git a/app/Traits/HasStatus.php b/app/Traits/HasStatus.php new file mode 100644 index 0000000..763e116 --- /dev/null +++ b/app/Traits/HasStatus.php @@ -0,0 +1,87 @@ + + * @return string + */ + protected function getStatusField(): string + { + return $this->status_field ?? 'status'; + } + + /** + * Notes : 获取各状态的名称 + * @Date : 2021/5/27 11:50 上午 + * @Author : < Jason.C > + * @return string[] + */ + protected function getStatusMap(): array + { + return isset($this->status_map) && !empty($this->status_map) ? $this->status_map : [ + 0 => '待审核', + 1 => '正常', + 2 => '驳回', + 3 => '关闭', + ]; + } + + /** + * 正常显示的数据 + * @Author: + * @Date :2021-04-09 + * @param \Illuminate\Database\Eloquent\Builder $query + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeShown(Builder $query): Builder + { + return $query->where($this->getStatusField(), 1); + } + + /** + * 不显示的数据 + * @Author : + * @Date :2021-04-09 + * @param \Illuminate\Database\Eloquent\Builder $query + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeHidden(Builder $query): Builder + { + return $query->where($this->getStatusField(), 0); + } + + /** + * Notes : 状态查询 + * @Date : 2021/6/28 10:25 上午 + * @Author : < Jason.C > + * @param \Illuminate\Database\Eloquent\Builder $query + * @param int $status + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeOfStatus(Builder $query, int $status): Builder + { + return $query->where($this->getStatusField(), $status); + } + + /** + * Notes : 获取状态的文本信息 + * @Date : 2021/4/25 2:10 下午 + * @Author : < Jason.C > + * @return string + */ + public function getStatusTextAttribute(): string + { + $map = $this->getStatusMap(); + + return $map[$this->{$this->getStatusField()}] ?? '未知'; + } + +} diff --git a/app/Traits/Macroable.php b/app/Traits/Macroable.php new file mode 100644 index 0000000..eabc13e --- /dev/null +++ b/app/Traits/Macroable.php @@ -0,0 +1,50 @@ +getRelationshipFromMethod($key); + } + + return $relation; + } + + /** + * @param string $method + * @param array $parameters + * @return mixed + */ + public function __call($method, $parameters) + { + if (static::hasMacro($method)) { + return $this->macroCall($method, $parameters); + } + + return parent::__call($method, $parameters); + } + + /** + * @param string $method + * @param array $parameters + * @return mixed + */ + public static function __callStatic($method, $parameters) + { + return parent::__callStatic($method, $parameters); + } + +} \ No newline at end of file diff --git a/app/Traits/OrderByIdDesc.php b/app/Traits/OrderByIdDesc.php new file mode 100644 index 0000000..da59e5b --- /dev/null +++ b/app/Traits/OrderByIdDesc.php @@ -0,0 +1,22 @@ + + * @Date : 2020/1/19 1:42 下午 + */ + public static function bootOrderByIdDesc(): void + { + static::addGlobalScope(function (Builder $builder) { + $builder->orderByDesc('id'); + }); + } + +} diff --git a/app/Traits/OrderByOrderAsc.php b/app/Traits/OrderByOrderAsc.php new file mode 100644 index 0000000..f3c9220 --- /dev/null +++ b/app/Traits/OrderByOrderAsc.php @@ -0,0 +1,22 @@ + + * @Date : 2020/1/19 1:42 下午 + */ + public static function bootOrderByOrderAsc(): void + { + static::addGlobalScope(function (Builder $builder) { + $builder->orderBy('order')->orderByDesc('id'); + }); + } + +} diff --git a/app/Traits/WithPosition.php b/app/Traits/WithPosition.php new file mode 100644 index 0000000..5818d8c --- /dev/null +++ b/app/Traits/WithPosition.php @@ -0,0 +1,65 @@ + + */ + protected function getPositionMap(): array + { + return $this->position_map ?? []; + } + + /** + * Notes: 定位查询作用域 + * @Author: Mr.wang + * @Date : 2021/5/11 10:48 + * @param \Illuminate\Database\Eloquent\Builder $query + * @param int $pos + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeOfPosition(Builder $query, int $pos): Builder + { + return $query->whereRaw('position & ' . $pos); + } + + /** + * Notes: 设置定位 + * @Author: Mr.wang + * @Date : 2020/5/11 10:48 + * @param int $value + */ + protected function setPositionAttribute($value): void + { + if (is_array($value) && !blank($value)) { + $this->attributes['position'] = array_sum($value); + } + } + + /** + * Notes: 获取定位数据 + * @Author: Mr.wang + * @Date : 2020/5/11 10:48 + * @param int $value + * @return array + */ + protected function getPositionAttribute(int $value): array + { + $position = []; + foreach ($this->getPositionMap() as $k => $v) { + if ($k & $value) { + array_push($position, $k); + } + } + + return $position; + } + +} diff --git a/artisan b/artisan new file mode 100644 index 0000000..5c23e2e --- /dev/null +++ b/artisan @@ -0,0 +1,53 @@ +#!/usr/bin/env php +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..037e17d --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..ba3b4e5 --- /dev/null +++ b/composer.json @@ -0,0 +1,96 @@ +{ + "name": "uztech/laravel", + "type": "project", + "description": "The Laravel Framework.", + "keywords": [ + "framework", + "laravel" + ], + "license": "MIT", + "require": { + "php": "^7.4|^8.0", + "alibabacloud/sts": "^1.8", + "encore/laravel-admin": "^1.8", + "fideloper/proxy": "^4.4", + "fruitcake/laravel-cors": "^2.0", + "genealabs/laravel-model-caching": "^0.11.3", + "guzzlehttp/guzzle": "^7.0.1", + "iidestiny/laravel-filesystem-oss": "^2.1", + "intervention/image": "^2.5", + "jasonc/api": "^5.0.0", + "joshbrw/laravel-module-installer": "^2.0", + "laravel-admin-ext/grid-lightbox": "^1.0", + "laravel/framework": "^8.5", + "liuhelong/laravel-admin-wechat": "^1.3", + "maatwebsite/excel": "^3.1", + "nosun/ueditor": "^3.0", + "nwidart/laravel-modules": "^8.2", + "overtrue/chinese-calendar": "^1.0", + "overtrue/easy-sms": "^1.3", + "overtrue/laravel-favorite": "^4.0", + "overtrue/laravel-lang": "~5.0", + "overtrue/laravel-query-logger": "^2.1", + "overtrue/laravel-subscribe": "3.1.0", + "overtrue/laravel-versionable": "^2.6", + "overtrue/laravel-wechat": "^6.0", + "overtrue/socialite": "^3.2", + "overtrue/wechat": "^5.0", + "propaganistas/laravel-phone": "^4.3", + "simplesoftwareio/simple-qrcode": "^4.2", + "symfony/workflow": "^5.2", + "vinkla/hashids": "^9.1", + "wang-tech-commits/kuaidi100-api": "^1.0", + "xuanchen/tencent-map-api": "^1.0", + "yangjisen/laravel-cache-provider": "^3.0", + "yansongda/pay": "^3.1" + }, + "require-dev": { + "facade/ignition": "^2.5", + "fakerphp/faker": "^1.9.1", + "laravel/sail": "^1.0.1", + "mockery/mockery": "^1.4.2", + "nunomaduro/collision": "^5.0", + "phpunit/phpunit": "^9.3.3" + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true, + "allow-plugins": { + "easywechat-composer/easywechat-composer": true, + "joshbrw/laravel-module-installer": true + } + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "autoload": { + "psr-4": { + "App\\": "app/", + "Modules\\": "modules/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "minimum-stability": "dev", + "prefer-stable": true, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" + ] + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..6d44106 --- /dev/null +++ b/composer.lock @@ -0,0 +1,13154 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "8ced0e5b40c53cb2324d6151114eb695", + "packages": [ + { + "name": "adbario/php-dot-notation", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/adbario/php-dot-notation.git", + "reference": "39ece8d385ce2f5e03718c693932d83ab0cb5972" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/adbario/php-dot-notation/zipball/39ece8d385ce2f5e03718c693932d83ab0cb5972", + "reference": "39ece8d385ce2f5e03718c693932d83ab0cb5972", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "php": "^5.5 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8|^5.7|^6.6|^7.5|^8.5|^9.5", + "squizlabs/php_codesniffer": "^3.6" + }, + "type": "library", + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Adbar\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Riku Särkinen", + "email": "riku@adbar.io" + } + ], + "description": "PHP dot notation access to arrays", + "homepage": "https://github.com/adbario/php-dot-notation", + "keywords": [ + "ArrayAccess", + "dotnotation" + ], + "support": { + "issues": "https://github.com/adbario/php-dot-notation/issues", + "source": "https://github.com/adbario/php-dot-notation/tree/2.3.0" + }, + "time": "2022-07-12T02:52:50+00:00" + }, + { + "name": "alibabacloud/client", + "version": "1.5.31", + "source": { + "type": "git", + "url": "https://github.com/aliyun/openapi-sdk-php-client.git", + "reference": "19224d92fe27ab8ef501d77d4891e7660bc023c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aliyun/openapi-sdk-php-client/zipball/19224d92fe27ab8ef501d77d4891e7660bc023c1", + "reference": "19224d92fe27ab8ef501d77d4891e7660bc023c1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "adbario/php-dot-notation": "^2.2", + "clagiordano/weblibs-configmanager": "^1.0", + "danielstjules/stringy": "^3.1", + "ext-curl": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-simplexml": "*", + "ext-xmlwriter": "*", + "guzzlehttp/guzzle": "^6.3|^7.0", + "mtdowling/jmespath.php": "^2.5", + "php": ">=5.5" + }, + "require-dev": { + "composer/composer": "^1.8", + "drupal/coder": "^8.3", + "ext-dom": "*", + "ext-pcre": "*", + "ext-sockets": "*", + "ext-spl": "*", + "league/climate": "^3.2.4", + "mikey179/vfsstream": "^1.6", + "monolog/monolog": "^1.24", + "phpunit/phpunit": "^5.7.27|^6.1", + "psr/cache": "^1.0", + "symfony/dotenv": "^3.4", + "symfony/var-dumper": "^3.4" + }, + "suggest": { + "ext-sockets": "To use client-side monitoring" + }, + "type": "library", + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "AlibabaCloud\\Client\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Alibaba Cloud SDK", + "email": "sdk-team@alibabacloud.com", + "homepage": "http://www.alibabacloud.com" + } + ], + "description": "Alibaba Cloud Client for PHP - Use Alibaba Cloud in your PHP project", + "homepage": "https://www.alibabacloud.com/", + "keywords": [ + "alibaba", + "alibabacloud", + "aliyun", + "client", + "cloud", + "library", + "sdk", + "tool" + ], + "support": { + "issues": "https://github.com/aliyun/openapi-sdk-php-client/issues", + "source": "https://github.com/aliyun/openapi-sdk-php-client" + }, + "time": "2021-05-13T06:26:38+00:00" + }, + { + "name": "alibabacloud/sts", + "version": "1.8.884", + "source": { + "type": "git", + "url": "https://github.com/alibabacloud-sdk-php/sts.git", + "reference": "c9807a06c7047381b8a2ab4952eb11e8d686a488" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alibabacloud-sdk-php/sts/zipball/c9807a06c7047381b8a2ab4952eb11e8d686a488", + "reference": "c9807a06c7047381b8a2ab4952eb11e8d686a488", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "alibabacloud/client": "^1.5", + "php": ">=5.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "AlibabaCloud\\Sts\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Alibaba Cloud SDK", + "email": "sdk-team@alibabacloud.com", + "homepage": "http://www.alibabacloud.com" + } + ], + "description": "Alibaba Cloud Sts SDK for PHP", + "homepage": "https://www.alibabacloud.com/", + "keywords": [ + "alibaba", + "alibabacloud", + "aliyun", + "cloud", + "library", + "sdk", + "sts" + ], + "support": { + "issues": "https://github.com/alibabacloud-sdk-php/sts/issues", + "source": "https://github.com/alibabacloud-sdk-php/sts" + }, + "time": "2019-05-30T05:03:57+00:00" + }, + { + "name": "aliyuncs/oss-sdk-php", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/aliyun/aliyun-oss-php-sdk.git", + "reference": "f0413667d765855eb0aaa728b596801464ffdb06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aliyun/aliyun-oss-php-sdk/zipball/f0413667d765855eb0aaa728b596801464ffdb06", + "reference": "f0413667d765855eb0aaa728b596801464ffdb06", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "*", + "satooshi/php-coveralls": "*" + }, + "type": "library", + "autoload": { + "psr-4": { + "OSS\\": "src/OSS" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aliyuncs", + "homepage": "http://www.aliyun.com" + } + ], + "description": "Aliyun OSS SDK for PHP", + "homepage": "http://www.aliyun.com/product/oss/", + "support": { + "issues": "https://github.com/aliyun/aliyun-oss-php-sdk/issues", + "source": "https://github.com/aliyun/aliyun-oss-php-sdk/tree/v2.5.0" + }, + "time": "2022-05-13T07:41:28+00:00" + }, + { + "name": "asm89/stack-cors", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/asm89/stack-cors.git", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2|^8.0", + "symfony/http-foundation": "^4|^5|^6", + "symfony/http-kernel": "^4|^5|^6" + }, + "require-dev": { + "phpunit/phpunit": "^7|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Asm89\\Stack\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cross-origin resource sharing library and stack middleware", + "homepage": "https://github.com/asm89/stack-cors", + "keywords": [ + "cors", + "stack" + ], + "support": { + "issues": "https://github.com/asm89/stack-cors/issues", + "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" + }, + "time": "2022-01-18T09:12:03+00:00" + }, + { + "name": "bacon/bacon-qr-code", + "version": "2.0.6", + "source": { + "type": "git", + "url": "https://github.com/Bacon/BaconQrCode.git", + "reference": "0069435e2a01a57193b25790f105a5d3168653c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/0069435e2a01a57193b25790f105a5d3168653c1", + "reference": "0069435e2a01a57193b25790f105a5d3168653c1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "dasprid/enum": "^1.0.3", + "ext-iconv": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phly/keep-a-changelog": "^2.1", + "phpunit/phpunit": "^7 | ^8 | ^9", + "spatie/phpunit-snapshot-assertions": "^4.2.9", + "squizlabs/php_codesniffer": "^3.4" + }, + "suggest": { + "ext-imagick": "to generate QR code images" + }, + "type": "library", + "autoload": { + "psr-4": { + "BaconQrCode\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "https://dasprids.de/", + "role": "Developer" + } + ], + "description": "BaconQrCode is a QR code generator for PHP.", + "homepage": "https://github.com/Bacon/BaconQrCode", + "support": { + "issues": "https://github.com/Bacon/BaconQrCode/issues", + "source": "https://github.com/Bacon/BaconQrCode/tree/2.0.6" + }, + "time": "2022-02-04T20:16:05+00:00" + }, + { + "name": "brick/math", + "version": "0.9.3", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", + "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "vimeo/psalm": "4.9.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.9.3" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/brick/math", + "type": "tidelift" + } + ], + "time": "2021-08-15T20:50:18+00:00" + }, + { + "name": "clagiordano/weblibs-configmanager", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/clagiordano/weblibs-configmanager.git", + "reference": "5c8ebcc62782313b1278afe802b120d18c07a059" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clagiordano/weblibs-configmanager/zipball/5c8ebcc62782313b1278afe802b120d18c07a059", + "reference": "5c8ebcc62782313b1278afe802b120d18c07a059", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.4" + }, + "require-dev": { + "clagiordano/phpunit-result-printer": "^1", + "phpunit/phpunit": "^4.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "clagiordano\\weblibs\\configmanager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Claudio Giordano", + "email": "claudio.giordano@autistici.org", + "role": "Developer" + } + ], + "description": "weblibs-configmanager is a tool library for easily read and access to php config array file and direct read/write configuration file / object", + "keywords": [ + "clagiordano", + "configuration", + "manager", + "tool", + "weblibs" + ], + "support": { + "issues": "https://github.com/clagiordano/weblibs-configmanager/issues", + "source": "https://github.com/clagiordano/weblibs-configmanager/tree/v1.2.0" + }, + "time": "2021-05-18T17:55:57+00:00" + }, + { + "name": "danielstjules/stringy", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/danielstjules/Stringy.git", + "reference": "df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/danielstjules/Stringy/zipball/df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e", + "reference": "df24ab62d2d8213bbbe88cc36fc35a4503b4bd7e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.4.0", + "symfony/polyfill-mbstring": "~1.1" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/Create.php" + ], + "psr-4": { + "Stringy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel St. Jules", + "email": "danielst.jules@gmail.com", + "homepage": "http://www.danielstjules.com" + } + ], + "description": "A string manipulation library with multibyte support", + "homepage": "https://github.com/danielstjules/Stringy", + "keywords": [ + "UTF", + "helpers", + "manipulation", + "methods", + "multibyte", + "string", + "utf-8", + "utility", + "utils" + ], + "support": { + "issues": "https://github.com/danielstjules/Stringy/issues", + "source": "https://github.com/danielstjules/Stringy" + }, + "time": "2017-06-12T01:10:27+00:00" + }, + { + "name": "dasprid/enum", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/DASPRiD/Enum.git", + "reference": "5abf82f213618696dda8e3bf6f64dd042d8542b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/5abf82f213618696dda8e3bf6f64dd042d8542b2", + "reference": "5abf82f213618696dda8e3bf6f64dd042d8542b2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require-dev": { + "phpunit/phpunit": "^7 | ^8 | ^9", + "squizlabs/php_codesniffer": "^3.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "DASPRiD\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Ben Scholzen 'DASPRiD'", + "email": "mail@dasprids.de", + "homepage": "https://dasprids.de/", + "role": "Developer" + } + ], + "description": "PHP 7.1 enum implementation", + "keywords": [ + "enum", + "map" + ], + "support": { + "issues": "https://github.com/DASPRiD/Enum/issues", + "source": "https://github.com/DASPRiD/Enum/tree/1.0.3" + }, + "time": "2020-10-02T16:03:48+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "0992cc19268b259a39e86f296da5f0677841f42c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", + "reference": "0992cc19268b259a39e86f296da5f0677841f42c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^3.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.1" + }, + "time": "2021-08-13T13:06:58+00:00" + }, + { + "name": "doctrine/cache", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "~7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/cache": "^4.4 || ^5.4 || ^6", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", + "homepage": "https://www.doctrine-project.org/projects/cache.html", + "keywords": [ + "abstraction", + "apcu", + "cache", + "caching", + "couchdb", + "memcached", + "php", + "redis", + "xcache" + ], + "support": { + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/2.2.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", + "type": "tidelift" + } + ], + "time": "2022-05-20T20:07:39+00:00" + }, + { + "name": "doctrine/dbal", + "version": "3.3.7", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "9f79d4650430b582f4598fe0954ef4d52fbc0a8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/9f79d4650430b582f4598fe0954ef4d52fbc0a8a", + "reference": "9f79d4650430b582f4598fe0954ef4d52fbc0a8a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "composer-runtime-api": "^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/deprecations": "^0.5.3|^1", + "doctrine/event-manager": "^1.0", + "php": "^7.3 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" + }, + "require-dev": { + "doctrine/coding-standard": "9.0.0", + "jetbrains/phpstorm-stubs": "2022.1", + "phpstan/phpstan": "1.7.13", + "phpstan/phpstan-strict-rules": "^1.2", + "phpunit/phpunit": "9.5.20", + "psalm/plugin-phpunit": "0.16.1", + "squizlabs/php_codesniffer": "3.7.0", + "symfony/cache": "^5.2|^6.0", + "symfony/console": "^2.7|^3.0|^4.0|^5.0|^6.0", + "vimeo/psalm": "4.23.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "keywords": [ + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlite", + "sqlserver", + "sqlsrv" + ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/3.3.7" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", + "type": "tidelift" + } + ], + "time": "2022-06-13T21:43:03+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1|^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5|^8.5|^9.5", + "psr/log": "^1|^2|^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + }, + "time": "2022-05-02T15:47:09+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", + "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": "<2.9@dev" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "event dispatcher", + "event manager", + "event system", + "events" + ], + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/1.1.x" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", + "type": "tidelift" + } + ], + "time": "2020-05-29T18:28:51+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "vimeo/psalm": "^4.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:16:43+00:00" + }, + { + "name": "doctrine/lexer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.2.3" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2022-02-28T11:07:21+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.3.1", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2022-01-18T15:43:28+00:00" + }, + { + "name": "easywechat-composer/easywechat-composer", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/mingyoung/easywechat-composer.git", + "reference": "3fc6a7ab6d3853c0f4e2922539b56cc37ef361cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mingyoung/easywechat-composer/zipball/3fc6a7ab6d3853c0f4e2922539b56cc37ef361cd", + "reference": "3fc6a7ab6d3853c0f4e2922539b56cc37ef361cd", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=7.0" + }, + "require-dev": { + "composer/composer": "^1.0 || ^2.0", + "phpunit/phpunit": "^6.5 || ^7.0" + }, + "type": "composer-plugin", + "extra": { + "class": "EasyWeChatComposer\\Plugin" + }, + "autoload": { + "psr-4": { + "EasyWeChatComposer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "张铭阳", + "email": "mingyoungcheung@gmail.com" + } + ], + "description": "The composer plugin for EasyWeChat", + "support": { + "issues": "https://github.com/mingyoung/easywechat-composer/issues", + "source": "https://github.com/mingyoung/easywechat-composer/tree/1.4.1" + }, + "time": "2021-07-05T04:03:22+00:00" + }, + { + "name": "egulias/email-validator", + "version": "2.1.25", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/lexer": "^1.0.1", + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.10" + }, + "require-dev": { + "dominicsayers/isemail": "^3.0.7", + "phpunit/phpunit": "^4.8.36|^7.5.15", + "satooshi/php-coveralls": "^1.0.1" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2020-12-29T14:50:06+00:00" + }, + { + "name": "encore/laravel-admin", + "version": "v1.8.19", + "source": { + "type": "git", + "url": "https://github.com/z-song/laravel-admin.git", + "reference": "6c292ebb5efa886fa4776d86e975180608505946" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/z-song/laravel-admin/zipball/6c292ebb5efa886fa4776d86e975180608505946", + "reference": "6c292ebb5efa886fa4776d86e975180608505946", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/dbal": "2.*|3.*", + "laravel/framework": ">=5.5", + "php": ">=7.0.0", + "symfony/dom-crawler": "~3.1|~4.0|~5.0" + }, + "require-dev": { + "fzaninotto/faker": "~1.4", + "intervention/image": "~2.3", + "laravel/browser-kit-testing": "^6.0", + "laravel/laravel": ">=5.5", + "spatie/phpunit-watcher": "^1.22.0" + }, + "suggest": { + "intervention/image": "Required to handling and manipulation upload images (~2.3).", + "spatie/eloquent-sortable": "Required to built orderable gird." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Encore\\Admin\\AdminServiceProvider" + ], + "aliases": { + "Admin": "Encore\\Admin\\Facades\\Admin" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Encore\\Admin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "zsong", + "email": "zosong@126.com" + } + ], + "description": "laravel admin", + "homepage": "https://github.com/z-song/laravel-admin", + "keywords": [ + "admin", + "form", + "grid", + "laravel" + ], + "support": { + "issues": "https://github.com/z-song/laravel-admin/issues", + "source": "https://github.com/z-song/laravel-admin/tree/v1.8.19" + }, + "time": "2022-05-24T03:49:38+00:00" + }, + { + "name": "ezyang/htmlpurifier", + "version": "v4.14.0", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "reference": "12ab42bd6e742c70c0a52f7b82477fcd44e64b75", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.2" + }, + "type": "library", + "autoload": { + "files": [ + "library/HTMLPurifier.composer.php" + ], + "psr-0": { + "HTMLPurifier": "library/" + }, + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" + } + ], + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", + "keywords": [ + "html" + ], + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0" + }, + "time": "2021-12-25T01:21:49+00:00" + }, + { + "name": "fideloper/proxy", + "version": "4.4.1", + "source": { + "type": "git", + "url": "https://github.com/fideloper/TrustedProxy.git", + "reference": "c073b2bd04d1c90e04dc1b787662b558dd65ade0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/c073b2bd04d1c90e04dc1b787662b558dd65ade0", + "reference": "c073b2bd04d1c90e04dc1b787662b558dd65ade0", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0|^9.0", + "php": ">=5.4.0" + }, + "require-dev": { + "illuminate/http": "^5.0|^6.0|^7.0|^8.0|^9.0", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Fideloper\\Proxy\\TrustedProxyServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Fideloper\\Proxy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Fidao", + "email": "fideloper@gmail.com" + } + ], + "description": "Set trusted proxies for Laravel", + "keywords": [ + "load balancing", + "proxy", + "trusted proxy" + ], + "support": { + "issues": "https://github.com/fideloper/TrustedProxy/issues", + "source": "https://github.com/fideloper/TrustedProxy/tree/4.4.1" + }, + "time": "2020-10-22T13:48:01+00:00" + }, + { + "name": "fruitcake/laravel-cors", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/laravel-cors.git", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/783a74f5e3431d7b9805be8afb60fd0a8f743534", + "reference": "783a74f5e3431d7b9805be8afb60fd0a8f743534", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "asm89/stack-cors": "^2.0.1", + "illuminate/contracts": "^6|^7|^8|^9", + "illuminate/support": "^6|^7|^8|^9", + "php": ">=7.2" + }, + "require-dev": { + "laravel/framework": "^6|^7.24|^8", + "orchestra/testbench-dusk": "^4|^5|^6|^7", + "phpunit/phpunit": "^6|^7|^8|^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + }, + "laravel": { + "providers": [ + "Fruitcake\\Cors\\CorsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", + "keywords": [ + "api", + "cors", + "crossdomain", + "laravel" + ], + "support": { + "issues": "https://github.com/fruitcake/laravel-cors/issues", + "source": "https://github.com/fruitcake/laravel-cors/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2022-02-23T14:25:13+00:00" + }, + { + "name": "genealabs/laravel-model-caching", + "version": "0.11.7", + "source": { + "type": "git", + "url": "https://github.com/GeneaLabs/laravel-model-caching.git", + "reference": "ff303d782cb63a9c44bcd76a28bde73a67040c7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeneaLabs/laravel-model-caching/zipball/ff303d782cb63a9c44bcd76a28bde73a67040c7e", + "reference": "ff303d782cb63a9c44bcd76a28bde73a67040c7e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "genealabs/laravel-pivot-events": "^8.0", + "illuminate/cache": "^8.0", + "illuminate/config": "^8.0", + "illuminate/console": "^8.0", + "illuminate/container": "^8.0", + "illuminate/database": "^8.0", + "illuminate/http": "^8.0", + "illuminate/support": "^8.0", + "php": "^7.3|^8.0" + }, + "require-dev": { + "doctrine/dbal": "^2.10", + "fakerphp/faker": "^1.11", + "laravel/legacy-factories": "^1.0", + "laravel/nova": "^3.9", + "orchestra/testbench": "^6.0", + "orchestra/testbench-browser-kit": "^6.0", + "php-coveralls/php-coveralls": "^2.2", + "phpmd/phpmd": "^2.7", + "phpunit/phpunit": "^9.0", + "slevomat/coding-standard": "^6.4", + "squizlabs/php_codesniffer": "^3.4", + "symfony/thanks": "^1.2" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "GeneaLabs\\LaravelModelCaching\\Providers\\Service" + ] + } + }, + "autoload": { + "psr-4": { + "GeneaLabs\\LaravelModelCaching\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike Bronner", + "email": "hello@genealabs.com" + } + ], + "description": "Automatic caching for Eloquent models.", + "support": { + "issues": "https://github.com/GeneaLabs/laravel-model-caching/issues", + "source": "https://github.com/GeneaLabs/laravel-model-caching/tree/0.11.7" + }, + "time": "2022-02-03T13:21:28+00:00" + }, + { + "name": "genealabs/laravel-pivot-events", + "version": "8.0", + "source": { + "type": "git", + "url": "https://github.com/GeneaLabs/laravel-pivot-events.git", + "reference": "aafc9d7f6a0b31e0d58bd2b31e38253fbd27c2a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GeneaLabs/laravel-pivot-events/zipball/aafc9d7f6a0b31e0d58bd2b31e38253fbd27c2a9", + "reference": "aafc9d7f6a0b31e0d58bd2b31e38253fbd27c2a9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "illuminate/database": "^8.0", + "illuminate/support": "^8.0" + }, + "require-dev": { + "orchestra/testbench": "^6.0", + "symfony/thanks": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "GeneaLabs\\LaravelPivotEvents\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike Bronner", + "email": "hello@genealabs.com", + "homepage": "https://genealabs.com", + "role": "Developer" + } + ], + "description": "This package introduces new eloquent events for sync(), attach(), detach() or updateExistingPivot() methods on BelongsToMany relation.", + "homepage": "https://github.com/fico7489/laravel-pivot", + "keywords": [ + "eloquent events", + "eloquent extra events", + "laravel BelongsToMany events", + "laravel pivot events", + "laravel sync events" + ], + "support": { + "issues": "https://github.com/fico7489/laravel-pivot/issues", + "source": "https://github.com/fico7489/laravel-pivot" + }, + "time": "2020-09-08T14:39:12+00:00" + }, + { + "name": "giggsey/libphonenumber-for-php", + "version": "8.12.50", + "source": { + "type": "git", + "url": "https://github.com/giggsey/libphonenumber-for-php.git", + "reference": "526c4b7f6d5e173770d8645e76340d7eb25dc348" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/526c4b7f6d5e173770d8645e76340d7eb25dc348", + "reference": "526c4b7f6d5e173770d8645e76340d7eb25dc348", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "giggsey/locale": "^1.7|^2.0", + "php": ">=5.3.2", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "pear/pear-core-minimal": "^1.9", + "pear/pear_exception": "^1.0", + "pear/versioncontrol_git": "^0.5", + "phing/phing": "^2.7", + "php-coveralls/php-coveralls": "^1.0|^2.0", + "symfony/console": "^2.8|^3.0|^v4.4|^v5.2", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "psr-4": { + "libphonenumber\\": "src/" + }, + "exclude-from-classmap": [ + "/src/data/", + "/src/carrier/data/", + "/src/geocoding/data/", + "/src/timezone/data/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Joshua Gigg", + "email": "giggsey@gmail.com", + "homepage": "https://giggsey.com/" + } + ], + "description": "PHP Port of Google's libphonenumber", + "homepage": "https://github.com/giggsey/libphonenumber-for-php", + "keywords": [ + "geocoding", + "geolocation", + "libphonenumber", + "mobile", + "phonenumber", + "validation" + ], + "support": { + "irc": "irc://irc.appliedirc.com/lobby", + "issues": "https://github.com/giggsey/libphonenumber-for-php/issues", + "source": "https://github.com/giggsey/libphonenumber-for-php" + }, + "time": "2022-06-09T14:55:00+00:00" + }, + { + "name": "giggsey/locale", + "version": "2.2", + "source": { + "type": "git", + "url": "https://github.com/giggsey/Locale.git", + "reference": "9c1dca769253f6a3e81f9a5c167f53b6a54ab635" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/giggsey/Locale/zipball/9c1dca769253f6a3e81f9a5c167f53b6a54ab635", + "reference": "9c1dca769253f6a3e81f9a5c167f53b6a54ab635", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2" + }, + "require-dev": { + "ext-json": "*", + "pear/pear-core-minimal": "^1.9", + "pear/pear_exception": "^1.0", + "pear/versioncontrol_git": "^0.5", + "phing/phing": "^2.7", + "php-coveralls/php-coveralls": "^2.0", + "phpunit/phpunit": "^8.5|^9.5", + "symfony/console": "^5.0", + "symfony/filesystem": "^5.0", + "symfony/finder": "^5.0", + "symfony/process": "^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Giggsey\\Locale\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joshua Gigg", + "email": "giggsey@gmail.com", + "homepage": "https://giggsey.com/" + } + ], + "description": "Locale functions required by libphonenumber-for-php", + "support": { + "issues": "https://github.com/giggsey/Locale/issues", + "source": "https://github.com/giggsey/Locale/tree/2.2" + }, + "time": "2022-04-06T07:33:59+00:00" + }, + { + "name": "graham-campbell/manager", + "version": "v4.7.0", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Laravel-Manager.git", + "reference": "b4cafa6491b9c92ecf7ce17521580050a27b8308" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Laravel-Manager/zipball/b4cafa6491b9c92ecf7ce17521580050a27b8308", + "reference": "b4cafa6491b9c92ecf7ce17521580050a27b8308", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "illuminate/contracts": "^5.5 || ^6.0 || ^7.0 || ^8.0 || ^9.0", + "illuminate/support": "^5.5 || ^6.0 || ^7.0 || ^8.0 || ^9.0", + "php": "^7.1.3 || ^8.0" + }, + "require-dev": { + "graham-campbell/analyzer": "^2.4 || ^3.0", + "graham-campbell/testbench-core": "^3.4", + "mockery/mockery": "^1.3.1", + "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\Manager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Manager Provides Some Manager Functionality For Laravel", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Laravel Manager", + "Laravel-Manager", + "connector", + "framework", + "interface", + "laravel", + "manager" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Laravel-Manager/issues", + "source": "https://github.com/GrahamCampbell/Laravel-Manager/tree/v4.7.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/manager", + "type": "tidelift" + } + ], + "time": "2022-01-24T01:59:19+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "0690bde05318336c7221785f2a932467f98b64ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", + "reference": "0690bde05318336c7221785f2a932467f98b64ca", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.0 || ^8.0", + "phpoption/phpoption": "^1.8" + }, + "require-dev": { + "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.4" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2021-11-21T21:41:47+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.4.5", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", + "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5", + "guzzlehttp/psr7": "^1.9 || ^2.4", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-curl": "*", + "php-http/client-integration-tests": "^3.0", + "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.4-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.4.5" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2022-06-20T22:16:13+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.4 || ^5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.5.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:56:57+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.4.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "13388f00956b1503577598873fffb5ae994b5737" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737", + "reference": "13388f00956b1503577598873fffb5ae994b5737", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.8 || ^9.3.10" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.4.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2022-06-20T21:43:11+00:00" + }, + { + "name": "hashids/hashids", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/vinkla/hashids.git", + "reference": "8cab111f78e0bd9c76953b082919fc9e251761be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vinkla/hashids/zipball/8cab111f78e0bd9c76953b082919fc9e251761be", + "reference": "8cab111f78e0bd9c76953b082919fc9e251761be", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-mbstring": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.0 || ^9.4", + "squizlabs/php_codesniffer": "^3.5" + }, + "suggest": { + "ext-bcmath": "Required to use BC Math arbitrary precision mathematics (*).", + "ext-gmp": "Required to use GNU multiple precision mathematics (*)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Hashids\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ivan Akimov", + "email": "ivan@barreleye.com" + }, + { + "name": "Vincent Klaiber", + "email": "hello@doubledip.se" + } + ], + "description": "Generate short, unique, non-sequential ids (like YouTube and Bitly) from numbers", + "homepage": "https://hashids.org/php", + "keywords": [ + "bitly", + "decode", + "encode", + "hash", + "hashid", + "hashids", + "ids", + "obfuscate", + "youtube" + ], + "support": { + "issues": "https://github.com/vinkla/hashids/issues", + "source": "https://github.com/vinkla/hashids/tree/4.1.0" + }, + "time": "2020-11-26T19:24:33+00:00" + }, + { + "name": "iidestiny/flysystem-oss", + "version": "2.7", + "source": { + "type": "git", + "url": "https://github.com/iiDestiny/flysystem-oss.git", + "reference": "c943ce550e973129955275bb17e8182fe8a74020" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/iiDestiny/flysystem-oss/zipball/c943ce550e973129955275bb17e8182fe8a74020", + "reference": "c943ce550e973129955275bb17e8182fe8a74020", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "aliyuncs/oss-sdk-php": "^2.4", + "ext-curl": "*", + "ext-json": "*", + "ext-openssl": "*", + "league/flysystem": "^1.0", + "nesbot/carbon": "^1.24.1 || ^2.0", + "php": "^7.0 || ^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.2", + "phpunit/phpunit": "^6.5", + "symfony/var-dumper": "^3.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Iidestiny\\Flysystem\\Oss\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "iidestiny", + "email": "iidestiny@vip.qq.com" + } + ], + "description": "Flysystem adapter for the Oss storage.", + "keywords": [ + "alioss", + "laravel", + "oss", + "阿里oss" + ], + "support": { + "issues": "https://github.com/iiDestiny/flysystem-oss/issues", + "source": "https://github.com/iiDestiny/flysystem-oss/tree/2.7" + }, + "time": "2021-06-14T10:18:58+00:00" + }, + { + "name": "iidestiny/laravel-filesystem-oss", + "version": "2.1", + "source": { + "type": "git", + "url": "https://github.com/iiDestiny/laravel-filesystem-oss.git", + "reference": "ae3cd6fd3cd727eedda0e2bcd0403a6d79fe4223" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/iiDestiny/laravel-filesystem-oss/zipball/ae3cd6fd3cd727eedda0e2bcd0403a6d79fe4223", + "reference": "ae3cd6fd3cd727eedda0e2bcd0403a6d79fe4223", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "iidestiny/flysystem-oss": "~2.0", + "php": "^7.0|^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Iidestiny\\LaravelFilesystemOss\\OssStorageServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Iidestiny\\LaravelFilesystemOss\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "iidestiny", + "email": "iidestiny@vip.qq.com" + } + ], + "description": "Oss storage filesystem for Laravel.", + "support": { + "issues": "https://github.com/iiDestiny/laravel-filesystem-oss/issues", + "source": "https://github.com/iiDestiny/laravel-filesystem-oss/tree/2.1" + }, + "time": "2020-11-30T06:17:22+00:00" + }, + { + "name": "intervention/image", + "version": "2.7.2", + "source": { + "type": "git", + "url": "https://github.com/Intervention/image.git", + "reference": "04be355f8d6734c826045d02a1079ad658322dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", + "reference": "04be355f8d6734c826045d02a1079ad658322dad", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-fileinfo": "*", + "guzzlehttp/psr7": "~1.1 || ^2.0", + "php": ">=5.4.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.2", + "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15" + }, + "suggest": { + "ext-gd": "to use GD library based image processing.", + "ext-imagick": "to use Imagick based image processing.", + "intervention/imagecache": "Caching extension for the Intervention Image library" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + }, + "laravel": { + "providers": [ + "Intervention\\Image\\ImageServiceProvider" + ], + "aliases": { + "Image": "Intervention\\Image\\Facades\\Image" + } + } + }, + "autoload": { + "psr-4": { + "Intervention\\Image\\": "src/Intervention/Image" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@intervention.io", + "homepage": "https://intervention.io/" + } + ], + "description": "Image handling and manipulation library with support for Laravel integration", + "homepage": "http://image.intervention.io/", + "keywords": [ + "gd", + "image", + "imagick", + "laravel", + "thumbnail", + "watermark" + ], + "support": { + "issues": "https://github.com/Intervention/image/issues", + "source": "https://github.com/Intervention/image/tree/2.7.2" + }, + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + } + ], + "time": "2022-05-21T17:30:32+00:00" + }, + { + "name": "jasonc/api", + "version": "5.0.5", + "source": { + "type": "git", + "url": "https://github.com/cjango/laravel-api.git", + "reference": "5aa10d6bd60267dc91c45ab3d1e8489d88282d6f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cjango/laravel-api/zipball/5aa10d6bd60267dc91c45ab3d1e8489d88282d6f", + "reference": "5aa10d6bd60267dc91c45ab3d1e8489d88282d6f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "laravel/framework": "^8.56", + "laravel/sanctum": "^2.11", + "php": ">=7.4.0", + "yangjisen/laravel-cache-provider": "^3.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Jason\\Api\\ApiServiceProvider" + ], + "aliases": { + "Api": "Jason\\Api" + } + } + }, + "autoload": { + "files": [], + "psr-4": { + "Jason\\Api\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "C.Jason", + "email": "chenjxlg@163.com" + } + ], + "support": { + "issues": "https://github.com/cjango/laravel-api/issues", + "source": "https://github.com/cjango/laravel-api/tree/5.0.5" + }, + "time": "2022-01-25T02:15:36+00:00" + }, + { + "name": "joshbrw/laravel-module-installer", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/joshbrw/laravel-module-installer.git", + "reference": "667820efd0652df8ed61420cd0dec8df1b3ecdd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/joshbrw/laravel-module-installer/zipball/667820efd0652df8ed61420cd0dec8df1b3ecdd2", + "reference": "667820efd0652df8ed61420cd0dec8df1b3ecdd2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "composer-plugin-api": "^2.0", + "php": "7.* || 8.*" + }, + "require-dev": { + "composer/composer": "^2.0", + "mockery/mockery": "~1.0", + "phpunit/phpunit": "~8.0 || ~9.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Joshbrw\\LaravelModuleInstaller\\LaravelModuleInstallerPlugin" + }, + "autoload": { + "psr-4": { + "Joshbrw\\LaravelModuleInstaller\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "support": { + "issues": "https://github.com/joshbrw/laravel-module-installer/issues", + "source": "https://github.com/joshbrw/laravel-module-installer/tree/v2.0.1" + }, + "time": "2021-01-17T21:51:00+00:00" + }, + { + "name": "laravel-admin-ext/grid-lightbox", + "version": "v1.0.3", + "source": { + "type": "git", + "url": "https://github.com/laravel-admin-extensions/grid-lightbox.git", + "reference": "f8a247f0d017eb05830cc720fb621401b1bfbc2c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel-admin-extensions/grid-lightbox/zipball/f8a247f0d017eb05830cc720fb621401b1bfbc2c", + "reference": "f8a247f0d017eb05830cc720fb621401b1bfbc2c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "encore/laravel-admin": "~1.6", + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Encore\\Grid\\Lightbox\\LightboxServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Encore\\Grid\\Lightbox\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "song", + "email": "zosong@126.com" + } + ], + "description": "Turn your grid into a lightbox & gallery", + "homepage": "https://github.com/laravel-admin-ext/grid-lightbox", + "keywords": [ + "extension", + "gallery", + "grid", + "laravel-admin", + "lightbox" + ], + "support": { + "issues": "https://github.com/laravel-admin-extensions/grid-lightbox/issues", + "source": "https://github.com/laravel-admin-extensions/grid-lightbox/tree/v1.0.3" + }, + "time": "2019-10-11T06:38:51+00:00" + }, + { + "name": "laravel-lang/lang", + "version": "10.9.5", + "source": { + "type": "git", + "url": "https://github.com/Laravel-Lang/lang.git", + "reference": "e341421d40f2cd28feca24ab2cb84fa5cb5ddaf6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravel-Lang/lang/zipball/e341421d40f2cd28feca24ab2cb84fa5cb5ddaf6", + "reference": "e341421d40f2cd28feca24ab2cb84fa5cb5ddaf6", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*" + }, + "conflict": { + "laravel-lang/publisher": "<12.0 >=14.0" + }, + "require-dev": { + "dragon-code/pretty-array": "^4.0", + "dragon-code/simple-dto": "^2.3", + "dragon-code/support": "^6.1", + "ext-zip": "*", + "guzzlehttp/guzzle": "^7.3", + "laravel-lang/publisher": "^13.0", + "laravel/breeze": "^1.2", + "laravel/fortify": "^1.7", + "laravel/jetstream": "^2.3", + "laravel/ui": "^3.4", + "orchestra/testbench": "^7.0", + "php": "^8.1", + "phpunit/phpunit": "^9.5", + "symfony/finder": "^6.0", + "symfony/var-dumper": "^6.0", + "vlucas/phpdotenv": "^5.4.1" + }, + "suggest": { + "arcanedev/laravel-lang": "Translations manager and checker for Laravel 5", + "laravel-lang/publisher": "Easy installation and update of translation files for your project", + "overtrue/laravel-lang": "Command to add languages in your project" + }, + "type": "library", + "autoload": { + "psr-4": { + "LaravelLang\\Lang\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laravel-Lang Team", + "homepage": "https://github.com/Laravel-Lang" + } + ], + "description": "Languages for Laravel", + "keywords": [ + "lang", + "languages", + "laravel", + "lpm" + ], + "support": { + "issues": "https://github.com/Laravel-Lang/lang/issues", + "source": "https://github.com/Laravel-Lang/lang" + }, + "funding": [ + { + "url": "https://opencollective.com/laravel-lang", + "type": "open_collective" + } + ], + "time": "2022-06-27T01:57:27+00:00" + }, + { + "name": "laravel/framework", + "version": "v8.83.19", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "4264f2ee12330bdb1be050998f58ba7271236395" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/4264f2ee12330bdb1be050998f58ba7271236395", + "reference": "4264f2ee12330bdb1be050998f58ba7271236395", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/inflector": "^1.4|^2.0", + "dragonmantank/cron-expression": "^3.0.2", + "egulias/email-validator": "^2.1.10", + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "laravel/serializable-closure": "^1.0", + "league/commonmark": "^1.3|^2.0.2", + "league/flysystem": "^1.1", + "monolog/monolog": "^2.0", + "nesbot/carbon": "^2.53.1", + "opis/closure": "^3.6", + "php": "^7.3|^8.0", + "psr/container": "^1.0", + "psr/log": "^1.0|^2.0", + "psr/simple-cache": "^1.0", + "ramsey/uuid": "^4.2.2", + "swiftmailer/swiftmailer": "^6.3", + "symfony/console": "^5.4", + "symfony/error-handler": "^5.4", + "symfony/finder": "^5.4", + "symfony/http-foundation": "^5.4", + "symfony/http-kernel": "^5.4", + "symfony/mime": "^5.4", + "symfony/process": "^5.4", + "symfony/routing": "^5.4", + "symfony/var-dumper": "^5.4", + "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^1.6.1" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.0", + "psr/simple-cache-implementation": "1.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.198.1", + "doctrine/dbal": "^2.13.3|^3.1.4", + "filp/whoops": "^2.14.3", + "guzzlehttp/guzzle": "^6.5.5|^7.0.1", + "league/flysystem-cached-adapter": "^1.0", + "mockery/mockery": "^1.4.4", + "orchestra/testbench-core": "^6.27", + "pda/pheanstalk": "^4.0", + "phpunit/phpunit": "^8.5.19|^9.5.8", + "predis/predis": "^1.1.9", + "symfony/cache": "^5.4" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.198.1).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", + "ext-bcmath": "Required to use the multiple_of validation rule.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.5.5|^7.0.1).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", + "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", + "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "mockery/mockery": "Required to use mocking (^1.4.4).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^8.5.19|^9.5.8).", + "predis/predis": "Required to use the predis connector (^1.1.9).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0|^5.0|^6.0|^7.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^5.4).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^5.4).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2022-07-13T13:23:09+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v2.15.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", + "reference": "31fbe6f85aee080c4dc2f9b03dc6dd5d0ee72473", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "illuminate/console": "^6.9|^7.0|^8.0|^9.0", + "illuminate/contracts": "^6.9|^7.0|^8.0|^9.0", + "illuminate/database": "^6.9|^7.0|^8.0|^9.0", + "illuminate/support": "^6.9|^7.0|^8.0|^9.0", + "php": "^7.2|^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", + "phpunit/phpunit": "^8.0|^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sanctum\\SanctumServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sanctum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", + "keywords": [ + "auth", + "laravel", + "sanctum" + ], + "support": { + "issues": "https://github.com/laravel/sanctum/issues", + "source": "https://github.com/laravel/sanctum" + }, + "time": "2022-04-08T13:39:49+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "09f0e9fb61829f628205b7c94906c28740ff9540" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/09f0e9fb61829f628205b7c94906c28740ff9540", + "reference": "09f0e9fb61829f628205b7c94906c28740ff9540", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "pestphp/pest": "^1.18", + "phpstan/phpstan": "^0.12.98", + "symfony/var-dumper": "^5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2022-05-16T17:09:47+00:00" + }, + { + "name": "league/commonmark", + "version": "2.3.3", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "0da1dca5781dd3cfddbe328224d9a7a62571addc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/0da1dca5781dd3cfddbe328224d9a7a62571addc", + "reference": "0da1dca5781dd3cfddbe328224d9a7a62571addc", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.0", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^0.12.88 || ^1.0.0", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.4-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2022-06-07T21:28:26+00:00" + }, + { + "name": "league/config", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.90", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2021-08-14T12:15:32+00:00" + }, + { + "name": "league/flysystem", + "version": "1.1.9", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "094defdb4a7001845300334e7c1ee2335925ef99" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", + "reference": "094defdb4a7001845300334e7c1ee2335925ef99", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-fileinfo": "*", + "league/mime-type-detection": "^1.3", + "php": "^7.2.5 || ^8.0" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "phpspec/prophecy": "^1.11.1", + "phpunit/phpunit": "^8.5.8" + }, + "suggest": { + "ext-ftp": "Allows you to use FTP server storage", + "ext-openssl": "Allows you to use FTPS server storage", + "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", + "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", + "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", + "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", + "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", + "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", + "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", + "league/flysystem-webdav": "Allows you to use WebDAV storage", + "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", + "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", + "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Filesystem abstraction: Many filesystems, one API.", + "keywords": [ + "Cloud Files", + "WebDAV", + "abstraction", + "aws", + "cloud", + "copy.com", + "dropbox", + "file systems", + "files", + "filesystem", + "filesystems", + "ftp", + "rackspace", + "remote", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/1.1.9" + }, + "funding": [ + { + "url": "https://offset.earth/frankdejonge", + "type": "other" + } + ], + "time": "2021-12-09T09:40:50+00:00" + }, + { + "name": "league/iso3166", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/iso3166.git", + "reference": "1a3ec7e6f1e4f16fce68dc239bafae217fbdcfef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/iso3166/zipball/1a3ec7e6f1e4f16fce68dc239bafae217fbdcfef", + "reference": "1a3ec7e6f1e4f16fce68dc239bafae217fbdcfef", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\ISO3166\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com" + } + ], + "description": "ISO 3166-1 PHP Library", + "homepage": "https://github.com/thephpleague/iso3166", + "keywords": [ + "3166", + "3166-1", + "ISO 3166", + "countries", + "iso", + "library" + ], + "support": { + "issues": "https://github.com/thephpleague/iso3166/issues", + "source": "https://github.com/thephpleague/iso3166" + }, + "time": "2021-10-22T12:47:55+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2022-04-17T13:12:02+00:00" + }, + { + "name": "liuhelong/laravel-admin-wechat", + "version": "1.3.5", + "source": { + "type": "git", + "url": "https://gitee.com/liuhelong/laravel-admin-wechat", + "reference": "7bd082dcfdb982ca98a540fffdd1adaa304dab0f" + }, + "require": { + "encore/laravel-admin": "~1.8", + "overtrue/laravel-wechat": ">=5", + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Liuhelong\\LaravelAdmin\\Wechat\\LaravelAdminWechatServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Liuhelong\\LaravelAdmin\\Wechat\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "liuhelong", + "email": "854583481@qq.com" + } + ], + "description": "description...", + "homepage": "https://github.com/Liuhelong/LaravelAdminWechat", + "keywords": [ + "extension", + "laravel-admin" + ], + "time": "2022-03-25T08:39:18+00:00" + }, + { + "name": "maatwebsite/excel", + "version": "3.1.40", + "source": { + "type": "git", + "url": "https://github.com/SpartnerNL/Laravel-Excel.git", + "reference": "8a54972e3d616c74687c3cbff15765555761885c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/8a54972e3d616c74687c3cbff15765555761885c", + "reference": "8a54972e3d616c74687c3cbff15765555761885c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "illuminate/support": "5.8.*|^6.0|^7.0|^8.0|^9.0", + "php": "^7.0|^8.0", + "phpoffice/phpspreadsheet": "^1.18" + }, + "require-dev": { + "orchestra/testbench": "^6.0|^7.0", + "predis/predis": "^1.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Maatwebsite\\Excel\\ExcelServiceProvider" + ], + "aliases": { + "Excel": "Maatwebsite\\Excel\\Facades\\Excel" + } + } + }, + "autoload": { + "psr-4": { + "Maatwebsite\\Excel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Patrick Brouwers", + "email": "patrick@spartner.nl" + } + ], + "description": "Supercharged Excel exports and imports in Laravel", + "keywords": [ + "PHPExcel", + "batch", + "csv", + "excel", + "export", + "import", + "laravel", + "php", + "phpspreadsheet" + ], + "support": { + "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues", + "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.40" + }, + "funding": [ + { + "url": "https://laravel-excel.com/commercial-support", + "type": "custom" + }, + { + "url": "https://github.com/patrickbrouwers", + "type": "github" + } + ], + "time": "2022-05-02T13:50:01+00:00" + }, + { + "name": "maennchen/zipstream-php", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/maennchen/ZipStream-PHP.git", + "reference": "211e9ba1530ea5260b45d90c9ea252f56ec52729" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/211e9ba1530ea5260b45d90c9ea252f56ec52729", + "reference": "211e9ba1530ea5260b45d90c9ea252f56ec52729", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "myclabs/php-enum": "^1.5", + "php": "^7.4 || ^8.0", + "psr/http-message": "^1.0", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "ext-zip": "*", + "guzzlehttp/guzzle": "^6.5.3 || ^7.2.0", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.4", + "phpunit/phpunit": "^8.5.8 || ^9.4.2", + "vimeo/psalm": "^4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZipStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paul Duncan", + "email": "pabs@pablotron.org" + }, + { + "name": "Jonatan Männchen", + "email": "jonatan@maennchen.ch" + }, + { + "name": "Jesse Donat", + "email": "donatj@gmail.com" + }, + { + "name": "András Kolesár", + "email": "kolesar@kolesar.hu" + } + ], + "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", + "keywords": [ + "stream", + "zip" + ], + "support": { + "issues": "https://github.com/maennchen/ZipStream-PHP/issues", + "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.2.1" + }, + "funding": [ + { + "url": "https://opencollective.com/zipstream", + "type": "open_collective" + } + ], + "time": "2022-05-18T15:52:06+00:00" + }, + { + "name": "markbaker/complex", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPComplex.git", + "reference": "ab8bc271e404909db09ff2d5ffa1e538085c0f22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/ab8bc271e404909db09ff2d5ffa1e538085c0f22", + "reference": "ab8bc271e404909db09ff2d5ffa1e538085c0f22", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "phpcompatibility/php-compatibility": "^9.0", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.3", + "squizlabs/php_codesniffer": "^3.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Complex\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@lange.demon.co.uk" + } + ], + "description": "PHP Class for working with complex numbers", + "homepage": "https://github.com/MarkBaker/PHPComplex", + "keywords": [ + "complex", + "mathematics" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPComplex/issues", + "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.1" + }, + "time": "2021-06-29T15:32:53+00:00" + }, + { + "name": "markbaker/matrix", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPMatrix.git", + "reference": "c66aefcafb4f6c269510e9ac46b82619a904c576" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/c66aefcafb4f6c269510e9ac46b82619a904c576", + "reference": "c66aefcafb4f6c269510e9ac46b82619a904c576", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "phpcompatibility/php-compatibility": "^9.0", + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "^4.0", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.3", + "sebastian/phpcpd": "^4.0", + "squizlabs/php_codesniffer": "^3.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Matrix\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@demon-angel.eu" + } + ], + "description": "PHP Class for working with matrices", + "homepage": "https://github.com/MarkBaker/PHPMatrix", + "keywords": [ + "mathematics", + "matrix", + "vector" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPMatrix/issues", + "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.0" + }, + "time": "2021-07-01T19:01:15+00:00" + }, + { + "name": "monolog/monolog", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "5579edf28aee1190a798bfa5be8bc16c563bd524" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/5579edf28aee1190a798bfa5be8bc16c563bd524", + "reference": "5579edf28aee1190a798bfa5be8bc16c563bd524", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.3", + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/2.7.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2022-06-09T08:59:12+00:00" + }, + { + "name": "mtdowling/jmespath.php", + "version": "2.6.1", + "source": { + "type": "git", + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb", + "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.4 || ^7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "composer/xdebug-handler": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^7.5.15" + }, + "bin": [ + "bin/jp.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "files": [ + "src/JmesPath.php" + ], + "psr-4": { + "JmesPath\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Declaratively specify how to extract elements from a JSON document", + "keywords": [ + "json", + "jsonpath" + ], + "support": { + "issues": "https://github.com/jmespath/jmespath.php/issues", + "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1" + }, + "time": "2021-06-14T00:11:39+00:00" + }, + { + "name": "myclabs/php-enum", + "version": "1.8.3", + "source": { + "type": "git", + "url": "https://github.com/myclabs/php-enum.git", + "reference": "b942d263c641ddb5190929ff840c68f78713e937" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/b942d263c641ddb5190929ff840c68f78713e937", + "reference": "b942d263c641ddb5190929ff840c68f78713e937", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "1.*", + "vimeo/psalm": "^4.6.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "MyCLabs\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP Enum contributors", + "homepage": "https://github.com/myclabs/php-enum/graphs/contributors" + } + ], + "description": "PHP Enum implementation", + "homepage": "http://github.com/myclabs/php-enum", + "keywords": [ + "enum" + ], + "support": { + "issues": "https://github.com/myclabs/php-enum/issues", + "source": "https://github.com/myclabs/php-enum/tree/1.8.3" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum", + "type": "tidelift" + } + ], + "time": "2021-07-05T08:18:36+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.59.1", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "a9000603ea337c8df16cc41f8b6be95a65f4d0f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/a9000603ea337c8df16cc41f8b6be95a65f4d0f5", + "reference": "a9000603ea337c8df16cc41f8b6be95a65f4d0f5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.0", + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "*", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2022-06-29T21:43:55+00:00" + }, + { + "name": "nette/schema", + "version": "v1.2.2", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", + "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", + "php": ">=7.1 <8.2" + }, + "require-dev": { + "nette/tester": "^2.3 || ^2.4", + "phpstan/phpstan-nette": "^0.12", + "tracy/tracy": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.2.2" + }, + "time": "2021-10-15T11:40:02+00:00" + }, + { + "name": "nette/utils", + "version": "v3.2.7", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", + "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2 <8.2" + }, + "conflict": { + "nette/di": "<3.0.6" + }, + "require-dev": { + "nette/tester": "~2.0", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v3.2.7" + }, + "time": "2022-01-24T11:29:14+00:00" + }, + { + "name": "nosun/laravel-ueditor", + "version": "v2.0.3", + "source": { + "type": "git", + "url": "https://github.com/nosun/laravel-ueditor.git", + "reference": "3f6c9b9f187863f7bdf48bae94b799883d5b64a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nosun/laravel-ueditor/zipball/3f6c9b9f187863f7bdf48bae94b799883d5b64a2", + "reference": "3f6c9b9f187863f7bdf48bae94b799883d5b64a2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "laravel/framework": "~5.5|~6.0|~7.0|~8.0" + }, + "require-dev": { + "fabpot/php-cs-fixer": "^1.10" + }, + "suggest": { + "overtrue/laravel-filesystem-qiniu": "如果你想要使用七牛云存储,也许你需要安装它哦~" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Nosun\\LaravelUEditor\\UEditorServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Nosun\\LaravelUEditor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "nosun", + "email": "nosun2008@126.com" + } + ], + "description": "UEditor integration for Laravel.", + "support": { + "source": "https://github.com/nosun/laravel-ueditor/tree/v2.0.3" + }, + "time": "2020-11-06T09:17:38+00:00" + }, + { + "name": "nosun/ueditor", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/nosun/UEditor.git", + "reference": "02c51e93598e171d52b592391e17ca87e59dda73" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nosun/UEditor/zipball/02c51e93598e171d52b592391e17ca87e59dda73", + "reference": "02c51e93598e171d52b592391e17ca87e59dda73", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "encore/laravel-admin": "~1.7", + "nosun/laravel-ueditor": "~2.0", + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Nosun\\Ueditor\\UeditorServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Nosun\\Ueditor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "nosun", + "email": "nosun2008@126.com" + } + ], + "description": "UEditor extension for laravel-admin", + "homepage": "https://github.com/nosun/UEditor", + "keywords": [ + "extension", + "laravel-admin", + "ueditor" + ], + "support": { + "source": "https://github.com/nosun/UEditor/tree/v3.0.2" + }, + "time": "2020-11-06T09:18:48+00:00" + }, + { + "name": "nwidart/laravel-modules", + "version": "v8.3.0", + "source": { + "type": "git", + "url": "https://github.com/nWidart/laravel-modules.git", + "reference": "ee06dc0ac019cc392bd66a1c3e6cec0412fcc52d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nWidart/laravel-modules/zipball/ee06dc0ac019cc392bd66a1c3e6cec0412fcc52d", + "reference": "ee06dc0ac019cc392bd66a1c3e6cec0412fcc52d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "php": ">=7.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.16", + "laravel/framework": "^8.0", + "mockery/mockery": "~1.0", + "orchestra/testbench": "^6.2", + "phpstan/phpstan": "^0.12.14", + "phpunit/phpunit": "^8.5", + "spatie/phpunit-snapshot-assertions": "^2.1.0|^4.2" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Nwidart\\Modules\\LaravelModulesServiceProvider" + ], + "aliases": { + "Module": "Nwidart\\Modules\\Facades\\Module" + } + }, + "branch-alias": { + "dev-master": "8.0-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Nwidart\\Modules\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Widart", + "email": "n.widart@gmail.com", + "homepage": "https://nicolaswidart.com", + "role": "Developer" + } + ], + "description": "Laravel Module management", + "keywords": [ + "laravel", + "module", + "modules", + "nwidart", + "rad" + ], + "support": { + "issues": "https://github.com/nWidart/laravel-modules/issues", + "source": "https://github.com/nWidart/laravel-modules/tree/v8.3.0" + }, + "funding": [ + { + "url": "https://github.com/nwidart", + "type": "github" + } + ], + "time": "2022-02-10T20:30:19+00:00" + }, + { + "name": "opis/closure", + "version": "3.6.3", + "source": { + "type": "git", + "url": "https://github.com/opis/closure.git", + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad", + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.4 || ^7.0 || ^8.0" + }, + "require-dev": { + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.6.x-dev" + } + }, + "autoload": { + "files": [ + "functions.php" + ], + "psr-4": { + "Opis\\Closure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" + } + ], + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", + "keywords": [ + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" + ], + "support": { + "issues": "https://github.com/opis/closure/issues", + "source": "https://github.com/opis/closure/tree/3.6.3" + }, + "time": "2022-01-27T09:35:39+00:00" + }, + { + "name": "overtrue/chinese-calendar", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/overtrue/chinese-calendar.git", + "reference": "d78e86d66a4b225defac6828bf1de42c4a9d4bdf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/overtrue/chinese-calendar/zipball/d78e86d66a4b225defac6828bf1de42c4a9d4bdf", + "reference": "d78e86d66a4b225defac6828bf1de42c4a9d4bdf", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.5.9" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Overtrue\\ChineseCalendar\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "overtrue", + "email": "anzhengchao@gmail.com" + } + ], + "description": "中国农历转换与查询工具", + "keywords": [ + "Chinese", + "calendar", + "lunar", + "lunar2solar", + "solar", + "solar2lunar" + ], + "support": { + "issues": "https://github.com/overtrue/chinese-calendar/issues", + "source": "https://github.com/overtrue/chinese-calendar/tree/master" + }, + "time": "2020-03-09T07:21:26+00:00" + }, + { + "name": "overtrue/easy-sms", + "version": "1.3.2", + "source": { + "type": "git", + "url": "https://github.com/overtrue/easy-sms.git", + "reference": "daa0b4308ec0e3c112888c288d14d473be6aabee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/overtrue/easy-sms/zipball/daa0b4308ec0e3c112888c288d14d473be6aabee", + "reference": "daa0b4308ec0e3c112888c288d14d473be6aabee", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "guzzlehttp/guzzle": "^6.2 || ^7.0", + "php": ">=5.6" + }, + "require-dev": { + "mockery/mockery": "1.3.1", + "phpunit/phpunit": "^5.7 || ^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Overtrue\\EasySms\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "overtrue", + "email": "i@overtrue.me" + } + ], + "description": "The easiest way to send short message.", + "support": { + "issues": "https://github.com/overtrue/easy-sms/issues", + "source": "https://github.com/overtrue/easy-sms/tree/1.3.2" + }, + "time": "2021-01-22T06:52:59+00:00" + }, + { + "name": "overtrue/laravel-favorite", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/overtrue/laravel-favorite.git", + "reference": "f86cf5136985b3b7c585c279104891bf434c609d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/overtrue/laravel-favorite/zipball/f86cf5136985b3b7c585c279104891bf434c609d", + "reference": "f86cf5136985b3b7c585c279104891bf434c609d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "laravel/framework": "^8.0", + "php": ">=7.4" + }, + "require-dev": { + "brainmaestro/composer-git-hooks": "^2.7", + "friendsofphp/php-cs-fixer": "^3.0", + "mockery/mockery": "^1.2", + "orchestra/testbench": "^6.0", + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Overtrue\\LaravelFavorite\\FavoriteServiceProvider" + ] + }, + "hooks": { + "pre-commit": [ + "composer fix-style" + ], + "pre-push": [ + "composer test" + ] + } + }, + "autoload": { + "psr-4": { + "Overtrue\\LaravelFavorite\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "overtrue", + "email": "anzhengchao@gmail.com" + } + ], + "description": "User favorite features for Laravel Application.", + "support": { + "issues": "https://github.com/overtrue/laravel-favorite/issues", + "source": "https://github.com/overtrue/laravel-favorite/tree/4.0.1" + }, + "time": "2021-06-09T06:20:20+00:00" + }, + { + "name": "overtrue/laravel-lang", + "version": "5.0.2", + "source": { + "type": "git", + "url": "https://github.com/overtrue/laravel-lang.git", + "reference": "cb82a2f1e5fd1c7313a5aa1531f02cd5838969e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/overtrue/laravel-lang/zipball/cb82a2f1e5fd1c7313a5aa1531f02cd5838969e4", + "reference": "cb82a2f1e5fd1c7313a5aa1531f02cd5838969e4", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "laravel-lang/lang": "^10.1", + "symfony/process": "^5.0.0" + }, + "require-dev": { + "laravel/framework": "~8.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Overtrue\\LaravelLang\\TranslationServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Overtrue\\LaravelLang\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "overtrue", + "email": "anzhengchao@gmail.com" + } + ], + "description": "List of 75 languages for Laravel 4, 5, 6 and 7", + "keywords": [ + "i18n", + "languages", + "laravel", + "locale", + "overtrue" + ], + "support": { + "issues": "https://github.com/overtrue/laravel-lang/issues", + "source": "https://github.com/overtrue/laravel-lang/tree/5.0.2" + }, + "funding": [ + { + "url": "https://www.patreon.com/overtrue", + "type": "patreon" + } + ], + "time": "2021-08-20T12:06:44+00:00" + }, + { + "name": "overtrue/laravel-query-logger", + "version": "2.1.4", + "source": { + "type": "git", + "url": "https://github.com/overtrue/laravel-query-logger.git", + "reference": "46b546aa2c4f6319ce798c8f8128b08718b32bae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/overtrue/laravel-query-logger/zipball/46b546aa2c4f6319ce798c8f8128b08718b32bae", + "reference": "46b546aa2c4f6319ce798c8f8128b08718b32bae", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "laravel/framework": "~5.5||~6.0||~7.0||~8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Overtrue\\LaravelQueryLogger\\ServiceProvider" + ] + }, + "hooks": { + "pre-commit": [ + "composer test", + "composer fix-style" + ], + "pre-push": [ + "composer test", + "composer check-style" + ] + } + }, + "autoload": { + "psr-4": { + "Overtrue\\LaravelQueryLogger\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "overtrue", + "email": "anzhengchao@gmail.com" + } + ], + "description": "A dev tool to log all queries for laravel application.", + "support": { + "issues": "https://github.com/overtrue/laravel-query-logger/issues", + "source": "https://github.com/overtrue/laravel-query-logger/tree/2.1.4" + }, + "time": "2021-08-12T08:49:45+00:00" + }, + { + "name": "overtrue/laravel-subscribe", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/overtrue/laravel-subscribe.git", + "reference": "d70d70871a09e2ae36beea94ee5dd918c7a5afb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/overtrue/laravel-subscribe/zipball/d70d70871a09e2ae36beea94ee5dd918c7a5afb5", + "reference": "d70d70871a09e2ae36beea94ee5dd918c7a5afb5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "laravel/framework": "^8.0", + "php": ">=7.4" + }, + "require-dev": { + "brainmaestro/composer-git-hooks": "^2.7", + "friendsofphp/php-cs-fixer": "^3.0", + "laravel/framework": "^8.12", + "mockery/mockery": "^1.2", + "orchestra/testbench": "^6.0", + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Overtrue\\LaravelSubscribe\\SubscribeServiceProvider" + ] + }, + "hooks": { + "pre-commit": [ + "composer test", + "composer fix-style" + ], + "post-merge": "composer install" + } + }, + "autoload": { + "psr-4": { + "Overtrue\\LaravelSubscribe\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "overtrue", + "email": "anzhengchao@gmail.com" + } + ], + "description": "User Subscribe/Unsubscribe features for Laravel Application.", + "support": { + "issues": "https://github.com/overtrue/laravel-subscribe/issues", + "source": "https://github.com/overtrue/laravel-subscribe/tree/3.1.0" + }, + "funding": [ + { + "url": "https://github.com/overtrue", + "type": "github" + } + ], + "time": "2021-11-04T03:10:57+00:00" + }, + { + "name": "overtrue/laravel-versionable", + "version": "2.6.1", + "source": { + "type": "git", + "url": "https://github.com/overtrue/laravel-versionable.git", + "reference": "93b79c5e9964be0b1a6a93a6cb0e8792eb1dcf97" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/overtrue/laravel-versionable/zipball/93b79c5e9964be0b1a6a93a6cb0e8792eb1dcf97", + "reference": "93b79c5e9964be0b1a6a93a6cb0e8792eb1dcf97", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/dbal": "^2.12|^3.0", + "laravel/framework": "^5.8|^6.20.26|^7.0|^8.0", + "php": "^7.4|^8.0", + "sebastian/diff": "^3.0|^4.0" + }, + "require-dev": { + "brainmaestro/composer-git-hooks": "^2.8", + "friendsofphp/php-cs-fixer": "^2.16", + "mockery/mockery": "^1.4", + "orchestra/testbench": "^5.3|^6.0", + "phpunit/phpunit": "^8.1|^9.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Overtrue\\LaravelVersionable\\ServiceProvider" + ] + }, + "hooks": { + "pre-commit": [ + "composer check-style", + "composer test" + ], + "pre-push": [ + "composer test" + ] + } + }, + "autoload": { + "psr-4": { + "Overtrue\\LaravelVersionable\\": "./src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Make Laravel model versionable.", + "support": { + "issues": "https://github.com/overtrue/laravel-versionable/issues", + "source": "https://github.com/overtrue/laravel-versionable/tree/2.6.1" + }, + "funding": [ + { + "url": "https://www.patreon.com/overtrue", + "type": "patreon" + } + ], + "time": "2021-07-26T03:17:28+00:00" + }, + { + "name": "overtrue/laravel-wechat", + "version": "6.1.0", + "source": { + "type": "git", + "url": "https://github.com/overtrue/laravel-wechat.git", + "reference": "f8300dac610baae3736fcdeb1ea4ee17e2f1fac9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/overtrue/laravel-wechat/zipball/f8300dac610baae3736fcdeb1ea4ee17e2f1fac9", + "reference": "f8300dac610baae3736fcdeb1ea4ee17e2f1fac9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "illuminate/container": "^5.1 || ^6.0 || ^7.0 || ^8.0 || ^9.0", + "overtrue/wechat": "^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.1", + "laravel/framework": "^8.5" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Overtrue\\LaravelWeChat\\ServiceProvider" + ], + "aliases": { + "EasyWeChat": "Overtrue\\LaravelWeChat\\Facade" + } + } + }, + "autoload": { + "psr-4": { + "Overtrue\\LaravelWeChat\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "overtrue", + "email": "anzhengchao@gmail.com" + } + ], + "description": "微信 SDK for Laravel", + "keywords": [ + "laravel", + "sdk", + "wechat", + "weixin" + ], + "support": { + "issues": "https://github.com/overtrue/laravel-wechat/issues", + "source": "https://github.com/overtrue/laravel-wechat/tree/6.1.0" + }, + "funding": [ + { + "url": "https://github.com/overtrue", + "type": "github" + } + ], + "time": "2022-02-14T09:04:30+00:00" + }, + { + "name": "overtrue/socialite", + "version": "3.5.1", + "source": { + "type": "git", + "url": "https://github.com/overtrue/socialite.git", + "reference": "92cfd9989c37160f50720eeb7ca4a9914ba2c135" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/overtrue/socialite/zipball/92cfd9989c37160f50720eeb7ca4a9914ba2c135", + "reference": "92cfd9989c37160f50720eeb7ca4a9914ba2c135", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "ext-openssl": "*", + "guzzlehttp/guzzle": "~6.0|~7.0", + "php": ">=7.4", + "symfony/http-foundation": "^5.0", + "symfony/psr-http-message-bridge": "^2.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.0", + "mockery/mockery": "~1.2", + "phpunit/phpunit": "~9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Overtrue\\Socialite\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "overtrue", + "email": "anzhengchao@gmail.com" + } + ], + "description": "A collection of OAuth 2 packages.", + "keywords": [ + "Feishu", + "login", + "oauth", + "qcloud", + "qq", + "social", + "wechat", + "weibo" + ], + "support": { + "issues": "https://github.com/overtrue/socialite/issues", + "source": "https://github.com/overtrue/socialite/tree/3.5.1" + }, + "funding": [ + { + "url": "https://github.com/overtrue", + "type": "github" + } + ], + "time": "2022-03-04T02:33:27+00:00" + }, + { + "name": "overtrue/wechat", + "version": "5.18.0", + "source": { + "type": "git", + "url": "https://github.com/w7corp/easywechat.git", + "reference": "fcabc4f0a7547713de9623f086ba486b87f4a433" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/w7corp/easywechat/zipball/fcabc4f0a7547713de9623f086ba486b87f4a433", + "reference": "fcabc4f0a7547713de9623f086ba486b87f4a433", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "easywechat-composer/easywechat-composer": "^1.1", + "ext-fileinfo": "*", + "ext-libxml": "*", + "ext-openssl": "*", + "ext-simplexml": "*", + "guzzlehttp/guzzle": "^6.2 || ^7.0", + "monolog/monolog": "^1.22 || ^2.0", + "overtrue/socialite": "^3.2 || ^4.0", + "php": ">=7.4", + "pimple/pimple": "^3.0", + "psr/simple-cache": "^1.0||^2.0||^3.0", + "symfony/cache": "^3.3 || ^4.3 || ^5.0 || ^6.0", + "symfony/event-dispatcher": "^4.3 || ^5.0 || ^6.0", + "symfony/http-foundation": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0", + "symfony/psr-http-message-bridge": "^0.3 || ^1.0 || ^2.0" + }, + "require-dev": { + "brainmaestro/composer-git-hooks": "^2.7", + "dms/phpunit-arraysubset-asserts": "^0.2.0", + "friendsofphp/php-cs-fixer": "^3.5.0", + "mikey179/vfsstream": "^1.6", + "mockery/mockery": "^1.2.3", + "phpstan/phpstan": "^0.12.0", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "hooks": { + "pre-commit": [ + "composer test", + "composer fix-style" + ], + "pre-push": [ + "composer test", + "composer fix-style" + ] + } + }, + "autoload": { + "files": [ + "src/Kernel/Support/Helpers.php", + "src/Kernel/Helpers.php" + ], + "psr-4": { + "EasyWeChat\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "overtrue", + "email": "anzhengchao@gmail.com" + } + ], + "description": "微信SDK", + "keywords": [ + "easywechat", + "sdk", + "wechat", + "weixin", + "weixin-sdk" + ], + "support": { + "issues": "https://github.com/w7corp/easywechat/issues", + "source": "https://github.com/w7corp/easywechat/tree/5.18.0" + }, + "time": "2022-03-02T09:54:10+00:00" + }, + { + "name": "phpoffice/phpspreadsheet", + "version": "1.23.0", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", + "reference": "21e4cf62699eebf007db28775f7d1554e612ed9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/21e4cf62699eebf007db28775f7d1554e612ed9e", + "reference": "21e4cf62699eebf007db28775f7d1554e612ed9e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-ctype": "*", + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-gd": "*", + "ext-iconv": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-xmlwriter": "*", + "ext-zip": "*", + "ext-zlib": "*", + "ezyang/htmlpurifier": "^4.13", + "maennchen/zipstream-php": "^2.1", + "markbaker/complex": "^3.0", + "markbaker/matrix": "^3.0", + "php": "^7.3 || ^8.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/simple-cache": "^1.0 || ^2.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "dompdf/dompdf": "^1.0", + "friendsofphp/php-cs-fixer": "^3.2", + "jpgraph/jpgraph": "^4.0", + "mpdf/mpdf": "8.0.17", + "phpcompatibility/php-compatibility": "^9.3", + "phpstan/phpstan": "^1.1", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^8.5 || ^9.0", + "squizlabs/php_codesniffer": "^3.6", + "tecnickcom/tcpdf": "^6.4" + }, + "suggest": { + "dompdf/dompdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)", + "jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", + "mpdf/mpdf": "Option for rendering PDF with PDF Writer", + "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maarten Balliauw", + "homepage": "https://blog.maartenballiauw.be" + }, + { + "name": "Mark Baker", + "homepage": "https://markbakeruk.net" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net" + }, + { + "name": "Erik Tilt" + }, + { + "name": "Adrien Crivelli" + } + ], + "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", + "keywords": [ + "OpenXML", + "excel", + "gnumeric", + "ods", + "php", + "spreadsheet", + "xls", + "xlsx" + ], + "support": { + "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.23.0" + }, + "time": "2022-04-24T13:53:10+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.8.1", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.8.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2021-12-04T23:24:31+00:00" + }, + { + "name": "pimple/pimple", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Pimple.git", + "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", + "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1 || ^2.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^5.4@dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Pimple": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Pimple, a simple Dependency Injection Container", + "homepage": "https://pimple.symfony.com", + "keywords": [ + "container", + "dependency injection" + ], + "support": { + "source": "https://github.com/silexphp/Pimple/tree/v3.5.0" + }, + "time": "2021-10-28T11:13:42+00:00" + }, + { + "name": "propaganistas/laravel-phone", + "version": "4.3.7", + "source": { + "type": "git", + "url": "https://github.com/Propaganistas/Laravel-Phone.git", + "reference": "fb3b5faddf9150ac21c1c59a7633ee964d4f2a00" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Propaganistas/Laravel-Phone/zipball/fb3b5faddf9150ac21c1c59a7633ee964d4f2a00", + "reference": "fb3b5faddf9150ac21c1c59a7633ee964d4f2a00", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "giggsey/libphonenumber-for-php": "^7.0|^8.0", + "illuminate/contracts": "^8.9|^9.0", + "illuminate/support": "^8.0|^9.0", + "illuminate/validation": "^8.0|^9.0", + "league/iso3166": "^2.0|^3.0|^4.0", + "php": "^7.3|^8.0" + }, + "require-dev": { + "nunomaduro/larastan": "^1.0", + "orchestra/testbench": "*", + "phpunit/phpunit": "^9.5.10" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Propaganistas\\LaravelPhone\\PhoneServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Propaganistas\\LaravelPhone\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Propaganistas", + "email": "Propaganistas@users.noreply.github.com" + } + ], + "description": "Adds phone number functionality to Laravel based on Google's libphonenumber API.", + "keywords": [ + "laravel", + "libphonenumber", + "phone", + "validation" + ], + "support": { + "issues": "https://github.com/Propaganistas/Laravel-Phone/issues", + "source": "https://github.com/Propaganistas/Laravel-Phone/tree/4.3.7" + }, + "time": "2022-06-08T15:44:51+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/master" + }, + "time": "2016-08-06T20:24:11+00:00" + }, + { + "name": "psr/container", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client/tree/master" + }, + "time": "2020-06-29T06:28:15+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/master" + }, + "time": "2019-04-30T12:38:16+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, + "time": "2017-10-23T01:57:42+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.3 || ^8", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "captainhook/captainhook": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "ergebnis/composer-normalize": "^2.6", + "fakerphp/faker": "^1.5", + "hamcrest/hamcrest-php": "^2", + "jangregor/phpstan-prophecy": "^0.8", + "mockery/mockery": "^1.3", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1", + "phpstan/phpstan": "^0.12.32", + "phpstan/phpstan-mockery": "^0.12.5", + "phpstan/phpstan-phpunit": "^0.12.11", + "phpunit/phpunit": "^8.5 || ^9", + "psy/psysh": "^0.10.4", + "slevomat/coding-standard": "^6.3", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/1.2.2" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2021-10-10T03:01:02+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.2.3", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "brick/math": "^0.8 || ^0.9", + "ext-json": "*", + "php": "^7.2 || ^8.0", + "ramsey/collection": "^1.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php80": "^1.14" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "moontoast/math": "^1.1", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.2.3" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2021-09-25T23:10:38+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "simplesoftwareio/simple-qrcode", + "version": "4.2.0", + "source": { + "type": "git", + "url": "https://github.com/SimpleSoftwareIO/simple-qrcode.git", + "reference": "916db7948ca6772d54bb617259c768c9cdc8d537" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SimpleSoftwareIO/simple-qrcode/zipball/916db7948ca6772d54bb617259c768c9cdc8d537", + "reference": "916db7948ca6772d54bb617259c768c9cdc8d537", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "bacon/bacon-qr-code": "^2.0", + "ext-gd": "*", + "php": ">=7.2|^8.0" + }, + "require-dev": { + "mockery/mockery": "~1", + "phpunit/phpunit": "~9" + }, + "suggest": { + "ext-imagick": "Allows the generation of PNG QrCodes.", + "illuminate/support": "Allows for use within Laravel." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "SimpleSoftwareIO\\QrCode\\QrCodeServiceProvider" + ], + "aliases": { + "QrCode": "SimpleSoftwareIO\\QrCode\\Facades\\QrCode" + } + } + }, + "autoload": { + "psr-4": { + "SimpleSoftwareIO\\QrCode\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Simple Software LLC", + "email": "support@simplesoftware.io" + } + ], + "description": "Simple QrCode is a QR code generator made for Laravel.", + "homepage": "https://www.simplesoftware.io/#/docs/simple-qrcode", + "keywords": [ + "Simple", + "generator", + "laravel", + "qrcode", + "wrapper" + ], + "support": { + "issues": "https://github.com/SimpleSoftwareIO/simple-qrcode/issues", + "source": "https://github.com/SimpleSoftwareIO/simple-qrcode/tree/4.2.0" + }, + "time": "2021-02-08T20:43:55+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v6.3.0", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c", + "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "egulias/email-validator": "^2.0|^3.1", + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "symfony/phpunit-bridge": "^4.4|^5.4" + }, + "suggest": { + "ext-intl": "Needed to support internationalized email addresses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ], + "support": { + "issues": "https://github.com/swiftmailer/swiftmailer/issues", + "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", + "type": "tidelift" + } + ], + "abandoned": "symfony/mailer", + "time": "2021-10-18T15:26:12+00:00" + }, + { + "name": "symfony/cache", + "version": "v5.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "c4e387b739022fd4b20abd8edb2143c44c5daa14" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/c4e387b739022fd4b20abd8edb2143c44c5daa14", + "reference": "c4e387b739022fd4b20abd8edb2143c44c5daa14", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "conflict": { + "doctrine/dbal": "<2.13.1", + "symfony/dependency-injection": "<4.4", + "symfony/http-kernel": "<4.4", + "symfony/var-dumper": "<4.4" + }, + "provide": { + "psr/cache-implementation": "1.0|2.0", + "psr/simple-cache-implementation": "1.0|2.0", + "symfony/cache-implementation": "1.0|2.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/cache": "^1.6|^2.0", + "doctrine/dbal": "^2.13.1|^3.0", + "predis/predis": "^1.1", + "psr/simple-cache": "^1.0|^2.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation", + "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], + "support": { + "source": "https://github.com/symfony/cache/tree/v5.4.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-19T12:03:50+00:00" + }, + { + "name": "symfony/cache-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0|^3.0" + }, + "suggest": { + "symfony/cache-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Cache\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to caching", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/console", + "version": "v5.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "4d671ab4ddac94ee439ea73649c69d9d200b5000" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/4d671ab4ddac94ee439ea73649c69d9d200b5000", + "reference": "4d671ab4ddac94ee439ea73649c69d9d200b5000", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.4.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-26T13:00:04+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v5.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "b0a190285cd95cb019237851205b8140ef6e368e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e", + "reference": "b0a190285cd95cb019237851205b8140ef6e368e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v5.4.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v5.4.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "a213cbc80382320b0efdccdcdce232f191fafe3a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/a213cbc80382320b0efdccdcdce232f191fafe3a", + "reference": "a213cbc80382320b0efdccdcdce232f191fafe3a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "masterminds/html5": "<2.6" + }, + "require-dev": { + "masterminds/html5": "^2.6", + "symfony/css-selector": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-04T14:46:32+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v5.4.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "c116cda1f51c678782768dce89a45f13c949455d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c116cda1f51c678782768dce89a45f13c949455d", + "reference": "c116cda1f51c678782768dce89a45f13c949455d", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v5.4.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-21T13:57:48+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v5.4.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", + "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/dependency-injection": "<4.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-05T16:45:39+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" + }, + "suggest": { + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "9b630f3427f3ebe7cd346c277a1408b00249dad9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/9b630f3427f3ebe7cd346c277a1408b00249dad9", + "reference": "9b630f3427f3ebe7cd346c277a1408b00249dad9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v5.4.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-15T08:07:45+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v5.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "e7793b7906f72a8cc51054fbca9dcff7a8af1c1e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e7793b7906f72a8cc51054fbca9dcff7a8af1c1e", + "reference": "e7793b7906f72a8cc51054fbca9dcff7a8af1c1e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v5.4.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-19T13:13:40+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v5.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "255ae3b0a488d78fbb34da23d3e0c059874b5948" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/255ae3b0a488d78fbb34da23d3e0c059874b5948", + "reference": "255ae3b0a488d78fbb34da23d3e0c059874b5948", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/log": "^1|^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.3.7|^6.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v5.4.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-26T16:57:59+00:00" + }, + { + "name": "symfony/mime", + "version": "v5.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "02265e1e5111c3cd7480387af25e82378b7ab9cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/02265e1e5111c3cd7480387af25e82378b7ab9cc", + "reference": "02265e1e5111c3cd7480387af25e82378b7ab9cc", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<4.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.1|^6.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/serializer": "^5.2|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v5.4.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-09T12:22:40+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "143f1881e655bebca1312722af8068de235ae5dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/143f1881e655bebca1312722af8068de235ae5dc", + "reference": "143f1881e655bebca1312722af8068de235ae5dc", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-iconv": "*" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "433d05519ce6990bf3530fba6957499d327395c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", + "reference": "433d05519ce6990bf3530fba6957499d327395c2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-10T07:21:04+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/process", + "version": "v5.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "reference": "597f3fff8e3e91836bb0bd38f5718b56ddbde2f3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v5.4.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-08T05:07:18+00:00" + }, + { + "name": "symfony/psr-http-message-bridge", + "version": "v2.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/psr-http-message-bridge.git", + "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", + "reference": "22b37c8a3f6b5d94e9cdbd88e1270d96e2f97b34", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0", + "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0" + }, + "require-dev": { + "nyholm/psr7": "^1.1", + "psr/log": "^1.1 || ^2 || ^3", + "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0", + "symfony/config": "^4.4 || ^5.0 || ^6.0", + "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0", + "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0", + "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0", + "symfony/phpunit-bridge": "^5.4@dev || ^6.0" + }, + "suggest": { + "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" + }, + "type": "symfony-bridge", + "extra": { + "branch-alias": { + "dev-main": "2.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bridge\\PsrHttpMessage\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + } + ], + "description": "PSR HTTP message bridge", + "homepage": "http://symfony.com", + "keywords": [ + "http", + "http-message", + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/symfony/psr-http-message-bridge/issues", + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-05T13:13:39+00:00" + }, + { + "name": "symfony/routing", + "version": "v5.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "e07817bb6244ea33ef5ad31abc4a9288bef3f2f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/e07817bb6244ea33ef5ad31abc4a9288bef3f2f7", + "reference": "e07817bb6244ea33ef5ad31abc4a9288bef3f2f7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<5.3", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.12", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v5.4.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-04-18T21:45:37+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-30T19:17:29+00:00" + }, + { + "name": "symfony/string", + "version": "v5.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "4432bc7df82a554b3e413a8570ce2fea90e94097" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/4432bc7df82a554b3e413a8570ce2fea90e94097", + "reference": "4432bc7df82a554b3e413a8570ce2fea90e94097", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.4.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-26T15:57:47+00:00" + }, + { + "name": "symfony/translation", + "version": "v5.4.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "1639abc1177d26bcd4320e535e664cef067ab0ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/1639abc1177d26bcd4320e535e664cef067ab0ca", + "reference": "1639abc1177d26bcd4320e535e664cef067ab0ca", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^2.3" + }, + "conflict": { + "symfony/config": "<4.4", + "symfony/console": "<5.3", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" + }, + "provide": { + "symfony/translation-implementation": "2.3" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2.0|^3.0", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/service-contracts": "^1.1.2|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v5.4.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-06T12:33:37+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-06-27T16:58:25+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v5.4.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "af52239a330fafd192c773795520dc2dd62b5657" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/af52239a330fafd192c773795520dc2dd62b5657", + "reference": "af52239a330fafd192c773795520dc2dd62b5657", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v5.4.9" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-21T10:24:18+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v5.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "8fc03ee75eeece3d9be1ef47d26d79bea1afb340" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/8fc03ee75eeece3d9be1ef47d26d79bea1afb340", + "reference": "8fc03ee75eeece3d9be1ef47d26d79bea1afb340", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v5.4.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-27T12:56:18+00:00" + }, + { + "name": "symfony/workflow", + "version": "v5.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/workflow.git", + "reference": "8910b89520aca671feb3c625dd30b8c2ca5ed7fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/workflow/zipball/8910b89520aca671feb3c625dd30b8c2ca5ed7fa", + "reference": "8910b89520aca671feb3c625dd30b8c2ca5ed7fa", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/event-dispatcher": "<4.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Workflow\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools for managing a workflow or finite state machine", + "homepage": "https://symfony.com", + "keywords": [ + "petrinet", + "place", + "state", + "statemachine", + "transition", + "workflow" + ], + "support": { + "source": "https://github.com/symfony/workflow/tree/v5.4.10" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-31T16:48:23+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.4", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", + "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" + }, + "time": "2021-12-08T09:12:39+00:00" + }, + { + "name": "vinkla/hashids", + "version": "9.1.0", + "source": { + "type": "git", + "url": "https://github.com/vinkla/laravel-hashids.git", + "reference": "cb0086db96cdb49816465adc97e3a024c8ee9767" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vinkla/laravel-hashids/zipball/cb0086db96cdb49816465adc97e3a024c8ee9767", + "reference": "cb0086db96cdb49816465adc97e3a024c8ee9767", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "graham-campbell/manager": "^4.4", + "hashids/hashids": "^4.1", + "illuminate/contracts": "^8.0", + "illuminate/support": "^8.0", + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "graham-campbell/analyzer": "^3.0", + "graham-campbell/testbench": "^5.4", + "mockery/mockery": "^1.3", + "phpunit/phpunit": "^9.3", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.1-dev" + }, + "laravel": { + "providers": [ + "Vinkla\\Hashids\\HashidsServiceProvider" + ], + "aliases": { + "Hashids": "Vinkla\\Hashids\\Facades\\Hashids" + } + } + }, + "autoload": { + "psr-4": { + "Vinkla\\Hashids\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Vincent Klaiber", + "email": "hello@doubledip.se" + } + ], + "description": "A Hashids bridge for Laravel", + "keywords": [ + "hashids", + "laravel" + ], + "support": { + "issues": "https://github.com/vinkla/laravel-hashids/issues", + "source": "https://github.com/vinkla/laravel-hashids/tree/9.1.0" + }, + "time": "2020-11-26T19:38:22+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.4.1", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", + "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.0.2", + "php": "^7.1.3 || ^8.0", + "phpoption/phpoption": "^1.8", + "symfony/polyfill-ctype": "^1.23", + "symfony/polyfill-mbstring": "^1.23.1", + "symfony/polyfill-php80": "^1.23.1" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-filter": "*", + "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2021-12-12T23:22:04+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/87337c91b9dfacee02452244ee14ab3c43bc485a", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/1.6.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-01-24T18:55:24+00:00" + }, + { + "name": "wang-tech-commits/kuaidi100-api", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/wang-tech-commits/kuaidi100-api.git", + "reference": "fe07fe6162fa08c7a2883e00a5d9072c9d008f1b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wang-tech-commits/kuaidi100-api/zipball/fe07fe6162fa08c7a2883e00a5d9072c9d008f1b", + "reference": "fe07fe6162fa08c7a2883e00a5d9072c9d008f1b", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "guzzlehttp/guzzle": "^7.0.1", + "laravel/framework": "*", + "php": ">=7.1.3" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "MrwangTc\\Kuaidi100\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "MrwangTc\\Kuaidi100\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mr.wang", + "email": "15124532157@163.com" + } + ], + "description": "快递100物流快递查询", + "homepage": "https://github.com/wang-tech-commits/kuaidi100-api", + "support": { + "issues": "https://github.com/wang-tech-commits/kuaidi100-api/issues", + "source": "https://github.com/wang-tech-commits/kuaidi100-api/tree/1.0.1" + }, + "time": "2021-05-18T05:18:16+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + }, + { + "name": "xuanchen/tencent-map-api", + "version": "1.2", + "source": { + "type": "git", + "url": "https://github.com/xuanchen120/tencent-map-api.git", + "reference": "24e2718aef2ba42a7011a1fad9c43fdf0041c534" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/xuanchen120/tencent-map-api/zipball/24e2718aef2ba42a7011a1fad9c43fdf0041c534", + "reference": "24e2718aef2ba42a7011a1fad9c43fdf0041c534", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-json": "*", + "guzzlehttp/guzzle": "^7.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "DeathSatan\\TencentMapApi\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "DeathSatan\\TencentMapApi\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "ShuSRun", + "email": "2771717608@qq.com" + } + ], + "description": "腾讯地图api sdk封装 tencent map services api,based on GuzzleHttp", + "support": { + "source": "https://github.com/xuanchen120/tencent-map-api/tree/1.2" + }, + "time": "2022-08-15T05:28:51+00:00" + }, + { + "name": "yangjisen/laravel-cache-provider", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/yangjisen/LaravelCacheProvider.git", + "reference": "2c94bce77f642f200e073cd1bf1b6b5554f48471" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yangjisen/LaravelCacheProvider/zipball/2c94bce77f642f200e073cd1bf1b6b5554f48471", + "reference": "2c94bce77f642f200e073cd1bf1b6b5554f48471", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "laravel/framework": "^5.1||^6.0||^7.0||^8.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "YangJiSen\\CacheUserProvider\\ServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "YangJiSen\\CacheUserProvider\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Yang Ji Sen", + "email": "381722452@qq.com" + } + ], + "keywords": [ + "auth", + "cache", + "guard", + "laravel" + ], + "support": { + "issues": "https://github.com/yangjisen/LaravelCacheProvider/issues", + "source": "https://github.com/yangjisen/LaravelCacheProvider/tree/v3.0.1" + }, + "time": "2020-12-15T13:43:38+00:00" + }, + { + "name": "yansongda/pay", + "version": "v3.1.10", + "source": { + "type": "git", + "url": "https://github.com/yansongda/pay.git", + "reference": "e02069503b608f2cb8fcb75011cdd0810bbfe88a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yansongda/pay/zipball/e02069503b608f2cb8fcb75011cdd0810bbfe88a", + "reference": "e02069503b608f2cb8fcb75011cdd0810bbfe88a", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-bcmath": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-openssl": "*", + "ext-simplexml": "*", + "php": ">=7.4", + "psr/container": "^1.1 | ^2.0", + "psr/event-dispatcher": "^1.0", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0", + "psr/log": "^1.1 | ^2.0 | ^3.0", + "yansongda/supports": "~3.2.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.0", + "guzzlehttp/guzzle": "^7.0", + "mockery/mockery": "^1.4", + "monolog/monolog": "^2.2", + "phpstan/phpstan": "^1.0.0", + "phpunit/phpunit": "^9.0", + "symfony/event-dispatcher": "^5.2.0", + "symfony/http-foundation": "^5.2.0", + "symfony/psr-http-message-bridge": "^2.1", + "symfony/var-dumper": "^5.1" + }, + "suggest": { + "hyperf/utils": "Hyperf 框架下使用 SDK,请安装", + "illuminate/container": "Laravel 框架下使用 SDK,请安装", + "php-di/php-di": "其它/无框架下使用 SDK,请安装" + }, + "type": "library", + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Yansongda\\Pay\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "yansongda", + "email": "me@yansongda.cn" + } + ], + "description": "可能是我用过的最优雅的 Alipay 和 WeChat 的支付 SDK 扩展包了", + "keywords": [ + "alipay", + "pay", + "wechat" + ], + "support": { + "homepage": "https://pay.yansongda.cn", + "issues": "https://github.com/yansongda/pay/issues", + "source": "https://github.com/yansongda/pay" + }, + "time": "2022-08-09T13:49:29+00:00" + }, + { + "name": "yansongda/supports", + "version": "v3.2.5", + "source": { + "type": "git", + "url": "https://github.com/yansongda/supports.git", + "reference": "c3f736efe169696cef94730976e604a61c345b5c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/yansongda/supports/zipball/c3f736efe169696cef94730976e604a61c345b5c", + "reference": "c3f736efe169696cef94730976e604a61c345b5c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.0", + "mockery/mockery": "^1.4", + "monolog/monolog": "^2.0", + "phpstan/phpstan": "^1.1.0", + "phpunit/phpunit": "^9.0", + "symfony/console": "^5.1" + }, + "suggest": { + "monolog/monolog": "Use logger", + "symfony/console": "Use stdout logger" + }, + "type": "library", + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Yansongda\\Supports\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "yansongda", + "email": "me@yansongda.cn" + } + ], + "description": "common components", + "keywords": [ + "array", + "collection", + "config", + "support" + ], + "support": { + "issues": "https://github.com/yansongda/supports/issues", + "source": "https://github.com/yansongda/supports" + }, + "time": "2022-03-28T10:25:04+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-03-03T08:28:38+00:00" + }, + { + "name": "facade/flare-client-php", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/facade/flare-client-php.git", + "reference": "b2adf1512755637d0cef4f7d1b54301325ac78ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/flare-client-php/zipball/b2adf1512755637d0cef4f7d1b54301325ac78ed", + "reference": "b2adf1512755637d0cef4f7d1b54301325ac78ed", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "facade/ignition-contracts": "~1.0", + "illuminate/pipeline": "^5.5|^6.0|^7.0|^8.0", + "php": "^7.1|^8.0", + "symfony/http-foundation": "^3.3|^4.1|^5.0", + "symfony/mime": "^3.4|^4.0|^5.1", + "symfony/var-dumper": "^3.4|^4.0|^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "phpunit/phpunit": "^7.5.16", + "spatie/phpunit-snapshot-assertions": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Facade\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/facade/flare-client-php", + "keywords": [ + "exception", + "facade", + "flare", + "reporting" + ], + "support": { + "issues": "https://github.com/facade/flare-client-php/issues", + "source": "https://github.com/facade/flare-client-php/tree/1.9.1" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2021-09-13T12:16:46+00:00" + }, + { + "name": "facade/ignition", + "version": "2.17.6", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition.git", + "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition/zipball/6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", + "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "facade/flare-client-php": "^1.9.1", + "facade/ignition-contracts": "^1.0.2", + "illuminate/support": "^7.0|^8.0", + "monolog/monolog": "^2.0", + "php": "^7.2.5|^8.0", + "symfony/console": "^5.0", + "symfony/var-dumper": "^5.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "livewire/livewire": "^2.4", + "mockery/mockery": "^1.3", + "orchestra/testbench": "^5.0|^6.0", + "psalm/plugin-laravel": "^1.2" + }, + "suggest": { + "laravel/telescope": "^3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Facade\\Ignition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Facade\\Ignition\\Facades\\Flare" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Facade\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://github.com/facade/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/facade/ignition/issues", + "source": "https://github.com/facade/ignition" + }, + "time": "2022-06-30T18:26:59+00:00" + }, + { + "name": "facade/ignition-contracts", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/facade/ignition-contracts.git", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^v2.15.8", + "phpunit/phpunit": "^9.3.11", + "vimeo/psalm": "^3.17.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Facade\\IgnitionContracts\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://flareapp.io", + "role": "Developer" + } + ], + "description": "Solution contracts for Ignition", + "homepage": "https://github.com/facade/ignition-contracts", + "keywords": [ + "contracts", + "flare", + "ignition" + ], + "support": { + "issues": "https://github.com/facade/ignition-contracts/issues", + "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" + }, + "time": "2020-10-16T08:27:54+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.19.0", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", + "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "symfony/phpunit-bridge": "^4.4 || ^5.2" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "v1.19-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" + }, + "time": "2022-02-02T17:38:57+00:00" + }, + { + "name": "filp/whoops", + "version": "2.14.5", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.14.5" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2022-01-07T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.14.11", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "6edf45a247b3688e0d07e149570a62fd9bc11c73" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/6edf45a247b3688e0d07e149570a62fd9bc11c73", + "reference": "6edf45a247b3688e0d07e149570a62fd9bc11c73", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "illuminate/console": "^8.0|^9.0", + "illuminate/contracts": "^8.0|^9.0", + "illuminate/support": "^8.0|^9.0", + "php": "^7.3|^8.0" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2022-06-13T18:32:48+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": "^7.3 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mockery": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "http://davedevelopment.co.uk" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "issues": "https://github.com/mockery/mockery/issues", + "source": "https://github.com/mockery/mockery/tree/1.5.0" + }, + "time": "2022-01-20T13:18:17+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2022-03-03T13:19:32+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.14.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" + }, + "time": "2022-05-31T20:59:12+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v5.11.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461", + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "facade/ignition-contracts": "^1.0", + "filp/whoops": "^2.14.3", + "php": "^7.3 || ^8.0", + "symfony/console": "^5.0" + }, + "require-dev": { + "brianium/paratest": "^6.1", + "fideloper/proxy": "^4.4.1", + "fruitcake/laravel-cors": "^2.0.3", + "laravel/framework": "8.x-dev", + "nunomaduro/larastan": "^0.6.2", + "nunomaduro/mock-final-classes": "^1.0", + "orchestra/testbench": "^6.0", + "phpstan/phpstan": "^0.12.64", + "phpunit/phpunit": "^9.5.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2022-01-10T16:22:52+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "77a32518733312af16a44300404e945338981de3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + }, + "time": "2022-03-15T21:29:03+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.15.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + }, + "time": "2021-12-08T12:19:24+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.15", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.13.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-03-07T09:28:20+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.5.21", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1", + "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.0", + "sebastian/version": "^3.0.2" + }, + "require-dev": { + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-06-19T12:14:25+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-04-03T09:37:03+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-11-11T14:18:36+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-02-14T08:28:10+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-03-15T09:54:48+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^7.4|^8.0" + }, + "platform-dev": [], + "plugin-api-version": "2.1.0" +} diff --git a/config/admin.php b/config/admin.php new file mode 100644 index 0000000..ffa817f --- /dev/null +++ b/config/admin.php @@ -0,0 +1,439 @@ + [ + // storage_path('app/water.png'), + // 'bottom-right', + ], + + /* + |-------------------------------------------------------------------------- + | 上传图片是否开启缩略图 + | 'small' => [100, 100], + | ... + |-------------------------------------------------------------------------- + */ + 'cover_thumb' => [], + + /* + |-------------------------------------------------------------------------- + | Laravel-admin name + |-------------------------------------------------------------------------- + | + | This value is the name of laravel-admin, This setting is displayed on the + | login page. + | + */ + 'name' => '修缮庙宇', + + /* + |-------------------------------------------------------------------------- + | Laravel-admin html title + |-------------------------------------------------------------------------- + | + | Html title for all pages. + | + */ + 'title' => '修缮庙宇', + + /* + |-------------------------------------------------------------------------- + | Laravel-admin logo + |-------------------------------------------------------------------------- + | + | The logo of all admin pages. You can also set it as an image by using a + | `img` tag, eg 'Admin logo'. + | + */ + 'logo' => '修缮庙宇 功德无量', + + /* + |-------------------------------------------------------------------------- + | Laravel-admin mini logo + |-------------------------------------------------------------------------- + | + | The logo of all admin pages when the sidebar menu is collapsed. You can + | also set it as an image by using a `img` tag, eg + | 'Admin logo'. + | + */ + 'logo-mini' => 'SY', + + /* + |-------------------------------------------------------------------------- + | Laravel-admin bootstrap setting + |-------------------------------------------------------------------------- + | + | This value is the path of laravel-admin bootstrap file. + | + */ + 'bootstrap' => app_path('Admin/bootstrap.php'), + + /* + |-------------------------------------------------------------------------- + | Laravel-admin route settings + |-------------------------------------------------------------------------- + | + | The routing configuration of the admin page, including the path prefix, + | the controller namespace, and the default middleware. If you want to + | access through the root path, just set the prefix to empty string. + | + */ + 'route' => [ + + 'prefix' => env('ADMIN_ROUTE_PREFIX', 'admin'), + + 'namespace' => 'App\\Admin\\Controllers', + + 'middleware' => ['web', 'admin'], + + 'as' => 'admin.', + ], + + /* + |-------------------------------------------------------------------------- + | Laravel-admin install directory + |-------------------------------------------------------------------------- + | + | The installation directory of the controller and routing configuration + | files of the administration page. The default is `app/Admin`, which must + | be set before running `artisan admin::install` to take effect. + | + */ + 'directory' => app_path('Admin'), + + /* + |-------------------------------------------------------------------------- + | Access via `https` + |-------------------------------------------------------------------------- + | + | If your page is going to be accessed via https, set it to `true`. + | + */ + 'https' => env('ADMIN_HTTPS', false), + + /* + |-------------------------------------------------------------------------- + | Laravel-admin auth setting + |-------------------------------------------------------------------------- + | + | Authentication settings for all admin pages. Include an authentication + | guard and a user provider setting of authentication driver. + | + | You can specify a controller for `login` `logout` and other auth routes. + | + */ + 'auth' => [ + + 'controller' => App\Admin\Controllers\AuthController::class, + + 'guard' => 'admin', + + 'guards' => [ + 'admin' => [ + 'driver' => 'session', + 'provider' => 'admin', + ], + ], + + 'providers' => [ + 'admin' => [ + 'driver' => 'eloquent', + 'model' => Encore\Admin\Auth\Database\Administrator::class, + ], + ], + + // Add "remember me" to login form + 'remember' => true, + + // Redirect to the specified URI when user is not authorized. + 'redirect_to' => 'auth/login', + + // The URIs that should be excluded from authorization. + 'excepts' => [ + 'auth/login', + 'auth/logout', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Laravel-admin upload setting + |-------------------------------------------------------------------------- + | + | File system configuration for form upload files and images, including + | disk and upload path. + | + */ + 'upload' => [ + + // Disk in `config/filesystem.php`. + 'disk' => env('FILESYSTEM_DRIVER', 'local'), + + // Image and file upload path under the disk above. + 'directory' => [ + 'image' => 'images', + 'file' => 'files', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Laravel-admin database settings + |-------------------------------------------------------------------------- + | + | Here are database settings for laravel-admin builtin model & tables. + | + */ + 'database' => [ + + // Database connection for following tables. + 'connection' => '', + + // User tables and model. + 'users_table' => 'admin_users', + 'users_model' => Encore\Admin\Auth\Database\Administrator::class, + + // Role table and model. + 'roles_table' => 'admin_roles', + 'roles_model' => Encore\Admin\Auth\Database\Role::class, + + // Permission table and model. + 'permissions_table' => 'admin_permissions', + 'permissions_model' => Encore\Admin\Auth\Database\Permission::class, + + // Menu table and model. + 'menu_table' => 'admin_menu', + 'menu_model' => Encore\Admin\Auth\Database\Menu::class, + + // Pivot table for table above. + 'operation_log_table' => 'admin_operation_log', + 'user_permissions_table' => 'admin_user_permissions', + 'role_users_table' => 'admin_role_users', + 'role_permissions_table' => 'admin_role_permissions', + 'role_menu_table' => 'admin_role_menu', + ], + + /* + |-------------------------------------------------------------------------- + | User operation log setting + |-------------------------------------------------------------------------- + | + | By setting this option to open or close operation log in laravel-admin. + | + */ + 'operation_log' => [ + + 'enable' => true, + + /* + * Only logging allowed methods in the list + */ + 'allowed_methods' => ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'], + + /* + * Routes that will not log to database. + * + * All method to path like: admin/auth/logs + * or specific method to path like: get:admin/auth/logs. + */ + 'except' => [ + 'admin/auth/logs*', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Indicates whether to check route permission. + |-------------------------------------------------------------------------- + */ + 'check_route_permission' => true, + + /* + |-------------------------------------------------------------------------- + | Indicates whether to check menu roles. + |-------------------------------------------------------------------------- + */ + 'check_menu_roles' => true, + + /* + |-------------------------------------------------------------------------- + | User default avatar + |-------------------------------------------------------------------------- + | + | Set a default avatar for newly created users. + | + */ + 'default_avatar' => '/vendor/laravel-admin/AdminLTE/dist/img/user2-160x160.jpg', + + /* + |-------------------------------------------------------------------------- + | Admin map field provider + |-------------------------------------------------------------------------- + | + | Supported: "tencent", "google", "yandex". + | + */ + 'map_provider' => 'google', + + /* + |-------------------------------------------------------------------------- + | Application Skin + |-------------------------------------------------------------------------- + | + | This value is the skin of admin pages. + | @see https://adminlte.io/docs/2.4/layout + | + | Supported: + | "skin-blue", "skin-blue-light", "skin-yellow", "skin-yellow-light", + | "skin-green", "skin-green-light", "skin-purple", "skin-purple-light", + | "skin-red", "skin-red-light", "skin-black", "skin-black-light". + | + */ + 'skin' => 'skin-blue', + + /* + |-------------------------------------------------------------------------- + | Application layout + |-------------------------------------------------------------------------- + | + | This value is the layout of admin pages. + | @see https://adminlte.io/docs/2.4/layout + | + | Supported: "fixed", "layout-boxed", "layout-top-nav", "sidebar-collapse", + | "sidebar-mini". + | + */ + 'layout' => ['fixed', 'sidebar-mini'], + + /* + |-------------------------------------------------------------------------- + | Login page background image + |-------------------------------------------------------------------------- + | + | This value is used to set the background image of login page. + | + */ + 'login_background_image' => '', + + /* + |-------------------------------------------------------------------------- + | Show version at footer + |-------------------------------------------------------------------------- + | + | Whether to display the version number of laravel-admin at the footer of + | each page + | + */ + 'show_version' => true, + + /* + |-------------------------------------------------------------------------- + | Show environment at footer + |-------------------------------------------------------------------------- + | + | Whether to display the environment at the footer of each page + | + */ + 'show_environment' => true, + + /* + |-------------------------------------------------------------------------- + | Menu bind to permission + |-------------------------------------------------------------------------- + | + | whether enable menu bind to a permission + */ + 'menu_bind_permission' => true, + + /* + |-------------------------------------------------------------------------- + | Enable default breadcrumb + |-------------------------------------------------------------------------- + | + | Whether enable default breadcrumb for every page content. + */ + 'enable_default_breadcrumb' => true, + + /* + |-------------------------------------------------------------------------- + | Enable/Disable assets minify + |-------------------------------------------------------------------------- + */ + 'minify_assets' => [ + + // Assets will not be minified. + 'excepts' => [ + + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Enable/Disable sidebar menu search + |-------------------------------------------------------------------------- + */ + 'enable_menu_search' => true, + + /* + |-------------------------------------------------------------------------- + | Alert message that will displayed on top of the page. + |-------------------------------------------------------------------------- + */ + 'top_alert' => '', + + /* + |-------------------------------------------------------------------------- + | The global Grid action display class. + |-------------------------------------------------------------------------- + */ + 'grid_action_class' => \Encore\Admin\Grid\Displayers\DropdownActions::class, + + /* + |-------------------------------------------------------------------------- + | Extension Directory + |-------------------------------------------------------------------------- + | + | When you use command `php artisan admin:extend` to generate extensions, + | the extension files will be generated in this directory. + */ + 'extension_dir' => app_path('Admin/Extensions'), + + /* + |-------------------------------------------------------------------------- + | Settings for extensions. + |-------------------------------------------------------------------------- + | + | You can find all available extensions here + | https://github.com/laravel-admin-extensions. + | + */ + 'extensions' => [ + 'ueditor' => [ + // 如果要关掉这个扩展,设置为false + 'enable' => true, + // 编辑器的前端配置 参考:http://fex.baidu.com/ueditor/#start-config + 'config' => [ + 'initialFrameHeight' => 400, // 例如初始化高度 + ], + 'field_type' => 'ueditor', + ], + 'grid-lightbox' => [ + + // Set to `false` if you want to disable this extension + 'enable' => true, + ] + ], +]; diff --git a/config/agent.php b/config/agent.php new file mode 100644 index 0000000..6c8951f --- /dev/null +++ b/config/agent.php @@ -0,0 +1,40 @@ + [ + /** + * 可配置 API 独立域名 + */ + 'domain' => env('AGENT_ROUTE_DOMAIN', ''), + /** + * 不实用独立域名,API 地址前缀 + */ + 'prefix' => env('AGENT_ROUTE_PREFIX', 'agent'), + /** + * API 控制器命名空间 + */ + 'namespace' => 'App\\Agent\\Controllers', + /** + * API 路由命名前缀 + */ + 'as' => 'agent.', + /** + * API 默认中间件 + */ + 'middleware' => ['api', 'api.accept'], + /** + * 身份认证的中间件 + */ + 'middleware_auth' => ['api', 'api.accept', 'token.auth'], + /** + * 获取token,获取不到也不报错的中间件 + */ + 'middleware_guess' => ['api', 'api.accept', 'token.guess'], + ], + + /** + * API 目录 + */ + 'directory' => app_path('Agent'), +]; diff --git a/config/api.php b/config/api.php new file mode 100644 index 0000000..b7cc95d --- /dev/null +++ b/config/api.php @@ -0,0 +1,48 @@ + env('TOKEN_AUTO_REVOKE', true), + /** + * token的名称 + */ + 'passport_token_name' => env('PASSPORT_TOKEN_NAME', ''), + + 'route' => [ + /** + * API 路由命名前缀 + */ + 'as' => 'api.', + /** + * 可配置 API 独立域名 + */ + 'domain' => env('API_ROUTE_DOMAIN', ''), + /** + * 不使用用独立域名,API 地址前缀 + */ + 'prefix' => env('API_ROUTE_PREFIX', 'api'), + /** + * API 控制器命名空间 + */ + 'namespace' => 'App\\Api\\Controllers', + /** + * 中间件 + */ + 'middleware' => ['api', 'api.accept'], + /** + * 身份认证的中间件 + */ + 'middleware_auth' => ['api', 'api.accept', 'token.auth'], + /** + * 获取token,获取不到也不报错的中间件 + */ + 'middleware_guess' => ['api', 'api.accept', 'token.guess'], + ], + + /** + * 接口目录 + */ + 'directory' => app_path('Api'), +]; diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..dd1be1c --- /dev/null +++ b/config/app.php @@ -0,0 +1,236 @@ + env('APP_NAME', 'Laravel'), + + /** + * 是否是测试 + */ + 'is_test' => env('APP_IS_TEST', false), + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'asset_url' => env('ASSET_URL', null), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + 'timezone' => 'Asia/Shanghai', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'zh_CN', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'zh_CN', + + /* + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | + */ + + 'faker_locale' => 'en_US', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => [ + + /* + * Laravel Framework Service Providers... + */ + Illuminate\Auth\AuthServiceProvider::class, + Illuminate\Broadcasting\BroadcastServiceProvider::class, + Illuminate\Bus\BusServiceProvider::class, + Illuminate\Cache\CacheServiceProvider::class, + Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, + Illuminate\Cookie\CookieServiceProvider::class, + Illuminate\Database\DatabaseServiceProvider::class, + Illuminate\Encryption\EncryptionServiceProvider::class, + Illuminate\Filesystem\FilesystemServiceProvider::class, + Illuminate\Foundation\Providers\FoundationServiceProvider::class, + Illuminate\Hashing\HashServiceProvider::class, + Illuminate\Mail\MailServiceProvider::class, + Illuminate\Notifications\NotificationServiceProvider::class, + Illuminate\Pagination\PaginationServiceProvider::class, + Illuminate\Pipeline\PipelineServiceProvider::class, + Illuminate\Queue\QueueServiceProvider::class, + Illuminate\Redis\RedisServiceProvider::class, + Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, + Illuminate\Session\SessionServiceProvider::class, + Illuminate\Translation\TranslationServiceProvider::class, + Illuminate\Validation\ValidationServiceProvider::class, + Illuminate\View\ViewServiceProvider::class, + + /* + * Package Service Providers... + */ + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + + ], + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => [ + + 'App' => Illuminate\Support\Facades\App::class, + 'Arr' => Illuminate\Support\Arr::class, + 'Artisan' => Illuminate\Support\Facades\Artisan::class, + 'Auth' => Illuminate\Support\Facades\Auth::class, + 'Blade' => Illuminate\Support\Facades\Blade::class, + 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, + 'Bus' => Illuminate\Support\Facades\Bus::class, + 'Cache' => Illuminate\Support\Facades\Cache::class, + 'Config' => Illuminate\Support\Facades\Config::class, + 'Cookie' => Illuminate\Support\Facades\Cookie::class, + 'Crypt' => Illuminate\Support\Facades\Crypt::class, + 'DB' => Illuminate\Support\Facades\DB::class, + 'Eloquent' => Illuminate\Database\Eloquent\Model::class, + 'Event' => Illuminate\Support\Facades\Event::class, + 'File' => Illuminate\Support\Facades\File::class, + 'Gate' => Illuminate\Support\Facades\Gate::class, + 'Hash' => Illuminate\Support\Facades\Hash::class, + 'Http' => Illuminate\Support\Facades\Http::class, + 'Lang' => Illuminate\Support\Facades\Lang::class, + 'Log' => Illuminate\Support\Facades\Log::class, + 'Mail' => Illuminate\Support\Facades\Mail::class, + 'Notification' => Illuminate\Support\Facades\Notification::class, + 'Password' => Illuminate\Support\Facades\Password::class, + 'Queue' => Illuminate\Support\Facades\Queue::class, + 'Redirect' => Illuminate\Support\Facades\Redirect::class, + // 'Redis' => Illuminate\Support\Facades\Redis::class, + 'Request' => Illuminate\Support\Facades\Request::class, + 'Response' => Illuminate\Support\Facades\Response::class, + 'Route' => Illuminate\Support\Facades\Route::class, + 'Schema' => Illuminate\Support\Facades\Schema::class, + 'Session' => Illuminate\Support\Facades\Session::class, + 'Storage' => Illuminate\Support\Facades\Storage::class, + 'Str' => Illuminate\Support\Str::class, + 'URL' => Illuminate\Support\Facades\URL::class, + 'Validator' => Illuminate\Support\Facades\Validator::class, + 'View' => Illuminate\Support\Facades\View::class, + + ], + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..495483d --- /dev/null +++ b/config/auth.php @@ -0,0 +1,117 @@ + [ + 'guard' => 'web', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session", "token" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + + 'api' => [ + 'driver' => 'token', + 'provider' => 'users', + 'hash' => false, + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\Models\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expire time is the number of minutes that the reset token should be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_resets', + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => 10800, + +]; diff --git a/config/broadcasting.php b/config/broadcasting.php new file mode 100644 index 0000000..59bccd5 --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,64 @@ + env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'useTLS' => true, + ], + ], + + 'ably' => [ + 'driver' => 'ably', + 'key' => env('ABLY_KEY'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..70a2674 --- /dev/null +++ b/config/cache.php @@ -0,0 +1,106 @@ + env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "apc", "array", "database", "file", + | "memcached", "redis", "dynamodb", "null" + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + 'lock_connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'cache', + 'lock_connection' => 'default', + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing a RAM based store such as APC or Memcached, there might + | be other applications utilizing the same cache. So, we'll specify a + | value to get prefixed to all our keys so we can avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_cache'), + +]; diff --git a/config/cors.php b/config/cors.php new file mode 100644 index 0000000..7655fd3 --- /dev/null +++ b/config/cors.php @@ -0,0 +1,34 @@ + ['api/*'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => ['Authorization', '*'], + + 'max_age' => 0, + + 'supports_credentials' => false, + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..aeabec6 --- /dev/null +++ b/config/database.php @@ -0,0 +1,147 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => false, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'schema' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/config/favorite.php b/config/favorite.php new file mode 100644 index 0000000..0bc6e39 --- /dev/null +++ b/config/favorite.php @@ -0,0 +1,23 @@ + false, + + /* + * User tables foreign key name. + */ + 'user_foreign_key' => 'user_id', + + /* + * Table name for favorites records. + */ + 'favorites_table' => 'favorites', + + /* + * Model name for favorite record. + */ + 'favorite_model' => 'Overtrue\LaravelFavorite\Favorite', +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..a9a2a86 --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,72 @@ + env('FILESYSTEM_DRIVER', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been setup for each driver as an example of the required options. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL') . '/storage', + 'visibility' => 'public', + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/config/hashing.php b/config/hashing.php new file mode 100644 index 0000000..5b10c09 --- /dev/null +++ b/config/hashing.php @@ -0,0 +1,52 @@ + 'bcrypt', + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 10), + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => 1024, + 'threads' => 2, + 'time' => 2, + ], + +]; diff --git a/config/image.php b/config/image.php new file mode 100644 index 0000000..2b1d2c3 --- /dev/null +++ b/config/image.php @@ -0,0 +1,20 @@ + 'gd' + +]; diff --git a/config/jwt.php b/config/jwt.php new file mode 100644 index 0000000..8b7843b --- /dev/null +++ b/config/jwt.php @@ -0,0 +1,304 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +return [ + + /* + |-------------------------------------------------------------------------- + | JWT Authentication Secret + |-------------------------------------------------------------------------- + | + | Don't forget to set this in your .env file, as it will be used to sign + | your tokens. A helper command is provided for this: + | `php artisan jwt:secret` + | + | Note: This will be used for Symmetric algorithms only (HMAC), + | since RSA and ECDSA use a private/public key combo (See below). + | + */ + + 'secret' => env('JWT_SECRET'), + + /* + |-------------------------------------------------------------------------- + | JWT Authentication Keys + |-------------------------------------------------------------------------- + | + | The algorithm you are using, will determine whether your tokens are + | signed with a random string (defined in `JWT_SECRET`) or using the + | following public & private keys. + | + | Symmetric Algorithms: + | HS256, HS384 & HS512 will use `JWT_SECRET`. + | + | Asymmetric Algorithms: + | RS256, RS384 & RS512 / ES256, ES384 & ES512 will use the keys below. + | + */ + + 'keys' => [ + + /* + |-------------------------------------------------------------------------- + | Public Key + |-------------------------------------------------------------------------- + | + | A path or resource to your public key. + | + | E.g. 'file://path/to/public/key' + | + */ + + 'public' => env('JWT_PUBLIC_KEY'), + + /* + |-------------------------------------------------------------------------- + | Private Key + |-------------------------------------------------------------------------- + | + | A path or resource to your private key. + | + | E.g. 'file://path/to/private/key' + | + */ + + 'private' => env('JWT_PRIVATE_KEY'), + + /* + |-------------------------------------------------------------------------- + | Passphrase + |-------------------------------------------------------------------------- + | + | The passphrase for your private key. Can be null if none set. + | + */ + + 'passphrase' => env('JWT_PASSPHRASE'), + + ], + + /* + |-------------------------------------------------------------------------- + | JWT time to live + |-------------------------------------------------------------------------- + | + | Specify the length of time (in minutes) that the token will be valid for. + | Defaults to 1 hour. + | + | You can also set this to null, to yield a never expiring token. + | Some people may want this behaviour for e.g. a mobile app. + | This is not particularly recommended, so make sure you have appropriate + | systems in place to revoke the token if necessary. + | Notice: If you set this to null you should remove 'exp' element from 'required_claims' list. + | + */ + + 'ttl' => env('JWT_TTL', 60), + + /* + |-------------------------------------------------------------------------- + | Refresh time to live + |-------------------------------------------------------------------------- + | + | Specify the length of time (in minutes) that the token can be refreshed + | within. I.E. The user can refresh their token within a 2 week window of + | the original token being created until they must re-authenticate. + | Defaults to 2 weeks. + | + | You can also set this to null, to yield an infinite refresh time. + | Some may want this instead of never expiring tokens for e.g. a mobile app. + | This is not particularly recommended, so make sure you have appropriate + | systems in place to revoke the token if necessary. + | + */ + + 'refresh_ttl' => env('JWT_REFRESH_TTL', 20160), + + /* + |-------------------------------------------------------------------------- + | JWT hashing algorithm + |-------------------------------------------------------------------------- + | + | Specify the hashing algorithm that will be used to sign the token. + | + | See here: https://github.com/namshi/jose/tree/master/src/Namshi/JOSE/Signer/OpenSSL + | for possible values. + | + */ + + 'algo' => env('JWT_ALGO', 'HS256'), + + /* + |-------------------------------------------------------------------------- + | Required Claims + |-------------------------------------------------------------------------- + | + | Specify the required claims that must exist in any token. + | A TokenInvalidException will be thrown if any of these claims are not + | present in the payload. + | + */ + + 'required_claims' => [ + 'iss', + 'iat', + 'exp', + 'nbf', + 'sub', + 'jti', + ], + + /* + |-------------------------------------------------------------------------- + | Persistent Claims + |-------------------------------------------------------------------------- + | + | Specify the claim keys to be persisted when refreshing a token. + | `sub` and `iat` will automatically be persisted, in + | addition to the these claims. + | + | Note: If a claim does not exist then it will be ignored. + | + */ + + 'persistent_claims' => [ + // 'foo', + // 'bar', + ], + + /* + |-------------------------------------------------------------------------- + | Lock Subject + |-------------------------------------------------------------------------- + | + | This will determine whether a `prv` claim is automatically added to + | the token. The purpose of this is to ensure that if you have multiple + | authentication models e.g. `App\User` & `App\OtherPerson`, then we + | should prevent one authentication request from impersonating another, + | if 2 tokens happen to have the same id across the 2 different models. + | + | Under specific circumstances, you may want to disable this behaviour + | e.g. if you only have one authentication model, then you would save + | a little on token size. + | + */ + + 'lock_subject' => true, + + /* + |-------------------------------------------------------------------------- + | Leeway + |-------------------------------------------------------------------------- + | + | This property gives the jwt timestamp claims some "leeway". + | Meaning that if you have any unavoidable slight clock skew on + | any of your servers then this will afford you some level of cushioning. + | + | This applies to the claims `iat`, `nbf` and `exp`. + | + | Specify in seconds - only if you know you need it. + | + */ + + 'leeway' => env('JWT_LEEWAY', 0), + + /* + |-------------------------------------------------------------------------- + | Blacklist Enabled + |-------------------------------------------------------------------------- + | + | In order to invalidate tokens, you must have the blacklist enabled. + | If you do not want or need this functionality, then set this to false. + | + */ + + 'blacklist_enabled' => env('JWT_BLACKLIST_ENABLED', true), + + /* + | ------------------------------------------------------------------------- + | Blacklist Grace Period + | ------------------------------------------------------------------------- + | + | When multiple concurrent requests are made with the same JWT, + | it is possible that some of them fail, due to token regeneration + | on every request. + | + | Set grace period in seconds to prevent parallel request failure. + | + */ + + 'blacklist_grace_period' => env('JWT_BLACKLIST_GRACE_PERIOD', 0), + + /* + |-------------------------------------------------------------------------- + | Cookies encryption + |-------------------------------------------------------------------------- + | + | By default Laravel encrypt cookies for security reason. + | If you decide to not decrypt cookies, you will have to configure Laravel + | to not encrypt your cookie token by adding its name into the $except + | array available in the middleware "EncryptCookies" provided by Laravel. + | see https://laravel.com/docs/master/responses#cookies-and-encryption + | for details. + | + | Set it to true if you want to decrypt cookies. + | + */ + + 'decrypt_cookies' => false, + + /* + |-------------------------------------------------------------------------- + | Providers + |-------------------------------------------------------------------------- + | + | Specify the various providers used throughout the package. + | + */ + + 'providers' => [ + + /* + |-------------------------------------------------------------------------- + | JWT Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to create and decode the tokens. + | + */ + + 'jwt' => Tymon\JWTAuth\Providers\JWT\Lcobucci::class, + + /* + |-------------------------------------------------------------------------- + | Authentication Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to authenticate users. + | + */ + + 'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class, + + /* + |-------------------------------------------------------------------------- + | Storage Provider + |-------------------------------------------------------------------------- + | + | Specify the provider that is used to store tokens in the blacklist. + | + */ + + 'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class, + + ], + +]; diff --git a/config/laravel-model-caching.php b/config/laravel-model-caching.php new file mode 100644 index 0000000..cda02fb --- /dev/null +++ b/config/laravel-model-caching.php @@ -0,0 +1,11 @@ + '', + + 'enabled' => env('MODEL_CACHE_ENABLED', true), + + 'use-database-keying' => env('MODEL_CACHE_USE_DATABASE_KEYING', true), + + 'store' => env('MODEL_CACHE_STORE'), +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..fad5759 --- /dev/null +++ b/config/logging.php @@ -0,0 +1,119 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['daily'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => 14, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => env('LOG_LEVEL', 'critical'), + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => SyslogUdpHandler::class, + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + ], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + ], + + 'query' => [ + 'enabled' => env('LOG_QUERY', env('APP_ENV') === 'local'), + + // Only record queries that are slower than the following time + // Unit: milliseconds + 'slower_than' => 0, + + // Only record queries when the QUERY_LOG_TRIGGER is set in the environment, + // or when the trigger HEADER, GET, POST, or COOKIE variable is set. + 'trigger' => env('QUERY_LOG_TRIGGER'), + + // Log Channel + 'channel' => 'stack', + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..93c656a --- /dev/null +++ b/config/mail.php @@ -0,0 +1,110 @@ + env('MAIL_MAILER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", + | "postmark", "log", "array" + | + */ + + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'auth_mode' => null, + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + ], + + 'postmark' => [ + 'transport' => 'postmark', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => '/usr/sbin/sendmail -bs', + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + +]; diff --git a/config/modules.php b/config/modules.php new file mode 100644 index 0000000..b81ed11 --- /dev/null +++ b/config/modules.php @@ -0,0 +1,272 @@ + 'Modules', + + /* + |-------------------------------------------------------------------------- + | Module Stubs + |-------------------------------------------------------------------------- + | + | Default module stubs. + | + */ + + 'stubs' => [ + 'enabled' => false, + 'path' => base_path() . '/vendor/nwidart/laravel-modules/src/Commands/stubs', + 'files' => [ + 'routes/web' => 'Routes/web.php', + 'routes/api' => 'Routes/api.php', + 'views/index' => 'Resources/views/index.blade.php', + 'views/master' => 'Resources/views/layouts/master.blade.php', + 'scaffold/config' => 'Config/config.php', + 'composer' => 'composer.json', + 'assets/js/app' => 'Resources/assets/js/app.js', + 'assets/sass/app' => 'Resources/assets/sass/app.scss', + 'webpack' => 'webpack.mix.js', + 'package' => 'package.json', + ], + 'replacements' => [ + 'routes/web' => ['LOWER_NAME', 'STUDLY_NAME'], + 'routes/api' => ['LOWER_NAME'], + 'webpack' => ['LOWER_NAME'], + 'json' => ['LOWER_NAME', 'STUDLY_NAME', 'MODULE_NAMESPACE', 'PROVIDER_NAMESPACE'], + 'views/index' => ['LOWER_NAME'], + 'views/master' => ['LOWER_NAME', 'STUDLY_NAME'], + 'scaffold/config' => ['STUDLY_NAME'], + 'composer' => [ + 'LOWER_NAME', + 'STUDLY_NAME', + 'VENDOR', + 'AUTHOR_NAME', + 'AUTHOR_EMAIL', + 'MODULE_NAMESPACE', + 'PROVIDER_NAMESPACE', + ], + ], + 'gitkeep' => false, + ], + 'paths' => [ + /* + |-------------------------------------------------------------------------- + | Modules path + |-------------------------------------------------------------------------- + | + | This path used for save the generated module. This path also will be added + | automatically to list of scanned folders. + | + */ + + 'modules' => base_path('modules'), + /* + |-------------------------------------------------------------------------- + | Modules assets path + |-------------------------------------------------------------------------- + | + | Here you may update the modules assets path. + | + */ + + 'assets' => public_path('modules'), + /* + |-------------------------------------------------------------------------- + | The migrations path + |-------------------------------------------------------------------------- + | + | Where you run 'module:publish-migration' command, where do you publish the + | the migration files? + | + */ + + 'migration' => base_path('database/migrations'), + /* + |-------------------------------------------------------------------------- + | Generator path + |-------------------------------------------------------------------------- + | Customise the paths where the folders will be generated. + | Set the generate key to false to not generate that folder + */ + 'generator' => [ + 'config' => ['path' => 'Config', 'generate' => true], + 'command' => ['path' => 'Console', 'generate' => true], + 'migration' => ['path' => 'Database/Migrations', 'generate' => true], + 'seeder' => ['path' => 'Database/Seeders', 'generate' => true], + 'factory' => ['path' => 'Database/factories', 'generate' => true], + 'model' => ['path' => 'Models', 'generate' => true], + 'routes' => ['path' => 'Routes', 'generate' => true], + 'controller' => ['path' => 'Http/Controllers', 'generate' => true], + 'filter' => ['path' => 'Http/Middleware', 'generate' => true], + 'request' => ['path' => 'Http/Requests', 'generate' => true], + 'provider' => ['path' => 'Providers', 'generate' => true], + 'assets' => ['path' => 'Resources/assets', 'generate' => false], + 'lang' => ['path' => 'Resources/lang', 'generate' => true], + 'views' => ['path' => 'Resources/views', 'generate' => false], + 'test' => ['path' => 'Tests/Unit', 'generate' => false], + 'test-feature' => ['path' => 'Tests/Feature', 'generate' => false], + 'repository' => ['path' => 'Http/Resources', 'generate' => true], + 'event' => ['path' => 'Events', 'generate' => true], + 'listener' => ['path' => 'Listeners', 'generate' => true], + 'policies' => ['path' => 'Policies', 'generate' => false], + 'rules' => ['path' => 'Rules', 'generate' => false], + 'jobs' => ['path' => 'Jobs', 'generate' => true], + 'emails' => ['path' => 'Emails', 'generate' => false], + 'notifications' => ['path' => 'Notifications', 'generate' => false], + 'resource' => ['path' => 'Transformers', 'generate' => false], + 'component-view' => ['path' => 'Resources/views/components', 'generate' => false], + 'component-class' => ['path' => 'View/Component', 'generate' => false], + ], + ], + + /* + |-------------------------------------------------------------------------- + | Package commands + |-------------------------------------------------------------------------- + | + | Here you can define which commands will be visible and used in your + | application. If for example you don't use some of the commands provided + | you can simply comment them out. + | + */ + 'commands' => [ + Commands\CommandMakeCommand::class, + Commands\ControllerMakeCommand::class, + Commands\DisableCommand::class, + Commands\DumpCommand::class, + Commands\EnableCommand::class, + Commands\EventMakeCommand::class, + Commands\JobMakeCommand::class, + Commands\ListenerMakeCommand::class, + Commands\MailMakeCommand::class, + Commands\MiddlewareMakeCommand::class, + Commands\NotificationMakeCommand::class, + Commands\ProviderMakeCommand::class, + Commands\RouteProviderMakeCommand::class, + Commands\InstallCommand::class, + Commands\ListCommand::class, + Commands\ModuleDeleteCommand::class, + Commands\ModuleMakeCommand::class, + Commands\FactoryMakeCommand::class, + Commands\PolicyMakeCommand::class, + Commands\RequestMakeCommand::class, + Commands\RuleMakeCommand::class, + Commands\MigrateCommand::class, + Commands\MigrateRefreshCommand::class, + Commands\MigrateResetCommand::class, + Commands\MigrateRollbackCommand::class, + Commands\MigrateStatusCommand::class, + Commands\MigrationMakeCommand::class, + Commands\ModelMakeCommand::class, + Commands\PublishCommand::class, + Commands\PublishConfigurationCommand::class, + Commands\PublishMigrationCommand::class, + Commands\PublishTranslationCommand::class, + Commands\SeedCommand::class, + Commands\SeedMakeCommand::class, + Commands\SetupCommand::class, + Commands\UnUseCommand::class, + Commands\UpdateCommand::class, + Commands\UseCommand::class, + Commands\ResourceMakeCommand::class, + Commands\TestMakeCommand::class, + Commands\LaravelModulesV6Migrator::class, + ], + + /* + |-------------------------------------------------------------------------- + | Scan Path + |-------------------------------------------------------------------------- + | + | Here you define which folder will be scanned. By default will scan vendor + | directory. This is useful if you host the package in packagist website. + | + */ + + 'scan' => [ + 'enabled' => false, + 'paths' => [ + base_path('vendor/*/*'), + ], + ], + /* + |-------------------------------------------------------------------------- + | Composer File Template + |-------------------------------------------------------------------------- + | + | Here is the config for composer.json file, generated by this package + | + */ + + 'composer' => [ + 'vendor' => 'jasonc', + 'author' => [ + 'name' => 'Jason.Chen', + 'email' => 'chenjxlg@163.com', + ], + ], + + 'composer-output' => true, + + /* + |-------------------------------------------------------------------------- + | Caching + |-------------------------------------------------------------------------- + | + | Here is the config for setting up caching feature. + | + */ + 'cache' => [ + 'enabled' => false, + 'key' => 'laravel-modules', + 'lifetime' => 60, + ], + /* + |-------------------------------------------------------------------------- + | Choose what laravel-modules will register as custom namespaces. + | Setting one to false will require you to register that part + | in your own Service Provider class. + |-------------------------------------------------------------------------- + */ + 'register' => [ + 'translations' => true, + /** + * load files on boot or register method + * Note: boot not compatible with asgardcms + * @example boot|register + */ + 'files' => 'register', + ], + + /* + |-------------------------------------------------------------------------- + | Activators + |-------------------------------------------------------------------------- + | + | You can define new types of activators here, file, database etc. The only + | required parameter is 'class'. + | The file activator will store the activation status in storage/installed_modules + */ + 'activators' => [ + 'file' => [ + 'class' => FileActivator::class, + 'statuses-file' => base_path('modules.json'), + 'cache-key' => 'activator.installed', + 'cache-lifetime' => 604800, + ], + ], + + 'activator' => 'file', +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..84f7438 --- /dev/null +++ b/config/queue.php @@ -0,0 +1,93 @@ + env('QUEUE_CONNECTION', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, + 'after_commit' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..3215b42 --- /dev/null +++ b/config/services.php @@ -0,0 +1,33 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + ], + + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..c0e798b --- /dev/null +++ b/config/session.php @@ -0,0 +1,201 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION', null), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | While using one of the framework's cache driven session backends you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE', null), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_') . '_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => env('SESSION_DOMAIN', null), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you if it can not be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" since this is a secure default value. + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => 'lax', + +]; diff --git a/config/subscribe.php b/config/subscribe.php new file mode 100644 index 0000000..72e173c --- /dev/null +++ b/config/subscribe.php @@ -0,0 +1,23 @@ + false, + + /* + * User tables foreign key name. + */ + 'user_foreign_key' => 'user_id', + + /* + * Table name for subscriptions records. + */ + 'subscriptions_table' => 'subscriptions', + + /* + * Model name for Subscribe record. + */ + 'subscription_model' => \Overtrue\LaravelSubscribe\Subscription::class, +]; diff --git a/config/tencent_map.php b/config/tencent_map.php new file mode 100644 index 0000000..50366e4 --- /dev/null +++ b/config/tencent_map.php @@ -0,0 +1,6 @@ + '地图服务', + 'key' => env('TENCENT_KEY', ''), +]; diff --git a/config/ueditor.php b/config/ueditor.php new file mode 100644 index 0000000..acbc0d4 --- /dev/null +++ b/config/ueditor.php @@ -0,0 +1,118 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +return [ + 'hash_filename' => true, + // 存储引擎: config/filesystem.php 中 disks, public 或 qiniu + 'disk' => env('FILESYSTEM_DRIVER', 'local'), + 'route' => [ + 'name' => '/ueditor/server', + 'options' => [ + // middleware => 'auth', + ], + ], + + // 上传 配置 + 'upload' => [ + /* 前后端通信相关的配置,注释只允许使用多行方式 */ + /* 上传图片配置项 */ + 'imageActionName' => 'upload-image', /* 执行上传图片的action名称 */ + 'imageFieldName' => 'upfile', /* 提交的图片表单名称 */ + 'imageMaxSize' => 2 * 1024 * 1024, /* 上传大小限制,单位B */ + 'imageAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'], /* 上传图片格式显示 */ + 'imageCompressEnable' => true, /* 是否压缩图片,默认是true */ + 'imageCompressBorder' => 1600, /* 图片压缩最长边限制 */ + 'imageInsertAlign' => 'none', /* 插入的图片浮动方式 */ + 'imageUrlPrefix' => '', /* 图片访问路径前缀 */ + 'imagePathFormat' => '/uploads/images/{yyyy}/{mm}/{dd}/', /* 上传保存路径,可以自定义保存路径和文件名格式 */ + /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ + /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ + /* {time} 会替换成时间戳 */ + /* {yyyy} 会替换成四位年份 */ + /* {yy} 会替换成两位年份 */ + /* {mm} 会替换成两位月份 */ + /* {dd} 会替换成两位日期 */ + /* {hh} 会替换成两位小时 */ + /* {ii} 会替换成两位分钟 */ + /* {ss} 会替换成两位秒 */ + /* 非法字符 \ => * ? " < > | */ + /* 具请体看线上文档 => fex.baidu.com/assets/#use-format_upload_filename */ + + /* 涂鸦图片上传配置项 */ + 'scrawlActionName' => 'upload-scrawl', /* 执行上传涂鸦的action名称 */ + 'scrawlFieldName' => 'upfile', /* 提交的图片表单名称 */ + 'scrawlPathFormat' => '/uploads/images/{yyyy}/{mm}/{dd}/', /* 上传保存路径,可以自定义保存路径和文件名格式 */ + 'scrawlMaxSize' => 2048000, /* 上传大小限制,单位B */ + 'scrawlUrlPrefix' => '', /* 图片访问路径前缀 */ + 'scrawlInsertAlign' => 'none', + + /* 截图工具上传 */ + 'snapscreenActionName' => 'upload-image', /* 执行上传截图的action名称 */ + 'snapscreenPathFormat' => '/uploads/images/{yyyy}/{mm}/{dd}/', /* 上传保存路径,可以自定义保存路径和文件名格式 */ + 'snapscreenUrlPrefix' => '', /* 图片访问路径前缀 */ + 'snapscreenInsertAlign' => 'none', /* 插入的图片浮动方式 */ + + /* 抓取远程图片配置 */ + 'catcherLocalDomain' => ['127.0.0.1', 'localhost', 'img.baidu.com'], + 'catcherActionName' => 'catch-image', /* 执行抓取远程图片的action名称 */ + 'catcherFieldName' => 'source', /* 提交的图片列表表单名称 */ + 'catcherPathFormat' => '/uploads/images/{yyyy}/{mm}/{dd}/', /* 上传保存路径,可以自定义保存路径和文件名格式 */ + 'catcherUrlPrefix' => '', /* 图片访问路径前缀 */ + 'catcherMaxSize' => 2048000, /* 上传大小限制,单位B */ + 'catcherAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'], /* 抓取图片格式显示 */ + + /* 上传视频配置 */ + 'videoActionName' => 'upload-video', /* 执行上传视频的action名称 */ + 'videoFieldName' => 'upfile', /* 提交的视频表单名称 */ + 'videoPathFormat' => '/uploads/videos/{yyyy}/{mm}/{dd}/', /* 上传保存路径,可以自定义保存路径和文件名格式 */ + 'videoUrlPrefix' => '', /* 视频访问路径前缀 */ + 'videoMaxSize' => 102400000, /* 上传大小限制,单位B,默认100MB */ + 'videoAllowFiles' => [ + '.flv', '.swf', '.mkv', '.avi', '.rm', '.rmvb', '.mpeg', '.mpg', + '.ogg', '.ogv', '.mov', '.wmv', '.mp4', '.webm', '.mp3', '.wav', '.mid', + ], /* 上传视频格式显示 */ + + /* 上传文件配置 */ + 'fileActionName' => 'upload-file', /* controller里,执行上传视频的action名称 */ + 'fileFieldName' => 'upfile', /* 提交的文件表单名称 */ + 'filePathFormat' => '/uploads/files/{yyyy}/{mm}/{dd}/', /* 上传保存路径,可以自定义保存路径和文件名格式 */ + 'fileUrlPrefix' => '', /* 文件访问路径前缀 */ + 'fileMaxSize' => 51200000, /* 上传大小限制,单位B,默认50MB */ + 'fileAllowFiles' => [ + '.png', '.jpg', '.jpeg', '.gif', '.bmp', + '.flv', '.swf', '.mkv', '.avi', '.rm', '.rmvb', '.mpeg', '.mpg', + '.ogg', '.ogv', '.mov', '.wmv', '.mp4', '.webm', '.mp3', '.wav', '.mid', + '.rar', '.zip', '.tar', '.gz', '.7z', '.bz2', '.cab', '.iso', + '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx', '.pdf', '.txt', '.md', '.xml', + ], /* 上传文件格式显示 */ + + /* 列出指定目录下的图片 */ + 'imageManagerActionName' => 'list-image', /* 执行图片管理的action名称 */ + 'imageManagerListPath' => '/uploads/images/', /* 指定要列出图片的目录 */ + 'imageManagerListSize' => 20, /* 每次列出文件数量 */ + 'imageManagerUrlPrefix' => '', /* 图片访问路径前缀 */ + 'imageManagerInsertAlign' => 'none', /* 插入的图片浮动方式 */ + 'imageManagerAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'], /* 列出的文件类型 */ + + /* 列出指定目录下的文件 */ + 'fileManagerActionName' => 'list-file', /* 执行文件管理的action名称 */ + 'fileManagerListPath' => '/uploads/files/', /* 指定要列出文件的目录 */ + 'fileManagerUrlPrefix' => '', /* 文件访问路径前缀 */ + 'fileManagerListSize' => 20, /* 每次列出文件数量 */ + 'fileManagerAllowFiles' => [ + '.png', '.jpg', '.jpeg', '.gif', '.bmp', + '.flv', '.swf', '.mkv', '.avi', '.rm', '.rmvb', '.mpeg', '.mpg', + '.ogg', '.ogv', '.mov', '.wmv', '.mp4', '.webm', '.mp3', '.wav', '.mid', + '.rar', '.zip', '.tar', '.gz', '.7z', '.bz2', '.cab', '.iso', + '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx', '.pdf', '.txt', '.md', '.xml', + ], /* 列出的文件类型 */ + ], +]; diff --git a/config/versionable.php b/config/versionable.php new file mode 100644 index 0000000..9d1c477 --- /dev/null +++ b/config/versionable.php @@ -0,0 +1,30 @@ + true, + + /* + * Keep versions, you can redefine in target model. + * Default: 0 - Keep all versions. + */ + 'keep_versions' => 0, + + /* + * User foreign key name of versions table. + */ + 'user_foreign_key' => 'user_id', + + /* + * The model class for store versions. + */ + 'version_model' => \Overtrue\LaravelVersionable\Version::class, + + /** + * The model class for user. + */ + 'user_model' => Modules\User\Models\User::class, +]; diff --git a/config/view.php b/config/view.php new file mode 100644 index 0000000..22b8a18 --- /dev/null +++ b/config/view.php @@ -0,0 +1,36 @@ + [ + resource_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), + +]; diff --git a/config/wechat.php b/config/wechat.php new file mode 100644 index 0000000..d2a59dd --- /dev/null +++ b/config/wechat.php @@ -0,0 +1,146 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +return [ + /* + * 默认配置,将会合并到各模块中 + */ + 'defaults' => [ + /* + * 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名 + */ + 'response_type' => 'collection', + + /* + * 使用 Laravel 的缓存系统 + */ + 'use_laravel_cache' => true, + + /** + * 日志配置 + * + * level: 日志级别, 可选为: + * debug/info/notice/warning/error/critical/alert/emergency + * path:日志文件位置(绝对路径!!!),要求可写权限 + */ + 'log' => [ + 'default' => env('APP_DEBUG', false) ? 'dev' : 'prod', // 默认使用的 channel,生产环境可以改为下面的 prod + 'channels' => [ + // 测试环境 + 'dev' => [ + 'driver' => 'single', + 'path' => env('WECHAT_LOG_FILE', storage_path('logs/wechat/wechat-'.date('Y-m-d').'.log')), + 'level' => 'debug', + ], + // 生产环境 + 'prod' => [ + 'driver' => 'daily', + 'path' => env('WECHAT_LOG_FILE', storage_path('logs/wechat/wechat-'.date('Y-m-d').'.log')), + 'level' => 'info', + ], + ], + ], + ], + + /* + * 路由配置 + */ + 'route' => [ + /* + * 开放平台第三方平台路由配置 + */ + // 'open_platform' => [ + // 'uri' => 'serve', + // 'action' => Overtrue\LaravelWeChat\Controllers\OpenPlatformController::class, + // 'attributes' => [ + // 'prefix' => 'open-platform', + // 'middleware' => null, + // ], + // ], + ], + + /* + * 公众号 + */ + 'official_account' => [ + 'default' => [ + 'app_id' => env('WECHAT_OFFICIAL_ACCOUNT_APPID', 'your-app-id'), // AppID + 'secret' => env('WECHAT_OFFICIAL_ACCOUNT_SECRET', 'your-app-secret'), // AppSecret + 'token' => env('WECHAT_OFFICIAL_ACCOUNT_TOKEN', 'your-token'), // Token + 'aes_key' => env('WECHAT_OFFICIAL_ACCOUNT_AES_KEY', ''), // EncodingAESKey + + /* + * OAuth 配置 + * + * scopes:公众平台(snsapi_userinfo / snsapi_base),开放平台:snsapi_login + * callback:OAuth授权完成后的回调页地址(如果使用中间件,则随便填写。。。) + * enforce_https:是否强制使用 HTTPS 跳转 + */ + // 'oauth' => [ + // 'scopes' => array_map('trim', explode(',', env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_SCOPES', 'snsapi_userinfo'))), + // 'callback' => env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_CALLBACK', '/examples/oauth_callback.php'), + // 'enforce_https' => true, + // ], + ], + ], + + /* + * 开放平台第三方平台 + */ + // 'open_platform' => [ + // 'default' => [ + // 'app_id' => env('WECHAT_OPEN_PLATFORM_APPID', ''), + // 'secret' => env('WECHAT_OPEN_PLATFORM_SECRET', ''), + // 'token' => env('WECHAT_OPEN_PLATFORM_TOKEN', ''), + // 'aes_key' => env('WECHAT_OPEN_PLATFORM_AES_KEY', ''), + // ], + // ], + + /* + * 小程序 + */ + 'mini_program' => [ + 'default' => [ + 'app_id' => env('WECHAT_MINI_PROGRAM_APPID', ''), + 'secret' => env('WECHAT_MINI_PROGRAM_SECRET', ''), + 'token' => env('WECHAT_MINI_PROGRAM_TOKEN', ''), + 'aes_key' => env('WECHAT_MINI_PROGRAM_AES_KEY', ''), + ], + ], + + /* + * 微信支付 + */ + // 'payment' => [ + // 'default' => [ + // 'sandbox' => env('WECHAT_PAYMENT_SANDBOX', false), + // 'app_id' => env('WECHAT_PAYMENT_APPID', ''), + // 'mch_id' => env('WECHAT_PAYMENT_MCH_ID', 'your-mch-id'), + // 'key' => env('WECHAT_PAYMENT_KEY', 'key-for-signature'), + // 'cert_path' => env('WECHAT_PAYMENT_CERT_PATH', 'path/to/cert/apiclient_cert.pem'), // XXX: 绝对路径!!!! + // 'key_path' => env('WECHAT_PAYMENT_KEY_PATH', 'path/to/cert/apiclient_key.pem'), // XXX: 绝对路径!!!! + // 'notify_url' => 'http://example.com/payments/wechat-notify', // 默认支付结果通知地址 + // ], + // // ... + // ], + + /* + * 企业微信 + */ + // 'work' => [ + // 'default' => [ + // 'corp_id' => 'xxxxxxxxxxxxxxxxx', + // 'agent_id' => 100020, + // 'secret' => env('WECHAT_WORK_AGENT_CONTACTS_SECRET', ''), + // //... + // ], + // ], +]; diff --git a/config/withdraw.php b/config/withdraw.php new file mode 100644 index 0000000..7983fb1 --- /dev/null +++ b/config/withdraw.php @@ -0,0 +1,13 @@ + '提现模块', + 'is_chain' => false,//提现账户是否是区块链,true 是 false 否 + 'account' => 'balance',//提现账户 + 'withdraw_no_counter_length' => 8, + 'model' => [ + 'account_rules' => Modules\User\Models\AccountRule::class,//规则表 + 'chain_money' => App\Models\DayDataChain::class,//记录金额表 + ], + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..97fc976 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1,2 @@ +*.sqlite +*.sqlite-journal diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..3510ed6 --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,47 @@ + $this->faker->name, + 'email' => $this->faker->unique()->safeEmail, + 'email_verified_at' => now(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + * + * @return \Illuminate\Database\Eloquent\Factories\Factory + */ + public function unverified() + { + return $this->state(function (array $attributes) { + return [ + 'email_verified_at' => null, + ]; + }); + } +} diff --git a/database/migrations/2016_01_04_173148_create_admin_tables.php b/database/migrations/2016_01_04_173148_create_admin_tables.php new file mode 100644 index 0000000..450847e --- /dev/null +++ b/database/migrations/2016_01_04_173148_create_admin_tables.php @@ -0,0 +1,119 @@ +increments('id'); + $table->string('username', 190)->unique(); + $table->string('password', 60); + $table->string('name'); + $table->string('avatar')->nullable(); + $table->string('remember_token', 100)->nullable(); + $table->timestamps(); + }); + + Schema::create(config('admin.database.roles_table'), function (Blueprint $table) { + $table->increments('id'); + $table->string('name', 50)->unique(); + $table->string('slug', 50)->unique(); + $table->timestamps(); + }); + + Schema::create(config('admin.database.permissions_table'), function (Blueprint $table) { + $table->increments('id'); + $table->string('name', 50)->unique(); + $table->string('slug', 50)->unique(); + $table->string('http_method')->nullable(); + $table->text('http_path')->nullable(); + $table->timestamps(); + }); + + Schema::create(config('admin.database.menu_table'), function (Blueprint $table) { + $table->increments('id'); + $table->integer('parent_id')->default(0); + $table->integer('order')->default(0); + $table->string('title', 50); + $table->string('icon', 50); + $table->string('uri')->nullable(); + $table->string('permission')->nullable(); + + $table->timestamps(); + }); + + Schema::create(config('admin.database.role_users_table'), function (Blueprint $table) { + $table->integer('role_id'); + $table->integer('user_id'); + $table->index(['role_id', 'user_id']); + $table->timestamps(); + }); + + Schema::create(config('admin.database.role_permissions_table'), function (Blueprint $table) { + $table->integer('role_id'); + $table->integer('permission_id'); + $table->index(['role_id', 'permission_id']); + $table->timestamps(); + }); + + Schema::create(config('admin.database.user_permissions_table'), function (Blueprint $table) { + $table->integer('user_id'); + $table->integer('permission_id'); + $table->index(['user_id', 'permission_id']); + $table->timestamps(); + }); + + Schema::create(config('admin.database.role_menu_table'), function (Blueprint $table) { + $table->integer('role_id'); + $table->integer('menu_id'); + $table->index(['role_id', 'menu_id']); + $table->timestamps(); + }); + + Schema::create(config('admin.database.operation_log_table'), function (Blueprint $table) { + $table->increments('id'); + $table->integer('user_id'); + $table->string('path'); + $table->string('method', 10); + $table->string('ip'); + $table->text('input'); + $table->index('user_id'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists(config('admin.database.users_table')); + Schema::dropIfExists(config('admin.database.roles_table')); + Schema::dropIfExists(config('admin.database.permissions_table')); + Schema::dropIfExists(config('admin.database.menu_table')); + Schema::dropIfExists(config('admin.database.user_permissions_table')); + Schema::dropIfExists(config('admin.database.role_users_table')); + Schema::dropIfExists(config('admin.database.role_permissions_table')); + Schema::dropIfExists(config('admin.database.role_menu_table')); + Schema::dropIfExists(config('admin.database.operation_log_table')); + } +} diff --git a/database/migrations/2018_12_14_000000_create_favorites_table.php b/database/migrations/2018_12_14_000000_create_favorites_table.php new file mode 100644 index 0000000..fb8cb3b --- /dev/null +++ b/database/migrations/2018_12_14_000000_create_favorites_table.php @@ -0,0 +1,29 @@ +bigIncrements('id'); + $table->unsignedBigInteger(config('favorite.user_foreign_key'))->index()->comment('user_id'); + $table->morphs('favoriteable'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down() + { + Schema::dropIfExists(config('favorite.favorites_table')); + } +} diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..6aa6d74 --- /dev/null +++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('failed_jobs'); + } +} diff --git a/database/migrations/2020_04_09_000000_create_subscriptions_table.php b/database/migrations/2020_04_09_000000_create_subscriptions_table.php new file mode 100644 index 0000000..555888c --- /dev/null +++ b/database/migrations/2020_04_09_000000_create_subscriptions_table.php @@ -0,0 +1,29 @@ +bigIncrements('id'); + $table->unsignedBigInteger(config('subscribe.user_foreign_key'))->index()->comment('user_id'); + $table->morphs('subscribable'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down() + { + Schema::dropIfExists(config('subscribe.subscriptions_table')); + } +} diff --git a/database/migrations/2021_08_06_104216_create_materials_table.php b/database/migrations/2021_08_06_104216_create_materials_table.php new file mode 100644 index 0000000..5a9867f --- /dev/null +++ b/database/migrations/2021_08_06_104216_create_materials_table.php @@ -0,0 +1,32 @@ +bigIncrements('id'); + $table->string('cover'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * @return void + */ + public function down() + { + Schema::dropIfExists('materials'); + } + +} diff --git a/database/migrations/2022_08_30_150338_create_bouns_table.php b/database/migrations/2022_08_30_150338_create_bouns_table.php new file mode 100644 index 0000000..13105f1 --- /dev/null +++ b/database/migrations/2022_08_30_150338_create_bouns_table.php @@ -0,0 +1,36 @@ +id(); + $table->timestamp('date')->nullable()->comment('分红时间'); + $table->string('type', 20)->comment('分红类别'); + $table->unsignedDecimal('total', 12, 2)->default(0)->comment('分红累计金额'); + $table->boolean('status')->default(0)->comment('分红状态'); + $table->text('source')->nullable()->comment('数组源信息'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('bouns'); + } +} diff --git a/database/migrations/2022_08_30_150355_create_bouns_orders_table.php b/database/migrations/2022_08_30_150355_create_bouns_orders_table.php new file mode 100644 index 0000000..53b32a3 --- /dev/null +++ b/database/migrations/2022_08_30_150355_create_bouns_orders_table.php @@ -0,0 +1,36 @@ +id(); + $table->unsignedInteger('bouns_id'); + $table->morphs('order'); + $table->string('type', 20)->comment('类别'); + $table->unsignedDecimal('total', 12, 2)->default(0)->comment('订单金额'); + $table->unsignedDecimal('amount', 12, 2)->default(0)->comment('产生分红'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('bouns_orders'); + } +} diff --git a/database/migrations/2022_09_26_153401_create_bouns_user_perves_table.php b/database/migrations/2022_09_26_153401_create_bouns_user_perves_table.php new file mode 100644 index 0000000..a7bbe68 --- /dev/null +++ b/database/migrations/2022_09_26_153401_create_bouns_user_perves_table.php @@ -0,0 +1,40 @@ +id(); + $table->unsignedInteger('user_id')->comment('用户ID'); + $table->timestamp('date')->nullable()->comment('分红时间'); + $table->unsignedInteger('star')->nullable()->comment('当时星级'); + $table->unsignedDecimal('old_perf', 12, 2)->default(0)->comment('累计业绩'); + $table->unsignedDecimal('new_perf', 12, 2)->default(0)->comment('新增业绩'); + $table->unsignedDecimal('price', 12, 6)->nullable()->comment('单价'); + $table->unsignedDecimal('amount', 12, 2)->nullable()->comment('应得'); + $table->boolean('status')->default(0)->comment('状态'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('bouns_user_perves'); + } +} diff --git a/database/seeders/AdminPanelSeeder.php b/database/seeders/AdminPanelSeeder.php new file mode 100644 index 0000000..e97cd97 --- /dev/null +++ b/database/seeders/AdminPanelSeeder.php @@ -0,0 +1,106 @@ + 'admin', + 'password' => bcrypt('admin'), + 'name' => 'Administrator', + ]); + + Role::create([ + 'name' => 'Administrator', + 'slug' => 'administrator', + ]); + + Permission::create([ + 'name' => 'All permission', + 'slug' => '*', + 'http_method' => '', + 'http_path' => '*', + ]); + + Menu::create([ + 'id' => 1, + 'parent_id' => 0, + 'order' => 0, + 'title' => 'Dashboard', + 'icon' => 'fa-bar-chart', + 'uri' => '/', + ]); + + $menu = Menu::create([ + 'id' => 2, + 'parent_id' => 0, + 'order' => 99, + 'title' => 'Admin', + 'icon' => 'fa-tasks', + ]); + + $menu->children()->createMany([ + [ + 'parent_id' => 2, + 'order' => 1, + 'title' => '模块管理', + 'icon' => 'fa-windows', + 'uri' => 'modules', + ], + [ + 'parent_id' => 2, + 'order' => 2, + 'title' => 'Users', + 'icon' => 'fa-users', + 'uri' => 'auth/users', + ], + [ + 'parent_id' => 2, + 'order' => 3, + 'title' => 'Roles', + 'icon' => 'fa-user', + 'uri' => 'auth/roles', + ], + [ + 'parent_id' => 2, + 'order' => 4, + 'title' => 'Permission', + 'icon' => 'fa-ban', + 'uri' => 'auth/permissions', + ], + [ + 'parent_id' => 2, + 'order' => 1, + 'title' => 'Menu', + 'icon' => 'fa-bars', + 'uri' => 'auth/menu', + ], + [ + 'parent_id' => 2, + 'order' => 1, + 'title' => 'Operation log', + 'icon' => 'fa-history', + 'uri' => 'auth/logs', + ], + ]); + + DB::insert("INSERT INTO `admin_role_menu` VALUES (1, 2, NULL, NULL);"); + DB::insert("INSERT INTO `admin_role_permissions` VALUES (1, 1, NULL, NULL);"); + DB::insert("INSERT INTO `admin_role_users` VALUES (1, 1, NULL, NULL);"); + } + +} \ No newline at end of file diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..57b73b5 --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,18 @@ +create(); + } +} diff --git a/docs/READMD.md b/docs/READMD.md new file mode 100644 index 0000000..c20ed6f --- /dev/null +++ b/docs/READMD.md @@ -0,0 +1,2 @@ +# Laravel 开发文档 +

\ No newline at end of file diff --git a/docs/Trait doc.md b/docs/Trait doc.md new file mode 100644 index 0000000..173c310 --- /dev/null +++ b/docs/Trait doc.md @@ -0,0 +1,117 @@ +# Trait + +## 1. HasClicks + +> 缓存的浏览计数器 + +```php +use App\Traits\HasClicks; + +class Test extends Model +{ + use HasClicks; + protected string $clicks_filed = 'clicks'; +} + +$test = Test::first(); + +// 增加点击数量 +$test->incrementClicks(1); +// 获取点击量 +$test->clicks; +``` + +## 2. HasCovers + +> 封面图与轮播图的展示扩展,完整url + +```php +use App\Traits\HasCovers; + +class Test extends Model { + use HasCovers; + protected string $cover_field = 'cover'; + protected string $pictures_field = 'pictures'; +} + +$test = Test::first(); + +$test->cover_url; +$test->pictures_url; +``` + +## 3. HasStatus + +> 基础状态的显示与作用域查询 + +```php +use App\Traits\HasStatus; + +class Test extends Model { + use HasStatus; + protected string $status_field = 'status'; + protected array $status_map = [ + 1 => '正常', + 0 => '禁用' + ]; +} + +// 状态为 1 的 +$test = Test::shown()->first(); +// 状态为 0 的 +$test = Test::hidden()->first(); +// 查询特定状态 +$test = Test::ofStatus(3)->first(); +// 状态的文本显示 +$test->status_text; +``` + +## 4. Macroable + +> 这个主要用于,对模型的一些外部扩展使用、 +> +> 因为模型无法动态的注入trait,有些时候在模块外部,需要写入关联模型等时候,可以使用。 + +```php +use App\Tratis\Macroable; + +class Test extends Model { + use Macroable; +} +// 对模型注入一个 address 的一对多关联 +Test::macro('address', function () { + return $this->hasMany(Address::class); +}); +``` + +## 5. OrderByIdDesc + +> 直接引入模型后,查询到的数据会默认以ID 倒序排列, +> +> 暂时没有找到怎么获取主键的方法,待升级 + +## 6. OrderByOrderAsc + +> 已特定的 order 字段,按照升序排序 + +## 7. WithPosition + +> 位运算来解决的多点定位,模型中需要有 position 字段 + +```php + +use App\Traits\WithPosition; + +class Test extends Model +{ + use WithPosition; + protected array $position_map = [ + 1 => 'A', + 2 => 'B', + 4 => 'C', + 8 => 'D', + ]; +} + +$test = Test::ofPosition(3)->first(); +``` \ No newline at end of file diff --git a/modules.json b/modules.json new file mode 100644 index 0000000..6fc7ecc --- /dev/null +++ b/modules.json @@ -0,0 +1,13 @@ +{ + "Storage": true, + "User": true, + "Mall": true, + "Cms": true, + "Payment": true, + "Gout": true, + "Linker": false, + "Notification": true, + "Coupon": true, + "Configuration": true, + "Withdraw": true +} \ No newline at end of file diff --git a/modules/.gitignore b/modules/.gitignore new file mode 100644 index 0000000..ea41b8c --- /dev/null +++ b/modules/.gitignore @@ -0,0 +1,15 @@ +* +!.gitignore +!pull-all.sh +!README.md +!/Cms/ +!/Gout/ +!/Linker/ +!/Mall/ +!/Notification/ +!/Payment/ +!/Storage/ +!/User/ +!/Coupon/ +!/Configuration/ +!/Settlement/ diff --git a/modules/Cms/.gitignore b/modules/Cms/.gitignore new file mode 100644 index 0000000..4b6cb11 --- /dev/null +++ b/modules/Cms/.gitignore @@ -0,0 +1,4 @@ +.idea +vendor +.DS_Store +composer.lock \ No newline at end of file diff --git a/modules/Cms/README.md b/modules/Cms/README.md new file mode 100644 index 0000000..1ce5ed5 --- /dev/null +++ b/modules/Cms/README.md @@ -0,0 +1,49 @@ +# CMS + +## 安装 + +```shell +composer require overtrue/laravel-versionable +``` + +## 接口文档 + +### 1. 文章 + +#### 1. 文章列表 + +> GET: /api/cms/articles + +#### 2. 文章详情 + +> GET: /api/cms/articles/{article_id} + +### 2. 单页 + +#### 1. 单页列表 + +> GET: /api/cms/pages + +#### 2. 单页详情 + +> GET: /api/cms/pages/{page_id} + +### 3. 分类 + +#### 1. 分类列表 + +> GET: /api/cms/categories + +#### 2. 分类详情 + +> GET: /api/cms/categories/{category_id} + +### 4. 标签 + +#### 1. 标签列表 + +> GET: /api/cms/tags + +#### 2. 标签详情 + +> GET: /api/cms/tags/{tag_id} diff --git a/modules/Configuration/.gitignore b/modules/Configuration/.gitignore new file mode 100644 index 0000000..4b6cb11 --- /dev/null +++ b/modules/Configuration/.gitignore @@ -0,0 +1,4 @@ +.idea +vendor +.DS_Store +composer.lock \ No newline at end of file diff --git a/modules/Configuration/README.md b/modules/Configuration/README.md new file mode 100644 index 0000000..4654ce5 --- /dev/null +++ b/modules/Configuration/README.md @@ -0,0 +1,6 @@ +# laravel-configuration-module + +# 参数配置模块 + +## 需要config的模块配置 + diff --git a/modules/Coupon/.gitignore b/modules/Coupon/.gitignore new file mode 100644 index 0000000..4b6cb11 --- /dev/null +++ b/modules/Coupon/.gitignore @@ -0,0 +1,4 @@ +.idea +vendor +.DS_Store +composer.lock \ No newline at end of file diff --git a/modules/Coupon/README.md b/modules/Coupon/README.md new file mode 100644 index 0000000..65678db --- /dev/null +++ b/modules/Coupon/README.md @@ -0,0 +1,10 @@ +# 优惠券模块 + +> 1、发布config并配置相关模型 + +> 2、关联traits + +```php +Shop Model +use HasStores,HasCoupons; +``` diff --git a/modules/Linker/.gitignore b/modules/Linker/.gitignore new file mode 100644 index 0000000..4b6cb11 --- /dev/null +++ b/modules/Linker/.gitignore @@ -0,0 +1,4 @@ +.idea +vendor +.DS_Store +composer.lock \ No newline at end of file diff --git a/modules/Linker/README.md b/modules/Linker/README.md new file mode 100644 index 0000000..9b75460 --- /dev/null +++ b/modules/Linker/README.md @@ -0,0 +1,22 @@ +# 链接模块 + +## 1. 使用 + +### 1. 模型 Trait + +```php +use Modules\Linker\Traits\HasLinker; +``` + +### 2. laravel-admin + +自动增加三个字段, +1. 选择链接地址 +2. 替换链接地址里的参数 +3. 参数替换模式 + +```php +use Modules\Linker\Traits\WithLinker; + +$this->withUrl($form,'字段名称'); +``` diff --git a/modules/Mall/.gitignore b/modules/Mall/.gitignore new file mode 100644 index 0000000..4b6cb11 --- /dev/null +++ b/modules/Mall/.gitignore @@ -0,0 +1,4 @@ +.idea +vendor +.DS_Store +composer.lock \ No newline at end of file diff --git a/modules/Mall/README.md b/modules/Mall/README.md new file mode 100644 index 0000000..b1c03f1 --- /dev/null +++ b/modules/Mall/README.md @@ -0,0 +1,37 @@ +# UzTech Mall Module 多用户商城模块 + +## 1. 使用 + +> php artisan module:publish-config Mall + +## 2. traits 说明 + +### 1. UserHasAddress 用户地址列表 + +## 3. 功能说明 + +### 1. 物流管理,主后台添加一个主表,各商户,通过多对多的关系来确定使用哪些物流 + +### 2. + +## 4. 工作流说明 + +> 参考文档 +> +> https://github.com/brexis/laravel-workflow +> +> https://symfony.com/doc/current/components/workflow.html + +```php + $order = Order::find(2); + // 方法1 + $app = app('workflow'); + $workflow = $app->get($order); + if ($workflow->can($order, 'pay')) { + $workflow->apply($order, 'pay') + } + // 方法2,引入 WithWorkflow + $order->can('pay'); + // 方法3 + $workflow = Modules\Mall\Facades\Workflow::get($order)->can('pay'); +``` \ No newline at end of file diff --git a/modules/Notification/README.md b/modules/Notification/README.md new file mode 100644 index 0000000..aa32b2c --- /dev/null +++ b/modules/Notification/README.md @@ -0,0 +1,154 @@ +# Notification + +通知模块 + +## 1. 安装 + +```shell +composer require getuilaboratory/getui-pushapi-php-client-v2 +``` + +## 2. 接口文档 + +### 1. 获取未读消息数量(不登陆返回0) + +> GET: /api/notifications/counts + +```json +{ + "status": "SUCCESS", + "status_code": 200, + "data": 16 +} +``` + +### 2. 消息主页 + +> GET: /api/notifications + +```json +{ + "status": "SUCCESS", + "status_code": 200, + "data": [ + { + "type": "SystemNotification", + "icon": "", + "name": "系统通知", + "count": 16, + "title": "登录成功" + }, + { + "type": "OrderNotification", + "icon": "", + "name": "订单通知", + "count": 0, + "title": "" + }, + { + "type": "ActivityNotification", + "icon": "", + "name": "活动通知", + "count": 0, + "title": "" + } + ] +} +``` + +### 3. 分类消息的列表 + +> GET: /api/notifications/{type}/list + +```json +{ + "status": "SUCCESS", + "status_code": 200, + "data": { + "data": [ + { + "notification_id": "91e31d1e-95e1-40ff-88d8-8049df974860", + "type": "SystemNotification", + "title": "登录成功", + "content": "您于北京时间:2021-07-02 15:31:03,通过【账号密码】渠道,在IP:1.190.203.218成功登录系统。请注意保管好您的账号密码。", + "read_at": "", + "created_at": "2021-07-02 15:31:03" + } + ], + "page": { + "current": 1, + "total_page": 2, + "per_page": 15, + "has_more": true, + "total": 16 + } + } +} +``` + +### 4. 消息详情 + +> GET: /api/notifications/{notification_id} + +```json +{ + "status": "SUCCESS", + "status_code": 200, + "data": { + "notification_id": "91e31d1e-95e1-40ff-88d8-8049df974860", + "type": "SystemNotification", + "title": "登录成功", + "content": "您于北京时间:2021-07-02 15:31:03,通过【账号密码】渠道,在IP:1.190.203.218成功登录系统。请注意保管好您的账号密码。", + "read_at": "2021-07-02 16:27:07", + "created_at": "2021-07-02 15:31:03" + } +} +``` + +### 5. 全部标记已读 + +> PUT: /api/notifications + +```json +{ + "status": "SUCCESS", + "status_code": 200, + "data": "" +} +``` + +### 6. 全部标记已读(分类) + +> PUT: /api/notifications/{type} + +```json +{ + "status": "SUCCESS", + "status_code": 200, + "data": "" +} +``` + +### 7. 清空全部消息 + +> DELETE: /api/notifications + +```json +{ + "status": "SUCCESS", + "status_code": 200, + "data": "" +} +``` + +### 8. 清空分类消息 + +> DELETE: /api/notifications/{type} + +```json +{ + "status": "SUCCESS", + "status_code": 200, + "data": "" +} +``` \ No newline at end of file diff --git a/modules/Payment/.gitignore b/modules/Payment/.gitignore new file mode 100644 index 0000000..4b6cb11 --- /dev/null +++ b/modules/Payment/.gitignore @@ -0,0 +1,4 @@ +.idea +vendor +.DS_Store +composer.lock \ No newline at end of file diff --git a/modules/Payment/README.md b/modules/Payment/README.md new file mode 100644 index 0000000..a56f4fd --- /dev/null +++ b/modules/Payment/README.md @@ -0,0 +1,46 @@ +# 支付模块 + +## 1. 安装 + +```shell +composer require yansongda/pay +``` + +## 2. 文档参考 + +> https://github.com/yansongda/pay + +## 3. 生成支付订单 +```php +use Modules\Payment\Traits\WithPayments; + +$order = Order::first(); + +$payment = $order->createWechatPayment(User::first(), -1, 'mp'); + +$payment->getPaymentParams(); +``` + + +## 4. 支付渠道 GATEWAY 参考值 +// 支付宝 +//web 电脑支付 array $order Response +//wap 手机网站支付 array $order Response +//app APP 支付 array $order Response +//mini 小程序支付 array $order Collection +//scan 扫码支付 array $order Collection +// 不支持的 +//pos 刷卡支付 array $order Collection +//transfer 账户转账 array $order Collection + +// 微信支付 +//mp 公众号支付 array $order Collection +//wap 手机网站支付 array $order Response +//app APP 支付 array $order JsonResponse +//miniapp 小程序支付 array $order Collection +//scan 扫码支付 array $order Collection +// 不支持的 +//pos 刷卡支付 array $order Collection +//transfer 账户转账 array $order Collection +//redpack 普通红包 array $order Collection +//groupRedpack 裂变红包 array $order Collection \ No newline at end of file diff --git a/modules/README.md b/modules/README.md new file mode 100644 index 0000000..fbfa6e6 --- /dev/null +++ b/modules/README.md @@ -0,0 +1,27 @@ +# 模块存放目录 + +## 1. 模块列表 + +### 1. User 【用户模块】 + +> 模块地址:http://git.yuzhankeji.cn/UzTech/laravel-user-module.git +> +> 后台菜单排序:10 + +### 2. Cms 【内容管理】 + +> 模块地址:https://git.yuzhankeji.cn/UzTech/laravel-cms-module +> +> 后台菜单排序:15 + +### 3. Mall 【商城模块】 + +> 模块地址:https://git.yuzhankeji.cn/UzTech/laravel-mall-module +> +> 后台菜单排序:20 + +### 4. Payment 【支付中心】 + +> 模块地址:https://git.yuzhankeji.cn/UzTech/laravel-payment-module +> +> 后台菜单排序:25 \ No newline at end of file diff --git a/modules/Storage/.gitignore b/modules/Storage/.gitignore new file mode 100644 index 0000000..4b6cb11 --- /dev/null +++ b/modules/Storage/.gitignore @@ -0,0 +1,4 @@ +.idea +vendor +.DS_Store +composer.lock \ No newline at end of file diff --git a/modules/Storage/README.md b/modules/Storage/README.md new file mode 100644 index 0000000..0d2f29c --- /dev/null +++ b/modules/Storage/README.md @@ -0,0 +1,70 @@ +# 文件存储模块 + +## 1. 前端上传接口 + +## 2. 配置STS直传 + +### 步骤一:创建RAM用户 + +- 登录RAM控制台。 +- 在左侧导航栏的人员管理菜单下,单击用户。 +- 单击新建用户。 +- 输入登录名称和显示名称。 +- 在访问方式区域下,选择编程访问,然后单击确定。 +- 单击复制,保存访问密钥(AccessKey ID 和 AccessKey Secret)。 + +### 步骤二:为RAM用户授予请求AssumeRole的权限 + +- 单击已创建RAM用户右侧对应的添加权限。 +- 在添加权限页面,选择AliyunSTSAssumeRoleAccess权限。 +- 单击确定。 + +### 步骤三:创建用于获取临时访问凭证的角色 + +- 在左侧导航栏,单击RAM角色管理。 +- 单击新建RAM角色,选择可信实体类型为阿里云账号,单击下一步。 +- 在新建RAM角色页面,RAM角色名称填写为RamOssTest,选择云账号为当前云账号。 +- 单击完成。 +- 单击复制,保存角色的ARN。 + +### 步骤四:为角色授予上传文件的权限 + +- 在左侧导航栏的权限管理菜单下,单击权限策略管理。 +- 单击创建权限策略。 +- 在新建自定义权限策略页面,填写策略名称,配置模式选择脚本配置,并在策略内容中赋予角色向目标存储空间examplebucket下的目录exampledir上传文件的权限。 +```json +{ + "Version": "1", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "oss:PutObject" + ], + "Resource": [ + "acs:oss:*:*:examplebucket/exampledir", + "acs:oss:*:*:examplebucket/exampledir/*" + ] + } + ] +} +``` +- 单击确定。 + +### 步骤五:获取临时访问凭证 + +- 您可以通过调用STS服务接口AssumeRole 或者使用各语言STS SDK来获取临时访问凭证。 +> 说明 临时访问凭证有效时间单位为秒,最小值为900,最大值以当前角色设定的最大会话时间为准。详情请参见设置角色最大会话时间。 + +### 步骤六:使用临时访问凭证上传文件至OSS + +### 常见问题 + +- 报错The security token you provided is invalid.如何处理? +> 请确保完整填写步骤五获取到的SecurityToken。 + +- 报错The OSS Access Key Id you provided does not exist in our records.如何处理? +> 临时访问凭证已过期,过期后自动失效。请使用临时访问密钥(AccessKeyId和AccessKeySecret)向App服务器申请新的临时访问凭证。具体操作,请参见步骤五。 + +- 获取STS时报错NoSuchBucket如何处理? +> 出现这种报错通常是STS的endpoint填写错误。请根据您的地域,填写正确的STS接入地址。各地域的STS接入地址请参见接入地址。 \ No newline at end of file diff --git a/modules/User/.gitignore b/modules/User/.gitignore new file mode 100644 index 0000000..4b6cb11 --- /dev/null +++ b/modules/User/.gitignore @@ -0,0 +1,4 @@ +.idea +vendor +.DS_Store +composer.lock \ No newline at end of file diff --git a/modules/User/README.md b/modules/User/README.md new file mode 100644 index 0000000..38cf711 --- /dev/null +++ b/modules/User/README.md @@ -0,0 +1,12 @@ +# 用户模块 + +## 1. 安装 + +```shell +composer require overtrue/wechat +composer require overtrue/easy-sms +composer require overtrue/socialite +composer require propaganistas/laravel-phone +composer require vinkla/hashids +composer require yangjisen/laravel-cache-provider +``` diff --git a/package.json b/package.json new file mode 100644 index 0000000..00c6506 --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "private": true, + "scripts": { + "dev": "npm run development", + "development": "mix", + "watch": "mix watch", + "watch-poll": "mix watch -- --watch-options-poll=1000", + "hot": "mix watch --hot", + "prod": "npm run production", + "production": "mix --production" + }, + "devDependencies": { + "axios": "^0.21", + "laravel-mix": "^6.0.6", + "lodash": "^4.17.19", + "postcss": "^8.1.14" + } +} diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..3aec5e2 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,21 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..a8137b1 --- /dev/null +++ b/public/index.php @@ -0,0 +1,55 @@ +make(Kernel::class); + +$response = tap($kernel->handle( + $request = Request::capture() +))->send(); + +$kernel->terminate($request, $response); diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/public/vendor/js/setStock.js b/public/vendor/js/setStock.js new file mode 100644 index 0000000..eda5c37 --- /dev/null +++ b/public/vendor/js/setStock.js @@ -0,0 +1,21 @@ +$('.join_identity_id').change(function (e) { + const val = $(this).val(); + var commonThis = $(this); + if (val !== null) { + $.ajax({ + type: "get", + data: { + 'q': val, + }, + url: "/admin/platform/identity_stock", + async: true, + success: (result => { + if (result.status_code == 200) { + $('.stock').val(result.value); + } else { + alert('获取库存失败'); + } + }) + }); + } +}); \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/bootstrap/css/bootstrap.min.css b/public/vendor/laravel-admin/AdminLTE/bootstrap/css/bootstrap.min.css new file mode 100644 index 0000000..a58698c --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/bootstrap/css/bootstrap.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) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')} .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} .glyphicon-asterisk:before{content:"\2a"} .glyphicon-plus:before{content:"\2b"} .glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"} .glyphicon-minus:before{content:"\2212"} .glyphicon-cloud:before{content:"\2601"} .glyphicon-envelope:before{content:"\2709"} .glyphicon-pencil:before{content:"\270f"} .glyphicon-glass:before{content:"\e001"} .glyphicon-music:before{content:"\e002"} .glyphicon-search:before{content:"\e003"} .glyphicon-heart:before{content:"\e005"} .glyphicon-star:before{content:"\e006"} .glyphicon-star-empty:before{content:"\e007"} .glyphicon-user:before{content:"\e008"} .glyphicon-film:before{content:"\e009"} .glyphicon-th-large:before{content:"\e010"} .glyphicon-th:before{content:"\e011"} .glyphicon-th-list:before{content:"\e012"} .glyphicon-ok:before{content:"\e013"} .glyphicon-remove:before{content:"\e014"} .glyphicon-zoom-in:before{content:"\e015"} .glyphicon-zoom-out:before{content:"\e016"} .glyphicon-off:before{content:"\e017"} .glyphicon-signal:before{content:"\e018"} .glyphicon-cog:before{content:"\e019"} .glyphicon-trash:before{content:"\e020"} .glyphicon-home:before{content:"\e021"} .glyphicon-file:before{content:"\e022"} .glyphicon-time:before{content:"\e023"} .glyphicon-road:before{content:"\e024"} .glyphicon-download-alt:before{content:"\e025"} .glyphicon-download:before{content:"\e026"} .glyphicon-upload:before{content:"\e027"} .glyphicon-inbox:before{content:"\e028"} .glyphicon-play-circle:before{content:"\e029"} .glyphicon-repeat:before{content:"\e030"} .glyphicon-refresh:before{content:"\e031"} .glyphicon-list-alt:before{content:"\e032"} .glyphicon-lock:before{content:"\e033"} .glyphicon-flag:before{content:"\e034"} .glyphicon-headphones:before{content:"\e035"} .glyphicon-volume-off:before{content:"\e036"} .glyphicon-volume-down:before{content:"\e037"} .glyphicon-volume-up:before{content:"\e038"} .glyphicon-qrcode:before{content:"\e039"} .glyphicon-barcode:before{content:"\e040"} .glyphicon-tag:before{content:"\e041"} .glyphicon-tags:before{content:"\e042"} .glyphicon-book:before{content:"\e043"} .glyphicon-bookmark:before{content:"\e044"} .glyphicon-print:before{content:"\e045"} .glyphicon-camera:before{content:"\e046"} .glyphicon-font:before{content:"\e047"} .glyphicon-bold:before{content:"\e048"} .glyphicon-italic:before{content:"\e049"} .glyphicon-text-height:before{content:"\e050"} .glyphicon-text-width:before{content:"\e051"} .glyphicon-align-left:before{content:"\e052"} .glyphicon-align-center:before{content:"\e053"} .glyphicon-align-right:before{content:"\e054"} .glyphicon-align-justify:before{content:"\e055"} .glyphicon-list:before{content:"\e056"} .glyphicon-indent-left:before{content:"\e057"} .glyphicon-indent-right:before{content:"\e058"} .glyphicon-facetime-video:before{content:"\e059"} .glyphicon-picture:before{content:"\e060"} .glyphicon-map-marker:before{content:"\e062"} .glyphicon-adjust:before{content:"\e063"} .glyphicon-tint:before{content:"\e064"} .glyphicon-edit:before{content:"\e065"} .glyphicon-share:before{content:"\e066"} .glyphicon-check:before{content:"\e067"} .glyphicon-move:before{content:"\e068"} .glyphicon-step-backward:before{content:"\e069"} .glyphicon-fast-backward:before{content:"\e070"} .glyphicon-backward:before{content:"\e071"} .glyphicon-play:before{content:"\e072"} .glyphicon-pause:before{content:"\e073"} .glyphicon-stop:before{content:"\e074"} .glyphicon-forward:before{content:"\e075"} .glyphicon-fast-forward:before{content:"\e076"} .glyphicon-step-forward:before{content:"\e077"} .glyphicon-eject:before{content:"\e078"} .glyphicon-chevron-left:before{content:"\e079"} .glyphicon-chevron-right:before{content:"\e080"} .glyphicon-plus-sign:before{content:"\e081"} .glyphicon-minus-sign:before{content:"\e082"} .glyphicon-remove-sign:before{content:"\e083"} .glyphicon-ok-sign:before{content:"\e084"} .glyphicon-question-sign:before{content:"\e085"} .glyphicon-info-sign:before{content:"\e086"} .glyphicon-screenshot:before{content:"\e087"} .glyphicon-remove-circle:before{content:"\e088"} .glyphicon-ok-circle:before{content:"\e089"} .glyphicon-ban-circle:before{content:"\e090"} .glyphicon-arrow-left:before{content:"\e091"} .glyphicon-arrow-right:before{content:"\e092"} .glyphicon-arrow-up:before{content:"\e093"} .glyphicon-arrow-down:before{content:"\e094"} .glyphicon-share-alt:before{content:"\e095"} .glyphicon-resize-full:before{content:"\e096"} .glyphicon-resize-small:before{content:"\e097"} .glyphicon-exclamation-sign:before{content:"\e101"} .glyphicon-gift:before{content:"\e102"} .glyphicon-leaf:before{content:"\e103"} .glyphicon-fire:before{content:"\e104"} .glyphicon-eye-open:before{content:"\e105"} .glyphicon-eye-close:before{content:"\e106"} .glyphicon-warning-sign:before{content:"\e107"} .glyphicon-plane:before{content:"\e108"} .glyphicon-calendar:before{content:"\e109"} .glyphicon-random:before{content:"\e110"} .glyphicon-comment:before{content:"\e111"} .glyphicon-magnet:before{content:"\e112"} .glyphicon-chevron-up:before{content:"\e113"} .glyphicon-chevron-down:before{content:"\e114"} .glyphicon-retweet:before{content:"\e115"} .glyphicon-shopping-cart:before{content:"\e116"} .glyphicon-folder-close:before{content:"\e117"} .glyphicon-folder-open:before{content:"\e118"} .glyphicon-resize-vertical:before{content:"\e119"} .glyphicon-resize-horizontal:before{content:"\e120"} .glyphicon-hdd:before{content:"\e121"} .glyphicon-bullhorn:before{content:"\e122"} .glyphicon-bell:before{content:"\e123"} .glyphicon-certificate:before{content:"\e124"} .glyphicon-thumbs-up:before{content:"\e125"} .glyphicon-thumbs-down:before{content:"\e126"} .glyphicon-hand-right:before{content:"\e127"} .glyphicon-hand-left:before{content:"\e128"} .glyphicon-hand-up:before{content:"\e129"} .glyphicon-hand-down:before{content:"\e130"} .glyphicon-circle-arrow-right:before{content:"\e131"} .glyphicon-circle-arrow-left:before{content:"\e132"} .glyphicon-circle-arrow-up:before{content:"\e133"} .glyphicon-circle-arrow-down:before{content:"\e134"} .glyphicon-globe:before{content:"\e135"} .glyphicon-wrench:before{content:"\e136"} .glyphicon-tasks:before{content:"\e137"} .glyphicon-filter:before{content:"\e138"} .glyphicon-briefcase:before{content:"\e139"} .glyphicon-fullscreen:before{content:"\e140"} .glyphicon-dashboard:before{content:"\e141"} .glyphicon-paperclip:before{content:"\e142"} .glyphicon-heart-empty:before{content:"\e143"} .glyphicon-link:before{content:"\e144"} .glyphicon-phone:before{content:"\e145"} .glyphicon-pushpin:before{content:"\e146"} .glyphicon-usd:before{content:"\e148"} .glyphicon-gbp:before{content:"\e149"} .glyphicon-sort:before{content:"\e150"} .glyphicon-sort-by-alphabet:before{content:"\e151"} .glyphicon-sort-by-alphabet-alt:before{content:"\e152"} .glyphicon-sort-by-order:before{content:"\e153"} .glyphicon-sort-by-order-alt:before{content:"\e154"} .glyphicon-sort-by-attributes:before{content:"\e155"} .glyphicon-sort-by-attributes-alt:before{content:"\e156"} .glyphicon-unchecked:before{content:"\e157"} .glyphicon-expand:before{content:"\e158"} .glyphicon-collapse-down:before{content:"\e159"} .glyphicon-collapse-up:before{content:"\e160"} .glyphicon-log-in:before{content:"\e161"} .glyphicon-flash:before{content:"\e162"} .glyphicon-log-out:before{content:"\e163"} .glyphicon-new-window:before{content:"\e164"} .glyphicon-record:before{content:"\e165"} .glyphicon-save:before{content:"\e166"} .glyphicon-open:before{content:"\e167"} .glyphicon-saved:before{content:"\e168"} .glyphicon-import:before{content:"\e169"} .glyphicon-export:before{content:"\e170"} .glyphicon-send:before{content:"\e171"} .glyphicon-floppy-disk:before{content:"\e172"} .glyphicon-floppy-saved:before{content:"\e173"} .glyphicon-floppy-remove:before{content:"\e174"} .glyphicon-floppy-save:before{content:"\e175"} .glyphicon-floppy-open:before{content:"\e176"} .glyphicon-credit-card:before{content:"\e177"} .glyphicon-transfer:before{content:"\e178"} .glyphicon-cutlery:before{content:"\e179"} .glyphicon-header:before{content:"\e180"} .glyphicon-compressed:before{content:"\e181"} .glyphicon-earphone:before{content:"\e182"} .glyphicon-phone-alt:before{content:"\e183"} .glyphicon-tower:before{content:"\e184"} .glyphicon-stats:before{content:"\e185"} .glyphicon-sd-video:before{content:"\e186"} .glyphicon-hd-video:before{content:"\e187"} .glyphicon-subtitles:before{content:"\e188"} .glyphicon-sound-stereo:before{content:"\e189"} .glyphicon-sound-dolby:before{content:"\e190"} .glyphicon-sound-5-1:before{content:"\e191"} .glyphicon-sound-6-1:before{content:"\e192"} .glyphicon-sound-7-1:before{content:"\e193"} .glyphicon-copyright-mark:before{content:"\e194"} .glyphicon-registration-mark:before{content:"\e195"} .glyphicon-cloud-download:before{content:"\e197"} .glyphicon-cloud-upload:before{content:"\e198"} .glyphicon-tree-conifer:before{content:"\e199"} .glyphicon-tree-deciduous:before{content:"\e200"} .glyphicon-cd:before{content:"\e201"} .glyphicon-save-file:before{content:"\e202"} .glyphicon-open-file:before{content:"\e203"} .glyphicon-level-up:before{content:"\e204"} .glyphicon-copy:before{content:"\e205"} .glyphicon-paste:before{content:"\e206"} .glyphicon-alert:before{content:"\e209"} .glyphicon-equalizer:before{content:"\e210"} .glyphicon-king:before{content:"\e211"} .glyphicon-queen:before{content:"\e212"} .glyphicon-pawn:before{content:"\e213"} .glyphicon-bishop:before{content:"\e214"} .glyphicon-knight:before{content:"\e215"} .glyphicon-baby-formula:before{content:"\e216"} .glyphicon-tent:before{content:"\26fa"} .glyphicon-blackboard:before{content:"\e218"} .glyphicon-bed:before{content:"\e219"} .glyphicon-apple:before{content:"\f8ff"} .glyphicon-erase:before{content:"\e221"} .glyphicon-hourglass:before{content:"\231b"} .glyphicon-lamp:before{content:"\e223"} .glyphicon-duplicate:before{content:"\e224"} .glyphicon-piggy-bank:before{content:"\e225"} .glyphicon-scissors:before{content:"\e226"} .glyphicon-bitcoin:before{content:"\e227"} .glyphicon-btc:before{content:"\e227"} .glyphicon-xbt:before{content:"\e227"} .glyphicon-yen:before{content:"\00a5"} .glyphicon-jpy:before{content:"\00a5"} .glyphicon-ruble:before{content:"\20bd"} .glyphicon-rub:before{content:"\20bd"} .glyphicon-scale:before{content:"\e230"} .glyphicon-ice-lolly:before{content:"\e231"} .glyphicon-ice-lolly-tasted:before{content:"\e232"} .glyphicon-education:before{content:"\e233"} .glyphicon-option-horizontal:before{content:"\e234"} .glyphicon-option-vertical:before{content:"\e235"} .glyphicon-menu-hamburger:before{content:"\e236"} .glyphicon-modal-window:before{content:"\e237"} .glyphicon-oil:before{content:"\e238"} .glyphicon-grain:before{content:"\e239"} .glyphicon-sunglasses:before{content:"\e240"} .glyphicon-text-size:before{content:"\e241"} .glyphicon-text-color:before{content:"\e242"} .glyphicon-text-background:before{content:"\e243"} .glyphicon-object-align-top:before{content:"\e244"} .glyphicon-object-align-bottom:before{content:"\e245"} .glyphicon-object-align-horizontal:before{content:"\e246"} .glyphicon-object-align-left:before{content:"\e247"} .glyphicon-object-align-vertical:before{content:"\e248"} .glyphicon-object-align-right:before{content:"\e249"} .glyphicon-triangle-right:before{content:"\e250"} .glyphicon-triangle-left:before{content:"\e251"} .glyphicon-triangle-bottom:before{content:"\e252"} .glyphicon-triangle-top:before{content:"\e253"} .glyphicon-console:before{content:"\e254"} .glyphicon-superscript:before{content:"\e255"} .glyphicon-subscript:before{content:"\e256"} .glyphicon-menu-left:before{content:"\e257"} .glyphicon-menu-right:before{content:"\e258"} .glyphicon-menu-down:before{content:"\e259"} .glyphicon-menu-up:before{content:"\e260"} *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} :after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)} body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff} button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit} a{color:#337ab7;text-decoration:none} a:focus,a:hover{color:#23527c;text-decoration:underline} a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px} figure{margin:0} img{vertical-align:middle} .carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto} .img-rounded{border-radius:6px} .img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out} .img-circle{border-radius:50%} hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee} .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0} .sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} [role=button]{cursor:pointer} .h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit} .h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777} .h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px} .h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%} .h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px} .h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%} .h1,h1{font-size:36px} .h2,h2{font-size:30px} .h3,h3{font-size:24px} .h4,h4{font-size:18px} .h5,h5{font-size:14px} .h6,h6{font-size:12px} p{margin:0 0 10px} .lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}} .small,small{font-size:85%} .mark,mark{padding:.2em;background-color:#fcf8e3} .text-left{text-align:left} .text-right{text-align:right} .text-center{text-align:center} .text-justify{text-align:justify} .text-nowrap{white-space:nowrap} .text-lowercase{text-transform:lowercase} .text-uppercase{text-transform:uppercase} .text-capitalize{text-transform:capitalize} .text-muted{color:#777} .text-primary{color:#337ab7} a.text-primary:focus,a.text-primary:hover{color:#286090} .text-success{color:#3c763d} a.text-success:focus,a.text-success:hover{color:#2b542c} .text-info{color:#31708f} a.text-info:focus,a.text-info:hover{color:#245269} .text-warning{color:#8a6d3b} a.text-warning:focus,a.text-warning:hover{color:#66512c} .text-danger{color:#a94442} a.text-danger:focus,a.text-danger:hover{color:#843534} .bg-primary{color:#fff;background-color:#337ab7} a.bg-primary:focus,a.bg-primary:hover{background-color:#286090} .bg-success{background-color:#dff0d8} a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3} .bg-info{background-color:#d9edf7} a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee} .bg-warning{background-color:#fcf8e3} a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5} .bg-danger{background-color:#f2dede} a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9} .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee} ol,ul{margin-top:0;margin-bottom:10px} ol ol,ol ul,ul ol,ul ul{margin-bottom:0} .list-unstyled{padding-left:0;list-style:none} .list-inline{padding-left:0;margin-left:-5px;list-style:none} .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px} dl{margin-top:0;margin-bottom:20px} dd,dt{line-height:1.42857143} dt{font-weight:700} dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}} abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777} .initialism{font-size:90%;text-transform:uppercase} blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee} blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0} blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777} blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'} .blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0} .blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''} .blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'} address{margin-bottom:20px;font-style:normal;line-height:1.42857143} code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace} code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px} kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)} kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none} pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px} pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0} .pre-scrollable{max-height:340px;overflow-y:scroll} .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}} .container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto} .row{margin-right:-15px;margin-left:-15px} .col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px} .col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left} .col-xs-12{width:100%} .col-xs-11{width:91.66666667%} .col-xs-10{width:83.33333333%} .col-xs-9{width:75%} .col-xs-8{width:66.66666667%} .col-xs-7{width:58.33333333%} .col-xs-6{width:50%} .col-xs-5{width:41.66666667%} .col-xs-4{width:33.33333333%} .col-xs-3{width:25%} .col-xs-2{width:16.66666667%} .col-xs-1{width:8.33333333%} .col-xs-pull-12{right:100%} .col-xs-pull-11{right:91.66666667%} .col-xs-pull-10{right:83.33333333%} .col-xs-pull-9{right:75%} .col-xs-pull-8{right:66.66666667%} .col-xs-pull-7{right:58.33333333%} .col-xs-pull-6{right:50%} .col-xs-pull-5{right:41.66666667%} .col-xs-pull-4{right:33.33333333%} .col-xs-pull-3{right:25%} .col-xs-pull-2{right:16.66666667%} .col-xs-pull-1{right:8.33333333%} .col-xs-pull-0{right:auto} .col-xs-push-12{left:100%} .col-xs-push-11{left:91.66666667%} .col-xs-push-10{left:83.33333333%} .col-xs-push-9{left:75%} .col-xs-push-8{left:66.66666667%} .col-xs-push-7{left:58.33333333%} .col-xs-push-6{left:50%} .col-xs-push-5{left:41.66666667%} .col-xs-push-4{left:33.33333333%} .col-xs-push-3{left:25%} .col-xs-push-2{left:16.66666667%} .col-xs-push-1{left:8.33333333%} .col-xs-push-0{left:auto} .col-xs-offset-12{margin-left:100%} .col-xs-offset-11{margin-left:91.66666667%} .col-xs-offset-10{margin-left:83.33333333%} .col-xs-offset-9{margin-left:75%} .col-xs-offset-8{margin-left:66.66666667%} .col-xs-offset-7{margin-left:58.33333333%} .col-xs-offset-6{margin-left:50%} .col-xs-offset-5{margin-left:41.66666667%} .col-xs-offset-4{margin-left:33.33333333%} .col-xs-offset-3{margin-left:25%} .col-xs-offset-2{margin-left:16.66666667%} .col-xs-offset-1{margin-left:8.33333333%} .col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}} table{background-color:transparent} caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left} th{text-align:left} .table{width:100%;max-width:100%;margin-bottom:20px} .table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd} .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd} .table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0} .table>tbody+tbody{border-top:2px solid #ddd} .table .table{background-color:#fff} .table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px} .table-bordered{border:1px solid #ddd} .table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd} .table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px} .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9} .table-hover>tbody>tr:hover{background-color:#f5f5f5} table col[class*=col-]{position:static;display:table-column;float:none} table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none} .table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5} .table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8} .table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8} .table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6} .table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7} .table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3} .table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3} .table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc} .table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede} .table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc} .table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}} fieldset{min-width:0;padding:0;margin:0;border:0} legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5} label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700} input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal} input[type=file]{display:block} input[type=range]{display:block;width:100%} select[multiple],select[size]{height:auto} input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline: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-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}} .form-group{margin-bottom:15px} .checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px} .checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer} .checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px} .checkbox+.checkbox,.radio+.radio{margin-top:-5px} .checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer} .checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px} fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed} .checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed} .checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed} .form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0} .form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0} .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px} select.input-sm{height:30px;line-height:30px} select[multiple].input-sm,textarea.input-sm{height:auto} .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px} .form-group-sm select.form-control{height:30px;line-height:30px} .form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto} .form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5} .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px} select.input-lg{height:46px;line-height:46px} select[multiple].input-lg,textarea.input-lg{height:auto} .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px} .form-group-lg select.form-control{height:46px;line-height:46px} .form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto} .form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333} .has-feedback{position:relative} .has-feedback .form-control{padding-right:42.5px} .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none} .form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px} .form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px} .has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d} .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)} .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168} .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d} .has-success .form-control-feedback{color:#3c763d} .has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b} .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)} .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b} .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b} .has-warning .form-control-feedback{color:#8a6d3b} .has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442} .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)} .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483} .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442} .has-error .form-control-feedback{color:#a94442} .has-feedback label~.form-control-feedback{top:25px} .has-feedback label.sr-only~.form-control-feedback{top:0} .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}} .form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0} .form-horizontal .checkbox,.form-horizontal .radio{min-height:27px} .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}} .form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}} .btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px} .btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px} .btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none} .btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)} .btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65} a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none} .btn-default{color:#333;background-color:#fff;border-color:#ccc} .btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c} .btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad} .btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad} .btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c} .btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none} .btn-default.disabled,.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:#fff;border-color:#ccc} .btn-default .badge{color:#fff;background-color:#333} .btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4} .btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40} .btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74} .btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74} .btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40} .btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none} .btn-primary.disabled,.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:#337ab7;border-color:#2e6da4} .btn-primary .badge{color:#337ab7;background-color:#fff} .btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c} .btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625} .btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439} .btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439} .btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625} .btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none} .btn-success.disabled,.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:#5cb85c;border-color:#4cae4c} .btn-success .badge{color:#5cb85c;background-color:#fff} .btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da} .btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85} .btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc} .btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc} .btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85} .btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none} .btn-info.disabled,.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:#5bc0de;border-color:#46b8da} .btn-info .badge{color:#5bc0de;background-color:#fff} .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236} .btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d} .btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512} .btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512} .btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d} .btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none} .btn-warning.disabled,.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:#f0ad4e;border-color:#eea236} .btn-warning .badge{color:#f0ad4e;background-color:#fff} .btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a} .btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19} .btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925} .btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925} .btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19} .btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none} .btn-danger.disabled,.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:#d9534f;border-color:#d43f3a} .btn-danger .badge{color:#d9534f;background-color:#fff} .btn-link{font-weight:400;color:#337ab7;border-radius:0} .btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none} .btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent} .btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent} .btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none} .btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px} .btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px} .btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px} .btn-block{display:block;width:100%} .btn-block+.btn-block{margin-top:5px} input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%} .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear} .fade.in{opacity:1} .collapse{display:none} .collapse.in{display:block} tr.collapse.in{display:table-row} tbody.collapse.in{display:table-row-group} .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility} .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent} .dropdown,.dropup{position:relative} .dropdown-toggle:focus{outline:0} .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)} .dropdown-menu.pull-right{right:0;left:auto} .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5} .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap} .dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5} .dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0} .dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777} .dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} .open>.dropdown-menu{display:block} .open>a{outline:0} .dropdown-menu-right{right:0;left:auto} .dropdown-menu-left{right:auto;left:0} .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap} .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990} .pull-right>.dropdown-menu{right:0;left:auto} .dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9} .dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}} .btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle} .btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left} .btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2} .btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px} .btn-toolbar{margin-left:-5px} .btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left} .btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px} .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0} .btn-group>.btn:first-child{margin-left:0} .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0} .btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0} .btn-group>.btn-group{float:left} .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0} .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0} .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0} .btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0} .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px} .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px} .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)} .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none} .btn .caret{margin-left:0} .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0} .dropup .btn-lg .caret{border-width:0 5px 5px} .btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%} .btn-group-vertical>.btn-group>.btn{float:none} .btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0} .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0} .btn-group-vertical>.btn:first-child:not(:last-child){border-top-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=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none} .input-group{position:relative;display:table;border-collapse:separate} .input-group[class*=col-]{float:none;padding-right:0;padding-left:0} .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0} .input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px} select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px} select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto} .input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px} select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px} select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto} .input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell} .input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0} .input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle} .input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px} .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px} .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px} .input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0} .input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0} .input-group-addon:first-child{border-right:0} .input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0} .input-group-addon:last-child{border-left:0} .input-group-btn{position:relative;font-size:0;white-space:nowrap} .input-group-btn>.btn{position:relative} .input-group-btn>.btn+.btn{margin-left:-1px} .input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2} .input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px} .input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px} .nav{padding-left:0;margin-bottom:0;list-style:none} .nav>li{position:relative;display:block} .nav>li>a{position:relative;display:block;padding:10px 15px} .nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee} .nav>li.disabled>a{color:#777} .nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent} .nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7} .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5} .nav>li>a>img{max-width:none} .nav-tabs{border-bottom:1px solid #ddd} .nav-tabs>li{float:left;margin-bottom:-1px} .nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0} .nav-tabs>li>a:hover{border-color:#eee #eee #ddd} .nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent} .nav-tabs.nav-justified{width:100%;border-bottom:0} .nav-tabs.nav-justified>li{float:none} .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center} .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}} .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px} .nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}} .nav-pills>li{float:left} .nav-pills>li>a{border-radius:4px} .nav-pills>li+li{margin-left:2px} .nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7} .nav-stacked>li{float:none} .nav-stacked>li+li{margin-top:2px;margin-left:0} .nav-justified{width:100%} .nav-justified>li{float:none} .nav-justified>li>a{margin-bottom:5px;text-align:center} .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}} .nav-tabs-justified{border-bottom:0} .nav-tabs-justified>li>a{margin-right:0;border-radius:4px} .nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}} .tab-content>.tab-pane{display:none} .tab-content>.active{display:block} .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0} .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}} .navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)} .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}} .navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}} .container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}} .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}} .navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}} .navbar-fixed-top{top:0;border-width:0 0 1px} .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0} .navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px} .navbar-brand:focus,.navbar-brand:hover{text-decoration:none} .navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}} .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px} .navbar-toggle:focus{outline:0} .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px} .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}} .navbar-nav{margin:7.5px -15px} .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}} .navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}} .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0} .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0} .navbar-btn{margin-top:8px;margin-bottom:8px} .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px} .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px} .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}} .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7} .navbar-default .navbar-brand{color:#777} .navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent} .navbar-default .navbar-text{color:#777} .navbar-default .navbar-nav>li>a{color:#777} .navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent} .navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7} .navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent} .navbar-default .navbar-toggle{border-color:#ddd} .navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd} .navbar-default .navbar-toggle .icon-bar{background-color:#888} .navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7} .navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}} .navbar-default .navbar-link{color:#777} .navbar-default .navbar-link:hover{color:#333} .navbar-default .btn-link{color:#777} .navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333} .navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc} .navbar-inverse{background-color:#222;border-color:#080808} .navbar-inverse .navbar-brand{color:#9d9d9d} .navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent} .navbar-inverse .navbar-text{color:#9d9d9d} .navbar-inverse .navbar-nav>li>a{color:#9d9d9d} .navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent} .navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808} .navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent} .navbar-inverse .navbar-toggle{border-color:#333} .navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333} .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff} .navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010} .navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}} .navbar-inverse .navbar-link{color:#9d9d9d} .navbar-inverse .navbar-link:hover{color:#fff} .navbar-inverse .btn-link{color:#9d9d9d} .navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff} .navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444} .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px} .breadcrumb>li{display:inline-block} .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"} .breadcrumb>.active{color:#777} .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px} .pagination>li{display:inline} .pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd} .pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px} .pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px} .pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:3;color:#23527c;background-color:#eee;border-color:#ddd} .pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7} .pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd} .pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333} .pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px} .pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px} .pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5} .pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px} .pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px} .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none} .pager li{display:inline} .pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px} .pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee} .pager .next>a,.pager .next>span{float:right} .pager .previous>a,.pager .previous>span{float:left} .pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff} .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em} a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer} .label:empty{display:none} .btn .label{position:relative;top:-1px} .label-default{background-color:#777} .label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e} .label-primary{background-color:#337ab7} .label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090} .label-success{background-color:#5cb85c} .label-success[href]:focus,.label-success[href]:hover{background-color:#449d44} .label-info{background-color:#5bc0de} .label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5} .label-warning{background-color:#f0ad4e} .label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f} .label-danger{background-color:#d9534f} .label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c} .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px} .badge:empty{display:none} .btn .badge{position:relative;top:-1px} .btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px} a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer} .list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff} .list-group-item>.badge{float:right} .list-group-item>.badge+.badge{margin-right:5px} .nav-pills>li>a>.badge{margin-left:3px} .jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee} .jumbotron .h1,.jumbotron h1{color:inherit} .jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200} .jumbotron>hr{border-top-color:#d5d5d5} .container .jumbotron,.container-fluid .jumbotron{border-radius:6px} .jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}} .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out} .thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto} a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7} .thumbnail .caption{padding:9px;color:#333} .alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px} .alert h4{margin-top:0;color:inherit} .alert .alert-link{font-weight:700} .alert>p,.alert>ul{margin-bottom:0} .alert>p+p{margin-top:5px} .alert-dismissable,.alert-dismissible{padding-right:35px} .alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit} .alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6} .alert-success hr{border-top-color:#c9e2b3} .alert-success .alert-link{color:#2b542c} .alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1} .alert-info hr{border-top-color:#a6e1ec} .alert-info .alert-link{color:#245269} .alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc} .alert-warning hr{border-top-color:#f7e1b5} .alert-warning .alert-link{color:#66512c} .alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1} .alert-danger hr{border-top-color:#e4b9c0} .alert-danger .alert-link{color:#843534} @-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}} @-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}} @keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}} .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)} .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease} .progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px} .progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite} .progress-bar-success{background-color:#5cb85c} .progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} .progress-bar-info{background-color:#5bc0de} .progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} .progress-bar-warning{background-color:#f0ad4e} .progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} .progress-bar-danger{background-color:#d9534f} .progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)} .media{margin-top:15px} .media:first-child{margin-top:0} .media,.media-body{overflow:hidden;zoom:1} .media-body{width:10000px} .media-object{display:block} .media-object.img-thumbnail{max-width:none} .media-right,.media>.pull-right{padding-left:10px} .media-left,.media>.pull-left{padding-right:10px} .media-body,.media-left,.media-right{display:table-cell;vertical-align:top} .media-middle{vertical-align:middle} .media-bottom{vertical-align:bottom} .media-heading{margin-top:0;margin-bottom:5px} .media-list{padding-left:0;list-style:none} .list-group{padding-left:0;margin-bottom:20px} .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd} .list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px} .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px} a.list-group-item,button.list-group-item{color:#555} a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333} a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5} button.list-group-item{width:100%;text-align:left} .list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee} .list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit} .list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777} .list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7} .list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit} .list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef} .list-group-item-success{color:#3c763d;background-color:#dff0d8} a.list-group-item-success,button.list-group-item-success{color:#3c763d} a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit} a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6} a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d} .list-group-item-info{color:#31708f;background-color:#d9edf7} a.list-group-item-info,button.list-group-item-info{color:#31708f} a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit} a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3} a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f} .list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3} a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b} a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit} a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc} a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b} .list-group-item-danger{color:#a94442;background-color:#f2dede} a.list-group-item-danger,button.list-group-item-danger{color:#a94442} a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit} a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc} a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442} .list-group-item-heading{margin-top:0;margin-bottom:5px} .list-group-item-text{margin-bottom:0;line-height:1.3} .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)} .panel-body{padding:15px} .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px} .panel-heading>.dropdown .dropdown-toggle{color:inherit} .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit} .panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit} .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px} .panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0} .panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0} .panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px} .panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px} .panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0} .panel-heading+.list-group .list-group-item:first-child{border-top-width:0} .list-group+.panel-footer{border-top-width:0} .panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0} .panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px} .panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px} .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px} .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px} .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px} .panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px} .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px} .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px} .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px} .panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd} .panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0} .panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0} .panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0} .panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0} .panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0} .panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0} .panel>.table-responsive{margin-bottom:0;border:0} .panel-group{margin-bottom:20px} .panel-group .panel{margin-bottom:0;border-radius:4px} .panel-group .panel+.panel{margin-top:5px} .panel-group .panel-heading{border-bottom:0} .panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd} .panel-group .panel-footer{border-top:0} .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd} .panel-default{border-color:#ddd} .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd} .panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd} .panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333} .panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd} .panel-primary{border-color:#337ab7} .panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7} .panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7} .panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff} .panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7} .panel-success{border-color:#d6e9c6} .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6} .panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6} .panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d} .panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6} .panel-info{border-color:#bce8f1} .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1} .panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1} .panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f} .panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1} .panel-warning{border-color:#faebcc} .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc} .panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc} .panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b} .panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc} .panel-danger{border-color:#ebccd1} .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1} .panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1} .panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442} .panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1} .embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden} .embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0} .embed-responsive-16by9{padding-bottom:56.25%} .embed-responsive-4by3{padding-bottom:75%} .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)} .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)} .well-lg{padding:24px;border-radius:6px} .well-sm{padding:9px;border-radius:3px} .close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2} .close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5} button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0} .modal-open{overflow:hidden} .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0} .modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)} .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)} .modal-open .modal{overflow-x:hidden;overflow-y:auto} .modal-dialog{position:relative;width:auto;margin:10px} .modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)} .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000} .modal-backdrop.fade{filter:alpha(opacity=0);opacity:0} .modal-backdrop.in{filter:alpha(opacity=50);opacity:.5} .modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5} .modal-header .close{margin-top:-2px} .modal-title{margin:0;line-height:1.42857143} .modal-body{position:relative;padding:15px} .modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5} .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px} .modal-footer .btn-group .btn+.btn{margin-left:-1px} .modal-footer .btn-block+.btn-block{margin-left:0} .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}} .tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto} .tooltip.in{filter:alpha(opacity=90);opacity:.9} .tooltip.top{padding:5px 0;margin-top:-3px} .tooltip.right{padding:0 5px;margin-left:3px} .tooltip.bottom{padding:5px 0;margin-top:3px} .tooltip.left{padding:0 5px;margin-left:-3px} .tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px} .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid} .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000} .tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000} .tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000} .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000} .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000} .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000} .tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000} .tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000} .popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto} .popover.top{margin-top:-10px} .popover.right{margin-left:10px} .popover.bottom{margin-top:10px} .popover.left{margin-left:-10px} .popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0} .popover-content{padding:9px 14px} .popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid} .popover>.arrow{border-width:11px} .popover>.arrow:after{content:"";border-width:10px} .popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0} .popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0} .popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0} .popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0} .popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)} .popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff} .popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)} .popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff} .carousel{position:relative} .carousel-inner{position:relative;width:100%;overflow:hidden} .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left} .carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}} .carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block} .carousel-inner>.active{left:0} .carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%} .carousel-inner>.next{left:100%} .carousel-inner>.prev{left:-100%} .carousel-inner>.next.left,.carousel-inner>.prev.right{left:0} .carousel-inner>.active.left{left:-100%} .carousel-inner>.active.right{left:100%} .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5} .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x} .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x} .carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9} .carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px} .carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px} .carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px} .carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1} .carousel-control .icon-prev:before{content:'\2039'} .carousel-control .icon-next:before{content:'\203a'} .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none} .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px} .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff} .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)} .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-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}} .btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "} .btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both} .center-block{display:block;margin-right:auto;margin-left:auto} .pull-right{float:right!important} .pull-left{float:left!important} .hide{display:none!important} .show{display:block!important} .invisible{visibility:hidden} .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0} .hidden{display:none!important} .affix{position:fixed}@-ms-viewport{width:device-width} .visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important} .visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}} .visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}} .visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}} .visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}} .visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.eot b/public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..b93a4953fff68df523aa7656497ee339d6026d64 GIT binary patch literal 20127 zcma%hV{j!vx9y2-`@~L8?1^pLwlPU2wr$&<*tR|KBoo`2;LUg6eW-eW-tKDb)vH%` z^`A!Vd<6hNSRMcX|Cb;E|1qflDggj6Kmr)xA10^t-vIc3*Z+F{r%|K(GyE^?|I{=9 zNq`(c8=wS`0!RZy0g3{M(8^tv41d}oRU?8#IBFtJy*9zAN5dcxqGlMZGL>GG%R#)4J zDJ2;)4*E1pyHia%>lMv3X7Q`UoFyoB@|xvh^)kOE3)IL&0(G&i;g08s>c%~pHkN&6 z($7!kyv|A2DsV2mq-5Ku)D#$Kn$CzqD-wm5Q*OtEOEZe^&T$xIb0NUL}$)W)Ck`6oter6KcQG9Zcy>lXip)%e&!lQgtQ*N`#abOlytt!&i3fo)cKV zP0BWmLxS1gQv(r_r|?9>rR0ZeEJPx;Vi|h1!Eo*dohr&^lJgqJZns>&vexP@fs zkPv93Nyw$-kM5Mw^{@wPU47Y1dSkiHyl3dtHLwV&6Tm1iv{ve;sYA}Z&kmH802s9Z zyJEn+cfl7yFu#1^#DbtP7k&aR06|n{LnYFYEphKd@dJEq@)s#S)UA&8VJY@S2+{~> z(4?M();zvayyd^j`@4>xCqH|Au>Sfzb$mEOcD7e4z8pPVRTiMUWiw;|gXHw7LS#U< zsT(}Z5SJ)CRMXloh$qPnK77w_)ctHmgh}QAe<2S{DU^`!uwptCoq!Owz$u6bF)vnb zL`bM$%>baN7l#)vtS3y6h*2?xCk z>w+s)@`O4(4_I{L-!+b%)NZcQ&ND=2lyP+xI#9OzsiY8$c)ys-MI?TG6 zEP6f=vuLo!G>J7F4v|s#lJ+7A`^nEQScH3e?B_jC&{sj>m zYD?!1z4nDG_Afi$!J(<{>z{~Q)$SaXWjj~%ZvF152Hd^VoG14rFykR=_TO)mCn&K$ z-TfZ!vMBvnToyBoKRkD{3=&=qD|L!vb#jf1f}2338z)e)g>7#NPe!FoaY*jY{f)Bf>ohk-K z4{>fVS}ZCicCqgLuYR_fYx2;*-4k>kffuywghn?15s1dIOOYfl+XLf5w?wtU2Og*f z%X5x`H55F6g1>m~%F`655-W1wFJtY>>qNSdVT`M`1Mlh!5Q6#3j={n5#za;!X&^OJ zgq;d4UJV-F>gg?c3Y?d=kvn3eV)Jb^ zO5vg0G0yN0%}xy#(6oTDSVw8l=_*2k;zTP?+N=*18H5wp`s90K-C67q{W3d8vQGmr zhpW^>1HEQV2TG#8_P_0q91h8QgHT~8=-Ij5snJ3cj?Jn5_66uV=*pq(j}yHnf$Ft;5VVC?bz%9X31asJeQF2jEa47H#j` zk&uxf3t?g!tltVP|B#G_UfDD}`<#B#iY^i>oDd-LGF}A@Fno~dR72c&hs6bR z2F}9(i8+PR%R|~FV$;Ke^Q_E_Bc;$)xN4Ti>Lgg4vaip!%M z06oxAF_*)LH57w|gCW3SwoEHwjO{}}U=pKhjKSZ{u!K?1zm1q? zXyA6y@)}_sONiJopF}_}(~}d4FDyp|(@w}Vb;Fl5bZL%{1`}gdw#i{KMjp2@Fb9pg ziO|u7qP{$kxH$qh8%L+)AvwZNgUT6^zsZq-MRyZid{D?t`f|KzSAD~C?WT3d0rO`0 z=qQ6{)&UXXuHY{9g|P7l_nd-%eh}4%VVaK#Nik*tOu9lBM$<%FS@`NwGEbP0&;Xbo zObCq=y%a`jSJmx_uTLa{@2@}^&F4c%z6oe-TN&idjv+8E|$FHOvBqg5hT zMB=7SHq`_-E?5g=()*!V>rIa&LcX(RU}aLm*38U_V$C_g4)7GrW5$GnvTwJZdBmy6 z*X)wi3=R8L=esOhY0a&eH`^fSpUHV8h$J1|o^3fKO|9QzaiKu>yZ9wmRkW?HTkc<*v7i*ylJ#u#j zD1-n&{B`04oG>0Jn{5PKP*4Qsz{~`VVA3578gA+JUkiPc$Iq!^K|}*p_z3(-c&5z@ zKxmdNpp2&wg&%xL3xZNzG-5Xt7jnI@{?c z25=M>-VF|;an2Os$Nn%HgQz7m(ujC}Ii0Oesa(y#8>D+P*_m^X##E|h$M6tJr%#=P zWP*)Px>7z`E~U^2LNCNiy%Z7!!6RI%6fF@#ZY3z`CK91}^J$F!EB0YF1je9hJKU7!S5MnXV{+#K;y zF~s*H%p@vj&-ru7#(F2L+_;IH46X(z{~HTfcThqD%b{>~u@lSc<+f5#xgt9L7$gSK ziDJ6D*R%4&YeUB@yu@4+&70MBNTnjRyqMRd+@&lU#rV%0t3OmouhC`mkN}pL>tXin zY*p)mt=}$EGT2E<4Q>E2`6)gZ`QJhGDNpI}bZL9}m+R>q?l`OzFjW?)Y)P`fUH(_4 zCb?sm1=DD0+Q5v}BW#0n5;Nm(@RTEa3(Y17H2H67La+>ptQHJ@WMy2xRQT$|7l`8c zYHCxYw2o-rI?(fR2-%}pbs$I%w_&LPYE{4bo}vRoAW>3!SY_zH3`ofx3F1PsQ?&iq z*BRG>?<6%z=x#`NhlEq{K~&rU7Kc7Y-90aRnoj~rVoKae)L$3^z*Utppk?I`)CX&& zZ^@Go9fm&fN`b`XY zt0xE5aw4t@qTg_k=!-5LXU+_~DlW?53!afv6W(k@FPPX-`nA!FBMp7b!ODbL1zh58 z*69I}P_-?qSLKj}JW7gP!la}K@M}L>v?rDD!DY-tu+onu9kLoJz20M4urX_xf2dfZ zORd9Zp&28_ff=wdMpXi%IiTTNegC}~RLkdYjA39kWqlA?jO~o1`*B&85Hd%VPkYZT z48MPe62;TOq#c%H(`wX5(Bu>nlh4Fbd*Npasdhh?oRy8a;NB2(eb}6DgwXtx=n}fE zx67rYw=(s0r?EsPjaya}^Qc-_UT5|*@|$Q}*|>V3O~USkIe6a0_>vd~6kHuP8=m}_ zo2IGKbv;yA+TBtlCpnw)8hDn&eq?26gN$Bh;SdxaS04Fsaih_Cfb98s39xbv)=mS0 z6M<@pM2#pe32w*lYSWG>DYqB95XhgAA)*9dOxHr{t)er0Xugoy)!Vz#2C3FaUMzYl zCxy{igFB901*R2*F4>grPF}+G`;Yh zGi@nRjWyG3mR(BVOeBPOF=_&}2IWT%)pqdNAcL{eP`L*^FDv#Rzql5U&Suq_X%JfR_lC!S|y|xd5mQ0{0!G#9hV46S~A` z0B!{yI-4FZEtol5)mNWXcX(`x&Pc*&gh4k{w%0S#EI>rqqlH2xv7mR=9XNCI$V#NG z4wb-@u{PfQP;tTbzK>(DF(~bKp3;L1-A*HS!VB)Ae>Acnvde15Anb`h;I&0)aZBS6 z55ZS7mL5Wp!LCt45^{2_70YiI_Py=X{I3>$Px5Ez0ahLQ+ z9EWUWSyzA|+g-Axp*Lx-M{!ReQO07EG7r4^)K(xbj@%ZU=0tBC5shl)1a!ifM5OkF z0w2xQ-<+r-h1fi7B6waX15|*GGqfva)S)dVcgea`lQ~SQ$KXPR+(3Tn2I2R<0 z9tK`L*pa^+*n%>tZPiqt{_`%v?Bb7CR-!GhMON_Fbs0$#|H}G?rW|{q5fQhvw!FxI zs-5ZK>hAbnCS#ZQVi5K0X3PjL1JRdQO+&)*!oRCqB{wen60P6!7bGiWn@vD|+E@Xq zb!!_WiU^I|@1M}Hz6fN-m04x=>Exm{b@>UCW|c8vC`aNbtA@KCHujh^2RWZC}iYhL^<*Z93chIBJYU&w>$CGZDRcHuIgF&oyesDZ#&mA;?wxx4Cm#c0V$xYG?9OL(Smh}#fFuX(K;otJmvRP{h ze^f-qv;)HKC7geB92_@3a9@MGijS(hNNVd%-rZ;%@F_f7?Fjinbe1( zn#jQ*jKZTqE+AUTEd3y6t>*=;AO##cmdwU4gc2&rT8l`rtKW2JF<`_M#p>cj+)yCG zgKF)y8jrfxTjGO&ccm8RU>qn|HxQ7Z#sUo$q)P5H%8iBF$({0Ya51-rA@!It#NHN8MxqK zrYyl_&=}WVfQ?+ykV4*@F6)=u_~3BebR2G2>>mKaEBPmSW3(qYGGXj??m3L zHec{@jWCsSD8`xUy0pqT?Sw0oD?AUK*WxZn#D>-$`eI+IT)6ki>ic}W)t$V32^ITD zR497@LO}S|re%A+#vdv-?fXsQGVnP?QB_d0cGE+U84Q=aM=XrOwGFN3`Lpl@P0fL$ zKN1PqOwojH*($uaQFh8_)H#>Acl&UBSZ>!2W1Dinei`R4dJGX$;~60X=|SG6#jci} z&t4*dVDR*;+6Y(G{KGj1B2!qjvDYOyPC}%hnPbJ@g(4yBJrViG1#$$X75y+Ul1{%x zBAuD}Q@w?MFNqF-m39FGpq7RGI?%Bvyyig&oGv)lR>d<`Bqh=p>urib5DE;u$c|$J zwim~nPb19t?LJZsm{<(Iyyt@~H!a4yywmHKW&=1r5+oj*Fx6c89heW@(2R`i!Uiy* zp)=`Vr8sR!)KChE-6SEIyi(dvG3<1KoVt>kGV=zZiG7LGonH1+~yOK-`g0)r#+O|Q>)a`I2FVW%wr3lhO(P{ksNQuR!G_d zeTx(M!%brW_vS9?IF>bzZ2A3mWX-MEaOk^V|4d38{1D|KOlZSjBKrj7Fgf^>JyL0k zLoI$adZJ0T+8i_Idsuj}C;6jgx9LY#Ukh;!8eJ^B1N}q=Gn4onF*a2vY7~`x$r@rJ z`*hi&Z2lazgu{&nz>gjd>#eq*IFlXed(%$s5!HRXKNm zDZld+DwDI`O6hyn2uJ)F^{^;ESf9sjJ)wMSKD~R=DqPBHyP!?cGAvL<1|7K-(=?VO zGcKcF1spUa+ki<`6K#@QxOTsd847N8WSWztG~?~ z!gUJn>z0O=_)VCE|56hkT~n5xXTp}Ucx$Ii%bQ{5;-a4~I2e|{l9ur#*ghd*hSqO= z)GD@ev^w&5%k}YYB~!A%3*XbPPU-N6&3Lp1LxyP@|C<{qcn&?l54+zyMk&I3YDT|E z{lXH-e?C{huu<@~li+73lMOk&k)3s7Asn$t6!PtXJV!RkA`qdo4|OC_a?vR!kE_}k zK5R9KB%V@R7gt@9=TGL{=#r2gl!@3G;k-6sXp&E4u20DgvbY$iE**Xqj3TyxK>3AU z!b9}NXuINqt>Htt6fXIy5mj7oZ{A&$XJ&thR5ySE{mkxq_YooME#VCHm2+3D!f`{) zvR^WSjy_h4v^|!RJV-RaIT2Ctv=)UMMn@fAgjQV$2G+4?&dGA8vK35c-8r)z9Qqa=%k(FU)?iec14<^olkOU3p zF-6`zHiDKPafKK^USUU+D01>C&Wh{{q?>5m zGQp|z*+#>IIo=|ae8CtrN@@t~uLFOeT{}vX(IY*;>wAU=u1Qo4c+a&R);$^VCr>;! zv4L{`lHgc9$BeM)pQ#XA_(Q#=_iSZL4>L~8Hx}NmOC$&*Q*bq|9Aq}rWgFnMDl~d*;7c44GipcpH9PWaBy-G$*MI^F0 z?Tdxir1D<2ui+Q#^c4?uKvq=p>)lq56=Eb|N^qz~w7rsZu)@E4$;~snz+wIxi+980O6M#RmtgLYh@|2}9BiHSpTs zacjGKvwkUwR3lwTSsCHlwb&*(onU;)$yvdhikonn|B44JMgs*&Lo!jn`6AE>XvBiO z*LKNX3FVz9yLcsnmL!cRVO_qv=yIM#X|u&}#f%_?Tj0>8)8P_0r0!AjWNw;S44tst zv+NXY1{zRLf9OYMr6H-z?4CF$Y%MdbpFIN@a-LEnmkcOF>h16cH_;A|e)pJTuCJ4O zY7!4FxT4>4aFT8a92}84>q0&?46h>&0Vv0p>u~k&qd5$C1A6Q$I4V(5X~6{15;PD@ ze6!s9xh#^QI`J+%8*=^(-!P!@9%~buBmN2VSAp@TOo6}C?az+ALP8~&a0FWZk*F5N z^8P8IREnN`N0i@>O0?{i-FoFShYbUB`D7O4HB`Im2{yzXmyrg$k>cY6A@>bf7i3n0 z5y&cf2#`zctT>dz+hNF&+d3g;2)U!#vsb-%LC+pqKRTiiSn#FH#e!bVwR1nAf*TG^ z!RKcCy$P>?Sfq6n<%M{T0I8?p@HlgwC!HoWO>~mT+X<{Ylm+$Vtj9};H3$EB}P2wR$3y!TO#$iY8eO-!}+F&jMu4%E6S>m zB(N4w9O@2=<`WNJay5PwP8javDp~o~xkSbd4t4t8)9jqu@bHmJHq=MV~Pt|(TghCA}fhMS?s-{klV>~=VrT$nsp7mf{?cze~KKOD4 z_1Y!F)*7^W+BBTt1R2h4f1X4Oy2%?=IMhZU8c{qk3xI1=!na*Sg<=A$?K=Y=GUR9@ zQ(ylIm4Lgm>pt#%p`zHxok%vx_=8Fap1|?OM02|N%X-g5_#S~sT@A!x&8k#wVI2lo z1Uyj{tDQRpb*>c}mjU^gYA9{7mNhFAlM=wZkXcA#MHXWMEs^3>p9X)Oa?dx7b%N*y zLz@K^%1JaArjgri;8ptNHwz1<0y8tcURSbHsm=26^@CYJ3hwMaEvC7 z3Wi-@AaXIQ)%F6#i@%M>?Mw7$6(kW@?et@wbk-APcvMCC{>iew#vkZej8%9h0JSc? zCb~K|!9cBU+))^q*co(E^9jRl7gR4Jihyqa(Z(P&ID#TPyysVNL7(^;?Gan!OU>au zN}miBc&XX-M$mSv%3xs)bh>Jq9#aD_l|zO?I+p4_5qI0Ms*OZyyxA`sXcyiy>-{YN zA70%HmibZYcHW&YOHk6S&PQ+$rJ3(utuUra3V0~@=_~QZy&nc~)AS>v&<6$gErZC3 zcbC=eVkV4Vu0#}E*r=&{X)Kgq|8MGCh(wsH4geLj@#8EGYa})K2;n z{1~=ghoz=9TSCxgzr5x3@sQZZ0FZ+t{?klSI_IZa16pSx6*;=O%n!uXVZ@1IL;JEV zfOS&yyfE9dtS*^jmgt6>jQDOIJM5Gx#Y2eAcC3l^lmoJ{o0T>IHpECTbfYgPI4#LZq0PKqnPCD}_ zyKxz;(`fE0z~nA1s?d{X2!#ZP8wUHzFSOoTWQrk%;wCnBV_3D%3@EC|u$Ao)tO|AO z$4&aa!wbf}rbNcP{6=ajgg(`p5kTeu$ji20`zw)X1SH*x zN?T36{d9TY*S896Ijc^!35LLUByY4QO=ARCQ#MMCjudFc7s!z%P$6DESz%zZ#>H|i zw3Mc@v4~{Eke;FWs`5i@ifeYPh-Sb#vCa#qJPL|&quSKF%sp8*n#t?vIE7kFWjNFh zJC@u^bRQ^?ra|%39Ux^Dn4I}QICyDKF0mpe+Bk}!lFlqS^WpYm&xwIYxUoS-rJ)N9 z1Tz*6Rl9;x`4lwS1cgW^H_M*)Dt*DX*W?ArBf?-t|1~ge&S}xM0K;U9Ibf{okZHf~ z#4v4qc6s6Zgm8iKch5VMbQc~_V-ZviirnKCi*ouN^c_2lo&-M;YSA>W>>^5tlXObg zacX$k0=9Tf$Eg+#9k6yV(R5-&F{=DHP8!yvSQ`Y~XRnUx@{O$-bGCksk~3&qH^dqX zkf+ZZ?Nv5u>LBM@2?k%k&_aUb5Xjqf#!&7%zN#VZwmv65ezo^Y4S#(ed0yUn4tFOB zh1f1SJ6_s?a{)u6VdwUC!Hv=8`%T9(^c`2hc9nt$(q{Dm2X)dK49ba+KEheQ;7^0) ziFKw$%EHy_B1)M>=yK^=Z$U-LT36yX>EKT zvD8IAom2&2?bTmX@_PBR4W|p?6?LQ+&UMzXxqHC5VHzf@Eb1u)kwyfy+NOM8Wa2y@ zNNDL0PE$F;yFyf^jy&RGwDXQwYw6yz>OMWvJt98X@;yr!*RQDBE- zE*l*u=($Zi1}0-Y4lGaK?J$yQjgb+*ljUvNQ!;QYAoCq@>70=sJ{o{^21^?zT@r~hhf&O;Qiq+ ziGQQLG*D@5;LZ%09mwMiE4Q{IPUx-emo*;a6#DrmWr(zY27d@ezre)Z1BGZdo&pXn z+);gOFelKDmnjq#8dL7CTiVH)dHOqWi~uE|NM^QI3EqxE6+_n>IW67~UB#J==QOGF zp_S)c8TJ}uiaEiaER}MyB(grNn=2m&0yztA=!%3xUREyuG_jmadN*D&1nxvjZ6^+2 zORi7iX1iPi$tKasppaR9$a3IUmrrX)m*)fg1>H+$KpqeB*G>AQV((-G{}h=qItj|d zz~{5@{?&Dab6;0c7!!%Se>w($RmlG7Jlv_zV3Ru8b2rugY0MVPOOYGlokI7%nhIy& z-B&wE=lh2dtD!F?noD{z^O1~Tq4MhxvchzuT_oF3-t4YyA*MJ*n&+1X3~6quEN z@m~aEp=b2~mP+}TUP^FmkRS_PDMA{B zaSy(P=$T~R!yc^Ye0*pl5xcpm_JWI;@-di+nruhqZ4gy7cq-)I&s&Bt3BkgT(Zdjf zTvvv0)8xzntEtp4iXm}~cT+pi5k{w{(Z@l2XU9lHr4Vy~3ycA_T?V(QS{qwt?v|}k z_ST!s;C4!jyV5)^6xC#v!o*uS%a-jQ6< z)>o?z7=+zNNtIz1*F_HJ(w@=`E+T|9TqhC(g7kKDc8z~?RbKQ)LRMn7A1p*PcX2YR zUAr{);~c7I#3Ssv<0i-Woj0&Z4a!u|@Xt2J1>N-|ED<3$o2V?OwL4oQ%$@!zLamVz zB)K&Ik^~GOmDAa143{I4?XUk1<3-k{<%?&OID&>Ud%z*Rkt*)mko0RwC2=qFf-^OV z=d@47?tY=A;=2VAh0mF(3x;!#X!%{|vn;U2XW{(nu5b&8kOr)Kop3-5_xnK5oO_3y z!EaIb{r%D{7zwtGgFVri4_!yUIGwR(xEV3YWSI_+E}Gdl>TINWsIrfj+7DE?xp+5^ zlr3pM-Cbse*WGKOd3+*Qen^*uHk)+EpH-{u@i%y}Z!YSid<}~kA*IRSk|nf+I1N=2 zIKi+&ej%Al-M5`cP^XU>9A(m7G>58>o|}j0ZWbMg&x`*$B9j#Rnyo0#=BMLdo%=ks zLa3(2EinQLXQ(3zDe7Bce%Oszu%?8PO648TNst4SMFvj=+{b%)ELyB!0`B?9R6aO{i-63|s@|raSQGL~s)9R#J#duFaTSZ2M{X z1?YuM*a!!|jP^QJ(hAisJuPOM`8Y-Hzl~%d@latwj}t&0{DNNC+zJARnuQfiN`HQ# z?boY_2?*q;Qk)LUB)s8(Lz5elaW56p&fDH*AWAq7Zrbeq1!?FBGYHCnFgRu5y1jwD zc|yBz+UW|X`zDsc{W~8m$sh@VVnZD$lLnKlq@Hg^;ky!}ZuPdKNi2BI70;hrpvaA4+Q_+K)I@|)q1N-H zrycZU`*YUW``Qi^`bDX-j7j^&bO+-Xg$cz2#i##($uyW{Nl&{DK{=lLWV3|=<&si||2)l=8^8_z+Vho-#5LB0EqQ3v5U#*DF7 zxT)1j^`m+lW}p$>WSIG1eZ>L|YR-@Feu!YNWiw*IZYh03mq+2QVtQ}1ezRJM?0PA< z;mK(J5@N8>u@<6Y$QAHWNE};rR|)U_&bv8dsnsza7{=zD1VBcxrALqnOf-qW(zzTn zTAp|pEo#FsQ$~*$j|~Q;$Zy&Liu9OM;VF@#_&*nL!N2hH!Q6l*OeTxq!l>dEc{;Hw zCQni{iN%jHU*C;?M-VUaXxf0FEJ_G=C8)C-wD!DvhY+qQ#FT3}Th8;GgV&AV94F`D ztT6=w_Xm8)*)dBnDkZd~UWL|W=Glu!$hc|1w7_7l!3MAt95oIp4Xp{M%clu&TXehO z+L-1#{mjkpTF@?|w1P98OCky~S%@OR&o75P&ZHvC}Y=(2_{ib(-Al_7aZ^U?s34#H}= zGfFi5%KnFVCKtdO^>Htpb07#BeCXMDO8U}crpe1Gm`>Q=6qB4i=nLoLZ%p$TY=OcP z)r}Et-Ed??u~f09d3Nx3bS@ja!fV(Dfa5lXxRs#;8?Y8G+Qvz+iv7fiRkL3liip}) z&G0u8RdEC9c$$rdU53=MH`p!Jn|DHjhOxHK$tW_pw9wCTf0Eo<){HoN=zG!!Gq4z4 z7PwGh)VNPXW-cE#MtofE`-$9~nmmj}m zlzZscQ2+Jq%gaB9rMgVJkbhup0Ggpb)&L01T=%>n7-?v@I8!Q(p&+!fd+Y^Pu9l+u zek(_$^HYFVRRIFt@0Fp52g5Q#I`tC3li`;UtDLP*rA{-#Yoa5qp{cD)QYhldihWe+ zG~zuaqLY~$-1sjh2lkbXCX;lq+p~!2Z=76cvuQe*Fl>IFwpUBP+d^&E4BGc{m#l%Kuo6#{XGoRyFc%Hqhf|%nYd<;yiC>tyEyk z4I+a`(%%Ie=-*n z-{mg=j&t12)LH3R?@-B1tEb7FLMePI1HK0`Ae@#)KcS%!Qt9p4_fmBl5zhO10n401 zBSfnfJ;?_r{%R)hh}BBNSl=$BiAKbuWrNGQUZ)+0=Mt&5!X*D@yGCSaMNY&@`;^a4 z;v=%D_!K!WXV1!3%4P-M*s%V2b#2jF2bk!)#2GLVuGKd#vNpRMyg`kstw0GQ8@^k^ zuqK5uR<>FeRZ#3{%!|4X!hh7hgirQ@Mwg%%ez8pF!N$xhMNQN((yS(F2-OfduxxKE zxY#7O(VGfNuLv-ImAw5+h@gwn%!ER;*Q+001;W7W^waWT%@(T+5k!c3A-j)a8y11t zx4~rSN0s$M8HEOzkcWW4YbKK9GQez2XJ|Nq?TFy;jmGbg;`m&%U4hIiarKmdTHt#l zL=H;ZHE?fYxKQQXKnC+K!TAU}r086{4m}r()-QaFmU(qWhJlc$eas&y?=H9EYQy8N$8^bni9TpDp zkA^WRs?KgYgjxX4T6?`SMs$`s3vlut(YU~f2F+id(Rf_)$BIMibk9lACI~LA+i7xn z%-+=DHV*0TCTJp~-|$VZ@g2vmd*|2QXV;HeTzt530KyK>v&253N1l}bP_J#UjLy4) zBJili9#-ey8Kj(dxmW^ctorxd;te|xo)%46l%5qE-YhAjP`Cc03vT)vV&GAV%#Cgb zX~2}uWNvh`2<*AuxuJpq>SyNtZwzuU)r@@dqC@v=Ocd(HnnzytN+M&|Qi#f4Q8D=h ziE<3ziFW%+!yy(q{il8H44g^5{_+pH60Mx5Z*FgC_3hKxmeJ+wVuX?T#ZfOOD3E4C zRJsj#wA@3uvwZwHKKGN{{Ag+8^cs?S4N@6(Wkd$CkoCst(Z&hp+l=ffZ?2m%%ffI3 zdV7coR`R+*dPbNx=*ivWeNJK=Iy_vKd`-_Hng{l?hmp=|T3U&epbmgXXWs9ySE|=G zeQ|^ioL}tveN{s72_&h+F+W;G}?;?_s@h5>DX(rp#eaZ!E=NivgLI zWykLKev+}sHH41NCRm7W>K+_qdoJ8x9o5Cf!)|qLtF7Izxk*p|fX8UqEY)_sI_45O zL2u>x=r5xLE%s|d%MO>zU%KV6QKFiEeo12g#bhei4!Hm+`~Fo~4h|BJ)%ENxy9)Up zOxupSf1QZWun=)gF{L0YWJ<(r0?$bPFANrmphJ>kG`&7E+RgrWQi}ZS#-CQJ*i#8j zM_A0?w@4Mq@xvk^>QSvEU|VYQoVI=TaOrsLTa`RZfe8{9F~mM{L+C`9YP9?OknLw| zmkvz>cS6`pF0FYeLdY%>u&XpPj5$*iYkj=m7wMzHqzZ5SG~$i_^f@QEPEC+<2nf-{ zE7W+n%)q$!5@2pBuXMxhUSi*%F>e_g!$T-_`ovjBh(3jK9Q^~OR{)}!0}vdTE^M+m z9QWsA?xG>EW;U~5gEuKR)Ubfi&YWnXV;3H6Zt^NE725*`;lpSK4HS1sN?{~9a4JkD z%}23oAovytUKfRN87XTH2c=kq1)O5(fH_M3M-o{{@&~KD`~TRot-gqg7Q2U2o-iiF}K>m?CokhmODaLB z1p6(6JYGntNOg(s!(>ZU&lzDf+Ur)^Lirm%*}Z>T)9)fAZ9>k(kvnM;ab$ptA=hoh zVgsVaveXbMpm{|4*d<0>?l_JUFOO8A3xNLQOh%nVXjYI6X8h?a@6kDe5-m&;M0xqx z+1U$s>(P9P)f0!{z%M@E7|9nn#IWgEx6A6JNJ(7dk`%6$3@!C!l;JK-p2?gg+W|d- ziEzgk$w7k48NMqg$CM*4O~Abj3+_yUKTyK1p6GDsGEs;}=E_q>^LI-~pym$qhXPJf z2`!PJDp4l(TTm#|n@bN!j;-FFOM__eLl!6{*}z=)UAcGYloj?bv!-XY1TA6Xz;82J zLRaF{8ayzGa|}c--}|^xh)xgX>6R(sZD|Z|qX50gu=d`gEwHqC@WYU7{%<5VOnf9+ zB@FX?|UL%`8EIAe!*UdYl|6wRz6Y>(#8x92$#y}wMeE|ZM2X*c}dKJ^4NIf;Fm zNwzq%QcO?$NR-7`su!*$dlIKo2y(N;qgH@1|8QNo$0wbyyJ2^}$iZ>M{BhBjTdMjK z>gPEzgX4;g3$rU?jvDeOq`X=>)zdt|jk1Lv3u~bjHI=EGLfIR&+K3ldcc4D&Um&04 z3^F*}WaxR(ZyaB>DlmF_UP@+Q*h$&nsOB#gwLt{1#F4i-{A5J@`>B9@{^i?g_Ce&O z<<}_We-RUFU&&MHa1#t56u_oM(Ljn7djja!T|gcxSoR=)@?owC*NkDarpBj=W4}=i1@)@L|C) zQKA+o<(pMVp*Su(`zBC0l1yTa$MRfQ#uby|$mlOMs=G`4J|?apMzKei%jZql#gP@IkOaOjB7MJM=@1j(&!jNnyVkn5;4lvro1!vq ztXiV8HYj5%)r1PPpIOj)f!>pc^3#LvfZ(hz}C@-3R(Cx7R427*Fwd!XO z4~j&IkPHcBm0h_|iG;ZNrYdJ4HI!$rSyo&sibmwIgm1|J#g6%>=ML1r!kcEhm(XY& zD@mIJt;!O%WP7CE&wwE3?1-dt;RTHdm~LvP7K`ccWXkZ0kfFa2S;wGtx_a}S2lslw z$<4^Jg-n#Ypc(3t2N67Juasu=h)j&UNTPNDil4MQMTlnI81kY46uMH5B^U{~nmc6+ z9>(lGhhvRK9ITfpAD!XQ&BPphL3p8B4PVBN0NF6U49;ZA0Tr75AgGw7(S=Yio+xg_ zepZ*?V#KD;sHH+15ix&yCs0eSB-Z%D%uujlXvT#V$Rz@$+w!u#3GIo*AwMI#Bm^oO zLr1e}k5W~G0xaO!C%Mb{sarxWZ4%Dn9vG`KHmPC9GWZwOOm11XJp#o0-P-${3m4g( z6~)X9FXw%Xm~&99tj>a-ri})ZcnsfJtc10F@t9xF5vq6E)X!iUXHq-ohlO`gQdS&k zZl})3k||u)!_=nNlvMbz%AuIr89l#I$;rG}qvDGiK?xTd5HzMQkw*p$YvFLGyQM!J zNC^gD!kP{A84nGosi~@MLKqWQNacfs7O$dkZtm4-BZ~iA8xWZPkTK!HpA5zr!9Z&+icfAJ1)NWkTd!-9`NWU>9uXXUr;`Js#NbKFgrNhTcY4GNv*71}}T zFJh?>=EcbUd2<|fiL+H=wMw8hbX6?+_cl4XnCB#ddwdG>bki* zt*&6Dy&EIPluL@A3_;R%)shA-tDQA1!Tw4ffBRyy;2n)vm_JV06(4Or&QAOKNZB5f(MVC}&_!B>098R{Simr!UG}?CW1Ah+X+0#~0`X)od zLYablwmFxN21L))!_zc`IfzWi`5>MxPe(DmjjO1}HHt7TJtAW+VXHt!aKZk>y6PoMsbDXRJnov;D~Ur~2R_7(Xr)aa%wJwZhS3gr7IGgt%@;`jpL@gyc6bGCVx!9CE7NgIbUNZ!Ur1RHror0~ zr(j$^yM4j`#c2KxSP61;(Tk^pe7b~}LWj~SZC=MEpdKf;B@on9=?_n|R|0q;Y*1_@ z>nGq>)&q!;u-8H)WCwtL&7F4vbnnfSAlK1mwnRq2&gZrEr!b1MA z(3%vAbh3aU-IX`d7b@q`-WiT6eitu}ZH9x#d&qx}?CtDuAXak%5<-P!{a`V=$|XmJ zUn@4lX6#ulB@a=&-9HG)a>KkH=jE7>&S&N~0X0zD=Q=t|7w;kuh#cU=NN7gBGbQTT z;?bdSt8V&IIi}sDTzA0dkU}Z-Qvg;RDe8v>468p3*&hbGT1I3hi9hh~Z(!H}{+>eUyF)H&gdrX=k$aB%J6I;6+^^kn1mL+E+?A!A}@xV(Qa@M%HD5C@+-4Mb4lI=Xp=@9+^x+jhtOc zYgF2aVa(uSR*n(O)e6tf3JEg2xs#dJfhEmi1iOmDYWk|wXNHU?g23^IGKB&yHnsm7 zm_+;p?YpA#N*7vXCkeN2LTNG`{QDa#U3fcFz7SB)83=<8rF)|udrEbrZL$o6W?oDR zQx!178Ih9B#D9Ko$H(jD{4MME&<|6%MPu|TfOc#E0B}!j^MMpV69D#h2`vsEQ{(?c zJ3Lh!3&=yS5fWL~;1wCZ?)%nmK`Eqgcu)O6rD^3%ijcxL50^z?OI(LaVDvfL0#zjZ z2?cPvC$QCzpxpt5jMFp05OxhK0F!Q`rPhDi5)y=-0C} zIM~ku&S@pl1&0=jl+rlS<4`riV~LC-#pqNde@44MB(j%)On$0Ko(@q?4`1?4149Z_ zZi!5aU@2vM$dHR6WSZpj+VboK+>u-CbNi7*lw4K^ZxxM#24_Yc`jvb9NPVi75L+MlM^U~`;a7`4H0L|TYK>%hfEfXLsu1JGM zbh|8{wuc7ucV+`Ys1kqxsj`dajwyM;^X^`)#<+a~$WFy8b2t_RS{8yNYKKlnv+>vB zX(QTf$kqrJ;%I@EwEs{cIcH@Z3|#^S@M+5jsP<^`@8^I4_8MlBb`~cE^n+{{;qW2q z=p1=&+fUo%T{GhVX@;56kH8K_%?X=;$OTYqW1L*)hzelm^$*?_K;9JyIWhsn4SK(| zSmXLTUE8VQX{se#8#Rj*lz`xHtT<61V~fb;WZUpu(M)f#;I+2_zR+)y5Jv?l`CxAinx|EY!`IJ*x9_gf_k&Gx2alL!hK zUWj1T_pk|?iv}4EP#PZvYD_-LpzU!NfcLL%fK&r$W8O1KH9c2&GV~N#T$kaXGvAOl)|T zuF9%6(i=Y3q?X%VK-D2YIYFPH3f|g$TrXW->&^Ab`WT z7>Oo!u1u40?jAJ8Hy`bv}qbgs8)cF0&qeVjD?e+3Ggn1Im>K77ZSpbU*08 zfZkIFcv?y)!*B{|>nx@cE{KoutP+seQU?bCGE`tS0GKUO3PN~t=2u7q_6$l;uw^4c zVu^f{uaqsZ{*a-N?2B8ngrLS8E&s6}Xtv9rR9C^b`@q8*iH)pFzf1|kCfiLw6u{Z%aC z!X^5CzF6qofFJgklJV3oc|Qc2XdFl+y5M9*P8}A>Kh{ zWRgRwMSZ(?Jw;m%0etU5BsWT-Dj-5F;Q$OQJrQd+lv`i6>MhVo^p*^w6{~=fhe|bN z*37oV0kji)4an^%3ABbg5RC;CS50@PV5_hKfXjYx+(DqQdKC^JIEMo6X66$qDdLRc z!YJPSKnbY`#Ht6`g@xGzJmKzzn|abYbP+_Q(v?~~ z96%cd{E0BCsH^0HaWt{y(Cuto4VE7jhB1Z??#UaU(*R&Eo+J`UN+8mcb51F|I|n*J zJCZ3R*OdyeS9hWkc_mA7-br>3Tw=CX2bl(=TpVt#WP8Bg^vE_9bP&6ccAf3lFMgr` z{3=h@?Ftb$RTe&@IQtiJfV;O&4fzh)e1>7seG; z=%mA4@c7{aXeJnhEg2J@Bm;=)j=O=cl#^NNkQ<{r;Bm|8Hg}bJ-S^g4`|itx)~!LN zXtL}?f1Hs6UQ+f0-X6&TBCW=A4>bU0{rv8C4T!(wD-h>VCK4YJk`6C9$by!fxOYw- zV#n+0{E(0ttq_#16B} ze8$E#X9o{B!0vbq#WUwmv5Xz6{(!^~+}sBW{xctdNHL4^vDk!0E}(g|W_q;jR|ZK< z8w>H-8G{%R#%f!E7cO_^B?yFRKLOH)RT9GJsb+kAKq~}WIF)NRLwKZ^Q;>!2MNa|} z-mh?=B;*&D{Nd-mQRcfVnHkChI=DRHU4ga%xJ%+QkBd|-d9uRI76@BT(bjsjwS+r) zvx=lGNLv1?SzZ;P)Gnn>04fO7Culg*?LmbEF0fATG8S@)oJ>NT3pYAXa*vX!eUTDF ziBrp(QyDqr0ZMTr?4uG_Nqs6f%S0g?h`1vO5fo=5S&u#wI2d4+3hWiolEU!=3_oFo zfie?+4W#`;1dd#X@g9Yj<53S<6OB!TM8w8})7k-$&q5(smc%;r z(BlXkTp`C47+%4JA{2X}MIaPbVF!35P#p;u7+fR*46{T+LR8+j25oduCfDzDv6R-hU{TVVo9fz?^N3ShMt!t0NsH)pB zRK8-S{Dn*y3b|k^*?_B70<2gHt==l7c&cT>r`C#{S}J2;s#d{M)ncW(#Y$C*lByLQ z&?+{dR7*gpdT~(1;M(FfF==3z`^eW)=5a9RqvF-)2?S-(G zhS;p(u~_qBum*q}On@$#08}ynd0+spzyVco0%G6;<-i5&016cV5UKzhQ~)fX03|>L z8ej+HzzgVr6_5ZUpa4HW0Ca!=r1%*}Oo;2no&Zz8DfR)L!@r<5 z2viSZpmvo5XqXyAz{Ms7`7kX>fnr1gi4X~7KpznRT0{Xc5Cfz@43PjBMBoH@z_{~( z(Wd}IPJ9hH+%)Fc)0!hrV+(A;76rhtI|YHbEDeERV~Ya>SQg^IvlazFkSK(KG9&{q zkPIR~EeQaaBmwA<20}mBO?)N$(z1@p)5?%}rM| zGF()~Z&Kx@OIDRI$d0T8;JX@vj3^2%pd_+@l9~a4lntZ;AvUIjqIZbuNTR6@hNJoV zk4F;ut)LN4ARuyn2M6F~eg-e#UH%2P;8uPGFW^vq1vj8mdIayFOZo(tphk8C7hpT~ z1Fv8?b_LNR3QD9J+!v=p%}# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.ttf b/public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 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 G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/public/vendor/laravel-admin/AdminLTE/bootstrap/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/public/vendor/laravel-admin/AdminLTE/bootstrap/js/bootstrap.min.js b/public/vendor/laravel-admin/AdminLTE/bootstrap/js/bootstrap.min.js new file mode 100644 index 0000000..c8f1c68 --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/bootstrap/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.4 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.4",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.4",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.4",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.4",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport),this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-mp.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.4",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.4",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.4",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a(document.body).height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/css/AdminLTE.min.css b/public/vendor/laravel-admin/AdminLTE/dist/css/AdminLTE.min.css new file mode 100644 index 0000000..c5daa2e --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/css/AdminLTE.min.css @@ -0,0 +1,7 @@ +/*! + * AdminLTE v2.3.2 + * Author: Almsaeed Studio + * Website: Almsaeed Studio + * License: Open source - MIT + * Please visit http://opensource.org/licenses/MIT for more information +!*/html,body{min-height:100%}.layout-boxed html,.layout-boxed body{height:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:'Source Sans Pro','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:400;overflow-x:hidden;overflow-y:auto}.wrapper{min-height:100%;position:relative;overflow:hidden}.wrapper:before,.wrapper:after{content:" ";display:table}.wrapper:after{clear:both}.layout-boxed .wrapper{max-width:1250px;margin:0 auto;min-height:100%;box-shadow:0 0 8px rgba(0,0,0,0.5);position:relative}.layout-boxed{background:url('../img/boxed-bg.jpg') repeat fixed} .content-wrapper,.right-side,.main-footer{-webkit-transition:-webkit-transform .3s ease-in-out,margin .3s ease-in-out;-moz-transition:-moz-transform .3s ease-in-out,margin .3s ease-in-out;-o-transition:-o-transform .3s ease-in-out,margin .3s ease-in-out;transition:transform .3s ease-in-out,margin .3s ease-in-out;margin-left:230px;z-index:820} .layout-top-nav .content-wrapper,.layout-top-nav .right-side,.layout-top-nav .main-footer{margin-left:0}@media (max-width:767px){.content-wrapper,.right-side,.main-footer{margin-left:0}}@media (min-width:768px){.sidebar-collapse .content-wrapper,.sidebar-collapse .right-side,.sidebar-collapse .main-footer{margin-left:0}}@media (max-width:767px){.sidebar-open .content-wrapper,.sidebar-open .right-side,.sidebar-open .main-footer{-webkit-transform:translate(230px, 0);-ms-transform:translate(230px, 0);-o-transform:translate(230px, 0);transform:translate(230px, 0)}} .content-wrapper,.right-side{min-height:100%;background-color:#ecf0f5;z-index:800} .main-footer{background:#fff;padding:15px;color:#444;border-top:1px solid #d2d6de} .fixed .main-header,.fixed .main-sidebar,.fixed .left-side{position:fixed} .fixed .main-header{top:0;right:0;left:0} .fixed .content-wrapper,.fixed .right-side{padding-top:50px}@media (max-width:767px){.fixed .content-wrapper,.fixed .right-side{padding-top:100px}} .fixed.layout-boxed .wrapper{max-width:100%} body.hold-transition .content-wrapper,body.hold-transition .right-side,body.hold-transition .main-footer,body.hold-transition .main-sidebar,body.hold-transition .left-side,body.hold-transition .main-header>.navbar,body.hold-transition .main-header .logo{-webkit-transition:none;-o-transition:none;transition:none} .content{min-height:250px;padding:15px;margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px} h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:'Source Sans Pro',sans-serif} a{color:#3c8dbc} a:hover,a:active,a:focus{outline:none;text-decoration:none;color:#72afd2} .page-header{margin:10px 0 20px 0;font-size:22px} .page-header>small{color:#666;display:block;margin-top:5px} .main-header{position:relative;max-height:100px;z-index:1030} .main-header>.navbar{-webkit-transition:margin-left .3s ease-in-out;-o-transition:margin-left .3s ease-in-out;transition:margin-left .3s ease-in-out;margin-bottom:0;margin-left:230px;border:none;min-height:50px;border-radius:0} .layout-top-nav .main-header>.navbar{margin-left:0} .main-header #navbar-search-input.form-control{background:rgba(255,255,255,0.2);border-color:transparent} .main-header #navbar-search-input.form-control:focus,.main-header #navbar-search-input.form-control:active{border-color:rgba(0,0,0,0.1);background:rgba(255,255,255,0.9)} .main-header #navbar-search-input.form-control::-moz-placeholder{color:#ccc;opacity:1} .main-header #navbar-search-input.form-control:-ms-input-placeholder{color:#ccc} .main-header #navbar-search-input.form-control::-webkit-input-placeholder{color:#ccc} .main-header .navbar-custom-menu,.main-header .navbar-right{float:right}@media (max-width:991px){.main-header .navbar-custom-menu a,.main-header .navbar-right a{color:inherit;background:transparent}}@media (max-width:767px){.main-header .navbar-right{float:none}.navbar-collapse .main-header .navbar-right{margin:7.5px -15px}.main-header .navbar-right>li{color:inherit;border:0}} .main-header .sidebar-toggle{float:left;background-color:transparent;background-image:none;padding:15px 15px;font-family:fontAwesome} .main-header .sidebar-toggle:before{content:"\f0c9"} .main-header .sidebar-toggle:hover{color:#fff} .main-header .sidebar-toggle:focus,.main-header .sidebar-toggle:active{background:transparent} .main-header .sidebar-toggle .icon-bar{display:none} .main-header .navbar .nav>li.user>a>.fa,.main-header .navbar .nav>li.user>a>.glyphicon,.main-header .navbar .nav>li.user>a>.ion{margin-right:5px} .main-header .navbar .nav>li>a>.label{position:absolute;top:9px;right:7px;text-align:center;font-size:9px;padding:2px 3px;line-height:.9} .main-header .logo{-webkit-transition:width .3s ease-in-out;-o-transition:width .3s ease-in-out;transition:width .3s ease-in-out;display:block;float:left;height:50px;font-size:20px;line-height:50px;text-align:center;width:230px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:0 15px;font-weight:300;overflow:hidden} .main-header .logo .logo-lg{display:block} .main-header .logo .logo-mini{display:none} .main-header .navbar-brand{color:#fff} .content-header{position:relative;padding:15px 15px 0 15px} .content-header>h1{margin:0;font-size:24px} .content-header>h1>small{font-size:15px;display:inline-block;padding-left:4px;font-weight:300} .content-header>.breadcrumb{float:right;background:transparent;margin-top:0;margin-bottom:0;font-size:12px;padding:7px 5px;position:absolute;top:15px;right:10px;border-radius:2px} .content-header>.breadcrumb>li>a{color:#444;text-decoration:none;display:inline-block} .content-header>.breadcrumb>li>a>.fa,.content-header>.breadcrumb>li>a>.glyphicon,.content-header>.breadcrumb>li>a>.ion{margin-right:5px} .content-header>.breadcrumb>li+li:before{content:'>\00a0'}@media (max-width:991px){.content-header>.breadcrumb{position:relative;margin-top:5px;top:0;right:0;float:none;background:#d2d6de;padding-left:10px}.content-header>.breadcrumb li:before{color:#97a0b3}} .navbar-toggle{color:#fff;border:0;margin:0;padding:15px 15px}@media (max-width:991px){.navbar-custom-menu .navbar-nav>li{float:left}.navbar-custom-menu .navbar-nav{margin:0;float:left}.navbar-custom-menu .navbar-nav>li>a{padding-top:15px;padding-bottom:15px;line-height:20px}}@media (max-width:767px){.main-header{position:relative}.main-header .logo,.main-header .navbar{width:100%;float:none}.main-header .navbar{margin:0}.main-header .navbar-custom-menu{float:right}}@media (max-width:991px){.navbar-collapse.pull-left{float:none !important}.navbar-collapse.pull-left+.navbar-custom-menu{display:block;position:absolute;top:0;right:40px}} .main-sidebar,.left-side{position:absolute;top:0;left:0;padding-top:50px;min-height:100%;width:230px;z-index:810;-webkit-transition:-webkit-transform .3s ease-in-out,width .3s ease-in-out;-moz-transition:-moz-transform .3s ease-in-out,width .3s ease-in-out;-o-transition:-o-transform .3s ease-in-out,width .3s ease-in-out;transition:transform .3s ease-in-out,width .3s ease-in-out}@media (max-width:767px){.main-sidebar,.left-side{padding-top:100px}}@media (max-width:767px){.main-sidebar,.left-side{-webkit-transform:translate(-230px, 0);-ms-transform:translate(-230px, 0);-o-transform:translate(-230px, 0);transform:translate(-230px, 0)}}@media (min-width:768px){.sidebar-collapse .main-sidebar,.sidebar-collapse .left-side{-webkit-transform:translate(-230px, 0);-ms-transform:translate(-230px, 0);-o-transform:translate(-230px, 0);transform:translate(-230px, 0)}}@media (max-width:767px){.sidebar-open .main-sidebar,.sidebar-open .left-side{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}} .sidebar{padding-bottom:10px} .sidebar-form input:focus{border-color:transparent} .user-panel{position:relative;width:100%;padding:10px;overflow:hidden} .user-panel:before,.user-panel:after{content:" ";display:table} .user-panel:after{clear:both} .user-panel>.image>img{width:100%;max-width:45px;height:auto} .user-panel>.info{padding:5px 5px 5px 15px;line-height:1;position:absolute;left:55px} .user-panel>.info>p{font-weight:600;margin-bottom:9px} .user-panel>.info>a{text-decoration:none;padding-right:5px;margin-top:3px;font-size:11px} .user-panel>.info>a>.fa,.user-panel>.info>a>.ion,.user-panel>.info>a>.glyphicon{margin-right:3px} .sidebar-menu{list-style:none;margin:0;padding:0} .sidebar-menu>li{position:relative;margin:0;padding:0} .sidebar-menu>li>a{padding:12px 5px 12px 15px;display:block} .sidebar-menu>li>a>.fa,.sidebar-menu>li>a>.glyphicon,.sidebar-menu>li>a>.ion{width:20px} .sidebar-menu>li .label,.sidebar-menu>li .badge{margin-top:3px;margin-right:5px} .sidebar-menu li.header{padding:10px 25px 10px 15px;font-size:12px} .sidebar-menu li>a>.fa-angle-left{width:auto;height:auto;padding:0;margin-right:10px;margin-top:3px} .sidebar-menu li.active>a>.fa-angle-left{-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)} .sidebar-menu li.active>.treeview-menu{display:block} .sidebar-menu .treeview-menu{display:none;list-style:none;padding:0;margin:0;padding-left:5px} .sidebar-menu .treeview-menu .treeview-menu{padding-left:20px} .sidebar-menu .treeview-menu>li{margin:0} .sidebar-menu .treeview-menu>li>a{padding:5px 5px 5px 15px;display:block;font-size:14px} .sidebar-menu .treeview-menu>li>a>.fa,.sidebar-menu .treeview-menu>li>a>.glyphicon,.sidebar-menu .treeview-menu>li>a>.ion{width:20px} .sidebar-menu .treeview-menu>li>a>.fa-angle-left,.sidebar-menu .treeview-menu>li>a>.fa-angle-down{width:auto}@media (min-width:768px){.sidebar-mini.sidebar-collapse .content-wrapper,.sidebar-mini.sidebar-collapse .right-side,.sidebar-mini.sidebar-collapse .main-footer{margin-left:50px !important;z-index:840}.sidebar-mini.sidebar-collapse .main-sidebar{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0);width:50px !important;z-index:850}.sidebar-mini.sidebar-collapse .sidebar-menu>li{position:relative}.sidebar-mini.sidebar-collapse .sidebar-menu>li>a{margin-right:0}.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span{border-top-right-radius:4px}.sidebar-mini.sidebar-collapse .sidebar-menu>li:not(.treeview)>a>span{border-bottom-right-radius:4px}.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{padding-top:5px;padding-bottom:5px;border-bottom-right-radius:4px}.sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>a>span:not(.pull-right),.sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>.treeview-menu{display:block !important;position:absolute;width:180px;left:50px}.sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>a>span{top:0;margin-left:-3px;padding:12px 5px 12px 20px;background-color:inherit}.sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>.treeview-menu{top:44px;margin-left:0}.sidebar-mini.sidebar-collapse .main-sidebar .user-panel>.info,.sidebar-mini.sidebar-collapse .sidebar-form,.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span,.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu,.sidebar-mini.sidebar-collapse .sidebar-menu>li>a>.pull-right,.sidebar-mini.sidebar-collapse .sidebar-menu li.header{display:none !important;-webkit-transform:translateZ(0)}.sidebar-mini.sidebar-collapse .main-header .logo{width:50px}.sidebar-mini.sidebar-collapse .main-header .logo>.logo-mini{display:block;margin-left:-15px;margin-right:-15px;font-size:18px}.sidebar-mini.sidebar-collapse .main-header .logo>.logo-lg{display:none}.sidebar-mini.sidebar-collapse .main-header .navbar{margin-left:50px}} .sidebar-menu,.main-sidebar .user-panel,.sidebar-menu>li.header{white-space:nowrap;overflow:hidden} .sidebar-menu:hover{overflow:visible} .sidebar-form,.sidebar-menu>li.header{overflow:hidden;text-overflow:clip} .sidebar-menu li>a{position:relative} .sidebar-menu li>a>.pull-right{position:absolute;right:10px;top:50%;margin-top:-7px} .control-sidebar-bg{position:fixed;z-index:1000;bottom:0} .control-sidebar-bg,.control-sidebar{top:0;right:-230px;width:230px;-webkit-transition:right .3s ease-in-out;-o-transition:right .3s ease-in-out;transition:right .3s ease-in-out} .control-sidebar{position:absolute;padding-top:50px;z-index:1010}@media (max-width:768px){.control-sidebar{padding-top:100px}} .control-sidebar>.tab-content{padding:10px 15px} .control-sidebar.control-sidebar-open,.control-sidebar.control-sidebar-open+.control-sidebar-bg{right:0} .control-sidebar-open .control-sidebar-bg,.control-sidebar-open .control-sidebar{right:0}@media (min-width:768px){.control-sidebar-open .content-wrapper,.control-sidebar-open .right-side,.control-sidebar-open .main-footer{margin-right:230px}} .nav-tabs.control-sidebar-tabs>li:first-of-type>a,.nav-tabs.control-sidebar-tabs>li:first-of-type>a:hover,.nav-tabs.control-sidebar-tabs>li:first-of-type>a:focus{border-left-width:0} .nav-tabs.control-sidebar-tabs>li>a{border-radius:0} .nav-tabs.control-sidebar-tabs>li>a,.nav-tabs.control-sidebar-tabs>li>a:hover{border-top:none;border-right:none;border-left:1px solid transparent;border-bottom:1px solid transparent} .nav-tabs.control-sidebar-tabs>li>a .icon{font-size:16px} .nav-tabs.control-sidebar-tabs>li.active>a,.nav-tabs.control-sidebar-tabs>li.active>a:hover,.nav-tabs.control-sidebar-tabs>li.active>a:focus,.nav-tabs.control-sidebar-tabs>li.active>a:active{border-top:none;border-right:none;border-bottom:none}@media (max-width:768px){.nav-tabs.control-sidebar-tabs{display:table}.nav-tabs.control-sidebar-tabs>li{display:table-cell}} .control-sidebar-heading{font-weight:400;font-size:16px;padding:10px 0;margin-bottom:10px} .control-sidebar-subheading{display:block;font-weight:400;font-size:14px} .control-sidebar-menu{list-style:none;padding:0;margin:0 -15px} .control-sidebar-menu>li>a{display:block;padding:10px 15px} .control-sidebar-menu>li>a:before,.control-sidebar-menu>li>a:after{content:" ";display:table} .control-sidebar-menu>li>a:after{clear:both} .control-sidebar-menu>li>a>.control-sidebar-subheading{margin-top:0} .control-sidebar-menu .menu-icon{float:left;width:35px;height:35px;border-radius:50%;text-align:center;line-height:35px} .control-sidebar-menu .menu-info{margin-left:45px;margin-top:3px} .control-sidebar-menu .menu-info>.control-sidebar-subheading{margin:0} .control-sidebar-menu .menu-info>p{margin:0;font-size:11px} .control-sidebar-menu .progress{margin:0} .control-sidebar-dark{color:#b8c7ce} .control-sidebar-dark,.control-sidebar-dark+.control-sidebar-bg{background:#222d32} .control-sidebar-dark .nav-tabs.control-sidebar-tabs{border-bottom:#1c2529} .control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a{background:#181f23;color:#b8c7ce} .control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:focus{border-left-color:#141a1d;border-bottom-color:#141a1d} .control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:active{background:#1c2529} .control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover{color:#fff} .control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:hover,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:focus,.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:active{background:#222d32;color:#fff} .control-sidebar-dark .control-sidebar-heading,.control-sidebar-dark .control-sidebar-subheading{color:#fff} .control-sidebar-dark .control-sidebar-menu>li>a:hover{background:#1e282c} .control-sidebar-dark .control-sidebar-menu>li>a .menu-info>p{color:#b8c7ce} .control-sidebar-light{color:#5e5e5e} .control-sidebar-light,.control-sidebar-light+.control-sidebar-bg{background:#f9fafc;border-left:1px solid #d2d6de} .control-sidebar-light .nav-tabs.control-sidebar-tabs{border-bottom:#d2d6de} .control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a{background:#e8ecf4;color:#444} .control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:focus{border-left-color:#d2d6de;border-bottom-color:#d2d6de} .control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:active{background:#eff1f7} .control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:hover,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:focus,.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:active{background:#f9fafc;color:#111} .control-sidebar-light .control-sidebar-heading,.control-sidebar-light .control-sidebar-subheading{color:#111} .control-sidebar-light .control-sidebar-menu{margin-left:-14px} .control-sidebar-light .control-sidebar-menu>li>a:hover{background:#f4f4f5} .control-sidebar-light .control-sidebar-menu>li>a .menu-info>p{color:#5e5e5e} .dropdown-menu{box-shadow:none;border-color:#eee} .dropdown-menu>li>a{color:#777} .dropdown-menu>li>a>.glyphicon,.dropdown-menu>li>a>.fa,.dropdown-menu>li>a>.ion{margin-right:10px} .dropdown-menu>li>a:hover{background-color:#e1e3e9;color:#333} .dropdown-menu>.divider{background-color:#eee} .navbar-nav>.notifications-menu>.dropdown-menu,.navbar-nav>.messages-menu>.dropdown-menu,.navbar-nav>.tasks-menu>.dropdown-menu{width:280px;padding:0 0 0 0;margin:0;top:100%} .navbar-nav>.notifications-menu>.dropdown-menu>li,.navbar-nav>.messages-menu>.dropdown-menu>li,.navbar-nav>.tasks-menu>.dropdown-menu>li{position:relative} .navbar-nav>.notifications-menu>.dropdown-menu>li.header,.navbar-nav>.messages-menu>.dropdown-menu>li.header,.navbar-nav>.tasks-menu>.dropdown-menu>li.header{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0;background-color:#ffffff;padding:7px 10px;border-bottom:1px solid #f4f4f4;color:#444444;font-size:14px} .navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px;font-size:12px;background-color:#fff;padding:7px 10px;border-bottom:1px solid #eeeeee;color:#444 !important;text-align:center}@media (max-width:991px){.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a{background:#fff !important;color:#444 !important}} .navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a:hover,.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a:hover,.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a:hover{text-decoration:none;font-weight:normal} .navbar-nav>.notifications-menu>.dropdown-menu>li .menu,.navbar-nav>.messages-menu>.dropdown-menu>li .menu,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu{max-height:200px;margin:0;padding:0;list-style:none;overflow-x:hidden} .navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a{display:block;white-space:nowrap;border-bottom:1px solid #f4f4f4} .navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a:hover,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:hover,.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a:hover{background:#f4f4f4;text-decoration:none} .navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a{color:#444444;overflow:hidden;text-overflow:ellipsis;padding:10px} .navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.glyphicon,.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.fa,.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.ion{width:20px} .navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a{margin:0;padding:10px 10px} .navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>div>img{margin:auto 10px auto auto;width:40px;height:40px} .navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>h4{padding:0;margin:0 0 0 45px;color:#444444;font-size:15px;position:relative} .navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>h4>small{color:#999999;font-size:10px;position:absolute;top:0;right:0} .navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>p{margin:0 0 0 45px;font-size:12px;color:#888888} .navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:before,.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:after{content:" ";display:table} .navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:after{clear:both} .navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a{padding:10px} .navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a>h3{font-size:14px;padding:0;margin:0 0 10px 0;color:#666666} .navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a>.progress{padding:0;margin:0} .navbar-nav>.user-menu>.dropdown-menu{border-top-right-radius:0;border-top-left-radius:0;padding:1px 0 0 0;border-top-width:0;width:280px} .navbar-nav>.user-menu>.dropdown-menu,.navbar-nav>.user-menu>.dropdown-menu>.user-body{border-bottom-right-radius:4px;border-bottom-left-radius:4px} .navbar-nav>.user-menu>.dropdown-menu>li.user-header{height:175px;padding:10px;text-align:center} .navbar-nav>.user-menu>.dropdown-menu>li.user-header>img{z-index:5;height:90px;width:90px;border:3px solid;border-color:transparent;border-color:rgba(255,255,255,0.2)} .navbar-nav>.user-menu>.dropdown-menu>li.user-header>p{z-index:5;color:#fff;color:rgba(255,255,255,0.8);font-size:17px;margin-top:10px} .navbar-nav>.user-menu>.dropdown-menu>li.user-header>p>small{display:block;font-size:12px} .navbar-nav>.user-menu>.dropdown-menu>.user-body{padding:15px;border-bottom:1px solid #f4f4f4;border-top:1px solid #dddddd} .navbar-nav>.user-menu>.dropdown-menu>.user-body:before,.navbar-nav>.user-menu>.dropdown-menu>.user-body:after{content:" ";display:table} .navbar-nav>.user-menu>.dropdown-menu>.user-body:after{clear:both} .navbar-nav>.user-menu>.dropdown-menu>.user-body a{color:#444 !important}@media (max-width:991px){.navbar-nav>.user-menu>.dropdown-menu>.user-body a{background:#fff !important;color:#444 !important}} .navbar-nav>.user-menu>.dropdown-menu>.user-footer{background-color:#f9f9f9;padding:10px} .navbar-nav>.user-menu>.dropdown-menu>.user-footer:before,.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after{content:" ";display:table} .navbar-nav>.user-menu>.dropdown-menu>.user-footer:after{clear:both} .navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default{color:#666666}@media (max-width:991px){.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default:hover{background-color:#f9f9f9}} .navbar-nav>.user-menu .user-image{float:left;width:25px;height:25px;border-radius:50%;margin-right:10px;margin-top:-2px}@media (max-width:767px){.navbar-nav>.user-menu .user-image{float:none;margin-right:0;margin-top:-8px;line-height:10px}} .open:not(.dropup)>.animated-dropdown-menu{backface-visibility:visible !important;-webkit-animation:flipInX .7s both;-o-animation:flipInX .7s both;animation:flipInX .7s both} @keyframes flipInX{0%{transform:perspective(400px) rotate3d(1, 0, 0, 90deg);transition-timing-function:ease-in;opacity:0}40%{transform:perspective(400px) rotate3d(1, 0, 0, -20deg);transition-timing-function:ease-in}60%{transform:perspective(400px) rotate3d(1, 0, 0, 10deg);opacity:1}80%{transform:perspective(400px) rotate3d(1, 0, 0, -5deg)}100%{transform:perspective(400px)}} @-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, 90deg);-webkit-transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, -20deg);-webkit-transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, 10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1, 0, 0, -5deg)}100%{-webkit-transform:perspective(400px)}} .navbar-custom-menu>.navbar-nav>li{position:relative} .navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:0;left:auto}@media (max-width:991px){.navbar-custom-menu>.navbar-nav{float:right}.navbar-custom-menu>.navbar-nav>li{position:static}.navbar-custom-menu>.navbar-nav>li>.dropdown-menu{position:absolute;right:5%;left:auto;border:1px solid #ddd;background:#fff}} .form-control{border-radius:0;box-shadow:none;border-color:#d2d6de} .form-control:focus{border-color:#3c8dbc;box-shadow:none} .form-control::-moz-placeholder,.form-control:-ms-input-placeholder,.form-control::-webkit-input-placeholder{color:#bbb;opacity:1} .form-control:not(select){-webkit-appearance:none;-moz-appearance:none;appearance:none} .form-group.has-success label{color:#00a65a} .form-group.has-success .form-control{border-color:#00a65a;box-shadow:none} .form-group.has-warning label{color:#f39c12} .form-group.has-warning .form-control{border-color:#f39c12;box-shadow:none} .form-group.has-error label{color:#dd4b39} .form-group.has-error .form-control{border-color:#dd4b39;box-shadow:none} .input-group .input-group-addon{border-radius:0;border-color:#d2d6de;background-color:#fff} .btn-group-vertical .btn.btn-flat:first-of-type,.btn-group-vertical .btn.btn-flat:last-of-type{border-radius:0} .icheck>label{padding-left:0} .form-control-feedback.fa{line-height:34px} .input-lg+.form-control-feedback.fa,.input-group-lg+.form-control-feedback.fa,.form-group-lg .form-control+.form-control-feedback.fa{line-height:46px} .input-sm+.form-control-feedback.fa,.input-group-sm+.form-control-feedback.fa,.form-group-sm .form-control+.form-control-feedback.fa{line-height:30px} .progress,.progress>.progress-bar{-webkit-box-shadow:none;box-shadow:none} .progress,.progress>.progress-bar,.progress .progress-bar,.progress>.progress-bar .progress-bar{border-radius:1px} .progress.sm,.progress-sm{height:10px} .progress.sm,.progress-sm,.progress.sm .progress-bar,.progress-sm .progress-bar{border-radius:1px} .progress.xs,.progress-xs{height:7px} .progress.xs,.progress-xs,.progress.xs .progress-bar,.progress-xs .progress-bar{border-radius:1px} .progress.xxs,.progress-xxs{height:3px} .progress.xxs,.progress-xxs,.progress.xxs .progress-bar,.progress-xxs .progress-bar{border-radius:1px} .progress.vertical{position:relative;width:30px;height:200px;display:inline-block;margin-right:10px} .progress.vertical>.progress-bar{width:100%;position:absolute;bottom:0} .progress.vertical.sm,.progress.vertical.progress-sm{width:20px} .progress.vertical.xs,.progress.vertical.progress-xs{width:10px} .progress.vertical.xxs,.progress.vertical.progress-xxs{width:3px} .progress-group .progress-text{font-weight:600} .progress-group .progress-number{float:right} .table tr>td .progress{margin:0} .progress-bar-light-blue,.progress-bar-primary{background-color:#3c8dbc} .progress-striped .progress-bar-light-blue,.progress-striped .progress-bar-primary{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);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);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)} .progress-bar-green,.progress-bar-success{background-color:#00a65a} .progress-striped .progress-bar-green,.progress-striped .progress-bar-success{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);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);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)} .progress-bar-aqua,.progress-bar-info{background-color:#00c0ef} .progress-striped .progress-bar-aqua,.progress-striped .progress-bar-info{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);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);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)} .progress-bar-yellow,.progress-bar-warning{background-color:#f39c12} .progress-striped .progress-bar-yellow,.progress-striped .progress-bar-warning{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);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);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)} .progress-bar-red,.progress-bar-danger{background-color:#dd4b39} .progress-striped .progress-bar-red,.progress-striped .progress-bar-danger{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);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);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)} .small-box{border-radius:2px;position:relative;display:block;margin-bottom:20px;box-shadow:0 1px 1px rgba(0,0,0,0.1)} .small-box>.inner{padding:10px} .small-box>.small-box-footer{position:relative;text-align:center;padding:3px 0;color:#fff;color:rgba(255,255,255,0.8);display:block;z-index:10;background:rgba(0,0,0,0.1);text-decoration:none} .small-box>.small-box-footer:hover{color:#fff;background:rgba(0,0,0,0.15)} .small-box h3{font-size:38px;font-weight:bold;margin:0 0 10px 0;white-space:nowrap;padding:0} .small-box p{font-size:15px} .small-box p>small{display:block;color:#f9f9f9;font-size:13px;margin-top:5px} .small-box h3,.small-box p{z-index:5px} .small-box .icon{-webkit-transition:all .3s linear;-o-transition:all .3s linear;transition:all .3s linear;position:absolute;top:-10px;right:10px;z-index:0;font-size:90px;color:rgba(0,0,0,0.15)} .small-box:hover{text-decoration:none;color:#f9f9f9} .small-box:hover .icon{font-size:95px}@media (max-width:767px){.small-box{text-align:center}.small-box .icon{display:none}.small-box p{font-size:12px}} .box{position:relative;border-radius:3px;background:#ffffff;border-top:3px solid #d2d6de;margin-bottom:20px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1)} .box.box-primary{border-top-color:#3c8dbc} .box.box-info{border-top-color:#00c0ef} .box.box-danger{border-top-color:#dd4b39} .box.box-warning{border-top-color:#f39c12} .box.box-success{border-top-color:#00a65a} .box.box-default{border-top-color:#d2d6de} .box.collapsed-box .box-body,.box.collapsed-box .box-footer{display:none} .box .nav-stacked>li{border-bottom:1px solid #f4f4f4;margin:0} .box .nav-stacked>li:last-of-type{border-bottom:none} .box.height-control .box-body{max-height:300px;overflow:auto} .box .border-right{border-right:1px solid #f4f4f4} .box .border-left{border-left:1px solid #f4f4f4} .box.box-solid{border-top:0} .box.box-solid>.box-header .btn.btn-default{background:transparent} .box.box-solid>.box-header .btn:hover,.box.box-solid>.box-header a:hover{background:rgba(0,0,0,0.1)} .box.box-solid.box-default{border:1px solid #d2d6de} .box.box-solid.box-default>.box-header{color:#444;background:#d2d6de;background-color:#d2d6de} .box.box-solid.box-default>.box-header a,.box.box-solid.box-default>.box-header .btn{color:#444} .box.box-solid.box-primary{border:1px solid #3c8dbc} .box.box-solid.box-primary>.box-header{color:#fff;background:#3c8dbc;background-color:#3c8dbc} .box.box-solid.box-primary>.box-header a,.box.box-solid.box-primary>.box-header .btn{color:#fff} .box.box-solid.box-info{border:1px solid #00c0ef} .box.box-solid.box-info>.box-header{color:#fff;background:#00c0ef;background-color:#00c0ef} .box.box-solid.box-info>.box-header a,.box.box-solid.box-info>.box-header .btn{color:#fff} .box.box-solid.box-danger{border:1px solid #dd4b39} .box.box-solid.box-danger>.box-header{color:#fff;background:#dd4b39;background-color:#dd4b39} .box.box-solid.box-danger>.box-header a,.box.box-solid.box-danger>.box-header .btn{color:#fff} .box.box-solid.box-warning{border:1px solid #f39c12} .box.box-solid.box-warning>.box-header{color:#fff;background:#f39c12;background-color:#f39c12} .box.box-solid.box-warning>.box-header a,.box.box-solid.box-warning>.box-header .btn{color:#fff} .box.box-solid.box-success{border:1px solid #00a65a} .box.box-solid.box-success>.box-header{color:#fff;background:#00a65a;background-color:#00a65a} .box.box-solid.box-success>.box-header a,.box.box-solid.box-success>.box-header .btn{color:#fff} .box.box-solid>.box-header>.box-tools .btn{border:0;box-shadow:none} .box.box-solid[class*='bg']>.box-header{color:#fff} .box .box-group>.box{margin-bottom:5px} .box .knob-label{text-align:center;color:#333;font-weight:100;font-size:12px;margin-bottom:0.3em} .box>.overlay,.overlay-wrapper>.overlay,.box>.loading-img,.overlay-wrapper>.loading-img{position:absolute;top:0;left:0;width:100%;height:100%} .box .overlay,.overlay-wrapper .overlay{z-index:50;background:rgba(255,255,255,0.7);border-radius:3px} .box .overlay>.fa,.overlay-wrapper .overlay>.fa{position:absolute;top:50%;left:50%;margin-left:-15px;margin-top:-15px;color:#000;font-size:30px} .box .overlay.dark,.overlay-wrapper .overlay.dark{background:rgba(0,0,0,0.5)} .box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after{content:" ";display:table} .box-header:after,.box-body:after,.box-footer:after{clear:both} .box-header{color:#444;display:block;padding:10px;position:relative} .box-header.with-border{border-bottom:1px solid #f4f4f4} .collapsed-box .box-header.with-border{border-bottom:none} .box-header>.fa,.box-header>.glyphicon,.box-header>.ion,.box-header .box-title{display:inline-block;font-size:18px;margin:0;line-height:1} .box-header>.fa,.box-header>.glyphicon,.box-header>.ion{margin-right:5px} .box-header>.box-tools{position:absolute;right:10px;top:5px} .box-header>.box-tools [data-toggle="tooltip"]{position:relative} .box-header>.box-tools.pull-right .dropdown-menu{right:0;left:auto} .btn-box-tool{padding:5px;font-size:12px;background:transparent;color:#97a0b3} .open .btn-box-tool,.btn-box-tool:hover{color:#606c84} .btn-box-tool.btn:active{box-shadow:none} .box-body{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;padding:10px} .no-header .box-body{border-top-right-radius:3px;border-top-left-radius:3px} .box-body>.table{margin-bottom:0} .box-body .fc{margin-top:5px} .box-body .full-width-chart{margin:-19px} .box-body.no-padding .full-width-chart{margin:-9px} .box-body .box-pane{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:3px} .box-body .box-pane-right{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0} .box-footer{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-top:1px solid #f4f4f4;padding:10px;background-color:#fff} .chart-legend{margin:10px 0}@media (max-width:991px){.chart-legend>li{float:left;margin-right:10px}} .box-comments{background:#f7f7f7} .box-comments .box-comment{padding:8px 0;border-bottom:1px solid #eee} .box-comments .box-comment:before,.box-comments .box-comment:after{content:" ";display:table} .box-comments .box-comment:after{clear:both} .box-comments .box-comment:last-of-type{border-bottom:0} .box-comments .box-comment:first-of-type{padding-top:0} .box-comments .box-comment img{float:left} .box-comments .comment-text{margin-left:40px;color:#555} .box-comments .username{color:#444;display:block;font-weight:600} .box-comments .text-muted{font-weight:400;font-size:12px} .todo-list{margin:0;padding:0;list-style:none;overflow:auto} .todo-list>li{border-radius:2px;padding:10px;background:#f4f4f4;margin-bottom:2px;border-left:2px solid #e6e7e8;color:#444} .todo-list>li:last-of-type{margin-bottom:0} .todo-list>li>input[type='checkbox']{margin:0 10px 0 5px} .todo-list>li .text{display:inline-block;margin-left:5px;font-weight:600} .todo-list>li .label{margin-left:10px;font-size:9px} .todo-list>li .tools{display:none;float:right;color:#dd4b39} .todo-list>li .tools>.fa,.todo-list>li .tools>.glyphicon,.todo-list>li .tools>.ion{margin-right:5px;cursor:pointer} .todo-list>li:hover .tools{display:inline-block} .todo-list>li.done{color:#999} .todo-list>li.done .text{text-decoration:line-through;font-weight:500} .todo-list>li.done .label{background:#d2d6de !important} .todo-list .danger{border-left-color:#dd4b39} .todo-list .warning{border-left-color:#f39c12} .todo-list .info{border-left-color:#00c0ef} .todo-list .success{border-left-color:#00a65a} .todo-list .primary{border-left-color:#3c8dbc} .todo-list .handle{display:inline-block;cursor:move;margin:0 5px} .chat{padding:5px 20px 5px 10px} .chat .item{margin-bottom:10px} .chat .item:before,.chat .item:after{content:" ";display:table} .chat .item:after{clear:both} .chat .item>img{width:40px;height:40px;border:2px solid transparent;border-radius:50%} .chat .item>.online{border:2px solid #00a65a} .chat .item>.offline{border:2px solid #dd4b39} .chat .item>.message{margin-left:55px;margin-top:-40px} .chat .item>.message>.name{display:block;font-weight:600} .chat .item>.attachment{border-radius:3px;background:#f4f4f4;margin-left:65px;margin-right:15px;padding:10px} .chat .item>.attachment>h4{margin:0 0 5px 0;font-weight:600;font-size:14px} .chat .item>.attachment>p,.chat .item>.attachment>.filename{font-weight:600;font-size:13px;font-style:italic;margin:0} .chat .item>.attachment:before,.chat .item>.attachment:after{content:" ";display:table} .chat .item>.attachment:after{clear:both} .box-input{max-width:200px} .modal .panel-body{color:#444} .info-box{display:block;min-height:90px;background:#fff;width:100%;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:2px;margin-bottom:15px} .info-box small{font-size:14px} .info-box .progress{background:rgba(0,0,0,0.2);margin:5px -10px 5px -10px;height:2px} .info-box .progress,.info-box .progress .progress-bar{border-radius:0} .info-box .progress .progress-bar{background:#fff} .info-box-icon{border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px;display:block;float:left;height:90px;width:90px;text-align:center;font-size:45px;line-height:90px;background:rgba(0,0,0,0.2)} .info-box-icon>img{max-width:100%} .info-box-content{padding:5px 10px;margin-left:90px} .info-box-number{display:block;font-weight:bold;font-size:18px} .progress-description,.info-box-text{display:block;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .info-box-text{text-transform:uppercase} .info-box-more{display:block} .progress-description{margin:0} .timeline{position:relative;margin:0 0 30px 0;padding:0;list-style:none} .timeline:before{content:'';position:absolute;top:0;bottom:0;width:4px;background:#ddd;left:31px;margin:0;border-radius:2px} .timeline>li{position:relative;margin-right:10px;margin-bottom:15px} .timeline>li:before,.timeline>li:after{content:" ";display:table} .timeline>li:after{clear:both} .timeline>li>.timeline-item{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;margin-top:0;background:#fff;color:#444;margin-left:60px;margin-right:15px;padding:0;position:relative} .timeline>li>.timeline-item>.time{color:#999;float:right;padding:10px;font-size:12px} .timeline>li>.timeline-item>.timeline-header{margin:0;color:#555;border-bottom:1px solid #f4f4f4;padding:10px;font-size:16px;line-height:1.1} .timeline>li>.timeline-item>.timeline-header>a{font-weight:600} .timeline>li>.timeline-item>.timeline-body,.timeline>li>.timeline-item>.timeline-footer{padding:10px} .timeline>li>.fa,.timeline>li>.glyphicon,.timeline>li>.ion{width:30px;height:30px;font-size:15px;line-height:30px;position:absolute;color:#666;background:#d2d6de;border-radius:50%;text-align:center;left:18px;top:0} .timeline>.time-label>span{font-weight:600;padding:5px;display:inline-block;background-color:#fff;border-radius:4px} .timeline-inverse>li>.timeline-item{background:#f0f0f0;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none} .timeline-inverse>li>.timeline-item>.timeline-header{border-bottom-color:#ddd} .btn{border-radius:3px;-webkit-box-shadow:none;box-shadow:none;border:1px solid transparent} .btn.uppercase{text-transform:uppercase} .btn.btn-flat{border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;border-width:1px} .btn:active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)} .btn:focus{outline:none} .btn.btn-file{position:relative;overflow:hidden} .btn.btn-file>input[type='file']{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;opacity:0;filter:alpha(opacity=0);outline:none;background:white;cursor:inherit;display:block} .btn-default{background-color:#f4f4f4;color:#444;border-color:#ddd} .btn-default:hover,.btn-default:active,.btn-default.hover{background-color:#e7e7e7} .btn-primary{background-color:#3c8dbc;border-color:#367fa9} .btn-primary:hover,.btn-primary:active,.btn-primary.hover{background-color:#367fa9} .btn-success{background-color:#00a65a;border-color:#008d4c} .btn-success:hover,.btn-success:active,.btn-success.hover{background-color:#008d4c} .btn-info{background-color:#00c0ef;border-color:#00acd6} .btn-info:hover,.btn-info:active,.btn-info.hover{background-color:#00acd6} .btn-danger{background-color:#dd4b39;border-color:#d73925} .btn-danger:hover,.btn-danger:active,.btn-danger.hover{background-color:#d73925} .btn-warning{background-color:#f39c12;border-color:#e08e0b} .btn-warning:hover,.btn-warning:active,.btn-warning.hover{background-color:#e08e0b} .btn-outline{border:1px solid #fff;background:transparent;color:#fff} .btn-outline:hover,.btn-outline:focus,.btn-outline:active{color:rgba(255,255,255,0.7);border-color:rgba(255,255,255,0.7)} .btn-link{-webkit-box-shadow:none;box-shadow:none} .btn[class*='bg-']:hover{-webkit-box-shadow:inset 0 0 100px rgba(0,0,0,0.2);box-shadow:inset 0 0 100px rgba(0,0,0,0.2)} .btn-app{border-radius:3px;position:relative;padding:15px 5px;margin:0 0 10px 10px;min-width:80px;height:60px;text-align:center;color:#666;border:1px solid #ddd;background-color:#f4f4f4;font-size:12px} .btn-app>.fa,.btn-app>.glyphicon,.btn-app>.ion{font-size:20px;display:block} .btn-app:hover{background:#f4f4f4;color:#444;border-color:#aaa} .btn-app:active,.btn-app:focus{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)} .btn-app>.badge{position:absolute;top:-3px;right:-10px;font-size:10px;font-weight:400} .callout{border-radius:3px;margin:0 0 20px 0;padding:15px 30px 15px 15px;border-left:5px solid #eee} .callout a{color:#fff;text-decoration:underline} .callout a:hover{color:#eee} .callout h4{margin-top:0;font-weight:600} .callout p:last-child{margin-bottom:0} .callout code,.callout .highlight{background-color:#fff} .callout.callout-danger{border-color:#c23321} .callout.callout-warning{border-color:#c87f0a} .callout.callout-info{border-color:#0097bc} .callout.callout-success{border-color:#00733e} .alert{border-radius:3px} .alert h4{font-weight:600} .alert .icon{margin-right:10px} .alert .close{color:#000;opacity:.2;filter:alpha(opacity=20)} .alert .close:hover{opacity:.5;filter:alpha(opacity=50)} .alert a{color:#fff;text-decoration:underline} .alert-success{border-color:#008d4c} .alert-danger,.alert-error{border-color:#d73925} .alert-warning{border-color:#e08e0b} .alert-info{border-color:#00acd6} .nav>li>a:hover,.nav>li>a:active,.nav>li>a:focus{color:#444;background:#f7f7f7} .nav-pills>li>a{border-radius:0;border-top:3px solid transparent;color:#444} .nav-pills>li>a>.fa,.nav-pills>li>a>.glyphicon,.nav-pills>li>a>.ion{margin-right:5px} .nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{border-top-color:#3c8dbc} .nav-pills>li.active>a{font-weight:600} .nav-stacked>li>a{border-radius:0;border-top:0;border-left:3px solid transparent;color:#444} .nav-stacked>li.active>a,.nav-stacked>li.active>a:hover{background:transparent;color:#444;border-top:0;border-left-color:#3c8dbc} .nav-stacked>li.header{border-bottom:1px solid #ddd;color:#777;margin-bottom:10px;padding:5px 10px;text-transform:uppercase} .nav-tabs-custom{margin-bottom:20px;background:#fff;box-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px} .nav-tabs-custom>.nav-tabs{margin:0;border-bottom-color:#f4f4f4;border-top-right-radius:3px;border-top-left-radius:3px} .nav-tabs-custom>.nav-tabs>li{border-top:3px solid transparent;margin-bottom:-2px;margin-right:5px} .nav-tabs-custom>.nav-tabs>li>a{color:#444;border-radius:0} .nav-tabs-custom>.nav-tabs>li>a.text-muted{color:#999} .nav-tabs-custom>.nav-tabs>li>a,.nav-tabs-custom>.nav-tabs>li>a:hover{background:transparent;margin:0} .nav-tabs-custom>.nav-tabs>li>a:hover{color:#999} .nav-tabs-custom>.nav-tabs>li:not(.active)>a:hover,.nav-tabs-custom>.nav-tabs>li:not(.active)>a:focus,.nav-tabs-custom>.nav-tabs>li:not(.active)>a:active{border-color:transparent} .nav-tabs-custom>.nav-tabs>li.active{border-top-color:#3c8dbc} .nav-tabs-custom>.nav-tabs>li.active>a,.nav-tabs-custom>.nav-tabs>li.active:hover>a{background-color:#fff;color:#444} .nav-tabs-custom>.nav-tabs>li.active>a{border-top-color:transparent;border-left-color:#f4f4f4;border-right-color:#f4f4f4} .nav-tabs-custom>.nav-tabs>li:first-of-type{margin-left:0} .nav-tabs-custom>.nav-tabs>li:first-of-type.active>a{border-left-color:transparent} .nav-tabs-custom>.nav-tabs.pull-right{float:none !important} .nav-tabs-custom>.nav-tabs.pull-right>li{float:right} .nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type{margin-right:0} .nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type>a{border-left-width:1px} .nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type.active>a{border-left-color:#f4f4f4;border-right-color:transparent} .nav-tabs-custom>.nav-tabs>li.header{line-height:35px;padding:0 10px;font-size:20px;color:#444} .nav-tabs-custom>.nav-tabs>li.header>.fa,.nav-tabs-custom>.nav-tabs>li.header>.glyphicon,.nav-tabs-custom>.nav-tabs>li.header>.ion{margin-right:5px} .nav-tabs-custom>.tab-content{background:#fff;padding:10px;border-bottom-right-radius:3px;border-bottom-left-radius:3px} .nav-tabs-custom .dropdown.open>a:active,.nav-tabs-custom .dropdown.open>a:focus{background:transparent;color:#999} .nav-tabs-custom.tab-primary>.nav-tabs>li.active{border-top-color:#3c8dbc} .nav-tabs-custom.tab-info>.nav-tabs>li.active{border-top-color:#00c0ef} .nav-tabs-custom.tab-danger>.nav-tabs>li.active{border-top-color:#dd4b39} .nav-tabs-custom.tab-warning>.nav-tabs>li.active{border-top-color:#f39c12} .nav-tabs-custom.tab-success>.nav-tabs>li.active{border-top-color:#00a65a} .nav-tabs-custom.tab-default>.nav-tabs>li.active{border-top-color:#d2d6de} .pagination>li>a{background:#fafafa;color:#666} .pagination.pagination-flat>li>a{border-radius:0 !important} .products-list{list-style:none;margin:0;padding:0} .products-list>.item{border-radius:3px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);padding:10px 0;background:#fff} .products-list>.item:before,.products-list>.item:after{content:" ";display:table} .products-list>.item:after{clear:both} .products-list .product-img{float:left} .products-list .product-img img{width:50px;height:50px} .products-list .product-info{margin-left:60px} .products-list .product-title{font-weight:600} .products-list .product-description{display:block;color:#999;overflow:hidden;white-space:nowrap;text-overflow:ellipsis} .product-list-in-box>.item{-webkit-box-shadow:none;box-shadow:none;border-radius:0;border-bottom:1px solid #f4f4f4} .product-list-in-box>.item:last-of-type{border-bottom-width:0} .table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{border-top:1px solid #f4f4f4} .table>thead>tr>th{border-bottom:2px solid #f4f4f4} .table tr td .progress{margin-top:5px} .table-bordered{border:1px solid #f4f4f4} .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 #f4f4f4} .table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px} .table.no-border,.table.no-border td,.table.no-border th{border:0} table.text-center,table.text-center td,table.text-center th{text-align:center} .table.align th{text-align:left} .table.align td{text-align:right} .label-default{background-color:#d2d6de;color:#444} .direct-chat .box-body{border-bottom-right-radius:0;border-bottom-left-radius:0;position:relative;overflow-x:hidden;padding:0} .direct-chat.chat-pane-open .direct-chat-contacts{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)} .direct-chat-messages{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0);padding:10px;height:250px;overflow:auto} .direct-chat-msg,.direct-chat-text{display:block} .direct-chat-msg{margin-bottom:10px} .direct-chat-msg:before,.direct-chat-msg:after{content:" ";display:table} .direct-chat-msg:after{clear:both} .direct-chat-messages,.direct-chat-contacts{-webkit-transition:-webkit-transform .5s ease-in-out;-moz-transition:-moz-transform .5s ease-in-out;-o-transition:-o-transform .5s ease-in-out;transition:transform .5s ease-in-out} .direct-chat-text{border-radius:5px;position:relative;padding:5px 10px;background:#d2d6de;border:1px solid #d2d6de;margin:5px 0 0 50px;color:#444} .direct-chat-text:after,.direct-chat-text:before{position:absolute;right:100%;top:15px;border:solid transparent;border-right-color:#d2d6de;content:' ';height:0;width:0;pointer-events:none} .direct-chat-text:after{border-width:5px;margin-top:-5px} .direct-chat-text:before{border-width:6px;margin-top:-6px} .right .direct-chat-text{margin-right:50px;margin-left:0} .right .direct-chat-text:after,.right .direct-chat-text:before{right:auto;left:100%;border-right-color:transparent;border-left-color:#d2d6de} .direct-chat-img{border-radius:50%;float:left;width:40px;height:40px} .right .direct-chat-img{float:right} .direct-chat-info{display:block;margin-bottom:2px;font-size:12px} .direct-chat-name{font-weight:600} .direct-chat-timestamp{color:#999} .direct-chat-contacts-open .direct-chat-contacts{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)} .direct-chat-contacts{-webkit-transform:translate(101%, 0);-ms-transform:translate(101%, 0);-o-transform:translate(101%, 0);transform:translate(101%, 0);position:absolute;top:0;bottom:0;height:250px;width:100%;background:#222d32;color:#fff;overflow:auto} .contacts-list>li{border-bottom:1px solid rgba(0,0,0,0.2);padding:10px;margin:0} .contacts-list>li:before,.contacts-list>li:after{content:" ";display:table} .contacts-list>li:after{clear:both} .contacts-list>li:last-of-type{border-bottom:none} .contacts-list-img{border-radius:50%;width:40px;float:left} .contacts-list-info{margin-left:45px;color:#fff} .contacts-list-name,.contacts-list-status{display:block} .contacts-list-name{font-weight:600} .contacts-list-status{font-size:12px} .contacts-list-date{color:#aaa;font-weight:normal} .contacts-list-msg{color:#999} .direct-chat-danger .right>.direct-chat-text{background:#dd4b39;border-color:#dd4b39;color:#fff} .direct-chat-danger .right>.direct-chat-text:after,.direct-chat-danger .right>.direct-chat-text:before{border-left-color:#dd4b39} .direct-chat-primary .right>.direct-chat-text{background:#3c8dbc;border-color:#3c8dbc;color:#fff} .direct-chat-primary .right>.direct-chat-text:after,.direct-chat-primary .right>.direct-chat-text:before{border-left-color:#3c8dbc} .direct-chat-warning .right>.direct-chat-text{background:#f39c12;border-color:#f39c12;color:#fff} .direct-chat-warning .right>.direct-chat-text:after,.direct-chat-warning .right>.direct-chat-text:before{border-left-color:#f39c12} .direct-chat-info .right>.direct-chat-text{background:#00c0ef;border-color:#00c0ef;color:#fff} .direct-chat-info .right>.direct-chat-text:after,.direct-chat-info .right>.direct-chat-text:before{border-left-color:#00c0ef} .direct-chat-success .right>.direct-chat-text{background:#00a65a;border-color:#00a65a;color:#fff} .direct-chat-success .right>.direct-chat-text:after,.direct-chat-success .right>.direct-chat-text:before{border-left-color:#00a65a} .users-list>li{width:25%;float:left;padding:10px;text-align:center} .users-list>li img{border-radius:50%;max-width:100%;height:auto} .users-list>li>a:hover,.users-list>li>a:hover .users-list-name{color:#999} .users-list-name,.users-list-date{display:block} .users-list-name{font-weight:600;color:#444;overflow:hidden;white-space:nowrap;text-overflow:ellipsis} .users-list-date{color:#999;font-size:12px} .carousel-control.left,.carousel-control.right{background-image:none} .carousel-control>.fa{font-size:40px;position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-20px} .modal{background:rgba(0,0,0,0.3)} .modal-content{border-radius:0;-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125);border:0}@media (min-width:768px){.modal-content{-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.125);box-shadow:0 2px 3px rgba(0,0,0,0.125)}} .modal-header{border-bottom-color:#f4f4f4} .modal-footer{border-top-color:#f4f4f4} .modal-primary .modal-header,.modal-primary .modal-footer{border-color:#307095} .modal-warning .modal-header,.modal-warning .modal-footer{border-color:#c87f0a} .modal-info .modal-header,.modal-info .modal-footer{border-color:#0097bc} .modal-success .modal-header,.modal-success .modal-footer{border-color:#00733e} .modal-danger .modal-header,.modal-danger .modal-footer{border-color:#c23321} .box-widget{border:none;position:relative} .widget-user .widget-user-header{padding:20px;height:120px;border-top-right-radius:3px;border-top-left-radius:3px} .widget-user .widget-user-username{margin-top:0;margin-bottom:5px;font-size:25px;font-weight:300;text-shadow:0 1px 1px rgba(0,0,0,0.2)} .widget-user .widget-user-desc{margin-top:0} .widget-user .widget-user-image{position:absolute;top:65px;left:50%;margin-left:-45px} .widget-user .widget-user-image>img{width:90px;height:auto;border:3px solid #fff} .widget-user .box-footer{padding-top:30px} .widget-user-2 .widget-user-header{padding:20px;border-top-right-radius:3px;border-top-left-radius:3px} .widget-user-2 .widget-user-username{margin-top:5px;margin-bottom:5px;font-size:25px;font-weight:300} .widget-user-2 .widget-user-desc{margin-top:0} .widget-user-2 .widget-user-username,.widget-user-2 .widget-user-desc{margin-left:75px} .widget-user-2 .widget-user-image>img{width:65px;height:auto;float:left} .mailbox-messages>.table{margin:0} .mailbox-controls{padding:5px} .mailbox-controls.with-border{border-bottom:1px solid #f4f4f4} .mailbox-read-info{border-bottom:1px solid #f4f4f4;padding:10px} .mailbox-read-info h3{font-size:20px;margin:0} .mailbox-read-info h5{margin:0;padding:5px 0 0 0} .mailbox-read-time{color:#999;font-size:13px} .mailbox-read-message{padding:10px} .mailbox-attachments li{float:left;width:200px;border:1px solid #eee;margin-bottom:10px;margin-right:10px} .mailbox-attachment-name{font-weight:bold;color:#666} .mailbox-attachment-icon,.mailbox-attachment-info,.mailbox-attachment-size{display:block} .mailbox-attachment-info{padding:10px;background:#f4f4f4} .mailbox-attachment-size{color:#999;font-size:12px} .mailbox-attachment-icon{text-align:center;font-size:65px;color:#666;padding:20px 10px} .mailbox-attachment-icon.has-img{padding:0} .mailbox-attachment-icon.has-img>img{max-width:100%;height:auto} .lockscreen{background:#d2d6de} .lockscreen-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300} .lockscreen-logo a{color:#444} .lockscreen-wrapper{max-width:400px;margin:0 auto;margin-top:10%} .lockscreen .lockscreen-name{text-align:center;font-weight:600} .lockscreen-item{border-radius:4px;padding:0;background:#fff;position:relative;margin:10px auto 30px auto;width:290px} .lockscreen-image{border-radius:50%;position:absolute;left:-10px;top:-25px;background:#fff;padding:5px;z-index:10} .lockscreen-image>img{border-radius:50%;width:70px;height:70px} .lockscreen-credentials{margin-left:70px} .lockscreen-credentials .form-control{border:0} .lockscreen-credentials .btn{background-color:#fff;border:0;padding:0 10px} .lockscreen-footer{margin-top:10px} .login-logo,.register-logo{font-size:35px;text-align:center;margin-bottom:25px;font-weight:300} .login-logo a,.register-logo a{color:#444} .login-page,.register-page{background:#d2d6de} .login-box,.register-box{width:360px;margin:7% auto}@media (max-width:768px){.login-box,.register-box{width:90%;margin-top:20px}} .login-box-body,.register-box-body{background:#fff;padding:20px;border-top:0;color:#666} .login-box-body .form-control-feedback,.register-box-body .form-control-feedback{color:#777} .login-box-msg,.register-box-msg{margin:0;text-align:center;padding:0 20px 20px 20px} .social-auth-links{margin:10px 0} .error-page{width:600px;margin:20px auto 0 auto}@media (max-width:991px){.error-page{width:100%}} .error-page>.headline{float:left;font-size:100px;font-weight:300}@media (max-width:991px){.error-page>.headline{float:none;text-align:center}} .error-page>.error-content{margin-left:190px;display:block}@media (max-width:991px){.error-page>.error-content{margin-left:0}} .error-page>.error-content>h3{font-weight:300;font-size:25px}@media (max-width:991px){.error-page>.error-content>h3{text-align:center}} .invoice{position:relative;background:#fff;border:1px solid #f4f4f4;padding:20px;margin:10px 25px} .invoice-title{margin-top:0} .profile-user-img{margin:0 auto;width:100px;padding:3px;border:3px solid #d2d6de} .profile-username{font-size:21px;margin-top:5px} .post{border-bottom:1px solid #d2d6de;margin-bottom:15px;padding-bottom:15px;color:#666} .post:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0} .post .user-block{margin-bottom:15px} .btn-social{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .btn-social>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} .btn-social.btn-lg{padding-left:61px} .btn-social.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em} .btn-social.btn-sm{padding-left:38px} .btn-social.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em} .btn-social.btn-xs{padding-left:30px} .btn-social.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em} .btn-social-icon{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px;width:34px;padding:0} .btn-social-icon>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} .btn-social-icon.btn-lg{padding-left:61px} .btn-social-icon.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em} .btn-social-icon.btn-sm{padding-left:38px} .btn-social-icon.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em} .btn-social-icon.btn-xs{padding-left:30px} .btn-social-icon.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em} .btn-social-icon>:first-child{border:none;text-align:center;width:100%} .btn-social-icon.btn-lg{height:45px;width:45px;padding-left:0;padding-right:0} .btn-social-icon.btn-sm{height:30px;width:30px;padding-left:0;padding-right:0} .btn-social-icon.btn-xs{height:22px;width:22px;padding-left:0;padding-right:0} .btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2)} .btn-adn:focus,.btn-adn.focus{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)} .btn-adn:hover{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)} .btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)} .btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{background-image:none} .btn-adn .badge{color:#d87a68;background-color:#fff} .btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2)} .btn-bitbucket:focus,.btn-bitbucket.focus{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)} .btn-bitbucket:hover{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)} .btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)} .btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{background-image:none} .btn-bitbucket .badge{color:#205081;background-color:#fff} .btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2)} .btn-dropbox:focus,.btn-dropbox.focus{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)} .btn-dropbox:hover{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)} .btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)} .btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{background-image:none} .btn-dropbox .badge{color:#1087dd;background-color:#fff} .btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)} .btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)} .btn-facebook:hover{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)} .btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)} .btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{background-image:none} .btn-facebook .badge{color:#3b5998;background-color:#fff} .btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2)} .btn-flickr:focus,.btn-flickr.focus{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)} .btn-flickr:hover{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)} .btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)} .btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{background-image:none} .btn-flickr .badge{color:#ff0084;background-color:#fff} .btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2)} .btn-foursquare:focus,.btn-foursquare.focus{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)} .btn-foursquare:hover{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)} .btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)} .btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{background-image:none} .btn-foursquare .badge{color:#f94877;background-color:#fff} .btn-github{color:#fff;background-color:#444;border-color:rgba(0,0,0,0.2)} .btn-github:focus,.btn-github.focus{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)} .btn-github:hover{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)} .btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)} .btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{background-image:none} .btn-github .badge{color:#444;background-color:#fff} .btn-google{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2)} .btn-google:focus,.btn-google.focus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)} .btn-google:hover{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)} .btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)} .btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{background-image:none} .btn-google .badge{color:#dd4b39;background-color:#fff} .btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2)} .btn-instagram:focus,.btn-instagram.focus{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)} .btn-instagram:hover{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)} .btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)} .btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{background-image:none} .btn-instagram .badge{color:#3f729b;background-color:#fff} .btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2)} .btn-linkedin:focus,.btn-linkedin.focus{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)} .btn-linkedin:hover{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)} .btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)} .btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{background-image:none} .btn-linkedin .badge{color:#007bb6;background-color:#fff} .btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2)} .btn-microsoft:focus,.btn-microsoft.focus{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)} .btn-microsoft:hover{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)} .btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)} .btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{background-image:none} .btn-microsoft .badge{color:#2672ec;background-color:#fff} .btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2)} .btn-openid:focus,.btn-openid.focus{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)} .btn-openid:hover{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)} .btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)} .btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{background-image:none} .btn-openid .badge{color:#f7931e;background-color:#fff} .btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2)} .btn-pinterest:focus,.btn-pinterest.focus{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)} .btn-pinterest:hover{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)} .btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)} .btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{background-image:none} .btn-pinterest .badge{color:#cb2027;background-color:#fff} .btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2)} .btn-reddit:focus,.btn-reddit.focus{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)} .btn-reddit:hover{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)} .btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)} .btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{background-image:none} .btn-reddit .badge{color:#eff7ff;background-color:#000} .btn-soundcloud{color:#fff;background-color:#f50;border-color:rgba(0,0,0,0.2)} .btn-soundcloud:focus,.btn-soundcloud.focus{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)} .btn-soundcloud:hover{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)} .btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)} .btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{background-image:none} .btn-soundcloud .badge{color:#f50;background-color:#fff} .btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2)} .btn-tumblr:focus,.btn-tumblr.focus{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)} .btn-tumblr:hover{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)} .btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)} .btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{background-image:none} .btn-tumblr .badge{color:#2c4762;background-color:#fff} .btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2)} .btn-twitter:focus,.btn-twitter.focus{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)} .btn-twitter:hover{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)} .btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)} .btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{background-image:none} .btn-twitter .badge{color:#55acee;background-color:#fff} .btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)} .btn-vimeo:focus,.btn-vimeo.focus{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)} .btn-vimeo:hover{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)} .btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)} .btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{background-image:none} .btn-vimeo .badge{color:#1ab7ea;background-color:#fff} .btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2)} .btn-vk:focus,.btn-vk.focus{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)} .btn-vk:hover{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)} .btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)} .btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{background-image:none} .btn-vk .badge{color:#587ea3;background-color:#fff} .btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2)} .btn-yahoo:focus,.btn-yahoo.focus{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)} .btn-yahoo:hover{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)} .btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)} .btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{background-image:none} .btn-yahoo .badge{color:#720e9e;background-color:#fff} .fc-button{background:#f4f4f4;background-image:none;color:#444;border-color:#ddd;border-bottom-color:#ddd} .fc-button:hover,.fc-button:active,.fc-button.hover{background-color:#e9e9e9} .fc-header-title h2{font-size:15px;line-height:1.6em;color:#666;margin-left:10px} .fc-header-right{padding-right:10px} .fc-header-left{padding-left:10px} .fc-widget-header{background:#fafafa} .fc-grid{width:100%;border:0} .fc-widget-header:first-of-type,.fc-widget-content:first-of-type{border-left:0;border-right:0} .fc-widget-header:last-of-type,.fc-widget-content:last-of-type{border-right:0} .fc-toolbar{padding:10px;margin:0} .fc-day-number{font-size:20px;font-weight:300;padding-right:10px} .fc-color-picker{list-style:none;margin:0;padding:0} .fc-color-picker>li{float:left;font-size:30px;margin-right:5px;line-height:30px} .fc-color-picker>li .fa{-webkit-transition:-webkit-transform linear .3s;-moz-transition:-moz-transform linear .3s;-o-transition:-o-transform linear .3s;transition:transform linear .3s} .fc-color-picker>li .fa:hover{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg)} #add-new-event{-webkit-transition:all linear .3s;-o-transition:all linear .3s;transition:all linear .3s} .external-event{padding:5px 10px;font-weight:bold;margin-bottom:4px;box-shadow:0 1px 1px rgba(0,0,0,0.1);text-shadow:0 1px 1px rgba(0,0,0,0.1);border-radius:3px;cursor:move} .external-event:hover{box-shadow:inset 0 0 90px rgba(0,0,0,0.2)} .select2-container--default.select2-container--focus,.select2-selection.select2-container--focus,.select2-container--default:focus,.select2-selection:focus,.select2-container--default:active,.select2-selection:active{outline:none} .select2-container--default .select2-selection--single,.select2-selection .select2-selection--single{border:1px solid #d2d6de;border-radius:0;padding:6px 12px;height:34px} .select2-container--default.select2-container--open{border-color:#3c8dbc} .select2-dropdown{border:1px solid #d2d6de;border-radius:0} .select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#3c8dbc;color:white} .select2-results__option{padding:6px 12px;user-select:none;-webkit-user-select:none} .select2-container .select2-selection--single .select2-selection__rendered{padding-left:0;padding-right:0;height:auto;margin-top:-4px} .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:6px;padding-left:20px} .select2-container--default .select2-selection--single .select2-selection__arrow{height:28px;right:3px} .select2-container--default .select2-selection--single .select2-selection__arrow b{margin-top:0} .select2-dropdown .select2-search__field,.select2-search--inline .select2-search__field{border:1px solid #d2d6de} .select2-dropdown .select2-search__field:focus,.select2-search--inline .select2-search__field:focus{outline:none;border:1px solid #3c8dbc} .select2-container--default .select2-results__option[aria-disabled=true]{color:#999} .select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd} .select2-container--default .select2-results__option[aria-selected=true],.select2-container--default .select2-results__option[aria-selected=true]:hover{color:#444} .select2-container--default .select2-selection--multiple{border:1px solid #d2d6de;border-radius:0} .select2-container--default .select2-selection--multiple:focus{border-color:#3c8dbc} .select2-container--default.select2-container--focus .select2-selection--multiple{border-color:#d2d6de} .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#3c8dbc;border-color:#367fa9;padding:1px 10px;color:#fff} .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:5px;color:rgba(255,255,255,0.7)} .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#fff} .select2-container .select2-selection--single .select2-selection__rendered{padding-right:10px} .pad{padding:10px} .margin{margin:10px} .margin-bottom{margin-bottom:20px} .margin-bottom-none{margin-bottom:0} .margin-r-5{margin-right:5px} .inline{display:inline} .description-block{display:block;margin:10px 0;text-align:center} .description-block.margin-bottom{margin-bottom:25px} .description-block>.description-header{margin:0;padding:0;font-weight:600;font-size:16px} .description-block>.description-text{text-transform:uppercase} .bg-red,.bg-yellow,.bg-aqua,.bg-blue,.bg-light-blue,.bg-green,.bg-navy,.bg-teal,.bg-olive,.bg-lime,.bg-orange,.bg-fuchsia,.bg-purple,.bg-maroon,.bg-black,.bg-red-active,.bg-yellow-active,.bg-aqua-active,.bg-blue-active,.bg-light-blue-active,.bg-green-active,.bg-navy-active,.bg-teal-active,.bg-olive-active,.bg-lime-active,.bg-orange-active,.bg-fuchsia-active,.bg-purple-active,.bg-maroon-active,.bg-black-active,.callout.callout-danger,.callout.callout-warning,.callout.callout-info,.callout.callout-success,.alert-success,.alert-danger,.alert-error,.alert-warning,.alert-info,.label-danger,.label-info,.label-warning,.label-primary,.label-success,.modal-primary .modal-body,.modal-primary .modal-header,.modal-primary .modal-footer,.modal-warning .modal-body,.modal-warning .modal-header,.modal-warning .modal-footer,.modal-info .modal-body,.modal-info .modal-header,.modal-info .modal-footer,.modal-success .modal-body,.modal-success .modal-header,.modal-success .modal-footer,.modal-danger .modal-body,.modal-danger .modal-header,.modal-danger .modal-footer{color:#fff !important} .bg-gray{color:#000;background-color:#d2d6de !important} .bg-gray-light{background-color:#f7f7f7} .bg-black{background-color:#111 !important} .bg-red,.callout.callout-danger,.alert-danger,.alert-error,.label-danger,.modal-danger .modal-body{background-color:#dd4b39 !important} .bg-yellow,.callout.callout-warning,.alert-warning,.label-warning,.modal-warning .modal-body{background-color:#f39c12 !important} .bg-aqua,.callout.callout-info,.alert-info,.label-info,.modal-info .modal-body{background-color:#00c0ef !important} .bg-blue{background-color:#0073b7 !important} .bg-light-blue,.label-primary,.modal-primary .modal-body{background-color:#3c8dbc !important} .bg-green,.callout.callout-success,.alert-success,.label-success,.modal-success .modal-body{background-color:#00a65a !important} .bg-navy{background-color:#001f3f !important} .bg-teal{background-color:#39cccc !important} .bg-olive{background-color:#3d9970 !important} .bg-lime{background-color:#01ff70 !important} .bg-orange{background-color:#ff851b !important} .bg-fuchsia{background-color:#f012be !important} .bg-purple{background-color:#605ca8 !important} .bg-maroon{background-color:#d81b60 !important} .bg-gray-active{color:#000;background-color:#b5bbc8 !important} .bg-black-active{background-color:#000 !important} .bg-red-active,.modal-danger .modal-header,.modal-danger .modal-footer{background-color:#d33724 !important} .bg-yellow-active,.modal-warning .modal-header,.modal-warning .modal-footer{background-color:#db8b0b !important} .bg-aqua-active,.modal-info .modal-header,.modal-info .modal-footer{background-color:#00a7d0 !important} .bg-blue-active{background-color:#005384 !important} .bg-light-blue-active,.modal-primary .modal-header,.modal-primary .modal-footer{background-color:#357ca5 !important} .bg-green-active,.modal-success .modal-header,.modal-success .modal-footer{background-color:#008d4c !important} .bg-navy-active{background-color:#001a35 !important} .bg-teal-active{background-color:#30bbbb !important} .bg-olive-active{background-color:#368763 !important} .bg-lime-active{background-color:#00e765 !important} .bg-orange-active{background-color:#ff7701 !important} .bg-fuchsia-active{background-color:#db0ead !important} .bg-purple-active{background-color:#555299 !important} .bg-maroon-active{background-color:#ca195a !important} [class^="bg-"].disabled{opacity:.65;filter:alpha(opacity=65)} .text-red{color:#dd4b39 !important} .text-yellow{color:#f39c12 !important} .text-aqua{color:#00c0ef !important} .text-blue{color:#0073b7 !important} .text-black{color:#111 !important} .text-light-blue{color:#3c8dbc !important} .text-green{color:#00a65a !important} .text-gray{color:#d2d6de !important} .text-navy{color:#001f3f !important} .text-teal{color:#39cccc !important} .text-olive{color:#3d9970 !important} .text-lime{color:#01ff70 !important} .text-orange{color:#ff851b !important} .text-fuchsia{color:#f012be !important} .text-purple{color:#605ca8 !important} .text-maroon{color:#d81b60 !important} .link-muted{color:#7a869d} .link-muted:hover,.link-muted:focus{color:#606c84} .link-black{color:#666} .link-black:hover,.link-black:focus{color:#999} .hide{display:none !important} .no-border{border:0 !important} .no-padding{padding:0 !important} .no-margin{margin:0 !important} .no-shadow{box-shadow:none !important} .list-unstyled,.chart-legend,.contacts-list,.users-list,.mailbox-attachments{list-style:none;margin:0;padding:0} .list-group-unbordered>.list-group-item{border-left:0;border-right:0;border-radius:0;padding-left:0;padding-right:0} .flat{border-radius:0 !important} .text-bold,.text-bold.table td,.text-bold.table th{font-weight:700} .text-sm{font-size:12px} .jqstooltip{padding:5px !important;width:auto !important;height:auto !important} .bg-teal-gradient{background:#39cccc !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #39cccc), color-stop(1, #7adddd)) !important;background:-ms-linear-gradient(bottom, #39cccc, #7adddd) !important;background:-moz-linear-gradient(center bottom, #39cccc 0, #7adddd 100%) !important;background:-o-linear-gradient(#7adddd, #39cccc) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39cccc', GradientType=0) !important;color:#fff} .bg-light-blue-gradient{background:#3c8dbc !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #3c8dbc), color-stop(1, #67a8ce)) !important;background:-ms-linear-gradient(bottom, #3c8dbc, #67a8ce) !important;background:-moz-linear-gradient(center bottom, #3c8dbc 0, #67a8ce 100%) !important;background:-o-linear-gradient(#67a8ce, #3c8dbc) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce', endColorstr='#3c8dbc', GradientType=0) !important;color:#fff} .bg-blue-gradient{background:#0073b7 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #0073b7), color-stop(1, #0089db)) !important;background:-ms-linear-gradient(bottom, #0073b7, #0089db) !important;background:-moz-linear-gradient(center bottom, #0073b7 0, #0089db 100%) !important;background:-o-linear-gradient(#0089db, #0073b7) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db', endColorstr='#0073b7', GradientType=0) !important;color:#fff} .bg-aqua-gradient{background:#00c0ef !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #00c0ef), color-stop(1, #14d1ff)) !important;background:-ms-linear-gradient(bottom, #00c0ef, #14d1ff) !important;background:-moz-linear-gradient(center bottom, #00c0ef 0, #14d1ff 100%) !important;background:-o-linear-gradient(#14d1ff, #00c0ef) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#14d1ff', endColorstr='#00c0ef', GradientType=0) !important;color:#fff} .bg-yellow-gradient{background:#f39c12 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important;background:-ms-linear-gradient(bottom, #f39c12, #f7bc60) !important;background:-moz-linear-gradient(center bottom, #f39c12 0, #f7bc60 100%) !important;background:-o-linear-gradient(#f7bc60, #f39c12) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important;color:#fff} .bg-purple-gradient{background:#605ca8 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #605ca8), color-stop(1, #9491c4)) !important;background:-ms-linear-gradient(bottom, #605ca8, #9491c4) !important;background:-moz-linear-gradient(center bottom, #605ca8 0, #9491c4 100%) !important;background:-o-linear-gradient(#9491c4, #605ca8) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4', endColorstr='#605ca8', GradientType=0) !important;color:#fff} .bg-green-gradient{background:#00a65a !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #00a65a), color-stop(1, #00ca6d)) !important;background:-ms-linear-gradient(bottom, #00a65a, #00ca6d) !important;background:-moz-linear-gradient(center bottom, #00a65a 0, #00ca6d 100%) !important;background:-o-linear-gradient(#00ca6d, #00a65a) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ca6d', endColorstr='#00a65a', GradientType=0) !important;color:#fff} .bg-red-gradient{background:#dd4b39 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #dd4b39), color-stop(1, #e47365)) !important;background:-ms-linear-gradient(bottom, #dd4b39, #e47365) !important;background:-moz-linear-gradient(center bottom, #dd4b39 0, #e47365 100%) !important;background:-o-linear-gradient(#e47365, #dd4b39) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e47365', endColorstr='#dd4b39', GradientType=0) !important;color:#fff} .bg-black-gradient{background:#111 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #111), color-stop(1, #2b2b2b)) !important;background:-ms-linear-gradient(bottom, #111, #2b2b2b) !important;background:-moz-linear-gradient(center bottom, #111 0, #2b2b2b 100%) !important;background:-o-linear-gradient(#2b2b2b, #111) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b', endColorstr='#111111', GradientType=0) !important;color:#fff} .bg-maroon-gradient{background:#d81b60 !important;background:-webkit-gradient(linear, left bottom, left top, color-stop(0, #d81b60), color-stop(1, #e73f7c)) !important;background:-ms-linear-gradient(bottom, #d81b60, #e73f7c) !important;background:-moz-linear-gradient(center bottom, #d81b60 0, #e73f7c 100%) !important;background:-o-linear-gradient(#e73f7c, #d81b60) !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c', endColorstr='#d81b60', GradientType=0) !important;color:#fff} .description-block .description-icon{font-size:16px} .no-pad-top{padding-top:0} .position-static{position:static !important} .list-header{font-size:15px;padding:10px 4px;font-weight:bold;color:#666} .list-seperator{height:1px;background:#f4f4f4;margin:15px 0 9px 0} .list-link>a{padding:4px;color:#777} .list-link>a:hover{color:#222} .font-light{font-weight:300} .user-block:before,.user-block:after{content:" ";display:table} .user-block:after{clear:both} .user-block img{width:40px;height:40px;float:left} .user-block .username,.user-block .description,.user-block .comment{display:block;margin-left:50px} .user-block .username{font-size:16px;font-weight:600} .user-block .description{color:#999;font-size:13px} .user-block.user-block-sm .username,.user-block.user-block-sm .description,.user-block.user-block-sm .comment{margin-left:40px} .user-block.user-block-sm .username{font-size:14px} .img-sm,.img-md,.img-lg,.box-comments .box-comment img,.user-block.user-block-sm img{float:left} .img-sm,.box-comments .box-comment img,.user-block.user-block-sm img{width:30px !important;height:30px !important} .img-sm+.img-push{margin-left:40px} .img-md{width:60px;height:60px} .img-md+.img-push{margin-left:70px} .img-lg{width:100px;height:100px} .img-lg+.img-push{margin-left:110px} .img-bordered{border:3px solid #d2d6de;padding:3px} .img-bordered-sm{border:2px solid #d2d6de;padding:2px} .attachment-block{border:1px solid #f4f4f4;padding:5px;margin-bottom:10px;background:#f7f7f7} .attachment-block .attachment-img{max-width:100px;max-height:100px;height:auto;float:left} .attachment-block .attachment-pushed{margin-left:110px} .attachment-block .attachment-heading{margin:0} .attachment-block .attachment-text{color:#555} .connectedSortable{min-height:100px} .ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px} .sort-highlight{background:#f4f4f4;border:1px dashed #ddd;margin-bottom:10px} .full-opacity-hover{opacity:.65;filter:alpha(opacity=65)} .full-opacity-hover:hover{opacity:1;filter:alpha(opacity=100)} .chart{position:relative;overflow:hidden;width:100%} .chart svg,.chart canvas{width:100% !important}@media print{.no-print,.main-sidebar,.left-side,.main-header,.content-header{display:none !important}.content-wrapper,.right-side,.main-footer{margin-left:0 !important;min-height:0 !important;-webkit-transform:translate(0, 0) !important;-ms-transform:translate(0, 0) !important;-o-transform:translate(0, 0) !important;transform:translate(0, 0) !important}.fixed .content-wrapper,.fixed .right-side{padding-top:0 !important}.invoice{width:100%;border:0;margin:0;padding:0}.invoice-col{float:left;width:33.3333333%}.table-responsive{overflow:auto}.table-responsive>.table tr th,.table-responsive>.table tr td{white-space:normal !important}} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/css/skins/_all-skins.min.css b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/_all-skins.min.css new file mode 100644 index 0000000..1710db5 --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/_all-skins.min.css @@ -0,0 +1 @@ +.skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav .open>a:focus,.skin-blue .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent}.skin-blue .main-header .logo:hover{background-color:#357ca5}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:transparent}.skin-blue .wrapper,.skin-blue .main-sidebar,.skin-blue .left-side{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li:hover>a,.skin-blue .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#3c8dbc}.skin-blue .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .treeview-menu>li>a{color:#8aa4af}.skin-blue .treeview-menu>li.active>a,.skin-blue .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-blue .sidebar-form input[type="text"],.skin-blue .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue .sidebar-form input[type="text"]:focus,.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header .navbar{background-color:#3c8dbc}.skin-blue-light .main-header .navbar .nav>li>a{color:#fff}.skin-blue-light .main-header .navbar .nav>li>a:hover,.skin-blue-light .main-header .navbar .nav>li>a:active,.skin-blue-light .main-header .navbar .nav>li>a:focus,.skin-blue-light .main-header .navbar .nav .open>a,.skin-blue-light .main-header .navbar .nav .open>a:hover,.skin-blue-light .main-header .navbar .nav .open>a:focus,.skin-blue-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue-light .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue-light .main-header .logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue-light .main-header .logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header li.user-header{background-color:#3c8dbc}.skin-blue-light .content-header{background:transparent}.skin-blue-light .wrapper,.skin-blue-light .main-sidebar,.skin-blue-light .left-side{background-color:#f9fafc}.skin-blue-light .content-wrapper,.skin-blue-light .main-footer{border-left:1px solid #d2d6de}.skin-blue-light .user-panel>.info,.skin-blue-light .user-panel>.info>a{color:#444}.skin-blue-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-blue-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-blue-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-blue-light .sidebar-menu>li:hover>a,.skin-blue-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-blue-light .sidebar-menu>li.active{border-left-color:#3c8dbc}.skin-blue-light .sidebar-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-blue-light .sidebar a{color:#444}.skin-blue-light .sidebar a:hover{text-decoration:none}.skin-blue-light .treeview-menu>li>a{color:#777}.skin-blue-light .treeview-menu>li.active>a,.skin-blue-light .treeview-menu>li>a:hover{color:#000}.skin-blue-light .treeview-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-blue-light .sidebar-form input[type="text"],.skin-blue-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue-light .sidebar-form input[type="text"]:focus,.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-blue-light .main-footer{border-top-color:#d2d6de}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}.skin-black .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black .main-header .navbar-toggle{color:#333}.skin-black .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black .main-header>.navbar{background-color:#fff}.skin-black .main-header>.navbar .nav>li>a{color:#333}.skin-black .main-header>.navbar .nav>li>a:hover,.skin-black .main-header>.navbar .nav>li>a:active,.skin-black .main-header>.navbar .nav>li>a:focus,.skin-black .main-header>.navbar .nav .open>a,.skin-black .main-header>.navbar .nav .open>a:hover,.skin-black .main-header>.navbar .nav .open>a:focus,.skin-black .main-header>.navbar .nav>.active>a{background:#fff;color:#999}.skin-black .main-header>.navbar .sidebar-toggle{color:#333}.skin-black .main-header>.navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black .main-header>.navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black .main-header>.navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black .main-header>.navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black .main-header>.navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black .main-header li.user-header{background-color:#222}.skin-black .content-header{background:transparent;box-shadow:none}.skin-black .wrapper,.skin-black .main-sidebar,.skin-black .left-side{background-color:#222d32}.skin-black .user-panel>.info,.skin-black .user-panel>.info>a{color:#fff}.skin-black .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-black .sidebar-menu>li>a{border-left:3px solid transparent}.skin-black .sidebar-menu>li:hover>a,.skin-black .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#fff}.skin-black .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-black .sidebar a{color:#b8c7ce}.skin-black .sidebar a:hover{text-decoration:none}.skin-black .treeview-menu>li>a{color:#8aa4af}.skin-black .treeview-menu>li.active>a,.skin-black .treeview-menu>li>a:hover{color:#fff}.skin-black .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-black .sidebar-form input[type="text"],.skin-black .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-black .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black .sidebar-form input[type="text"]:focus,.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-black-light .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black-light .main-header .navbar-toggle{color:#333}.skin-black-light .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black-light .main-header>.navbar{background-color:#fff}.skin-black-light .main-header>.navbar .nav>li>a{color:#333}.skin-black-light .main-header>.navbar .nav>li>a:hover,.skin-black-light .main-header>.navbar .nav>li>a:active,.skin-black-light .main-header>.navbar .nav>li>a:focus,.skin-black-light .main-header>.navbar .nav .open>a,.skin-black-light .main-header>.navbar .nav .open>a:hover,.skin-black-light .main-header>.navbar .nav .open>a:focus,.skin-black-light .main-header>.navbar .nav>.active>a{background:#fff;color:#999}.skin-black-light .main-header>.navbar .sidebar-toggle{color:#333}.skin-black-light .main-header>.navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black-light .main-header>.navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black-light .main-header>.navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black-light .main-header>.navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black-light .main-header>.navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black-light .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black-light .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black-light .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black-light .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black-light .main-header li.user-header{background-color:#222}.skin-black-light .content-header{background:transparent;box-shadow:none}.skin-black-light .wrapper,.skin-black-light .main-sidebar,.skin-black-light .left-side{background-color:#f9fafc}.skin-black-light .content-wrapper,.skin-black-light .main-footer{border-left:1px solid #d2d6de}.skin-black-light .user-panel>.info,.skin-black-light .user-panel>.info>a{color:#444}.skin-black-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-black-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-black-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-black-light .sidebar-menu>li:hover>a,.skin-black-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-black-light .sidebar-menu>li.active{border-left-color:#fff}.skin-black-light .sidebar-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-black-light .sidebar a{color:#444}.skin-black-light .sidebar a:hover{text-decoration:none}.skin-black-light .treeview-menu>li>a{color:#777}.skin-black-light .treeview-menu>li.active>a,.skin-black-light .treeview-menu>li>a:hover{color:#000}.skin-black-light .treeview-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-black-light .sidebar-form input[type="text"],.skin-black-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-black-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black-light .sidebar-form input[type="text"]:focus,.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-green .main-header .navbar{background-color:#00a65a}.skin-green .main-header .navbar .nav>li>a{color:#fff}.skin-green .main-header .navbar .nav>li>a:hover,.skin-green .main-header .navbar .nav>li>a:active,.skin-green .main-header .navbar .nav>li>a:focus,.skin-green .main-header .navbar .nav .open>a,.skin-green .main-header .navbar .nav .open>a:hover,.skin-green .main-header .navbar .nav .open>a:focus,.skin-green .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green .main-header .logo{background-color:#008d4c;color:#fff;border-bottom:0 solid transparent}.skin-green .main-header .logo:hover{background-color:#008749}.skin-green .main-header li.user-header{background-color:#00a65a}.skin-green .content-header{background:transparent}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32}.skin-green .user-panel>.info,.skin-green .user-panel>.info>a{color:#fff}.skin-green .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-green .sidebar-menu>li>a{border-left:3px solid transparent}.skin-green .sidebar-menu>li:hover>a,.skin-green .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#00a65a}.skin-green .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-green .sidebar a{color:#b8c7ce}.skin-green .sidebar a:hover{text-decoration:none}.skin-green .treeview-menu>li>a{color:#8aa4af}.skin-green .treeview-menu>li.active>a,.skin-green .treeview-menu>li>a:hover{color:#fff}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-green-light .main-header .navbar{background-color:#00a65a}.skin-green-light .main-header .navbar .nav>li>a{color:#fff}.skin-green-light .main-header .navbar .nav>li>a:hover,.skin-green-light .main-header .navbar .nav>li>a:active,.skin-green-light .main-header .navbar .nav>li>a:focus,.skin-green-light .main-header .navbar .nav .open>a,.skin-green-light .main-header .navbar .nav .open>a:hover,.skin-green-light .main-header .navbar .nav .open>a:focus,.skin-green-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green-light .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green-light .main-header .logo{background-color:#00a65a;color:#fff;border-bottom:0 solid transparent}.skin-green-light .main-header .logo:hover{background-color:#00a157}.skin-green-light .main-header li.user-header{background-color:#00a65a}.skin-green-light .content-header{background:transparent}.skin-green-light .wrapper,.skin-green-light .main-sidebar,.skin-green-light .left-side{background-color:#f9fafc}.skin-green-light .content-wrapper,.skin-green-light .main-footer{border-left:1px solid #d2d6de}.skin-green-light .user-panel>.info,.skin-green-light .user-panel>.info>a{color:#444}.skin-green-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-green-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-green-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-green-light .sidebar-menu>li:hover>a,.skin-green-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-green-light .sidebar-menu>li.active{border-left-color:#00a65a}.skin-green-light .sidebar-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-green-light .sidebar a{color:#444}.skin-green-light .sidebar a:hover{text-decoration:none}.skin-green-light .treeview-menu>li>a{color:#777}.skin-green-light .treeview-menu>li.active>a,.skin-green-light .treeview-menu>li>a:hover{color:#000}.skin-green-light .treeview-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-green-light .sidebar-form input[type="text"],.skin-green-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-green-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green-light .sidebar-form input[type="text"]:focus,.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-red .main-header .navbar{background-color:#dd4b39}.skin-red .main-header .navbar .nav>li>a{color:#fff}.skin-red .main-header .navbar .nav>li>a:hover,.skin-red .main-header .navbar .nav>li>a:active,.skin-red .main-header .navbar .nav>li>a:focus,.skin-red .main-header .navbar .nav .open>a,.skin-red .main-header .navbar .nav .open>a:hover,.skin-red .main-header .navbar .nav .open>a:focus,.skin-red .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red .main-header .logo{background-color:#d73925;color:#fff;border-bottom:0 solid transparent}.skin-red .main-header .logo:hover{background-color:#d33724}.skin-red .main-header li.user-header{background-color:#dd4b39}.skin-red .content-header{background:transparent}.skin-red .wrapper,.skin-red .main-sidebar,.skin-red .left-side{background-color:#222d32}.skin-red .user-panel>.info,.skin-red .user-panel>.info>a{color:#fff}.skin-red .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-red .sidebar-menu>li>a{border-left:3px solid transparent}.skin-red .sidebar-menu>li:hover>a,.skin-red .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#dd4b39}.skin-red .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-red .sidebar a{color:#b8c7ce}.skin-red .sidebar a:hover{text-decoration:none}.skin-red .treeview-menu>li>a{color:#8aa4af}.skin-red .treeview-menu>li.active>a,.skin-red .treeview-menu>li>a:hover{color:#fff}.skin-red .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-red .sidebar-form input[type="text"],.skin-red .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-red .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red .sidebar-form input[type="text"]:focus,.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-red-light .main-header .navbar{background-color:#dd4b39}.skin-red-light .main-header .navbar .nav>li>a{color:#fff}.skin-red-light .main-header .navbar .nav>li>a:hover,.skin-red-light .main-header .navbar .nav>li>a:active,.skin-red-light .main-header .navbar .nav>li>a:focus,.skin-red-light .main-header .navbar .nav .open>a,.skin-red-light .main-header .navbar .nav .open>a:hover,.skin-red-light .main-header .navbar .nav .open>a:focus,.skin-red-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red-light .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red-light .main-header .logo{background-color:#dd4b39;color:#fff;border-bottom:0 solid transparent}.skin-red-light .main-header .logo:hover{background-color:#dc4735}.skin-red-light .main-header li.user-header{background-color:#dd4b39}.skin-red-light .content-header{background:transparent}.skin-red-light .wrapper,.skin-red-light .main-sidebar,.skin-red-light .left-side{background-color:#f9fafc}.skin-red-light .content-wrapper,.skin-red-light .main-footer{border-left:1px solid #d2d6de}.skin-red-light .user-panel>.info,.skin-red-light .user-panel>.info>a{color:#444}.skin-red-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-red-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-red-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-red-light .sidebar-menu>li:hover>a,.skin-red-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-red-light .sidebar-menu>li.active{border-left-color:#dd4b39}.skin-red-light .sidebar-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-red-light .sidebar a{color:#444}.skin-red-light .sidebar a:hover{text-decoration:none}.skin-red-light .treeview-menu>li>a{color:#777}.skin-red-light .treeview-menu>li.active>a,.skin-red-light .treeview-menu>li>a:hover{color:#000}.skin-red-light .treeview-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-red-light .sidebar-form input[type="text"],.skin-red-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-red-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red-light .sidebar-form input[type="text"]:focus,.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-yellow .main-header .navbar{background-color:#f39c12}.skin-yellow .main-header .navbar .nav>li>a{color:#fff}.skin-yellow .main-header .navbar .nav>li>a:hover,.skin-yellow .main-header .navbar .nav>li>a:active,.skin-yellow .main-header .navbar .nav>li>a:focus,.skin-yellow .main-header .navbar .nav .open>a,.skin-yellow .main-header .navbar .nav .open>a:hover,.skin-yellow .main-header .navbar .nav .open>a:focus,.skin-yellow .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow .main-header .logo{background-color:#e08e0b;color:#fff;border-bottom:0 solid transparent}.skin-yellow .main-header .logo:hover{background-color:#db8b0b}.skin-yellow .main-header li.user-header{background-color:#f39c12}.skin-yellow .content-header{background:transparent}.skin-yellow .wrapper,.skin-yellow .main-sidebar,.skin-yellow .left-side{background-color:#222d32}.skin-yellow .user-panel>.info,.skin-yellow .user-panel>.info>a{color:#fff}.skin-yellow .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-yellow .sidebar-menu>li>a{border-left:3px solid transparent}.skin-yellow .sidebar-menu>li:hover>a,.skin-yellow .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#f39c12}.skin-yellow .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-yellow .sidebar a{color:#b8c7ce}.skin-yellow .sidebar a:hover{text-decoration:none}.skin-yellow .treeview-menu>li>a{color:#8aa4af}.skin-yellow .treeview-menu>li.active>a,.skin-yellow .treeview-menu>li>a:hover{color:#fff}.skin-yellow .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-yellow .sidebar-form input[type="text"],.skin-yellow .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-yellow .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow .sidebar-form input[type="text"]:focus,.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-yellow-light .main-header .navbar{background-color:#f39c12}.skin-yellow-light .main-header .navbar .nav>li>a{color:#fff}.skin-yellow-light .main-header .navbar .nav>li>a:hover,.skin-yellow-light .main-header .navbar .nav>li>a:active,.skin-yellow-light .main-header .navbar .nav>li>a:focus,.skin-yellow-light .main-header .navbar .nav .open>a,.skin-yellow-light .main-header .navbar .nav .open>a:hover,.skin-yellow-light .main-header .navbar .nav .open>a:focus,.skin-yellow-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow-light .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow-light .main-header .logo{background-color:#f39c12;color:#fff;border-bottom:0 solid transparent}.skin-yellow-light .main-header .logo:hover{background-color:#f39a0d}.skin-yellow-light .main-header li.user-header{background-color:#f39c12}.skin-yellow-light .content-header{background:transparent}.skin-yellow-light .wrapper,.skin-yellow-light .main-sidebar,.skin-yellow-light .left-side{background-color:#f9fafc}.skin-yellow-light .content-wrapper,.skin-yellow-light .main-footer{border-left:1px solid #d2d6de}.skin-yellow-light .user-panel>.info,.skin-yellow-light .user-panel>.info>a{color:#444}.skin-yellow-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-yellow-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-yellow-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-yellow-light .sidebar-menu>li:hover>a,.skin-yellow-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-yellow-light .sidebar-menu>li.active{border-left-color:#f39c12}.skin-yellow-light .sidebar-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-yellow-light .sidebar a{color:#444}.skin-yellow-light .sidebar a:hover{text-decoration:none}.skin-yellow-light .treeview-menu>li>a{color:#777}.skin-yellow-light .treeview-menu>li.active>a,.skin-yellow-light .treeview-menu>li>a:hover{color:#000}.skin-yellow-light .treeview-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-yellow-light .sidebar-form input[type="text"],.skin-yellow-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-yellow-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow-light .sidebar-form input[type="text"]:focus,.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-purple .main-header .navbar{background-color:#605ca8}.skin-purple .main-header .navbar .nav>li>a{color:#fff}.skin-purple .main-header .navbar .nav>li>a:hover,.skin-purple .main-header .navbar .nav>li>a:active,.skin-purple .main-header .navbar .nav>li>a:focus,.skin-purple .main-header .navbar .nav .open>a,.skin-purple .main-header .navbar .nav .open>a:hover,.skin-purple .main-header .navbar .nav .open>a:focus,.skin-purple .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple .main-header .logo{background-color:#555299;color:#fff;border-bottom:0 solid transparent}.skin-purple .main-header .logo:hover{background-color:#545096}.skin-purple .main-header li.user-header{background-color:#605ca8}.skin-purple .content-header{background:transparent}.skin-purple .wrapper,.skin-purple .main-sidebar,.skin-purple .left-side{background-color:#222d32}.skin-purple .user-panel>.info,.skin-purple .user-panel>.info>a{color:#fff}.skin-purple .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-purple .sidebar-menu>li>a{border-left:3px solid transparent}.skin-purple .sidebar-menu>li:hover>a,.skin-purple .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#605ca8}.skin-purple .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-purple .sidebar a{color:#b8c7ce}.skin-purple .sidebar a:hover{text-decoration:none}.skin-purple .treeview-menu>li>a{color:#8aa4af}.skin-purple .treeview-menu>li.active>a,.skin-purple .treeview-menu>li>a:hover{color:#fff}.skin-purple .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-purple .sidebar-form input[type="text"],.skin-purple .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-purple .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple .sidebar-form input[type="text"]:focus,.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-purple-light .main-header .navbar{background-color:#605ca8}.skin-purple-light .main-header .navbar .nav>li>a{color:#fff}.skin-purple-light .main-header .navbar .nav>li>a:hover,.skin-purple-light .main-header .navbar .nav>li>a:active,.skin-purple-light .main-header .navbar .nav>li>a:focus,.skin-purple-light .main-header .navbar .nav .open>a,.skin-purple-light .main-header .navbar .nav .open>a:hover,.skin-purple-light .main-header .navbar .nav .open>a:focus,.skin-purple-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple-light .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple-light .main-header .logo{background-color:#605ca8;color:#fff;border-bottom:0 solid transparent}.skin-purple-light .main-header .logo:hover{background-color:#5d59a6}.skin-purple-light .main-header li.user-header{background-color:#605ca8}.skin-purple-light .content-header{background:transparent}.skin-purple-light .wrapper,.skin-purple-light .main-sidebar,.skin-purple-light .left-side{background-color:#f9fafc}.skin-purple-light .content-wrapper,.skin-purple-light .main-footer{border-left:1px solid #d2d6de}.skin-purple-light .user-panel>.info,.skin-purple-light .user-panel>.info>a{color:#444}.skin-purple-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-purple-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-purple-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-purple-light .sidebar-menu>li:hover>a,.skin-purple-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-purple-light .sidebar-menu>li.active{border-left-color:#605ca8}.skin-purple-light .sidebar-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-purple-light .sidebar a{color:#444}.skin-purple-light .sidebar a:hover{text-decoration:none}.skin-purple-light .treeview-menu>li>a{color:#777}.skin-purple-light .treeview-menu>li.active>a,.skin-purple-light .treeview-menu>li>a:hover{color:#000}.skin-purple-light .treeview-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-purple-light .sidebar-form input[type="text"],.skin-purple-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-purple-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple-light .sidebar-form input[type="text"]:focus,.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-black-light.min.css b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-black-light.min.css new file mode 100644 index 0000000..c631ec5 --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-black-light.min.css @@ -0,0 +1 @@ +.skin-black-light .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black-light .main-header .navbar-toggle{color:#333}.skin-black-light .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black-light .main-header>.navbar{background-color:#fff}.skin-black-light .main-header>.navbar .nav>li>a{color:#333}.skin-black-light .main-header>.navbar .nav>li>a:hover,.skin-black-light .main-header>.navbar .nav>li>a:active,.skin-black-light .main-header>.navbar .nav>li>a:focus,.skin-black-light .main-header>.navbar .nav .open>a,.skin-black-light .main-header>.navbar .nav .open>a:hover,.skin-black-light .main-header>.navbar .nav .open>a:focus,.skin-black-light .main-header>.navbar .nav>.active>a{background:#fff;color:#999}.skin-black-light .main-header>.navbar .sidebar-toggle{color:#333}.skin-black-light .main-header>.navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black-light .main-header>.navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black-light .main-header>.navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black-light .main-header>.navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black-light .main-header>.navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black-light .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black-light .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black-light .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black-light .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black-light .main-header li.user-header{background-color:#222}.skin-black-light .content-header{background:transparent;box-shadow:none}.skin-black-light .wrapper,.skin-black-light .main-sidebar,.skin-black-light .left-side{background-color:#f9fafc}.skin-black-light .content-wrapper,.skin-black-light .main-footer{border-left:1px solid #d2d6de}.skin-black-light .user-panel>.info,.skin-black-light .user-panel>.info>a{color:#444}.skin-black-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-black-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-black-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-black-light .sidebar-menu>li:hover>a,.skin-black-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-black-light .sidebar-menu>li.active{border-left-color:#fff}.skin-black-light .sidebar-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-black-light .sidebar a{color:#444}.skin-black-light .sidebar a:hover{text-decoration:none}.skin-black-light .treeview-menu>li>a{color:#777}.skin-black-light .treeview-menu>li.active>a,.skin-black-light .treeview-menu>li>a:hover{color:#000}.skin-black-light .treeview-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-black-light .sidebar-form input[type="text"],.skin-black-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-black-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black-light .sidebar-form input[type="text"]:focus,.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-black.min.css b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-black.min.css new file mode 100644 index 0000000..a7d1888 --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-black.min.css @@ -0,0 +1 @@ +.skin-black .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black .main-header .navbar-toggle{color:#333}.skin-black .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black .main-header>.navbar{background-color:#fff}.skin-black .main-header>.navbar .nav>li>a{color:#333}.skin-black .main-header>.navbar .nav>li>a:hover,.skin-black .main-header>.navbar .nav>li>a:active,.skin-black .main-header>.navbar .nav>li>a:focus,.skin-black .main-header>.navbar .nav .open>a,.skin-black .main-header>.navbar .nav .open>a:hover,.skin-black .main-header>.navbar .nav .open>a:focus,.skin-black .main-header>.navbar .nav>.active>a{background:#fff;color:#999}.skin-black .main-header>.navbar .sidebar-toggle{color:#333}.skin-black .main-header>.navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black .main-header>.navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black .main-header>.navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black .main-header>.navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black .main-header>.navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black .main-header li.user-header{background-color:#222}.skin-black .content-header{background:transparent;box-shadow:none}.skin-black .wrapper,.skin-black .main-sidebar,.skin-black .left-side{background-color:#222d32}.skin-black .user-panel>.info,.skin-black .user-panel>.info>a{color:#fff}.skin-black .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-black .sidebar-menu>li>a{border-left:3px solid transparent}.skin-black .sidebar-menu>li:hover>a,.skin-black .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#fff}.skin-black .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-black .sidebar a{color:#b8c7ce}.skin-black .sidebar a:hover{text-decoration:none}.skin-black .treeview-menu>li>a{color:#8aa4af}.skin-black .treeview-menu>li.active>a,.skin-black .treeview-menu>li>a:hover{color:#fff}.skin-black .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-black .sidebar-form input[type="text"],.skin-black .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-black .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black .sidebar-form input[type="text"]:focus,.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-blue-light.min.css b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-blue-light.min.css new file mode 100644 index 0000000..4fab22a --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-blue-light.min.css @@ -0,0 +1 @@ +.skin-blue-light .main-header .navbar{background-color:#3c8dbc}.skin-blue-light .main-header .navbar .nav>li>a{color:#fff}.skin-blue-light .main-header .navbar .nav>li>a:hover,.skin-blue-light .main-header .navbar .nav>li>a:active,.skin-blue-light .main-header .navbar .nav>li>a:focus,.skin-blue-light .main-header .navbar .nav .open>a,.skin-blue-light .main-header .navbar .nav .open>a:hover,.skin-blue-light .main-header .navbar .nav .open>a:focus,.skin-blue-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue-light .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue-light .main-header .logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue-light .main-header .logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header li.user-header{background-color:#3c8dbc}.skin-blue-light .content-header{background:transparent}.skin-blue-light .wrapper,.skin-blue-light .main-sidebar,.skin-blue-light .left-side{background-color:#f9fafc}.skin-blue-light .content-wrapper,.skin-blue-light .main-footer{border-left:1px solid #d2d6de}.skin-blue-light .user-panel>.info,.skin-blue-light .user-panel>.info>a{color:#444}.skin-blue-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-blue-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-blue-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-blue-light .sidebar-menu>li:hover>a,.skin-blue-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-blue-light .sidebar-menu>li.active{border-left-color:#3c8dbc}.skin-blue-light .sidebar-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-blue-light .sidebar a{color:#444}.skin-blue-light .sidebar a:hover{text-decoration:none}.skin-blue-light .treeview-menu>li>a{color:#777}.skin-blue-light .treeview-menu>li.active>a,.skin-blue-light .treeview-menu>li>a:hover{color:#000}.skin-blue-light .treeview-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-blue-light .sidebar-form input[type="text"],.skin-blue-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue-light .sidebar-form input[type="text"]:focus,.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-blue-light .main-footer{border-top-color:#d2d6de}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-blue.min.css b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-blue.min.css new file mode 100644 index 0000000..123c04f --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-blue.min.css @@ -0,0 +1 @@ +.skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav .open>a:focus,.skin-blue .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent}.skin-blue .main-header .logo:hover{background-color:#357ca5}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:transparent}.skin-blue .wrapper,.skin-blue .main-sidebar,.skin-blue .left-side{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li:hover>a,.skin-blue .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#3c8dbc}.skin-blue .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .treeview-menu>li>a{color:#8aa4af}.skin-blue .treeview-menu>li.active>a,.skin-blue .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-blue .sidebar-form input[type="text"],.skin-blue .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue .sidebar-form input[type="text"]:focus,.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-green-light.min.css b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-green-light.min.css new file mode 100644 index 0000000..43ceea4 --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-green-light.min.css @@ -0,0 +1 @@ +.skin-green-light .main-header .navbar{background-color:#00a65a}.skin-green-light .main-header .navbar .nav>li>a{color:#fff}.skin-green-light .main-header .navbar .nav>li>a:hover,.skin-green-light .main-header .navbar .nav>li>a:active,.skin-green-light .main-header .navbar .nav>li>a:focus,.skin-green-light .main-header .navbar .nav .open>a,.skin-green-light .main-header .navbar .nav .open>a:hover,.skin-green-light .main-header .navbar .nav .open>a:focus,.skin-green-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green-light .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green-light .main-header .logo{background-color:#00a65a;color:#fff;border-bottom:0 solid transparent}.skin-green-light .main-header .logo:hover{background-color:#00a157}.skin-green-light .main-header li.user-header{background-color:#00a65a}.skin-green-light .content-header{background:transparent}.skin-green-light .wrapper,.skin-green-light .main-sidebar,.skin-green-light .left-side{background-color:#f9fafc}.skin-green-light .content-wrapper,.skin-green-light .main-footer{border-left:1px solid #d2d6de}.skin-green-light .user-panel>.info,.skin-green-light .user-panel>.info>a{color:#444}.skin-green-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-green-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-green-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-green-light .sidebar-menu>li:hover>a,.skin-green-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-green-light .sidebar-menu>li.active{border-left-color:#00a65a}.skin-green-light .sidebar-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-green-light .sidebar a{color:#444}.skin-green-light .sidebar a:hover{text-decoration:none}.skin-green-light .treeview-menu>li>a{color:#777}.skin-green-light .treeview-menu>li.active>a,.skin-green-light .treeview-menu>li>a:hover{color:#000}.skin-green-light .treeview-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-green-light .sidebar-form input[type="text"],.skin-green-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-green-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green-light .sidebar-form input[type="text"]:focus,.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-green.min.css b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-green.min.css new file mode 100644 index 0000000..8f885ed --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-green.min.css @@ -0,0 +1 @@ +.skin-green .main-header .navbar{background-color:#00a65a}.skin-green .main-header .navbar .nav>li>a{color:#fff}.skin-green .main-header .navbar .nav>li>a:hover,.skin-green .main-header .navbar .nav>li>a:active,.skin-green .main-header .navbar .nav>li>a:focus,.skin-green .main-header .navbar .nav .open>a,.skin-green .main-header .navbar .nav .open>a:hover,.skin-green .main-header .navbar .nav .open>a:focus,.skin-green .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green .main-header .logo{background-color:#008d4c;color:#fff;border-bottom:0 solid transparent}.skin-green .main-header .logo:hover{background-color:#008749}.skin-green .main-header li.user-header{background-color:#00a65a}.skin-green .content-header{background:transparent}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32}.skin-green .user-panel>.info,.skin-green .user-panel>.info>a{color:#fff}.skin-green .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-green .sidebar-menu>li>a{border-left:3px solid transparent}.skin-green .sidebar-menu>li:hover>a,.skin-green .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#00a65a}.skin-green .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-green .sidebar a{color:#b8c7ce}.skin-green .sidebar a:hover{text-decoration:none}.skin-green .treeview-menu>li>a{color:#8aa4af}.skin-green .treeview-menu>li.active>a,.skin-green .treeview-menu>li>a:hover{color:#fff}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-purple-light.min.css b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-purple-light.min.css new file mode 100644 index 0000000..53333c4 --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-purple-light.min.css @@ -0,0 +1 @@ +.skin-purple-light .main-header .navbar{background-color:#605ca8}.skin-purple-light .main-header .navbar .nav>li>a{color:#fff}.skin-purple-light .main-header .navbar .nav>li>a:hover,.skin-purple-light .main-header .navbar .nav>li>a:active,.skin-purple-light .main-header .navbar .nav>li>a:focus,.skin-purple-light .main-header .navbar .nav .open>a,.skin-purple-light .main-header .navbar .nav .open>a:hover,.skin-purple-light .main-header .navbar .nav .open>a:focus,.skin-purple-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple-light .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple-light .main-header .logo{background-color:#605ca8;color:#fff;border-bottom:0 solid transparent}.skin-purple-light .main-header .logo:hover{background-color:#5d59a6}.skin-purple-light .main-header li.user-header{background-color:#605ca8}.skin-purple-light .content-header{background:transparent}.skin-purple-light .wrapper,.skin-purple-light .main-sidebar,.skin-purple-light .left-side{background-color:#f9fafc}.skin-purple-light .content-wrapper,.skin-purple-light .main-footer{border-left:1px solid #d2d6de}.skin-purple-light .user-panel>.info,.skin-purple-light .user-panel>.info>a{color:#444}.skin-purple-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-purple-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-purple-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-purple-light .sidebar-menu>li:hover>a,.skin-purple-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-purple-light .sidebar-menu>li.active{border-left-color:#605ca8}.skin-purple-light .sidebar-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-purple-light .sidebar a{color:#444}.skin-purple-light .sidebar a:hover{text-decoration:none}.skin-purple-light .treeview-menu>li>a{color:#777}.skin-purple-light .treeview-menu>li.active>a,.skin-purple-light .treeview-menu>li>a:hover{color:#000}.skin-purple-light .treeview-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-purple-light .sidebar-form input[type="text"],.skin-purple-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-purple-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple-light .sidebar-form input[type="text"]:focus,.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-purple.min.css b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-purple.min.css new file mode 100644 index 0000000..1eff3d9 --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-purple.min.css @@ -0,0 +1 @@ +.skin-purple .main-header .navbar{background-color:#605ca8}.skin-purple .main-header .navbar .nav>li>a{color:#fff}.skin-purple .main-header .navbar .nav>li>a:hover,.skin-purple .main-header .navbar .nav>li>a:active,.skin-purple .main-header .navbar .nav>li>a:focus,.skin-purple .main-header .navbar .nav .open>a,.skin-purple .main-header .navbar .nav .open>a:hover,.skin-purple .main-header .navbar .nav .open>a:focus,.skin-purple .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple .main-header .logo{background-color:#555299;color:#fff;border-bottom:0 solid transparent}.skin-purple .main-header .logo:hover{background-color:#545096}.skin-purple .main-header li.user-header{background-color:#605ca8}.skin-purple .content-header{background:transparent}.skin-purple .wrapper,.skin-purple .main-sidebar,.skin-purple .left-side{background-color:#222d32}.skin-purple .user-panel>.info,.skin-purple .user-panel>.info>a{color:#fff}.skin-purple .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-purple .sidebar-menu>li>a{border-left:3px solid transparent}.skin-purple .sidebar-menu>li:hover>a,.skin-purple .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#605ca8}.skin-purple .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-purple .sidebar a{color:#b8c7ce}.skin-purple .sidebar a:hover{text-decoration:none}.skin-purple .treeview-menu>li>a{color:#8aa4af}.skin-purple .treeview-menu>li.active>a,.skin-purple .treeview-menu>li>a:hover{color:#fff}.skin-purple .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-purple .sidebar-form input[type="text"],.skin-purple .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-purple .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple .sidebar-form input[type="text"]:focus,.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-red-light.min.css b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-red-light.min.css new file mode 100644 index 0000000..7ab4c1f --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-red-light.min.css @@ -0,0 +1 @@ +.skin-red-light .main-header .navbar{background-color:#dd4b39}.skin-red-light .main-header .navbar .nav>li>a{color:#fff}.skin-red-light .main-header .navbar .nav>li>a:hover,.skin-red-light .main-header .navbar .nav>li>a:active,.skin-red-light .main-header .navbar .nav>li>a:focus,.skin-red-light .main-header .navbar .nav .open>a,.skin-red-light .main-header .navbar .nav .open>a:hover,.skin-red-light .main-header .navbar .nav .open>a:focus,.skin-red-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red-light .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red-light .main-header .logo{background-color:#dd4b39;color:#fff;border-bottom:0 solid transparent}.skin-red-light .main-header .logo:hover{background-color:#dc4735}.skin-red-light .main-header li.user-header{background-color:#dd4b39}.skin-red-light .content-header{background:transparent}.skin-red-light .wrapper,.skin-red-light .main-sidebar,.skin-red-light .left-side{background-color:#f9fafc}.skin-red-light .content-wrapper,.skin-red-light .main-footer{border-left:1px solid #d2d6de}.skin-red-light .user-panel>.info,.skin-red-light .user-panel>.info>a{color:#444}.skin-red-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-red-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-red-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-red-light .sidebar-menu>li:hover>a,.skin-red-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-red-light .sidebar-menu>li.active{border-left-color:#dd4b39}.skin-red-light .sidebar-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-red-light .sidebar a{color:#444}.skin-red-light .sidebar a:hover{text-decoration:none}.skin-red-light .treeview-menu>li>a{color:#777}.skin-red-light .treeview-menu>li.active>a,.skin-red-light .treeview-menu>li>a:hover{color:#000}.skin-red-light .treeview-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-red-light .sidebar-form input[type="text"],.skin-red-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-red-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red-light .sidebar-form input[type="text"]:focus,.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-red.min.css b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-red.min.css new file mode 100644 index 0000000..3252b27 --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-red.min.css @@ -0,0 +1 @@ +.skin-red .main-header .navbar{background-color:#dd4b39}.skin-red .main-header .navbar .nav>li>a{color:#fff}.skin-red .main-header .navbar .nav>li>a:hover,.skin-red .main-header .navbar .nav>li>a:active,.skin-red .main-header .navbar .nav>li>a:focus,.skin-red .main-header .navbar .nav .open>a,.skin-red .main-header .navbar .nav .open>a:hover,.skin-red .main-header .navbar .nav .open>a:focus,.skin-red .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red .main-header .logo{background-color:#d73925;color:#fff;border-bottom:0 solid transparent}.skin-red .main-header .logo:hover{background-color:#d33724}.skin-red .main-header li.user-header{background-color:#dd4b39}.skin-red .content-header{background:transparent}.skin-red .wrapper,.skin-red .main-sidebar,.skin-red .left-side{background-color:#222d32}.skin-red .user-panel>.info,.skin-red .user-panel>.info>a{color:#fff}.skin-red .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-red .sidebar-menu>li>a{border-left:3px solid transparent}.skin-red .sidebar-menu>li:hover>a,.skin-red .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#dd4b39}.skin-red .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-red .sidebar a{color:#b8c7ce}.skin-red .sidebar a:hover{text-decoration:none}.skin-red .treeview-menu>li>a{color:#8aa4af}.skin-red .treeview-menu>li.active>a,.skin-red .treeview-menu>li>a:hover{color:#fff}.skin-red .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-red .sidebar-form input[type="text"],.skin-red .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-red .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red .sidebar-form input[type="text"]:focus,.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-yellow-light.min.css b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-yellow-light.min.css new file mode 100644 index 0000000..773b254 --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-yellow-light.min.css @@ -0,0 +1 @@ +.skin-yellow-light .main-header .navbar{background-color:#f39c12}.skin-yellow-light .main-header .navbar .nav>li>a{color:#fff}.skin-yellow-light .main-header .navbar .nav>li>a:hover,.skin-yellow-light .main-header .navbar .nav>li>a:active,.skin-yellow-light .main-header .navbar .nav>li>a:focus,.skin-yellow-light .main-header .navbar .nav .open>a,.skin-yellow-light .main-header .navbar .nav .open>a:hover,.skin-yellow-light .main-header .navbar .nav .open>a:focus,.skin-yellow-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow-light .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow-light .main-header .logo{background-color:#f39c12;color:#fff;border-bottom:0 solid transparent}.skin-yellow-light .main-header .logo:hover{background-color:#f39a0d}.skin-yellow-light .main-header li.user-header{background-color:#f39c12}.skin-yellow-light .content-header{background:transparent}.skin-yellow-light .wrapper,.skin-yellow-light .main-sidebar,.skin-yellow-light .left-side{background-color:#f9fafc}.skin-yellow-light .content-wrapper,.skin-yellow-light .main-footer{border-left:1px solid #d2d6de}.skin-yellow-light .user-panel>.info,.skin-yellow-light .user-panel>.info>a{color:#444}.skin-yellow-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-yellow-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-yellow-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-yellow-light .sidebar-menu>li:hover>a,.skin-yellow-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-yellow-light .sidebar-menu>li.active{border-left-color:#f39c12}.skin-yellow-light .sidebar-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-yellow-light .sidebar a{color:#444}.skin-yellow-light .sidebar a:hover{text-decoration:none}.skin-yellow-light .treeview-menu>li>a{color:#777}.skin-yellow-light .treeview-menu>li.active>a,.skin-yellow-light .treeview-menu>li>a:hover{color:#000}.skin-yellow-light .treeview-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-yellow-light .sidebar-form input[type="text"],.skin-yellow-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-yellow-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow-light .sidebar-form input[type="text"]:focus,.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-yellow.min.css b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-yellow.min.css new file mode 100644 index 0000000..67fc2e2 --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/css/skins/skin-yellow.min.css @@ -0,0 +1 @@ +.skin-yellow .main-header .navbar{background-color:#f39c12}.skin-yellow .main-header .navbar .nav>li>a{color:#fff}.skin-yellow .main-header .navbar .nav>li>a:hover,.skin-yellow .main-header .navbar .nav>li>a:active,.skin-yellow .main-header .navbar .nav>li>a:focus,.skin-yellow .main-header .navbar .nav .open>a,.skin-yellow .main-header .navbar .nav .open>a:hover,.skin-yellow .main-header .navbar .nav .open>a:focus,.skin-yellow .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow .main-header .logo{background-color:#e08e0b;color:#fff;border-bottom:0 solid transparent}.skin-yellow .main-header .logo:hover{background-color:#db8b0b}.skin-yellow .main-header li.user-header{background-color:#f39c12}.skin-yellow .content-header{background:transparent}.skin-yellow .wrapper,.skin-yellow .main-sidebar,.skin-yellow .left-side{background-color:#222d32}.skin-yellow .user-panel>.info,.skin-yellow .user-panel>.info>a{color:#fff}.skin-yellow .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-yellow .sidebar-menu>li>a{border-left:3px solid transparent}.skin-yellow .sidebar-menu>li:hover>a,.skin-yellow .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#f39c12}.skin-yellow .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-yellow .sidebar a{color:#b8c7ce}.skin-yellow .sidebar a:hover{text-decoration:none}.skin-yellow .treeview-menu>li>a{color:#8aa4af}.skin-yellow .treeview-menu>li.active>a,.skin-yellow .treeview-menu>li>a:hover{color:#fff}.skin-yellow .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-yellow .sidebar-form input[type="text"],.skin-yellow .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-yellow .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow .sidebar-form input[type="text"]:focus,.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/dist/img/boxed-bg.jpg b/public/vendor/laravel-admin/AdminLTE/dist/img/boxed-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e47586abbea589bcff7d55019346167bc72b6c2e GIT binary patch literal 123770 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 A82|tP literal 0 HcmV?d00001 diff --git a/public/vendor/laravel-admin/AdminLTE/dist/img/user2-160x160.jpg b/public/vendor/laravel-admin/AdminLTE/dist/img/user2-160x160.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aec74cb233fcd2ba3be78fba57873ca877aa89b5 GIT binary patch literal 7070 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 literal 0 HcmV?d00001 diff --git a/public/vendor/laravel-admin/AdminLTE/dist/js/app.min.js b/public/vendor/laravel-admin/AdminLTE/dist/js/app.min.js new file mode 100644 index 0000000..8ec5fe1 --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/dist/js/app.min.js @@ -0,0 +1,13 @@ +/*! AdminLTE app.js + * ================ + * Main JS application file for AdminLTE v2. This file + * should be included in all pages. It controls some layout + * options and implements exclusive AdminLTE plugins. + * + * @Author Almsaeed Studio + * @Support + * @Email + * @version 2.3.2 + * @license MIT + */ +function _init(){"use strict";$.AdminLTE.layout={activate:function(){var a=this;a.fix(),a.fixSidebar(),$(window,".wrapper").resize(function(){a.fix(),a.fixSidebar()})},fix:function(){var a=$(".main-header").outerHeight()+$(".main-footer").outerHeight(),b=$(window).height(),c=$(".sidebar").height();if($("body").hasClass("fixed"))$(".content-wrapper, .right-side").css("min-height",b-$(".main-footer").outerHeight());else{var d;b>=c?($(".content-wrapper, .right-side").css("min-height",b-a),d=b-a):($(".content-wrapper, .right-side").css("min-height",c),d=c);var e=$($.AdminLTE.options.controlSidebarOptions.selector);"undefined"!=typeof e&&e.height()>d&&$(".content-wrapper, .right-side").css("min-height",e.height())}},fixSidebar:function(){return $("body").hasClass("fixed")?("undefined"==typeof $.fn.slimScroll&&window.console&&window.console.error("Error: the fixed layout requires the slimscroll plugin!"),void($.AdminLTE.options.sidebarSlimScroll&&"undefined"!=typeof $.fn.slimScroll&&($(".sidebar").slimScroll({destroy:!0}).height("auto"),$(".sidebar").slimscroll({height:$(window).height()-$(".main-header").height()+"px",color:"rgba(0,0,0,0.2)",size:"3px"})))):void("undefined"!=typeof $.fn.slimScroll&&$(".sidebar").slimScroll({destroy:!0}).height("auto"))}},$.AdminLTE.pushMenu={activate:function(a){var b=$.AdminLTE.options.screenSizes;$(document).on("click",a,function(a){a.preventDefault(),$(window).width()>b.sm-1?$("body").hasClass("sidebar-collapse")?$("body").removeClass("sidebar-collapse").trigger("expanded.pushMenu"):$("body").addClass("sidebar-collapse").trigger("collapsed.pushMenu"):$("body").hasClass("sidebar-open")?$("body").removeClass("sidebar-open").removeClass("sidebar-collapse").trigger("collapsed.pushMenu"):$("body").addClass("sidebar-open").trigger("expanded.pushMenu")}),$(".content-wrapper").click(function(){$(window).width()<=b.sm-1&&$("body").hasClass("sidebar-open")&&$("body").removeClass("sidebar-open")}),($.AdminLTE.options.sidebarExpandOnHover||$("body").hasClass("fixed")&&$("body").hasClass("sidebar-mini"))&&this.expandOnHover()},expandOnHover:function(){var a=this,b=$.AdminLTE.options.screenSizes.sm-1;$(".main-sidebar").hover(function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-collapse")&&$(window).width()>b&&a.expand()},function(){$("body").hasClass("sidebar-mini")&&$("body").hasClass("sidebar-expanded-on-hover")&&$(window).width()>b&&a.collapse()})},expand:function(){$("body").removeClass("sidebar-collapse").addClass("sidebar-expanded-on-hover")},collapse:function(){$("body").hasClass("sidebar-expanded-on-hover")&&$("body").removeClass("sidebar-expanded-on-hover").addClass("sidebar-collapse")}},$.AdminLTE.tree=function(a){var b=this,c=$.AdminLTE.options.animationSpeed;$(a).on("click","li a",function(a){var d=$(this),e=d.next();if(e.is(".treeview-menu")&&e.is(":visible")&&!$("body").hasClass("sidebar-collapse"))e.slideUp(c,function(){e.removeClass("menu-open")}),e.parent("li").removeClass("active");else if(e.is(".treeview-menu")&&!e.is(":visible")){var f=d.parents("ul").first(),g=f.find("ul:visible").slideUp(c);g.removeClass("menu-open");var h=d.parent("li");e.slideDown(c,function(){e.addClass("menu-open"),f.find("li.active").removeClass("active"),h.addClass("active"),b.layout.fix()})}e.is(".treeview-menu")&&a.preventDefault()})},$.AdminLTE.controlSidebar={activate:function(){var a=this,b=$.AdminLTE.options.controlSidebarOptions,c=$(b.selector),d=$(b.toggleBtnSelector);d.on("click",function(d){d.preventDefault(),c.hasClass("control-sidebar-open")||$("body").hasClass("control-sidebar-open")?a.close(c,b.slide):a.open(c,b.slide)});var e=$(".control-sidebar-bg");a._fix(e),$("body").hasClass("fixed")?a._fixForFixed(c):$(".content-wrapper, .right-side").height() .box-body, > .box-footer, > form >.box-body, > form > .box-footer");c.hasClass("collapsed-box")?(a.children(":first").removeClass(b.icons.open).addClass(b.icons.collapse),d.slideDown(b.animationSpeed,function(){c.removeClass("collapsed-box")})):(a.children(":first").removeClass(b.icons.collapse).addClass(b.icons.open),d.slideUp(b.animationSpeed,function(){c.addClass("collapsed-box")}))},remove:function(a){var b=a.parents(".box").first();b.slideUp(this.animationSpeed)}}}if("undefined"==typeof jQuery)throw new Error("AdminLTE requires jQuery");$.AdminLTE={},$.AdminLTE.options={navbarMenuSlimscroll:!0,navbarMenuSlimscrollWidth:"3px",navbarMenuHeight:"200px",animationSpeed:500,sidebarToggleSelector:"[data-toggle='offcanvas']",sidebarPushMenu:!0,sidebarSlimScroll:!0,sidebarExpandOnHover:!1,enableBoxRefresh:!0,enableBSToppltip:!0,BSTooltipSelector:"[data-toggle='tooltip']",enableFastclick:!0,enableControlSidebar:!0,controlSidebarOptions:{toggleBtnSelector:"[data-toggle='control-sidebar']",selector:".control-sidebar",slide:!0},enableBoxWidget:!0,boxWidgetOptions:{boxWidgetIcons:{collapse:"fa-minus",open:"fa-plus",remove:"fa-times"},boxWidgetSelectors:{remove:'[data-widget="remove"]',collapse:'[data-widget="collapse"]'}},directChat:{enable:!0,contactToggleSelector:'[data-widget="chat-pane-toggle"]'},colors:{lightBlue:"#3c8dbc",red:"#f56954",green:"#00a65a",aqua:"#00c0ef",yellow:"#f39c12",blue:"#0073b7",navy:"#001F3F",teal:"#39CCCC",olive:"#3D9970",lime:"#01FF70",orange:"#FF851B",fuchsia:"#F012BE",purple:"#8E24AA",maroon:"#D81B60",black:"#222222",gray:"#d2d6de"},screenSizes:{xs:480,sm:768,md:992,lg:1200}},$(function(){"use strict";$("body").removeClass("hold-transition"),"undefined"!=typeof AdminLTEOptions&&$.extend(!0,$.AdminLTE.options,AdminLTEOptions);var a=$.AdminLTE.options;_init(),$.AdminLTE.layout.activate(),$.AdminLTE.tree(".sidebar"),a.enableControlSidebar&&$.AdminLTE.controlSidebar.activate(),a.navbarMenuSlimscroll&&"undefined"!=typeof $.fn.slimscroll&&$(".navbar .menu").slimscroll({height:a.navbarMenuHeight,alwaysVisible:!1,size:a.navbarMenuSlimscrollWidth}).css("width","100%"),a.sidebarPushMenu&&$.AdminLTE.pushMenu.activate(a.sidebarToggleSelector),a.enableBSToppltip&&$("body").tooltip({selector:a.BSTooltipSelector}),a.enableBoxWidget&&$.AdminLTE.boxWidget.activate(),a.enableFastclick&&"undefined"!=typeof FastClick&&FastClick.attach(document.body),a.directChat.enable&&$(document).on("click",a.directChat.contactToggleSelector,function(){var a=$(this).parents(".direct-chat").first();a.toggleClass("direct-chat-contacts-open")}),$('.btn-group[data-toggle="btn-toggle"]').each(function(){var a=$(this);$(this).find(".btn").on("click",function(b){a.find(".btn.active").removeClass("active"),$(this).addClass("active"),b.preventDefault()})})}),function(a){"use strict";a.fn.boxRefresh=function(b){function c(a){a.append(f),e.onLoadStart.call(a)}function d(a){a.find(f).remove(),e.onLoadDone.call(a)}var e=a.extend({trigger:".refresh-btn",source:"",onLoadStart:function(a){return a},onLoadDone:function(a){return a}},b),f=a('
');return this.each(function(){if(""===e.source)return void(window.console&&window.console.log("Please specify a source first - boxRefresh()"));var b=a(this),f=b.find(e.trigger).first();f.on("click",function(a){a.preventDefault(),c(b),b.find(".box-body").load(e.source,function(){d(b)})})})}}(jQuery),function(a){"use strict";a.fn.activateBox=function(){a.AdminLTE.boxWidget.activate(this)},a.fn.toggleBox=function(){var b=a(a.AdminLTE.boxWidget.selectors.collapse,this);a.AdminLTE.boxWidget.collapse(b)},a.fn.removeBox=function(){var b=a(a.AdminLTE.boxWidget.selectors.remove,this);a.AdminLTE.boxWidget.remove(b)}}(jQuery),function(a){"use strict";a.fn.todolist=function(b){var c=a.extend({onCheck:function(a){return a},onUncheck:function(a){return a}},b);return this.each(function(){"undefined"!=typeof a.fn.iCheck?(a("input",this).on("ifChecked",function(){var b=a(this).parents("li").first();b.toggleClass("done"),c.onCheck.call(b)}),a("input",this).on("ifUnchecked",function(){var b=a(this).parents("li").first();b.toggleClass("done"),c.onUncheck.call(b)})):a("input",this).on("change",function(){var b=a(this).parents("li").first();b.toggleClass("done"),a("input",b).is(":checked")?c.onCheck.call(b):c.onUncheck.call(b)})})}}(jQuery); \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/plugins/bootstrap-slider/bootstrap-slider.js b/public/vendor/laravel-admin/AdminLTE/plugins/bootstrap-slider/bootstrap-slider.js new file mode 100644 index 0000000..2e072fe --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/plugins/bootstrap-slider/bootstrap-slider.js @@ -0,0 +1,1167 @@ +/*! ========================================================= + * bootstrap-slider.js + * + * Maintainers: + * Kyle Kemp + * - Twitter: @seiyria + * - Github: seiyria + * Rohit Kalkur + * - Twitter: @Rovolutionary + * - Github: rovolution + * + * ========================================================= + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + + +/** + * Bridget makes jQuery widgets + * v1.0.1 + * MIT license + */ +( function( $ ) { + + ( function( $ ) { + + 'use strict'; + + // -------------------------- utils -------------------------- // + + var slice = Array.prototype.slice; + + function noop() {} + + // -------------------------- definition -------------------------- // + + function defineBridget( $ ) { + + // bail if no jQuery + if ( !$ ) { + return; + } + + // -------------------------- addOptionMethod -------------------------- // + + /** + * adds option method -> $().plugin('option', {...}) + * @param {Function} PluginClass - constructor class + */ + function addOptionMethod( PluginClass ) { + // don't overwrite original option method + if ( PluginClass.prototype.option ) { + return; + } + + // option setter + PluginClass.prototype.option = function( opts ) { + // bail out if not an object + if ( !$.isPlainObject( opts ) ){ + return; + } + this.options = $.extend( true, this.options, opts ); + }; + } + + + // -------------------------- plugin bridge -------------------------- // + + // helper function for logging errors + // $.error breaks jQuery chaining + var logError = typeof console === 'undefined' ? noop : + function( message ) { + console.error( message ); + }; + + /** + * jQuery plugin bridge, access methods like $elem.plugin('method') + * @param {String} namespace - plugin name + * @param {Function} PluginClass - constructor class + */ + function bridge( namespace, PluginClass ) { + // add to jQuery fn namespace + $.fn[ namespace ] = function( options ) { + if ( typeof options === 'string' ) { + // call plugin method when first argument is a string + // get arguments for method + var args = slice.call( arguments, 1 ); + + for ( var i=0, len = this.length; i < len; i++ ) { + var elem = this[i]; + var instance = $.data( elem, namespace ); + if ( !instance ) { + logError( "cannot call methods on " + namespace + " prior to initialization; " + + "attempted to call '" + options + "'" ); + continue; + } + if ( !$.isFunction( instance[options] ) || options.charAt(0) === '_' ) { + logError( "no such method '" + options + "' for " + namespace + " instance" ); + continue; + } + + // trigger method with arguments + var returnValue = instance[ options ].apply( instance, args); + + // break look and return first value if provided + if ( returnValue !== undefined && returnValue !== instance) { + return returnValue; + } + } + // return this if no return value + return this; + } else { + var objects = this.map( function() { + var instance = $.data( this, namespace ); + if ( instance ) { + // apply options & init + instance.option( options ); + instance._init(); + } else { + // initialize new instance + instance = new PluginClass( this, options ); + $.data( this, namespace, instance ); + } + return $(this); + }); + + if(!objects || objects.length > 1) { + return objects; + } else { + return objects[0]; + } + } + }; + + } + + // -------------------------- bridget -------------------------- // + + /** + * converts a Prototypical class into a proper jQuery plugin + * the class must have a ._init method + * @param {String} namespace - plugin name, used in $().pluginName + * @param {Function} PluginClass - constructor class + */ + $.bridget = function( namespace, PluginClass ) { + addOptionMethod( PluginClass ); + bridge( namespace, PluginClass ); + }; + + return $.bridget; + + } + + // get jquery from browser global + defineBridget( $ ); + + })( $ ); + + + /************************************************* + + BOOTSTRAP-SLIDER SOURCE CODE + + **************************************************/ + + (function( $ ) { + + var ErrorMsgs = { + formatInvalidInputErrorMsg : function(input) { + return "Invalid input value '" + input + "' passed in"; + }, + callingContextNotSliderInstance : "Calling context element does not have instance of Slider bound to it. Check your code to make sure the JQuery object returned from the call to the slider() initializer is calling the method" + }; + + + + /************************************************* + + CONSTRUCTOR + + **************************************************/ + var Slider = function(element, options) { + createNewSlider.call(this, element, options); + return this; + }; + + function createNewSlider(element, options) { + /************************************************* + + Create Markup + + **************************************************/ + if(typeof element === "string") { + this.element = document.querySelector(element); + } else if(element instanceof HTMLElement) { + this.element = element; + } + + var origWidth = this.element.style.width; + var updateSlider = false; + var parent = this.element.parentNode; + var sliderTrackSelection; + var sliderMinHandle; + var sliderMaxHandle; + + if (this.sliderElem) { + updateSlider = true; + } else { + /* Create elements needed for slider */ + this.sliderElem = document.createElement("div"); + this.sliderElem.className = "slider"; + + /* Create slider track elements */ + var sliderTrack = document.createElement("div"); + sliderTrack.className = "slider-track"; + + sliderTrackSelection = document.createElement("div"); + sliderTrackSelection.className = "slider-selection"; + + sliderMinHandle = document.createElement("div"); + sliderMinHandle.className = "slider-handle min-slider-handle"; + + sliderMaxHandle = document.createElement("div"); + sliderMaxHandle.className = "slider-handle max-slider-handle"; + + sliderTrack.appendChild(sliderTrackSelection); + sliderTrack.appendChild(sliderMinHandle); + sliderTrack.appendChild(sliderMaxHandle); + + var createAndAppendTooltipSubElements = function(tooltipElem) { + var arrow = document.createElement("div"); + arrow.className = "tooltip-arrow"; + + var inner = document.createElement("div"); + inner.className = "tooltip-inner"; + + tooltipElem.appendChild(arrow); + tooltipElem.appendChild(inner); + }; + + /* Create tooltip elements */ + var sliderTooltip = document.createElement("div"); + sliderTooltip.className = "tooltip tooltip-main"; + createAndAppendTooltipSubElements(sliderTooltip); + + var sliderTooltipMin = document.createElement("div"); + sliderTooltipMin.className = "tooltip tooltip-min"; + createAndAppendTooltipSubElements(sliderTooltipMin); + + var sliderTooltipMax = document.createElement("div"); + sliderTooltipMax.className = "tooltip tooltip-max"; + createAndAppendTooltipSubElements(sliderTooltipMax); + + + /* Append components to sliderElem */ + this.sliderElem.appendChild(sliderTrack); + this.sliderElem.appendChild(sliderTooltip); + this.sliderElem.appendChild(sliderTooltipMin); + this.sliderElem.appendChild(sliderTooltipMax); + + /* Append slider element to parent container, right before the original element */ + parent.insertBefore(this.sliderElem, this.element); + + /* Hide original element */ + this.element.style.display = "none"; + } + /* If JQuery exists, cache JQ references */ + if($) { + this.$element = $(this.element); + this.$sliderElem = $(this.sliderElem); + } + + /************************************************* + + Process Options + + **************************************************/ + options = options ? options : {}; + var optionTypes = Object.keys(this.defaultOptions); + + for(var i = 0; i < optionTypes.length; i++) { + var optName = optionTypes[i]; + + // First check if an option was passed in via the constructor + var val = options[optName]; + // If no data attrib, then check data atrributes + val = (typeof val !== 'undefined') ? val : getDataAttrib(this.element, optName); + // Finally, if nothing was specified, use the defaults + val = (val !== null) ? val : this.defaultOptions[optName]; + + // Set all options on the instance of the Slider + if(!this.options) { + this.options = {}; + } + this.options[optName] = val; + } + + function getDataAttrib(element, optName) { + var dataName = "data-slider-" + optName; + var dataValString = element.getAttribute(dataName); + + try { + return JSON.parse(dataValString); + } + catch(err) { + return dataValString; + } + } + + /************************************************* + + Setup + + **************************************************/ + this.eventToCallbackMap = {}; + this.sliderElem.id = this.options.id; + + this.touchCapable = 'ontouchstart' in window || (window.DocumentTouch && document instanceof window.DocumentTouch); + + this.tooltip = this.sliderElem.querySelector('.tooltip-main'); + this.tooltipInner = this.tooltip.querySelector('.tooltip-inner'); + + this.tooltip_min = this.sliderElem.querySelector('.tooltip-min'); + this.tooltipInner_min = this.tooltip_min.querySelector('.tooltip-inner'); + + this.tooltip_max = this.sliderElem.querySelector('.tooltip-max'); + this.tooltipInner_max= this.tooltip_max.querySelector('.tooltip-inner'); + + if (updateSlider === true) { + // Reset classes + this._removeClass(this.sliderElem, 'slider-horizontal'); + this._removeClass(this.sliderElem, 'slider-vertical'); + this._removeClass(this.tooltip, 'hide'); + this._removeClass(this.tooltip_min, 'hide'); + this._removeClass(this.tooltip_max, 'hide'); + + // Undo existing inline styles for track + ["left", "top", "width", "height"].forEach(function(prop) { + this._removeProperty(this.trackSelection, prop); + }, this); + + // Undo inline styles on handles + [this.handle1, this.handle2].forEach(function(handle) { + this._removeProperty(handle, 'left'); + this._removeProperty(handle, 'top'); + }, this); + + // Undo inline styles and classes on tooltips + [this.tooltip, this.tooltip_min, this.tooltip_max].forEach(function(tooltip) { + this._removeProperty(tooltip, 'left'); + this._removeProperty(tooltip, 'top'); + this._removeProperty(tooltip, 'margin-left'); + this._removeProperty(tooltip, 'margin-top'); + + this._removeClass(tooltip, 'right'); + this._removeClass(tooltip, 'top'); + }, this); + } + + if(this.options.orientation === 'vertical') { + this._addClass(this.sliderElem,'slider-vertical'); + + this.stylePos = 'top'; + this.mousePos = 'pageY'; + this.sizePos = 'offsetHeight'; + + this._addClass(this.tooltip, 'right'); + this.tooltip.style.left = '100%'; + + this._addClass(this.tooltip_min, 'right'); + this.tooltip_min.style.left = '100%'; + + this._addClass(this.tooltip_max, 'right'); + this.tooltip_max.style.left = '100%'; + } else { + this._addClass(this.sliderElem, 'slider-horizontal'); + this.sliderElem.style.width = origWidth; + + this.options.orientation = 'horizontal'; + this.stylePos = 'left'; + this.mousePos = 'pageX'; + this.sizePos = 'offsetWidth'; + + this._addClass(this.tooltip, 'top'); + this.tooltip.style.top = -this.tooltip.outerHeight - 14 + 'px'; + + this._addClass(this.tooltip_min, 'top'); + this.tooltip_min.style.top = -this.tooltip_min.outerHeight - 14 + 'px'; + + this._addClass(this.tooltip_max, 'top'); + this.tooltip_max.style.top = -this.tooltip_max.outerHeight - 14 + 'px'; + } + + if (this.options.value instanceof Array) { + this.options.range = true; + } else if (this.options.range) { + // User wants a range, but value is not an array + this.options.value = [this.options.value, this.options.max]; + } + + this.trackSelection = sliderTrackSelection || this.trackSelection; + if (this.options.selection === 'none') { + this._addClass(this.trackSelection, 'hide'); + } + + this.handle1 = sliderMinHandle || this.handle1; + this.handle2 = sliderMaxHandle || this.handle2; + + if (updateSlider === true) { + // Reset classes + this._removeClass(this.handle1, 'round triangle'); + this._removeClass(this.handle2, 'round triangle hide'); + } + + var availableHandleModifiers = ['round', 'triangle', 'custom']; + var isValidHandleType = availableHandleModifiers.indexOf(this.options.handle) !== -1; + if (isValidHandleType) { + this._addClass(this.handle1, this.options.handle); + this._addClass(this.handle2, this.options.handle); + } + + this.offset = this._offset(this.sliderElem); + this.size = this.sliderElem[this.sizePos]; + this.setValue(this.options.value); + + /****************************************** + + Bind Event Listeners + + ******************************************/ + + // Bind keyboard handlers + this.handle1Keydown = this._keydown.bind(this, 0); + this.handle1.addEventListener("keydown", this.handle1Keydown, false); + + this.handle2Keydown = this._keydown.bind(this, 0); + this.handle2.addEventListener("keydown", this.handle2Keydown, false); + + if (this.touchCapable) { + // Bind touch handlers + this.mousedown = this._mousedown.bind(this); + this.sliderElem.addEventListener("touchstart", this.mousedown, false); + } else { + // Bind mouse handlers + this.mousedown = this._mousedown.bind(this); + this.sliderElem.addEventListener("mousedown", this.mousedown, false); + } + + // Bind tooltip-related handlers + if(this.options.tooltip === 'hide') { + this._addClass(this.tooltip, 'hide'); + this._addClass(this.tooltip_min, 'hide'); + this._addClass(this.tooltip_max, 'hide'); + } else if(this.options.tooltip === 'always') { + this._showTooltip(); + this._alwaysShowTooltip = true; + } else { + this.showTooltip = this._showTooltip.bind(this); + this.hideTooltip = this._hideTooltip.bind(this); + + this.sliderElem.addEventListener("mouseenter", this.showTooltip, false); + this.sliderElem.addEventListener("mouseleave", this.hideTooltip, false); + + this.handle1.addEventListener("focus", this.showTooltip, false); + this.handle1.addEventListener("blur", this.hideTooltip, false); + + this.handle2.addEventListener("focus", this.showTooltip, false); + this.handle2.addEventListener("blur", this.hideTooltip, false); + } + + if(this.options.enabled) { + this.enable(); + } else { + this.disable(); + } + } + + /************************************************* + + INSTANCE PROPERTIES/METHODS + + - Any methods bound to the prototype are considered + part of the plugin's `public` interface + + **************************************************/ + Slider.prototype = { + _init: function() {}, // NOTE: Must exist to support bridget + + constructor: Slider, + + defaultOptions: { + id: "", + min: 0, + max: 10, + step: 1, + precision: 0, + orientation: 'horizontal', + value: 5, + range: false, + selection: 'before', + tooltip: 'show', + tooltip_split: false, + handle: 'round', + reversed: false, + enabled: true, + formatter: function(val) { + if(val instanceof Array) { + return val[0] + " : " + val[1]; + } else { + return val; + } + }, + natural_arrow_keys: false + }, + + over: false, + + inDrag: false, + + getValue: function() { + if (this.options.range) { + return this.options.value; + } + return this.options.value[0]; + }, + + setValue: function(val, triggerSlideEvent) { + if (!val) { + val = 0; + } + this.options.value = this._validateInputValue(val); + var applyPrecision = this._applyPrecision.bind(this); + + if (this.options.range) { + this.options.value[0] = applyPrecision(this.options.value[0]); + this.options.value[1] = applyPrecision(this.options.value[1]); + + this.options.value[0] = Math.max(this.options.min, Math.min(this.options.max, this.options.value[0])); + this.options.value[1] = Math.max(this.options.min, Math.min(this.options.max, this.options.value[1])); + } else { + this.options.value = applyPrecision(this.options.value); + this.options.value = [ Math.max(this.options.min, Math.min(this.options.max, this.options.value))]; + this._addClass(this.handle2, 'hide'); + if (this.options.selection === 'after') { + this.options.value[1] = this.options.max; + } else { + this.options.value[1] = this.options.min; + } + } + + this.diff = this.options.max - this.options.min; + if (this.diff > 0) { + this.percentage = [ + (this.options.value[0] - this.options.min) * 100 / this.diff, + (this.options.value[1] - this.options.min) * 100 / this.diff, + this.options.step * 100 / this.diff + ]; + } else { + this.percentage = [0, 0, 100]; + } + + this._layout(); + + var sliderValue = this.options.range ? this.options.value : this.options.value[0]; + this._setDataVal(sliderValue); + + if(triggerSlideEvent === true) { + this._trigger('slide', sliderValue); + } + + return this; + }, + + destroy: function(){ + // Remove event handlers on slider elements + this._removeSliderEventHandlers(); + + // Remove the slider from the DOM + this.sliderElem.parentNode.removeChild(this.sliderElem); + /* Show original element */ + this.element.style.display = ""; + + // Clear out custom event bindings + this._cleanUpEventCallbacksMap(); + + // Remove data values + this.element.removeAttribute("data"); + + // Remove JQuery handlers/data + if($) { + this._unbindJQueryEventHandlers(); + this.$element.removeData('slider'); + } + }, + + disable: function() { + this.options.enabled = false; + this.handle1.removeAttribute("tabindex"); + this.handle2.removeAttribute("tabindex"); + this._addClass(this.sliderElem, 'slider-disabled'); + this._trigger('slideDisabled'); + + return this; + }, + + enable: function() { + this.options.enabled = true; + this.handle1.setAttribute("tabindex", 0); + this.handle2.setAttribute("tabindex", 0); + this._removeClass(this.sliderElem, 'slider-disabled'); + this._trigger('slideEnabled'); + + return this; + }, + + toggle: function() { + if(this.options.enabled) { + this.disable(); + } else { + this.enable(); + } + + return this; + }, + + isEnabled: function() { + return this.options.enabled; + }, + + on: function(evt, callback) { + if($) { + this.$element.on(evt, callback); + this.$sliderElem.on(evt, callback); + } else { + this._bindNonQueryEventHandler(evt, callback); + } + return this; + }, + + getAttribute: function(attribute) { + if(attribute) { + return this.options[attribute]; + } else { + return this.options; + } + }, + + setAttribute: function(attribute, value) { + this.options[attribute] = value; + return this; + }, + + refresh: function() { + this._removeSliderEventHandlers(); + createNewSlider.call(this, this.element, this.options); + if($) { + // Bind new instance of slider to the element + $.data(this.element, 'slider', this); + } + return this; + }, + + /******************************+ + + HELPERS + + - Any method that is not part of the public interface. + - Place it underneath this comment block and write its signature like so: + + _fnName : function() {...} + + ********************************/ + _removeSliderEventHandlers: function() { + // Remove event listeners from handle1 + this.handle1.removeEventListener("keydown", this.handle1Keydown, false); + this.handle1.removeEventListener("focus", this.showTooltip, false); + this.handle1.removeEventListener("blur", this.hideTooltip, false); + + // Remove event listeners from handle2 + this.handle2.removeEventListener("keydown", this.handle2Keydown, false); + this.handle2.removeEventListener("focus", this.handle2Keydown, false); + this.handle2.removeEventListener("blur", this.handle2Keydown, false); + + // Remove event listeners from sliderElem + this.sliderElem.removeEventListener("mouseenter", this.showTooltip, false); + this.sliderElem.removeEventListener("mouseleave", this.hideTooltip, false); + this.sliderElem.removeEventListener("touchstart", this.mousedown, false); + this.sliderElem.removeEventListener("mousedown", this.mousedown, false); + }, + _bindNonQueryEventHandler: function(evt, callback) { + if(this.eventToCallbackMap[evt]===undefined) { + this.eventToCallbackMap[evt] = []; + } + this.eventToCallbackMap[evt].push(callback); + }, + _cleanUpEventCallbacksMap: function() { + var eventNames = Object.keys(this.eventToCallbackMap); + for(var i = 0; i < eventNames.length; i++) { + var eventName = eventNames[i]; + this.eventToCallbackMap[eventName] = null; + } + }, + _showTooltip: function() { + if (this.options.tooltip_split === false ){ + this._addClass(this.tooltip, 'in'); + } else { + this._addClass(this.tooltip_min, 'in'); + this._addClass(this.tooltip_max, 'in'); + } + this.over = true; + }, + _hideTooltip: function() { + if (this.inDrag === false && this.alwaysShowTooltip !== true) { + this._removeClass(this.tooltip, 'in'); + this._removeClass(this.tooltip_min, 'in'); + this._removeClass(this.tooltip_max, 'in'); + } + this.over = false; + }, + _layout: function() { + var positionPercentages; + + if(this.options.reversed) { + positionPercentages = [ 100 - this.percentage[0], this.percentage[1] ]; + } else { + positionPercentages = [ this.percentage[0], this.percentage[1] ]; + } + + this.handle1.style[this.stylePos] = positionPercentages[0]+'%'; + this.handle2.style[this.stylePos] = positionPercentages[1]+'%'; + + if (this.options.orientation === 'vertical') { + this.trackSelection.style.top = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; + this.trackSelection.style.height = Math.abs(positionPercentages[0] - positionPercentages[1]) +'%'; + } else { + this.trackSelection.style.left = Math.min(positionPercentages[0], positionPercentages[1]) +'%'; + this.trackSelection.style.width = Math.abs(positionPercentages[0] - positionPercentages[1]) +'%'; + + var offset_min = this.tooltip_min.getBoundingClientRect(); + var offset_max = this.tooltip_max.getBoundingClientRect(); + + if (offset_min.right > offset_max.left) { + this._removeClass(this.tooltip_max, 'top'); + this._addClass(this.tooltip_max, 'bottom'); + this.tooltip_max.style.top = 18 + 'px'; + } else { + this._removeClass(this.tooltip_max, 'bottom'); + this._addClass(this.tooltip_max, 'top'); + this.tooltip_max.style.top = -30 + 'px'; + } + } + + + var formattedTooltipVal; + + if (this.options.range) { + formattedTooltipVal = this.options.formatter(this.options.value); + this._setText(this.tooltipInner, formattedTooltipVal); + this.tooltip.style[this.stylePos] = (positionPercentages[1] + positionPercentages[0])/2 + '%'; + + if (this.options.orientation === 'vertical') { + this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); + } else { + this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); + } + + if (this.options.orientation === 'vertical') { + this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); + } else { + this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); + } + + var innerTooltipMinText = this.options.formatter(this.options.value[0]); + this._setText(this.tooltipInner_min, innerTooltipMinText); + + var innerTooltipMaxText = this.options.formatter(this.options.value[1]); + this._setText(this.tooltipInner_max, innerTooltipMaxText); + + this.tooltip_min.style[this.stylePos] = positionPercentages[0] + '%'; + + if (this.options.orientation === 'vertical') { + this._css(this.tooltip_min, 'margin-top', -this.tooltip_min.offsetHeight / 2 + 'px'); + } else { + this._css(this.tooltip_min, 'margin-left', -this.tooltip_min.offsetWidth / 2 + 'px'); + } + + this.tooltip_max.style[this.stylePos] = positionPercentages[1] + '%'; + + if (this.options.orientation === 'vertical') { + this._css(this.tooltip_max, 'margin-top', -this.tooltip_max.offsetHeight / 2 + 'px'); + } else { + this._css(this.tooltip_max, 'margin-left', -this.tooltip_max.offsetWidth / 2 + 'px'); + } + } else { + formattedTooltipVal = this.options.formatter(this.options.value[0]); + this._setText(this.tooltipInner, formattedTooltipVal); + + this.tooltip.style[this.stylePos] = positionPercentages[0] + '%'; + if (this.options.orientation === 'vertical') { + this._css(this.tooltip, 'margin-top', -this.tooltip.offsetHeight / 2 + 'px'); + } else { + this._css(this.tooltip, 'margin-left', -this.tooltip.offsetWidth / 2 + 'px'); + } + } + }, + _removeProperty: function(element, prop) { + if (element.style.removeProperty) { + element.style.removeProperty(prop); + } else { + element.style.removeAttribute(prop); + } + }, + _mousedown: function(ev) { + if(!this.options.enabled) { + return false; + } + + this._triggerFocusOnHandle(); + + this.offset = this._offset(this.sliderElem); + this.size = this.sliderElem[this.sizePos]; + + var percentage = this._getPercentage(ev); + + if (this.options.range) { + var diff1 = Math.abs(this.percentage[0] - percentage); + var diff2 = Math.abs(this.percentage[1] - percentage); + this.dragged = (diff1 < diff2) ? 0 : 1; + } else { + this.dragged = 0; + } + + this.percentage[this.dragged] = this.options.reversed ? 100 - percentage : percentage; + this._layout(); + + this.mousemove = this._mousemove.bind(this); + this.mouseup = this._mouseup.bind(this); + + if (this.touchCapable) { + // Touch: Bind touch events: + document.addEventListener("touchmove", this.mousemove, false); + document.addEventListener("touchend", this.mouseup, false); + } else { + // Bind mouse events: + document.addEventListener("mousemove", this.mousemove, false); + document.addEventListener("mouseup", this.mouseup, false); + } + + this.inDrag = true; + + var val = this._calculateValue(); + this._trigger('slideStart', val); + this._setDataVal(val); + this.setValue(val); + + this._pauseEvent(ev); + + return true; + }, + _triggerFocusOnHandle: function(handleIdx) { + if(handleIdx === 0) { + this.handle1.focus(); + } + if(handleIdx === 1) { + this.handle2.focus(); + } + }, + _keydown: function(handleIdx, ev) { + if(!this.options.enabled) { + return false; + } + + var dir; + switch (ev.keyCode) { + case 37: // left + case 40: // down + dir = -1; + break; + case 39: // right + case 38: // up + dir = 1; + break; + } + if (!dir) { + return; + } + + // use natural arrow keys instead of from min to max + if (this.options.natural_arrow_keys) { + var ifVerticalAndNotReversed = (this.options.orientation === 'vertical' && !this.options.reversed); + var ifHorizontalAndReversed = (this.options.orientation === 'horizontal' && this.options.reversed); + + if (ifVerticalAndNotReversed || ifHorizontalAndReversed) { + dir = dir * -1; + } + } + + var oneStepValuePercentageChange = dir * this.percentage[2]; + var percentage = this.percentage[handleIdx] + oneStepValuePercentageChange; + + if (percentage > 100) { + percentage = 100; + } else if (percentage < 0) { + percentage = 0; + } + + this.dragged = handleIdx; + this._adjustPercentageForRangeSliders(percentage); + this.percentage[this.dragged] = percentage; + this._layout(); + + var val = this._calculateValue(); + + this._trigger('slideStart', val); + this._setDataVal(val); + this.setValue(val, true); + + this._trigger('slideStop', val); + this._setDataVal(val); + + this._pauseEvent(ev); + + return false; + }, + _pauseEvent: function(ev) { + if(ev.stopPropagation) { + ev.stopPropagation(); + } + if(ev.preventDefault) { + ev.preventDefault(); + } + ev.cancelBubble=true; + ev.returnValue=false; + }, + _mousemove: function(ev) { + if(!this.options.enabled) { + return false; + } + + var percentage = this._getPercentage(ev); + this._adjustPercentageForRangeSliders(percentage); + this.percentage[this.dragged] = this.options.reversed ? 100 - percentage : percentage; + this._layout(); + + var val = this._calculateValue(); + this.setValue(val, true); + + return false; + }, + _adjustPercentageForRangeSliders: function(percentage) { + if (this.options.range) { + if (this.dragged === 0 && this.percentage[1] < percentage) { + this.percentage[0] = this.percentage[1]; + this.dragged = 1; + } else if (this.dragged === 1 && this.percentage[0] > percentage) { + this.percentage[1] = this.percentage[0]; + this.dragged = 0; + } + } + }, + _mouseup: function() { + if(!this.options.enabled) { + return false; + } + if (this.touchCapable) { + // Touch: Unbind touch event handlers: + document.removeEventListener("touchmove", this.mousemove, false); + document.removeEventListener("touchend", this.mouseup, false); + } else { + // Unbind mouse event handlers: + document.removeEventListener("mousemove", this.mousemove, false); + document.removeEventListener("mouseup", this.mouseup, false); + } + + this.inDrag = false; + if (this.over === false) { + this._hideTooltip(); + } + var val = this._calculateValue(); + + this._layout(); + this._setDataVal(val); + this._trigger('slideStop', val); + + return false; + }, + _calculateValue: function() { + var val; + if (this.options.range) { + val = [this.options.min,this.options.max]; + if (this.percentage[0] !== 0){ + val[0] = (Math.max(this.options.min, this.options.min + Math.round((this.diff * this.percentage[0]/100)/this.options.step)*this.options.step)); + val[0] = this._applyPrecision(val[0]); + } + if (this.percentage[1] !== 100){ + val[1] = (Math.min(this.options.max, this.options.min + Math.round((this.diff * this.percentage[1]/100)/this.options.step)*this.options.step)); + val[1] = this._applyPrecision(val[1]); + } + this.options.value = val; + } else { + val = (this.options.min + Math.round((this.diff * this.percentage[0]/100)/this.options.step)*this.options.step); + if (val < this.options.min) { + val = this.options.min; + } + else if (val > this.options.max) { + val = this.options.max; + } + val = parseFloat(val); + val = this._applyPrecision(val); + this.options.value = [val, this.options.value[1]]; + } + return val; + }, + _applyPrecision: function(val) { + var precision = this.options.precision || this._getNumDigitsAfterDecimalPlace(this.step); + return this._applyToFixedAndParseFloat(val, precision); + }, + _getNumDigitsAfterDecimalPlace: function(num) { + var match = (''+num).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/); + if (!match) { return 0; } + return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0)); + }, + _applyToFixedAndParseFloat: function(num, toFixedInput) { + var truncatedNum = num.toFixed(toFixedInput); + return parseFloat(truncatedNum); + }, + /* + Credits to Mike Samuel for the following method! + Source: http://stackoverflow.com/questions/10454518/javascript-how-to-retrieve-the-number-of-decimals-of-a-string-number + */ + _getPercentage: function(ev) { + if (this.touchCapable && (ev.type === 'touchstart' || ev.type === 'touchmove')) { + ev = ev.touches[0]; + } + var percentage = (ev[this.mousePos] - this.offset[this.stylePos])*100/this.size; + percentage = Math.round(percentage/this.percentage[2])*this.percentage[2]; + return Math.max(0, Math.min(100, percentage)); + }, + _validateInputValue: function(val) { + if(typeof val === 'number') { + return val; + } else if(val instanceof Array) { + this._validateArray(val); + return val; + } else { + throw new Error( ErrorMsgs.formatInvalidInputErrorMsg(val) ); + } + }, + _validateArray: function(val) { + for(var i = 0; i < val.length; i++) { + var input = val[i]; + if (typeof input !== 'number') { throw new Error( ErrorMsgs.formatInvalidInputErrorMsg(input) ); } + } + }, + _setDataVal: function(val) { + var value = "value: '" + val + "'"; + this.element.setAttribute('data', value); + this.element.setAttribute('value', val); + }, + _trigger: function(evt, val) { + val = val || undefined; + + var callbackFnArray = this.eventToCallbackMap[evt]; + if(callbackFnArray && callbackFnArray.length) { + for(var i = 0; i < callbackFnArray.length; i++) { + var callbackFn = callbackFnArray[i]; + callbackFn(val); + } + } + + /* If JQuery exists, trigger JQuery events */ + if($) { + this._triggerJQueryEvent(evt, val); + } + }, + _triggerJQueryEvent: function(evt, val) { + var eventData = { + type: evt, + value: val + }; + this.$element.trigger(eventData); + this.$sliderElem.trigger(eventData); + }, + _unbindJQueryEventHandlers: function() { + this.$element.off(); + this.$sliderElem.off(); + }, + _setText: function(element, text) { + if(typeof element.innerText !== "undefined") { + element.innerText = text; + } else if(typeof element.textContent !== "undefined") { + element.textContent = text; + } + }, + _removeClass: function(element, classString) { + var classes = classString.split(" "); + var newClasses = element.className; + + for(var i = 0; i < classes.length; i++) { + var classTag = classes[i]; + var regex = new RegExp("(?:\\s|^)" + classTag + "(?:\\s|$)"); + newClasses = newClasses.replace(regex, " "); + } + + element.className = newClasses.trim(); + }, + _addClass: function(element, classString) { + var classes = classString.split(" "); + var newClasses = element.className; + + for(var i = 0; i < classes.length; i++) { + var classTag = classes[i]; + var regex = new RegExp("(?:\\s|^)" + classTag + "(?:\\s|$)"); + var ifClassExists = regex.test(newClasses); + + if(!ifClassExists) { + newClasses += " " + classTag; + } + } + + element.className = newClasses.trim(); + }, + _offset: function (obj) { + var ol = 0; + var ot = 0; + if (obj.offsetParent) { + do { + ol += obj.offsetLeft; + ot += obj.offsetTop; + } while (obj = obj.offsetParent); + } + return { + left: ol, + top: ot + }; + }, + _css: function(elementRef, styleName, value) { + elementRef.style[styleName] = value; + } + }; + + /********************************* + + Attach to global namespace + + *********************************/ + if($) { + var namespace = $.fn.slider ? 'bootstrapSlider' : 'slider'; + $.bridget(namespace, Slider); + } else { + window.Slider = Slider; + } + + + })( $ ); + +})( window.jQuery ); \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/plugins/bootstrap-slider/slider.css b/public/vendor/laravel-admin/AdminLTE/plugins/bootstrap-slider/slider.css new file mode 100644 index 0000000..a96db7f --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/plugins/bootstrap-slider/slider.css @@ -0,0 +1,169 @@ +/*! + * Slider for Bootstrap + * + * Copyright 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ +.slider { + display: block; + vertical-align: middle; + position: relative; + +} +.slider.slider-horizontal { + width: 100%; + height: 20px; + margin-bottom: 20px; +} +.slider.slider-horizontal:last-of-type { + margin-bottom: 0; +} +.slider.slider-horizontal .slider-track { + height: 10px; + width: 100%; + margin-top: -5px; + top: 50%; + left: 0; +} +.slider.slider-horizontal .slider-selection { + height: 100%; + top: 0; + bottom: 0; +} +.slider.slider-horizontal .slider-handle { + margin-left: -10px; + margin-top: -5px; +} +.slider.slider-horizontal .slider-handle.triangle { + border-width: 0 10px 10px 10px; + width: 0; + height: 0; + border-bottom-color: #0480be; + margin-top: 0; +} +.slider.slider-vertical { + height: 230px; + width: 20px; + margin-right: 20px; + display: inline-block; +} +.slider.slider-vertical:last-of-type { + margin-right: 0; +} +.slider.slider-vertical .slider-track { + width: 10px; + height: 100%; + margin-left: -5px; + left: 50%; + top: 0; +} +.slider.slider-vertical .slider-selection { + width: 100%; + left: 0; + top: 0; + bottom: 0; +} +.slider.slider-vertical .slider-handle { + margin-left: -5px; + margin-top: -10px; +} +.slider.slider-vertical .slider-handle.triangle { + border-width: 10px 0 10px 10px; + width: 1px; + height: 1px; + border-left-color: #0480be; + margin-left: 0; +} +.slider input { + display: none; +} +.slider .tooltip-inner { + white-space: nowrap; +} +.slider-track { + position: absolute; + cursor: pointer; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f0f0f0, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f0f0f0), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f0f0f0, #f9f9f9); + background-image: -o-linear-gradient(top, #f0f0f0, #f9f9f9); + background-image: linear-gradient(to bottom, #f0f0f0, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0f0f0', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.slider-selection { + position: absolute; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f9f9f9, #f5f5f5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f9f9f9), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #f9f9f9, #f5f5f5); + background-image: -o-linear-gradient(top, #f9f9f9, #f5f5f5); + background-image: linear-gradient(to bottom, #f9f9f9, #f5f5f5); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.slider-handle { + position: absolute; + width: 20px; + height: 20px; + background-color: #444; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); + opacity: 1; + border: 0px solid transparent; +} +.slider-handle.round { + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + border-radius: 20px; +} +.slider-handle.triangle { + background: transparent none; +} + +.slider-disabled .slider-selection { + opacity: 0.5; +} + +#red .slider-selection { + background: #f56954; +} + +#blue .slider-selection { + background: #3c8dbc; +} + +#green .slider-selection { + background: #00a65a; +} + +#yellow .slider-selection { + background: #f39c12; +} + +#aqua .slider-selection { + background: #00c0ef; +} + +#purple .slider-selection { + background: #932ab6; +} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/bootstrap-colorpicker.min.css b/public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/bootstrap-colorpicker.min.css new file mode 100644 index 0000000..01894d5 --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/bootstrap-colorpicker.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap Colorpicker + * http://mjolnic.github.io/bootstrap-colorpicker/ + * + * Originally written by (c) 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0.txt + * + */.colorpicker-saturation{float:left;width:100px;height:100px;cursor:crosshair;background-image:url("img/saturation.png")} .colorpicker-saturation i{position:absolute;top:0;left:0;display:block;width:5px;height:5px;margin:-4px 0 0 -4px;border:1px solid #000;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px} .colorpicker-saturation i b{display:block;width:5px;height:5px;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px} .colorpicker-hue,.colorpicker-alpha{float:left;width:15px;height:100px;margin-bottom:4px;margin-left:4px;cursor:row-resize} .colorpicker-hue i,.colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:100%;height:1px;margin-top:-1px;background:#000;border-top:1px solid #fff} .colorpicker-hue{background-image:url("img/hue.png")} .colorpicker-alpha{display:none;background-image:url("img/alpha.png")} .colorpicker{top:0;left:0;z-index:2500;min-width:130px;padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1} .colorpicker:before,.colorpicker:after{display:table;line-height:0;content:""} .colorpicker:after{clear:both} .colorpicker:before{position:absolute;top:-7px;left:6px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''} .colorpicker:after{position:absolute;top:-6px;left:7px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''} .colorpicker div{position:relative} .colorpicker.colorpicker-with-alpha{min-width:140px} .colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block} .colorpicker-color{height:10px;margin-top:5px;clear:both;background-image:url("img/alpha.png");background-position:0 100%} .colorpicker-color div{height:10px} .colorpicker-element .input-group-addon i{display:block;width:16px;height:16px;cursor:pointer} .colorpicker.colorpicker-inline{position:relative;display:inline-block;float:none} .colorpicker.colorpicker-horizontal{width:110px;height:auto;min-width:110px} .colorpicker.colorpicker-horizontal .colorpicker-saturation{margin-bottom:4px} .colorpicker.colorpicker-horizontal .colorpicker-color{width:100px} .colorpicker.colorpicker-horizontal .colorpicker-hue,.colorpicker.colorpicker-horizontal .colorpicker-alpha{float:left;width:100px;height:15px;margin-bottom:4px;margin-left:0;cursor:col-resize} .colorpicker.colorpicker-horizontal .colorpicker-hue i,.colorpicker.colorpicker-horizontal .colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:1px;height:15px;margin-top:0;background:#fff;border:0} .colorpicker.colorpicker-horizontal .colorpicker-hue{background-image:url("img/hue-horizontal.png")} .colorpicker.colorpicker-horizontal .colorpicker-alpha{background-image:url("img/alpha-horizontal.png")} .colorpicker.colorpicker-hidden{display:none} .colorpicker.colorpicker-visible{display:block} .colorpicker-inline.colorpicker-visible{display:inline-block} \ No newline at end of file diff --git a/public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/bootstrap-colorpicker.min.js b/public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/bootstrap-colorpicker.min.js new file mode 100644 index 0000000..bc4fba9 --- /dev/null +++ b/public/vendor/laravel-admin/AdminLTE/plugins/colorpicker/bootstrap-colorpicker.min.js @@ -0,0 +1 @@ +!function(a){"use strict";var b=function(a){this.value={h:0,s:0,b:0,a:1},this.origFormat=null,a&&(void 0!==a.toLowerCase?this.setColor(a):void 0!==a.h&&(this.value=a))};b.prototype={constructor:b,_sanitizeNumber:function(a){return"number"==typeof a?a:isNaN(a)||null===a||""===a||void 0===a?1:void 0!==a.toLowerCase?parseFloat(a):1},setColor:function(a){a=a.toLowerCase(),this.value=this.stringToHSB(a)||{h:0,s:0,b:0,a:1}},stringToHSB:function(b){b=b.toLowerCase();var c=this,d=!1;return a.each(this.stringParsers,function(a,e){var f=e.re.exec(b),g=f&&e.parse.apply(c,[f]),h=e.format||"rgba";return g?(d=h.match(/hsla?/)?c.RGBtoHSB.apply(c,c.HSLtoRGB.apply(c,g)):c.RGBtoHSB.apply(c,g),c.origFormat=h,!1):!0}),d},setHue:function(a){this.value.h=1-a},setSaturation:function(a){this.value.s=a},setBrightness:function(a){this.value.b=1-a},setAlpha:function(a){this.value.a=parseInt(100*(1-a),10)/100},toRGB:function(a,b,c,d){a=a||this.value.h,b=b||this.value.s,c=c||this.value.b,d=d||this.value.a;var e,f,g,h,i,j,k,l;switch(a&&void 0===b&&void 0===c&&(b=a.s,c=a.v,a=a.h),h=Math.floor(6*a),i=6*a-h,j=c*(1-b),k=c*(1-i*b),l=c*(1-(1-i)*b),h%6){case 0:e=c,f=l,g=j;break;case 1:e=k,f=c,g=j;break;case 2:e=j,f=c,g=l;break;case 3:e=j,f=k,g=c;break;case 4:e=l,f=j,g=c;break;case 5:e=c,f=j,g=k}return{r:Math.floor(255*e),g:Math.floor(255*f),b:Math.floor(255*g),a:d}},toHex:function(a,b,c,d){var e=this.toRGB(a,b,c,d);return"#"+(1<<24|parseInt(e.r)<<16|parseInt(e.g)<<8|parseInt(e.b)).toString(16).substr(1)},toHSL:function(a,b,c,d){a=a||this.value.h,b=b||this.value.s,c=c||this.value.b,d=d||this.value.a;var e=a,f=(2-b)*c,g=b*c;return g/=f>0&&1>=f?f:2-f,f/=2,g>1&&(g=1),{h:e,s:g,l:f,a:d}},RGBtoHSB:function(a,b,c,d){a/=255,b/=255,c/=255;var e,f,g,h;return g=Math.max(a,b,c),h=g-Math.min(a,b,c),e=0===h?null:g===a?(b-c)/h:g===b?(c-a)/h+2:(a-b)/h+4,e=(e+360)%6*60/360,f=0===h?0:h/g,{h:this._sanitizeNumber(e),s:f,b:g,a:this._sanitizeNumber(d)}},HueToRGB:function(a,b,c){return 0>c?c+=1:c>1&&(c-=1),1>6*c?a+(b-a)*c*6:1>2*c?b:2>3*c?a+(b-a)*(2/3-c)*6:a},HSLtoRGB:function(a,b,c,d){0>b&&(b=0);var e;e=.5>=c?c*(1+b):c+b-c*b;var f=2*c-e,g=a+1/3,h=a,i=a-1/3,j=Math.round(255*this.HueToRGB(f,e,g)),k=Math.round(255*this.HueToRGB(f,e,h)),l=Math.round(255*this.HueToRGB(f,e,i));return[j,k,l,this._sanitizeNumber(d)]},toString:function(a){switch(a=a||"rgba"){case"rgb":var b=this.toRGB();return"rgb("+b.r+","+b.g+","+b.b+")";case"rgba":var b=this.toRGB();return"rgba("+b.r+","+b.g+","+b.b+","+b.a+")";case"hsl":var c=this.toHSL();return"hsl("+Math.round(360*c.h)+","+Math.round(100*c.s)+"%,"+Math.round(100*c.l)+"%)";case"hsla":var c=this.toHSL();return"hsla("+Math.round(360*c.h)+","+Math.round(100*c.s)+"%,"+Math.round(100*c.l)+"%,"+c.a+")";case"hex":return this.toHex();default:return!1}},stringParsers:[{re:/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,format:"hex",parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16),1]}},{re:/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,format:"hex",parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16),1]}},{re:/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/,format:"rgb",parse:function(a){return[a[1],a[2],a[3],1]}},{re:/rgb\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/,format:"rgb",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],1]}},{re:/rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],a[4]]}},{re:/hsl\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/,format:"hsl",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/hsla\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,format:"hsla",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/^([a-z]{3,})$/,format:"alias",parse:function(a){var b=this.colorNameToHex(a[0])||"#000000",c=this.stringParsers[0].re.exec(b),d=c&&this.stringParsers[0].parse.apply(this,[c]);return d}}],colorNameToHex:function(a){var b={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c","indigo ":"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};return"undefined"!=typeof b[a.toLowerCase()]?b[a.toLowerCase()]:!1}};var c={horizontal:!1,inline:!1,color:!1,format:!1,input:"input",container:!1,component:".add-on, .input-group-addon",sliders:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setHue"},alpha:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setAlpha"}},slidersHorz:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:100,maxTop:0,callLeft:"setHue",callTop:!1},alpha:{maxLeft:100,maxTop:0,callLeft:"setAlpha",callTop:!1}},template:'