From ce48ca4a21330576a76ca6614a5b56d5a48492f3 Mon Sep 17 00:00:00 2001 From: BarboraFleg Date: Thu, 4 Apr 2019 18:34:40 +0200 Subject: [PATCH] no message --- .gitignore | 1 + .htaccess | 9 + app/bootstrap.php | 22 + app/config/config.local.neon | 7 + app/config/config.neon | 16 + app/model/CalculatorManager.php | 128 ++ app/presenters/CalculatorPresenter.php | 81 + app/presenters/Error4xxPresenter.php | 27 + app/presenters/ErrorPresenter.php | 43 + app/presenters/templates/@layout.latte | 19 + .../templates/Calculator/default.latte | 33 + app/presenters/templates/Error/403.latte | 7 + app/presenters/templates/Error/404.latte | 8 + app/presenters/templates/Error/405.latte | 6 + app/presenters/templates/Error/410.latte | 6 + app/presenters/templates/Error/4xx.latte | 4 + app/presenters/templates/Error/500.phtml | 27 + app/presenters/templates/Error/503.phtml | 24 + app/router/RouterFactory.php | 25 + composer.json | 36 + composer.lock | 1366 ++++++++++++++++ composer.phar | Bin 0 -> 1909682 bytes log/.gitignore | 2 + readme.md | 61 + temp/.gitignore | 2 + vendor/.htaccess | 2 + vendor/autoload.php | 7 + vendor/bin/tester | 14 + vendor/bin/tester.bat | 4 + vendor/composer/ClassLoader.php | 445 +++++ vendor/composer/LICENSE | 21 + vendor/composer/autoload_classmap.php | 374 +++++ vendor/composer/autoload_files.php | 12 + vendor/composer/autoload_namespaces.php | 9 + vendor/composer/autoload_psr4.php | 9 + vendor/composer/autoload_real.php | 70 + vendor/composer/autoload_static.php | 390 +++++ vendor/composer/installed.json | 1344 ++++++++++++++++ vendor/latte/composer.json | 43 + vendor/latte/latte/composer.json | 43 + vendor/latte/latte/contributing.md | 33 + vendor/latte/latte/license.md | 60 + vendor/latte/latte/readme.md | 314 ++++ .../latte/src/Latte/Compiler/Compiler.php | 738 +++++++++ .../latte/src/Latte/Compiler/HtmlNode.php | 56 + .../latte/src/Latte/Compiler/MacroNode.php | 115 ++ .../latte/src/Latte/Compiler/MacroTokens.php | 139 ++ .../latte/latte/src/Latte/Compiler/Parser.php | 462 ++++++ .../latte/src/Latte/Compiler/PhpHelpers.php | 128 ++ .../latte/src/Latte/Compiler/PhpWriter.php | 507 ++++++ .../latte/latte/src/Latte/Compiler/Token.php | 52 + .../src/Latte/Compiler/TokenIterator.php | 226 +++ .../latte/src/Latte/Compiler/Tokenizer.php | 86 + vendor/latte/latte/src/Latte/Engine.php | 370 +++++ vendor/latte/latte/src/Latte/Helpers.php | 70 + vendor/latte/latte/src/Latte/ILoader.php | 38 + vendor/latte/latte/src/Latte/IMacro.php | 47 + .../latte/src/Latte/Loaders/FileLoader.php | 92 ++ .../latte/src/Latte/Loaders/StringLoader.php | 72 + .../latte/src/Latte/Macros/BlockMacros.php | 420 +++++ .../latte/src/Latte/Macros/CoreMacros.php | 515 ++++++ .../latte/latte/src/Latte/Macros/MacroSet.php | 167 ++ .../src/Latte/Runtime/CachingIterator.php | 204 +++ .../src/Latte/Runtime/FilterExecutor.php | 185 +++ .../latte/src/Latte/Runtime/FilterInfo.php | 30 + .../latte/latte/src/Latte/Runtime/Filters.php | 690 ++++++++ vendor/latte/latte/src/Latte/Runtime/Html.php | 36 + .../latte/src/Latte/Runtime/IHtmlString.php | 20 + .../src/Latte/Runtime/ISnippetBridge.php | 32 + .../latte/src/Latte/Runtime/SnippetDriver.php | 107 ++ .../latte/src/Latte/Runtime/Template.php | 308 ++++ vendor/latte/latte/src/Latte/Strict.php | 88 + vendor/latte/latte/src/Latte/exceptions.php | 69 + vendor/latte/latte/src/latte.php | 44 + vendor/nette/application/composer.json | 54 + vendor/nette/application/contributing.md | 33 + vendor/nette/application/license.md | 60 + vendor/nette/application/readme.md | 12 + .../src/Application/Application.php | 225 +++ .../src/Application/ErrorPresenter.php | 53 + .../application/src/Application/Helpers.php | 31 + .../src/Application/IPresenter.php | 21 + .../src/Application/IPresenterFactory.php | 31 + .../application/src/Application/IResponse.php | 24 + .../application/src/Application/IRouter.php | 35 + .../src/Application/LinkGenerator.php | 88 + .../src/Application/MicroPresenter.php | 162 ++ .../src/Application/PresenterFactory.php | 153 ++ .../application/src/Application/Request.php | 237 +++ .../Responses/CallbackResponse.php | 41 + .../Application/Responses/FileResponse.php | 132 ++ .../Application/Responses/ForwardResponse.php | 46 + .../Application/Responses/JsonResponse.php | 66 + .../Responses/RedirectResponse.php | 65 + .../Application/Responses/TextResponse.php | 55 + .../Application/Responses/VoidResponse.php | 25 + .../src/Application/Routers/CliRouter.php | 113 ++ .../src/Application/Routers/Route.php | 793 +++++++++ .../src/Application/Routers/RouteList.php | 130 ++ .../src/Application/Routers/SimpleRouter.php | 150 ++ .../src/Application/UI/BadSignalException.php | 20 + .../src/Application/UI/Component.php | 412 +++++ .../Application/UI/ComponentReflection.php | 354 ++++ .../src/Application/UI/Control.php | 185 +++ .../application/src/Application/UI/Form.php | 150 ++ .../src/Application/UI/IRenderable.php | 28 + .../src/Application/UI/ISignalReceiver.php | 22 + .../src/Application/UI/IStatePersistent.php | 28 + .../src/Application/UI/ITemplate.php | 35 + .../src/Application/UI/ITemplateFactory.php | 21 + .../Application/UI/InvalidLinkException.php | 16 + .../application/src/Application/UI/Link.php | 105 ++ .../src/Application/UI/MethodReflection.php | 63 + .../src/Application/UI/Multiplier.php | 32 + .../src/Application/UI/Presenter.php | 1431 +++++++++++++++++ .../src/Application/exceptions.php | 70 + .../src/Application/templates/error.phtml | 38 + .../ApplicationDI/ApplicationExtension.php | 165 ++ .../Bridges/ApplicationDI/LatteExtension.php | 96 ++ .../PresenterFactoryCallback.php | 61 + .../ApplicationDI/RoutingExtension.php | 87 + .../ApplicationLatte/ILatteFactory.php | 20 + .../src/Bridges/ApplicationLatte/Loader.php | 28 + .../ApplicationLatte/SnippetBridge.php | 94 ++ .../src/Bridges/ApplicationLatte/Template.php | 240 +++ .../ApplicationLatte/TemplateFactory.php | 134 ++ .../src/Bridges/ApplicationLatte/UIMacros.php | 158 ++ .../Bridges/ApplicationLatte/UIRuntime.php | 49 + .../Bridges/ApplicationTracy/RoutingPanel.php | 158 ++ .../templates/RoutingPanel.panel.phtml | 95 ++ .../templates/RoutingPanel.tab.phtml | 13 + .../nette/application/src/compatibility.php | 9 + vendor/nette/bootstrap/composer.json | 52 + vendor/nette/bootstrap/contributing.md | 27 + vendor/nette/bootstrap/license.md | 60 + vendor/nette/bootstrap/readme.md | 61 + .../bootstrap/src/Bootstrap/Configurator.php | 395 +++++ .../src/Bridges/Framework/TracyBridge.php | 74 + vendor/nette/caching/composer.json | 43 + vendor/nette/caching/contributing.md | 33 + vendor/nette/caching/license.md | 60 + vendor/nette/caching/readme.md | 239 +++ .../src/Bridges/CacheDI/CacheExtension.php | 77 + .../src/Bridges/CacheLatte/CacheMacro.php | 140 ++ vendor/nette/caching/src/Caching/Cache.php | 376 +++++ .../nette/caching/src/Caching/IBulkReader.php | 22 + vendor/nette/caching/src/Caching/IStorage.php | 51 + .../caching/src/Caching/OutputHelper.php | 50 + .../src/Caching/Storages/DevNullStorage.php | 43 + .../src/Caching/Storages/FileStorage.php | 386 +++++ .../caching/src/Caching/Storages/IJournal.php | 29 + .../src/Caching/Storages/MemcachedStorage.php | 165 ++ .../src/Caching/Storages/MemoryStorage.php | 53 + .../Caching/Storages/NewMemcachedStorage.php | 193 +++ .../src/Caching/Storages/SQLiteJournal.php | 145 ++ .../src/Caching/Storages/SQLiteStorage.php | 137 ++ vendor/nette/component-model/composer.json | 38 + vendor/nette/component-model/contributing.md | 33 + vendor/nette/component-model/license.md | 60 + vendor/nette/component-model/readme.md | 29 + .../src/ComponentModel/ArrayAccess.php | 64 + .../src/ComponentModel/Component.php | 340 ++++ .../src/ComponentModel/Container.php | 244 +++ .../src/ComponentModel/IComponent.php | 36 + .../src/ComponentModel/IContainer.php | 41 + .../RecursiveComponentIterator.php | 45 + vendor/nette/database/appveyor.yml | 41 + vendor/nette/database/composer.json | 41 + vendor/nette/database/contributing.md | 33 + vendor/nette/database/license.md | 60 + vendor/nette/database/readme.md | 18 + .../Bridges/DatabaseDI/DatabaseExtension.php | 131 ++ .../Bridges/DatabaseTracy/ConnectionPanel.php | 140 ++ .../templates/ConnectionPanel.panel.phtml | 60 + .../templates/ConnectionPanel.tab.phtml | 9 + .../database/src/Database/Connection.php | 293 ++++ .../nette/database/src/Database/Context.php | 191 +++ .../AmbiguousReferenceKeyException.php | 16 + .../Conventions/DiscoveredConventions.php | 101 ++ .../Conventions/StaticConventions.php | 79 + .../database/src/Database/DriverException.php | 63 + .../src/Database/Drivers/MsSqlDriver.php | 121 ++ .../src/Database/Drivers/MySqlDriver.php | 222 +++ .../src/Database/Drivers/OciDriver.php | 155 ++ .../src/Database/Drivers/OdbcDriver.php | 120 ++ .../src/Database/Drivers/PgSqlDriver.php | 256 +++ .../src/Database/Drivers/Sqlite2Driver.php | 33 + .../src/Database/Drivers/SqliteDriver.php | 261 +++ .../src/Database/Drivers/SqlsrvDriver.php | 256 +++ .../nette/database/src/Database/Helpers.php | 298 ++++ .../database/src/Database/IConventions.php | 46 + vendor/nette/database/src/Database/IRow.php | 16 + .../database/src/Database/IRowContainer.php | 43 + .../database/src/Database/IStructure.php | 91 ++ .../src/Database/ISupplementalDriver.php | 121 ++ .../nette/database/src/Database/ResultSet.php | 328 ++++ vendor/nette/database/src/Database/Row.php | 55 + .../database/src/Database/SqlLiteral.php | 50 + .../database/src/Database/SqlPreprocessor.php | 279 ++++ .../nette/database/src/Database/Structure.php | 284 ++++ .../database/src/Database/Table/ActiveRow.php | 346 ++++ .../src/Database/Table/ColumnAccessCache.php | 193 +++ .../src/Database/Table/GroupedSelection.php | 268 +++ .../database/src/Database/Table/IRow.php | 54 + .../src/Database/Table/IRowContainer.php | 21 + .../src/Database/Table/ReferenceCache.php | 59 + .../database/src/Database/Table/Selection.php | 1102 +++++++++++++ .../src/Database/Table/SqlBuilder.php | 897 +++++++++++ .../database/src/Database/exceptions.php | 48 + vendor/nette/di/.phpstorm.meta.php | 5 + vendor/nette/di/composer.json | 41 + vendor/nette/di/contributing.md | 33 + vendor/nette/di/license.md | 60 + vendor/nette/di/readme.md | 330 ++++ .../di/src/Bridges/DITracy/ContainerPanel.php | 85 + .../templates/ContainerPanel.panel.phtml | 70 + .../templates/ContainerPanel.tab.phtml | 10 + vendor/nette/di/src/DI/Autowiring.php | 151 ++ vendor/nette/di/src/DI/Compiler.php | 507 ++++++ vendor/nette/di/src/DI/CompilerExtension.php | 143 ++ vendor/nette/di/src/DI/Config/Adapter.php | 28 + .../di/src/DI/Config/Adapters/IniAdapter.php | 151 ++ .../di/src/DI/Config/Adapters/NeonAdapter.php | 139 ++ .../di/src/DI/Config/Adapters/PhpAdapter.php | 39 + .../di/src/DI/Config/DefinitionSchema.php | 254 +++ vendor/nette/di/src/DI/Config/Helpers.php | 87 + vendor/nette/di/src/DI/Config/IAdapter.php | 29 + vendor/nette/di/src/DI/Config/Loader.php | 137 ++ vendor/nette/di/src/DI/Container.php | 345 ++++ vendor/nette/di/src/DI/ContainerBuilder.php | 880 ++++++++++ vendor/nette/di/src/DI/ContainerLoader.php | 131 ++ .../src/DI/Definitions/AccessorDefinition.php | 122 ++ .../di/src/DI/Definitions/Definition.php | 227 +++ .../src/DI/Definitions/FactoryDefinition.php | 303 ++++ .../src/DI/Definitions/ImportedDefinition.php | 57 + .../src/DI/Definitions/LocatorDefinition.php | 171 ++ .../nette/di/src/DI/Definitions/Reference.php | 65 + .../src/DI/Definitions/ServiceDefinition.php | 270 ++++ .../nette/di/src/DI/Definitions/Statement.php | 72 + vendor/nette/di/src/DI/DependencyChecker.php | 176 ++ vendor/nette/di/src/DI/DynamicParameter.php | 20 + .../src/DI/Extensions/ConstantsExtension.php | 24 + .../di/src/DI/Extensions/DIExtension.php | 67 + .../src/DI/Extensions/DecoratorExtension.php | 68 + .../src/DI/Extensions/ExtensionsExtension.php | 32 + .../di/src/DI/Extensions/InjectExtension.php | 144 ++ .../src/DI/Extensions/ParametersExtension.php | 64 + .../di/src/DI/Extensions/PhpExtension.php | 48 + .../di/src/DI/Extensions/SearchExtension.php | 135 ++ .../src/DI/Extensions/ServicesExtension.php | 244 +++ vendor/nette/di/src/DI/Helpers.php | 255 +++ vendor/nette/di/src/DI/PhpGenerator.php | 275 ++++ vendor/nette/di/src/DI/PhpReflection.php | 273 ++++ vendor/nette/di/src/DI/Resolver.php | 533 ++++++ vendor/nette/di/src/DI/ServiceDefinition.php | 381 +++++ vendor/nette/di/src/DI/Statement.php | 60 + vendor/nette/di/src/DI/exceptions.php | 31 + vendor/nette/di/src/compatibility.php | 12 + vendor/nette/finder/composer.json | 37 + vendor/nette/finder/contributing.md | 33 + vendor/nette/finder/license.md | 60 + vendor/nette/finder/readme.md | 181 +++ vendor/nette/finder/src/Utils/Finder.php | 380 +++++ vendor/nette/forms/bower.json | 27 + vendor/nette/forms/composer.json | 41 + vendor/nette/forms/contributing.md | 33 + vendor/nette/forms/examples/assets/logo.png | Bin 0 -> 1346 bytes vendor/nette/forms/examples/assets/style.css | 72 + vendor/nette/forms/examples/basic-example.php | 131 ++ .../forms/examples/bootstrap2-rendering.php | 95 ++ .../forms/examples/bootstrap3-rendering.php | 98 ++ .../forms/examples/bootstrap4-rendering.php | 104 ++ vendor/nette/forms/examples/containers.php | 62 + .../nette/forms/examples/custom-control.php | 148 ++ .../nette/forms/examples/custom-rendering.php | 125 ++ .../nette/forms/examples/custom-validator.php | 62 + vendor/nette/forms/examples/html5.php | 64 + .../nette/forms/examples/live-validation.php | 104 ++ vendor/nette/forms/examples/localization.ini | 12 + vendor/nette/forms/examples/localization.php | 87 + .../nette/forms/examples/manual-rendering.php | 95 ++ vendor/nette/forms/license.md | 60 + vendor/nette/forms/package.json | 21 + vendor/nette/forms/readme.md | 69 + .../src/Bridges/FormsDI/FormsExtension.php | 38 + .../src/Bridges/FormsLatte/FormMacros.php | 257 +++ .../forms/src/Bridges/FormsLatte/Runtime.php | 74 + vendor/nette/forms/src/Forms/Container.php | 545 +++++++ vendor/nette/forms/src/Forms/ControlGroup.php | 134 ++ .../forms/src/Forms/Controls/BaseControl.php | 619 +++++++ .../nette/forms/src/Forms/Controls/Button.php | 65 + .../forms/src/Forms/Controls/Checkbox.php | 106 ++ .../forms/src/Forms/Controls/CheckboxList.php | 141 ++ .../src/Forms/Controls/ChoiceControl.php | 166 ++ .../src/Forms/Controls/CsrfProtection.php | 125 ++ .../forms/src/Forms/Controls/HiddenField.php | 88 + .../forms/src/Forms/Controls/ImageButton.php | 51 + .../src/Forms/Controls/MultiChoiceControl.php | 183 +++ .../src/Forms/Controls/MultiSelectBox.php | 86 + .../forms/src/Forms/Controls/RadioList.php | 147 ++ .../forms/src/Forms/Controls/SelectBox.php | 129 ++ .../forms/src/Forms/Controls/SubmitButton.php | 121 ++ .../forms/src/Forms/Controls/TextArea.php | 39 + .../forms/src/Forms/Controls/TextBase.php | 154 ++ .../forms/src/Forms/Controls/TextInput.php | 115 ++ .../src/Forms/Controls/UploadControl.php | 114 ++ vendor/nette/forms/src/Forms/Form.php | 725 +++++++++ vendor/nette/forms/src/Forms/Helpers.php | 233 +++ vendor/nette/forms/src/Forms/IControl.php | 46 + .../nette/forms/src/Forms/IFormRenderer.php | 22 + .../forms/src/Forms/ISubmitterControl.php | 22 + .../Forms/Rendering/DefaultFormRenderer.php | 487 ++++++ vendor/nette/forms/src/Forms/Rule.php | 37 + vendor/nette/forms/src/Forms/Rules.php | 356 ++++ vendor/nette/forms/src/Forms/Validator.php | 379 +++++ vendor/nette/forms/src/assets/netteForms.js | 771 +++++++++ .../nette/forms/src/assets/netteForms.min.js | 22 + vendor/nette/http/appveyor.yml | 29 + vendor/nette/http/composer.json | 42 + vendor/nette/http/contributing.md | 33 + vendor/nette/http/license.md | 60 + vendor/nette/http/readme.md | 222 +++ .../http/src/Bridges/HttpDI/HttpExtension.php | 160 ++ .../src/Bridges/HttpDI/SessionExtension.php | 95 ++ .../src/Bridges/HttpTracy/SessionPanel.php | 43 + .../templates/SessionPanel.panel.phtml | 36 + .../templates/SessionPanel.tab.phtml | 8 + vendor/nette/http/src/Http/Context.php | 100 ++ vendor/nette/http/src/Http/FileUpload.php | 215 +++ vendor/nette/http/src/Http/Helpers.php | 74 + vendor/nette/http/src/Http/IRequest.php | 138 ++ vendor/nette/http/src/Http/IResponse.php | 179 +++ .../nette/http/src/Http/ISessionStorage.php | 29 + vendor/nette/http/src/Http/Request.php | 339 ++++ vendor/nette/http/src/Http/RequestFactory.php | 287 ++++ vendor/nette/http/src/Http/Response.php | 322 ++++ vendor/nette/http/src/Http/Session.php | 546 +++++++ vendor/nette/http/src/Http/SessionSection.php | 223 +++ vendor/nette/http/src/Http/Url.php | 514 ++++++ vendor/nette/http/src/Http/UrlImmutable.php | 332 ++++ vendor/nette/http/src/Http/UrlScript.php | 81 + vendor/nette/http/src/Http/UserStorage.php | 192 +++ vendor/nette/mail/composer.json | 42 + vendor/nette/mail/contributing.md | 33 + vendor/nette/mail/license.md | 60 + vendor/nette/mail/readme.md | 86 + .../mail/src/Bridges/MailDI/MailExtension.php | 49 + vendor/nette/mail/src/Mail/FallbackMailer.php | 85 + vendor/nette/mail/src/Mail/IMailer.php | 23 + vendor/nette/mail/src/Mail/Message.php | 444 +++++ vendor/nette/mail/src/Mail/MimePart.php | 331 ++++ vendor/nette/mail/src/Mail/SendmailMailer.php | 56 + vendor/nette/mail/src/Mail/SmtpMailer.php | 220 +++ vendor/nette/mail/src/Mail/exceptions.php | 33 + vendor/nette/neon/composer.json | 35 + vendor/nette/neon/contributing.md | 33 + vendor/nette/neon/license.md | 60 + vendor/nette/neon/readme.md | 96 ++ vendor/nette/neon/src/Neon/Decoder.php | 358 +++++ vendor/nette/neon/src/Neon/Encoder.php | 84 + vendor/nette/neon/src/Neon/Entity.php | 36 + vendor/nette/neon/src/Neon/Exception.php | 18 + vendor/nette/neon/src/Neon/Neon.php | 42 + vendor/nette/neon/src/neon.php | 9 + vendor/nette/neon/syntax.txt | 32 + vendor/nette/php-generator/composer.json | 37 + vendor/nette/php-generator/contributing.md | 33 + vendor/nette/php-generator/license.md | 60 + vendor/nette/php-generator/readme.md | 512 ++++++ .../src/PhpGenerator/ClassType.php | 495 ++++++ .../src/PhpGenerator/Closure.php | 70 + .../src/PhpGenerator/Constant.php | 43 + .../src/PhpGenerator/Factory.php | 134 ++ .../src/PhpGenerator/GlobalFunction.php | 44 + .../src/PhpGenerator/Helpers.php | 273 ++++ .../php-generator/src/PhpGenerator/Method.php | 134 ++ .../src/PhpGenerator/Parameter.php | 122 ++ .../src/PhpGenerator/PhpFile.php | 115 ++ .../src/PhpGenerator/PhpLiteral.php | 32 + .../src/PhpGenerator/PhpNamespace.php | 199 +++ .../src/PhpGenerator/Printer.php | 226 +++ .../src/PhpGenerator/Property.php | 64 + .../src/PhpGenerator/PsrPrinter.php | 23 + .../src/PhpGenerator/Traits/CommentAware.php | 46 + .../src/PhpGenerator/Traits/FunctionLike.php | 189 +++ .../src/PhpGenerator/Traits/NameAware.php | 49 + .../PhpGenerator/Traits/VisibilityAware.php | 43 + vendor/nette/reflection/composer.json | 40 + vendor/nette/reflection/contributing.md | 33 + vendor/nette/reflection/license.md | 60 + vendor/nette/reflection/readme.md | 89 + .../ReflectionDI/ReflectionExtension.php | 34 + .../reflection/src/Reflection/Annotation.php | 36 + .../src/Reflection/AnnotationsParser.php | 419 +++++ .../reflection/src/Reflection/ClassType.php | 204 +++ .../reflection/src/Reflection/Extension.php | 46 + .../src/Reflection/GlobalFunction.php | 133 ++ .../reflection/src/Reflection/Helpers.php | 31 + .../reflection/src/Reflection/IAnnotation.php | 17 + .../reflection/src/Reflection/Method.php | 167 ++ .../reflection/src/Reflection/Parameter.php | 90 ++ .../reflection/src/Reflection/Property.php | 96 ++ vendor/nette/robot-loader/composer.json | 39 + vendor/nette/robot-loader/contributing.md | 33 + vendor/nette/robot-loader/license.md | 60 + vendor/nette/robot-loader/readme.md | 113 ++ .../src/RobotLoader/RobotLoader.php | 486 ++++++ vendor/nette/routing/composer.json | 35 + vendor/nette/routing/contributing.md | 33 + vendor/nette/routing/license.md | 60 + vendor/nette/routing/readme.md | 326 ++++ vendor/nette/routing/src/Routing/Route.php | 576 +++++++ .../nette/routing/src/Routing/RouteList.php | 275 ++++ vendor/nette/routing/src/Routing/Router.php | 32 + .../routing/src/Routing/SimpleRouter.php | 72 + vendor/nette/schema/composer.json | 34 + vendor/nette/schema/contributing.md | 33 + vendor/nette/schema/license.md | 60 + vendor/nette/schema/readme.md | 304 ++++ vendor/nette/schema/src/Schema/Context.php | 39 + .../schema/src/Schema/DynamicParameter.php | 15 + .../schema/src/Schema/Elements/AnyOf.php | 102 ++ .../nette/schema/src/Schema/Elements/Base.php | 137 ++ .../schema/src/Schema/Elements/Structure.php | 175 ++ .../nette/schema/src/Schema/Elements/Type.php | 152 ++ vendor/nette/schema/src/Schema/Expect.php | 115 ++ vendor/nette/schema/src/Schema/Helpers.php | 86 + vendor/nette/schema/src/Schema/Processor.php | 93 ++ vendor/nette/schema/src/Schema/Schema.php | 37 + .../schema/src/Schema/ValidationException.php | 35 + vendor/nette/security/composer.json | 39 + vendor/nette/security/contributing.md | 33 + vendor/nette/security/license.md | 60 + vendor/nette/security/readme.md | 364 +++++ .../Bridges/SecurityDI/SecurityExtension.php | 96 ++ .../src/Bridges/SecurityTracy/UserPanel.php | 59 + .../templates/UserPanel.panel.phtml | 12 + .../templates/UserPanel.tab.phtml | 8 + .../src/Security/AuthenticationException.php | 16 + .../security/src/Security/IAuthenticator.php | 35 + .../security/src/Security/IAuthorizator.php | 34 + .../nette/security/src/Security/IIdentity.php | 28 + .../nette/security/src/Security/IResource.php | 22 + vendor/nette/security/src/Security/IRole.php | 22 + .../security/src/Security/IUserStorage.php | 65 + .../nette/security/src/Security/Identity.php | 145 ++ .../nette/security/src/Security/Passwords.php | 60 + .../security/src/Security/Permission.php | 803 +++++++++ .../src/Security/SimpleAuthenticator.php | 58 + vendor/nette/security/src/Security/User.php | 264 +++ vendor/nette/tester/appveyor.yml | 40 + vendor/nette/tester/composer.json | 27 + vendor/nette/tester/contributing.md | 33 + vendor/nette/tester/license.md | 49 + vendor/nette/tester/readme.md | 213 +++ .../tester/src/CodeCoverage/Collector.php | 194 +++ .../Generators/AbstractGenerator.php | 131 ++ .../Generators/CloverXMLGenerator.php | 219 +++ .../CodeCoverage/Generators/HtmlGenerator.php | 110 ++ .../CodeCoverage/Generators/template.phtml | 210 +++ .../tester/src/CodeCoverage/PhpParser.php | 183 +++ vendor/nette/tester/src/Framework/Assert.php | 616 +++++++ .../tester/src/Framework/AssertException.php | 43 + .../tester/src/Framework/DataProvider.php | 113 ++ .../nette/tester/src/Framework/DomQuery.php | 138 ++ vendor/nette/tester/src/Framework/Dumper.php | 382 +++++ .../tester/src/Framework/Environment.php | 214 +++ vendor/nette/tester/src/Framework/Expect.php | 122 ++ .../nette/tester/src/Framework/FileMock.php | 206 +++ .../tester/src/Framework/FileMutator.php | 222 +++ vendor/nette/tester/src/Framework/Helpers.php | 121 ++ .../nette/tester/src/Framework/TestCase.php | 208 +++ vendor/nette/tester/src/Runner/CliTester.php | 335 ++++ .../nette/tester/src/Runner/CommandLine.php | 172 ++ vendor/nette/tester/src/Runner/Job.php | 205 +++ .../src/Runner/Output/ConsolePrinter.php | 132 ++ .../tester/src/Runner/Output/JUnitPrinter.php | 86 + .../nette/tester/src/Runner/Output/Logger.php | 87 + .../tester/src/Runner/Output/TapPrinter.php | 67 + .../nette/tester/src/Runner/OutputHandler.php | 25 + .../tester/src/Runner/PhpInterpreter.php | 139 ++ vendor/nette/tester/src/Runner/Runner.php | 284 ++++ vendor/nette/tester/src/Runner/Test.php | 125 ++ .../nette/tester/src/Runner/TestHandler.php | 239 +++ vendor/nette/tester/src/Runner/info.php | 44 + vendor/nette/tester/src/bootstrap.php | 23 + vendor/nette/tester/src/tester | 6 + vendor/nette/tester/src/tester.php | 36 + .../tester/tools/create-phar/create-phar.php | 38 + vendor/nette/utils/.phpstorm.meta.php | 18 + vendor/nette/utils/composer.json | 45 + vendor/nette/utils/contributing.md | 33 + vendor/nette/utils/license.md | 60 + vendor/nette/utils/readme.md | 154 ++ .../utils/src/Iterators/CachingIterator.php | 175 ++ vendor/nette/utils/src/Iterators/Mapper.php | 32 + vendor/nette/utils/src/Utils/ArrayHash.php | 99 ++ vendor/nette/utils/src/Utils/ArrayList.php | 125 ++ vendor/nette/utils/src/Utils/Arrays.php | 296 ++++ vendor/nette/utils/src/Utils/Callback.php | 197 +++ vendor/nette/utils/src/Utils/DateTime.php | 149 ++ vendor/nette/utils/src/Utils/FileSystem.php | 164 ++ vendor/nette/utils/src/Utils/Html.php | 668 ++++++++ vendor/nette/utils/src/Utils/IHtmlString.php | 18 + vendor/nette/utils/src/Utils/ITranslator.php | 24 + vendor/nette/utils/src/Utils/Image.php | 654 ++++++++ vendor/nette/utils/src/Utils/Json.php | 81 + vendor/nette/utils/src/Utils/LegacyObject.php | 161 ++ .../nette/utils/src/Utils/ObjectHelpers.php | 184 +++ vendor/nette/utils/src/Utils/ObjectMixin.php | 493 ++++++ vendor/nette/utils/src/Utils/Paginator.php | 227 +++ vendor/nette/utils/src/Utils/Random.php | 80 + vendor/nette/utils/src/Utils/Reflection.php | 316 ++++ vendor/nette/utils/src/Utils/SmartObject.php | 231 +++ vendor/nette/utils/src/Utils/StaticClass.php | 34 + vendor/nette/utils/src/Utils/Strings.php | 599 +++++++ vendor/nette/utils/src/Utils/Validators.php | 362 +++++ vendor/nette/utils/src/Utils/exceptions.php | 157 ++ vendor/nette/utils/src/loader.php | 16 + vendor/tracy/tracy/.eslintrc.js | 21 + vendor/tracy/tracy/appveyor.yml | 33 + vendor/tracy/tracy/composer.json | 41 + vendor/tracy/tracy/contributing.md | 33 + vendor/tracy/tracy/examples/ajax.php | 81 + .../tracy/examples/assets/E_COMPILE_ERROR.php | 5 + vendor/tracy/tracy/examples/assets/arrow.png | Bin 0 -> 817 bytes vendor/tracy/tracy/examples/assets/style.css | 28 + vendor/tracy/tracy/examples/barDump.php | 32 + vendor/tracy/tracy/examples/dump-snapshot.php | 56 + vendor/tracy/tracy/examples/dump.php | 50 + vendor/tracy/tracy/examples/exception.php | 52 + vendor/tracy/tracy/examples/fatal-error.php | 24 + vendor/tracy/tracy/examples/firelogger.php | 45 + vendor/tracy/tracy/examples/notice.php | 33 + .../tracy/tracy/examples/output-debugger.php | 17 + vendor/tracy/tracy/examples/preloading.php | 37 + vendor/tracy/tracy/examples/redirect.php | 36 + vendor/tracy/tracy/examples/warning.php | 26 + vendor/tracy/tracy/license.md | 55 + vendor/tracy/tracy/readme.md | 356 ++++ .../tracy/tracy/src/Bridges/Nette/Bridge.php | 136 ++ .../tracy/src/Bridges/Nette/MailSender.php | 57 + .../src/Bridges/Nette/TracyExtension.php | 136 ++ .../Bridges/Psr/PsrToTracyLoggerAdapter.php | 62 + .../Bridges/Psr/TracyToPsrLoggerAdapter.php | 61 + vendor/tracy/tracy/src/Tracy/Bar/Bar.php | 240 +++ .../tracy/src/Tracy/Bar/DefaultBarPanel.php | 54 + .../tracy/tracy/src/Tracy/Bar/IBarPanel.php | 30 + .../tracy/tracy/src/Tracy/Bar/assets/bar.css | 397 +++++ .../tracy/tracy/src/Tracy/Bar/assets/bar.js | 684 ++++++++ .../tracy/src/Tracy/Bar/assets/bar.phtml | 37 + .../tracy/src/Tracy/Bar/assets/loader.phtml | 32 + .../tracy/src/Tracy/Bar/assets/panels.phtml | 35 + .../src/Tracy/Bar/panels/dumps.panel.phtml | 35 + .../src/Tracy/Bar/panels/dumps.tab.phtml | 19 + .../src/Tracy/Bar/panels/errors.panel.phtml | 26 + .../src/Tracy/Bar/panels/errors.tab.phtml | 31 + .../src/Tracy/Bar/panels/info.panel.phtml | 120 ++ .../tracy/src/Tracy/Bar/panels/info.tab.phtml | 20 + .../tracy/src/Tracy/BlueScreen/BlueScreen.php | 357 ++++ .../Tracy/BlueScreen/assets/bluescreen.css | 372 +++++ .../src/Tracy/BlueScreen/assets/bluescreen.js | 71 + .../src/Tracy/BlueScreen/assets/content.phtml | 348 ++++ .../src/Tracy/BlueScreen/assets/page.phtml | 55 + .../tracy/src/Tracy/Debugger/Debugger.php | 600 +++++++ .../src/Tracy/Debugger/assets/error.500.phtml | 41 + .../tracy/tracy/src/Tracy/Dumper/Dumper.php | 667 ++++++++ .../tracy/src/Tracy/Dumper/assets/dumper.css | 70 + .../tracy/src/Tracy/Dumper/assets/dumper.js | 214 +++ vendor/tracy/tracy/src/Tracy/Helpers.php | 305 ++++ .../tracy/src/Tracy/Logger/FireLogger.php | 180 +++ .../tracy/tracy/src/Tracy/Logger/ILogger.php | 27 + .../tracy/tracy/src/Tracy/Logger/Logger.php | 200 +++ .../Tracy/OutputDebugger/OutputDebugger.php | 80 + .../tracy/src/Tracy/TableSort/table-sort.css | 15 + .../tracy/src/Tracy/TableSort/table-sort.js | 43 + .../tracy/tracy/src/Tracy/Toggle/toggle.css | 29 + vendor/tracy/tracy/src/Tracy/Toggle/toggle.js | 107 ++ vendor/tracy/tracy/src/Tracy/shortcuts.php | 46 + vendor/tracy/tracy/src/tracy.php | 22 + .../tracy/tools/create-phar/create-phar.php | 84 + .../tools/open-in-editor/linux/install.sh | 38 + .../tools/open-in-editor/linux/open-editor.sh | 101 ++ .../tools/open-in-editor/windows/install.cmd | 8 + .../open-in-editor/windows/open-editor.js | 81 + www/.htaccess | 32 + www/favicon.ico | Bin 0 -> 2550 bytes www/index.php | 6 + www/robots.txt | 0 589 files changed, 82184 insertions(+) create mode 100644 .gitignore create mode 100644 .htaccess create mode 100644 app/bootstrap.php create mode 100644 app/config/config.local.neon create mode 100644 app/config/config.neon create mode 100644 app/model/CalculatorManager.php create mode 100644 app/presenters/CalculatorPresenter.php create mode 100644 app/presenters/Error4xxPresenter.php create mode 100644 app/presenters/ErrorPresenter.php create mode 100644 app/presenters/templates/@layout.latte create mode 100644 app/presenters/templates/Calculator/default.latte create mode 100644 app/presenters/templates/Error/403.latte create mode 100644 app/presenters/templates/Error/404.latte create mode 100644 app/presenters/templates/Error/405.latte create mode 100644 app/presenters/templates/Error/410.latte create mode 100644 app/presenters/templates/Error/4xx.latte create mode 100644 app/presenters/templates/Error/500.phtml create mode 100644 app/presenters/templates/Error/503.phtml create mode 100644 app/router/RouterFactory.php create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 composer.phar create mode 100644 log/.gitignore create mode 100644 readme.md create mode 100644 temp/.gitignore create mode 100644 vendor/.htaccess create mode 100644 vendor/autoload.php create mode 100644 vendor/bin/tester create mode 100644 vendor/bin/tester.bat create mode 100644 vendor/composer/ClassLoader.php create mode 100644 vendor/composer/LICENSE create mode 100644 vendor/composer/autoload_classmap.php create mode 100644 vendor/composer/autoload_files.php create mode 100644 vendor/composer/autoload_namespaces.php create mode 100644 vendor/composer/autoload_psr4.php create mode 100644 vendor/composer/autoload_real.php create mode 100644 vendor/composer/autoload_static.php create mode 100644 vendor/composer/installed.json create mode 100644 vendor/latte/composer.json create mode 100644 vendor/latte/latte/composer.json create mode 100644 vendor/latte/latte/contributing.md create mode 100644 vendor/latte/latte/license.md create mode 100644 vendor/latte/latte/readme.md create mode 100644 vendor/latte/latte/src/Latte/Compiler/Compiler.php create mode 100644 vendor/latte/latte/src/Latte/Compiler/HtmlNode.php create mode 100644 vendor/latte/latte/src/Latte/Compiler/MacroNode.php create mode 100644 vendor/latte/latte/src/Latte/Compiler/MacroTokens.php create mode 100644 vendor/latte/latte/src/Latte/Compiler/Parser.php create mode 100644 vendor/latte/latte/src/Latte/Compiler/PhpHelpers.php create mode 100644 vendor/latte/latte/src/Latte/Compiler/PhpWriter.php create mode 100644 vendor/latte/latte/src/Latte/Compiler/Token.php create mode 100644 vendor/latte/latte/src/Latte/Compiler/TokenIterator.php create mode 100644 vendor/latte/latte/src/Latte/Compiler/Tokenizer.php create mode 100644 vendor/latte/latte/src/Latte/Engine.php create mode 100644 vendor/latte/latte/src/Latte/Helpers.php create mode 100644 vendor/latte/latte/src/Latte/ILoader.php create mode 100644 vendor/latte/latte/src/Latte/IMacro.php create mode 100644 vendor/latte/latte/src/Latte/Loaders/FileLoader.php create mode 100644 vendor/latte/latte/src/Latte/Loaders/StringLoader.php create mode 100644 vendor/latte/latte/src/Latte/Macros/BlockMacros.php create mode 100644 vendor/latte/latte/src/Latte/Macros/CoreMacros.php create mode 100644 vendor/latte/latte/src/Latte/Macros/MacroSet.php create mode 100644 vendor/latte/latte/src/Latte/Runtime/CachingIterator.php create mode 100644 vendor/latte/latte/src/Latte/Runtime/FilterExecutor.php create mode 100644 vendor/latte/latte/src/Latte/Runtime/FilterInfo.php create mode 100644 vendor/latte/latte/src/Latte/Runtime/Filters.php create mode 100644 vendor/latte/latte/src/Latte/Runtime/Html.php create mode 100644 vendor/latte/latte/src/Latte/Runtime/IHtmlString.php create mode 100644 vendor/latte/latte/src/Latte/Runtime/ISnippetBridge.php create mode 100644 vendor/latte/latte/src/Latte/Runtime/SnippetDriver.php create mode 100644 vendor/latte/latte/src/Latte/Runtime/Template.php create mode 100644 vendor/latte/latte/src/Latte/Strict.php create mode 100644 vendor/latte/latte/src/Latte/exceptions.php create mode 100644 vendor/latte/latte/src/latte.php create mode 100644 vendor/nette/application/composer.json create mode 100644 vendor/nette/application/contributing.md create mode 100644 vendor/nette/application/license.md create mode 100644 vendor/nette/application/readme.md create mode 100644 vendor/nette/application/src/Application/Application.php create mode 100644 vendor/nette/application/src/Application/ErrorPresenter.php create mode 100644 vendor/nette/application/src/Application/Helpers.php create mode 100644 vendor/nette/application/src/Application/IPresenter.php create mode 100644 vendor/nette/application/src/Application/IPresenterFactory.php create mode 100644 vendor/nette/application/src/Application/IResponse.php create mode 100644 vendor/nette/application/src/Application/IRouter.php create mode 100644 vendor/nette/application/src/Application/LinkGenerator.php create mode 100644 vendor/nette/application/src/Application/MicroPresenter.php create mode 100644 vendor/nette/application/src/Application/PresenterFactory.php create mode 100644 vendor/nette/application/src/Application/Request.php create mode 100644 vendor/nette/application/src/Application/Responses/CallbackResponse.php create mode 100644 vendor/nette/application/src/Application/Responses/FileResponse.php create mode 100644 vendor/nette/application/src/Application/Responses/ForwardResponse.php create mode 100644 vendor/nette/application/src/Application/Responses/JsonResponse.php create mode 100644 vendor/nette/application/src/Application/Responses/RedirectResponse.php create mode 100644 vendor/nette/application/src/Application/Responses/TextResponse.php create mode 100644 vendor/nette/application/src/Application/Responses/VoidResponse.php create mode 100644 vendor/nette/application/src/Application/Routers/CliRouter.php create mode 100644 vendor/nette/application/src/Application/Routers/Route.php create mode 100644 vendor/nette/application/src/Application/Routers/RouteList.php create mode 100644 vendor/nette/application/src/Application/Routers/SimpleRouter.php create mode 100644 vendor/nette/application/src/Application/UI/BadSignalException.php create mode 100644 vendor/nette/application/src/Application/UI/Component.php create mode 100644 vendor/nette/application/src/Application/UI/ComponentReflection.php create mode 100644 vendor/nette/application/src/Application/UI/Control.php create mode 100644 vendor/nette/application/src/Application/UI/Form.php create mode 100644 vendor/nette/application/src/Application/UI/IRenderable.php create mode 100644 vendor/nette/application/src/Application/UI/ISignalReceiver.php create mode 100644 vendor/nette/application/src/Application/UI/IStatePersistent.php create mode 100644 vendor/nette/application/src/Application/UI/ITemplate.php create mode 100644 vendor/nette/application/src/Application/UI/ITemplateFactory.php create mode 100644 vendor/nette/application/src/Application/UI/InvalidLinkException.php create mode 100644 vendor/nette/application/src/Application/UI/Link.php create mode 100644 vendor/nette/application/src/Application/UI/MethodReflection.php create mode 100644 vendor/nette/application/src/Application/UI/Multiplier.php create mode 100644 vendor/nette/application/src/Application/UI/Presenter.php create mode 100644 vendor/nette/application/src/Application/exceptions.php create mode 100644 vendor/nette/application/src/Application/templates/error.phtml create mode 100644 vendor/nette/application/src/Bridges/ApplicationDI/ApplicationExtension.php create mode 100644 vendor/nette/application/src/Bridges/ApplicationDI/LatteExtension.php create mode 100644 vendor/nette/application/src/Bridges/ApplicationDI/PresenterFactoryCallback.php create mode 100644 vendor/nette/application/src/Bridges/ApplicationDI/RoutingExtension.php create mode 100644 vendor/nette/application/src/Bridges/ApplicationLatte/ILatteFactory.php create mode 100644 vendor/nette/application/src/Bridges/ApplicationLatte/Loader.php create mode 100644 vendor/nette/application/src/Bridges/ApplicationLatte/SnippetBridge.php create mode 100644 vendor/nette/application/src/Bridges/ApplicationLatte/Template.php create mode 100644 vendor/nette/application/src/Bridges/ApplicationLatte/TemplateFactory.php create mode 100644 vendor/nette/application/src/Bridges/ApplicationLatte/UIMacros.php create mode 100644 vendor/nette/application/src/Bridges/ApplicationLatte/UIRuntime.php create mode 100644 vendor/nette/application/src/Bridges/ApplicationTracy/RoutingPanel.php create mode 100644 vendor/nette/application/src/Bridges/ApplicationTracy/templates/RoutingPanel.panel.phtml create mode 100644 vendor/nette/application/src/Bridges/ApplicationTracy/templates/RoutingPanel.tab.phtml create mode 100644 vendor/nette/application/src/compatibility.php create mode 100644 vendor/nette/bootstrap/composer.json create mode 100644 vendor/nette/bootstrap/contributing.md create mode 100644 vendor/nette/bootstrap/license.md create mode 100644 vendor/nette/bootstrap/readme.md create mode 100644 vendor/nette/bootstrap/src/Bootstrap/Configurator.php create mode 100644 vendor/nette/bootstrap/src/Bridges/Framework/TracyBridge.php create mode 100644 vendor/nette/caching/composer.json create mode 100644 vendor/nette/caching/contributing.md create mode 100644 vendor/nette/caching/license.md create mode 100644 vendor/nette/caching/readme.md create mode 100644 vendor/nette/caching/src/Bridges/CacheDI/CacheExtension.php create mode 100644 vendor/nette/caching/src/Bridges/CacheLatte/CacheMacro.php create mode 100644 vendor/nette/caching/src/Caching/Cache.php create mode 100644 vendor/nette/caching/src/Caching/IBulkReader.php create mode 100644 vendor/nette/caching/src/Caching/IStorage.php create mode 100644 vendor/nette/caching/src/Caching/OutputHelper.php create mode 100644 vendor/nette/caching/src/Caching/Storages/DevNullStorage.php create mode 100644 vendor/nette/caching/src/Caching/Storages/FileStorage.php create mode 100644 vendor/nette/caching/src/Caching/Storages/IJournal.php create mode 100644 vendor/nette/caching/src/Caching/Storages/MemcachedStorage.php create mode 100644 vendor/nette/caching/src/Caching/Storages/MemoryStorage.php create mode 100644 vendor/nette/caching/src/Caching/Storages/NewMemcachedStorage.php create mode 100644 vendor/nette/caching/src/Caching/Storages/SQLiteJournal.php create mode 100644 vendor/nette/caching/src/Caching/Storages/SQLiteStorage.php create mode 100644 vendor/nette/component-model/composer.json create mode 100644 vendor/nette/component-model/contributing.md create mode 100644 vendor/nette/component-model/license.md create mode 100644 vendor/nette/component-model/readme.md create mode 100644 vendor/nette/component-model/src/ComponentModel/ArrayAccess.php create mode 100644 vendor/nette/component-model/src/ComponentModel/Component.php create mode 100644 vendor/nette/component-model/src/ComponentModel/Container.php create mode 100644 vendor/nette/component-model/src/ComponentModel/IComponent.php create mode 100644 vendor/nette/component-model/src/ComponentModel/IContainer.php create mode 100644 vendor/nette/component-model/src/ComponentModel/RecursiveComponentIterator.php create mode 100644 vendor/nette/database/appveyor.yml create mode 100644 vendor/nette/database/composer.json create mode 100644 vendor/nette/database/contributing.md create mode 100644 vendor/nette/database/license.md create mode 100644 vendor/nette/database/readme.md create mode 100644 vendor/nette/database/src/Bridges/DatabaseDI/DatabaseExtension.php create mode 100644 vendor/nette/database/src/Bridges/DatabaseTracy/ConnectionPanel.php create mode 100644 vendor/nette/database/src/Bridges/DatabaseTracy/templates/ConnectionPanel.panel.phtml create mode 100644 vendor/nette/database/src/Bridges/DatabaseTracy/templates/ConnectionPanel.tab.phtml create mode 100644 vendor/nette/database/src/Database/Connection.php create mode 100644 vendor/nette/database/src/Database/Context.php create mode 100644 vendor/nette/database/src/Database/Conventions/AmbiguousReferenceKeyException.php create mode 100644 vendor/nette/database/src/Database/Conventions/DiscoveredConventions.php create mode 100644 vendor/nette/database/src/Database/Conventions/StaticConventions.php create mode 100644 vendor/nette/database/src/Database/DriverException.php create mode 100644 vendor/nette/database/src/Database/Drivers/MsSqlDriver.php create mode 100644 vendor/nette/database/src/Database/Drivers/MySqlDriver.php create mode 100644 vendor/nette/database/src/Database/Drivers/OciDriver.php create mode 100644 vendor/nette/database/src/Database/Drivers/OdbcDriver.php create mode 100644 vendor/nette/database/src/Database/Drivers/PgSqlDriver.php create mode 100644 vendor/nette/database/src/Database/Drivers/Sqlite2Driver.php create mode 100644 vendor/nette/database/src/Database/Drivers/SqliteDriver.php create mode 100644 vendor/nette/database/src/Database/Drivers/SqlsrvDriver.php create mode 100644 vendor/nette/database/src/Database/Helpers.php create mode 100644 vendor/nette/database/src/Database/IConventions.php create mode 100644 vendor/nette/database/src/Database/IRow.php create mode 100644 vendor/nette/database/src/Database/IRowContainer.php create mode 100644 vendor/nette/database/src/Database/IStructure.php create mode 100644 vendor/nette/database/src/Database/ISupplementalDriver.php create mode 100644 vendor/nette/database/src/Database/ResultSet.php create mode 100644 vendor/nette/database/src/Database/Row.php create mode 100644 vendor/nette/database/src/Database/SqlLiteral.php create mode 100644 vendor/nette/database/src/Database/SqlPreprocessor.php create mode 100644 vendor/nette/database/src/Database/Structure.php create mode 100644 vendor/nette/database/src/Database/Table/ActiveRow.php create mode 100644 vendor/nette/database/src/Database/Table/ColumnAccessCache.php create mode 100644 vendor/nette/database/src/Database/Table/GroupedSelection.php create mode 100644 vendor/nette/database/src/Database/Table/IRow.php create mode 100644 vendor/nette/database/src/Database/Table/IRowContainer.php create mode 100644 vendor/nette/database/src/Database/Table/ReferenceCache.php create mode 100644 vendor/nette/database/src/Database/Table/Selection.php create mode 100644 vendor/nette/database/src/Database/Table/SqlBuilder.php create mode 100644 vendor/nette/database/src/Database/exceptions.php create mode 100644 vendor/nette/di/.phpstorm.meta.php create mode 100644 vendor/nette/di/composer.json create mode 100644 vendor/nette/di/contributing.md create mode 100644 vendor/nette/di/license.md create mode 100644 vendor/nette/di/readme.md create mode 100644 vendor/nette/di/src/Bridges/DITracy/ContainerPanel.php create mode 100644 vendor/nette/di/src/Bridges/DITracy/templates/ContainerPanel.panel.phtml create mode 100644 vendor/nette/di/src/Bridges/DITracy/templates/ContainerPanel.tab.phtml create mode 100644 vendor/nette/di/src/DI/Autowiring.php create mode 100644 vendor/nette/di/src/DI/Compiler.php create mode 100644 vendor/nette/di/src/DI/CompilerExtension.php create mode 100644 vendor/nette/di/src/DI/Config/Adapter.php create mode 100644 vendor/nette/di/src/DI/Config/Adapters/IniAdapter.php create mode 100644 vendor/nette/di/src/DI/Config/Adapters/NeonAdapter.php create mode 100644 vendor/nette/di/src/DI/Config/Adapters/PhpAdapter.php create mode 100644 vendor/nette/di/src/DI/Config/DefinitionSchema.php create mode 100644 vendor/nette/di/src/DI/Config/Helpers.php create mode 100644 vendor/nette/di/src/DI/Config/IAdapter.php create mode 100644 vendor/nette/di/src/DI/Config/Loader.php create mode 100644 vendor/nette/di/src/DI/Container.php create mode 100644 vendor/nette/di/src/DI/ContainerBuilder.php create mode 100644 vendor/nette/di/src/DI/ContainerLoader.php create mode 100644 vendor/nette/di/src/DI/Definitions/AccessorDefinition.php create mode 100644 vendor/nette/di/src/DI/Definitions/Definition.php create mode 100644 vendor/nette/di/src/DI/Definitions/FactoryDefinition.php create mode 100644 vendor/nette/di/src/DI/Definitions/ImportedDefinition.php create mode 100644 vendor/nette/di/src/DI/Definitions/LocatorDefinition.php create mode 100644 vendor/nette/di/src/DI/Definitions/Reference.php create mode 100644 vendor/nette/di/src/DI/Definitions/ServiceDefinition.php create mode 100644 vendor/nette/di/src/DI/Definitions/Statement.php create mode 100644 vendor/nette/di/src/DI/DependencyChecker.php create mode 100644 vendor/nette/di/src/DI/DynamicParameter.php create mode 100644 vendor/nette/di/src/DI/Extensions/ConstantsExtension.php create mode 100644 vendor/nette/di/src/DI/Extensions/DIExtension.php create mode 100644 vendor/nette/di/src/DI/Extensions/DecoratorExtension.php create mode 100644 vendor/nette/di/src/DI/Extensions/ExtensionsExtension.php create mode 100644 vendor/nette/di/src/DI/Extensions/InjectExtension.php create mode 100644 vendor/nette/di/src/DI/Extensions/ParametersExtension.php create mode 100644 vendor/nette/di/src/DI/Extensions/PhpExtension.php create mode 100644 vendor/nette/di/src/DI/Extensions/SearchExtension.php create mode 100644 vendor/nette/di/src/DI/Extensions/ServicesExtension.php create mode 100644 vendor/nette/di/src/DI/Helpers.php create mode 100644 vendor/nette/di/src/DI/PhpGenerator.php create mode 100644 vendor/nette/di/src/DI/PhpReflection.php create mode 100644 vendor/nette/di/src/DI/Resolver.php create mode 100644 vendor/nette/di/src/DI/ServiceDefinition.php create mode 100644 vendor/nette/di/src/DI/Statement.php create mode 100644 vendor/nette/di/src/DI/exceptions.php create mode 100644 vendor/nette/di/src/compatibility.php create mode 100644 vendor/nette/finder/composer.json create mode 100644 vendor/nette/finder/contributing.md create mode 100644 vendor/nette/finder/license.md create mode 100644 vendor/nette/finder/readme.md create mode 100644 vendor/nette/finder/src/Utils/Finder.php create mode 100644 vendor/nette/forms/bower.json create mode 100644 vendor/nette/forms/composer.json create mode 100644 vendor/nette/forms/contributing.md create mode 100644 vendor/nette/forms/examples/assets/logo.png create mode 100644 vendor/nette/forms/examples/assets/style.css create mode 100644 vendor/nette/forms/examples/basic-example.php create mode 100644 vendor/nette/forms/examples/bootstrap2-rendering.php create mode 100644 vendor/nette/forms/examples/bootstrap3-rendering.php create mode 100644 vendor/nette/forms/examples/bootstrap4-rendering.php create mode 100644 vendor/nette/forms/examples/containers.php create mode 100644 vendor/nette/forms/examples/custom-control.php create mode 100644 vendor/nette/forms/examples/custom-rendering.php create mode 100644 vendor/nette/forms/examples/custom-validator.php create mode 100644 vendor/nette/forms/examples/html5.php create mode 100644 vendor/nette/forms/examples/live-validation.php create mode 100644 vendor/nette/forms/examples/localization.ini create mode 100644 vendor/nette/forms/examples/localization.php create mode 100644 vendor/nette/forms/examples/manual-rendering.php create mode 100644 vendor/nette/forms/license.md create mode 100644 vendor/nette/forms/package.json create mode 100644 vendor/nette/forms/readme.md create mode 100644 vendor/nette/forms/src/Bridges/FormsDI/FormsExtension.php create mode 100644 vendor/nette/forms/src/Bridges/FormsLatte/FormMacros.php create mode 100644 vendor/nette/forms/src/Bridges/FormsLatte/Runtime.php create mode 100644 vendor/nette/forms/src/Forms/Container.php create mode 100644 vendor/nette/forms/src/Forms/ControlGroup.php create mode 100644 vendor/nette/forms/src/Forms/Controls/BaseControl.php create mode 100644 vendor/nette/forms/src/Forms/Controls/Button.php create mode 100644 vendor/nette/forms/src/Forms/Controls/Checkbox.php create mode 100644 vendor/nette/forms/src/Forms/Controls/CheckboxList.php create mode 100644 vendor/nette/forms/src/Forms/Controls/ChoiceControl.php create mode 100644 vendor/nette/forms/src/Forms/Controls/CsrfProtection.php create mode 100644 vendor/nette/forms/src/Forms/Controls/HiddenField.php create mode 100644 vendor/nette/forms/src/Forms/Controls/ImageButton.php create mode 100644 vendor/nette/forms/src/Forms/Controls/MultiChoiceControl.php create mode 100644 vendor/nette/forms/src/Forms/Controls/MultiSelectBox.php create mode 100644 vendor/nette/forms/src/Forms/Controls/RadioList.php create mode 100644 vendor/nette/forms/src/Forms/Controls/SelectBox.php create mode 100644 vendor/nette/forms/src/Forms/Controls/SubmitButton.php create mode 100644 vendor/nette/forms/src/Forms/Controls/TextArea.php create mode 100644 vendor/nette/forms/src/Forms/Controls/TextBase.php create mode 100644 vendor/nette/forms/src/Forms/Controls/TextInput.php create mode 100644 vendor/nette/forms/src/Forms/Controls/UploadControl.php create mode 100644 vendor/nette/forms/src/Forms/Form.php create mode 100644 vendor/nette/forms/src/Forms/Helpers.php create mode 100644 vendor/nette/forms/src/Forms/IControl.php create mode 100644 vendor/nette/forms/src/Forms/IFormRenderer.php create mode 100644 vendor/nette/forms/src/Forms/ISubmitterControl.php create mode 100644 vendor/nette/forms/src/Forms/Rendering/DefaultFormRenderer.php create mode 100644 vendor/nette/forms/src/Forms/Rule.php create mode 100644 vendor/nette/forms/src/Forms/Rules.php create mode 100644 vendor/nette/forms/src/Forms/Validator.php create mode 100644 vendor/nette/forms/src/assets/netteForms.js create mode 100644 vendor/nette/forms/src/assets/netteForms.min.js create mode 100644 vendor/nette/http/appveyor.yml create mode 100644 vendor/nette/http/composer.json create mode 100644 vendor/nette/http/contributing.md create mode 100644 vendor/nette/http/license.md create mode 100644 vendor/nette/http/readme.md create mode 100644 vendor/nette/http/src/Bridges/HttpDI/HttpExtension.php create mode 100644 vendor/nette/http/src/Bridges/HttpDI/SessionExtension.php create mode 100644 vendor/nette/http/src/Bridges/HttpTracy/SessionPanel.php create mode 100644 vendor/nette/http/src/Bridges/HttpTracy/templates/SessionPanel.panel.phtml create mode 100644 vendor/nette/http/src/Bridges/HttpTracy/templates/SessionPanel.tab.phtml create mode 100644 vendor/nette/http/src/Http/Context.php create mode 100644 vendor/nette/http/src/Http/FileUpload.php create mode 100644 vendor/nette/http/src/Http/Helpers.php create mode 100644 vendor/nette/http/src/Http/IRequest.php create mode 100644 vendor/nette/http/src/Http/IResponse.php create mode 100644 vendor/nette/http/src/Http/ISessionStorage.php create mode 100644 vendor/nette/http/src/Http/Request.php create mode 100644 vendor/nette/http/src/Http/RequestFactory.php create mode 100644 vendor/nette/http/src/Http/Response.php create mode 100644 vendor/nette/http/src/Http/Session.php create mode 100644 vendor/nette/http/src/Http/SessionSection.php create mode 100644 vendor/nette/http/src/Http/Url.php create mode 100644 vendor/nette/http/src/Http/UrlImmutable.php create mode 100644 vendor/nette/http/src/Http/UrlScript.php create mode 100644 vendor/nette/http/src/Http/UserStorage.php create mode 100644 vendor/nette/mail/composer.json create mode 100644 vendor/nette/mail/contributing.md create mode 100644 vendor/nette/mail/license.md create mode 100644 vendor/nette/mail/readme.md create mode 100644 vendor/nette/mail/src/Bridges/MailDI/MailExtension.php create mode 100644 vendor/nette/mail/src/Mail/FallbackMailer.php create mode 100644 vendor/nette/mail/src/Mail/IMailer.php create mode 100644 vendor/nette/mail/src/Mail/Message.php create mode 100644 vendor/nette/mail/src/Mail/MimePart.php create mode 100644 vendor/nette/mail/src/Mail/SendmailMailer.php create mode 100644 vendor/nette/mail/src/Mail/SmtpMailer.php create mode 100644 vendor/nette/mail/src/Mail/exceptions.php create mode 100644 vendor/nette/neon/composer.json create mode 100644 vendor/nette/neon/contributing.md create mode 100644 vendor/nette/neon/license.md create mode 100644 vendor/nette/neon/readme.md create mode 100644 vendor/nette/neon/src/Neon/Decoder.php create mode 100644 vendor/nette/neon/src/Neon/Encoder.php create mode 100644 vendor/nette/neon/src/Neon/Entity.php create mode 100644 vendor/nette/neon/src/Neon/Exception.php create mode 100644 vendor/nette/neon/src/Neon/Neon.php create mode 100644 vendor/nette/neon/src/neon.php create mode 100644 vendor/nette/neon/syntax.txt create mode 100644 vendor/nette/php-generator/composer.json create mode 100644 vendor/nette/php-generator/contributing.md create mode 100644 vendor/nette/php-generator/license.md create mode 100644 vendor/nette/php-generator/readme.md create mode 100644 vendor/nette/php-generator/src/PhpGenerator/ClassType.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/Closure.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/Constant.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/Factory.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/GlobalFunction.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/Helpers.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/Method.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/Parameter.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/PhpFile.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/PhpLiteral.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/PhpNamespace.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/Printer.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/Property.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/PsrPrinter.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/Traits/CommentAware.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/Traits/FunctionLike.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/Traits/NameAware.php create mode 100644 vendor/nette/php-generator/src/PhpGenerator/Traits/VisibilityAware.php create mode 100644 vendor/nette/reflection/composer.json create mode 100644 vendor/nette/reflection/contributing.md create mode 100644 vendor/nette/reflection/license.md create mode 100644 vendor/nette/reflection/readme.md create mode 100644 vendor/nette/reflection/src/Bridges/ReflectionDI/ReflectionExtension.php create mode 100644 vendor/nette/reflection/src/Reflection/Annotation.php create mode 100644 vendor/nette/reflection/src/Reflection/AnnotationsParser.php create mode 100644 vendor/nette/reflection/src/Reflection/ClassType.php create mode 100644 vendor/nette/reflection/src/Reflection/Extension.php create mode 100644 vendor/nette/reflection/src/Reflection/GlobalFunction.php create mode 100644 vendor/nette/reflection/src/Reflection/Helpers.php create mode 100644 vendor/nette/reflection/src/Reflection/IAnnotation.php create mode 100644 vendor/nette/reflection/src/Reflection/Method.php create mode 100644 vendor/nette/reflection/src/Reflection/Parameter.php create mode 100644 vendor/nette/reflection/src/Reflection/Property.php create mode 100644 vendor/nette/robot-loader/composer.json create mode 100644 vendor/nette/robot-loader/contributing.md create mode 100644 vendor/nette/robot-loader/license.md create mode 100644 vendor/nette/robot-loader/readme.md create mode 100644 vendor/nette/robot-loader/src/RobotLoader/RobotLoader.php create mode 100644 vendor/nette/routing/composer.json create mode 100644 vendor/nette/routing/contributing.md create mode 100644 vendor/nette/routing/license.md create mode 100644 vendor/nette/routing/readme.md create mode 100644 vendor/nette/routing/src/Routing/Route.php create mode 100644 vendor/nette/routing/src/Routing/RouteList.php create mode 100644 vendor/nette/routing/src/Routing/Router.php create mode 100644 vendor/nette/routing/src/Routing/SimpleRouter.php create mode 100644 vendor/nette/schema/composer.json create mode 100644 vendor/nette/schema/contributing.md create mode 100644 vendor/nette/schema/license.md create mode 100644 vendor/nette/schema/readme.md create mode 100644 vendor/nette/schema/src/Schema/Context.php create mode 100644 vendor/nette/schema/src/Schema/DynamicParameter.php create mode 100644 vendor/nette/schema/src/Schema/Elements/AnyOf.php create mode 100644 vendor/nette/schema/src/Schema/Elements/Base.php create mode 100644 vendor/nette/schema/src/Schema/Elements/Structure.php create mode 100644 vendor/nette/schema/src/Schema/Elements/Type.php create mode 100644 vendor/nette/schema/src/Schema/Expect.php create mode 100644 vendor/nette/schema/src/Schema/Helpers.php create mode 100644 vendor/nette/schema/src/Schema/Processor.php create mode 100644 vendor/nette/schema/src/Schema/Schema.php create mode 100644 vendor/nette/schema/src/Schema/ValidationException.php create mode 100644 vendor/nette/security/composer.json create mode 100644 vendor/nette/security/contributing.md create mode 100644 vendor/nette/security/license.md create mode 100644 vendor/nette/security/readme.md create mode 100644 vendor/nette/security/src/Bridges/SecurityDI/SecurityExtension.php create mode 100644 vendor/nette/security/src/Bridges/SecurityTracy/UserPanel.php create mode 100644 vendor/nette/security/src/Bridges/SecurityTracy/templates/UserPanel.panel.phtml create mode 100644 vendor/nette/security/src/Bridges/SecurityTracy/templates/UserPanel.tab.phtml create mode 100644 vendor/nette/security/src/Security/AuthenticationException.php create mode 100644 vendor/nette/security/src/Security/IAuthenticator.php create mode 100644 vendor/nette/security/src/Security/IAuthorizator.php create mode 100644 vendor/nette/security/src/Security/IIdentity.php create mode 100644 vendor/nette/security/src/Security/IResource.php create mode 100644 vendor/nette/security/src/Security/IRole.php create mode 100644 vendor/nette/security/src/Security/IUserStorage.php create mode 100644 vendor/nette/security/src/Security/Identity.php create mode 100644 vendor/nette/security/src/Security/Passwords.php create mode 100644 vendor/nette/security/src/Security/Permission.php create mode 100644 vendor/nette/security/src/Security/SimpleAuthenticator.php create mode 100644 vendor/nette/security/src/Security/User.php create mode 100644 vendor/nette/tester/appveyor.yml create mode 100644 vendor/nette/tester/composer.json create mode 100644 vendor/nette/tester/contributing.md create mode 100644 vendor/nette/tester/license.md create mode 100644 vendor/nette/tester/readme.md create mode 100644 vendor/nette/tester/src/CodeCoverage/Collector.php create mode 100644 vendor/nette/tester/src/CodeCoverage/Generators/AbstractGenerator.php create mode 100644 vendor/nette/tester/src/CodeCoverage/Generators/CloverXMLGenerator.php create mode 100644 vendor/nette/tester/src/CodeCoverage/Generators/HtmlGenerator.php create mode 100644 vendor/nette/tester/src/CodeCoverage/Generators/template.phtml create mode 100644 vendor/nette/tester/src/CodeCoverage/PhpParser.php create mode 100644 vendor/nette/tester/src/Framework/Assert.php create mode 100644 vendor/nette/tester/src/Framework/AssertException.php create mode 100644 vendor/nette/tester/src/Framework/DataProvider.php create mode 100644 vendor/nette/tester/src/Framework/DomQuery.php create mode 100644 vendor/nette/tester/src/Framework/Dumper.php create mode 100644 vendor/nette/tester/src/Framework/Environment.php create mode 100644 vendor/nette/tester/src/Framework/Expect.php create mode 100644 vendor/nette/tester/src/Framework/FileMock.php create mode 100644 vendor/nette/tester/src/Framework/FileMutator.php create mode 100644 vendor/nette/tester/src/Framework/Helpers.php create mode 100644 vendor/nette/tester/src/Framework/TestCase.php create mode 100644 vendor/nette/tester/src/Runner/CliTester.php create mode 100644 vendor/nette/tester/src/Runner/CommandLine.php create mode 100644 vendor/nette/tester/src/Runner/Job.php create mode 100644 vendor/nette/tester/src/Runner/Output/ConsolePrinter.php create mode 100644 vendor/nette/tester/src/Runner/Output/JUnitPrinter.php create mode 100644 vendor/nette/tester/src/Runner/Output/Logger.php create mode 100644 vendor/nette/tester/src/Runner/Output/TapPrinter.php create mode 100644 vendor/nette/tester/src/Runner/OutputHandler.php create mode 100644 vendor/nette/tester/src/Runner/PhpInterpreter.php create mode 100644 vendor/nette/tester/src/Runner/Runner.php create mode 100644 vendor/nette/tester/src/Runner/Test.php create mode 100644 vendor/nette/tester/src/Runner/TestHandler.php create mode 100644 vendor/nette/tester/src/Runner/info.php create mode 100644 vendor/nette/tester/src/bootstrap.php create mode 100644 vendor/nette/tester/src/tester create mode 100644 vendor/nette/tester/src/tester.php create mode 100644 vendor/nette/tester/tools/create-phar/create-phar.php create mode 100644 vendor/nette/utils/.phpstorm.meta.php create mode 100644 vendor/nette/utils/composer.json create mode 100644 vendor/nette/utils/contributing.md create mode 100644 vendor/nette/utils/license.md create mode 100644 vendor/nette/utils/readme.md create mode 100644 vendor/nette/utils/src/Iterators/CachingIterator.php create mode 100644 vendor/nette/utils/src/Iterators/Mapper.php create mode 100644 vendor/nette/utils/src/Utils/ArrayHash.php create mode 100644 vendor/nette/utils/src/Utils/ArrayList.php create mode 100644 vendor/nette/utils/src/Utils/Arrays.php create mode 100644 vendor/nette/utils/src/Utils/Callback.php create mode 100644 vendor/nette/utils/src/Utils/DateTime.php create mode 100644 vendor/nette/utils/src/Utils/FileSystem.php create mode 100644 vendor/nette/utils/src/Utils/Html.php create mode 100644 vendor/nette/utils/src/Utils/IHtmlString.php create mode 100644 vendor/nette/utils/src/Utils/ITranslator.php create mode 100644 vendor/nette/utils/src/Utils/Image.php create mode 100644 vendor/nette/utils/src/Utils/Json.php create mode 100644 vendor/nette/utils/src/Utils/LegacyObject.php create mode 100644 vendor/nette/utils/src/Utils/ObjectHelpers.php create mode 100644 vendor/nette/utils/src/Utils/ObjectMixin.php create mode 100644 vendor/nette/utils/src/Utils/Paginator.php create mode 100644 vendor/nette/utils/src/Utils/Random.php create mode 100644 vendor/nette/utils/src/Utils/Reflection.php create mode 100644 vendor/nette/utils/src/Utils/SmartObject.php create mode 100644 vendor/nette/utils/src/Utils/StaticClass.php create mode 100644 vendor/nette/utils/src/Utils/Strings.php create mode 100644 vendor/nette/utils/src/Utils/Validators.php create mode 100644 vendor/nette/utils/src/Utils/exceptions.php create mode 100644 vendor/nette/utils/src/loader.php create mode 100644 vendor/tracy/tracy/.eslintrc.js create mode 100644 vendor/tracy/tracy/appveyor.yml create mode 100644 vendor/tracy/tracy/composer.json create mode 100644 vendor/tracy/tracy/contributing.md create mode 100644 vendor/tracy/tracy/examples/ajax.php create mode 100644 vendor/tracy/tracy/examples/assets/E_COMPILE_ERROR.php create mode 100644 vendor/tracy/tracy/examples/assets/arrow.png create mode 100644 vendor/tracy/tracy/examples/assets/style.css create mode 100644 vendor/tracy/tracy/examples/barDump.php create mode 100644 vendor/tracy/tracy/examples/dump-snapshot.php create mode 100644 vendor/tracy/tracy/examples/dump.php create mode 100644 vendor/tracy/tracy/examples/exception.php create mode 100644 vendor/tracy/tracy/examples/fatal-error.php create mode 100644 vendor/tracy/tracy/examples/firelogger.php create mode 100644 vendor/tracy/tracy/examples/notice.php create mode 100644 vendor/tracy/tracy/examples/output-debugger.php create mode 100644 vendor/tracy/tracy/examples/preloading.php create mode 100644 vendor/tracy/tracy/examples/redirect.php create mode 100644 vendor/tracy/tracy/examples/warning.php create mode 100644 vendor/tracy/tracy/license.md create mode 100644 vendor/tracy/tracy/readme.md create mode 100644 vendor/tracy/tracy/src/Bridges/Nette/Bridge.php create mode 100644 vendor/tracy/tracy/src/Bridges/Nette/MailSender.php create mode 100644 vendor/tracy/tracy/src/Bridges/Nette/TracyExtension.php create mode 100644 vendor/tracy/tracy/src/Bridges/Psr/PsrToTracyLoggerAdapter.php create mode 100644 vendor/tracy/tracy/src/Bridges/Psr/TracyToPsrLoggerAdapter.php create mode 100644 vendor/tracy/tracy/src/Tracy/Bar/Bar.php create mode 100644 vendor/tracy/tracy/src/Tracy/Bar/DefaultBarPanel.php create mode 100644 vendor/tracy/tracy/src/Tracy/Bar/IBarPanel.php create mode 100644 vendor/tracy/tracy/src/Tracy/Bar/assets/bar.css create mode 100644 vendor/tracy/tracy/src/Tracy/Bar/assets/bar.js create mode 100644 vendor/tracy/tracy/src/Tracy/Bar/assets/bar.phtml create mode 100644 vendor/tracy/tracy/src/Tracy/Bar/assets/loader.phtml create mode 100644 vendor/tracy/tracy/src/Tracy/Bar/assets/panels.phtml create mode 100644 vendor/tracy/tracy/src/Tracy/Bar/panels/dumps.panel.phtml create mode 100644 vendor/tracy/tracy/src/Tracy/Bar/panels/dumps.tab.phtml create mode 100644 vendor/tracy/tracy/src/Tracy/Bar/panels/errors.panel.phtml create mode 100644 vendor/tracy/tracy/src/Tracy/Bar/panels/errors.tab.phtml create mode 100644 vendor/tracy/tracy/src/Tracy/Bar/panels/info.panel.phtml create mode 100644 vendor/tracy/tracy/src/Tracy/Bar/panels/info.tab.phtml create mode 100644 vendor/tracy/tracy/src/Tracy/BlueScreen/BlueScreen.php create mode 100644 vendor/tracy/tracy/src/Tracy/BlueScreen/assets/bluescreen.css create mode 100644 vendor/tracy/tracy/src/Tracy/BlueScreen/assets/bluescreen.js create mode 100644 vendor/tracy/tracy/src/Tracy/BlueScreen/assets/content.phtml create mode 100644 vendor/tracy/tracy/src/Tracy/BlueScreen/assets/page.phtml create mode 100644 vendor/tracy/tracy/src/Tracy/Debugger/Debugger.php create mode 100644 vendor/tracy/tracy/src/Tracy/Debugger/assets/error.500.phtml create mode 100644 vendor/tracy/tracy/src/Tracy/Dumper/Dumper.php create mode 100644 vendor/tracy/tracy/src/Tracy/Dumper/assets/dumper.css create mode 100644 vendor/tracy/tracy/src/Tracy/Dumper/assets/dumper.js create mode 100644 vendor/tracy/tracy/src/Tracy/Helpers.php create mode 100644 vendor/tracy/tracy/src/Tracy/Logger/FireLogger.php create mode 100644 vendor/tracy/tracy/src/Tracy/Logger/ILogger.php create mode 100644 vendor/tracy/tracy/src/Tracy/Logger/Logger.php create mode 100644 vendor/tracy/tracy/src/Tracy/OutputDebugger/OutputDebugger.php create mode 100644 vendor/tracy/tracy/src/Tracy/TableSort/table-sort.css create mode 100644 vendor/tracy/tracy/src/Tracy/TableSort/table-sort.js create mode 100644 vendor/tracy/tracy/src/Tracy/Toggle/toggle.css create mode 100644 vendor/tracy/tracy/src/Tracy/Toggle/toggle.js create mode 100644 vendor/tracy/tracy/src/Tracy/shortcuts.php create mode 100644 vendor/tracy/tracy/src/tracy.php create mode 100644 vendor/tracy/tracy/tools/create-phar/create-phar.php create mode 100644 vendor/tracy/tracy/tools/open-in-editor/linux/install.sh create mode 100644 vendor/tracy/tracy/tools/open-in-editor/linux/open-editor.sh create mode 100644 vendor/tracy/tracy/tools/open-in-editor/windows/install.cmd create mode 100644 vendor/tracy/tracy/tools/open-in-editor/windows/open-editor.js create mode 100644 www/.htaccess create mode 100644 www/favicon.ico create mode 100644 www/index.php create mode 100644 www/robots.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..47cd1d9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +app/config/local.neon diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..6fbe30a --- /dev/null +++ b/.htaccess @@ -0,0 +1,9 @@ + + RewriteEngine On + RewriteRule ^$ www/ [L] + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} !^www/ + RewriteRule ^(.*)$ www/$1 + + diff --git a/app/bootstrap.php b/app/bootstrap.php new file mode 100644 index 0000000..c18bde8 --- /dev/null +++ b/app/bootstrap.php @@ -0,0 +1,22 @@ +setDebugMode('23.75.345.200'); // enable for your remote IP +$configurator->enableTracy(__DIR__ . '/../log'); + +$configurator->setTimeZone('Europe/Prague'); +$configurator->setTempDirectory(__DIR__ . '/../temp'); + +$configurator->createRobotLoader() + ->addDirectory(__DIR__) + ->register(); + +$configurator->addConfig(__DIR__ . '/config/config.neon'); +$configurator->addConfig(__DIR__ . '/config/config.local.neon'); + +$container = $configurator->createContainer(); + +return $container; diff --git a/app/config/config.local.neon b/app/config/config.local.neon new file mode 100644 index 0000000..44393b4 --- /dev/null +++ b/app/config/config.local.neon @@ -0,0 +1,7 @@ +parameters: + + +database: + dsn: 'mysql:host=127.0.0.1;dbname=test' + user: + password: diff --git a/app/config/config.neon b/app/config/config.neon new file mode 100644 index 0000000..979236e --- /dev/null +++ b/app/config/config.neon @@ -0,0 +1,16 @@ +parameters: + + +application: + errorPresenter: Error + mapping: + *: App\*Module\Presenters\*Presenter + + +session: + expiration: 14 days + + +services: + router: App\RouterFactory::createRouter + - App\Model\CalculatorManager diff --git a/app/model/CalculatorManager.php b/app/model/CalculatorManager.php new file mode 100644 index 0000000..4728f10 --- /dev/null +++ b/app/model/CalculatorManager.php @@ -0,0 +1,128 @@ + 'Sčítání', + self::SUBTRACT => 'Odčítání', + self::MULTIPLY => 'Násobení', + self::DIVIDE => 'Dělení' + ); + } + + /** + * Zavolá zadanou operaci a vrátí její výsledek. + * @param int $operation zadaná operace + * @param int $x první číslo pro operaci + * @param int $y druhé číslo pro operaci + * @return int|null výsledek operace nebo null, pokud zadaná operace neexistuje + */ + public function calculate($operation, $x, $y){ + switch ($operation) { + case self::ADD: + return $this->add($x, $y); + case self::SUBTRACT: + return $this->subtract($x, $y); + case self::MULTIPLY: + return $this->multiply($x, $y); + case self::DIVIDE: + return $this->divide($x, $y); + default: + return null; + } + } + + + /** + * Sečte daná čísla a vrátí výsledek. + * @param int $x první číslo + * @param int $y druhé číslo + * @return int výsledek po sčítání + */ + public function add($x, $y){ + return $x + $y; + } + + /** + * Odečte druhé číslo od prvního a vrátí výsledek. + * @param int $x první číslo + * @param int $y druhé číslo + * @return int výsledek po odčítání + */ + public function subtract($x, $y) + { + return $x - $y; + } + + /** + * Vynásobí daná čísla a vrátí výsledek. + * @param int $x první číslo + * @param int $y druhé číslo + * @return int výsledek po násobení + */ + public function multiply($x, $y) + { + return $x * $y; + } + + /** + * Vydělí první číslo druhým bezezbytku a vrátí výsledek. + * @param int $x první číslo + * @param int $y druhé číslo; nesmí být 0 + * @return int výsledek po dělení bezezbytku + */ + public function divide($x, $y) + { + return round($x / $y); + } +} \ No newline at end of file diff --git a/app/presenters/CalculatorPresenter.php b/app/presenters/CalculatorPresenter.php new file mode 100644 index 0000000..477e5b7 --- /dev/null +++ b/app/presenters/CalculatorPresenter.php @@ -0,0 +1,81 @@ +calculatorManager = $calculatorManager; + } + + /** Výchozí vykreslovací metoda tohoto presenteru. */ + public function renderDefault(){ + // Předání výsledku do šablony. + $this->template->result = $this->result; + } + + /** + * Vrátí formulář kalkulačky. + * @return Form formulář kalkulačky + */ + + protected function createComponentCalculatorForm(){ + + $form = new Form; + // Získáme existující operace kalkulačky a dáme je do výběru operací. + $form->addRadioList('operation', 'Operace:', $this->calculatorManager->getOperations()) + ->setDefaultValue(CalculatorManager::ADD) + ->setRequired(self::FORM_MSG_REQUIRED); + $form->addText('x', 'První číslo:') + ->setType('number') + ->setDefaultValue(0) + ->setRequired(self::FORM_MSG_REQUIRED) + ->addRule(Form::INTEGER, self::FORM_MSG_RULE); + $form->addText('y', 'Druhé číslo:') + ->setType('number') + ->setDefaultValue(0) + ->setRequired(self::FORM_MSG_REQUIRED) + ->addRule(Form::INTEGER, self::FORM_MSG_RULE) + // Ošetříme dělení nulou. + ->addConditionOn($form['operation'], Form::EQUAL, CalculatorManager::DIVIDE) + ->addRule(Form::PATTERN, 'Nelze dělit nulou.', '^[^0].*'); + $form->addSubmit('calculate', 'Spočítej výsledek'); + $form->onSuccess[] = [$this, 'calculatorFormSucceeded']; + return $form; + } + + /** + * Funkce se vykonaná při úspěšném odeslání formuláře kalkulačky a zpracuje odeslané hodnoty. + * @param Form $form formulář kalkulačky + * @param ArrayHash $values odeslané hodnoty formuláře + */ + public function calculatorFormSucceeded($form, $values) { + // Necháme si vypočítat výsledek podle zvolené operace a zadaných hodnot. + $this->result = $this->calculatorManager->calculate($values->operation, $values->x, $values->y); + } +} + + + diff --git a/app/presenters/Error4xxPresenter.php b/app/presenters/Error4xxPresenter.php new file mode 100644 index 0000000..ee2e1b3 --- /dev/null +++ b/app/presenters/Error4xxPresenter.php @@ -0,0 +1,27 @@ +getRequest()->isMethod(Nette\Application\Request::FORWARD)) { + $this->error(); + } + } + + + public function renderDefault(Nette\Application\BadRequestException $exception): void + { + // load template 403.latte or 404.latte or ... 4xx.latte + $file = __DIR__ . "/templates/Error/{$exception->getCode()}.latte"; + $this->template->setFile(is_file($file) ? $file : __DIR__ . '/templates/Error/4xx.latte'); + } +} diff --git a/app/presenters/ErrorPresenter.php b/app/presenters/ErrorPresenter.php new file mode 100644 index 0000000..32b766b --- /dev/null +++ b/app/presenters/ErrorPresenter.php @@ -0,0 +1,43 @@ +logger = $logger; + } + + + public function run(Nette\Application\Request $request): Nette\Application\IResponse + { + $exception = $request->getParameter('exception'); + + if ($exception instanceof Nette\Application\BadRequestException) { + [$module, , $sep] = Nette\Application\Helpers::splitName($request->getPresenterName()); + return new Responses\ForwardResponse($request->setPresenterName($module . $sep . 'Error4xx')); + } + + $this->logger->log($exception, ILogger::EXCEPTION); + return new Responses\CallbackResponse(function (Http\IRequest $httpRequest, Http\IResponse $httpResponse): void { + if (preg_match('#^text/html(?:;|$)#', (string) $httpResponse->getHeader('Content-Type'))) { + require __DIR__ . '/templates/Error/500.phtml'; + } + }); + } +} diff --git a/app/presenters/templates/@layout.latte b/app/presenters/templates/@layout.latte new file mode 100644 index 0000000..0ecbf5e --- /dev/null +++ b/app/presenters/templates/@layout.latte @@ -0,0 +1,19 @@ + + + + + + + {ifset title}{include title|stripHtml} | {/ifset}Nette Web + + + +
{$flash->message}
+ + {include content} + + {block scripts} + + {/block} + + diff --git a/app/presenters/templates/Calculator/default.latte b/app/presenters/templates/Calculator/default.latte new file mode 100644 index 0000000..c0aff8c --- /dev/null +++ b/app/presenters/templates/Calculator/default.latte @@ -0,0 +1,33 @@ + + +{block content} + + +
+

Result is: {$result}

+ {control calculatorForm} +
+ + +{/block} diff --git a/app/presenters/templates/Error/403.latte b/app/presenters/templates/Error/403.latte new file mode 100644 index 0000000..de00328 --- /dev/null +++ b/app/presenters/templates/Error/403.latte @@ -0,0 +1,7 @@ +{block content} +

Access Denied

+ +

You do not have permission to view this page. Please try contact the web +site administrator if you believe you should be able to view this page.

+ +

error 403

diff --git a/app/presenters/templates/Error/404.latte b/app/presenters/templates/Error/404.latte new file mode 100644 index 0000000..022001c --- /dev/null +++ b/app/presenters/templates/Error/404.latte @@ -0,0 +1,8 @@ +{block content} +

Page Not Found

+ +

The page you requested could not be found. It is possible that the address is +incorrect, or that the page no longer exists. Please use a search engine to find +what you are looking for.

+ +

error 404

diff --git a/app/presenters/templates/Error/405.latte b/app/presenters/templates/Error/405.latte new file mode 100644 index 0000000..d424892 --- /dev/null +++ b/app/presenters/templates/Error/405.latte @@ -0,0 +1,6 @@ +{block content} +

Method Not Allowed

+ +

The requested method is not allowed for the URL.

+ +

error 405

diff --git a/app/presenters/templates/Error/410.latte b/app/presenters/templates/Error/410.latte new file mode 100644 index 0000000..99bde92 --- /dev/null +++ b/app/presenters/templates/Error/410.latte @@ -0,0 +1,6 @@ +{block content} +

Page Not Found

+ +

The page you requested has been taken off the site. We apologize for the inconvenience.

+ +

error 410

diff --git a/app/presenters/templates/Error/4xx.latte b/app/presenters/templates/Error/4xx.latte new file mode 100644 index 0000000..d5ce82f --- /dev/null +++ b/app/presenters/templates/Error/4xx.latte @@ -0,0 +1,4 @@ +{block content} +

Oops...

+ +

Your browser sent a request that this server could not understand or process.

diff --git a/app/presenters/templates/Error/500.phtml b/app/presenters/templates/Error/500.phtml new file mode 100644 index 0000000..a2b900c --- /dev/null +++ b/app/presenters/templates/Error/500.phtml @@ -0,0 +1,27 @@ + + + +Server Error + + + +
+
+

Server Error

+ +

We're sorry! The server encountered an internal error and + was unable to complete your request. Please try again later.

+ +

error 500

+
+
+ + diff --git a/app/presenters/templates/Error/503.phtml b/app/presenters/templates/Error/503.phtml new file mode 100644 index 0000000..f123919 --- /dev/null +++ b/app/presenters/templates/Error/503.phtml @@ -0,0 +1,24 @@ + + + + + + + + +Site is temporarily down for maintenance + +

We're Sorry

+ +

The site is temporarily down for maintenance. Please try again in a few minutes.

diff --git a/app/router/RouterFactory.php b/app/router/RouterFactory.php new file mode 100644 index 0000000..68ce929 --- /dev/null +++ b/app/router/RouterFactory.php @@ -0,0 +1,25 @@ +/[/]', 'Calculator:default'); + return $router; + } +} diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..4ce1867 --- /dev/null +++ b/composer.json @@ -0,0 +1,36 @@ +{ + "name": "nette/web-project", + "description": "Nette: Standard Web Project", + "keywords": ["nette"], + "type": "project", + "license": ["MIT", "BSD-3-Clause", "GPL-2.0", "GPL-3.0"], + "require": { + "php": ">= 7.1", + "nette/application": "^3.0", + "nette/bootstrap": "^3.0", + "nette/caching": "^3.0", + "nette/database": "^3.0", + "nette/di": "^3.0", + "nette/finder": "^2.5", + "nette/forms": "^3.0", + "nette/http": "^3.0", + "nette/mail": "^3.0", + "nette/robot-loader": "^3.0", + "nette/security": "^3.0", + "nette/utils": "^3.0", + "latte/latte": "^2.5", + "tracy/tracy": "^2.6" + }, + "require-dev": { + "nette/tester": "^2.0" + }, + "autoload": { + "classmap": ["app/Booting.php"] + }, + "minimum-stability": "stable", + "config": { + "platform": { + "php": "7.1" + } + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..e5fbd65 --- /dev/null +++ b/composer.lock @@ -0,0 +1,1366 @@ +{ + "_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": "5e7cc66184e0bf1568dc4cc39fbf7a64", + "packages": [ + { + "name": "latte/latte", + "version": "v2.5.1", + "source": { + "type": "git", + "url": "https://github.com/nette/latte.git", + "reference": "cf714b94f0759198a3c71361d46d5166cabaaf52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/latte/zipball/cf714b94f0759198a3c71361d46d5166cabaaf52", + "reference": "cf714b94f0759198a3c71361d46d5166cabaaf52", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.1" + }, + "conflict": { + "nette/application": "<2.4.1" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-fileinfo": "to use filter |datastream", + "ext-mbstring": "to use filters like lower, upper, capitalize, ...", + "nette/utils": "to use filter |webalize" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "☕ Latte: the intuitive and fast template engine for those who want the most secure PHP sites. Introduces context-sensitive escaping.", + "homepage": "https://latte.nette.org", + "keywords": [ + "context-sensitive", + "engine", + "escaping", + "html", + "nette", + "security", + "template", + "twig" + ], + "time": "2019-02-20T10:51:49+00:00" + }, + { + "name": "nette/application", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/application.git", + "reference": "4f3b250709226c70c8ca0a35f796877bcb72b10d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/application/zipball/4f3b250709226c70c8ca0a35f796877bcb72b10d", + "reference": "4f3b250709226c70c8ca0a35f796877bcb72b10d", + "shasum": "" + }, + "require": { + "nette/component-model": "^3.0", + "nette/http": "^3.0", + "nette/routing": "~3.0.0", + "nette/utils": "^3.0", + "php": ">=7.1" + }, + "conflict": { + "nette/di": "<3.0", + "nette/forms": "<3.0", + "nette/latte": "<3.0" + }, + "require-dev": { + "latte/latte": "^2.5.1", + "mockery/mockery": "^1.0", + "nette/di": "^v3.0", + "nette/forms": "^3.0", + "nette/robot-loader": "^3.2", + "nette/security": "^3.0", + "nette/tester": "^2.0.1", + "tracy/tracy": "^2.6" + }, + "suggest": { + "latte/latte": "Allows using Latte in templates", + "nette/forms": "Allows to use Nette\\Application\\UI\\Form" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/compatibility.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🏆 Nette Application: a full-stack component-based MVC kernel for PHP that helps you write powerful and modern web applications. Write less, have cleaner code and your work will bring you joy.", + "homepage": "https://nette.org", + "keywords": [ + "Forms", + "component-based", + "control", + "framework", + "mvc", + "mvp", + "nette", + "presenter", + "routing", + "seo" + ], + "time": "2019-04-03T19:36:15+00:00" + }, + { + "name": "nette/bootstrap", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/bootstrap.git", + "reference": "e1075af05c211915e03e0c86542f3ba5433df4a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/bootstrap/zipball/e1075af05c211915e03e0c86542f3ba5433df4a3", + "reference": "e1075af05c211915e03e0c86542f3ba5433df4a3", + "shasum": "" + }, + "require": { + "nette/di": "^3.0", + "nette/utils": "^3.0", + "php": ">=7.1" + }, + "require-dev": { + "latte/latte": "^2.2", + "nette/application": "^3.0", + "nette/caching": "^3.0", + "nette/database": "^3.0", + "nette/forms": "^3.0", + "nette/http": "^3.0", + "nette/mail": "^3.0", + "nette/robot-loader": "^3.0", + "nette/safe-stream": "^2.2", + "nette/security": "^3.0", + "nette/tester": "^2.0", + "tracy/tracy": "^2.6" + }, + "suggest": { + "nette/robot-loader": "to use Configurator::createRobotLoader()", + "tracy/tracy": "to use Configurator::enableTracy()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🅱 Nette Bootstrap: the simple way to configure and bootstrap your Nette application.", + "homepage": "https://nette.org", + "keywords": [ + "bootstrapping", + "configurator", + "nette" + ], + "time": "2019-03-26T12:59:07+00:00" + }, + { + "name": "nette/caching", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/caching.git", + "reference": "d1abc4216f1cd42263c266af1907bbcbda4094c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/caching/zipball/d1abc4216f1cd42263c266af1907bbcbda4094c9", + "reference": "d1abc4216f1cd42263c266af1907bbcbda4094c9", + "shasum": "" + }, + "require": { + "nette/finder": "^2.4 || ~3.0.0", + "nette/utils": "^2.4 || ~3.0.0", + "php": ">=7.1" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "latte/latte": "^2.4", + "nette/di": "^v3.0.0-beta2", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "suggest": { + "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "⏱ Nette Caching: library with easy-to-use API and many cache backends.", + "homepage": "https://nette.org", + "keywords": [ + "cache", + "journal", + "memcached", + "nette", + "sqlite" + ], + "time": "2019-02-05T21:28:16+00:00" + }, + { + "name": "nette/component-model", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/component-model.git", + "reference": "3153441f3d64bbdac300e75b8e5dde36590f7e01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/component-model/zipball/3153441f3d64bbdac300e75b8e5dde36590f7e01", + "reference": "3153441f3d64bbdac300e75b8e5dde36590f7e01", + "shasum": "" + }, + "require": { + "nette/utils": "^2.5 || ^3.0", + "php": ">=7.1" + }, + "conflict": { + "nette/application": "<2.4", + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "⚛ Nette Component Model", + "homepage": "https://nette.org", + "keywords": [ + "components", + "nette" + ], + "time": "2019-02-20T07:13:15+00:00" + }, + { + "name": "nette/database", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/nette/database.git", + "reference": "302586ea4161424e4c85717e20afe611ed1506f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/database/zipball/302586ea4161424e4c85717e20afe611ed1506f0", + "reference": "302586ea4161424e4c85717e20afe611ed1506f0", + "shasum": "" + }, + "require": { + "ext-pdo": "*", + "nette/caching": "^3.0", + "nette/utils": "^3.0", + "php": ">=7.1" + }, + "conflict": { + "nette/di": "<3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0.0", + "nette/di": "^v3.0", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "💾 Nette Database: layer with a familiar PDO-like API but much more powerful. Building queries, advanced joins, drivers for MySQL, PostgreSQL, SQLite, MS SQL Server and Oracle.", + "homepage": "https://nette.org", + "keywords": [ + "database", + "mssql", + "mysql", + "nette", + "notorm", + "oracle", + "pdo", + "postgresql", + "queries", + "sqlite" + ], + "time": "2019-04-01T04:56:22+00:00" + }, + { + "name": "nette/di", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/di.git", + "reference": "19d83539245aaacb59470828919182411061841f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/di/zipball/19d83539245aaacb59470828919182411061841f", + "reference": "19d83539245aaacb59470828919182411061841f", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "nette/neon": "^3.0", + "nette/php-generator": "^3.2.2", + "nette/robot-loader": "^3.2", + "nette/schema": "^1.0", + "nette/utils": "^3.0", + "php": ">=7.1" + }, + "conflict": { + "nette/bootstrap": "<3.0" + }, + "require-dev": { + "nette/tester": "^2.2", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/compatibility.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "💎 Nette Dependency Injection Container: Flexible, compiled and full-featured DIC with perfectly usable autowiring and support for all new PHP 7.1 features.", + "homepage": "https://nette.org", + "keywords": [ + "compiled", + "di", + "dic", + "factory", + "ioc", + "nette", + "static" + ], + "time": "2019-04-03T19:35:46+00:00" + }, + { + "name": "nette/finder", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/nette/finder.git", + "reference": "6be1b83ea68ac558aff189d640abe242e0306fe2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/finder/zipball/6be1b83ea68ac558aff189d640abe242e0306fe2", + "reference": "6be1b83ea68ac558aff189d640abe242e0306fe2", + "shasum": "" + }, + "require": { + "nette/utils": "^2.4 || ~3.0.0", + "php": ">=7.1" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "? Nette Finder: find files and directories with an intuitive API.", + "homepage": "https://nette.org", + "keywords": [ + "filesystem", + "glob", + "iterator", + "nette" + ], + "time": "2019-02-28T18:13:25+00:00" + }, + { + "name": "nette/forms", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/forms.git", + "reference": "52e0d4f2fca8ff2ef44fb9d7f10fed59457dc26e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/forms/zipball/52e0d4f2fca8ff2ef44fb9d7f10fed59457dc26e", + "reference": "52e0d4f2fca8ff2ef44fb9d7f10fed59457dc26e", + "shasum": "" + }, + "require": { + "nette/component-model": "^3.0", + "nette/http": "^3.0", + "nette/utils": "^3.0", + "php": ">=7.1" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "latte/latte": "^2.4.1", + "nette/di": "^3.0", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "?? Nette Forms: generating, validating and processing secure forms in PHP. Handy API, fully customizable, server & client side validation and mature design.", + "homepage": "https://nette.org", + "keywords": [ + "Forms", + "bootstrap", + "csrf", + "javascript", + "nette", + "validation" + ], + "time": "2019-02-28T17:49:02+00:00" + }, + { + "name": "nette/http", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/nette/http.git", + "reference": "2fa91a76583c3cb3e7d1a51c501c5653a6a11f8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/http/zipball/2fa91a76583c3cb3e7d1a51c501c5653a6a11f8a", + "reference": "2fa91a76583c3cb3e7d1a51c501c5653a6a11f8a", + "shasum": "" + }, + "require": { + "nette/utils": "^3.0", + "php": ">=7.1" + }, + "conflict": { + "nette/di": "<3.0" + }, + "require-dev": { + "nette/di": "^3.0", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "suggest": { + "ext-fileinfo": "to detect type of uploaded files", + "nette/security": "allows use Nette\\Http\\UserStorage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🌐 Nette Http: abstraction for HTTP request, response and session. Provides careful data sanitization and utility for URL and cookies manipulation.", + "homepage": "https://nette.org", + "keywords": [ + "cookies", + "http", + "nette", + "proxy", + "request", + "response", + "security", + "session", + "url" + ], + "time": "2019-04-03T11:57:10+00:00" + }, + { + "name": "nette/mail", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/mail.git", + "reference": "ce0064772ab3a6a01658c7368b63978597d60e08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/mail/zipball/ce0064772ab3a6a01658c7368b63978597d60e08", + "reference": "ce0064772ab3a6a01658c7368b63978597d60e08", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "nette/utils": "^2.4 || ^3.0", + "php": ">=7.1" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/di": "^3.0.0", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "suggest": { + "ext-fileinfo": "to detect type of attached files" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "? Nette Mail: handy email creation and transfer library for PHP with both text and MIME-compliant support.", + "homepage": "https://nette.org", + "keywords": [ + "mail", + "mailer", + "mime", + "nette", + "smtp" + ], + "time": "2019-02-20T06:53:15+00:00" + }, + { + "name": "nette/neon", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/neon.git", + "reference": "cbff32059cbdd8720deccf9e9eace6ee516f02eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/neon/zipball/cbff32059cbdd8720deccf9e9eace6ee516f02eb", + "reference": "cbff32059cbdd8720deccf9e9eace6ee516f02eb", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "ext-json": "*", + "php": ">=7.0" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "? Nette NEON: encodes and decodes NEON file format.", + "homepage": "http://ne-on.org", + "keywords": [ + "export", + "import", + "neon", + "nette", + "yaml" + ], + "time": "2019-02-05T21:30:40+00:00" + }, + { + "name": "nette/php-generator", + "version": "v3.2.2", + "source": { + "type": "git", + "url": "https://github.com/nette/php-generator.git", + "reference": "acff8b136fad84b860a626d133e791f95781f9f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/php-generator/zipball/acff8b136fad84b860a626d133e791f95781f9f5", + "reference": "acff8b136fad84b860a626d133e791f95781f9f5", + "shasum": "" + }, + "require": { + "nette/utils": "^2.4.2 || ~3.0.0", + "php": ">=7.1" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "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", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.3 features.", + "homepage": "https://nette.org", + "keywords": [ + "code", + "nette", + "php", + "scaffolding" + ], + "time": "2019-03-15T03:41:13+00:00" + }, + { + "name": "nette/robot-loader", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/nette/robot-loader.git", + "reference": "0712a0e39ae7956d6a94c0ab6ad41aa842544b5c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/robot-loader/zipball/0712a0e39ae7956d6a94c0ab6ad41aa842544b5c", + "reference": "0712a0e39ae7956d6a94c0ab6ad41aa842544b5c", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "nette/finder": "^2.5", + "nette/utils": "^3.0", + "php": ">=7.1" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "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", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "? Nette RobotLoader: high performance and comfortable autoloader that will search and autoload classes within your application.", + "homepage": "https://nette.org", + "keywords": [ + "autoload", + "class", + "interface", + "nette", + "trait" + ], + "time": "2019-03-08T21:57:24+00:00" + }, + { + "name": "nette/routing", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/routing.git", + "reference": "603c697f3df7ed214795d4e8e8c58fbf981232b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/routing/zipball/603c697f3df7ed214795d4e8e8c58fbf981232b1", + "reference": "603c697f3df7ed214795d4e8e8c58fbf981232b1", + "shasum": "" + }, + "require": { + "nette/http": "^3.0", + "nette/utils": "^3.0", + "php": ">=7.1" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "Nette Routing: two-ways URL conversion", + "homepage": "https://nette.org", + "keywords": [ + "nette" + ], + "time": "2019-02-13T15:57:18+00:00" + }, + { + "name": "nette/schema", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "6241d8d4da39e825dd6cb5bfbe4242912f4d7e4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/6241d8d4da39e825dd6cb5bfbe4242912f4d7e4d", + "reference": "6241d8d4da39e825dd6cb5bfbe4242912f4d7e4d", + "shasum": "" + }, + "require": { + "nette/utils": "^3.0.1", + "php": ">=7.1" + }, + "require-dev": { + "nette/tester": "^2.2", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "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" + ], + "time": "2019-04-03T15:53:25+00:00" + }, + { + "name": "nette/security", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/security.git", + "reference": "55b6f3e7e3defc8e4f1f78c947f53185c51d6147" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/security/zipball/55b6f3e7e3defc8e4f1f78c947f53185c51d6147", + "reference": "55b6f3e7e3defc8e4f1f78c947f53185c51d6147", + "shasum": "" + }, + "require": { + "nette/utils": "^2.4 || ^3.0", + "php": ">=7.1" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/di": "^3.0.0", + "nette/http": "^3.0.0", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "? Nette Security: provides authentication, authorization and a role-based access control management via ACL (Access Control List)", + "homepage": "https://nette.org", + "keywords": [ + "Authentication", + "acl", + "authorization", + "nette" + ], + "time": "2019-02-20T06:38:20+00:00" + }, + { + "name": "nette/utils", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "bd961f49b211997202bda1d0fbc410905be370d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/bd961f49b211997202bda1d0fbc410905be370d4", + "reference": "bd961f49b211997202bda1d0fbc410905be370d4", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize() and toAscii()", + "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-xml": "to use Strings::length() etc. when mbstring is not available" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "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" + ], + "time": "2019-03-22T01:00:30+00:00" + }, + { + "name": "tracy/tracy", + "version": "v2.6.2", + "source": { + "type": "git", + "url": "https://github.com/nette/tracy.git", + "reference": "9a6513089a836744e70af0910ad45f50e603dcf5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/tracy/zipball/9a6513089a836744e70af0910ad45f50e603dcf5", + "reference": "9a6513089a836744e70af0910ad45f50e603dcf5", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-session": "*", + "php": ">=7.1" + }, + "require-dev": { + "nette/di": "^2.4 || ~3.0.0", + "nette/tester": "^2.2", + "nette/utils": "^2.4 || ^3.0", + "psr/log": "^1.0" + }, + "suggest": { + "https://nette.org/donate": "Please support Tracy via a donation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "autoload": { + "classmap": [ + "src" + ], + "files": [ + "src/Tracy/shortcuts.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "😎 Tracy: the addictive tool to ease debugging PHP code for cool developers. Friendly design, logging, profiler, advanced features like debugging AJAX calls or CLI support. You will love it.", + "homepage": "https://tracy.nette.org", + "keywords": [ + "Xdebug", + "debug", + "debugger", + "nette", + "profiler" + ], + "time": "2019-04-03T20:29:00+00:00" + } + ], + "packages-dev": [ + { + "name": "nette/tester", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/nette/tester.git", + "reference": "899c70c53b40dfe4a214e568babb617a9c454071" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/tester/zipball/899c70c53b40dfe4a214e568babb617a9c454071", + "reference": "899c70c53b40dfe4a214e568babb617a9c454071", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "bin": [ + "src/tester" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "Nette Tester: enjoyable unit testing in PHP with code coverage reporter. ????", + "homepage": "https://tester.nette.org", + "keywords": [ + "Xdebug", + "assertions", + "clover", + "code coverage", + "nette", + "pcov", + "phpdbg", + "phpunit", + "testing", + "unit" + ], + "time": "2019-03-11T08:54:30+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">= 7.1" + }, + "platform-dev": [], + "platform-overrides": { + "php": "7.1" + } +} diff --git a/composer.phar b/composer.phar new file mode 100644 index 0000000000000000000000000000000000000000..b8ce13f23ed5f124a5a19ead8ef849989eb87088 GIT binary patch literal 1909682 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 +O3}jB@(!D_pWr{>rw%YF27sHF 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Èy+ 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¬Yfuc)g4%#0&Z@%4imQ7e#A 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

k+4mbmcu75-B92SN$=L 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

0c1H@Hkb-Ah+fm?XGQ4uc= zTquT@?239bGzp&*tAa?tL9q~w46Rz~U{E|j)s^@8?1OI8y44adY*RGVfv=h*!mo;8i9ErY=E7 z$dLlPPW4zBcZp-K*R>%M$_z;4touS-_-EJSezlU)M0x0VDPfR^T{p&Eocs_2@y_qB z$Fc*dN)B{{4?VTxx}8te(<NJ$;%r84)rGS^N}EdM&QRbmV0JsBVL9rmMj?Yid&k-Cip&eb>$lE1u5$2;-+( zga~rzix5pk9jfDD3fPWH&mc_MCb+)2nZwxfm8<%AJBXH`!H1o=2lIrA<-whp!K-1! zLLTT#5XSSZbMLW;anVZ7vh!M0Pnt|@X&1srZTdFokhmg`+=eu?@nFZ79iVCpQr+)F zu$T&K|1#_VkIAmAUKphui%1w2QO^VH`?+PPr}eE=ZTyLpu>8j|Y+=pbdeXS6x`JA_ zGkb{Y>X_o7;Q{YWyt4#4=v)|NQ_di+B-K87-l1f6c8?nrzUR7PeDuhrXtQ-%aHFHp z#zi9422kR;-}cx9d5Cd;m@bBOT6Yr{r0XO4qJIR!RX>E40%<>cl3+oD1&&7ZF5HlV zaWUhO-m$C%&az%lCGnz`$8svU7dIrsDp#g09EAEjQTCuj;hMAts%-+DJ&K(7C;N0S zVi4!{;0TILPZcZ$W&<}lqBma2;)4{2CN#a$1iavQtCbuJf2S5N1 z;9bCBg9s~Cz=8_$)8AI3;0gGqJM~Xiqlf_?;xCM#4|VWAxE820S~?I*(u(fMF>F`b9VMn z>9J|95_AT@gj@mldJ7v#Wu6|%YSma=zzHf#GVI+;hDL-LNJj9fHWhoE)lBsUd~tJD zRS9F5-QG5+fiYPyoacKbRE2Uk$-NYpp!?<-B%RW$2Jc`k`>c1Pk7?uaT>l4 zQ5i2av`30p%O_&{>_J_L+%?**ycfM$!67&@Cs;Ae+(jrYag9XzS$?=VF_`1V=h&G$y`H3m)TTf%a^nFOYfjZfmdg3lP|e32J18?G37RY{9#yX>E@Tlk=6ZKd zXIDMg9t^YlIQVlH#)qJlpI#W$t8w(*g)s}g(e(+O(@R+_lg0lF7sl=XOBcrNXBURP z1iVtZLKi(VWq0u*xrFaz4dSy$lUMK#=LU1Q+iJ9VW^~}MLNU`x7uhdMA6s*BnZ@2>>VL+oIhxb@n00`R`RvB|9MbRA-93F=H-rq*jxo9IDrR|#%?uS!%}cFrYx zuzS7kPPlAi><-tj0u=Dba+O9s@X*3fjK(sP-A^P?AXEJ^1>vx_-s%rVAV0fISoL+8 z%=@qFhZUd`(3R7}9YamPb2~Q$h*RI!bC6{XUd`|OtF)dn>SuKd0}^WCZsH&p6hU5n zo4AE=zF0V!{N=>|b$FpJ!utS&eji-Cva?=_==YFantZ2>zghKvJ$9ylGq_OBDrhoZ z&G$DmX?*vJ+;}Ja(2RE`-&1-)PXu&g&|rTaJ^-DaKY!L`d=V}Go@V)l=Ke~WokIKR zZI?lejI!D>8CF1CB~&{_lg(oy@wUN%j&Gn{vgIaYuB9Veva=9K=oXjkLPx4HIb}s3 zRU?)>AeOh?dumEscZlNwVdC9%PWS(|lvGw&;g$FGH*j4`UnII@2js(?G0sksZVc@fHtA z?N|>P`W)d`i>d)$w?iddu_8@Tg*F3CJHQVh%Vib@PXy+Un&$yn;ga@HQY{*c^=<^v zx-yB1dT~qrNfh(->Tq?ay2^7%4Vzo%4r_|lktR^OCjdOVlvibcTPI$CGs%gc!m!S< z@>rKa3FYJgIa+njhH88-;HCj{HNw5TG7Ekn0)w9K@2SgPt_O7ut|QWBSb=BK^RmHd zAhg^@7@m!HXJ*$#0NRWnkVF70@tR-hjwWx?r0-xLC9e+9guq*c(C9T2uBuetKD$fT zz-JmNwEB=+o8&q#{#^NS-a!J+RX4or6KFn>ejBd2cyfkq>>F6u_D2-nZDbRw5Av|S z-^E}(x6e*LG<%14ACZ?ZDi}Od6HVZHIb?+YerYSGm@Prk@ znn37w?V*vfO)Ju-6MtoZq`YeD(D6Z*erfQF#V=w@UIWx6#gn*&eUssBOCYe)@fwHm zI2)*g=CicVpOBdp#zTQ#7_Ak`KsSaR$+BVtnOxPle`@6pJq+efzF#}H16aOi(aVBK z+kMYxk{E09-iMk2UhCr{osY-Tv3DEx5Lh!! zJGXm}v$6*q6Vy1np;4TtW`D3^ab?^Zg0GM?7L)y}|6rZC{788WXYaVw;jCG#uE9#2 z;&a(-&X6i19OKBzy#tH3TFw-Wve(QE!jphva0g$p;ADt5H4zOV4tBdIsuO6XxilQo zE6;AaRdiO*x(tc3!jo1Gk+{IzxR2BH&idG@YljCD#!7mHaF*zxGU$ZNktC9$UAgDG z+*7XDpX^26(DxOjg7tAUXSvRqC?I_Ahn&_VplLmmnc`+U;h@r?X1UOH2n&ZMFIyri zWO=T7B{>|Fs$E@9DVz^K3lESVtb2l4Lw!I%^!ToRMR1U)gpS^31ef>vCrN0pMVOg7 zh{6hkPj@#@f_FNDT23>hPXf@y@7YW%p}wfLlU!h-`_aPuvABB; zKL2oG7GG+T&uj&reOs7W$V19OhLAfHX@W?w{xaK#n2Wa{vd?>1NTygAuqk~z_>5lg zzv=6--!@vmp3M8;^Sf=rKXNu-PUasOeAd*>uNVkbDMAu#NjS}x_0mF}5a{~~?aw=c zf3`?sRuR1eaGMBWPMe0Cau{j&z@uHSxRN0+^YhTVj=Ou>%vhAOMusgbL8|OpjIK4{aQbS_fOa;g`{c%>r}1`N#N%F<@fEs3B-rh=SfN>hZqDO+tq_ zUAL+gY}up0o7eqlv)vz_TT1Vd&@ju`gGAj6c$Ty~R9I?B1;xsY4K^OmBHvHYqJTVr zZIHFR{lH0L!%o9YgN(7Jn$%y7B0ueB$dXkN{8TJ5&=%k}m~KlP#(`yZj6w+%J{OQe zCjJ`!$uU(SX8K6s+9HOhW8FQ}C%#(c^>dS1y-jT&#-opTWL-#`Trbn(itXqT&tsuZ z?`MzDY%4EP z?<83A^h{H@iAL2#w~i;*XU-QM8d{%K$*KiC?2QRRyr0UgJfh(8lSmpyL5aM7TsRMpeJ!Uldz^+WX&z4;i(*|P4EEI3yex<;t}BTjedM=w0@Xn zV%BYs!%m!j_!_e1ahG(C;YECIck1o;R4BhytUzw%ca2v0o581h$&V8Sxh?etZwvY2 z9iH(Wru(hS4Z))uGG1rP2G$*+cMs=2!S`Tj+_cn|Q1tn8uOzkVzoL2b8 zEEgX}-XxziM;q&{&s-W5DSE-+%6Iw=iBDKD&y~s8|Ht-vh+hEQL^HinFy%riBK< zrMg3cNl=)T9grYxgR?f?@2!Pnrk z+^_iU5gcf|_ynmCddS-bmBOoPL2NW$5;-JOqpRHww!0mc0_q)tOCH{ev9{Ea(sHOu z_Z2KEd;L8>^)qICkE*2$@+reu?cl|WUB6(_Kf^fB|47Gc+4AGjdnL#YZlczT7eN0NF z1NikfWtJEU6Ryuo<`ANmAVInqvh(an zan}K1>vq`)VB-`#5e2$V%C{GEN=>JgdCNOLQpruAPPpXKVOu(n091uf3q3g+HP1fG zcY_%0j2n0QqkhsGMJX!X&z|Pr>IQ#SGIQpO{mXoHCac8xS#!H`y5G*13Ux@&*P*fe z8*_mCG6$I7#Hk=JQxLG*Cg!a<`AVj$&Xl26uDQXzSDMwrfVsbV7YvT0{A;2RalZaAlqJ^+Z`?~fs8w)##K z=xAqEcuDd;*VZ}Xg7!2tPXPQmPawx~-}eyh87vD>w?ki*eqjyl1v$eX-cEh7Cr&4< zFPjbK3*iXEn+^MXhhLO*7cLSzMS;;0bs4Ho*b z%zQ;{??OM5xM3)Azjdi=FP!egLn^e@`#8Qm|xgYeqJ_| zo(yHw2wCFyx3;4p^Pw(uxr4ypTsI5#@DS5|wN64BH~V@@*KQ9i5ukD&d3`6fn>}I$ z9I8_GEIs%Mw2S9QB*YXzxN90kORy#^fIX4<$>!=ueAOXQg|n-5Mze<9oX2^q7`rF~ zTl2`aCI~VvHiV$kj}QpHBtO*aI;#UN9C&LJl6Fv+H2GLY zuL4cQa*U3f*3=P3IMQiH|`BB$RA@wYmhO!#|G!pwh{UGz!u@#?YZ`6RS<&)?9Fe(+f2 z>w}rMY&*!)zMal=J1RGufoea3Hs2ejjG|f&u0fWBfduS5D*)q-{!$I{Hh}+pU?98_ z5jZe76-@7x!eB$30g)$QT?5P}3o0ii>bDi2&b8bHAdIh`;y z@w(vp?EI_8RI47+lGN+9atIF^R}Uw%#q$h+CJl@+FuZ2P=4%6ZGg1ol`kT zjO2HlGQ4%1*YNuy39u`F&c>);AIkHV*sEpab`cfm;q$cIDoNyLl7PJL@Dhm;tksY@ zjjC*e9Gc^4+(3b~IWD0-a}9rCGZ3P5rMR%Of|8h(hoW$S?K-jFjj&Tf+Zb#%If40j zpW&&B7KS}LG@Wmeou_$dJe7Cs)VS5Yme!LMTD2uW{cK?uF1=5VQhB>`79O>~{I8?G0- zX&Q!Rtw@F9NXHzFAx~)!iw+pf!*m__Cg91DJvH?B!h3xL17kdem3IXaO+Pt}ysbY9 zaZT)9@LXqQokA;qkbD`>#@tLn3NehhP(yr*DT>)K)m$6t@_xHO9^PeqoW!oMVP?C6 zEJ3>Hv7mI*%t|2?5AqMald$qUhIQAal0cHRztS;zMOFURR~&baVV9yIfQp6>_QLb2 zUq*ZLJdJY3o;M=lkxRRRs4BW1*2U5(DC}E3koQVvxH9grb$KXq~ViIRm+L-=f8pvvm;diMYN2{c4+U;E{6 zU;eSb{qpH`ChrFrMgBMB|3Z*9giJ8s&BMRQ)ZYnN{;!{Yp?>+-e?x%6*(cBN)8GG2 z3+mth{a+w{LB0ApZ@(*8IGSmJlkJ>`Epjjz>E6pU){1zUa#!)xBT^g_v6sd{sKq(65fTs zd_MmA_g+7^M_>9c^5@^fDQUa*FTW&Z@^^ULFaP@G=k$MmKJu4ef&_>^?)>++vv1*_ zdpqmb&+=c2u&AE1P?B>Ows4wXp7zsU{$+6UKK$}zZx8Ovr2D^nyOtfti748drG>;V zT*636MxJIG7#1TM$w?|nfgh3Mo*^2IBFC;I#W;3kC*A7BEcga?Abx@cJN}Jx%g$>A z3pPZpPP^*XeVkkOlsmR7kO90q>~8y@%1*Uk;HZ(c>G=)ohKnrDuUZMlbacM!HixI~ z3UDRs&Qn%=Zi$B`F%s8awO<{TaVx(XrO$5Z=Eav^pS0DzL`X+o(4tiFd+H?n%|64Y zaQBMv2TqeRt;+6&&f3!Ef3x)dKUhKu9KtHqZeQjX7=FNHFo@J?boIt02p@fJ0Jxs7 zFmKv*-#p_^%#Io_U?lSd5CPE`<7sAmlE%xmUMZS1pKB%LYa zawc5}b?IA^DSCE%d->Hj=lMQO)pK9CE^Z*{aanMfAIxvKj{h|YbzM@bmO2O1)WgWc z_|J~s62MUTJ<2Zda4WnB=brF_a5i_PC!jhMQYj|*WDU=iO}m2P{E@bxerEo~F2pCLv?sPX-%6Et*$YW0y<0A&>Xss zOk9GQOKrH)#>$jr`;>h+5Ve^ywFOpfkfXl_h&=fBU&>v%7CmL%nTs3f; z1Q;jktTtWMI?l3sDQCct48V(~V>pP8sUL~gaYkl2guRc$yoUX;plL9S-Z-HkIi(41 zT$KYcpq4Ymam&UtoY5Fh&VHi;i6p_onyo5|yGZ&wPmNx$#j z4WvJ!9>)1WM5czJGzy3fHman+xFLBW?BhCixyOo3i+egM*O$qkb@%g>p2GXdGap zay0e?Jac-ks7)cLzUxTOrUAZTVZ`2r6hKR8u~_XLy%`H`VtWpL`jHHL4x=CVQHVnu zQHIfRC?0_oHaVf3G9b7w*t0E$6CMr9jCfQ?1L3&Ph4lCr l=|eVunf&$Jrw`?mpT!@o&!az`U!zZce{ywoHR^f2zXAM4l#>7e literal 0 HcmV?d00001 diff --git a/log/.gitignore b/log/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/log/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..fbbf302 --- /dev/null +++ b/readme.md @@ -0,0 +1,61 @@ +Nette Web Project +================= + +This is a simple, skeleton application using the [Nette](https://nette.org). This is meant to +be used as a starting point for your new projects. + +[Nette](https://nette.org) is a popular tool for PHP web development. +It is designed to be the most usable and friendliest as possible. It focuses +on security and performance and is definitely one of the safest PHP frameworks. + +If you like Nette, **[please make a donation now](https://nette.org/donate)**. Thank you! + + +Requirements +------------ + +- Web Project for Nette 3.0 requires PHP 7.1 + + +Installation +------------ + +The best way to install Web Project is using Composer. If you don't have Composer yet, +download it following [the instructions](https://doc.nette.org/composer). Then use command: + + composer create-project nette/web-project path/to/install + cd path/to/install + + +Make directories `temp/` and `log/` writable. + + +Web Server Setup +---------------- + +The simplest way to get started is to start the built-in PHP server in the root directory of your project: + + php -S localhost:8000 -t www + +Then visit `http://localhost:8000` in your browser to see the welcome page. + +For Apache or Nginx, setup a virtual host to point to the `www/` directory of the project and you +should be ready to go. + +**It is CRITICAL that whole `app/`, `log/` and `temp/` directories are not accessible directly +via a web browser. See [security warning](https://nette.org/security-warning).** + + +Notice: Composer PHP version +---------------------------- + +This project forces PHP 5.6 (eventually 7.1) as your PHP version for Composer packages. If you have newer +version on production server you should change it in `composer.json`: + +```json +"config": { + "platform": { + "php": "7.2" + } +} +``` diff --git a/temp/.gitignore b/temp/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/temp/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/vendor/.htaccess b/vendor/.htaccess new file mode 100644 index 0000000..0a9a047 --- /dev/null +++ b/vendor/.htaccess @@ -0,0 +1,2 @@ +Order Allow,Deny +Deny from all diff --git a/vendor/autoload.php b/vendor/autoload.php new file mode 100644 index 0000000..22b864a --- /dev/null +++ b/vendor/autoload.php @@ -0,0 +1,7 @@ + /dev/null; cd "../nette/tester/src" && pwd) + +if [ -d /proc/cygdrive ]; then + case $(which php) in + $(readlink -n /proc/cygdrive)/*) + # We are in Cygwin using Windows php, so the path must be translated + dir=$(cygpath -m "$dir"); + ;; + esac +fi + +"${dir}/tester" "$@" diff --git a/vendor/bin/tester.bat b/vendor/bin/tester.bat new file mode 100644 index 0000000..368577a --- /dev/null +++ b/vendor/bin/tester.bat @@ -0,0 +1,4 @@ +@ECHO OFF +setlocal DISABLEDELAYEDEXPANSION +SET BIN_TARGET=%~dp0/../nette/tester/src/tester +php "%BIN_TARGET%" %* diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php new file mode 100644 index 0000000..fce8549 --- /dev/null +++ b/vendor/composer/ClassLoader.php @@ -0,0 +1,445 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see http://www.php-fig.org/psr/psr-0/ + * @see http://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + // PSR-4 + private $prefixLengthsPsr4 = array(); + private $prefixDirsPsr4 = array(); + private $fallbackDirsPsr4 = array(); + + // PSR-0 + private $prefixesPsr0 = array(); + private $fallbackDirsPsr0 = array(); + + private $useIncludePath = false; + private $classMap = array(); + private $classMapAuthoritative = false; + private $missingClasses = array(); + private $apcuPrefix; + + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', $this->prefixesPsr0); + } + + return array(); + } + + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + */ + public function add($prefix, $paths, $prepend = false) + { + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + (array) $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + (array) $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + (array) $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + (array) $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param array|string $paths The PSR-0 base directories + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param array|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + } + + /** + * Unregisters this instance as an autoloader. + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return bool|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath . '\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + */ +function includeFile($file) +{ + include $file; +} diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE new file mode 100644 index 0000000..f27399a --- /dev/null +++ b/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php new file mode 100644 index 0000000..04d71c1 --- /dev/null +++ b/vendor/composer/autoload_classmap.php @@ -0,0 +1,374 @@ + $vendorDir . '/latte/latte/src/Latte/exceptions.php', + 'Latte\\Compiler' => $vendorDir . '/latte/latte/src/Latte/Compiler/Compiler.php', + 'Latte\\Engine' => $vendorDir . '/latte/latte/src/Latte/Engine.php', + 'Latte\\Helpers' => $vendorDir . '/latte/latte/src/Latte/Helpers.php', + 'Latte\\HtmlNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/HtmlNode.php', + 'Latte\\ILoader' => $vendorDir . '/latte/latte/src/Latte/ILoader.php', + 'Latte\\IMacro' => $vendorDir . '/latte/latte/src/Latte/IMacro.php', + 'Latte\\Loaders\\FileLoader' => $vendorDir . '/latte/latte/src/Latte/Loaders/FileLoader.php', + 'Latte\\Loaders\\StringLoader' => $vendorDir . '/latte/latte/src/Latte/Loaders/StringLoader.php', + 'Latte\\MacroNode' => $vendorDir . '/latte/latte/src/Latte/Compiler/MacroNode.php', + 'Latte\\MacroTokens' => $vendorDir . '/latte/latte/src/Latte/Compiler/MacroTokens.php', + 'Latte\\Macros\\BlockMacros' => $vendorDir . '/latte/latte/src/Latte/Macros/BlockMacros.php', + 'Latte\\Macros\\CoreMacros' => $vendorDir . '/latte/latte/src/Latte/Macros/CoreMacros.php', + 'Latte\\Macros\\MacroSet' => $vendorDir . '/latte/latte/src/Latte/Macros/MacroSet.php', + 'Latte\\Parser' => $vendorDir . '/latte/latte/src/Latte/Compiler/Parser.php', + 'Latte\\PhpHelpers' => $vendorDir . '/latte/latte/src/Latte/Compiler/PhpHelpers.php', + 'Latte\\PhpWriter' => $vendorDir . '/latte/latte/src/Latte/Compiler/PhpWriter.php', + 'Latte\\RegexpException' => $vendorDir . '/latte/latte/src/Latte/exceptions.php', + 'Latte\\RuntimeException' => $vendorDir . '/latte/latte/src/Latte/exceptions.php', + 'Latte\\Runtime\\CachingIterator' => $vendorDir . '/latte/latte/src/Latte/Runtime/CachingIterator.php', + 'Latte\\Runtime\\FilterExecutor' => $vendorDir . '/latte/latte/src/Latte/Runtime/FilterExecutor.php', + 'Latte\\Runtime\\FilterInfo' => $vendorDir . '/latte/latte/src/Latte/Runtime/FilterInfo.php', + 'Latte\\Runtime\\Filters' => $vendorDir . '/latte/latte/src/Latte/Runtime/Filters.php', + 'Latte\\Runtime\\Html' => $vendorDir . '/latte/latte/src/Latte/Runtime/Html.php', + 'Latte\\Runtime\\IHtmlString' => $vendorDir . '/latte/latte/src/Latte/Runtime/IHtmlString.php', + 'Latte\\Runtime\\ISnippetBridge' => $vendorDir . '/latte/latte/src/Latte/Runtime/ISnippetBridge.php', + 'Latte\\Runtime\\SnippetDriver' => $vendorDir . '/latte/latte/src/Latte/Runtime/SnippetDriver.php', + 'Latte\\Runtime\\Template' => $vendorDir . '/latte/latte/src/Latte/Runtime/Template.php', + 'Latte\\Strict' => $vendorDir . '/latte/latte/src/Latte/Strict.php', + 'Latte\\Token' => $vendorDir . '/latte/latte/src/Latte/Compiler/Token.php', + 'Latte\\TokenIterator' => $vendorDir . '/latte/latte/src/Latte/Compiler/TokenIterator.php', + 'Latte\\Tokenizer' => $vendorDir . '/latte/latte/src/Latte/Compiler/Tokenizer.php', + 'NetteModule\\ErrorPresenter' => $vendorDir . '/nette/application/src/Application/ErrorPresenter.php', + 'NetteModule\\MicroPresenter' => $vendorDir . '/nette/application/src/Application/MicroPresenter.php', + 'Nette\\Application\\AbortException' => $vendorDir . '/nette/application/src/Application/exceptions.php', + 'Nette\\Application\\Application' => $vendorDir . '/nette/application/src/Application/Application.php', + 'Nette\\Application\\ApplicationException' => $vendorDir . '/nette/application/src/Application/exceptions.php', + 'Nette\\Application\\BadRequestException' => $vendorDir . '/nette/application/src/Application/exceptions.php', + 'Nette\\Application\\ForbiddenRequestException' => $vendorDir . '/nette/application/src/Application/exceptions.php', + 'Nette\\Application\\Helpers' => $vendorDir . '/nette/application/src/Application/Helpers.php', + 'Nette\\Application\\IPresenter' => $vendorDir . '/nette/application/src/Application/IPresenter.php', + 'Nette\\Application\\IPresenterFactory' => $vendorDir . '/nette/application/src/Application/IPresenterFactory.php', + 'Nette\\Application\\IResponse' => $vendorDir . '/nette/application/src/Application/IResponse.php', + 'Nette\\Application\\IRouter' => $vendorDir . '/nette/application/src/Application/IRouter.php', + 'Nette\\Application\\InvalidPresenterException' => $vendorDir . '/nette/application/src/Application/exceptions.php', + 'Nette\\Application\\LinkGenerator' => $vendorDir . '/nette/application/src/Application/LinkGenerator.php', + 'Nette\\Application\\PresenterFactory' => $vendorDir . '/nette/application/src/Application/PresenterFactory.php', + 'Nette\\Application\\Request' => $vendorDir . '/nette/application/src/Application/Request.php', + 'Nette\\Application\\Responses\\CallbackResponse' => $vendorDir . '/nette/application/src/Application/Responses/CallbackResponse.php', + 'Nette\\Application\\Responses\\FileResponse' => $vendorDir . '/nette/application/src/Application/Responses/FileResponse.php', + 'Nette\\Application\\Responses\\ForwardResponse' => $vendorDir . '/nette/application/src/Application/Responses/ForwardResponse.php', + 'Nette\\Application\\Responses\\JsonResponse' => $vendorDir . '/nette/application/src/Application/Responses/JsonResponse.php', + 'Nette\\Application\\Responses\\RedirectResponse' => $vendorDir . '/nette/application/src/Application/Responses/RedirectResponse.php', + 'Nette\\Application\\Responses\\TextResponse' => $vendorDir . '/nette/application/src/Application/Responses/TextResponse.php', + 'Nette\\Application\\Routers\\CliRouter' => $vendorDir . '/nette/application/src/Application/Routers/CliRouter.php', + 'Nette\\Application\\Routers\\Route' => $vendorDir . '/nette/application/src/Application/Routers/Route.php', + 'Nette\\Application\\Routers\\RouteList' => $vendorDir . '/nette/application/src/Application/Routers/RouteList.php', + 'Nette\\Application\\Routers\\SimpleRouter' => $vendorDir . '/nette/application/src/Application/Routers/SimpleRouter.php', + 'Nette\\Application\\UI\\BadSignalException' => $vendorDir . '/nette/application/src/Application/UI/BadSignalException.php', + 'Nette\\Application\\UI\\Component' => $vendorDir . '/nette/application/src/Application/UI/Component.php', + 'Nette\\Application\\UI\\ComponentReflection' => $vendorDir . '/nette/application/src/Application/UI/ComponentReflection.php', + 'Nette\\Application\\UI\\Control' => $vendorDir . '/nette/application/src/Application/UI/Control.php', + 'Nette\\Application\\UI\\Form' => $vendorDir . '/nette/application/src/Application/UI/Form.php', + 'Nette\\Application\\UI\\IRenderable' => $vendorDir . '/nette/application/src/Application/UI/IRenderable.php', + 'Nette\\Application\\UI\\ISignalReceiver' => $vendorDir . '/nette/application/src/Application/UI/ISignalReceiver.php', + 'Nette\\Application\\UI\\IStatePersistent' => $vendorDir . '/nette/application/src/Application/UI/IStatePersistent.php', + 'Nette\\Application\\UI\\ITemplate' => $vendorDir . '/nette/application/src/Application/UI/ITemplate.php', + 'Nette\\Application\\UI\\ITemplateFactory' => $vendorDir . '/nette/application/src/Application/UI/ITemplateFactory.php', + 'Nette\\Application\\UI\\InvalidLinkException' => $vendorDir . '/nette/application/src/Application/UI/InvalidLinkException.php', + 'Nette\\Application\\UI\\Link' => $vendorDir . '/nette/application/src/Application/UI/Link.php', + 'Nette\\Application\\UI\\MethodReflection' => $vendorDir . '/nette/application/src/Application/UI/MethodReflection.php', + 'Nette\\Application\\UI\\Multiplier' => $vendorDir . '/nette/application/src/Application/UI/Multiplier.php', + 'Nette\\Application\\UI\\Presenter' => $vendorDir . '/nette/application/src/Application/UI/Presenter.php', + 'Nette\\ArgumentOutOfRangeException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Bridges\\ApplicationDI\\ApplicationExtension' => $vendorDir . '/nette/application/src/Bridges/ApplicationDI/ApplicationExtension.php', + 'Nette\\Bridges\\ApplicationDI\\LatteExtension' => $vendorDir . '/nette/application/src/Bridges/ApplicationDI/LatteExtension.php', + 'Nette\\Bridges\\ApplicationDI\\PresenterFactoryCallback' => $vendorDir . '/nette/application/src/Bridges/ApplicationDI/PresenterFactoryCallback.php', + 'Nette\\Bridges\\ApplicationDI\\RoutingExtension' => $vendorDir . '/nette/application/src/Bridges/ApplicationDI/RoutingExtension.php', + 'Nette\\Bridges\\ApplicationLatte\\ILatteFactory' => $vendorDir . '/nette/application/src/Bridges/ApplicationLatte/ILatteFactory.php', + 'Nette\\Bridges\\ApplicationLatte\\Loader' => $vendorDir . '/nette/application/src/Bridges/ApplicationLatte/Loader.php', + 'Nette\\Bridges\\ApplicationLatte\\SnippetBridge' => $vendorDir . '/nette/application/src/Bridges/ApplicationLatte/SnippetBridge.php', + 'Nette\\Bridges\\ApplicationLatte\\Template' => $vendorDir . '/nette/application/src/Bridges/ApplicationLatte/Template.php', + 'Nette\\Bridges\\ApplicationLatte\\TemplateFactory' => $vendorDir . '/nette/application/src/Bridges/ApplicationLatte/TemplateFactory.php', + 'Nette\\Bridges\\ApplicationLatte\\UIMacros' => $vendorDir . '/nette/application/src/Bridges/ApplicationLatte/UIMacros.php', + 'Nette\\Bridges\\ApplicationLatte\\UIRuntime' => $vendorDir . '/nette/application/src/Bridges/ApplicationLatte/UIRuntime.php', + 'Nette\\Bridges\\ApplicationTracy\\RoutingPanel' => $vendorDir . '/nette/application/src/Bridges/ApplicationTracy/RoutingPanel.php', + 'Nette\\Bridges\\CacheDI\\CacheExtension' => $vendorDir . '/nette/caching/src/Bridges/CacheDI/CacheExtension.php', + 'Nette\\Bridges\\CacheLatte\\CacheMacro' => $vendorDir . '/nette/caching/src/Bridges/CacheLatte/CacheMacro.php', + 'Nette\\Bridges\\DITracy\\ContainerPanel' => $vendorDir . '/nette/di/src/Bridges/DITracy/ContainerPanel.php', + 'Nette\\Bridges\\DatabaseDI\\DatabaseExtension' => $vendorDir . '/nette/database/src/Bridges/DatabaseDI/DatabaseExtension.php', + 'Nette\\Bridges\\DatabaseTracy\\ConnectionPanel' => $vendorDir . '/nette/database/src/Bridges/DatabaseTracy/ConnectionPanel.php', + 'Nette\\Bridges\\FormsDI\\FormsExtension' => $vendorDir . '/nette/forms/src/Bridges/FormsDI/FormsExtension.php', + 'Nette\\Bridges\\FormsLatte\\FormMacros' => $vendorDir . '/nette/forms/src/Bridges/FormsLatte/FormMacros.php', + 'Nette\\Bridges\\FormsLatte\\Runtime' => $vendorDir . '/nette/forms/src/Bridges/FormsLatte/Runtime.php', + 'Nette\\Bridges\\Framework\\TracyBridge' => $vendorDir . '/nette/bootstrap/src/Bridges/Framework/TracyBridge.php', + 'Nette\\Bridges\\HttpDI\\HttpExtension' => $vendorDir . '/nette/http/src/Bridges/HttpDI/HttpExtension.php', + 'Nette\\Bridges\\HttpDI\\SessionExtension' => $vendorDir . '/nette/http/src/Bridges/HttpDI/SessionExtension.php', + 'Nette\\Bridges\\HttpTracy\\SessionPanel' => $vendorDir . '/nette/http/src/Bridges/HttpTracy/SessionPanel.php', + 'Nette\\Bridges\\MailDI\\MailExtension' => $vendorDir . '/nette/mail/src/Bridges/MailDI/MailExtension.php', + 'Nette\\Bridges\\ReflectionDI\\ReflectionExtension' => $vendorDir . '/nette/reflection/src/Bridges/ReflectionDI/ReflectionExtension.php', + 'Nette\\Bridges\\SecurityDI\\SecurityExtension' => $vendorDir . '/nette/security/src/Bridges/SecurityDI/SecurityExtension.php', + 'Nette\\Bridges\\SecurityTracy\\UserPanel' => $vendorDir . '/nette/security/src/Bridges/SecurityTracy/UserPanel.php', + 'Nette\\Caching\\Cache' => $vendorDir . '/nette/caching/src/Caching/Cache.php', + 'Nette\\Caching\\IBulkReader' => $vendorDir . '/nette/caching/src/Caching/IBulkReader.php', + 'Nette\\Caching\\IStorage' => $vendorDir . '/nette/caching/src/Caching/IStorage.php', + 'Nette\\Caching\\OutputHelper' => $vendorDir . '/nette/caching/src/Caching/OutputHelper.php', + 'Nette\\Caching\\Storages\\DevNullStorage' => $vendorDir . '/nette/caching/src/Caching/Storages/DevNullStorage.php', + 'Nette\\Caching\\Storages\\FileStorage' => $vendorDir . '/nette/caching/src/Caching/Storages/FileStorage.php', + 'Nette\\Caching\\Storages\\IJournal' => $vendorDir . '/nette/caching/src/Caching/Storages/IJournal.php', + 'Nette\\Caching\\Storages\\MemcachedStorage' => $vendorDir . '/nette/caching/src/Caching/Storages/MemcachedStorage.php', + 'Nette\\Caching\\Storages\\MemoryStorage' => $vendorDir . '/nette/caching/src/Caching/Storages/MemoryStorage.php', + 'Nette\\Caching\\Storages\\NewMemcachedStorage' => $vendorDir . '/nette/caching/src/Caching/Storages/NewMemcachedStorage.php', + 'Nette\\Caching\\Storages\\SQLiteJournal' => $vendorDir . '/nette/caching/src/Caching/Storages/SQLiteJournal.php', + 'Nette\\Caching\\Storages\\SQLiteStorage' => $vendorDir . '/nette/caching/src/Caching/Storages/SQLiteStorage.php', + 'Nette\\ComponentModel\\ArrayAccess' => $vendorDir . '/nette/component-model/src/ComponentModel/ArrayAccess.php', + 'Nette\\ComponentModel\\Component' => $vendorDir . '/nette/component-model/src/ComponentModel/Component.php', + 'Nette\\ComponentModel\\Container' => $vendorDir . '/nette/component-model/src/ComponentModel/Container.php', + 'Nette\\ComponentModel\\IComponent' => $vendorDir . '/nette/component-model/src/ComponentModel/IComponent.php', + 'Nette\\ComponentModel\\IContainer' => $vendorDir . '/nette/component-model/src/ComponentModel/IContainer.php', + 'Nette\\ComponentModel\\RecursiveComponentIterator' => $vendorDir . '/nette/component-model/src/ComponentModel/RecursiveComponentIterator.php', + 'Nette\\Configurator' => $vendorDir . '/nette/bootstrap/src/Bootstrap/Configurator.php', + 'Nette\\DI\\Compiler' => $vendorDir . '/nette/di/src/DI/Compiler.php', + 'Nette\\DI\\CompilerExtension' => $vendorDir . '/nette/di/src/DI/CompilerExtension.php', + 'Nette\\DI\\Config\\Adapters\\IniAdapter' => $vendorDir . '/nette/di/src/DI/Config/Adapters/IniAdapter.php', + 'Nette\\DI\\Config\\Adapters\\NeonAdapter' => $vendorDir . '/nette/di/src/DI/Config/Adapters/NeonAdapter.php', + 'Nette\\DI\\Config\\Adapters\\PhpAdapter' => $vendorDir . '/nette/di/src/DI/Config/Adapters/PhpAdapter.php', + 'Nette\\DI\\Config\\Helpers' => $vendorDir . '/nette/di/src/DI/Config/Helpers.php', + 'Nette\\DI\\Config\\IAdapter' => $vendorDir . '/nette/di/src/DI/Config/IAdapter.php', + 'Nette\\DI\\Config\\Loader' => $vendorDir . '/nette/di/src/DI/Config/Loader.php', + 'Nette\\DI\\Container' => $vendorDir . '/nette/di/src/DI/Container.php', + 'Nette\\DI\\ContainerBuilder' => $vendorDir . '/nette/di/src/DI/ContainerBuilder.php', + 'Nette\\DI\\ContainerLoader' => $vendorDir . '/nette/di/src/DI/ContainerLoader.php', + 'Nette\\DI\\DependencyChecker' => $vendorDir . '/nette/di/src/DI/DependencyChecker.php', + 'Nette\\DI\\Extensions\\ConstantsExtension' => $vendorDir . '/nette/di/src/DI/Extensions/ConstantsExtension.php', + 'Nette\\DI\\Extensions\\DIExtension' => $vendorDir . '/nette/di/src/DI/Extensions/DIExtension.php', + 'Nette\\DI\\Extensions\\DecoratorExtension' => $vendorDir . '/nette/di/src/DI/Extensions/DecoratorExtension.php', + 'Nette\\DI\\Extensions\\ExtensionsExtension' => $vendorDir . '/nette/di/src/DI/Extensions/ExtensionsExtension.php', + 'Nette\\DI\\Extensions\\InjectExtension' => $vendorDir . '/nette/di/src/DI/Extensions/InjectExtension.php', + 'Nette\\DI\\Extensions\\PhpExtension' => $vendorDir . '/nette/di/src/DI/Extensions/PhpExtension.php', + 'Nette\\DI\\Helpers' => $vendorDir . '/nette/di/src/DI/Helpers.php', + 'Nette\\DI\\MissingServiceException' => $vendorDir . '/nette/di/src/DI/exceptions.php', + 'Nette\\DI\\PhpGenerator' => $vendorDir . '/nette/di/src/DI/PhpGenerator.php', + 'Nette\\DI\\PhpReflection' => $vendorDir . '/nette/di/src/DI/PhpReflection.php', + 'Nette\\DI\\ServiceCreationException' => $vendorDir . '/nette/di/src/DI/exceptions.php', + 'Nette\\DI\\ServiceDefinition' => $vendorDir . '/nette/di/src/DI/ServiceDefinition.php', + 'Nette\\DI\\Statement' => $vendorDir . '/nette/di/src/DI/Statement.php', + 'Nette\\Database\\Connection' => $vendorDir . '/nette/database/src/Database/Connection.php', + 'Nette\\Database\\ConnectionException' => $vendorDir . '/nette/database/src/Database/exceptions.php', + 'Nette\\Database\\ConstraintViolationException' => $vendorDir . '/nette/database/src/Database/exceptions.php', + 'Nette\\Database\\Context' => $vendorDir . '/nette/database/src/Database/Context.php', + 'Nette\\Database\\Conventions\\AmbiguousReferenceKeyException' => $vendorDir . '/nette/database/src/Database/Conventions/AmbiguousReferenceKeyException.php', + 'Nette\\Database\\Conventions\\DiscoveredConventions' => $vendorDir . '/nette/database/src/Database/Conventions/DiscoveredConventions.php', + 'Nette\\Database\\Conventions\\StaticConventions' => $vendorDir . '/nette/database/src/Database/Conventions/StaticConventions.php', + 'Nette\\Database\\DriverException' => $vendorDir . '/nette/database/src/Database/DriverException.php', + 'Nette\\Database\\Drivers\\MsSqlDriver' => $vendorDir . '/nette/database/src/Database/Drivers/MsSqlDriver.php', + 'Nette\\Database\\Drivers\\MySqlDriver' => $vendorDir . '/nette/database/src/Database/Drivers/MySqlDriver.php', + 'Nette\\Database\\Drivers\\OciDriver' => $vendorDir . '/nette/database/src/Database/Drivers/OciDriver.php', + 'Nette\\Database\\Drivers\\OdbcDriver' => $vendorDir . '/nette/database/src/Database/Drivers/OdbcDriver.php', + 'Nette\\Database\\Drivers\\PgSqlDriver' => $vendorDir . '/nette/database/src/Database/Drivers/PgSqlDriver.php', + 'Nette\\Database\\Drivers\\Sqlite2Driver' => $vendorDir . '/nette/database/src/Database/Drivers/Sqlite2Driver.php', + 'Nette\\Database\\Drivers\\SqliteDriver' => $vendorDir . '/nette/database/src/Database/Drivers/SqliteDriver.php', + 'Nette\\Database\\Drivers\\SqlsrvDriver' => $vendorDir . '/nette/database/src/Database/Drivers/SqlsrvDriver.php', + 'Nette\\Database\\ForeignKeyConstraintViolationException' => $vendorDir . '/nette/database/src/Database/exceptions.php', + 'Nette\\Database\\Helpers' => $vendorDir . '/nette/database/src/Database/Helpers.php', + 'Nette\\Database\\IConventions' => $vendorDir . '/nette/database/src/Database/IConventions.php', + 'Nette\\Database\\IRow' => $vendorDir . '/nette/database/src/Database/IRow.php', + 'Nette\\Database\\IRowContainer' => $vendorDir . '/nette/database/src/Database/IRowContainer.php', + 'Nette\\Database\\IStructure' => $vendorDir . '/nette/database/src/Database/IStructure.php', + 'Nette\\Database\\ISupplementalDriver' => $vendorDir . '/nette/database/src/Database/ISupplementalDriver.php', + 'Nette\\Database\\NotNullConstraintViolationException' => $vendorDir . '/nette/database/src/Database/exceptions.php', + 'Nette\\Database\\ResultSet' => $vendorDir . '/nette/database/src/Database/ResultSet.php', + 'Nette\\Database\\Row' => $vendorDir . '/nette/database/src/Database/Row.php', + 'Nette\\Database\\SqlLiteral' => $vendorDir . '/nette/database/src/Database/SqlLiteral.php', + 'Nette\\Database\\SqlPreprocessor' => $vendorDir . '/nette/database/src/Database/SqlPreprocessor.php', + 'Nette\\Database\\Structure' => $vendorDir . '/nette/database/src/Database/Structure.php', + 'Nette\\Database\\Table\\ActiveRow' => $vendorDir . '/nette/database/src/Database/Table/ActiveRow.php', + 'Nette\\Database\\Table\\GroupedSelection' => $vendorDir . '/nette/database/src/Database/Table/GroupedSelection.php', + 'Nette\\Database\\Table\\IRow' => $vendorDir . '/nette/database/src/Database/Table/IRow.php', + 'Nette\\Database\\Table\\IRowContainer' => $vendorDir . '/nette/database/src/Database/Table/IRowContainer.php', + 'Nette\\Database\\Table\\Selection' => $vendorDir . '/nette/database/src/Database/Table/Selection.php', + 'Nette\\Database\\Table\\SqlBuilder' => $vendorDir . '/nette/database/src/Database/Table/SqlBuilder.php', + 'Nette\\Database\\UniqueConstraintViolationException' => $vendorDir . '/nette/database/src/Database/exceptions.php', + 'Nette\\DeprecatedException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\DirectoryNotFoundException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\FileNotFoundException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Forms\\Container' => $vendorDir . '/nette/forms/src/Forms/Container.php', + 'Nette\\Forms\\ControlGroup' => $vendorDir . '/nette/forms/src/Forms/ControlGroup.php', + 'Nette\\Forms\\Controls\\BaseControl' => $vendorDir . '/nette/forms/src/Forms/Controls/BaseControl.php', + 'Nette\\Forms\\Controls\\Button' => $vendorDir . '/nette/forms/src/Forms/Controls/Button.php', + 'Nette\\Forms\\Controls\\Checkbox' => $vendorDir . '/nette/forms/src/Forms/Controls/Checkbox.php', + 'Nette\\Forms\\Controls\\CheckboxList' => $vendorDir . '/nette/forms/src/Forms/Controls/CheckboxList.php', + 'Nette\\Forms\\Controls\\ChoiceControl' => $vendorDir . '/nette/forms/src/Forms/Controls/ChoiceControl.php', + 'Nette\\Forms\\Controls\\CsrfProtection' => $vendorDir . '/nette/forms/src/Forms/Controls/CsrfProtection.php', + 'Nette\\Forms\\Controls\\HiddenField' => $vendorDir . '/nette/forms/src/Forms/Controls/HiddenField.php', + 'Nette\\Forms\\Controls\\ImageButton' => $vendorDir . '/nette/forms/src/Forms/Controls/ImageButton.php', + 'Nette\\Forms\\Controls\\MultiChoiceControl' => $vendorDir . '/nette/forms/src/Forms/Controls/MultiChoiceControl.php', + 'Nette\\Forms\\Controls\\MultiSelectBox' => $vendorDir . '/nette/forms/src/Forms/Controls/MultiSelectBox.php', + 'Nette\\Forms\\Controls\\RadioList' => $vendorDir . '/nette/forms/src/Forms/Controls/RadioList.php', + 'Nette\\Forms\\Controls\\SelectBox' => $vendorDir . '/nette/forms/src/Forms/Controls/SelectBox.php', + 'Nette\\Forms\\Controls\\SubmitButton' => $vendorDir . '/nette/forms/src/Forms/Controls/SubmitButton.php', + 'Nette\\Forms\\Controls\\TextArea' => $vendorDir . '/nette/forms/src/Forms/Controls/TextArea.php', + 'Nette\\Forms\\Controls\\TextBase' => $vendorDir . '/nette/forms/src/Forms/Controls/TextBase.php', + 'Nette\\Forms\\Controls\\TextInput' => $vendorDir . '/nette/forms/src/Forms/Controls/TextInput.php', + 'Nette\\Forms\\Controls\\UploadControl' => $vendorDir . '/nette/forms/src/Forms/Controls/UploadControl.php', + 'Nette\\Forms\\Form' => $vendorDir . '/nette/forms/src/Forms/Form.php', + 'Nette\\Forms\\Helpers' => $vendorDir . '/nette/forms/src/Forms/Helpers.php', + 'Nette\\Forms\\IControl' => $vendorDir . '/nette/forms/src/Forms/IControl.php', + 'Nette\\Forms\\IFormRenderer' => $vendorDir . '/nette/forms/src/Forms/IFormRenderer.php', + 'Nette\\Forms\\ISubmitterControl' => $vendorDir . '/nette/forms/src/Forms/ISubmitterControl.php', + 'Nette\\Forms\\Rendering\\DefaultFormRenderer' => $vendorDir . '/nette/forms/src/Forms/Rendering/DefaultFormRenderer.php', + 'Nette\\Forms\\Rule' => $vendorDir . '/nette/forms/src/Forms/Rule.php', + 'Nette\\Forms\\Rules' => $vendorDir . '/nette/forms/src/Forms/Rules.php', + 'Nette\\Forms\\Validator' => $vendorDir . '/nette/forms/src/Forms/Validator.php', + 'Nette\\Http\\Context' => $vendorDir . '/nette/http/src/Http/Context.php', + 'Nette\\Http\\FileUpload' => $vendorDir . '/nette/http/src/Http/FileUpload.php', + 'Nette\\Http\\Helpers' => $vendorDir . '/nette/http/src/Http/Helpers.php', + 'Nette\\Http\\IRequest' => $vendorDir . '/nette/http/src/Http/IRequest.php', + 'Nette\\Http\\IResponse' => $vendorDir . '/nette/http/src/Http/IResponse.php', + 'Nette\\Http\\ISessionStorage' => $vendorDir . '/nette/http/src/Http/ISessionStorage.php', + 'Nette\\Http\\Request' => $vendorDir . '/nette/http/src/Http/Request.php', + 'Nette\\Http\\RequestFactory' => $vendorDir . '/nette/http/src/Http/RequestFactory.php', + 'Nette\\Http\\Response' => $vendorDir . '/nette/http/src/Http/Response.php', + 'Nette\\Http\\Session' => $vendorDir . '/nette/http/src/Http/Session.php', + 'Nette\\Http\\SessionSection' => $vendorDir . '/nette/http/src/Http/SessionSection.php', + 'Nette\\Http\\Url' => $vendorDir . '/nette/http/src/Http/Url.php', + 'Nette\\Http\\UrlScript' => $vendorDir . '/nette/http/src/Http/UrlScript.php', + 'Nette\\Http\\UserStorage' => $vendorDir . '/nette/http/src/Http/UserStorage.php', + 'Nette\\IOException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\InvalidArgumentException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\InvalidStateException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Iterators\\CachingIterator' => $vendorDir . '/nette/utils/src/Iterators/CachingIterator.php', + 'Nette\\Iterators\\Mapper' => $vendorDir . '/nette/utils/src/Iterators/Mapper.php', + 'Nette\\LegacyObject' => $vendorDir . '/nette/utils/src/Utils/LegacyObject.php', + 'Nette\\Loaders\\RobotLoader' => $vendorDir . '/nette/robot-loader/src/RobotLoader/RobotLoader.php', + 'Nette\\Localization\\ITranslator' => $vendorDir . '/nette/utils/src/Utils/ITranslator.php', + 'Nette\\Mail\\FallbackMailer' => $vendorDir . '/nette/mail/src/Mail/FallbackMailer.php', + 'Nette\\Mail\\FallbackMailerException' => $vendorDir . '/nette/mail/src/Mail/exceptions.php', + 'Nette\\Mail\\IMailer' => $vendorDir . '/nette/mail/src/Mail/IMailer.php', + 'Nette\\Mail\\Message' => $vendorDir . '/nette/mail/src/Mail/Message.php', + 'Nette\\Mail\\MimePart' => $vendorDir . '/nette/mail/src/Mail/MimePart.php', + 'Nette\\Mail\\SendException' => $vendorDir . '/nette/mail/src/Mail/exceptions.php', + 'Nette\\Mail\\SendmailMailer' => $vendorDir . '/nette/mail/src/Mail/SendmailMailer.php', + 'Nette\\Mail\\SmtpException' => $vendorDir . '/nette/mail/src/Mail/exceptions.php', + 'Nette\\Mail\\SmtpMailer' => $vendorDir . '/nette/mail/src/Mail/SmtpMailer.php', + 'Nette\\MemberAccessException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Neon\\Decoder' => $vendorDir . '/nette/neon/src/Neon/Decoder.php', + 'Nette\\Neon\\Encoder' => $vendorDir . '/nette/neon/src/Neon/Encoder.php', + 'Nette\\Neon\\Entity' => $vendorDir . '/nette/neon/src/Neon/Entity.php', + 'Nette\\Neon\\Exception' => $vendorDir . '/nette/neon/src/Neon/Exception.php', + 'Nette\\Neon\\Neon' => $vendorDir . '/nette/neon/src/Neon/Neon.php', + 'Nette\\NotImplementedException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\NotSupportedException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\OutOfRangeException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\PhpGenerator\\ClassType' => $vendorDir . '/nette/php-generator/src/PhpGenerator/ClassType.php', + 'Nette\\PhpGenerator\\Closure' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Closure.php', + 'Nette\\PhpGenerator\\Constant' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Constant.php', + 'Nette\\PhpGenerator\\Factory' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Factory.php', + 'Nette\\PhpGenerator\\GlobalFunction' => $vendorDir . '/nette/php-generator/src/PhpGenerator/GlobalFunction.php', + 'Nette\\PhpGenerator\\Helpers' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Helpers.php', + 'Nette\\PhpGenerator\\Method' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Method.php', + 'Nette\\PhpGenerator\\Parameter' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Parameter.php', + 'Nette\\PhpGenerator\\PhpFile' => $vendorDir . '/nette/php-generator/src/PhpGenerator/PhpFile.php', + 'Nette\\PhpGenerator\\PhpLiteral' => $vendorDir . '/nette/php-generator/src/PhpGenerator/PhpLiteral.php', + 'Nette\\PhpGenerator\\PhpNamespace' => $vendorDir . '/nette/php-generator/src/PhpGenerator/PhpNamespace.php', + 'Nette\\PhpGenerator\\Printer' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Printer.php', + 'Nette\\PhpGenerator\\Property' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Property.php', + 'Nette\\PhpGenerator\\PsrPrinter' => $vendorDir . '/nette/php-generator/src/PhpGenerator/PsrPrinter.php', + 'Nette\\PhpGenerator\\Traits\\CommentAware' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Traits/CommentAware.php', + 'Nette\\PhpGenerator\\Traits\\FunctionLike' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Traits/FunctionLike.php', + 'Nette\\PhpGenerator\\Traits\\NameAware' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Traits/NameAware.php', + 'Nette\\PhpGenerator\\Traits\\VisibilityAware' => $vendorDir . '/nette/php-generator/src/PhpGenerator/Traits/VisibilityAware.php', + 'Nette\\Reflection\\Annotation' => $vendorDir . '/nette/reflection/src/Reflection/Annotation.php', + 'Nette\\Reflection\\AnnotationsParser' => $vendorDir . '/nette/reflection/src/Reflection/AnnotationsParser.php', + 'Nette\\Reflection\\ClassType' => $vendorDir . '/nette/reflection/src/Reflection/ClassType.php', + 'Nette\\Reflection\\Extension' => $vendorDir . '/nette/reflection/src/Reflection/Extension.php', + 'Nette\\Reflection\\GlobalFunction' => $vendorDir . '/nette/reflection/src/Reflection/GlobalFunction.php', + 'Nette\\Reflection\\Helpers' => $vendorDir . '/nette/reflection/src/Reflection/Helpers.php', + 'Nette\\Reflection\\IAnnotation' => $vendorDir . '/nette/reflection/src/Reflection/IAnnotation.php', + 'Nette\\Reflection\\Method' => $vendorDir . '/nette/reflection/src/Reflection/Method.php', + 'Nette\\Reflection\\Parameter' => $vendorDir . '/nette/reflection/src/Reflection/Parameter.php', + 'Nette\\Reflection\\Property' => $vendorDir . '/nette/reflection/src/Reflection/Property.php', + 'Nette\\Security\\AuthenticationException' => $vendorDir . '/nette/security/src/Security/AuthenticationException.php', + 'Nette\\Security\\IAuthenticator' => $vendorDir . '/nette/security/src/Security/IAuthenticator.php', + 'Nette\\Security\\IAuthorizator' => $vendorDir . '/nette/security/src/Security/IAuthorizator.php', + 'Nette\\Security\\IIdentity' => $vendorDir . '/nette/security/src/Security/IIdentity.php', + 'Nette\\Security\\IResource' => $vendorDir . '/nette/security/src/Security/IResource.php', + 'Nette\\Security\\IRole' => $vendorDir . '/nette/security/src/Security/IRole.php', + 'Nette\\Security\\IUserStorage' => $vendorDir . '/nette/security/src/Security/IUserStorage.php', + 'Nette\\Security\\Identity' => $vendorDir . '/nette/security/src/Security/Identity.php', + 'Nette\\Security\\Passwords' => $vendorDir . '/nette/security/src/Security/Passwords.php', + 'Nette\\Security\\Permission' => $vendorDir . '/nette/security/src/Security/Permission.php', + 'Nette\\Security\\SimpleAuthenticator' => $vendorDir . '/nette/security/src/Security/SimpleAuthenticator.php', + 'Nette\\Security\\User' => $vendorDir . '/nette/security/src/Security/User.php', + 'Nette\\SmartObject' => $vendorDir . '/nette/utils/src/Utils/SmartObject.php', + 'Nette\\StaticClass' => $vendorDir . '/nette/utils/src/Utils/StaticClass.php', + 'Nette\\StaticClassException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\UnexpectedValueException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Utils\\ArrayHash' => $vendorDir . '/nette/utils/src/Utils/ArrayHash.php', + 'Nette\\Utils\\ArrayList' => $vendorDir . '/nette/utils/src/Utils/ArrayList.php', + 'Nette\\Utils\\Arrays' => $vendorDir . '/nette/utils/src/Utils/Arrays.php', + 'Nette\\Utils\\AssertionException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Utils\\Callback' => $vendorDir . '/nette/utils/src/Utils/Callback.php', + 'Nette\\Utils\\DateTime' => $vendorDir . '/nette/utils/src/Utils/DateTime.php', + 'Nette\\Utils\\FileSystem' => $vendorDir . '/nette/utils/src/Utils/FileSystem.php', + 'Nette\\Utils\\Finder' => $vendorDir . '/nette/finder/src/Utils/Finder.php', + 'Nette\\Utils\\Html' => $vendorDir . '/nette/utils/src/Utils/Html.php', + 'Nette\\Utils\\IHtmlString' => $vendorDir . '/nette/utils/src/Utils/IHtmlString.php', + 'Nette\\Utils\\Image' => $vendorDir . '/nette/utils/src/Utils/Image.php', + 'Nette\\Utils\\ImageException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Utils\\Json' => $vendorDir . '/nette/utils/src/Utils/Json.php', + 'Nette\\Utils\\JsonException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Utils\\ObjectHelpers' => $vendorDir . '/nette/utils/src/Utils/ObjectHelpers.php', + 'Nette\\Utils\\ObjectMixin' => $vendorDir . '/nette/utils/src/Utils/ObjectMixin.php', + 'Nette\\Utils\\Paginator' => $vendorDir . '/nette/utils/src/Utils/Paginator.php', + 'Nette\\Utils\\Random' => $vendorDir . '/nette/utils/src/Utils/Random.php', + 'Nette\\Utils\\Reflection' => $vendorDir . '/nette/utils/src/Utils/Reflection.php', + 'Nette\\Utils\\RegexpException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Utils\\Strings' => $vendorDir . '/nette/utils/src/Utils/Strings.php', + 'Nette\\Utils\\UnknownImageFileException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Utils\\Validators' => $vendorDir . '/nette/utils/src/Utils/Validators.php', + 'Tester\\Assert' => $vendorDir . '/nette/tester/src/Framework/Assert.php', + 'Tester\\AssertException' => $vendorDir . '/nette/tester/src/Framework/AssertException.php', + 'Tester\\CodeCoverage\\Collector' => $vendorDir . '/nette/tester/src/CodeCoverage/Collector.php', + 'Tester\\CodeCoverage\\Generators\\AbstractGenerator' => $vendorDir . '/nette/tester/src/CodeCoverage/Generators/AbstractGenerator.php', + 'Tester\\CodeCoverage\\Generators\\CloverXMLGenerator' => $vendorDir . '/nette/tester/src/CodeCoverage/Generators/CloverXMLGenerator.php', + 'Tester\\CodeCoverage\\Generators\\HtmlGenerator' => $vendorDir . '/nette/tester/src/CodeCoverage/Generators/HtmlGenerator.php', + 'Tester\\CodeCoverage\\PhpParser' => $vendorDir . '/nette/tester/src/CodeCoverage/PhpParser.php', + 'Tester\\DataProvider' => $vendorDir . '/nette/tester/src/Framework/DataProvider.php', + 'Tester\\DomQuery' => $vendorDir . '/nette/tester/src/Framework/DomQuery.php', + 'Tester\\Dumper' => $vendorDir . '/nette/tester/src/Framework/Dumper.php', + 'Tester\\Environment' => $vendorDir . '/nette/tester/src/Framework/Environment.php', + 'Tester\\Expect' => $vendorDir . '/nette/tester/src/Framework/Expect.php', + 'Tester\\FileMock' => $vendorDir . '/nette/tester/src/Framework/FileMock.php', + 'Tester\\FileMutator' => $vendorDir . '/nette/tester/src/Framework/FileMutator.php', + 'Tester\\Helpers' => $vendorDir . '/nette/tester/src/Framework/Helpers.php', + 'Tester\\Runner\\CliTester' => $vendorDir . '/nette/tester/src/Runner/CliTester.php', + 'Tester\\Runner\\CommandLine' => $vendorDir . '/nette/tester/src/Runner/CommandLine.php', + 'Tester\\Runner\\Job' => $vendorDir . '/nette/tester/src/Runner/Job.php', + 'Tester\\Runner\\OutputHandler' => $vendorDir . '/nette/tester/src/Runner/OutputHandler.php', + 'Tester\\Runner\\Output\\ConsolePrinter' => $vendorDir . '/nette/tester/src/Runner/Output/ConsolePrinter.php', + 'Tester\\Runner\\Output\\JUnitPrinter' => $vendorDir . '/nette/tester/src/Runner/Output/JUnitPrinter.php', + 'Tester\\Runner\\Output\\Logger' => $vendorDir . '/nette/tester/src/Runner/Output/Logger.php', + 'Tester\\Runner\\Output\\TapPrinter' => $vendorDir . '/nette/tester/src/Runner/Output/TapPrinter.php', + 'Tester\\Runner\\PhpInterpreter' => $vendorDir . '/nette/tester/src/Runner/PhpInterpreter.php', + 'Tester\\Runner\\Runner' => $vendorDir . '/nette/tester/src/Runner/Runner.php', + 'Tester\\Runner\\Test' => $vendorDir . '/nette/tester/src/Runner/Test.php', + 'Tester\\Runner\\TestHandler' => $vendorDir . '/nette/tester/src/Runner/TestHandler.php', + 'Tester\\TestCase' => $vendorDir . '/nette/tester/src/Framework/TestCase.php', + 'Tester\\TestCaseException' => $vendorDir . '/nette/tester/src/Framework/TestCase.php', + 'Tracy\\Bar' => $vendorDir . '/tracy/tracy/src/Tracy/Bar/Bar.php', + 'Tracy\\BlueScreen' => $vendorDir . '/tracy/tracy/src/Tracy/BlueScreen/BlueScreen.php', + 'Tracy\\Bridges\\Nette\\Bridge' => $vendorDir . '/tracy/tracy/src/Bridges/Nette/Bridge.php', + 'Tracy\\Bridges\\Nette\\MailSender' => $vendorDir . '/tracy/tracy/src/Bridges/Nette/MailSender.php', + 'Tracy\\Bridges\\Nette\\TracyExtension' => $vendorDir . '/tracy/tracy/src/Bridges/Nette/TracyExtension.php', + 'Tracy\\Bridges\\Psr\\PsrToTracyLoggerAdapter' => $vendorDir . '/tracy/tracy/src/Bridges/Psr/PsrToTracyLoggerAdapter.php', + 'Tracy\\Bridges\\Psr\\TracyToPsrLoggerAdapter' => $vendorDir . '/tracy/tracy/src/Bridges/Psr/TracyToPsrLoggerAdapter.php', + 'Tracy\\Debugger' => $vendorDir . '/tracy/tracy/src/Tracy/Debugger/Debugger.php', + 'Tracy\\DefaultBarPanel' => $vendorDir . '/tracy/tracy/src/Tracy/Bar/DefaultBarPanel.php', + 'Tracy\\Dumper' => $vendorDir . '/tracy/tracy/src/Tracy/Dumper/Dumper.php', + 'Tracy\\FireLogger' => $vendorDir . '/tracy/tracy/src/Tracy/Logger/FireLogger.php', + 'Tracy\\Helpers' => $vendorDir . '/tracy/tracy/src/Tracy/Helpers.php', + 'Tracy\\IBarPanel' => $vendorDir . '/tracy/tracy/src/Tracy/Bar/IBarPanel.php', + 'Tracy\\ILogger' => $vendorDir . '/tracy/tracy/src/Tracy/Logger/ILogger.php', + 'Tracy\\Logger' => $vendorDir . '/tracy/tracy/src/Tracy/Logger/Logger.php', + 'Tracy\\OutputDebugger' => $vendorDir . '/tracy/tracy/src/Tracy/OutputDebugger/OutputDebugger.php', +); diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php new file mode 100644 index 0000000..c04a51f --- /dev/null +++ b/vendor/composer/autoload_files.php @@ -0,0 +1,12 @@ + $vendorDir . '/tracy/tracy/src/Tracy/shortcuts.php', + 'a12da592622097d2b593a430e32e13fd' => $vendorDir . '/nette/utils/src/loader.php', + 'e7a6fd2e7a869bb207158e9416bdd9b0' => $vendorDir . '/nette/application/src/compatibility.php', +); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php new file mode 100644 index 0000000..b7fc012 --- /dev/null +++ b/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ += 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); + if ($useStaticLoader) { + require_once __DIR__ . '/autoload_static.php'; + + call_user_func(\Composer\Autoload\ComposerStaticInit1e4e7be4b54097efddcd9fd472eda330::getInitializer($loader)); + } else { + $map = require __DIR__ . '/autoload_namespaces.php'; + foreach ($map as $namespace => $path) { + $loader->set($namespace, $path); + } + + $map = require __DIR__ . '/autoload_psr4.php'; + foreach ($map as $namespace => $path) { + $loader->setPsr4($namespace, $path); + } + + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + } + + $loader->register(true); + + if ($useStaticLoader) { + $includeFiles = Composer\Autoload\ComposerStaticInit1e4e7be4b54097efddcd9fd472eda330::$files; + } else { + $includeFiles = require __DIR__ . '/autoload_files.php'; + } + foreach ($includeFiles as $fileIdentifier => $file) { + composerRequire1e4e7be4b54097efddcd9fd472eda330($fileIdentifier, $file); + } + + return $loader; + } +} + +function composerRequire1e4e7be4b54097efddcd9fd472eda330($fileIdentifier, $file) +{ + if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { + require $file; + + $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + } +} diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php new file mode 100644 index 0000000..a8d70d5 --- /dev/null +++ b/vendor/composer/autoload_static.php @@ -0,0 +1,390 @@ + __DIR__ . '/..' . '/tracy/tracy/src/Tracy/shortcuts.php', + 'a12da592622097d2b593a430e32e13fd' => __DIR__ . '/..' . '/nette/utils/src/loader.php', + 'e7a6fd2e7a869bb207158e9416bdd9b0' => __DIR__ . '/..' . '/nette/application/src/compatibility.php', + ); + + public static $classMap = array ( + 'Latte\\CompileException' => __DIR__ . '/..' . '/latte/latte/src/Latte/exceptions.php', + 'Latte\\Compiler' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Compiler.php', + 'Latte\\Engine' => __DIR__ . '/..' . '/latte/latte/src/Latte/Engine.php', + 'Latte\\Helpers' => __DIR__ . '/..' . '/latte/latte/src/Latte/Helpers.php', + 'Latte\\HtmlNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/HtmlNode.php', + 'Latte\\ILoader' => __DIR__ . '/..' . '/latte/latte/src/Latte/ILoader.php', + 'Latte\\IMacro' => __DIR__ . '/..' . '/latte/latte/src/Latte/IMacro.php', + 'Latte\\Loaders\\FileLoader' => __DIR__ . '/..' . '/latte/latte/src/Latte/Loaders/FileLoader.php', + 'Latte\\Loaders\\StringLoader' => __DIR__ . '/..' . '/latte/latte/src/Latte/Loaders/StringLoader.php', + 'Latte\\MacroNode' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/MacroNode.php', + 'Latte\\MacroTokens' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/MacroTokens.php', + 'Latte\\Macros\\BlockMacros' => __DIR__ . '/..' . '/latte/latte/src/Latte/Macros/BlockMacros.php', + 'Latte\\Macros\\CoreMacros' => __DIR__ . '/..' . '/latte/latte/src/Latte/Macros/CoreMacros.php', + 'Latte\\Macros\\MacroSet' => __DIR__ . '/..' . '/latte/latte/src/Latte/Macros/MacroSet.php', + 'Latte\\Parser' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Parser.php', + 'Latte\\PhpHelpers' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/PhpHelpers.php', + 'Latte\\PhpWriter' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/PhpWriter.php', + 'Latte\\RegexpException' => __DIR__ . '/..' . '/latte/latte/src/Latte/exceptions.php', + 'Latte\\RuntimeException' => __DIR__ . '/..' . '/latte/latte/src/Latte/exceptions.php', + 'Latte\\Runtime\\CachingIterator' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/CachingIterator.php', + 'Latte\\Runtime\\FilterExecutor' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/FilterExecutor.php', + 'Latte\\Runtime\\FilterInfo' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/FilterInfo.php', + 'Latte\\Runtime\\Filters' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/Filters.php', + 'Latte\\Runtime\\Html' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/Html.php', + 'Latte\\Runtime\\IHtmlString' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/IHtmlString.php', + 'Latte\\Runtime\\ISnippetBridge' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/ISnippetBridge.php', + 'Latte\\Runtime\\SnippetDriver' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/SnippetDriver.php', + 'Latte\\Runtime\\Template' => __DIR__ . '/..' . '/latte/latte/src/Latte/Runtime/Template.php', + 'Latte\\Strict' => __DIR__ . '/..' . '/latte/latte/src/Latte/Strict.php', + 'Latte\\Token' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Token.php', + 'Latte\\TokenIterator' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/TokenIterator.php', + 'Latte\\Tokenizer' => __DIR__ . '/..' . '/latte/latte/src/Latte/Compiler/Tokenizer.php', + 'NetteModule\\ErrorPresenter' => __DIR__ . '/..' . '/nette/application/src/Application/ErrorPresenter.php', + 'NetteModule\\MicroPresenter' => __DIR__ . '/..' . '/nette/application/src/Application/MicroPresenter.php', + 'Nette\\Application\\AbortException' => __DIR__ . '/..' . '/nette/application/src/Application/exceptions.php', + 'Nette\\Application\\Application' => __DIR__ . '/..' . '/nette/application/src/Application/Application.php', + 'Nette\\Application\\ApplicationException' => __DIR__ . '/..' . '/nette/application/src/Application/exceptions.php', + 'Nette\\Application\\BadRequestException' => __DIR__ . '/..' . '/nette/application/src/Application/exceptions.php', + 'Nette\\Application\\ForbiddenRequestException' => __DIR__ . '/..' . '/nette/application/src/Application/exceptions.php', + 'Nette\\Application\\Helpers' => __DIR__ . '/..' . '/nette/application/src/Application/Helpers.php', + 'Nette\\Application\\IPresenter' => __DIR__ . '/..' . '/nette/application/src/Application/IPresenter.php', + 'Nette\\Application\\IPresenterFactory' => __DIR__ . '/..' . '/nette/application/src/Application/IPresenterFactory.php', + 'Nette\\Application\\IResponse' => __DIR__ . '/..' . '/nette/application/src/Application/IResponse.php', + 'Nette\\Application\\IRouter' => __DIR__ . '/..' . '/nette/application/src/Application/IRouter.php', + 'Nette\\Application\\InvalidPresenterException' => __DIR__ . '/..' . '/nette/application/src/Application/exceptions.php', + 'Nette\\Application\\LinkGenerator' => __DIR__ . '/..' . '/nette/application/src/Application/LinkGenerator.php', + 'Nette\\Application\\PresenterFactory' => __DIR__ . '/..' . '/nette/application/src/Application/PresenterFactory.php', + 'Nette\\Application\\Request' => __DIR__ . '/..' . '/nette/application/src/Application/Request.php', + 'Nette\\Application\\Responses\\CallbackResponse' => __DIR__ . '/..' . '/nette/application/src/Application/Responses/CallbackResponse.php', + 'Nette\\Application\\Responses\\FileResponse' => __DIR__ . '/..' . '/nette/application/src/Application/Responses/FileResponse.php', + 'Nette\\Application\\Responses\\ForwardResponse' => __DIR__ . '/..' . '/nette/application/src/Application/Responses/ForwardResponse.php', + 'Nette\\Application\\Responses\\JsonResponse' => __DIR__ . '/..' . '/nette/application/src/Application/Responses/JsonResponse.php', + 'Nette\\Application\\Responses\\RedirectResponse' => __DIR__ . '/..' . '/nette/application/src/Application/Responses/RedirectResponse.php', + 'Nette\\Application\\Responses\\TextResponse' => __DIR__ . '/..' . '/nette/application/src/Application/Responses/TextResponse.php', + 'Nette\\Application\\Routers\\CliRouter' => __DIR__ . '/..' . '/nette/application/src/Application/Routers/CliRouter.php', + 'Nette\\Application\\Routers\\Route' => __DIR__ . '/..' . '/nette/application/src/Application/Routers/Route.php', + 'Nette\\Application\\Routers\\RouteList' => __DIR__ . '/..' . '/nette/application/src/Application/Routers/RouteList.php', + 'Nette\\Application\\Routers\\SimpleRouter' => __DIR__ . '/..' . '/nette/application/src/Application/Routers/SimpleRouter.php', + 'Nette\\Application\\UI\\BadSignalException' => __DIR__ . '/..' . '/nette/application/src/Application/UI/BadSignalException.php', + 'Nette\\Application\\UI\\Component' => __DIR__ . '/..' . '/nette/application/src/Application/UI/Component.php', + 'Nette\\Application\\UI\\ComponentReflection' => __DIR__ . '/..' . '/nette/application/src/Application/UI/ComponentReflection.php', + 'Nette\\Application\\UI\\Control' => __DIR__ . '/..' . '/nette/application/src/Application/UI/Control.php', + 'Nette\\Application\\UI\\Form' => __DIR__ . '/..' . '/nette/application/src/Application/UI/Form.php', + 'Nette\\Application\\UI\\IRenderable' => __DIR__ . '/..' . '/nette/application/src/Application/UI/IRenderable.php', + 'Nette\\Application\\UI\\ISignalReceiver' => __DIR__ . '/..' . '/nette/application/src/Application/UI/ISignalReceiver.php', + 'Nette\\Application\\UI\\IStatePersistent' => __DIR__ . '/..' . '/nette/application/src/Application/UI/IStatePersistent.php', + 'Nette\\Application\\UI\\ITemplate' => __DIR__ . '/..' . '/nette/application/src/Application/UI/ITemplate.php', + 'Nette\\Application\\UI\\ITemplateFactory' => __DIR__ . '/..' . '/nette/application/src/Application/UI/ITemplateFactory.php', + 'Nette\\Application\\UI\\InvalidLinkException' => __DIR__ . '/..' . '/nette/application/src/Application/UI/InvalidLinkException.php', + 'Nette\\Application\\UI\\Link' => __DIR__ . '/..' . '/nette/application/src/Application/UI/Link.php', + 'Nette\\Application\\UI\\MethodReflection' => __DIR__ . '/..' . '/nette/application/src/Application/UI/MethodReflection.php', + 'Nette\\Application\\UI\\Multiplier' => __DIR__ . '/..' . '/nette/application/src/Application/UI/Multiplier.php', + 'Nette\\Application\\UI\\Presenter' => __DIR__ . '/..' . '/nette/application/src/Application/UI/Presenter.php', + 'Nette\\ArgumentOutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Bridges\\ApplicationDI\\ApplicationExtension' => __DIR__ . '/..' . '/nette/application/src/Bridges/ApplicationDI/ApplicationExtension.php', + 'Nette\\Bridges\\ApplicationDI\\LatteExtension' => __DIR__ . '/..' . '/nette/application/src/Bridges/ApplicationDI/LatteExtension.php', + 'Nette\\Bridges\\ApplicationDI\\PresenterFactoryCallback' => __DIR__ . '/..' . '/nette/application/src/Bridges/ApplicationDI/PresenterFactoryCallback.php', + 'Nette\\Bridges\\ApplicationDI\\RoutingExtension' => __DIR__ . '/..' . '/nette/application/src/Bridges/ApplicationDI/RoutingExtension.php', + 'Nette\\Bridges\\ApplicationLatte\\ILatteFactory' => __DIR__ . '/..' . '/nette/application/src/Bridges/ApplicationLatte/ILatteFactory.php', + 'Nette\\Bridges\\ApplicationLatte\\Loader' => __DIR__ . '/..' . '/nette/application/src/Bridges/ApplicationLatte/Loader.php', + 'Nette\\Bridges\\ApplicationLatte\\SnippetBridge' => __DIR__ . '/..' . '/nette/application/src/Bridges/ApplicationLatte/SnippetBridge.php', + 'Nette\\Bridges\\ApplicationLatte\\Template' => __DIR__ . '/..' . '/nette/application/src/Bridges/ApplicationLatte/Template.php', + 'Nette\\Bridges\\ApplicationLatte\\TemplateFactory' => __DIR__ . '/..' . '/nette/application/src/Bridges/ApplicationLatte/TemplateFactory.php', + 'Nette\\Bridges\\ApplicationLatte\\UIMacros' => __DIR__ . '/..' . '/nette/application/src/Bridges/ApplicationLatte/UIMacros.php', + 'Nette\\Bridges\\ApplicationLatte\\UIRuntime' => __DIR__ . '/..' . '/nette/application/src/Bridges/ApplicationLatte/UIRuntime.php', + 'Nette\\Bridges\\ApplicationTracy\\RoutingPanel' => __DIR__ . '/..' . '/nette/application/src/Bridges/ApplicationTracy/RoutingPanel.php', + 'Nette\\Bridges\\CacheDI\\CacheExtension' => __DIR__ . '/..' . '/nette/caching/src/Bridges/CacheDI/CacheExtension.php', + 'Nette\\Bridges\\CacheLatte\\CacheMacro' => __DIR__ . '/..' . '/nette/caching/src/Bridges/CacheLatte/CacheMacro.php', + 'Nette\\Bridges\\DITracy\\ContainerPanel' => __DIR__ . '/..' . '/nette/di/src/Bridges/DITracy/ContainerPanel.php', + 'Nette\\Bridges\\DatabaseDI\\DatabaseExtension' => __DIR__ . '/..' . '/nette/database/src/Bridges/DatabaseDI/DatabaseExtension.php', + 'Nette\\Bridges\\DatabaseTracy\\ConnectionPanel' => __DIR__ . '/..' . '/nette/database/src/Bridges/DatabaseTracy/ConnectionPanel.php', + 'Nette\\Bridges\\FormsDI\\FormsExtension' => __DIR__ . '/..' . '/nette/forms/src/Bridges/FormsDI/FormsExtension.php', + 'Nette\\Bridges\\FormsLatte\\FormMacros' => __DIR__ . '/..' . '/nette/forms/src/Bridges/FormsLatte/FormMacros.php', + 'Nette\\Bridges\\FormsLatte\\Runtime' => __DIR__ . '/..' . '/nette/forms/src/Bridges/FormsLatte/Runtime.php', + 'Nette\\Bridges\\Framework\\TracyBridge' => __DIR__ . '/..' . '/nette/bootstrap/src/Bridges/Framework/TracyBridge.php', + 'Nette\\Bridges\\HttpDI\\HttpExtension' => __DIR__ . '/..' . '/nette/http/src/Bridges/HttpDI/HttpExtension.php', + 'Nette\\Bridges\\HttpDI\\SessionExtension' => __DIR__ . '/..' . '/nette/http/src/Bridges/HttpDI/SessionExtension.php', + 'Nette\\Bridges\\HttpTracy\\SessionPanel' => __DIR__ . '/..' . '/nette/http/src/Bridges/HttpTracy/SessionPanel.php', + 'Nette\\Bridges\\MailDI\\MailExtension' => __DIR__ . '/..' . '/nette/mail/src/Bridges/MailDI/MailExtension.php', + 'Nette\\Bridges\\ReflectionDI\\ReflectionExtension' => __DIR__ . '/..' . '/nette/reflection/src/Bridges/ReflectionDI/ReflectionExtension.php', + 'Nette\\Bridges\\SecurityDI\\SecurityExtension' => __DIR__ . '/..' . '/nette/security/src/Bridges/SecurityDI/SecurityExtension.php', + 'Nette\\Bridges\\SecurityTracy\\UserPanel' => __DIR__ . '/..' . '/nette/security/src/Bridges/SecurityTracy/UserPanel.php', + 'Nette\\Caching\\Cache' => __DIR__ . '/..' . '/nette/caching/src/Caching/Cache.php', + 'Nette\\Caching\\IBulkReader' => __DIR__ . '/..' . '/nette/caching/src/Caching/IBulkReader.php', + 'Nette\\Caching\\IStorage' => __DIR__ . '/..' . '/nette/caching/src/Caching/IStorage.php', + 'Nette\\Caching\\OutputHelper' => __DIR__ . '/..' . '/nette/caching/src/Caching/OutputHelper.php', + 'Nette\\Caching\\Storages\\DevNullStorage' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/DevNullStorage.php', + 'Nette\\Caching\\Storages\\FileStorage' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/FileStorage.php', + 'Nette\\Caching\\Storages\\IJournal' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/IJournal.php', + 'Nette\\Caching\\Storages\\MemcachedStorage' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/MemcachedStorage.php', + 'Nette\\Caching\\Storages\\MemoryStorage' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/MemoryStorage.php', + 'Nette\\Caching\\Storages\\NewMemcachedStorage' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/NewMemcachedStorage.php', + 'Nette\\Caching\\Storages\\SQLiteJournal' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/SQLiteJournal.php', + 'Nette\\Caching\\Storages\\SQLiteStorage' => __DIR__ . '/..' . '/nette/caching/src/Caching/Storages/SQLiteStorage.php', + 'Nette\\ComponentModel\\ArrayAccess' => __DIR__ . '/..' . '/nette/component-model/src/ComponentModel/ArrayAccess.php', + 'Nette\\ComponentModel\\Component' => __DIR__ . '/..' . '/nette/component-model/src/ComponentModel/Component.php', + 'Nette\\ComponentModel\\Container' => __DIR__ . '/..' . '/nette/component-model/src/ComponentModel/Container.php', + 'Nette\\ComponentModel\\IComponent' => __DIR__ . '/..' . '/nette/component-model/src/ComponentModel/IComponent.php', + 'Nette\\ComponentModel\\IContainer' => __DIR__ . '/..' . '/nette/component-model/src/ComponentModel/IContainer.php', + 'Nette\\ComponentModel\\RecursiveComponentIterator' => __DIR__ . '/..' . '/nette/component-model/src/ComponentModel/RecursiveComponentIterator.php', + 'Nette\\Configurator' => __DIR__ . '/..' . '/nette/bootstrap/src/Bootstrap/Configurator.php', + 'Nette\\DI\\Compiler' => __DIR__ . '/..' . '/nette/di/src/DI/Compiler.php', + 'Nette\\DI\\CompilerExtension' => __DIR__ . '/..' . '/nette/di/src/DI/CompilerExtension.php', + 'Nette\\DI\\Config\\Adapters\\IniAdapter' => __DIR__ . '/..' . '/nette/di/src/DI/Config/Adapters/IniAdapter.php', + 'Nette\\DI\\Config\\Adapters\\NeonAdapter' => __DIR__ . '/..' . '/nette/di/src/DI/Config/Adapters/NeonAdapter.php', + 'Nette\\DI\\Config\\Adapters\\PhpAdapter' => __DIR__ . '/..' . '/nette/di/src/DI/Config/Adapters/PhpAdapter.php', + 'Nette\\DI\\Config\\Helpers' => __DIR__ . '/..' . '/nette/di/src/DI/Config/Helpers.php', + 'Nette\\DI\\Config\\IAdapter' => __DIR__ . '/..' . '/nette/di/src/DI/Config/IAdapter.php', + 'Nette\\DI\\Config\\Loader' => __DIR__ . '/..' . '/nette/di/src/DI/Config/Loader.php', + 'Nette\\DI\\Container' => __DIR__ . '/..' . '/nette/di/src/DI/Container.php', + 'Nette\\DI\\ContainerBuilder' => __DIR__ . '/..' . '/nette/di/src/DI/ContainerBuilder.php', + 'Nette\\DI\\ContainerLoader' => __DIR__ . '/..' . '/nette/di/src/DI/ContainerLoader.php', + 'Nette\\DI\\DependencyChecker' => __DIR__ . '/..' . '/nette/di/src/DI/DependencyChecker.php', + 'Nette\\DI\\Extensions\\ConstantsExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/ConstantsExtension.php', + 'Nette\\DI\\Extensions\\DIExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/DIExtension.php', + 'Nette\\DI\\Extensions\\DecoratorExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/DecoratorExtension.php', + 'Nette\\DI\\Extensions\\ExtensionsExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/ExtensionsExtension.php', + 'Nette\\DI\\Extensions\\InjectExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/InjectExtension.php', + 'Nette\\DI\\Extensions\\PhpExtension' => __DIR__ . '/..' . '/nette/di/src/DI/Extensions/PhpExtension.php', + 'Nette\\DI\\Helpers' => __DIR__ . '/..' . '/nette/di/src/DI/Helpers.php', + 'Nette\\DI\\MissingServiceException' => __DIR__ . '/..' . '/nette/di/src/DI/exceptions.php', + 'Nette\\DI\\PhpGenerator' => __DIR__ . '/..' . '/nette/di/src/DI/PhpGenerator.php', + 'Nette\\DI\\PhpReflection' => __DIR__ . '/..' . '/nette/di/src/DI/PhpReflection.php', + 'Nette\\DI\\ServiceCreationException' => __DIR__ . '/..' . '/nette/di/src/DI/exceptions.php', + 'Nette\\DI\\ServiceDefinition' => __DIR__ . '/..' . '/nette/di/src/DI/ServiceDefinition.php', + 'Nette\\DI\\Statement' => __DIR__ . '/..' . '/nette/di/src/DI/Statement.php', + 'Nette\\Database\\Connection' => __DIR__ . '/..' . '/nette/database/src/Database/Connection.php', + 'Nette\\Database\\ConnectionException' => __DIR__ . '/..' . '/nette/database/src/Database/exceptions.php', + 'Nette\\Database\\ConstraintViolationException' => __DIR__ . '/..' . '/nette/database/src/Database/exceptions.php', + 'Nette\\Database\\Context' => __DIR__ . '/..' . '/nette/database/src/Database/Context.php', + 'Nette\\Database\\Conventions\\AmbiguousReferenceKeyException' => __DIR__ . '/..' . '/nette/database/src/Database/Conventions/AmbiguousReferenceKeyException.php', + 'Nette\\Database\\Conventions\\DiscoveredConventions' => __DIR__ . '/..' . '/nette/database/src/Database/Conventions/DiscoveredConventions.php', + 'Nette\\Database\\Conventions\\StaticConventions' => __DIR__ . '/..' . '/nette/database/src/Database/Conventions/StaticConventions.php', + 'Nette\\Database\\DriverException' => __DIR__ . '/..' . '/nette/database/src/Database/DriverException.php', + 'Nette\\Database\\Drivers\\MsSqlDriver' => __DIR__ . '/..' . '/nette/database/src/Database/Drivers/MsSqlDriver.php', + 'Nette\\Database\\Drivers\\MySqlDriver' => __DIR__ . '/..' . '/nette/database/src/Database/Drivers/MySqlDriver.php', + 'Nette\\Database\\Drivers\\OciDriver' => __DIR__ . '/..' . '/nette/database/src/Database/Drivers/OciDriver.php', + 'Nette\\Database\\Drivers\\OdbcDriver' => __DIR__ . '/..' . '/nette/database/src/Database/Drivers/OdbcDriver.php', + 'Nette\\Database\\Drivers\\PgSqlDriver' => __DIR__ . '/..' . '/nette/database/src/Database/Drivers/PgSqlDriver.php', + 'Nette\\Database\\Drivers\\Sqlite2Driver' => __DIR__ . '/..' . '/nette/database/src/Database/Drivers/Sqlite2Driver.php', + 'Nette\\Database\\Drivers\\SqliteDriver' => __DIR__ . '/..' . '/nette/database/src/Database/Drivers/SqliteDriver.php', + 'Nette\\Database\\Drivers\\SqlsrvDriver' => __DIR__ . '/..' . '/nette/database/src/Database/Drivers/SqlsrvDriver.php', + 'Nette\\Database\\ForeignKeyConstraintViolationException' => __DIR__ . '/..' . '/nette/database/src/Database/exceptions.php', + 'Nette\\Database\\Helpers' => __DIR__ . '/..' . '/nette/database/src/Database/Helpers.php', + 'Nette\\Database\\IConventions' => __DIR__ . '/..' . '/nette/database/src/Database/IConventions.php', + 'Nette\\Database\\IRow' => __DIR__ . '/..' . '/nette/database/src/Database/IRow.php', + 'Nette\\Database\\IRowContainer' => __DIR__ . '/..' . '/nette/database/src/Database/IRowContainer.php', + 'Nette\\Database\\IStructure' => __DIR__ . '/..' . '/nette/database/src/Database/IStructure.php', + 'Nette\\Database\\ISupplementalDriver' => __DIR__ . '/..' . '/nette/database/src/Database/ISupplementalDriver.php', + 'Nette\\Database\\NotNullConstraintViolationException' => __DIR__ . '/..' . '/nette/database/src/Database/exceptions.php', + 'Nette\\Database\\ResultSet' => __DIR__ . '/..' . '/nette/database/src/Database/ResultSet.php', + 'Nette\\Database\\Row' => __DIR__ . '/..' . '/nette/database/src/Database/Row.php', + 'Nette\\Database\\SqlLiteral' => __DIR__ . '/..' . '/nette/database/src/Database/SqlLiteral.php', + 'Nette\\Database\\SqlPreprocessor' => __DIR__ . '/..' . '/nette/database/src/Database/SqlPreprocessor.php', + 'Nette\\Database\\Structure' => __DIR__ . '/..' . '/nette/database/src/Database/Structure.php', + 'Nette\\Database\\Table\\ActiveRow' => __DIR__ . '/..' . '/nette/database/src/Database/Table/ActiveRow.php', + 'Nette\\Database\\Table\\GroupedSelection' => __DIR__ . '/..' . '/nette/database/src/Database/Table/GroupedSelection.php', + 'Nette\\Database\\Table\\IRow' => __DIR__ . '/..' . '/nette/database/src/Database/Table/IRow.php', + 'Nette\\Database\\Table\\IRowContainer' => __DIR__ . '/..' . '/nette/database/src/Database/Table/IRowContainer.php', + 'Nette\\Database\\Table\\Selection' => __DIR__ . '/..' . '/nette/database/src/Database/Table/Selection.php', + 'Nette\\Database\\Table\\SqlBuilder' => __DIR__ . '/..' . '/nette/database/src/Database/Table/SqlBuilder.php', + 'Nette\\Database\\UniqueConstraintViolationException' => __DIR__ . '/..' . '/nette/database/src/Database/exceptions.php', + 'Nette\\DeprecatedException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\DirectoryNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\FileNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Forms\\Container' => __DIR__ . '/..' . '/nette/forms/src/Forms/Container.php', + 'Nette\\Forms\\ControlGroup' => __DIR__ . '/..' . '/nette/forms/src/Forms/ControlGroup.php', + 'Nette\\Forms\\Controls\\BaseControl' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/BaseControl.php', + 'Nette\\Forms\\Controls\\Button' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/Button.php', + 'Nette\\Forms\\Controls\\Checkbox' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/Checkbox.php', + 'Nette\\Forms\\Controls\\CheckboxList' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/CheckboxList.php', + 'Nette\\Forms\\Controls\\ChoiceControl' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/ChoiceControl.php', + 'Nette\\Forms\\Controls\\CsrfProtection' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/CsrfProtection.php', + 'Nette\\Forms\\Controls\\HiddenField' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/HiddenField.php', + 'Nette\\Forms\\Controls\\ImageButton' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/ImageButton.php', + 'Nette\\Forms\\Controls\\MultiChoiceControl' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/MultiChoiceControl.php', + 'Nette\\Forms\\Controls\\MultiSelectBox' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/MultiSelectBox.php', + 'Nette\\Forms\\Controls\\RadioList' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/RadioList.php', + 'Nette\\Forms\\Controls\\SelectBox' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/SelectBox.php', + 'Nette\\Forms\\Controls\\SubmitButton' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/SubmitButton.php', + 'Nette\\Forms\\Controls\\TextArea' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/TextArea.php', + 'Nette\\Forms\\Controls\\TextBase' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/TextBase.php', + 'Nette\\Forms\\Controls\\TextInput' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/TextInput.php', + 'Nette\\Forms\\Controls\\UploadControl' => __DIR__ . '/..' . '/nette/forms/src/Forms/Controls/UploadControl.php', + 'Nette\\Forms\\Form' => __DIR__ . '/..' . '/nette/forms/src/Forms/Form.php', + 'Nette\\Forms\\Helpers' => __DIR__ . '/..' . '/nette/forms/src/Forms/Helpers.php', + 'Nette\\Forms\\IControl' => __DIR__ . '/..' . '/nette/forms/src/Forms/IControl.php', + 'Nette\\Forms\\IFormRenderer' => __DIR__ . '/..' . '/nette/forms/src/Forms/IFormRenderer.php', + 'Nette\\Forms\\ISubmitterControl' => __DIR__ . '/..' . '/nette/forms/src/Forms/ISubmitterControl.php', + 'Nette\\Forms\\Rendering\\DefaultFormRenderer' => __DIR__ . '/..' . '/nette/forms/src/Forms/Rendering/DefaultFormRenderer.php', + 'Nette\\Forms\\Rule' => __DIR__ . '/..' . '/nette/forms/src/Forms/Rule.php', + 'Nette\\Forms\\Rules' => __DIR__ . '/..' . '/nette/forms/src/Forms/Rules.php', + 'Nette\\Forms\\Validator' => __DIR__ . '/..' . '/nette/forms/src/Forms/Validator.php', + 'Nette\\Http\\Context' => __DIR__ . '/..' . '/nette/http/src/Http/Context.php', + 'Nette\\Http\\FileUpload' => __DIR__ . '/..' . '/nette/http/src/Http/FileUpload.php', + 'Nette\\Http\\Helpers' => __DIR__ . '/..' . '/nette/http/src/Http/Helpers.php', + 'Nette\\Http\\IRequest' => __DIR__ . '/..' . '/nette/http/src/Http/IRequest.php', + 'Nette\\Http\\IResponse' => __DIR__ . '/..' . '/nette/http/src/Http/IResponse.php', + 'Nette\\Http\\ISessionStorage' => __DIR__ . '/..' . '/nette/http/src/Http/ISessionStorage.php', + 'Nette\\Http\\Request' => __DIR__ . '/..' . '/nette/http/src/Http/Request.php', + 'Nette\\Http\\RequestFactory' => __DIR__ . '/..' . '/nette/http/src/Http/RequestFactory.php', + 'Nette\\Http\\Response' => __DIR__ . '/..' . '/nette/http/src/Http/Response.php', + 'Nette\\Http\\Session' => __DIR__ . '/..' . '/nette/http/src/Http/Session.php', + 'Nette\\Http\\SessionSection' => __DIR__ . '/..' . '/nette/http/src/Http/SessionSection.php', + 'Nette\\Http\\Url' => __DIR__ . '/..' . '/nette/http/src/Http/Url.php', + 'Nette\\Http\\UrlScript' => __DIR__ . '/..' . '/nette/http/src/Http/UrlScript.php', + 'Nette\\Http\\UserStorage' => __DIR__ . '/..' . '/nette/http/src/Http/UserStorage.php', + 'Nette\\IOException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\InvalidArgumentException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\InvalidStateException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Iterators\\CachingIterator' => __DIR__ . '/..' . '/nette/utils/src/Iterators/CachingIterator.php', + 'Nette\\Iterators\\Mapper' => __DIR__ . '/..' . '/nette/utils/src/Iterators/Mapper.php', + 'Nette\\LegacyObject' => __DIR__ . '/..' . '/nette/utils/src/Utils/LegacyObject.php', + 'Nette\\Loaders\\RobotLoader' => __DIR__ . '/..' . '/nette/robot-loader/src/RobotLoader/RobotLoader.php', + 'Nette\\Localization\\ITranslator' => __DIR__ . '/..' . '/nette/utils/src/Utils/ITranslator.php', + 'Nette\\Mail\\FallbackMailer' => __DIR__ . '/..' . '/nette/mail/src/Mail/FallbackMailer.php', + 'Nette\\Mail\\FallbackMailerException' => __DIR__ . '/..' . '/nette/mail/src/Mail/exceptions.php', + 'Nette\\Mail\\IMailer' => __DIR__ . '/..' . '/nette/mail/src/Mail/IMailer.php', + 'Nette\\Mail\\Message' => __DIR__ . '/..' . '/nette/mail/src/Mail/Message.php', + 'Nette\\Mail\\MimePart' => __DIR__ . '/..' . '/nette/mail/src/Mail/MimePart.php', + 'Nette\\Mail\\SendException' => __DIR__ . '/..' . '/nette/mail/src/Mail/exceptions.php', + 'Nette\\Mail\\SendmailMailer' => __DIR__ . '/..' . '/nette/mail/src/Mail/SendmailMailer.php', + 'Nette\\Mail\\SmtpException' => __DIR__ . '/..' . '/nette/mail/src/Mail/exceptions.php', + 'Nette\\Mail\\SmtpMailer' => __DIR__ . '/..' . '/nette/mail/src/Mail/SmtpMailer.php', + 'Nette\\MemberAccessException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Neon\\Decoder' => __DIR__ . '/..' . '/nette/neon/src/Neon/Decoder.php', + 'Nette\\Neon\\Encoder' => __DIR__ . '/..' . '/nette/neon/src/Neon/Encoder.php', + 'Nette\\Neon\\Entity' => __DIR__ . '/..' . '/nette/neon/src/Neon/Entity.php', + 'Nette\\Neon\\Exception' => __DIR__ . '/..' . '/nette/neon/src/Neon/Exception.php', + 'Nette\\Neon\\Neon' => __DIR__ . '/..' . '/nette/neon/src/Neon/Neon.php', + 'Nette\\NotImplementedException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\NotSupportedException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\OutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\PhpGenerator\\ClassType' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/ClassType.php', + 'Nette\\PhpGenerator\\Closure' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Closure.php', + 'Nette\\PhpGenerator\\Constant' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Constant.php', + 'Nette\\PhpGenerator\\Factory' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Factory.php', + 'Nette\\PhpGenerator\\GlobalFunction' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/GlobalFunction.php', + 'Nette\\PhpGenerator\\Helpers' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Helpers.php', + 'Nette\\PhpGenerator\\Method' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Method.php', + 'Nette\\PhpGenerator\\Parameter' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Parameter.php', + 'Nette\\PhpGenerator\\PhpFile' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/PhpFile.php', + 'Nette\\PhpGenerator\\PhpLiteral' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/PhpLiteral.php', + 'Nette\\PhpGenerator\\PhpNamespace' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/PhpNamespace.php', + 'Nette\\PhpGenerator\\Printer' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Printer.php', + 'Nette\\PhpGenerator\\Property' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Property.php', + 'Nette\\PhpGenerator\\PsrPrinter' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/PsrPrinter.php', + 'Nette\\PhpGenerator\\Traits\\CommentAware' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Traits/CommentAware.php', + 'Nette\\PhpGenerator\\Traits\\FunctionLike' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Traits/FunctionLike.php', + 'Nette\\PhpGenerator\\Traits\\NameAware' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Traits/NameAware.php', + 'Nette\\PhpGenerator\\Traits\\VisibilityAware' => __DIR__ . '/..' . '/nette/php-generator/src/PhpGenerator/Traits/VisibilityAware.php', + 'Nette\\Reflection\\Annotation' => __DIR__ . '/..' . '/nette/reflection/src/Reflection/Annotation.php', + 'Nette\\Reflection\\AnnotationsParser' => __DIR__ . '/..' . '/nette/reflection/src/Reflection/AnnotationsParser.php', + 'Nette\\Reflection\\ClassType' => __DIR__ . '/..' . '/nette/reflection/src/Reflection/ClassType.php', + 'Nette\\Reflection\\Extension' => __DIR__ . '/..' . '/nette/reflection/src/Reflection/Extension.php', + 'Nette\\Reflection\\GlobalFunction' => __DIR__ . '/..' . '/nette/reflection/src/Reflection/GlobalFunction.php', + 'Nette\\Reflection\\Helpers' => __DIR__ . '/..' . '/nette/reflection/src/Reflection/Helpers.php', + 'Nette\\Reflection\\IAnnotation' => __DIR__ . '/..' . '/nette/reflection/src/Reflection/IAnnotation.php', + 'Nette\\Reflection\\Method' => __DIR__ . '/..' . '/nette/reflection/src/Reflection/Method.php', + 'Nette\\Reflection\\Parameter' => __DIR__ . '/..' . '/nette/reflection/src/Reflection/Parameter.php', + 'Nette\\Reflection\\Property' => __DIR__ . '/..' . '/nette/reflection/src/Reflection/Property.php', + 'Nette\\Security\\AuthenticationException' => __DIR__ . '/..' . '/nette/security/src/Security/AuthenticationException.php', + 'Nette\\Security\\IAuthenticator' => __DIR__ . '/..' . '/nette/security/src/Security/IAuthenticator.php', + 'Nette\\Security\\IAuthorizator' => __DIR__ . '/..' . '/nette/security/src/Security/IAuthorizator.php', + 'Nette\\Security\\IIdentity' => __DIR__ . '/..' . '/nette/security/src/Security/IIdentity.php', + 'Nette\\Security\\IResource' => __DIR__ . '/..' . '/nette/security/src/Security/IResource.php', + 'Nette\\Security\\IRole' => __DIR__ . '/..' . '/nette/security/src/Security/IRole.php', + 'Nette\\Security\\IUserStorage' => __DIR__ . '/..' . '/nette/security/src/Security/IUserStorage.php', + 'Nette\\Security\\Identity' => __DIR__ . '/..' . '/nette/security/src/Security/Identity.php', + 'Nette\\Security\\Passwords' => __DIR__ . '/..' . '/nette/security/src/Security/Passwords.php', + 'Nette\\Security\\Permission' => __DIR__ . '/..' . '/nette/security/src/Security/Permission.php', + 'Nette\\Security\\SimpleAuthenticator' => __DIR__ . '/..' . '/nette/security/src/Security/SimpleAuthenticator.php', + 'Nette\\Security\\User' => __DIR__ . '/..' . '/nette/security/src/Security/User.php', + 'Nette\\SmartObject' => __DIR__ . '/..' . '/nette/utils/src/Utils/SmartObject.php', + 'Nette\\StaticClass' => __DIR__ . '/..' . '/nette/utils/src/Utils/StaticClass.php', + 'Nette\\StaticClassException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\UnexpectedValueException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Utils\\ArrayHash' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayHash.php', + 'Nette\\Utils\\ArrayList' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayList.php', + 'Nette\\Utils\\Arrays' => __DIR__ . '/..' . '/nette/utils/src/Utils/Arrays.php', + 'Nette\\Utils\\AssertionException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Utils\\Callback' => __DIR__ . '/..' . '/nette/utils/src/Utils/Callback.php', + 'Nette\\Utils\\DateTime' => __DIR__ . '/..' . '/nette/utils/src/Utils/DateTime.php', + 'Nette\\Utils\\FileSystem' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileSystem.php', + 'Nette\\Utils\\Finder' => __DIR__ . '/..' . '/nette/finder/src/Utils/Finder.php', + 'Nette\\Utils\\Html' => __DIR__ . '/..' . '/nette/utils/src/Utils/Html.php', + 'Nette\\Utils\\IHtmlString' => __DIR__ . '/..' . '/nette/utils/src/Utils/IHtmlString.php', + 'Nette\\Utils\\Image' => __DIR__ . '/..' . '/nette/utils/src/Utils/Image.php', + 'Nette\\Utils\\ImageException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Utils\\Json' => __DIR__ . '/..' . '/nette/utils/src/Utils/Json.php', + 'Nette\\Utils\\JsonException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Utils\\ObjectHelpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectHelpers.php', + 'Nette\\Utils\\ObjectMixin' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectMixin.php', + 'Nette\\Utils\\Paginator' => __DIR__ . '/..' . '/nette/utils/src/Utils/Paginator.php', + 'Nette\\Utils\\Random' => __DIR__ . '/..' . '/nette/utils/src/Utils/Random.php', + 'Nette\\Utils\\Reflection' => __DIR__ . '/..' . '/nette/utils/src/Utils/Reflection.php', + 'Nette\\Utils\\RegexpException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Utils\\Strings' => __DIR__ . '/..' . '/nette/utils/src/Utils/Strings.php', + 'Nette\\Utils\\UnknownImageFileException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', + 'Nette\\Utils\\Validators' => __DIR__ . '/..' . '/nette/utils/src/Utils/Validators.php', + 'Tester\\Assert' => __DIR__ . '/..' . '/nette/tester/src/Framework/Assert.php', + 'Tester\\AssertException' => __DIR__ . '/..' . '/nette/tester/src/Framework/AssertException.php', + 'Tester\\CodeCoverage\\Collector' => __DIR__ . '/..' . '/nette/tester/src/CodeCoverage/Collector.php', + 'Tester\\CodeCoverage\\Generators\\AbstractGenerator' => __DIR__ . '/..' . '/nette/tester/src/CodeCoverage/Generators/AbstractGenerator.php', + 'Tester\\CodeCoverage\\Generators\\CloverXMLGenerator' => __DIR__ . '/..' . '/nette/tester/src/CodeCoverage/Generators/CloverXMLGenerator.php', + 'Tester\\CodeCoverage\\Generators\\HtmlGenerator' => __DIR__ . '/..' . '/nette/tester/src/CodeCoverage/Generators/HtmlGenerator.php', + 'Tester\\CodeCoverage\\PhpParser' => __DIR__ . '/..' . '/nette/tester/src/CodeCoverage/PhpParser.php', + 'Tester\\DataProvider' => __DIR__ . '/..' . '/nette/tester/src/Framework/DataProvider.php', + 'Tester\\DomQuery' => __DIR__ . '/..' . '/nette/tester/src/Framework/DomQuery.php', + 'Tester\\Dumper' => __DIR__ . '/..' . '/nette/tester/src/Framework/Dumper.php', + 'Tester\\Environment' => __DIR__ . '/..' . '/nette/tester/src/Framework/Environment.php', + 'Tester\\Expect' => __DIR__ . '/..' . '/nette/tester/src/Framework/Expect.php', + 'Tester\\FileMock' => __DIR__ . '/..' . '/nette/tester/src/Framework/FileMock.php', + 'Tester\\FileMutator' => __DIR__ . '/..' . '/nette/tester/src/Framework/FileMutator.php', + 'Tester\\Helpers' => __DIR__ . '/..' . '/nette/tester/src/Framework/Helpers.php', + 'Tester\\Runner\\CliTester' => __DIR__ . '/..' . '/nette/tester/src/Runner/CliTester.php', + 'Tester\\Runner\\CommandLine' => __DIR__ . '/..' . '/nette/tester/src/Runner/CommandLine.php', + 'Tester\\Runner\\Job' => __DIR__ . '/..' . '/nette/tester/src/Runner/Job.php', + 'Tester\\Runner\\OutputHandler' => __DIR__ . '/..' . '/nette/tester/src/Runner/OutputHandler.php', + 'Tester\\Runner\\Output\\ConsolePrinter' => __DIR__ . '/..' . '/nette/tester/src/Runner/Output/ConsolePrinter.php', + 'Tester\\Runner\\Output\\JUnitPrinter' => __DIR__ . '/..' . '/nette/tester/src/Runner/Output/JUnitPrinter.php', + 'Tester\\Runner\\Output\\Logger' => __DIR__ . '/..' . '/nette/tester/src/Runner/Output/Logger.php', + 'Tester\\Runner\\Output\\TapPrinter' => __DIR__ . '/..' . '/nette/tester/src/Runner/Output/TapPrinter.php', + 'Tester\\Runner\\PhpInterpreter' => __DIR__ . '/..' . '/nette/tester/src/Runner/PhpInterpreter.php', + 'Tester\\Runner\\Runner' => __DIR__ . '/..' . '/nette/tester/src/Runner/Runner.php', + 'Tester\\Runner\\Test' => __DIR__ . '/..' . '/nette/tester/src/Runner/Test.php', + 'Tester\\Runner\\TestHandler' => __DIR__ . '/..' . '/nette/tester/src/Runner/TestHandler.php', + 'Tester\\TestCase' => __DIR__ . '/..' . '/nette/tester/src/Framework/TestCase.php', + 'Tester\\TestCaseException' => __DIR__ . '/..' . '/nette/tester/src/Framework/TestCase.php', + 'Tracy\\Bar' => __DIR__ . '/..' . '/tracy/tracy/src/Tracy/Bar/Bar.php', + 'Tracy\\BlueScreen' => __DIR__ . '/..' . '/tracy/tracy/src/Tracy/BlueScreen/BlueScreen.php', + 'Tracy\\Bridges\\Nette\\Bridge' => __DIR__ . '/..' . '/tracy/tracy/src/Bridges/Nette/Bridge.php', + 'Tracy\\Bridges\\Nette\\MailSender' => __DIR__ . '/..' . '/tracy/tracy/src/Bridges/Nette/MailSender.php', + 'Tracy\\Bridges\\Nette\\TracyExtension' => __DIR__ . '/..' . '/tracy/tracy/src/Bridges/Nette/TracyExtension.php', + 'Tracy\\Bridges\\Psr\\PsrToTracyLoggerAdapter' => __DIR__ . '/..' . '/tracy/tracy/src/Bridges/Psr/PsrToTracyLoggerAdapter.php', + 'Tracy\\Bridges\\Psr\\TracyToPsrLoggerAdapter' => __DIR__ . '/..' . '/tracy/tracy/src/Bridges/Psr/TracyToPsrLoggerAdapter.php', + 'Tracy\\Debugger' => __DIR__ . '/..' . '/tracy/tracy/src/Tracy/Debugger/Debugger.php', + 'Tracy\\DefaultBarPanel' => __DIR__ . '/..' . '/tracy/tracy/src/Tracy/Bar/DefaultBarPanel.php', + 'Tracy\\Dumper' => __DIR__ . '/..' . '/tracy/tracy/src/Tracy/Dumper/Dumper.php', + 'Tracy\\FireLogger' => __DIR__ . '/..' . '/tracy/tracy/src/Tracy/Logger/FireLogger.php', + 'Tracy\\Helpers' => __DIR__ . '/..' . '/tracy/tracy/src/Tracy/Helpers.php', + 'Tracy\\IBarPanel' => __DIR__ . '/..' . '/tracy/tracy/src/Tracy/Bar/IBarPanel.php', + 'Tracy\\ILogger' => __DIR__ . '/..' . '/tracy/tracy/src/Tracy/Logger/ILogger.php', + 'Tracy\\Logger' => __DIR__ . '/..' . '/tracy/tracy/src/Tracy/Logger/Logger.php', + 'Tracy\\OutputDebugger' => __DIR__ . '/..' . '/tracy/tracy/src/Tracy/OutputDebugger/OutputDebugger.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->classMap = ComposerStaticInit1e4e7be4b54097efddcd9fd472eda330::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json new file mode 100644 index 0000000..af1891a --- /dev/null +++ b/vendor/composer/installed.json @@ -0,0 +1,1344 @@ +[ + { + "name": "latte/latte", + "version": "v2.5.1", + "version_normalized": "2.5.1.0", + "source": { + "type": "git", + "url": "https://github.com/nette/latte.git", + "reference": "cf714b94f0759198a3c71361d46d5166cabaaf52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/latte/zipball/cf714b94f0759198a3c71361d46d5166cabaaf52", + "reference": "cf714b94f0759198a3c71361d46d5166cabaaf52", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.1" + }, + "conflict": { + "nette/application": "<2.4.1" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-fileinfo": "to use filter |datastream", + "ext-mbstring": "to use filters like lower, upper, capitalize, ...", + "nette/utils": "to use filter |webalize" + }, + "time": "2019-02-20T10:51:49+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "☕ Latte: the intuitive and fast template engine for those who want the most secure PHP sites. Introduces context-sensitive escaping.", + "homepage": "https://latte.nette.org", + "keywords": [ + "context-sensitive", + "engine", + "escaping", + "html", + "nette", + "security", + "template", + "twig" + ] + }, + { + "name": "nette/application", + "version": "v2.4.13", + "version_normalized": "2.4.13.0", + "source": { + "type": "git", + "url": "https://github.com/nette/application.git", + "reference": "023acd964383de11fbc32cae8f4dfd8043643a0f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/application/zipball/023acd964383de11fbc32cae8f4dfd8043643a0f", + "reference": "023acd964383de11fbc32cae8f4dfd8043643a0f", + "shasum": "" + }, + "require": { + "nette/component-model": "^2.3", + "nette/http": "^2.2", + "nette/reflection": "^2.2", + "nette/utils": "^2.4 || ~3.0.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/di": "<2.4", + "nette/forms": "<2.4", + "nette/latte": "<2.4", + "nette/nette": "<2.2" + }, + "require-dev": { + "latte/latte": "^2.4.3", + "mockery/mockery": "^0.9.5", + "nette/di": "^2.4", + "nette/forms": "^2.4", + "nette/robot-loader": "^2.4.2 || ^3.0", + "nette/security": "^2.4", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "suggest": { + "latte/latte": "Allows using Latte in templates", + "nette/forms": "Allows to use Nette\\Application\\UI\\Form" + }, + "time": "2018-11-23T22:28:11+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/compatibility.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🏆 Nette Application: a full-stack component-based MVC kernel for PHP that helps you write powerful and modern web applications. Write less, have cleaner code and your work will bring you joy.", + "homepage": "https://nette.org", + "keywords": [ + "Forms", + "component-based", + "control", + "framework", + "mvc", + "mvp", + "nette", + "presenter", + "routing", + "seo" + ] + }, + { + "name": "nette/bootstrap", + "version": "v2.4.6", + "version_normalized": "2.4.6.0", + "source": { + "type": "git", + "url": "https://github.com/nette/bootstrap.git", + "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/bootstrap/zipball/268816e3f1bb7426c3a4ceec2bd38a036b532543", + "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543", + "shasum": "" + }, + "require": { + "nette/di": "~2.4.7", + "nette/utils": "~2.4", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "latte/latte": "~2.2", + "nette/application": "~2.3", + "nette/caching": "~2.3", + "nette/database": "~2.3", + "nette/forms": "~2.3", + "nette/http": "~2.4.0", + "nette/mail": "~2.3", + "nette/robot-loader": "^2.4.2 || ^3.0", + "nette/safe-stream": "~2.2", + "nette/security": "~2.3", + "nette/tester": "~2.0", + "tracy/tracy": "^2.4.1" + }, + "suggest": { + "nette/robot-loader": "to use Configurator::createRobotLoader()", + "tracy/tracy": "to use Configurator::enableTracy()" + }, + "time": "2018-05-17T12:52:20+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🅱 Nette Bootstrap: the simple way to configure and bootstrap your Nette application.", + "homepage": "https://nette.org", + "keywords": [ + "bootstrapping", + "configurator", + "nette" + ] + }, + { + "name": "nette/caching", + "version": "v2.5.8", + "version_normalized": "2.5.8.0", + "source": { + "type": "git", + "url": "https://github.com/nette/caching.git", + "reference": "7fba7c7ab2585fafb7b31152f2595e1551120555" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/caching/zipball/7fba7c7ab2585fafb7b31152f2595e1551120555", + "reference": "7fba7c7ab2585fafb7b31152f2595e1551120555", + "shasum": "" + }, + "require": { + "nette/finder": "^2.2 || ~3.0.0", + "nette/utils": "^2.4 || ~3.0.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "latte/latte": "^2.4", + "nette/di": "^2.4 || ~3.0.0", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "suggest": { + "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal" + }, + "time": "2018-03-21T11:04:32+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "⏱ Nette Caching: library with easy-to-use API and many cache backends.", + "homepage": "https://nette.org", + "keywords": [ + "cache", + "journal", + "memcached", + "nette", + "sqlite" + ] + }, + { + "name": "nette/component-model", + "version": "v2.4.0", + "version_normalized": "2.4.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/component-model.git", + "reference": "6e7980f5ddec31f68a39e767799b1b0be9dd1014" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/component-model/zipball/6e7980f5ddec31f68a39e767799b1b0be9dd1014", + "reference": "6e7980f5ddec31f68a39e767799b1b0be9dd1014", + "shasum": "" + }, + "require": { + "nette/utils": "^2.5 || ~3.0.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/application": "<2.4", + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "time": "2018-03-20T16:32:50+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "⚛ Nette Component Model", + "homepage": "https://nette.org", + "keywords": [ + "components", + "nette" + ] + }, + { + "name": "nette/database", + "version": "v2.4.8", + "version_normalized": "2.4.8.0", + "source": { + "type": "git", + "url": "https://github.com/nette/database.git", + "reference": "388b172536f49e93c4b775c0adb1db2233a42c9f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/database/zipball/388b172536f49e93c4b775c0adb1db2233a42c9f", + "reference": "388b172536f49e93c4b775c0adb1db2233a42c9f", + "shasum": "" + }, + "require": { + "ext-pdo": "*", + "nette/caching": "^2.2", + "nette/utils": "^2.4", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "mockery/mockery": "^1.0.0", + "nette/di": "^2.4 || ~3.0.0", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "time": "2018-11-26T15:09:27+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "💾 Nette Database: layer with a familiar PDO-like API but much more powerful. Building queries, advanced joins, drivers for MySQL, PostgreSQL, SQLite, MS SQL Server and Oracle.", + "homepage": "https://nette.org", + "keywords": [ + "database", + "mssql", + "mysql", + "nette", + "notorm", + "oracle", + "pdo", + "postgresql", + "queries", + "sqlite" + ] + }, + { + "name": "nette/di", + "version": "v2.4.15", + "version_normalized": "2.4.15.0", + "source": { + "type": "git", + "url": "https://github.com/nette/di.git", + "reference": "d0561b8f77e8ef2ed6d83328860e16c81a5a8649" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/di/zipball/d0561b8f77e8ef2ed6d83328860e16c81a5a8649", + "reference": "d0561b8f77e8ef2ed6d83328860e16c81a5a8649", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "nette/neon": "^2.3.3 || ~3.0.0", + "nette/php-generator": "^2.6.1 || ^3.0.0", + "nette/utils": "^2.5.0 || ~3.0.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/bootstrap": "<2.4", + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "time": "2019-01-30T13:26:05+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "💎 Nette Dependency Injection Container: Flexible, compiled and full-featured DIC with perfectly usable autowiring and support for all new PHP 7.1 features.", + "homepage": "https://nette.org", + "keywords": [ + "compiled", + "di", + "dic", + "factory", + "ioc", + "nette", + "static" + ] + }, + { + "name": "nette/finder", + "version": "v2.5.0", + "version_normalized": "2.5.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/finder.git", + "reference": "6be1b83ea68ac558aff189d640abe242e0306fe2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/finder/zipball/6be1b83ea68ac558aff189d640abe242e0306fe2", + "reference": "6be1b83ea68ac558aff189d640abe242e0306fe2", + "shasum": "" + }, + "require": { + "nette/utils": "^2.4 || ~3.0.0", + "php": ">=7.1" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "time": "2019-02-28T18:13:25+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🔍 Nette Finder: find files and directories with an intuitive API.", + "homepage": "https://nette.org", + "keywords": [ + "filesystem", + "glob", + "iterator", + "nette" + ] + }, + { + "name": "nette/forms", + "version": "v2.4.9", + "version_normalized": "2.4.9.0", + "source": { + "type": "git", + "url": "https://github.com/nette/forms.git", + "reference": "787a924d09f507c44ead60f3822c31d61d909b65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/forms/zipball/787a924d09f507c44ead60f3822c31d61d909b65", + "reference": "787a924d09f507c44ead60f3822c31d61d909b65", + "shasum": "" + }, + "require": { + "nette/component-model": "~2.3", + "nette/http": "^2.3.8", + "nette/utils": "^2.4.6", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "latte/latte": "~2.4", + "nette/di": "~2.4", + "nette/tester": "~2.0", + "tracy/tracy": "^2.4" + }, + "time": "2018-09-16T18:32:29+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "?? Nette Forms: generating, validating and processing secure forms in PHP. Handy API, fully customizable, server & client side validation and mature design.", + "homepage": "https://nette.org", + "keywords": [ + "Forms", + "bootstrap", + "csrf", + "javascript", + "nette", + "validation" + ] + }, + { + "name": "nette/http", + "version": "v2.4.11", + "version_normalized": "2.4.11.0", + "source": { + "type": "git", + "url": "https://github.com/nette/http.git", + "reference": "3d75d11a880fe223bfa6bc7ca9822bdfe789e5a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/http/zipball/3d75d11a880fe223bfa6bc7ca9822bdfe789e5a6", + "reference": "3d75d11a880fe223bfa6bc7ca9822bdfe789e5a6", + "shasum": "" + }, + "require": { + "nette/utils": "^2.4 || ~3.0.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/di": "^2.4.8 || ~3.0.0", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "suggest": { + "ext-fileinfo": "to detect type of uploaded files", + "nette/security": "allows use Nette\\Http\\UserStorage" + }, + "time": "2019-03-13T19:04:45+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🌐 Nette Http: abstraction for HTTP request, response and session. Provides careful data sanitization and utility for URL and cookies manipulation.", + "homepage": "https://nette.org", + "keywords": [ + "cookies", + "http", + "nette", + "proxy", + "request", + "response", + "security", + "session", + "url" + ] + }, + { + "name": "nette/mail", + "version": "v2.4.6", + "version_normalized": "2.4.6.0", + "source": { + "type": "git", + "url": "https://github.com/nette/mail.git", + "reference": "431f1774034cc14ee6a795b6514fe6343f75a68e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/mail/zipball/431f1774034cc14ee6a795b6514fe6343f75a68e", + "reference": "431f1774034cc14ee6a795b6514fe6343f75a68e", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "nette/utils": "^2.4 || ~3.0.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/di": "^2.4 || ~3.0.0", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "suggest": { + "ext-fileinfo": "to detect type of attached files" + }, + "time": "2018-11-21T22:35:13+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📧 Nette Mail: handy email creation and transfer library for PHP with both text and MIME-compliant support.", + "homepage": "https://nette.org", + "keywords": [ + "mail", + "mailer", + "mime", + "nette", + "smtp" + ] + }, + { + "name": "nette/neon", + "version": "v3.0.0", + "version_normalized": "3.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/neon.git", + "reference": "cbff32059cbdd8720deccf9e9eace6ee516f02eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/neon/zipball/cbff32059cbdd8720deccf9e9eace6ee516f02eb", + "reference": "cbff32059cbdd8720deccf9e9eace6ee516f02eb", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "ext-json": "*", + "php": ">=7.0" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "time": "2019-02-05T21:30:40+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🍸 Nette NEON: encodes and decodes NEON file format.", + "homepage": "http://ne-on.org", + "keywords": [ + "export", + "import", + "neon", + "nette", + "yaml" + ] + }, + { + "name": "nette/php-generator", + "version": "v3.2.1", + "version_normalized": "3.2.1.0", + "source": { + "type": "git", + "url": "https://github.com/nette/php-generator.git", + "reference": "9de4e093a130f7a1bd175198799ebc0efbac6924" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/php-generator/zipball/9de4e093a130f7a1bd175198799ebc0efbac6924", + "reference": "9de4e093a130f7a1bd175198799ebc0efbac6924", + "shasum": "" + }, + "require": { + "nette/utils": "^2.4.2 || ~3.0.0", + "php": ">=7.1" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "time": "2018-11-27T19:00:14+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.3 features.", + "homepage": "https://nette.org", + "keywords": [ + "code", + "nette", + "php", + "scaffolding" + ] + }, + { + "name": "nette/reflection", + "version": "v2.4.2", + "version_normalized": "2.4.2.0", + "source": { + "type": "git", + "url": "https://github.com/nette/reflection.git", + "reference": "b12327e98ead74e87a1315e0d48182a702adf901" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/reflection/zipball/b12327e98ead74e87a1315e0d48182a702adf901", + "reference": "b12327e98ead74e87a1315e0d48182a702adf901", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "nette/caching": "^2.2 || ^3.0", + "nette/utils": "^2.4 || ^3.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/di": "^2.4 || ^3.0", + "nette/tester": "^2.0", + "tracy/tracy": "^2.4" + }, + "time": "2017-07-11T19:28:57+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "Nette Reflection: docblock annotations parser and common reflection classes", + "homepage": "https://nette.org", + "keywords": [ + "annotation", + "nette", + "reflection" + ] + }, + { + "name": "nette/robot-loader", + "version": "v3.1.1", + "version_normalized": "3.1.1.0", + "source": { + "type": "git", + "url": "https://github.com/nette/robot-loader.git", + "reference": "3e8d75d6d976e191bdf46752ca40a286671219d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/robot-loader/zipball/3e8d75d6d976e191bdf46752ca40a286671219d2", + "reference": "3e8d75d6d976e191bdf46752ca40a286671219d2", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "nette/finder": "^2.3 || ^3.0", + "nette/utils": "^2.4 || ^3.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "time": "2019-03-01T20:23:02+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🍀 Nette RobotLoader: high performance and comfortable autoloader that will search and autoload classes within your application.", + "homepage": "https://nette.org", + "keywords": [ + "autoload", + "class", + "interface", + "nette", + "trait" + ] + }, + { + "name": "nette/security", + "version": "v2.4.4", + "version_normalized": "2.4.4.0", + "source": { + "type": "git", + "url": "https://github.com/nette/security.git", + "reference": "7b8ac90c9ec405bb3b4dab9214bf122d3620fc65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/security/zipball/7b8ac90c9ec405bb3b4dab9214bf122d3620fc65", + "reference": "7b8ac90c9ec405bb3b4dab9214bf122d3620fc65", + "shasum": "" + }, + "require": { + "nette/utils": "~2.4", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/di": "~2.4", + "nette/http": "~2.4", + "nette/tester": "~2.0", + "tracy/tracy": "^2.4" + }, + "time": "2018-10-17T15:50:54+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🔑 Nette Security: provides authentication, authorization and a role-based access control management via ACL (Access Control List)", + "homepage": "https://nette.org", + "keywords": [ + "Authentication", + "acl", + "authorization", + "nette" + ] + }, + { + "name": "nette/tester", + "version": "v2.2.0", + "version_normalized": "2.2.0.0", + "source": { + "type": "git", + "url": "https://github.com/nette/tester.git", + "reference": "899c70c53b40dfe4a214e568babb617a9c454071" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/tester/zipball/899c70c53b40dfe4a214e568babb617a9c454071", + "reference": "899c70c53b40dfe4a214e568babb617a9c454071", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "time": "2019-03-11T08:54:30+00:00", + "bin": [ + "src/tester" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "Nette Tester: enjoyable unit testing in PHP with code coverage reporter. 🍏🍏🍎🍏", + "homepage": "https://tester.nette.org", + "keywords": [ + "Xdebug", + "assertions", + "clover", + "code coverage", + "nette", + "pcov", + "phpdbg", + "phpunit", + "testing", + "unit" + ] + }, + { + "name": "nette/utils", + "version": "v2.5.3", + "version_normalized": "2.5.3.0", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/17b9f76f2abd0c943adfb556e56f2165460b15ce", + "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize() and toAscii()", + "ext-intl": "for script transliteration in Strings::webalize() and toAscii()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" + }, + "time": "2018-09-18T10:22:16+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/loader.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "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" + ] + }, + { + "name": "tracy/tracy", + "version": "v2.6.1", + "version_normalized": "2.6.1.0", + "source": { + "type": "git", + "url": "https://github.com/nette/tracy.git", + "reference": "e179856e5dcc3ced99df1596cd299246fb1c3ac2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/tracy/zipball/e179856e5dcc3ced99df1596cd299246fb1c3ac2", + "reference": "e179856e5dcc3ced99df1596cd299246fb1c3ac2", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-session": "*", + "php": ">=7.1" + }, + "require-dev": { + "nette/di": "^2.4 || ~3.0.0", + "nette/tester": "^2.1", + "nette/utils": "^2.4 || ^3.0", + "psr/log": "^1.0" + }, + "suggest": { + "https://nette.org/donate": "Please support Tracy via a donation" + }, + "time": "2019-03-01T02:12:13+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src" + ], + "files": [ + "src/Tracy/shortcuts.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "😎 Tracy: the addictive tool to ease debugging PHP code for cool developers. Friendly design, logging, profiler, advanced features like debugging AJAX calls or CLI support. You will love it.", + "homepage": "https://tracy.nette.org", + "keywords": [ + "Xdebug", + "debug", + "debugger", + "nette", + "profiler" + ] + } +] diff --git a/vendor/latte/composer.json b/vendor/latte/composer.json new file mode 100644 index 0000000..7d8ae3b --- /dev/null +++ b/vendor/latte/composer.json @@ -0,0 +1,43 @@ +{ + "name": "latte/latte", + "description": "☕ Latte: the intuitive and fast template engine for those who want the most secure PHP sites. Introduces context-sensitive escaping.", + "keywords": ["template", "nette", "security", "engine", "html", "twig", "context-sensitive", "escaping"], + "homepage": "https://latte.nette.org", + "license": ["BSD-3-Clause", "GPL-2.0", "GPL-3.0"], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "require": { + "php": ">=7.1", + "ext-json": "*", + "ext-tokenizer": "*" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-mbstring": "to use filters like lower, upper, capitalize, ...", + "ext-fileinfo": "to use filter |datastream", + "nette/utils": "to use filter |webalize" + }, + "conflict": { + "nette/application": "<2.4.1" + }, + "autoload": { + "classmap": ["src/"] + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + } +} diff --git a/vendor/latte/latte/composer.json b/vendor/latte/latte/composer.json new file mode 100644 index 0000000..7d8ae3b --- /dev/null +++ b/vendor/latte/latte/composer.json @@ -0,0 +1,43 @@ +{ + "name": "latte/latte", + "description": "☕ Latte: the intuitive and fast template engine for those who want the most secure PHP sites. Introduces context-sensitive escaping.", + "keywords": ["template", "nette", "security", "engine", "html", "twig", "context-sensitive", "escaping"], + "homepage": "https://latte.nette.org", + "license": ["BSD-3-Clause", "GPL-2.0", "GPL-3.0"], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "require": { + "php": ">=7.1", + "ext-json": "*", + "ext-tokenizer": "*" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-mbstring": "to use filters like lower, upper, capitalize, ...", + "ext-fileinfo": "to use filter |datastream", + "nette/utils": "to use filter |webalize" + }, + "conflict": { + "nette/application": "<2.4.1" + }, + "autoload": { + "classmap": ["src/"] + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + } +} diff --git a/vendor/latte/latte/contributing.md b/vendor/latte/latte/contributing.md new file mode 100644 index 0000000..184152c --- /dev/null +++ b/vendor/latte/latte/contributing.md @@ -0,0 +1,33 @@ +How to contribute & use the issue tracker +========================================= + +Nette welcomes your contributions. There are several ways to help out: + +* Create an issue on GitHub, if you have found a bug +* Write test cases for open bug issues +* Write fixes for open bug/feature issues, preferably with test cases included +* Contribute to the [documentation](https://nette.org/en/writing) + +Issues +------ + +Please **do not use the issue tracker to ask questions**. We will be happy to help you +on [Nette forum](https://forum.nette.org) or chat with us on [Gitter](https://gitter.im/nette/nette). + +A good bug report shouldn't leave others needing to chase you up for more +information. Please try to be as detailed as possible in your report. + +**Feature requests** are welcome. But take a moment to find out whether your idea +fits with the scope and aims of the project. It's up to *you* to make a strong +case to convince the project's developers of the merits of this feature. + +Contributing +------------ + +If you'd like to contribute, please take a moment to read [the contributing guide](https://nette.org/en/contributing). + +The best way to propose a feature is to discuss your ideas on [Nette forum](https://forum.nette.org) before implementing them. + +Please do not fix whitespace, format code, or make a purely cosmetic patch. + +Thanks! :heart: diff --git a/vendor/latte/latte/license.md b/vendor/latte/latte/license.md new file mode 100644 index 0000000..cf741bd --- /dev/null +++ b/vendor/latte/latte/license.md @@ -0,0 +1,60 @@ +Licenses +======== + +Good news! You may use Nette Framework under the terms of either +the New BSD License or the GNU General Public License (GPL) version 2 or 3. + +The BSD License is recommended for most projects. It is easy to understand and it +places almost no restrictions on what you can do with the framework. If the GPL +fits better to your project, you can use the framework under this license. + +You don't have to notify anyone which license you are using. You can freely +use Nette Framework in commercial projects as long as the copyright header +remains intact. + +Please be advised that the name "Nette Framework" is a protected trademark and its +usage has some limitations. So please do not use word "Nette" in the name of your +project or top-level domain, and choose a name that stands on its own merits. +If your stuff is good, it will not take long to establish a reputation for yourselves. + + +New BSD License +--------------- + +Copyright (c) 2004, 2014 David Grudl (https://davidgrudl.com) +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of "Nette Framework" nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +This software is provided by the copyright holders and contributors "as is" and +any express or implied warranties, including, but not limited to, the implied +warranties of merchantability and fitness for a particular purpose are +disclaimed. In no event shall the copyright owner or contributors be liable for +any direct, indirect, incidental, special, exemplary, or consequential damages +(including, but not limited to, procurement of substitute goods or services; +loss of use, data, or profits; or business interruption) however caused and on +any theory of liability, whether in contract, strict liability, or tort +(including negligence or otherwise) arising in any way out of the use of this +software, even if advised of the possibility of such damage. + + +GNU General Public License +-------------------------- + +GPL licenses are very very long, so instead of including them here we offer +you URLs with full text: + +- [GPL version 2](http://www.gnu.org/licenses/gpl-2.0.html) +- [GPL version 3](http://www.gnu.org/licenses/gpl-3.0.html) diff --git a/vendor/latte/latte/readme.md b/vendor/latte/latte/readme.md new file mode 100644 index 0000000..344fd20 --- /dev/null +++ b/vendor/latte/latte/readme.md @@ -0,0 +1,314 @@ +[Latte](https://latte.nette.org): amazing template engine for PHP +================================================================= + +[![Downloads this Month](https://img.shields.io/packagist/dm/latte/latte.svg)](https://packagist.org/packages/latte/latte) +[![Build Status](https://travis-ci.org/nette/latte.svg?branch=master)](https://travis-ci.org/nette/latte) +[![Coverage Status](https://coveralls.io/repos/github/nette/latte/badge.svg?branch=master)](https://coveralls.io/github/nette/latte?branch=master) +[![Latest Stable Version](https://poser.pugx.org/latte/latte/v/stable)](https://github.com/nette/latte/releases) +[![License](https://img.shields.io/badge/license-New%20BSD-blue.svg)](https://github.com/nette/latte/blob/master/license.md) +[![Join the chat at https://gitter.im/nette/latte](https://badges.gitter.im/nette/latte.svg)](https://gitter.im/nette/latte) + + +Introduction +============ + +Latte is a template engine for PHP which eases your work and +ensures the output is protected against vulnerabilities, such as XSS. + +- **Latte is fast:** it compiles templates to plain optimized PHP code. +- **Latte is secure:** it is the first PHP engine introducing content-aware escaping. +- **Latte speaks your language:** it has intuitive syntax and helps you to build better websites easily. + +Documentation can be found on the [website](https://latte.nette.org). + +If you like Latte, **[please make a donation now](https://nette.org/make-donation?to=latte)**. Thank you! + + +Getting Started +=============== + +Although PHP is originally a templating language, it is not particularly suited for writing templates. Let's have a look at an example of a PHP template that prints an array `$items` as a list: + +```php + + +
    + +
  • +
  • + +
+ +``` + +The code is rather confusing. Moreover, we must not forget to call `htmlSpecialChars` function. That's why there are so many different template engines for PHP. One of the best template engines is part of Nette Framework and it is called **Latte**. You'll love it! + +The same template as the one above can be written easily in Latte: + +```html +
    +{foreach $items as $item} +
  • {$item|capitalize}
  • +{/foreach} +
+``` + +As you can see there are two types of macros: + +- **macro** in braces, for example `{foreach …}` +- **n:macro**, for example `n:if="…"` + +How to render template? Just install Latte (see below) and run this code: + +```php +$latte = new Latte\Engine; +$latte->setTempDirectory('/path/to/tempdir'); +$parameters['items'] = array('one', 'two', 'three'); +$latte->render('template.latte', $parameters); +``` + + +Installation +============ + +The recommended way to install Latte is via Composer (alternatively you can [download package](https://github.com/nette/latte/releases)): + +``` +composer require latte/latte +``` + +Latte requires PHP version 5.4.4 and supports PHP up to 7.3. The dev-master version requires PHP 7.1. + + +Usage +===== + +You can find detailed description of all the default macros on the [extra page](https://doc.nette.org/en/default-macros). Furthermore, you can make your own macros. + +Each pair macro, such as `{if} … {/if}`, operating upon single HTML element can be written in `n:macro` notation. So, it is possible to write the `{foreach}` macro in the same manner: + +```html +
    +
  • {$item|capitalize}
  • +
+``` + +With n:macros you can do much more interesting tricks as you will see in a moment. + +`{$item|capitalize}` macro which prints the `$item` variable contains so called filter, in this case the `capitalize` filter which makes the first letter of each word uppercase. + +Very important feature of Latte is that it **escapes variables by default**. Escaping is needed when printing a variable because we have to convert all the characters which have a special meaning in HTML to other sequences. In case we forget it can lead to a serious security hole called Cross Site Scripting (XSS). + +Because of different escaping functions that are needed in different documents and different parts of a page, Latte features a unique technology of Context-Aware Escaping which recognizes the context in which the macro is placed and **chooses the right escaping mode.** You don't have to worry that your coder forgets about it causing you goose bumps because of a security hole. Which is great! + +If the `$item` variable stores an HTML code and you want to print it without any alteration you just add the modifier noescape: `{$item|noescape}`. Forgetting the modifier mark won't cause any security holes in spirit of „less code, more security“ principle. + +You can still use PHP inside the macros normally, including comments as well. But Latte also extends the PHP syntax with three pleasant features: + +1. array can be written as `[1, 2, 3]`, which is the same as `array(1, 2, 3)` in PHP +3. we can omit quotes around the strings consisting of letters, numbers and dashes +2. short condition notation `$a ? 'b'` which is the same as `$a ? 'b' : null` in PHP + +For example: + +```html +{foreach [a, b, c] as $id} ... {/foreach} + +{$cond ? hello} // prints 'hello' if $cond equals true +``` + +Latte also has a `{* comment macro *}` which doesn't get printed to the output. + + +n:macros +======== + +We showed that n:macros are supposed to be written directly into HTML tags as their special attributes. We also said that every pair macro (e.g. `{if} … {/if}`) can be written in n:macro notation. The macro then corresponds to the HTML element in which it is written: + +```html +{var $items = ['I', '♥', 'Nette Framework']} + +

{$item}

+``` + +Prints: + +```html +

I

+

♥

+

Nette Framework

+``` + +By using `inner-` prefix we can alter the behavior so that the macro applies only to the body of the element: + +```html +
+

{$item}

+
+
+``` + +Prints: + +```html +
+

I

+
+

♥

+
+

Nette Framework

+
+
+``` + +Or by using `tag-` prefix the macro is applied on the HTML tags only: + +```html +
+``` + +Depending on the value of `$url` variable this will print: + +```html +// when $url is empty +

Title

+ +// when $url equals 'https://nette.org' +

Title

+``` + +However, n:macros are not only a shortcut for pair macros, there are some pure n:macros as well, for example the coder's best friend [n:class](https://doc.nette.org/en/default-macros#toc-n-class) macro. + + +Filters +======= + +Latte allows calling filters by using the pipe sign notation (preceding space is allowed): + +```html +

{$heading|upper}

+``` + +Filters (or modifiers) can be chained, in that case they apply in order from left to right: + +```html +

{$heading|lower|capitalize}

+``` + +Parameters are put after the filter name separated by colon or comma: + +```html +

{$heading|truncate:20,''}

+``` + +See the summary of [standard filters](https://doc.nette.org/en/default-filters) and how to make user-defined filters. + + +In templates we can use functions which change or format the data to a form we want. They are called *filters*. See the summary of the default filters. + + +Filter can be registered by any callback or lambda function: + +```php +$latte = new Latte\Engine; +$latte->addFilter('shortify', function ($s) { + return mb_substr($s, 0, 10); // shortens the text to 10 characters +}); +``` + +In this case it would be better for the filter to get an extra parameter: + +```php +$latte->addFilter('shortify', function ($s, $len = 10) { + return mb_substr($s, 0, $len); +}); +``` + +We call it in a template like this: + +```php +

shortify($text, 100); ?>

+``` + +Latte simplifies the notation - filters are denoted by the pipe sign, they can be chained (they apply in order from left to right). Parameters are separated by colon or comma: + +```html +

{$text|shortify:100}

+``` + + +Performance +=========== + +Latte is fast. It compiles the templates to native PHP code and stores them in cache on the disk. So they are as fast as if they would have been written in pure PHP. + +The template is automatically recompiled each time we change the source file. While developing you just need to edit the templates in Latte and changes are visible in your browser instantly. + + +Debugging +========= + +With each error or typo you will be informed by the Debugger with all the luxury. The template source code is displayed and the red line marks the error showing error message as well. With just a single click you can open the template in your favorite editor and fix the error at once. Easy peasy! + +If you are using an IDE with code stepping you can go through the generated PHP code of the template. + + + +Usability +========= + +Latte syntax wasn't invented by engineers but came up from webdesigner's practical requests. We were looking for the friendliest syntax with which you can write even the most problematic constructions comfortably enough. You will be surprised how much help Latte can be. + +You can find macros for advanced [layout](https://doc.nette.org/en/default-macros#toc-template-expanding-inheritance) managing, for **template inheritance**, nested blocks and so on. Syntax comes from PHP itself so you don't have to learn anything new and you can leverage your know-how. + + + +Context-Aware Escaping +====================== + +Although the Cross Site Scripting (XSS) is one of the trivial ways of exploiting a web page it is the most common vulnerability but very serious. It can lead to identity theft and so on. The best defense is consistent escaping of printed data, ie. converting the characters which have a special meaning in the given context. + +If the coder omits the escaping a security hole is made. That's why template engines implement automated escaping. The problem is that the web page has different contexts and each has different rules for escaping printed data. A security hole then shows up if the wrong escaping functions are used. + +But Latte is sophisticated. It features unique technology of *Context-Aware Escaping* which recognizes the context in which the macro is placed and chooses the right escaping mode. What does that mean? + +Latte doesn't need any manual work. **All is done automatically, consistently and correctly.** You don't have to worry about security holes. + +Lets see how it works: + +```html +

{$movie}

+ + +``` + +If `$movie` variable stores `'Amarcord & 8 1/2'` string it generates the following output. Notice different escaping used in HTML and JavaScript and also in `onclick` attribute: + + +```html +

Amarcord & 8 1/2

+ + +``` + +Thanks to Context-Aware Escaping the template is simple and your application perfectly secured against Cross Site Scripting. You can use PHP variables natively inside the JavaScript! + + +JavaScript +---------- + +Strings in JavaScript are escaped including quotes. If you want to put variable into another string, simply concatenate them: + +```html + +``` + + +A pretty output +=============== + +Sticklers will enjoy the look of the HTML output which Latte generates. All tags are indented as they are supposed to. The code looks like it has been processed with some kind of *HTML code beautifier* :-) diff --git a/vendor/latte/latte/src/Latte/Compiler/Compiler.php b/vendor/latte/latte/src/Latte/Compiler/Compiler.php new file mode 100644 index 0000000..749bddd --- /dev/null +++ b/vendor/latte/latte/src/Latte/Compiler/Compiler.php @@ -0,0 +1,738 @@ + IMacro[]] */ + private $macros = []; + + /** @var int[] IMacro flags */ + private $flags; + + /** @var HtmlNode */ + private $htmlNode; + + /** @var MacroNode */ + private $macroNode; + + /** @var string[] */ + private $placeholders = []; + + /** @var string */ + private $contentType = self::CONTENT_HTML; + + /** @var string|null */ + private $context; + + /** @var mixed */ + private $lastAttrValue; + + /** @var int */ + private $tagOffset; + + /** @var bool */ + private $inHead; + + /** @var array of [name => [body, arguments]] */ + private $methods = []; + + /** @var array of [name => serialized value] */ + private $properties = []; + + + /** + * Adds new macro with IMacro flags. + * @return static + */ + public function addMacro(string $name, IMacro $macro, int $flags = null) + { + if (!isset($this->flags[$name])) { + $this->flags[$name] = $flags ?: IMacro::DEFAULT_FLAGS; + } elseif ($flags && $this->flags[$name] !== $flags) { + throw new \LogicException("Incompatible flags for macro $name."); + } + $this->macros[$name][] = $macro; + return $this; + } + + + /** + * Compiles tokens to PHP code. + * @param Token[] $tokens + */ + public function compile(array $tokens, string $className): string + { + $this->tokens = $tokens; + $output = ''; + $this->output = &$output; + $this->inHead = true; + $this->htmlNode = $this->macroNode = $this->context = null; + $this->placeholders = $this->properties = []; + $this->methods = ['main' => null, 'prepare' => null]; + + $macroHandlers = new \SplObjectStorage; + + if ($this->macros) { + array_map([$macroHandlers, 'attach'], array_merge(...array_values($this->macros))); + } + + foreach ($macroHandlers as $handler) { + $handler->initialize($this); + } + + foreach ($tokens as $this->position => $token) { + if ($this->inHead && !($token->type === $token::COMMENT + || $token->type === $token::MACRO_TAG && ($this->flags[$token->name] ?? null) & IMacro::ALLOWED_IN_HEAD + || $token->type === $token::TEXT && trim($token->text) === '' + )) { + $this->inHead = false; + } + $this->{"process$token->type"}($token); + } + + while ($this->htmlNode) { + if (!empty($this->htmlNode->macroAttrs)) { + throw new CompileException('Missing ' . self::printEndTag($this->htmlNode)); + } + $this->htmlNode = $this->htmlNode->parentNode; + } + + while ($this->macroNode) { + if (~$this->flags[$this->macroNode->name] & IMacro::AUTO_CLOSE) { + throw new CompileException('Missing ' . self::printEndTag($this->macroNode)); + } + $this->closeMacro($this->macroNode->name); + } + + $prepare = $epilogs = ''; + foreach ($macroHandlers as $handler) { + $res = $handler->finalize(); + $prepare .= empty($res[0]) ? '' : ""; + $epilogs = (empty($res[1]) ? '' : "") . $epilogs; + } + + $this->addMethod('main', $this->expandTokens("extract(\$this->params);?>\n$output$epilogsaddMethod('prepare', "extract(\$this->params);?>$preparecontentType !== self::CONTENT_HTML) { + $this->addProperty('contentType', $this->contentType); + } + + foreach ($this->properties as $name => $value) { + $members[] = "\tpublic $$name = " . PhpHelpers::dump($value) . ';'; + } + foreach (array_filter($this->methods) as $name => $method) { + $members[] = "\n\tfunction $name($method[arguments])\n\t{\n" . ($method['body'] ? "\t\t$method[body]\n" : '') . "\t}"; + } + + return "contentType = $type; + $this->context = null; + return $this; + } + + + public function getMacroNode(): ?MacroNode + { + return $this->macroNode; + } + + + /** + * Returns current line number. + */ + public function getLine(): ?int + { + return isset($this->tokens[$this->position]) ? $this->tokens[$this->position]->line : null; + } + + + public function isInHead(): bool + { + return $this->inHead; + } + + + /** + * Adds custom method to template. + * @internal + */ + public function addMethod(string $name, string $body, string $arguments = ''): void + { + $this->methods[$name] = ['body' => trim($body), 'arguments' => $arguments]; + } + + + /** + * Returns custom methods. + * @internal + */ + public function getMethods(): array + { + return $this->methods; + } + + + /** + * Adds custom property to template. + * @internal + */ + public function addProperty(string $name, $value): void + { + $this->properties[$name] = $value; + } + + + /** + * Returns custom properites. + * @internal + */ + public function getProperties(): array + { + return $this->properties; + } + + + /** @internal */ + public function expandTokens(string $s): string + { + return strtr($s, $this->placeholders); + } + + + private function processText(Token $token): void + { + if ($this->lastAttrValue === '' && $this->context && Helpers::startsWith($this->context, self::CONTEXT_HTML_ATTRIBUTE)) { + $this->lastAttrValue = $token->text; + } + $this->output .= $this->escape($token->text); + } + + + private function processMacroTag(Token $token): void + { + if ($this->context === self::CONTEXT_HTML_TAG || $this->context && Helpers::startsWith($this->context, self::CONTEXT_HTML_ATTRIBUTE)) { + $this->lastAttrValue = true; + } + + $isRightmost = !isset($this->tokens[$this->position + 1]) + || substr($this->tokens[$this->position + 1]->text, 0, 1) === "\n"; + + if ($token->closing) { + $this->closeMacro($token->name, $token->value, $token->modifiers, $isRightmost); + } else { + if (!$token->empty && ($this->flags[$token->name] ?? null) & IMacro::AUTO_EMPTY) { + $pos = $this->position; + while (($t = $this->tokens[++$pos] ?? null) + && ($t->type !== Token::MACRO_TAG || $t->name !== $token->name) + && ($t->type !== Token::HTML_ATTRIBUTE_BEGIN || $t->name !== Parser::N_PREFIX . $token->name)); + $token->empty = $t ? !$t->closing : true; + } + $node = $this->openMacro($token->name, $token->value, $token->modifiers, $isRightmost); + if ($token->empty) { + if ($node->empty) { + throw new CompileException("Unexpected /} in tag {$token->text}"); + } + $this->closeMacro($token->name, null, null, $isRightmost); + } + } + } + + + private function processHtmlTagBegin(Token $token): void + { + if ($token->closing) { + while ($this->htmlNode) { + if (strcasecmp($this->htmlNode->name, $token->name) === 0) { + break; + } + if ($this->htmlNode->macroAttrs) { + throw new CompileException("Unexpected name>, expecting " . self::printEndTag($this->htmlNode)); + } + $this->htmlNode = $this->htmlNode->parentNode; + } + if (!$this->htmlNode) { + $this->htmlNode = new HtmlNode($token->name); + } + $this->htmlNode->closing = true; + $this->htmlNode->endLine = $this->getLine(); + $this->context = self::CONTEXT_HTML_TEXT; + + } elseif ($token->text === ' + $this->addToken(Token::HTML_TAG_END, $matches[0]); + $this->setContext(self::CONTEXT_HTML_TEXT); + } else { + return $this->processMacro($matches); + } + } + + + /** + * Handles CONTEXT_NONE. + */ + private function contextNone() + { + $matches = $this->match('~ + (?P' . $this->delimiters[0] . ') + ~xsi'); + return $this->processMacro($matches); + } + + + /** + * Handles CONTEXT_MACRO. + */ + private function contextMacro(): void + { + $matches = $this->match('~ + (?P\\*.*?\\*' . $this->delimiters[1] . '\n{0,2})| + (?P(?> + ' . self::RE_STRING . '| + \{(?>' . self::RE_STRING . '|[^\'"{}])*+\}| + [^\'"{}]+ + )++) + ' . $this->delimiters[1] . ' + (?P[ \t]*(?=\n))? + ~xsiA'); + + if (!empty($matches['macro'])) { + $token = $this->addToken(Token::MACRO_TAG, $this->context[1][1] . $matches[0]); + [$token->name, $token->value, $token->modifiers, $token->empty, $token->closing] = $this->parseMacroTag($matches['macro']); + $this->context = $this->context[1][0]; + + } elseif (!empty($matches['comment'])) { + $this->addToken(Token::COMMENT, $this->context[1][1] . $matches[0]); + $this->context = $this->context[1][0]; + + } else { + throw new CompileException('Malformed macro'); + } + } + + + private function processMacro(array $matches) + { + if (!empty($matches['macro'])) { // {macro} or {* *} + $this->setContext(self::CONTEXT_MACRO, [$this->context, $matches['macro']]); + } else { + return false; + } + } + + + /** + * Matches next token. + */ + private function match(string $re): array + { + if (!preg_match($re, $this->input, $matches, PREG_OFFSET_CAPTURE, $this->offset)) { + if (preg_last_error()) { + throw new RegexpException(null, preg_last_error()); + } + return []; + } + + $value = substr($this->input, $this->offset, $matches[0][1] - $this->offset); + if ($value !== '') { + $this->addToken(Token::TEXT, $value); + } + $this->offset = $matches[0][1] + strlen($matches[0][0]); + foreach ($matches as $k => $v) { + $matches[$k] = $v[0]; + } + return $matches; + } + + + /** + * @param string $type Parser::CONTENT_HTML, CONTENT_XHTML, CONTENT_XML or CONTENT_TEXT + * @return static + */ + public function setContentType(string $type) + { + if (in_array($type, [self::CONTENT_HTML, self::CONTENT_XHTML, self::CONTENT_XML], true)) { + $this->setContext(self::CONTEXT_HTML_TEXT); + $this->xmlMode = $type === self::CONTENT_XML; + } else { + $this->setContext(self::CONTEXT_NONE); + } + return $this; + } + + + /** + * @return static + */ + public function setContext(string $context, $quote = null) + { + $this->context = [$context, $quote]; + return $this; + } + + + /** + * Changes macro tag delimiters. + * @return static + */ + public function setSyntax(string $type) + { + $type = $type ?: $this->defaultSyntax; + if (isset($this->syntaxes[$type])) { + $this->setDelimiters($this->syntaxes[$type][0], $this->syntaxes[$type][1]); + } else { + throw new \InvalidArgumentException("Unknown syntax '$type'"); + } + return $this; + } + + + /** + * Changes macro tag delimiters (as regular expression). + * @return static + */ + public function setDelimiters(string $left, string $right) + { + $this->delimiters = [$left, $right]; + return $this; + } + + + /** + * Parses macro tag to name, arguments a modifiers parts. + * @param string $tag {name arguments | modifiers} + * @internal + */ + public function parseMacroTag(string $tag): ?array + { + if (!preg_match('~^ + (?P/?) + ( + (?P\?|[a-z]\w*+(?:[.:]\w+)*+(?!::|\(|\\\\))| ## ?, name, /name, but not function( or class:: or namespace\ + (?P[=\~#%^&_]?) ## expression, =expression, ... + )(?P(?:' . self::RE_STRING . '|[^\'"])*?) + (?P(?(?:' . self::RE_STRING . '|(?:\((?P>modArgs)\))|[^\'"/()]|/(?=.))*+))? + (?P/?\z) + ()\z~isx', $tag, $match)) { + if (preg_last_error()) { + throw new RegexpException(null, preg_last_error()); + } + return null; + } + if ($match['name'] === '') { + $match['name'] = $match['shortname'] ?: ($match['closing'] ? '' : '='); + } + return [$match['name'], trim($match['args']), $match['modifiers'], (bool) $match['empty'], (bool) $match['closing']]; + } + + + private function addToken(string $type, string $text): Token + { + $this->output[] = $token = new Token; + $token->type = $type; + $token->text = $text; + $token->line = $this->getLine() - substr_count(ltrim($text), "\n"); + return $token; + } + + + public function getLine(): int + { + return $this->offset + ? substr_count(substr($this->input, 0, $this->offset - 1), "\n") + 1 + : 1; + } + + + /** + * Process low-level macros. + */ + protected function filter(Token $token): void + { + if ($token->type === Token::MACRO_TAG && $token->name === '/syntax') { + $this->setSyntax($this->defaultSyntax); + $token->type = Token::COMMENT; + + } elseif ($token->type === Token::MACRO_TAG && $token->name === 'syntax') { + $this->setSyntax($token->value); + $token->type = Token::COMMENT; + + } elseif ($token->type === Token::HTML_ATTRIBUTE_BEGIN && $token->name === 'n:syntax') { + $this->setSyntax($token->value); + $this->syntaxEndTag = $this->lastHtmlTag; + $this->syntaxEndLevel = 1; + $token->type = Token::COMMENT; + + } elseif ($token->type === Token::HTML_TAG_BEGIN && $this->lastHtmlTag === $this->syntaxEndTag) { + $this->syntaxEndLevel++; + + } elseif ($token->type === Token::HTML_TAG_END && $this->lastHtmlTag === ('/' . $this->syntaxEndTag) && --$this->syntaxEndLevel === 0) { + $this->setSyntax($this->defaultSyntax); + + } elseif ($token->type === Token::MACRO_TAG && $token->name === 'contentType') { + if (strpos($token->value, 'html') !== false) { + $this->setContentType(self::CONTENT_HTML); + } elseif (strpos($token->value, 'xml') !== false) { + $this->setContentType(self::CONTENT_XML); + } else { + $this->setContentType(self::CONTENT_TEXT); + } + } + } +} diff --git a/vendor/latte/latte/src/Latte/Compiler/PhpHelpers.php b/vendor/latte/latte/src/Latte/Compiler/PhpHelpers.php new file mode 100644 index 0000000..268affb --- /dev/null +++ b/vendor/latte/latte/src/Latte/Compiler/PhpHelpers.php @@ -0,0 +1,128 @@ + $token) { + if (is_array($token)) { + [$name, $token] = ($tmp = $token); + if ($name === T_INLINE_HTML) { + $res .= $token; + + } elseif ($name === T_OPEN_TAG) { + $openLevel = $level; + + } elseif ($name === T_CLOSE_TAG) { + $next = $tokens[$n + 1] ?? null; + if (is_array($next) && $next[0] === T_OPEN_TAG) { // remove ?)next(); + + } else { + if (trim($php) !== '' || substr($res, -1) === '<') { // skip $v) { + $v = is_array($v) && (!$v || array_keys($v) === range(0, count($v) - 1)) + ? '[' . implode(', ', array_map(function ($s): string { return var_export($s, true); }, $v)) . ']' + : var_export($v, true); + $s .= "\t\t" . var_export($k, true) . ' => ' . $v . ",\n"; + } + return $s . "\t]"; + } + return var_export($value, true); + } +} diff --git a/vendor/latte/latte/src/Latte/Compiler/PhpWriter.php b/vendor/latte/latte/src/Latte/Compiler/PhpWriter.php new file mode 100644 index 0000000..e337481 --- /dev/null +++ b/vendor/latte/latte/src/Latte/Compiler/PhpWriter.php @@ -0,0 +1,507 @@ +tokenizer, null, $node->context); + $me->modifiers = &$node->modifiers; + return $me; + } + + + public function __construct(MacroTokens $tokens, string $modifiers = null, array $context = null) + { + $this->tokens = $tokens; + $this->modifiers = $modifiers; + $this->context = $context; + } + + + /** + * Expands %node.word, %node.array, %node.args, %escape(), %modify(), %var, %raw, %word in code. + */ + public function write(string $mask, ...$args): string + { + $mask = preg_replace('#%(node|\d+)\.#', '%$1_', $mask); + $mask = preg_replace_callback('#%escape(\(([^()]*+|(?1))+\))#', function ($m) { + return $this->escapePass(new MacroTokens(substr($m[1], 1, -1)))->joinAll(); + }, $mask); + $mask = preg_replace_callback('#%modify(Content)?(\(([^()]*+|(?2))+\))#', function ($m) { + return $this->formatModifiers(substr($m[2], 1, -1), (bool) $m[1]); + }, $mask); + + $pos = $this->tokens->position; + $word = null; + if (strpos($mask, '%node_word') !== false) { + $word = $this->tokens->fetchWord(); + if ($word === null) { + throw new CompileException('Invalid content of macro'); + } + } + + $code = preg_replace_callback('#([,+]\s*)?%(node_|\d+_|)(word|var|raw|array|args)(\?)?(\s*\+\s*)?()#', + function ($m) use ($word, &$args) { + [, $l, $source, $format, $cond, $r] = $m; + + switch ($source) { + case 'node_': + $arg = $word; break; + case '': + $arg = current($args); next($args); break; + default: + $arg = $args[(int) $source]; break; + } + + switch ($format) { + case 'word': + $code = $this->formatWord($arg); break; + case 'args': + $code = $this->formatArgs(); break; + case 'array': + $code = $this->formatArray(); + $code = $cond && $code === '[]' ? '' : $code; break; + case 'var': + $code = var_export($arg, true); break; + case 'raw': + $code = (string) $arg; break; + } + + if ($cond && $code === '') { + return $r ? $l : $r; + } else { + return $l . $code . $r; + } + }, $mask); + + $this->tokens->position = $pos; + return $code; + } + + + /** + * Formats modifiers calling. + */ + public function formatModifiers(string $var, bool $isContent = false): string + { + $tokens = new MacroTokens(ltrim($this->modifiers, '|')); + $tokens = $this->preprocess($tokens); + $tokens = $this->modifierPass($tokens, $var, $isContent); + $tokens = $this->quotingPass($tokens); + return $tokens->joinAll(); + } + + + /** + * Formats macro arguments to PHP code. (It advances tokenizer to the end as a side effect.) + */ + public function formatArgs(MacroTokens $tokens = null): string + { + $tokens = $this->preprocess($tokens); + $tokens = $this->quotingPass($tokens); + return $tokens->joinAll(); + } + + + /** + * Formats macro arguments to PHP array. (It advances tokenizer to the end as a side effect.) + */ + public function formatArray(MacroTokens $tokens = null): string + { + $tokens = $this->preprocess($tokens); + $tokens = $this->expandCastPass($tokens); + $tokens = $this->quotingPass($tokens); + return $tokens->joinAll(); + } + + + /** + * Formats parameter to PHP string. + */ + public function formatWord(string $s): string + { + return (is_numeric($s) || preg_match('#^\$|[\'"]|^(true|TRUE)\z|^(false|FALSE)\z|^(null|NULL)\z|^[\w\\\\]{3,}::[A-Z0-9_]{2,}\z#', $s)) + ? $this->formatArgs(new MacroTokens($s)) + : '"' . $s . '"'; + } + + + /** + * Preprocessor for tokens. (It advances tokenizer to the end as a side effect.) + */ + public function preprocess(MacroTokens $tokens = null): MacroTokens + { + $tokens = $tokens === null ? $this->tokens : $tokens; + $this->validateTokens($tokens); + $tokens = $this->removeCommentsPass($tokens); + $tokens = $this->shortTernaryPass($tokens); + $tokens = $this->inlineModifierPass($tokens); + $tokens = $this->inOperatorPass($tokens); + return $tokens; + } + + + /** + * @throws CompileException + */ + public function validateTokens(MacroTokens $tokens): void + { + $brackets = []; + $pos = $tokens->position; + while ($tokens->nextToken()) { + if ($tokens->isCurrent('?>')) { + throw new CompileException('Forbidden ?> inside macro'); + + } elseif ($tokens->isCurrent('(', '[', '{')) { + static $counterpart = ['(' => ')', '[' => ']', '{' => '}']; + $brackets[] = $counterpart[$tokens->currentValue()]; + + } elseif ($tokens->isCurrent(')', ']', '}') && $tokens->currentValue() !== array_pop($brackets)) { + throw new CompileException('Unexpected ' . $tokens->currentValue()); + + } elseif ( + $tokens->isCurrent('function', 'class', 'interface', 'trait') + && $tokens->isNext($tokens::T_SYMBOL, '&') + || $tokens->isCurrent('return', 'yield') + && !$brackets + ) { + throw new CompileException("Forbidden keyword '{$tokens->currentValue()}' inside macro."); + } + } + if ($brackets) { + throw new CompileException('Missing ' . array_pop($brackets)); + } + $tokens->position = $pos; + } + + + /** + * Removes PHP comments. + */ + public function removeCommentsPass(MacroTokens $tokens): MacroTokens + { + $res = new MacroTokens; + while ($tokens->nextToken()) { + if (!$tokens->isCurrent($tokens::T_COMMENT)) { + $res->append($tokens->currentToken()); + } + } + return $res; + } + + + /** + * Simplified ternary expressions without third part. + */ + public function shortTernaryPass(MacroTokens $tokens): MacroTokens + { + $res = new MacroTokens; + $inTernary = []; + while ($tokens->nextToken()) { + if ($tokens->isCurrent('?')) { + $inTernary[] = $tokens->depth; + + } elseif ($tokens->isCurrent(':')) { + array_pop($inTernary); + + } elseif ($tokens->isCurrent(',', ')', ']', '|') && end($inTernary) === $tokens->depth + $tokens->isCurrent(')', ']')) { + $res->append(' : null'); + array_pop($inTernary); + } + $res->append($tokens->currentToken()); + } + + if ($inTernary) { + $res->append(' : null'); + } + return $res; + } + + + /** + * Pseudocast (expand). + */ + public function expandCastPass(MacroTokens $tokens): MacroTokens + { + $res = new MacroTokens('['); + $expand = null; + while ($tokens->nextToken()) { + if ($tokens->isCurrent('(expand)') && $tokens->depth === 0) { + $expand = true; + $res->append('],'); + } elseif ($expand && $tokens->isCurrent(',') && !$tokens->depth) { + $expand = false; + $res->append(', ['); + } else { + $res->append($tokens->currentToken()); + } + } + + if ($expand === null) { + $res->append(']'); + } else { + $res->prepend('array_merge(')->append($expand ? ', [])' : '])'); + } + return $res; + } + + + /** + * Quotes symbols to strings. + */ + public function quotingPass(MacroTokens $tokens): MacroTokens + { + $res = new MacroTokens; + while ($tokens->nextToken()) { + $res->append($tokens->isCurrent($tokens::T_SYMBOL) + && (!$tokens->isPrev() || $tokens->isPrev(',', '(', '[', '=>', ':', '?', '.', '<', '>', '<=', '>=', '===', '!==', '==', '!=', '<>', '&&', '||', '=', 'and', 'or', 'xor', '??')) + && (!$tokens->isNext() || $tokens->isNext(',', ';', ')', ']', '=>', ':', '?', '.', '<', '>', '<=', '>=', '===', '!==', '==', '!=', '<>', '&&', '||', 'and', 'or', 'xor', '??')) + && !preg_match('#^[A-Z_][A-Z0-9_]{2,}$#', $tokens->currentValue()) + ? "'" . $tokens->currentValue() . "'" + : $tokens->currentToken() + ); + } + return $res; + } + + + /** + * Syntax $entry in [item1, item2]. + */ + public function inOperatorPass(MacroTokens $tokens): MacroTokens + { + while ($tokens->nextToken()) { + if ($tokens->isCurrent($tokens::T_VARIABLE)) { + $start = $tokens->position; + $depth = $tokens->depth; + $expr = $arr = []; + + $expr[] = $tokens->currentToken(); + while ($tokens->isNext($tokens::T_VARIABLE, $tokens::T_SYMBOL, $tokens::T_NUMBER, $tokens::T_STRING, '[', ']', '(', ')', '->') + && !$tokens->isNext('in')) { + $expr[] = $tokens->nextToken(); + } + + if ($depth === $tokens->depth && $tokens->nextValue('in') && ($arr[] = $tokens->nextToken('['))) { + while ($tokens->isNext()) { + $arr[] = $tokens->nextToken(); + if ($tokens->isCurrent(']') && $tokens->depth === $depth) { + $new = array_merge($tokens->parse('in_array('), $expr, $tokens->parse(', '), $arr, $tokens->parse(', true)')); + array_splice($tokens->tokens, $start, $tokens->position - $start + 1, $new); + $tokens->position = $start + count($new) - 1; + continue 2; + } + } + } + $tokens->position = $start; + } + } + return $tokens->reset(); + } + + + /** + * Process inline filters ($var|filter) + */ + public function inlineModifierPass(MacroTokens $tokens): MacroTokens + { + $result = new MacroTokens; + while ($tokens->nextToken()) { + if ($tokens->isCurrent('(', '[')) { + $result->tokens = array_merge($result->tokens, $this->inlineModifierInner($tokens)); + } else { + $result->append($tokens->currentToken()); + } + } + return $result; + } + + + private function inlineModifierInner(MacroTokens $tokens): array + { + $isFunctionOrArray = $tokens->isPrev($tokens::T_VARIABLE, $tokens::T_SYMBOL) || $tokens->isCurrent('['); + $result = new MacroTokens; + $args = new MacroTokens; + $modifiers = new MacroTokens; + $current = $args; + $anyModifier = false; + $result->append($tokens->currentToken()); + + while ($tokens->nextToken()) { + if ($tokens->isCurrent('(', '[')) { + $current->tokens = array_merge($current->tokens, $this->inlineModifierInner($tokens)); + + } elseif ($current !== $modifiers && $tokens->isCurrent('|')) { + $anyModifier = true; + $current = $modifiers; + + } elseif ($tokens->isCurrent(')', ']') || ($isFunctionOrArray && $tokens->isCurrent(','))) { + $partTokens = count($modifiers->tokens) + ? $this->modifierPass($modifiers, $args->tokens)->tokens + : $args->tokens; + $result->tokens = array_merge($result->tokens, $partTokens); + if ($tokens->isCurrent(',')) { + $result->append($tokens->currentToken()); + $args = new MacroTokens; + $modifiers = new MacroTokens; + $current = $args; + continue; + } elseif ($isFunctionOrArray || !$anyModifier) { + $result->append($tokens->currentToken()); + } else { + array_shift($result->tokens); + } + return $result->tokens; + + } else { + $current->append($tokens->currentToken()); + } + } + throw new CompileException('Unbalanced brackets.'); + } + + + /** + * Formats modifiers calling. + * @param string|array $var + * @throws CompileException + */ + public function modifierPass(MacroTokens $tokens, $var, bool $isContent = false): MacroTokens + { + $inside = false; + $res = new MacroTokens($var); + while ($tokens->nextToken()) { + if ($tokens->isCurrent($tokens::T_WHITESPACE)) { + $res->append(' '); + + } elseif ($inside) { + if ($tokens->isCurrent(':', ',')) { + $res->append(', '); + $tokens->nextAll($tokens::T_WHITESPACE); + + } elseif ($tokens->isCurrent('|')) { + $res->append(')'); + $inside = false; + + } else { + $res->append($tokens->currentToken()); + } + } else { + if ($tokens->isCurrent($tokens::T_SYMBOL)) { + if ($tokens->isCurrent('escape')) { + if ($isContent) { + $res->prepend('LR\Filters::convertTo($_fi, ' . var_export(implode($this->context), true) . ', ') + ->append(')'); + } else { + $res = $this->escapePass($res); + } + $tokens->nextToken('|'); + } elseif (!strcasecmp($tokens->currentValue(), 'checkurl')) { + $res->prepend('LR\Filters::safeUrl('); + $inside = true; + } else { + $name = strtolower($tokens->currentValue()); + $res->prepend($isContent + ? '$this->filters->filterContent(' . var_export($name, true) . ', $_fi, ' + : '($this->filters->' . $name . ')(' + ); + $inside = true; + } + } else { + throw new CompileException("Modifier name must be alphanumeric string, '{$tokens->currentValue()}' given."); + } + } + } + if ($inside) { + $res->append(')'); + } + return $res; + } + + + /** + * Escapes expression in tokens. + */ + public function escapePass(MacroTokens $tokens): MacroTokens + { + $tokens = clone $tokens; + [$contentType, $context] = $this->context; + switch ($contentType) { + case Compiler::CONTENT_XHTML: + case Compiler::CONTENT_HTML: + switch ($context) { + case Compiler::CONTEXT_HTML_TEXT: + return $tokens->prepend('LR\Filters::escapeHtmlText(')->append(')'); + case Compiler::CONTEXT_HTML_TAG: + case Compiler::CONTEXT_HTML_ATTRIBUTE_UNQUOTED_URL: + return $tokens->prepend('LR\Filters::escapeHtmlAttrUnquoted(')->append(')'); + case Compiler::CONTEXT_HTML_ATTRIBUTE: + case Compiler::CONTEXT_HTML_ATTRIBUTE_URL: + return $tokens->prepend('LR\Filters::escapeHtmlAttr(')->append(')'); + case Compiler::CONTEXT_HTML_ATTRIBUTE_JS: + return $tokens->prepend('LR\Filters::escapeHtmlAttr(LR\Filters::escapeJs(')->append('))'); + case Compiler::CONTEXT_HTML_ATTRIBUTE_CSS: + return $tokens->prepend('LR\Filters::escapeHtmlAttr(LR\Filters::escapeCss(')->append('))'); + case Compiler::CONTEXT_HTML_COMMENT: + return $tokens->prepend('LR\Filters::escapeHtmlComment(')->append(')'); + case Compiler::CONTEXT_HTML_BOGUS_COMMENT: + return $tokens->prepend('LR\Filters::escapeHtml(')->append(')'); + case Compiler::CONTEXT_HTML_JS: + case Compiler::CONTEXT_HTML_CSS: + return $tokens->prepend('LR\Filters::escape' . ucfirst($context) . '(')->append(')'); + default: + throw new CompileException("Unknown context $contentType, $context."); + } + // break omitted + case Compiler::CONTENT_XML: + switch ($context) { + case Compiler::CONTEXT_XML_TEXT: + case Compiler::CONTEXT_XML_ATTRIBUTE: + case Compiler::CONTEXT_XML_BOGUS_COMMENT: + return $tokens->prepend('LR\Filters::escapeXml(')->append(')'); + case Compiler::CONTEXT_XML_COMMENT: + return $tokens->prepend('LR\Filters::escapeHtmlComment(')->append(')'); + case Compiler::CONTEXT_XML_TAG: + return $tokens->prepend('LR\Filters::escapeXmlAttrUnquoted(')->append(')'); + default: + throw new CompileException("Unknown context $contentType, $context."); + } + // break omitted + case Compiler::CONTENT_JS: + case Compiler::CONTENT_CSS: + case Compiler::CONTENT_ICAL: + return $tokens->prepend('LR\Filters::escape' . ucfirst($contentType) . '(')->append(')'); + case Compiler::CONTENT_TEXT: + return $tokens; + case null: + return $tokens->prepend('($this->filters->escape)(')->append(')'); + default: + throw new CompileException("Unknown context $contentType."); + } + } +} diff --git a/vendor/latte/latte/src/Latte/Compiler/Token.php b/vendor/latte/latte/src/Latte/Compiler/Token.php new file mode 100644 index 0000000..ec4a1b1 --- /dev/null +++ b/vendor/latte/latte/src/Latte/Compiler/Token.php @@ -0,0 +1,52 @@ +? used for types MACRO_TAG, HTML_TAG_BEGIN */ + public $closing; + + /** @var bool is tag empty {name/}? used for type MACRO_TAG */ + public $empty; +} diff --git a/vendor/latte/latte/src/Latte/Compiler/TokenIterator.php b/vendor/latte/latte/src/Latte/Compiler/TokenIterator.php new file mode 100644 index 0000000..12e3830 --- /dev/null +++ b/vendor/latte/latte/src/Latte/Compiler/TokenIterator.php @@ -0,0 +1,226 @@ +tokens = $tokens; + } + + + /** + * Returns current token. + */ + public function currentToken(): ?array + { + return $this->tokens[$this->position] ?? null; + } + + + /** + * Returns current token value. + */ + public function currentValue(): ?string + { + return $this->tokens[$this->position][Tokenizer::VALUE] ?? null; + } + + + /** + * Returns next token. + * @param int|string $args desired token type or value + */ + public function nextToken(...$args): ?array + { + return $this->scan($args, true, true); // onlyFirst, advance + } + + + /** + * Returns next token value. + * @param int|string $args desired token type or value + */ + public function nextValue(...$args): ?string + { + return $this->scan($args, true, true, true); // onlyFirst, advance, strings + } + + + /** + * Returns all next tokens. + * @param int|string $args desired token type or value + * @return array[] + */ + public function nextAll(...$args): array + { + return $this->scan($args, false, true); // advance + } + + + /** + * Returns all next tokens until it sees a given token type or value. + * @param int|string $args token type or value to stop before (required) + * @return array[] + */ + public function nextUntil(...$args): array + { + return $this->scan($args, false, true, false, true); // advance, until + } + + + /** + * Returns concatenation of all next token values. + * @param int|string $args token type or value to be joined + */ + public function joinAll(...$args): string + { + return $this->scan($args, false, true, true); // advance, strings + } + + + /** + * Returns concatenation of all next tokens until it sees a given token type or value. + * @param int|string $args token type or value to stop before (required) + */ + public function joinUntil(...$args): string + { + return $this->scan($args, false, true, true, true); // advance, strings, until + } + + + /** + * Checks the current token. + * @param int|string $args token type or value + */ + public function isCurrent(...$args): bool + { + if (!isset($this->tokens[$this->position])) { + return false; + } + $token = $this->tokens[$this->position]; + return in_array($token[Tokenizer::VALUE], $args, true) + || in_array($token[Tokenizer::TYPE], $args, true); + } + + + /** + * Checks the next token existence. + * @param int|string $args token type or value + */ + public function isNext(...$args): bool + { + return (bool) $this->scan($args, true, false); // onlyFirst + } + + + /** + * Checks the previous token existence. + * @param int|string $args token type or value + */ + public function isPrev(...$args): bool + { + return (bool) $this->scan($args, true, false, false, false, true); // onlyFirst, prev + } + + + /** + * Returns next expected token or throws exception. + * @param int|string $args desired token type or value + * @throws CompileException + */ + public function consumeValue(...$args): string + { + if ($token = $this->scan($args, true, true)) { // onlyFirst, advance + return $token[Tokenizer::VALUE]; + } + $pos = $this->position + 1; + while (($next = $this->tokens[$pos] ?? null) && in_array($next[Tokenizer::TYPE], $this->ignored, true)) { + $pos++; + } + throw new CompileException($next ? "Unexpected token '" . $next[Tokenizer::VALUE] . "'." : 'Unexpected end.'); + } + + + /** + * @return static + */ + public function reset() + { + $this->position = -1; + return $this; + } + + + /** + * Moves cursor to next token. + */ + protected function next(): void + { + $this->position++; + } + + + /** + * Looks for (first) (not) wanted tokens. + * @param array $wanted of desired token types or values + * @return mixed + */ + protected function scan(array $wanted, bool $onlyFirst, bool $advance, bool $strings = false, bool $until = false, bool $prev = false) + { + $res = $onlyFirst ? null : ($strings ? '' : []); + $pos = $this->position + ($prev ? -1 : 1); + do { + if (!isset($this->tokens[$pos])) { + return $res; + } + + $token = $this->tokens[$pos]; + if (!$wanted || (in_array($token[Tokenizer::VALUE], $wanted, true) || in_array($token[Tokenizer::TYPE], $wanted, true)) ^ $until) { + while ($advance && !$prev && $pos > $this->position) { + $this->next(); + } + + if ($onlyFirst) { + return $strings ? $token[Tokenizer::VALUE] : $token; + } elseif ($strings) { + $res .= $token[Tokenizer::VALUE]; + } else { + $res[] = $token; + } + + } elseif ($until || !in_array($token[Tokenizer::TYPE], $this->ignored, true)) { + return $res; + } + $pos += $prev ? -1 : 1; + } while (true); + } +} diff --git a/vendor/latte/latte/src/Latte/Compiler/Tokenizer.php b/vendor/latte/latte/src/Latte/Compiler/Tokenizer.php new file mode 100644 index 0000000..b899763 --- /dev/null +++ b/vendor/latte/latte/src/Latte/Compiler/Tokenizer.php @@ -0,0 +1,86 @@ + pattern] + * @param string $flags regular expression flag + */ + public function __construct(array $patterns, string $flags = '') + { + $this->re = '~(' . implode(')|(', $patterns) . ')~A' . $flags; + $this->types = array_keys($patterns); + } + + + /** + * Tokenizes string. + */ + public function tokenize(string $input): array + { + preg_match_all($this->re, $input, $tokens, PREG_SET_ORDER); + if (preg_last_error()) { + throw new RegexpException(null, preg_last_error()); + } + $len = 0; + $count = count($this->types); + foreach ($tokens as &$match) { + $type = null; + for ($i = 1; $i <= $count; $i++) { + if (!isset($match[$i])) { + break; + } elseif ($match[$i] != null) { + $type = $this->types[$i - 1]; + break; + } + } + $match = [self::VALUE => $match[0], self::OFFSET => $len, self::TYPE => $type]; + $len += strlen($match[self::VALUE]); + } + if ($len !== strlen($input)) { + [$line, $col] = $this->getCoordinates($input, $len); + $token = str_replace("\n", '\n', substr($input, $len, 10)); + throw new CompileException("Unexpected '$token' on line $line, column $col."); + } + return $tokens; + } + + + /** + * Returns position of token in input string. + * @return array of [line, column] + */ + public static function getCoordinates(string $text, int $offset): array + { + $text = substr($text, 0, $offset); + return [substr_count($text, "\n") + 1, $offset - strrpos("\n" . $text, "\n") + 1]; + } +} diff --git a/vendor/latte/latte/src/Latte/Engine.php b/vendor/latte/latte/src/Latte/Engine.php new file mode 100644 index 0000000..62f4cd9 --- /dev/null +++ b/vendor/latte/latte/src/Latte/Engine.php @@ -0,0 +1,370 @@ +filters = new Runtime\FilterExecutor; + } + + + /** + * Renders template to output. + */ + public function render(string $name, array $params = [], string $block = null): void + { + $this->createTemplate($name, $params + ['_renderblock' => $block]) + ->render(); + } + + + /** + * Renders template to string. + */ + public function renderToString(string $name, array $params = [], string $block = null): string + { + $template = $this->createTemplate($name, $params + ['_renderblock' => $block]); + return $template->capture([$template, 'render']); + } + + + /** + * Creates template object. + */ + public function createTemplate(string $name, array $params = []): Runtime\Template + { + $class = $this->getTemplateClass($name); + if (!class_exists($class, false)) { + $this->loadTemplate($name); + } + return new $class($this, $params, $this->filters, $this->providers, $name); + } + + + /** + * Compiles template to PHP code. + */ + public function compile(string $name): string + { + foreach ($this->onCompile ?: [] as $cb) { + (Helpers::checkCallback($cb))($this); + } + $this->onCompile = []; + + $source = $this->getLoader()->getContent($name); + + try { + $tokens = $this->getParser()->setContentType($this->contentType) + ->parse($source); + + $code = $this->getCompiler()->setContentType($this->contentType) + ->compile($tokens, $this->getTemplateClass($name)); + + } catch (\Exception $e) { + if (!$e instanceof CompileException) { + $e = new CompileException("Thrown exception '{$e->getMessage()}'", 0, $e); + } + $line = isset($tokens) ? $this->getCompiler()->getLine() : $this->getParser()->getLine(); + throw $e->setSource($source, $line, $name); + } + + if (!preg_match('#\n|\?#', $name)) { + $code = "" . $code; + } + if ($this->strictTypes) { + $code = "" . $code; + } + $code = PhpHelpers::reformatCode($code); + return $code; + } + + + /** + * Compiles template to cache. + * @throws \LogicException + */ + public function warmupCache(string $name): void + { + if (!$this->tempDirectory) { + throw new \LogicException('Path to temporary directory is not set.'); + } + + $class = $this->getTemplateClass($name); + if (!class_exists($class, false)) { + $this->loadTemplate($name); + } + } + + + private function loadTemplate(string $name): void + { + if (!$this->tempDirectory) { + $code = $this->compile($name); + if (@eval('?>' . $code) === false) { // @ is escalated to exception + throw (new CompileException('Error in template: ' . error_get_last()['message'])) + ->setSource($code, error_get_last()['line'], "$name (compiled)"); + } + return; + } + + $file = $this->getCacheFile($name); + + if (!$this->isExpired($file, $name) && (@include $file) !== false) { // @ - file may not exist + return; + } + + if (!is_dir($this->tempDirectory) && !@mkdir($this->tempDirectory) && !is_dir($this->tempDirectory)) { // @ - dir may already exist + throw new \RuntimeException("Unable to create directory '$this->tempDirectory'. " . error_get_last()['message']); + } + + $handle = @fopen("$file.lock", 'c+'); // @ is escalated to exception + if (!$handle) { + throw new \RuntimeException("Unable to create file '$file.lock'. " . error_get_last()['message']); + } elseif (!@flock($handle, LOCK_EX)) { // @ is escalated to exception + throw new \RuntimeException("Unable to acquire exclusive lock on '$file.lock'. " . error_get_last()['message']); + } + + if (!is_file($file) || $this->isExpired($file, $name)) { + $code = $this->compile($name); + if (file_put_contents("$file.tmp", $code) !== strlen($code) || !rename("$file.tmp", $file)) { + @unlink("$file.tmp"); // @ - file may not exist + throw new \RuntimeException("Unable to create '$file'."); + } elseif (function_exists('opcache_invalidate')) { + @opcache_invalidate($file, true); // @ can be restricted + } + } + + if ((include $file) === false) { + throw new \RuntimeException("Unable to load '$file'."); + } + + flock($handle, LOCK_UN); + fclose($handle); + @unlink("$file.lock"); // @ file may become locked on Windows + } + + + private function isExpired(string $file, string $name): bool + { + return $this->autoRefresh && $this->getLoader()->isExpired($name, (int) @filemtime($file)); // @ - file may not exist + } + + + public function getCacheFile(string $name): string + { + $hash = substr($this->getTemplateClass($name), 8); + $base = preg_match('#([/\\\\][\w@.-]{3,35}){1,3}\z#', $name, $m) + ? preg_replace('#[^\w@.-]+#', '-', substr($m[0], 1)) . '--' + : ''; + return "$this->tempDirectory/$base$hash.php"; + } + + + public function getTemplateClass(string $name): string + { + $key = $this->getLoader()->getUniqueId($name) . "\00" . self::VERSION; + return 'Template' . substr(md5($key), 0, 10); + } + + + /** + * Registers run-time filter. + * @return static + */ + public function addFilter(?string $name, callable $callback) + { + $this->filters->add($name, $callback); + return $this; + } + + + /** + * Returns all run-time filters. + * @return string[] + */ + public function getFilters(): array + { + return $this->filters->getAll(); + } + + + /** + * Call a run-time filter. + * @return mixed + */ + public function invokeFilter(string $name, array $args) + { + return ($this->filters->$name)(...$args); + } + + + /** + * Adds new macro. + * @return static + */ + public function addMacro(string $name, IMacro $macro) + { + $this->getCompiler()->addMacro($name, $macro); + return $this; + } + + + /** + * Adds new provider. + * @return static + */ + public function addProvider(string $name, $value) + { + $this->providers[$name] = $value; + return $this; + } + + + /** + * Returns all providers. + */ + public function getProviders(): array + { + return $this->providers; + } + + + /** + * @return static + */ + public function setContentType(string $type) + { + $this->contentType = $type; + return $this; + } + + + /** + * Sets path to temporary directory. + * @return static + */ + public function setTempDirectory(string $path) + { + $this->tempDirectory = $path; + return $this; + } + + + /** + * Sets auto-refresh mode. + * @return static + */ + public function setAutoRefresh(bool $on = true) + { + $this->autoRefresh = $on; + return $this; + } + + + /** + * Enables declare(strict_types=1) in templates. + * @return static + */ + public function setStrictTypes(bool $on = true) + { + $this->strictTypes = $on; + return $this; + } + + + public function getParser(): Parser + { + if (!$this->parser) { + $this->parser = new Parser; + } + return $this->parser; + } + + + public function getCompiler(): Compiler + { + if (!$this->compiler) { + $this->compiler = new Compiler; + Macros\CoreMacros::install($this->compiler); + Macros\BlockMacros::install($this->compiler); + } + return $this->compiler; + } + + + /** + * @return static + */ + public function setLoader(ILoader $loader) + { + $this->loader = $loader; + return $this; + } + + + public function getLoader(): ILoader + { + if (!$this->loader) { + $this->loader = new Loaders\FileLoader; + } + return $this->loader; + } +} diff --git a/vendor/latte/latte/src/Latte/Helpers.php b/vendor/latte/latte/src/Latte/Helpers.php new file mode 100644 index 0000000..2d36cda --- /dev/null +++ b/vendor/latte/latte/src/Latte/Helpers.php @@ -0,0 +1,70 @@ + 1, 'hr' => 1, 'br' => 1, 'input' => 1, 'meta' => 1, 'area' => 1, 'embed' => 1, 'keygen' => 1, 'source' => 1, 'base' => 1, + 'col' => 1, 'link' => 1, 'param' => 1, 'basefont' => 1, 'frame' => 1, 'isindex' => 1, 'wbr' => 1, 'command' => 1, 'track' => 1, + ]; + + + /** + * Checks callback. + */ + public static function checkCallback($callable): callable + { + if (!is_callable($callable, false, $text)) { + throw new \InvalidArgumentException("Callback '$text' is not callable."); + } + return $callable; + } + + + /** + * Finds the best suggestion. + */ + public static function getSuggestion(array $items, $value): ?string + { + $best = null; + $min = (strlen($value) / 4 + 1) * 10 + .1; + foreach (array_unique($items, SORT_REGULAR) as $item) { + $item = is_object($item) ? $item->getName() : $item; + if (($len = levenshtein($item, $value, 10, 11, 10)) > 0 && $len < $min) { + $min = $len; + $best = $item; + } + } + return $best; + } + + + public static function removeFilter(string &$modifier, string $filter): bool + { + $modifier = preg_replace('#\|(' . $filter . ')\s?(?=\||\z)#i', '', $modifier, -1, $found); + return (bool) $found; + } + + + /** + * Starts the $haystack string with the prefix $needle? + */ + public static function startsWith(string $haystack, string $needle): bool + { + return strncmp($haystack, $needle, strlen($needle)) === 0; + } +} diff --git a/vendor/latte/latte/src/Latte/ILoader.php b/vendor/latte/latte/src/Latte/ILoader.php new file mode 100644 index 0000000..2f1817b --- /dev/null +++ b/vendor/latte/latte/src/Latte/ILoader.php @@ -0,0 +1,38 @@ +baseDir = $baseDir ? $this->normalizePath("$baseDir/") : null; + } + + + /** + * Returns template source code. + */ + public function getContent($fileName): string + { + $file = $this->baseDir . $fileName; + if ($this->baseDir && !Latte\Helpers::startsWith($this->normalizePath($file), $this->baseDir)) { + throw new \RuntimeException("Template '$file' is not within the allowed path '$this->baseDir'."); + + } elseif (!is_file($file)) { + throw new \RuntimeException("Missing template file '$file'."); + + } elseif ($this->isExpired($fileName, time())) { + if (@touch($file) === false) { + trigger_error("File's modification time is in the future. Cannot update it: " . error_get_last()['message'], E_USER_WARNING); + } + } + return file_get_contents($file); + } + + + public function isExpired($file, $time): bool + { + return @filemtime($this->baseDir . $file) > $time; // @ - stat may fail + } + + + /** + * Returns referred template name. + */ + public function getReferredName($file, $referringFile): string + { + if ($this->baseDir || !preg_match('#/|\\\\|[a-z][a-z0-9+.-]*:#iA', $file)) { + $file = $this->normalizePath($referringFile . '/../' . $file); + } + return $file; + } + + + /** + * Returns unique identifier for caching. + */ + public function getUniqueId($file): string + { + return $this->baseDir . strtr($file, '/', DIRECTORY_SEPARATOR); + } + + + private static function normalizePath(string $path): string + { + $res = []; + foreach (explode('/', strtr($path, '\\', '/')) as $part) { + if ($part === '..' && $res && end($res) !== '..') { + array_pop($res); + } elseif ($part !== '.') { + $res[] = $part; + } + } + return implode(DIRECTORY_SEPARATOR, $res); + } +} diff --git a/vendor/latte/latte/src/Latte/Loaders/StringLoader.php b/vendor/latte/latte/src/Latte/Loaders/StringLoader.php new file mode 100644 index 0000000..dbdf092 --- /dev/null +++ b/vendor/latte/latte/src/Latte/Loaders/StringLoader.php @@ -0,0 +1,72 @@ + content] */ + private $templates; + + + public function __construct(array $templates = null) + { + $this->templates = $templates; + } + + + /** + * Returns template source code. + */ + public function getContent($name): string + { + if ($this->templates === null) { + return $name; + } elseif (isset($this->templates[$name])) { + return $this->templates[$name]; + } else { + throw new \RuntimeException("Missing template '$name'."); + } + } + + + public function isExpired($name, $time): bool + { + return false; + } + + + /** + * Returns referred template name. + */ + public function getReferredName($name, $referringName): string + { + if ($this->templates === null) { + throw new \LogicException("Missing template '$name'."); + } + return $name; + } + + + /** + * Returns unique identifier for caching. + */ + public function getUniqueId($name): string + { + return $this->getContent($name); + } +} diff --git a/vendor/latte/latte/src/Latte/Macros/BlockMacros.php b/vendor/latte/latte/src/Latte/Macros/BlockMacros.php new file mode 100644 index 0000000..e067efe --- /dev/null +++ b/vendor/latte/latte/src/Latte/Macros/BlockMacros.php @@ -0,0 +1,420 @@ +addMacro('include', [$me, 'macroInclude']); + $me->addMacro('includeblock', [$me, 'macroIncludeBlock']); // deprecated + $me->addMacro('import', [$me, 'macroImport'], null, null, self::ALLOWED_IN_HEAD); + $me->addMacro('extends', [$me, 'macroExtends'], null, null, self::ALLOWED_IN_HEAD); + $me->addMacro('layout', [$me, 'macroExtends'], null, null, self::ALLOWED_IN_HEAD); + $me->addMacro('snippet', [$me, 'macroBlock'], [$me, 'macroBlockEnd']); + $me->addMacro('block', [$me, 'macroBlock'], [$me, 'macroBlockEnd'], null, self::AUTO_CLOSE); + $me->addMacro('define', [$me, 'macroBlock'], [$me, 'macroBlockEnd']); + $me->addMacro('snippetArea', [$me, 'macroBlock'], [$me, 'macroBlockEnd']); + $me->addMacro('ifset', [$me, 'macroIfset'], '}'); + $me->addMacro('elseifset', [$me, 'macroIfset']); + } + + + /** + * Initializes before template parsing. + * @return void + */ + public function initialize() + { + $this->namedBlocks = []; + $this->blockTypes = []; + $this->extends = null; + $this->imports = []; + } + + + /** + * Finishes template parsing. + */ + public function finalize() + { + $compiler = $this->getCompiler(); + $functions = []; + foreach ($this->namedBlocks as $name => $code) { + $compiler->addMethod( + $functions[$name] = $this->generateMethodName($name), + '?>' . $compiler->expandTokens($code) . 'namedBlocks) { + $compiler->addProperty('blocks', $functions); + $compiler->addProperty('blockTypes', $this->blockTypes); + } + + return [ + ($this->extends === null ? '' : '$this->parentName = ' . $this->extends . ';') . implode($this->imports), + ]; + } + + + /********************* macros ****************d*g**/ + + + /** + * {include block} + */ + public function macroInclude(MacroNode $node, PhpWriter $writer) + { + $node->replaced = false; + $destination = $node->tokenizer->fetchWord(); // destination [,] [params] + if (!preg_match('~#|[\w-]+\z~A', $destination)) { + return false; + } + + $destination = ltrim($destination, '#'); + $parent = $destination === 'parent'; + if ($destination === 'parent' || $destination === 'this') { + for ( + $item = $node->parentNode; + $item && $item->name !== 'block' && !isset($item->data->name); + $item = $item->parentNode + ); + if (!$item) { + throw new CompileException("Cannot include $destination block outside of any block."); + } + $destination = $item->data->name; + } + + $noEscape = Helpers::removeFilter($node->modifiers, 'noescape'); + if (!$noEscape && Helpers::removeFilter($node->modifiers, 'escape')) { + trigger_error('Macro ' . $node->getNotation() . ' provides auto-escaping, remove |escape.'); + } + if ($node->modifiers && !$noEscape) { + $node->modifiers .= '|escape'; + } + return $writer->write( + '$this->renderBlock' . ($parent ? 'Parent' : '') . '(' + . (strpos($destination, '$') === false ? var_export($destination, true) : $destination) + . ', %node.array? + ' + . (isset($this->namedBlocks[$destination]) || $parent ? 'get_defined_vars()' : '$this->params') + . ($node->modifiers + ? ', function ($s, $type) { $_fi = new LR\FilterInfo($type); return %modifyContent($s); }' + : ($noEscape || $parent ? '' : ', ' . var_export(implode($node->context), true))) + . ');' + ); + } + + + /** + * {includeblock "file"} + * @deprecated + */ + public function macroIncludeBlock(MacroNode $node, PhpWriter $writer) + { + //trigger_error('Macro {includeblock} is deprecated, use similar macro {import}.', E_USER_DEPRECATED); + $node->replaced = false; + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + return $writer->write( + 'ob_start(function () {}); $this->createTemplate(%node.word, %node.array? + get_defined_vars(), "includeblock")->renderToContentType(%var); echo rtrim(ob_get_clean());', + implode($node->context) + ); + } + + + /** + * {import "file"} + */ + public function macroImport(MacroNode $node, PhpWriter $writer) + { + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + $destination = $node->tokenizer->fetchWord(); + $this->checkExtraArgs($node); + $code = $writer->write('$this->createTemplate(%word, $this->params, "import")->render();', $destination); + if ($this->getCompiler()->isInHead()) { + $this->imports[] = $code; + } else { + return $code; + } + } + + + /** + * {extends none | $var | "file"} + */ + public function macroExtends(MacroNode $node, PhpWriter $writer) + { + $notation = $node->getNotation(); + if ($node->modifiers) { + throw new CompileException("Modifiers are not allowed in $notation"); + } elseif (!$node->args) { + throw new CompileException("Missing destination in $notation"); + } elseif ($node->parentNode) { + throw new CompileException("$notation must be placed outside any macro."); + } elseif ($this->extends !== null) { + throw new CompileException("Multiple $notation declarations are not allowed."); + } elseif ($node->args === 'none') { + $this->extends = 'FALSE'; + } else { + $this->extends = $writer->write('%node.word%node.args'); + } + if (!$this->getCompiler()->isInHead()) { + trigger_error("$notation must be placed in template head.", E_USER_WARNING); + } + } + + + /** + * {block [name]} + * {snippet [name]} + * {snippetArea [name]} + * {define name} + */ + public function macroBlock(MacroNode $node, PhpWriter $writer) + { + $name = $node->tokenizer->fetchWord(); + + if ($node->name === 'block' && $name === null) { // anonymous block + return $node->modifiers === '' ? '' : 'ob_start(function () {})'; + + } elseif ($node->name === 'define' && $node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + + $node->data->name = $name = ltrim((string) $name, '#'); + if ($name == null) { + if ($node->name === 'define') { + throw new CompileException('Missing block name.'); + } + + } elseif (strpos($name, '$') !== false) { // dynamic block/snippet + if ($node->name === 'snippet') { + for ( + $parent = $node->parentNode; + $parent && !($parent->name === 'snippet' || $parent->name === 'snippetArea'); + $parent = $parent->parentNode + ); + if (!$parent) { + throw new CompileException('Dynamic snippets are allowed only inside static snippet/snippetArea.'); + } + $parent->data->dynamic = true; + $node->data->leave = true; + $node->closingCode = 'global->snippetDriver->leave(); ?>'; + $enterCode = '$this->global->snippetDriver->enter(' . $writer->formatWord($name) . ', "' . SnippetDriver::TYPE_DYNAMIC . '");'; + + if ($node->prefix) { + $node->attrCode = $writer->write("global->snippetDriver->getHtmlId({$writer->formatWord($name)})) . '\"' ?>"); + return $writer->write($enterCode); + } + $node->closingCode .= "\n"; + $this->checkExtraArgs($node); + return $writer->write("?>\n
global->snippetDriver->getHtmlId({$writer->formatWord($name)})) ?>\">data->leave = true; + $node->data->func = $this->generateMethodName($name); + $fname = $writer->formatWord($name); + if ($node->name === 'define') { + $node->closingCode = ''; + } else { + if (Helpers::startsWith((string) $node->context[1], Latte\Compiler::CONTEXT_HTML_ATTRIBUTE)) { + $node->context[1] = ''; + $node->modifiers .= '|escape'; + } elseif ($node->modifiers) { + $node->modifiers .= '|escape'; + } + $node->closingCode = $writer->write('renderBlock(%raw, get_defined_vars()' + . ($node->modifiers ? ', function ($s, $type) { $_fi = new LR\FilterInfo($type); return %modifyContent($s); }' : '') . '); ?>', $fname); + } + $blockType = var_export(implode($node->context), true); + $this->checkExtraArgs($node); + return "\$this->checkBlockContentType($blockType, $fname);" + . "\$this->blockQueue[$fname][] = [\$this, '{$node->data->func}'];"; + } + } + + // static snippet/snippetArea + if ($node->name === 'snippet' || $node->name === 'snippetArea') { + if ($node->prefix && isset($node->htmlNode->attrs['id'])) { + throw new CompileException('Cannot combine HTML attribute id with n:snippet.'); + } + $node->data->name = $name = '_' . $name; + } + + if (isset($this->namedBlocks[$name])) { + throw new CompileException("Cannot redeclare static {$node->name} '$name'"); + } + $extendsCheck = $this->namedBlocks ? '' : 'if ($this->getParentName()) return get_defined_vars();'; + $this->namedBlocks[$name] = true; + + if (Helpers::removeFilter($node->modifiers, 'escape')) { + trigger_error('Macro ' . $node->getNotation() . ' provides auto-escaping, remove |escape.'); + } + if (Helpers::startsWith((string) $node->context[1], Latte\Compiler::CONTEXT_HTML_ATTRIBUTE)) { + $node->context[1] = ''; + $node->modifiers .= '|escape'; + } elseif ($node->modifiers) { + $node->modifiers .= '|escape'; + } + $this->blockTypes[$name] = implode($node->context); + + $include = '$this->renderBlock(%var, ' . (($node->name === 'snippet' || $node->name === 'snippetArea') ? '$this->params' : 'get_defined_vars()') + . ($node->modifiers ? ', function ($s, $type) { $_fi = new LR\FilterInfo($type); return %modifyContent($s); }' : '') . ')'; + + if ($node->name === 'snippet') { + if ($node->prefix) { + if (isset($node->htmlNode->macroAttrs['foreach'])) { + trigger_error('Combination of n:snippet with n:foreach is invalid, use n:inner-foreach.', E_USER_WARNING); + } + $node->attrCode = $writer->write('global->snippetDriver->getHtmlId(%var)) . \'"\' ?>', (string) substr($name, 1)); + return $writer->write($include, $name); + } + $this->checkExtraArgs($node); + return $writer->write("?>\n
global->snippetDriver->getHtmlId(%var)) ?>\">\n
name === 'define') { + $tokens = $node->tokenizer; + $args = []; + while ($tokens->isNext()) { + $args[] = $tokens->consumeValue($tokens::T_VARIABLE); + if ($tokens->isNext()) { + $tokens->consumeValue(','); + } + } + if ($args) { + $node->data->args = 'list(' . implode(', ', $args) . ') = $_args + [' . str_repeat('NULL, ', count($args)) . '];'; + } + return $extendsCheck; + + } else { // block, snippetArea + $this->checkExtraArgs($node); + return $writer->write($extendsCheck . $include, $name); + } + } + + + /** + * {/block} + * {/snippet} + * {/snippetArea} + * {/define} + */ + public function macroBlockEnd(MacroNode $node, PhpWriter $writer) + { + if (isset($node->data->name)) { // block, snippet, define + if ($asInner = $node->name === 'snippet' && $node->prefix === MacroNode::PREFIX_NONE) { + $node->content = $node->innerContent; + } + + if (($node->name === 'snippet' || $node->name === 'snippetArea') && strpos($node->data->name, '$') === false) { + $type = $node->name === 'snippet' ? SnippetDriver::TYPE_STATIC : SnippetDriver::TYPE_AREA; + $node->content = 'global->snippetDriver->enter(' + . $writer->formatWord(substr($node->data->name, 1)) + . ', "' . $type . '"); ?>' + . preg_replace('#(?<=\n)[ \t]+\z#', '', $node->content) . 'global->snippetDriver->leave(); ?>'; + } + if (empty($node->data->leave)) { + if (preg_match('#\$|n:#', $node->content)) { + $node->content = 'data->args) ? 'extract($this->params); ' . $node->data->args : 'extract($_args);') . ' ?>' + . $node->content; + } + $this->namedBlocks[$node->data->name] = $tmp = preg_replace('#^\n+|(?<=\n)[ \t]+\z#', '', $node->content); + $node->content = substr_replace($node->content, $node->openingCode . "\n", strspn($node->content, "\n"), strlen($tmp)); + $node->openingCode = ''; + + } elseif (isset($node->data->func)) { + $node->content = rtrim($node->content, " \t"); + $this->getCompiler()->addMethod( + $node->data->func, + $this->getCompiler()->expandTokens("extract(\$_args);\n?>$node->contentcontent = ''; + } + + if ($asInner) { // n:snippet -> n:inner-snippet + $node->innerContent = $node->openingCode . $node->content . $node->closingCode; + $node->closingCode = $node->openingCode = ''; + } + return ' '; // consume next new line + + } elseif ($node->modifiers) { // anonymous block with modifier + $node->modifiers .= '|escape'; + return $writer->write('$_fi = new LR\FilterInfo(%var); echo %modifyContent(ob_get_clean());', $node->context[0]); + } + } + + + /** + * {ifset block} + * {elseifset block} + */ + public function macroIfset(MacroNode $node, PhpWriter $writer) + { + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + if (!preg_match('~#|[\w-]+\z~A', $node->args)) { + return false; + } + $list = []; + while (($name = $node->tokenizer->fetchWord()) !== null) { + $list[] = preg_match('~#|[\w-]+\z~A', $name) + ? '$this->blockQueue["' . ltrim($name, '#') . '"]' + : $writer->formatArgs(new Latte\MacroTokens($name)); + } + return ($node->name === 'elseifset' ? '} else' : '') + . 'if (isset(' . implode(', ', $list) . ')) {'; + } + + + private function generateMethodName(string $blockName): string + { + $clean = trim(preg_replace('#\W+#', '_', $blockName), '_'); + $name = 'block' . ucfirst($clean); + $methods = array_keys($this->getCompiler()->getMethods()); + if (!$clean || in_array(strtolower($name), array_map('strtolower', $methods), true)) { + $name .= '_' . substr(md5($blockName), 0, 5); + } + return $name; + } +} diff --git a/vendor/latte/latte/src/Latte/Macros/CoreMacros.php b/vendor/latte/latte/src/Latte/Macros/CoreMacros.php new file mode 100644 index 0000000..b529768 --- /dev/null +++ b/vendor/latte/latte/src/Latte/Macros/CoreMacros.php @@ -0,0 +1,515 @@ + value} set template parameter + * - {default var => value} set default template parameter + * - {dump $var} + * - {debugbreak} + * - {contentType ...} HTTP Content-Type header + * - {l} {r} to display { } + */ +class CoreMacros extends MacroSet +{ + /** @var array */ + private $overwrittenVars; + + + public static function install(Latte\Compiler $compiler): void + { + $me = new static($compiler); + + $me->addMacro('if', [$me, 'macroIf'], [$me, 'macroEndIf']); + $me->addMacro('elseif', '} elseif (%node.args) {'); + $me->addMacro('else', [$me, 'macroElse']); + $me->addMacro('ifset', 'if (isset(%node.args)) {', '}'); + $me->addMacro('elseifset', '} elseif (isset(%node.args)) {'); + $me->addMacro('ifcontent', [$me, 'macroIfContent'], [$me, 'macroEndIfContent']); + + $me->addMacro('switch', '$this->global->switch[] = (%node.args); if (false) {', '} array_pop($this->global->switch)'); + $me->addMacro('case', '} elseif (end($this->global->switch) === (%node.args)) {'); + + $me->addMacro('foreach', '', [$me, 'macroEndForeach']); + $me->addMacro('for', 'for (%node.args) {', '}'); + $me->addMacro('while', [$me, 'macroWhile'], [$me, 'macroEndWhile']); + $me->addMacro('continueIf', [$me, 'macroBreakContinueIf']); + $me->addMacro('breakIf', [$me, 'macroBreakContinueIf']); + $me->addMacro('first', 'if ($iterator->isFirst(%node.args)) {', '}'); + $me->addMacro('last', 'if ($iterator->isLast(%node.args)) {', '}'); + $me->addMacro('sep', 'if (!$iterator->isLast(%node.args)) {', '}'); + + $me->addMacro('var', [$me, 'macroVar']); + $me->addMacro('default', [$me, 'macroVar']); + $me->addMacro('dump', [$me, 'macroDump']); + $me->addMacro('debugbreak', [$me, 'macroDebugbreak']); + $me->addMacro('l', '?>{addMacro('r', '?>}addMacro('_', [$me, 'macroTranslate'], [$me, 'macroTranslate']); + $me->addMacro('=', [$me, 'macroExpr']); + + $me->addMacro('capture', [$me, 'macroCapture'], [$me, 'macroCaptureEnd']); + $me->addMacro('spaceless', [$me, 'macroSpaceless'], [$me, 'macroSpaceless']); + $me->addMacro('include', [$me, 'macroInclude']); + $me->addMacro('contentType', [$me, 'macroContentType'], null, null, self::ALLOWED_IN_HEAD); + $me->addMacro('php', [$me, 'macroExpr']); + + $me->addMacro('class', null, null, [$me, 'macroClass']); + $me->addMacro('attr', null, null, [$me, 'macroAttr']); + } + + + /** + * Initializes before template parsing. + * @return void + */ + public function initialize() + { + $this->overwrittenVars = []; + } + + + /** + * Finishes template parsing. + * @return array|null [prolog, epilog] + */ + public function finalize() + { + $code = ''; + foreach ($this->overwrittenVars as $var => $lines) { + $s = var_export($var, true); + $code .= 'if (isset($this->params[' . var_export($var, true) + . "])) trigger_error('Variable $" . addcslashes($var, "'") . ' overwritten in foreach on line ' . implode(', ', $lines) . "'); "; + } + $code = $code ? 'if (!$this->getReferringTemplate() || $this->getReferenceType() === "extends") { ' . $code . '}' : ''; + return [$code]; + } + + + /********************* macros ****************d*g**/ + + + /** + * {if ...} + */ + public function macroIf(MacroNode $node, PhpWriter $writer) + { + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + if ($node->data->capture = ($node->args === '')) { + return 'ob_start(function () {})'; + } + if ($node->prefix === $node::PREFIX_TAG) { + return $writer->write($node->htmlNode->closing ? 'if (array_pop($this->global->ifs)) {' : 'if ($this->global->ifs[] = (%node.args)) {'); + } + return $writer->write('if (%node.args) {'); + } + + + /** + * {/if ...} + */ + public function macroEndIf(MacroNode $node, PhpWriter $writer) + { + if ($node->data->capture) { + if ($node->args === '') { + throw new CompileException('Missing condition in {if} macro.'); + } + return $writer->write('if (%node.args) ' + . (isset($node->data->else) ? '{ ob_end_clean(); echo ob_get_clean(); }' : 'echo ob_get_clean();') + . ' else ' + . (isset($node->data->else) ? '{ $this->global->else = ob_get_clean(); ob_end_clean(); echo $this->global->else; }' : 'ob_end_clean();') + ); + } + return '}'; + } + + + /** + * {else} + */ + public function macroElse(MacroNode $node, PhpWriter $writer) + { + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } elseif ($node->args) { + $hint = Helpers::startsWith($node->args, 'if') ? ', did you mean {elseif}?' : ''; + throw new CompileException('Arguments are not allowed in ' . $node->getNotation() . $hint); + } + $ifNode = $node->parentNode; + if ($ifNode && $ifNode->name === 'if' && $ifNode->data->capture) { + if (isset($ifNode->data->else)) { + throw new CompileException('Macro {if} supports only one {else}.'); + } + $ifNode->data->else = true; + return 'ob_start(function () {})'; + } + return '} else {'; + } + + + /** + * n:ifcontent + */ + public function macroIfContent(MacroNode $node, PhpWriter $writer) + { + if (!$node->prefix || $node->prefix !== MacroNode::PREFIX_NONE) { + throw new CompileException('Unknown ' . $node->getNotation() . ", use n:{$node->name} attribute."); + } + } + + + /** + * n:ifcontent + */ + public function macroEndIfContent(MacroNode $node, PhpWriter $writer) + { + $node->openingCode = ''; + $node->innerContent = '' . $node->innerContent . 'global->ifcontent = ob_get_flush(); ?>'; + $node->closingCode = 'global->ifcontent) === "") ob_end_clean(); else echo ob_get_clean(); ?>'; + } + + + /** + * {_$var |modifiers} + */ + public function macroTranslate(MacroNode $node, PhpWriter $writer) + { + if ($node->closing) { + if (strpos($node->content, 'content, true); + $node->content = ''; + } else { + $node->openingCode = '' . $node->openingCode; + $value = 'ob_get_clean()'; + } + + return $writer->write('$_fi = new LR\FilterInfo(%var); echo %modifyContent($this->filters->filterContent("translate", $_fi, %raw))', $node->context[0], $value); + + } elseif ($node->empty = ($node->args !== '')) { + return $writer->write('echo %modify(($this->filters->translate)(%node.args))'); + } + } + + + /** + * {include "file" [,] [params]} + */ + public function macroInclude(MacroNode $node, PhpWriter $writer) + { + $node->replaced = false; + $noEscape = Helpers::removeFilter($node->modifiers, 'noescape'); + if (!$noEscape && Helpers::removeFilter($node->modifiers, 'escape')) { + trigger_error('Macro {include} provides auto-escaping, remove |escape.'); + } + if ($node->modifiers && !$noEscape) { + $node->modifiers .= '|escape'; + } + return $writer->write( + '/* line ' . $node->startLine . ' */ + $this->createTemplate(%node.word, %node.array? + $this->params, "include")->renderToContentType(%raw);', + $node->modifiers + ? $writer->write('function ($s, $type) { $_fi = new LR\FilterInfo($type); return %modifyContent($s); }') + : var_export($noEscape ? null : implode($node->context), true) + ); + } + + + /** + * {capture $variable} + */ + public function macroCapture(MacroNode $node, PhpWriter $writer) + { + $variable = $node->tokenizer->fetchWord(); + if (!Helpers::startsWith($variable, '$')) { + throw new CompileException("Invalid capture block variable '$variable'"); + } + $this->checkExtraArgs($node); + $node->data->variable = $variable; + return 'ob_start(function () {})'; + } + + + /** + * {/capture} + */ + public function macroCaptureEnd(MacroNode $node, PhpWriter $writer) + { + $body = in_array($node->context[0], [Engine::CONTENT_HTML, Engine::CONTENT_XHTML], true) + ? 'ob_get_length() ? new LR\\Html(ob_get_clean()) : ob_get_clean()' + : 'ob_get_clean()'; + return $writer->write("\$_fi = new LR\\FilterInfo(%var); %raw = %modifyContent($body);", $node->context[0], $node->data->variable); + } + + + /** + * {spaceless} ... {/spaceless} + */ + public function macroSpaceless(MacroNode $node, PhpWriter $writer) + { + if ($node->modifiers || $node->args) { + throw new CompileException('Modifiers and arguments are not allowed in ' . $node->getNotation()); + } + $node->openingCode = in_array($node->context[0], [Engine::CONTENT_HTML, Engine::CONTENT_XHTML], true) + ? '' + : ""; + $node->closingCode = ''; + } + + + /** + * {while ...} + */ + public function macroWhile(MacroNode $node, PhpWriter $writer) + { + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + if ($node->data->do = ($node->args === '')) { + return 'do {'; + } + return $writer->write('while (%node.args) {'); + } + + + /** + * {/while ...} + */ + public function macroEndWhile(MacroNode $node, PhpWriter $writer) + { + if ($node->data->do) { + if ($node->args === '') { + throw new CompileException('Missing condition in {while} macro.'); + } + return $writer->write('} while (%node.args);'); + } + return '}'; + } + + + /** + * {foreach ...} + */ + public function macroEndForeach(MacroNode $node, PhpWriter $writer) + { + $noCheck = Helpers::removeFilter($node->modifiers, 'nocheck'); + $noIterator = Helpers::removeFilter($node->modifiers, 'noiterator'); + if ($node->modifiers) { + throw new CompileException('Only modifiers |noiterator and |nocheck are allowed here.'); + } + $node->openingCode = 'formatArgs(); + if (!$noCheck) { + preg_match('#.+\s+as\s*\$(\w+)(?:\s*=>\s*\$(\w+))?#i', $args, $m); + for ($i = 1; $i < count($m); $i++) { + $this->overwrittenVars[$m[$i]][] = $node->startLine; + } + } + if (!$noIterator && preg_match('#\W(\$iterator|include|require|get_defined_vars)\W#', $this->getCompiler()->expandTokens($node->content))) { + $node->openingCode .= 'foreach ($iterator = $this->global->its[] = new LR\CachingIterator(' + . preg_replace('#(.*)\s+as\s+#i', '$1) as ', $args, 1) . ') { ?>'; + $node->closingCode = 'global->its); $iterator = end($this->global->its); ?>'; + } else { + $node->openingCode .= 'foreach (' . $args . ') { ?>'; + $node->closingCode = ''; + } + } + + + /** + * {breakIf ...} + * {continueIf ...} + */ + public function macroBreakContinueIf(MacroNode $node, PhpWriter $writer) + { + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + $cmd = str_replace('If', '', $node->name); + if ($node->parentNode && $node->parentNode->prefix === $node::PREFIX_NONE) { + return $writer->write("if (%node.args) { echo \"parentNode->htmlNode->name}>\\n\"; $cmd; }"); + } + return $writer->write("if (%node.args) $cmd;"); + } + + + /** + * n:class="..." + */ + public function macroClass(MacroNode $node, PhpWriter $writer) + { + if (isset($node->htmlNode->attrs['class'])) { + throw new CompileException('It is not possible to combine class with n:class.'); + } + return $writer->write('if ($_tmp = array_filter(%node.array)) echo \' class="\', %escape(implode(" ", array_unique($_tmp))), \'"\''); + } + + + /** + * n:attr="..." + */ + public function macroAttr(MacroNode $node, PhpWriter $writer) + { + return $writer->write('$_tmp = %node.array; echo LR\Filters::htmlAttributes(isset($_tmp[0]) && is_array($_tmp[0]) ? $_tmp[0] : $_tmp);'); + } + + + /** + * {dump ...} + */ + public function macroDump(MacroNode $node, PhpWriter $writer) + { + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + $args = $writer->formatArgs(); + return $writer->write( + 'Tracy\Debugger::barDump(' . ($args ? "($args)" : 'get_defined_vars()') . ', %var);', + $args ?: 'variables' + ); + } + + + /** + * {debugbreak ...} + */ + public function macroDebugbreak(MacroNode $node, PhpWriter $writer) + { + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + if (function_exists($func = 'debugbreak') || function_exists($func = 'xdebug_break')) { + return $writer->write($node->args == null ? "$func()" : "if (%node.args) $func();"); + } + } + + + /** + * {var ...} + * {default ...} + */ + public function macroVar(MacroNode $node, PhpWriter $writer) + { + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + if ($node->args === '' && $node->parentNode && $node->parentNode->name === 'switch') { + return '} else {'; + } + + $var = true; + $tokens = $writer->preprocess(); + $res = new Latte\MacroTokens; + while ($tokens->nextToken()) { + if ($var && $tokens->isCurrent($tokens::T_SYMBOL, $tokens::T_VARIABLE)) { + if ($node->name === 'default') { + $res->append("'" . ltrim($tokens->currentValue(), '$') . "'"); + } else { + $res->append('$' . ltrim($tokens->currentValue(), '$')); + } + $var = null; + + } elseif ($tokens->isCurrent('=', '=>') && $tokens->depth === 0) { + $res->append($node->name === 'default' ? '=>' : '='); + $var = false; + + } elseif ($tokens->isCurrent(',') && $tokens->depth === 0) { + if ($var === null) { + $res->append($node->name === 'default' ? '=>null' : '=null'); + } + $res->append($node->name === 'default' ? ',' : ';'); + $var = true; + + } elseif ($var === null && $node->name === 'default' && !$tokens->isCurrent($tokens::T_WHITESPACE)) { + throw new CompileException("Unexpected '{$tokens->currentValue()}' in {default $node->args}"); + + } else { + $res->append($tokens->currentToken()); + } + } + if ($var === null) { + $res->append($node->name === 'default' ? '=>null' : '=null'); + } + $out = $writer->quotingPass($res)->joinAll(); + return $node->name === 'default' ? "extract([$out], EXTR_SKIP)" : "$out;"; + } + + + /** + * {= ...} + * {php ...} + */ + public function macroExpr(MacroNode $node, PhpWriter $writer) + { + return $writer->write($node->name === '=' + ? "echo %modify(%node.args) /* line $node->startLine */" + : '%modify(%node.args);' + ); + } + + + /** + * {contentType ...} + */ + public function macroContentType(MacroNode $node, PhpWriter $writer) + { + if ( + !$this->getCompiler()->isInHead() + && !($node->htmlNode && strtolower($node->htmlNode->name) === 'script' && strpos($node->args, 'html') !== false) + ) { + throw new CompileException($node->getNotation() . ' is allowed only in template header.'); + } + $compiler = $this->getCompiler(); + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } elseif (strpos($node->args, 'xhtml') !== false) { + $type = $compiler::CONTENT_XHTML; + } elseif (strpos($node->args, 'html') !== false) { + $type = $compiler::CONTENT_HTML; + } elseif (strpos($node->args, 'xml') !== false) { + $type = $compiler::CONTENT_XML; + } elseif (strpos($node->args, 'javascript') !== false) { + $type = $compiler::CONTENT_JS; + } elseif (strpos($node->args, 'css') !== false) { + $type = $compiler::CONTENT_CSS; + } elseif (strpos($node->args, 'calendar') !== false) { + $type = $compiler::CONTENT_ICAL; + } else { + $type = $compiler::CONTENT_TEXT; + } + $compiler->setContentType($type); + + if (strpos($node->args, '/') && !$node->htmlNode) { + return $writer->write('if (empty($this->global->coreCaptured) && in_array($this->getReferenceType(), ["extends", null], true)) header(%var);', "Content-Type: $node->args"); + } + } +} diff --git a/vendor/latte/latte/src/Latte/Macros/MacroSet.php b/vendor/latte/latte/src/Latte/Macros/MacroSet.php new file mode 100644 index 0000000..5229d97 --- /dev/null +++ b/vendor/latte/latte/src/Latte/Macros/MacroSet.php @@ -0,0 +1,167 @@ +compiler = $compiler; + } + + + public function addMacro(string $name, $begin, $end = null, $attr = null, int $flags = null) + { + if (!$begin && !$end && !$attr) { + throw new \InvalidArgumentException("At least one argument must be specified for macro '$name'."); + } + foreach ([$begin, $end, $attr] as $arg) { + if ($arg && !is_string($arg)) { + Latte\Helpers::checkCallback($arg); + } + } + + $this->macros[$name] = [$begin, $end, $attr]; + $this->compiler->addMacro($name, $this, $flags); + return $this; + } + + + /** + * Initializes before template parsing. + * @return void + */ + public function initialize() + { + } + + + /** + * Finishes template parsing. + * @return array|null [prolog, epilog] + */ + public function finalize() + { + } + + + /** + * New node is found. + * @return bool|null + */ + public function nodeOpened(MacroNode $node) + { + [$begin, $end, $attr] = $this->macros[$node->name]; + $node->empty = !$end; + + if ( + $node->modifiers + && (!$begin || (is_string($begin) && strpos($begin, '%modify') === false)) + && (!$end || (is_string($end) && strpos($end, '%modify') === false)) + && (!$attr || (is_string($attr) && strpos($attr, '%modify') === false)) + ) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + + if ( + $node->args + && (!$begin || (is_string($begin) && strpos($begin, '%node') === false)) + && (!$end || (is_string($end) && strpos($end, '%node') === false)) + && (!$attr || (is_string($attr) && strpos($attr, '%node') === false)) + ) { + throw new CompileException('Arguments are not allowed in ' . $node->getNotation()); + } + + if ($attr && $node->prefix === $node::PREFIX_NONE) { + $node->empty = true; + $node->context[1] = Latte\Compiler::CONTEXT_HTML_ATTRIBUTE; + $res = $this->compile($node, $attr); + if ($res === false) { + return false; + } elseif (!$node->attrCode) { + $node->attrCode = ""; + } + $node->context[1] = Latte\Compiler::CONTEXT_HTML_TEXT; + + } elseif ($begin) { + $res = $this->compile($node, $begin); + if ($res === false || ($node->empty && $node->prefix)) { + return false; + } elseif (!$node->openingCode && is_string($res) && $res !== '') { + $node->openingCode = ""; + } + + } elseif (!$end) { + return false; + } + } + + + /** + * Node is closed. + * @return void + */ + public function nodeClosed(MacroNode $node) + { + if (isset($this->macros[$node->name][1])) { + $res = $this->compile($node, $this->macros[$node->name][1]); + if (!$node->closingCode && is_string($res) && $res !== '') { + $node->closingCode = ""; + } + } + } + + + /** + * Generates code. + * @return string|bool|null + */ + private function compile(MacroNode $node, $def) + { + $node->tokenizer->reset(); + $writer = Latte\PhpWriter::using($node); + return is_string($def) + ? $writer->write($def) + : $def($node, $writer); + } + + + public function getCompiler(): Latte\Compiler + { + return $this->compiler; + } + + + /** @internal */ + protected function checkExtraArgs(MacroNode $node): void + { + if ($node->tokenizer->isNext()) { + $args = Latte\Runtime\Filters::truncate($node->tokenizer->joinAll(), 20); + trigger_error("Unexpected arguments '$args' in " . $node->getNotation()); + } + } +} diff --git a/vendor/latte/latte/src/Latte/Runtime/CachingIterator.php b/vendor/latte/latte/src/Latte/Runtime/CachingIterator.php new file mode 100644 index 0000000..39ac77e --- /dev/null +++ b/vendor/latte/latte/src/Latte/Runtime/CachingIterator.php @@ -0,0 +1,204 @@ +getIterator(); + } while ($iterator instanceof \IteratorAggregate); + + } elseif ($iterator instanceof \Traversable) { + if (!$iterator instanceof \Iterator) { + $iterator = new \IteratorIterator($iterator); + } + } else { + throw new \InvalidArgumentException(sprintf('Invalid argument passed to foreach; array or Traversable expected, %s given.', is_object($iterator) ? get_class($iterator) : gettype($iterator))); + } + + parent::__construct($iterator, 0); + } + + + /** + * Is the current element the first one? + * @param int $width + */ + public function isFirst(int $width = null): bool + { + return $this->counter === 1 || ($width && $this->counter !== 0 && (($this->counter - 1) % $width) === 0); + } + + + /** + * Is the current element the last one? + * @param int $width + */ + public function isLast(int $width = null): bool + { + return !$this->hasNext() || ($width && ($this->counter % $width) === 0); + } + + + /** + * Is the iterator empty? + */ + public function isEmpty(): bool + { + return $this->counter === 0; + } + + + /** + * Is the counter odd? + */ + public function isOdd(): bool + { + return $this->counter % 2 === 1; + } + + + /** + * Is the counter even? + */ + public function isEven(): bool + { + return $this->counter % 2 === 0; + } + + + /** + * Returns the counter. + */ + public function getCounter(): int + { + return $this->counter; + } + + + /** + * Returns the counter as string + */ + public function __toString(): string + { + return (string) $this->counter; + } + + + /** + * Returns the count of elements. + */ + public function count(): int + { + $inner = $this->getInnerIterator(); + if ($inner instanceof \Countable) { + return $inner->count(); + + } else { + throw new \LogicException('Iterator is not countable.'); + } + } + + + /** + * Forwards to the next element. + */ + public function next(): void + { + parent::next(); + if (parent::valid()) { + $this->counter++; + } + } + + + /** + * Rewinds the Iterator. + */ + public function rewind(): void + { + parent::rewind(); + $this->counter = parent::valid() ? 1 : 0; + } + + + /** + * Returns the next key. + * @return mixed + */ + public function getNextKey() + { + return $this->getInnerIterator()->key(); + } + + + /** + * Returns the next element. + * @return mixed + */ + public function getNextValue() + { + return $this->getInnerIterator()->current(); + } + + + /********************* property accessor ****************d*g**/ + + + /** + * Returns property value. + * @throws \LogicException if the property is not defined. + */ + public function &__get($name) + { + if (method_exists($this, $m = 'get' . $name) || method_exists($this, $m = 'is' . $name)) { + $ret = $this->$m(); + return $ret; + } + throw new \LogicException('Attempt to read undeclared property ' . get_class($this) . "::\$$name."); + } + + + /** + * Is property defined? + */ + public function __isset($name): bool + { + return method_exists($this, 'get' . $name) || method_exists($this, 'is' . $name); + } +} diff --git a/vendor/latte/latte/src/Latte/Runtime/FilterExecutor.php b/vendor/latte/latte/src/Latte/Runtime/FilterExecutor.php new file mode 100644 index 0000000..3926722 --- /dev/null +++ b/vendor/latte/latte/src/Latte/Runtime/FilterExecutor.php @@ -0,0 +1,185 @@ + [callback, FilterInfo aware] */ + private $_static = [ + 'breaklines' => [[Filters::class, 'breaklines'], false], + 'bytes' => [[Filters::class, 'bytes'], false], + 'capitalize' => [[Filters::class, 'capitalize'], false], + 'datastream' => [[Filters::class, 'dataStream'], false], + 'date' => [[Filters::class, 'date'], false], + 'escapecss' => [[Filters::class, 'escapeCss'], false], + 'escapehtml' => [[Filters::class, 'escapeHtml'], false], + 'escapehtmlcomment' => [[Filters::class, 'escapeHtmlComment'], false], + 'escapeical' => [[Filters::class, 'escapeICal'], false], + 'escapejs' => [[Filters::class, 'escapeJs'], false], + 'escapeurl' => ['rawurlencode', false], + 'escapexml' => [[Filters::class, 'escapeXml'], false], + 'firstupper' => [[Filters::class, 'firstUpper'], false], + 'checkurl' => [[Filters::class, 'safeUrl'], false], + 'implode' => ['implode', false], + 'indent' => [[Filters::class, 'indent'], true], + 'length' => [[Filters::class, 'length'], false], + 'lower' => [[Filters::class, 'lower'], false], + 'number' => ['number_format', false], + 'padleft' => [[Filters::class, 'padLeft'], false], + 'padright' => [[Filters::class, 'padRight'], false], + 'repeat' => [[Filters::class, 'repeat'], true], + 'replace' => [[Filters::class, 'replace'], true], + 'replacere' => [[Filters::class, 'replaceRe'], false], + 'reverse' => [[Filters::class, 'reverse'], false], + 'strip' => [[Filters::class, 'strip'], true], + 'striphtml' => [[Filters::class, 'stripHtml'], true], + 'striptags' => [[Filters::class, 'stripTags'], true], + 'substr' => [[Filters::class, 'substring'], false], + 'trim' => [[Filters::class, 'trim'], true], + 'truncate' => [[Filters::class, 'truncate'], false], + 'upper' => [[Filters::class, 'upper'], false], + 'webalize' => [[\Nette\Utils\Strings::class, 'webalize'], false], + ]; + + + /** + * Registers run-time filter. + * @return static + */ + public function add(?string $name, callable $callback) + { + if ($name == null) { // intentionally == + array_unshift($this->_dynamic, $callback); + } else { + $name = strtolower($name); + $this->_static[$name] = [$callback, null]; + unset($this->$name); + } + return $this; + } + + + /** + * Returns all run-time filters. + * @return string[] + */ + public function getAll(): array + { + return array_combine($tmp = array_keys($this->_static), $tmp); + } + + + /** + * Returns filter for classic calling. + */ + public function __get($name): callable + { + $lname = strtolower($name); + if (isset($this->$lname)) { // case mismatch + return $this->$lname; + + } elseif (isset($this->_static[$lname])) { + [$callback, $aware] = $this->prepareFilter($lname); + if ($aware) { // FilterInfo aware filter + return $this->$lname = function (...$args) use ($callback) { + array_unshift($args, $info = new FilterInfo); + if ($args[1] instanceof IHtmlString) { + $args[1] = $args[1]->__toString(); + $info->contentType = Engine::CONTENT_HTML; + } + $res = $callback(...$args); + return $info->contentType === Engine::CONTENT_HTML + ? new Html($res) + : $res; + }; + } else { // classic filter + return $this->$lname = $callback; + } + } + + return $this->$lname = function (...$args) use ($lname, $name) { // dynamic filter + array_unshift($args, $lname); + foreach ($this->_dynamic as $filter) { + $res = (Helpers::checkCallback($filter))(...$args); + if ($res !== null) { + return $res; + } elseif (isset($this->_static[$lname])) { // dynamic converted to classic + $this->$name = Helpers::checkCallback($this->_static[$lname][0]); + return ($this->$name)(...func_get_args()); + } + } + $hint = ($t = Helpers::getSuggestion(array_keys($this->_static), $name)) ? ", did you mean '$t'?" : '.'; + throw new \LogicException("Filter '$name' is not defined$hint"); + }; + } + + + /** + * Calls filter with FilterInfo. + * @return mixed + */ + public function filterContent(string $name, FilterInfo $info, ...$args) + { + $lname = strtolower($name); + if (!isset($this->_static[$lname])) { + $hint = ($t = Helpers::getSuggestion(array_keys($this->_static), $name)) ? ", did you mean '$t'?" : '.'; + throw new \LogicException("Filter |$name is not defined$hint"); + } + + [$callback, $aware] = $this->prepareFilter($lname); + if ($aware) { // FilterInfo aware filter + array_unshift($args, $info); + return $callback(...$args); + + } else { // classic filter + if ($info->contentType !== Engine::CONTENT_TEXT) { + trigger_error("Filter |$name is called with incompatible content type " . strtoupper($info->contentType) + . ($info->contentType === Engine::CONTENT_HTML ? ', try to prepend |stripHtml.' : '.'), E_USER_WARNING); + } + $res = ($this->$name)(...$args); + if ($res instanceof IHtmlString) { + trigger_error("Filter |$name should be changed to content-aware filter."); + $info->contentType = Engine::CONTENT_HTML; + $res = $res->__toString(); + } + return $res; + } + } + + + private function prepareFilter(string $name): array + { + if (!isset($this->_static[$name][1])) { + $callback = Helpers::checkCallback($this->_static[$name][0]); + if (is_string($callback) && strpos($callback, '::')) { + $callback = explode('::', $callback); + } elseif (is_object($callback)) { + $callback = [$callback, '__invoke']; + } + $ref = is_array($callback) + ? new \ReflectionMethod($callback[0], $callback[1]) + : new \ReflectionFunction($callback); + $this->_static[$name][1] = ($tmp = $ref->getParameters()) + && (string) $tmp[0]->getType() === FilterInfo::class; + } + return $this->_static[$name]; + } +} diff --git a/vendor/latte/latte/src/Latte/Runtime/FilterInfo.php b/vendor/latte/latte/src/Latte/Runtime/FilterInfo.php new file mode 100644 index 0000000..91b2fb1 --- /dev/null +++ b/vendor/latte/latte/src/Latte/Runtime/FilterInfo.php @@ -0,0 +1,30 @@ +contentType = $contentType; + } +} diff --git a/vendor/latte/latte/src/Latte/Runtime/Filters.php b/vendor/latte/latte/src/Latte/Runtime/Filters.php new file mode 100644 index 0000000..71ef3c7 --- /dev/null +++ b/vendor/latte/latte/src/Latte/Runtime/Filters.php @@ -0,0 +1,690 @@ +__toString(true) + : htmlspecialchars((string) $s, ENT_NOQUOTES, 'UTF-8'); + } + + + /** + * Escapes string for use inside HTML attribute value. + * @param mixed $s plain text + * @return string HTML + */ + public static function escapeHtmlAttr($s, bool $double = true): string + { + $double = $double && $s instanceof IHtmlString ? false : $double; + $s = (string) $s; + if (strpos($s, '`') !== false && strpbrk($s, ' <>"\'') === false) { + $s .= ' '; // protection against innerHTML mXSS vulnerability nette/nette#1496 + } + return htmlspecialchars($s, ENT_QUOTES, 'UTF-8', $double); + } + + + /** + * Escapes HTML for use inside HTML attribute. + * @param mixed $s HTML text + * @return string HTML + */ + public static function escapeHtmlAttrConv($s): string + { + return self::escapeHtmlAttr($s, false); + } + + + /** + * Escapes string for use inside HTML attribute name. + * @param string $s plain text + * @return string HTML + */ + public static function escapeHtmlAttrUnquoted($s): string + { + $s = (string) $s; + return preg_match('#^[a-z0-9:-]+$#i', $s) + ? $s + : '"' . self::escapeHtmlAttr($s) . '"'; + } + + + /** + * Escapes string for use inside HTML comments. + * @param string $s plain text + * @return string HTML + */ + public static function escapeHtmlComment($s): string + { + $s = (string) $s; + if ($s && ($s[0] === '-' || $s[0] === '>' || $s[0] === '!')) { + $s = ' ' . $s; + } + $s = str_replace('--', '- - ', $s); + if (substr($s, -1) === '-') { + $s .= ' '; + } + return $s; + } + + + /** + * Escapes string for use inside XML 1.0 template. + * @param string $s plain text + * @return string XML + */ + public static function escapeXml($s): string + { + // XML 1.0: \x09 \x0A \x0D and C1 allowed directly, C0 forbidden + // XML 1.1: \x00 forbidden directly and as a character reference, + // \x09 \x0A \x0D \x85 allowed directly, C0, C1 and \x7F allowed as character references + return htmlspecialchars(preg_replace('#[\x00-\x08\x0B\x0C\x0E-\x1F]+#', '', (string) $s), ENT_QUOTES, 'UTF-8'); + } + + + /** + * Escapes string for use inside XML attribute name. + * @param string $s plain text + * @return string XML + */ + public static function escapeXmlAttrUnquoted($s): string + { + $s = (string) $s; + return preg_match('#^[a-z0-9:-]+$#i', $s) + ? $s + : '"' . self::escapeXml($s) . '"'; + } + + + /** + * Escapes string for use inside CSS template. + * @param string $s plain text + * @return string CSS + */ + public static function escapeCss($s): string + { + // http://www.w3.org/TR/2006/WD-CSS21-20060411/syndata.html#q6 + return addcslashes((string) $s, "\x00..\x1F!\"#$%&'()*+,./:;<=>?@[\\]^`{|}~"); + } + + + /** + * Escapes variables for use inside + +

Nette Forms basic example

+ + + + diff --git a/vendor/nette/forms/examples/bootstrap2-rendering.php b/vendor/nette/forms/examples/bootstrap2-rendering.php new file mode 100644 index 0000000..696edec --- /dev/null +++ b/vendor/nette/forms/examples/bootstrap2-rendering.php @@ -0,0 +1,95 @@ +getRenderer(); + $renderer->wrappers['controls']['container'] = null; + $renderer->wrappers['pair']['container'] = 'div class=control-group'; + $renderer->wrappers['pair']['.error'] = 'error'; + $renderer->wrappers['control']['container'] = 'div class=controls'; + $renderer->wrappers['label']['container'] = 'div class=control-label'; + $renderer->wrappers['control']['description'] = 'span class=help-inline'; + $renderer->wrappers['control']['errorcontainer'] = 'span class=help-inline'; + $form->getElementPrototype()->class('form-horizontal'); + + foreach ($form->getControls() as $control) { + $type = $control->getOption('type'); + if ($type === 'button') { + $control->getControlPrototype()->addClass(empty($usedPrimary) ? 'btn btn-primary' : 'btn'); + $usedPrimary = true; + + } elseif (in_array($type, ['checkbox', 'radio'], true)) { + $control->getSeparatorPrototype()->setName('div')->addClass($type); + } + } +} + + +$form = new Form; +$form->onRender[] = 'makeBootstrap2'; + +$form->addGroup('Personal data'); +$form->addText('name', 'Your name') + ->setRequired('Enter your name'); + +$form->addRadioList('gender', 'Your gender', [ + 'male', 'female', +]); + +$form->addCheckboxList('colors', 'Favorite colors', [ + 'red', 'green', 'blue', +]); + +$form->addSelect('country', 'Country', [ + 'Buranda', 'Qumran', 'Saint Georges Island', +]); + +$form->addCheckbox('send', 'Ship to address'); + +$form->addGroup('Your account'); +$form->addPassword('password', 'Choose password'); +$form->addUpload('avatar', 'Picture'); +$form->addTextArea('note', 'Comment'); + +$form->addGroup(); +$form->addSubmit('submit', 'Send'); +$form->addSubmit('cancel', 'Cancel'); + + +if ($form->isSuccess()) { + echo '

Form was submitted and successfully validated

'; + Dumper::dump($form->getValues()); + exit; +} + + +?> + + +Nette Forms & Bootstrap v2 rendering example + + + +
+ + + +
diff --git a/vendor/nette/forms/examples/bootstrap3-rendering.php b/vendor/nette/forms/examples/bootstrap3-rendering.php new file mode 100644 index 0000000..84bf28b --- /dev/null +++ b/vendor/nette/forms/examples/bootstrap3-rendering.php @@ -0,0 +1,98 @@ +getRenderer(); + $renderer->wrappers['controls']['container'] = null; + $renderer->wrappers['pair']['container'] = 'div class=form-group'; + $renderer->wrappers['pair']['.error'] = 'has-error'; + $renderer->wrappers['control']['container'] = 'div class=col-sm-9'; + $renderer->wrappers['label']['container'] = 'div class="col-sm-3 control-label"'; + $renderer->wrappers['control']['description'] = 'span class=help-block'; + $renderer->wrappers['control']['errorcontainer'] = 'span class=help-block'; + $form->getElementPrototype()->class('form-horizontal'); + + foreach ($form->getControls() as $control) { + $type = $control->getOption('type'); + if ($type === 'button') { + $control->getControlPrototype()->addClass(empty($usedPrimary) ? 'btn btn-primary' : 'btn btn-default'); + $usedPrimary = true; + + } elseif (in_array($type, ['text', 'textarea', 'select'], true)) { + $control->getControlPrototype()->addClass('form-control'); + + } elseif (in_array($type, ['checkbox', 'radio'], true)) { + $control->getSeparatorPrototype()->setName('div')->addClass($type); + } + } +} + + +$form = new Form; +$form->onRender[] = 'makeBootstrap3'; + +$form->addGroup('Personal data'); +$form->addText('name', 'Your name') + ->setRequired('Enter your name'); + +$form->addRadioList('gender', 'Your gender', [ + 'male', 'female', +]); + +$form->addCheckboxList('colors', 'Favorite colors', [ + 'red', 'green', 'blue', +]); + +$form->addSelect('country', 'Country', [ + 'Buranda', 'Qumran', 'Saint Georges Island', +]); + +$form->addCheckbox('send', 'Ship to address'); + +$form->addGroup('Your account'); +$form->addPassword('password', 'Choose password'); +$form->addUpload('avatar', 'Picture'); +$form->addTextArea('note', 'Comment'); + +$form->addGroup(); +$form->addSubmit('submit', 'Send'); +$form->addSubmit('cancel', 'Cancel'); + + +if ($form->isSuccess()) { + echo '

Form was submitted and successfully validated

'; + Dumper::dump($form->getValues()); + exit; +} + + +?> + + +Nette Forms & Bootstrap v3 rendering example + + + +
+ + + +
diff --git a/vendor/nette/forms/examples/bootstrap4-rendering.php b/vendor/nette/forms/examples/bootstrap4-rendering.php new file mode 100644 index 0000000..493f9bd --- /dev/null +++ b/vendor/nette/forms/examples/bootstrap4-rendering.php @@ -0,0 +1,104 @@ +getRenderer(); + $renderer->wrappers['controls']['container'] = null; + $renderer->wrappers['pair']['container'] = 'div class="form-group row"'; + $renderer->wrappers['pair']['.error'] = 'has-danger'; + $renderer->wrappers['control']['container'] = 'div class=col-sm-9'; + $renderer->wrappers['label']['container'] = 'div class="col-sm-3 col-form-label"'; + $renderer->wrappers['control']['description'] = 'span class=form-text'; + $renderer->wrappers['control']['errorcontainer'] = 'span class=form-control-feedback'; + + foreach ($form->getControls() as $control) { + $type = $control->getOption('type'); + if ($type === 'button') { + $control->getControlPrototype()->addClass(empty($usedPrimary) ? 'btn btn-primary' : 'btn btn-secondary'); + $usedPrimary = true; + + } elseif (in_array($type, ['text', 'textarea', 'select'], true)) { + $control->getControlPrototype()->addClass('form-control'); + + } elseif ($type === 'file') { + $control->getControlPrototype()->addClass('form-control-file'); + + } elseif (in_array($type, ['checkbox', 'radio'], true)) { + if ($control instanceof Nette\Forms\Controls\Checkbox) { + $control->getLabelPrototype()->addClass('form-check-label'); + } else { + $control->getItemLabelPrototype()->addClass('form-check-label'); + } + $control->getControlPrototype()->addClass('form-check-input'); + $control->getSeparatorPrototype()->setName('div')->addClass('form-check'); + } + } +} + + +$form = new Form; +$form->onRender[] = 'makeBootstrap4'; + +$form->addGroup('Personal data'); +$form->addText('name', 'Your name') + ->setRequired('Enter your name'); + +$form->addRadioList('gender', 'Your gender', [ + 'male', 'female', +]); + +$form->addCheckboxList('colors', 'Favorite colors', [ + 'red', 'green', 'blue', +]); + +$form->addSelect('country', 'Country', [ + 'Buranda', 'Qumran', 'Saint Georges Island', +]); + +$form->addCheckbox('send', 'Ship to address'); + +$form->addGroup('Your account'); +$form->addPassword('password', 'Choose password'); +$form->addUpload('avatar', 'Picture'); +$form->addTextArea('note', 'Comment'); + +$form->addGroup(); +$form->addSubmit('submit', 'Send'); +$form->addSubmit('cancel', 'Cancel'); + + +if ($form->isSuccess()) { + echo '

Form was submitted and successfully validated

'; + Dumper::dump($form->getValues()); + exit; +} + + +?> + + +Nette Forms & Bootstrap v4 rendering example + + + +
+

Nette Forms & Bootstrap v4 rendering example

+ + +
diff --git a/vendor/nette/forms/examples/containers.php b/vendor/nette/forms/examples/containers.php new file mode 100644 index 0000000..9f7bb6b --- /dev/null +++ b/vendor/nette/forms/examples/containers.php @@ -0,0 +1,62 @@ +addGroup('First person'); + +$first = $form->addContainer('first'); +$first->addText('name', 'Your name:'); +$first->addText('email', 'Email:'); +$first->addText('street', 'Street:'); +$first->addText('city', 'City:'); + +// group Second person +$form->addGroup('Second person'); + +$second = $form->addContainer('second'); +$second->addText('name', 'Your name:'); +$second->addText('email', 'Email:'); +$second->addText('street', 'Street:'); +$second->addText('city', 'City:'); + +// group for button +$form->addGroup(); + +$form->addSubmit('submit', 'Send'); + + +if ($form->isSuccess()) { + echo '

Form was submitted and successfully validated

'; + Dumper::dump($form->getValues()); + exit; +} + + +?> + + +Nette Forms containers example + + +

Nette Forms containers example

+ + + + diff --git a/vendor/nette/forms/examples/custom-control.php b/vendor/nette/forms/examples/custom-control.php new file mode 100644 index 0000000..012a32e --- /dev/null +++ b/vendor/nette/forms/examples/custom-control.php @@ -0,0 +1,148 @@ +setRequired(false) + ->addRule([__CLASS__, 'validateDate'], 'Date is invalid.'); + } + + + public function setValue($value) + { + if ($value === null) { + $this->day = $this->month = $this->year = ''; + } else { + $date = Nette\Utils\DateTime::from($value); + $this->day = $date->format('j'); + $this->month = $date->format('n'); + $this->year = $date->format('Y'); + } + return $this; + } + + + /** + * @return DateTimeImmutable|null + */ + public function getValue() + { + return self::validateDate($this) + ? (new DateTimeImmutable)->setDate((int) $this->year, (int) $this->month, (int) $this->day)->setTime(0, 0) + : null; + } + + + /** + * @return bool + */ + public function isFilled() + { + return $this->day !== '' || $this->year !== ''; + } + + + public function loadHttpData() + { + $this->day = $this->getHttpData(Form::DATA_LINE, '[day]'); + $this->month = $this->getHttpData(Form::DATA_LINE, '[month]'); + $this->year = $this->getHttpData(Form::DATA_LINE, '[year]'); + } + + + /** + * Generates control's HTML element. + */ + public function getControl() + { + $name = $this->getHtmlName(); + return Html::el('input', [ + 'name' => $name . '[day]', + 'id' => $this->getHtmlId(), + 'value' => $this->day, + 'type' => 'number', + 'min' => 1, + 'max' => 31, + 'data-nette-rules' => Helpers::exportRules($this->getRules()) ?: null, + ]) + + . Helpers::createSelectBox( + [1 => 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], + [], + $this->month + )->name($name . '[month]') + + . Html::el('input', [ + 'name' => $name . '[year]', + 'value' => $this->year, + 'type' => 'number', + ]); + } + + + /** + * @return bool + */ + public static function validateDate(Nette\Forms\IControl $control) + { + return ctype_digit($control->day) + && ctype_digit($control->month) + && ctype_digit($control->year) + && checkdate((int) $control->month, (int) $control->day, (int) $control->year); + } +} + + +Tracy\Debugger::enable(); + +$form = new Form; + +$form['date'] = new DateInput('Date:'); +$form['date']->setDefaultValue(new DateTime); + +$form->addSubmit('submit', 'Send'); + + +if ($form->isSuccess()) { + echo '

Form was submitted and successfully validated

'; + Tracy\Dumper::dump($form->getValues()); + exit; +} + + +?> + + +Nette Forms custom control example + + + +

Nette Forms custom control example

+ + + + diff --git a/vendor/nette/forms/examples/custom-rendering.php b/vendor/nette/forms/examples/custom-rendering.php new file mode 100644 index 0000000..b980224 --- /dev/null +++ b/vendor/nette/forms/examples/custom-rendering.php @@ -0,0 +1,125 @@ +getRenderer(); +$renderer->wrappers['form']['container'] = Html::el('div')->id('form'); +$renderer->wrappers['group']['container'] = null; +$renderer->wrappers['group']['label'] = 'h3'; +$renderer->wrappers['pair']['container'] = null; +$renderer->wrappers['controls']['container'] = 'dl'; +$renderer->wrappers['control']['container'] = 'dd'; +$renderer->wrappers['control']['.odd'] = 'odd'; +$renderer->wrappers['label']['container'] = 'dt'; +$renderer->wrappers['label']['suffix'] = ':'; +$renderer->wrappers['control']['requiredsuffix'] = " \xE2\x80\xA2"; + + +$form->addGroup('Personal data'); +$form->addText('name', 'Your name') + ->setRequired('Enter your name'); + +$form->addRadioList('gender', 'Your gender', [ + 'm' => Html::el('span', 'male')->style('color: #248bd3'), + 'f' => Html::el('span', 'female')->style('color: #e948d4'), +]); + +$form->addSelect('country', 'Country', [ + 'Buranda', 'Qumran', 'Saint Georges Island', +]); + +$form->addCheckbox('send', 'Ship to address'); + +$form->addGroup('Your account'); +$form->addPassword('password', 'Choose password'); +$form->addUpload('avatar', 'Picture'); +$form->addTextArea('note', 'Comment'); + +$form->addGroup(); +$form->addSubmit('submit', 'Send'); + + +if ($form->isSuccess()) { + echo '

Form was submitted and successfully validated

'; + Dumper::dump($form->getValues()); + exit; +} + + +?> + + +Nette Forms custom rendering example + + + + + +

Nette Forms custom rendering example

+ + + + diff --git a/vendor/nette/forms/examples/custom-validator.php b/vendor/nette/forms/examples/custom-validator.php new file mode 100644 index 0000000..94f057a --- /dev/null +++ b/vendor/nette/forms/examples/custom-validator.php @@ -0,0 +1,62 @@ +value % $arg === 0; + } +} + + +$form = new Form; + +$form->addText('num1', 'Multiple of 8:') + ->setDefaultValue(5) + ->addRule('MyValidators::divisibilityValidator', 'First number must be %d multiple', 8); + +$form->addSubmit('submit', 'Send'); + + +if ($form->isSuccess()) { + echo '

Form was submitted and successfully validated

'; + Dumper::dump($form->getValues()); + exit; +} + + +?> + + +Nette Forms custom validator example + + + + + +

Nette Forms custom validator example

+ + + + diff --git a/vendor/nette/forms/examples/html5.php b/vendor/nette/forms/examples/html5.php new file mode 100644 index 0000000..1024e28 --- /dev/null +++ b/vendor/nette/forms/examples/html5.php @@ -0,0 +1,64 @@ +addGroup(); + +$form->addText('query', 'Search:') + ->setHtmlType('search') + ->setHtmlAttribute('autofocus'); + +$form->addText('count', 'Number of results:') + ->setHtmlType('number') + ->setDefaultValue(10) + ->addRule($form::INTEGER, 'Must be numeric value') + ->addRule($form::RANGE, 'Must be in range from %d to %d', [1, 100]); + +$form->addText('precision', 'Precision:') + ->setHtmlType('range') + ->setDefaultValue(50) + ->addRule($form::INTEGER, 'Precision must be numeric value') + ->addRule($form::RANGE, 'Precision must be in range from %d to %d', [0, 100]); + +$form->addEmail('email', 'Send to email:') + ->setHtmlAttribute('autocomplete', 'off') + ->setHtmlAttribute('placeholder', 'Optional, but Recommended'); + +$form->addSubmit('submit', 'Send'); + + +if ($form->isSuccess()) { + echo '

Form was submitted and successfully validated

'; + Dumper::dump($form->getValues()); + exit; +} + + +?> + + +Nette Forms and HTML5 + + + +

Nette Forms and HTML5

+ + + + diff --git a/vendor/nette/forms/examples/live-validation.php b/vendor/nette/forms/examples/live-validation.php new file mode 100644 index 0000000..d664373 --- /dev/null +++ b/vendor/nette/forms/examples/live-validation.php @@ -0,0 +1,104 @@ +addText('name', 'Your name:') + ->setRequired('Enter your name'); + +$form->addText('age', 'Your age:') + ->setRequired('Enter your age') + ->addRule($form::INTEGER, 'Age must be numeric value') + ->addRule($form::RANGE, 'Age must be in range from %d to %d', [10, 100]); + +$form->addPassword('password', 'Choose password:') + ->setRequired('Choose your password') + ->addRule($form::MIN_LENGTH, 'The password is too short: it must be at least %d characters', 3); + +$form->addPassword('password2', 'Reenter password:') + ->setRequired('Reenter your password') + ->addRule($form::EQUAL, 'Passwords do not match', $form['password']); + +$form->addSubmit('submit', 'Send'); + + +if ($form->isSuccess()) { + echo '

Form was submitted and successfully validated

'; + Dumper::dump($form->getValues()); + exit; +} + +$renderer = $form->getRenderer(); +$renderer->wrappers['pair']['.error'] = 'has-error'; + +?> + + +Nette Forms live validation example + + + + + + +

Nette Forms live validation example

+ + + + diff --git a/vendor/nette/forms/examples/localization.ini b/vendor/nette/forms/examples/localization.ini new file mode 100644 index 0000000..f03ef27 --- /dev/null +++ b/vendor/nette/forms/examples/localization.ini @@ -0,0 +1,12 @@ +Personal data = Osobní údaje +Your name: = Jméno: +Enter your name = Zadejte jméno +Your age: = Věk: +Enter your age = Zadejte váš věk +Age must be numeric value = Věk musí být číslo +Age must be in range from %d to %d = Věk musí být v rozmezí %d až %d +Country: = Země: +Select your country = Vyberte zemi +World = Svět +other = jiná +Send = Odeslat diff --git a/vendor/nette/forms/examples/localization.php b/vendor/nette/forms/examples/localization.php new file mode 100644 index 0000000..a10e928 --- /dev/null +++ b/vendor/nette/forms/examples/localization.php @@ -0,0 +1,87 @@ +table = $table; + } + + + /** + * Translates the given string. + */ + public function translate($message, $count = null) + { + return isset($this->table[$message]) ? $this->table[$message] : $message; + } +} + + +$form = new Form; + +$translator = new MyTranslator(parse_ini_file(__DIR__ . '/localization.ini')); +$form->setTranslator($translator); + +$form->addGroup('Personal data'); +$form->addText('name', 'Your name:') + ->setRequired('Enter your name'); + +$form->addText('age', 'Your age:') + ->setRequired('Enter your age') + ->addRule($form::INTEGER, 'Age must be numeric value') + ->addRule($form::RANGE, 'Age must be in range from %d to %d', [10, 100]); + +$countries = [ + 'World' => [ + 'bu' => 'Buranda', + 'qu' => 'Qumran', + 'st' => 'Saint Georges Island', + ], + '?' => 'other', +]; +$form->addSelect('country', 'Country:', $countries) + ->setPrompt('Select your country'); + +$form->addSubmit('submit', 'Send'); + + +if ($form->isSuccess()) { + echo '

Form was submitted and successfully validated

'; + Dumper::dump($form->getValues()); + exit; +} + + +?> + + +Nette Forms localization example + + + +

Nette Forms localization example

+ + + + diff --git a/vendor/nette/forms/examples/manual-rendering.php b/vendor/nette/forms/examples/manual-rendering.php new file mode 100644 index 0000000..8c91820 --- /dev/null +++ b/vendor/nette/forms/examples/manual-rendering.php @@ -0,0 +1,95 @@ +addText('name') + ->setRequired('Enter your name'); + +$form->addText('age') + ->setRequired('Enter your age'); + +$form->addRadioList('gender', null, [ + 'm' => 'male', + 'f' => 'female', +]); + +$form->addText('email') + ->setRequired(false) + ->addRule($form::EMAIL, 'Incorrect email address'); + +$form->addSubmit('submit'); + +if ($form->isSuccess()) { + echo '

Form was submitted and successfully validated

'; + Dumper::dump($form->getValues()); + exit; +} + + +?> + + + + + Nette Forms manual form rendering + + + + + +

Nette Forms manual form rendering

+ + render('begin') ?> + + errors): ?> +
    + errors as $error): ?> +
  • + +
+ + +
+ Personal data + + + + + + + + + + + + + + + + + +
getLabel('Your name:') ?>control->cols(35) ?> error ?>
getLabel('Your age:') ?>control->cols(5) ?> error ?>
getLabel('Your gender:') ?>control ?> error ?>
getLabel('Email:') ?>control->cols(35) ?> error ?>
+
+ +
+ getControl('Send') ?> +
+ + render('end'); ?> + + diff --git a/vendor/nette/forms/license.md b/vendor/nette/forms/license.md new file mode 100644 index 0000000..cf741bd --- /dev/null +++ b/vendor/nette/forms/license.md @@ -0,0 +1,60 @@ +Licenses +======== + +Good news! You may use Nette Framework under the terms of either +the New BSD License or the GNU General Public License (GPL) version 2 or 3. + +The BSD License is recommended for most projects. It is easy to understand and it +places almost no restrictions on what you can do with the framework. If the GPL +fits better to your project, you can use the framework under this license. + +You don't have to notify anyone which license you are using. You can freely +use Nette Framework in commercial projects as long as the copyright header +remains intact. + +Please be advised that the name "Nette Framework" is a protected trademark and its +usage has some limitations. So please do not use word "Nette" in the name of your +project or top-level domain, and choose a name that stands on its own merits. +If your stuff is good, it will not take long to establish a reputation for yourselves. + + +New BSD License +--------------- + +Copyright (c) 2004, 2014 David Grudl (https://davidgrudl.com) +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of "Nette Framework" nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +This software is provided by the copyright holders and contributors "as is" and +any express or implied warranties, including, but not limited to, the implied +warranties of merchantability and fitness for a particular purpose are +disclaimed. In no event shall the copyright owner or contributors be liable for +any direct, indirect, incidental, special, exemplary, or consequential damages +(including, but not limited to, procurement of substitute goods or services; +loss of use, data, or profits; or business interruption) however caused and on +any theory of liability, whether in contract, strict liability, or tort +(including negligence or otherwise) arising in any way out of the use of this +software, even if advised of the possibility of such damage. + + +GNU General Public License +-------------------------- + +GPL licenses are very very long, so instead of including them here we offer +you URLs with full text: + +- [GPL version 2](http://www.gnu.org/licenses/gpl-2.0.html) +- [GPL version 3](http://www.gnu.org/licenses/gpl-3.0.html) diff --git a/vendor/nette/forms/package.json b/vendor/nette/forms/package.json new file mode 100644 index 0000000..6307002 --- /dev/null +++ b/vendor/nette/forms/package.json @@ -0,0 +1,21 @@ +{ + "name": "nette-forms", + "version": "2.4.9", + "description": "Client side script for Nette Forms Component", + "keywords": [ + "nette", + "validation", + "forms" + ], + "homepage": "https://nette.org", + "author": "David Grudl (https://davidgrudl.com)", + "license": "BSD-3-Clause", + "main": "src/assets/netteForms.js", + "files": [ + "src/assets" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/nette/forms.git" + } +} diff --git a/vendor/nette/forms/readme.md b/vendor/nette/forms/readme.md new file mode 100644 index 0000000..a488fe1 --- /dev/null +++ b/vendor/nette/forms/readme.md @@ -0,0 +1,69 @@ +Nette Forms: greatly facilitates web forms +========================================== + +[![Downloads this Month](https://img.shields.io/packagist/dm/nette/forms.svg)](https://packagist.org/packages/nette/forms) +[![Build Status](https://travis-ci.org/nette/forms.svg?branch=master)](https://travis-ci.org/nette/forms) +[![Coverage Status](https://coveralls.io/repos/github/nette/forms/badge.svg?branch=master)](https://coveralls.io/github/nette/forms?branch=master) +[![Latest Stable Version](https://poser.pugx.org/nette/forms/v/stable)](https://github.com/nette/forms/releases) +[![License](https://img.shields.io/badge/license-New%20BSD-blue.svg)](https://github.com/nette/forms/blob/master/license.md) + +Nette\Forms greatly facilitates creating and processing web forms. What it can really do? + +- validate sent data both client-side (JavaScript) and server-side +- provide high level of security +- multiple render modes +- translations, i18n + +Why should you bother setting up framework for a simple web form? You won't have to take care about routine tasks such as writing two validation scripts (client and server) and your code will be safe against security breaches. + +Nette Framework puts a great effort to be safe and since forms are the most common user input, Nette forms are as good as impenetrable. All is maintained dynamically and transparently, nothing has to be set manually. Well-known vulnerabilities such as Cross Site Scripting (XSS) and Cross-Site Request Forgery (CSRF) are filtered, as well as special control characters. All inputs are checked for UTF-8 validity. Every multiple-choice, select boxes and similar are checked for forged values upon validating. Sounds good? Let's try it out. + + +Documentation +------------- + +This is just a piece of documentation. [Please see our website](https://doc.nette.org/forms). + + +First form +---------- + +Let's create a simple registration form: + +```php +use Nette\Forms\Form; + +$form = new Form; + +$form->addText('name', 'Name:'); +$form->addPassword('password', 'Password:'); +$form->addSubmit('send', 'Register'); + +echo $form; // renders the form +``` + +Although we mentioned validation, our form has none. Let's fix it. In order to require user's name, call `setRequired()` method on the form item. You can pass an error message as optional argument and it will be displayed if user does not fill his name in: + + +```php +$form->addText('name', 'Name:') + ->setRequired('Please fill your name.'); +``` + +Try submitting a form without the name - the message is displayed unless you meet the validation rules. + +The form is validated on both the client and server side. You only need to link `netteForms.js`, which is located at `/src/assets` in the distribution package. + +```html + +``` + +Nette Framework adds `required` class to all mandatory elements. Adding the following style will turn label of *name* input to red. + +```html + +``` + +[Continue…](https://doc.nette.org/forms). diff --git a/vendor/nette/forms/src/Bridges/FormsDI/FormsExtension.php b/vendor/nette/forms/src/Bridges/FormsDI/FormsExtension.php new file mode 100644 index 0000000..545464c --- /dev/null +++ b/vendor/nette/forms/src/Bridges/FormsDI/FormsExtension.php @@ -0,0 +1,38 @@ + [], + ]; + + + public function afterCompile(Nette\PhpGenerator\ClassType $class) + { + $initialize = $class->getMethod('initialize'); + $config = $this->validateConfig($this->defaults); + + foreach ((array) $config['messages'] as $name => $text) { + if (defined('Nette\Forms\Form::' . $name)) { + $initialize->addBody('Nette\Forms\Validator::$messages[Nette\Forms\Form::?] = ?;', [$name, $text]); + } elseif (defined($name)) { + $initialize->addBody('Nette\Forms\Validator::$messages[' . $name . '] = ?;', [$text]); + } else { + throw new Nette\InvalidArgumentException('Constant Nette\Forms\Form::' . $name . ' or constant ' . $name . ' does not exist.'); + } + } + } +} diff --git a/vendor/nette/forms/src/Bridges/FormsLatte/FormMacros.php b/vendor/nette/forms/src/Bridges/FormsLatte/FormMacros.php new file mode 100644 index 0000000..91f8d7f --- /dev/null +++ b/vendor/nette/forms/src/Bridges/FormsLatte/FormMacros.php @@ -0,0 +1,257 @@ +addMacro('form', [$me, 'macroForm'], 'echo Nette\Bridges\FormsLatte\Runtime::renderFormEnd(array_pop($this->global->formsStack));'); + $me->addMacro('formContainer', [$me, 'macroFormContainer'], 'array_pop($this->global->formsStack); $formContainer = $_form = end($this->global->formsStack)'); + $me->addMacro('label', [$me, 'macroLabel'], [$me, 'macroLabelEnd'], null, self::AUTO_EMPTY); + $me->addMacro('input', [$me, 'macroInput']); + $me->addMacro('name', [$me, 'macroName'], [$me, 'macroNameEnd'], [$me, 'macroNameAttr']); + $me->addMacro('inputError', [$me, 'macroInputError']); + } + + + /********************* macros ****************d*g**/ + + + /** + * {form ...} + */ + public function macroForm(MacroNode $node, PhpWriter $writer) + { + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + if ($node->prefix) { + throw new CompileException('Did you mean
?'); + } + $name = $node->tokenizer->fetchWord(); + if ($name === false) { + throw new CompileException('Missing form name in ' . $node->getNotation()); + } + $node->replaced = true; + $node->tokenizer->reset(); + return $writer->write( + "/* line $node->startLine */\n" + . 'echo Nette\Bridges\FormsLatte\Runtime::renderFormBegin($form = $_form = $this->global->formsStack[] = ' + . ($name[0] === '$' ? 'is_object(%node.word) ? %node.word : ' : '') + . '$this->global->uiControl[%node.word], %node.array);' + ); + } + + + /** + * {formContainer ...} + */ + public function macroFormContainer(MacroNode $node, PhpWriter $writer) + { + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + $name = $node->tokenizer->fetchWord(); + if ($name === false) { + throw new CompileException('Missing name in ' . $node->getNotation()); + } + $node->tokenizer->reset(); + return $writer->write( + '$this->global->formsStack[] = $formContainer = $_form = ' + . ($name[0] === '$' ? 'is_object(%node.word) ? %node.word : ' : '') + . 'end($this->global->formsStack)[%node.word];' + ); + } + + + /** + * {label ...} + */ + public function macroLabel(MacroNode $node, PhpWriter $writer) + { + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + $words = $node->tokenizer->fetchWords(); + if (!$words) { + throw new CompileException('Missing name in ' . $node->getNotation()); + } + $node->replaced = true; + $name = array_shift($words); + return $writer->write( + ($name[0] === '$' ? '$_input = is_object(%0.word) ? %0.word : end($this->global->formsStack)[%0.word]; if ($_label = $_input' : 'if ($_label = end($this->global->formsStack)[%0.word]') + . '->%1.raw) echo $_label' + . ($node->tokenizer->isNext() ? '->addAttributes(%node.array)' : ''), + $name, + $words ? ('getLabelPart(' . implode(', ', array_map([$writer, 'formatWord'], $words)) . ')') : 'getLabel()' + ); + } + + + /** + * {/label} + */ + public function macroLabelEnd(MacroNode $node, PhpWriter $writer) + { + if ($node->content != null) { + $node->openingCode = rtrim($node->openingCode, '?> ') . '->startTag() ?>'; + return $writer->write('if ($_label) echo $_label->endTag()'); + } + } + + + /** + * {input ...} + */ + public function macroInput(MacroNode $node, PhpWriter $writer) + { + if ($node->modifiers) { + throw new CompileException('Modifiers are not allowed in ' . $node->getNotation()); + } + $words = $node->tokenizer->fetchWords(); + if (!$words) { + throw new CompileException('Missing name in ' . $node->getNotation()); + } + $node->replaced = true; + $name = array_shift($words); + return $writer->write( + ($name[0] === '$' ? '$_input = is_object(%0.word) ? %0.word : end($this->global->formsStack)[%0.word]; echo $_input' : 'echo end($this->global->formsStack)[%0.word]') + . '->%1.raw' + . ($node->tokenizer->isNext() ? '->addAttributes(%node.array)' : '') + . " /* line $node->startLine */", + $name, + $words ? 'getControlPart(' . implode(', ', array_map([$writer, 'formatWord'], $words)) . ')' : 'getControl()' + ); + } + + + /** + * , , + + + + + + + <?= Helpers::escapeHtml($title . ': ' . $exception->getMessage() . $code) ?> + + getPrevious()): ?> + + + + + >document.documentElement.className+=' tracy-js' + + + + + + +> +(function() { + + + + +})(); +Tracy.Dumper.init(); +Tracy.BlueScreen.init(); + + + diff --git a/vendor/tracy/tracy/src/Tracy/Debugger/Debugger.php b/vendor/tracy/tracy/src/Tracy/Debugger/Debugger.php new file mode 100644 index 0000000..4b39889 --- /dev/null +++ b/vendor/tracy/tracy/src/Tracy/Debugger/Debugger.php @@ -0,0 +1,600 @@ +dispatchAssets()) { + exit; + } + } + + + /** + * Renders loading + + + +Server Error + + + +
+
+

Server Error

+ +

We're sorry! The server encountered an internal error and + was unable to complete your request. Please try again later.

+ +

error 500 |
Tracy is unable to log error.

+
+
+ + diff --git a/vendor/tracy/tracy/src/Tracy/Dumper/Dumper.php b/vendor/tracy/tracy/src/Tracy/Dumper/Dumper.php new file mode 100644 index 0000000..16d8f62 --- /dev/null +++ b/vendor/tracy/tracy/src/Tracy/Dumper/Dumper.php @@ -0,0 +1,667 @@ + '1;33', + 'null' => '1;33', + 'number' => '1;32', + 'string' => '1;36', + 'array' => '1;31', + 'key' => '1;37', + 'object' => '1;31', + 'visibility' => '1;30', + 'resource' => '1;37', + 'indent' => '1;30', + ]; + + /** @var array */ + public static $resources = [ + 'stream' => 'stream_get_meta_data', + 'stream-context' => 'stream_context_get_options', + 'curl' => 'curl_getinfo', + ]; + + /** @var array */ + public static $objectExporters = [ + 'Closure' => [self::class, 'exportClosure'], + 'SplFileInfo' => [self::class, 'exportSplFileInfo'], + 'SplObjectStorage' => [self::class, 'exportSplObjectStorage'], + '__PHP_Incomplete_Class' => [self::class, 'exportPhpIncompleteClass'], + ]; + + /** @var int|null */ + private $maxDepth = 4; + + /** @var int|null */ + private $maxLength = 150; + + /** @var int|bool */ + private $collapseTop = 14; + + /** @var int */ + private $collapseSub = 7; + + /** @var int */ + private $location = 0; + + /** @var bool|null lazy-loading via JavaScript? true=full, false=none, null=collapsed parts */ + private $lazy; + + /** @var array|null */ + private $snapshot; + + /** @var bool */ + private $debugInfo = false; + + /** @var array */ + private $keysToHide = []; + + /** @var callable[] */ + private $resourceDumpers; + + /** @var callable[] */ + private $objectDumpers; + + + /** + * Dumps variable to the output. + * @return mixed variable + */ + public static function dump($var, array $options = []) + { + if (PHP_SAPI !== 'cli' && !preg_match('#^Content-Type: (?!text/html)#im', implode("\n", headers_list()))) { + echo self::toHtml($var, $options); + } elseif (self::detectColors()) { + echo self::toTerminal($var, $options); + } else { + echo self::toText($var, $options); + } + return $var; + } + + + /** + * Dumps variable to HTML. + */ + public static function toHtml($var, array $options = []): string + { + return (new static($options))->asHtml($var); + } + + + /** + * Dumps variable to plain text. + */ + public static function toText($var, array $options = []): string + { + return (new static($options))->asTerminal($var); + } + + + /** + * Dumps variable to x-terminal. + */ + public static function toTerminal($var, array $options = []): string + { + return (new static($options))->asTerminal($var, self::$terminalColors); + } + + + private function __construct(array $options = []) + { + $this->maxDepth = $options[self::DEPTH] ?? $this->maxDepth; + $this->maxLength = $options[self::TRUNCATE] ?? $this->maxLength; + $this->collapseTop = $options[self::COLLAPSE] ?? $this->collapseTop; + $this->collapseSub = $options[self::COLLAPSE_COUNT] ?? $this->collapseSub; + $this->location = $options[self::LOCATION] ?? $this->location; + $this->location = $this->location === true ? ~0 : (int) $this->location; + $this->snapshot = &$options[self::SNAPSHOT]; + if ($options[self::LIVE] ?? false) { + $this->snapshot = &self::$liveSnapshot; + } + $this->lazy = is_array($this->snapshot) ? true : ($options[self::LAZY] ?? $this->lazy); + $this->debugInfo = $options[self::DEBUGINFO] ?? $this->debugInfo; + $this->keysToHide = array_flip(array_map('strtolower', $options[self::KEYS_TO_HIDE] ?? [])); + $this->resourceDumpers = ($options['resourceExporters'] ?? []) + self::$resources; + $this->objectDumpers = ($options[self::OBJECT_EXPORTERS] ?? []) + self::$objectExporters; + uksort($this->objectDumpers, function ($a, $b): int { + return $b === '' || (class_exists($a, false) && is_subclass_of($a, $b)) ? -1 : 1; + }); + } + + + /** + * Dumps variable to HTML. + */ + private function asHtml($var): string + { + [$file, $line, $code] = $this->location ? $this->findLocation() : null; + $locAttrs = $file && $this->location & self::LOCATION_SOURCE ? Helpers::formatHtml( + ' title="%in file % on line %" data-tracy-href="%"', "$code\n", $file, $line, Helpers::editorUri($file, $line) + ) : null; + + if (is_array($this->snapshot)) { + $options[self::SNAPSHOT] = &$this->snapshot; + } + $snapshot = &$options[self::SNAPSHOT]; // reference must exist + + $html = $json = null; + if ($this->lazy && (is_array($var) || is_object($var) || is_resource($var)) && $var) { + $json = $this->toJson($var, $options); + $snapshot = (array) $snapshot; + } else { + $html = $this->dumpVar($var, $options + [self::LAZY => $this->lazy]); + } + + return '
snapshot) ? ' data-tracy-snapshot=' . $this->formatSnapshotAttribute($snapshot) : '')
+			. ($json ? " data-tracy-dump='" . json_encode($json, JSON_HEX_APOS | JSON_HEX_AMP) . "'>" : '>')
+			. $html
+			. ($file && $this->location & self::LOCATION_LINK ? 'in ' . Helpers::editorLink($file, $line) . '' : '')
+			. "
\n"; + } + + + /** + * Dumps variable to x-terminal. + */ + private function asTerminal($var, array $colors = []): string + { + $s = $this->dumpVar($var, [self::LAZY => false]); + if ($colors) { + $s = preg_replace_callback('#|#', function ($m) use ($colors): string { + return "\033[" . (isset($m[1], $colors[$m[1]]) ? $colors[$m[1]] : '0') . 'm'; + }, $s); + } + $s = htmlspecialchars_decode(strip_tags($s), ENT_QUOTES); + if ($this->location & self::LOCATION_LINK && ([$file, $line] = $this->findLocation())) { + $s .= "in $file:$line"; + } + return $s; + } + + + /** + * Internal toHtml() dump implementation. + * @param mixed $var + */ + private function dumpVar(&$var, array $options, int $level = 0): string + { + if (method_exists(__CLASS__, $m = 'dump' . gettype($var))) { + return $this->$m($var, $options, $level); + } else { + return "unknown type\n"; + } + } + + + private function dumpNull(): string + { + return "null\n"; + } + + + private function dumpBoolean(&$var): string + { + return '' . ($var ? 'true' : 'false') . "\n"; + } + + + private function dumpInteger(&$var): string + { + return "$var\n"; + } + + + private function dumpDouble(&$var): string + { + $var = is_finite($var) + ? ($tmp = json_encode($var)) . (strpos($tmp, '.') === false ? '.0' : '') + : var_export($var, true); + return "$var\n"; + } + + + private function dumpString(&$var): string + { + return '"' + . Helpers::escapeHtml($this->encodeString($var, $this->maxLength)) + . '"' . (strlen($var) > 1 ? ' (' . strlen($var) . ')' : '') . "\n"; + } + + + private function dumpArray(&$var, array $options, int $level): string + { + $out = 'array ('; + + if (empty($var)) { + return $out . ")\n"; + + } elseif (in_array($var, $options['parents'] ?? [], true)) { + return $out . (count($var) - 1) . ") [ RECURSION ]\n"; + + } elseif (!$this->maxDepth || $level < $this->maxDepth) { + $collapsed = $level + ? count($var) >= $this->collapseSub + : (is_int($this->collapseTop) ? count($var) >= $this->collapseTop : $this->collapseTop); + + $span = '" + . $out . count($var) . ")\n"; + + } else { + $out = $span . '>' . $out . count($var) . ")\n" . ''; + $options['parents'][] = $var; + foreach ($var as $k => &$v) { + $hide = is_string($k) && isset($this->keysToHide[strtolower($k)]) ? self::HIDDEN_VALUE : null; + $out .= ' ' . str_repeat('| ', $level) . '' + . '' . Helpers::escapeHtml($this->encodeKey($k)) . ' => ' + . ($hide ? $this->dumpString($hide) : $this->dumpVar($v, $options, $level + 1)); + } + array_pop($options['parents']); + + return $out . '
'; + } + + } else { + return $out . count($var) . ") [ ... ]\n"; + } + } + + + private function dumpObject(&$var, array $options, int $level): string + { + $fields = $this->exportObject($var); + + $editorAttributes = ''; + if ($this->location & self::LOCATION_CLASS) { + $rc = $var instanceof \Closure ? new \ReflectionFunction($var) : new \ReflectionClass($var); + $editor = $rc->getFileName() ? Helpers::editorUri($rc->getFileName(), $rc->getStartLine()) : null; + if ($editor) { + $editorAttributes = Helpers::formatHtml( + ' title="Declared in file % on line %" data-tracy-href="%"', + $rc->getFileName(), + $rc->getStartLine(), + $editor + ); + } + } + $out = '' + . Helpers::escapeHtml(Helpers::getClass($var)) + . ' #' . substr(md5(spl_object_hash($var)), 0, 4) . ''; + + if (empty($fields)) { + return $out . "\n"; + + } elseif (in_array($var, $options['parents'] ?? [], true)) { + return $out . " { RECURSION }\n"; + + } elseif (!$this->maxDepth || $level < $this->maxDepth || $var instanceof \Closure) { + $collapsed = $level + ? count($fields) >= $this->collapseSub + : (is_int($this->collapseTop) ? count($fields) >= $this->collapseTop : $this->collapseTop); + + $span = '" . $out . "\n"; + + } else { + $out = $span . '>' . $out . "\n" . ''; + $options['parents'][] = $var; + foreach ($fields as $k => &$v) { + $vis = ''; + if (isset($k[0]) && $k[0] === "\x00") { + $vis = ' ' . ($k[1] === '*' ? 'protected' : 'private') . ''; + $k = substr($k, strrpos($k, "\x00") + 1); + } + $hide = is_string($k) && isset($this->keysToHide[strtolower($k)]) ? self::HIDDEN_VALUE : null; + $out .= ' ' . str_repeat('| ', $level) . '' + . '' . Helpers::escapeHtml($this->encodeKey($k)) . "$vis => " + . ($hide ? $this->dumpString($hide) : $this->dumpVar($v, $options, $level + 1)); + } + array_pop($options['parents']); + + return $out . ''; + } + + + } else { + return $out . " { ... }\n"; + } + } + + + private function dumpResource(&$var, array $options, int $level): string + { + $type = get_resource_type($var); + $out = '' . Helpers::escapeHtml($type) . ' resource ' + . '#' . (int) $var . ''; + if (isset($this->resourceDumpers[$type])) { + $out = "$out\n
"; + foreach (($this->resourceDumpers[$type])($var) as $k => $v) { + $out .= ' ' . str_repeat('| ', $level) . '' + . '' . Helpers::escapeHtml($k) . ' => ' . $this->dumpVar($v, $options, $level + 1); + } + return $out . '
'; + } + return "$out\n"; + } + + + /** + * @return mixed + */ + private function toJson(&$var, array $options = [], int $level = 0) + { + if (is_bool($var) || $var === null || is_int($var)) { + return $var; + + } elseif (is_float($var)) { + return is_finite($var) + ? (strpos($tmp = json_encode($var), '.') ? $var : ['number' => "$tmp.0"]) + : ['type' => (string) $var]; + + } elseif (is_string($var)) { + return $this->encodeString($var, $this->maxLength); + + } elseif (is_array($var)) { + if (($rec = in_array($var, $options['parents'] ?? [], true)) || $level >= $this->maxDepth) { + return ['stop' => [count($var), $rec]]; + } + $res = []; + $options['parents'][] = $var; + foreach ($var as $k => &$v) { + $hide = is_string($k) && isset($this->keysToHide[strtolower($k)]); + $res[] = [$this->encodeKey($k), $hide ? self::HIDDEN_VALUE : $this->toJson($v, $options, $level + 1)]; + } + array_pop($options['parents']); + return $res; + + } elseif (is_object($var)) { + $hash = spl_object_hash($var); + $obj = &$options[self::SNAPSHOT][$hash]; + if ($obj && $obj['level'] <= $level) { + return ['object' => $obj['id']]; + } + + $obj = $obj ?: [ + 'id' => count($options[self::SNAPSHOT]), + 'name' => Helpers::getClass($var), + 'hash' => substr(md5($hash), 0, 4), + 'level' => $level, + 'object' => $var, + ]; + if (empty($obj['editor']) && ($this->location & self::LOCATION_CLASS)) { + $rc = $var instanceof \Closure ? new \ReflectionFunction($var) : new \ReflectionClass($var); + if ($editor = $rc->getFileName() ? Helpers::editorUri($rc->getFileName(), $rc->getStartLine()) : null) { + $obj['editor'] = ['file' => $rc->getFileName(), 'line' => $rc->getStartLine(), 'url' => $editor]; + } + } + + if ($level < $this->maxDepth || !$this->maxDepth) { + $obj['level'] = $level; + $obj['items'] = []; + + foreach ($this->exportObject($var) as $k => $v) { + $vis = 0; + if (isset($k[0]) && $k[0] === "\x00") { + $vis = $k[1] === '*' ? 1 : 2; + $k = substr($k, strrpos($k, "\x00") + 1); + } + $hide = is_string($k) && isset($this->keysToHide[strtolower($k)]); + $obj['items'][] = [$this->encodeKey($k), $hide ? self::HIDDEN_VALUE : $this->toJson($v, $options, $level + 1), $vis]; + } + } + return ['object' => $obj['id']]; + + } elseif (is_resource($var)) { + $obj = &$options[self::SNAPSHOT][(string) $var]; + if (!$obj) { + $type = get_resource_type($var); + $obj = ['id' => count($options[self::SNAPSHOT]), 'name' => $type . ' resource', 'hash' => (int) $var]; + if (isset($this->resourceDumpers[$type])) { + foreach (($this->resourceDumpers[$type])($var) as $k => $v) { + $obj['items'][] = [$k, $this->toJson($v, $options, $level + 1)]; + } + } + } + return ['resource' => $obj['id']]; + + } else { + return ['type' => 'unknown type']; + } + } + + + public static function formatSnapshotAttribute(array &$snapshot): string + { + $res = []; + foreach ($snapshot as $obj) { + $id = $obj['id']; + unset($obj['level'], $obj['object'], $obj['id']); + $res[$id] = $obj; + } + $snapshot = []; + return "'" . json_encode($res, JSON_HEX_APOS | JSON_HEX_AMP) . "'"; + } + + + /** + * @internal + */ + public static function encodeString(string $s, int $maxLength = null): string + { + static $table; + if ($table === null) { + foreach (array_merge(range("\x00", "\x1F"), range("\x7F", "\xFF")) as $ch) { + $table[$ch] = '\x' . str_pad(dechex(ord($ch)), 2, '0', STR_PAD_LEFT); + } + $table['\\'] = '\\\\'; + $table["\r"] = '\r'; + $table["\n"] = '\n'; + $table["\t"] = '\t'; + } + + if ($maxLength && strlen($s) > $maxLength) { // shortens to $maxLength in UTF-8 or longer + if (function_exists('mb_substr')) { + $s = mb_substr($tmp = $s, 0, $maxLength, 'UTF-8'); + $shortened = $s !== $tmp; + } else { + $i = $len = 0; + $maxI = $maxLength * 4; // max UTF-8 length + do { + if (($s[$i] < "\x80" || $s[$i] >= "\xC0") && (++$len > $maxLength) || $i >= $maxI) { + $s = substr($s, 0, $i); + $shortened = true; + break; + } + } while (isset($s[++$i])); + } + } + + if (preg_match('#[^\x09\x0A\x0D\x20-\x7E\xA0-\x{10FFFF}]#u', $s) || preg_last_error()) { // is binary? + if ($maxLength && strlen($s) > $maxLength) { + $s = substr($s, 0, $maxLength); + $shortened = true; + } + $s = strtr($s, $table); + } + + return $s . (empty($shortened) ? '' : ' ... '); + } + + + /** + * @param int|string $k + * @return int|string + */ + private function encodeKey($key) + { + return is_int($key) || preg_match('#^[!\#$%&()*+,./0-9:;<=>?@A-Z[\]^_`a-z{|}~-]{1,50}\z#', $key) + ? $key + : '"' . $this->encodeString($key, $this->maxLength) . '"'; + } + + + /** + * @param object $obj + */ + private function exportObject($obj): array + { + foreach ($this->objectDumpers as $type => $dumper) { + if (!$type || $obj instanceof $type) { + return $dumper($obj); + } + } + + if ($this->debugInfo && method_exists($obj, '__debugInfo')) { + return $obj->__debugInfo(); + } + + return (array) $obj; + } + + + private static function exportClosure(\Closure $obj): array + { + $rc = new \ReflectionFunction($obj); + $res = []; + foreach ($rc->getParameters() as $param) { + $res[] = '$' . $param->getName(); + } + return [ + 'file' => $rc->getFileName(), + 'line' => $rc->getStartLine(), + 'variables' => $rc->getStaticVariables(), + 'parameters' => implode(', ', $res), + ]; + } + + + private static function exportSplFileInfo(\SplFileInfo $obj): array + { + return ['path' => $obj->getPathname()]; + } + + + private static function exportSplObjectStorage(\SplObjectStorage $obj): array + { + $res = []; + foreach (clone $obj as $item) { + $res[] = ['object' => $item, 'data' => $obj[$item]]; + } + return $res; + } + + + private static function exportPhpIncompleteClass(\__PHP_Incomplete_Class $obj): array + { + $info = ['className' => null, 'private' => [], 'protected' => [], 'public' => []]; + foreach ((array) $obj as $name => $value) { + if ($name === '__PHP_Incomplete_Class_Name') { + $info['className'] = $value; + } elseif (preg_match('#^\x0\*\x0(.+)\z#', $name, $m)) { + $info['protected'][$m[1]] = $value; + } elseif (preg_match('#^\x0(.+)\x0(.+)\z#', $name, $m)) { + $info['private'][$m[1] . '::$' . $m[2]] = $value; + } else { + $info['public'][$name] = $value; + } + } + return $info; + } + + + /** + * Finds the location where dump was called. Returns [file, line, code] + */ + private static function findLocation(): ?array + { + foreach (debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS) as $item) { + if (isset($item['class']) && $item['class'] === __CLASS__) { + $location = $item; + continue; + } elseif (isset($item['function'])) { + try { + $reflection = isset($item['class']) + ? new \ReflectionMethod($item['class'], $item['function']) + : new \ReflectionFunction($item['function']); + if ($reflection->isInternal() || preg_match('#\s@tracySkipLocation\s#', (string) $reflection->getDocComment())) { + $location = $item; + continue; + } + } catch (\ReflectionException $e) { + } + } + break; + } + + if (isset($location['file'], $location['line']) && is_file($location['file'])) { + $lines = file($location['file']); + $line = $lines[$location['line'] - 1]; + return [ + $location['file'], + $location['line'], + trim(preg_match('#\w*dump(er::\w+)?\(.*\)#i', $line, $m) ? $m[0] : $line), + ]; + } + return null; + } + + + private static function detectColors(): bool + { + return self::$terminalColors && + (getenv('ConEmuANSI') === 'ON' + || getenv('ANSICON') !== false + || getenv('term') === 'xterm-256color' + || (defined('STDOUT') && function_exists('posix_isatty') && posix_isatty(STDOUT))); + } +} diff --git a/vendor/tracy/tracy/src/Tracy/Dumper/assets/dumper.css b/vendor/tracy/tracy/src/Tracy/Dumper/assets/dumper.css new file mode 100644 index 0000000..2d2624f --- /dev/null +++ b/vendor/tracy/tracy/src/Tracy/Dumper/assets/dumper.css @@ -0,0 +1,70 @@ +/** + * This file is part of the Tracy (https://tracy.nette.org) + */ + +pre.tracy-dump { + text-align: left; + color: #444; + background: white; +} + +pre.tracy-dump div { + padding-left: 3ex; +} + +pre.tracy-dump div div { + border-left: 1px solid rgba(0, 0, 0, .1); + margin-left: .5ex; +} + +pre.tracy-dump a { + color: #125EAE; + text-decoration: none; +} + +pre.tracy-dump a:hover, +pre.tracy-dump a:focus { + background-color: #125EAE; + color: white; +} + +.tracy-dump-array, +.tracy-dump-object { + color: #C22; +} + +.tracy-dump-string { + color: #35D; +} + +.tracy-dump-number { + color: #090; +} + +.tracy-dump-null, +.tracy-dump-bool { + color: #850; +} + +.tracy-dump-visibility, +.tracy-dump-hash { + font-size: 85%; color: #999; +} + +.tracy-dump-indent { + display: none; +} + +span[data-tracy-href] { + border-bottom: 1px dotted rgba(0, 0, 0, .2); +} + +.tracy-dump-flash { + animation: tracy-dump-flash .2s ease; +} + +@keyframes tracy-dump-flash { + 0% { + background: #c0c0c033; + } +} diff --git a/vendor/tracy/tracy/src/Tracy/Dumper/assets/dumper.js b/vendor/tracy/tracy/src/Tracy/Dumper/assets/dumper.js new file mode 100644 index 0000000..846d542 --- /dev/null +++ b/vendor/tracy/tracy/src/Tracy/Dumper/assets/dumper.js @@ -0,0 +1,214 @@ +/** + * This file is part of the Tracy (https://tracy.nette.org) + */ + +'use strict'; + +(function() { + const + COLLAPSE_COUNT = 7, + COLLAPSE_COUNT_TOP = 14; + + class Dumper + { + static init(context) { + (context || document).querySelectorAll('[itemprop=tracy-snapshot], [data-tracy-snapshot]').forEach((el) => { + let preList, snapshot = JSON.parse(el.getAttribute('data-tracy-snapshot')); + + if (el.tagName === 'META') { // + snapshot = JSON.parse(el.getAttribute('content')); + preList = el.parentElement.querySelectorAll('[data-tracy-dump]'); + } else if (el.matches('[data-tracy-dump]')) { //
+					preList = [el];
+					el.removeAttribute('data-tracy-snapshot');
+				} else { // 
+					el.querySelectorAll('[data-tracy-dump]').forEach((el) => {
+						el.parentNode.removeChild(el.nextSibling); // remove \n after toggler
+						el.parentNode.replaceChild( // replace toggler
+							build(JSON.parse(el.getAttribute('data-tracy-dump')), snapshot, el.classList.contains('tracy-collapsed')),
+							el
+						);
+					});
+					return;
+				}
+
+				preList.forEach((el) => { // 
+					let built = build(JSON.parse(el.getAttribute('data-tracy-dump')), snapshot, el.classList.contains('tracy-collapsed'));
+					el.insertBefore(built, el.lastChild);
+					el.classList.remove('tracy-collapsed');
+					el.removeAttribute('data-tracy-dump');
+				});
+			});
+
+			if (Dumper.inited) {
+				return;
+			}
+			Dumper.inited = true;
+
+			// enables  & ctrl key
+			document.documentElement.addEventListener('click', (e) => {
+				let el;
+				if (e.ctrlKey && (el = e.target.closest('[data-tracy-href]'))) {
+					location.href = el.getAttribute('data-tracy-href');
+					return false;
+				}
+			});
+
+			document.documentElement.addEventListener('tracy-toggle', (e) => {
+				if (e.target.matches('.tracy-dump *')) {
+					e.detail.relatedTarget.classList.toggle('tracy-dump-flash', !e.detail.collapsed);
+				}
+			});
+
+			document.documentElement.addEventListener('animationend', (e) => {
+				if (e.animationName === 'tracy-dump-flash') {
+					e.target.classList.toggle('tracy-dump-flash', false);
+				}
+			});
+
+			Tracy.Toggle.init();
+		}
+	}
+
+
+	function build(data, repository, collapsed, parentIds) {
+		let type = data === null ? 'null' : typeof data,
+			collapseCount = collapsed === null ? COLLAPSE_COUNT : COLLAPSE_COUNT_TOP;
+
+		if (type === 'null' || type === 'string' || type === 'number' || type === 'boolean') {
+			data = type === 'string' ? '"' + data + '"' : (data + '');
+			return createEl(null, null, [
+				createEl(
+					'span',
+					{'class': 'tracy-dump-' + type.replace('ean', '')},
+					[data + '\n']
+				)
+			]);
+
+		} else if (Array.isArray(data)) {
+			return buildStruct(
+				[
+					createEl('span', {'class': 'tracy-dump-array'}, ['array']),
+					' (' + (data[0] && data.length || '') + ')'
+				],
+				' [ ... ]',
+				data[0] === null ? null : data,
+				collapsed === true || data.length >= collapseCount,
+				repository,
+				parentIds
+			);
+
+		} else if (data.stop) {
+			return createEl(null, null, [
+				createEl('span', {'class': 'tracy-dump-array'}, ['array']),
+				' (' + data.stop[0] + ')',
+				data.stop[1] ? ' [ RECURSION ]\n' : ' [ ... ]\n',
+			]);
+
+		} else if (data.number) {
+			return createEl(null, null, [
+				createEl('span', {'class': 'tracy-dump-number'}, [data.number + '\n'])
+			]);
+
+		} else if (data.type) {
+			return createEl(null, null, [
+				createEl('span', null, [data.type + '\n'])
+			]);
+
+		} else {
+			let id = data.object || data.resource,
+				object = repository[id];
+
+			if (!object) {
+				throw new UnknownEntityException;
+			}
+			parentIds = parentIds || [];
+			let recursive = parentIds.indexOf(id) > -1;
+			parentIds.push(id);
+
+			return buildStruct(
+				[
+					createEl('span', {
+						'class': data.object ? 'tracy-dump-object' : 'tracy-dump-resource',
+						title: object.editor ? 'Declared in file ' + object.editor.file + ' on line ' + object.editor.line : null,
+						'data-tracy-href': object.editor ? object.editor.url : null
+					}, [object.name]),
+					' ',
+					createEl('span', {'class': 'tracy-dump-hash'}, ['#' + object.hash])
+				],
+				recursive ? ' { RECURSION }' : ' { ... }',
+				recursive ? null : object.items,
+				collapsed === true || (object.items && object.items.length >= collapseCount),
+				repository,
+				parentIds
+			);
+		}
+	}
+
+
+	function buildStruct(span, ellipsis, items, collapsed, repository, parentIds) {
+		let res, toggle, div, handler;
+
+		if (!items || !items.length) {
+			span.push(!items || items.length ? ellipsis + '\n' : '\n');
+			return createEl(null, null, span);
+		}
+
+		res = createEl(null, null, [
+			toggle = createEl('span', {'class': collapsed ? 'tracy-toggle tracy-collapsed' : 'tracy-toggle'}, span),
+			'\n',
+			div = createEl('div', {'class': collapsed ? 'tracy-collapsed' : null})
+		]);
+
+		if (collapsed) {
+			toggle.addEventListener('tracy-toggle', handler = function() {
+				toggle.removeEventListener('tracy-toggle', handler);
+				createItems(div, items, repository, parentIds);
+			});
+		} else {
+			createItems(div, items, repository, parentIds);
+		}
+		return res;
+	}
+
+
+	function createEl(el, attrs, content) {
+		if (!(el instanceof Node)) {
+			el = el ? document.createElement(el) : document.createDocumentFragment();
+		}
+		for (let id in attrs || {}) {
+			if (attrs[id] !== null) {
+				el.setAttribute(id, attrs[id]);
+			}
+		}
+		content = content || [];
+		for (let id = 0; id < content.length; id++) {
+			let child = content[id];
+			if (child !== null) {
+				el.appendChild(child instanceof Node ? child : document.createTextNode(child));
+			}
+		}
+		return el;
+	}
+
+
+	function createItems(el, items, repository, parentIds) {
+		for (let i = 0; i < items.length; i++) {
+			let vis = items[i][2];
+			createEl(el, null, [
+				createEl('span', {'class': 'tracy-dump-key'}, [items[i][0]]),
+				vis ? ' ' : null,
+				vis ? createEl('span', {'class': 'tracy-dump-visibility'}, [vis === 1 ? 'protected' : 'private']) : null,
+				' => ',
+				build(items[i][1], repository, null, parentIds)
+			]);
+		}
+	}
+
+
+	function UnknownEntityException() {}
+
+
+	let Tracy = window.Tracy = window.Tracy || {};
+	Tracy.Dumper = Dumper;
+})();
diff --git a/vendor/tracy/tracy/src/Tracy/Helpers.php b/vendor/tracy/tracy/src/Tracy/Helpers.php
new file mode 100644
index 0000000..4113e02
--- /dev/null
+++ b/vendor/tracy/tracy/src/Tracy/Helpers.php
@@ -0,0 +1,305 @@
+ strlen($m[0])) {
+				$file = '...' . $m[0];
+			}
+			$file = strtr($file, '/', DIRECTORY_SEPARATOR);
+			return self::formatHtml('%%%',
+				$editor,
+				$origFile . ($line ? ":$line" : ''),
+				rtrim(dirname($file), DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR,
+				basename($file),
+				$line ? ":$line" : ''
+			);
+		} else {
+			return self::formatHtml('%', $file . ($line ? ":$line" : ''));
+		}
+	}
+
+
+	/**
+	 * Returns link to editor.
+	 */
+	public static function editorUri(string $file, int $line = null, string $action = 'open', string $search = '', string $replace = ''): ?string
+	{
+		if (Debugger::$editor && $file && ($action === 'create' || is_file($file))) {
+			$file = strtr($file, '/', DIRECTORY_SEPARATOR);
+			$file = strtr($file, Debugger::$editorMapping);
+			return strtr(Debugger::$editor, [
+				'%action' => $action,
+				'%file' => rawurlencode($file),
+				'%line' => $line ?: 1,
+				'%search' => rawurlencode($search),
+				'%replace' => rawurlencode($replace),
+			]);
+		}
+		return null;
+	}
+
+
+	public static function formatHtml(string $mask): string
+	{
+		$args = func_get_args();
+		return preg_replace_callback('#%#', function () use (&$args, &$count): string {
+			return self::escapeHtml($args[++$count]);
+		}, $mask);
+	}
+
+
+	public static function escapeHtml($s): string
+	{
+		return htmlspecialchars((string) $s, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
+	}
+
+
+	public static function findTrace(array $trace, $method, int &$index = null): ?array
+	{
+		$m = is_array($method) ? $method : explode('::', $method);
+		foreach ($trace as $i => $item) {
+			if (
+				isset($item['function'])
+				&& $item['function'] === end($m)
+				&& isset($item['class']) === isset($m[1])
+				&& (!isset($item['class']) || $m[0] === '*' || is_a($item['class'], $m[0], true))
+			) {
+				$index = $i;
+				return $item;
+			}
+		}
+		return null;
+	}
+
+
+	public static function getClass($obj): string
+	{
+		return explode("\x00", get_class($obj))[0];
+	}
+
+
+	/** @internal */
+	public static function fixStack(\Throwable $exception): \Throwable
+	{
+		if (function_exists('xdebug_get_function_stack')) {
+			$stack = [];
+			foreach (array_slice(array_reverse(xdebug_get_function_stack()), 2, -1) as $row) {
+				$frame = [
+					'file' => $row['file'],
+					'line' => $row['line'],
+					'function' => $row['function'] ?? '*unknown*',
+					'args' => [],
+				];
+				if (!empty($row['class'])) {
+					$frame['type'] = isset($row['type']) && $row['type'] === 'dynamic' ? '->' : '::';
+					$frame['class'] = $row['class'];
+				}
+				$stack[] = $frame;
+			}
+			$ref = new \ReflectionProperty('Exception', 'trace');
+			$ref->setAccessible(true);
+			$ref->setValue($exception, $stack);
+		}
+		return $exception;
+	}
+
+
+	/** @internal */
+	public static function fixEncoding(string $s): string
+	{
+		return htmlspecialchars_decode(htmlspecialchars($s, ENT_NOQUOTES | ENT_IGNORE, 'UTF-8'), ENT_NOQUOTES);
+	}
+
+
+	/** @internal */
+	public static function errorTypeToString(int $type): string
+	{
+		$types = [
+			E_ERROR => 'Fatal Error',
+			E_USER_ERROR => 'User Error',
+			E_RECOVERABLE_ERROR => 'Recoverable Error',
+			E_CORE_ERROR => 'Core Error',
+			E_COMPILE_ERROR => 'Compile Error',
+			E_PARSE => 'Parse Error',
+			E_WARNING => 'Warning',
+			E_CORE_WARNING => 'Core Warning',
+			E_COMPILE_WARNING => 'Compile Warning',
+			E_USER_WARNING => 'User Warning',
+			E_NOTICE => 'Notice',
+			E_USER_NOTICE => 'User Notice',
+			E_STRICT => 'Strict standards',
+			E_DEPRECATED => 'Deprecated',
+			E_USER_DEPRECATED => 'User Deprecated',
+		];
+		return $types[$type] ?? 'Unknown error';
+	}
+
+
+	/** @internal */
+	public static function getSource(): string
+	{
+		if (isset($_SERVER['REQUEST_URI'])) {
+			return (!empty($_SERVER['HTTPS']) && strcasecmp($_SERVER['HTTPS'], 'off') ? 'https://' : 'http://')
+				. ($_SERVER['HTTP_HOST'] ?? '')
+				. $_SERVER['REQUEST_URI'];
+		} else {
+			return 'CLI (PID: ' . getmypid() . ')'
+				. (empty($_SERVER['argv']) ? '' : ': ' . implode(' ', $_SERVER['argv']));
+		}
+	}
+
+
+	/** @internal */
+	public static function improveException(\Throwable $e): void
+	{
+		$message = $e->getMessage();
+		if (!$e instanceof \Error && !$e instanceof \ErrorException) {
+			// do nothing
+		} elseif (preg_match('#^Call to undefined function (\S+\\\\)?(\w+)\(#', $message, $m)) {
+			$funcs = array_merge(get_defined_functions()['internal'], get_defined_functions()['user']);
+			$hint = self::getSuggestion($funcs, $m[1] . $m[2]) ?: self::getSuggestion($funcs, $m[2]);
+			$message = "Call to undefined function $m[2](), did you mean $hint()?";
+			$replace = ["$m[2](", "$hint("];
+
+		} elseif (preg_match('#^Call to undefined method ([\w\\\\]+)::(\w+)#', $message, $m)) {
+			$hint = self::getSuggestion(get_class_methods($m[1]), $m[2]);
+			$message .= ", did you mean $hint()?";
+			$replace = ["$m[2](", "$hint("];
+
+		} elseif (preg_match('#^Undefined variable: (\w+)#', $message, $m) && !empty($e->context)) {
+			$hint = self::getSuggestion(array_keys($e->context), $m[1]);
+			$message = "Undefined variable $$m[1], did you mean $$hint?";
+			$replace = ["$$m[1]", "$$hint"];
+
+		} elseif (preg_match('#^Undefined property: ([\w\\\\]+)::\$(\w+)#', $message, $m)) {
+			$rc = new \ReflectionClass($m[1]);
+			$items = array_diff($rc->getProperties(\ReflectionProperty::IS_PUBLIC), $rc->getProperties(\ReflectionProperty::IS_STATIC));
+			$hint = self::getSuggestion($items, $m[2]);
+			$message .= ", did you mean $$hint?";
+			$replace = ["->$m[2]", "->$hint"];
+
+		} elseif (preg_match('#^Access to undeclared static property: ([\w\\\\]+)::\$(\w+)#', $message, $m)) {
+			$rc = new \ReflectionClass($m[1]);
+			$items = array_intersect($rc->getProperties(\ReflectionProperty::IS_PUBLIC), $rc->getProperties(\ReflectionProperty::IS_STATIC));
+			$hint = self::getSuggestion($items, $m[2]);
+			$message .= ", did you mean $$hint?";
+			$replace = ["::$$m[2]", "::$$hint"];
+		}
+
+		if (isset($hint)) {
+			$ref = new \ReflectionProperty($e, 'message');
+			$ref->setAccessible(true);
+			$ref->setValue($e, $message);
+			$e->tracyAction = [
+				'link' => self::editorUri($e->getFile(), $e->getLine(), 'fix', $replace[0], $replace[1]),
+				'label' => 'fix it',
+			];
+		}
+	}
+
+
+	/** @internal */
+	public static function improveError(string $message, array $context = []): string
+	{
+		if (preg_match('#^Undefined variable: (\w+)#', $message, $m) && $context) {
+			$hint = self::getSuggestion(array_keys($context), $m[1]);
+			return $hint ? "Undefined variable $$m[1], did you mean $$hint?" : $message;
+
+		} elseif (preg_match('#^Undefined property: ([\w\\\\]+)::\$(\w+)#', $message, $m)) {
+			$rc = new \ReflectionClass($m[1]);
+			$items = array_diff($rc->getProperties(\ReflectionProperty::IS_PUBLIC), $rc->getProperties(\ReflectionProperty::IS_STATIC));
+			$hint = self::getSuggestion($items, $m[2]);
+			return $hint ? $message . ", did you mean $$hint?" : $message;
+		}
+		return $message;
+	}
+
+
+	/** @internal */
+	public static function guessClassFile(string $class): ?string
+	{
+		$segments = explode(DIRECTORY_SEPARATOR, $class);
+		$res = null;
+		$max = 0;
+		foreach (get_declared_classes() as $class) {
+			$parts = explode(DIRECTORY_SEPARATOR, $class);
+			foreach ($parts as $i => $part) {
+				if ($part !== $segments[$i] ?? null) {
+					break;
+				}
+			}
+			if ($i > $max && ($file = (new \ReflectionClass($class))->getFileName())) {
+				$max = $i;
+				$res = array_merge(array_slice(explode(DIRECTORY_SEPARATOR, $file), 0, $i - count($parts)), array_slice($segments, $i));
+				$res = implode(DIRECTORY_SEPARATOR, $res) . '.php';
+			}
+		}
+		return $res;
+	}
+
+
+	/**
+	 * Finds the best suggestion.
+	 * @internal
+	 */
+	public static function getSuggestion(array $items, string $value): ?string
+	{
+		$best = null;
+		$min = (strlen($value) / 4 + 1) * 10 + .1;
+		foreach (array_unique($items, SORT_REGULAR) as $item) {
+			$item = is_object($item) ? $item->getName() : $item;
+			if (($len = levenshtein($item, $value, 10, 11, 10)) > 0 && $len < $min) {
+				$min = $len;
+				$best = $item;
+			}
+		}
+		return $best;
+	}
+
+
+	/** @internal */
+	public static function isHtmlMode(): bool
+	{
+		return empty($_SERVER['HTTP_X_REQUESTED_WITH']) && empty($_SERVER['HTTP_X_TRACY_AJAX'])
+			&& PHP_SAPI !== 'cli'
+			&& !preg_match('#^Content-Type: (?!text/html)#im', implode("\n", headers_list()));
+	}
+
+
+	/** @internal */
+	public static function isAjax(): bool
+	{
+		return isset($_SERVER['HTTP_X_TRACY_AJAX']) && preg_match('#^\w{10,15}\z#', $_SERVER['HTTP_X_TRACY_AJAX']);
+	}
+
+
+	/** @internal */
+	public static function getNonce(): ?string
+	{
+		return preg_match('#^Content-Security-Policy(?:-Report-Only)?:.*\sscript-src\s+(?:[^;]+\s)?\'nonce-([\w+/]+=*)\'#mi', implode("\n", headers_list()), $m)
+			? $m[1]
+			: null;
+	}
+}
diff --git a/vendor/tracy/tracy/src/Tracy/Logger/FireLogger.php b/vendor/tracy/tracy/src/Tracy/Logger/FireLogger.php
new file mode 100644
index 0000000..b152cb5
--- /dev/null
+++ b/vendor/tracy/tracy/src/Tracy/Logger/FireLogger.php
@@ -0,0 +1,180 @@
+ []];
+
+
+	/**
+	 * Sends message to FireLogger console.
+	 * @param  mixed  $message
+	 */
+	public function log($message, $priority = self::DEBUG): bool
+	{
+		if (!isset($_SERVER['HTTP_X_FIRELOGGER']) || headers_sent()) {
+			return false;
+		}
+
+		$item = [
+			'name' => 'PHP',
+			'level' => $priority,
+			'order' => count($this->payload['logs']),
+			'time' => str_pad(number_format((microtime(true) - Debugger::$time) * 1000, 1, '.', ' '), 8, '0', STR_PAD_LEFT) . ' ms',
+			'template' => '',
+			'message' => '',
+			'style' => 'background:#767ab6',
+		];
+
+		$args = func_get_args();
+		if (isset($args[0]) && is_string($args[0])) {
+			$item['template'] = array_shift($args);
+		}
+
+		if (isset($args[0]) && $args[0] instanceof \Throwable) {
+			$e = array_shift($args);
+			$trace = $e->getTrace();
+			if (
+				isset($trace[0]['class'])
+				&& $trace[0]['class'] === Debugger::class
+				&& ($trace[0]['function'] === 'shutdownHandler' || $trace[0]['function'] === 'errorHandler')
+			) {
+				unset($trace[0]);
+			}
+
+			$file = str_replace(dirname(dirname(dirname($e->getFile()))), "\xE2\x80\xA6", $e->getFile());
+			$item['template'] = ($e instanceof \ErrorException ? '' : Helpers::getClass($e) . ': ')
+				. $e->getMessage() . ($e->getCode() ? ' #' . $e->getCode() : '') . ' in ' . $file . ':' . $e->getLine();
+			$item['pathname'] = $e->getFile();
+			$item['lineno'] = $e->getLine();
+
+		} else {
+			$trace = debug_backtrace();
+			if (
+				isset($trace[1]['class'])
+				&& $trace[1]['class'] === Debugger::class
+				&& ($trace[1]['function'] === 'fireLog')
+			) {
+				unset($trace[0]);
+			}
+
+			foreach ($trace as $frame) {
+				if (isset($frame['file']) && is_file($frame['file'])) {
+					$item['pathname'] = $frame['file'];
+					$item['lineno'] = $frame['line'];
+					break;
+				}
+			}
+		}
+
+		$item['exc_info'] = ['', '', []];
+		$item['exc_frames'] = [];
+
+		foreach ($trace as $frame) {
+			$frame += ['file' => null, 'line' => null, 'class' => null, 'type' => null, 'function' => null, 'object' => null, 'args' => null];
+			$item['exc_info'][2][] = [$frame['file'], $frame['line'], "$frame[class]$frame[type]$frame[function]", $frame['object']];
+			$item['exc_frames'][] = $frame['args'];
+		}
+
+		if (isset($args[0]) && in_array($args[0], [self::DEBUG, self::INFO, self::WARNING, self::ERROR, self::CRITICAL], true)) {
+			$item['level'] = array_shift($args);
+		}
+
+		$item['args'] = $args;
+
+		$this->payload['logs'][] = $this->jsonDump($item, -1);
+		foreach (str_split(base64_encode(json_encode($this->payload)), 4990) as $k => $v) {
+			header("FireLogger-de11e-$k:$v");
+		}
+		return true;
+	}
+
+
+	/**
+	 * Dump implementation for JSON.
+	 * @param  mixed  $var
+	 * @return array|null|int|float|bool|string
+	 */
+	private function jsonDump(&$var, int $level = 0)
+	{
+		if (is_bool($var) || $var === null || is_int($var) || is_float($var)) {
+			return $var;
+
+		} elseif (is_string($var)) {
+			return Dumper::encodeString($var, $this->maxLength);
+
+		} elseif (is_array($var)) {
+			static $marker;
+			if ($marker === null) {
+				$marker = uniqid("\x00", true);
+			}
+			if (isset($var[$marker])) {
+				return "\xE2\x80\xA6RECURSION\xE2\x80\xA6";
+
+			} elseif ($level < $this->maxDepth || !$this->maxDepth) {
+				$var[$marker] = true;
+				$res = [];
+				foreach ($var as $k => &$v) {
+					if ($k !== $marker) {
+						$res[$this->jsonDump($k)] = $this->jsonDump($v, $level + 1);
+					}
+				}
+				unset($var[$marker]);
+				return $res;
+
+			} else {
+				return " \xE2\x80\xA6 ";
+			}
+
+		} elseif (is_object($var)) {
+			$arr = (array) $var;
+			static $list = [];
+			if (in_array($var, $list, true)) {
+				return "\xE2\x80\xA6RECURSION\xE2\x80\xA6";
+
+			} elseif ($level < $this->maxDepth || !$this->maxDepth) {
+				$list[] = $var;
+				$res = ["\x00" => '(object) ' . Helpers::getClass($var)];
+				foreach ($arr as $k => &$v) {
+					if (isset($k[0]) && $k[0] === "\x00") {
+						$k = substr($k, strrpos($k, "\x00") + 1);
+					}
+					$res[$this->jsonDump($k)] = $this->jsonDump($v, $level + 1);
+				}
+				array_pop($list);
+				return $res;
+
+			} else {
+				return " \xE2\x80\xA6 ";
+			}
+
+		} elseif (is_resource($var)) {
+			return 'resource ' . get_resource_type($var);
+
+		} else {
+			return 'unknown type';
+		}
+	}
+}
diff --git a/vendor/tracy/tracy/src/Tracy/Logger/ILogger.php b/vendor/tracy/tracy/src/Tracy/Logger/ILogger.php
new file mode 100644
index 0000000..d260936
--- /dev/null
+++ b/vendor/tracy/tracy/src/Tracy/Logger/ILogger.php
@@ -0,0 +1,27 @@
+directory = $directory;
+		$this->email = $email;
+		$this->blueScreen = $blueScreen;
+		$this->mailer = [$this, 'defaultMailer'];
+	}
+
+
+	/**
+	 * Logs message or exception to file and sends email notification.
+	 * @param  mixed  $message
+	 * @param  string  $priority  one of constant ILogger::INFO, WARNING, ERROR (sends email), EXCEPTION (sends email), CRITICAL (sends email)
+	 * @return string|null logged error filename
+	 */
+	public function log($message, $priority = self::INFO)
+	{
+		if (!$this->directory) {
+			throw new \LogicException('Logging directory is not specified.');
+		} elseif (!is_dir($this->directory)) {
+			throw new \RuntimeException("Logging directory '$this->directory' is not found or is not directory.");
+		}
+
+		$exceptionFile = $message instanceof \Throwable
+			? $this->getExceptionFile($message)
+			: null;
+		$line = static::formatLogLine($message, $exceptionFile);
+		$file = $this->directory . '/' . strtolower($priority ?: self::INFO) . '.log';
+
+		if (!@file_put_contents($file, $line . PHP_EOL, FILE_APPEND | LOCK_EX)) { // @ is escalated to exception
+			throw new \RuntimeException("Unable to write to log file '$file'. Is directory writable?");
+		}
+
+		if ($exceptionFile) {
+			$this->logException($message, $exceptionFile);
+		}
+
+		if (in_array($priority, [self::ERROR, self::EXCEPTION, self::CRITICAL], true)) {
+			$this->sendEmail($message);
+		}
+
+		return $exceptionFile;
+	}
+
+
+	/**
+	 * @param  mixed  $message
+	 */
+	public static function formatMessage($message): string
+	{
+		if ($message instanceof \Throwable) {
+			while ($message) {
+				$tmp[] = ($message instanceof \ErrorException
+					? Helpers::errorTypeToString($message->getSeverity()) . ': ' . $message->getMessage()
+					: Helpers::getClass($message) . ': ' . $message->getMessage() . ($message->getCode() ? ' #' . $message->getCode() : '')
+				) . ' in ' . $message->getFile() . ':' . $message->getLine();
+				$message = $message->getPrevious();
+			}
+			$message = implode("\ncaused by ", $tmp);
+
+		} elseif (!is_string($message)) {
+			$message = Dumper::toText($message);
+		}
+
+		return trim($message);
+	}
+
+
+	/**
+	 * @param  mixed  $message
+	 */
+	public static function formatLogLine($message, string $exceptionFile = null): string
+	{
+		return implode(' ', [
+			@date('[Y-m-d H-i-s]'), // @ timezone may not be set
+			preg_replace('#\s*\r?\n\s*#', ' ', static::formatMessage($message)),
+			' @  ' . Helpers::getSource(),
+			$exceptionFile ? ' @@  ' . basename($exceptionFile) : null,
+		]);
+	}
+
+
+	public function getExceptionFile(\Throwable $exception): string
+	{
+		while ($exception) {
+			$data[] = [
+				get_class($exception), $exception->getMessage(), $exception->getCode(), $exception->getFile(), $exception->getLine(),
+				array_map(function (array $item): array { unset($item['args']); return $item; }, $exception->getTrace()),
+			];
+			$exception = $exception->getPrevious();
+		}
+		$hash = substr(md5(serialize($data)), 0, 10);
+		$dir = strtr($this->directory . '/', '\\/', DIRECTORY_SEPARATOR . DIRECTORY_SEPARATOR);
+		foreach (new \DirectoryIterator($this->directory) as $file) {
+			if (strpos($file->getBasename(), $hash)) {
+				return $dir . $file;
+			}
+		}
+		return $dir . 'exception--' . @date('Y-m-d--H-i') . "--$hash.html"; // @ timezone may not be set
+	}
+
+
+	/**
+	 * Logs exception to the file if file doesn't exist.
+	 * @return string logged error filename
+	 */
+	protected function logException(\Throwable $exception, string $file = null): string
+	{
+		$file = $file ?: $this->getExceptionFile($exception);
+		$bs = $this->blueScreen ?: new BlueScreen;
+		$bs->renderToFile($exception, $file);
+		return $file;
+	}
+
+
+	/**
+	 * @param  mixed  $message
+	 */
+	protected function sendEmail($message): void
+	{
+		$snooze = is_numeric($this->emailSnooze)
+			? $this->emailSnooze
+			: @strtotime($this->emailSnooze) - time(); // @ timezone may not be set
+
+		if (
+			$this->email
+			&& $this->mailer
+			&& @filemtime($this->directory . '/email-sent') + $snooze < time() // @ file may not exist
+			&& @file_put_contents($this->directory . '/email-sent', 'sent') // @ file may not be writable
+		) {
+			($this->mailer)($message, implode(', ', (array) $this->email));
+		}
+	}
+
+
+	/**
+	 * Default mailer.
+	 * @param  mixed  $message
+	 * @internal
+	 */
+	public function defaultMailer($message, string $email): void
+	{
+		$host = preg_replace('#[^\w.-]+#', '', $_SERVER['HTTP_HOST'] ?? php_uname('n'));
+		$parts = str_replace(
+			["\r\n", "\n"],
+			["\n", PHP_EOL],
+			[
+				'headers' => implode("\n", [
+					'From: ' . ($this->fromEmail ?: "noreply@$host"),
+					'X-Mailer: Tracy',
+					'Content-Type: text/plain; charset=UTF-8',
+					'Content-Transfer-Encoding: 8bit',
+				]) . "\n",
+				'subject' => "PHP: An error occurred on the server $host",
+				'body' => static::formatMessage($message) . "\n\nsource: " . Helpers::getSource(),
+			]
+		);
+
+		mail($email, $parts['subject'], $parts['body'], $parts['headers']);
+	}
+}
diff --git a/vendor/tracy/tracy/src/Tracy/OutputDebugger/OutputDebugger.php b/vendor/tracy/tracy/src/Tracy/OutputDebugger/OutputDebugger.php
new file mode 100644
index 0000000..85f152b
--- /dev/null
+++ b/vendor/tracy/tracy/src/Tracy/OutputDebugger/OutputDebugger.php
@@ -0,0 +1,80 @@
+start();
+	}
+
+
+	public function start(): void
+	{
+		foreach (get_included_files() as $file) {
+			if (fread(fopen($file, 'r'), 3) === self::BOM) {
+				$this->list[] = [$file, 1, self::BOM];
+			}
+		}
+		ob_start([$this, 'handler'], 1);
+	}
+
+
+	/** @internal */
+	public function handler(string $s, int $phase): ?string
+	{
+		$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
+		if (isset($trace[0]['file'], $trace[0]['line'])) {
+			$stack = $trace;
+			unset($stack[0]['line'], $stack[0]['args']);
+			$i = count($this->list);
+			if ($i && $this->list[$i - 1][3] === $stack) {
+				$this->list[$i - 1][2] .= $s;
+			} else {
+				$this->list[] = [$trace[0]['file'], $trace[0]['line'], $s, $stack];
+			}
+		}
+		return $phase === PHP_OUTPUT_HANDLER_FINAL
+			? $this->renderHtml()
+			: null;
+	}
+
+
+	private function renderHtml(): string
+	{
+		$res = '';
+		foreach ($this->list as $item) {
+			$stack = [];
+			foreach (array_slice($item[3], 1) as $t) {
+				$t += ['class' => '', 'type' => '', 'function' => ''];
+				$stack[] = "$t[class]$t[type]$t[function]()"
+					. (isset($t['file'], $t['line']) ? ' in ' . basename($t['file']) . ":$t[line]" : '');
+			}
+
+			$res .= ''
+				. Helpers::editorLink($item[0], $item[1]) . ' '
+				. str_replace(self::BOM, 'BOM', Dumper::toHtml($item[2]))
+				. "
\n"; + } + return $res . '
'; + } +} diff --git a/vendor/tracy/tracy/src/Tracy/TableSort/table-sort.css b/vendor/tracy/tracy/src/Tracy/TableSort/table-sort.css new file mode 100644 index 0000000..e24286c --- /dev/null +++ b/vendor/tracy/tracy/src/Tracy/TableSort/table-sort.css @@ -0,0 +1,15 @@ +/** + * This file is part of the Tracy (https://tracy.nette.org) + */ + +.tracy-sortable tr:first-child > * { + position: relative; +} + +.tracy-sortable tr:first-child > *:hover:before { + position: absolute; + right: .3em; + content: "\21C5"; + opacity: .4; + font-weight: normal; +} diff --git a/vendor/tracy/tracy/src/Tracy/TableSort/table-sort.js b/vendor/tracy/tracy/src/Tracy/TableSort/table-sort.js new file mode 100644 index 0000000..6e2ab1f --- /dev/null +++ b/vendor/tracy/tracy/src/Tracy/TableSort/table-sort.js @@ -0,0 +1,43 @@ +/** + * This file is part of the Tracy (https://tracy.nette.org) + */ + +'use strict'; + +(function() { + + // enables + class TableSort + { + static init() { + document.documentElement.addEventListener('click', (e) => { + if (e.target.matches('.tracy-sortable tr:first-child *')) { + TableSort.sort(e.target.closest('td,th')); + } + }); + + TableSort.init = function() {}; + } + + static sort(tcell) { + let tbody = tcell.closest('table').tBodies[0]; + let preserveFirst = !tcell.closest('thead') && !tcell.parentNode.querySelectorAll('td').length; + let asc = !(tbody.tracyAsc === tcell.cellIndex); + tbody.tracyAsc = asc ? tcell.cellIndex : null; + let getText = (cell) => { return cell ? cell.innerText : ''; }; + + Array.from(tbody.children) + .slice(preserveFirst ? 1 : 0) + .sort((a, b) => { + return function(v1, v2) { + return v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ? v1 - v2 : v1.toString().localeCompare(v2); + }(getText((asc ? a : b).children[tcell.cellIndex]), getText((asc ? b : a).children[tcell.cellIndex])); + }) + .forEach((tr) => { tbody.appendChild(tr); }); + } + } + + + let Tracy = window.Tracy = window.Tracy || {}; + Tracy.TableSort = Tracy.TableSort || TableSort; +})(); diff --git a/vendor/tracy/tracy/src/Tracy/Toggle/toggle.css b/vendor/tracy/tracy/src/Tracy/Toggle/toggle.css new file mode 100644 index 0000000..eb985f1 --- /dev/null +++ b/vendor/tracy/tracy/src/Tracy/Toggle/toggle.css @@ -0,0 +1,29 @@ +/** + * This file is part of the Tracy (https://tracy.nette.org) + */ + +.tracy-collapsed { + display: none; +} + +.tracy-toggle.tracy-collapsed { + display: inline; +} + +.tracy-toggle { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.tracy-toggle:after { + content: "\A0\25BC"; + opacity: .4; +} + +.tracy-toggle.tracy-collapsed:after { + content: "\A0\25BA"; +} diff --git a/vendor/tracy/tracy/src/Tracy/Toggle/toggle.js b/vendor/tracy/tracy/src/Tracy/Toggle/toggle.js new file mode 100644 index 0000000..a4ad6c2 --- /dev/null +++ b/vendor/tracy/tracy/src/Tracy/Toggle/toggle.js @@ -0,0 +1,107 @@ +/** + * This file is part of the Tracy (https://tracy.nette.org) + */ + +'use strict'; + +(function() { + + // enables or toggling + class Toggle + { + static init() { + document.documentElement.addEventListener('click', (e) => { + let el = e.target.closest('.tracy-toggle'); + if (el && !e.shiftKey && !e.altKey && !e.ctrlKey && !e.metaKey) { + Toggle.toggle(el); + e.stopImmediatePropagation(); + } + }); + Toggle.init = function() {}; + } + + + // changes element visibility + static toggle(el, show) { + let collapsed = el.classList.contains('tracy-collapsed'), + ref = el.getAttribute('data-tracy-ref') || el.getAttribute('href', 2), + dest = el; + + if (typeof show === 'undefined') { + show = collapsed; + } else if (!show === collapsed) { + return; + } + + if (!ref || ref === '#') { + ref = '+'; + } else if (ref.substr(0, 1) === '#') { + dest = document; + } + ref = ref.match(/(\^\s*([^+\s]*)\s*)?(\+\s*(\S*)\s*)?(.*)/); + dest = ref[1] ? dest.parentNode : dest; + dest = ref[2] ? dest.closest(ref[2]) : dest; + dest = ref[3] ? Toggle.nextElement(dest.nextElementSibling, ref[4]) : dest; + dest = ref[5] ? dest.querySelector(ref[5]) : dest; + + el.classList.toggle('tracy-collapsed', !show); + dest.classList.toggle('tracy-collapsed', !show); + + el.dispatchEvent(new CustomEvent('tracy-toggle', { + bubbles: true, + detail: {relatedTarget: dest, collapsed: !show} + })); + } + + + // save & restore toggles + static persist(baseEl, restore) { + let saved = []; + baseEl.addEventListener('tracy-toggle', (e) => { + if (saved.indexOf(e.target) < 0) { + saved.push(e.target); + } + }); + + let toggles = JSON.parse(sessionStorage.getItem('tracy-toggles-' + baseEl.id)); + if (toggles && restore !== false) { + toggles.forEach((item) => { + let el = baseEl; + for (let i in item.path) { + if (!(el = el.children[item.path[i]])) { + return; + } + } + if (el.textContent === item.text) { + Toggle.toggle(el, item.show); + } + }); + } + + window.addEventListener('unload', () => { + toggles = saved.map((el) => { + let item = {path: [], text: el.textContent, show: !el.classList.contains('tracy-collapsed')}; + do { + item.path.unshift(Array.from(el.parentNode.children).indexOf(el)); + el = el.parentNode; + } while (el && el !== baseEl); + return item; + }); + sessionStorage.setItem('tracy-toggles-' + baseEl.id, JSON.stringify(toggles)); + }); + } + + + // finds next matching element + static nextElement(el, selector) { + while (el && selector && !el.matches(selector)) { + el = el.nextElementSibling; + } + return el; + } + } + + + let Tracy = window.Tracy = window.Tracy || {}; + Tracy.Toggle = Tracy.Toggle || Toggle; +})(); diff --git a/vendor/tracy/tracy/src/Tracy/shortcuts.php b/vendor/tracy/tracy/src/Tracy/shortcuts.php new file mode 100644 index 0000000..f110f22 --- /dev/null +++ b/vendor/tracy/tracy/src/Tracy/shortcuts.php @@ -0,0 +1,46 @@ +setStub("startBuffering(); +foreach ($iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__ . '/../../src', RecursiveDirectoryIterator::SKIP_DOTS)) as $file) { + echo "adding: {$iterator->getSubPathname()}\n"; + + $s = file_get_contents($file->getPathname()); + if (strpos($s, '@tracySkipLocation') === false) { + $s = php_strip_whitespace($file->getPathname()); + } + + if ($file->getExtension() === 'js') { + $s = compressJs($s); + + } elseif ($file->getExtension() === 'css') { + $s = compressCss($s); + + } elseif ($file->getExtension() === 'phtml') { + $s = preg_replace_callback('#(<(script|style).*(?)(.*)(getSubPathname()] = $s; +} + +$phar->stopBuffering(); +$phar->compressFiles(Phar::GZ); + +echo "OK\n"; diff --git a/vendor/tracy/tracy/tools/open-in-editor/linux/install.sh b/vendor/tracy/tracy/tools/open-in-editor/linux/install.sh new file mode 100644 index 0000000..5a7bfb3 --- /dev/null +++ b/vendor/tracy/tracy/tools/open-in-editor/linux/install.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# This shell script sets open-editor.sh as handler for editor:// protocol + +matches=0 +while read -r line +do + if [ "editor=" == "${line:0:7}" ]; then + matches=1 + break + fi +done < "open-editor.sh" + +if [ "$matches" == "0" ]; then + echo -e "\e[31;1mError: it seems like you have not set command to run your editor." + echo -e "Before install, set variable \`\$editor\` in file \`open-editor.sh\`.\e[0m" + exit 1 +fi + +# -------------------------------------------------------------- + +echo "[Desktop Entry] +Name=Tracy Open Editor +Exec=tracy-openeditor.sh %u +Terminal=false +NoDisplay=true +Type=Application +MimeType=x-scheme-handler/editor;" > tracy-openeditor.desktop + +chmod +x open-editor.sh +chmod +x tracy-openeditor.desktop + +sudo cp open-editor.sh /usr/bin/tracy-openeditor.sh +sudo xdg-desktop-menu install tracy-openeditor.desktop +sudo update-desktop-database +rm tracy-openeditor.desktop + +echo -e "\e[32;1mDone.\e[0m" diff --git a/vendor/tracy/tracy/tools/open-in-editor/linux/open-editor.sh b/vendor/tracy/tracy/tools/open-in-editor/linux/open-editor.sh new file mode 100644 index 0000000..a9754e3 --- /dev/null +++ b/vendor/tracy/tracy/tools/open-in-editor/linux/open-editor.sh @@ -0,0 +1,101 @@ +#!/bin/bash +declare -A mapping + +# +# Configure your editor by setting the $editor variable: +# + +# Visual Studio Code +#editor='code --goto "$FILE":"$LINE"' +# Emacs +#editor='emacs +$LINE "$FILE"' +# gVim +#editor='gvim +$LINE "$FILE"' +# gEdit +#editor='gedit +$LINE "$FILE"' +# Pluma +#editor='pluma +$LINE "$FILE"' + +# +# Optionally configure custom mapping here: +# + +#mapping["/remotepath"]="/localpath" +#mapping["/mnt/d/"]="d:/" + +# +# Please, do not modify the code below. +# + +# Find and return URI parameter value. Or nothing, if the param is missing. +# Arguments: 1) URI, 2) Parameter name. +function get_param { + echo "$1" | sed -n -r "s/.*$2=([^&]*).*/\1/ip" +} + +if [[ -z "$editor" ]]; then + echo "You need to set the \$editor variable in file '`realpath $0`'" + exit +fi + +url=$1 +if [ "${url:0:9}" != "editor://" ]; then + exit +fi + +# Parse action and essential data from the URI. +regex='editor\:\/\/(open|create|fix)\/\?(.*)' +action=`echo $url | sed -r "s/$regex/\1/i"` +uri_params=`echo $url | sed -r "s/$regex/\2/i"` + +file=`get_param $uri_params "file"` +line=`get_param $uri_params "line"` +search=`get_param $uri_params "search"` +replace=`get_param $uri_params "replace"` + +# Debug? +#echo "action '$action'" +#echo "file '$file'" +#echo "line '$line'" +#echo "search '$search'" +#echo "replace '$replace'" + +# Convert URI encoded codes to normal characters (e.g. '%2F' => '/'). +printf -v file "${file//%/\\x}" +# And escape double-quotes. +file=${file//\"/\\\"} + +# Action: Create a file (only if it does not already exist). +if [ "$action" == "create" ] && [[ ! -f "$file" ]]; then + mkdir -p $(dirname "$file") + touch "$file" +fi + +# Action: Fix the file (if the file exists and while creating backup beforehand). +if [ "$action" == "fix" ]; then + + if [[ ! -f "$file" ]]; then + echo "Cannot fix non-existing file '$file'" + exit + fi + + # Backup the original file. + cp $file "$file.bak" + # Search and replace in place - only on the specified line. + sed -i "${line}s/${search}/${replace}/" $file + +fi + +# Apply custom mapping conversion. +for path in "${!mapping[@]}"; do + file="${file//$path/${mapping[$path]}}" +done + +# Format the command according to the selected editor. +command="${editor//\$FILE/$file}" +command="${command//\$LINE/$line}" + +# Debug? +#echo $command + +eval $command diff --git a/vendor/tracy/tracy/tools/open-in-editor/windows/install.cmd b/vendor/tracy/tracy/tools/open-in-editor/windows/install.cmd new file mode 100644 index 0000000..ecee89f --- /dev/null +++ b/vendor/tracy/tracy/tools/open-in-editor/windows/install.cmd @@ -0,0 +1,8 @@ +@echo off +:: This Windows batch file sets open-editor.js as handler for editor:// protocol + +if defined PROCESSOR_ARCHITEW6432 (set reg="%systemroot%\sysnative\reg.exe") else (set reg=reg) + +%reg% ADD HKCR\editor /ve /d "URL:editor Protocol" /f +%reg% ADD HKCR\editor /v "URL Protocol" /d "" /f +%reg% ADD HKCR\editor\shell\open\command /ve /d "wscript \"%~dp0open-editor.js\" \"%%1\"" /f diff --git a/vendor/tracy/tracy/tools/open-in-editor/windows/open-editor.js b/vendor/tracy/tracy/tools/open-in-editor/windows/open-editor.js new file mode 100644 index 0000000..6d17f16 --- /dev/null +++ b/vendor/tracy/tracy/tools/open-in-editor/windows/open-editor.js @@ -0,0 +1,81 @@ +var settings = { + + // PhpStorm + // editor: '"C:\\Program Files\\JetBrains\\PhpStorm 2018.1.2\\bin\\phpstorm64.exe" --line %line% "%file%"', + // title: 'PhpStorm', + + // NetBeans + // editor: '"C:\\Program Files\\NetBeans 8.1\\bin\\netbeans.exe" "%file%:%line%" --console suppress', + + // Nusphere PHPEd + // editor: '"C:\\Program Files\\NuSphere\\PhpED\\phped.exe" "%file%" --line=%line%', + + // SciTE + // editor: '"C:\\Program Files\\SciTE\\scite.exe" "-open:%file%" -goto:%line%', + + // EmEditor + // editor: '"C:\\Program Files\\EmEditor\\EmEditor.exe" "%file%" /l %line%', + + // PSPad Editor + // editor: '"C:\\Program Files\\PSPad editor\\PSPad.exe" -%line% "%file%"', + + // gVim + // editor: '"C:\\Program Files\\Vim\\vim73\\gvim.exe" "%file%" +%line%', + + // Sublime Text 2 + // editor: '"C:\\Program Files\\Sublime Text 2\\sublime_text.exe" "%file%:%line%"', + + mappings: { + // '/remotepath': '/localpath' + } +}; + + + +if (!settings.editor) { + WScript.Echo('Create variable "settings.editor" in ' + WScript.ScriptFullName); + WScript.Quit(); +} + +var url = WScript.Arguments(0); +var match = /^editor:\/\/(open|create|fix)\/\?file=([^&]+)&line=(\d+)(?:&search=([^&]*)&replace=([^&]*))?/.exec(url); +if (!match) { + WScript.Echo('Unexpected URI ' + url); + WScript.Quit(); +} +for (var i in match) { + match[i] = decodeURIComponent(match[i]).replace(/\+/g, ' '); +} + +var action = match[1]; +var file = match[2]; +var line = match[3]; +var search = match[4]; +var replace = match[5]; + +var shell = new ActiveXObject('WScript.Shell'); +var fileSystem = new ActiveXObject('Scripting.FileSystemObject'); + +for (var id in settings.mappings) { + if (file.indexOf(id) === 0) { + file = settings.mappings[id] + file.substr(id.length); + break; + } +} + +if (action === 'create' && !fileSystem.FileExists(file)) { + shell.Run('cmd /c mkdir "' + fileSystem.GetParentFolderName(file) + '"', 0, 1); + fileSystem.CreateTextFile(file); + +} else if (action === 'fix') { + var lines = fileSystem.OpenTextFile(file).ReadAll().split('\n'); + lines[line-1] = lines[line-1].replace(search, replace); + fileSystem.OpenTextFile(file, 2).Write(lines.join('\n')); +} + +var command = settings.editor.replace(/%line%/, line).replace(/%file%/, file); +shell.Exec(command); + +if (settings.title) { + shell.AppActivate(settings.title); +} diff --git a/www/.htaccess b/www/.htaccess new file mode 100644 index 0000000..0996638 --- /dev/null +++ b/www/.htaccess @@ -0,0 +1,32 @@ +# Apache configuration file (see https://httpd.apache.org/docs/current/mod/quickreference.html) +Require all granted + +# disable directory listing + + Options -Indexes + + +# enable cool URL + + RewriteEngine On + # RewriteBase / + + # use HTTPS + # RewriteCond %{HTTPS} !on + # RewriteRule .? https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] + + # prevents files starting with dot to be viewed by browser + RewriteRule /\.|^\.(?!well-known/) - [F] + + # front controller + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteRule !\.(pdf|js|ico|gif|jpg|jpeg|png|webp|svg|css|rar|zip|7z|tar\.gz|map|eot|ttf|otf|woff|woff2)$ index.php [L] + + +# enable gzip compression + + + AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json application/xml image/svg+xml + + diff --git a/www/favicon.ico b/www/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b20cfd0f056c1c9d43100f612f4319c66e2adb94 GIT binary patch literal 2550 zcmcgsdpy=>6#qV`h?U#SZJVg3NgD48bB$?q*(P0BnsTYks)Y)n7Gs6xwl1`?sD@_U z*mR*3ue;!TGX-%KzT!aoOgA9#8p?H)WL?RL7J%`}#?vCTxIT)jQ5SY=6*49?+ zh&_ole$lYAvxC8Q5iS=MLnsttXlMv`?%ctjEsbHE`WM;pN*(R2gPpQVcsz^BU^|{g zdOB}*utia3=3%>|9bp}tc@~XfN=iy^4Uf>sN#&@~UN&lzy{)*3spzf3^BSR||YZz~*6I;1wF3`8Euwo$so^QQ+fPxAeUii#5Rap}?} zI637bDXAWlCQX8umlyQ(DzI){DFgxmGBPq~J0F>ud>9)Wx9 zfgL;esHkY7xZ6lhPR71{g~-j##nPo0;O%`5H*eOUySp2Q4mF^^zn|iS2n`K|hDI$; zovJ}&<4uS}_n@M34_mgBKvq^3>gwt+H#bLFSs9iuUk*P%KTMxqN_*>}udk1soE*f( z#nC;_e;ul; zt8w}?A7jS!QZIBOE2|m`3JTEH))x21tXZ>QWo3op;$o_0Df094;o;#yaal-9OC!E& zp{go?j7&KuP88z$^;>9YXrMdSVdKV9NJ~poO)8i?c`_KQLVJ5Vi*e)nQB_rs;o(29XHPk%O)EoSARo=m&6HP2wf#l4 zH4*=<7(aeI#SKGEO$`GB1JKmeL|tgHl| z&&T4$i{a|(iW4VJVAZNs@bU41udgpcLP8K89*&rp7&_}APxI`(?@mKQ1HHYy(9+Vvg9i`L z)zw8kr-!?D??PU_7j12A;_p^j`9AIG#>|;BVPaweGcz;P)YQPz(vteE0@l{nm@{V% zN=iy#Z*Nb1a0PSc&P8EiA)K9^k(ZYT7Z(>SS+WFfZf?lV&c@1>E8*$siS+bz>eGGj z_xGpXNy6^kyRmiaR>a1}A}lNn(b3U}jEsboln`Ub3Nc{<$N329V+>PWBGDrZP)!2^ zgH$uuXI=CzePr8-qdwAy^oBz6>qtwft{!^Z9;%1y^ZT^+>g7P{OXUFj7df)}wRucq zmlm@v@hbOa8Ko5wENykg4mNL*D*qf~3xUi}fK4-w!qLe|`Yf=;$Q%fcQ2~x_S{3dI z1exGnPg=`oSp@5O5E7$6zbZYJ`mKgNaD~lBlrvWRaz2EePA_9@`j2`n7s~VV^4Wnj z`nAb@jO`Kl`fYGqwwdB8k@2B3#Tt)Nf%6LZidBEm%>U zIp^f3xWHJNw^!P)mp({kCuGbESuBup*#~gvu}K%ttO=2*{sN2{JA-W!z>@{nZxqL{ zh=QL_y(oY&ani$2@YEN_aY*gFm*aH@{||iK?3yQO>z|YV>W4Sqo9I6p5G09PXfCPx z;&Zb&aX?Vev-kV*{k_d?**5~-RN@c`{2gue-TH}%`ch3}=ROC&rnaYAkVqm}+BD5V za{pA9-^FlZ;_>*&Z%E=g`&+o(oUB|tP7=3%{UlJbB85M$22KZ{7Oda^FYEk~m9tOZv=@F{=&ov#vg;K8};8MS`EFL7E3`erDkr Rce72getByType(Nette\Application\Application::class) + ->run(); diff --git a/www/robots.txt b/www/robots.txt new file mode 100644 index 0000000..e69de29

Title